Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/.gitignore
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/.gitignore	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/.gitignore	(revision 29468)
@@ -0,0 +1,8 @@
+build/firefox/*
+build/opera/*
+build/svg-edit-2.6/*
+build/svg-edit-2.6-src/*
+build/svg-edit-2.6-src.tar.gz
+build/svg-edit-2.6.wgt
+build/svg-edit-2.6.xpi
+build/svg-edit-2.6.zip
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/AUTHORS
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/AUTHORS	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/AUTHORS	(revision 29468)
@@ -0,0 +1,22 @@
+Narendra Sisodiya <narendra.sisodiya@gmail.com>
+Pavol Rusnak <rusnakp@gmail.com>
+Jeff Schiller <codedread@gmail.com>
+Vidar Hokstad <vidar.hokstad@gmail.com>
+Alexis Deveria <adeveria@gmail.com>
+
+Translation credits:
+
+ar: Tarik Belaam <dubraise@gmail.com> (Ø§ÙØ¹Ø±ØšÙØ©)
+cs: Jan Ptacek <jan.ptacek@gmail.com> (ÄeÅ¡tina)
+de: Reimar Bauer <rb.proj@googlemail.com> (Deutsch)
+es: Alicia Puerto <alicia.puerto.g@gmail.com> (EspaÃ±ol)
+fa: Payman Delshad <payman@opera.com> (ÙØ§Ø±Ø³Û)
+fr: wormsxulla <wormsxulla@yahoo.com> (FranÃ§ais)
+fy: Wander Nauta <info@wandernauta.nl> (Frysk)
+hi: Tavish Naruka <tavishnaruka@gmail.com> (à€¹à€¿à€šà¥à€Šà¥)
+ja: Dong <iwadon@yarhalla.jpn.org> (æ¥æ¬èª)
+nl: Jaap Blom <jaap.blom@gmail.com> (Nederlands)
+ro: Christian Tzurcanu <christian.tzurcanu@gmail.com> (RomÃ¢neÅte)
+ru: Laurent Dufloux <laurent.dufloux@etu.upmc.fr> (Ð ÑÑÑÐºÐžÐ¹)
+sk: Pavol Rusnak <rusnakp@gmail.com> (SlovenÄina)
+zh-TW: é»çç (Han Sheng Huang) <zenixls2@gmail.com> (å°ç£æ­£é«)
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/CHANGES
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/CHANGES	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/CHANGES	(revision 29468)
@@ -0,0 +1,97 @@
+2.5 - June 15, 2010
+-------------------
+* Open Local Files (Firefox 3.6+ only)
+* Import SVG into Drawing (Firefox 3.6+ only)
+* Ability to create extensions/plugins
+* Main menu and overal interface improvements
+* Create and select elements outside the canvas
+* Base support for the svg:use element
+* Add/Edit Sub-paths
+* Multiple path segment selection
+* Radial Gradient support
+* Connector lines
+* Arrows & Markers
+* Smoother freehand paths
+* Foreign markup support (ForeignObject?/MathML)
+* Configurable options
+* File-loading options
+* Eye-dropper tool (copy element style)
+* Stroke linejoin and linecap options
+* Export to PNG
+* Blur tool
+* Page-align single elements
+* Inline text editing
+* Line draw snapping with Shift key
+
+2.4 - January 11, 2010
+----------------------
+* Zoom
+* Layers
+* UI Localization
+* Wireframe Mode
+* Resizable UI (SVG icons)
+* Set background color and/or image (for tracing)
+* Convert Shapes to Paths
+* X, Y coordinates for all elements
+* Draggable Dialog boxes
+* Select Non-Adjacent Elements
+* Fixed-ratio resize
+* Automatic Tool Switching
+* Raster Images
+* Group elements
+* Add/Remove path nodes
+* Curved Paths
+* Floating point values for all attributes
+* Text fields for all attributes
+* Title element
+
+2.3 - September 08, 2009
+------------------------
+* Align Objects
+* Rotate Objects
+* Clone Objects
+* Select Next/Prev Object
+* Edit SVG Source
+* Gradient picking
+* Polygon Mode (Path Editing, Phase 1)
+
+2.2 - July 08, 2009
+-------------------
+* Multiselect Mode
+* Undo/Redo Actions
+* Resize Elements
+* Contextual tools for rect, circle, ellipse, line, text elements
+* Some updated button images
+* Stretched the UI to fit the browser window
+* Resizing of the SVG canvas
+* Upgraded to jPicker 1.0.8
+
+2.1 - June 17, 2009
+-------------------
+* tooltips added to all UI elements
+* fix flyout menus
+* ask before clearing the drawing (suggested by martin.vidner)
+* control group, fill and stroke opacity
+* fix flyouts when using color picker
+* change license from GPLv2 to Apache License v2.0
+* replaced Farbtastic with jPicker, because of the license issues
+* removed dependency on svgcanvas.svg, now created in JavaScript
+* added Select tool
+* using jQuery hosted by Google instead of local version
+* allow dragging of elements
+* save SVG file to separate tab
+* create and edit text elements
+* context panel tools
+* change rect radius, font-family, font-size
+* added keystroke shortcuts for all tools
+* move to top/bottom
+
+2.0 - June 03, 2009
+-------------------
+* rewritten SVG-edit, so now it uses OOP
+* draw ellipse, square
+* created HTML interface similar to Inkscape
+
+1.0 - February 06, 2009
+-------------------
+* SVG-Edit released
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/LICENSE
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/LICENSE	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/LICENSE	(revision 29468)
@@ -0,0 +1,19 @@
+Copyright (c) 2009-2011 by SVG-edit authors (see AUTHORS file)
+
+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.
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/Makefile
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/Makefile	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/Makefile	(revision 29468)
@@ -0,0 +1,98 @@
+NAME=method-draw
+VERSION=2.6
+PACKAGE=$(NAME)
+MAKEDOCS=naturaldocs/NaturalDocs
+CLOSURE=build/tools/closure-compiler.jar
+YUICOMPRESSOR=build/tools/yuicompressor-2.4.7.jar
+
+# All files that will be compiled by the Closure compiler.
+
+JS_FILES=\
+  lib/touch.js \
+  lib/js-hotkeys/jquery.hotkeys.min.js \
+  lib/jquerybbq/jquery.bbq.min.js \
+  icons/jquery.svgicons.js \
+  lib/jgraduate/jquery.jgraduate.js \
+  lib/contextmenu/jquery.contextmenu.js \
+  src/browser.js \
+  src/svgtransformlist.js \
+  src/math.js \
+  src/units.js \
+  src/svgutils.js \
+  src/sanitize.js \
+  src/history.js \
+  src/select.js \
+  src/draw.js \
+  src/path.js \
+  src/svgcanvas.js \
+  src/method-draw.js \
+  lib/jquery-draginput.js \
+  lib/contextmenu.js \
+  lib/jquery-ui/jquery-ui-1.8.17.custom.min.js \
+  lib/jgraduate/jpicker.min.js \
+  lib/mousewheel.js \
+	extensions/ext-eyedropper.js \
+	extensions/ext-grid.js \
+	extensions/ext-shapes.js \
+	lib/requestanimationframe.js \
+	lib/taphold.js
+
+CSS_FILES=\
+	lib/jgraduate/css/jPicker.css \
+  lib/jgraduate/css/jgraduate.css \
+  css/method-draw.css \
+
+JS_INPUT_FILES=$(addprefix editor/, $(JS_FILES))
+CSS_INPUT_FILES=$(addprefix editor/, $(CSS_FILES))
+JS_BUILD_FILES=$(addprefix $(PACKAGE)/, $(JS_FILES))
+CSS_BUILD_FILES=$(addprefix $(PACKAGE)/, $(CSS_FILES))
+CLOSURE_JS_ARGS=$(addprefix --js , $(JS_INPUT_FILES))
+COMPILED_JS=editor/method-draw.compiled.js
+COMPILED_CSS=editor/css/method-draw.compiled.css
+
+all: release
+
+# The build directory relies on the JS being compiled.
+$(PACKAGE): $(COMPILED_JS) $(COMPILED_CSS)
+	rm -rf config
+	mkdir config
+	if [ -x $(MAKEDOCS) ] ; then $(MAKEDOCS) -i editor/ -o html docs/ -p config/ -oft -r ; fi
+
+	# Make build directory and copy all editor contents into it
+	mkdir -p $(PACKAGE)
+	cp -r editor/* $(PACKAGE)
+
+	# Remove all hidden .svn directories
+	-find $(PACKAGE) -name .svn -type d | xargs rm -rf {} \;
+	-find $(PACKAGE) -name .git -type d | xargs rm -rf {} \;
+
+	# Create the release version of the main HTML file.
+	build/tools/ship.py --i=editor/index.html --on=svg_edit_release > $(PACKAGE)/index.html
+
+# NOTE: Some files are not ready for the Closure compiler: (jquery)
+# NOTE: Our code safely compiles under SIMPLE_OPTIMIZATIONS
+# NOTE: Our code is *not* ready for ADVANCED_OPTIMIZATIONS
+# NOTE: WHITESPACE_ONLY and --formatting PRETTY_PRINT is helpful for debugging.
+
+$(COMPILED_CSS):
+	cat $(CSS_INPUT_FILES) > editor/temp.css;
+	java -jar $(YUICOMPRESSOR) editor/temp.css -o $(COMPILED_CSS) --line-break 0;
+
+$(COMPILED_JS):
+	java -jar $(CLOSURE) \
+		--compilation_level SIMPLE_OPTIMIZATIONS \
+		$(CLOSURE_JS_ARGS) \
+		--js_output_file $(COMPILED_JS)
+
+compile: $(COMPILED_JS) $(COMPILED_CSS)
+
+release: $(PACKAGE)
+
+deploy:
+	cp -R  method-draw  ../Method.ac/public
+
+clean:
+	rm -rf config
+	rm -rf $(PACKAGE)
+	rm -rf $(COMPILED_JS)
+	rm -rf $(COMPILED_CSS)
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/README
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/README	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/README	(revision 29468)
@@ -0,0 +1,19 @@
+Method Draw is a fork of SVG Edit, a web based SVG editor.
+
+The purpose of Method Draw is to improve the usability and user experience of SVG Edit. It removes some features such as  
+layers and line-caps/corners in exchange for a more simple and pleasant experience.
+
+Method Draw is Copyright (c)
+Mark MacKay mark@method.ac
+
+Published under an MIT License. Enjoy.
+
+Based on SVG Edit:
+http://code.google.com/p/svg-edit/
+
+SVG Edit is Copyright (c)
+Narendra Sisodiya <narendra.sisodiya@gmail.com>
+Pavol Rusnak <rusnakp@gmail.com>
+Jeff Schiller <codedread@gmail.com>
+Vidar Hokstad <vidar.hokstad@gmail.com>
+Alexis Deveria <adeveria@gmail.com>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/build/tools/COPYING
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/build/tools/COPYING	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/build/tools/COPYING	(revision 29468)
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/build/tools/README
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/build/tools/README	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/build/tools/README	(revision 29468)
@@ -0,0 +1,289 @@
+/*
+ * Copyright 2009 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+//
+// Contents
+//
+
+The Closure Compiler performs checking, instrumentation, and
+optimizations on JavaScript code. The purpose of this README is to
+explain how to build and run the Closure Compiler.
+
+The Closure Compiler requires Java 6 or higher.
+http://www.java.com/
+
+
+//
+// Building The Closure Compiler
+//
+
+There are three ways to get a Closure Compiler executable.
+
+1) Use one we built for you.
+
+Pre-built Closure binaries can be found at
+http://code.google.com/p/closure-compiler/downloads/list
+
+
+2) Check out the source and build it with Apache Ant.
+
+First, check out the full source tree of the Closure Compiler. There
+are instructions on how to do this at the project site.
+http://code.google.com/p/closure-compiler/source/checkout
+
+Apache Ant is a cross-platform build tool.
+http://ant.apache.org/
+
+At the root of the source tree, there is an Ant file named
+build.xml. To use it, navigate to the same directory and type the
+command
+
+ant jar
+
+This will produce a jar file called "build/compiler.jar".
+
+
+3) Check out the source and build it with Eclipse.
+
+Eclipse is a cross-platform IDE.
+http://www.eclipse.org/
+
+Under Eclipse's File menu, click "New > Project ..." and create a
+"Java Project."  You will see an options screen. Give the project a
+name, select "Create project from existing source," and choose the
+root of the checked-out source tree as the existing directory. Verify
+that you are using JRE version 6 or higher.
+
+Eclipse can use the build.xml file to discover rules. When you
+navigate to the build.xml file, you will see all the build rules in
+the "Outline" pane. Run the "jar" rule to build the compiler in
+build/compiler.jar.
+
+
+//
+// Running The Closure Compiler
+//
+
+Once you have the jar binary, running the Closure Compiler is straightforward.
+
+On the command line, type
+
+java -jar compiler.jar
+
+This starts the compiler in interactive mode. Type
+
+var x = 17 + 25;
+
+then hit "Enter", then hit "Ctrl-Z" (on Windows) or "Ctrl-D" (on Mac or Linux)
+and "Enter" again. The Compiler will respond:
+
+var x=42;
+
+The Closure Compiler has many options for reading input from a file,
+writing output to a file, checking your code, and running
+optimizations. To learn more, type
+
+java -jar compiler.jar --help
+
+You can read more detailed documentation about the many flags at
+http://code.google.com/closure/compiler/docs/gettingstarted_app.html
+
+
+//
+// Compiling Multiple Scripts
+//
+
+If you have multiple scripts, you should compile them all together with
+one compile command.
+
+java -jar compiler.jar --js=in1.js --js=in2.js ... --js_output_file=out.js
+
+The Closure Compiler will concatenate the files in the order they're
+passed at the command line.
+
+If you need to compile many, many scripts together, you may start to
+run into problems with managing dependencies between scripts. You
+should check out the Closure Library. It contains functions for
+enforcing dependencies between scripts, and a tool called calcdeps.py
+that knows how to give scripts to the Closure Compiler in the right
+order.
+
+http://code.google.com/p/closure-library/
+
+//
+// Licensing
+//
+
+Unless otherwise stated, all source files are licensed under
+the Apache License, Version 2.0.
+
+
+-----
+Code under:
+src/com/google/javascript/rhino
+test/com/google/javascript/rhino
+
+URL: http://www.mozilla.org/rhino
+Version:  1.5R3, with heavy modifications
+License:  Netscape Public License and MPL / GPL dual license
+
+Description: A partial copy of Mozilla Rhino. Mozilla Rhino is an
+implementation of JavaScript for the JVM.  The JavaScript parser and
+the parse tree data structures were extracted and modified
+significantly for use by Google's JavaScript compiler.
+
+Local Modifications: The packages have been renamespaced. All code not
+relavant to parsing has been removed. A JSDoc parser and static typing
+system have been added.
+
+
+-----
+Code in:
+lib/libtrunk_rhino_parser_jarjared.jar
+
+Rhino
+URL: http://www.mozilla.org/rhino
+Version:  Trunk
+License:  Netscape Public License and MPL / GPL dual license
+
+Description: Mozilla Rhino is an implementation of JavaScript for the JVM.
+
+Local Modifications: None. We've used JarJar to renamespace the code
+post-compilation. See:
+http://code.google.com/p/jarjar/
+
+
+-----
+Code in:
+lib/args4j_deploy.jar
+
+Args4j
+URL: https://args4j.dev.java.net/
+Version: 2.0.9
+License: MIT
+
+Description:
+args4j is a small Java class library that makes it easy to parse command line
+options/arguments in your CUI application.
+
+Local Modifications: None.
+
+
+-----
+Code in:
+lib/guava-r06.jar
+
+Guava Libraries
+URL: http://code.google.com/p/guava-libraries/
+Version:  R6
+License: Apache License 2.0
+
+Description: Google's core Java libraries.
+
+Local Modifications: None.
+
+
+-----
+Code in:
+lib/hamcrest-core-1.1.jar
+
+Hamcrest
+URL: http://code.google.com/p/hamcrest
+License: BSD
+License File: LICENSE
+
+Description:
+Provides a library of matcher objects (also known as constraints or
+predicates) allowing 'match' rules to be defined declaratively, to be used in
+other frameworks. Typical scenarios include testing frameworks, mocking
+libraries and UI validation rules.
+
+Local modifications:
+The original jars contained both source code and compiled classes.
+
+hamcrest-core-1.1.jar just contains the compiled classes.
+
+
+
+-----
+Code in:
+lib/jsr305.jar
+
+Annotations for software defect detection
+URL: http://code.google.com/p/jsr-305/
+Version: svn revision 47
+License: BSD License
+
+Description: Annotations for software defect detection.
+
+Local Modifications: None.
+
+
+----
+Code in:
+lib/junit.jar
+
+JUnit
+URL:  http://sourceforge.net/projects/junit/
+Version:  4.5
+License:  Common Public License 1.0
+
+Description: A framework for writing and running automated tests in Java.
+
+Local Modifications: None.
+
+
+---
+Code in:
+lib/protobuf-java-2.3.0.jar
+
+Protocol Buffers
+URL: http://code.google.com/p/protobuf/
+Version: 2.3.0
+License: New BSD License
+
+Description: Supporting libraries for protocol buffers,
+an encoding of structured data.
+
+Local Modifications: None
+
+
+---
+Code in:
+lib/ant_deploy.jar
+
+URL: http://ant.apache.org/bindownload.cgi
+Version: 1.6.5
+License: Apache License 2.0
+Description:
+  Ant is a Java based build tool. In theory it is kind of like "make"
+  without make's wrinkles and with the full portability of pure java code.
+
+Local Modifications:
+  Modified apache-ant-1.6.5/bin/ant to look in the ant.runfiles directory
+
+
+---
+Code in:
+lib/json.jar
+URL: http://json.org/java/index.html
+Version: JSON version 2
+License: MIT license
+Description:
+JSON is a set of java files for use in transmitting data in JSON format.
+
+Local Modifications: None
+
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/build/tools/ship.py
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/build/tools/ship.py	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/build/tools/ship.py	(revision 29468)
@@ -0,0 +1,155 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# ship.py
+#
+# Licensed under the Apache 2 License as is the rest of the project
+# Copyright (c) 2011 Jeff Schiller
+#
+# This script has very little real-world application.  It is only used in our pure-client web app
+# served on GoogleCode so we can have one HTML file, run a build script and generate a 'release'
+# version without having to maintain two separate HTML files.  It does this by evaluating
+# 'processing comments' that are suspicously similar to IE conditional comments and then outputting
+# a new HTML file after evaluating particular variables.
+#
+# This script takes the following inputs:
+#
+# * a HTML file (--i=in.html)
+# * a series of flag names (--on=Foo --on=Bar)
+#
+# Example:
+#
+# in.html:
+#   <!--{if foo}>
+#     FOO!
+#   <!{else}-->
+#     BAR!
+#   <!--{endif}-->
+#
+# $ ship.py --i in.html --on foo
+#
+# out.html:
+#   <!--{if foo}-->
+#     FOO!
+#   <!--{else}>
+#     BAR!
+#   <!{endif}-->
+#
+# It has the following limitations:
+#
+# 1) Only if-else-endif are currently supported.
+# 2) All processing comments must be on one line with no other non-whitespace characters.
+# 3) Comments cannot be nested.
+
+import optparse
+import os
+
+inside_if = False
+last_if_true = False
+
+_options_parser = optparse.OptionParser(
+	usage='%prog --i input.html [--on flag1]',
+	description=('Rewrites an HTML file based on conditional comments and flags'))
+_options_parser.add_option('--i',
+	action='store', dest='input_html_file', help='Input HTML filename')
+_options_parser.add_option('--on',
+	action='append', type='string', dest='enabled_flags',
+	help='name of flag to enable')
+
+def parse_args(args=None):
+  options, rargs = _options_parser.parse_args(args)
+  return options, (None, None)
+
+def parseComment(line, line_num, enabled_flags):
+  global inside_if
+  global last_if_true
+
+  start = line.find('{')
+  end = line.find('}')
+  statement = line[start+1:end].strip()
+  if statement.startswith('if '):
+    if inside_if == True:
+      print 'Fatal Error: Nested {if} found on line ' + str(line_num)
+      print line
+      quit()
+
+    # Evaluate whether the expression is true/false.
+    # only one variable name allowed for now
+    variable_name = statement[3:].strip()
+    if variable_name in enabled_flags:
+      last_if_true = True
+      line = '<!--{if ' + variable_name + '}-->'
+    else:
+      last_if_true = False
+      line = '<!--{if ' + variable_name + '}>'
+
+    inside_if = True
+
+  elif statement == 'else':
+    if inside_if == False:
+      print 'Fatal Error: {else} found without {if} on line ' + str(line_num)
+      print line
+      quit()
+    if inside_if == 'else':
+      print 'Fatal Error: Multiple {else} clauses found in the same if on line ' + str(line_num)
+      print line
+      quit()
+
+    if last_if_true:
+      line = '<!--{else}>'
+    else:
+      line = '<!{else}-->'
+
+    # invert the logic so the endif clause is closed properly
+    last_if_true = not last_if_true
+
+    # ensure we don't have two else statements in the same if
+    inside_if = 'else'
+
+  elif statement == 'endif':
+    if inside_if == False:
+      print 'Fatal Error: {endif} found without {if} on line ' + str(line_num)
+      print line
+      quit()
+
+    if last_if_true:
+      line = '<!--{endif}-->'
+    else:
+      line = '<!{endif}-->'
+
+    inside_if = False
+
+  return line
+
+
+def ship(inFileName, enabled_flags):
+  # read in HTML file
+  lines = file(inFileName, 'r').readlines()
+  out_lines = []
+  i = 0
+
+  # loop for each line of markup
+  for line in lines:
+    strline = line.strip()
+    # if we find a comment, process it and print out
+    if strline.startswith('<!--{') or strline.startswith('<!{'):
+      # using the same indentation as the previous line
+      start = line.find('<')
+      out_lines.append(line[:start] \
+        + parseComment(strline, i, enabled_flags) \
+        + os.linesep)
+    else: # else append line to the output list
+      out_lines.append(line)
+    i += 1
+  
+  return ''.join(out_lines)
+
+if __name__ == '__main__':
+  options, (input, output) = parse_args()
+
+  if options.input_html_file != None:
+    enabled_flags = []
+    if options.enabled_flags != None:
+      enabled_flags.extend(options.enabled_flags)
+    out_file = ship(options.input_html_file, enabled_flags)
+    print out_file
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/files/svgcanvas-js.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/files/svgcanvas-js.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/files/svgcanvas-js.html	(revision 29468)
@@ -0,0 +1,426 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<html><head><title>SvgCanvas</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!--  Generated by Natural Docs, version 1.4 -->
+<!--  http://www.naturaldocs.org  -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Content><div class="CClass"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="SvgCanvas"></a>SvgCanvas</h1><div class=CBody><p>The main SvgCanvas class that manages all SVG-related functions</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>container</td><td class=CDLDescription>The container HTML element that should hold the SVG root element</td></tr><tr><td class=CDLEntry>config</td><td class=CDLDescription>An object that contains configuration data</td></tr></table><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SMain"><td class=SEntry><a href="#SvgCanvas" >SvgCanvas</a></td><td class=SDescription>The main SvgCanvas class that manages all SVG-related functions</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SvgCanvas.Utils.toXml" >Utils.<wbr>toXml</a></td><td class=SDescription>Converts characters in a string to XML-friendly entities.</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SvgCanvas.Utils.fromXml" >Utils.<wbr>fromXml</a></td><td class=SDescription>Converts XML entities in a string to single characters. </td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SvgCanvas.Utils.encode64" >Utils.<wbr>encode64</a></td><td class=SDescription>Converts a string to base64</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SvgCanvas.Utils.decode64" >Utils.<wbr>decode64</a></td><td class=SDescription>Converts a string from base64</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SvgCanvas.Utils.convertToXMLReferences" >Utils.<wbr>convertToXMLReferences</a></td><td class=SDescription>Converts a string to use XML references</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SvgCanvas.rectsIntersect" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">rectsIntersect</a></td><td class=SDescription>Check if two rectangles (BBoxes objects) intersect each other</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SvgCanvas.snapToAngle" id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')">snapToAngle</a></td><td class=SDescription>Returns a 45 degree angle coordinate associated with the two given coordinates</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SvgCanvas.text2xml" id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')">text2xml</a></td><td class=SDescription>Cross-browser compatible method of converting a string to an XML tree found this function here: <a href="http://groups.google.com/group/jquery-dev/browse_thread/thread/c6d11387c580a77f" class=LURL target=_top>http://groups.google.com<wbr>/group<wbr>/jquery-dev<wbr>/browse_thread<wbr>/thread<wbr>/c6d11387c580a77f</a></td></tr><tr class="SGroup SIndent1"><td class=SEntry><a href="#SvgCanvas.Unit_conversion_functions" >Unit conversion functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SvgCanvas.convertToNum" id=link4 onMouseOver="ShowTip(event, 'tt4', 'link4')" onMouseOut="HideTip('tt4')">convertToNum</a></td><td class=SDescription>Converts given values to numbers. </td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SvgCanvas.setUnitAttr" id=link5 onMouseOver="ShowTip(event, 'tt5', 'link5')" onMouseOut="HideTip('tt5')">setUnitAttr</a></td><td class=SDescription>Sets an element&rsquo;s attribute based on the unit in its current value.</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SvgCanvas.isValidUnit" id=link6 onMouseOver="ShowTip(event, 'tt6', 'link6')" onMouseOut="HideTip('tt6')">isValidUnit</a></td><td class=SDescription>Check if an attribute&rsquo;s value is in a valid format</td></tr><tr class="SGroup SIndent1"><td class=SEntry><a href="#SvgCanvas.Undo/Redo_history_management" >Undo/<wbr>Redo history management</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SvgCanvas.ChangeElementCommand" id=link7 onMouseOver="ShowTip(event, 'tt7', 'link7')" onMouseOut="HideTip('tt7')">ChangeElementCommand</a></td><td class=SDescription>History command to make a change to an element. </td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SvgCanvas.ChangeElementCommand.apply" >ChangeElementCommand.<wbr>apply</a></td><td class=SDescription>Performs the stored change action</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SvgCanvas.ChangeElementCommand.unapply" >ChangeElementCommand.<wbr>unapply</a></td><td class=SDescription>Reverses the stored change action</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SvgCanvas.ChangeElementCommand.elements" >ChangeElementCommand.<wbr>elements</a></td><td class=SDescription>Returns array with element associated with this command</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SvgCanvas.InsertElementCommand" id=link8 onMouseOver="ShowTip(event, 'tt8', 'link8')" onMouseOut="HideTip('tt8')">InsertElementCommand</a></td><td class=SDescription>History command for an element that was added to the DOM</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SvgCanvas.InsertElementCommand.apply" >InsertElementCommand.<wbr>apply</a></td><td class=SDescription>Re-Inserts the new element</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SvgCanvas.InsertElementCommand.unapply" >InsertElementCommand.<wbr>unapply</a></td><td class=SDescription>Removes the element</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SvgCanvas.InsertElementCommand.elements" >InsertElementCommand.<wbr>elements</a></td><td class=SDescription>Returns array with element associated with this command</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SvgCanvas.RemoveElementCommand" id=link9 onMouseOver="ShowTip(event, 'tt9', 'link9')" onMouseOut="HideTip('tt9')">RemoveElementCommand</a></td><td class=SDescription>History command for an element removed from the DOM</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SvgCanvas.RemoveElementCommand.apply" >RemoveElementCommand.<wbr>apply</a></td><td class=SDescription>Re-removes the new element</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SvgCanvas.RemoveElementCommand.unapply" >RemoveElementCommand.<wbr>unapply</a></td><td class=SDescription>Re-adds the new element</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SvgCanvas.RemoveElementCommand.elements" >RemoveElementCommand.<wbr>elements</a></td><td class=SDescription>Returns array with element associated with this command</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SvgCanvas.MoveElementCommand" id=link10 onMouseOver="ShowTip(event, 'tt10', 'link10')" onMouseOut="HideTip('tt10')">MoveElementCommand</a></td><td class=SDescription>History command for an element that had its DOM position changed</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SvgCanvas.MoveElementCommand.unapply" >MoveElementCommand.<wbr>unapply</a></td><td class=SDescription>Re-positions the element</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SvgCanvas.MoveElementCommand.unapply" >MoveElementCommand.<wbr>unapply</a></td><td class=SDescription>Positions the element back to its original location</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SvgCanvas.MoveElementCommand.elements" >MoveElementCommand.<wbr>elements</a></td><td class=SDescription>Returns array with element associated with this command</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SvgCanvas.BatchCommand" id=link11 onMouseOver="ShowTip(event, 'tt11', 'link11')" onMouseOut="HideTip('tt11')">BatchCommand</a></td><td class=SDescription>History command that can contain/execute multiple other commands</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SvgCanvas.BatchCommand.apply" >BatchCommand.<wbr>apply</a></td><td class=SDescription>Runs &ldquo;apply&rdquo; on all subcommands</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SvgCanvas.BatchCommand.unapply" >BatchCommand.<wbr>unapply</a></td><td class=SDescription>Runs &ldquo;unapply&rdquo; on all subcommands</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SvgCanvas.BatchCommand.elements" >BatchCommand.<wbr>elements</a></td><td class=SDescription>Iterate through all our subcommands and returns all the elements we are changing</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SvgCanvas.BatchCommand.addSubCommand" >BatchCommand.<wbr>addSubCommand</a></td><td class=SDescription>Adds a given command to the history stack</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SvgCanvas.BatchCommand.isEmpty" >BatchCommand.<wbr>isEmpty</a></td><td class=SDescription>Returns a boolean indicating whether or not the batch command is empty</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SvgCanvas.resetUndoStack" id=link12 onMouseOver="ShowTip(event, 'tt12', 'link12')" onMouseOut="HideTip('tt12')">resetUndoStack</a></td><td class=SDescription>Resets the undo stack, effectively clearing the undo/redo history</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SvgCanvas.undoMgr.getUndoStackSize" >undoMgr.<wbr>getUndoStackSize</a></td><td class=SDescription>Integer with the current size of the undo history stack</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SvgCanvas.undoMgr.getRedoStackSize" >undoMgr.<wbr>getRedoStackSize</a></td><td class=SDescription>Integer with the current size of the redo history stack</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SvgCanvas.undoMgr.getNextUndoCommandText" >undoMgr.<wbr>getNextUndoCommandText</a></td><td class=SDescription>String associated with the next undo command</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SvgCanvas.undoMgr.getNextRedoCommandText" >undoMgr.<wbr>getNextRedoCommandText</a></td><td class=SDescription>String associated with the next redo command</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SvgCanvas.undoMgr.undo" >undoMgr.undo</a></td><td class=SDescription>Performs an undo step</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SvgCanvas.undoMgr.redo" >undoMgr.redo</a></td><td class=SDescription>Performs a redo step</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SvgCanvas.addCommandToHistory" id=link13 onMouseOver="ShowTip(event, 'tt13', 'link13')" onMouseOut="HideTip('tt13')">addCommandToHistory</a></td><td class=SDescription>Adds a command object to the undo history stack</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SvgCanvas.beginUndoableChange" id=link14 onMouseOver="ShowTip(event, 'tt14', 'link14')" onMouseOut="HideTip('tt14')">beginUndoableChange</a></td><td class=SDescription>This function tells the canvas to remember the old values of the attrName attribute for each element sent in. </td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SvgCanvas.finishUndoableChange" id=link15 onMouseOver="ShowTip(event, 'tt15', 'link15')" onMouseOut="HideTip('tt15')">finishUndoableChange</a></td><td class=SDescription>This function returns a BatchCommand object which summarizes the change since beginUndoableChange was called. </td></tr><tr class="SInterface"><td class=SEntry><a href="#Selector" >Selector</a></td><td class=SDescription>Private class for DOM element selection boxes</td></tr><tr class="SGroup SIndent1"><td class=SEntry><a href="#Selector.Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#Selector.Selector.reset" >Selector.<wbr>reset</a></td><td class=SDescription>Used to reset the id and element that the selector is attached to</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#Selector.Selector.showGrips" >Selector.<wbr>showGrips</a></td><td class=SDescription>Show the resize grips of this selector</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#Selector.Selector.updateGripCursors" >Selector.<wbr>updateGripCursors</a></td><td class=SDescription>Updates cursors for corner grips on rotation so arrows point the right way</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#Selector.Selector.resize" >Selector.<wbr>resize</a></td><td class=SDescription>Updates the selector to match the element&rsquo;s size</td></tr><tr class="SInterface"><td class=SEntry><a href="#SelectorManager" >SelectorManager</a></td><td class=SDescription>Public class to manage all selector objects (selection boxes)</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.SelectorManager.initGroup" >SelectorManager.<wbr>initGroup</a></td><td class=SDescription>Resets the parent selector group element</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.SelectorManager.requestSelector" >SelectorManager.<wbr>requestSelector</a></td><td class=SDescription>Returns the selector based on the given element</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.SelectorManager.releaseSelector" >SelectorManager.<wbr>releaseSelector</a></td><td class=SDescription>Removes the selector of the given element (hides selection box)</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.SelectorManager.getRubberBandBox" >SelectorManager.<wbr>getRubberBandBox</a></td><td class=SDescription>Returns the rubberBandBox DOM element. </td></tr><tr class="SGroup SIndent1"><td class=SEntry><a href="#SelectorManager.Helper_functions" >Helper functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.walkTree" id=link16 onMouseOver="ShowTip(event, 'tt16', 'link16')" onMouseOut="HideTip('tt16')">walkTree</a></td><td class=SDescription>Walks the tree and executes the callback on each element in a top-down fashion</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.walkTreePost" id=link17 onMouseOver="ShowTip(event, 'tt17', 'link17')" onMouseOut="HideTip('tt17')">walkTreePost</a></td><td class=SDescription>Walks the tree and executes the callback on each element in a depth-first fashion</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.assignAttributes" id=link18 onMouseOver="ShowTip(event, 'tt18', 'link18')" onMouseOut="HideTip('tt18')">assignAttributes</a></td><td class=SDescription>Assigns multiple attributes to an element.</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.cleanupElement" id=link19 onMouseOver="ShowTip(event, 'tt19', 'link19')" onMouseOut="HideTip('tt19')">cleanupElement</a></td><td class=SDescription>Remove unneeded (default) attributes, makes resulting SVG smaller</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.addSvgElementFromJson" id=link20 onMouseOver="ShowTip(event, 'tt20', 'link20')" onMouseOut="HideTip('tt20')">addSvgElementFromJson</a></td><td class=SDescription>Create a new SVG element based on the given object keys/values and add it to the current layer The element will be ran through cleanupElement before being returned</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.addExtension" id=link21 onMouseOver="ShowTip(event, 'tt21', 'link21')" onMouseOut="HideTip('tt21')">addExtension</a></td><td class=SDescription>Add an extension to the editor</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.shortFloat" id=link22 onMouseOver="ShowTip(event, 'tt22', 'link22')" onMouseOut="HideTip('tt22')">shortFloat</a></td><td class=SDescription>Rounds a given value to a float with number of digits defined in save_options</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.getStrokedBBox" id=link23 onMouseOver="ShowTip(event, 'tt23', 'link23')" onMouseOut="HideTip('tt23')">getStrokedBBox</a></td><td class=SDescription>Get the bounding box for one or more stroked and/or transformed elements</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.getVisibleElements" id=link24 onMouseOver="ShowTip(event, 'tt24', 'link24')" onMouseOut="HideTip('tt24')">getVisibleElements</a></td><td class=SDescription>Get all elements that have a BBox (excludes &lt;defs&gt;, &lt;title&gt;, etc). </td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.copyElem" id=link25 onMouseOver="ShowTip(event, 'tt25', 'link25')" onMouseOut="HideTip('tt25')">copyElem</a></td><td class=SDescription>Create a clone of an element, updating its ID and its children&rsquo;s IDs when needed</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.getElem" id=link26 onMouseOver="ShowTip(event, 'tt26', 'link26')" onMouseOut="HideTip('tt26')">getElem</a></td><td class=SDescription>Get a DOM element by ID within the SVG root element.</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.getId" id=link27 onMouseOver="ShowTip(event, 'tt27', 'link27')" onMouseOut="HideTip('tt27')">getId</a></td><td class=SDescription>Returns the last created DOM element ID string</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.getNextId" id=link28 onMouseOver="ShowTip(event, 'tt28', 'link28')" onMouseOut="HideTip('tt28')">getNextId</a></td><td class=SDescription>Creates and returns a unique ID string for a DOM element</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.bind" id=link29 onMouseOver="ShowTip(event, 'tt29', 'link29')" onMouseOut="HideTip('tt29')">bind</a></td><td class=SDescription>Attaches a callback function to an event</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.setIdPrefix" id=link30 onMouseOver="ShowTip(event, 'tt30', 'link30')" onMouseOut="HideTip('tt30')">setIdPrefix</a></td><td class=SDescription>Changes the ID prefix to the given value</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.sanitizeSvg" id=link31 onMouseOver="ShowTip(event, 'tt31', 'link31')" onMouseOut="HideTip('tt31')">sanitizeSvg</a></td><td class=SDescription>Sanitizes the input node and its children It only keeps what is allowed from our whitelist defined above</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.getUrlFromAttr" id=link32 onMouseOver="ShowTip(event, 'tt32', 'link32')" onMouseOut="HideTip('tt32')">getUrlFromAttr</a></td><td class=SDescription>Extracts the URL from the url(...)</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.getBBox" id=link33 onMouseOver="ShowTip(event, 'tt33', 'link33')" onMouseOut="HideTip('tt33')">getBBox</a></td><td class=SDescription>Get the given/selected element&rsquo;s bounding box object, convert it to be more usable when necessary</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.ffClone" id=link34 onMouseOver="ShowTip(event, 'tt34', 'link34')" onMouseOut="HideTip('tt34')">ffClone</a></td><td class=SDescription>Hack for Firefox bugs where text element features aren&rsquo;t updated. </td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.getPathBBox" id=link35 onMouseOver="ShowTip(event, 'tt35', 'link35')" onMouseOut="HideTip('tt35')">getPathBBox</a></td><td class=SDescription>Get correct BBox for a path in Webkit Converted from code found here: <a href="http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html" class=LURL target=_top>http://blog.hackers-cafe.net<wbr>/2009<wbr>/06<wbr>/how-to-calculate-bezier-curves-bounding.html</a></td></tr><tr class="SGroup SIndent1"><td class=SEntry><a href="#SelectorManager.Element_Transforms" >Element Transforms</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.getRotationAngle" id=link36 onMouseOver="ShowTip(event, 'tt36', 'link36')" onMouseOut="HideTip('tt36')">getRotationAngle</a></td><td class=SDescription>Get the rotation angle of the given/selected DOM element</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.setRotationAngle" id=link37 onMouseOver="ShowTip(event, 'tt37', 'link37')" onMouseOut="HideTip('tt37')">setRotationAngle</a></td><td class=SDescription>Removes any old rotations if present, prepends a new rotation at the transformed center</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.getTransformList" id=link38 onMouseOver="ShowTip(event, 'tt38', 'link38')" onMouseOut="HideTip('tt38')">getTransformList</a></td><td class=SDescription>Returns an object that behaves like a SVGTransformList for the given DOM element</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.recalculateAllSelectedDimensions" id=link39 onMouseOver="ShowTip(event, 'tt39', 'link39')" onMouseOut="HideTip('tt39')">recalculateAllSelectedDimensions</a></td><td class=SDescription>Runs recalculateDimensions on the selected elements, adding the changes to a single batch command</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.remapElement" id=link40 onMouseOver="ShowTip(event, 'tt40', 'link40')" onMouseOut="HideTip('tt40')">remapElement</a></td><td class=SDescription>Applies coordinate changes to an element based on the given matrix</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.recalculateDimensions" id=link41 onMouseOver="ShowTip(event, 'tt41', 'link41')" onMouseOut="HideTip('tt41')">recalculateDimensions</a></td><td class=SDescription>Decides the course of action based on the element&rsquo;s transform list</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.transformPoint" id=link42 onMouseOver="ShowTip(event, 'tt42', 'link42')" onMouseOut="HideTip('tt42')">transformPoint</a></td><td class=SDescription>A (hopefully) quicker function to transform a point by a matrix (this function avoids any DOM calls and just does the math)</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.isIdentity" id=link43 onMouseOver="ShowTip(event, 'tt43', 'link43')" onMouseOut="HideTip('tt43')">isIdentity</a></td><td class=SDescription>Helper function to check if the matrix performs no actual transform (i.e. </td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.matrixMultiply" id=link44 onMouseOver="ShowTip(event, 'tt44', 'link44')" onMouseOut="HideTip('tt44')">matrixMultiply</a></td><td class=SDescription>This function tries to return a SVGMatrix that is the multiplication m1*m2. </td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.transformListToTransform" id=link45 onMouseOver="ShowTip(event, 'tt45', 'link45')" onMouseOut="HideTip('tt45')">transformListToTransform</a></td><td class=SDescription>This returns a single matrix Transform for a given Transform List (this is the equivalent of SVGTransformList.consolidate() but unlike that method, this one does not modify the actual SVGTransformList) This function is very liberal with its min,max arguments</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.hasMatrixTransform" id=link46 onMouseOver="ShowTip(event, 'tt46', 'link46')" onMouseOut="HideTip('tt46')">hasMatrixTransform</a></td><td class=SDescription>See if the given transformlist includes a non-indentity matrix transform</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.getMatrix" id=link47 onMouseOver="ShowTip(event, 'tt47', 'link47')" onMouseOut="HideTip('tt47')">getMatrix</a></td><td class=SDescription>Get the matrix object for a given element</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.transformBox" id=link48 onMouseOver="ShowTip(event, 'tt48', 'link48')" onMouseOut="HideTip('tt48')">transformBox</a></td><td class=SDescription>Transforms a rectangle based on the given matrix</td></tr><tr class="SGroup SIndent1"><td class=SEntry><a href="#SelectorManager.Selection" >Selection</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.clearSelection" id=link49 onMouseOver="ShowTip(event, 'tt49', 'link49')" onMouseOut="HideTip('tt49')">clearSelection</a></td><td class=SDescription>Clears the selection. </td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.addToSelection" id=link50 onMouseOver="ShowTip(event, 'tt50', 'link50')" onMouseOut="HideTip('tt50')">addToSelection</a></td><td class=SDescription>Adds a list of elements to the selection. </td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.removeFromSelection" id=link51 onMouseOver="ShowTip(event, 'tt51', 'link51')" onMouseOut="HideTip('tt51')">removeFromSelection</a></td><td class=SDescription>Removes elements from the selection.</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.selectAllInCurrentLayer" id=link52 onMouseOver="ShowTip(event, 'tt52', 'link52')" onMouseOut="HideTip('tt52')">selectAllInCurrentLayer</a></td><td class=SDescription>Clears the selection, then adds all elements in the current layer to the selection. </td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.smoothControlPoints" id=link53 onMouseOver="ShowTip(event, 'tt53', 'link53')" onMouseOut="HideTip('tt53')">smoothControlPoints</a></td><td class=SDescription>Takes three points and creates a smoother line based on them</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.getMouseTarget" id=link54 onMouseOver="ShowTip(event, 'tt54', 'link54')" onMouseOut="HideTip('tt54')">getMouseTarget</a></td><td class=SDescription>Gets the desired element from a mouse event</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.preventClickDefault" id=link55 onMouseOver="ShowTip(event, 'tt55', 'link55')" onMouseOut="HideTip('tt55')">preventClickDefault</a></td><td class=SDescription>Prevents default browser click behaviour on the given element</td></tr><tr class="SGroup SIndent1"><td class=SEntry><a href="#SelectorManager.Text_edit_functions" >Text edit functions</a></td><td class=SDescription>Functions relating to editing text elements</td></tr><tr class="SGroup SIndent1"><td class=SEntry><a href="#SelectorManager.Path_edit_functions" >Path edit functions</a></td><td class=SDescription>Functions relating to editing path elements</td></tr><tr class="SGroup SIndent1"><td class=SEntry><a href="#SelectorManager.Serialization" >Serialization</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.removeUnusedDefElems" id=link56 onMouseOver="ShowTip(event, 'tt56', 'link56')" onMouseOut="HideTip('tt56')">removeUnusedDefElems</a></td><td class=SDescription>Looks at DOM elements inside the &lt;defs&gt; to see if they are referred to, removes them from the DOM if they are not.</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.svgCanvasToString" id=link57 onMouseOver="ShowTip(event, 'tt57', 'link57')" onMouseOut="HideTip('tt57')">svgCanvasToString</a></td><td class=SDescription>Main function to set up the SVG content for output</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.svgToString" id=link58 onMouseOver="ShowTip(event, 'tt58', 'link58')" onMouseOut="HideTip('tt58')">svgToString</a></td><td class=SDescription>Sub function ran on each SVG element to convert it to a string as desired</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.embedImage" id=link59 onMouseOver="ShowTip(event, 'tt59', 'link59')" onMouseOut="HideTip('tt59')">embedImage</a></td><td class=SDescription>Converts a given image file to a data URL when possible, then runs a given callback</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.save" id=link60 onMouseOver="ShowTip(event, 'tt60', 'link60')" onMouseOut="HideTip('tt60')">save</a></td><td class=SDescription>Serializes the current drawing into SVG XML text and returns it to the &lsquo;saved&rsquo; handler. </td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.rasterExport" id=link61 onMouseOver="ShowTip(event, 'tt61', 'link61')" onMouseOut="HideTip('tt61')">rasterExport</a></td><td class=SDescription>Generates a PNG Data URL based on the current image, then calls &ldquo;exported&rdquo; with an object including the string and any issues found</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.getSvgString" id=link62 onMouseOver="ShowTip(event, 'tt62', 'link62')" onMouseOut="HideTip('tt62')">getSvgString</a></td><td class=SDescription>Returns the current drawing as raw SVG XML text.</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.setSvgString" id=link63 onMouseOver="ShowTip(event, 'tt63', 'link63')" onMouseOut="HideTip('tt63')">setSvgString</a></td><td class=SDescription>This function sets the current drawing as the input SVG XML.</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.importSvgString" id=link64 onMouseOver="ShowTip(event, 'tt64', 'link64')" onMouseOut="HideTip('tt64')">importSvgString</a></td><td class=SDescription>This function imports the input SVG XML into the current layer in the drawing</td></tr><tr class="SGroup SIndent1"><td class=SEntry><a href="#SelectorManager.Layers" >Layers</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.identifyLayers" id=link65 onMouseOver="ShowTip(event, 'tt65', 'link65')" onMouseOut="HideTip('tt65')">identifyLayers</a></td><td class=SDescription>Updates layer system</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.createLayer" id=link66 onMouseOver="ShowTip(event, 'tt66', 'link66')" onMouseOut="HideTip('tt66')">createLayer</a></td><td class=SDescription>Creates a new top-level layer in the drawing with the given name, sets the current layer to it, and then clears the selection  This function then calls the &lsquo;changed&rsquo; handler. </td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.deleteCurrentLayer" id=link67 onMouseOver="ShowTip(event, 'tt67', 'link67')" onMouseOut="HideTip('tt67')">deleteCurrentLayer</a></td><td class=SDescription>Deletes the current layer from the drawing and then clears the selection. </td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.getNumLayers" id=link68 onMouseOver="ShowTip(event, 'tt68', 'link68')" onMouseOut="HideTip('tt68')">getNumLayers</a></td><td class=SDescription>Returns the number of layers in the current drawing.</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.getLayer" id=link69 onMouseOver="ShowTip(event, 'tt69', 'link69')" onMouseOut="HideTip('tt69')">getLayer</a></td><td class=SDescription>Returns the name of the ith layer. </td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.getCurrentLayer" id=link70 onMouseOver="ShowTip(event, 'tt70', 'link70')" onMouseOut="HideTip('tt70')">getCurrentLayer</a></td><td class=SDescription>Returns the name of the currently selected layer. </td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.setCurrentLayer" id=link71 onMouseOver="ShowTip(event, 'tt71', 'link71')" onMouseOut="HideTip('tt71')">setCurrentLayer</a></td><td class=SDescription>Sets the current layer. </td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.renameCurrentLayer" id=link72 onMouseOver="ShowTip(event, 'tt72', 'link72')" onMouseOut="HideTip('tt72')">renameCurrentLayer</a></td><td class=SDescription>Renames the current layer. </td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.setCurrentLayerPosition" id=link73 onMouseOver="ShowTip(event, 'tt73', 'link73')" onMouseOut="HideTip('tt73')">setCurrentLayerPosition</a></td><td class=SDescription>Changes the position of the current layer to the new value. </td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.getLayerVisibility" id=link74 onMouseOver="ShowTip(event, 'tt74', 'link74')" onMouseOut="HideTip('tt74')">getLayerVisibility</a></td><td class=SDescription>Returns whether the layer is visible. </td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.setLayerVisibility" id=link75 onMouseOver="ShowTip(event, 'tt75', 'link75')" onMouseOut="HideTip('tt75')">setLayerVisibility</a></td><td class=SDescription>Sets the visibility of the layer. </td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.moveSelectedToLayer" id=link76 onMouseOver="ShowTip(event, 'tt76', 'link76')" onMouseOut="HideTip('tt76')">moveSelectedToLayer</a></td><td class=SDescription>Moves the selected elements to layername. </td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.getLayerOpacity" id=link77 onMouseOver="ShowTip(event, 'tt77', 'link77')" onMouseOut="HideTip('tt77')">getLayerOpacity</a></td><td class=SDescription>Returns the opacity of the given layer. </td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.setLayerOpacity" id=link78 onMouseOver="ShowTip(event, 'tt78', 'link78')" onMouseOut="HideTip('tt78')">setLayerOpacity</a></td><td class=SDescription>Sets the opacity of the given layer. </td></tr><tr class="SGroup SIndent1"><td class=SEntry><a href="#SelectorManager.Document_functions" >Document functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.clear" id=link79 onMouseOver="ShowTip(event, 'tt79', 'link79')" onMouseOut="HideTip('tt79')">clear</a></td><td class=SDescription>Clears the current document. </td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.linkControlPoints" >linkControlPoints</a></td><td class=SDescription>Alias function</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.getContentElem" id=link80 onMouseOver="ShowTip(event, 'tt80', 'link80')" onMouseOut="HideTip('tt80')">getContentElem</a></td><td class=SDescription>Returns the content DOM element</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.getRootElem" id=link81 onMouseOver="ShowTip(event, 'tt81', 'link81')" onMouseOut="HideTip('tt81')">getRootElem</a></td><td class=SDescription>Returns the root DOM element</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.getSelectedElems" id=link82 onMouseOver="ShowTip(event, 'tt82', 'link82')" onMouseOut="HideTip('tt82')">getSelectedElems</a></td><td class=SDescription>Returns the array with selected DOM elements</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.getResolution" id=link83 onMouseOver="ShowTip(event, 'tt83', 'link83')" onMouseOut="HideTip('tt83')">getResolution</a></td><td class=SDescription>Returns the current dimensions and zoom level in an object</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.getZoom" id=link84 onMouseOver="ShowTip(event, 'tt84', 'link84')" onMouseOut="HideTip('tt84')">getZoom</a></td><td class=SDescription>Returns the current zoom level</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.getVersion" id=link85 onMouseOver="ShowTip(event, 'tt85', 'link85')" onMouseOut="HideTip('tt85')">getVersion</a></td><td class=SDescription>Returns a string which describes the revision number of SvgCanvas.</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.setUiStrings" id=link86 onMouseOver="ShowTip(event, 'tt86', 'link86')" onMouseOut="HideTip('tt86')">setUiStrings</a></td><td class=SDescription>Update interface strings with given values</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.setConfig" id=link87 onMouseOver="ShowTip(event, 'tt87', 'link87')" onMouseOut="HideTip('tt87')">setConfig</a></td><td class=SDescription>Update configuration options with given values</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.getDocumentTitle" id=link88 onMouseOver="ShowTip(event, 'tt88', 'link88')" onMouseOut="HideTip('tt88')">getDocumentTitle</a></td><td class=SDescription>Returns the current document title or an empty string if not found</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.setDocumentTitle" id=link89 onMouseOver="ShowTip(event, 'tt89', 'link89')" onMouseOut="HideTip('tt89')">setDocumentTitle</a></td><td class=SDescription>Adds/updates a title element for the document with the given name. </td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.getEditorNS" id=link90 onMouseOver="ShowTip(event, 'tt90', 'link90')" onMouseOut="HideTip('tt90')">getEditorNS</a></td><td class=SDescription>Returns the editor&rsquo;s namespace URL, optionally adds it to root element</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.setResolution" id=link91 onMouseOver="ShowTip(event, 'tt91', 'link91')" onMouseOut="HideTip('tt91')">setResolution</a></td><td class=SDescription>Changes the document&rsquo;s dimensions to the given size</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.getOffset" id=link92 onMouseOver="ShowTip(event, 'tt92', 'link92')" onMouseOut="HideTip('tt92')">getOffset</a></td><td class=SDescription>Returns an object with x, y values indicating the svgcontent element&rsquo;s position in the editor&rsquo;s canvas.</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.setBBoxZoom" id=link93 onMouseOver="ShowTip(event, 'tt93', 'link93')" onMouseOut="HideTip('tt93')">setBBoxZoom</a></td><td class=SDescription>Sets the zoom level on the canvas-side based on the given value</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.setZoom" id=link94 onMouseOver="ShowTip(event, 'tt94', 'link94')" onMouseOut="HideTip('tt94')">setZoom</a></td><td class=SDescription>Sets the zoom to the given level</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.getMode" id=link95 onMouseOver="ShowTip(event, 'tt95', 'link95')" onMouseOut="HideTip('tt95')">getMode</a></td><td class=SDescription>Returns the current editor mode string</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.setMode" id=link96 onMouseOver="ShowTip(event, 'tt96', 'link96')" onMouseOut="HideTip('tt96')">setMode</a></td><td class=SDescription>Sets the editor&rsquo;s mode to the given string</td></tr><tr class="SGroup SIndent1"><td class=SEntry><a href="#SelectorManager.Element_Styling" >Element Styling</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.getColor" id=link97 onMouseOver="ShowTip(event, 'tt97', 'link97')" onMouseOut="HideTip('tt97')">getColor</a></td><td class=SDescription>Returns the current fill/stroke option</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.setColor" id=link98 onMouseOver="ShowTip(event, 'tt98', 'link98')" onMouseOut="HideTip('tt98')">setColor</a></td><td class=SDescription>Change the current stroke/fill color/gradient value</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.findDefs" id=link99 onMouseOver="ShowTip(event, 'tt99', 'link99')" onMouseOut="HideTip('tt99')">findDefs</a></td><td class=SDescription>Return the document&rsquo;s &lt;defs&gt; element, create it first if necessary</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.setGradient" id=link100 onMouseOver="ShowTip(event, 'tt100', 'link100')" onMouseOut="HideTip('tt100')">setGradient</a></td><td class=SDescription>Apply the current gradient to selected element&rsquo;s fill or stroke</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.findDuplicateGradient" id=link101 onMouseOver="ShowTip(event, 'tt101', 'link101')" onMouseOut="HideTip('tt101')">findDuplicateGradient</a></td><td class=SDescription>Check if exact gradient already exists</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.setPaint" id=link102 onMouseOver="ShowTip(event, 'tt102', 'link102')" onMouseOut="HideTip('tt102')">setPaint</a></td><td class=SDescription>Set a color/gradient to a fill/stroke</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.getStrokeWidth" id=link103 onMouseOver="ShowTip(event, 'tt103', 'link103')" onMouseOut="HideTip('tt103')">getStrokeWidth</a></td><td class=SDescription>Returns the current stroke-width value</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.setStrokeWidth" id=link104 onMouseOver="ShowTip(event, 'tt104', 'link104')" onMouseOut="HideTip('tt104')">setStrokeWidth</a></td><td class=SDescription>Sets the stroke width for the current selected elements When attempting to set a line&rsquo;s width to 0, this changes it to 1 instead</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.setStrokeAttr" id=link105 onMouseOver="ShowTip(event, 'tt105', 'link105')" onMouseOut="HideTip('tt105')">setStrokeAttr</a></td><td class=SDescription>Set the given stroke-related attribute the given value for selected elements</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.getOpacity" id=link106 onMouseOver="ShowTip(event, 'tt106', 'link106')" onMouseOut="HideTip('tt106')">getOpacity</a></td><td class=SDescription>Returns the current opacity</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.setOpacity" id=link107 onMouseOver="ShowTip(event, 'tt107', 'link107')" onMouseOut="HideTip('tt107')">setOpacity</a></td><td class=SDescription>Sets the given opacity to the current selected elements</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.getOpacity" >getOpacity</a></td><td class=SDescription>Returns the current fill opacity</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.getStrokeOpacity" id=link108 onMouseOver="ShowTip(event, 'tt108', 'link108')" onMouseOut="HideTip('tt108')">getStrokeOpacity</a></td><td class=SDescription>Returns the current stroke opacity</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.setPaintOpacity" id=link109 onMouseOver="ShowTip(event, 'tt109', 'link109')" onMouseOut="HideTip('tt109')">setPaintOpacity</a></td><td class=SDescription>Sets the current fill/stroke opacity</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.getBlur" id=link110 onMouseOver="ShowTip(event, 'tt110', 'link110')" onMouseOut="HideTip('tt110')">getBlur</a></td><td class=SDescription>Gets the stdDeviation blur value of the given element</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.setBlurNoUndo" id=link111 onMouseOver="ShowTip(event, 'tt111', 'link111')" onMouseOut="HideTip('tt111')">setBlurNoUndo</a></td><td class=SDescription>Sets the stdDeviation blur value on the selected element without being undoable</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.setBlurOffsets" id=link112 onMouseOver="ShowTip(event, 'tt112', 'link112')" onMouseOut="HideTip('tt112')">setBlurOffsets</a></td><td class=SDescription>Sets the x, y, with, height values of the filter element in order to make the blur not be clipped. </td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.setBlur" id=link113 onMouseOver="ShowTip(event, 'tt113', 'link113')" onMouseOut="HideTip('tt113')">setBlur</a></td><td class=SDescription>Adds/updates the blur filter to the selected element</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.getBold" id=link114 onMouseOver="ShowTip(event, 'tt114', 'link114')" onMouseOut="HideTip('tt114')">getBold</a></td><td class=SDescription>Check whether selected element is bold or not</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.setBold" id=link115 onMouseOver="ShowTip(event, 'tt115', 'link115')" onMouseOut="HideTip('tt115')">setBold</a></td><td class=SDescription>Make the selected element bold or normal</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.getItalic" id=link116 onMouseOver="ShowTip(event, 'tt116', 'link116')" onMouseOut="HideTip('tt116')">getItalic</a></td><td class=SDescription>Check whether selected element is italic or not</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.setItalic" id=link117 onMouseOver="ShowTip(event, 'tt117', 'link117')" onMouseOut="HideTip('tt117')">setItalic</a></td><td class=SDescription>Make the selected element italic or normal</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.getFontFamily" id=link118 onMouseOver="ShowTip(event, 'tt118', 'link118')" onMouseOut="HideTip('tt118')">getFontFamily</a></td><td class=SDescription>Returns the current font family</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.setFontFamily" id=link119 onMouseOver="ShowTip(event, 'tt119', 'link119')" onMouseOut="HideTip('tt119')">setFontFamily</a></td><td class=SDescription>Set the new font family</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.getFontSize" id=link120 onMouseOver="ShowTip(event, 'tt120', 'link120')" onMouseOut="HideTip('tt120')">getFontSize</a></td><td class=SDescription>Returns the current font size</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.setFontSize" id=link121 onMouseOver="ShowTip(event, 'tt121', 'link121')" onMouseOut="HideTip('tt121')">setFontSize</a></td><td class=SDescription>Applies the given font size to the selected element</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.getText" id=link122 onMouseOver="ShowTip(event, 'tt122', 'link122')" onMouseOut="HideTip('tt122')">getText</a></td><td class=SDescription>Returns the current text (textContent) of the selected element</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.setTextContent" id=link123 onMouseOver="ShowTip(event, 'tt123', 'link123')" onMouseOut="HideTip('tt123')">setTextContent</a></td><td class=SDescription>Updates the text element with the given string</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.setImageURL" id=link124 onMouseOver="ShowTip(event, 'tt124', 'link124')" onMouseOut="HideTip('tt124')">setImageURL</a></td><td class=SDescription>Sets the new image URL for the selected image element. </td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.setRectRadius" id=link125 onMouseOver="ShowTip(event, 'tt125', 'link125')" onMouseOut="HideTip('tt125')">setRectRadius</a></td><td class=SDescription>Sets the rx &amp; ry values to the selected rect element to change its corner radius</td></tr><tr class="SGroup SIndent1"><td class=SEntry><a href="#SelectorManager.Element_manipulation" >Element manipulation</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.setSegType" id=link126 onMouseOver="ShowTip(event, 'tt126', 'link126')" onMouseOut="HideTip('tt126')">setSegType</a></td><td class=SDescription>Sets the new segment type to the selected segment(s).</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.convertToPath" id=link127 onMouseOver="ShowTip(event, 'tt127', 'link127')" onMouseOut="HideTip('tt127')">convertToPath</a></td><td class=SDescription>Convert selected element to a path, or get the BBox of an element-as-path</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.changeSelectedAttributeNoUndo" id=link128 onMouseOver="ShowTip(event, 'tt128', 'link128')" onMouseOut="HideTip('tt128')">changeSelectedAttributeNoUndo</a></td><td class=SDescription>This function makes the changes to the elements. </td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.changeSelectedAttribute" id=link129 onMouseOver="ShowTip(event, 'tt129', 'link129')" onMouseOut="HideTip('tt129')">changeSelectedAttribute</a></td><td class=SDescription>Change the given/selected element and add the original value to the history stack If you want to change all selectedElements, ignore the elems argument. </td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.deleteSelectedElements" id=link130 onMouseOver="ShowTip(event, 'tt130', 'link130')" onMouseOut="HideTip('tt130')">deleteSelectedElements</a></td><td class=SDescription>Removes all selected elements from the DOM and adds the change to the history stack</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.groupSelectedElements" id=link131 onMouseOver="ShowTip(event, 'tt131', 'link131')" onMouseOut="HideTip('tt131')">groupSelectedElements</a></td><td class=SDescription>Wraps all the selected elements in a group (g) element</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.ungroupSelectedElement" id=link132 onMouseOver="ShowTip(event, 'tt132', 'link132')" onMouseOut="HideTip('tt132')">ungroupSelectedElement</a></td><td class=SDescription>Unwraps all the elements in a selected group (g) element. </td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.moveToTopSelectedElement" id=link133 onMouseOver="ShowTip(event, 'tt133', 'link133')" onMouseOut="HideTip('tt133')">moveToTopSelectedElement</a></td><td class=SDescription>Repositions the selected element to the bottom in the DOM to appear on top of other elements</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.moveToBottomSelectedElement" id=link134 onMouseOver="ShowTip(event, 'tt134', 'link134')" onMouseOut="HideTip('tt134')">moveToBottomSelectedElement</a></td><td class=SDescription>Repositions the selected element to the top in the DOM to appear under other elements</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.moveSelectedElements" id=link135 onMouseOver="ShowTip(event, 'tt135', 'link135')" onMouseOut="HideTip('tt135')">moveSelectedElements</a></td><td class=SDescription>Moves selected elements on the X/Y axis</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.cloneSelectedElements" id=link136 onMouseOver="ShowTip(event, 'tt136', 'link136')" onMouseOut="HideTip('tt136')">cloneSelectedElements</a></td><td class=SDescription>Create deep DOM copies (clones) of all selected elements and move them slightly from their originals</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.alignSelectedElements" id=link137 onMouseOver="ShowTip(event, 'tt137', 'link137')" onMouseOut="HideTip('tt137')">alignSelectedElements</a></td><td class=SDescription>Aligns selected elements</td></tr><tr class="SGroup SIndent1"><td class=SEntry><a href="#SelectorManager.Additional_editor_tools" >Additional editor tools</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.updateCanvas" id=link138 onMouseOver="ShowTip(event, 'tt138', 'link138')" onMouseOut="HideTip('tt138')">updateCanvas</a></td><td class=SDescription>Updates the editor canvas width/height/position after a zoom has occurred</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#SelectorManager.setBackground" id=link139 onMouseOver="ShowTip(event, 'tt139', 'link139')" onMouseOut="HideTip('tt139')">setBackground</a></td><td class=SDescription>Set the background of the editor (NOT the actual document)</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#SelectorManager.cycleElement" id=link140 onMouseOver="ShowTip(event, 'tt140', 'link140')" onMouseOut="HideTip('tt140')">cycleElement</a></td><td class=SDescription>Select the next/previous element within the current layer</td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.Utils.toXml"></a>Utils.<wbr>toXml</h3><div class=CBody><p>Converts characters in a string to XML-friendly entities.</p><p>Example: &ldquo;&amp;&rdquo; becomes &ldquo;&amp;amp;&rdquo;</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>str</td><td class=CDLDescription>The string to be converted</td></tr></table><h4 class=CHeading>Returns</h4><p>The converted string</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.Utils.fromXml"></a>Utils.<wbr>fromXml</h3><div class=CBody><p>Converts XML entities in a string to single characters.&nbsp; Example: &ldquo;&amp;amp;&rdquo; becomes &ldquo;&amp;&rdquo;</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>str</td><td class=CDLDescription>The string to be converted</td></tr></table><h4 class=CHeading>Returns</h4><p>The converted string</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.Utils.encode64"></a>Utils.<wbr>encode64</h3><div class=CBody><p>Converts a string to base64</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.Utils.decode64"></a>Utils.<wbr>decode64</h3><div class=CBody><p>Converts a string from base64</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.Utils.convertToXMLReferences"></a>Utils.<wbr>convertToXMLReferences</h3><div class=CBody><p>Converts a string to use XML references</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.rectsIntersect"></a>rectsIntersect</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>&quot;rectsIntersect&quot;: function(</td><td class=PParameter nowrap>r1,</td></tr><tr><td></td><td class=PParameter nowrap>r2</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Check if two rectangles (BBoxes objects) intersect each other</p><h4 class=CHeading>Paramaters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>r1</td><td class=CDLDescription>The first BBox-like object</td></tr><tr><td class=CDLEntry>r2</td><td class=CDLDescription>The second BBox-like object</td></tr></table><h4 class=CHeading>Returns</h4><p>Boolean that&rsquo;s true if rectangles intersect</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.snapToAngle"></a>snapToAngle</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>&quot;snapToAngle&quot;: function(</td><td class=PParameter nowrap>x1,</td></tr><tr><td></td><td class=PParameter nowrap>y1,</td></tr><tr><td></td><td class=PParameter nowrap>x2,</td></tr><tr><td></td><td class=PParameter nowrap>y2</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Returns a 45 degree angle coordinate associated with the two given coordinates</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>x1</td><td class=CDLDescription>First coordinate&rsquo;s x value</td></tr><tr><td class=CDLEntry>x2</td><td class=CDLDescription>Second coordinate&rsquo;s x value</td></tr><tr><td class=CDLEntry>y1</td><td class=CDLDescription>First coordinate&rsquo;s y value</td></tr><tr><td class=CDLEntry>y2</td><td class=CDLDescription>Second coordinate&rsquo;s y value</td></tr></table><h4 class=CHeading>Returns</h4><p>Object with the following values: x - The angle-snapped x value y - The angle-snapped y value snapangle - The angle at which to snap</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.text2xml"></a>text2xml</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>&quot;text2xml&quot;: function(</td><td class=PParameter nowrap>sXML</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Cross-browser compatible method of converting a string to an XML tree found this function here: <a href="http://groups.google.com/group/jquery-dev/browse_thread/thread/c6d11387c580a77f" class=LURL target=_top>http://groups.google.com<wbr>/group<wbr>/jquery-dev<wbr>/browse_thread<wbr>/thread<wbr>/c6d11387c580a77f</a></p></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.Unit_conversion_functions"></a>Unit conversion functions</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.convertToNum"></a>convertToNum</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>convertToNum = function(</td><td class=PParameter nowrap>attr,</td></tr><tr><td></td><td class=PParameter nowrap>val</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Converts given values to numbers.&nbsp; Attributes must be supplied in case a percentage is given</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>attr</td><td class=CDLDescription>String with the name of the attribute associated with the value</td></tr><tr><td class=CDLEntry>val</td><td class=CDLDescription>String with the attribute value to convert</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.setUnitAttr"></a>setUnitAttr</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>setUnitAttr = function(</td><td class=PParameter nowrap>elem,</td></tr><tr><td></td><td class=PParameter nowrap>attr,</td></tr><tr><td></td><td class=PParameter nowrap>val</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Sets an element&rsquo;s attribute based on the unit in its current value.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>elem</td><td class=CDLDescription>DOM element to be changed</td></tr><tr><td class=CDLEntry>attr</td><td class=CDLDescription>String with the name of the attribute associated with the value</td></tr><tr><td class=CDLEntry>val</td><td class=CDLDescription>String with the attribute value to convert</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.isValidUnit"></a>isValidUnit</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>canvas.isValidUnit = function(</td><td class=PParameter nowrap>attr,</td></tr><tr><td></td><td class=PParameter nowrap>val</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Check if an attribute&rsquo;s value is in a valid format</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>attr</td><td class=CDLDescription>String with the name of the attribute associated with the value</td></tr><tr><td class=CDLEntry>val</td><td class=CDLDescription>String with the attribute value to check</td></tr></table></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.Undo/Redo_history_management"></a>Undo/<wbr>Redo history management</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.ChangeElementCommand"></a>ChangeElementCommand</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var ChangeElementCommand = this.undoCmd.changeElement = function(</td><td class=PParameter nowrap>elem,</td></tr><tr><td></td><td class=PParameter nowrap>attrs,</td></tr><tr><td></td><td class=PParameter nowrap>text</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>History command to make a change to an element.&nbsp; Usually an attribute change, but can also be textcontent.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>elem</td><td class=CDLDescription>The DOM element that was changed</td></tr><tr><td class=CDLEntry>attrs</td><td class=CDLDescription>An object with the attributes to be changed and the values they had <b>before</b> the change</td></tr><tr><td class=CDLEntry>text</td><td class=CDLDescription>An optional string visible to user related to this change</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.ChangeElementCommand.apply"></a>ChangeElementCommand.<wbr>apply</h3><div class=CBody><p>Performs the stored change action</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.ChangeElementCommand.unapply"></a>ChangeElementCommand.<wbr>unapply</h3><div class=CBody><p>Reverses the stored change action</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.ChangeElementCommand.elements"></a>ChangeElementCommand.<wbr>elements</h3><div class=CBody><p>Returns array with element associated with this command</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.InsertElementCommand"></a>InsertElementCommand</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var InsertElementCommand = this.undoCmd.insertElement = function(</td><td class=PParameter nowrap>elem,</td></tr><tr><td></td><td class=PParameter nowrap>text</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>History command for an element that was added to the DOM</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>elem</td><td class=CDLDescription>The newly added DOM element</td></tr><tr><td class=CDLEntry>text</td><td class=CDLDescription>An optional string visible to user related to this change</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.InsertElementCommand.apply"></a>InsertElementCommand.<wbr>apply</h3><div class=CBody><p>Re-Inserts the new element</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.InsertElementCommand.unapply"></a>InsertElementCommand.<wbr>unapply</h3><div class=CBody><p>Removes the element</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.InsertElementCommand.elements"></a>InsertElementCommand.<wbr>elements</h3><div class=CBody><p>Returns array with element associated with this command</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.RemoveElementCommand"></a>RemoveElementCommand</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var RemoveElementCommand = this.undoCmd.removeElement = function(</td><td class=PParameter nowrap>elem,</td></tr><tr><td></td><td class=PParameter nowrap>parent,</td></tr><tr><td></td><td class=PParameter nowrap>text</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>History command for an element removed from the DOM</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>elem</td><td class=CDLDescription>The removed DOM element</td></tr><tr><td class=CDLEntry>parent</td><td class=CDLDescription>The DOM element&rsquo;s parent</td></tr><tr><td class=CDLEntry>text</td><td class=CDLDescription>An optional string visible to user related to this change</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.RemoveElementCommand.apply"></a>RemoveElementCommand.<wbr>apply</h3><div class=CBody><p>Re-removes the new element</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.RemoveElementCommand.unapply"></a>RemoveElementCommand.<wbr>unapply</h3><div class=CBody><p>Re-adds the new element</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.RemoveElementCommand.elements"></a>RemoveElementCommand.<wbr>elements</h3><div class=CBody><p>Returns array with element associated with this command</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.MoveElementCommand"></a>MoveElementCommand</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var MoveElementCommand = this.undoCmd.moveElement = function(</td><td class=PParameter nowrap>elem,</td></tr><tr><td></td><td class=PParameter nowrap>oldNextSibling,</td></tr><tr><td></td><td class=PParameter nowrap>oldParent,</td></tr><tr><td></td><td class=PParameter nowrap>text</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>History command for an element that had its DOM position changed</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>elem</td><td class=CDLDescription>The DOM element that was moved</td></tr><tr><td class=CDLEntry>oldNextSibling</td><td class=CDLDescription>The element&rsquo;s next sibling before it was moved</td></tr><tr><td class=CDLEntry>oldParent</td><td class=CDLDescription>The element&rsquo;s parent before it was moved</td></tr><tr><td class=CDLEntry>text</td><td class=CDLDescription>An optional string visible to user related to this change</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.MoveElementCommand.unapply"></a>MoveElementCommand.<wbr>unapply</h3><div class=CBody><p>Re-positions the element</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.MoveElementCommand.unapply"></a>MoveElementCommand.<wbr>unapply</h3><div class=CBody><p>Positions the element back to its original location</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.MoveElementCommand.elements"></a>MoveElementCommand.<wbr>elements</h3><div class=CBody><p>Returns array with element associated with this command</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.BatchCommand"></a>BatchCommand</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var BatchCommand = this.undoCmd.batch = function(</td><td class=PParameter nowrap>text</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>History command that can contain/execute multiple other commands</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>text</td><td class=CDLDescription>An optional string visible to user related to this change</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.BatchCommand.apply"></a>BatchCommand.<wbr>apply</h3><div class=CBody><p>Runs &ldquo;apply&rdquo; on all subcommands</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.BatchCommand.unapply"></a>BatchCommand.<wbr>unapply</h3><div class=CBody><p>Runs &ldquo;unapply&rdquo; on all subcommands</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.BatchCommand.elements"></a>BatchCommand.<wbr>elements</h3><div class=CBody><p>Iterate through all our subcommands and returns all the elements we are changing</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.BatchCommand.addSubCommand"></a>BatchCommand.<wbr>addSubCommand</h3><div class=CBody><p>Adds a given command to the history stack</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>cmd</td><td class=CDLDescription>The undo command object to add</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.BatchCommand.isEmpty"></a>BatchCommand.<wbr>isEmpty</h3><div class=CBody><p>Returns a boolean indicating whether or not the batch command is empty</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.resetUndoStack"></a>resetUndoStack</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>resetUndoStack = function()</td></tr></table></blockquote><p>Resets the undo stack, effectively clearing the undo/redo history</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.undoMgr.getUndoStackSize"></a>undoMgr.<wbr>getUndoStackSize</h3><div class=CBody><h4 class=CHeading>Returns</h4><p>Integer with the current size of the undo history stack</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.undoMgr.getRedoStackSize"></a>undoMgr.<wbr>getRedoStackSize</h3><div class=CBody><h4 class=CHeading>Returns</h4><p>Integer with the current size of the redo history stack</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.undoMgr.getNextUndoCommandText"></a>undoMgr.<wbr>getNextUndoCommandText</h3><div class=CBody><h4 class=CHeading>Returns</h4><p>String associated with the next undo command</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.undoMgr.getNextRedoCommandText"></a>undoMgr.<wbr>getNextRedoCommandText</h3><div class=CBody><h4 class=CHeading>Returns</h4><p>String associated with the next redo command</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.undoMgr.undo"></a>undoMgr.undo</h3><div class=CBody><p>Performs an undo step</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.undoMgr.redo"></a>undoMgr.redo</h3><div class=CBody><p>Performs a redo step</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.addCommandToHistory"></a>addCommandToHistory</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>addCommandToHistory = c.undoCmd.add = function(</td><td class=PParameter nowrap>cmd</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Adds a command object to the undo history stack</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>cmd</td><td class=CDLDescription>The command object to add</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.beginUndoableChange"></a>beginUndoableChange</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>c.beginUndoableChange = function(</td><td class=PParameter nowrap>attrName,</td></tr><tr><td></td><td class=PParameter nowrap>elems</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>This function tells the canvas to remember the old values of the attrName attribute for each element sent in.&nbsp;  The elements and values are stored on a stack, so the next call to finishUndoableChange() will pop the elements and old values off the stack, gets the current values from the DOM and uses all of these to construct the undo-able command.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>attrName</td><td class=CDLDescription>The name of the attribute being changed</td></tr><tr><td class=CDLEntry>elems</td><td class=CDLDescription>Array of DOM elements being changed</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SvgCanvas.finishUndoableChange"></a>finishUndoableChange</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>c.finishUndoableChange = function()</td></tr></table></blockquote><p>This function returns a BatchCommand object which summarizes the change since beginUndoableChange was called.&nbsp;  The command can then be added to the command history</p><h4 class=CHeading>Returns</h4><p>Batch command object with resulting changes</p></div></div></div>
+
+<div class="CInterface"><div class=CTopic><h2 class=CTitle><a name="Selector"></a>Selector</h2><div class=CBody><p>Private class for DOM element selection boxes</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>id</td><td class=CDLDescription>integer to internally indentify the selector</td></tr><tr><td class=CDLEntry>elem</td><td class=CDLDescription>DOM element associated with this selector</td></tr></table><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SGroup"><td class=SEntry><a href="#Selector.Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#Selector.Selector.reset" >Selector.<wbr>reset</a></td><td class=SDescription>Used to reset the id and element that the selector is attached to</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#Selector.Selector.showGrips" >Selector.<wbr>showGrips</a></td><td class=SDescription>Show the resize grips of this selector</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#Selector.Selector.updateGripCursors" >Selector.<wbr>updateGripCursors</a></td><td class=SDescription>Updates cursors for corner grips on rotation so arrows point the right way</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#Selector.Selector.resize" >Selector.<wbr>resize</a></td><td class=SDescription>Updates the selector to match the element&rsquo;s size</td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Selector.Functions"></a>Functions</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="Selector.Selector.reset"></a>Selector.<wbr>reset</h3><div class=CBody><p>Used to reset the id and element that the selector is attached to</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>e</td><td class=CDLDescription>DOM element associated with this selector</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="Selector.Selector.showGrips"></a>Selector.<wbr>showGrips</h3><div class=CBody><p>Show the resize grips of this selector</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>show</td><td class=CDLDescription>boolean indicating whether grips should be shown or not</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="Selector.Selector.updateGripCursors"></a>Selector.<wbr>updateGripCursors</h3><div class=CBody><p>Updates cursors for corner grips on rotation so arrows point the right way</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>angle</td><td class=CDLDescription>Float indicating current rotation angle in degrees</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="Selector.Selector.resize"></a>Selector.<wbr>resize</h3><div class=CBody><p>Updates the selector to match the element&rsquo;s size</p></div></div></div>
+
+<div class="CInterface"><div class=CTopic><h2 class=CTitle><a name="SelectorManager"></a>SelectorManager</h2><div class=CBody><p>Public class to manage all selector objects (selection boxes)</p><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SFunction"><td class=SEntry><a href="#SelectorManager.SelectorManager.initGroup" >SelectorManager.<wbr>initGroup</a></td><td class=SDescription>Resets the parent selector group element</td></tr><tr class="SFunction SMarked"><td class=SEntry><a href="#SelectorManager.SelectorManager.requestSelector" >SelectorManager.<wbr>requestSelector</a></td><td class=SDescription>Returns the selector based on the given element</td></tr><tr class="SFunction"><td class=SEntry><a href="#SelectorManager.SelectorManager.releaseSelector" >SelectorManager.<wbr>releaseSelector</a></td><td class=SDescription>Removes the selector of the given element (hides selection box)</td></tr><tr class="SFunction SMarked"><td class=SEntry><a href="#SelectorManager.SelectorManager.getRubberBandBox" >SelectorManager.<wbr>getRubberBandBox</a></td><td class=SDescription>Returns the rubberBandBox DOM element. </td></tr><tr class="SGroup"><td class=SEntry><a href="#SelectorManager.Helper_functions" >Helper functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.walkTree" id=link141 onMouseOver="ShowTip(event, 'tt16', 'link141')" onMouseOut="HideTip('tt16')">walkTree</a></td><td class=SDescription>Walks the tree and executes the callback on each element in a top-down fashion</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.walkTreePost" id=link142 onMouseOver="ShowTip(event, 'tt17', 'link142')" onMouseOut="HideTip('tt17')">walkTreePost</a></td><td class=SDescription>Walks the tree and executes the callback on each element in a depth-first fashion</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.assignAttributes" id=link143 onMouseOver="ShowTip(event, 'tt18', 'link143')" onMouseOut="HideTip('tt18')">assignAttributes</a></td><td class=SDescription>Assigns multiple attributes to an element.</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.cleanupElement" id=link144 onMouseOver="ShowTip(event, 'tt19', 'link144')" onMouseOut="HideTip('tt19')">cleanupElement</a></td><td class=SDescription>Remove unneeded (default) attributes, makes resulting SVG smaller</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.addSvgElementFromJson" id=link145 onMouseOver="ShowTip(event, 'tt20', 'link145')" onMouseOut="HideTip('tt20')">addSvgElementFromJson</a></td><td class=SDescription>Create a new SVG element based on the given object keys/values and add it to the current layer The element will be ran through cleanupElement before being returned</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.addExtension" id=link146 onMouseOver="ShowTip(event, 'tt21', 'link146')" onMouseOut="HideTip('tt21')">addExtension</a></td><td class=SDescription>Add an extension to the editor</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.shortFloat" id=link147 onMouseOver="ShowTip(event, 'tt22', 'link147')" onMouseOut="HideTip('tt22')">shortFloat</a></td><td class=SDescription>Rounds a given value to a float with number of digits defined in save_options</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.getStrokedBBox" id=link148 onMouseOver="ShowTip(event, 'tt23', 'link148')" onMouseOut="HideTip('tt23')">getStrokedBBox</a></td><td class=SDescription>Get the bounding box for one or more stroked and/or transformed elements</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.getVisibleElements" id=link149 onMouseOver="ShowTip(event, 'tt24', 'link149')" onMouseOut="HideTip('tt24')">getVisibleElements</a></td><td class=SDescription>Get all elements that have a BBox (excludes &lt;defs&gt;, &lt;title&gt;, etc). </td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.copyElem" id=link150 onMouseOver="ShowTip(event, 'tt25', 'link150')" onMouseOut="HideTip('tt25')">copyElem</a></td><td class=SDescription>Create a clone of an element, updating its ID and its children&rsquo;s IDs when needed</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.getElem" id=link151 onMouseOver="ShowTip(event, 'tt26', 'link151')" onMouseOut="HideTip('tt26')">getElem</a></td><td class=SDescription>Get a DOM element by ID within the SVG root element.</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.getId" id=link152 onMouseOver="ShowTip(event, 'tt27', 'link152')" onMouseOut="HideTip('tt27')">getId</a></td><td class=SDescription>Returns the last created DOM element ID string</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.getNextId" id=link153 onMouseOver="ShowTip(event, 'tt28', 'link153')" onMouseOut="HideTip('tt28')">getNextId</a></td><td class=SDescription>Creates and returns a unique ID string for a DOM element</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.bind" id=link154 onMouseOver="ShowTip(event, 'tt29', 'link154')" onMouseOut="HideTip('tt29')">bind</a></td><td class=SDescription>Attaches a callback function to an event</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.setIdPrefix" id=link155 onMouseOver="ShowTip(event, 'tt30', 'link155')" onMouseOut="HideTip('tt30')">setIdPrefix</a></td><td class=SDescription>Changes the ID prefix to the given value</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.sanitizeSvg" id=link156 onMouseOver="ShowTip(event, 'tt31', 'link156')" onMouseOut="HideTip('tt31')">sanitizeSvg</a></td><td class=SDescription>Sanitizes the input node and its children It only keeps what is allowed from our whitelist defined above</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.getUrlFromAttr" id=link157 onMouseOver="ShowTip(event, 'tt32', 'link157')" onMouseOut="HideTip('tt32')">getUrlFromAttr</a></td><td class=SDescription>Extracts the URL from the url(...)</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.getBBox" id=link158 onMouseOver="ShowTip(event, 'tt33', 'link158')" onMouseOut="HideTip('tt33')">getBBox</a></td><td class=SDescription>Get the given/selected element&rsquo;s bounding box object, convert it to be more usable when necessary</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.ffClone" id=link159 onMouseOver="ShowTip(event, 'tt34', 'link159')" onMouseOut="HideTip('tt34')">ffClone</a></td><td class=SDescription>Hack for Firefox bugs where text element features aren&rsquo;t updated. </td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.getPathBBox" id=link160 onMouseOver="ShowTip(event, 'tt35', 'link160')" onMouseOut="HideTip('tt35')">getPathBBox</a></td><td class=SDescription>Get correct BBox for a path in Webkit Converted from code found here: <a href="http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html" class=LURL target=_top>http://blog.hackers-cafe.net<wbr>/2009<wbr>/06<wbr>/how-to-calculate-bezier-curves-bounding.html</a></td></tr><tr class="SGroup"><td class=SEntry><a href="#SelectorManager.Element_Transforms" >Element Transforms</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.getRotationAngle" id=link161 onMouseOver="ShowTip(event, 'tt36', 'link161')" onMouseOut="HideTip('tt36')">getRotationAngle</a></td><td class=SDescription>Get the rotation angle of the given/selected DOM element</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.setRotationAngle" id=link162 onMouseOver="ShowTip(event, 'tt37', 'link162')" onMouseOut="HideTip('tt37')">setRotationAngle</a></td><td class=SDescription>Removes any old rotations if present, prepends a new rotation at the transformed center</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.getTransformList" id=link163 onMouseOver="ShowTip(event, 'tt38', 'link163')" onMouseOut="HideTip('tt38')">getTransformList</a></td><td class=SDescription>Returns an object that behaves like a SVGTransformList for the given DOM element</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.recalculateAllSelectedDimensions" id=link164 onMouseOver="ShowTip(event, 'tt39', 'link164')" onMouseOut="HideTip('tt39')">recalculateAllSelectedDimensions</a></td><td class=SDescription>Runs recalculateDimensions on the selected elements, adding the changes to a single batch command</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.remapElement" id=link165 onMouseOver="ShowTip(event, 'tt40', 'link165')" onMouseOut="HideTip('tt40')">remapElement</a></td><td class=SDescription>Applies coordinate changes to an element based on the given matrix</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.recalculateDimensions" id=link166 onMouseOver="ShowTip(event, 'tt41', 'link166')" onMouseOut="HideTip('tt41')">recalculateDimensions</a></td><td class=SDescription>Decides the course of action based on the element&rsquo;s transform list</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.transformPoint" id=link167 onMouseOver="ShowTip(event, 'tt42', 'link167')" onMouseOut="HideTip('tt42')">transformPoint</a></td><td class=SDescription>A (hopefully) quicker function to transform a point by a matrix (this function avoids any DOM calls and just does the math)</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.isIdentity" id=link168 onMouseOver="ShowTip(event, 'tt43', 'link168')" onMouseOut="HideTip('tt43')">isIdentity</a></td><td class=SDescription>Helper function to check if the matrix performs no actual transform (i.e. </td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.matrixMultiply" id=link169 onMouseOver="ShowTip(event, 'tt44', 'link169')" onMouseOut="HideTip('tt44')">matrixMultiply</a></td><td class=SDescription>This function tries to return a SVGMatrix that is the multiplication m1*m2. </td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.transformListToTransform" id=link170 onMouseOver="ShowTip(event, 'tt45', 'link170')" onMouseOut="HideTip('tt45')">transformListToTransform</a></td><td class=SDescription>This returns a single matrix Transform for a given Transform List (this is the equivalent of SVGTransformList.consolidate() but unlike that method, this one does not modify the actual SVGTransformList) This function is very liberal with its min,max arguments</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.hasMatrixTransform" id=link171 onMouseOver="ShowTip(event, 'tt46', 'link171')" onMouseOut="HideTip('tt46')">hasMatrixTransform</a></td><td class=SDescription>See if the given transformlist includes a non-indentity matrix transform</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.getMatrix" id=link172 onMouseOver="ShowTip(event, 'tt47', 'link172')" onMouseOut="HideTip('tt47')">getMatrix</a></td><td class=SDescription>Get the matrix object for a given element</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.transformBox" id=link173 onMouseOver="ShowTip(event, 'tt48', 'link173')" onMouseOut="HideTip('tt48')">transformBox</a></td><td class=SDescription>Transforms a rectangle based on the given matrix</td></tr><tr class="SGroup"><td class=SEntry><a href="#SelectorManager.Selection" >Selection</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.clearSelection" id=link174 onMouseOver="ShowTip(event, 'tt49', 'link174')" onMouseOut="HideTip('tt49')">clearSelection</a></td><td class=SDescription>Clears the selection. </td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.addToSelection" id=link175 onMouseOver="ShowTip(event, 'tt50', 'link175')" onMouseOut="HideTip('tt50')">addToSelection</a></td><td class=SDescription>Adds a list of elements to the selection. </td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.removeFromSelection" id=link176 onMouseOver="ShowTip(event, 'tt51', 'link176')" onMouseOut="HideTip('tt51')">removeFromSelection</a></td><td class=SDescription>Removes elements from the selection.</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.selectAllInCurrentLayer" id=link177 onMouseOver="ShowTip(event, 'tt52', 'link177')" onMouseOut="HideTip('tt52')">selectAllInCurrentLayer</a></td><td class=SDescription>Clears the selection, then adds all elements in the current layer to the selection. </td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.smoothControlPoints" id=link178 onMouseOver="ShowTip(event, 'tt53', 'link178')" onMouseOut="HideTip('tt53')">smoothControlPoints</a></td><td class=SDescription>Takes three points and creates a smoother line based on them</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.getMouseTarget" id=link179 onMouseOver="ShowTip(event, 'tt54', 'link179')" onMouseOut="HideTip('tt54')">getMouseTarget</a></td><td class=SDescription>Gets the desired element from a mouse event</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.preventClickDefault" id=link180 onMouseOver="ShowTip(event, 'tt55', 'link180')" onMouseOut="HideTip('tt55')">preventClickDefault</a></td><td class=SDescription>Prevents default browser click behaviour on the given element</td></tr><tr class="SGroup"><td class=SEntry><a href="#SelectorManager.Text_edit_functions" >Text edit functions</a></td><td class=SDescription>Functions relating to editing text elements</td></tr><tr class="SGroup"><td class=SEntry><a href="#SelectorManager.Path_edit_functions" >Path edit functions</a></td><td class=SDescription>Functions relating to editing path elements</td></tr><tr class="SGroup"><td class=SEntry><a href="#SelectorManager.Serialization" >Serialization</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.removeUnusedDefElems" id=link181 onMouseOver="ShowTip(event, 'tt56', 'link181')" onMouseOut="HideTip('tt56')">removeUnusedDefElems</a></td><td class=SDescription>Looks at DOM elements inside the &lt;defs&gt; to see if they are referred to, removes them from the DOM if they are not.</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.svgCanvasToString" id=link182 onMouseOver="ShowTip(event, 'tt57', 'link182')" onMouseOut="HideTip('tt57')">svgCanvasToString</a></td><td class=SDescription>Main function to set up the SVG content for output</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.svgToString" id=link183 onMouseOver="ShowTip(event, 'tt58', 'link183')" onMouseOut="HideTip('tt58')">svgToString</a></td><td class=SDescription>Sub function ran on each SVG element to convert it to a string as desired</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.embedImage" id=link184 onMouseOver="ShowTip(event, 'tt59', 'link184')" onMouseOut="HideTip('tt59')">embedImage</a></td><td class=SDescription>Converts a given image file to a data URL when possible, then runs a given callback</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.save" id=link185 onMouseOver="ShowTip(event, 'tt60', 'link185')" onMouseOut="HideTip('tt60')">save</a></td><td class=SDescription>Serializes the current drawing into SVG XML text and returns it to the &lsquo;saved&rsquo; handler. </td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.rasterExport" id=link186 onMouseOver="ShowTip(event, 'tt61', 'link186')" onMouseOut="HideTip('tt61')">rasterExport</a></td><td class=SDescription>Generates a PNG Data URL based on the current image, then calls &ldquo;exported&rdquo; with an object including the string and any issues found</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.getSvgString" id=link187 onMouseOver="ShowTip(event, 'tt62', 'link187')" onMouseOut="HideTip('tt62')">getSvgString</a></td><td class=SDescription>Returns the current drawing as raw SVG XML text.</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.setSvgString" id=link188 onMouseOver="ShowTip(event, 'tt63', 'link188')" onMouseOut="HideTip('tt63')">setSvgString</a></td><td class=SDescription>This function sets the current drawing as the input SVG XML.</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.importSvgString" id=link189 onMouseOver="ShowTip(event, 'tt64', 'link189')" onMouseOut="HideTip('tt64')">importSvgString</a></td><td class=SDescription>This function imports the input SVG XML into the current layer in the drawing</td></tr><tr class="SGroup"><td class=SEntry><a href="#SelectorManager.Layers" >Layers</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.identifyLayers" id=link190 onMouseOver="ShowTip(event, 'tt65', 'link190')" onMouseOut="HideTip('tt65')">identifyLayers</a></td><td class=SDescription>Updates layer system</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.createLayer" id=link191 onMouseOver="ShowTip(event, 'tt66', 'link191')" onMouseOut="HideTip('tt66')">createLayer</a></td><td class=SDescription>Creates a new top-level layer in the drawing with the given name, sets the current layer to it, and then clears the selection  This function then calls the &lsquo;changed&rsquo; handler. </td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.deleteCurrentLayer" id=link192 onMouseOver="ShowTip(event, 'tt67', 'link192')" onMouseOut="HideTip('tt67')">deleteCurrentLayer</a></td><td class=SDescription>Deletes the current layer from the drawing and then clears the selection. </td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.getNumLayers" id=link193 onMouseOver="ShowTip(event, 'tt68', 'link193')" onMouseOut="HideTip('tt68')">getNumLayers</a></td><td class=SDescription>Returns the number of layers in the current drawing.</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.getLayer" id=link194 onMouseOver="ShowTip(event, 'tt69', 'link194')" onMouseOut="HideTip('tt69')">getLayer</a></td><td class=SDescription>Returns the name of the ith layer. </td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.getCurrentLayer" id=link195 onMouseOver="ShowTip(event, 'tt70', 'link195')" onMouseOut="HideTip('tt70')">getCurrentLayer</a></td><td class=SDescription>Returns the name of the currently selected layer. </td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.setCurrentLayer" id=link196 onMouseOver="ShowTip(event, 'tt71', 'link196')" onMouseOut="HideTip('tt71')">setCurrentLayer</a></td><td class=SDescription>Sets the current layer. </td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.renameCurrentLayer" id=link197 onMouseOver="ShowTip(event, 'tt72', 'link197')" onMouseOut="HideTip('tt72')">renameCurrentLayer</a></td><td class=SDescription>Renames the current layer. </td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.setCurrentLayerPosition" id=link198 onMouseOver="ShowTip(event, 'tt73', 'link198')" onMouseOut="HideTip('tt73')">setCurrentLayerPosition</a></td><td class=SDescription>Changes the position of the current layer to the new value. </td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.getLayerVisibility" id=link199 onMouseOver="ShowTip(event, 'tt74', 'link199')" onMouseOut="HideTip('tt74')">getLayerVisibility</a></td><td class=SDescription>Returns whether the layer is visible. </td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.setLayerVisibility" id=link200 onMouseOver="ShowTip(event, 'tt75', 'link200')" onMouseOut="HideTip('tt75')">setLayerVisibility</a></td><td class=SDescription>Sets the visibility of the layer. </td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.moveSelectedToLayer" id=link201 onMouseOver="ShowTip(event, 'tt76', 'link201')" onMouseOut="HideTip('tt76')">moveSelectedToLayer</a></td><td class=SDescription>Moves the selected elements to layername. </td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.getLayerOpacity" id=link202 onMouseOver="ShowTip(event, 'tt77', 'link202')" onMouseOut="HideTip('tt77')">getLayerOpacity</a></td><td class=SDescription>Returns the opacity of the given layer. </td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.setLayerOpacity" id=link203 onMouseOver="ShowTip(event, 'tt78', 'link203')" onMouseOut="HideTip('tt78')">setLayerOpacity</a></td><td class=SDescription>Sets the opacity of the given layer. </td></tr><tr class="SGroup"><td class=SEntry><a href="#SelectorManager.Document_functions" >Document functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.clear" id=link204 onMouseOver="ShowTip(event, 'tt79', 'link204')" onMouseOut="HideTip('tt79')">clear</a></td><td class=SDescription>Clears the current document. </td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.linkControlPoints" >linkControlPoints</a></td><td class=SDescription>Alias function</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.getContentElem" id=link205 onMouseOver="ShowTip(event, 'tt80', 'link205')" onMouseOut="HideTip('tt80')">getContentElem</a></td><td class=SDescription>Returns the content DOM element</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.getRootElem" id=link206 onMouseOver="ShowTip(event, 'tt81', 'link206')" onMouseOut="HideTip('tt81')">getRootElem</a></td><td class=SDescription>Returns the root DOM element</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.getSelectedElems" id=link207 onMouseOver="ShowTip(event, 'tt82', 'link207')" onMouseOut="HideTip('tt82')">getSelectedElems</a></td><td class=SDescription>Returns the array with selected DOM elements</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.getResolution" id=link208 onMouseOver="ShowTip(event, 'tt83', 'link208')" onMouseOut="HideTip('tt83')">getResolution</a></td><td class=SDescription>Returns the current dimensions and zoom level in an object</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.getZoom" id=link209 onMouseOver="ShowTip(event, 'tt84', 'link209')" onMouseOut="HideTip('tt84')">getZoom</a></td><td class=SDescription>Returns the current zoom level</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.getVersion" id=link210 onMouseOver="ShowTip(event, 'tt85', 'link210')" onMouseOut="HideTip('tt85')">getVersion</a></td><td class=SDescription>Returns a string which describes the revision number of SvgCanvas.</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.setUiStrings" id=link211 onMouseOver="ShowTip(event, 'tt86', 'link211')" onMouseOut="HideTip('tt86')">setUiStrings</a></td><td class=SDescription>Update interface strings with given values</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.setConfig" id=link212 onMouseOver="ShowTip(event, 'tt87', 'link212')" onMouseOut="HideTip('tt87')">setConfig</a></td><td class=SDescription>Update configuration options with given values</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.getDocumentTitle" id=link213 onMouseOver="ShowTip(event, 'tt88', 'link213')" onMouseOut="HideTip('tt88')">getDocumentTitle</a></td><td class=SDescription>Returns the current document title or an empty string if not found</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.setDocumentTitle" id=link214 onMouseOver="ShowTip(event, 'tt89', 'link214')" onMouseOut="HideTip('tt89')">setDocumentTitle</a></td><td class=SDescription>Adds/updates a title element for the document with the given name. </td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.getEditorNS" id=link215 onMouseOver="ShowTip(event, 'tt90', 'link215')" onMouseOut="HideTip('tt90')">getEditorNS</a></td><td class=SDescription>Returns the editor&rsquo;s namespace URL, optionally adds it to root element</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.setResolution" id=link216 onMouseOver="ShowTip(event, 'tt91', 'link216')" onMouseOut="HideTip('tt91')">setResolution</a></td><td class=SDescription>Changes the document&rsquo;s dimensions to the given size</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.getOffset" id=link217 onMouseOver="ShowTip(event, 'tt92', 'link217')" onMouseOut="HideTip('tt92')">getOffset</a></td><td class=SDescription>Returns an object with x, y values indicating the svgcontent element&rsquo;s position in the editor&rsquo;s canvas.</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.setBBoxZoom" id=link218 onMouseOver="ShowTip(event, 'tt93', 'link218')" onMouseOut="HideTip('tt93')">setBBoxZoom</a></td><td class=SDescription>Sets the zoom level on the canvas-side based on the given value</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.setZoom" id=link219 onMouseOver="ShowTip(event, 'tt94', 'link219')" onMouseOut="HideTip('tt94')">setZoom</a></td><td class=SDescription>Sets the zoom to the given level</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.getMode" id=link220 onMouseOver="ShowTip(event, 'tt95', 'link220')" onMouseOut="HideTip('tt95')">getMode</a></td><td class=SDescription>Returns the current editor mode string</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.setMode" id=link221 onMouseOver="ShowTip(event, 'tt96', 'link221')" onMouseOut="HideTip('tt96')">setMode</a></td><td class=SDescription>Sets the editor&rsquo;s mode to the given string</td></tr><tr class="SGroup"><td class=SEntry><a href="#SelectorManager.Element_Styling" >Element Styling</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.getColor" id=link222 onMouseOver="ShowTip(event, 'tt97', 'link222')" onMouseOut="HideTip('tt97')">getColor</a></td><td class=SDescription>Returns the current fill/stroke option</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.setColor" id=link223 onMouseOver="ShowTip(event, 'tt98', 'link223')" onMouseOut="HideTip('tt98')">setColor</a></td><td class=SDescription>Change the current stroke/fill color/gradient value</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.findDefs" id=link224 onMouseOver="ShowTip(event, 'tt99', 'link224')" onMouseOut="HideTip('tt99')">findDefs</a></td><td class=SDescription>Return the document&rsquo;s &lt;defs&gt; element, create it first if necessary</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.setGradient" id=link225 onMouseOver="ShowTip(event, 'tt100', 'link225')" onMouseOut="HideTip('tt100')">setGradient</a></td><td class=SDescription>Apply the current gradient to selected element&rsquo;s fill or stroke</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.findDuplicateGradient" id=link226 onMouseOver="ShowTip(event, 'tt101', 'link226')" onMouseOut="HideTip('tt101')">findDuplicateGradient</a></td><td class=SDescription>Check if exact gradient already exists</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.setPaint" id=link227 onMouseOver="ShowTip(event, 'tt102', 'link227')" onMouseOut="HideTip('tt102')">setPaint</a></td><td class=SDescription>Set a color/gradient to a fill/stroke</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.getStrokeWidth" id=link228 onMouseOver="ShowTip(event, 'tt103', 'link228')" onMouseOut="HideTip('tt103')">getStrokeWidth</a></td><td class=SDescription>Returns the current stroke-width value</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.setStrokeWidth" id=link229 onMouseOver="ShowTip(event, 'tt104', 'link229')" onMouseOut="HideTip('tt104')">setStrokeWidth</a></td><td class=SDescription>Sets the stroke width for the current selected elements When attempting to set a line&rsquo;s width to 0, this changes it to 1 instead</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.setStrokeAttr" id=link230 onMouseOver="ShowTip(event, 'tt105', 'link230')" onMouseOut="HideTip('tt105')">setStrokeAttr</a></td><td class=SDescription>Set the given stroke-related attribute the given value for selected elements</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.getOpacity" id=link231 onMouseOver="ShowTip(event, 'tt106', 'link231')" onMouseOut="HideTip('tt106')">getOpacity</a></td><td class=SDescription>Returns the current opacity</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.setOpacity" id=link232 onMouseOver="ShowTip(event, 'tt107', 'link232')" onMouseOut="HideTip('tt107')">setOpacity</a></td><td class=SDescription>Sets the given opacity to the current selected elements</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.getOpacity" >getOpacity</a></td><td class=SDescription>Returns the current fill opacity</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.getStrokeOpacity" id=link233 onMouseOver="ShowTip(event, 'tt108', 'link233')" onMouseOut="HideTip('tt108')">getStrokeOpacity</a></td><td class=SDescription>Returns the current stroke opacity</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.setPaintOpacity" id=link234 onMouseOver="ShowTip(event, 'tt109', 'link234')" onMouseOut="HideTip('tt109')">setPaintOpacity</a></td><td class=SDescription>Sets the current fill/stroke opacity</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.getBlur" id=link235 onMouseOver="ShowTip(event, 'tt110', 'link235')" onMouseOut="HideTip('tt110')">getBlur</a></td><td class=SDescription>Gets the stdDeviation blur value of the given element</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.setBlurNoUndo" id=link236 onMouseOver="ShowTip(event, 'tt111', 'link236')" onMouseOut="HideTip('tt111')">setBlurNoUndo</a></td><td class=SDescription>Sets the stdDeviation blur value on the selected element without being undoable</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.setBlurOffsets" id=link237 onMouseOver="ShowTip(event, 'tt112', 'link237')" onMouseOut="HideTip('tt112')">setBlurOffsets</a></td><td class=SDescription>Sets the x, y, with, height values of the filter element in order to make the blur not be clipped. </td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.setBlur" id=link238 onMouseOver="ShowTip(event, 'tt113', 'link238')" onMouseOut="HideTip('tt113')">setBlur</a></td><td class=SDescription>Adds/updates the blur filter to the selected element</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.getBold" id=link239 onMouseOver="ShowTip(event, 'tt114', 'link239')" onMouseOut="HideTip('tt114')">getBold</a></td><td class=SDescription>Check whether selected element is bold or not</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.setBold" id=link240 onMouseOver="ShowTip(event, 'tt115', 'link240')" onMouseOut="HideTip('tt115')">setBold</a></td><td class=SDescription>Make the selected element bold or normal</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.getItalic" id=link241 onMouseOver="ShowTip(event, 'tt116', 'link241')" onMouseOut="HideTip('tt116')">getItalic</a></td><td class=SDescription>Check whether selected element is italic or not</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.setItalic" id=link242 onMouseOver="ShowTip(event, 'tt117', 'link242')" onMouseOut="HideTip('tt117')">setItalic</a></td><td class=SDescription>Make the selected element italic or normal</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.getFontFamily" id=link243 onMouseOver="ShowTip(event, 'tt118', 'link243')" onMouseOut="HideTip('tt118')">getFontFamily</a></td><td class=SDescription>Returns the current font family</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.setFontFamily" id=link244 onMouseOver="ShowTip(event, 'tt119', 'link244')" onMouseOut="HideTip('tt119')">setFontFamily</a></td><td class=SDescription>Set the new font family</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.getFontSize" id=link245 onMouseOver="ShowTip(event, 'tt120', 'link245')" onMouseOut="HideTip('tt120')">getFontSize</a></td><td class=SDescription>Returns the current font size</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.setFontSize" id=link246 onMouseOver="ShowTip(event, 'tt121', 'link246')" onMouseOut="HideTip('tt121')">setFontSize</a></td><td class=SDescription>Applies the given font size to the selected element</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.getText" id=link247 onMouseOver="ShowTip(event, 'tt122', 'link247')" onMouseOut="HideTip('tt122')">getText</a></td><td class=SDescription>Returns the current text (textContent) of the selected element</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.setTextContent" id=link248 onMouseOver="ShowTip(event, 'tt123', 'link248')" onMouseOut="HideTip('tt123')">setTextContent</a></td><td class=SDescription>Updates the text element with the given string</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.setImageURL" id=link249 onMouseOver="ShowTip(event, 'tt124', 'link249')" onMouseOut="HideTip('tt124')">setImageURL</a></td><td class=SDescription>Sets the new image URL for the selected image element. </td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.setRectRadius" id=link250 onMouseOver="ShowTip(event, 'tt125', 'link250')" onMouseOut="HideTip('tt125')">setRectRadius</a></td><td class=SDescription>Sets the rx &amp; ry values to the selected rect element to change its corner radius</td></tr><tr class="SGroup"><td class=SEntry><a href="#SelectorManager.Element_manipulation" >Element manipulation</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.setSegType" id=link251 onMouseOver="ShowTip(event, 'tt126', 'link251')" onMouseOut="HideTip('tt126')">setSegType</a></td><td class=SDescription>Sets the new segment type to the selected segment(s).</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.convertToPath" id=link252 onMouseOver="ShowTip(event, 'tt127', 'link252')" onMouseOut="HideTip('tt127')">convertToPath</a></td><td class=SDescription>Convert selected element to a path, or get the BBox of an element-as-path</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.changeSelectedAttributeNoUndo" id=link253 onMouseOver="ShowTip(event, 'tt128', 'link253')" onMouseOut="HideTip('tt128')">changeSelectedAttributeNoUndo</a></td><td class=SDescription>This function makes the changes to the elements. </td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.changeSelectedAttribute" id=link254 onMouseOver="ShowTip(event, 'tt129', 'link254')" onMouseOut="HideTip('tt129')">changeSelectedAttribute</a></td><td class=SDescription>Change the given/selected element and add the original value to the history stack If you want to change all selectedElements, ignore the elems argument. </td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.deleteSelectedElements" id=link255 onMouseOver="ShowTip(event, 'tt130', 'link255')" onMouseOut="HideTip('tt130')">deleteSelectedElements</a></td><td class=SDescription>Removes all selected elements from the DOM and adds the change to the history stack</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.groupSelectedElements" id=link256 onMouseOver="ShowTip(event, 'tt131', 'link256')" onMouseOut="HideTip('tt131')">groupSelectedElements</a></td><td class=SDescription>Wraps all the selected elements in a group (g) element</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.ungroupSelectedElement" id=link257 onMouseOver="ShowTip(event, 'tt132', 'link257')" onMouseOut="HideTip('tt132')">ungroupSelectedElement</a></td><td class=SDescription>Unwraps all the elements in a selected group (g) element. </td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.moveToTopSelectedElement" id=link258 onMouseOver="ShowTip(event, 'tt133', 'link258')" onMouseOut="HideTip('tt133')">moveToTopSelectedElement</a></td><td class=SDescription>Repositions the selected element to the bottom in the DOM to appear on top of other elements</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.moveToBottomSelectedElement" id=link259 onMouseOver="ShowTip(event, 'tt134', 'link259')" onMouseOut="HideTip('tt134')">moveToBottomSelectedElement</a></td><td class=SDescription>Repositions the selected element to the top in the DOM to appear under other elements</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.moveSelectedElements" id=link260 onMouseOver="ShowTip(event, 'tt135', 'link260')" onMouseOut="HideTip('tt135')">moveSelectedElements</a></td><td class=SDescription>Moves selected elements on the X/Y axis</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.cloneSelectedElements" id=link261 onMouseOver="ShowTip(event, 'tt136', 'link261')" onMouseOut="HideTip('tt136')">cloneSelectedElements</a></td><td class=SDescription>Create deep DOM copies (clones) of all selected elements and move them slightly from their originals</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.alignSelectedElements" id=link262 onMouseOver="ShowTip(event, 'tt137', 'link262')" onMouseOut="HideTip('tt137')">alignSelectedElements</a></td><td class=SDescription>Aligns selected elements</td></tr><tr class="SGroup"><td class=SEntry><a href="#SelectorManager.Additional_editor_tools" >Additional editor tools</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.updateCanvas" id=link263 onMouseOver="ShowTip(event, 'tt138', 'link263')" onMouseOut="HideTip('tt138')">updateCanvas</a></td><td class=SDescription>Updates the editor canvas width/height/position after a zoom has occurred</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#SelectorManager.setBackground" id=link264 onMouseOver="ShowTip(event, 'tt139', 'link264')" onMouseOut="HideTip('tt139')">setBackground</a></td><td class=SDescription>Set the background of the editor (NOT the actual document)</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#SelectorManager.cycleElement" id=link265 onMouseOver="ShowTip(event, 'tt140', 'link265')" onMouseOut="HideTip('tt140')">cycleElement</a></td><td class=SDescription>Select the next/previous element within the current layer</td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.SelectorManager.initGroup"></a>SelectorManager.<wbr>initGroup</h3><div class=CBody><p>Resets the parent selector group element</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.SelectorManager.requestSelector"></a>SelectorManager.<wbr>requestSelector</h3><div class=CBody><p>Returns the selector based on the given element</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>elem</td><td class=CDLDescription>DOM element to get the selector for</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.SelectorManager.releaseSelector"></a>SelectorManager.<wbr>releaseSelector</h3><div class=CBody><p>Removes the selector of the given element (hides selection box)</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>elem</td><td class=CDLDescription>DOM element to remove the selector for</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.SelectorManager.getRubberBandBox"></a>SelectorManager.<wbr>getRubberBandBox</h3><div class=CBody><p>Returns the rubberBandBox DOM element.&nbsp; This is the rectangle drawn by the user for selecting/zooming</p></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.Helper_functions"></a>Helper functions</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.walkTree"></a>walkTree</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function walkTree(</td><td class=PParameter nowrap>elem,</td></tr><tr><td></td><td class=PParameter nowrap>cbFn</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Walks the tree and executes the callback on each element in a top-down fashion</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>elem</td><td class=CDLDescription>DOM element to traverse</td></tr><tr><td class=CDLEntry>cbFn</td><td class=CDLDescription>Callback function to run on each element</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.walkTreePost"></a>walkTreePost</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function walkTreePost(</td><td class=PParameter nowrap>elem,</td></tr><tr><td></td><td class=PParameter nowrap>cbFn</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Walks the tree and executes the callback on each element in a depth-first fashion</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>elem</td><td class=CDLDescription>DOM element to traverse</td></tr><tr><td class=CDLEntry>cbFn</td><td class=CDLDescription>Callback function to run on each element</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.assignAttributes"></a>assignAttributes</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var assignAttributes = this.assignAttributes = function(</td><td class=PParameter nowrap>node,</td></tr><tr><td></td><td class=PParameter nowrap>attrs,</td></tr><tr><td></td><td class=PParameter nowrap>suspendLength,</td></tr><tr><td></td><td class=PParameter nowrap>unitCheck</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Assigns multiple attributes to an element.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>node</td><td class=CDLDescription>DOM element to apply new attribute values to</td></tr><tr><td class=CDLEntry>attrs</td><td class=CDLDescription>Object with attribute keys/values</td></tr><tr><td class=CDLEntry>suspendLength</td><td class=CDLDescription>Optional integer of milliseconds to suspend redraw</td></tr><tr><td class=CDLEntry>unitCheck</td><td class=CDLDescription>Boolean to indicate the need to use setUnitAttr</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.cleanupElement"></a>cleanupElement</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var cleanupElement = this.cleanupElement = function(</td><td class=PParameter nowrap>element</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Remove unneeded (default) attributes, makes resulting SVG smaller</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>element</td><td class=CDLDescription>DOM element to clean up</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.addSvgElementFromJson"></a>addSvgElementFromJson</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var addSvgElementFromJson = this.addSvgElementFromJson = function(</td><td class=PParameter nowrap>data</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Create a new SVG element based on the given object keys/values and add it to the current layer The element will be ran through cleanupElement before being returned</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>data</td><td class=CDLDescription>Object with the following keys/values:</td></tr></table><ul><li>element - DOM element to create</li><li>attr - Object with attributes/values to assign to the new element</li><li>curStyles - Boolean indicating that current style attributes should be applied first</li></ul><p>Returns: The new element</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.addExtension"></a>addExtension</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.addExtension = function(</td><td class=PParameter nowrap>name,</td></tr><tr><td></td><td class=PParameter nowrap>ext_func</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Add an extension to the editor</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>name</td><td class=CDLDescription>String with the ID of the extension</td></tr><tr><td class=CDLEntry>ext_func</td><td class=CDLDescription>Function supplied by the extension with its data</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.shortFloat"></a>shortFloat</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var shortFloat = function(</td><td class=PParameter nowrap>val</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Rounds a given value to a float with number of digits defined in save_options</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>val</td><td class=CDLDescription>The value as a String, Number or Array of two numbers to be rounded</td></tr></table><h4 class=CHeading>Returns</h4><p>If a string/number was given, returns a Float.&nbsp; If an array, return a string with comma-seperated floats</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getStrokedBBox"></a>getStrokedBBox</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var getStrokedBBox = this.getStrokedBBox = function(</td><td class=PParameter nowrap>elems</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Get the bounding box for one or more stroked and/or transformed elements</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>elems</td><td class=CDLDescription>Array with DOM elements to check</td></tr></table><h4 class=CHeading>Returns</h4><p>A single bounding box object</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getVisibleElements"></a>getVisibleElements</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var getVisibleElements = this.getVisibleElements = function(</td><td class=PParameter nowrap>parent,</td></tr><tr><td></td><td class=PParameter nowrap>includeBBox</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Get all elements that have a BBox (excludes &lt;defs&gt;, &lt;title&gt;, etc).&nbsp; Note that 0-opacity, off-screen etc elements are still considered &ldquo;visible&rdquo; for this function</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>parent</td><td class=CDLDescription>The parent DOM element to search within</td></tr><tr><td class=CDLEntry>includeBBox</td><td class=CDLDescription>Boolean to indicate that an object should return with the element and its bbox</td></tr></table><h4 class=CHeading>Returns</h4><p>An array with all &ldquo;visible&rdquo; elements, or if includeBBox is true, an array with objects that include:</p><ul><li>elem - The element</li><li>bbox - The element&rsquo;s BBox as retrieved from getStrokedBBox</li></ul></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.copyElem"></a>copyElem</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var copyElem = function(</td><td class=PParameter nowrap>el</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Create a clone of an element, updating its ID and its children&rsquo;s IDs when needed</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>el</td><td class=CDLDescription>DOM element to clone</td></tr></table><p>Returns: The cloned element</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getElem"></a>getElem</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function getElem(</td><td class=PParameter nowrap>id</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Get a DOM element by ID within the SVG root element.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>id</td><td class=CDLDescription>String with the element&rsquo;s new ID</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getId"></a>getId</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>getId = c.getId = function()</td></tr></table></blockquote><p>Returns the last created DOM element ID string</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getNextId"></a>getNextId</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>getNextId = c.getNextId = function()</td></tr></table></blockquote><p>Creates and returns a unique ID string for a DOM element</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.bind"></a>bind</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>c.bind = function(</td><td class=PParameter nowrap>event,</td></tr><tr><td></td><td class=PParameter nowrap>f</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Attaches a callback function to an event</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>event</td><td class=CDLDescription>String indicating the name of the event</td></tr><tr><td class=CDLEntry>f</td><td class=CDLDescription>The callback function to bind to the event</td></tr></table><h4 class=CHeading>Return</h4><p>The previous event</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.setIdPrefix"></a>setIdPrefix</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>c.setIdPrefix = function(</td><td class=PParameter nowrap>p</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Changes the ID prefix to the given value</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>p</td><td class=CDLDescription>String with the new prefix</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.sanitizeSvg"></a>sanitizeSvg</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var sanitizeSvg = this.sanitizeSvg = function(</td><td class=PParameter nowrap>node</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Sanitizes the input node and its children It only keeps what is allowed from our whitelist defined above</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>node</td><td class=CDLDescription>The DOM element to be checked, will also check its children</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getUrlFromAttr"></a>getUrlFromAttr</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var getUrlFromAttr = this.getUrlFromAttr = function(</td><td class=PParameter nowrap>attrVal</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Extracts the URL from the url(...) syntax of some attributes.&nbsp; Three variants:</p><ul><li>&lt;circle fill=&rdquo;url(someFile.svg#foo)&rdquo; /&gt;</li><li>&lt;circle fill=&rdquo;url(&lsquo;someFile.svg#foo&rsquo;)&rdquo; /&gt;</li><li>&lt;circle fill=&rsquo;url(&ldquo;someFile.svg#foo&rdquo;)&rsquo; /&gt;</li></ul><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>attrVal</td><td class=CDLDescription>The attribute value as a string</td></tr></table><h4 class=CHeading>Returns</h4><p>String with just the URL, like someFile.svg#foo</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getBBox"></a>getBBox</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var getBBox = this.getBBox = function(</td><td class=PParameter nowrap>elem</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Get the given/selected element&rsquo;s bounding box object, convert it to be more usable when necessary</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>elem</td><td class=CDLDescription>Optional DOM element to get the BBox for</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.ffClone"></a>ffClone</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var ffClone = function(</td><td class=PParameter nowrap>elem</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Hack for Firefox bugs where text element features aren&rsquo;t updated.&nbsp; This function clones the element and re-selects it TODO: Test for this bug on load and add it to &ldquo;support&rdquo; object instead of browser sniffing</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>elem</td><td class=CDLDescription>The (text) DOM element to clone</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getPathBBox"></a>getPathBBox</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var getPathBBox = function(</td><td class=PParameter nowrap>path</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Get correct BBox for a path in Webkit Converted from code found here: <a href="http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html" class=LURL target=_top>http://blog.hackers-cafe.net<wbr>/2009<wbr>/06<wbr>/how-to-calculate-bezier-curves-bounding.html</a></p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>path</td><td class=CDLDescription>The path DOM element to get the BBox for</td></tr></table><h4 class=CHeading>Returns</h4><p>A BBox-like object</p></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.Element_Transforms"></a>Element Transforms</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getRotationAngle"></a>getRotationAngle</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var getRotationAngle = this.getRotationAngle = function(</td><td class=PParameter nowrap>elem,</td></tr><tr><td></td><td class=PParameter nowrap>to_rad</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Get the rotation angle of the given/selected DOM element</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>elem</td><td class=CDLDescription>Optional DOM element to get the angle for</td></tr><tr><td class=CDLEntry>to_rad</td><td class=CDLDescription>Boolean that when true returns the value in radians rather than degrees</td></tr></table><h4 class=CHeading>Returns</h4><p>Float with the angle in degrees or radians</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.setRotationAngle"></a>setRotationAngle</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setRotationAngle = function(</td><td class=PParameter nowrap>val,</td></tr><tr><td></td><td class=PParameter nowrap>preventUndo</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Removes any old rotations if present, prepends a new rotation at the transformed center</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>val</td><td class=CDLDescription>The new rotation angle in degrees</td></tr><tr><td class=CDLEntry>preventUndo</td><td class=CDLDescription>Boolean indicating whether the action should be undoable or not</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getTransformList"></a>getTransformList</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var getTransformList = this.getTransformList = function(</td><td class=PParameter nowrap>elem</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Returns an object that behaves like a SVGTransformList for the given DOM element</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>elem</td><td class=CDLDescription>DOM element to get a transformlist from</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.recalculateAllSelectedDimensions"></a>recalculateAllSelectedDimensions</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>var recalculateAllSelectedDimensions = this.recalculateAllSelectedDimensions = function()</td></tr></table></blockquote><p>Runs recalculateDimensions on the selected elements, adding the changes to a single batch command</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.remapElement"></a>remapElement</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var remapElement = this.remapElement = function(</td><td class=PParameter nowrap>selected,</td></tr><tr><td></td><td class=PParameter nowrap>changes,</td></tr><tr><td></td><td class=PParameter nowrap>m</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Applies coordinate changes to an element based on the given matrix</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>selected</td><td class=CDLDescription>DOM element to be changed</td></tr><tr><td class=CDLEntry>changes</td><td class=CDLDescription>Object with changes to be remapped</td></tr><tr><td class=CDLEntry>m</td><td class=CDLDescription>Matrix object to use for remapping coordinates</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.recalculateDimensions"></a>recalculateDimensions</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var recalculateDimensions = this.recalculateDimensions = function(</td><td class=PParameter nowrap>selected</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Decides the course of action based on the element&rsquo;s transform list</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>selected</td><td class=CDLDescription>The DOM element to recalculate</td></tr></table><h4 class=CHeading>Returns</h4><p>Undo command object with the resulting change</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.transformPoint"></a>transformPoint</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var transformPoint = function(</td><td class=PParameter nowrap>x,</td></tr><tr><td></td><td class=PParameter nowrap>y,</td></tr><tr><td></td><td class=PParameter nowrap>m</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>A (hopefully) quicker function to transform a point by a matrix (this function avoids any DOM calls and just does the math)</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>x</td><td class=CDLDescription>Float representing the x coordinate</td></tr><tr><td class=CDLEntry>y</td><td class=CDLDescription>Float representing the y coordinate</td></tr><tr><td class=CDLEntry>m</td><td class=CDLDescription>Matrix object to transform the point with Returns a x,y object representing the transformed point</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.isIdentity"></a>isIdentity</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var isIdentity = function(</td><td class=PParameter nowrap>m</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Helper function to check if the matrix performs no actual transform (i.e. exists for identity purposes)</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>m</td><td class=CDLDescription>The matrix object to check</td></tr></table><h4 class=CHeading>Returns</h4><p>Boolean indicating whether or not the matrix is 1,0,0,1,0,0</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.matrixMultiply"></a>matrixMultiply</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>var matrixMultiply = this.matrixMultiply = function()</td></tr></table></blockquote><p>This function tries to return a SVGMatrix that is the multiplication m1*m2.&nbsp; We also round to zero when it&rsquo;s near zero</p><h4 class=CHeading>Parameters</h4><blockquote><pre>= 2 Matrix objects to multiply</pre></blockquote><h4 class=CHeading>Returns</h4><p>The matrix object resulting from the calculation</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.transformListToTransform"></a>transformListToTransform</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var transformListToTransform = this.transformListToTransform = function(</td><td class=PParameter nowrap>tlist,</td></tr><tr><td></td><td class=PParameter nowrap>min,</td></tr><tr><td></td><td class=PParameter nowrap>max</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>This returns a single matrix Transform for a given Transform List (this is the equivalent of SVGTransformList.consolidate() but unlike that method, this one does not modify the actual SVGTransformList) This function is very liberal with its min,max arguments</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>tlist</td><td class=CDLDescription>The transformlist object</td></tr><tr><td class=CDLEntry>min</td><td class=CDLDescription>Optional integer indicating start transform position</td></tr><tr><td class=CDLEntry>max</td><td class=CDLDescription>Optional integer indicating end transform position</td></tr></table><h4 class=CHeading>Returns</h4><p>A single matrix transform object</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.hasMatrixTransform"></a>hasMatrixTransform</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var hasMatrixTransform = this.hasMatrixTransform = function(</td><td class=PParameter nowrap>tlist</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>See if the given transformlist includes a non-indentity matrix transform</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>tlist</td><td class=CDLDescription>The transformlist to check</td></tr></table><h4 class=CHeading>Returns</h4><p>Boolean on whether or not a matrix transform was found</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getMatrix"></a>getMatrix</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var getMatrix = function(</td><td class=PParameter nowrap>elem</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Get the matrix object for a given element</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>elem</td><td class=CDLDescription>The DOM element to check</td></tr></table><h4 class=CHeading>Returns</h4><p>The matrix object associated with the element&rsquo;s transformlist</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.transformBox"></a>transformBox</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var transformBox = this.transformBox = function(</td><td class=PParameter nowrap>l,</td></tr><tr><td></td><td class=PParameter nowrap>t,</td></tr><tr><td></td><td class=PParameter nowrap>w,</td></tr><tr><td></td><td class=PParameter nowrap>h,</td></tr><tr><td></td><td class=PParameter nowrap>m</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Transforms a rectangle based on the given matrix</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>l</td><td class=CDLDescription>Float with the box&rsquo;s left coordinate</td></tr><tr><td class=CDLEntry>t</td><td class=CDLDescription>Float with the box&rsquo;s top coordinate</td></tr><tr><td class=CDLEntry>w</td><td class=CDLDescription>Float with the box width</td></tr><tr><td class=CDLEntry>h</td><td class=CDLDescription>Float with the box height</td></tr><tr><td class=CDLEntry>m</td><td class=CDLDescription>Matrix object to transform the box by</td></tr></table><h4 class=CHeading>Returns</h4><p>An object with the following values:</p><ul><li>tl - The top left coordinate (x,y object)</li><li>tr - The top right coordinate (x,y object)</li><li>bl - The bottom left coordinate (x,y object)</li><li>br - The bottom right coordinate (x,y object)</li><li>aabox - Object with the following values:</li><li>Float with the axis-aligned x coordinate</li><li>Float with the axis-aligned y coordinate</li><li>Float with the axis-aligned width coordinate</li><li>Float with the axis-aligned height coordinate</li></ul></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.Selection"></a>Selection</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.clearSelection"></a>clearSelection</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var clearSelection = this.clearSelection = function(</td><td class=PParameter nowrap>noCall</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Clears the selection.&nbsp;  The &lsquo;selected&rsquo; handler is then called.&nbsp; Parameters: noCall - Optional boolean that when true does not call the &ldquo;selected&rdquo; handler</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.addToSelection"></a>addToSelection</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var addToSelection = this.addToSelection = function(</td><td class=PParameter nowrap>elemsToAdd,</td></tr><tr><td></td><td class=PParameter nowrap>showGrips</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Adds a list of elements to the selection.&nbsp;  The &lsquo;selected&rsquo; handler is then called.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>elemsToAdd</td><td class=CDLDescription>an array of DOM elements to add to the selection</td></tr><tr><td class=CDLEntry>showGrips</td><td class=CDLDescription>a boolean flag indicating whether the resize grips should be shown</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.removeFromSelection"></a>removeFromSelection</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var removeFromSelection = this.removeFromSelection = function(</td><td class=PParameter nowrap>elemsToRemove</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Removes elements from the selection.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>elemsToRemove</td><td class=CDLDescription>an array of elements to remove from selection</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.selectAllInCurrentLayer"></a>selectAllInCurrentLayer</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.selectAllInCurrentLayer = function()</td></tr></table></blockquote><p>Clears the selection, then adds all elements in the current layer to the selection.&nbsp; This function then fires the selected event.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.smoothControlPoints"></a>smoothControlPoints</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var smoothControlPoints = this.smoothControlPoints = function(</td><td class=PParameter nowrap>ct1,</td></tr><tr><td></td><td class=PParameter nowrap>ct2,</td></tr><tr><td></td><td class=PParameter nowrap>pt</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Takes three points and creates a smoother line based on them</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>ct1</td><td class=CDLDescription>Object with x and y values (first control point)</td></tr><tr><td class=CDLEntry>ct2</td><td class=CDLDescription>Object with x and y values (second control point)</td></tr><tr><td class=CDLEntry>pt</td><td class=CDLDescription>Object with x and y values (third point)</td></tr></table><h4 class=CHeading>Returns</h4><p>Array of two &ldquo;smoothed&rdquo; point objects</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getMouseTarget"></a>getMouseTarget</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var getMouseTarget = this.getMouseTarget = function(</td><td class=PParameter nowrap>evt</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Gets the desired element from a mouse event</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>evt</td><td class=CDLDescription>Event object from the mouse event</td></tr></table><h4 class=CHeading>Returns</h4><p>DOM element we want</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.preventClickDefault"></a>preventClickDefault</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var preventClickDefault = function(</td><td class=PParameter nowrap>img</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Prevents default browser click behaviour on the given element</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>img</td><td class=CDLDescription>The DOM element to prevent the cilck on</td></tr></table></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.Text_edit_functions"></a>Text edit functions</h3><div class=CBody><p>Functions relating to editing text elements</p></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.Path_edit_functions"></a>Path edit functions</h3><div class=CBody><p>Functions relating to editing path elements</p></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.Serialization"></a>Serialization</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.removeUnusedDefElems"></a>removeUnusedDefElems</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>var removeUnusedDefElems = this.removeUnusedDefElems = function()</td></tr></table></blockquote><p>Looks at DOM elements inside the &lt;defs&gt; to see if they are referred to, removes them from the DOM if they are not.</p><h4 class=CHeading>Returns</h4><p>The amount of elements that were removed</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.svgCanvasToString"></a>svgCanvasToString</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>var svgCanvasToString = this.svgCanvasToString = function()</td></tr></table></blockquote><p>Main function to set up the SVG content for output</p><h4 class=CHeading>Returns</h4><p>String containing the SVG image for output</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.svgToString"></a>svgToString</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var svgToString = this.svgToString = function(</td><td class=PParameter nowrap>elem,</td></tr><tr><td></td><td class=PParameter nowrap>indent</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Sub function ran on each SVG element to convert it to a string as desired</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>elem</td><td class=CDLDescription>The SVG element to convert</td></tr><tr><td class=CDLEntry>indent</td><td class=CDLDescription>Integer with the amount of spaces to indent this tag</td></tr></table><h4 class=CHeading>Returns</h4><p>String with the given element as an SVG tag</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.embedImage"></a>embedImage</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.embedImage = function(</td><td class=PParameter nowrap>val,</td></tr><tr><td></td><td class=PParameter nowrap>callback</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Converts a given image file to a data URL when possible, then runs a given callback</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>val</td><td class=CDLDescription>String with the path/URL of the image</td></tr><tr><td class=CDLEntry>callback</td><td class=CDLDescription>Optional function to run when image data is found, supplies the result (data URL or false) as first parameter.</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.save"></a>save</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.save = function(</td><td class=PParameter nowrap>opts</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Serializes the current drawing into SVG XML text and returns it to the &lsquo;saved&rsquo; handler.&nbsp; This function also includes the XML prolog.&nbsp;  Clients of the SvgCanvas bind their save function to the &lsquo;saved&rsquo; event.</p><h4 class=CHeading>Returns</h4><p>Nothing</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.rasterExport"></a>rasterExport</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.rasterExport = function()</td></tr></table></blockquote><p>Generates a PNG Data URL based on the current image, then calls &ldquo;exported&rdquo; with an object including the string and any issues found</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getSvgString"></a>getSvgString</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getSvgString = function()</td></tr></table></blockquote><p>Returns the current drawing as raw SVG XML text.</p><h4 class=CHeading>Returns</h4><p>The current drawing as raw SVG XML text.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.setSvgString"></a>setSvgString</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setSvgString = function(</td><td class=PParameter nowrap>xmlString</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>This function sets the current drawing as the input SVG XML.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>xmlString</td><td class=CDLDescription>The SVG as XML text.</td></tr></table><h4 class=CHeading>Returns</h4><p>This function returns false if the set was unsuccessful, true otherwise.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.importSvgString"></a>importSvgString</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.importSvgString = function(</td><td class=PParameter nowrap>xmlString</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>This function imports the input SVG XML into the current layer in the drawing</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>xmlString</td><td class=CDLDescription>The SVG as XML text.</td></tr></table><h4 class=CHeading>Returns</h4><p>This function returns false if the import was unsuccessful, true otherwise.&nbsp; TODO:</p><ul><li>properly handle if namespace is introduced by imported content (must add to svgcontent and update all prefixes in the imported node)</li><li>properly handle recalculating dimensions, recalculateDimensions() doesn&rsquo;t handle arbitrary transform lists, but makes some assumptions about how the transform list was obtained</li><li>import should happen in top-left of current zoomed viewport</li><li>create a new layer for the imported SVG</li></ul></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.Layers"></a>Layers</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.identifyLayers"></a>identifyLayers</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>var identifyLayers = function()</td></tr></table></blockquote><p>Updates layer system</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.createLayer"></a>createLayer</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.createLayer = function(</td><td class=PParameter nowrap>name</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Creates a new top-level layer in the drawing with the given name, sets the current layer to it, and then clears the selection  This function then calls the &lsquo;changed&rsquo; handler.&nbsp; This is an undoable action.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>name</td><td class=CDLDescription>The given name</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.deleteCurrentLayer"></a>deleteCurrentLayer</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.deleteCurrentLayer = function()</td></tr></table></blockquote><p>Deletes the current layer from the drawing and then clears the selection.&nbsp; This function then calls the &lsquo;changed&rsquo; handler.&nbsp;  This is an undoable action.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getNumLayers"></a>getNumLayers</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getNumLayers = function()</td></tr></table></blockquote><p>Returns the number of layers in the current drawing.</p><h4 class=CHeading>Returns</h4><p>The number of layers in the current drawing.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getLayer"></a>getLayer</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.getLayer = function(</td><td class=PParameter nowrap>i</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Returns the name of the ith layer.&nbsp; If the index is out of range, an empty string is returned.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>i</td><td class=CDLDescription>the zero-based index of the layer you are querying.</td></tr></table><h4 class=CHeading>Returns</h4><p>The name of the ith layer</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getCurrentLayer"></a>getCurrentLayer</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getCurrentLayer = function()</td></tr></table></blockquote><p>Returns the name of the currently selected layer.&nbsp; If an error occurs, an empty string is returned.</p><h4 class=CHeading>Returns</h4><p>The name of the currently active layer.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.setCurrentLayer"></a>setCurrentLayer</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setCurrentLayer = function(</td><td class=PParameter nowrap>name</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Sets the current layer.&nbsp; If the name is not a valid layer name, then this function returns false.&nbsp; Otherwise it returns true.&nbsp; This is not an undo-able action.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>name</td><td class=CDLDescription>the name of the layer you want to switch to.</td></tr></table><h4 class=CHeading>Returns</h4><p>true if the current layer was switched, otherwise false</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.renameCurrentLayer"></a>renameCurrentLayer</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.renameCurrentLayer = function(</td><td class=PParameter nowrap>newname</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Renames the current layer.&nbsp; If the layer name is not valid (i.e. unique), then this function does nothing and returns false, otherwise it returns true.&nbsp; This is an undo-able action.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>newname</td><td class=CDLDescription>the new name you want to give the current layer.&nbsp;  This name must be unique among all layer names.</td></tr></table><h4 class=CHeading>Returns</h4><p>true if the rename succeeded, false otherwise.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.setCurrentLayerPosition"></a>setCurrentLayerPosition</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setCurrentLayerPosition = function(</td><td class=PParameter nowrap>newpos</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Changes the position of the current layer to the new value.&nbsp; If the new index is not valid, this function does nothing and returns false, otherwise it returns true.&nbsp; This is an undo-able action.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>newpos</td><td class=CDLDescription>The zero-based index of the new position of the layer.&nbsp;  This should be between</td></tr><tr><td class=CDLEntry>0 and (number of layers</td><td class=CDLDescription>1)</td></tr></table><h4 class=CHeading>Returns</h4><p>true if the current layer position was changed, false otherwise.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getLayerVisibility"></a>getLayerVisibility</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.getLayerVisibility = function(</td><td class=PParameter nowrap>layername</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Returns whether the layer is visible.&nbsp;  If the layer name is not valid, then this function returns false.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>layername</td><td class=CDLDescription>the name of the layer which you want to query.</td></tr></table><h4 class=CHeading>Returns</h4><p>The visibility state of the layer, or false if the layer name was invalid.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.setLayerVisibility"></a>setLayerVisibility</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setLayerVisibility = function(</td><td class=PParameter nowrap>layername,</td></tr><tr><td></td><td class=PParameter nowrap>bVisible</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Sets the visibility of the layer.&nbsp; If the layer name is not valid, this function return false, otherwise it returns true.&nbsp; This is an undo-able action.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>layername</td><td class=CDLDescription>the name of the layer to change the visibility</td></tr><tr><td class=CDLEntry>bVisible</td><td class=CDLDescription>true/false, whether the layer should be visible</td></tr></table><h4 class=CHeading>Returns</h4><p>true if the layer&rsquo;s visibility was set, false otherwise</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.moveSelectedToLayer"></a>moveSelectedToLayer</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.moveSelectedToLayer = function(</td><td class=PParameter nowrap>layername</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Moves the selected elements to layername.&nbsp; If the name is not a valid layer name, then false is returned.&nbsp;  Otherwise it returns true.&nbsp; This is an undo-able action.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>layername</td><td class=CDLDescription>the name of the layer you want to which you want to move the selected elements</td></tr></table><h4 class=CHeading>Returns</h4><p>true if the selected elements were moved to the layer, false otherwise.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getLayerOpacity"></a>getLayerOpacity</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.getLayerOpacity = function(</td><td class=PParameter nowrap>layername</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Returns the opacity of the given layer.&nbsp;  If the input name is not a layer, null is returned.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>layername</td><td class=CDLDescription>name of the layer on which to get the opacity</td></tr></table><h4 class=CHeading>Returns</h4><p>The opacity value of the given layer.&nbsp;  This will be a value between 0.0 and 1.0, or null if layername is not a valid layer</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.setLayerOpacity"></a>setLayerOpacity</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setLayerOpacity = function(</td><td class=PParameter nowrap>layername,</td></tr><tr><td></td><td class=PParameter nowrap>opacity</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Sets the opacity of the given layer.&nbsp;  If the input name is not a layer, nothing happens.&nbsp; This is not an undo-able action.&nbsp;  NOTE: this function exists solely to apply a highlighting/de-emphasis effect to a layer, when it is possible for a user to affect the opacity of a layer, we will need to allow this function to produce an undo-able action.&nbsp; If opacity is not a value between 0.0 and 1.0, then nothing happens.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>layername</td><td class=CDLDescription>name of the layer on which to set the opacity</td></tr><tr><td class=CDLEntry>opacity</td><td class=CDLDescription>a float value in the range 0.0-1.0</td></tr></table></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.Document_functions"></a>Document functions</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.clear"></a>clear</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.clear = function()</td></tr></table></blockquote><p>Clears the current document.&nbsp;  This is not an undoable action.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.linkControlPoints"></a>linkControlPoints</h3><div class=CBody><p>Alias function</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getContentElem"></a>getContentElem</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getContentElem = function()</td></tr></table></blockquote><p>Returns the content DOM element</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getRootElem"></a>getRootElem</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getRootElem = function()</td></tr></table></blockquote><p>Returns the root DOM element</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getSelectedElems"></a>getSelectedElems</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getSelectedElems = function()</td></tr></table></blockquote><p>Returns the array with selected DOM elements</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getResolution"></a>getResolution</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>var getResolution = this.getResolution = function()</td></tr></table></blockquote><p>Returns the current dimensions and zoom level in an object</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getZoom"></a>getZoom</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getZoom = function()</td></tr></table></blockquote><p>Returns the current zoom level</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getVersion"></a>getVersion</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getVersion = function()</td></tr></table></blockquote><p>Returns a string which describes the revision number of SvgCanvas.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.setUiStrings"></a>setUiStrings</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setUiStrings = function(</td><td class=PParameter nowrap>strs</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Update interface strings with given values</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>strs</td><td class=CDLDescription>Object with strings (see uiStrings for examples)</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.setConfig"></a>setConfig</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setConfig = function(</td><td class=PParameter nowrap>opts</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Update configuration options with given values</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>opts</td><td class=CDLDescription>Object with options (see curConfig for examples)</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getDocumentTitle"></a>getDocumentTitle</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getDocumentTitle = function()</td></tr></table></blockquote><p>Returns the current document title or an empty string if not found</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.setDocumentTitle"></a>setDocumentTitle</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setDocumentTitle = function(</td><td class=PParameter nowrap>newtitle</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Adds/updates a title element for the document with the given name.&nbsp; This is an undoable action</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>newtitle</td><td class=CDLDescription>String with the new title</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getEditorNS"></a>getEditorNS</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.getEditorNS = function(</td><td class=PParameter nowrap>add</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Returns the editor&rsquo;s namespace URL, optionally adds it to root element</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>add</td><td class=CDLDescription>Boolean to indicate whether or not to add the namespace value</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.setResolution"></a>setResolution</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setResolution = function(</td><td class=PParameter nowrap>x,</td></tr><tr><td></td><td class=PParameter nowrap>y</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Changes the document&rsquo;s dimensions to the given size</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>x</td><td class=CDLDescription>Number with the width of the new dimensions in user units.&nbsp; Can also be the string &ldquo;fit&rdquo; to indicate &ldquo;fit to content&rdquo;</td></tr><tr><td class=CDLEntry>y</td><td class=CDLDescription>Number with the height of the new dimensions in user units.</td></tr></table><h4 class=CHeading>Returns</h4><p>Boolean to indicate if resolution change was succesful.&nbsp; It will fail on &ldquo;fit to content&rdquo; option with no content to fit to.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getOffset"></a>getOffset</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getOffset = function()</td></tr></table></blockquote><p>Returns an object with x, y values indicating the svgcontent element&rsquo;s position in the editor&rsquo;s canvas.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.setBBoxZoom"></a>setBBoxZoom</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setBBoxZoom = function(</td><td class=PParameter nowrap>val,</td></tr><tr><td></td><td class=PParameter nowrap>editor_w,</td></tr><tr><td></td><td class=PParameter nowrap>editor_h</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Sets the zoom level on the canvas-side based on the given value</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>val</td><td class=CDLDescription>Bounding box object to zoom to or string indicating zoom option</td></tr><tr><td class=CDLEntry>editor_w</td><td class=CDLDescription>Integer with the editor&rsquo;s workarea box&rsquo;s width</td></tr><tr><td class=CDLEntry>editor_h</td><td class=CDLDescription>Integer with the editor&rsquo;s workarea box&rsquo;s height</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.setZoom"></a>setZoom</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setZoom = function(</td><td class=PParameter nowrap>zoomlevel</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Sets the zoom to the given level</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>zoomlevel</td><td class=CDLDescription>Float indicating the zoom level to change to</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getMode"></a>getMode</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getMode = function()</td></tr></table></blockquote><p>Returns the current editor mode string</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.setMode"></a>setMode</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setMode = function(</td><td class=PParameter nowrap>name</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Sets the editor&rsquo;s mode to the given string</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>name</td><td class=CDLDescription>String with the new mode to change to</td></tr></table></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.Element_Styling"></a>Element Styling</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getColor"></a>getColor</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.getColor = function(</td><td class=PParameter nowrap>type</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Returns the current fill/stroke option</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.setColor"></a>setColor</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setColor = function(</td><td class=PParameter nowrap>type,</td></tr><tr><td></td><td class=PParameter nowrap>val,</td></tr><tr><td></td><td class=PParameter nowrap>preventUndo</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Change the current stroke/fill color/gradient value</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>type</td><td class=CDLDescription>String indicating fill or stroke</td></tr><tr><td class=CDLEntry>val</td><td class=CDLDescription>The value to set the stroke attribute to</td></tr><tr><td class=CDLEntry>preventUndo</td><td class=CDLDescription>Boolean indicating whether or not this should be and undoable option</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.findDefs"></a>findDefs</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>var findDefs = function()</td></tr></table></blockquote><p>Return the document&rsquo;s &lt;defs&gt; element, create it first if necessary</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.setGradient"></a>setGradient</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var setGradient = this.setGradient = function(</td><td class=PParameter nowrap>type</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Apply the current gradient to selected element&rsquo;s fill or stroke</p><p>Parameters type - String indicating &ldquo;fill&rdquo; or &ldquo;stroke&rdquo; to apply to an element</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.findDuplicateGradient"></a>findDuplicateGradient</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var findDuplicateGradient = function(</td><td class=PParameter nowrap>grad</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Check if exact gradient already exists</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>grad</td><td class=CDLDescription>The gradient DOM element to compare to others</td></tr></table><h4 class=CHeading>Returns</h4><p>The existing gradient if found, null if not</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.setPaint"></a>setPaint</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setPaint = function(</td><td class=PParameter nowrap>type,</td></tr><tr><td></td><td class=PParameter nowrap>paint</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Set a color/gradient to a fill/stroke</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>type</td><td class=CDLDescription>String with &ldquo;fill&rdquo; or &ldquo;stroke&rdquo;</td></tr><tr><td class=CDLEntry>paint</td><td class=CDLDescription>The jGraduate paint object to apply</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getStrokeWidth"></a>getStrokeWidth</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getStrokeWidth = function()</td></tr></table></blockquote><p>Returns the current stroke-width value</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.setStrokeWidth"></a>setStrokeWidth</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setStrokeWidth = function(</td><td class=PParameter nowrap>val</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Sets the stroke width for the current selected elements When attempting to set a line&rsquo;s width to 0, this changes it to 1 instead</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>val</td><td class=CDLDescription>A Float indicating the new stroke width value</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.setStrokeAttr"></a>setStrokeAttr</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setStrokeAttr = function(</td><td class=PParameter nowrap>attr,</td></tr><tr><td></td><td class=PParameter nowrap>val</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Set the given stroke-related attribute the given value for selected elements</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>attr</td><td class=CDLDescription>String with the attribute name</td></tr><tr><td class=CDLEntry>val</td><td class=CDLDescription>String or number with the attribute value</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getOpacity"></a>getOpacity</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getOpacity = function()</td></tr></table></blockquote><p>Returns the current opacity</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.setOpacity"></a>setOpacity</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setOpacity = function(</td><td class=PParameter nowrap>val</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Sets the given opacity to the current selected elements</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getOpacity"></a>getOpacity</h3><div class=CBody><p>Returns the current fill opacity</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getStrokeOpacity"></a>getStrokeOpacity</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getStrokeOpacity = function()</td></tr></table></blockquote><p>Returns the current stroke opacity</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.setPaintOpacity"></a>setPaintOpacity</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setPaintOpacity = function(</td><td class=PParameter nowrap>type,</td></tr><tr><td></td><td class=PParameter nowrap>val,</td></tr><tr><td></td><td class=PParameter nowrap>preventUndo</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Sets the current fill/stroke opacity</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>type</td><td class=CDLDescription>String with &ldquo;fill&rdquo; or &ldquo;stroke&rdquo;</td></tr><tr><td class=CDLEntry>val</td><td class=CDLDescription>Float with the new opacity value</td></tr><tr><td class=CDLEntry>preventUndo</td><td class=CDLDescription>Boolean indicating whether or not this should be an undoable action</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getBlur"></a>getBlur</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.getBlur = function(</td><td class=PParameter nowrap>elem</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Gets the stdDeviation blur value of the given element</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>elem</td><td class=CDLDescription>The element to check the blur value for</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.setBlurNoUndo"></a>setBlurNoUndo</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>canvas.setBlurNoUndo = function(</td><td class=PParameter nowrap>val</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Sets the stdDeviation blur value on the selected element without being undoable</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>val</td><td class=CDLDescription>The new stdDeviation value</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.setBlurOffsets"></a>setBlurOffsets</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>canvas.setBlurOffsets = function(</td><td class=PParameter nowrap>filter,</td></tr><tr><td></td><td class=PParameter nowrap>stdDev</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Sets the x, y, with, height values of the filter element in order to make the blur not be clipped.&nbsp; Removes them if not neeeded</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>filter</td><td class=CDLDescription>The filter DOM element to update</td></tr><tr><td class=CDLEntry>stdDev</td><td class=CDLDescription>The standard deviation value on which to base the offset size</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.setBlur"></a>setBlur</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>canvas.setBlur = function(</td><td class=PParameter nowrap>val,</td></tr><tr><td></td><td class=PParameter nowrap>complete</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Adds/updates the blur filter to the selected element</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>val</td><td class=CDLDescription>Float with the new stdDeviation blur value</td></tr><tr><td class=CDLEntry>complete</td><td class=CDLDescription>Boolean indicating whether or not the action should be completed (to add to the undo manager)</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getBold"></a>getBold</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getBold = function()</td></tr></table></blockquote><p>Check whether selected element is bold or not</p><h4 class=CHeading>Returns</h4><p>Boolean indicating whether or not element is bold</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.setBold"></a>setBold</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setBold = function(</td><td class=PParameter nowrap>b</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Make the selected element bold or normal</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>b</td><td class=CDLDescription>Boolean indicating bold (true) or normal (false)</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getItalic"></a>getItalic</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getItalic = function()</td></tr></table></blockquote><p>Check whether selected element is italic or not</p><h4 class=CHeading>Returns</h4><p>Boolean indicating whether or not element is italic</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.setItalic"></a>setItalic</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setItalic = function(</td><td class=PParameter nowrap>i</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Make the selected element italic or normal</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>b</td><td class=CDLDescription>Boolean indicating italic (true) or normal (false)</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getFontFamily"></a>getFontFamily</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getFontFamily = function()</td></tr></table></blockquote><p>Returns the current font family</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.setFontFamily"></a>setFontFamily</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setFontFamily = function(</td><td class=PParameter nowrap>val</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Set the new font family</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>val</td><td class=CDLDescription>String with the new font family</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getFontSize"></a>getFontSize</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getFontSize = function()</td></tr></table></blockquote><p>Returns the current font size</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.setFontSize"></a>setFontSize</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setFontSize = function(</td><td class=PParameter nowrap>val</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Applies the given font size to the selected element</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>val</td><td class=CDLDescription>Float with the new font size</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.getText"></a>getText</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getText = function()</td></tr></table></blockquote><p>Returns the current text (textContent) of the selected element</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.setTextContent"></a>setTextContent</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setTextContent = function(</td><td class=PParameter nowrap>val</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Updates the text element with the given string</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>val</td><td class=CDLDescription>String with the new text</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.setImageURL"></a>setImageURL</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setImageURL = function(</td><td class=PParameter nowrap>val</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Sets the new image URL for the selected image element.&nbsp; Updates its size if a new URL is given</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>val</td><td class=CDLDescription>String with the image URL/path</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.setRectRadius"></a>setRectRadius</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setRectRadius = function(</td><td class=PParameter nowrap>val</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Sets the rx &amp; ry values to the selected rect element to change its corner radius</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>val</td><td class=CDLDescription>The new radius</td></tr></table></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.Element_manipulation"></a>Element manipulation</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.setSegType"></a>setSegType</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setSegType = function(</td><td class=PParameter nowrap>new_type</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Sets the new segment type to the selected segment(s).</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>new_type</td><td class=CDLDescription>Integer with the new segment type See <a href="http://www.w3.org/TR/SVG/paths.html#InterfaceSVGPathSeg" class=LURL target=_top>http://www.w3.org<wbr>/TR<wbr>/SVG<wbr>/paths.html#InterfaceSVGPathSeg</a> for list</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.convertToPath"></a>convertToPath</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.convertToPath = function(</td><td class=PParameter nowrap>elem,</td></tr><tr><td></td><td class=PParameter nowrap>getBBox</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Convert selected element to a path, or get the BBox of an element-as-path</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>elem</td><td class=CDLDescription>The DOM element to be converted</td></tr><tr><td class=CDLEntry>getBBox</td><td class=CDLDescription>Boolean on whether or not to only return the path&rsquo;s BBox</td></tr></table><h4 class=CHeading>Returns</h4><p>If the getBBox flag is true, the resulting path&rsquo;s bounding box object.&nbsp; Otherwise the resulting path element is returned.</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.changeSelectedAttributeNoUndo"></a>changeSelectedAttributeNoUndo</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var changeSelectedAttributeNoUndo = function(</td><td class=PParameter nowrap>attr,</td></tr><tr><td></td><td class=PParameter nowrap>newValue,</td></tr><tr><td></td><td class=PParameter nowrap>elems</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>This function makes the changes to the elements.&nbsp; It does not add the change to the history stack.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>attr</td><td class=CDLDescription>String with the attribute name</td></tr><tr><td class=CDLEntry>newValue</td><td class=CDLDescription>String or number with the new attribute value</td></tr><tr><td class=CDLEntry>elems</td><td class=CDLDescription>The DOM elements to apply the change to</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.changeSelectedAttribute"></a>changeSelectedAttribute</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var changeSelectedAttribute = this.changeSelectedAttribute = function(</td><td class=PParameter nowrap>attr,</td></tr><tr><td></td><td class=PParameter nowrap>val,</td></tr><tr><td></td><td class=PParameter nowrap>elems</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Change the given/selected element and add the original value to the history stack If you want to change all selectedElements, ignore the elems argument.&nbsp; If you want to change only a subset of selectedElements, then send the subset to this function in the elems argument.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>attr</td><td class=CDLDescription>String with the attribute name</td></tr><tr><td class=CDLEntry>newValue</td><td class=CDLDescription>String or number with the new attribute value</td></tr><tr><td class=CDLEntry>elems</td><td class=CDLDescription>The DOM elements to apply the change to</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.deleteSelectedElements"></a>deleteSelectedElements</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.deleteSelectedElements = function()</td></tr></table></blockquote><p>Removes all selected elements from the DOM and adds the change to the history stack</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.groupSelectedElements"></a>groupSelectedElements</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.groupSelectedElements = function()</td></tr></table></blockquote><p>Wraps all the selected elements in a group (g) element</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.ungroupSelectedElement"></a>ungroupSelectedElement</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.ungroupSelectedElement = function()</td></tr></table></blockquote><p>Unwraps all the elements in a selected group (g) element.&nbsp; This requires significant recalculations to apply group&rsquo;s transforms, etc to its children</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.moveToTopSelectedElement"></a>moveToTopSelectedElement</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.moveToTopSelectedElement = function()</td></tr></table></blockquote><p>Repositions the selected element to the bottom in the DOM to appear on top of other elements</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.moveToBottomSelectedElement"></a>moveToBottomSelectedElement</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.moveToBottomSelectedElement = function()</td></tr></table></blockquote><p>Repositions the selected element to the top in the DOM to appear under other elements</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.moveSelectedElements"></a>moveSelectedElements</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.moveSelectedElements = function(</td><td class=PParameter nowrap>dx,</td></tr><tr><td></td><td class=PParameter nowrap>dy,</td></tr><tr><td></td><td class=PParameter nowrap>undoable</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Moves selected elements on the X/Y axis</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>dx</td><td class=CDLDescription>Float with the distance to move on the x-axis</td></tr><tr><td class=CDLEntry>dy</td><td class=CDLDescription>Float with the distance to move on the y-axis</td></tr><tr><td class=CDLEntry>undoable</td><td class=CDLDescription>Boolean indicating whether or not the action should be undoable</td></tr></table><h4 class=CHeading>Returns</h4><p>Batch command for the move</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.cloneSelectedElements"></a>cloneSelectedElements</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.cloneSelectedElements = function()</td></tr></table></blockquote><p>Create deep DOM copies (clones) of all selected elements and move them slightly from their originals</p></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.alignSelectedElements"></a>alignSelectedElements</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.alignSelectedElements = function(</td><td class=PParameter nowrap>type,</td></tr><tr><td></td><td class=PParameter nowrap>relative_to</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Aligns selected elements</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>type</td><td class=CDLDescription>String with single character indicating the alignment type</td></tr><tr><td class=CDLEntry>relative_to</td><td class=CDLDescription>String that must be one of the following: &ldquo;selected&rdquo;, &ldquo;largest&rdquo;, &ldquo;smallest&rdquo;, &ldquo;page&rdquo;</td></tr></table></div></div></div>
+
+<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.Additional_editor_tools"></a>Additional editor tools</h3></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.updateCanvas"></a>updateCanvas</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.updateCanvas = function(</td><td class=PParameter nowrap>w,</td></tr><tr><td></td><td class=PParameter nowrap>h</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Updates the editor canvas width/height/position after a zoom has occurred</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>w</td><td class=CDLDescription>Float with the new width</td></tr><tr><td class=CDLEntry>h</td><td class=CDLDescription>Float with the new height</td></tr></table><h4 class=CHeading>Returns</h4><p>Object with the following values:</p><ul><li>x - The canvas&rsquo; new x coordinate</li><li>y - The canvas&rsquo; new y coordinate</li><li>old_x - The canvas&rsquo; old x coordinate</li><li>old_y - The canvas&rsquo; old y coordinate</li><li>d_x - The x position difference</li><li>d_y - The y position difference</li></ul></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.setBackground"></a>setBackground</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setBackground = function(</td><td class=PParameter nowrap>color,</td></tr><tr><td></td><td class=PParameter nowrap>url</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Set the background of the editor (NOT the actual document)</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>color</td><td class=CDLDescription>String with fill color to apply</td></tr><tr><td class=CDLEntry>url</td><td class=CDLDescription>URL or path to image to use</td></tr></table></div></div></div>
+
+<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="SelectorManager.cycleElement"></a>cycleElement</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.cycleElement = function(</td><td class=PParameter nowrap>next</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Select the next/previous element within the current layer</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>next</td><td class=CDLDescription>Boolean where true = next and false = previous element</td></tr></table></div></div></div>
+
+</div><!--Content-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="extensions/ext-foreignobject-js.html">setForeignString(xmlString, elt)</a></div></div><div class=MEntry><div class=MFile id=MSelected>SvgCanvas</div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Classes.html">Classes</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Interfaces.html">Interfaces</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option  id=MSearchEverything selected value="General">Everything</option><option value="Classes">Classes</option><option value="Functions">Functions</option><option value="Interfaces">Interfaces</option></select></div></div><!--Menu-->
+
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>&quot;rectsIntersect&quot;: function(</td><td class=PParameter nowrap>r1,</td></tr><tr><td></td><td class=PParameter nowrap>r2</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Check if two rectangles (BBoxes objects) intersect each other</div></div><div class=CToolTip id="tt2"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>&quot;snapToAngle&quot;: function(</td><td class=PParameter nowrap>x1,</td></tr><tr><td></td><td class=PParameter nowrap>y1,</td></tr><tr><td></td><td class=PParameter nowrap>x2,</td></tr><tr><td></td><td class=PParameter nowrap>y2</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Returns a 45 degree angle coordinate associated with the two given coordinates</div></div><div class=CToolTip id="tt3"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>&quot;text2xml&quot;: function(</td><td class=PParameter nowrap>sXML</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Cross-browser compatible method of converting a string to an XML tree found this function here: http://groups.google.com/group/jquery-dev/browse_thread/thread/c6d11387c580a77f</div></div><div class=CToolTip id="tt4"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>convertToNum = function(</td><td class=PParameter nowrap>attr,</td></tr><tr><td></td><td class=PParameter nowrap>val</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Converts given values to numbers. </div></div><div class=CToolTip id="tt5"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>setUnitAttr = function(</td><td class=PParameter nowrap>elem,</td></tr><tr><td></td><td class=PParameter nowrap>attr,</td></tr><tr><td></td><td class=PParameter nowrap>val</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Sets an element&rsquo;s attribute based on the unit in its current value.</div></div><div class=CToolTip id="tt6"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>canvas.isValidUnit = function(</td><td class=PParameter nowrap>attr,</td></tr><tr><td></td><td class=PParameter nowrap>val</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Check if an attribute&rsquo;s value is in a valid format</div></div><div class=CToolTip id="tt7"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var ChangeElementCommand = this.undoCmd.changeElement = function(</td><td class=PParameter nowrap>elem,</td></tr><tr><td></td><td class=PParameter nowrap>attrs,</td></tr><tr><td></td><td class=PParameter nowrap>text</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>History command to make a change to an element. </div></div><div class=CToolTip id="tt8"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var InsertElementCommand = this.undoCmd.insertElement = function(</td><td class=PParameter nowrap>elem,</td></tr><tr><td></td><td class=PParameter nowrap>text</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>History command for an element that was added to the DOM</div></div><div class=CToolTip id="tt9"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var RemoveElementCommand = this.undoCmd.removeElement = function(</td><td class=PParameter nowrap>elem,</td></tr><tr><td></td><td class=PParameter nowrap>parent,</td></tr><tr><td></td><td class=PParameter nowrap>text</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>History command for an element removed from the DOM</div></div><div class=CToolTip id="tt10"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var MoveElementCommand = this.undoCmd.moveElement = function(</td><td class=PParameter nowrap>elem,</td></tr><tr><td></td><td class=PParameter nowrap>oldNextSibling,</td></tr><tr><td></td><td class=PParameter nowrap>oldParent,</td></tr><tr><td></td><td class=PParameter nowrap>text</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>History command for an element that had its DOM position changed</div></div><div class=CToolTip id="tt11"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var BatchCommand = this.undoCmd.batch = function(</td><td class=PParameter nowrap>text</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>History command that can contain/execute multiple other commands</div></div><div class=CToolTip id="tt12"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>resetUndoStack = function()</td></tr></table></blockquote>Resets the undo stack, effectively clearing the undo/redo history</div></div><div class=CToolTip id="tt13"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>addCommandToHistory = c.undoCmd.add = function(</td><td class=PParameter nowrap>cmd</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Adds a command object to the undo history stack</div></div><div class=CToolTip id="tt14"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>c.beginUndoableChange = function(</td><td class=PParameter nowrap>attrName,</td></tr><tr><td></td><td class=PParameter nowrap>elems</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>This function tells the canvas to remember the old values of the attrName attribute for each element sent in. </div></div><div class=CToolTip id="tt15"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>c.finishUndoableChange = function()</td></tr></table></blockquote>This function returns a BatchCommand object which summarizes the change since beginUndoableChange was called. </div></div><div class=CToolTip id="tt16"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function walkTree(</td><td class=PParameter nowrap>elem,</td></tr><tr><td></td><td class=PParameter nowrap>cbFn</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Walks the tree and executes the callback on each element in a top-down fashion</div></div><div class=CToolTip id="tt17"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function walkTreePost(</td><td class=PParameter nowrap>elem,</td></tr><tr><td></td><td class=PParameter nowrap>cbFn</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Walks the tree and executes the callback on each element in a depth-first fashion</div></div><div class=CToolTip id="tt18"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var assignAttributes = this.assignAttributes = function(</td><td class=PParameter nowrap>node,</td></tr><tr><td></td><td class=PParameter nowrap>attrs,</td></tr><tr><td></td><td class=PParameter nowrap>suspendLength,</td></tr><tr><td></td><td class=PParameter nowrap>unitCheck</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Assigns multiple attributes to an element.</div></div><div class=CToolTip id="tt19"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var cleanupElement = this.cleanupElement = function(</td><td class=PParameter nowrap>element</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Remove unneeded (default) attributes, makes resulting SVG smaller</div></div><div class=CToolTip id="tt20"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var addSvgElementFromJson = this.addSvgElementFromJson = function(</td><td class=PParameter nowrap>data</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Create a new SVG element based on the given object keys/values and add it to the current layer The element will be ran through cleanupElement before being returned</div></div><div class=CToolTip id="tt21"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.addExtension = function(</td><td class=PParameter nowrap>name,</td></tr><tr><td></td><td class=PParameter nowrap>ext_func</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Add an extension to the editor</div></div><div class=CToolTip id="tt22"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var shortFloat = function(</td><td class=PParameter nowrap>val</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Rounds a given value to a float with number of digits defined in save_options</div></div><div class=CToolTip id="tt23"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var getStrokedBBox = this.getStrokedBBox = function(</td><td class=PParameter nowrap>elems</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Get the bounding box for one or more stroked and/or transformed elements</div></div><div class=CToolTip id="tt24"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var getVisibleElements = this.getVisibleElements = function(</td><td class=PParameter nowrap>parent,</td></tr><tr><td></td><td class=PParameter nowrap>includeBBox</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Get all elements that have a BBox (excludes defs, title, etc). </div></div><div class=CToolTip id="tt25"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var copyElem = function(</td><td class=PParameter nowrap>el</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Create a clone of an element, updating its ID and its children&rsquo;s IDs when needed</div></div><div class=CToolTip id="tt26"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function getElem(</td><td class=PParameter nowrap>id</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Get a DOM element by ID within the SVG root element.</div></div><div class=CToolTip id="tt27"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>getId = c.getId = function()</td></tr></table></blockquote>Returns the last created DOM element ID string</div></div><div class=CToolTip id="tt28"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>getNextId = c.getNextId = function()</td></tr></table></blockquote>Creates and returns a unique ID string for a DOM element</div></div><div class=CToolTip id="tt29"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>c.bind = function(</td><td class=PParameter nowrap>event,</td></tr><tr><td></td><td class=PParameter nowrap>f</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Attaches a callback function to an event</div></div><div class=CToolTip id="tt30"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>c.setIdPrefix = function(</td><td class=PParameter nowrap>p</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Changes the ID prefix to the given value</div></div><div class=CToolTip id="tt31"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var sanitizeSvg = this.sanitizeSvg = function(</td><td class=PParameter nowrap>node</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Sanitizes the input node and its children It only keeps what is allowed from our whitelist defined above</div></div><div class=CToolTip id="tt32"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var getUrlFromAttr = this.getUrlFromAttr = function(</td><td class=PParameter nowrap>attrVal</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Extracts the URL from the url(...)</div></div><div class=CToolTip id="tt33"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var getBBox = this.getBBox = function(</td><td class=PParameter nowrap>elem</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Get the given/selected element&rsquo;s bounding box object, convert it to be more usable when necessary</div></div><div class=CToolTip id="tt34"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var ffClone = function(</td><td class=PParameter nowrap>elem</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Hack for Firefox bugs where text element features aren&rsquo;t updated. </div></div><div class=CToolTip id="tt35"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var getPathBBox = function(</td><td class=PParameter nowrap>path</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Get correct BBox for a path in Webkit Converted from code found here: http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html</div></div><div class=CToolTip id="tt36"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var getRotationAngle = this.getRotationAngle = function(</td><td class=PParameter nowrap>elem,</td></tr><tr><td></td><td class=PParameter nowrap>to_rad</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Get the rotation angle of the given/selected DOM element</div></div><div class=CToolTip id="tt37"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setRotationAngle = function(</td><td class=PParameter nowrap>val,</td></tr><tr><td></td><td class=PParameter nowrap>preventUndo</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Removes any old rotations if present, prepends a new rotation at the transformed center</div></div><div class=CToolTip id="tt38"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var getTransformList = this.getTransformList = function(</td><td class=PParameter nowrap>elem</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Returns an object that behaves like a SVGTransformList for the given DOM element</div></div><div class=CToolTip id="tt39"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>var recalculateAllSelectedDimensions = this.recalculateAllSelectedDimensions = function()</td></tr></table></blockquote>Runs recalculateDimensions on the selected elements, adding the changes to a single batch command</div></div><div class=CToolTip id="tt40"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var remapElement = this.remapElement = function(</td><td class=PParameter nowrap>selected,</td></tr><tr><td></td><td class=PParameter nowrap>changes,</td></tr><tr><td></td><td class=PParameter nowrap>m</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Applies coordinate changes to an element based on the given matrix</div></div><div class=CToolTip id="tt41"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var recalculateDimensions = this.recalculateDimensions = function(</td><td class=PParameter nowrap>selected</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Decides the course of action based on the element&rsquo;s transform list</div></div><div class=CToolTip id="tt42"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var transformPoint = function(</td><td class=PParameter nowrap>x,</td></tr><tr><td></td><td class=PParameter nowrap>y,</td></tr><tr><td></td><td class=PParameter nowrap>m</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>A (hopefully) quicker function to transform a point by a matrix (this function avoids any DOM calls and just does the math)</div></div><div class=CToolTip id="tt43"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var isIdentity = function(</td><td class=PParameter nowrap>m</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Helper function to check if the matrix performs no actual transform (i.e. </div></div><div class=CToolTip id="tt44"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>var matrixMultiply = this.matrixMultiply = function()</td></tr></table></blockquote>This function tries to return a SVGMatrix that is the multiplication m1*m2. </div></div><div class=CToolTip id="tt45"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var transformListToTransform = this.transformListToTransform = function(</td><td class=PParameter nowrap>tlist,</td></tr><tr><td></td><td class=PParameter nowrap>min,</td></tr><tr><td></td><td class=PParameter nowrap>max</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>This returns a single matrix Transform for a given Transform List (this is the equivalent of SVGTransformList.consolidate() but unlike that method, this one does not modify the actual SVGTransformList) This function is very liberal with its min,max arguments</div></div><div class=CToolTip id="tt46"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var hasMatrixTransform = this.hasMatrixTransform = function(</td><td class=PParameter nowrap>tlist</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>See if the given transformlist includes a non-indentity matrix transform</div></div><div class=CToolTip id="tt47"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var getMatrix = function(</td><td class=PParameter nowrap>elem</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Get the matrix object for a given element</div></div><div class=CToolTip id="tt48"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var transformBox = this.transformBox = function(</td><td class=PParameter nowrap>l,</td></tr><tr><td></td><td class=PParameter nowrap>t,</td></tr><tr><td></td><td class=PParameter nowrap>w,</td></tr><tr><td></td><td class=PParameter nowrap>h,</td></tr><tr><td></td><td class=PParameter nowrap>m</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Transforms a rectangle based on the given matrix</div></div><div class=CToolTip id="tt49"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var clearSelection = this.clearSelection = function(</td><td class=PParameter nowrap>noCall</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Clears the selection. </div></div><div class=CToolTip id="tt50"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var addToSelection = this.addToSelection = function(</td><td class=PParameter nowrap>elemsToAdd,</td></tr><tr><td></td><td class=PParameter nowrap>showGrips</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Adds a list of elements to the selection. </div></div><div class=CToolTip id="tt51"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var removeFromSelection = this.removeFromSelection = function(</td><td class=PParameter nowrap>elemsToRemove</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Removes elements from the selection.</div></div><div class=CToolTip id="tt52"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.selectAllInCurrentLayer = function()</td></tr></table></blockquote>Clears the selection, then adds all elements in the current layer to the selection. </div></div><div class=CToolTip id="tt53"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var smoothControlPoints = this.smoothControlPoints = function(</td><td class=PParameter nowrap>ct1,</td></tr><tr><td></td><td class=PParameter nowrap>ct2,</td></tr><tr><td></td><td class=PParameter nowrap>pt</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Takes three points and creates a smoother line based on them</div></div><div class=CToolTip id="tt54"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var getMouseTarget = this.getMouseTarget = function(</td><td class=PParameter nowrap>evt</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Gets the desired element from a mouse event</div></div><div class=CToolTip id="tt55"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var preventClickDefault = function(</td><td class=PParameter nowrap>img</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Prevents default browser click behaviour on the given element</div></div><div class=CToolTip id="tt56"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>var removeUnusedDefElems = this.removeUnusedDefElems = function()</td></tr></table></blockquote>Looks at DOM elements inside the defs to see if they are referred to, removes them from the DOM if they are not.</div></div><div class=CToolTip id="tt57"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>var svgCanvasToString = this.svgCanvasToString = function()</td></tr></table></blockquote>Main function to set up the SVG content for output</div></div><div class=CToolTip id="tt58"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var svgToString = this.svgToString = function(</td><td class=PParameter nowrap>elem,</td></tr><tr><td></td><td class=PParameter nowrap>indent</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Sub function ran on each SVG element to convert it to a string as desired</div></div><div class=CToolTip id="tt59"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.embedImage = function(</td><td class=PParameter nowrap>val,</td></tr><tr><td></td><td class=PParameter nowrap>callback</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Converts a given image file to a data URL when possible, then runs a given callback</div></div><div class=CToolTip id="tt60"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.save = function(</td><td class=PParameter nowrap>opts</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Serializes the current drawing into SVG XML text and returns it to the &lsquo;saved&rsquo; handler. </div></div><div class=CToolTip id="tt61"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.rasterExport = function()</td></tr></table></blockquote>Generates a PNG Data URL based on the current image, then calls &ldquo;exported&rdquo; with an object including the string and any issues found</div></div><div class=CToolTip id="tt62"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getSvgString = function()</td></tr></table></blockquote>Returns the current drawing as raw SVG XML text.</div></div><div class=CToolTip id="tt63"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setSvgString = function(</td><td class=PParameter nowrap>xmlString</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>This function sets the current drawing as the input SVG XML.</div></div><div class=CToolTip id="tt64"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.importSvgString = function(</td><td class=PParameter nowrap>xmlString</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>This function imports the input SVG XML into the current layer in the drawing</div></div><div class=CToolTip id="tt65"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>var identifyLayers = function()</td></tr></table></blockquote>Updates layer system</div></div><div class=CToolTip id="tt66"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.createLayer = function(</td><td class=PParameter nowrap>name</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Creates a new top-level layer in the drawing with the given name, sets the current layer to it, and then clears the selection  This function then calls the &lsquo;changed&rsquo; handler. </div></div><div class=CToolTip id="tt67"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.deleteCurrentLayer = function()</td></tr></table></blockquote>Deletes the current layer from the drawing and then clears the selection. </div></div><div class=CToolTip id="tt68"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getNumLayers = function()</td></tr></table></blockquote>Returns the number of layers in the current drawing.</div></div><div class=CToolTip id="tt69"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.getLayer = function(</td><td class=PParameter nowrap>i</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Returns the name of the ith layer. </div></div><div class=CToolTip id="tt70"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getCurrentLayer = function()</td></tr></table></blockquote>Returns the name of the currently selected layer. </div></div><div class=CToolTip id="tt71"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setCurrentLayer = function(</td><td class=PParameter nowrap>name</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Sets the current layer. </div></div><div class=CToolTip id="tt72"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.renameCurrentLayer = function(</td><td class=PParameter nowrap>newname</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Renames the current layer. </div></div><div class=CToolTip id="tt73"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setCurrentLayerPosition = function(</td><td class=PParameter nowrap>newpos</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Changes the position of the current layer to the new value. </div></div><div class=CToolTip id="tt74"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.getLayerVisibility = function(</td><td class=PParameter nowrap>layername</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Returns whether the layer is visible. </div></div><div class=CToolTip id="tt75"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setLayerVisibility = function(</td><td class=PParameter nowrap>layername,</td></tr><tr><td></td><td class=PParameter nowrap>bVisible</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Sets the visibility of the layer. </div></div><div class=CToolTip id="tt76"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.moveSelectedToLayer = function(</td><td class=PParameter nowrap>layername</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Moves the selected elements to layername. </div></div><div class=CToolTip id="tt77"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.getLayerOpacity = function(</td><td class=PParameter nowrap>layername</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Returns the opacity of the given layer. </div></div><div class=CToolTip id="tt78"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setLayerOpacity = function(</td><td class=PParameter nowrap>layername,</td></tr><tr><td></td><td class=PParameter nowrap>opacity</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Sets the opacity of the given layer. </div></div><div class=CToolTip id="tt79"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.clear = function()</td></tr></table></blockquote>Clears the current document. </div></div><div class=CToolTip id="tt80"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getContentElem = function()</td></tr></table></blockquote>Returns the content DOM element</div></div><div class=CToolTip id="tt81"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getRootElem = function()</td></tr></table></blockquote>Returns the root DOM element</div></div><div class=CToolTip id="tt82"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getSelectedElems = function()</td></tr></table></blockquote>Returns the array with selected DOM elements</div></div><div class=CToolTip id="tt83"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>var getResolution = this.getResolution = function()</td></tr></table></blockquote>Returns the current dimensions and zoom level in an object</div></div><div class=CToolTip id="tt84"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getZoom = function()</td></tr></table></blockquote>Returns the current zoom level</div></div><div class=CToolTip id="tt85"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getVersion = function()</td></tr></table></blockquote>Returns a string which describes the revision number of SvgCanvas.</div></div><div class=CToolTip id="tt86"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setUiStrings = function(</td><td class=PParameter nowrap>strs</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Update interface strings with given values</div></div><div class=CToolTip id="tt87"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setConfig = function(</td><td class=PParameter nowrap>opts</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Update configuration options with given values</div></div><div class=CToolTip id="tt88"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getDocumentTitle = function()</td></tr></table></blockquote>Returns the current document title or an empty string if not found</div></div><div class=CToolTip id="tt89"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setDocumentTitle = function(</td><td class=PParameter nowrap>newtitle</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Adds/updates a title element for the document with the given name. </div></div><div class=CToolTip id="tt90"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.getEditorNS = function(</td><td class=PParameter nowrap>add</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Returns the editor&rsquo;s namespace URL, optionally adds it to root element</div></div><div class=CToolTip id="tt91"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setResolution = function(</td><td class=PParameter nowrap>x,</td></tr><tr><td></td><td class=PParameter nowrap>y</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Changes the document&rsquo;s dimensions to the given size</div></div><div class=CToolTip id="tt92"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getOffset = function()</td></tr></table></blockquote>Returns an object with x, y values indicating the svgcontent element&rsquo;s position in the editor&rsquo;s canvas.</div></div><div class=CToolTip id="tt93"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setBBoxZoom = function(</td><td class=PParameter nowrap>val,</td></tr><tr><td></td><td class=PParameter nowrap>editor_w,</td></tr><tr><td></td><td class=PParameter nowrap>editor_h</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Sets the zoom level on the canvas-side based on the given value</div></div><div class=CToolTip id="tt94"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setZoom = function(</td><td class=PParameter nowrap>zoomlevel</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Sets the zoom to the given level</div></div><div class=CToolTip id="tt95"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getMode = function()</td></tr></table></blockquote>Returns the current editor mode string</div></div><div class=CToolTip id="tt96"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setMode = function(</td><td class=PParameter nowrap>name</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Sets the editor&rsquo;s mode to the given string</div></div><div class=CToolTip id="tt97"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.getColor = function(</td><td class=PParameter nowrap>type</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Returns the current fill/stroke option</div></div><div class=CToolTip id="tt98"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setColor = function(</td><td class=PParameter nowrap>type,</td></tr><tr><td></td><td class=PParameter nowrap>val,</td></tr><tr><td></td><td class=PParameter nowrap>preventUndo</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Change the current stroke/fill color/gradient value</div></div><div class=CToolTip id="tt99"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>var findDefs = function()</td></tr></table></blockquote>Return the document&rsquo;s defs element, create it first if necessary</div></div><div class=CToolTip id="tt100"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var setGradient = this.setGradient = function(</td><td class=PParameter nowrap>type</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Apply the current gradient to selected element&rsquo;s fill or stroke</div></div><div class=CToolTip id="tt101"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var findDuplicateGradient = function(</td><td class=PParameter nowrap>grad</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Check if exact gradient already exists</div></div><div class=CToolTip id="tt102"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setPaint = function(</td><td class=PParameter nowrap>type,</td></tr><tr><td></td><td class=PParameter nowrap>paint</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Set a color/gradient to a fill/stroke</div></div><div class=CToolTip id="tt103"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getStrokeWidth = function()</td></tr></table></blockquote>Returns the current stroke-width value</div></div><div class=CToolTip id="tt104"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setStrokeWidth = function(</td><td class=PParameter nowrap>val</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Sets the stroke width for the current selected elements When attempting to set a line&rsquo;s width to 0, this changes it to 1 instead</div></div><div class=CToolTip id="tt105"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setStrokeAttr = function(</td><td class=PParameter nowrap>attr,</td></tr><tr><td></td><td class=PParameter nowrap>val</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Set the given stroke-related attribute the given value for selected elements</div></div><div class=CToolTip id="tt106"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getOpacity = function()</td></tr></table></blockquote>Returns the current opacity</div></div><div class=CToolTip id="tt107"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setOpacity = function(</td><td class=PParameter nowrap>val</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Sets the given opacity to the current selected elements</div></div><div class=CToolTip id="tt108"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getStrokeOpacity = function()</td></tr></table></blockquote>Returns the current stroke opacity</div></div><div class=CToolTip id="tt109"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setPaintOpacity = function(</td><td class=PParameter nowrap>type,</td></tr><tr><td></td><td class=PParameter nowrap>val,</td></tr><tr><td></td><td class=PParameter nowrap>preventUndo</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Sets the current fill/stroke opacity</div></div><div class=CToolTip id="tt110"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.getBlur = function(</td><td class=PParameter nowrap>elem</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Gets the stdDeviation blur value of the given element</div></div><div class=CToolTip id="tt111"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>canvas.setBlurNoUndo = function(</td><td class=PParameter nowrap>val</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Sets the stdDeviation blur value on the selected element without being undoable</div></div><div class=CToolTip id="tt112"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>canvas.setBlurOffsets = function(</td><td class=PParameter nowrap>filter,</td></tr><tr><td></td><td class=PParameter nowrap>stdDev</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Sets the x, y, with, height values of the filter element in order to make the blur not be clipped. </div></div><div class=CToolTip id="tt113"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>canvas.setBlur = function(</td><td class=PParameter nowrap>val,</td></tr><tr><td></td><td class=PParameter nowrap>complete</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Adds/updates the blur filter to the selected element</div></div><div class=CToolTip id="tt114"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getBold = function()</td></tr></table></blockquote>Check whether selected element is bold or not</div></div><div class=CToolTip id="tt115"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setBold = function(</td><td class=PParameter nowrap>b</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Make the selected element bold or normal</div></div><div class=CToolTip id="tt116"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getItalic = function()</td></tr></table></blockquote>Check whether selected element is italic or not</div></div><div class=CToolTip id="tt117"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setItalic = function(</td><td class=PParameter nowrap>i</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Make the selected element italic or normal</div></div><div class=CToolTip id="tt118"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getFontFamily = function()</td></tr></table></blockquote>Returns the current font family</div></div><div class=CToolTip id="tt119"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setFontFamily = function(</td><td class=PParameter nowrap>val</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Set the new font family</div></div><div class=CToolTip id="tt120"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getFontSize = function()</td></tr></table></blockquote>Returns the current font size</div></div><div class=CToolTip id="tt121"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setFontSize = function(</td><td class=PParameter nowrap>val</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Applies the given font size to the selected element</div></div><div class=CToolTip id="tt122"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.getText = function()</td></tr></table></blockquote>Returns the current text (textContent) of the selected element</div></div><div class=CToolTip id="tt123"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setTextContent = function(</td><td class=PParameter nowrap>val</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Updates the text element with the given string</div></div><div class=CToolTip id="tt124"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setImageURL = function(</td><td class=PParameter nowrap>val</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Sets the new image URL for the selected image element. </div></div><div class=CToolTip id="tt125"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setRectRadius = function(</td><td class=PParameter nowrap>val</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Sets the rx &amp; ry values to the selected rect element to change its corner radius</div></div><div class=CToolTip id="tt126"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setSegType = function(</td><td class=PParameter nowrap>new_type</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Sets the new segment type to the selected segment(s).</div></div><div class=CToolTip id="tt127"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.convertToPath = function(</td><td class=PParameter nowrap>elem,</td></tr><tr><td></td><td class=PParameter nowrap>getBBox</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Convert selected element to a path, or get the BBox of an element-as-path</div></div><div class=CToolTip id="tt128"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var changeSelectedAttributeNoUndo = function(</td><td class=PParameter nowrap>attr,</td></tr><tr><td></td><td class=PParameter nowrap>newValue,</td></tr><tr><td></td><td class=PParameter nowrap>elems</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>This function makes the changes to the elements. </div></div><div class=CToolTip id="tt129"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var changeSelectedAttribute = this.changeSelectedAttribute = function(</td><td class=PParameter nowrap>attr,</td></tr><tr><td></td><td class=PParameter nowrap>val,</td></tr><tr><td></td><td class=PParameter nowrap>elems</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Change the given/selected element and add the original value to the history stack If you want to change all selectedElements, ignore the elems argument. </div></div><div class=CToolTip id="tt130"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.deleteSelectedElements = function()</td></tr></table></blockquote>Removes all selected elements from the DOM and adds the change to the history stack</div></div><div class=CToolTip id="tt131"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.groupSelectedElements = function()</td></tr></table></blockquote>Wraps all the selected elements in a group (g) element</div></div><div class=CToolTip id="tt132"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.ungroupSelectedElement = function()</td></tr></table></blockquote>Unwraps all the elements in a selected group (g) element. </div></div><div class=CToolTip id="tt133"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.moveToTopSelectedElement = function()</td></tr></table></blockquote>Repositions the selected element to the bottom in the DOM to appear on top of other elements</div></div><div class=CToolTip id="tt134"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.moveToBottomSelectedElement = function()</td></tr></table></blockquote>Repositions the selected element to the top in the DOM to appear under other elements</div></div><div class=CToolTip id="tt135"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.moveSelectedElements = function(</td><td class=PParameter nowrap>dx,</td></tr><tr><td></td><td class=PParameter nowrap>dy,</td></tr><tr><td></td><td class=PParameter nowrap>undoable</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Moves selected elements on the X/Y axis</div></div><div class=CToolTip id="tt136"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.cloneSelectedElements = function()</td></tr></table></blockquote>Create deep DOM copies (clones) of all selected elements and move them slightly from their originals</div></div><div class=CToolTip id="tt137"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.alignSelectedElements = function(</td><td class=PParameter nowrap>type,</td></tr><tr><td></td><td class=PParameter nowrap>relative_to</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Aligns selected elements</div></div><div class=CToolTip id="tt138"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.updateCanvas = function(</td><td class=PParameter nowrap>w,</td></tr><tr><td></td><td class=PParameter nowrap>h</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Updates the editor canvas width/height/position after a zoom has occurred</div></div><div class=CToolTip id="tt139"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.setBackground = function(</td><td class=PParameter nowrap>color,</td></tr><tr><td></td><td class=PParameter nowrap>url</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Set the background of the editor (NOT the actual document)</div></div><div class=CToolTip id="tt140"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.cycleElement = function(</td><td class=PParameter nowrap>next</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Select the next/previous element within the current layer</div></div><!--END_ND_TOOLTIPS-->
+
+
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></div>
+
+
+<script language=JavaScript><!--
+if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/index.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/index.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/index.html	(revision 29468)
@@ -0,0 +1,1 @@
+<html><head><meta http-equiv="Refresh" CONTENT="0; URL=files/svgcanvas-js.html"></head></html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/index/Files.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/index/Files.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/index/Files.html	(revision 29468)
@@ -0,0 +1,37 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<html><head><title>File Index</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="IndexPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!--  Generated by Natural Docs, version 1.4 -->
+<!--  http://www.naturaldocs.org  -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Index><div class=IPageTitle>File Index</div><div class=INavigationBar>$#! &middot; 0-9 &middot; A &middot; B &middot; C &middot; D &middot; E &middot; F &middot; G &middot; H &middot; I &middot; J &middot; K &middot; L &middot; <a href="#M">M</a> &middot; N &middot; O &middot; P &middot; Q &middot; R &middot; <a href="#S">S</a> &middot; T &middot; U &middot; V &middot; W &middot; X &middot; Y &middot; Z</div><table border=0 cellspacing=0 cellpadding=0><tr><td class=IHeading id=IFirstHeading><a name="M"></a>M</td><td></td></tr><tr><td class=ISymbolPrefix id=IOnlySymbolPrefix>&nbsp;</td><td class=IEntry><span class=ISymbol>my_svgcanvas.js</span><div class=ISubIndex><a href="../files/editor/my_svgcanvas-js.html#my_svgcanvas.js"  class=IFile>editor/<wbr>my_svgcanvas.js</a><a href="../files/editor_old/my_svgcanvas-js.html#my_svgcanvas.js"  class=IFile>editor_old/<wbr>my_svgcanvas.js</a></div></td></tr><tr><td class=IHeading><a name="S"></a>S</td><td></td></tr><tr><td class=ISymbolPrefix id=IFirstSymbolPrefix>&nbsp;</td><td class=IEntry><span class=ISymbol>svgcanvas-latest copy.js</span><div class=ISubIndex><a href="../files/editor/svgcanvas-latest_copy-js.html#svgcanvas-latest_copy.js"  class=IFile>editor/<wbr>svgcanvas-latest copy.js</a><a href="../files/editor_old/svgcanvas-latest_copy-js.html#svgcanvas-latest_copy.js"  class=IFile>editor_old/<wbr>svgcanvas-latest copy.js</a></div></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><span class=ISymbol>svgcanvas-mine.js</span><div class=ISubIndex><a href="../files/editor/svgcanvas-mine-js.html#svgcanvas-mine.js"  class=IFile>editor/<wbr>svgcanvas-mine.js</a><a href="../files/editor_old/svgcanvas-mine-js.html#svgcanvas-mine.js"  class=IFile>editor_old/<wbr>svgcanvas-mine.js</a></div></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><span class=ISymbol>svgcanvas-textanchor-experiment.js</span><div class=ISubIndex><a href="../files/editor/svgcanvas-textanchor-experiment-js.html#svgcanvas-textanchor-experiment.js"  class=IFile>editor/<wbr>svgcanvas-textanchor-experiment.js</a><a href="../files/editor_old/svgcanvas-textanchor-experiment-js.html#svgcanvas-textanchor-experiment.js"  class=IFile>editor_old/<wbr>svgcanvas-textanchor-experiment.js</a></div></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><span class=ISymbol>svgcanvas.js</span><div class=ISubIndex><a href="../files/editor/svgcanvas-js.html#svgcanvas.js"  class=IFile>editor/<wbr>svgcanvas.js</a><a href="../files/editor_old/svgcanvas-js.html#svgcanvas.js"  class=IFile>editor_old/<wbr>svgcanvas.js</a></div></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><span class=ISymbol>svgcanvas_subpaths.js</span><div class=ISubIndex><a href="../files/editor/svgcanvas_subpaths-js.html#svgcanvas_subpaths.js"  class=IFile>editor/<wbr>svgcanvas_subpaths.js</a><a href="../files/editor_old/svgcanvas_subpaths-js.html#svgcanvas_subpaths.js"  class=IFile>editor_old/<wbr>svgcanvas_subpaths.js</a></div></td></tr><tr><td class=ISymbolPrefix id=ILastSymbolPrefix>&nbsp;</td><td class=IEntry><span class=ISymbol>svgcanvas_temp.js</span><div class=ISubIndex><a href="../files/editor/svgcanvas_temp-js.html#svgcanvas_temp.js"  class=IFile>editor/<wbr>svgcanvas_temp.js</a><a href="../files/editor_old/svgcanvas_temp-js.html#svgcanvas_temp.js"  class=IFile>editor_old/<wbr>svgcanvas_temp.js</a></div></td></tr></table>
+<!--START_ND_TOOLTIPS-->
+<!--END_ND_TOOLTIPS-->
+
+
+<!--START_ND_TOOLTIPS-->
+<!--END_ND_TOOLTIPS-->
+
+</div><!--Index-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Editor</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MFile><a href="../files/editor/my_svgcanvas-js.html">my_svgcanvas.js</a></div></div><div class=MEntry><div class=MFile><a href="../files/editor/extensions/ext-foreignobject-js.html">setForeignString(xmlString, elt)</a></div></div><div class=MEntry><div class=MFile><a href="../files/editor/svgcanvas-latest_copy-js.html">svgcanvas-latest copy.js</a></div></div><div class=MEntry><div class=MFile><a href="../files/editor/svgcanvas-mine-js.html">svgcanvas-mine.js</a></div></div><div class=MEntry><div class=MFile><a href="../files/editor/svgcanvas-textanchor-experiment-js.html">svgcanvas-textanchor-experiment.js</a></div></div><div class=MEntry><div class=MFile><a href="../files/editor/svgcanvas-js.html">svgcanvas.js</a></div></div><div class=MEntry><div class=MFile><a href="../files/editor/svgcanvas_subpaths-js.html">svgcanvas_subpaths.js</a></div></div><div class=MEntry><div class=MFile><a href="../files/editor/svgcanvas_temp-js.html">svgcanvas_temp.js</a></div></div></div></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent2')">Editor_old</a><div class=MGroupContent id=MGroupContent2><div class=MEntry><div class=MFile><a href="../files/editor_old/my_svgcanvas-js.html">my_svgcanvas.js</a></div></div><div class=MEntry><div class=MFile><a href="../files/editor_old/extensions/ext-foreignobject-js.html">setForeignString(xmlString, elt)</a></div></div><div class=MEntry><div class=MFile><a href="../files/editor_old/svgcanvas-latest_copy-js.html">svgcanvas-latest copy.js</a></div></div><div class=MEntry><div class=MFile><a href="../files/editor_old/svgcanvas-mine-js.html">svgcanvas-mine.js</a></div></div><div class=MEntry><div class=MFile><a href="../files/editor_old/svgcanvas-textanchor-experiment-js.html">svgcanvas-textanchor-experiment.js</a></div></div><div class=MEntry><div class=MFile><a href="../files/editor_old/svgcanvas-js.html">svgcanvas.js</a></div></div><div class=MEntry><div class=MFile><a href="../files/editor_old/svgcanvas_subpaths-js.html">svgcanvas_subpaths.js</a></div></div><div class=MEntry><div class=MFile><a href="../files/editor_old/svgcanvas_temp-js.html">svgcanvas_temp.js</a></div></div></div></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent3')">Index</a><div class=MGroupContent id=MGroupContent3><div class=MEntry><div class=MIndex><a href="General.html">Everything</a></div></div><div class=MEntry><div class=MIndex id=MSelected>Files</div></div><div class=MEntry><div class=MIndex><a href="Functions.html">Functions</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option  id=MSearchEverything selected value="General">Everything</option><option value="Files">Files</option><option value="Functions">Functions</option></select></div></div><!--Menu-->
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></div>
+
+
+<script language=JavaScript><!--
+if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/index/Functions.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/index/Functions.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/index/Functions.html	(revision 29468)
@@ -0,0 +1,53 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<html><head><title>Function Index</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="IndexPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!--  Generated by Natural Docs, version 1.4 -->
+<!--  http://www.naturaldocs.org  -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Index><div class=IPageTitle>Function Index</div><div class=INavigationBar>$#! &middot; 0-9 &middot; <a href="#A">A</a> &middot; <a href="#B">B</a> &middot; <a href="#C">C</a> &middot; <a href="#D">D</a> &middot; <a href="#E">E</a> &middot; <a href="#F">F</a> &middot; <a href="Functions2.html#G">G</a> &middot; <a href="Functions2.html#H">H</a> &middot; <a href="Functions2.html#I">I</a> &middot; J &middot; K &middot; <a href="Functions2.html#L">L</a> &middot; <a href="Functions2.html#M">M</a> &middot; N &middot; O &middot; <a href="Functions2.html#P">P</a> &middot; Q &middot; <a href="Functions2.html#R">R</a> &middot; <a href="Functions3.html#S">S</a> &middot; <a href="Functions3.html#T">T</a> &middot; <a href="Functions3.html#U">U</a> &middot; V &middot; <a href="Functions3.html#W">W</a> &middot; X &middot; Y &middot; Z</div><table border=0 cellspacing=0 cellpadding=0><tr><td class=IHeading id=IFirstHeading><a name="A"></a>A</td><td></td></tr><tr><td class=ISymbolPrefix id=IFirstSymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.addCommandToHistory" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')" class=ISymbol>addCommandToHistory</a>, <span class=IParent>SvgCanvas</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.addExtension" id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')" class=ISymbol>addExtension</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.BatchCommand.addSubCommand" id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')" class=ISymbol>addSubCommand</a>, <span class=IParent>SvgCanvas.<wbr>BatchCommand</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.addSvgElementFromJson" id=link4 onMouseOver="ShowTip(event, 'tt4', 'link4')" onMouseOut="HideTip('tt4')" class=ISymbol>addSvgElementFromJson</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.addToSelection" id=link5 onMouseOver="ShowTip(event, 'tt5', 'link5')" onMouseOut="HideTip('tt5')" class=ISymbol>addToSelection</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.alignSelectedElements" id=link6 onMouseOver="ShowTip(event, 'tt6', 'link6')" onMouseOut="HideTip('tt6')" class=ISymbol>alignSelectedElements</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><span class=ISymbol>apply</span><div class=ISubIndex><a href="../files/svgcanvas-js.html#SvgCanvas.BatchCommand.apply" id=link7 onMouseOver="ShowTip(event, 'tt7', 'link7')" onMouseOut="HideTip('tt7')" class=IParent>SvgCanvas.<wbr>BatchCommand</a><a href="../files/svgcanvas-js.html#SvgCanvas.ChangeElementCommand.apply" id=link8 onMouseOver="ShowTip(event, 'tt8', 'link8')" onMouseOut="HideTip('tt8')" class=IParent>SvgCanvas.<wbr>ChangeElementCommand</a><a href="../files/svgcanvas-js.html#SvgCanvas.InsertElementCommand.apply" id=link9 onMouseOver="ShowTip(event, 'tt9', 'link9')" onMouseOut="HideTip('tt9')" class=IParent>SvgCanvas.<wbr>InsertElementCommand</a><a href="../files/svgcanvas-js.html#SvgCanvas.RemoveElementCommand.apply" id=link10 onMouseOver="ShowTip(event, 'tt10', 'link10')" onMouseOut="HideTip('tt10')" class=IParent>SvgCanvas.<wbr>RemoveElementCommand</a></div></td></tr><tr><td class=ISymbolPrefix id=ILastSymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.assignAttributes" id=link11 onMouseOver="ShowTip(event, 'tt11', 'link11')" onMouseOut="HideTip('tt11')" class=ISymbol>assignAttributes</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=IHeading><a name="B"></a>B</td><td></td></tr><tr><td class=ISymbolPrefix id=IFirstSymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.BatchCommand" id=link12 onMouseOver="ShowTip(event, 'tt12', 'link12')" onMouseOut="HideTip('tt12')" class=ISymbol>BatchCommand</a>, <span class=IParent>SvgCanvas</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.beginUndoableChange" id=link13 onMouseOver="ShowTip(event, 'tt13', 'link13')" onMouseOut="HideTip('tt13')" class=ISymbol>beginUndoableChange</a>, <span class=IParent>SvgCanvas</span></td></tr><tr><td class=ISymbolPrefix id=ILastSymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.bind" id=link14 onMouseOver="ShowTip(event, 'tt14', 'link14')" onMouseOut="HideTip('tt14')" class=ISymbol>bind</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=IHeading><a name="C"></a>C</td><td></td></tr><tr><td class=ISymbolPrefix id=IFirstSymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.ChangeElementCommand" id=link15 onMouseOver="ShowTip(event, 'tt15', 'link15')" onMouseOut="HideTip('tt15')" class=ISymbol>ChangeElementCommand</a>, <span class=IParent>SvgCanvas</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.changeSelectedAttribute" id=link16 onMouseOver="ShowTip(event, 'tt16', 'link16')" onMouseOut="HideTip('tt16')" class=ISymbol>changeSelectedAttribute</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.changeSelectedAttributeNoUndo" id=link17 onMouseOver="ShowTip(event, 'tt17', 'link17')" onMouseOut="HideTip('tt17')" class=ISymbol>changeSelectedAttributeNoUndo</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.cleanupElement" id=link18 onMouseOver="ShowTip(event, 'tt18', 'link18')" onMouseOut="HideTip('tt18')" class=ISymbol>cleanupElement</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.clear" id=link19 onMouseOver="ShowTip(event, 'tt19', 'link19')" onMouseOut="HideTip('tt19')" class=ISymbol>clear</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.clearSelection" id=link20 onMouseOver="ShowTip(event, 'tt20', 'link20')" onMouseOut="HideTip('tt20')" class=ISymbol>clearSelection</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.cloneSelectedElements" id=link21 onMouseOver="ShowTip(event, 'tt21', 'link21')" onMouseOut="HideTip('tt21')" class=ISymbol>cloneSelectedElements</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.convertToNum" id=link22 onMouseOver="ShowTip(event, 'tt22', 'link22')" onMouseOut="HideTip('tt22')" class=ISymbol>convertToNum</a>, <span class=IParent>SvgCanvas</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.convertToPath" id=link23 onMouseOver="ShowTip(event, 'tt23', 'link23')" onMouseOut="HideTip('tt23')" class=ISymbol>convertToPath</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.Utils.convertToXMLReferences" id=link24 onMouseOver="ShowTip(event, 'tt24', 'link24')" onMouseOut="HideTip('tt24')" class=ISymbol>convertToXMLReferences</a>, <span class=IParent>SvgCanvas.<wbr>Utils</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.copyElem" id=link25 onMouseOver="ShowTip(event, 'tt25', 'link25')" onMouseOut="HideTip('tt25')" class=ISymbol>copyElem</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.createLayer" id=link26 onMouseOver="ShowTip(event, 'tt26', 'link26')" onMouseOut="HideTip('tt26')" class=ISymbol>createLayer</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix id=ILastSymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.cycleElement" id=link27 onMouseOver="ShowTip(event, 'tt27', 'link27')" onMouseOut="HideTip('tt27')" class=ISymbol>cycleElement</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=IHeading><a name="D"></a>D</td><td></td></tr><tr><td class=ISymbolPrefix id=IFirstSymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.Utils.decode64" id=link28 onMouseOver="ShowTip(event, 'tt28', 'link28')" onMouseOut="HideTip('tt28')" class=ISymbol>decode64</a>, <span class=IParent>SvgCanvas.<wbr>Utils</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.deleteCurrentLayer" id=link29 onMouseOver="ShowTip(event, 'tt29', 'link29')" onMouseOut="HideTip('tt29')" class=ISymbol>deleteCurrentLayer</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix id=ILastSymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.deleteSelectedElements" id=link30 onMouseOver="ShowTip(event, 'tt30', 'link30')" onMouseOut="HideTip('tt30')" class=ISymbol>deleteSelectedElements</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=IHeading><a name="E"></a>E</td><td></td></tr><tr><td class=ISymbolPrefix id=IFirstSymbolPrefix>&nbsp;</td><td class=IEntry><span class=ISymbol>elements</span><div class=ISubIndex><a href="../files/svgcanvas-js.html#SvgCanvas.BatchCommand.elements" id=link31 onMouseOver="ShowTip(event, 'tt31', 'link31')" onMouseOut="HideTip('tt31')" class=IParent>SvgCanvas.<wbr>BatchCommand</a><a href="../files/svgcanvas-js.html#SvgCanvas.ChangeElementCommand.elements" id=link32 onMouseOver="ShowTip(event, 'tt32', 'link32')" onMouseOut="HideTip('tt32')" class=IParent>SvgCanvas.<wbr>ChangeElementCommand</a><a href="../files/svgcanvas-js.html#SvgCanvas.InsertElementCommand.elements" id=link33 onMouseOver="ShowTip(event, 'tt33', 'link33')" onMouseOut="HideTip('tt33')" class=IParent>SvgCanvas.<wbr>InsertElementCommand</a><a href="../files/svgcanvas-js.html#SvgCanvas.MoveElementCommand.elements" id=link34 onMouseOver="ShowTip(event, 'tt34', 'link34')" onMouseOut="HideTip('tt34')" class=IParent>SvgCanvas.<wbr>MoveElementCommand</a><a href="../files/svgcanvas-js.html#SvgCanvas.RemoveElementCommand.elements" id=link35 onMouseOver="ShowTip(event, 'tt35', 'link35')" onMouseOut="HideTip('tt35')" class=IParent>SvgCanvas.<wbr>RemoveElementCommand</a></div></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.embedImage" id=link36 onMouseOver="ShowTip(event, 'tt36', 'link36')" onMouseOut="HideTip('tt36')" class=ISymbol>embedImage</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix id=ILastSymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.Utils.encode64" id=link37 onMouseOver="ShowTip(event, 'tt37', 'link37')" onMouseOut="HideTip('tt37')" class=ISymbol>encode64</a>, <span class=IParent>SvgCanvas.<wbr>Utils</span></td></tr><tr><td class=IHeading><a name="F"></a>F</td><td></td></tr><tr><td class=ISymbolPrefix id=IFirstSymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.ffClone" id=link38 onMouseOver="ShowTip(event, 'tt38', 'link38')" onMouseOut="HideTip('tt38')" class=ISymbol>ffClone</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.findDefs" id=link39 onMouseOver="ShowTip(event, 'tt39', 'link39')" onMouseOut="HideTip('tt39')" class=ISymbol>findDefs</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.findDuplicateGradient" id=link40 onMouseOver="ShowTip(event, 'tt40', 'link40')" onMouseOut="HideTip('tt40')" class=ISymbol>findDuplicateGradient</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.finishUndoableChange" id=link41 onMouseOver="ShowTip(event, 'tt41', 'link41')" onMouseOut="HideTip('tt41')" class=ISymbol>finishUndoableChange</a>, <span class=IParent>SvgCanvas</span></td></tr><tr><td class=ISymbolPrefix id=ILastSymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.Utils.fromXml" id=link42 onMouseOver="ShowTip(event, 'tt42', 'link42')" onMouseOut="HideTip('tt42')" class=ISymbol>fromXml</a>, <span class=IParent>SvgCanvas.<wbr>Utils</span></td></tr></table>
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>addCommandToHistory = c.undoCmd.add = function(</td><td class=PParameter nowrap>cmd</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Adds a command object to the undo history stack</div></div><div class=CToolTip id="tt2"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.addExtension = function(</td><td class=PParameter nowrap>name,</td></tr><tr><td></td><td class=PParameter nowrap>ext_func</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Add an extension to the editor</div></div><div class=CToolTip id="tt3"><div class=CFunction>Adds a given command to the history stack</div></div><div class=CToolTip id="tt4"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var addSvgElementFromJson = this.addSvgElementFromJson = function(</td><td class=PParameter nowrap>data</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Create a new SVG element based on the given object keys/values and add it to the current layer The element will be ran through cleanupElement before being returned</div></div><div class=CToolTip id="tt5"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var addToSelection = this.addToSelection = function(</td><td class=PParameter nowrap>elemsToAdd,</td></tr><tr><td></td><td class=PParameter nowrap>showGrips</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Adds a list of elements to the selection. </div></div><div class=CToolTip id="tt6"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.alignSelectedElements = function(</td><td class=PParameter nowrap>type,</td></tr><tr><td></td><td class=PParameter nowrap>relative_to</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Aligns selected elements</div></div><div class=CToolTip id="tt7"><div class=CFunction>Runs &ldquo;apply&rdquo; on all subcommands</div></div><div class=CToolTip id="tt8"><div class=CFunction>Performs the stored change action</div></div><div class=CToolTip id="tt9"><div class=CFunction>Re-Inserts the new element</div></div><div class=CToolTip id="tt10"><div class=CFunction>Re-removes the new element</div></div><div class=CToolTip id="tt11"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var assignAttributes = this.assignAttributes = function(</td><td class=PParameter nowrap>node,</td></tr><tr><td></td><td class=PParameter nowrap>attrs,</td></tr><tr><td></td><td class=PParameter nowrap>suspendLength,</td></tr><tr><td></td><td class=PParameter nowrap>unitCheck</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Assigns multiple attributes to an element.</div></div><!--END_ND_TOOLTIPS-->
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt12"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var BatchCommand = this.undoCmd.batch = function(</td><td class=PParameter nowrap>text</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>History command that can contain/execute multiple other commands</div></div><div class=CToolTip id="tt13"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>c.beginUndoableChange = function(</td><td class=PParameter nowrap>attrName,</td></tr><tr><td></td><td class=PParameter nowrap>elems</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>This function tells the canvas to remember the old values of the attrName attribute for each element sent in. </div></div><div class=CToolTip id="tt14"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>c.bind = function(</td><td class=PParameter nowrap>event,</td></tr><tr><td></td><td class=PParameter nowrap>f</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Attaches a callback function to an event</div></div><!--END_ND_TOOLTIPS-->
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt15"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var ChangeElementCommand = this.undoCmd.changeElement = function(</td><td class=PParameter nowrap>elem,</td></tr><tr><td></td><td class=PParameter nowrap>attrs,</td></tr><tr><td></td><td class=PParameter nowrap>text</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>History command to make a change to an element. </div></div><div class=CToolTip id="tt16"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var changeSelectedAttribute = this.changeSelectedAttribute = function(</td><td class=PParameter nowrap>attr,</td></tr><tr><td></td><td class=PParameter nowrap>val,</td></tr><tr><td></td><td class=PParameter nowrap>elems</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Change the given/selected element and add the original value to the history stack If you want to change all selectedElements, ignore the elems argument. </div></div><div class=CToolTip id="tt17"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var changeSelectedAttributeNoUndo = function(</td><td class=PParameter nowrap>attr,</td></tr><tr><td></td><td class=PParameter nowrap>newValue,</td></tr><tr><td></td><td class=PParameter nowrap>elems</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>This function makes the changes to the elements. </div></div><div class=CToolTip id="tt18"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var cleanupElement = this.cleanupElement = function(</td><td class=PParameter nowrap>element</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Remove unneeded (default) attributes, makes resulting SVG smaller</div></div><div class=CToolTip id="tt19"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.clear = function()</td></tr></table></blockquote>Clears the current document. </div></div><div class=CToolTip id="tt20"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var clearSelection = this.clearSelection = function(</td><td class=PParameter nowrap>noCall</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Clears the selection. </div></div><div class=CToolTip id="tt21"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.cloneSelectedElements = function()</td></tr></table></blockquote>Create deep DOM copies (clones) of all selected elements and move them slightly from their originals</div></div><div class=CToolTip id="tt22"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>convertToNum = function(</td><td class=PParameter nowrap>attr,</td></tr><tr><td></td><td class=PParameter nowrap>val</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Converts given values to numbers. </div></div><div class=CToolTip id="tt23"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.convertToPath = function(</td><td class=PParameter nowrap>elem,</td></tr><tr><td></td><td class=PParameter nowrap>getBBox</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Convert selected element to a path, or get the BBox of an element-as-path</div></div><div class=CToolTip id="tt24"><div class=CFunction>Converts a string to use XML references</div></div><div class=CToolTip id="tt25"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var copyElem = function(</td><td class=PParameter nowrap>el</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Create a clone of an element, updating its ID and its children&rsquo;s IDs when needed</div></div><div class=CToolTip id="tt26"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.createLayer = function(</td><td class=PParameter nowrap>name</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Creates a new top-level layer in the drawing with the given name, sets the current layer to it, and then clears the selection  This function then calls the &lsquo;changed&rsquo; handler. </div></div><div class=CToolTip id="tt27"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.cycleElement = function(</td><td class=PParameter nowrap>next</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Select the next/previous element within the current layer</div></div><!--END_ND_TOOLTIPS-->
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt28"><div class=CFunction>Converts a string from base64</div></div><div class=CToolTip id="tt29"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.deleteCurrentLayer = function()</td></tr></table></blockquote>Deletes the current layer from the drawing and then clears the selection. </div></div><div class=CToolTip id="tt30"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.deleteSelectedElements = function()</td></tr></table></blockquote>Removes all selected elements from the DOM and adds the change to the history stack</div></div><!--END_ND_TOOLTIPS-->
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt31"><div class=CFunction>Iterate through all our subcommands and returns all the elements we are changing</div></div><div class=CToolTip id="tt32"><div class=CFunction>Returns array with element associated with this command</div></div><div class=CToolTip id="tt33"><div class=CFunction>Returns array with element associated with this command</div></div><div class=CToolTip id="tt34"><div class=CFunction>Returns array with element associated with this command</div></div><div class=CToolTip id="tt35"><div class=CFunction>Returns array with element associated with this command</div></div><div class=CToolTip id="tt36"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.embedImage = function(</td><td class=PParameter nowrap>val,</td></tr><tr><td></td><td class=PParameter nowrap>callback</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Converts a given image file to a data URL when possible, then runs a given callback</div></div><div class=CToolTip id="tt37"><div class=CFunction>Converts a string to base64</div></div><!--END_ND_TOOLTIPS-->
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt38"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var ffClone = function(</td><td class=PParameter nowrap>elem</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Hack for Firefox bugs where text element features aren&rsquo;t updated. </div></div><div class=CToolTip id="tt39"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>var findDefs = function()</td></tr></table></blockquote>Return the document&rsquo;s defs element, create it first if necessary</div></div><div class=CToolTip id="tt40"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var findDuplicateGradient = function(</td><td class=PParameter nowrap>grad</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Check if exact gradient already exists</div></div><div class=CToolTip id="tt41"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>c.finishUndoableChange = function()</td></tr></table></blockquote>This function returns a BatchCommand object which summarizes the change since beginUndoableChange was called. </div></div><div class=CToolTip id="tt42"><div class=CFunction>Converts XML entities in a string to single characters. </div></div><!--END_ND_TOOLTIPS-->
+
+</div><!--Index-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="../files/extensions/ext-foreignobject-js.html">setForeignString(xmlString, elt)</a></div></div><div class=MEntry><div class=MFile><a href="../files/svgcanvas-js.html">SvgCanvas</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="Classes.html">Classes</a></div></div><div class=MEntry><div class=MIndex id=MSelected>Functions</div></div><div class=MEntry><div class=MIndex><a href="Interfaces.html">Interfaces</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option  id=MSearchEverything selected value="General">Everything</option><option value="Classes">Classes</option><option value="Functions">Functions</option><option value="Interfaces">Interfaces</option></select></div></div><!--Menu-->
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></div>
+
+
+<script language=JavaScript><!--
+if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/index/General.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/index/General.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/index/General.html	(revision 29468)
@@ -0,0 +1,53 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<html><head><title>Index</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="IndexPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!--  Generated by Natural Docs, version 1.4 -->
+<!--  http://www.naturaldocs.org  -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Index><div class=IPageTitle>Index</div><div class=INavigationBar>$#! &middot; 0-9 &middot; <a href="#A">A</a> &middot; <a href="#B">B</a> &middot; <a href="#C">C</a> &middot; <a href="#D">D</a> &middot; <a href="#E">E</a> &middot; <a href="#F">F</a> &middot; <a href="General2.html#G">G</a> &middot; <a href="General2.html#H">H</a> &middot; <a href="General2.html#I">I</a> &middot; J &middot; K &middot; <a href="General2.html#L">L</a> &middot; <a href="General2.html#M">M</a> &middot; N &middot; O &middot; <a href="General2.html#P">P</a> &middot; Q &middot; <a href="General2.html#R">R</a> &middot; <a href="General3.html#S">S</a> &middot; <a href="General3.html#T">T</a> &middot; <a href="General3.html#U">U</a> &middot; V &middot; <a href="General3.html#W">W</a> &middot; X &middot; Y &middot; Z</div><table border=0 cellspacing=0 cellpadding=0><tr><td class=IHeading id=IFirstHeading><a name="A"></a>A</td><td></td></tr><tr><td class=ISymbolPrefix id=IFirstSymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.addCommandToHistory" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')" class=ISymbol>addCommandToHistory</a>, <span class=IParent>SvgCanvas</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.addExtension" id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')" class=ISymbol>addExtension</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.Additional_editor_tools"  class=ISymbol>Additional editor tools</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.BatchCommand.addSubCommand" id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')" class=ISymbol>addSubCommand</a>, <span class=IParent>SvgCanvas.<wbr>BatchCommand</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.addSvgElementFromJson" id=link4 onMouseOver="ShowTip(event, 'tt4', 'link4')" onMouseOut="HideTip('tt4')" class=ISymbol>addSvgElementFromJson</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.addToSelection" id=link5 onMouseOver="ShowTip(event, 'tt5', 'link5')" onMouseOut="HideTip('tt5')" class=ISymbol>addToSelection</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.alignSelectedElements" id=link6 onMouseOver="ShowTip(event, 'tt6', 'link6')" onMouseOut="HideTip('tt6')" class=ISymbol>alignSelectedElements</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><span class=ISymbol>apply</span><div class=ISubIndex><a href="../files/svgcanvas-js.html#SvgCanvas.BatchCommand.apply" id=link7 onMouseOver="ShowTip(event, 'tt7', 'link7')" onMouseOut="HideTip('tt7')" class=IParent>SvgCanvas.<wbr>BatchCommand</a><a href="../files/svgcanvas-js.html#SvgCanvas.ChangeElementCommand.apply" id=link8 onMouseOver="ShowTip(event, 'tt8', 'link8')" onMouseOut="HideTip('tt8')" class=IParent>SvgCanvas.<wbr>ChangeElementCommand</a><a href="../files/svgcanvas-js.html#SvgCanvas.InsertElementCommand.apply" id=link9 onMouseOver="ShowTip(event, 'tt9', 'link9')" onMouseOut="HideTip('tt9')" class=IParent>SvgCanvas.<wbr>InsertElementCommand</a><a href="../files/svgcanvas-js.html#SvgCanvas.RemoveElementCommand.apply" id=link10 onMouseOver="ShowTip(event, 'tt10', 'link10')" onMouseOut="HideTip('tt10')" class=IParent>SvgCanvas.<wbr>RemoveElementCommand</a></div></td></tr><tr><td class=ISymbolPrefix id=ILastSymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.assignAttributes" id=link11 onMouseOver="ShowTip(event, 'tt11', 'link11')" onMouseOut="HideTip('tt11')" class=ISymbol>assignAttributes</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=IHeading><a name="B"></a>B</td><td></td></tr><tr><td class=ISymbolPrefix id=IFirstSymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.BatchCommand" id=link12 onMouseOver="ShowTip(event, 'tt12', 'link12')" onMouseOut="HideTip('tt12')" class=ISymbol>BatchCommand</a>, <span class=IParent>SvgCanvas</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.beginUndoableChange" id=link13 onMouseOver="ShowTip(event, 'tt13', 'link13')" onMouseOut="HideTip('tt13')" class=ISymbol>beginUndoableChange</a>, <span class=IParent>SvgCanvas</span></td></tr><tr><td class=ISymbolPrefix id=ILastSymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.bind" id=link14 onMouseOver="ShowTip(event, 'tt14', 'link14')" onMouseOut="HideTip('tt14')" class=ISymbol>bind</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=IHeading><a name="C"></a>C</td><td></td></tr><tr><td class=ISymbolPrefix id=IFirstSymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.ChangeElementCommand" id=link15 onMouseOver="ShowTip(event, 'tt15', 'link15')" onMouseOut="HideTip('tt15')" class=ISymbol>ChangeElementCommand</a>, <span class=IParent>SvgCanvas</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.changeSelectedAttribute" id=link16 onMouseOver="ShowTip(event, 'tt16', 'link16')" onMouseOut="HideTip('tt16')" class=ISymbol>changeSelectedAttribute</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.changeSelectedAttributeNoUndo" id=link17 onMouseOver="ShowTip(event, 'tt17', 'link17')" onMouseOut="HideTip('tt17')" class=ISymbol>changeSelectedAttributeNoUndo</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.cleanupElement" id=link18 onMouseOver="ShowTip(event, 'tt18', 'link18')" onMouseOut="HideTip('tt18')" class=ISymbol>cleanupElement</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.clear" id=link19 onMouseOver="ShowTip(event, 'tt19', 'link19')" onMouseOut="HideTip('tt19')" class=ISymbol>clear</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.clearSelection" id=link20 onMouseOver="ShowTip(event, 'tt20', 'link20')" onMouseOut="HideTip('tt20')" class=ISymbol>clearSelection</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.cloneSelectedElements" id=link21 onMouseOver="ShowTip(event, 'tt21', 'link21')" onMouseOut="HideTip('tt21')" class=ISymbol>cloneSelectedElements</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.convertToNum" id=link22 onMouseOver="ShowTip(event, 'tt22', 'link22')" onMouseOut="HideTip('tt22')" class=ISymbol>convertToNum</a>, <span class=IParent>SvgCanvas</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.convertToPath" id=link23 onMouseOver="ShowTip(event, 'tt23', 'link23')" onMouseOut="HideTip('tt23')" class=ISymbol>convertToPath</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.Utils.convertToXMLReferences" id=link24 onMouseOver="ShowTip(event, 'tt24', 'link24')" onMouseOut="HideTip('tt24')" class=ISymbol>convertToXMLReferences</a>, <span class=IParent>SvgCanvas.<wbr>Utils</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.copyElem" id=link25 onMouseOver="ShowTip(event, 'tt25', 'link25')" onMouseOut="HideTip('tt25')" class=ISymbol>copyElem</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.createLayer" id=link26 onMouseOver="ShowTip(event, 'tt26', 'link26')" onMouseOut="HideTip('tt26')" class=ISymbol>createLayer</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix id=ILastSymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.cycleElement" id=link27 onMouseOver="ShowTip(event, 'tt27', 'link27')" onMouseOut="HideTip('tt27')" class=ISymbol>cycleElement</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=IHeading><a name="D"></a>D</td><td></td></tr><tr><td class=ISymbolPrefix id=IFirstSymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.Utils.decode64" id=link28 onMouseOver="ShowTip(event, 'tt28', 'link28')" onMouseOut="HideTip('tt28')" class=ISymbol>decode64</a>, <span class=IParent>SvgCanvas.<wbr>Utils</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.deleteCurrentLayer" id=link29 onMouseOver="ShowTip(event, 'tt29', 'link29')" onMouseOut="HideTip('tt29')" class=ISymbol>deleteCurrentLayer</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.deleteSelectedElements" id=link30 onMouseOver="ShowTip(event, 'tt30', 'link30')" onMouseOut="HideTip('tt30')" class=ISymbol>deleteSelectedElements</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix id=ILastSymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.Document_functions"  class=ISymbol>Document functions</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=IHeading><a name="E"></a>E</td><td></td></tr><tr><td class=ISymbolPrefix id=IFirstSymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.Element_manipulation"  class=ISymbol>Element manipulation</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.Element_Styling"  class=ISymbol>Element Styling</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.Element_Transforms"  class=ISymbol>Element Transforms</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><span class=ISymbol>elements</span><div class=ISubIndex><a href="../files/svgcanvas-js.html#SvgCanvas.BatchCommand.elements" id=link31 onMouseOver="ShowTip(event, 'tt31', 'link31')" onMouseOut="HideTip('tt31')" class=IParent>SvgCanvas.<wbr>BatchCommand</a><a href="../files/svgcanvas-js.html#SvgCanvas.ChangeElementCommand.elements" id=link32 onMouseOver="ShowTip(event, 'tt32', 'link32')" onMouseOut="HideTip('tt32')" class=IParent>SvgCanvas.<wbr>ChangeElementCommand</a><a href="../files/svgcanvas-js.html#SvgCanvas.InsertElementCommand.elements" id=link33 onMouseOver="ShowTip(event, 'tt33', 'link33')" onMouseOut="HideTip('tt33')" class=IParent>SvgCanvas.<wbr>InsertElementCommand</a><a href="../files/svgcanvas-js.html#SvgCanvas.MoveElementCommand.elements" id=link34 onMouseOver="ShowTip(event, 'tt34', 'link34')" onMouseOut="HideTip('tt34')" class=IParent>SvgCanvas.<wbr>MoveElementCommand</a><a href="../files/svgcanvas-js.html#SvgCanvas.RemoveElementCommand.elements" id=link35 onMouseOver="ShowTip(event, 'tt35', 'link35')" onMouseOut="HideTip('tt35')" class=IParent>SvgCanvas.<wbr>RemoveElementCommand</a></div></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.embedImage" id=link36 onMouseOver="ShowTip(event, 'tt36', 'link36')" onMouseOut="HideTip('tt36')" class=ISymbol>embedImage</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix id=ILastSymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.Utils.encode64" id=link37 onMouseOver="ShowTip(event, 'tt37', 'link37')" onMouseOut="HideTip('tt37')" class=ISymbol>encode64</a>, <span class=IParent>SvgCanvas.<wbr>Utils</span></td></tr><tr><td class=IHeading><a name="F"></a>F</td><td></td></tr><tr><td class=ISymbolPrefix id=IFirstSymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.ffClone" id=link38 onMouseOver="ShowTip(event, 'tt38', 'link38')" onMouseOut="HideTip('tt38')" class=ISymbol>ffClone</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.findDefs" id=link39 onMouseOver="ShowTip(event, 'tt39', 'link39')" onMouseOut="HideTip('tt39')" class=ISymbol>findDefs</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.findDuplicateGradient" id=link40 onMouseOver="ShowTip(event, 'tt40', 'link40')" onMouseOut="HideTip('tt40')" class=ISymbol>findDuplicateGradient</a>, <span class=IParent>SelectorManager</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.finishUndoableChange" id=link41 onMouseOver="ShowTip(event, 'tt41', 'link41')" onMouseOut="HideTip('tt41')" class=ISymbol>finishUndoableChange</a>, <span class=IParent>SvgCanvas</span></td></tr><tr><td class=ISymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.Utils.fromXml" id=link42 onMouseOver="ShowTip(event, 'tt42', 'link42')" onMouseOut="HideTip('tt42')" class=ISymbol>fromXml</a>, <span class=IParent>SvgCanvas.<wbr>Utils</span></td></tr><tr><td class=ISymbolPrefix id=ILastSymbolPrefix>&nbsp;</td><td class=IEntry><a href="../files/svgcanvas-js.html#Selector.Functions"  class=ISymbol>Functions</a>, <span class=IParent>Selector</span></td></tr></table>
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>addCommandToHistory = c.undoCmd.add = function(</td><td class=PParameter nowrap>cmd</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Adds a command object to the undo history stack</div></div><div class=CToolTip id="tt2"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.addExtension = function(</td><td class=PParameter nowrap>name,</td></tr><tr><td></td><td class=PParameter nowrap>ext_func</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Add an extension to the editor</div></div><div class=CToolTip id="tt3"><div class=CFunction>Adds a given command to the history stack</div></div><div class=CToolTip id="tt4"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var addSvgElementFromJson = this.addSvgElementFromJson = function(</td><td class=PParameter nowrap>data</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Create a new SVG element based on the given object keys/values and add it to the current layer The element will be ran through cleanupElement before being returned</div></div><div class=CToolTip id="tt5"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var addToSelection = this.addToSelection = function(</td><td class=PParameter nowrap>elemsToAdd,</td></tr><tr><td></td><td class=PParameter nowrap>showGrips</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Adds a list of elements to the selection. </div></div><div class=CToolTip id="tt6"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.alignSelectedElements = function(</td><td class=PParameter nowrap>type,</td></tr><tr><td></td><td class=PParameter nowrap>relative_to</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Aligns selected elements</div></div><div class=CToolTip id="tt7"><div class=CFunction>Runs &ldquo;apply&rdquo; on all subcommands</div></div><div class=CToolTip id="tt8"><div class=CFunction>Performs the stored change action</div></div><div class=CToolTip id="tt9"><div class=CFunction>Re-Inserts the new element</div></div><div class=CToolTip id="tt10"><div class=CFunction>Re-removes the new element</div></div><div class=CToolTip id="tt11"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var assignAttributes = this.assignAttributes = function(</td><td class=PParameter nowrap>node,</td></tr><tr><td></td><td class=PParameter nowrap>attrs,</td></tr><tr><td></td><td class=PParameter nowrap>suspendLength,</td></tr><tr><td></td><td class=PParameter nowrap>unitCheck</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Assigns multiple attributes to an element.</div></div><!--END_ND_TOOLTIPS-->
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt12"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var BatchCommand = this.undoCmd.batch = function(</td><td class=PParameter nowrap>text</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>History command that can contain/execute multiple other commands</div></div><div class=CToolTip id="tt13"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>c.beginUndoableChange = function(</td><td class=PParameter nowrap>attrName,</td></tr><tr><td></td><td class=PParameter nowrap>elems</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>This function tells the canvas to remember the old values of the attrName attribute for each element sent in. </div></div><div class=CToolTip id="tt14"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>c.bind = function(</td><td class=PParameter nowrap>event,</td></tr><tr><td></td><td class=PParameter nowrap>f</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Attaches a callback function to an event</div></div><!--END_ND_TOOLTIPS-->
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt15"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var ChangeElementCommand = this.undoCmd.changeElement = function(</td><td class=PParameter nowrap>elem,</td></tr><tr><td></td><td class=PParameter nowrap>attrs,</td></tr><tr><td></td><td class=PParameter nowrap>text</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>History command to make a change to an element. </div></div><div class=CToolTip id="tt16"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var changeSelectedAttribute = this.changeSelectedAttribute = function(</td><td class=PParameter nowrap>attr,</td></tr><tr><td></td><td class=PParameter nowrap>val,</td></tr><tr><td></td><td class=PParameter nowrap>elems</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Change the given/selected element and add the original value to the history stack If you want to change all selectedElements, ignore the elems argument. </div></div><div class=CToolTip id="tt17"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var changeSelectedAttributeNoUndo = function(</td><td class=PParameter nowrap>attr,</td></tr><tr><td></td><td class=PParameter nowrap>newValue,</td></tr><tr><td></td><td class=PParameter nowrap>elems</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>This function makes the changes to the elements. </div></div><div class=CToolTip id="tt18"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var cleanupElement = this.cleanupElement = function(</td><td class=PParameter nowrap>element</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Remove unneeded (default) attributes, makes resulting SVG smaller</div></div><div class=CToolTip id="tt19"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.clear = function()</td></tr></table></blockquote>Clears the current document. </div></div><div class=CToolTip id="tt20"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var clearSelection = this.clearSelection = function(</td><td class=PParameter nowrap>noCall</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Clears the selection. </div></div><div class=CToolTip id="tt21"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.cloneSelectedElements = function()</td></tr></table></blockquote>Create deep DOM copies (clones) of all selected elements and move them slightly from their originals</div></div><div class=CToolTip id="tt22"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>convertToNum = function(</td><td class=PParameter nowrap>attr,</td></tr><tr><td></td><td class=PParameter nowrap>val</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Converts given values to numbers. </div></div><div class=CToolTip id="tt23"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.convertToPath = function(</td><td class=PParameter nowrap>elem,</td></tr><tr><td></td><td class=PParameter nowrap>getBBox</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Convert selected element to a path, or get the BBox of an element-as-path</div></div><div class=CToolTip id="tt24"><div class=CFunction>Converts a string to use XML references</div></div><div class=CToolTip id="tt25"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var copyElem = function(</td><td class=PParameter nowrap>el</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Create a clone of an element, updating its ID and its children&rsquo;s IDs when needed</div></div><div class=CToolTip id="tt26"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.createLayer = function(</td><td class=PParameter nowrap>name</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Creates a new top-level layer in the drawing with the given name, sets the current layer to it, and then clears the selection  This function then calls the &lsquo;changed&rsquo; handler. </div></div><div class=CToolTip id="tt27"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.cycleElement = function(</td><td class=PParameter nowrap>next</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Select the next/previous element within the current layer</div></div><!--END_ND_TOOLTIPS-->
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt28"><div class=CFunction>Converts a string from base64</div></div><div class=CToolTip id="tt29"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.deleteCurrentLayer = function()</td></tr></table></blockquote>Deletes the current layer from the drawing and then clears the selection. </div></div><div class=CToolTip id="tt30"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>this.deleteSelectedElements = function()</td></tr></table></blockquote>Removes all selected elements from the DOM and adds the change to the history stack</div></div><!--END_ND_TOOLTIPS-->
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt31"><div class=CFunction>Iterate through all our subcommands and returns all the elements we are changing</div></div><div class=CToolTip id="tt32"><div class=CFunction>Returns array with element associated with this command</div></div><div class=CToolTip id="tt33"><div class=CFunction>Returns array with element associated with this command</div></div><div class=CToolTip id="tt34"><div class=CFunction>Returns array with element associated with this command</div></div><div class=CToolTip id="tt35"><div class=CFunction>Returns array with element associated with this command</div></div><div class=CToolTip id="tt36"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>this.embedImage = function(</td><td class=PParameter nowrap>val,</td></tr><tr><td></td><td class=PParameter nowrap>callback</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Converts a given image file to a data URL when possible, then runs a given callback</div></div><div class=CToolTip id="tt37"><div class=CFunction>Converts a string to base64</div></div><!--END_ND_TOOLTIPS-->
+
+
+<!--START_ND_TOOLTIPS-->
+<div class=CToolTip id="tt38"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var ffClone = function(</td><td class=PParameter nowrap>elem</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Hack for Firefox bugs where text element features aren&rsquo;t updated. </div></div><div class=CToolTip id="tt39"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>var findDefs = function()</td></tr></table></blockquote>Return the document&rsquo;s defs element, create it first if necessary</div></div><div class=CToolTip id="tt40"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>var findDuplicateGradient = function(</td><td class=PParameter nowrap>grad</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Check if exact gradient already exists</div></div><div class=CToolTip id="tt41"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>c.finishUndoableChange = function()</td></tr></table></blockquote>This function returns a BatchCommand object which summarizes the change since beginUndoableChange was called. </div></div><div class=CToolTip id="tt42"><div class=CFunction>Converts XML entities in a string to single characters. </div></div><!--END_ND_TOOLTIPS-->
+
+</div><!--Index-->
+
+
+<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->
+
+
+<div id=Menu><div class=MEntry><div class=MFile><a href="../files/extensions/ext-foreignobject-js.html">setForeignString(xmlString, elt)</a></div></div><div class=MEntry><div class=MFile><a href="../files/svgcanvas-js.html">SvgCanvas</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex id=MSelected>Everything</div></div><div class=MEntry><div class=MIndex><a href="Classes.html">Classes</a></div></div><div class=MEntry><div class=MIndex><a href="Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="Interfaces.html">Interfaces</a></div></div></div></div></div><script type="text/javascript"><!--
+var searchPanel = new SearchPanel("searchPanel", "HTML", "../search");
+--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option  id=MSearchEverything selected value="General">Everything</option><option value="Classes">Classes</option><option value="Functions">Functions</option><option value="Interfaces">Interfaces</option></select></div></div><!--Menu-->
+
+
+<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></div>
+
+
+<script language=JavaScript><!--
+if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/javascript/main.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/javascript/main.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/javascript/main.js	(revision 29468)
@@ -0,0 +1,836 @@
+// This file is part of Natural Docs, which is Copyright (C) 2003-2008 Greg Valure
+// Natural Docs is licensed under the GPL
+
+
+//
+//  Browser Styles
+// ____________________________________________________________________________
+
+var agt=navigator.userAgent.toLowerCase();
+var browserType;
+var browserVer;
+
+if (agt.indexOf("opera") != -1)
+    {
+    browserType = "Opera";
+
+    if (agt.indexOf("opera 7") != -1 || agt.indexOf("opera/7") != -1)
+        {  browserVer = "Opera7";  }
+    else if (agt.indexOf("opera 8") != -1 || agt.indexOf("opera/8") != -1)
+        {  browserVer = "Opera8";  }
+    else if (agt.indexOf("opera 9") != -1 || agt.indexOf("opera/9") != -1)
+        {  browserVer = "Opera9";  }
+    }
+
+else if (agt.indexOf("applewebkit") != -1)
+    {
+    browserType = "Safari";
+
+    if (agt.indexOf("version/3") != -1)
+        {  browserVer = "Safari3";  }
+    else if (agt.indexOf("safari/4") != -1)
+        {  browserVer = "Safari2";  }
+    }
+
+else if (agt.indexOf("khtml") != -1)
+    {
+    browserType = "Konqueror";
+    }
+
+else if (agt.indexOf("msie") != -1)
+    {
+    browserType = "IE";
+
+    if (agt.indexOf("msie 6") != -1)
+        {  browserVer = "IE6";  }
+    else if (agt.indexOf("msie 7") != -1)
+        {  browserVer = "IE7";  }
+    }
+
+else if (agt.indexOf("gecko") != -1)
+    {
+    browserType = "Firefox";
+
+    if (agt.indexOf("rv:1.7") != -1)
+        {  browserVer = "Firefox1";  }
+    else if (agt.indexOf("rv:1.8)") != -1 || agt.indexOf("rv:1.8.0") != -1)
+        {  browserVer = "Firefox15";  }
+    else if (agt.indexOf("rv:1.8.1") != -1)
+        {  browserVer = "Firefox2";  }
+    }
+
+
+//
+//  Support Functions
+// ____________________________________________________________________________
+
+
+function GetXPosition(item)
+    {
+    var position = 0;
+
+    if (item.offsetWidth != null)
+        {
+        while (item != document.body && item != null)
+            {
+            position += item.offsetLeft;
+            item = item.offsetParent;
+            };
+        };
+
+    return position;
+    };
+
+
+function GetYPosition(item)
+    {
+    var position = 0;
+
+    if (item.offsetWidth != null)
+        {
+        while (item != document.body && item != null)
+            {
+            position += item.offsetTop;
+            item = item.offsetParent;
+            };
+        };
+
+    return position;
+    };
+
+
+function MoveToPosition(item, x, y)
+    {
+    // Opera 5 chokes on the px extension, so it can use the Microsoft one instead.
+
+    if (item.style.left != null)
+        {
+        item.style.left = x + "px";
+        item.style.top = y + "px";
+        }
+    else if (item.style.pixelLeft != null)
+        {
+        item.style.pixelLeft = x;
+        item.style.pixelTop = y;
+        };
+    };
+
+
+//
+//  Menu
+// ____________________________________________________________________________
+
+
+function ToggleMenu(id)
+    {
+    if (!window.document.getElementById)
+        {  return;  };
+
+    var display = window.document.getElementById(id).style.display;
+
+    if (display == "none")
+        {  display = "block";  }
+    else
+        {  display = "none";  }
+
+    window.document.getElementById(id).style.display = display;
+    }
+
+function HideAllBut(ids, max)
+    {
+    if (document.getElementById)
+        {
+        ids.sort( function(a,b) { return a - b; } );
+        var number = 1;
+
+        while (number < max)
+            {
+            if (ids.length > 0 && number == ids[0])
+                {  ids.shift();  }
+            else
+                {
+                document.getElementById("MGroupContent" + number).style.display = "none";
+                };
+
+            number++;
+            };
+        };
+    }
+
+
+//
+//  Tooltips
+// ____________________________________________________________________________
+
+
+var tooltipTimer = 0;
+
+function ShowTip(event, tooltipID, linkID)
+    {
+    if (tooltipTimer)
+        {  clearTimeout(tooltipTimer);  };
+
+    var docX = event.clientX + window.pageXOffset;
+    var docY = event.clientY + window.pageYOffset;
+
+    var showCommand = "ReallyShowTip('" + tooltipID + "', '" + linkID + "', " + docX + ", " + docY + ")";
+
+    tooltipTimer = setTimeout(showCommand, 1000);
+    }
+
+function ReallyShowTip(tooltipID, linkID, docX, docY)
+    {
+    tooltipTimer = 0;
+
+    var tooltip;
+    var link;
+
+    if (document.getElementById)
+        {
+        tooltip = document.getElementById(tooltipID);
+        link = document.getElementById(linkID);
+        }
+/*    else if (document.all)
+        {
+        tooltip = eval("document.all['" + tooltipID + "']");
+        link = eval("document.all['" + linkID + "']");
+        }
+*/
+    if (tooltip)
+        {
+        var left = GetXPosition(link);
+        var top = GetYPosition(link);
+        top += link.offsetHeight;
+
+
+        // The fallback method is to use the mouse X and Y relative to the document.  We use a separate if and test if its a number
+        // in case some browser snuck through the above if statement but didn't support everything.
+
+        if (!isFinite(top) || top == 0)
+            {
+            left = docX;
+            top = docY;
+            }
+
+        // Some spacing to get it out from under the cursor.
+
+        top += 10;
+
+        // Make sure the tooltip doesnt get smushed by being too close to the edge, or in some browsers, go off the edge of the
+        // page.  We do it here because Konqueror does get offsetWidth right even if it doesnt get the positioning right.
+
+        if (tooltip.offsetWidth != null)
+            {
+            var width = tooltip.offsetWidth;
+            var docWidth = document.body.clientWidth;
+
+            if (left + width > docWidth)
+                {  left = docWidth - width - 1;  }
+
+            // If there's a horizontal scroll bar we could go past zero because it's using the page width, not the window width.
+            if (left < 0)
+                {  left = 0;  };
+            }
+
+        MoveToPosition(tooltip, left, top);
+        tooltip.style.visibility = "visible";
+        }
+    }
+
+function HideTip(tooltipID)
+    {
+    if (tooltipTimer)
+        {
+        clearTimeout(tooltipTimer);
+        tooltipTimer = 0;
+        }
+
+    var tooltip;
+
+    if (document.getElementById)
+        {  tooltip = document.getElementById(tooltipID); }
+    else if (document.all)
+        {  tooltip = eval("document.all['" + tooltipID + "']");  }
+
+    if (tooltip)
+        {  tooltip.style.visibility = "hidden";  }
+    }
+
+
+//
+//  Blockquote fix for IE
+// ____________________________________________________________________________
+
+
+function NDOnLoad()
+    {
+    if (browserVer == "IE6")
+        {
+        var scrollboxes = document.getElementsByTagName('blockquote');
+
+        if (scrollboxes.item(0))
+            {
+            NDDoResize();
+            window.onresize=NDOnResize;
+            };
+        };
+    };
+
+
+var resizeTimer = 0;
+
+function NDOnResize()
+    {
+    if (resizeTimer != 0)
+        {  clearTimeout(resizeTimer);  };
+
+    resizeTimer = setTimeout(NDDoResize, 250);
+    };
+
+
+function NDDoResize()
+    {
+    var scrollboxes = document.getElementsByTagName('blockquote');
+
+    var i;
+    var item;
+
+    i = 0;
+    while (item = scrollboxes.item(i))
+        {
+        item.style.width = 100;
+        i++;
+        };
+
+    i = 0;
+    while (item = scrollboxes.item(i))
+        {
+        item.style.width = item.parentNode.offsetWidth;
+        i++;
+        };
+
+    clearTimeout(resizeTimer);
+    resizeTimer = 0;
+    }
+
+
+
+/* ________________________________________________________________________________________________________
+
+    Class: SearchPanel
+    ________________________________________________________________________________________________________
+
+    A class handling everything associated with the search panel.
+
+    Parameters:
+
+        name - The name of the global variable that will be storing this instance.  Is needed to be able to set timeouts.
+        mode - The mode the search is going to work in.  Pass <NaturalDocs::Builder::Base->CommandLineOption()>, so the
+                   value will be something like "HTML" or "FramedHTML".
+
+    ________________________________________________________________________________________________________
+*/
+
+
+function SearchPanel(name, mode, resultsPath)
+    {
+    if (!name || !mode || !resultsPath)
+        {  alert("Incorrect parameters to SearchPanel.");  };
+
+
+    // Group: Variables
+    // ________________________________________________________________________
+
+    /*
+        var: name
+        The name of the global variable that will be storing this instance of the class.
+    */
+    this.name = name;
+
+    /*
+        var: mode
+        The mode the search is going to work in, such as "HTML" or "FramedHTML".
+    */
+    this.mode = mode;
+
+    /*
+        var: resultsPath
+        The relative path from the current HTML page to the results page directory.
+    */
+    this.resultsPath = resultsPath;
+
+    /*
+        var: keyTimeout
+        The timeout used between a keystroke and when a search is performed.
+    */
+    this.keyTimeout = 0;
+
+    /*
+        var: keyTimeoutLength
+        The length of <keyTimeout> in thousandths of a second.
+    */
+    this.keyTimeoutLength = 500;
+
+    /*
+        var: lastSearchValue
+        The last search string executed, or an empty string if none.
+    */
+    this.lastSearchValue = "";
+
+    /*
+        var: lastResultsPage
+        The last results page.  The value is only relevant if <lastSearchValue> is set.
+    */
+    this.lastResultsPage = "";
+
+    /*
+        var: deactivateTimeout
+
+        The timeout used between when a control is deactivated and when the entire panel is deactivated.  Is necessary
+        because a control may be deactivated in favor of another control in the same panel, in which case it should stay
+        active.
+    */
+    this.deactivateTimout = 0;
+
+    /*
+        var: deactivateTimeoutLength
+        The length of <deactivateTimeout> in thousandths of a second.
+    */
+    this.deactivateTimeoutLength = 200;
+
+
+
+
+    // Group: DOM Elements
+    // ________________________________________________________________________
+
+
+    // Function: DOMSearchField
+    this.DOMSearchField = function()
+        {  return document.getElementById("MSearchField");  };
+
+    // Function: DOMSearchType
+    this.DOMSearchType = function()
+        {  return document.getElementById("MSearchType");  };
+
+    // Function: DOMPopupSearchResults
+    this.DOMPopupSearchResults = function()
+        {  return document.getElementById("MSearchResults");  };
+
+    // Function: DOMPopupSearchResultsWindow
+    this.DOMPopupSearchResultsWindow = function()
+        {  return document.getElementById("MSearchResultsWindow");  };
+
+    // Function: DOMSearchPanel
+    this.DOMSearchPanel = function()
+        {  return document.getElementById("MSearchPanel");  };
+
+
+
+
+    // Group: Event Handlers
+    // ________________________________________________________________________
+
+
+    /*
+        Function: OnSearchFieldFocus
+        Called when focus is added or removed from the search field.
+    */
+    this.OnSearchFieldFocus = function(isActive)
+        {
+        this.Activate(isActive);
+        };
+
+
+    /*
+        Function: OnSearchFieldChange
+        Called when the content of the search field is changed.
+    */
+    this.OnSearchFieldChange = function()
+        {
+        if (this.keyTimeout)
+            {
+            clearTimeout(this.keyTimeout);
+            this.keyTimeout = 0;
+            };
+
+        var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
+
+        if (searchValue != this.lastSearchValue)
+            {
+            if (searchValue != "")
+                {
+                this.keyTimeout = setTimeout(this.name + ".Search()", this.keyTimeoutLength);
+                }
+            else
+                {
+                if (this.mode == "HTML")
+                    {  this.DOMPopupSearchResultsWindow().style.display = "none";  };
+                this.lastSearchValue = "";
+                };
+            };
+        };
+
+
+    /*
+        Function: OnSearchTypeFocus
+        Called when focus is added or removed from the search type.
+    */
+    this.OnSearchTypeFocus = function(isActive)
+        {
+        this.Activate(isActive);
+        };
+
+
+    /*
+        Function: OnSearchTypeChange
+        Called when the search type is changed.
+    */
+    this.OnSearchTypeChange = function()
+        {
+        var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
+
+        if (searchValue != "")
+            {
+            this.Search();
+            };
+        };
+
+
+
+    // Group: Action Functions
+    // ________________________________________________________________________
+
+
+    /*
+        Function: CloseResultsWindow
+        Closes the results window.
+    */
+    this.CloseResultsWindow = function()
+        {
+        this.DOMPopupSearchResultsWindow().style.display = "none";
+        this.Activate(false, true);
+        };
+
+
+    /*
+        Function: Search
+        Performs a search.
+    */
+    this.Search = function()
+        {
+        this.keyTimeout = 0;
+
+        var searchValue = this.DOMSearchField().value.replace(/^ +/, "");
+        var searchTopic = this.DOMSearchType().value;
+
+        var pageExtension = searchValue.substr(0,1);
+
+        if (pageExtension.match(/^[a-z]/i))
+            {  pageExtension = pageExtension.toUpperCase();  }
+        else if (pageExtension.match(/^[0-9]/))
+            {  pageExtension = 'Numbers';  }
+        else
+            {  pageExtension = "Symbols";  };
+
+        var resultsPage;
+        var resultsPageWithSearch;
+        var hasResultsPage;
+
+        // indexSectionsWithContent is defined in searchdata.js
+        if (indexSectionsWithContent[searchTopic][pageExtension] == true)
+            {
+            resultsPage = this.resultsPath + '/' + searchTopic + pageExtension + '.html';
+            resultsPageWithSearch = resultsPage+'?'+escape(searchValue);
+            hasResultsPage = true;
+            }
+        else
+            {
+            resultsPage = this.resultsPath + '/NoResults.html';
+            resultsPageWithSearch = resultsPage;
+            hasResultsPage = false;
+            };
+
+        var resultsFrame;
+        if (this.mode == "HTML")
+            {  resultsFrame = window.frames.MSearchResults;  }
+        else if (this.mode == "FramedHTML")
+            {  resultsFrame = window.top.frames['Content'];  };
+
+
+        if (resultsPage != this.lastResultsPage ||
+
+            // Bug in IE.  If everything becomes hidden in a run, none of them will be able to be reshown in the next for some
+            // reason.  It counts the right number of results, and you can even read the display as "block" after setting it, but it
+            // just doesn't work in IE 6 or IE 7.  So if we're on the right page but the previous search had no results, reload the
+            // page anyway to get around the bug.
+            (browserType == "IE" && hasResultsPage &&
+            	(!resultsFrame.searchResults || resultsFrame.searchResults.lastMatchCount == 0)) )
+
+            {
+            resultsFrame.location.href = resultsPageWithSearch;
+            }
+
+        // So if the results page is right and there's no IE bug, reperform the search on the existing page.  We have to check if there
+        // are results because NoResults.html doesn't have any JavaScript, and it would be useless to do anything on that page even
+        // if it did.
+        else if (hasResultsPage)
+            {
+            // We need to check if this exists in case the frame is present but didn't finish loading.
+            if (resultsFrame.searchResults)
+                {  resultsFrame.searchResults.Search(searchValue);  }
+
+            // Otherwise just reload instead of waiting.
+            else
+                {  resultsFrame.location.href = resultsPageWithSearch;  };
+            };
+
+
+        var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow();
+
+        if (this.mode == "HTML" && domPopupSearchResultsWindow.style.display != "block")
+            {
+            var domSearchType = this.DOMSearchType();
+
+            var left = GetXPosition(domSearchType);
+            var top = GetYPosition(domSearchType) + domSearchType.offsetHeight;
+
+            MoveToPosition(domPopupSearchResultsWindow, left, top);
+            domPopupSearchResultsWindow.style.display = 'block';
+            };
+
+
+        this.lastSearchValue = searchValue;
+        this.lastResultsPage = resultsPage;
+        };
+
+
+
+    // Group: Activation Functions
+    // Functions that handle whether the entire panel is active or not.
+    // ________________________________________________________________________
+
+
+    /*
+        Function: Activate
+
+        Activates or deactivates the search panel, resetting things to their default values if necessary.  You can call this on every
+        control's OnBlur() and it will handle not deactivating the entire panel when focus is just switching between them transparently.
+
+        Parameters:
+
+            isActive - Whether you're activating or deactivating the panel.
+            ignoreDeactivateDelay - Set if you're positive the action will deactivate the panel and thus want to skip the delay.
+    */
+    this.Activate = function(isActive, ignoreDeactivateDelay)
+        {
+        // We want to ignore isActive being false while the results window is open.
+        if (isActive || (this.mode == "HTML" && this.DOMPopupSearchResultsWindow().style.display == "block"))
+            {
+            if (this.inactivateTimeout)
+                {
+                clearTimeout(this.inactivateTimeout);
+                this.inactivateTimeout = 0;
+                };
+
+            this.DOMSearchPanel().className = 'MSearchPanelActive';
+
+            var searchField = this.DOMSearchField();
+
+            if (searchField.value == 'Search')
+                 {  searchField.value = "";  }
+            }
+        else if (!ignoreDeactivateDelay)
+            {
+            this.inactivateTimeout = setTimeout(this.name + ".InactivateAfterTimeout()", this.inactivateTimeoutLength);
+            }
+        else
+            {
+            this.InactivateAfterTimeout();
+            };
+        };
+
+
+    /*
+        Function: InactivateAfterTimeout
+
+        Called by <inactivateTimeout>, which is set by <Activate()>.  Inactivation occurs on a timeout because a control may
+        receive OnBlur() when focus is really transferring to another control in the search panel.  In this case we don't want to
+        actually deactivate the panel because not only would that cause a visible flicker but it could also reset the search value.
+        So by doing it on a timeout instead, there's a short period where the second control's OnFocus() can cancel the deactivation.
+    */
+    this.InactivateAfterTimeout = function()
+        {
+        this.inactivateTimeout = 0;
+
+        this.DOMSearchPanel().className = 'MSearchPanelInactive';
+        this.DOMSearchField().value = "Search";
+
+	    this.lastSearchValue = "";
+	    this.lastResultsPage = "";
+        };
+    };
+
+
+
+
+/* ________________________________________________________________________________________________________
+
+   Class: SearchResults
+   _________________________________________________________________________________________________________
+
+   The class that handles everything on the search results page.
+   _________________________________________________________________________________________________________
+*/
+
+
+function SearchResults(name, mode)
+    {
+    /*
+        var: mode
+        The mode the search is going to work in, such as "HTML" or "FramedHTML".
+    */
+    this.mode = mode;
+
+    /*
+        var: lastMatchCount
+        The number of matches from the last run of <Search()>.
+    */
+    this.lastMatchCount = 0;
+
+
+    /*
+        Function: Toggle
+        Toggles the visibility of the passed element ID.
+    */
+    this.Toggle = function(id)
+        {
+        if (this.mode == "FramedHTML")
+            {  return;  };
+
+        var parentElement = document.getElementById(id);
+
+        var element = parentElement.firstChild;
+
+        while (element && element != parentElement)
+            {
+            if (element.nodeName == 'DIV' && element.className == 'ISubIndex')
+                {
+                if (element.style.display == 'block')
+                    {  element.style.display = "none";  }
+                else
+                    {  element.style.display = 'block';  }
+                };
+
+            if (element.nodeName == 'DIV' && element.hasChildNodes())
+                {  element = element.firstChild;  }
+            else if (element.nextSibling)
+                {  element = element.nextSibling;  }
+            else
+                {
+                do
+                    {
+                    element = element.parentNode;
+                    }
+                while (element && element != parentElement && !element.nextSibling);
+
+                if (element && element != parentElement)
+                    {  element = element.nextSibling;  };
+                };
+            };
+        };
+
+
+    /*
+        Function: Search
+
+        Searches for the passed string.  If there is no parameter, it takes it from the URL query.
+
+        Always returns true, since other documents may try to call it and that may or may not be possible.
+    */
+    this.Search = function(search)
+        {
+        if (!search)
+            {
+            search = window.location.search;
+            search = search.substring(1);  // Remove the leading ?
+            search = unescape(search);
+            };
+
+        search = search.replace(/^ +/, "");
+        search = search.replace(/ +$/, "");
+        search = search.toLowerCase();
+
+        if (search.match(/[^a-z0-9]/)) // Just a little speedup so it doesn't have to go through the below unnecessarily.
+            {
+            search = search.replace(/\_/g, "_und");
+            search = search.replace(/\ +/gi, "_spc");
+            search = search.replace(/\~/g, "_til");
+            search = search.replace(/\!/g, "_exc");
+            search = search.replace(/\@/g, "_att");
+            search = search.replace(/\#/g, "_num");
+            search = search.replace(/\$/g, "_dol");
+            search = search.replace(/\%/g, "_pct");
+            search = search.replace(/\^/g, "_car");
+            search = search.replace(/\&/g, "_amp");
+            search = search.replace(/\*/g, "_ast");
+            search = search.replace(/\(/g, "_lpa");
+            search = search.replace(/\)/g, "_rpa");
+            search = search.replace(/\-/g, "_min");
+            search = search.replace(/\+/g, "_plu");
+            search = search.replace(/\=/g, "_equ");
+            search = search.replace(/\{/g, "_lbc");
+            search = search.replace(/\}/g, "_rbc");
+            search = search.replace(/\[/g, "_lbk");
+            search = search.replace(/\]/g, "_rbk");
+            search = search.replace(/\:/g, "_col");
+            search = search.replace(/\;/g, "_sco");
+            search = search.replace(/\"/g, "_quo");
+            search = search.replace(/\'/g, "_apo");
+            search = search.replace(/\</g, "_lan");
+            search = search.replace(/\>/g, "_ran");
+            search = search.replace(/\,/g, "_com");
+            search = search.replace(/\./g, "_per");
+            search = search.replace(/\?/g, "_que");
+            search = search.replace(/\//g, "_sla");
+            search = search.replace(/[^a-z0-9\_]i/gi, "_zzz");
+            };
+
+        var resultRows = document.getElementsByTagName("div");
+        var matches = 0;
+
+        var i = 0;
+        while (i < resultRows.length)
+            {
+            var row = resultRows.item(i);
+
+            if (row.className == "SRResult")
+                {
+                var rowMatchName = row.id.toLowerCase();
+                rowMatchName = rowMatchName.replace(/^sr\d*_/, '');
+
+                if (search.length <= rowMatchName.length && rowMatchName.substr(0, search.length) == search)
+                    {
+                    row.style.display = "block";
+                    matches++;
+                    }
+                else
+                    {  row.style.display = "none";  };
+                };
+
+            i++;
+            };
+
+        document.getElementById("Searching").style.display="none";
+
+        if (matches == 0)
+            {  document.getElementById("NoMatches").style.display="block";  }
+        else
+            {  document.getElementById("NoMatches").style.display="none";  }
+
+        this.lastMatchCount = matches;
+
+        return true;
+        };
+    };
+
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/javascript/searchdata.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/javascript/searchdata.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/javascript/searchdata.js	(revision 29468)
@@ -0,0 +1,122 @@
+var indexSectionsWithContent = {
+   "General": {
+      "Symbols": false,
+      "Numbers": false,
+      "A": true,
+      "B": false,
+      "C": true,
+      "D": true,
+      "E": false,
+      "F": true,
+      "G": true,
+      "H": true,
+      "I": true,
+      "J": false,
+      "K": false,
+      "L": true,
+      "M": true,
+      "N": false,
+      "O": true,
+      "P": false,
+      "Q": false,
+      "R": true,
+      "S": true,
+      "T": false,
+      "U": false,
+      "V": false,
+      "W": false,
+      "X": false,
+      "Y": false,
+      "Z": false
+      },
+   "Functions": {
+      "Symbols": false,
+      "Numbers": false,
+      "A": true,
+      "B": true,
+      "C": true,
+      "D": true,
+      "E": true,
+      "F": true,
+      "G": true,
+      "H": true,
+      "I": true,
+      "J": false,
+      "K": false,
+      "L": true,
+      "M": true,
+      "N": false,
+      "O": false,
+      "P": true,
+      "Q": false,
+      "R": true,
+      "S": true,
+      "T": true,
+      "U": true,
+      "V": false,
+      "W": true,
+      "X": false,
+      "Y": false,
+      "Z": false
+      },
+   "Interfaces": {
+      "Symbols": false,
+      "Numbers": false,
+      "A": false,
+      "B": false,
+      "C": false,
+      "D": false,
+      "E": false,
+      "F": false,
+      "G": false,
+      "H": false,
+      "I": false,
+      "J": false,
+      "K": false,
+      "L": false,
+      "M": false,
+      "N": false,
+      "O": false,
+      "P": false,
+      "Q": false,
+      "R": false,
+      "S": true,
+      "T": false,
+      "U": false,
+      "V": false,
+      "W": false,
+      "X": false,
+      "Y": false,
+      "Z": false
+      },
+   "Classes": {
+      "Symbols": false,
+      "Numbers": false,
+      "A": false,
+      "B": false,
+      "C": false,
+      "D": false,
+      "E": false,
+      "F": false,
+      "G": false,
+      "H": false,
+      "I": false,
+      "J": false,
+      "K": false,
+      "L": false,
+      "M": false,
+      "N": false,
+      "O": false,
+      "P": false,
+      "Q": false,
+      "R": false,
+      "S": true,
+      "T": false,
+      "U": false,
+      "V": false,
+      "W": false,
+      "X": false,
+      "Y": false,
+      "Z": false
+      }
+   }
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/FilesS.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/FilesS.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/FilesS.html	(revision 29468)
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!--  Generated by Natural Docs, version 1.4 -->
+<!--  http://www.naturaldocs.org  -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_svgcanvas_minlatest_spccopy_perjs><div class=IEntry><a href="javascript:searchResults.Toggle('SR_svgcanvas_minlatest_spccopy_perjs')" class=ISymbol>svgcanvas-latest copy.js</a><div class=ISubIndex><a href="../files/editor/svgcanvas-latest_copy-js.html#svgcanvas-latest_copy.js" target=_parent class=IFile>editor/<wbr>svgcanvas-latest copy.js</a><a href="../files/editor_old/svgcanvas-latest_copy-js.html#svgcanvas-latest_copy.js" target=_parent class=IFile>editor_old/<wbr>svgcanvas-latest copy.js</a></div></div></div><div class=SRResult id=SR_svgcanvas_minmine_perjs><div class=IEntry><a href="javascript:searchResults.Toggle('SR_svgcanvas_minmine_perjs')" class=ISymbol>svgcanvas-mine.js</a><div class=ISubIndex><a href="../files/editor/svgcanvas-mine-js.html#svgcanvas-mine.js" target=_parent class=IFile>editor/<wbr>svgcanvas-mine.js</a><a href="../files/editor_old/svgcanvas-mine-js.html#svgcanvas-mine.js" target=_parent class=IFile>editor_old/<wbr>svgcanvas-mine.js</a></div></div></div><div class=SRResult id=SR_svgcanvas_mintextanchor_minexperiment_perjs><div class=IEntry><a href="javascript:searchResults.Toggle('SR_svgcanvas_mintextanchor_minexperiment_perjs')" class=ISymbol>svgcanvas-textanchor-experiment.js</a><div class=ISubIndex><a href="../files/editor/svgcanvas-textanchor-experiment-js.html#svgcanvas-textanchor-experiment.js" target=_parent class=IFile>editor/<wbr>svgcanvas-textanchor-experiment.js</a><a href="../files/editor_old/svgcanvas-textanchor-experiment-js.html#svgcanvas-textanchor-experiment.js" target=_parent class=IFile>editor_old/<wbr>svgcanvas-textanchor-experiment.js</a></div></div></div><div class=SRResult id=SR_svgcanvas_perjs><div class=IEntry><a href="javascript:searchResults.Toggle('SR_svgcanvas_perjs')" class=ISymbol>svgcanvas.js</a><div class=ISubIndex><a href="../files/editor/svgcanvas-js.html#svgcanvas.js" target=_parent class=IFile>editor/<wbr>svgcanvas.js</a><a href="../files/editor_old/svgcanvas-js.html#svgcanvas.js" target=_parent class=IFile>editor_old/<wbr>svgcanvas.js</a></div></div></div><div class=SRResult id=SR_svgcanvas_undsubpaths_perjs><div class=IEntry><a href="javascript:searchResults.Toggle('SR_svgcanvas_undsubpaths_perjs')" class=ISymbol>svgcanvas_subpaths.js</a><div class=ISubIndex><a href="../files/editor/svgcanvas_subpaths-js.html#svgcanvas_subpaths.js" target=_parent class=IFile>editor/<wbr>svgcanvas_subpaths.js</a><a href="../files/editor_old/svgcanvas_subpaths-js.html#svgcanvas_subpaths.js" target=_parent class=IFile>editor_old/<wbr>svgcanvas_subpaths.js</a></div></div></div><div class=SRResult id=SR_svgcanvas_undtemp_perjs><div class=IEntry><a href="javascript:searchResults.Toggle('SR_svgcanvas_undtemp_perjs')" class=ISymbol>svgcanvas_temp.js</a><div class=ISubIndex><a href="../files/editor/svgcanvas_temp-js.html#svgcanvas_temp.js" target=_parent class=IFile>editor/<wbr>svgcanvas_temp.js</a><a href="../files/editor_old/svgcanvas_temp-js.html#svgcanvas_temp.js" target=_parent class=IFile>editor_old/<wbr>svgcanvas_temp.js</a></div></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults", "HTML");
+searchResults.Search();
+--></script></div><script language=JavaScript><!--
+if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/FunctionsA.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/FunctionsA.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/FunctionsA.html	(revision 29468)
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!--  Generated by Natural Docs, version 1.4 -->
+<!--  http://www.naturaldocs.org  -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_addCommandToHistory><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.addCommandToHistory" target=_parent class=ISymbol>addCommandToHistory</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_addExtension><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.addExtension" target=_parent class=ISymbol>addExtension</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_addSubCommand><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.BatchCommand.addSubCommand" target=_parent class=ISymbol>addSubCommand</a>, <span class=IParent>SvgCanvas.<wbr>BatchCommand</span></div></div><div class=SRResult id=SR_addSvgElementFromJson><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.addSvgElementFromJson" target=_parent class=ISymbol>addSvgElementFromJson</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_addToSelection><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.addToSelection" target=_parent class=ISymbol>addToSelection</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_alignSelectedElements><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.alignSelectedElements" target=_parent class=ISymbol>alignSelectedElements</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_apply><div class=IEntry><a href="javascript:searchResults.Toggle('SR_apply')" class=ISymbol>apply</a><div class=ISubIndex><a href="../files/svgcanvas-js.html#SvgCanvas.BatchCommand.apply" target=_parent class=IParent>SvgCanvas.<wbr>BatchCommand</a><a href="../files/svgcanvas-js.html#SvgCanvas.ChangeElementCommand.apply" target=_parent class=IParent>SvgCanvas.<wbr>ChangeElementCommand</a><a href="../files/svgcanvas-js.html#SvgCanvas.InsertElementCommand.apply" target=_parent class=IParent>SvgCanvas.<wbr>InsertElementCommand</a><a href="../files/svgcanvas-js.html#SvgCanvas.RemoveElementCommand.apply" target=_parent class=IParent>SvgCanvas.<wbr>RemoveElementCommand</a></div></div></div><div class=SRResult id=SR_assignAttributes><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.assignAttributes" target=_parent class=ISymbol>assignAttributes</a>, <span class=IParent>SelectorManager</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults", "HTML");
+searchResults.Search();
+--></script></div><script language=JavaScript><!--
+if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/FunctionsC.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/FunctionsC.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/FunctionsC.html	(revision 29468)
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!--  Generated by Natural Docs, version 1.4 -->
+<!--  http://www.naturaldocs.org  -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_ChangeElementCommand><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.ChangeElementCommand" target=_parent class=ISymbol>ChangeElementCommand</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_changeSelectedAttribute><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.changeSelectedAttribute" target=_parent class=ISymbol>changeSelectedAttribute</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_changeSelectedAttributeNoUndo><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.changeSelectedAttributeNoUndo" target=_parent class=ISymbol>changeSelectedAttributeNoUndo</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_cleanupElement><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.cleanupElement" target=_parent class=ISymbol>cleanupElement</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_clear><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.clear" target=_parent class=ISymbol>clear</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_clearSelection><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.clearSelection" target=_parent class=ISymbol>clearSelection</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_cloneSelectedElements><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.cloneSelectedElements" target=_parent class=ISymbol>cloneSelectedElements</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_convertToNum><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.convertToNum" target=_parent class=ISymbol>convertToNum</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_convertToPath><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.convertToPath" target=_parent class=ISymbol>convertToPath</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_convertToXMLReferences><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.Utils.convertToXMLReferences" target=_parent class=ISymbol>convertToXMLReferences</a>, <span class=IParent>SvgCanvas.<wbr>Utils</span></div></div><div class=SRResult id=SR_copyElem><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.copyElem" target=_parent class=ISymbol>copyElem</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_createLayer><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.createLayer" target=_parent class=ISymbol>createLayer</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_cycleElement><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.cycleElement" target=_parent class=ISymbol>cycleElement</a>, <span class=IParent>SelectorManager</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults", "HTML");
+searchResults.Search();
+--></script></div><script language=JavaScript><!--
+if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/FunctionsD.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/FunctionsD.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/FunctionsD.html	(revision 29468)
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!--  Generated by Natural Docs, version 1.4 -->
+<!--  http://www.naturaldocs.org  -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_decode64><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.Utils.decode64" target=_parent class=ISymbol>decode64</a>, <span class=IParent>SvgCanvas.<wbr>Utils</span></div></div><div class=SRResult id=SR_deleteCurrentLayer><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.deleteCurrentLayer" target=_parent class=ISymbol>deleteCurrentLayer</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_deleteSelectedElements><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.deleteSelectedElements" target=_parent class=ISymbol>deleteSelectedElements</a>, <span class=IParent>SelectorManager</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults", "HTML");
+searchResults.Search();
+--></script></div><script language=JavaScript><!--
+if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/FunctionsG.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/FunctionsG.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/FunctionsG.html	(revision 29468)
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!--  Generated by Natural Docs, version 1.4 -->
+<!--  http://www.naturaldocs.org  -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_getBBox><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getBBox" target=_parent class=ISymbol>getBBox</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getBlur><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getBlur" target=_parent class=ISymbol>getBlur</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getBold><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getBold" target=_parent class=ISymbol>getBold</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getColor><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getColor" target=_parent class=ISymbol>getColor</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getContentElem><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getContentElem" target=_parent class=ISymbol>getContentElem</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getCurrentLayer><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getCurrentLayer" target=_parent class=ISymbol>getCurrentLayer</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getDocumentTitle><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getDocumentTitle" target=_parent class=ISymbol>getDocumentTitle</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getEditorNS><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getEditorNS" target=_parent class=ISymbol>getEditorNS</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getElem><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getElem" target=_parent class=ISymbol>getElem</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getFontFamily><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getFontFamily" target=_parent class=ISymbol>getFontFamily</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getFontSize><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getFontSize" target=_parent class=ISymbol>getFontSize</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getId><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getId" target=_parent class=ISymbol>getId</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getItalic><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getItalic" target=_parent class=ISymbol>getItalic</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getLayer><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getLayer" target=_parent class=ISymbol>getLayer</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getLayerOpacity><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getLayerOpacity" target=_parent class=ISymbol>getLayerOpacity</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getLayerVisibility><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getLayerVisibility" target=_parent class=ISymbol>getLayerVisibility</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getMatrix><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getMatrix" target=_parent class=ISymbol>getMatrix</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getMode><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getMode" target=_parent class=ISymbol>getMode</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getMouseTarget><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getMouseTarget" target=_parent class=ISymbol>getMouseTarget</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getNextId><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getNextId" target=_parent class=ISymbol>getNextId</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getNextRedoCommandText><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.undoMgr.getNextRedoCommandText" target=_parent class=ISymbol>getNextRedoCommandText</a>, <span class=IParent>SvgCanvas.<wbr>undoMgr</span></div></div><div class=SRResult id=SR_getNextUndoCommandText><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.undoMgr.getNextUndoCommandText" target=_parent class=ISymbol>getNextUndoCommandText</a>, <span class=IParent>SvgCanvas.<wbr>undoMgr</span></div></div><div class=SRResult id=SR_getNumLayers><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getNumLayers" target=_parent class=ISymbol>getNumLayers</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getOffset><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getOffset" target=_parent class=ISymbol>getOffset</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getOpacity><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getOpacity" target=_parent class=ISymbol>getOpacity</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getPathBBox><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getPathBBox" target=_parent class=ISymbol>getPathBBox</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getRedoStackSize><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.undoMgr.getRedoStackSize" target=_parent class=ISymbol>getRedoStackSize</a>, <span class=IParent>SvgCanvas.<wbr>undoMgr</span></div></div><div class=SRResult id=SR_getResolution><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getResolution" target=_parent class=ISymbol>getResolution</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getRootElem><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getRootElem" target=_parent class=ISymbol>getRootElem</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getRotationAngle><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getRotationAngle" target=_parent class=ISymbol>getRotationAngle</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getRubberBandBox><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.SelectorManager.getRubberBandBox" target=_parent class=ISymbol>getRubberBandBox</a>, <span class=IParent>SelectorManager.<wbr>SelectorManager</span></div></div><div class=SRResult id=SR_getSelectedElems><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getSelectedElems" target=_parent class=ISymbol>getSelectedElems</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getStrokedBBox><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getStrokedBBox" target=_parent class=ISymbol>getStrokedBBox</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getStrokeOpacity><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getStrokeOpacity" target=_parent class=ISymbol>getStrokeOpacity</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getStrokeWidth><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getStrokeWidth" target=_parent class=ISymbol>getStrokeWidth</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getSvgString><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getSvgString" target=_parent class=ISymbol>getSvgString</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getText><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getText" target=_parent class=ISymbol>getText</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getTransformList><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getTransformList" target=_parent class=ISymbol>getTransformList</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getUndoStackSize><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.undoMgr.getUndoStackSize" target=_parent class=ISymbol>getUndoStackSize</a>, <span class=IParent>SvgCanvas.<wbr>undoMgr</span></div></div><div class=SRResult id=SR_getUrlFromAttr><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getUrlFromAttr" target=_parent class=ISymbol>getUrlFromAttr</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getVersion><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getVersion" target=_parent class=ISymbol>getVersion</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getVisibleElements><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getVisibleElements" target=_parent class=ISymbol>getVisibleElements</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getZoom><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getZoom" target=_parent class=ISymbol>getZoom</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_groupSelectedElements><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.groupSelectedElements" target=_parent class=ISymbol>groupSelectedElements</a>, <span class=IParent>SelectorManager</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults", "HTML");
+searchResults.Search();
+--></script></div><script language=JavaScript><!--
+if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/FunctionsM.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/FunctionsM.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/FunctionsM.html	(revision 29468)
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!--  Generated by Natural Docs, version 1.4 -->
+<!--  http://www.naturaldocs.org  -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_matrixMultiply><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.matrixMultiply" target=_parent class=ISymbol>matrixMultiply</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_MoveElementCommand><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.MoveElementCommand" target=_parent class=ISymbol>MoveElementCommand</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_moveSelectedElements><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.moveSelectedElements" target=_parent class=ISymbol>moveSelectedElements</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_moveSelectedToLayer><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.moveSelectedToLayer" target=_parent class=ISymbol>moveSelectedToLayer</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_moveToBottomSelectedElement><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.moveToBottomSelectedElement" target=_parent class=ISymbol>moveToBottomSelectedElement</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_moveToTopSelectedElement><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.moveToTopSelectedElement" target=_parent class=ISymbol>moveToTopSelectedElement</a>, <span class=IParent>SelectorManager</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults", "HTML");
+searchResults.Search();
+--></script></div><script language=JavaScript><!--
+if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/FunctionsO.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/FunctionsO.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/FunctionsO.html	(revision 29468)
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!--  Generated by Natural Docs, version 1.4 -->
+<!--  http://www.naturaldocs.org  -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_open><div class=IEntry><a href="../files/svgcanvas-js.html#open" target=_parent class=ISymbol>open</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults", "HTML");
+searchResults.Search();
+--></script></div><script language=JavaScript><!--
+if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/FunctionsR.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/FunctionsR.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/FunctionsR.html	(revision 29468)
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!--  Generated by Natural Docs, version 1.4 -->
+<!--  http://www.naturaldocs.org  -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_rasterExport><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.rasterExport" target=_parent class=ISymbol>rasterExport</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_recalculateAllSelectedDimensions><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.recalculateAllSelectedDimensions" target=_parent class=ISymbol>recalculateAllSelectedDimensions</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_recalculateDimensions><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.recalculateDimensions" target=_parent class=ISymbol>recalculateDimensions</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_rectsIntersect><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.rectsIntersect" target=_parent class=ISymbol>rectsIntersect</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_redo><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.undoMgr.redo" target=_parent class=ISymbol>redo</a>, <span class=IParent>SvgCanvas.<wbr>undoMgr</span></div></div><div class=SRResult id=SR_releaseSelector><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.SelectorManager.releaseSelector" target=_parent class=ISymbol>releaseSelector</a>, <span class=IParent>SelectorManager.<wbr>SelectorManager</span></div></div><div class=SRResult id=SR_remapElement><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.remapElement" target=_parent class=ISymbol>remapElement</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_RemoveElementCommand><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.RemoveElementCommand" target=_parent class=ISymbol>RemoveElementCommand</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_removeFromSelection><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.removeFromSelection" target=_parent class=ISymbol>removeFromSelection</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_removeUnusedDefElems><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.removeUnusedDefElems" target=_parent class=ISymbol>removeUnusedDefElems</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_renameCurrentLayer><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.renameCurrentLayer" target=_parent class=ISymbol>renameCurrentLayer</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_requestSelector><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.SelectorManager.requestSelector" target=_parent class=ISymbol>requestSelector</a>, <span class=IParent>SelectorManager.<wbr>SelectorManager</span></div></div><div class=SRResult id=SR_reset><div class=IEntry><a href="../files/svgcanvas-js.html#Selector.Selector.reset" target=_parent class=ISymbol>reset</a>, <span class=IParent>Selector.<wbr>Selector</span></div></div><div class=SRResult id=SR_resetUndoStack><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.resetUndoStack" target=_parent class=ISymbol>resetUndoStack</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_resize><div class=IEntry><a href="../files/svgcanvas-js.html#Selector.Selector.resize" target=_parent class=ISymbol>resize</a>, <span class=IParent>Selector.<wbr>Selector</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults", "HTML");
+searchResults.Search();
+--></script></div><script language=JavaScript><!--
+if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/FunctionsS.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/FunctionsS.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/FunctionsS.html	(revision 29468)
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!--  Generated by Natural Docs, version 1.4 -->
+<!--  http://www.naturaldocs.org  -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_sanitizeSvg><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.sanitizeSvg" target=_parent class=ISymbol>sanitizeSvg</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_save><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.save" target=_parent class=ISymbol>save</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_selectAllInCurrentLayer><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.selectAllInCurrentLayer" target=_parent class=ISymbol>selectAllInCurrentLayer</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setBackground><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setBackground" target=_parent class=ISymbol>setBackground</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setBBoxZoom><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setBBoxZoom" target=_parent class=ISymbol>setBBoxZoom</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setBlur><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setBlur" target=_parent class=ISymbol>setBlur</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setBlurNoUndo><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setBlurNoUndo" target=_parent class=ISymbol>setBlurNoUndo</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setBlurOffsets><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setBlurOffsets" target=_parent class=ISymbol>setBlurOffsets</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setBold><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setBold" target=_parent class=ISymbol>setBold</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setColor><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setColor" target=_parent class=ISymbol>setColor</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setConfig><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setConfig" target=_parent class=ISymbol>setConfig</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setCurrentLayer><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setCurrentLayer" target=_parent class=ISymbol>setCurrentLayer</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setCurrentLayerPosition><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setCurrentLayerPosition" target=_parent class=ISymbol>setCurrentLayerPosition</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setDocumentTitle><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setDocumentTitle" target=_parent class=ISymbol>setDocumentTitle</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setFontFamily><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setFontFamily" target=_parent class=ISymbol>setFontFamily</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setFontSize><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setFontSize" target=_parent class=ISymbol>setFontSize</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setForeignString_lpaxmlString_comelt_rpa><div class=IEntry><a href="../files/extensions/ext-foreignobject-js.html#setForeignString(xmlString,elt)" target=_parent class=ISymbol>setForeignString(xmlString,elt)</a></div></div><div class=SRResult id=SR_setGradient><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setGradient" target=_parent class=ISymbol>setGradient</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setIdPrefix><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setIdPrefix" target=_parent class=ISymbol>setIdPrefix</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setImageURL><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setImageURL" target=_parent class=ISymbol>setImageURL</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setItalic><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setItalic" target=_parent class=ISymbol>setItalic</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setLayerOpacity><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setLayerOpacity" target=_parent class=ISymbol>setLayerOpacity</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setLayerVisibility><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setLayerVisibility" target=_parent class=ISymbol>setLayerVisibility</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setMode><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setMode" target=_parent class=ISymbol>setMode</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setOpacity><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setOpacity" target=_parent class=ISymbol>setOpacity</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setPaint><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setPaint" target=_parent class=ISymbol>setPaint</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setPaintOpacity><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setPaintOpacity" target=_parent class=ISymbol>setPaintOpacity</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setRectRadius><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setRectRadius" target=_parent class=ISymbol>setRectRadius</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setResolution><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setResolution" target=_parent class=ISymbol>setResolution</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setRotationAngle><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setRotationAngle" target=_parent class=ISymbol>setRotationAngle</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setSegType><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setSegType" target=_parent class=ISymbol>setSegType</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setStrokeAttr><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setStrokeAttr" target=_parent class=ISymbol>setStrokeAttr</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setStrokeWidth><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setStrokeWidth" target=_parent class=ISymbol>setStrokeWidth</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setSvgString><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setSvgString" target=_parent class=ISymbol>setSvgString</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setTextContent><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setTextContent" target=_parent class=ISymbol>setTextContent</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setUiStrings><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setUiStrings" target=_parent class=ISymbol>setUiStrings</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setUnitAttr><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.setUnitAttr" target=_parent class=ISymbol>setUnitAttr</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_setZoom><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setZoom" target=_parent class=ISymbol>setZoom</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_shortFloat><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.shortFloat" target=_parent class=ISymbol>shortFloat</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_showGrips><div class=IEntry><a href="../files/svgcanvas-js.html#Selector.Selector.showGrips" target=_parent class=ISymbol>showGrips</a>, <span class=IParent>Selector.<wbr>Selector</span></div></div><div class=SRResult id=SR_smoothControlPoints><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.smoothControlPoints" target=_parent class=ISymbol>smoothControlPoints</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_snapToAngle><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.snapToAngle" target=_parent class=ISymbol>snapToAngle</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_svgCanvasToString><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.svgCanvasToString" target=_parent class=ISymbol>svgCanvasToString</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_svgToString><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.svgToString" target=_parent class=ISymbol>svgToString</a>, <span class=IParent>SelectorManager</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults", "HTML");
+searchResults.Search();
+--></script></div><script language=JavaScript><!--
+if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/GeneralA.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/GeneralA.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/GeneralA.html	(revision 29468)
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!--  Generated by Natural Docs, version 1.4 -->
+<!--  http://www.naturaldocs.org  -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_addCommandToHistory><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.addCommandToHistory" target=_parent class=ISymbol>addCommandToHistory</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_addExtension><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.addExtension" target=_parent class=ISymbol>addExtension</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_Additional_spceditor_spctools><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.Additional_editor_tools" target=_parent class=ISymbol>Additional editor tools</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_addSubCommand><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.BatchCommand.addSubCommand" target=_parent class=ISymbol>addSubCommand</a>, <span class=IParent>SvgCanvas.<wbr>BatchCommand</span></div></div><div class=SRResult id=SR_addSvgElementFromJson><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.addSvgElementFromJson" target=_parent class=ISymbol>addSvgElementFromJson</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_addToSelection><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.addToSelection" target=_parent class=ISymbol>addToSelection</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_alignSelectedElements><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.alignSelectedElements" target=_parent class=ISymbol>alignSelectedElements</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_apply><div class=IEntry><a href="javascript:searchResults.Toggle('SR_apply')" class=ISymbol>apply</a><div class=ISubIndex><a href="../files/svgcanvas-js.html#SvgCanvas.BatchCommand.apply" target=_parent class=IParent>SvgCanvas.<wbr>BatchCommand</a><a href="../files/svgcanvas-js.html#SvgCanvas.ChangeElementCommand.apply" target=_parent class=IParent>SvgCanvas.<wbr>ChangeElementCommand</a><a href="../files/svgcanvas-js.html#SvgCanvas.InsertElementCommand.apply" target=_parent class=IParent>SvgCanvas.<wbr>InsertElementCommand</a><a href="../files/svgcanvas-js.html#SvgCanvas.RemoveElementCommand.apply" target=_parent class=IParent>SvgCanvas.<wbr>RemoveElementCommand</a></div></div></div><div class=SRResult id=SR_assignAttributes><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.assignAttributes" target=_parent class=ISymbol>assignAttributes</a>, <span class=IParent>SelectorManager</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults", "HTML");
+searchResults.Search();
+--></script></div><script language=JavaScript><!--
+if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/GeneralC.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/GeneralC.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/GeneralC.html	(revision 29468)
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!--  Generated by Natural Docs, version 1.4 -->
+<!--  http://www.naturaldocs.org  -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_ChangeElementCommand><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.ChangeElementCommand" target=_parent class=ISymbol>ChangeElementCommand</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_changeSelectedAttribute><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.changeSelectedAttribute" target=_parent class=ISymbol>changeSelectedAttribute</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_changeSelectedAttributeNoUndo><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.changeSelectedAttributeNoUndo" target=_parent class=ISymbol>changeSelectedAttributeNoUndo</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_cleanupElement><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.cleanupElement" target=_parent class=ISymbol>cleanupElement</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_clear><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.clear" target=_parent class=ISymbol>clear</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_clearSelection><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.clearSelection" target=_parent class=ISymbol>clearSelection</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_cloneSelectedElements><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.cloneSelectedElements" target=_parent class=ISymbol>cloneSelectedElements</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_convertToNum><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.convertToNum" target=_parent class=ISymbol>convertToNum</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_convertToPath><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.convertToPath" target=_parent class=ISymbol>convertToPath</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_convertToXMLReferences><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.Utils.convertToXMLReferences" target=_parent class=ISymbol>convertToXMLReferences</a>, <span class=IParent>SvgCanvas.<wbr>Utils</span></div></div><div class=SRResult id=SR_copyElem><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.copyElem" target=_parent class=ISymbol>copyElem</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_createLayer><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.createLayer" target=_parent class=ISymbol>createLayer</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_cycleElement><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.cycleElement" target=_parent class=ISymbol>cycleElement</a>, <span class=IParent>SelectorManager</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults", "HTML");
+searchResults.Search();
+--></script></div><script language=JavaScript><!--
+if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/GeneralD.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/GeneralD.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/GeneralD.html	(revision 29468)
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!--  Generated by Natural Docs, version 1.4 -->
+<!--  http://www.naturaldocs.org  -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_decode64><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.Utils.decode64" target=_parent class=ISymbol>decode64</a>, <span class=IParent>SvgCanvas.<wbr>Utils</span></div></div><div class=SRResult id=SR_deleteCurrentLayer><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.deleteCurrentLayer" target=_parent class=ISymbol>deleteCurrentLayer</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_deleteSelectedElements><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.deleteSelectedElements" target=_parent class=ISymbol>deleteSelectedElements</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_Document_spcfunctions><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.Document_functions" target=_parent class=ISymbol>Document functions</a>, <span class=IParent>SelectorManager</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults", "HTML");
+searchResults.Search();
+--></script></div><script language=JavaScript><!--
+if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/GeneralF.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/GeneralF.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/GeneralF.html	(revision 29468)
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!--  Generated by Natural Docs, version 1.4 -->
+<!--  http://www.naturaldocs.org  -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_ffClone><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.ffClone" target=_parent class=ISymbol>ffClone</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_findDefs><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.findDefs" target=_parent class=ISymbol>findDefs</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_findDuplicateGradient><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.findDuplicateGradient" target=_parent class=ISymbol>findDuplicateGradient</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_finishUndoableChange><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.finishUndoableChange" target=_parent class=ISymbol>finishUndoableChange</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_fromXml><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.Utils.fromXml" target=_parent class=ISymbol>fromXml</a>, <span class=IParent>SvgCanvas.<wbr>Utils</span></div></div><div class=SRResult id=SR_Functions><div class=IEntry><a href="../files/svgcanvas-js.html#Selector.Functions" target=_parent class=ISymbol>Functions</a>, <span class=IParent>Selector</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults", "HTML");
+searchResults.Search();
+--></script></div><script language=JavaScript><!--
+if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/GeneralG.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/GeneralG.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/GeneralG.html	(revision 29468)
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!--  Generated by Natural Docs, version 1.4 -->
+<!--  http://www.naturaldocs.org  -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_getBBox><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getBBox" target=_parent class=ISymbol>getBBox</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getBlur><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getBlur" target=_parent class=ISymbol>getBlur</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getBold><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getBold" target=_parent class=ISymbol>getBold</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getColor><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getColor" target=_parent class=ISymbol>getColor</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getContentElem><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getContentElem" target=_parent class=ISymbol>getContentElem</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getCurrentLayer><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getCurrentLayer" target=_parent class=ISymbol>getCurrentLayer</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getDocumentTitle><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getDocumentTitle" target=_parent class=ISymbol>getDocumentTitle</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getEditorNS><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getEditorNS" target=_parent class=ISymbol>getEditorNS</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getElem><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getElem" target=_parent class=ISymbol>getElem</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getFontFamily><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getFontFamily" target=_parent class=ISymbol>getFontFamily</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getFontSize><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getFontSize" target=_parent class=ISymbol>getFontSize</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getId><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getId" target=_parent class=ISymbol>getId</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getItalic><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getItalic" target=_parent class=ISymbol>getItalic</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getLayer><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getLayer" target=_parent class=ISymbol>getLayer</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getLayerOpacity><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getLayerOpacity" target=_parent class=ISymbol>getLayerOpacity</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getLayerVisibility><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getLayerVisibility" target=_parent class=ISymbol>getLayerVisibility</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getMatrix><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getMatrix" target=_parent class=ISymbol>getMatrix</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getMode><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getMode" target=_parent class=ISymbol>getMode</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getMouseTarget><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getMouseTarget" target=_parent class=ISymbol>getMouseTarget</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getNextId><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getNextId" target=_parent class=ISymbol>getNextId</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getNextRedoCommandText><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.undoMgr.getNextRedoCommandText" target=_parent class=ISymbol>getNextRedoCommandText</a>, <span class=IParent>SvgCanvas.<wbr>undoMgr</span></div></div><div class=SRResult id=SR_getNextUndoCommandText><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.undoMgr.getNextUndoCommandText" target=_parent class=ISymbol>getNextUndoCommandText</a>, <span class=IParent>SvgCanvas.<wbr>undoMgr</span></div></div><div class=SRResult id=SR_getNumLayers><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getNumLayers" target=_parent class=ISymbol>getNumLayers</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getOffset><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getOffset" target=_parent class=ISymbol>getOffset</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getOpacity><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getOpacity" target=_parent class=ISymbol>getOpacity</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getPathBBox><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getPathBBox" target=_parent class=ISymbol>getPathBBox</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getRedoStackSize><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.undoMgr.getRedoStackSize" target=_parent class=ISymbol>getRedoStackSize</a>, <span class=IParent>SvgCanvas.<wbr>undoMgr</span></div></div><div class=SRResult id=SR_getResolution><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getResolution" target=_parent class=ISymbol>getResolution</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getRootElem><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getRootElem" target=_parent class=ISymbol>getRootElem</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getRotationAngle><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getRotationAngle" target=_parent class=ISymbol>getRotationAngle</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getRubberBandBox><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.SelectorManager.getRubberBandBox" target=_parent class=ISymbol>getRubberBandBox</a>, <span class=IParent>SelectorManager.<wbr>SelectorManager</span></div></div><div class=SRResult id=SR_getSelectedElems><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getSelectedElems" target=_parent class=ISymbol>getSelectedElems</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getStrokedBBox><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getStrokedBBox" target=_parent class=ISymbol>getStrokedBBox</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getStrokeOpacity><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getStrokeOpacity" target=_parent class=ISymbol>getStrokeOpacity</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getStrokeWidth><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getStrokeWidth" target=_parent class=ISymbol>getStrokeWidth</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getSvgString><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getSvgString" target=_parent class=ISymbol>getSvgString</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getText><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getText" target=_parent class=ISymbol>getText</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getTransformList><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getTransformList" target=_parent class=ISymbol>getTransformList</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getUndoStackSize><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.undoMgr.getUndoStackSize" target=_parent class=ISymbol>getUndoStackSize</a>, <span class=IParent>SvgCanvas.<wbr>undoMgr</span></div></div><div class=SRResult id=SR_getUrlFromAttr><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getUrlFromAttr" target=_parent class=ISymbol>getUrlFromAttr</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getVersion><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getVersion" target=_parent class=ISymbol>getVersion</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getVisibleElements><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getVisibleElements" target=_parent class=ISymbol>getVisibleElements</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_getZoom><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.getZoom" target=_parent class=ISymbol>getZoom</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_groupSelectedElements><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.groupSelectedElements" target=_parent class=ISymbol>groupSelectedElements</a>, <span class=IParent>SelectorManager</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults", "HTML");
+searchResults.Search();
+--></script></div><script language=JavaScript><!--
+if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/GeneralL.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/GeneralL.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/GeneralL.html	(revision 29468)
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!--  Generated by Natural Docs, version 1.4 -->
+<!--  http://www.naturaldocs.org  -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_Layers><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.Layers" target=_parent class=ISymbol>Layers</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_linkControlPoints><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.linkControlPoints" target=_parent class=ISymbol>linkControlPoints</a>, <span class=IParent>SelectorManager</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults", "HTML");
+searchResults.Search();
+--></script></div><script language=JavaScript><!--
+if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/GeneralM.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/GeneralM.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/GeneralM.html	(revision 29468)
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!--  Generated by Natural Docs, version 1.4 -->
+<!--  http://www.naturaldocs.org  -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_matrixMultiply><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.matrixMultiply" target=_parent class=ISymbol>matrixMultiply</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_MoveElementCommand><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.MoveElementCommand" target=_parent class=ISymbol>MoveElementCommand</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_moveSelectedElements><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.moveSelectedElements" target=_parent class=ISymbol>moveSelectedElements</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_moveSelectedToLayer><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.moveSelectedToLayer" target=_parent class=ISymbol>moveSelectedToLayer</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_moveToBottomSelectedElement><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.moveToBottomSelectedElement" target=_parent class=ISymbol>moveToBottomSelectedElement</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_moveToTopSelectedElement><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.moveToTopSelectedElement" target=_parent class=ISymbol>moveToTopSelectedElement</a>, <span class=IParent>SelectorManager</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults", "HTML");
+searchResults.Search();
+--></script></div><script language=JavaScript><!--
+if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/GeneralO.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/GeneralO.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/GeneralO.html	(revision 29468)
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!--  Generated by Natural Docs, version 1.4 -->
+<!--  http://www.naturaldocs.org  -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_open><div class=IEntry><a href="../files/svgcanvas-js.html#open" target=_parent class=ISymbol>open</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults", "HTML");
+searchResults.Search();
+--></script></div><script language=JavaScript><!--
+if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/GeneralR.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/GeneralR.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/GeneralR.html	(revision 29468)
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!--  Generated by Natural Docs, version 1.4 -->
+<!--  http://www.naturaldocs.org  -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_rasterExport><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.rasterExport" target=_parent class=ISymbol>rasterExport</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_recalculateAllSelectedDimensions><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.recalculateAllSelectedDimensions" target=_parent class=ISymbol>recalculateAllSelectedDimensions</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_recalculateDimensions><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.recalculateDimensions" target=_parent class=ISymbol>recalculateDimensions</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_rectsIntersect><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.rectsIntersect" target=_parent class=ISymbol>rectsIntersect</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_redo><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.undoMgr.redo" target=_parent class=ISymbol>redo</a>, <span class=IParent>SvgCanvas.<wbr>undoMgr</span></div></div><div class=SRResult id=SR_releaseSelector><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.SelectorManager.releaseSelector" target=_parent class=ISymbol>releaseSelector</a>, <span class=IParent>SelectorManager.<wbr>SelectorManager</span></div></div><div class=SRResult id=SR_remapElement><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.remapElement" target=_parent class=ISymbol>remapElement</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_RemoveElementCommand><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.RemoveElementCommand" target=_parent class=ISymbol>RemoveElementCommand</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_removeFromSelection><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.removeFromSelection" target=_parent class=ISymbol>removeFromSelection</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_removeUnusedDefElems><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.removeUnusedDefElems" target=_parent class=ISymbol>removeUnusedDefElems</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_renameCurrentLayer><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.renameCurrentLayer" target=_parent class=ISymbol>renameCurrentLayer</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_requestSelector><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.SelectorManager.requestSelector" target=_parent class=ISymbol>requestSelector</a>, <span class=IParent>SelectorManager.<wbr>SelectorManager</span></div></div><div class=SRResult id=SR_reset><div class=IEntry><a href="../files/svgcanvas-js.html#Selector.Selector.reset" target=_parent class=ISymbol>reset</a>, <span class=IParent>Selector.<wbr>Selector</span></div></div><div class=SRResult id=SR_resetUndoStack><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.resetUndoStack" target=_parent class=ISymbol>resetUndoStack</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_resize><div class=IEntry><a href="../files/svgcanvas-js.html#Selector.Selector.resize" target=_parent class=ISymbol>resize</a>, <span class=IParent>Selector.<wbr>Selector</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults", "HTML");
+searchResults.Search();
+--></script></div><script language=JavaScript><!--
+if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/GeneralS.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/GeneralS.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/GeneralS.html	(revision 29468)
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!--  Generated by Natural Docs, version 1.4 -->
+<!--  http://www.naturaldocs.org  -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_sanitizeSvg><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.sanitizeSvg" target=_parent class=ISymbol>sanitizeSvg</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_save><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.save" target=_parent class=ISymbol>save</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_selectAllInCurrentLayer><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.selectAllInCurrentLayer" target=_parent class=ISymbol>selectAllInCurrentLayer</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_Selection><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.Selection" target=_parent class=ISymbol>Selection</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_Selector><div class=IEntry><a href="../files/svgcanvas-js.html#Selector" target=_parent class=ISymbol>Selector</a></div></div><div class=SRResult id=SR_SelectorManager><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager" target=_parent class=ISymbol>SelectorManager</a></div></div><div class=SRResult id=SR_Serialization><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.Serialization" target=_parent class=ISymbol>Serialization</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setBackground><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setBackground" target=_parent class=ISymbol>setBackground</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setBBoxZoom><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setBBoxZoom" target=_parent class=ISymbol>setBBoxZoom</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setBlur><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setBlur" target=_parent class=ISymbol>setBlur</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setBlurNoUndo><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setBlurNoUndo" target=_parent class=ISymbol>setBlurNoUndo</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setBlurOffsets><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setBlurOffsets" target=_parent class=ISymbol>setBlurOffsets</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setBold><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setBold" target=_parent class=ISymbol>setBold</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setColor><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setColor" target=_parent class=ISymbol>setColor</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setConfig><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setConfig" target=_parent class=ISymbol>setConfig</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setCurrentLayer><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setCurrentLayer" target=_parent class=ISymbol>setCurrentLayer</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setCurrentLayerPosition><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setCurrentLayerPosition" target=_parent class=ISymbol>setCurrentLayerPosition</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setDocumentTitle><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setDocumentTitle" target=_parent class=ISymbol>setDocumentTitle</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setFontFamily><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setFontFamily" target=_parent class=ISymbol>setFontFamily</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setFontSize><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setFontSize" target=_parent class=ISymbol>setFontSize</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setForeignString_lpaxmlString_comelt_rpa><div class=IEntry><a href="../files/extensions/ext-foreignobject-js.html#setForeignString(xmlString,elt)" target=_parent class=ISymbol>setForeignString(xmlString,elt)</a></div></div><div class=SRResult id=SR_setGradient><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setGradient" target=_parent class=ISymbol>setGradient</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setIdPrefix><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setIdPrefix" target=_parent class=ISymbol>setIdPrefix</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setImageURL><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setImageURL" target=_parent class=ISymbol>setImageURL</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setItalic><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setItalic" target=_parent class=ISymbol>setItalic</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setLayerOpacity><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setLayerOpacity" target=_parent class=ISymbol>setLayerOpacity</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setLayerVisibility><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setLayerVisibility" target=_parent class=ISymbol>setLayerVisibility</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setMode><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setMode" target=_parent class=ISymbol>setMode</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setOpacity><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setOpacity" target=_parent class=ISymbol>setOpacity</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setPaint><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setPaint" target=_parent class=ISymbol>setPaint</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setPaintOpacity><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setPaintOpacity" target=_parent class=ISymbol>setPaintOpacity</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setRectRadius><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setRectRadius" target=_parent class=ISymbol>setRectRadius</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setResolution><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setResolution" target=_parent class=ISymbol>setResolution</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setRotationAngle><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setRotationAngle" target=_parent class=ISymbol>setRotationAngle</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setSegType><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setSegType" target=_parent class=ISymbol>setSegType</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setStrokeAttr><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setStrokeAttr" target=_parent class=ISymbol>setStrokeAttr</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setStrokeWidth><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setStrokeWidth" target=_parent class=ISymbol>setStrokeWidth</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setSvgString><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setSvgString" target=_parent class=ISymbol>setSvgString</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setTextContent><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setTextContent" target=_parent class=ISymbol>setTextContent</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setUiStrings><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setUiStrings" target=_parent class=ISymbol>setUiStrings</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_setUnitAttr><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.setUnitAttr" target=_parent class=ISymbol>setUnitAttr</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_setZoom><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.setZoom" target=_parent class=ISymbol>setZoom</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_shortFloat><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.shortFloat" target=_parent class=ISymbol>shortFloat</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_showGrips><div class=IEntry><a href="../files/svgcanvas-js.html#Selector.Selector.showGrips" target=_parent class=ISymbol>showGrips</a>, <span class=IParent>Selector.<wbr>Selector</span></div></div><div class=SRResult id=SR_smoothControlPoints><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.smoothControlPoints" target=_parent class=ISymbol>smoothControlPoints</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_snapToAngle><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.snapToAngle" target=_parent class=ISymbol>snapToAngle</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_SvgCanvas><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas" target=_parent class=ISymbol>SvgCanvas</a></div></div><div class=SRResult id=SR_svgCanvasToString><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.svgCanvasToString" target=_parent class=ISymbol>svgCanvasToString</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_svgToString><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.svgToString" target=_parent class=ISymbol>svgToString</a>, <span class=IParent>SelectorManager</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults", "HTML");
+searchResults.Search();
+--></script></div><script language=JavaScript><!--
+if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/NoResults.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/NoResults.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/search/NoResults.html	(revision 29468)
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
+if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
+
+<!--  Generated by Natural Docs, version 1.4 -->
+<!--  http://www.naturaldocs.org  -->
+
+<!-- saved from url=(0026)http://www.naturaldocs.org -->
+
+
+
+
+<div id=Index><div class=SRStatus id=NoMatches>No Matches</div></div><script language=JavaScript><!--
+if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/styles/main.css
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/styles/main.css	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/docs/styles/main.css	(revision 29468)
@@ -0,0 +1,767 @@
+/*
+   IMPORTANT: If you're editing this file in the output directory of one of
+   your projects, your changes will be overwritten the next time you run
+   Natural Docs.  Instead, copy this file to your project directory, make your
+   changes, and you can use it with -s.  Even better would be to make a CSS
+   file in your project directory with only your changes, which you can then
+   use with -s [original style] [your changes].
+
+   On the other hand, if you're editing this file in the Natural Docs styles
+   directory, the changes will automatically be applied to all your projects
+   that use this style the next time Natural Docs is run on them.
+
+   This file is part of Natural Docs, which is Copyright (C) 2003-2008 Greg Valure
+   Natural Docs is licensed under the GPL
+*/
+
+body {
+    font: 10pt Verdana, Arial, sans-serif;
+    color: #000000;
+    margin: 0; padding: 0;
+    }
+
+.ContentPage,
+.IndexPage,
+.FramedMenuPage {
+    background-color: #E8E8E8;
+    }
+.FramedContentPage,
+.FramedIndexPage,
+.FramedSearchResultsPage,
+.PopupSearchResultsPage {
+    background-color: #FFFFFF;
+    }
+
+
+a:link,
+a:visited { color: #900000; text-decoration: none }
+a:hover { color: #900000; text-decoration: underline }
+a:active { color: #FF0000; text-decoration: underline }
+
+td {
+    vertical-align: top }
+
+img { border: 0;  }
+
+
+/*
+    Comment out this line to use web-style paragraphs (blank line between
+    paragraphs, no indent) instead of print-style paragraphs (no blank line,
+    indented.)
+*/
+p {
+    text-indent: 5ex; margin: 0 }
+
+
+/*  Opera doesn't break with just wbr, but will if you add this.  */
+.Opera wbr:after {
+	content: "\00200B";
+	}
+
+
+/*  Blockquotes are used as containers for things that may need to scroll.  */
+blockquote {
+    padding: 0;
+    margin: 0;
+    overflow: auto;
+    }
+
+
+.Firefox1 blockquote {
+    padding-bottom: .5em;
+    }
+
+/*  Turn off scrolling when printing.  */
+@media print {
+    blockquote {
+        overflow: visible;
+        }
+    .IE blockquote {
+        width: auto;
+        }
+    }
+
+
+
+#Menu {
+    font-size: 9pt;
+    padding: 10px 0 0 0;
+    }
+.ContentPage #Menu,
+.IndexPage #Menu {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 31ex;
+    overflow: hidden;
+    }
+.ContentPage .Firefox #Menu,
+.IndexPage .Firefox #Menu {
+    width: 27ex;
+    }
+
+
+    .MTitle {
+        font-size: 16pt; font-weight: bold; font-variant: small-caps;
+        text-align: center;
+        padding: 5px 10px 15px 10px;
+        border-bottom: 1px dotted #000000;
+        margin-bottom: 15px }
+
+    .MSubTitle {
+        font-size: 9pt; font-weight: normal; font-variant: normal;
+        margin-top: 1ex; margin-bottom: 5px }
+
+
+    .MEntry a:link,
+    .MEntry a:hover,
+    .MEntry a:visited { color: #606060; margin-right: 0 }
+    .MEntry a:active { color: #A00000; margin-right: 0 }
+
+
+    .MGroup {
+        font-variant: small-caps; font-weight: bold;
+        margin: 1em 0 1em 10px;
+        }
+
+    .MGroupContent {
+        font-variant: normal; font-weight: normal }
+
+    .MGroup a:link,
+    .MGroup a:hover,
+    .MGroup a:visited { color: #545454; margin-right: 10px }
+    .MGroup a:active { color: #A00000; margin-right: 10px }
+
+
+    .MFile,
+    .MText,
+    .MLink,
+    .MIndex {
+        padding: 1px 17px 2px 10px;
+        margin: .25em 0 .25em 0;
+        }
+
+    .MText {
+        font-size: 8pt; font-style: italic }
+
+    .MLink {
+        font-style: italic }
+
+    #MSelected {
+        color: #000000; background-color: #FFFFFF;
+        /*  Replace padding with border.  */
+        padding: 0 10px 0 10px;
+        border-width: 1px 2px 2px 0; border-style: solid; border-color: #000000;
+        margin-right: 5px;
+        }
+
+    /*  Close off the left side when its in a group.  */
+    .MGroup #MSelected {
+        padding-left: 9px; border-left-width: 1px }
+
+    /*  A treat for Mozilla users.  Blatantly non-standard.  Will be replaced with CSS 3 attributes when finalized/supported.  */
+    .Firefox #MSelected {
+        -moz-border-radius-topright: 10px;
+        -moz-border-radius-bottomright: 10px }
+    .Firefox .MGroup #MSelected {
+        -moz-border-radius-topleft: 10px;
+        -moz-border-radius-bottomleft: 10px }
+
+
+    #MSearchPanel {
+        padding: 0px 6px;
+        margin: .25em 0;
+        }
+
+
+    #MSearchField {
+        font: italic 9pt Verdana, sans-serif;
+        color: #606060;
+        background-color: #E8E8E8;
+        border: none;
+        padding: 2px 4px;
+        width: 100%;
+        }
+    /* Only Opera gets it right. */
+    .Firefox #MSearchField,
+    .IE #MSearchField,
+    .Safari #MSearchField {
+        width: 94%;
+        }
+    .Opera9 #MSearchField,
+    .Konqueror #MSearchField {
+        width: 97%;
+        }
+    .FramedMenuPage .Firefox #MSearchField,
+    .FramedMenuPage .Safari #MSearchField,
+    .FramedMenuPage .Konqueror #MSearchField {
+        width: 98%;
+        }
+
+    /* Firefox doesn't do this right in frames without #MSearchPanel added on.
+        It's presence doesn't hurt anything other browsers. */
+    #MSearchPanel.MSearchPanelInactive:hover #MSearchField {
+        background-color: #FFFFFF;
+        border: 1px solid #C0C0C0;
+        padding: 1px 3px;
+        }
+    .MSearchPanelActive #MSearchField {
+        background-color: #FFFFFF;
+        border: 1px solid #C0C0C0;
+        font-style: normal;
+        padding: 1px 3px;
+        }
+
+    #MSearchType {
+        visibility: hidden;
+        font: 8pt Verdana, sans-serif;
+        width: 98%;
+        padding: 0;
+        border: 1px solid #C0C0C0;
+        }
+    .MSearchPanelActive #MSearchType,
+    /*  As mentioned above, Firefox doesn't do this right in frames without #MSearchPanel added on. */
+    #MSearchPanel.MSearchPanelInactive:hover #MSearchType,
+    #MSearchType:focus {
+        visibility: visible;
+        color: #606060;
+        }
+    #MSearchType option#MSearchEverything {
+        font-weight: bold;
+        }
+
+    .Opera8 .MSearchPanelInactive:hover,
+    .Opera8 .MSearchPanelActive {
+        margin-left: -1px;
+        }
+
+
+    iframe#MSearchResults {
+        width: 60ex;
+        height: 15em;
+        }
+    #MSearchResultsWindow {
+        display: none;
+        position: absolute;
+        left: 0; top: 0;
+        border: 1px solid #000000;
+        background-color: #E8E8E8;
+        }
+    #MSearchResultsWindowClose {
+        font-weight: bold;
+        font-size: 8pt;
+        display: block;
+        padding: 2px 5px;
+        }
+    #MSearchResultsWindowClose:link,
+    #MSearchResultsWindowClose:visited {
+        color: #000000;
+        text-decoration: none;
+        }
+    #MSearchResultsWindowClose:active,
+    #MSearchResultsWindowClose:hover {
+        color: #800000;
+        text-decoration: none;
+        background-color: #F4F4F4;
+        }
+
+
+
+
+#Content {
+    padding-bottom: 15px;
+    }
+
+.ContentPage #Content {
+    border-width: 0 0 1px 1px;
+    border-style: solid;
+    border-color: #000000;
+    background-color: #FFFFFF;
+    font-size: 9pt;  /* To make 31ex match the menu's 31ex. */
+    margin-left: 31ex;
+    }
+.ContentPage .Firefox #Content {
+    margin-left: 27ex;
+    }
+
+
+
+    .CTopic {
+        font-size: 10pt;
+        margin-bottom: 3em;
+        }
+
+
+    .CTitle {
+        font-size: 12pt; font-weight: bold;
+        border-width: 0 0 1px 0; border-style: solid; border-color: #A0A0A0;
+        margin: 0 15px .5em 15px }
+
+    .CGroup .CTitle {
+        font-size: 16pt; font-variant: small-caps;
+        padding-left: 15px; padding-right: 15px;
+        border-width: 0 0 2px 0; border-color: #000000;
+        margin-left: 0; margin-right: 0 }
+
+    .CClass .CTitle,
+    .CInterface .CTitle,
+    .CDatabase .CTitle,
+    .CDatabaseTable .CTitle,
+    .CSection .CTitle {
+        font-size: 18pt;
+        color: #FFFFFF; background-color: #A0A0A0;
+        padding: 10px 15px 10px 15px;
+        border-width: 2px 0; border-color: #000000;
+        margin-left: 0; margin-right: 0 }
+
+    #MainTopic .CTitle {
+        font-size: 20pt;
+        color: #FFFFFF; background-color: #7070C0;
+        padding: 10px 15px 10px 15px;
+        border-width: 0 0 3px 0; border-color: #000000;
+        margin-left: 0; margin-right: 0 }
+
+    .CBody {
+        margin-left: 15px; margin-right: 15px }
+
+
+    .CToolTip {
+        position: absolute; visibility: hidden;
+        left: 0; top: 0;
+        background-color: #FFFFE0;
+        padding: 5px;
+        border-width: 1px 2px 2px 1px; border-style: solid; border-color: #000000;
+        font-size: 8pt;
+        }
+
+    .Opera .CToolTip {
+        max-width: 98%;
+        }
+
+    /*  Scrollbars would be useless.  */
+    .CToolTip blockquote {
+        overflow: hidden;
+        }
+    .IE6 .CToolTip blockquote {
+        overflow: visible;
+        }
+
+    .CHeading {
+        font-weight: bold; font-size: 10pt;
+        margin: 1.5em 0 .5em 0;
+        }
+
+    .CBody pre {
+        font: 10pt "Courier New", Courier, monospace;
+        margin: 1em 0;
+        }
+
+    .CBody ul {
+        /*  I don't know why CBody's margin doesn't apply, but it's consistent across browsers so whatever.
+             Reapply it here as padding.  */
+        padding-left: 15px; padding-right: 15px;
+        margin: .5em 5ex .5em 5ex;
+        }
+
+    .CDescriptionList {
+        margin: .5em 5ex 0 5ex }
+
+        .CDLEntry {
+            font: 10pt "Courier New", Courier, monospace; color: #808080;
+            padding-bottom: .25em;
+            white-space: nowrap }
+
+        .CDLDescription {
+            font-size: 10pt;  /*  For browsers that don't inherit correctly, like Opera 5.  */
+            padding-bottom: .5em; padding-left: 5ex }
+
+
+    .CTopic img {
+        text-align: center;
+        display: block;
+        margin: 1em auto;
+        }
+    .CImageCaption {
+        font-variant: small-caps;
+        font-size: 8pt;
+        color: #808080;
+        text-align: center;
+        position: relative;
+        top: 1em;
+        }
+
+    .CImageLink {
+        color: #808080;
+        font-style: italic;
+        }
+    a.CImageLink:link,
+    a.CImageLink:visited,
+    a.CImageLink:hover { color: #808080 }
+
+
+
+
+
+.Prototype {
+    font: 10pt "Courier New", Courier, monospace;
+    padding: 5px 3ex;
+    border-width: 1px; border-style: solid;
+    margin: 0 5ex 1.5em 5ex;
+    }
+
+    .Prototype td {
+        font-size: 10pt;
+        }
+
+    .PDefaultValue,
+    .PDefaultValuePrefix,
+    .PTypePrefix {
+        color: #8F8F8F;
+        }
+    .PTypePrefix {
+        text-align: right;
+        }
+    .PAfterParameters {
+        vertical-align: bottom;
+        }
+
+    .IE .Prototype table {
+        padding: 0;
+        }
+
+    .CFunction .Prototype {
+        background-color: #F4F4F4; border-color: #D0D0D0 }
+    .CProperty .Prototype {
+        background-color: #F4F4FF; border-color: #C0C0E8 }
+    .CVariable .Prototype {
+        background-color: #FFFFF0; border-color: #E0E0A0 }
+
+    .CClass .Prototype {
+        border-width: 1px 2px 2px 1px; border-style: solid; border-color: #A0A0A0;
+        background-color: #F4F4F4;
+        }
+    .CInterface .Prototype {
+        border-width: 1px 2px 2px 1px; border-style: solid; border-color: #A0A0D0;
+        background-color: #F4F4FF;
+        }
+
+    .CDatabaseIndex .Prototype,
+    .CConstant .Prototype {
+        background-color: #D0D0D0; border-color: #000000 }
+    .CType .Prototype,
+    .CEnumeration .Prototype {
+        background-color: #FAF0F0; border-color: #E0B0B0;
+        }
+    .CDatabaseTrigger .Prototype,
+    .CEvent .Prototype,
+    .CDelegate .Prototype {
+        background-color: #F0FCF0; border-color: #B8E4B8 }
+
+    .CToolTip .Prototype {
+        margin: 0 0 .5em 0;
+        white-space: nowrap;
+        }
+
+
+
+
+
+.Summary {
+    margin: 1.5em 5ex 0 5ex }
+
+    .STitle {
+        font-size: 12pt; font-weight: bold;
+        margin-bottom: .5em }
+
+
+    .SBorder {
+        background-color: #FFFFF0;
+        padding: 15px;
+        border: 1px solid #C0C060 }
+
+    /* In a frame IE 6 will make them too long unless you set the width to 100%.  Without frames it will be correct without a width
+        or slightly too long (but not enough to scroll) with a width.  This arbitrary weirdness simply astounds me.  IE 7 has the same
+        problem with frames, haven't tested it without.  */
+    .FramedContentPage .IE .SBorder {
+        width: 100% }
+
+    /*  A treat for Mozilla users.  Blatantly non-standard.  Will be replaced with CSS 3 attributes when finalized/supported.  */
+    .Firefox .SBorder {
+        -moz-border-radius: 20px }
+
+
+    .STable {
+        font-size: 9pt; width: 100% }
+
+    .SEntry {
+        width: 30% }
+    .SDescription {
+        width: 70% }
+
+
+    .SMarked {
+        background-color: #F8F8D8 }
+
+    .SDescription { padding-left: 2ex }
+    .SIndent1 .SEntry { padding-left: 1.5ex }   .SIndent1 .SDescription { padding-left: 3.5ex }
+    .SIndent2 .SEntry { padding-left: 3.0ex }   .SIndent2 .SDescription { padding-left: 5.0ex }
+    .SIndent3 .SEntry { padding-left: 4.5ex }   .SIndent3 .SDescription { padding-left: 6.5ex }
+    .SIndent4 .SEntry { padding-left: 6.0ex }   .SIndent4 .SDescription { padding-left: 8.0ex }
+    .SIndent5 .SEntry { padding-left: 7.5ex }   .SIndent5 .SDescription { padding-left: 9.5ex }
+
+    .SDescription a { color: #800000}
+    .SDescription a:active { color: #A00000 }
+
+    .SGroup td {
+        padding-top: .5em; padding-bottom: .25em }
+
+    .SGroup .SEntry {
+        font-weight: bold; font-variant: small-caps }
+
+    .SGroup .SEntry a { color: #800000 }
+    .SGroup .SEntry a:active { color: #F00000 }
+
+
+    .SMain td,
+    .SClass td,
+    .SDatabase td,
+    .SDatabaseTable td,
+    .SSection td {
+        font-size: 10pt;
+        padding-bottom: .25em }
+
+    .SClass td,
+    .SDatabase td,
+    .SDatabaseTable td,
+    .SSection td {
+        padding-top: 1em }
+
+    .SMain .SEntry,
+    .SClass .SEntry,
+    .SDatabase .SEntry,
+    .SDatabaseTable .SEntry,
+    .SSection .SEntry {
+        font-weight: bold;
+        }
+
+    .SMain .SEntry a,
+    .SClass .SEntry a,
+    .SDatabase .SEntry a,
+    .SDatabaseTable .SEntry a,
+    .SSection .SEntry a { color: #000000 }
+
+    .SMain .SEntry a:active,
+    .SClass .SEntry a:active,
+    .SDatabase .SEntry a:active,
+    .SDatabaseTable .SEntry a:active,
+    .SSection .SEntry a:active { color: #A00000 }
+
+
+
+
+
+.ClassHierarchy {
+    margin: 0 15px 1em 15px }
+
+    .CHEntry {
+        border-width: 1px 2px 2px 1px; border-style: solid; border-color: #A0A0A0;
+        margin-bottom: 3px;
+        padding: 2px 2ex;
+        font-size: 10pt;
+        background-color: #F4F4F4; color: #606060;
+        }
+
+    .Firefox .CHEntry {
+        -moz-border-radius: 4px;
+        }
+
+    .CHCurrent .CHEntry {
+        font-weight: bold;
+        border-color: #000000;
+        color: #000000;
+        }
+
+    .CHChildNote .CHEntry {
+        font-style: italic;
+        font-size: 8pt;
+        }
+
+    .CHIndent {
+        margin-left: 3ex;
+        }
+
+    .CHEntry a:link,
+    .CHEntry a:visited,
+    .CHEntry a:hover {
+        color: #606060;
+        }
+    .CHEntry a:active {
+        color: #800000;
+        }
+
+
+
+
+
+#Index {
+    background-color: #FFFFFF;
+    }
+
+/*  As opposed to .PopupSearchResultsPage #Index  */
+.IndexPage #Index,
+.FramedIndexPage #Index,
+.FramedSearchResultsPage #Index {
+    padding: 15px;
+    }
+
+.IndexPage #Index {
+    border-width: 0 0 1px 1px;
+    border-style: solid;
+    border-color: #000000;
+    font-size: 9pt;  /* To make 27ex match the menu's 27ex. */
+    margin-left: 27ex;
+    }
+
+
+    .IPageTitle {
+        font-size: 20pt; font-weight: bold;
+        color: #FFFFFF; background-color: #7070C0;
+        padding: 10px 15px 10px 15px;
+        border-width: 0 0 3px 0; border-color: #000000; border-style: solid;
+        margin: -15px -15px 0 -15px }
+
+    .FramedSearchResultsPage .IPageTitle {
+        margin-bottom: 15px;
+        }
+
+    .INavigationBar {
+        font-size: 10pt;
+        text-align: center;
+        background-color: #FFFFF0;
+        padding: 5px;
+        border-bottom: solid 1px black;
+        margin: 0 -15px 15px -15px;
+        }
+
+    .INavigationBar a {
+        font-weight: bold }
+
+    .IHeading {
+        font-size: 16pt; font-weight: bold;
+        padding: 2.5em 0 .5em 0;
+        text-align: center;
+        width: 3.5ex;
+        }
+    #IFirstHeading {
+        padding-top: 0;
+        }
+
+    .IEntry {
+        font-size: 10pt;
+        padding-left: 1ex;
+        }
+    .PopupSearchResultsPage .IEntry {
+        font-size: 8pt;
+        padding: 1px 5px;
+        }
+    .PopupSearchResultsPage .Opera9 .IEntry,
+    .FramedSearchResultsPage .Opera9 .IEntry {
+        text-align: left;
+        }
+    .FramedSearchResultsPage .IEntry {
+        padding: 0;
+        }
+
+    .ISubIndex {
+        padding-left: 3ex; padding-bottom: .5em }
+    .PopupSearchResultsPage .ISubIndex {
+        display: none;
+        }
+
+    /*  While it may cause some entries to look like links when they aren't, I found it's much easier to read the
+         index if everything's the same color.  */
+    .ISymbol {
+        font-weight: bold; color: #900000  }
+
+    .IndexPage .ISymbolPrefix,
+    .FramedIndexPage .ISymbolPrefix {
+        font-size: 10pt;
+        text-align: right;
+        color: #C47C7C;
+        background-color: #F8F8F8;
+        border-right: 3px solid #E0E0E0;
+        border-left: 1px solid #E0E0E0;
+        padding: 0 1px 0 2px;
+        }
+    .PopupSearchResultsPage .ISymbolPrefix,
+    .FramedSearchResultsPage .ISymbolPrefix {
+        color: #900000;
+        }
+    .PopupSearchResultsPage .ISymbolPrefix {
+        font-size: 8pt;
+        }
+
+    .IndexPage #IFirstSymbolPrefix,
+    .FramedIndexPage #IFirstSymbolPrefix {
+        border-top: 1px solid #E0E0E0;
+        }
+    .IndexPage #ILastSymbolPrefix,
+    .FramedIndexPage #ILastSymbolPrefix {
+        border-bottom: 1px solid #E0E0E0;
+        }
+    .IndexPage #IOnlySymbolPrefix,
+    .FramedIndexPage #IOnlySymbolPrefix {
+        border-top: 1px solid #E0E0E0;
+        border-bottom: 1px solid #E0E0E0;
+        }
+
+    a.IParent,
+    a.IFile {
+        display: block;
+        }
+
+    .PopupSearchResultsPage .SRStatus {
+        padding: 2px 5px;
+        font-size: 8pt;
+        font-style: italic;
+        }
+    .FramedSearchResultsPage .SRStatus {
+        font-size: 10pt;
+        font-style: italic;
+        }
+
+    .SRResult {
+        display: none;
+        }
+
+
+
+#Footer {
+    font-size: 8pt;
+    color: #989898;
+    text-align: right;
+    }
+
+#Footer p {
+    text-indent: 0;
+    margin-bottom: .5em;
+    }
+
+.ContentPage #Footer,
+.IndexPage #Footer {
+    text-align: right;
+    margin: 2px;
+    }
+
+.FramedMenuPage #Footer {
+    text-align: center;
+    margin: 5em 10px 10px 10px;
+    padding-top: 1em;
+    border-top: 1px solid #C8C8C8;
+    }
+
+    #Footer a:link,
+    #Footer a:hover,
+    #Footer a:visited { color: #989898 }
+    #Footer a:active { color: #A00000 }
+
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/browser-not-supported.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/browser-not-supported.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/browser-not-supported.html	(revision 29468)
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
+<meta http-equiv="X-UA-Compatible" content="chrome=1"/>
+<link rel="icon" type="image/png" href="images/logo.png"/>
+<link rel="stylesheet" href="svg-editor.css" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<title>Browser does not support SVG | SVG-edit</title>
+</head>
+<body>
+
+<div id="browser-not-supported">
+<img style="float:left;padding:10px;" src="images/logo.png" width="48" height="48" alt="SVG-edit logo" /><br />
+<p>Sorry, but your browser does not support SVG. Below is a list of alternate browsers and versions that support SVG and SVG-edit (from <a href="http://caniuse.com/#cats=SVG">caniuse.com</a>).</p>
+<p>Try the latest version of <a href="http://www.getfirefox.com">Firefox</a>, <a href="http://www.google.com/chrome/">Google Chrome</a>, <a href="http://www.apple.com/safari/download/">Safari</a>, <a href="http://www.opera.com/download/">Opera</a> or <a href="http://windows.microsoft.com/ie9">Internet Explorer<a/>.</p>
+<p>If you are unable to install one of these and must use an old version of Internet Explorer, you can install the <a href="http://code.google.com/chrome/chromeframe/">Google Chrome Frame plugin</a>.</p>
+
+<script type="text/javascript">
+var viewportHeight =(window.innerHeight ? window.innerHeight : $(window).height()) - 140;
+document.write('<iframe width="100%" height="'+viewportHeight+'" src="http://caniuse.com/#cats=SVG"></iframe>');
+</script>
+
+</div>
+
+</body>
+</html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/css/font-files/Arvo-Regular-webfont.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/css/font-files/Arvo-Regular-webfont.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/css/font-files/Arvo-Regular-webfont.svg	(revision 29468)
@@ -0,0 +1,145 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Copyright 2010 Anton Koovit
+Designer    : Anton Koovit
+Foundry     : Anton Koovit
+Foundry URL : httpwwwkorkorkcom
+</metadata>
+<defs>
+<font id="ArvoRegular" horiz-adv-x="721" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="448" />
+<glyph unicode=" " horiz-adv-x="448" d="M0 0z" />
+<glyph unicode="!" horiz-adv-x="682" d="M211 121q0 26 10.5 49.5t28 41t41.5 28t51 10.5q26 0 49.5 -10.5t41 -28t28 -41t10.5 -49.5q0 -27 -10.5 -51t-28 -42.5t-41 -29t-49.5 -10.5q-27 0 -51 10.5t-41.5 29t-28 42.5t-10.5 51zM211 1577h260l-41 -1167h-178z" />
+<glyph unicode="&#x22;" horiz-adv-x="651" d="M41 1577h228l-18 -518h-169zM405 1577h230l-47 -518h-169z" />
+<glyph unicode="#" horiz-adv-x="1423" d="M20 389l41 195h239l82 415h-253l41 199h252l63 318h191l-62 -318h351l63 318h191l-62 -318h225l-39 -199h-225l-81 -415h239l-37 -195h-240l-75 -389h-193l76 389h-351l-75 -389h-197l77 389h-241zM494 584h351l81 415h-351z" />
+<glyph unicode="$" horiz-adv-x="1210" d="M150 303v172h251v-11l2 1q0 -81 56 -123.5t166 -42.5q100 0 158.5 39t58.5 111q0 37 -19.5 62t-49 41.5t-65.5 26.5t-69 19l-176 47q-57 15 -105 39.5t-82.5 60.5t-53.5 85t-19 114q0 58 21 107.5t61 87.5t98.5 63t132.5 36v341h197v-342q85 -15 147 -54t100 -93h101 v-172h-209l-23 -3v3h-2v22q-10 65 -65 105t-146 40q-109 0 -166 -35.5t-57 -97.5q0 -42 18.5 -67t46.5 -40.5t61.5 -24t64.5 -17.5l174 -53q66 -20 118.5 -45.5t88.5 -59.5t55.5 -79.5t19.5 -106.5q0 -62 -23.5 -115.5t-66.5 -95.5t-103.5 -71t-133.5 -41v-322h-197v322 q-99 16 -156.5 61t-90.5 106h-119z" />
+<glyph unicode="%" horiz-adv-x="1730" d="M75 1167q0 67 25 127.5t70.5 106t108.5 72t138 26.5t138 -26.5t108 -72t70.5 -106t25.5 -127.5q0 -68 -24.5 -128t-69.5 -106t-108 -72.5t-140 -26.5q-78 0 -141 26.5t-107.5 72.5t-69 106t-24.5 128zM212 -16l1040 1556h195l-1041 -1556h-194zM244 1167 q0 -35 13.5 -66.5t37 -55t55 -37t67.5 -13.5q35 0 66 13.5t54 36.5t36.5 54.5t13.5 67.5t-13.5 67t-36.5 53.5t-54 35t-66 12.5q-36 0 -67.5 -12.5t-55 -35t-37 -53.5t-13.5 -67zM941 323q0 67 25 127t70.5 105.5t108.5 72.5t138 27t138 -27t108.5 -72.5t70.5 -105.5 t25 -127q0 -68 -24.5 -128.5t-69 -106t-107.5 -72.5t-141 -27t-141 27t-107.5 72.5t-69 106t-24.5 128.5zM1111 323q0 -35 13.5 -66.5t37 -55t55 -37t66.5 -13.5t66 13.5t54 36.5t36.5 54.5t13.5 67.5t-13.5 66.5t-36.5 53t-54 35.5t-66 13t-66.5 -13t-55 -35.5t-37 -53 t-13.5 -66.5z" />
+<glyph unicode="&#x26;" horiz-adv-x="1468" d="M143 426q0 61 18.5 118.5t51 107.5t76 90t135.5 87l-66 64q-26 24 -50.5 55t-43 67t-30 75t-11.5 77q0 80 31 149t84.5 120t125.5 80.5t154 29.5q87 0 161.5 -31t128.5 -83t85 -121t31 -144q0 -60 -12 -105.5t-34 -81.5t-52.5 -65.5t-65 -54.5t-70.5 -45.5t-74 -39.5 l306 -285q32 73 51.5 144.5t30.5 129.5h188q-17 -94 -52 -195t-89 -198l276 -256l-139 -121l-236 228q-42 -52 -91 -95t-104.5 -74.5t-118 -49t-132.5 -17.5q-97 0 -181.5 34t-147 93t-98.5 139.5t-36 173.5zM322 430q0 -58 22.5 -107.5t62 -85.5t93 -56.5t114.5 -20.5 q52 0 98 13t86 36.5t73.5 56t62.5 70.5l-380 367l-81 -37q-34 -14 -61.5 -38.5t-47.5 -56t-31 -68t-11 -73.5zM397 1169q0 -42 20.5 -88.5t74.5 -97.5l89 -83q59 26 111 56t92 70q26 28 44 64.5t18 76.5q0 42 -18.5 81t-49.5 69t-72.5 47.5t-87.5 17.5q-50 0 -90.5 -16.5 t-69.5 -45.5t-45 -67.5t-16 -83.5z" />
+<glyph unicode="'" horiz-adv-x="340" d="M37 1059v518l227 16l-48 -534h-179z" />
+<glyph unicode="(" d="M141 590q0 142 27 280.5t77.5 269.5t122.5 254.5t162 235.5l138 -110q-79 -100 -140.5 -211t-103.5 -229t-64 -241.5t-22 -248.5t22 -248.5t64 -242t103.5 -229t140.5 -210.5l-138 -111q-90 112 -162 235.5t-122.5 255t-77.5 270t-27 280.5z" />
+<glyph unicode=")" d="M53 -340q79 100 140.5 210.5t103.5 229t64 242t22 248.5t-22 248.5t-64 241.5t-103.5 229t-140.5 211l137 110q90 -112 162 -235.5t123 -254.5t78 -269.5t27 -280.5t-27 -280.5t-78 -270t-123 -255t-162 -235.5z" />
+<glyph unicode="*" horiz-adv-x="836" d="M59 1257l39 125l252 -82v246h133v-251l248 81l37 -119l-249 -80l157 -214l-109 -72l-149 206l-148 -204l-108 70l155 212z" />
+<glyph unicode="+" horiz-adv-x="1311" d="M143 608v183h420v419h182v-419h422v-183h-422v-422h-182v422h-420z" />
+<glyph unicode="," horiz-adv-x="569" d="M20 -287l185 570l219 -86l-260 -537z" />
+<glyph unicode="-" horiz-adv-x="737" d="M94 496v172h551v-172h-551z" />
+<glyph unicode="." horiz-adv-x="456" d="M96 121q0 26 10.5 49.5t28.5 41t41.5 28t50.5 10.5q26 0 49.5 -10.5t41 -28t28 -41t10.5 -49.5q0 -27 -10.5 -51t-28 -42.5t-41 -29t-49.5 -10.5q-27 0 -50.5 10.5t-41.5 29t-28.5 42.5t-10.5 51z" />
+<glyph unicode="/" horiz-adv-x="848" d="M37 -29l600 1598h174l-600 -1598h-174z" />
+<glyph unicode="0" horiz-adv-x="1330" d="M88 756q0 173 38 323.5t102 241.5t161.5 155t267.5 64q161 0 268 -51t176.5 -156.5t97.5 -254.5t28 -316q0 -163 -28 -305t-94.5 -247.5t-176.5 -166.5t-273 -61q-162 0 -271 60t-174.5 165t-93.5 246t-28 303zM293 762q0 -124 12.5 -233.5t51 -191.5t110 -129.5 t188.5 -47.5t188.5 47.5t108 129.5t54.5 191.5t18 233.5q0 119 -14 228.5t-54 193.5t-112 134t-187 50q-119 0 -188 -50t-103 -120.5t-53.5 -193.5t-19.5 -242z" />
+<glyph unicode="1" horiz-adv-x="858" d="M82 1114v209l422 236h80v-1387h149v-172h-491v172h147v1109z" />
+<glyph unicode="2" horiz-adv-x="1100" d="M86 1104q1 95 37 175.5t96.5 139t140.5 91t168 32.5q102 0 185 -32.5t142 -89.5t91.5 -135t32.5 -169q0 -36 -8.5 -76.5t-29 -87t-54 -99.5t-84.5 -114l-473 -563h647v-176h-889v147l533 644q27 32 56.5 69t55 78t42 85.5t16.5 92.5q0 50 -20 94t-55 77t-83.5 52 t-106.5 19q-52 0 -98.5 -16.5t-81.5 -48.5t-56.5 -79.5t-23.5 -109.5h-180z" />
+<glyph unicode="3" horiz-adv-x="1110" d="M41 365h192q29 -93 103.5 -146t189.5 -53q52 0 101.5 21t87.5 58.5t61 88t23 110.5q0 63 -23 114t-62 86.5t-90.5 55t-109.5 19.5h-86v151h70q66 0 118.5 19.5t88.5 53.5t55.5 79.5t19.5 97.5q0 39 -16.5 83.5t-51 82t-87 62t-123.5 24.5q-59 0 -107.5 -20.5t-96.5 -76.5 t-52 -124h-190q5 87 43.5 157t97.5 123t138 84t165 31q107 0 194 -35.5t148.5 -94t95 -133.5t33.5 -153q0 -48 -12 -96t-37.5 -91.5t-65.5 -80.5t-97 -65q47 -18 88.5 -50.5t72.5 -77.5t49 -102t18 -125q0 -98 -38 -181.5t-103 -144.5t-152.5 -95.5t-187.5 -34.5 q-92 0 -182.5 32.5t-153.5 92.5t-93 125t-36 129z" />
+<glyph unicode="4" horiz-adv-x="1251" d="M90 438l2 158l539 920h213l-513 -906h388v250l196 14v-264h226v-172h-226v-266h150v-172h-492v172h146v266h-629z" />
+<glyph unicode="5" horiz-adv-x="1139" d="M74 289l164 82q16 -51 47 -94.5t73 -75t93 -49t108 -17.5q72 0 133.5 26.5t107 72.5t71.5 107.5t26 131.5q0 71 -26 131.5t-72 105t-107.5 70t-132.5 25.5q-80 0 -147.5 -28.5t-112.5 -76.5l-147 23v793h854v-166h-689v-456q56 38 115 57.5t135 19.5q112 0 206 -40 t161.5 -108t105 -158.5t37.5 -191.5q0 -102 -37 -193.5t-105 -160.5t-163.5 -109.5t-212.5 -40.5q-89 0 -166 23.5t-139 66t-107.5 101.5t-72.5 129z" />
+<glyph unicode="6" horiz-adv-x="1249" d="M94 488q0 88 33.5 174t83.5 180l371 674h233l-340 -567q61 26 110.5 30t88.5 4q92 0 178 -34.5t152.5 -97t106.5 -149t40 -190.5q0 -127 -43 -226t-116 -167t-169.5 -103.5t-204.5 -35.5q-102 0 -196.5 37t-167.5 103.5t-116.5 160t-43.5 207.5zM281 486q0 -78 26 -140 t72 -104.5t108.5 -65t135.5 -22.5q68 0 130 24t109 68t75 105t28 135q0 82 -30 144.5t-80.5 104.5t-117.5 63t-141 21q-72 0 -122.5 -22.5t-95.5 -63t-71 -103t-26 -144.5z" />
+<glyph unicode="7" horiz-adv-x="1077" d="M41 1206v310h995v-150q-66 -130 -138 -275.5t-142.5 -298.5t-136.5 -310t-120 -310h126v-172h-443v172h117q54 154 119 312.5t132 308.5t132 285.5t119 244.5h-568v-117h-192z" />
+<glyph unicode="8" horiz-adv-x="1276" d="M139 442q0 61 16.5 118.5t47 107t73 91t94.5 71.5q-76 55 -120.5 137.5t-44.5 179.5q0 82 33 154.5t90.5 126.5t135.5 85t167 31q86 0 162.5 -31t134.5 -85t91.5 -126.5t33.5 -154.5q0 -98 -46 -181t-123 -137q51 -30 93 -71.5t72 -91t46.5 -106.5t16.5 -118 q0 -95 -38.5 -178t-104.5 -145.5t-154 -98.5t-188 -36q-101 0 -190 36t-155 98.5t-104.5 145.5t-38.5 178zM322 446q0 -59 24 -111.5t65.5 -91.5t97 -62t118.5 -23q62 0 117 23t96.5 62t65.5 91.5t24 111.5q0 58 -24 110t-65.5 91t-96.5 61.5t-117 22.5q-63 0 -118.5 -22.5 t-97 -61.5t-65.5 -91t-24 -110zM377 1143q0 -50 19 -93.5t53 -76t80.5 -51.5t101.5 -19q51 0 96 19t79.5 51.5t54.5 76t20 93.5q0 49 -20 92.5t-54.5 76t-79.5 51.5t-96 19q-55 0 -101.5 -19t-80.5 -51.5t-53 -76t-19 -92.5z" />
+<glyph unicode="9" horiz-adv-x="1270" d="M103 1009q0 127 43 226t116 167t169.5 103.5t204.5 35.5t201.5 -36t166.5 -103.5t114.5 -161t41.5 -207.5q0 -88 -33.5 -174t-83.5 -180l-380 -679h-233l349 572q-50 -20 -91 -27t-88 -7q-88 0 -182.5 34.5t-161 97t-110 154t-43.5 185.5zM289 1035q0 -82 30 -144.5 t80.5 -104.5t113 -63t125.5 -21q92 0 142.5 22.5t95.5 63t71 103t26 144.5q0 78 -26 140t-72 104.5t-108.5 65t-135.5 22.5q-68 0 -130 -24t-109 -68t-75 -105t-28 -135z" />
+<glyph unicode=":" horiz-adv-x="524" d="M96 121q0 26 10.5 49.5t28.5 41t41.5 28t50.5 10.5q26 0 49.5 -10.5t41 -28t28 -41t10.5 -49.5q0 -27 -10.5 -51t-28 -42.5t-41 -29t-49.5 -10.5q-27 0 -50.5 10.5t-41.5 29t-28.5 42.5t-10.5 51zM96 907q0 26 10.5 49.5t28.5 41t41.5 28t50.5 10.5q26 0 49.5 -10.5 t41 -28t28 -41t10.5 -49.5q0 -27 -10.5 -51t-28 -42t-41 -29t-49.5 -11q-27 0 -50.5 11t-41.5 29t-28.5 42t-10.5 51z" />
+<glyph unicode=";" horiz-adv-x="524" d="M-20 -287l184 570l219 -86l-260 -537zM96 907q0 26 10.5 49.5t28.5 41t41.5 28t50.5 10.5q26 0 49.5 -10.5t41 -28t28 -41t10.5 -49.5q0 -27 -10.5 -51t-28 -42t-41 -29t-49.5 -11q-27 0 -50.5 11t-41.5 29t-28.5 42t-10.5 51z" />
+<glyph unicode="&#x3c;" horiz-adv-x="1001" d="M10 605v156l843 423v-185l-678 -315l678 -315v-185z" />
+<glyph unicode="=" horiz-adv-x="922" d="M86 305v141h750v-141h-750zM86 643v141h750v-141h-750z" />
+<glyph unicode="&#x3e;" horiz-adv-x="1147" d="M164 184v185l678 315l-678 315v185l843 -423v-156z" />
+<glyph unicode="?" horiz-adv-x="1065" d="M121 1137q5 84 40.5 159t95.5 131.5t142 90t181 33.5q100 0 177.5 -33t130.5 -88t80 -127.5t27 -151.5q0 -102 -52 -188t-155 -158q-47 -33 -107.5 -85t-86 -128.5t-29.5 -128t-4 -127.5h-180q0 104 7.5 176.5t28.5 133t58 105.5t96 95q53 45 96.5 78t74.5 64.5t48 68 t17 88.5q0 45 -18 87t-48.5 74.5t-72 52.5t-88.5 20q-81 0 -135 -28t-87 -67.5t-47 -83.5t-14 -75zM338 121q0 26 10.5 49.5t28 41t41.5 28t51 10.5q26 0 49.5 -10.5t41 -28t28 -41t10.5 -49.5q0 -27 -10.5 -51t-28 -42.5t-41 -29t-49.5 -10.5q-27 0 -51 10.5t-41.5 29 t-28 42.5t-10.5 51z" />
+<glyph unicode="@" horiz-adv-x="2310" d="M145 494q0 137 35.5 264.5t100.5 238.5t156.5 202t202.5 156t239 100.5t266 35.5q140 0 268.5 -34.5t239.5 -96.5t202 -149t155.5 -192t100 -224.5t35.5 -247.5q0 -68 -13 -137t-39 -132t-63.5 -118t-87 -95.5t-109.5 -64t-130 -23.5q-92 0 -154 40t-97 103 q-63 -52 -142 -81t-170 -29q-105 0 -192.5 36.5t-151.5 100.5t-99.5 149t-35.5 183q0 97 37 182.5t101.5 149.5t152 101.5t188.5 37.5q73 0 140 -20t124 -57v83h184v-663q0 -61 17.5 -92t41.5 -45.5t61 -14.5q74 0 123 40.5t78 97.5t40.5 117.5t11.5 150.5q0 102 -29 197.5 t-81.5 180t-126.5 155t-165 121t-196 78.5t-219 28q-113 0 -217.5 -29t-195 -82t-165 -127t-127 -164.5t-81.5 -194.5t-29 -216q0 -113 29 -217.5t81.5 -195.5t127 -165t165 -127t195 -82t217.5 -29q115 0 222 30.5t200 86.5l94 -157q-113 -69 -243.5 -106.5t-272.5 -37.5 q-138 0 -266 35.5t-239 100.5t-202.5 156.5t-156.5 202.5t-100.5 239t-35.5 266zM846 479q0 -59 21 -110.5t59.5 -90t93 -61t121.5 -22.5q94 0 162 43.5t102 112.5v253q-17 35 -43.5 65t-60.5 51.5t-74.5 33.5t-85.5 12q-64 0 -118 -23t-93.5 -62t-61.5 -91.5t-22 -110.5z " />
+<glyph unicode="A" horiz-adv-x="1542" d="M10 0v172h132l472 1344h295l471 -1344h152v-172h-492v172h126l-120 344h-583l-117 -344h156v-172h-492zM520 682h468l-236 678z" />
+<glyph unicode="B" horiz-adv-x="1352" d="M143 0v172h144v1171h-144v175l682 -2q92 0 173 -34.5t141 -94t94.5 -140.5t34.5 -174q0 -97 -54 -177t-154 -128q49 -26 89 -60.5t68 -75.5t43.5 -87t15.5 -94q0 -95 -34.5 -177t-94.5 -143t-140.5 -96t-172.5 -35h-691zM483 172h353q48 0 89 24t72 62.5t48.5 87.5 t17.5 100q0 44 -18 85t-48.5 73t-72 51t-88.5 19h-353v-502zM483 848h344q48 0 89.5 19t72 51t48.5 74t18 87q0 49 -18 96.5t-49 84.5t-72.5 60t-88.5 23h-344v-495z" />
+<glyph unicode="C" horiz-adv-x="1509" d="M72 760q0 162 53.5 306t150 250.5t230 168t289.5 61.5q139 0 240 -39.5t171.5 -94t121.5 -118.5h106v-178h-215q-67 114 -177.5 179t-246.5 65q-116 0 -212 -49t-164.5 -131.5t-106.5 -191t-38 -228.5q0 -142 42 -251.5t109.5 -182t160.5 -121t209 -48.5q158 0 275 76.5 t200 251.5l176 -83q-38 -108 -129 -208.5t-224.5 -162t-295.5 -61.5q-155 0 -285 58.5t-231.5 166.5t-155 256t-53.5 309z" />
+<glyph unicode="D" horiz-adv-x="1507" d="M143 0v172h144v1171h-144v173h564q104 0 198 -27t175 -76t147 -117.5t112.5 -152.5t71.5 -180.5t25 -200.5q0 -106 -25 -203t-71.5 -182t-112.5 -154.5t-147 -119t-175 -76.5t-198 -27h-564zM483 172h236q105 0 197.5 46t161.5 125.5t109 187t40 231.5q0 122 -40 228 t-109 184.5t-161.5 123.5t-197.5 45h-236v-1171z" />
+<glyph unicode="E" horiz-adv-x="1286" d="M143 0v172h144v1171h-144v173h1086v-429h-205v256h-541v-485h455v-172h-455v-514h541v256h205v-428h-1086z" />
+<glyph unicode="F" horiz-adv-x="1243" d="M143 0v172h144v1171h-144v173h1086v-429h-205v256h-541v-487h521v-168h-521v-516h152v-172h-492z" />
+<glyph unicode="G" horiz-adv-x="1683" d="M72 760q0 162 53.5 306t150 251t230 168t289.5 61q144 0 247.5 -41t177 -99.5t117.5 -111.5h97v-178h-215q-67 114 -177 180q-108 64 -240 64h-8q-115 0 -211 -49t-164.5 -132t-106.5 -191t-38 -228q0 -133 42 -247t107 -185t160.5 -117.5t211.5 -46.5q192 0 315 93.5 t172 291.5h-424v172h641v-727h-186v304q-38 -79 -95 -137.5t-127 -96.5t-149.5 -57t-161.5 -19q-148 0 -273 49.5t-226.5 157.5t-155 256t-53.5 309z" />
+<glyph unicode="H" horiz-adv-x="1843" d="M143 0v172h144v1172h-144v172h492v-172h-152v-459h877v459h-152v172h492v-172h-144v-1172h144v-172h-492v172h152v545h-877v-545h152v-172h-492z" />
+<glyph unicode="I" horiz-adv-x="770" d="M143 0v172h144v1171h-144v173h484v-173h-144v-1171h144v-172h-484z" />
+<glyph unicode="J" horiz-adv-x="682" d="M102 -223q59 90 106 172q20 35 39 71.5t34 70.5t24.5 63.5t9.5 50.5v1138h-165v173h491v-173h-127v-1171q0 -22 -10.5 -51.5t-27 -62.5t-38.5 -67.5t-44 -67.5q-53 -77 -120 -161z" />
+<glyph unicode="K" horiz-adv-x="1567" d="M143 0v172h144v1171h-142v173h492v-173h-154v-1171h152v-172h-492zM485 774l662 569v173h348v-173h-119l-664 -559l621 -612h162v-172h-408v172z" />
+<glyph unicode="L" horiz-adv-x="1296" d="M143 0v172h144v1171h-144v173h492v-173h-152v-1171h523q16 0 32 7.5t29 19.5t21 27.5t8 31.5v191h190v-449h-1143z" />
+<glyph unicode="M" horiz-adv-x="2189" d="M143 0v172h144v1153h-144v191h480l481 -1309l487 1309h455v-191h-143v-1153h143v-172h-492v172h162v1164l-530 -1336h-170l-537 1339v-1167h156v-172h-492z" />
+<glyph unicode="N" horiz-adv-x="1624" d="M143 1343v175h408l692 -1245l8 48v1022h-170v173h492v-173h-129v-1343h-256l-705 1257v-1085h156v-172h-492v172h140v1171h-144z" />
+<glyph unicode="O" horiz-adv-x="1597" d="M72 758q0 164 53.5 308t150 250.5t230 168t293.5 61.5q161 0 295 -61.5t230 -168t149 -250.5t53 -308t-53.5 -307.5t-150 -250.5t-230 -168.5t-293.5 -61.5q-157 0 -287 58.5t-232 166.5t-155 256t-53 307zM276 758q0 -140 41 -249.5t108.5 -182t161 -121.5t212.5 -49 t215.5 49t164.5 131.5t105 191.5t37 230q0 124 -40.5 239.5t-113 195.5t-168.5 123.5t-200 43.5q-119 0 -216 -49t-165 -131.5t-105 -192t-37 -229.5z" />
+<glyph unicode="P" horiz-adv-x="1272" d="M143 0v172h144v1171h-144v173h613q102 0 187.5 -26.5t148 -78t97 -128.5t34.5 -177q0 -83 -34 -156.5t-96 -128.5t-148.5 -87t-192.5 -32h-269v-530h152v-172h-492zM483 866h273q57 0 104.5 15.5t82 45.5t54 75t19.5 104q0 112 -68 174.5t-217 62.5h-248v-477z" />
+<glyph unicode="Q" horiz-adv-x="1597" d="M72 758q0 164 53.5 308t150 250.5t230 168t293.5 61.5q161 0 295 -61.5t230 -168t149 -250.5t53 -308q0 -152 -46.5 -286.5t-130.5 -239t-201 -172.5t-258 -85q65 -17 104 -40t98 -52.5t118 -29.5q57 0 101.5 28.5t58.5 87.5l152 -69q-12 -56 -44.5 -98.5t-76 -71 t-93.5 -42.5t-98 -14q-77 0 -144.5 28t-141.5 68t-142 40q-41 0 -84 -13v179q-140 19 -255.5 87t-198 172.5t-127.5 238.5t-45 284zM276 758q0 -137 40.5 -247t107.5 -183.5t166.5 -122.5t208.5 -49q119 0 215.5 49t164.5 131.5t105 191.5t37 230q0 124 -40.5 238.5 t-113.5 195.5t-166 124.5t-202 43.5q-119 0 -216 -49t-165 -131.5t-105 -192t-37 -229.5z" />
+<glyph unicode="R" horiz-adv-x="1458" d="M143 0v172h144v1171h-144v173h631q101 0 186.5 -26.5t148 -78t97.5 -128.5t35 -177q0 -57 -20.5 -112.5t-57 -103t-86.5 -84.5t-109 -57q25 -11 50.5 -31.5t48 -50t41 -67t29.5 -80.5l84 -330h131l2 -190h-295l-113 461q-31 124 -94.5 182.5t-173.5 58.5h-195v-530h152 v-172h-492zM483 866h291q57 0 104.5 15t82 45t54 74.5t19.5 103.5q0 113 -68 176t-216 63h-267v-477z" />
+<glyph unicode="S" horiz-adv-x="1210" d="M80 283v172h252q0 -111 23.5 -157t65.5 -76.5t100 -46t128 -15.5q68 0 122.5 16t93 46.5t59 74t20.5 98.5q0 61 -25.5 103.5t-65.5 72.5t-87.5 49t-91.5 33l-219 62q-72 22 -131.5 56t-102 83t-65.5 114.5t-23 151.5q0 87 34 163t100 133t161.5 89.5t218.5 32.5 q81 0 149.5 -19t124 -53.5t98 -83t71.5 -106.5h75v-172h-245q0 88 -32 132t-70.5 67.5t-84.5 36t-92 12.5q-76 0 -133 -17.5t-94.5 -47.5t-56.5 -70t-19 -84q0 -66 23.5 -106.5t59.5 -65t79.5 -38.5t83.5 -28l202 -66q91 -29 160.5 -66t116.5 -87.5t71.5 -116.5t24.5 -153 q0 -94 -38.5 -174t-107.5 -139t-164.5 -92.5t-209.5 -33.5q-117 0 -200 26.5t-139.5 71t-90.5 101.5t-53 117h-76z" />
+<glyph unicode="T" horiz-adv-x="1434" d="M41 1116v400h1352v-400h-205v236h-400v-1180h156v-172h-491v172h139v1180h-346v-236h-205z" />
+<glyph unicode="U" horiz-adv-x="1550" d="M113 1343v173h491v-173h-155v-706q0 -127 28.5 -216.5t79 -146t120 -82.5t152.5 -26q86 0 158 23t123.5 77.5t80 145t28.5 225.5v706h-164v173h491v-173h-135v-684q0 -164 -45.5 -291t-124.5 -213t-186 -130.5t-230 -44.5q-120 0 -224.5 44t-182 129t-122 207.5 t-44.5 280.5v702h-139z" />
+<glyph unicode="V" horiz-adv-x="1485" d="M-10 1343v173h492v-173h-132l389 -1169l417 1169h-143v173h492v-173h-131l-491 -1343h-275l-484 1343h-134z" />
+<glyph unicode="W" horiz-adv-x="2560" d="M10 1343v173h492v-173h-132l367 -1165l387 1338h299l412 -1338l374 1165h-151v173h492v-173h-132l-433 -1343h-306l-411 1321l-379 -1321h-303l-442 1343h-134z" />
+<glyph unicode="X" horiz-adv-x="1500" d="M170 0v172h99l432 603l-408 568h-123v173h492v-173h-146l295 -415l298 415h-159v173h492v-173h-112l-410 -569l428 -602h94v-172h-492v172h185l-324 451l-326 -451h177v-172h-492z" />
+<glyph unicode="Y" horiz-adv-x="1354" d="M51 1343v173h492v-173h-144l285 -487l305 487h-158v173h492v-173h-129l-426 -646v-525h156v-172h-492v172h139v530l-402 641h-118z" />
+<glyph unicode="Z" horiz-adv-x="1214" d="M51 0v227l900 1116h-687v-256h-196v429h1095v-224l-913 -1120h711v252h196v-424h-1106z" />
+<glyph unicode="[" d="M238 -377v2083h403v-151h-219v-1780h219v-152h-403z" />
+<glyph unicode="\" horiz-adv-x="948" d="M41 1581h162l704 -1606h-162z" />
+<glyph unicode="]" d="M80 -225h219v1780h-219v151h403v-2083h-403v152z" />
+<glyph unicode="^" horiz-adv-x="1229" d="M156 723l403 790h113l403 -790h-143l-315 626l-320 -626h-141z" />
+<glyph unicode="_" horiz-adv-x="1024" d="M0 -154h1024v-102h-1024v102z" />
+<glyph unicode="`" horiz-adv-x="590" d="M100 1460v17h248l184 -299h-145z" />
+<glyph unicode="a" horiz-adv-x="1120" d="M70 274q0 66 19.5 117t52 88.5t76 63t91 41t97 22t94.5 6.5q72 0 121 -4.5t89 -12.5l1 85q0 55 -16 95.5t-45 67t-69.5 39.5t-90.5 13q-47 0 -90 -6.5t-80.5 -17t-69 -24t-53.5 -28.5l-61 129q37 24 81 44.5t92.5 35t99 23t99.5 8.5q90 0 162 -21.5t122 -66.5t77 -114.5 t27 -166.5l-1 -518h115v-172h-301v96q-59 -55 -130.5 -90t-162.5 -35q-76 0 -139.5 24t-109.5 65.5t-71.5 96.5t-25.5 117zM250 291q0 -41 15 -71.5t42.5 -51t65.5 -31t84 -10.5q37 0 74 9t70 24.5t61 36t47 42.5l1 234h-216q-54 0 -98.5 -12t-77 -35t-50.5 -57t-18 -78z " />
+<glyph unicode="b" horiz-adv-x="1253" d="M57 1384v172h336v-606q66 51 144 81t161 30q102 0 187 -38t146.5 -107t95.5 -165.5t34 -213.5q0 -125 -38 -226.5t-105.5 -174.5t-160.5 -112.5t-204 -39.5q-77 0 -144.5 22.5t-115.5 58.5v-65h-186v1384h-150zM393 229q32 -33 94 -58.5t156 -25.5q64 0 123 24t104 72.5 t72 120.5t27 168q0 88 -25.5 156t-69 115t-101.5 71.5t-124 24.5q-73 0 -140 -30t-116 -81v-557z" />
+<glyph unicode="c" horiz-adv-x="1118" d="M92 520q0 120 39 221t107 173.5t159 113.5t195 41q98 0 185.5 -34t153.5 -103h105v-172h-188q-42 75 -106.5 110t-149.5 35q-65 0 -122 -27t-99.5 -77t-67 -121.5t-24.5 -159.5q0 -87 24.5 -157t67.5 -119.5t99.5 -76t121.5 -26.5q96 0 167 46.5t113 136.5l154 -76 q-30 -64 -74 -115t-99.5 -87t-122 -55.5t-140.5 -19.5q-108 0 -199.5 40.5t-158 113.5t-103.5 174t-37 221z" />
+<glyph unicode="d" horiz-adv-x="1268" d="M92 528q0 120 36 218.5t102 168t159 108t207 38.5q75 0 137 -16.5t119 -57.5v397h-141v172h327v-1384h152v-172h-338v85q-50 -51 -116 -79.5t-150 -28.5q-105 0 -195.5 36.5t-157 107t-104 173t-37.5 234.5zM285 530q0 -96 24 -169t67 -122.5t103 -74.5t131 -25 q83 0 139 24.5t103 73.5v580q-50 42 -115 61t-133 19q-66 0 -124 -24.5t-101.5 -71.5t-68.5 -115t-25 -156z" />
+<glyph unicode="e" horiz-adv-x="1175" d="M92 522q0 111 31 209.5t92.5 172t152.5 116.5t212 43q117 0 195.5 -35.5t128 -94t75 -133.5t35.5 -153q5 -38 6.5 -77t1.5 -76h-746q0 -44 6.5 -80.5t18.5 -69.5q37 -100 118.5 -150.5t184.5 -50.5q81 0 157.5 22.5t160.5 70.5l75 -127q-102 -70 -205 -104t-214 -34 q-105 0 -194.5 35t-154 104t-101 172t-36.5 240zM286 639h537q-4 58 -18.5 107t-44.5 85t-77 56t-116 20q-65 0 -113.5 -18.5t-82.5 -53t-54.5 -84.5t-30.5 -112z" />
+<glyph unicode="f" horiz-adv-x="745" d="M85 885v151h171v162q2 90 26 157t68 112t106 67t138 22q53 0 95 -5t75 -13.5t58.5 -18.5t45.5 -20l-57 -133q-32 17 -83.5 29t-107.5 12q-83 0 -130.5 -51.5t-47.5 -151.5v-168h240v-151h-240v-713h162v-172h-504v172h156v713h-171z" />
+<glyph unicode="g" horiz-adv-x="1200" d="M92 528q0 120 36 218.5t102 168t159 108t207 38.5q78 0 140.5 -17.5t121.5 -60.5v53h186v-995q0 -246 -116.5 -372t-362.5 -126q-54 0 -113 8t-116.5 25.5t-112 44.5t-100.5 66l100 151q30 -26 68.5 -48t82.5 -37.5t91 -24.5t94 -9q77 0 133.5 16t93 56.5t54.5 109.5 t18 175v15q-51 -54 -118.5 -84t-153.5 -30q-105 0 -195.5 36.5t-157 107t-104 173t-37.5 234.5zM285 530q0 -96 24 -169t67 -122.5t103 -74.5t131 -25q46 0 84 9t69 23.5t54.5 33.5t40.5 40v567q-51 45 -117.5 65t-136.5 20q-66 0 -124 -24.5t-101.5 -71.5t-68.5 -115 t-25 -156z" />
+<glyph unicode="h" horiz-adv-x="1354" d="M100 0v172h156v1212h-142v172h328v-634h6q28 28 64.5 52.5t76.5 42.5t83 28t90 10q83 0 150 -23t114 -70t72.5 -120.5t25.5 -173.5v-496h156v-172h-492v172h142v473q0 119 -60.5 180.5t-173.5 61.5q-64 0 -130 -30.5t-124 -76.5v-608h150v-172h-492z" />
+<glyph unicode="i" horiz-adv-x="657" d="M92 864v172h338v-864h156v-172h-492v172h148v692h-150zM207 1403q0 26 10.5 49.5t28 41t41.5 28t51 10.5q26 0 49.5 -10.5t41 -28t28 -41t10.5 -49.5q0 -27 -10.5 -51t-28 -42.5t-41 -29t-49.5 -10.5q-27 0 -51 10.5t-41.5 29t-28 42.5t-10.5 51z" />
+<glyph unicode="j" horiz-adv-x="604" d="M61 -332q89 13 129.5 84.5t40.5 188.5v923h-147v172h336v-1116q0 -89 -23 -160.5t-66.5 -122t-106.5 -78.5t-144 -30zM207 1403q0 24 9.5 45t25.5 37t37.5 25.5t46.5 9.5q24 0 45.5 -9.5t37.5 -25.5t25.5 -37t9.5 -45q0 -25 -9.5 -47t-25.5 -38.5t-37.5 -26t-45.5 -9.5 q-25 0 -46.5 9.5t-37.5 26t-25.5 38.5t-9.5 47z" />
+<glyph unicode="k" horiz-adv-x="1286" d="M92 1384v172h365v-172h-2v-774h180l246 254h-62v172h393v-172h-131l-315 -325l344 -367h125v-172h-219l-424 463h-137v-291h86v-172h-443v172h170v1212h-176z" />
+<glyph unicode="l" horiz-adv-x="666" d="M92 0v172h150v1212h-150v172h336v-1384h156v-172h-492z" />
+<glyph unicode="m" horiz-adv-x="2050" d="M100 0v172h144v692h-144v172h330v-121h2q34 29 71.5 54.5t78.5 44.5t85.5 30t92.5 11q112 0 193 -41.5t125 -129.5q38 34 80 65.5t87.5 54.5t95.5 37t104 14q84 0 151 -23t114 -70t71.5 -120.5t24.5 -173.5v-496h144v-172h-484v172h146v473q0 119 -60 180.5t-173 61.5 q-67 0 -137 -32t-120 -81v-602h143v-172h-483v172h146v473q0 119 -60.5 180.5t-173.5 61.5q-65 0 -131 -31t-125 -77v-607h146v-172h-484z" />
+<glyph unicode="n" horiz-adv-x="1366" d="M100 0v172h144v692h-144v172h330v-122h2q33 29 70.5 55t78.5 45t85.5 30t93.5 11q83 0 150 -23t114 -70t72.5 -120.5t25.5 -173.5v-496h144v-172h-484v172h146v473q0 119 -60.5 180.5t-173.5 61.5q-65 0 -131 -31t-125 -77v-607h146v-172h-484z" />
+<glyph unicode="o" horiz-adv-x="1225" d="M86 518q1 123 39.5 224t107.5 173.5t164 111.5t209 39q115 0 210.5 -39t163.5 -110.5t106 -172.5t38 -224q0 -121 -38 -222.5t-106 -174.5t-163.5 -113.5t-210.5 -40.5q-117 0 -212 40t-163 112.5t-106 173.5t-39 223zM283 518q0 -89 25.5 -161t70 -122.5t103 -78 t124.5 -27.5q69 0 128.5 27t103.5 77.5t69 122.5t25 162q0 94 -25 167t-68.5 122t-103.5 74t-129 25q-66 0 -124.5 -25t-103 -74t-70 -122t-25.5 -167z" />
+<glyph unicode="p" horiz-adv-x="1249" d="M59 864v172h330v-86q66 51 144 81t161 30q102 0 187 -38t146.5 -107t95.5 -165.5t34 -213.5q0 -125 -38 -228t-105.5 -176.5t-160.5 -114.5t-204 -41q-79 0 -140.5 16.5t-117.5 42.5v-335h162v-172h-492v172h142v1163h-144zM391 227q33 -34 94.5 -61t153.5 -27 q64 0 123 25t104 74.5t72 122.5t27 169q0 88 -25.5 156t-69 115t-101.5 71.5t-124 24.5q-72 0 -138.5 -29t-115.5 -80v-561z" />
+<glyph unicode="q" horiz-adv-x="1206" d="M92 528q0 120 36 218.5t102 168t159 108t207 38.5q75 0 135 -16.5t117 -54.5v46h186v-1335h156v-172h-492v172h150v380q-50 -49 -115 -76.5t-147 -27.5q-105 0 -195.5 36.5t-157 107t-104 173t-37.5 234.5zM285 530q0 -96 24 -169t67 -122.5t103 -74.5t131 -25 q85 0 144 28t94 66v587q-50 41 -113.5 59t-130.5 18q-66 0 -124 -24.5t-101.5 -72t-68.5 -115.5t-25 -155z" />
+<glyph unicode="r" horiz-adv-x="960" d="M100 0v172h143l1 692h-144v172h331v-143q18 32 40.5 59.5t50 48t61 32t72.5 11.5h98q46 0 92 -2v-225h-190v64q-33 0 -67.5 -12.5t-64.5 -38t-52.5 -65t-32.5 -93.5v-500h176v-172h-514z" />
+<glyph unicode="s" horiz-adv-x="993" d="M82 111v172h207q0 -43 18.5 -73.5t49 -49.5t69 -28t78.5 -9q39 0 75 9.5t63.5 28t43.5 44.5t16 59q0 50 -32.5 85t-110.5 63l-198 74q-121 43 -179.5 109.5t-58.5 166.5q0 66 24.5 122t71 96.5t113.5 63.5t153 23q111 0 186 -31t135 -106h97v-172h-205q0 42 -19.5 71.5 t-50.5 48t-69 27t-74 8.5q-40 0 -73.5 -9t-57.5 -26t-37.5 -41.5t-13.5 -54.5q0 -52 31.5 -82.5t105.5 -56.5l199 -70q128 -43 187 -117t59 -177q0 -69 -27.5 -126.5t-78 -98t-121.5 -63t-158 -22.5q-121 0 -197 39t-117 103h-104z" />
+<glyph unicode="t" horiz-adv-x="762" d="M51 885v151h167v248l182 86v-334h243v-151h-245l-3 -598q0 -61 14 -99t45 -52.5t70 -14.5q42 0 74 7.5t70 25.5l43 -125q-48 -25 -101 -39.5t-125 -14.5q-68 0 -118.5 16.5t-85 55.5t-51.5 104.5t-17 163.5l3 570h-165z" />
+<glyph unicode="u" horiz-adv-x="1350" d="M60 864v172h334v-645q0 -119 55 -180t158 -61q61 0 128.5 22t127.5 61v631h-139v172h334v-864h115v-172h-302v96q-70 -54 -152.5 -84t-176.5 -30q-78 0 -141.5 22.5t-108 70t-68.5 120.5t-24 174v495h-140z" />
+<glyph unicode="v" horiz-adv-x="1100" d="M20 864v172h358v-172h-97l256 -714l250 714h-63v172h328v-172h-89l-339 -880h-184l-338 880h-82z" />
+<glyph unicode="w" horiz-adv-x="1640" d="M20 864v172h328v-172h-48l181 -661l248 833h156l237 -831l189 659h-60v172h328v-172h-89l-284 -880h-172l-235 827l-234 -827h-174l-282 880h-89z" />
+<glyph unicode="x" horiz-adv-x="1090" d="M51 864v172h344v-172h-39l191 -246l193 246h-50v172h344v-172h-89l-293 -338l310 -354h76v-172h-344v172h59l-206 256l-201 -256h51v-172h-344v172h84l315 367l-296 325h-105z" />
+<glyph unicode="y" horiz-adv-x="1176" d="M31 864v172h393v-172h-123l243 -661l254 661h-122v172h393v-172h-107l-461 -1163h142v-172h-418v172h126l110 285l-346 878h-84z" />
+<glyph unicode="z" horiz-adv-x="924" d="M76 0v115l525 766h-331v-146h-184v301h741v-118l-524 -762h354v176h193v-332h-774z" />
+<glyph unicode="{" d="M133 596v127q42 0 73.5 23t52.5 60.5t31.5 85.5t10.5 98v452q0 63 18.5 112t48 83t67.5 51.5t77 17.5h137v-126h-69q-54 0 -74.5 -52.5t-20.5 -146.5v-428q0 -62 -13 -110t-35.5 -84t-53 -60t-66.5 -37v-4q36 -13 66.5 -37t53 -60t35.5 -84.5t13 -109.5v-418 q0 -94 20.5 -146.5t74.5 -52.5h69v-127h-137q-39 0 -77 17.5t-67.5 51.5t-48 83t-18.5 112v443q0 50 -10.5 97.5t-31.5 85t-52.5 60.5t-73.5 23z" />
+<glyph unicode="|" horiz-adv-x="455" d="M152 -270v1996h155v-1996h-155z" />
+<glyph unicode="}" d="M72 -250h69q54 0 74.5 52.5t20.5 146.5v418q0 61 13 109.5t35.5 84.5t53 60t65.5 37v4q-35 13 -65.5 37t-53 60t-35.5 84t-13 110v428q0 94 -20.5 146.5t-74.5 52.5h-69v126h137q39 0 77 -17.5t67.5 -51.5t48 -83t18.5 -112v-452q0 -50 10.5 -98t31.5 -85.5t52.5 -60.5 t73.5 -23v-127q-42 0 -73.5 -23t-52.5 -60.5t-31.5 -85t-10.5 -97.5v-443q0 -63 -18.5 -112t-48 -83t-67.5 -51.5t-77 -17.5h-137v127z" />
+<glyph unicode="~" horiz-adv-x="1229" d="M141 483q45 84 106 130t150 46q58 0 119.5 -22.5t119.5 -49t109 -49t89 -22.5q43 0 86.5 34.5t93.5 117.5l73 -115q-45 -84 -105.5 -130t-150.5 -46q-39 0 -79 10.5t-80.5 26.5t-79 34.5t-74 34.5t-67 26.5t-56.5 10.5q-43 0 -86.5 -34t-93.5 -117z" />
+<glyph unicode="&#xa0;" horiz-adv-x="448" d="M0 0z" />
+<glyph unicode="&#xa2;" horiz-adv-x="1210" d="M111 684q0 106 31 197t85 161.5t128 117.5t161 64v355h197v-356q68 -14 128 -45t108 -82h106v-172h-183l-4 -2q-1 0 -1 2h-1v1q-43 74 -107 109t-149 35q-65 0 -122 -27t-99.5 -77t-67 -121.5t-24.5 -159.5q0 -87 24.5 -157t67.5 -119.5t99.5 -76t121.5 -26.5 q96 0 167.5 46.5t113.5 135.5l153 -75q-49 -105 -134 -174.5t-197 -92.5v-331h-197v329q-90 16 -164.5 62t-128 116.5t-83 162.5t-29.5 200z" />
+<glyph unicode="&#xa3;" horiz-adv-x="932" d="M33 662v145h195q-26 69 -45 142t-19 155q0 78 27 143t76 112t117 73t151 26q74 0 136 -26.5t106 -73.5t66.5 -112t18.5 -142l-166 -10q-1 38 -11.5 74t-30.5 64t-49.5 45t-67.5 17q-43 0 -76 -12.5t-55.5 -34t-35 -50.5t-14.5 -62q-2 -25 0 -48.5t7 -49t14 -55.5t20 -67 q7 -27 15 -54l16 -54h279v-145h-234q14 -43 24.5 -81.5t18.5 -70.5q9 -38 4.5 -83t-22 -91t-48.5 -88.5t-76 -75.5h486v-168h-799v168h110q61 35 98 83.5t52 106t9.5 123t-29.5 133.5l-16 44h-252z" />
+<glyph unicode="&#xa5;" horiz-adv-x="1354" d="M51 1344v172h492v-172h-145l286 -488l305 488h-157v172h492v-172h-129l-328 -496h184v-141h-283v-148h283v-141h-283v-246h156v-172h-492v172h139v246h-270v141h270v148h-270v141h178l-311 496h-117z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1919" d="M102 831q0 118 30.5 227.5t86 204.5t133.5 173t173 133.5t204.5 86t228.5 30.5q118 0 228 -30.5t205.5 -86t174 -133.5t134.5 -173t86.5 -204.5t30.5 -227.5q0 -119 -30.5 -228.5t-86.5 -204.5t-134.5 -173t-174 -133.5t-205.5 -86t-228 -30.5q-119 0 -228.5 30.5 t-204.5 86t-173 133.5t-133.5 173t-86 204.5t-30.5 228.5zM283 831q0 -142 52.5 -265.5t144 -215t214.5 -144t264 -52.5t263.5 52.5t215 144t145 215t52.5 265.5q0 140 -52.5 269.5t-145 215.5t-215 138.5t-263.5 52.5t-264 -52.5t-214.5 -138.5t-144 -215.5t-52.5 -269.5z M477 834q0 104 39 195.5t107 160t159.5 108t196.5 39.5q58 0 109.5 -12.5t96 -33t81 -47t65.5 -54.5l-141 -131q-48 46 -100.5 67t-110.5 21q-64 0 -120 -24.5t-97.5 -67.5t-65.5 -100t-24 -121t24 -120t65.5 -98t97.5 -66t120 -24q56 0 108.5 22.5t83.5 57.5l134 -129 q-23 -30 -59 -56.5t-79 -46t-91.5 -31t-96.5 -11.5q-105 0 -196.5 39t-159.5 107t-107 159.5t-39 196.5z" />
+<glyph unicode="&#xad;" horiz-adv-x="737" d="M94 496v172h551v-172h-551z" />
+<glyph unicode="&#xae;" horiz-adv-x="1919" d="M102 831q0 118 30.5 227.5t86 204.5t133.5 173t173 133.5t204.5 86t228.5 30.5q118 0 228 -30.5t205.5 -86t174 -133.5t134.5 -173t86.5 -204.5t30.5 -227.5q0 -119 -30.5 -228.5t-86.5 -204.5t-134.5 -173t-174 -133.5t-205.5 -86t-228 -30.5q-119 0 -228.5 30.5 t-204.5 86t-173 133.5t-133.5 173t-86 204.5t-30.5 228.5zM283 831q0 -142 52.5 -265.5t144 -215t214.5 -144t264 -52.5t263.5 52.5t215 144t145 215t52.5 265.5q0 94 -52.5 246.5t-145 238.5t-215 138.5t-263.5 52.5t-264 -52.5t-214.5 -138.5t-144 -215.5t-52.5 -269.5z M551 1188v158h483q73 0 132 -21t100 -58t63.5 -87.5t22.5 -108.5q0 -49 -10 -87t-30.5 -67.5t-50.5 -51.5t-69 -39q31 -17 55.5 -52.5t36.5 -87.5l41 -168h82l2 -158h-256l-51 254q-14 84 -64 121t-129 37h-67v-254h92v-158h-379v158h98v670h-102zM842 928h143 q74 0 118 30.5t44 98.5q0 62 -41.5 96.5t-128.5 34.5h-135v-260z" />
+<glyph unicode="&#xb4;" horiz-adv-x="645" d="M84 1178l213 299h240v-17l-299 -282h-154z" />
+<glyph unicode="&#x2000;" horiz-adv-x="863" />
+<glyph unicode="&#x2001;" horiz-adv-x="1726" />
+<glyph unicode="&#x2002;" horiz-adv-x="863" />
+<glyph unicode="&#x2003;" horiz-adv-x="1726" />
+<glyph unicode="&#x2004;" horiz-adv-x="575" />
+<glyph unicode="&#x2005;" horiz-adv-x="431" />
+<glyph unicode="&#x2006;" horiz-adv-x="287" />
+<glyph unicode="&#x2007;" horiz-adv-x="287" />
+<glyph unicode="&#x2008;" horiz-adv-x="215" />
+<glyph unicode="&#x2009;" horiz-adv-x="345" />
+<glyph unicode="&#x200a;" horiz-adv-x="95" />
+<glyph unicode="&#x2010;" horiz-adv-x="737" d="M94 496v172h551v-172h-551z" />
+<glyph unicode="&#x2011;" horiz-adv-x="737" d="M94 496v172h551v-172h-551z" />
+<glyph unicode="&#x2012;" horiz-adv-x="737" d="M94 496v172h551v-172h-551z" />
+<glyph unicode="&#x2013;" horiz-adv-x="1024" d="M0 485v162h1024v-162h-1024z" />
+<glyph unicode="&#x2014;" horiz-adv-x="2048" d="M0 485v162h2048v-162h-2048z" />
+<glyph unicode="&#x2018;" horiz-adv-x="606" d="M113 1057l249 499l132 -63l-191 -514z" />
+<glyph unicode="&#x2019;" horiz-adv-x="606" d="M92 995l184 570l220 -86l-260 -537z" />
+<glyph unicode="&#x201c;" horiz-adv-x="1065" d="M129 1057l250 499l131 -63l-191 -514zM555 1057l250 499l131 -63l-191 -514z" />
+<glyph unicode="&#x201d;" horiz-adv-x="1028" d="M92 1042l191 514l190 -77l-250 -500zM518 1042l191 514l190 -77l-250 -500z" />
+<glyph unicode="&#x2022;" horiz-adv-x="811" d="M154 780q0 52 19.5 98t53.5 80.5t80 54t99 19.5q52 0 98 -19.5t80 -53.5t53.5 -80t19.5 -99t-19.5 -99t-53.5 -80t-80 -53.5t-98 -19.5q-53 0 -99 19.5t-80 53.5t-53.5 80t-19.5 99z" />
+<glyph unicode="&#x2026;" horiz-adv-x="2048" d="M205 123q0 30 11.5 56.5t32 47t47 32t56.5 11.5q31 0 58 -11.5t47.5 -32t32.5 -47t12 -56.5t-12 -57t-32.5 -47t-47.5 -32t-58 -12q-30 0 -56.5 12t-47 32t-32 47t-11.5 57zM877 123q0 30 11.5 56.5t32 47t47 32t56.5 11.5q31 0 58 -11.5t47.5 -32t32.5 -47t12 -56.5 t-12 -57t-32.5 -47t-47.5 -32t-58 -12q-30 0 -56.5 12t-47 32t-32 47t-11.5 57zM1548 123q0 30 12 56.5t32 47t47 32t57 11.5q31 0 58 -11.5t47 -32t32 -47t12 -56.5t-12 -57t-32 -47t-47 -32t-58 -12q-30 0 -57 12t-47 32t-32 47t-12 57z" />
+<glyph unicode="&#x202f;" horiz-adv-x="345" />
+<glyph unicode="&#x205f;" horiz-adv-x="431" />
+<glyph unicode="&#x2122;" horiz-adv-x="3623" d="M1577 0v172h144v1153h-144v191h480l481 -1309l487 1309h455v-191h-143v-1153h143v-172h-492v172h162v1164l-530 -1336h-170l-537 1339v-1167h156v-172h-492zM41 1116v400h1352v-400h-205v236h-400v-1180h156v-172h-491v172h139v1180h-346v-236h-205z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1035" d="M0 1035h1035v-1035h-1035v1035z" />
+</font>
+</defs></svg> 
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/css/font-files/Junction-webfont.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/css/font-files/Junction-webfont.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/css/font-files/Junction-webfont.svg	(revision 29468)
@@ -0,0 +1,133 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Generated in 2009 by FontLab Studio Copyright info pending
+</metadata>
+<defs>
+<font id="webfont2B4HRL5F" horiz-adv-x="708" >
+<font-face units-per-em="2048" ascent="1536" descent="-512" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode=" "  horiz-adv-x="532" />
+<glyph unicode="&#x09;" horiz-adv-x="532" />
+<glyph unicode="&#xa0;" horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="575" d="M174 100.5q0 49.5 33 81t82 31.5t80.5 -31.5t31.5 -81t-31.5 -82t-80.5 -32.5t-82 32.5t-33 82zM195 1679h188l-27 -1302h-135z" />
+<glyph unicode="&#x22;" horiz-adv-x="774" d="M92 1464q0 49 33 81t82 32q61 0 93 -50t32 -118q-2 -147 -152 -332l-86 29q102 127 121 244q-55 0 -89 32.5t-34 81.5zM442 1464q0 49 33 81t82 32q59 0 92 -50t33 -118q-2 -147 -152 -332l-86 29q102 127 121 244q-55 0 -89 32.5t-34 81.5z" />
+<glyph unicode="#" horiz-adv-x="1689" d="M82 489l35 148h338l88 362h-348l34 148h351l106 430h152l-107 -430h361l106 430h152l-107 -430h365l-35 -148h-367l-88 -362h377l-35 -148h-379l-118 -489h-152l119 489h-361l-118 -489h-152l119 489h-336zM606 637h361l88 362h-361z" />
+<glyph unicode="$" horiz-adv-x="1341" d="M117 281l125 118q131 -213 387 -252v607q-78 25 -129 44t-111.5 54t-95.5 75t-59.5 100t-24.5 136q0 117 42 204t109.5 133t133 68.5t135.5 28.5v125h131v-127q260 -25 411 -186l-127 -111q-106 109 -284 132v-537q109 -35 176.5 -63.5t145 -82t116.5 -132t39 -183.5 q0 -205 -138 -322.5t-339 -129.5v-119h-131v123q-336 39 -512 297zM381 1163q0 -86 64.5 -138t183.5 -91v498q-98 -14 -173 -76t-75 -193zM760 143q129 12 217 87t88 202q0 113 -79 173.5t-226 107.5v-570z" />
+<glyph unicode="%" horiz-adv-x="2066" d="M123 1167.5q0 118.5 35 205.5t93 133t122.5 67.5t136.5 21.5q74 0 138.5 -20.5t123.5 -67.5t93 -135t34 -209q-2 -227 -115.5 -326.5t-271.5 -99.5q-72 0 -136.5 21.5t-123.5 67.5t-94 134.5t-35 207zM276 1167q0 -168 70 -241.5t166 -73.5t163.5 72.5t69.5 238.5 q0 170 -68.5 244t-166.5 74q-96 -2 -165 -75t-69 -239zM350 -96l1188 1763h176l-1188 -1763h-176zM1167 416q2 227 115 327.5t272 102.5q74 0 138.5 -21.5t124 -67.5t93.5 -135.5t34 -209.5q-2 -227 -116 -326.5t-272 -99.5q-72 0 -136 21.5t-123.5 67.5t-94.5 134t-35 207z M1323 412q0 -166 68.5 -239t165 -73t164 73t69.5 239q0 168 -67.5 242.5t-163.5 76.5q-96 0 -166 -74.5t-70 -244.5z" />
+<glyph unicode="&#x26;" horiz-adv-x="1802" d="M123 410q0 150 95 254t267 200q-104 115 -157.5 203t-53.5 174q0 92 38 159.5t103.5 104.5t138.5 54.5t155 17.5q178 0 302 -80t124 -256q0 -121 -102.5 -210t-295.5 -187l377 -404q31 47 58 102l69 138l55 113l127 -78q-162 -324 -200 -387q182 -180 211 -174q37 0 53 3 t41.5 29.5t50.5 81.5l111 -65q-35 -78 -66 -124t-66.5 -63.5t-57 -21.5t-66.5 -4q-72 -8 -306 207q-184 -211 -491 -211q-59 0 -140 23.5t-168 70.5t-146.5 134t-59.5 196zM295 410q0 -84 68.5 -144.5t142.5 -84t131 -23.5q227 2 377 151l-432 455q-135 -74 -211 -157.5 t-76 -196.5zM446 1241q0 -90 195 -295q100 51 160.5 88t111 93.5t50.5 113.5q0 113 -74 163t-180 50q-109 0 -186 -51t-77 -162z" />
+<glyph unicode="'" horiz-adv-x="423" d="M92 1464q0 49 33 81t82 32q61 0 93 -50t32 -118q-2 -147 -152 -332l-86 29q102 127 121 244q-55 0 -89 32.5t-34 81.5z" />
+<glyph unicode="(" horiz-adv-x="692" d="M123 520q0 98 13.5 220t49 269.5t89 267.5t143.5 205t200 95l13 -143q-96 -35 -167 -144.5t-104.5 -255t-49 -273.5t-15.5 -241q0 -111 15.5 -238.5t49 -273t104.5 -256t167 -143.5l-13 -144q-113 12 -202.5 98.5t-142 205t-88 264t-49 266.5t-13.5 221z" />
+<glyph unicode=")" horiz-adv-x="692" d="M61 -391q96 33 167 143.5t105 256t49 273.5t15 238q0 113 -15 241t-49 273.5t-104.5 255t-167.5 144.5l13 143q111 -10 201 -95t143 -205t89 -267.5t49 -269.5t13 -220q0 -100 -13 -221t-49 -266.5t-88 -264t-142.5 -204.5t-202.5 -99z" />
+<glyph unicode="*" horiz-adv-x="1265" d="M100 1161l52 133l413 -166l-4 449h144l-5 -449l414 166l51 -133l-424 -166l295 -327l-118 -101l-285 353l-283 -353l-123 101l295 327z" />
+<glyph unicode="+" horiz-adv-x="1331" d="M102 496v137h484v493h137v-493h506v-137h-506v-496h-137v496h-484z" />
+<glyph unicode="," horiz-adv-x="413" d="M82 100.5q0 49.5 32.5 81t82.5 31.5q61 0 93 -50t32 -118q-2 -147 -152 -332l-86 29q102 127 121 244q-55 0 -89 32.5t-34 82z" />
+<glyph unicode="-" d="M113 492v143h483v-143h-483z" />
+<glyph unicode="." horiz-adv-x="411" d="M92 100.5q0 49.5 33 81t82 31.5t80.5 -31.5t31.5 -81t-31.5 -82t-80.5 -32.5t-82 32.5t-33 82z" />
+<glyph unicode="/" horiz-adv-x="884" d="M41 -532l633 2109h170l-633 -2109h-170z" />
+<glyph unicode="0" horiz-adv-x="1253" d="M123 579.5q0 165.5 44 287.5t118.5 187.5t159.5 96.5t181.5 31t181.5 -31t159.5 -96.5t118.5 -187.5t44 -287.5t-44 -287.5t-118.5 -187.5t-159.5 -96.5t-181.5 -31t-181.5 31t-159.5 96.5t-118.5 187.5t-44 287.5zM295 579.5q0 -237.5 96 -344t235.5 -106.5t235.5 106.5 t96 344t-96 344t-235.5 106.5t-235.5 -106.5t-96 -344z" />
+<glyph unicode="1" horiz-adv-x="731" d="M102 936l293 221h166v-1157h-166v983l-182 -154z" />
+<glyph unicode="2" horiz-adv-x="1126" d="M102 0v131l71 49q44 31 155.5 120t196.5 169t156 176t71 162q0 109 -56.5 161t-152.5 50q-53 0 -104.5 -19.5t-85.5 -46t-59.5 -54.5t-37.5 -46l-12 -18q-104 98 -105 100q43 78 155 162t251 86q180 0 280.5 -92.5t100.5 -270.5q0 -139 -165 -323.5t-376 -345.5h627 l2 -150h-912z" />
+<glyph unicode="3" horiz-adv-x="1142" d="M82 -313l108 106q10 -8 28 -20.5t80 -30.5t130 -16q92 0 184.5 43t164 147t71.5 250q0 98 -74 173t-174 75q-41 0 -86 -6.5t-80 -13.5t-62.5 -15t-43.5 -14l-17 -5v144q166 68 262.5 148.5t96.5 197.5q0 74 -52.5 120t-125.5 46q-53 0 -99.5 -14.5t-76 -36t-51 -43 t-32.5 -35.5l-8 -15l-96 95q4 8 13.5 22.5t41 52t69.5 65.5t102.5 51.5t133.5 23.5q145 0 247 -93.5t102 -238.5q0 -158 -183 -293q152 -18 257.5 -126.5t109.5 -264.5q0 -147 -57.5 -268t-148.5 -192t-191.5 -108.5t-196.5 -37.5q-88 0 -175 31.5t-130 64.5z" />
+<glyph unicode="4" horiz-adv-x="1286" d="M82 0v90l803 1067h108v-1007h232v-150h-232v-440h-166v440h-745zM307 141l39 9h481v688l-491 -666l-29 -29v-2z" />
+<glyph unicode="5" horiz-adv-x="1208" d="M143 -301l107 104q8 -8 24.5 -21t79 -34.5t135.5 -21.5q150 0 281 115.5t131 328.5q0 115 -84 218.5t-203 103.5q-158 0 -270 -76h-166v741h770v-156h-604v-413q119 53 270 53q180 0 317.5 -143.5t145.5 -327.5q0 -147 -57 -268t-146.5 -192.5t-188.5 -110.5t-196 -39 q-104 0 -190 34.5t-121 69.5z" />
+<glyph unicode="6" horiz-adv-x="1269" d="M131 727q0 360 170 620.5t424 260.5q188 0 356 -135l-110 -107q-100 84 -240 84q-115 0 -202 -76t-134 -195.5t-71.5 -240.5t-26.5 -236q176 268 414 269q193 0 314.5 -111.5t121.5 -353.5q0 -80 -25.5 -164t-78 -167t-151.5 -136t-230 -53q-254 0 -392.5 191.5 t-138.5 549.5zM319 481q35 -168 123 -256t220 -88q111 0 185.5 66.5t101 145.5t26.5 157q0 164 -74 238.5t-190 74.5q-230 0 -392 -338z" />
+<glyph unicode="7" horiz-adv-x="1058" d="M10 -328q86 53 339 497.5t437 823.5h-696v164h907v-121q-195 -410 -478 -918.5t-394 -557.5z" />
+<glyph unicode="8" horiz-adv-x="1216" d="M133 350q2 143 97.5 263t224.5 208q-281 223 -281 439q0 92 38 160.5t103.5 106.5t138 55t154.5 17t155 -17t138.5 -55t103 -106.5t37.5 -160.5q0 -143 -98 -255t-221 -186q86 -63 137 -106t109.5 -104.5t86 -125t27.5 -133.5q0 -78 -24.5 -140.5t-59 -100t-87 -65.5 t-93.5 -40t-93 -19.5t-72 -7.5h-42h-4h-36q-13 0 -68 6.5t-95 18.5t-95.5 40t-91.5 65.5t-62.5 101t-26.5 141.5zM307 350q0 -55 19.5 -98t55.5 -66.5t67.5 -39t74.5 -19.5l55 -5q11 -1 29 -1h2q23 0 45.5 1t72.5 13t86 33.5t65.5 69t29.5 112.5q0 86 -86 174t-254 209 q-248 -160 -262 -383zM348 1260q0 -90 67.5 -174.5t188.5 -178.5q53 29 105.5 68t105.5 119t53 166q0 111 -75.5 159.5t-184 48.5t-184.5 -48.5t-76 -159.5z" />
+<glyph unicode="9" horiz-adv-x="1269" d="M123 662q0 80 25.5 163.5t78 166.5t151.5 136.5t230 53.5q254 0 392.5 -191.5t138.5 -550.5q0 -109 -20.5 -224.5t-69 -234t-116 -212t-171 -151.5t-225.5 -58q-117 0 -217.5 37.5t-155.5 76.5l112 109q119 -66 259 -66q115 0 202.5 75t136 194.5t72 239.5t27.5 237 q-180 -266 -414 -266q-193 0 -314.5 111.5t-121.5 353.5zM295 662q0 -164 73.5 -239t190.5 -75q227 0 391 336q-35 170 -123 258t-219 88q-111 0 -185.5 -66.5t-101 -145t-26.5 -156.5z" />
+<glyph unicode=":" horiz-adv-x="514" d="M143 100.5q0 49.5 33 81t82 31.5t81 -31.5t32 -81t-32 -82t-81 -32.5t-82 32.5t-33 82zM143 850q0 49 33 81t82 32t81 -32t32 -81t-32 -82t-81 -33t-82 33t-33 82z" />
+<glyph unicode=";" horiz-adv-x="526" d="M143 100.5q0 49.5 33 81t82 31.5q61 0 93 -50t32 -118q-2 -147 -152 -332l-86 29q102 127 121 244q-55 0 -89 32.5t-34 82zM143 850q0 49 33 81t82 32t81 -32t32 -81t-32 -82t-81 -33t-82 33t-33 82z" />
+<glyph unicode="&#x3c;" horiz-adv-x="1433" d="M154 500v147l1136 514v-147l-975 -441l975 -440v-147z" />
+<glyph unicode="=" horiz-adv-x="1394" d="M133 344v137h1129v-137h-1129zM133 672v137h1129v-137h-1129z" />
+<glyph unicode="&#x3e;" horiz-adv-x="1433" d="M143 -14v147l973 440l-973 441v147l1137 -514v-147z" />
+<glyph unicode="?" horiz-adv-x="1032" d="M84 1393q6 12 19.5 31.5t56.5 68.5t91 87t125 68.5t156 30.5q104 0 184.5 -25.5t125.5 -64.5t72.5 -91t35.5 -96t8 -91q0 -78 -24.5 -147.5t-81.5 -139.5t-93 -104l-114 -107q-164 -150 -164 -213q0 -88 94 -172l-104 -90q-53 47 -78.5 76.5t-47 79t-21.5 108.5 q0 90 52 164t161 170q74 68 118.5 116t86.5 119.5t44 139.5q0 225 -254 225q-59 0 -115.5 -25.5t-95 -61.5t-69.5 -72t-45 -62l-14 -25zM399 100.5q0 49.5 33 81t82 31.5t81 -31.5t32 -81t-32 -82t-81 -32.5t-82 32.5t-33 82z" />
+<glyph unicode="@" horiz-adv-x="2195" d="M123 535q0 266 141.5 507.5t378 388t502.5 146.5q215 0 395 -76t294 -199.5t176.5 -276.5t62.5 -312q0 -158 -54.5 -283t-133.5 -195.5t-175 -117.5t-170 -62.5t-129 -15.5q-166 0 -127 182q-209 -184 -412 -182q-276 2 -276 383q0 162 56.5 308.5t141.5 243.5t183 154.5 t184 57.5q190 0 297 -164l29 121l160 -37q-209 -928 -209 -938q6 -6 57 4t123 46t139.5 94.5t112.5 164t39 236.5q0 127 -51.5 249.5t-145.5 224t-242.5 164t-324.5 62.5q-221 0 -421 -125t-318.5 -328.5t-118.5 -424.5q0 -330 255 -552.5t603 -222.5q182 0 321.5 48.5 t341.5 216.5l103 -127q-231 -190 -392 -245.5t-374 -55.5q-270 0 -503.5 119.5t-376 337t-142.5 481.5zM760 422q0 -254 112 -260q78 -2 160 39t147.5 105.5t100.5 105.5t61 77l76 345q-55 135 -117.5 182t-138.5 47q-135 0 -268 -188.5t-133 -452.5z" />
+<glyph unicode="A" horiz-adv-x="1474" d="M61 0l582 1577h188l582 -1577h-190l-199 537h-575l-197 -537h-191zM506 692h461l-230 627z" />
+<glyph unicode="B" horiz-adv-x="1308" d="M174 0v1577h180v-115q117 76 190.5 106.5t164.5 30.5q166 0 284.5 -111.5t118.5 -344.5q-2 -223 -160 -324q129 -59 180.5 -154.5t51.5 -179.5v-10q0 -43 -1 -70.5t-11.5 -85t-29 -97.5t-57 -90t-94 -82t-142.5 -53.5t-198 -21.5q-137 4 -297 117v-92h-180zM354 236 q147 -92 297 -93q78 0 138.5 16.5t97.5 36t63.5 58.5t37.5 61.5t17.5 67.5t6.5 56v46q0 31 -13.5 65t-46 77t-106.5 72.5t-178 33.5q-59 -4 -314 -4v-493zM354 877h112q32 0 102.5 3t102.5 10l85 19q53 12 78.5 32t54.5 47.5t40 67.5t11 91q-2 145 -69.5 215t-161.5 70 q-160 0 -355 -119v-436z" />
+<glyph unicode="C" horiz-adv-x="1357" d="M123 752q0 203 59.5 369.5t154.5 267t208.5 154.5t228.5 54q92 0 174 -22.5t134.5 -53t92 -62.5t58.5 -54l16 -23l-125 -120l-11 17q-7 11 -38 40t-66.5 50.5t-99 38.5t-137.5 17q-186 0 -325.5 -174t-139.5 -499q0 -256 131 -430.5t320 -174.5q45 0 89 6.5t81 16.5 t70.5 23.5t61 28t50.5 28.5t40 27.5l29.5 23.5t18.5 16l6 7l111 -107q-61 -76 -117 -115q-176 -127 -436 -127q-274 0 -456.5 222.5t-182.5 554.5z" />
+<glyph unicode="D" horiz-adv-x="1503" d="M174 0v1577h180v-174q205 193 465 194q111 0 207 -45t178 -137t129 -256t47 -381q0 -342 -179 -572.5t-443 -230.5q-190 4 -404 142v-117h-180zM354 281q197 -129 404 -129q188 0 315 177t127 449q0 315 -111.5 477t-263.5 166q-281 0 -471 -194v-946z" />
+<glyph unicode="E" horiz-adv-x="1150" d="M174 0v1577h651l215 10v-186h-686v-508h584v-156h-584v-561h500l215 10v-186h-895z" />
+<glyph unicode="F" horiz-adv-x="1112" d="M174 0v1577h651l215 10v-186h-686v-508h584v-156h-584v-737h-180z" />
+<glyph unicode="G" horiz-adv-x="1525" d="M123 764q0 184 48 330.5t122 237.5t173 152.5t194.5 86t191.5 26.5q90 0 173 -24.5t138.5 -60t98.5 -71.5t61 -61l20 -24l-124 -121q-4 8 -14.5 21.5t-43.5 47t-70.5 59.5t-100 47.5t-130.5 23.5q-90 0 -180 -35t-176 -108.5t-140.5 -210t-54.5 -316.5q0 -100 30 -201.5 t90 -196t171 -153.5t254 -61q98 0 217 54t119 113v306h-211q-109 0 -166 30v164q74 -18 172 -18h365v-490q0 -135 -150.5 -233t-337.5 -103q-160 0 -290 51.5t-211.5 132.5t-137 187.5t-78 210t-22.5 207.5z" />
+<glyph unicode="H" horiz-adv-x="1519" d="M174 0v1577h180v-684h811v684h181v-1577h-181v737h-811v-737h-180z" />
+<glyph unicode="I" horiz-adv-x="528" d="M174 0v1577h180v-1577h-180z" />
+<glyph unicode="J" horiz-adv-x="585" d="M-20 -369q109 31 181 113t72 221v1612h181v-1612q0 -94 -26 -173t-63.5 -131t-90 -93t-96.5 -61.5t-93 -36.5z" />
+<glyph unicode="K" horiz-adv-x="1265" d="M174 0v1577h180v-711l541 711h227l-590 -737q45 -6 112 -38t106 -77q45 -45 244.5 -365.5t230.5 -355.5v-4h-219q-35 37 -188.5 295t-190.5 297q-82 90 -185 90q-61 0 -88 -6v-676h-180z" />
+<glyph unicode="L" horiz-adv-x="1202" d="M174 0v1577h180v-1401h561l215 10v-186h-956z" />
+<glyph unicode="M" horiz-adv-x="1742" d="M174 0v1577h180l514 -1352l2 -14l2 14l517 1352h180v-1577h-180v1106l2 31l-9 -31l-424 -1106h-174l-424 1106l-8 31l2 -31v-1106h-180z" />
+<glyph unicode="N" horiz-adv-x="1482" d="M174 0v1577h180v-2l762 -1239l14 -29l-2 29v1241h181v-1577h-181v2l-761 1243l-15 29l2 -29v-1245h-180z" />
+<glyph unicode="O" horiz-adv-x="1554" d="M123 790.5q0 225.5 55 389t152.5 252t208 127t241.5 38.5q102 -2 192.5 -25.5t176.5 -80.5t146.5 -146.5t98.5 -229.5t38 -320q0 -227 -55.5 -391t-152 -252.5t-207 -127t-241.5 -38.5t-240.5 38.5t-206 126t-151.5 251t-55 389zM303 795q0 -180 40 -310.5t109.5 -200 t149.5 -100t174 -30.5t174 30.5t149.5 99t110.5 198.5t41 309q0 176 -40 305t-109.5 198.5t-148.5 101t-173 34.5q-94 0 -175 -31t-151.5 -100.5t-110.5 -197.5t-40 -306z" />
+<glyph unicode="P" horiz-adv-x="1265" d="M174 0v1577h180v-123q190 143 365 143q160 -6 301 -140t143 -355q0 -287 -138 -458t-349 -171q-170 2 -322 107v-580h-180zM354 760q166 -129 330 -131q133 4 220 131t87 342q-2 145 -88 233t-184 95q-98 0 -176 -29t-189 -98v-543z" />
+<glyph unicode="Q" horiz-adv-x="1554" d="M123 780q0 182 38 325.5t99.5 235t148.5 150.5t178 82.5t193 23.5q129 -2 239.5 -44t206 -131t151 -253.5t55.5 -388.5q0 -207 -47.5 -362.5t-131.5 -244.5t-181 -135t-214 -58q70 -82 232 -82q53 0 192 32l49 -161q-88 -39 -241 -39q-96 0 -174 25.5t-124.5 68.5t-73 80 t-42.5 78q-244 29 -398.5 218t-154.5 580zM303 784q0 -180 40 -310t109.5 -199.5t149.5 -100.5t174 -31t174 31t149.5 99.5t110.5 198.5t41 308q0 143 -26.5 256t-71.5 184.5t-106.5 120t-127 67.5t-139.5 22q-94 0 -175 -33t-150.5 -103.5t-110.5 -201t-41 -308.5z" />
+<glyph unicode="R" horiz-adv-x="1349" d="M174 0v1577h180v-115q111 70 187.5 102.5t169.5 32.5q168 -4 295 -112.5t127 -335.5q0 -152 -54.5 -258.5t-128 -155.5t-170.5 -69q82 -70 271.5 -338.5t267.5 -323.5v-4h-223q-53 39 -134 146.5t-149 211t-150.5 192.5t-148.5 101q-113 0 -160 2v-653h-180zM354 799h303 q121 2 211 82t93 268q0 139 -76 207.5t-174 73.5q-100 0 -176 -27t-181 -88v-516z" />
+<glyph unicode="S" horiz-adv-x="1361" d="M117 281l125 118q78 -125 202.5 -189.5t272.5 -68.5q143 0 245.5 76t102.5 215q0 53 -22.5 97t-50 71t-84 53.5t-95.5 40t-108 33.5l-21 6q-94 29 -144.5 46.5t-124 55t-111.5 77.5t-66.5 104.5t-28.5 146.5q0 106 36 187.5t88 127.5t119.5 74.5t122 37.5t105.5 9 q150 0 280 -51t211 -139l-127 -111q-131 137 -364 138q-43 0 -87 -11.5t-95.5 -38t-84 -84t-32.5 -139.5q0 -45 22.5 -82t48 -59.5t85 -48t90 -35.5t106.5 -33q90 -29 146.5 -49t132 -60t119 -86t75 -118t31.5 -160q0 -217 -153.5 -336t-370.5 -119q-397 13 -596 304z" />
+<glyph unicode="T" horiz-adv-x="1150" d="M20 1421v156h1110v-156h-468v-1421h-181v1421h-461z" />
+<glyph unicode="U" horiz-adv-x="1460" d="M174 489v1088h180v-1083q0 -94 29 -163t70 -106t96 -59.5t97 -27.5t85 -5t84 5t96.5 27.5t95.5 58.5t69.5 104.5t29.5 160.5v1088h180v-1088q0 -133 -43 -232t-102.5 -151.5t-141 -83t-143 -39t-125.5 -8.5q-66 0 -126 8.5t-143 39t-142.5 83t-102.5 151.5t-43 232z" />
+<glyph unicode="V" horiz-adv-x="1433" d="M61 1577h191l459 -1296l6 -27l6 27l459 1296h190l-561 -1577h-188z" />
+<glyph unicode="W" horiz-adv-x="2019" d="M61 1577h189l328 -1270l4 -24l4 24l327 1270h191l328 -1270l4 -24l4 24l327 1270h191l-447 -1577h-149l-348 1217l-6 36l-7 -36l-344 -1217h-149z" />
+<glyph unicode="X" horiz-adv-x="1345" d="M61 0l500 786l-500 791h220l391 -616l393 616h219l-502 -791l502 -786h-221l-391 612l-389 -612h-222z" />
+<glyph unicode="Y" horiz-adv-x="1263" d="M20 1577h218l397 -627l399 627h209l-520 -821v-756h-178v756z" />
+<glyph unicode="Z" horiz-adv-x="1257" d="M104 0v168l789 1241h-768v168h987v-164l-788 -1245h594q23 -1 44 -1q154 0 193 40v-174q-18 -16 -78.5 -24.5t-111.5 -8.5h-52h-809z" />
+<glyph unicode="[" horiz-adv-x="735" d="M174 -532v2109h418v-123h-246v-1864h246v-122h-418z" />
+<glyph unicode="\" horiz-adv-x="905" d="M51 1577h170l633 -2109h-170z" />
+<glyph unicode="]" horiz-adv-x="735" d="M143 -410h246v1864h-246v123h418v-2109h-418v122z" />
+<glyph unicode="^" horiz-adv-x="1339" d="M82 0l514 1126h147l514 -1126h-147l-440 965l-441 -965h-147z" />
+<glyph unicode="_" horiz-adv-x="1353" d="M113 0h1128v-131h-1128v131z" />
+<glyph unicode="`" horiz-adv-x="729" d="M113 1432l43 145l460 -229l-43 -97z" />
+<glyph unicode="a" horiz-adv-x="1155" d="M123 283q0 72 14.5 124t53 103t120.5 87t207 54q213 29 285 47v129q0 51 -32 117t-95 66q-219 0 -344 -107q-18 -20 -16.5 -39.5t16.5 -34.5l-164 -30q-20 26 -20 64q0 24 8 52q20 74 92 115q218 121 445 121h7q100 0 165 -61.5t84.5 -129t19.5 -133.5v-555 q0 -16 4 -40.5t32.5 -73.5t77.5 -80l-110 -103q-119 47 -158 199q-186 -199 -385 -199q-20 0 -49 4.5t-77 22.5t-86 49t-66.5 91.5t-28.5 140.5zM293 283q0 -49 17.5 -85t42 -51.5t42 -21.5t29.5 -6q104 0 204.5 66.5t174.5 158.5v207q-100 -20 -266 -43 q-152 -20 -198 -74.5t-46 -150.5z" />
+<glyph unicode="b" horiz-adv-x="1292" d="M174 0v1679h172v-770q189 242 414 242h4q180 -2 292.5 -170t112.5 -399q0 -287 -125.5 -447t-347.5 -160q-156 0 -350 156v-131h-172zM346 319q76 -76 174 -126t176 -50q137 0 219 117t82 322q0 162 -64.5 280.5t-168.5 120.5h-4q-243 0 -414 -266v-398z" />
+<glyph unicode="c" horiz-adv-x="1044" d="M113 543q0 295 149 454q144 154 320 154h14q66 -2 125 -21.5t97 -46t67.5 -52t44.5 -44.5l12 -16l-108 -103q-2 4 -8.5 12.5t-27 28t-46 34.5t-68.5 28.5t-92 15.5h-8q-114 0 -205 -113q-94 -117 -94 -331q0 -172 82 -288t215 -116q51 0 81.5 4t83 32t109.5 81l107 -102 q-82 -82 -156 -124t-116 -48.5t-109 -6.5q-209 0 -339 162t-130 406z" />
+<glyph unicode="d" horiz-adv-x="1333" d="M123 545q0 287 126 446.5t347 159.5q156 0 350 -156v684h172v-1409q2 -16 7 -39.5t39 -77t87 -79.5l-141 -99q-143 78 -164 242q-189 -242 -414 -242h-4q-180 2 -292.5 170.5t-112.5 399.5zM295 545q0 -162 64.5 -281t168.5 -121h8q243 0 410 267v397q-80 76 -176 126 t-174 50q-137 0 -219 -116.5t-82 -321.5z" />
+<glyph unicode="e" horiz-adv-x="1187" d="M113 551q0 242 138 421t347 179q119 0 209 -46t136 -107.5t73.5 -139.5t35 -127t7.5 -84v-76h-774q0 -193 85 -318.5t236 -125.5q115 0 195 49q80 47 153 146l105 -101q-72 -88 -141.5 -144.5t-135 -74.5t-95.5 -22.5t-81 -4.5q-227 0 -360 167t-133 409zM309 723h570 q-10 47 -27.5 89t-48.5 87t-84 72.5t-121 27.5q-100 0 -177 -76.5t-112 -199.5z" />
+<glyph unicode="f" horiz-adv-x="825" d="M61 983v143h146v197q0 367 317 367q207 0 363 -129l-111 -107q-119 92 -252 92q-49 0 -79.5 -15t-45 -51t-18.5 -68t-4 -89v-197h332v-143h-332v-983h-170v983h-146z" />
+<glyph unicode="g" horiz-adv-x="1261" d="M123 -221q2 125 45 200.5t127 137.5q-96 41 -105 133q0 96 146 213q-170 96 -170 332q0 92 44 165.5t113.5 113.5t142.5 60.5t140 20.5q63 0 137 -18q133 121 310 120q55 0 123 -20l-29 -143q-37 12 -94 12q-88 0 -166 -33q160 -102 160 -278q0 -115 -44.5 -197 t-115 -122t-140 -56.5t-141.5 -16.5q-70 0 -123 11q-121 -86 -121 -164q6 -6 52.5 -9t120.5 -5l73 -3q119 -6 207 -21t179 -49t140.5 -101.5t49.5 -163.5q0 -199 -144.5 -330t-425.5 -131q-199 0 -345 98.5t-146 243.5zM297 -221q0 -82 94 -135.5t223 -53.5q197 0 301.5 87 t104.5 221q0 53 -36 90t-103.5 55t-128 26.5t-146.5 12.5q-119 0 -147 2q-84 -51 -123 -113.5t-39 -191.5zM338 795q0 -80 26.5 -135.5t70.5 -81t85 -34.5t86 -9t87 11t85 37.5t69.5 81t26.5 130.5q0 113 -86 171t-182 58t-182 -58t-86 -171z" />
+<glyph unicode="h" horiz-adv-x="1241" d="M174 0v1679h172v-790q270 262 492 262q260 0 260 -350v-801h-172v801q0 178 -88 178q-233 0 -492 -268v-711h-172z" />
+<glyph unicode="i" horiz-adv-x="555" d="M174 1475q0 45 29.5 73.5t75 28.5t74 -28.5t28.5 -73.5t-28.5 -75t-74 -30t-75 30t-29.5 75zM193 0v1126h169v-1126h-169z" />
+<glyph unicode="j" horiz-adv-x="452" d="M-72 -401q61 8 111.5 101t50.5 212v1214h170v-1214q0 -178 -87 -308t-193 -167zM72 1475q0 45 29.5 73.5t74.5 28.5t74 -28.5t29 -73.5t-29 -75t-74 -30t-74.5 30t-29.5 75z" />
+<glyph unicode="k" horiz-adv-x="1157" d="M174 0v1679h172v-950q383 268 449 397h174q-35 -133 -467 -458q66 -27 114 -80l338 -381q190 -207 213 -207h-231q-25 8 -102.5 91l-192.5 217l-147 169q-61 63 -99 74q-20 6 -49 -2v-549h-172z" />
+<glyph unicode="l" horiz-adv-x="573" d="M174 299v1380h170v-1380q0 -111 23 -133q45 -45 135 -45l-6 -146q-180 0 -250 70q-72 72 -72 254z" />
+<glyph unicode="m" horiz-adv-x="1882" d="M174 0v1126h172v-223q225 248 426 248q221 0 254 -254q227 254 432 254q260 0 260 -350v-801h-172v801q0 178 -88 178q-74 0 -140.5 -24.5t-123.5 -74t-87 -80t-75 -85.5v-715h-172v801q0 178 -88 178q-74 0 -140.5 -24.5t-123.5 -74t-87 -80t-75 -85.5v-715h-172z" />
+<glyph unicode="n" horiz-adv-x="1261" d="M174 0v1126h172v-237q270 262 492 262q260 0 260 -350v-801h-172v801q0 178 -88 178q-227 0 -492 -268v-711h-172z" />
+<glyph unicode="o" horiz-adv-x="1224" d="M123 563q0 166 41 285t112.5 182.5t154.5 92t181.5 28.5t181.5 -28.5t154.5 -92t112.5 -182.5t41 -285t-41 -284.5t-112.5 -182t-154.5 -92.5t-181.5 -29t-181.5 29t-154.5 92.5t-112.5 182t-41 284.5zM295 563.5q0 -237.5 91 -341t226.5 -103.5t226.5 103.5t91 341 t-91 341t-226.5 103.5t-226.5 -103.5t-91 -341z" />
+<glyph unicode="p" horiz-adv-x="1292" d="M174 -532v1658h172v-217q189 242 414 242h4q180 -2 292.5 -170t112.5 -399q0 -287 -125.5 -447t-347.5 -160q-156 0 -350 156v-663h-172zM346 319q76 -76 174 -126t176 -50q137 0 219 117t82 322q0 162 -64.5 280.5t-168.5 120.5h-4q-243 0 -414 -266v-398z" />
+<glyph unicode="q" horiz-adv-x="1292" d="M123 545q0 287 126 446.5t347 159.5q156 0 350 -156v131h172v-1658h-172v747q-193 -240 -414 -240h-4q-180 2 -292.5 170.5t-112.5 399.5zM295 545q0 -162 64.5 -281t168.5 -121h8q243 0 410 267v397q-80 76 -176 126t-174 50q-137 0 -219 -116.5t-82 -321.5z" />
+<glyph unicode="r" horiz-adv-x="940" d="M174 0v1126h172v-217q141 242 285 242q78 0 146.5 -28.5t96.5 -57.5l29 -27l-119 -114q-49 63 -145 63q-158 0 -293 -282v-705h-172z" />
+<glyph unicode="s" horiz-adv-x="1026" d="M92 205l119 96q45 -82 135 -131t191 -51q92 0 157.5 49t65.5 141q0 55 -43 96t-87 58.5t-124 42t-129 44t-106.5 56.5t-85 92.5t-27.5 130.5q0 78 26.5 138.5t65.5 94.5t90 55.5t91 27.5t79 6q223 0 354 -131l-110 -107q-88 94 -244 95q-39 0 -77 -11.5t-74.5 -54.5 t-36.5 -113q0 -35 17 -60.5t57 -46t70 -31.5t89 -29q74 -23 110.5 -35.5t95 -43t87.5 -62.5t52.5 -87t23.5 -125q0 -162 -115 -248t-277 -86q-131 0 -250.5 59.5t-189.5 170.5z" />
+<glyph unicode="t" horiz-adv-x="819" d="M92 983v143h144v308h172v-308h270v-143h-270v-655q0 -41 2 -66.5t11 -64.5t32.5 -58.5t60.5 -19.5q96 0 178 78l96 -93q-135 -129 -319 -129q-233 0 -233 353v655h-144z" />
+<glyph unicode="u" horiz-adv-x="1261" d="M164 326v800h172v-800q0 -178 88 -179q233 0 491 269v710h172v-1126h-172v236q-272 -260 -491 -261q-260 1 -260 351z" />
+<glyph unicode="v" horiz-adv-x="1144" d="M72 1126h198l293 -870l6 -39l4 19q2 18 2 20q246 813 312 870h186q-35 -43 -140.5 -324.5t-193.5 -541.5l-88 -260h-149z" />
+<glyph unicode="w" horiz-adv-x="1632" d="M72 1126h186l223 -839l6 -43l7 43l239 839h148l239 -839l8 -43l7 43q217 817 258 839h168q-25 -25 -114 -306t-165 -550l-78 -270h-145l-252 868l-248 -868h-162z" />
+<glyph unicode="x" horiz-adv-x="1216" d="M82 0q29 12 187.5 226t250.5 349l-397 551h217l278 -407q266 395 304 407h213q-49 -23 -420 -548l409 -578h-217l-291 434q-295 -426 -321 -434h-213z" />
+<glyph unicode="y" horiz-adv-x="1126" d="M59 -414q137 8 217 88q39 39 74 98.5t90 192.5l56 137l-394 1024h183l305 -790q307 754 352 790h195q-45 -43 -130 -232t-405 -974l-55 -131q-20 -47 -62.5 -113.5t-91.5 -113.5q-119 -115 -291 -125z" />
+<glyph unicode="z" horiz-adv-x="1060" d="M102 0v145l635 838h-635v143h842v-143l-635 -838h525q113 0 145 35v-145q-12 -14 -49 -22.5t-68 -10.5l-31 -2h-729z" />
+<glyph unicode="{" horiz-adv-x="962" d="M164 526v103q88 0 137 38t55 74l4 37v611q0 47 9.5 94t31 99t68.5 85t113 33q59 0 118.5 -16.5t90.5 -32.5l28 -19l-57 -143q-57 39 -180 39q-49 0 -50 -139v-613q0 -6 -1 -16t-9 -35t-20.5 -48.5t-39 -51t-61.5 -47.5q37 -20 64 -48t39 -50.5t19 -48t8 -36t1 -16.5v-612 q0 -139 50 -140q55 0 100 10.5t63 18.5l17 10l57 -143q-102 -68 -237 -68q-66 0 -113 33t-68.5 85t-31 99t-9.5 95v610q0 6 -1 16t-12 36t-29.5 45.5t-58.5 35.5t-95 16z" />
+<glyph unicode="|" horiz-adv-x="503" d="M174 -532v2232h156v-2232h-156z" />
+<glyph unicode="}" horiz-adv-x="962" d="M143 -477l58 143q57 -39 180 -39q49 0 49 140v610q0 14 4 37.5t36 77t89 86.5q-57 33 -89 83t-36 74.5t-4 40.5v613q0 139 -49 139q-55 0 -100 -10.5t-64 -18.5l-16 -10l-58 143q102 68 238 68q66 0 113 -33t68.5 -85t30.5 -99t9 -94v-611q0 -6 1 -16t11.5 -36t29 -45 t59 -35.5t96.5 -16.5v-103q-53 0 -93 -14t-58.5 -33.5t-30 -44t-13.5 -36t-2 -19.5v-612q0 -47 -9 -94.5t-30.5 -99.5t-69 -85t-112.5 -33q-59 0 -118.5 16.5t-90.5 32.5z" />
+<glyph unicode="~" horiz-adv-x="1349" d="M123 709q10 8 31.5 20t99.5 32.5t168 20.5q82 0 256 -63q176 -61 262 -62q72 0 130 11.5t81 23.5l23 13l53 -103q-106 -68 -287 -67q-94 0 -295 69q-154 55 -223 55q-78 0 -137.5 -12t-79.5 -24l-21 -13z" />
+<glyph unicode="&#xad;" d="M113 492v143h483v-143h-483z" />
+<glyph unicode="&#x2000;" horiz-adv-x="860" />
+<glyph unicode="&#x2001;" horiz-adv-x="1722" />
+<glyph unicode="&#x2002;" horiz-adv-x="860" />
+<glyph unicode="&#x2003;" horiz-adv-x="1722" />
+<glyph unicode="&#x2004;" horiz-adv-x="573" />
+<glyph unicode="&#x2005;" horiz-adv-x="430" />
+<glyph unicode="&#x2006;" horiz-adv-x="286" />
+<glyph unicode="&#x2007;" horiz-adv-x="286" />
+<glyph unicode="&#x2008;" horiz-adv-x="215" />
+<glyph unicode="&#x2009;" horiz-adv-x="344" />
+<glyph unicode="&#x200a;" horiz-adv-x="94" />
+<glyph unicode="&#x2010;" d="M113 492v143h483v-143h-483z" />
+<glyph unicode="&#x2011;" d="M113 492v143h483v-143h-483z" />
+<glyph unicode="&#x2012;" d="M113 492v143h483v-143h-483z" />
+<glyph unicode="&#x2013;" horiz-adv-x="1312" d="M61 498v133h1129v-133h-1129z" />
+<glyph unicode="&#x2014;" horiz-adv-x="1558" d="M82 498v133h1395v-133h-1395z" />
+<glyph unicode="&#x201c;" horiz-adv-x="774" d="M92 1245q2 147 152 332l86 -29q-102 -127 -123 -243q55 0 90 -33t35 -82t-33 -81t-82 -32q-61 0 -93 50t-32 118zM442 1245q2 147 152 332l86 -29q-102 -127 -123 -243q55 0 90 -33t35 -82t-33 -81t-82 -32q-61 0 -93 50t-32 118z" />
+<glyph unicode="&#x201d;" horiz-adv-x="774" d="M92 1464q0 49 33 81t82 32q61 0 93 -50t32 -118q-2 -147 -152 -332l-86 29q102 127 121 244q-55 0 -89 32.5t-34 81.5zM442 1464q0 49 33 81t82 32q59 0 92 -50t33 -118q-2 -147 -152 -332l-86 29q102 127 121 244q-55 0 -89 32.5t-34 81.5z" />
+<glyph unicode="&#x202f;" horiz-adv-x="344" />
+<glyph unicode="&#x205f;" horiz-adv-x="430" />
+<glyph unicode="&#x2212;" horiz-adv-x="1331" d="M102 496v137h1127v-137h-1127z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1125" d="M0 1125h1125v-1125h-1125v1125z" />
+</font>
+</defs></svg> 
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/css/font-files/League_Gothic-webfont.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/css/font-files/League_Gothic-webfont.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/css/font-files/League_Gothic-webfont.svg	(revision 29468)
@@ -0,0 +1,235 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Generated in 2009 by FontLab Studio Copyright info pending
+</metadata>
+<defs>
+<font id="webfontbDMP4rcs" horiz-adv-x="724" >
+<font-face units-per-em="2048" ascent="1505" descent="-543" />
+<missing-glyph horiz-adv-x="315" />
+<glyph unicode=" "  horiz-adv-x="315" />
+<glyph unicode="&#x09;" horiz-adv-x="315" />
+<glyph unicode="&#xa0;" horiz-adv-x="315" />
+<glyph unicode="!" horiz-adv-x="387" d="M74 1505h239l-55 -1099h-129zM86 0v227h215v-227h-215z" />
+<glyph unicode="&#x22;" horiz-adv-x="329" d="M57 1505h215l-30 -551h-154z" />
+<glyph unicode="#" horiz-adv-x="1232" d="M49 438l27 195h198l37 258h-196l26 194h197l57 420h197l-57 -420h260l57 420h197l-58 -420h193l-27 -194h-192l-37 -258h190l-26 -195h-191l-59 -438h-197l60 438h-261l-59 -438h-197l60 438h-199zM471 633h260l37 258h-260z" />
+<glyph unicode="$" horiz-adv-x="692" d="M37 358l192 13q12 -186 129 -187q88 0 93 185q0 29 -8.5 59.5t-19.5 55t-32.5 60.5t-34.5 53l-40 55q-28 38 -35 50q-68 92 -101 141.5t-70.5 141.5t-37.5 170q4 293 215 342v131h123v-125q201 -23 235 -282l-192 -25q-6 57 -28 92t-65 33q-80 -2 -84 -162 q0 -29 8.5 -60.5t18.5 -54t32.5 -59.5t34.5 -53l41 -59q30 -42 38 -52q6 -10 32 -48l37 -52q10 -14 33.5 -51t34.5 -58l26 -55q16 -35 23.5 -61.5t13.5 -60.5t6 -64q-4 -338 -245 -369v-217h-123v221q-236 41 -250 352z" />
+<glyph unicode="%" horiz-adv-x="1001" d="M55 911v437q0 6 1 18t9.5 42t23.5 53.5t48 42t78 18.5q70 0 110 -44t44 -87l4 -43v-437q0 -6 -1 -18t-9.5 -43t-23.5 -53.5t-47 -42t-77 -19.5q-72 0 -112 44t-44 89zM158 0l553 1505h131l-547 -1505h-137zM178 911q-4 -55 37 -55q16 0 25.5 14.5t9.5 26.5v14v437 q2 55 -35 55q-18 0 -27.5 -13.5t-9.5 -27.5v-14v-437zM631 158v436q0 6 1 18.5t9 43t23.5 53t48 42t78.5 19.5q70 0 109.5 -44t43.5 -87l4 -45v-436q0 -6 -1 -18.5t-9 -42t-23.5 -53.5t-47 -42t-76.5 -18q-72 0 -112 43t-44 88zM754 158q-4 -57 37 -58q16 0 24 14.5t8 28.5 l2 15v436q2 55 -34 55q-18 0 -27.5 -13t-9.5 -28v-14v-436z" />
+<glyph unicode="&#x26;" horiz-adv-x="854" d="M49 315q0 115 44 214.5t126 222.5q-106 225 -106 442v18q0 12 5 46t13 65t28.5 69t48.5 65.5t73 46t102 18.5q78 0 134 -34t80 -82t37 -96t13 -81v-35q0 -162 -205 -434q76 -174 148 -285q33 96 47 211l176 -33q-16 -213 -92 -358q55 -63 92 -76v-235q-23 0 -86 37.5 t-123 101.5q-123 -139 -252 -139t-216 97t-87 234zM262 326q2 -66 29.5 -108t70.5 -42q59 0 125 86q-88 139 -174 295q-6 -10 -14 -28.5t-22.5 -77.5t-14.5 -125zM305 1194q0 -111 55 -246q100 156 101 252q-2 2 0 15.5t-2 36t-11.5 43t-23.5 36t-41 15.5q-39 0 -58.5 -38 t-19.5 -75v-39z" />
+<glyph unicode="'" horiz-adv-x="309" d="M45 1012l72 266h-72v227h215v-227l-113 -266h-102z" />
+<glyph unicode="(" horiz-adv-x="561" d="M66 645q0 143 29.5 292.5t72.5 261.5t87 204t73 139l30 47l162 -84l-27.5 -40.5t-62.5 -114.5t-79 -182.5t-61.5 -238t-27.5 -284.5t26.5 -282.5t64.5 -240.5t76 -178t65 -118l26 -39l-162 -84q-12 18 -31.5 50t-69.5 133.5t-89 207t-70.5 257t-31.5 294.5z" />
+<glyph unicode=")" horiz-adv-x="561" d="M41 -213q10 14 27.5 41t62.5 115t79 181t61.5 236.5t27.5 284.5t-26.5 282.5t-64.5 241t-76 179t-64 118.5l-27 39l162 84q12 -18 31.5 -50t69.5 -134t89 -206.5t71 -257.5t32 -296t-30 -292.5t-74 -261t-87 -203t-72 -138.5l-30 -47z" />
+<glyph unicode="*" horiz-adv-x="677" d="M74 1251l43 148l164 -70l-19 176h154l-19 -176l164 70l43 -148l-172 -34l115 -138l-131 -80l-78 152l-76 -152l-131 80l115 138z" />
+<glyph unicode="+" horiz-adv-x="1060" d="M74 649v172h370v346h172v-346h371v-172h-371v-346h-172v346h-370z" />
+<glyph unicode="," horiz-adv-x="309" d="M45 0v227h215v-227l-113 -266h-102l72 266h-72z" />
+<glyph unicode="-" horiz-adv-x="444" d="M74 455v194h297v-194h-297z" />
+<glyph unicode="." horiz-adv-x="321" d="M53 0v227h215v-227h-215z" />
+<glyph unicode="/" horiz-adv-x="720" d="M8 -147l543 1652h162l-537 -1652h-168z" />
+<glyph unicode="0" d="M68 309v887q0 12 2 34.5t17 79t43 99.5t88.5 78t144 35t144 -34t88.5 -81t43 -95t17 -83l2 -33v-887q0 -12 -2 -34.5t-17 -79t-43 -99.5t-88.5 -77.5t-144 -34.5t-144 33.5t-88.5 80.5t-43 95.5t-17 80.5zM289 309q0 -12 1 -30.5t19.5 -49t53 -30.5t53 27.5t18.5 56.5 l2 26v887q0 12 -1 30.5t-19.5 49.5t-53 31t-53 -28t-18.5 -54l-2 -29v-887z" />
+<glyph unicode="1" horiz-adv-x="475" d="M25 1180v141q82 16 140 62.5t77 82.5l18 39h133v-1505h-221v1180h-147z" />
+<glyph unicode="2" horiz-adv-x="731" d="M55 0v219l39 62q25 39 88.5 152.5t112.5 220t91 241.5t44 238q0 184 -73.5 184t-73.5 -184v-105h-222v105q0 389 295 389t295 -375q0 -336 -346 -928h350v-219h-600z" />
+<glyph unicode="3" horiz-adv-x="686" d="M45 1071q0 70 2 115t17.5 115.5t44 112.5t84 75t135.5 33q78 0 135 -31t84.5 -71t44 -92t19.5 -79.5t3 -50.5q0 -291 -106 -397l-2 -2q127 -100 127 -414q0 -25 -3 -58.5t-19.5 -99t-44 -116t-85 -89t-135.5 -38.5q-80 0 -136 31.5t-86 75.5t-47.5 112.5t-20.5 118 t-3 112.5h217q2 -150 17.5 -203t58.5 -53q45 0 57.5 50.5t12.5 140.5q0 18 1 66t0 62.5t-4 49.5t-10 46l-18 33q-12 22 -29.5 29t-45 15t-62.5 10h-19v184q37 2 62.5 7.5t45 14.5t31 21.5t17.5 29.5t9 39.5t3 51.5v62v43q0 45 -1 68.5t-7 58t-21.5 51t-39.5 16.5 q-41 0 -52.5 -49t-13.5 -207h-217z" />
+<glyph unicode="4" horiz-adv-x="684" d="M25 328v194l323 983h221v-983h103v-194h-103v-328h-202v328h-342zM213 522h154v471v45h-13l-12 -45z" />
+<glyph unicode="5" horiz-adv-x="704" d="M74 438h221v-59q0 -115 14.5 -159t52.5 -44q37 0 52.5 45t15.5 156v336q0 111 -70 110q-33 0 -59.5 -40t-26.5 -70h-186v792h535v-219h-344v-313q8 6 21 15t47 23.5t59 12.5q78 0 133 -40t76.5 -99.5t28.5 -100.5t7 -71v-336q0 -393 -289 -393q-78 0 -133 29.5 t-84.5 71.5t-46 108.5t-20.5 118.5t-4 126z" />
+<glyph unicode="6" horiz-adv-x="700" d="M66 309v856q0 356 288.5 356.5t288.5 -356.5v-94h-221q0 162 -11.5 210t-56.5 48q-39 0 -53 -37t-14 -127v-268q59 37 110 37q80 0 133.5 -36t76 -93t29.5 -101.5t7 -87.5v-307q0 -41 -8 -84t-34 -103.5t-89 -99t-157.5 -38.5t-158 38.5t-89 99t-33.5 103.5t-8 84z M287 244q0 -20 17.5 -44t49.5 -24q31 0 49.5 24.5t18.5 43.5v450q0 18 -18.5 43t-49 25t-48 -20.5t-19.5 -41.5v-456z" />
+<glyph unicode="7" horiz-adv-x="589" d="M8 1286v219h557v-221l-221 -1284h-229l225 1286h-332z" />
+<glyph unicode="8" horiz-adv-x="696" d="M53 322v176q0 188 115 297q-102 102 -102 276v127q0 23 2 49.5t18 79.5t43 93t84 71t135 31t135.5 -31t84 -71t43 -93t18.5 -79.5t2 -49.5v-127q0 -174 -103 -276q115 -109 115 -297v-176q0 -25 -2 -52.5t-18.5 -83t-45 -96.5t-88 -73.5t-141.5 -32.5t-141.5 32.5 t-88 73.5t-45 96.5t-18.5 83t-2 52.5zM268 410q2 -127 17.5 -175.5t62.5 -48.5q37 0 54.5 30t21.5 71t4 123q0 152 -13.5 209t-66.5 57t-66.5 -57t-13.5 -209zM283 1120q0 -127 12 -177t53 -50t53.5 50t12.5 177q0 113 -12.5 160t-53.5 47q-37 0 -50 -44t-15 -163z" />
+<glyph unicode="9" horiz-adv-x="700" d="M57 340v94h222q0 -162 11 -210t56 -48q39 0 53.5 37t14.5 127v283q-59 -37 -111 -37q-80 0 -133 35.5t-75.5 93t-30 101.5t-7.5 87v293q0 41 8.5 84t34 103.5t89 99.5t157.5 39t157.5 -39t89 -99.5t34 -103.5t8.5 -84v-856q0 -356 -289 -356t-289 356zM279 825 q0 -18 18 -42.5t49 -24.5t48.5 20.5t19.5 40.5v443q0 20 -17.5 43.5t-50.5 23.5q-31 0 -49 -24.5t-18 -42.5v-437z" />
+<glyph unicode=":" horiz-adv-x="362" d="M74 0v227h215v-227h-215zM74 893v227h215v-227h-215z" />
+<glyph unicode=";" horiz-adv-x="362" d="M74 0v227h215v-227l-113 -266h-102l71 266h-71zM74 893v227h215v-227h-215z" />
+<glyph unicode="&#x3c;" horiz-adv-x="1058" d="M74 649v160l911 475v-199l-698 -356l698 -356v-199z" />
+<glyph unicode="=" horiz-adv-x="1058" d="M74 477v172h911v-172h-911zM74 864v172h911v-172h-911z" />
+<glyph unicode="&#x3e;" horiz-adv-x="1058" d="M74 174v199l698 356l-698 356v199l911 -475v-160z" />
+<glyph unicode="?" horiz-adv-x="645" d="M25 1260q12 33 33.5 68.5t59.5 81.5t96 76t124 27q82 -2 138 -33.5t82 -81.5t36 -91t10 -80q0 -82 -80 -219l-57 -96q-18 -32 -42 -106.5t-24 -143.5v-256h-190v256q0 102 24.5 195t48 140t64.5 117q43 72 53 113q6 27 -11 60.5t-56 33.5q-47 2 -82 -47t-49 -98zM199 0 h215v227h-215v-227z" />
+<glyph unicode="@" horiz-adv-x="872" d="M66 303v889q0 43 17 94t56 106.5t117 92.5t184.5 37t184 -37t116.5 -92.5t56.5 -106.5t17.5 -94v-793h-164l-20 56q-4 -8 -11.5 -19.5t-37 -30t-64.5 -18.5q-145 0 -145 172v485q0 170 145 170q35 0 63.5 -17t39.5 -34l10 -16v45q0 51 -45 104.5t-145.5 53.5 t-145.5 -53.5t-45 -104.5v-889q0 -53 44 -103t146 -50q117 0 168 63l152 -86q-109 -143 -320 -143q-106 0 -184 35.5t-117 90t-56 103.5t-17 90zM535 573q0 -53 47 -53q49 0 49 53v455q0 53 -49 53q-47 0 -47 -53v-455z" />
+<glyph unicode="A" horiz-adv-x="765" d="M20 0l228 1505h270l227 -1505h-215l-41 307h-213l-40 -307h-216zM307 541h152l-64 475l-6 39h-12l-6 -39z" />
+<glyph unicode="B" horiz-adv-x="745" d="M82 0v1505h194q205 0 304.5 -91t99.5 -308q0 -106 -29.5 -175t-107.5 -136q6 -2 16 -9.5t37 -35t47.5 -65.5t36.5 -106.5t16 -152.5q0 -414 -342 -426h-272zM303 219q74 0 109 31q55 55 55 201q0 82 -16.5 134t-46 70.5t-48 22.5t-45.5 4h-8v-463zM303 885q23 0 34 1 t40 10t45 28.5t30.5 60.5t14.5 100.5t-14.5 100.5t-30.5 60.5t-45 28.5t-40 10t-34 1v-401z" />
+<glyph unicode="C" horiz-adv-x="708" d="M68 309v887q0 12 2 34.5t17 79t43 99.5t88.5 78t144 35t144 -34t88.5 -81t43 -95t17 -83l2 -33v-207h-206v207q-2 0 0 11.5t-3.5 27.5t-12.5 32.5t-24.5 28t-43.5 11.5q-35 0 -54.5 -28t-21.5 -54l-2 -29v-887q0 -12 2 -30.5t21.5 -49t54.5 -30.5q41 0 62.5 27.5 t21.5 56.5v26v207h206v-207q0 -12 -2 -34.5t-17 -79t-43 -99.5t-88.5 -77.5t-144 -34.5t-144 33.5t-88.5 80.5t-43 95.5t-17 80.5z" />
+<glyph unicode="D" horiz-adv-x="761" d="M82 0v1505h174q90 0 153.5 -12t112.5 -33.5t80 -67.5t50.5 -95.5t28.5 -139.5t12 -177t3 -228.5t-3 -228.5t-12 -176t-28.5 -138t-50.5 -95t-80 -67.5t-112.5 -34t-153.5 -12.5h-174zM303 221q94 0 123 41q39 55 41 320v172v52q0 330 -25 402q-23 66 -92 74q-18 2 -47 2 v-1063z" />
+<glyph unicode="E" horiz-adv-x="628" d="M82 0v1505h506v-227h-285v-395h205v-242h-205v-414h285v-227h-506z" />
+<glyph unicode="F" horiz-adv-x="616" d="M82 0v1505h526v-227h-305v-395h205v-228h-205v-655h-221z" />
+<glyph unicode="G" horiz-adv-x="737" d="M68 274v35v887q0 12 2 34.5t17 79t43 99.5t88.5 78t144 35t144 -34t88.5 -81t43 -95t17 -83l2 -33v-231h-221v231q0 12 -1 30.5t-19.5 49.5t-53 31t-53 -28t-18.5 -54l-2 -29v-905q0 -12 1 -30.5t19.5 -49.5t53 -31t53 28t18.5 54l2 29v272h-88v187h309v-750h-131l-26 72 q-70 -88 -172 -88q-78 0 -134.5 33.5t-80 80.5t-34.5 95t-11 81z" />
+<glyph unicode="H" horiz-adv-x="778" d="M82 0v1505h221v-622h172v622h221v-1505h-221v655h-172v-655h-221z" />
+<glyph unicode="I" horiz-adv-x="385" d="M82 0v1505h221v-1505h-221z" />
+<glyph unicode="J" horiz-adv-x="423" d="M12 -14v217q4 0 12.5 -1t29 2t35.5 12t28.5 34.5t13.5 62.5v1192h221v-1226q0 -137 -79 -221q-70 -74 -222 -73q-19 0 -39 1z" />
+<glyph unicode="K" horiz-adv-x="768" d="M82 0v1505h221v-501v-25h8l11 25l184 501h215l-203 -495l230 -1010h-216l-153 655l-6 31h-6l-13 -31l-51 -123v-532h-221z" />
+<glyph unicode="L" horiz-adv-x="604" d="M82 0v1505h221v-1300h293v-205h-514z" />
+<glyph unicode="M" horiz-adv-x="991" d="M82 0v1505h270l131 -688l11 -80h4l10 80l131 688h270v-1505h-204v946v64h-13l-8 -64l-141 -946h-94l-142 946l-8 64h-12v-64v-946h-205z" />
+<glyph unicode="N" horiz-adv-x="808" d="M82 0v1505h197l215 -784l18 -70h12v70v784h203v-1505h-197l-215 784l-18 70h-12v-70v-784h-203z" />
+<glyph unicode="O" d="M68 309v887q0 12 2 34.5t17 79t43 99.5t88.5 78t144 35t144 -34t88.5 -81t43 -95t17 -83l2 -33v-887q0 -12 -2 -34.5t-17 -79t-43 -99.5t-88.5 -77.5t-144 -34.5t-144 33.5t-88.5 80.5t-43 95.5t-17 80.5zM289 309q0 -12 1 -30.5t19.5 -49t53 -30.5t53 27.5t18.5 56.5 l2 26v887q0 12 -1 30.5t-19.5 49.5t-53 31t-53 -28t-18.5 -54l-2 -29v-887z" />
+<glyph unicode="P" horiz-adv-x="720" d="M82 0v1505h221q166 0 277.5 -105.5t111.5 -345t-111.5 -346t-277.5 -106.5v-602h-221zM303 827q102 0 134 45.5t32 174.5q0 131 -33 182t-133 51v-453z" />
+<glyph unicode="Q" horiz-adv-x="729" d="M68 309v887q0 12 2 34.5t17 79t43 99.5t88.5 78t144 35t144 -34t88.5 -81t43 -95t17 -83l2 -33v-887q0 -94 -45 -182q33 -43 88 -53v-189q-160 0 -227 117q-55 -18 -111 -18q-84 0 -144 33.5t-88 80.5t-43 95.5t-17 80.5zM289 309q0 -12 1 -30.5t19.5 -49t53 -30.5 t53 27.5t18.5 56.5l2 26v887q0 12 -1 30.5t-19.5 49.5t-53 31t-53 -28t-18.5 -54l-2 -29v-887z" />
+<glyph unicode="R" horiz-adv-x="739" d="M82 0v1505h221q377 0 377 -434q0 -258 -123 -342l141 -729h-221l-115 635h-59v-635h-221zM303 840q31 0 52.5 5t51 24.5t45 68.5t15.5 125t-15.5 125t-45 68.5t-51 24.5t-52.5 5v-446z" />
+<glyph unicode="S" horiz-adv-x="702" d="M37 422l217 20q0 -256 104 -256q90 0 91 166q0 29 -8.5 59.5t-32 73.5t-36.5 64l-54 79q-40 58 -48 72q-66 96 -102.5 158t-68 149t-31.5 162q0 139 71.5 245t216.5 108h10q88 0 150 -35q66 -37 95.5 -101.5t42 -127t12.5 -136.5l-217 -20q0 217 -89 217q-76 -2 -75 -150 q0 -18 4 -39.5t10 -39t18.5 -43t20.5 -40t28 -43.5l28 -43l33 -48l32 -46l104 -159q31 -49 67 -139.5t36 -166.5q0 -379 -308 -378q-82 0 -142 25.5t-94 63.5t-53.5 99t-25.5 117.5t-6 132.5z" />
+<glyph unicode="T" horiz-adv-x="647" d="M4 1278v227h639v-227h-209v-1278h-221v1278h-209z" />
+<glyph unicode="U" horiz-adv-x="749" d="M80 309v1196h221v-1196q0 -12 1 -30.5t19.5 -49t53.5 -30.5t53 27.5t18 56.5l3 26v1196h221v-1196q0 -12 -2 -34.5t-17.5 -79t-43 -99.5t-88 -77.5t-144.5 -34.5t-144.5 33.5t-88 80.5t-43 95.5t-17.5 80.5z" />
+<glyph unicode="V" horiz-adv-x="716" d="M18 1505h215l111 -827l8 -64h13l8 64l110 827h215l-229 -1505h-221z" />
+<glyph unicode="W" horiz-adv-x="1036" d="M25 1505h204l88 -782l5 -49h16l6 49l94 782h160l94 -782l6 -49h17l4 49l88 782h205l-203 -1505h-172l-102 713l-13 88h-8l-12 -88l-103 -713h-172z" />
+<glyph unicode="X" horiz-adv-x="737" d="M16 0l244 791l-240 714h218l120 -381l7 -18h8l6 18l121 381h217l-240 -714l244 -791h-217l-127 449l-4 18h-8l-5 -18l-127 -449h-217z" />
+<glyph unicode="Y" horiz-adv-x="700" d="M14 1505h217l111 -481l6 -14h4l6 14l111 481h217l-225 -864v-641h-221v641z" />
+<glyph unicode="Z" horiz-adv-x="626" d="M20 0v238l347 1048h-297v219h536v-219l-352 -1067h352v-219h-586z" />
+<glyph unicode="[" horiz-adv-x="538" d="M82 -16v1521h399v-196h-202v-1325h202v-197h-399v197z" />
+<glyph unicode="\" horiz-adv-x="792" d="M8 1692h162l614 -1872h-168z" />
+<glyph unicode="]" horiz-adv-x="538" d="M57 -16h203v1325h-203v196h400v-1521v-197h-400v197z" />
+<glyph unicode="^" horiz-adv-x="1101" d="M53 809l381 696h234l381 -696h-199l-299 543l-299 -543h-199z" />
+<glyph unicode="_" horiz-adv-x="1210" d="M74 -154h1063v-172h-1063v172z" />
+<glyph unicode="`" horiz-adv-x="1024" d="M293 1489h215l106 -184h-159z" />
+<glyph unicode="a" horiz-adv-x="681" d="M49 260q0 106 34 187t83 124t98 73t88 50.5t43 36.5v37v86q0 102 -57 102q-20 0 -32.5 -9t-17.5 -32.5t-7 -37t-2 -47.5v-39h-207v47q0 123 80.5 211t197.5 88q102 0 177 -74t75 -180v-351v-337q0 -109 14 -195h-202q-18 20 -19 90h-14q-20 -37 -65.5 -71.5t-100.5 -34.5 q-59 0 -112.5 60t-53.5 216zM252 291q0 -104 57 -105q35 0 60.5 19.5t25.5 48.5v287q-143 -62 -143 -250z" />
+<glyph unicode="b" horiz-adv-x="686" d="M82 0v1505h207v-458q88 90 164 90q78 0 118.5 -69t40.5 -150v-715q0 -82 -41 -150.5t-118 -68.5q-33 0 -74 22.5t-66 44.5l-24 23v-74h-207zM289 246q0 -29 19.5 -48.5t42 -19.5t39 19.5t16.5 48.5v628q0 29 -16.5 48.5t-39 19.5t-42 -21.5t-19.5 -46.5v-628z" />
+<glyph unicode="c" horiz-adv-x="645" d="M66 315v490q0 332 264 332q137 0 201.5 -71t64.5 -251v-88h-207v135q0 51 -12 70.5t-47 19.5q-57 0 -58 -90v-604q0 -90 58 -90q35 0 47 19.5t12 70.5v156h207v-109q0 -180 -64.5 -250.5t-201.5 -70.5q-264 -1 -264 331z" />
+<glyph unicode="d" horiz-adv-x="686" d="M74 203v715q0 82 41 150.5t118 68.5q33 0 74 -22.5t66 -45.5l24 -22v458h207v-1505h-207v74q-88 -90 -164 -90q-78 0 -118.5 68.5t-40.5 150.5zM281 246q0 -29 16 -48.5t38.5 -19.5t42 19.5t19.5 48.5v628q0 25 -19.5 46.5t-42 21.5t-38.5 -19.5t-16 -48.5v-628z" />
+<glyph unicode="e" horiz-adv-x="659" d="M66 279v563q0 12 2 31.5t16 70.5t40 90t81 71t129 32q76 0 130 -30t79.5 -73t40 -85t14.5 -72l2 -29v-326h-342v-243v-13q0 -8 4 -27.5t11.5 -34t23.5 -26.5t37 -12q35 0 53.5 27.5t18.5 56.5l2 29v122h192v-129q0 -12 -2 -31.5t-16.5 -68.5t-39 -88t-79.5 -69.5 t-131 -30.5q-74 0 -129.5 30.5t-80 73.5t-38.5 86t-16 74zM258 684h150v158q0 12 -1 31.5t-19.5 51t-53.5 31.5q-33 0 -52.5 -28.5t-21.5 -57.5l-2 -28v-158z" />
+<glyph unicode="f" horiz-adv-x="475" d="M20 934v186h105v17v14q0 51 2 84t14.5 92t35 94t70.5 63.5t115 28.5q29 0 53.5 -3t35.5 -7l8 -4v-178q-27 8 -62 8q-66 0 -65 -180v-16v-13h104v-186h-104v-934h-207v934h-105z" />
+<glyph unicode="g" horiz-adv-x="700" d="M12 -184q0 94 162 170q-125 35 -125 149q0 45 40 93t89 75q-51 35 -80.5 95.5t-34.5 105.5l-4 43v305q0 12 2 30.5t16.5 67.5t39 87t79 69t126.5 31q135 0 206 -103q102 102 170 103v-185q-72 0 -120 -24l10 -70v-317q0 -10 -2 -29.5t-17.5 -67t-40 -84t-79 -66.5 t-127.5 -30q-27 0 -39 2q-29 -25 -29 -51q0 -16 11 -28.5t42 -20.5t45.5 -10t59.5 -11q57 -8 101 -21t89 -41t70.5 -78t25.5 -120q0 -152 -103 -219t-251 -67q-164 4 -248 52t-84 165zM213 -150q0 -78 135 -77q59 0 108.5 19.5t49.5 55.5q0 33 -20.5 50.5t-90.5 29.5 l-106 21q-76 -44 -76 -99zM262 509q0 -17 15.5 -45t44.5 -28q31 0 47 25.5t16 50.5v25v307q-1 1 -1 3.5t1 7.5t1 6q0 8 -3 19q-4 15 -9 30.5t-18.5 25.5t-33.5 10q-29 0 -44.5 -25.5t-15.5 -52.5v-24v-307v-28z" />
+<glyph unicode="h" horiz-adv-x="690" d="M82 0v1505h207v-479l32 32q30 30 66.5 54.5t69.5 24.5q76 0 115.5 -69t39.5 -150v-918h-206v887q0 49 -50 49q-18 0 -34.5 -13.5t-24.5 -25.5l-8 -14v-883h-207z" />
+<glyph unicode="i" horiz-adv-x="370" d="M82 0v1120h207v-1120h-207zM82 1298v207h207v-207h-207z" />
+<glyph unicode="j" horiz-adv-x="364" d="M-45 -182q29 -8 57 -8q64 0 64 142v10.5v10.5v1147h207v-1149q0 -51 -2 -83.5t-14.5 -90t-35 -92.5t-70.5 -62.5t-116 -27.5q-29 0 -51.5 3t-30.5 5l-8 4v191zM76 1298v207h207v-207h-207z" />
+<glyph unicode="k" horiz-adv-x="641" d="M82 0v1505h207v-678v-36h10l12 36l101 293h186l-149 -364l188 -756h-199l-102 453l-4 16h-10l-7 -16l-26 -66v-387h-207z" />
+<glyph unicode="l" horiz-adv-x="370" d="M82 0v1505h207v-1505h-207z" />
+<glyph unicode="m" horiz-adv-x="1021" d="M82 0v1120h207v-94q2 0 32.5 30.5t68.5 55.5t71 25q100 0 139 -125l43 41t76 60.5t69 23.5q76 0 116 -69t40 -150v-918h-194v887q0 49 -56 49q-18 0 -37.5 -13.5t-29.5 -25.5l-11 -14v-883h-194v887q0 49 -55 49q-18 0 -38 -13.5t-30 -25.5l-10 -14v-883h-207z" />
+<glyph unicode="n" horiz-adv-x="690" d="M82 0v1120h207v-94l32 32q30 30 66.5 54.5t69.5 24.5q76 0 115.5 -69t39.5 -150v-918h-206v887q0 49 -50 49q-18 0 -34.5 -13.5t-24.5 -25.5l-8 -14v-883h-207z" />
+<glyph unicode="o" horiz-adv-x="657" d="M63 279v563q0 12 1.5 31.5t15.5 70.5t38.5 90t80 71t129.5 32q76 0 130 -30t79.5 -73t40 -85t16.5 -72v-29v-576q0 -12 -1 -31.5t-15.5 -68.5t-40 -88t-80 -69.5t-129.5 -30.5q-74 0 -129.5 30.5t-80 73.5t-38.5 86t-14 74zM257 259q0 -9 3 -20q4 -17 10 -34t21.5 -28 t36.5 -11q35 0 52 27.5t17 56.5l2 29v563q-2 0 0 11q1 4 1 8q0 9 -3 21q-4 17 -10 33.5t-21.5 28.5t-37.5 12q-33 0 -50.5 -28.5t-19.5 -57.5v-28v-563q1 -1 1 -4t-1 -9t-1 -7z" />
+<glyph unicode="p" horiz-adv-x="686" d="M82 -385v1505h207v-73q88 90 164 90q78 0 118.5 -69t40.5 -150v-715q0 -82 -41 -150.5t-118 -68.5q-33 0 -74 22.5t-66 44.5l-24 23v-459h-207zM289 246q0 -25 19.5 -46.5t42 -21.5t39 19.5t16.5 48.5v628q0 29 -16.5 48.5t-39 19.5t-42 -19.5t-19.5 -48.5v-628z" />
+<glyph unicode="q" horiz-adv-x="686" d="M74 203v715q0 82 41 150.5t118 68.5q33 0 74 -22.5t66 -45.5l24 -22v73h207v-1505h-207v459q-88 -90 -164 -90q-78 0 -118.5 68.5t-40.5 150.5zM281 246q0 -29 16 -48.5t38.5 -19.5t42 21.5t19.5 46.5v628q0 29 -19.5 48.5t-42 19.5t-38.5 -19.5t-16 -48.5v-628z" />
+<glyph unicode="r" horiz-adv-x="503" d="M82 0v1120h207v-125q8 41 58 91.5t149 50.5v-230q-34 11 -64 11q-56 0 -98 -37q-45 -41 -45 -103v-778h-207z" />
+<glyph unicode="s" horiz-adv-x="630" d="M37 326h192q0 -170 97 -170q72 0 71 135q0 74 -129 198q-68 66 -98.5 99t-64 101.5t-33.5 144.5q0 55 12 104t39 95t78 74t123 30h11q78 0 131 -26q56 -28 80.5 -79t33 -95t8.5 -103h-193q0 131 -67 131q-63 -2 -64 -131q0 -33 23.5 -73t45 -62.5t66.5 -65.5 q190 -182 191 -342q0 -123 -64.5 -215t-199.5 -92q-72 0 -126.5 24.5t-85 60t-49 85t-23.5 89.5t-5 83z" />
+<glyph unicode="t" horiz-adv-x="501" d="M20 934v186h105v277h207v-277h141v-186h-141v-557q0 -184 65 -184l76 8v-203q-45 -14 -111 -14q-68 0 -115.5 28.5t-70 64.5t-35 96t-14.5 95t-2 92v574h-105z" />
+<glyph unicode="u" horiz-adv-x="690" d="M78 203v917h207v-887q0 -49 49 -49q18 0 34.5 13.5t24.5 27.5l8 13v882h207v-1120h-207v94l-31 -32q-30 -30 -67 -54t-70 -24q-76 0 -115.5 68.5t-39.5 150.5z" />
+<glyph unicode="v" horiz-adv-x="602" d="M16 1120h201l68 -649l8 -72h16l8 72l68 649h201l-183 -1120h-204z" />
+<glyph unicode="w" horiz-adv-x="905" d="M20 1120h189l65 -585l9 -64h12l10 64l86 585h123l86 -585l10 -64h13l8 64l65 585h189l-166 -1120h-172l-80 535l-10 63h-8l-11 -63l-80 -535h-172z" />
+<glyph unicode="x" horiz-adv-x="618" d="M16 0l193 578l-176 542h194l74 -262l6 -31h4l6 31l74 262h195l-176 -542l192 -578h-201l-84 283l-6 30h-4l-6 -30l-84 -283h-201z" />
+<glyph unicode="y" horiz-adv-x="634" d="M25 1120h202l82 -688l4 -57h9l4 57l82 688h202l-198 -1204q-16 -127 -94 -222t-193 -95l-92 4v184q16 -4 49 -4q61 6 97 61.5t36 122.5z" />
+<glyph unicode="z" horiz-adv-x="532" d="M12 0v168l285 764h-240v188h459v-168l-285 -764h285v-188h-504z" />
+<glyph unicode="{" horiz-adv-x="688" d="M61 453v163q72 0 102 49.5t30 90.5v397q0 223 96 298t342 71v-172q-135 2 -188.5 -38t-53.5 -159v-397q0 -143 -127 -221q127 -82 127 -222v-397q0 -119 53.5 -159t188.5 -38v-172q-246 -4 -342 71t-96 298v397q0 20 -8.5 47t-41.5 59t-82 34z" />
+<glyph unicode="|" horiz-adv-x="356" d="M82 -512v2204h192v-2204h-192z" />
+<glyph unicode="}" horiz-adv-x="688" d="M57 -281q135 -2 188.5 38t53.5 159v397q0 139 127 222q-127 78 -127 221v397q0 119 -53 159t-189 38v172q246 4 342.5 -71t96.5 -298v-397q0 -23 8 -50.5t41 -58.5t82 -31v-163q-72 -4 -101.5 -52.5t-29.5 -87.5v-397q0 -223 -96.5 -298t-342.5 -71v172z" />
+<glyph unicode="~" horiz-adv-x="1280" d="M113 1352q4 12 12 32.5t38 73.5t64.5 94t95 74t126.5 33q55 0 111 -18.5t82 -33t83 -51.5q106 -72 174 -71q57 0 105.5 46t66.5 91l19 45l135 -57q-4 -12 -12.5 -34t-38 -75t-64.5 -93t-91 -74t-120 -34q-121 0 -272 101q-115 74 -178.5 74t-113.5 -45.5t-69 -90.5 l-18 -45z" />
+<glyph unicode="&#xa1;" horiz-adv-x="387" d="M74 -385l55 1100h129l55 -1100h-239zM86 893v227h215v-227h-215z" />
+<glyph unicode="&#xa2;" horiz-adv-x="636" d="M66 508v489q0 297 208 328v242h123v-244q98 -16 144.5 -88t46.5 -227v-88h-189v135q0 90 -73 90q-72 0 -72 -90v-604q0 -90 72 -91q74 0 73 91v155h189v-108q0 -156 -46 -228.5t-145 -89.5v-303h-123v301q-208 31 -208 330z" />
+<glyph unicode="&#xa3;" horiz-adv-x="817" d="M4 63q8 20 23.5 53.5t70 91.5t117.5 68q37 111 37 199q0 68 -31 174h-188v137h147l-6 21q-78 254 -78 342q0 70 15.5 131t48.5 116.5t92 89.5t139 36q96 2 164 -32t103.5 -93.5t50 -127t14.5 -149.5h-213q0 86 -25.5 142.5t-89.5 54.5q-47 -2 -68.5 -51t-21.5 -117 q0 -113 70 -338l6 -25h211v-137h-174q25 -100 24 -174q0 -104 -57 -219q16 -8 44 -24.5t48.5 -25.5t40.5 -9q74 4 82 190l188 -22q-12 -182 -81.5 -281.5t-169.5 -99.5q-51 0 -143.5 51t-129.5 51q-33 0 -61.5 -25.5t-40.5 -52.5l-12 -24z" />
+<glyph unicode="&#xa5;" horiz-adv-x="720" d="M25 1505h217l110 -481l6 -14h4l7 14l110 481h217l-196 -753h147v-138h-176v-137h176v-137h-176v-340h-221v340h-176v137h176v137h-176v138h147z" />
+<glyph unicode="&#xa8;" horiz-adv-x="1024" d="M272 1305v200h191v-200h-191zM561 1305v200h191v-200h-191z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1644" d="M53 751.5q0 317.5 225.5 544t543 226.5t543.5 -226.5t226 -544t-226 -542.5t-543.5 -225t-543 225t-225.5 542.5zM172 751.5q0 -266.5 191.5 -458t457.5 -191.5t459 191.5t193 458.5q0 268 -191.5 459.5t-460.5 191.5q-266 0 -457.5 -192.5t-191.5 -459zM627 487v531 q0 8 1 21.5t11 47t27.5 59t57.5 47t95 21.5q53 0 92 -20t56.5 -49t28 -57.5t12.5 -49.5v-20v-125h-138v125v17q0 11 -12 28.5t-37 17.5q-23 0 -35 -16t-12 -33l-2 -14v-531q0 -63 49 -63q25 0 37 15.5t12 31.5v16v125h138v-125q0 -8 -1 -21t-11.5 -47t-28 -59.5t-56.5 -47 t-92 -21.5q-86 0 -134 49t-54 98z" />
+<glyph unicode="&#xad;" horiz-adv-x="444" d="M74 455v194h297v-194h-297z" />
+<glyph unicode="&#xae;" horiz-adv-x="1644" d="M53 751.5q0 317.5 225.5 544t543 226.5t543.5 -226.5t226 -544t-226 -542.5t-543.5 -225t-543 225t-225.5 542.5zM172 751.5q0 -266.5 191.5 -458t457.5 -191.5t459 191.5t193 458.5q0 268 -191.5 459.5t-460.5 191.5q-266 0 -457.5 -192.5t-191.5 -459zM625 313v879h196 q231 0 232 -258q0 -76 -16.5 -125t-71.5 -96l106 -400h-151l-95 365h-55v-365h-145zM770 805h45q43 0 65.5 21.5t27.5 45t5 60.5q0 39 -5 63.5t-27.5 46t-65.5 21.5h-45v-258z" />
+<glyph unicode="&#xaf;" horiz-adv-x="1024" d="M313 1315v162h398v-162h-398z" />
+<glyph unicode="&#xb4;" horiz-adv-x="1024" d="M410 1305l106 184h215l-162 -184h-159z" />
+<glyph unicode="&#xb7;" horiz-adv-x="215" d="M0 649v228h215v-228h-215z" />
+<glyph unicode="&#xb8;" horiz-adv-x="1024" d="M426 -111h172v-141l-45 -133h-104l40 133h-63v141z" />
+<glyph unicode="&#xbf;" horiz-adv-x="645" d="M41 -106q0 82 80 219l57 95q18 32 42 106.5t24 144.5v256h190v-256q0 -102 -24.5 -195.5t-48 -140.5t-64.5 -117q-43 -72 -53 -112q-6 -27 11 -61t56 -34q47 -2 82 47.5t49 98.5l179 -84q-12 -33 -34 -69t-60 -82t-96 -75.5t-124 -27.5q-82 2 -138 33.5t-82 82t-36 91.5 t-10 80zM231 893v227h215v-227h-215z" />
+<glyph unicode="&#xc0;" horiz-adv-x="765" d="M20 0l228 1505h270l227 -1505h-215l-41 307h-213l-40 -307h-216zM141 1823h215l107 -185h-160zM307 541h152l-64 475l-6 39h-12l-6 -39z" />
+<glyph unicode="&#xc1;" horiz-adv-x="765" d="M20 0l228 1505h270l227 -1505h-215l-41 307h-213l-40 -307h-216zM293 1638l106 185h215l-161 -185h-160zM307 541h152l-64 475l-6 39h-12l-6 -39z" />
+<glyph unicode="&#xc2;" horiz-adv-x="765" d="M20 0l228 1505h270l227 -1505h-215l-41 307h-213l-40 -307h-216zM133 1638l141 185h220l141 -185h-189l-63 72l-61 -72h-189zM307 541h152l-64 475l-6 39h-12l-6 -39z" />
+<glyph unicode="&#xc3;" horiz-adv-x="765" d="M20 0l228 1505h270l227 -1505h-215l-41 307h-213l-40 -307h-216zM184 1632v152q49 39 109 39q33 0 91 -18.5t89 -20.5q25 0 52.5 8t41.5 16l15 9v-152q-51 -39 -109 -39q-31 0 -89 19.5t-91 19.5q-25 0 -52.5 -8t-41.5 -17zM307 541h152l-64 475l-6 39h-12l-6 -39z" />
+<glyph unicode="&#xc4;" horiz-adv-x="765" d="M20 0l228 1505h270l227 -1505h-215l-41 307h-213l-40 -307h-216zM143 1638v201h191v-201h-191zM307 541h152l-64 475l-6 39h-12l-6 -39zM432 1638v201h191v-201h-191z" />
+<glyph unicode="&#xc5;" horiz-adv-x="765" d="M20 0l228 1505h270l227 -1505h-215l-41 307h-213l-40 -307h-216zM231 1761.5q0 61.5 45.5 102.5t109 41t107.5 -41t44 -102.5t-44 -102.5t-107.5 -41t-109 41t-45.5 102.5zM307 541h152l-64 475l-6 39h-12l-6 -39zM309 1761.5q0 -28.5 23.5 -50t52.5 -21.5t52.5 21.5 t23.5 50t-23.5 50t-52.5 21.5t-52.5 -21.5t-23.5 -50z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1099" d="M16 0l420 1505h623v-227h-285v-395h205v-242h-205v-414h285v-227h-506v307h-227l-90 -307h-220zM393 541h160v514h-10z" />
+<glyph unicode="&#xc7;" horiz-adv-x="708" d="M68 309v887q0 12 2 34.5t17 79t43 99.5t88.5 78t144 35t144 -34t88.5 -81t43 -95t17 -83l2 -33v-207h-206v207q-2 0 0 11.5t-3.5 27.5t-12.5 32.5t-24.5 28t-43.5 11.5q-35 0 -54.5 -28t-21.5 -54l-2 -29v-887q0 -12 2 -30.5t21.5 -49t54.5 -30.5q41 0 62.5 27.5 t21.5 56.5v26v207h206v-207q0 -12 -2 -34.5t-17 -79t-43 -99.5t-88.5 -77.5t-144 -34.5t-144 33.5t-88.5 80.5t-43 95.5t-17 80.5zM268 -111v-141h64l-41 -133h104l45 133v141h-172z" />
+<glyph unicode="&#xc8;" horiz-adv-x="628" d="M82 0v1505h506v-227h-285v-395h205v-242h-205v-414h285v-227h-506zM111 1823h215l106 -185h-160z" />
+<glyph unicode="&#xc9;" horiz-adv-x="628" d="M82 0v1505h506v-227h-285v-395h205v-242h-205v-414h285v-227h-506zM236 1638l106 185h215l-162 -185h-159z" />
+<glyph unicode="&#xca;" horiz-adv-x="628" d="M82 0v1505h506v-227h-285v-395h205v-242h-205v-414h285v-227h-506zM84 1638l141 185h219l142 -185h-189l-63 72l-62 -72h-188z" />
+<glyph unicode="&#xcb;" horiz-adv-x="628" d="M82 0v1505h506v-227h-285v-395h205v-242h-205v-414h285v-227h-506zM94 1638v201h191v-201h-191zM383 1638v201h190v-201h-190z" />
+<glyph unicode="&#xcc;" horiz-adv-x="401" d="M-6 1823h215l106 -185h-159zM98 0v1505h221v-1505h-221z" />
+<glyph unicode="&#xcd;" horiz-adv-x="401" d="M82 0v1505h221v-1505h-221zM86 1638l107 185h215l-162 -185h-160z" />
+<glyph unicode="&#xce;" horiz-adv-x="370" d="M-66 1638l142 185h219l141 -185h-188l-64 72l-61 -72h-189zM74 0v1505h221v-1505h-221z" />
+<glyph unicode="&#xcf;" horiz-adv-x="372" d="M-53 1638v201h190v-201h-190zM76 0v1505h221v-1505h-221zM236 1638v201h190v-201h-190z" />
+<glyph unicode="&#xd0;" horiz-adv-x="761" d="M20 655v228h62v622h174q90 0 153.5 -12t112.5 -33.5t80 -67.5t50.5 -95.5t28.5 -139.5t12 -177t3 -228.5t-3 -228.5t-12 -176t-28.5 -138t-50.5 -95t-80 -67.5t-112.5 -34t-153.5 -12.5h-174v655h-62zM303 221q94 0 123 41q39 55 41 320v172q2 377 -25 454q-23 66 -92 74 q-18 2 -47 2v-401h84v-228h-84v-434z" />
+<glyph unicode="&#xd1;" horiz-adv-x="808" d="M82 0v1505h197l215 -784l18 -70h12v70v784h203v-1505h-197l-215 784l-18 70h-12v-70v-784h-203zM207 1632v152q49 39 108 39q33 0 91.5 -18.5t89.5 -20.5q25 0 52 8t42 16l14 9v-152q-51 -39 -108 -39q-31 0 -89.5 19.5t-91.5 19.5q-25 0 -52 -8t-42 -17z" />
+<glyph unicode="&#xd2;" d="M68 309v887q0 12 2 34.5t17 79t43 99.5t88.5 78t144 35t144 -34t88.5 -81t43 -95t17 -83l2 -33v-887q0 -12 -2 -34.5t-17 -79t-43 -99.5t-88.5 -77.5t-144 -34.5t-144 33.5t-88.5 80.5t-43 95.5t-17 80.5zM121 1823h215l106 -185h-159zM289 309q0 -12 1 -30.5t19.5 -49 t53 -30.5t53 27.5t18.5 56.5l2 26v887q0 12 -1 30.5t-19.5 49.5t-53 31t-53 -28t-18.5 -54l-2 -29v-887z" />
+<glyph unicode="&#xd3;" d="M68 309v887q0 12 2 34.5t17 79t43 99.5t88.5 78t144 35t144 -34t88.5 -81t43 -95t17 -83l2 -33v-887q0 -12 -2 -34.5t-17 -79t-43 -99.5t-88.5 -77.5t-144 -34.5t-144 33.5t-88.5 80.5t-43 95.5t-17 80.5zM285 1638l106 185h215l-162 -185h-159zM289 309q0 -12 1 -30.5 t19.5 -49t53 -30.5t53 27.5t18.5 56.5l2 26v887q0 12 -1 30.5t-19.5 49.5t-53 31t-53 -28t-18.5 -54l-2 -29v-887z" />
+<glyph unicode="&#xd4;" d="M68 309v887q0 12 2 34.5t17 79t43 99.5t88.5 78t144 35t144 -34t88.5 -81t43 -95t17 -83l2 -33v-887q0 -12 -2 -34.5t-17 -79t-43 -99.5t-88.5 -77.5t-144 -34.5t-144 33.5t-88.5 80.5t-43 95.5t-17 80.5zM113 1638l141 185h219l141 -185h-188l-64 72l-61 -72h-188z M289 309q0 -12 1 -30.5t19.5 -49t53 -30.5t53 27.5t18.5 56.5l2 26v887q0 12 -1 30.5t-19.5 49.5t-53 31t-53 -28t-18.5 -54l-2 -29v-887z" />
+<glyph unicode="&#xd5;" d="M68 309v887q0 12 2 34.5t17 79t43 99.5t88.5 78t144 35t144 -34t88.5 -81t43 -95t17 -83l2 -33v-887q0 -12 -2 -34.5t-17 -79t-43 -99.5t-88.5 -77.5t-144 -34.5t-144 33.5t-88.5 80.5t-43 95.5t-17 80.5zM164 1632v152q49 39 108 39q33 0 91.5 -18.5t89.5 -20.5 q25 0 52 8t42 16l14 9v-152q-51 -39 -108 -39q-31 0 -89.5 19.5t-91.5 19.5q-25 0 -52 -8t-42 -17zM289 309q0 -12 1 -30.5t19.5 -49t53 -30.5t53 27.5t18.5 56.5l2 26v887q0 12 -1 30.5t-19.5 49.5t-53 31t-53 -28t-18.5 -54l-2 -29v-887z" />
+<glyph unicode="&#xd6;" d="M68 309v887q0 12 2 34.5t17 79t43 99.5t88.5 78t144 35t144 -34t88.5 -81t43 -95t17 -83l2 -33v-887q0 -12 -2 -34.5t-17 -79t-43 -99.5t-88.5 -77.5t-144 -34.5t-144 33.5t-88.5 80.5t-43 95.5t-17 80.5zM123 1638v201h190v-201h-190zM289 309q0 -12 1 -30.5t19.5 -49 t53 -30.5t53 27.5t18.5 56.5l2 26v887q0 12 -1 30.5t-19.5 49.5t-53 31t-53 -28t-18.5 -54l-2 -29v-887zM412 1638v201h190v-201h-190z" />
+<glyph unicode="&#xd8;" d="M59 -20l47 157q-18 37 -27 80t-9 68l-2 24v887q0 12 2 34.5t17 79t43 99.5t88.5 78t143.5 35q92 0 158 -43l15 47h122l-45 -150q20 -39 31.5 -84t11.5 -71l2 -25v-887q0 -12 -2 -34.5t-17 -79t-43 -99.5t-88.5 -77.5t-144.5 -34.5q-96 0 -159 43l-15 -47h-129zM289 309 q0 -12 1 -30.5t19.5 -49t53 -30.5t53 27.5t18.5 56.5l2 26v488zM289 727l147 479q-8 100 -74 101q-35 0 -53 -28t-18 -54l-2 -29v-469z" />
+<glyph unicode="&#xd9;" horiz-adv-x="749" d="M80 309q0 -12 2 -34.5t17.5 -79t43 -99.5t88 -77.5t144.5 -34.5t144.5 33.5t88 80.5t43 95.5t17.5 80.5l2 35v1196h-221v-1196q0 -12 -1.5 -30.5t-19.5 -49t-53 -30.5t-53.5 27.5t-18.5 56.5l-2 26v1196h-221v-1196zM145 1823h215l107 -185h-160z" />
+<glyph unicode="&#xda;" horiz-adv-x="749" d="M80 309q0 -12 2 -34.5t17.5 -79t43 -99.5t88 -77.5t144.5 -34.5t144.5 33.5t88 80.5t43 95.5t17.5 80.5l2 35v1196h-221v-1196q0 -12 -1.5 -30.5t-19.5 -49t-53 -30.5t-53.5 27.5t-18.5 56.5l-2 26v1196h-221v-1196zM307 1638l107 185h215l-162 -185h-160z" />
+<glyph unicode="&#xdb;" horiz-adv-x="749" d="M80 309q0 -12 2 -34.5t17.5 -79t43 -99.5t88 -77.5t144.5 -34.5t144.5 33.5t88 80.5t43 95.5t17.5 80.5l2 35v1196h-221v-1196q0 -12 -1.5 -30.5t-19.5 -49t-53 -30.5t-53.5 27.5t-18.5 56.5l-2 26v1196h-221v-1196zM125 1638l141 185h219l142 -185h-189l-63 72l-62 -72 h-188z" />
+<glyph unicode="&#xdc;" horiz-adv-x="749" d="M80 309v1196h221v-1196q0 -12 1 -30.5t19.5 -49t53.5 -30.5t53 27.5t18 56.5l3 26v1196h221v-1196q0 -12 -2 -34.5t-17.5 -79t-43 -99.5t-88 -77.5t-144.5 -34.5t-144.5 33.5t-88 80.5t-43 95.5t-17.5 80.5zM135 1638v201h191v-201h-191zM424 1638v201h190v-201h-190z " />
+<glyph unicode="&#xdd;" horiz-adv-x="704" d="M16 1505l226 -864v-641h221v641l225 864h-217l-111 -481l-6 -14h-4l-6 14l-111 481h-217zM254 1638l106 185h215l-161 -185h-160z" />
+<glyph unicode="&#xde;" d="M82 0v1505h219v-241h2q166 0 277.5 -105.5t111.5 -345.5t-111.5 -346.5t-277.5 -106.5v-360h-221zM303 586q102 0 134 45t32 174q0 131 -33 182t-133 51v-452z" />
+<glyph unicode="&#xdf;" horiz-adv-x="733" d="M66 0v1235q0 123 70.5 205t209.5 82q133 0 201.5 -81t68.5 -204q0 -109 -88 -174q152 -88 152 -488q0 -182 -20.5 -298.5t-66.5 -176t-102.5 -80t-144.5 -20.5v193q45 0 70.5 25.5t41 111.5t15.5 245q0 170 -15.5 259.5t-41 117t-70.5 27.5v141q35 0 60.5 33t25.5 84 q0 45 -21.5 72.5t-64.5 27.5q-74 0 -74 -102v-1235h-206z" />
+<glyph unicode="&#xe0;" horiz-adv-x="681" d="M49 260q0 106 34 187t83 124t98 73t88 50.5t43 36.5v37v86q0 102 -57 102q-20 0 -32.5 -9t-17.5 -32.5t-7 -37t-2 -47.5v-39h-207v47q0 123 80.5 211t197.5 88q102 0 177 -74t75 -180v-351v-337q0 -109 14 -195h-202q-18 20 -19 90h-14q-20 -37 -65.5 -71.5t-100.5 -34.5 q-59 0 -112.5 60t-53.5 216zM102 1489h215l107 -184h-160zM252 291q0 -104 57 -105q35 0 60.5 19.5t25.5 48.5v287q-143 -62 -143 -250z" />
+<glyph unicode="&#xe1;" horiz-adv-x="681" d="M49 260q0 106 34 187t83 124t98 73t88 50.5t43 36.5v37v86q0 102 -57 102q-20 0 -32.5 -9t-17.5 -32.5t-7 -37t-2 -47.5v-39h-207v47q0 123 80.5 211t197.5 88q102 0 177 -74t75 -180v-351v-337q0 -109 14 -195h-202q-18 20 -19 90h-14q-20 -37 -65.5 -71.5t-100.5 -34.5 q-59 0 -112.5 60t-53.5 216zM252 291q0 -104 57 -105q35 0 60.5 19.5t25.5 48.5v287q-143 -62 -143 -250zM264 1305l107 184h215l-162 -184h-160z" />
+<glyph unicode="&#xe2;" horiz-adv-x="681" d="M49 260q0 106 34 187t83 124t98 73t88 50.5t43 36.5v37v86q0 102 -57 102q-20 0 -32.5 -9t-17.5 -32.5t-7 -37t-2 -47.5v-39h-207v47q0 123 80.5 211t197.5 88q102 0 177 -74t75 -180v-351v-337q0 -109 14 -195h-202q-18 20 -19 90h-14q-20 -37 -65.5 -71.5t-100.5 -34.5 q-59 0 -112.5 60t-53.5 216zM90 1305l141 184h220l141 -184h-189l-63 71l-61 -71h-189zM252 291q0 -104 57 -105q35 0 60.5 19.5t25.5 48.5v287q-143 -62 -143 -250z" />
+<glyph unicode="&#xe3;" horiz-adv-x="681" d="M49 260q0 106 34 187t83 124t98 73t88 50.5t43 36.5v37v86q0 102 -57 102q-20 0 -32.5 -9t-17.5 -32.5t-7 -37t-2 -47.5v-39h-207v47q0 123 80.5 211t197.5 88q102 0 177 -74t75 -180v-351v-337q0 -109 14 -195h-202q-18 20 -19 90h-14q-20 -37 -65.5 -71.5t-100.5 -34.5 q-59 0 -112.5 60t-53.5 216zM143 1305v151q49 39 109 39q33 0 91 -18.5t89 -20.5q25 0 52.5 8.5t41.5 16.5l15 8v-152q-51 -39 -109 -39q-31 0 -89 19.5t-91 19.5q-25 0 -52.5 -8t-41.5 -16zM252 291q0 -104 57 -105q35 0 60.5 19.5t25.5 48.5v287q-143 -62 -143 -250z" />
+<glyph unicode="&#xe4;" horiz-adv-x="681" d="M49 260q0 106 34 187t83 124t98 73t88 50.5t43 36.5v37v86q0 102 -57 102q-20 0 -32.5 -9t-17.5 -32.5t-7 -37t-2 -47.5v-39h-207v47q0 123 80.5 211t197.5 88q102 0 177 -74t75 -180v-351v-337q0 -109 14 -195h-202q-18 20 -19 90h-14q-20 -37 -65.5 -71.5t-100.5 -34.5 q-59 0 -112.5 60t-53.5 216zM102 1305v200h191v-200h-191zM252 291q0 -104 57 -105q35 0 60.5 19.5t25.5 48.5v287q-143 -62 -143 -250zM391 1305v200h191v-200h-191z" />
+<glyph unicode="&#xe5;" horiz-adv-x="681" d="M49 260q0 106 34 187t83 124t98 73t88 50.5t43 36.5v37v86q0 102 -57 102q-20 0 -32.5 -9t-17.5 -32.5t-7 -37t-2 -47.5v-39h-207v47q0 123 80.5 211t197.5 88q102 0 177 -74t75 -180v-351v-337q0 -109 14 -195h-202q-18 20 -19 90h-14q-20 -37 -65.5 -71.5t-100.5 -34.5 q-59 0 -112.5 60t-53.5 216zM188 1421.5q0 61.5 45.5 102.5t109 41t107.5 -41t44 -102.5t-44 -102.5t-107.5 -41t-109 41t-45.5 102.5zM252 291q0 -104 57 -105q35 0 60.5 19.5t25.5 48.5v287q-143 -62 -143 -250zM266 1421.5q0 -28.5 23.5 -50t52.5 -21.5t52.5 21.5 t23.5 50t-23.5 50t-52.5 21.5t-52.5 -21.5t-23.5 -50z" />
+<glyph unicode="&#xe6;" horiz-adv-x="989" d="M49 260q0 106 34 187t83 124t98 73t88 50.5t43 36.5v123q0 102 -57 102q-20 0 -32.5 -9t-17.5 -32.5t-7 -37t-2 -47.5v-39h-207v47q0 123 80.5 211t197.5 88q84 0 152 -52q66 51 162 52q76 0 130 -30t79.5 -73t40 -85t16.5 -72v-29v-326h-342v-243v-13q0 -8 4 -27.5 t11 -34t23.5 -26.5t37.5 -12q35 0 53 27.5t20 56.5v29v122h193v-129q0 -12 -2 -31.5t-16.5 -68.5t-39 -88t-80 -69.5t-130.5 -30.5q-158 0 -226 131q-102 -131 -221 -131q-59 0 -112.5 60t-53.5 216zM252 291q0 -104 57 -105q35 0 60.5 19.5t25.5 48.5v287 q-143 -62 -143 -250zM588 684h149v158q0 12 -1 31.5t-19.5 51t-52.5 31.5q-33 0 -52.5 -28.5t-21.5 -57.5l-2 -28v-158z" />
+<glyph unicode="&#xe7;" horiz-adv-x="645" d="M66 315v490q0 332 264 332q137 0 201.5 -71t64.5 -251v-88h-207v135q0 51 -12 70.5t-47 19.5q-57 0 -58 -90v-604q0 -90 58 -90q35 0 47 19.5t12 70.5v156h207v-109q0 -180 -64.5 -250.5t-201.5 -70.5q-264 -1 -264 331zM238 -111v-141h63l-41 -133h105l45 133v141h-172z " />
+<glyph unicode="&#xe8;" horiz-adv-x="659" d="M66 279v563q0 12 2 31.5t16 70.5t40 90t81 71t129 32q76 0 130 -30t79.5 -73t40 -85t14.5 -72l2 -29v-326h-342v-243v-13q0 -8 4 -27.5t11.5 -34t23.5 -26.5t37 -12q35 0 53.5 27.5t18.5 56.5l2 29v122h192v-129q0 -12 -2 -31.5t-16.5 -68.5t-39 -88t-79.5 -69.5 t-131 -30.5q-74 0 -129.5 30.5t-80 73.5t-38.5 86t-16 74zM102 1489h215l107 -184h-160zM258 684h150v158q0 12 -1 31.5t-19.5 51t-53.5 31.5q-33 0 -52.5 -28.5t-21.5 -57.5l-2 -28v-158z" />
+<glyph unicode="&#xe9;" horiz-adv-x="659" d="M66 279v563q0 12 2 31.5t16 70.5t40 90t81 71t129 32q76 0 130 -30t79.5 -73t40 -85t14.5 -72l2 -29v-326h-342v-243v-13q0 -8 4 -27.5t11.5 -34t23.5 -26.5t37 -12q35 0 53.5 27.5t18.5 56.5l2 29v122h192v-129q0 -12 -2 -31.5t-16.5 -68.5t-39 -88t-79.5 -69.5 t-131 -30.5q-74 0 -129.5 30.5t-80 73.5t-38.5 86t-16 74zM258 684h150v158q0 12 -1 31.5t-19.5 51t-53.5 31.5q-33 0 -52.5 -28.5t-21.5 -57.5l-2 -28v-158zM264 1305l107 184h215l-162 -184h-160z" />
+<glyph unicode="&#xea;" horiz-adv-x="659" d="M66 279v563q0 12 2 31.5t16 70.5t40 90t81 71t129 32q76 0 130 -30t79.5 -73t40 -85t14.5 -72l2 -29v-326h-342v-243v-13q0 -8 4 -27.5t11.5 -34t23.5 -26.5t37 -12q35 0 53.5 27.5t18.5 56.5l2 29v122h192v-129q0 -12 -2 -31.5t-16.5 -68.5t-39 -88t-79.5 -69.5 t-131 -30.5q-74 0 -129.5 30.5t-80 73.5t-38.5 86t-16 74zM80 1305l141 184h219l142 -184h-189l-63 71l-62 -71h-188zM258 684h150v158q0 12 -1 31.5t-19.5 51t-53.5 31.5q-33 0 -52.5 -28.5t-21.5 -57.5l-2 -28v-158z" />
+<glyph unicode="&#xeb;" horiz-adv-x="659" d="M66 279v563q0 12 2 31.5t16 70.5t40 90t81 71t129 32q76 0 130 -30t79.5 -73t40 -85t14.5 -72l2 -29v-326h-342v-243v-13q0 -8 4 -27.5t11.5 -34t23.5 -26.5t37 -12q35 0 53.5 27.5t18.5 56.5l2 29v122h192v-129q0 -12 -2 -31.5t-16.5 -68.5t-39 -88t-79.5 -69.5 t-131 -30.5q-74 0 -129.5 30.5t-80 73.5t-38.5 86t-16 74zM90 1305v200h191v-200h-191zM258 684h150v158q0 12 -1 31.5t-19.5 51t-53.5 31.5q-33 0 -52.5 -28.5t-21.5 -57.5l-2 -28v-158zM379 1305v200h190v-200h-190z" />
+<glyph unicode="&#xec;" horiz-adv-x="370" d="M-33 1489h215l107 -184h-160zM82 0h207v1120h-207v-1120z" />
+<glyph unicode="&#xed;" horiz-adv-x="370" d="M82 0h207v1120h-207v-1120zM82 1305l106 184h215l-161 -184h-160z" />
+<glyph unicode="&#xee;" horiz-adv-x="370" d="M-66 1305l142 184h219l141 -184h-188l-64 71l-61 -71h-189zM82 0h207v1120h-207v-1120z" />
+<glyph unicode="&#xef;" horiz-adv-x="372" d="M-53 1305v200h190v-200h-190zM82 0v1120h207v-1120h-207zM236 1305v200h190v-200h-190z" />
+<glyph unicode="&#xf0;" horiz-adv-x="673" d="M76 279v579q0 279 172 279q63 0 155 -78q-12 109 -51 203l-82 -72l-55 63l100 88l-45 66l109 100q25 -27 53 -61l94 82l56 -66l-101 -88q125 -201 125 -446v-656q0 -12 -1 -31.5t-15.5 -68.5t-40 -88t-79.5 -69.5t-130 -30.5q-74 0 -129 30.5t-80 73.5t-39 86t-14 74z M270 267.5q-2 -11.5 2 -29t10.5 -34t21.5 -27.5t36 -11q35 0 52.5 27.5t17.5 56.5l2 29v563q-2 0 0 11t-2 28.5t-10.5 34t-22 28.5t-37.5 12q-33 0 -50.5 -28.5t-19.5 -57.5v-28v-563q2 0 0 -11.5z" />
+<glyph unicode="&#xf1;" horiz-adv-x="690" d="M82 0v1120h207v-94l32 32q30 30 66.5 54.5t69.5 24.5q76 0 115.5 -69t39.5 -150v-918h-206v887q0 49 -50 49q-18 0 -34.5 -13.5t-24.5 -25.5l-8 -14v-883h-207zM147 1305v151q49 39 109 39q33 0 91.5 -18.5t88.5 -20.5q25 0 52.5 8.5t41.5 16.5l15 8v-152 q-51 -39 -109 -39q-31 0 -89 19.5t-91 19.5q-25 0 -52.5 -8t-41.5 -16z" />
+<glyph unicode="&#xf2;" horiz-adv-x="657" d="M63 279v563q0 12 1.5 31.5t15.5 70.5t38.5 90t80 71t129.5 32q76 0 130 -30t79.5 -73t40 -85t16.5 -72v-29v-576q0 -12 -1 -31.5t-15.5 -68.5t-40 -88t-80 -69.5t-129.5 -30.5q-74 0 -129.5 30.5t-80 73.5t-38.5 86t-14 74zM98 1489h215l107 -184h-160zM258 267.5 q-2 -11.5 2 -29t10 -34t21.5 -27.5t36.5 -11q35 0 52 27.5t17 56.5l2 29v563q-2 0 0 11t-2 28.5t-10 34t-21.5 28.5t-37.5 12q-33 0 -50.5 -28.5t-19.5 -57.5v-28v-563q2 0 0 -11.5z" />
+<glyph unicode="&#xf3;" horiz-adv-x="657" d="M63 279v563q0 12 1.5 31.5t15.5 70.5t38.5 90t80 71t129.5 32q76 0 130 -30t79.5 -73t40 -85t16.5 -72v-29v-576q0 -12 -1 -31.5t-15.5 -68.5t-40 -88t-80 -69.5t-129.5 -30.5q-74 0 -129.5 30.5t-80 73.5t-38.5 86t-14 74zM258 267.5q-2 -11.5 2 -29t10 -34t21.5 -27.5 t36.5 -11q35 0 52 27.5t17 56.5l2 29v563q-2 0 0 11t-2 28.5t-10 34t-21.5 28.5t-37.5 12q-33 0 -50.5 -28.5t-19.5 -57.5v-28v-563q2 0 0 -11.5zM260 1305l107 184h215l-162 -184h-160z" />
+<glyph unicode="&#xf4;" horiz-adv-x="657" d="M63 279v563q0 12 1.5 31.5t15.5 70.5t38.5 90t80 71t129.5 32q76 0 130 -30t79.5 -73t40 -85t16.5 -72v-29v-576q0 -12 -1 -31.5t-15.5 -68.5t-40 -88t-80 -69.5t-129.5 -30.5q-74 0 -129.5 30.5t-80 73.5t-38.5 86t-14 74zM78 1305l141 184h219l142 -184h-189l-63 71 l-62 -71h-188zM258 267.5q-2 -11.5 2 -29t10 -34t21.5 -27.5t36.5 -11q35 0 52 27.5t17 56.5l2 29v563q-2 0 0 11t-2 28.5t-10 34t-21.5 28.5t-37.5 12q-33 0 -50.5 -28.5t-19.5 -57.5v-28v-563q2 0 0 -11.5z" />
+<glyph unicode="&#xf5;" horiz-adv-x="657" d="M63 279v563q0 12 1.5 31.5t15.5 70.5t38.5 90t80 71t129.5 32q76 0 130 -30t79.5 -73t40 -85t16.5 -72v-29v-576q0 -12 -1 -31.5t-15.5 -68.5t-40 -88t-80 -69.5t-129.5 -30.5q-74 0 -129.5 30.5t-80 73.5t-38.5 86t-14 74zM131 1305v151q49 39 109 39q33 0 91 -18.5 t89 -20.5q25 0 52.5 8.5t41.5 16.5l14 8v-152q-51 -39 -108 -39q-31 0 -89.5 19.5t-90.5 19.5q-25 0 -52.5 -8t-42.5 -16zM258 267.5q-2 -11.5 2 -29t10 -34t21.5 -27.5t36.5 -11q35 0 52 27.5t17 56.5l2 29v563q-2 0 0 11t-2 28.5t-10 34t-21.5 28.5t-37.5 12 q-33 0 -50.5 -28.5t-19.5 -57.5v-28v-563q2 0 0 -11.5z" />
+<glyph unicode="&#xf6;" horiz-adv-x="657" d="M63 279v563q0 12 1.5 31.5t15.5 70.5t38.5 90t80 71t129.5 32q76 0 130 -30t79.5 -73t40 -85t16.5 -72v-29v-576q0 -12 -1 -31.5t-15.5 -68.5t-40 -88t-80 -69.5t-129.5 -30.5q-74 0 -129.5 30.5t-80 73.5t-38.5 86t-14 74zM90 1305v200h191v-200h-191zM258 267.5 q-2 -11.5 2 -29t10 -34t21.5 -27.5t36.5 -11q35 0 52 27.5t17 56.5l2 29v563q-2 0 0 11t-2 28.5t-10 34t-21.5 28.5t-37.5 12q-33 0 -50.5 -28.5t-19.5 -57.5v-28v-563q2 0 0 -11.5zM379 1305v200h190v-200h-190z" />
+<glyph unicode="&#xf8;" horiz-adv-x="657" d="M63 279v563q0 12 1.5 31.5t15.5 70.5t38.5 90t80 71t129.5 32q51 0 106 -19l21 80h75l-30 -121q41 -37 64.5 -94t25.5 -96l4 -39v-576q0 -12 -1 -31.5t-15.5 -68.5t-40 -88t-80 -69.5t-129.5 -30.5q-57 0 -103 16l-20 -78h-80l31 121q-41 39 -64.5 97.5t-25.5 97.5z M258 436l125 486q-18 35 -55 34q-33 0 -50.5 -28.5t-19.5 -57.5v-28v-406zM274 197q16 -31 54 -31q35 0 52 27.5t17 56.5l2 29v403z" />
+<glyph unicode="&#xf9;" horiz-adv-x="690" d="M78 203v917h207v-887q0 -49 49 -49q18 0 34.5 13.5t24.5 27.5l8 13v882h207v-1120h-207v94l-31 -32q-30 -30 -67 -54t-70 -24q-76 0 -115.5 68.5t-39.5 150.5zM113 1489h215l106 -184h-160z" />
+<glyph unicode="&#xfa;" horiz-adv-x="690" d="M78 203v917h207v-887q0 -49 49 -49q18 0 34.5 13.5t24.5 27.5l8 13v882h207v-1120h-207v94l-31 -32q-30 -30 -67 -54t-70 -24q-76 0 -115.5 68.5t-39.5 150.5zM274 1305l107 184h215l-162 -184h-160z" />
+<glyph unicode="&#xfb;" horiz-adv-x="690" d="M78 203v917h207v-887q0 -49 49 -49q18 0 34.5 13.5t24.5 27.5l8 13v882h207v-1120h-207v94l-31 -32q-30 -30 -67 -54t-70 -24q-76 0 -115.5 68.5t-39.5 150.5zM94 1305l142 184h219l141 -184h-188l-64 71l-61 -71h-189z" />
+<glyph unicode="&#xfc;" horiz-adv-x="690" d="M78 203v917h207v-887q0 -49 49 -49q18 0 34.5 13.5t24.5 27.5l8 13v882h207v-1120h-207v94l-31 -32q-30 -30 -67 -54t-70 -24q-76 0 -115.5 68.5t-39.5 150.5zM106 1305v200h191v-200h-191zM395 1305v200h191v-200h-191z" />
+<glyph unicode="&#xfd;" horiz-adv-x="634" d="M25 1120l190 -1153q0 -68 -36 -123t-97 -61l-49 4v-184q70 -4 92 -4q115 0 192.5 95t94.5 222l198 1204h-202l-82 -688l-4 -57h-9l-4 57l-82 688h-202zM231 1305l107 184h215l-162 -184h-160z" />
+<glyph unicode="&#xfe;" horiz-adv-x="686" d="M82 -385v1890h207v-458q88 90 164 90q78 0 118.5 -69t40.5 -150v-715q0 -82 -41 -150.5t-118 -68.5q-33 0 -74 22.5t-66 44.5l-24 23v-459h-207zM289 246q0 -25 19.5 -46.5t42 -21.5t39 19.5t16.5 48.5v628q0 29 -16.5 48.5t-39 19.5t-42 -19.5t-19.5 -48.5v-628z" />
+<glyph unicode="&#xff;" horiz-adv-x="634" d="M25 1120h202l82 -688l4 -57h9l4 57l82 688h202l-198 -1204q-16 -127 -94 -222t-193 -95l-92 4v184q16 -4 49 -4q61 6 97 61.5t36 122.5zM78 1305v200h190v-200h-190zM367 1305v200h190v-200h-190z" />
+<glyph unicode="&#x131;" horiz-adv-x="370" d="M82 0v1120h207v-1120h-207z" />
+<glyph unicode="&#x141;" horiz-adv-x="628" d="M41 561v221l65 52v671h222v-499l121 94v-221l-121 -95v-579h293v-205h-515v612z" />
+<glyph unicode="&#x142;" horiz-adv-x="468" d="M31 561v221l100 78v645h207v-483l100 78v-221l-100 -78v-801h-207v639z" />
+<glyph unicode="&#x152;" horiz-adv-x="983" d="M68 309v887q0 12 2 33.5t17 75t43 93.5t88.5 73.5t143.5 33.5h580v-227h-285v-395h205v-242h-205v-414h285v-227h-580q-84 0 -144 31.5t-88 77t-43 91.5t-17 79zM289 309q0 -12 1 -30.5t19.5 -49t53 -30.5t53 27.5t18.5 56.5l2 26v901q-6 96 -74 97q-35 0 -53 -28 t-18 -54l-2 -29v-887z" />
+<glyph unicode="&#x153;" horiz-adv-x="995" d="M63 279v563q0 12 1.5 31.5t15.5 70.5t38.5 90t80 71t129.5 32q106 0 172 -60q66 59 170 60q76 0 130 -30t79.5 -73t40 -85t14.5 -72l2 -29v-326h-342v-250q0 -16 4 -36.5t22.5 -45t49.5 -24.5q35 0 53 27.5t18 56.5l2 29v122h193v-129q0 -12 -2 -31.5t-16.5 -68.5 t-39 -88t-80 -69.5t-130.5 -30.5q-106 0 -170 57q-68 -57 -170 -57q-74 0 -129.5 30.5t-80 73.5t-38.5 86t-14 74zM258 267.5q-2 -11.5 2 -29t10 -34t21.5 -27.5t36.5 -11q35 0 52 27.5t17 56.5l2 29v563q-2 0 0 11t-2 28.5t-10 34t-21.5 28.5t-37.5 12q-33 0 -50.5 -28.5 t-19.5 -57.5v-28v-563q2 0 0 -11.5zM594 684h149v158q0 12 -1 31.5t-19 51t-53 31.5q-43 0 -59.5 -37.5t-16.5 -70.5v-164z" />
+<glyph unicode="&#x160;" horiz-adv-x="702" d="M37 422l217 20q0 -256 104 -256q90 0 91 166q0 29 -8.5 59.5t-32 73.5t-36.5 64l-54 79q-40 58 -48 72q-66 96 -102.5 158t-68 149t-31.5 162q0 139 71.5 245t216.5 108q94 2 160 -35t95.5 -101.5t42 -127t12.5 -136.5l-217 -20q0 217 -89 217q-76 -2 -75 -150 q0 -18 4 -39.5t10 -39t18.5 -43t20.5 -40t28 -43.5l28 -43l33 -48l32 -46l104 -159q31 -49 67 -139.5t36 -166.5q0 -379 -308 -378q-82 0 -142 25.5t-94 63.5t-53.5 99t-25.5 117.5t-6 132.5zM100 1823h189l61 -72l64 72h188l-141 -185h-219z" />
+<glyph unicode="&#x161;" horiz-adv-x="630" d="M37 326h192q0 -170 97 -170q72 0 71 135q0 74 -129 198q-68 66 -98.5 99t-64 101.5t-33.5 144.5q0 55 12 104t39 95t78 74t123 30q86 2 142 -26t80.5 -79t33 -95t8.5 -103h-193q0 131 -67 131q-63 -2 -64 -131q0 -33 23.5 -73t45 -62.5t66.5 -65.5q190 -182 191 -342 q0 -123 -64.5 -215t-199.5 -92q-72 0 -126.5 24.5t-85 60t-49 85t-23.5 89.5t-5 83zM66 1489h188l61 -72l64 72h188l-141 -184h-219z" />
+<glyph unicode="&#x178;" horiz-adv-x="704" d="M16 1505h217l111 -481l6 -14h4l6 14l111 481h217l-225 -864v-641h-221v641zM113 1638v201h190v-201h-190zM401 1638v201h191v-201h-191z" />
+<glyph unicode="&#x17d;" horiz-adv-x="626" d="M20 0v238l347 1048h-297v219h536v-219l-352 -1067h352v-219h-586zM88 1823h188l62 -72l63 72h189l-141 -185h-220z" />
+<glyph unicode="&#x17e;" horiz-adv-x="532" d="M12 0v168l285 764h-240v188h459v-168l-285 -764h285v-188h-504zM25 1489h188l61 -72l64 72h188l-141 -184h-219z" />
+<glyph unicode="&#x2c6;" horiz-adv-x="1021" d="M260 1305l141 184h220l141 -184h-189l-63 71l-61 -71h-189z" />
+<glyph unicode="&#x2c7;" horiz-adv-x="1021" d="M260 1489h189l61 -72l63 72h189l-141 -184h-220z" />
+<glyph unicode="&#x2d8;" horiz-adv-x="1024" d="M287 1399l110 94q41 -47 115 -47q35 0 64.5 12t41.5 25l13 10l106 -94l-27 -27q-17 -16 -77 -42.5t-121 -26.5q-63 0 -119.5 24.5t-81.5 48.5z" />
+<glyph unicode="&#x2d9;" horiz-adv-x="1021" d="M408 1298v207h206v-207h-206z" />
+<glyph unicode="&#x2da;" horiz-adv-x="1021" d="M358 1421.5q0 61.5 45.5 102.5t108.5 41t107.5 -41t44.5 -102.5t-44.5 -102.5t-107.5 -41t-108.5 41t-45.5 102.5zM436 1421.5q0 -28.5 23.5 -50t52.5 -21.5t52.5 21.5t23.5 50t-23.5 50t-52.5 21.5t-52.5 -21.5t-23.5 -50z" />
+<glyph unicode="&#x2db;" horiz-adv-x="1024" d="M348 -211q0 51 34 103.5t69 78.5l32 29h99q-10 -8 -25.5 -22.5t-41.5 -59.5t-26 -88q0 -41 31 -59.5t72 -18.5t86 19l-16 -138q-55 -18 -105 -18q-96 0 -152.5 51t-56.5 123z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="1024" d="M313 1305v151q49 39 109 39q33 0 91 -18.5t89 -20.5q25 0 52.5 8.5t41.5 16.5l15 8v-152q-51 -39 -109 -39q-31 0 -89 19.5t-91 19.5q-25 0 -52.5 -8t-41.5 -16z" />
+<glyph unicode="&#x2dd;" horiz-adv-x="1024" d="M215 1305l107 184h215l-162 -184h-160zM518 1305l107 184h215l-162 -184h-160z" />
+<glyph unicode="&#x2000;" horiz-adv-x="952" />
+<glyph unicode="&#x2001;" horiz-adv-x="1904" />
+<glyph unicode="&#x2002;" horiz-adv-x="952" />
+<glyph unicode="&#x2003;" horiz-adv-x="1904" />
+<glyph unicode="&#x2004;" horiz-adv-x="634" />
+<glyph unicode="&#x2005;" horiz-adv-x="475" />
+<glyph unicode="&#x2006;" horiz-adv-x="317" />
+<glyph unicode="&#x2007;" horiz-adv-x="317" />
+<glyph unicode="&#x2008;" horiz-adv-x="237" />
+<glyph unicode="&#x2009;" horiz-adv-x="380" />
+<glyph unicode="&#x200a;" horiz-adv-x="104" />
+<glyph unicode="&#x2010;" horiz-adv-x="444" d="M74 455v194h297v-194h-297z" />
+<glyph unicode="&#x2011;" horiz-adv-x="444" d="M74 455v194h297v-194h-297z" />
+<glyph unicode="&#x2012;" horiz-adv-x="444" d="M74 455v194h297v-194h-297z" />
+<glyph unicode="&#x2013;" horiz-adv-x="806" d="M74 649v195h659v-195h-659z" />
+<glyph unicode="&#x2014;" horiz-adv-x="972" d="M74 649v195h825v-195h-825z" />
+<glyph unicode="&#x2018;" horiz-adv-x="309" d="M49 1012v227l113 266h102l-71 -266h71v-227h-215z" />
+<glyph unicode="&#x2019;" horiz-adv-x="309" d="M45 1012l72 266h-72v227h215v-227l-113 -266h-102z" />
+<glyph unicode="&#x201a;" horiz-adv-x="309" d="M45 0v227h215v-227l-113 -266h-102l72 266h-72z" />
+<glyph unicode="&#x201c;" horiz-adv-x="624" d="M53 1012v227l113 266h102l-71 -266h71v-227h-215zM356 1012v227l113 266h102l-71 -266h71v-227h-215z" />
+<glyph unicode="&#x201d;" horiz-adv-x="624" d="M53 1012l72 266h-72v227h215v-227l-112 -266h-103zM356 1012l72 266h-72v227h215v-227l-112 -266h-103z" />
+<glyph unicode="&#x201e;" horiz-adv-x="624" d="M53 0v227h215v-227l-112 -266h-103l72 266h-72zM356 0v227h215v-227l-112 -266h-103l72 266h-72z" />
+<glyph unicode="&#x2022;" horiz-adv-x="663" d="M82 817q0 102 72.5 175t179.5 73q102 0 175 -72.5t73 -175.5q0 -106 -73 -179t-175 -73q-106 0 -179 73t-73 179z" />
+<glyph unicode="&#x2026;" horiz-adv-x="964" d="M53 0v227h215v-227h-215zM375 0v227h215v-227h-215zM696 0v227h215v-227h-215z" />
+<glyph unicode="&#x202f;" horiz-adv-x="380" />
+<glyph unicode="&#x205f;" horiz-adv-x="475" />
+<glyph unicode="&#x20ac;" horiz-adv-x="813" d="M53 547v137h107v137h-107v137h107v238q0 12 2 34.5t17.5 79t43 99.5t88 78t144.5 35t144 -34t88 -81t43 -95t18 -83l2 -33v-84h-207v84q-2 0 0 11.5t-3 27.5t-12.5 32.5t-25 28t-43.5 11.5q-35 0 -54.5 -28t-21.5 -54l-2 -29v-238h233v-137h-233v-137h233v-137h-233v-238 q0 -12 2 -30.5t21.5 -49t54.5 -30.5q41 0 61.5 27.5t20.5 56.5l2 26v84h207v-84q0 -12 -2.5 -34.5t-17.5 -79t-43 -99.5t-88 -77.5t-144 -34.5t-144.5 33.5t-88 80.5t-43 95.5t-17.5 80.5l-2 35v238h-107z" />
+<glyph unicode="&#x2122;" horiz-adv-x="937" d="M74 1401v104h321v-104h-104v-580h-113v580h-104zM440 821v684h138l67 -319h6l68 319h137v-684h-104v449l-78 -449h-51l-80 449v-449h-103z" />
+<glyph unicode="&#x2212;" horiz-adv-x="776" d="M74 649v172h628v-172h-628z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1120" d="M0 1120h1120v-1120h-1120v1120z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="772" d="M20 934v186h105v31q0 45 1 69.5t7 77t22.5 84t43 67.5t72.5 53.5t108 17.5q33 0 69.5 -4.5t57.5 -8.5l20 -2v-184q-41 12 -110 12q-31 0 -50.5 -18.5t-25.5 -58t-7 -54t-1 -53.5v-29h358v-1120h-207v934h-151v-934h-207v934h-105z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="772" d="M20 934v186h105v31q0 45 1 69.5t7 77t22.5 84t43 67.5t72.5 53.5t108 17.5q33 0 69.5 -4.5t57.5 -8.5l20 -2h164v-1505h-207v1329q-37 4 -67.5 4t-50 -18.5t-25.5 -58t-7 -54t-1 -53.5v-29h104v-186h-104v-934h-207v934h-105z" />
+</font>
+</defs></svg> 
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/css/font-files/fanwood-webfont.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/css/font-files/fanwood-webfont.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/css/font-files/fanwood-webfont.svg	(revision 29468)
@@ -0,0 +1,939 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Copyright c 2011 Barry Schwartz
+</metadata>
+<defs>
+<font id="FanwoodRegular" horiz-adv-x="500" >
+<font-face units-per-em="1000" ascent="690" descent="-310" />
+<missing-glyph horiz-adv-x="200" />
+<glyph unicode="fi" horiz-adv-x="499" d="M35 12q0 13 12 13h40q4 0 4 63q0 20 -0.5 51t-0.5 33v80q0 94 -2 94h-33q-9 0 -11.5 2t-2.5 11t2 11t9 2h29q6 0 7.5 1t1.5 7q0 66 6 125q8 82 53.5 127.5t113.5 45.5q57 0 92 -29t35 -59q0 -16 -17 -30.5t-29 -14.5t-13 9q-4 62 -22 82t-51 20t-54.5 -22t-30.5 -63 t-12 -76.5t-3 -85.5v-24q0 -9 3 -11t16 -2h117q11 0 59 2.5t54 2.5q7 0 7 -6v-170q0 -107 3 -164q0 -5 0.5 -7t2.5 -3.5t7 -1.5h31q11 0 11 -13q0 -8 -1.5 -11t-9.5 -3q-9 0 -37.5 1t-41.5 1t-44 -1t-40 -1q-8 0 -9.5 2.5t-1.5 11.5q0 7 2.5 10t11.5 3h36q8 0 9.5 2t1.5 10 q1 29 1 82q0 117 -4 214q-1 9 -2.5 11.5t-7.5 2.5h-157q-11 0 -14 -2t-3 -10v-166q0 -144 10 -144h59q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -44 1t-52 1q-12 0 -39.5 -1t-43.5 -1q-9 0 -11 2.5t-2 11.5z" />
+<glyph unicode="fl" horiz-adv-x="501" d="M33 12q0 13 12 13h40q6 0 6 63q0 20 -0.5 51t-0.5 33v60q0 114 -2 114h-35q-9 0 -11.5 2t-2.5 11t2 11t9 2h27q7 0 9.5 2t2.5 10q0 24 -0.5 47t-0.5 50q0 84 45.5 140.5t132.5 56.5q36 0 74 -22q12 -7 27 -5q9 1 18.5 3t15 3t6.5 1q5 0 6 -2.5t1 -12.5q-4 -181 -4 -348 q0 -270 4 -270h48q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -38 1t-46 1q-12 0 -42 -1t-46 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h47q4 0 4 85v219q0 12 -2.5 15t-11.5 3h-150q-11 0 -15 -2.5t-4 -9.5v-226q0 -84 8 -84h55q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8 t-3.5 -4t-9 -2q-8 0 -41.5 1t-49.5 1q-12 0 -39.5 -1t-43.5 -1q-9 0 -11 2.5t-2 11.5zM155 389q0 -12 3 -14.5t18 -2.5h148q10 0 13 3.5t3 16.5q0 61 -2 157q0 13 -13 33q-5 7 -13.5 23.5t-14.5 25.5t-19 17t-32 8q-29 0 -48.5 -15.5t-28 -45.5t-11.5 -59t-3 -69v-78z" />
+<glyph unicode="ff" horiz-adv-x="558" d="M38 12q0 13 12 13h37q4 0 4 63q0 20 -0.5 51t-0.5 33v60q0 114 -2 114h-35q-9 0 -11.5 2t-2.5 11t2 11t9 2h29q7 0 8.5 2t1.5 10q0 40 2.5 69t11.5 71t32.5 73.5t59.5 48.5q37 18 74 18q55 0 98 -41q7 -5 10 -1q38 56 112 56q37 0 63 -18.5t26 -48.5q0 -16 -18 -31.5 t-30 -15.5t-13 9q-3 23 -5 33t-7 24.5t-13.5 20t-21.5 5.5q-17 0 -28.5 -8t-17.5 -19t-9.5 -31.5t-4 -36t-0.5 -42.5v-130v-7.5t1 -5t3.5 -3t6 -1t9.5 -0.5h116q7 0 7 -5t-2.5 -12.5t-5.5 -7.5h-115q-11 0 -14 -2t-3 -10v-166q0 -144 10 -144h66q8 0 10.5 -3t2.5 -10 q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -49 1t-57 1q-12 0 -37 -1t-41 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h37q4 0 4 63q0 20 -0.5 51t-0.5 33v60q0 26 -0.5 62t-0.5 40q0 8 -3.5 10.5t-14.5 2.5h-149q-11 0 -14 -2t-3 -10v-166q0 -144 10 -144h56q8 0 10.5 -3t2.5 -10 q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -44 1t-52 1q-12 0 -37 -1t-41 -1q-9 0 -11 2.5t-2 11.5zM156 386q0 -9 3.5 -11.5t16.5 -2.5h147q13 0 15.5 2t2.5 11q0 19 -0.5 39t-0.5 40q0 24 2 46.5t4 35.5l3 12q0 4 -3 7q-16 13 -24 27q-9 15 -15.5 24t-20 17t-29.5 8q-24 0 -42 -10 t-28.5 -30t-17.5 -39t-9.5 -48t-3 -46t-0.5 -43v-39z" />
+<glyph unicode="ffi" horiz-adv-x="753" d="M38 12q0 13 12 13h37q4 0 4 63q0 20 -0.5 51t-0.5 33v66q0 108 -2 108h-35q-9 0 -11.5 2t-2.5 11t2 11t9 2h29q7 0 8.5 2t1.5 10q0 36 1 59.5t6.5 58.5t16.5 59t31.5 47.5t50.5 37.5q37 18 74 18q33 0 63.5 -16t49.5 -43q47 73 135 73q57 0 92 -29t35 -59 q0 -16 -17 -30.5t-29 -14.5t-13 9q-4 62 -22 82t-51 20t-54.5 -22t-30.5 -63t-12 -76.5t-3 -85.5v-24q0 -9 3 -11t16 -2h117q11 0 59 2.5t54 2.5q7 0 7 -6v-170q0 -107 3 -164q0 -5 0.5 -7t2.5 -3.5t7 -1.5h31q11 0 11 -13q0 -8 -1.5 -11t-9.5 -3q-9 0 -37.5 1t-41.5 1 t-44 -1t-40 -1q-8 0 -9.5 2.5t-1.5 11.5q0 7 2.5 10t11.5 3h36q8 0 9.5 2t1.5 10q1 29 1 82q0 117 -4 214q-1 9 -2.5 11.5t-7.5 2.5h-157q-11 0 -14 -2t-3 -10v-166q0 -144 10 -144h49q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -39 1t-47 1q-12 0 -39.5 -1 t-43.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h40q4 0 4 63q0 20 -0.5 51t-0.5 33v80q0 94 -2 94q-6 0 -21.5 0.5t-20.5 0.5h-124q-11 0 -14 -2t-3 -10v-166q0 -144 10 -144h56q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -44 1t-52 1q-12 0 -37 -1t-41 -1 q-9 0 -11 2.5t-2 11.5zM155 389q0 -12 3 -14.5t18 -2.5h159q6 0 7.5 1t1.5 7q0 105 10 150q4 18 4 19q0 4 -9 10q-13 9 -30 38q-25 44 -62 44q-20 0 -36 -7t-26.5 -16.5t-18 -28t-11.5 -33t-6 -40.5t-2.5 -41t-1 -44.5t-0.5 -41.5z" />
+<glyph unicode="ffl" horiz-adv-x="754" d="M38 12q0 13 12 13h37q4 0 4 63q0 20 -0.5 51t-0.5 33v60q0 114 -2 114h-35q-9 0 -11.5 2t-2.5 11t2 11t9 2h29q7 0 8.5 2t1.5 10q0 213 106 262q37 18 74 18q66 0 106 -50q3 -4 7 1q50 63 138 63q36 0 74 -22q12 -7 27 -5q9 1 18.5 3t15 3t6.5 1q5 0 6 -2.5t1 -12.5 q-4 -181 -4 -375q0 -243 4 -243h48q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -38 1t-46 1q-12 0 -42 -1t-46 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h47q4 0 4 85v219q0 12 -2.5 15t-11.5 3h-150q-11 0 -15 -2.5t-4 -9.5v-226q0 -84 8 -84h50q8 0 10.5 -3t2.5 -10 q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -39 1t-47 1q-12 0 -39.5 -1t-43.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h40q6 0 6 63q0 20 -0.5 51t-0.5 33v165q0 7 -2.5 8.5t-11.5 1.5h-154q-11 0 -14 -2t-3 -10v-166q0 -144 10 -144h56q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4 t-9 -2q-8 0 -44 1t-52 1q-12 0 -37 -1t-41 -1q-9 0 -11 2.5t-2 11.5zM156 384q0 -8 3.5 -10t16.5 -2h157q7 0 8.5 2t1.5 13q0 21 -0.5 44.5t-0.5 49.5q0 47 8 73q1 3 1 5t-5 6q-16 13 -24 27q-9 15 -15.5 24t-20 17t-29.5 8q-27 0 -47 -15t-30 -36t-16 -54t-7 -57t-1 -58 v-37zM409 389q0 -12 3 -14.5t18 -2.5h148q10 0 13 3.5t3 16.5q0 61 -2 157q0 13 -13 33q-5 7 -13.5 23.5t-14.5 25.5t-19 17t-32 8q-29 0 -48.5 -15.5t-28 -45.5t-11.5 -59t-3 -69v-78z" />
+<glyph unicode="fj" horiz-adv-x="506" d="M35 12q0 13 12 13h40q4 0 4 63q0 20 -0.5 51t-0.5 33v80q0 94 -2 94h-33q-9 0 -11.5 2t-2.5 11t2 11t9 2h29q6 0 7.5 1t1.5 7q0 66 6 125q8 82 53.5 127.5t113.5 45.5q57 0 92 -29t35 -59q0 -16 -17 -30.5t-29 -14.5t-13 9q-4 62 -22 82t-51 20t-54.5 -22t-30.5 -63 t-12 -76.5t-3 -85.5v-24q0 -9 3 -11t16 -2h117q11 0 57.5 3t52.5 3q7 0 7 -23q0 -20 2.5 -136.5t2.5 -191.5q0 -90 -10.5 -145t-43.5 -98q-13 -17 -57.5 -38t-66.5 -21q-19 0 -19 20q0 16 14.5 34.5t26.5 18.5t31.5 -2t23.5 -2q19 0 28.5 9.5t9.5 23.5q0 9 -2.5 56.5 t-4.5 145t-2 229.5q0 49 -2 76q-1 13 -10 13h-157q-11 0 -14 -2t-3 -10v-166q0 -144 10 -144h59q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -44 1t-52 1q-12 0 -39.5 -1t-43.5 -1q-9 0 -11 2.5t-2 11.5z" />
+<glyph unicode="ffj" horiz-adv-x="760" d="M38 12q0 13 12 13h37q4 0 4 63q0 20 -0.5 51t-0.5 33v66q0 108 -2 108h-35q-9 0 -11.5 2t-2.5 11t2 11t9 2h29q7 0 8.5 2t1.5 10q0 36 1 59.5t6.5 58.5t16.5 59t31.5 47.5t50.5 37.5q37 18 74 18q33 0 63.5 -16t49.5 -43q47 73 135 73q57 0 92 -29t35 -59 q0 -16 -17 -30.5t-29 -14.5t-13 9q-4 62 -22 82t-51 20t-54.5 -22t-30.5 -63t-12 -76.5t-3 -85.5v-24q0 -9 3 -11t16 -2h117q11 0 57.5 3t52.5 3q7 0 7 -23q0 -20 2.5 -136.5t2.5 -191.5q0 -90 -10.5 -145t-43.5 -98q-13 -17 -57.5 -38t-66.5 -21q-19 0 -19 20 q0 16 14.5 34.5t26.5 18.5t31.5 -2t23.5 -2q19 0 28.5 9.5t9.5 23.5q0 9 -2.5 56.5t-4.5 145t-2 229.5q0 49 -2 76q-1 13 -10 13h-157q-11 0 -14 -2t-3 -10v-166q0 -144 10 -144h49q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -39 1t-47 1q-12 0 -39.5 -1 t-43.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h40q4 0 4 63q0 20 -0.5 51t-0.5 33v80q0 94 -2 94q-6 0 -21.5 0.5t-20.5 0.5h-124q-11 0 -14 -2t-3 -10v-166q0 -144 10 -144h56q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -44 1t-52 1q-12 0 -37 -1t-41 -1 q-9 0 -11 2.5t-2 11.5zM155 389q0 -12 3 -14.5t18 -2.5h159q6 0 7.5 1t1.5 7q0 105 10 150q4 18 4 19q0 4 -9 10q-13 9 -30 38q-25 44 -62 44q-20 0 -36 -7t-26.5 -16.5t-18 -28t-11.5 -33t-6 -40.5t-2.5 -41t-1 -44.5t-0.5 -41.5z" />
+<glyph unicode="fb" horiz-adv-x="739" d="M33 12q0 13 12 13h40q6 0 6 63q0 20 -0.5 51t-0.5 33v60q0 114 -2 114h-35q-9 0 -11.5 2t-2.5 11t2 11t9 2h27q7 0 9.5 2t2.5 10q0 24 -0.5 47t-0.5 50q0 84 45.5 140.5t132.5 56.5q36 0 74 -22q12 -7 27 -5q9 1 18.5 3t15 3t6.5 1q5 0 6 -2.5t1 -12.5q0 -3 -1 -48 t-2.5 -104t-1.5 -97t1 -38t7.5 3t17.5 7.5t23.5 9t28.5 7.5t30 3q83 0 137.5 -57.5t54.5 -140.5q0 -92 -65 -146.5t-156 -54.5q-19 0 -47.5 9.5t-41.5 9.5q-11 0 -28 -9t-21 -9q-12 0 -12 13q0 1 1 36.5t1.5 82.5t0.5 77q0 304 -1 352q0 6 -1.5 11t-3 8t-5 7t-5.5 7 q-5 7 -13.5 23.5t-14.5 25.5t-19 17t-32 8q-29 0 -48.5 -15.5t-28 -45.5t-11.5 -59t-3 -69v-78q0 -12 3 -14.5t18 -2.5h116q7 0 7 -5t-2.5 -12.5t-5.5 -7.5h-115q-11 0 -15 -2.5t-4 -9.5v-226q0 -84 8 -84h55q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -41.5 1 t-49.5 1q-12 0 -39.5 -1t-43.5 -1q-9 0 -11 2.5t-2 11.5zM407 64q0 -50 84 -50q67 0 106.5 51t39.5 122q0 67 -47.5 118.5t-112.5 51.5q-16 0 -32.5 -5.5t-26 -11t-9.5 -8.5q0 -59 -1 -159.5t-1 -108.5z" />
+<glyph unicode="fh" horiz-adv-x="755" d="M33 12q0 13 12 13h40q6 0 6 63q0 20 -0.5 51t-0.5 33v60q0 114 -2 114h-35q-9 0 -11.5 2t-2.5 11t2 11t9 2h27q7 0 9.5 2t2.5 10q0 24 -0.5 47t-0.5 50q0 84 45.5 140.5t132.5 56.5q36 0 74 -22q12 -7 27 -5q9 1 18.5 3t15 3t6.5 1q5 0 6 -2.5t1 -12.5q-4 -83 -4 -289 v-10t2 -3t3 0.5t6 3.5q73 40 133 40q40 0 66.5 -16t38.5 -47t16 -63t4 -79v-143q0 -8 1.5 -10t9.5 -2h26q14 0 14 -13q0 -14 -14 -14q-8 0 -31.5 1t-39.5 1q-12 0 -41 -1t-45 -1q-9 0 -11 2.5t-2 11.5q0 13 13 13h39q8 0 9 1.5t2 9.5q2 40 2 176q0 58 -24 95t-72 37 q-47 0 -89 -21q-16 -8 -16 -15l1 -150q0 -89 1 -115q1 -10 1.5 -13t2 -4t7.5 -1h38q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -37.5 1t-45.5 1q-12 0 -41 -1t-45 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h39q7 0 8.5 3t1.5 15q1 94 1 220q0 238 -1 286q0 6 -1.5 11 t-3 8t-5 7t-5.5 7q-5 7 -13.5 23.5t-14.5 25.5t-19 17t-32 8q-29 0 -48.5 -15.5t-28 -45.5t-11.5 -59t-3 -69v-78q0 -12 3 -14.5t18 -2.5h116q7 0 7 -5t-2.5 -12.5t-5.5 -7.5h-115q-11 0 -15 -2.5t-4 -9.5v-226q0 -84 8 -84h55q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4 t-9 -2q-8 0 -41.5 1t-49.5 1q-12 0 -39.5 -1t-43.5 -1q-9 0 -11 2.5t-2 11.5z" />
+<glyph unicode="fk" horiz-adv-x="705" d="M33 12q0 13 12 13h40q6 0 6 63q0 20 -0.5 51t-0.5 33v60q0 114 -2 114h-35q-9 0 -11.5 2t-2.5 11t2 11t9 2h27q7 0 9.5 2t2.5 10q0 24 -0.5 47t-0.5 50q0 84 45.5 140.5t132.5 56.5q36 0 74 -22q12 -7 27 -5q9 1 18.5 3t15 3t6.5 1q5 0 6 -2.5t1 -12.5l-9 -423 q0 -8 2.5 -9.5t13.5 -1.5h22q4 0 7.5 1t7 4.5l5 5t5.5 6t4 5.5q53 70 79 113q3 5 3.5 6.5t1.5 4t-0.5 3.5t-5 1.5t-9.5 0.5h-20q-8 0 -10.5 3t-2.5 10q0 14 14 14q4 0 25 -1t33 -1q10 0 30 1t27 1q13 0 13 -14q0 -13 -12 -13h-32q-11 0 -107 -123q-2 -2 -5 -6q-3 -3 -4 -4.5 t0.5 -4t3.5 -4.5l5 -5l151 -175q11 -13 22 -13h10q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2t-29.5 1t-37.5 1t-38 -1t-30 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h11q17 0 5 15l-110 136q-2 2 -4 5q-9 12 -18 12h-14q-8 0 -9.5 -3t-1.5 -13v-134q0 -13 1.5 -15.5 t9.5 -2.5h23q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -30 1t-38 1q-19 0 -48 -1t-32 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h41q7 0 8.5 3t1.5 15v193q0 265 -1 313q0 6 -1.5 11t-3 8t-5 7t-5.5 7q-5 7 -13.5 23.5t-14.5 25.5t-19 17t-32 8q-29 0 -48.5 -15.5 t-28 -45.5t-11.5 -59t-3 -69v-78q0 -12 3 -14.5t18 -2.5h116q7 0 7 -5t-2.5 -12.5t-5.5 -7.5h-115q-11 0 -15 -2.5t-4 -9.5v-226q0 -84 8 -84h55q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -41.5 1t-49.5 1q-12 0 -39.5 -1t-43.5 -1q-9 0 -11 2.5t-2 11.5z" />
+<glyph unicode="ffb" horiz-adv-x="992" d="M38 12q0 13 12 13h37q4 0 4 63q0 20 -0.5 51t-0.5 33v60q0 114 -2 114h-35q-9 0 -11.5 2t-2.5 11t2 11t9 2h29q7 0 8.5 2t1.5 10q0 40 2.5 69t11.5 71t32.5 73.5t59.5 48.5q37 18 74 18q66 0 106 -50q3 -4 7 1q50 63 138 63q36 0 74 -22q12 -7 27 -5q9 1 18.5 3t15 3 t6.5 1q5 0 6 -2.5t1 -12.5q0 -4 -3 -104.5t-3 -144.5q0 -38 1 -38t7.5 3t17.5 7.5t23.5 9t28.5 7.5t30 3q83 0 137.5 -57.5t54.5 -140.5q0 -92 -65 -146.5t-156 -54.5q-19 0 -47.5 9.5t-41.5 9.5q-11 0 -28 -9t-21 -9q-12 0 -12 13q0 1 0.5 36.5t1.5 82.5t1 77q0 256 -2 352 q0 13 -13 33q-5 7 -13.5 23.5t-14.5 25.5t-19 17t-32 8q-29 0 -48.5 -15.5t-28 -45.5t-11.5 -59t-3 -69v-78q0 -12 3 -14.5t18 -2.5h116q7 0 7 -5t-2.5 -12.5t-5.5 -7.5h-115q-11 0 -15 -2.5t-4 -9.5v-226q0 -84 8 -84h50q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2 q-8 0 -39 1t-47 1q-12 0 -39.5 -1t-43.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h40q6 0 6 63q0 20 -0.5 51t-0.5 33v165q0 7 -2.5 8.5t-11.5 1.5h-154q-11 0 -14 -2t-3 -10v-166q0 -144 10 -144h56q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -44 1t-52 1 q-12 0 -37 -1t-41 -1q-9 0 -11 2.5t-2 11.5zM156 384q0 -8 3 -10t17 -2h157q7 0 8.5 2t1.5 13q0 21 -0.5 44.5t-0.5 49.5q0 47 8 73q1 3 1 5t-5 6q-16 13 -24 27q-9 15 -15.5 24t-20 17t-29.5 8q-28 0 -48 -15.5t-30 -36.5t-15.5 -55t-6.5 -57.5t-1 -57.5v-35zM660 64 q0 -50 84 -50q67 0 106.5 51t39.5 122q0 67 -47.5 118.5t-112.5 51.5q-16 0 -32.5 -5.5t-26 -11t-9.5 -8.5q0 -59 -1 -159.5t-1 -108.5z" />
+<glyph unicode="ffh" horiz-adv-x="1008" d="M38 12q0 13 12 13h37q4 0 4 63q0 20 -0.5 51t-0.5 33v60q0 114 -2 114h-35q-9 0 -11.5 2t-2.5 11t2 11t9 2h29q7 0 8.5 2t1.5 10q0 39 2.5 68t11.5 71.5t32.5 74t59.5 48.5q37 18 74 18q66 0 106 -50q3 -4 7 1q50 63 138 63q36 0 74 -22q12 -7 27 -5q9 1 18.5 3t15 3 t6.5 1q5 0 6 -2.5t1 -12.5q-5 -104 -5 -289v-10t2 -3t3 0.5t6 3.5q73 40 133 40q40 0 66.5 -16t38.5 -47t16 -63t4 -79v-143q0 -8 1.5 -10t9.5 -2h26q14 0 14 -13q0 -14 -14 -14q-8 0 -31.5 1t-39.5 1q-12 0 -41 -1t-45 -1q-9 0 -11 2.5t-2 11.5q0 13 13 13h39q7 0 8.5 1.5 t2.5 9.5q2 40 2 176q0 58 -24 95t-72 37q-47 0 -89 -21q-16 -8 -16 -15l1 -150q0 -89 1 -115q1 -13 2 -15.5t9 -2.5h38q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -37.5 1t-45.5 1q-12 0 -41 -1t-45 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h39q7 0 8.5 3t1.5 15 q1 94 1 220q0 190 -2 286q0 13 -13 33q-5 7 -13.5 23.5t-14.5 25.5t-19 17t-32 8q-29 0 -48.5 -15.5t-28 -45.5t-11.5 -59t-3 -69v-78q0 -12 3 -14.5t18 -2.5h116q7 0 7 -5t-2.5 -12.5t-5.5 -7.5h-115q-11 0 -15 -2.5t-4 -9.5v-226q0 -84 8 -84h50q8 0 10.5 -3t2.5 -10 q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -39 1t-47 1q-12 0 -39.5 -1t-43.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h40q6 0 6 63q0 20 -0.5 51t-0.5 33v165q0 7 -2.5 8.5t-11.5 1.5h-154q-11 0 -14 -2t-3 -10v-166q0 -144 10 -144h56q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4 t-9 -2q-8 0 -44 1t-52 1q-12 0 -37 -1t-41 -1q-9 0 -11 2.5t-2 11.5zM156 385q0 -8 3.5 -10.5t16.5 -2.5h157q7 0 8.5 2t1.5 13q0 21 -0.5 44.5t-0.5 49.5q0 47 8 73q1 3 1 5t-5 6q-16 13 -24 27q-9 15 -15.5 24t-20 17t-29.5 8q-34 0 -56 -20t-31 -57t-11.5 -67.5 t-2.5 -74.5v-37z" />
+<glyph unicode="ffk" horiz-adv-x="957" d="M38 12q0 13 12 13h37q4 0 4 63q0 20 -0.5 51t-0.5 33v60q0 114 -2 114h-35q-9 0 -11.5 2t-2.5 11t2 11t9 2h29q7 0 8.5 2t1.5 10q0 39 2.5 68t11.5 71.5t32.5 74t59.5 48.5q37 18 74 18q66 0 106 -50q3 -4 7 1q50 63 138 63q36 0 74 -22q12 -7 27 -5q9 1 18.5 3t15 3 t6.5 1q5 0 6 -2.5t1 -12.5l-11 -423q0 -8 2.5 -9.5t13.5 -1.5h22q4 0 7.5 1t7 4.5l5 5t5.5 6t4 5.5q53 70 79 113q3 5 3.5 6.5t1.5 4t-0.5 3.5t-5 1.5t-9.5 0.5h-20q-8 0 -10.5 3t-2.5 10q0 14 14 14q4 0 25 -1t33 -1q10 0 30 1t27 1q13 0 13 -14q0 -13 -12 -13h-32 q-11 0 -107 -123q-2 -2 -5 -6q-3 -3 -4 -4.5t0.5 -4t3.5 -4.5l5 -5l151 -175q11 -13 22 -13h10q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2t-29.5 1t-37.5 1t-38 -1t-30 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h11q17 0 5 15l-110 136q-2 2 -4 5q-9 12 -18 12h-14 q-8 0 -9.5 -3t-1.5 -13v-134q0 -13 1.5 -15.5t9.5 -2.5h23q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -30 1t-38 1q-19 0 -48 -1t-32 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h41q7 0 8.5 3t1.5 15v193q0 265 -1 313q0 13 -13 33q-5 7 -13.5 23.5t-14.5 25.5t-19 17 t-32 8q-29 0 -48.5 -15.5t-28 -45.5t-11.5 -59t-3 -69v-78q0 -12 3 -14.5t18 -2.5h116q7 0 7 -5t-2.5 -12.5t-5.5 -7.5h-115q-11 0 -15 -2.5t-4 -9.5v-226q0 -84 8 -84h50q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -39 1t-47 1q-12 0 -39.5 -1t-43.5 -1 q-9 0 -11 2.5t-2 11.5q0 13 12 13h40q6 0 6 63q0 20 -0.5 51t-0.5 33v165q0 7 -2.5 8.5t-11.5 1.5h-154q-11 0 -14 -2t-3 -10v-166q0 -144 10 -144h56q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -44 1t-52 1q-12 0 -37 -1t-41 -1q-9 0 -11 2.5t-2 11.5zM156 387 q0 -10 3 -12.5t17 -2.5h157q7 0 8.5 2t1.5 13q0 21 -1.5 44.5t-1.5 49.5q0 40 10 73q1 3 1 5t-5 6q-16 13 -24 27q-9 15 -15.5 24t-20 17t-29.5 8q-29 0 -49.5 -17t-30 -38t-15 -57.5t-6 -57t-0.5 -55.5v-29z" />
+<glyph unicode="f&#x125;" horiz-adv-x="755" d="M330 731l4 6l79 89q12 13 16 13h24q4 0 16 -13l79 -89q4 -4 4 -6t-6 -2h-9q-1 0 -11 6l-81 45q-4 2 -8 0l-81 -45q-10 -6 -11 -6h-9q-6 0 -6 2zM33 12q0 13 12 13h40q6 0 6 63q0 20 -0.5 51t-0.5 33v60q0 114 -2 114h-35q-9 0 -11.5 2t-2.5 11t2 11t9 2h27q7 0 9.5 2 t2.5 10q0 24 -0.5 47t-0.5 50q0 84 45.5 140.5t132.5 56.5q36 0 74 -22q12 -7 27 -5q9 1 18.5 3t15 3t6.5 1q5 0 6 -2.5t1 -12.5q-4 -83 -4 -289v-10t2 -3t3 0.5t6 3.5q73 40 133 40q40 0 66.5 -16t38.5 -47t16 -63t4 -79v-143q0 -8 1.5 -10t9.5 -2h26q14 0 14 -13 q0 -14 -14 -14q-8 0 -31.5 1t-39.5 1q-12 0 -41 -1t-45 -1q-9 0 -11 2.5t-2 11.5q0 13 13 13h39q8 0 9 1.5t2 9.5q2 40 2 176q0 58 -24 95t-72 37q-47 0 -89 -21q-16 -8 -16 -15l1 -150q0 -89 1 -115q1 -10 1.5 -13t2 -4t7.5 -1h38q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8 t-3.5 -4t-9 -2q-8 0 -37.5 1t-45.5 1q-12 0 -41 -1t-45 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h39q7 0 8.5 3t1.5 15q1 94 1 220q0 238 -1 286q0 6 -1.5 11t-3 8t-5 7t-5.5 7q-5 7 -13.5 23.5t-14.5 25.5t-19 17t-32 8q-29 0 -48.5 -15.5t-28 -45.5t-11.5 -59t-3 -69v-78 q0 -12 3 -14.5t18 -2.5h116q7 0 7 -5t-2.5 -12.5t-5.5 -7.5h-115q-11 0 -15 -2.5t-4 -9.5v-226q0 -84 8 -84h55q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -41.5 1t-49.5 1q-12 0 -39.5 -1t-43.5 -1q-9 0 -11 2.5t-2 11.5z" />
+<glyph unicode="ff&#x125;" horiz-adv-x="1008" d="M583 731l4 6l79 89q12 13 16 13h24q4 0 16 -13l79 -89q4 -4 4 -6t-6 -2h-9q-1 0 -11 6l-81 45q-4 2 -8 0l-81 -45q-10 -6 -11 -6h-9q-6 0 -6 2zM38 12q0 13 12 13h37q4 0 4 63q0 20 -0.5 51t-0.5 33v60q0 114 -2 114h-35q-9 0 -11.5 2t-2.5 11t2 11t9 2h29q7 0 8.5 2 t1.5 10q0 39 2.5 68t11.5 71.5t32.5 74t59.5 48.5q37 18 74 18q66 0 106 -50q3 -4 7 1q50 63 138 63q36 0 74 -22q12 -7 27 -5q9 1 18.5 3t15 3t6.5 1q5 0 6 -2.5t1 -12.5q-5 -104 -5 -289v-10t2 -3t3 0.5t6 3.5q73 40 133 40q40 0 66.5 -16t38.5 -47t16 -63t4 -79v-143 q0 -8 1.5 -10t9.5 -2h26q14 0 14 -13q0 -14 -14 -14q-8 0 -31.5 1t-39.5 1q-12 0 -41 -1t-45 -1q-9 0 -11 2.5t-2 11.5q0 13 13 13h39q7 0 8.5 1.5t2.5 9.5q2 40 2 176q0 58 -24 95t-72 37q-47 0 -89 -21q-16 -8 -16 -15l1 -150q0 -89 1 -115q1 -13 2 -15.5t9 -2.5h38 q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -37.5 1t-45.5 1q-12 0 -41 -1t-45 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h39q7 0 8.5 3t1.5 15q1 94 1 220q0 190 -2 286q0 13 -13 33q-5 7 -13.5 23.5t-14.5 25.5t-19 17t-32 8q-29 0 -48.5 -15.5t-28 -45.5t-11.5 -59 t-3 -69v-78q0 -12 3 -14.5t18 -2.5h116q7 0 7 -5t-2.5 -12.5t-5.5 -7.5h-115q-11 0 -15 -2.5t-4 -9.5v-226q0 -84 8 -84h50q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -39 1t-47 1q-12 0 -39.5 -1t-43.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h40q6 0 6 63 q0 20 -0.5 51t-0.5 33v165q0 7 -2.5 8.5t-11.5 1.5h-154q-11 0 -14 -2t-3 -10v-166q0 -144 10 -144h56q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -44 1t-52 1q-12 0 -37 -1t-41 -1q-9 0 -11 2.5t-2 11.5zM156 385q0 -8 3.5 -10.5t16.5 -2.5h157q7 0 8.5 2 t1.5 13q0 21 -0.5 44.5t-0.5 49.5q0 47 8 73q1 3 1 5t-5 6q-16 13 -24 27q-9 15 -15.5 24t-20 17t-29.5 8q-34 0 -56 -20t-31 -57t-11.5 -67.5t-2.5 -74.5v-37z" />
+<glyph unicode="f&#xfe;" horiz-adv-x="747" d="M33 12q0 13 12 13h40q6 0 6 63q0 20 -0.5 51t-0.5 33v60q0 114 -2 114h-35q-9 0 -11.5 2t-2.5 11t2 11t9 2h27q7 0 9.5 2t2.5 10q0 24 -0.5 47t-0.5 50q0 84 45.5 140.5t132.5 56.5q36 0 74 -22q12 -7 27 -5q9 1 18.5 3t15 3t6.5 1q5 0 6 -2.5t1 -12.5q-2 -42 -2 -173 v-128q0 -10 2 -10q1 0 19 14q50 37 108 37q83 0 127 -53t44 -136q0 -81 -57.5 -142t-151.5 -61q-31 0 -66 11l-7.5 2.5t-6.5 2.5t-5 1t-4 -1.5t-1 -4.5l3 -189q2 -67 6 -67h70q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -49 1t-57 1q-12 0 -46.5 -1t-50.5 -1 q-9 0 -11 2.5t-2 11.5q0 13 12 13h55q3 0 3 160l-1 204q0 322 -5 439q0 6 -2 11t-3.5 7.5t-4.5 7l-5 7.5q-5 7 -13.5 23.5t-14.5 25.5t-19 17t-32 8q-29 0 -48.5 -15.5t-28 -45.5t-11.5 -59t-3 -69v-78q0 -12 3 -14.5t18 -2.5h116q7 0 7 -5t-2.5 -12.5t-5.5 -7.5h-115 q-11 0 -15 -2.5t-4 -9.5v-226q0 -84 8 -84h55q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -41.5 1t-49.5 1q-12 0 -39.5 -1t-43.5 -1q-9 0 -11 2.5t-2 11.5zM413 52q0 -17 30 -29.5t57 -12.5q66 0 103 55t37 122q0 72 -37 116.5t-93 44.5q-36 0 -64 -13 q-33 -17 -33 -33v-250z" />
+<glyph unicode="ff&#xfe;" horiz-adv-x="1001" d="M38 12q0 13 12 13h37q4 0 4 63q0 20 -0.5 51t-0.5 33v60q0 114 -2 114h-35q-9 0 -11.5 2t-2.5 11t2 11t9 2h29q7 0 8.5 2t1.5 10q0 39 2.5 68t11.5 71.5t32.5 74t59.5 48.5q37 18 74 18q66 0 106 -50q3 -4 7 1q50 63 138 63q36 0 74 -22q12 -7 27 -5q9 1 18.5 3t15 3 t6.5 1q5 0 6 -2.5t1 -12.5q-2 -42 -2 -173v-128q0 -10 2 -10q1 0 19 14q50 37 108 37q83 0 127 -53t44 -136q0 -81 -57.5 -142t-151.5 -61q-31 0 -66 11l-7.5 2.5t-6.5 2.5t-5 1t-4 -1.5t-1 -4.5l3 -189q2 -67 6 -67h70q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2 q-8 0 -49 1t-57 1q-12 0 -46.5 -1t-50.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h55q3 0 3 160l-1 204q0 322 -5 439q0 6 -2 11t-3.5 7.5t-4.5 7l-5 7.5q-5 7 -13.5 23.5t-14.5 25.5t-19 17t-32 8q-29 0 -48.5 -15.5t-28 -45.5t-11.5 -59t-3 -69v-78q0 -12 3 -14.5t18 -2.5h116 q7 0 7 -5t-2.5 -12.5t-5.5 -7.5h-115q-11 0 -15 -2.5t-4 -9.5v-226q0 -84 8 -84h50q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -39 1t-47 1q-12 0 -39.5 -1t-43.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h40q6 0 6 63q0 20 -0.5 51t-0.5 33v165q0 7 -2.5 8.5 t-11.5 1.5h-154q-11 0 -14 -2t-3 -10v-166q0 -144 10 -144h56q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -44 1t-52 1q-12 0 -37 -1t-41 -1q-9 0 -11 2.5t-2 11.5zM156 385q0 -8 3.5 -10.5t16.5 -2.5h157q7 0 8.5 2t1.5 13q0 21 -0.5 44.5t-0.5 49.5q0 47 8 73 q1 3 1 5t-5 6q-16 13 -24 27q-9 15 -15.5 24t-20 17t-29.5 8q-34 0 -56 -20t-31 -57t-11.5 -67.5t-2.5 -74.5v-37zM667 52q0 -17 30 -29.5t57 -12.5q66 0 103 55t37 122q0 72 -37 116.5t-93 44.5q-36 0 -64 -13q-33 -17 -33 -33v-250z" />
+<glyph unicode=" "  horiz-adv-x="200" />
+<glyph unicode="&#x09;" horiz-adv-x="200" />
+<glyph unicode="&#xa0;" horiz-adv-x="200" />
+<glyph unicode="!" horiz-adv-x="261" d="M80 38q0 16 16 37.5t28 21.5q16 0 36.5 -15t20.5 -32q0 -21 -16 -39.5t-26 -18.5q-20 0 -39.5 17t-19.5 29zM97 648q0 25 41 25q18 0 24.5 -4t6.5 -17q0 -3 -4 -63t-10.5 -175.5t-11.5 -231.5q0 -10 -14 -10q-13 0 -13 10q-3 95 -7.5 202t-8 175t-3.5 89z" />
+<glyph unicode="&#x22;" horiz-adv-x="261" d="M30 511q0 1 2 32.5l4.5 68.5t3.5 47q4 29 32 29q29 0 29 -25q0 -4 -2 -14l-12.5 -43l-17.5 -57.5t-10 -32.5q-1 -3 -2 -7t-1.5 -5l-1.5 -3t-2.5 -2.5t-3.5 -1t-6 -0.5q-12 0 -12 14zM160 511q0 1 2 32.5l4.5 68.5t3.5 47q4 29 32 29q29 0 29 -25q0 -4 -2 -14l-12.5 -43 l-17.5 -57.5t-10 -32.5q-1 -3 -2 -7t-1.5 -5l-1.5 -3t-2.5 -2.5t-3.5 -1t-6 -0.5q-12 0 -12 14z" />
+<glyph unicode="#" horiz-adv-x="442" d="M30 169v4q0 8 2 10.5t9 2.5h73q5 0 5.5 1t1.5 6q16 115 16 126q0 4 -5 4h-95q-7 0 -7 13v6q0 11 7 11h100q9 0 9 6l21 148q2 16 3 18q4 6 6.5 6.5t14.5 0.5q19 0 19 -11q0 -3 -12.5 -81t-12.5 -82q0 -5 6 -5h90q7 0 8 7q25 161 26 165q3 7 14 7q24 0 24 -10 q0 -5 -12 -82.5t-12 -81.5q0 -5 4 -5h64q10 0 12.5 -2.5t2.5 -13.5q0 -10 -3 -12t-10 -2h-72q-6 0 -6 -5q-19 -120 -19 -126t7 -6h92q7 0 9 -3t2 -14q0 -10 -2.5 -12t-11.5 -2h-86q-15 -2 -15 -5q-21 -150 -22 -152q0 -1 -1 -3q-1 -5 -21 -5h-10.5t-5 1.5l-2 2t0 4t0.5 5.5 q0 4 11 74.5t11 73.5q0 4 -7 4h-86q-11 -2 -12 -5q-21 -150 -22 -152q-4 -7 -9 -8h-13q-11 0 -14.5 2.5t-3.5 10.5q0 4 11 74.5t11 73.5q0 4 -3 4h-68q-8 0 -10 3t-2 11zM158 193q0 -5 9 -5h90q7 0 7 6l9.5 67t7 44t2.5 16q0 4 -7 4h-90q-6 0 -8 -5v-1q-2 -16 -7.5 -47.5 t-9 -53.5t-3.5 -25z" />
+<glyph unicode="$" d="M58 92q0 7 12.5 12.5t22.5 5.5q5 0 10 -4t13 -15.5t13 -17.5q39 -47 97 -52q8 -1 10.5 0.5t2.5 8.5v240q0 11 -2.5 15.5t-11.5 8.5q-37 16 -60 29t-49.5 34.5t-40 49.5t-13.5 63q0 63 49.5 107t119.5 50q6 1 7 2t1 8v36q0 9 7 9h9q7 0 7 -9v-36q0 -7 1 -7.5t7 -1.5 q65 -5 106.5 -37t41.5 -59q0 -10 -14 -18.5t-21 -8.5q-9 0 -14 14.5t-9.5 32.5t-26.5 35t-60 21q-11 2 -11 -6v-237q0 -13 2 -16t10 -7q31 -14 48.5 -23t43.5 -26t40 -33t25 -40t11 -51q0 -72 -43.5 -117t-122.5 -52q-13 -1 -13 -5q-1 -3 -1 -9v-122q0 -9 -1.5 -10.5 t-10.5 -1.5q-8 0 -9.5 2t-1.5 10v122q0 10 -1.5 11.5t-11.5 2.5q-67 4 -117.5 33t-50.5 59zM117 480q0 -45 28.5 -70.5t80.5 -47.5l6 -3t4.5 -1.5t1.5 2.5t1 8v234q0 6 -5 6q-25 0 -58 -19q-59 -35 -59 -109zM262 38q0 -16 6 -16q4 0 8 1q47 10 78 46t31 78q0 46 -29.5 75 t-81.5 52q-6 3 -9 3t-3 -12v-227z" />
+<glyph unicode="%" horiz-adv-x="657" d="M50 362q0 62 52.5 131.5t124.5 69.5q40 0 71 -31q24 -24 58 -24q46 0 93 28q17 10 31.5 22t35.5 33.5l22 22.5t4.5 5t7.5 8l3 4q6 0 12 -4t6 -8q0 -3 -5 -11q-360 -527 -434 -643q-4 -6 -19 -6q-16 0 -16 10q0 2 2 6l80 114l169.5 245.5t112.5 170.5q9 15 8 16 q-2 1 -8 -2q-47 -28 -105 -28q-16 0 -35 3v-16v-14q0 -17 -1 -25q-6 -72 -57.5 -130.5t-112.5 -58.5q-47 0 -73.5 32t-26.5 80zM99 336q0 -29 13.5 -50t40.5 -21q51 0 95 58.5t44 137.5q0 70 -52 70q-46 0 -93.5 -64t-47.5 -131zM336 103q0 71 56 137t125 66q42 0 66 -29.5 t24 -79.5q0 -79 -53 -142.5t-118 -63.5q-47 0 -73.5 31.5t-26.5 80.5zM385 78q0 -30 13 -50.5t41 -20.5q51 0 95 58.5t44 136.5q0 71 -53 71q-45 0 -92.5 -64t-47.5 -131z" />
+<glyph unicode="&#x26;" horiz-adv-x="657" d="M40 155q0 98 124 185q14 10 14 12l-16 18q-56 64 -56 116q0 65 47.5 110.5t112.5 45.5q55 0 97 -26t42 -74q0 -74 -125 -160q-14 -9 -14 -11q0 -3 13 -14q58 -49 156 -154q11 -12 13 -12t10 14l18 31.5l21 36.5t15 30t7 24q0 5 -19 5h-60q-9 0 -11 2t-2 13t1.5 13t11.5 2 q6 0 48.5 -1.5t59.5 -1.5q16 0 41.5 1.5t28.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-30q-8 0 -20 -18q-97 -139 -97 -144q0 -3 10 -16q31 -39 64 -98q7 -13 11.5 -17.5t18.5 -8t41 -3.5q7 0 8 -1.5t1 -10.5q0 -11 -2.5 -13t-13.5 -2q-40 -1 -77 -5.5t-38 -4.5 q-12 0 -15 10q-15 51 -48 98q-8 10 -10 10t-10 -9q-99 -109 -188 -109q-81 0 -130 46.5t-49 118.5zM102 197q0 -59 45.5 -102t103.5 -43q77 0 144 67q7 8 7 11l-9 13q-27 37 -78 89t-96 89q-13 12 -18 12q-6 0 -26 -15q-73 -54 -73 -121zM171 518q0 -46 51 -107 q16 -19 22 -19q4 0 22 13q71 53 71 121q0 34 -23 60t-57 26q-42 0 -64 -27.5t-22 -66.5z" />
+<glyph unicode="'" horiz-adv-x="131" d="M30 511q0 1 2 32.5l4.5 68.5t3.5 47q4 29 32 29q29 0 29 -25q0 -4 -2 -14l-12.5 -43l-17.5 -57.5t-10 -32.5q-1 -3 -2 -7t-1.5 -5l-1.5 -3t-2.5 -2.5t-3.5 -1t-6 -0.5q-12 0 -12 14z" />
+<glyph unicode="(" horiz-adv-x="279" d="M40 285q0 73 19 142t45 114.5t53.5 80.5t45.5 51t20 16q6 0 11 -4t5 -9l-8 -8q-8 -9 -20.5 -25.5t-27.5 -39t-30 -54.5t-27.5 -68.5t-20.5 -84.5t-8 -99q0 -79 14 -150t34.5 -117.5t41 -80.5t34.5 -53t14 -22q0 -14 -16 -14q-4 0 -22.5 21.5t-45 62.5t-51.5 91.5 t-42.5 117.5t-17.5 132z" />
+<glyph unicode=")" horiz-adv-x="279" d="M40 -127l8 9q8 8 20.5 24.5t27.5 39t30 54.5t27.5 68.5t20.5 84.5t8 99q0 79 -14 150t-34.5 117.5t-41 80.5t-34.5 53t-14 22q0 14 16 14q4 0 22.5 -21.5t45 -62.5t51.5 -91.5t42.5 -117.5t17.5 -132q0 -73 -19 -142t-45 -114.5t-53.5 -80.5t-45.5 -51t-20 -16 q-6 0 -11 4t-5 9z" />
+<glyph unicode="*" horiz-adv-x="391" d="M30 447q0 21 23 31q10 4 48.5 17.5t52.5 19.5q19 7 19 13q0 4 -15 15q-6 5 -42.5 28t-45.5 32q-13 15 -13 29q0 11 7.5 19t20.5 8q18 0 31 -15q7 -8 18 -25l24 -39l18 -30q8 -13 11 -13q2 0 8 13q4 9 12.5 34t16 45t12.5 27q13 19 32 19q11 0 19 -9t8 -19q0 -13 -9 -26 q-8 -12 -39 -39.5t-39 -35.5q-10 -12 -10 -15q0 -6 18 -7q8 -1 56 -2t60 -5q29 -10 29 -31q0 -14 -9.5 -21.5t-22.5 -7.5q-7 0 -15 3t-46.5 22.5t-51.5 25.5q-12 6 -16 6q-5 0 -5 -4t3 -14q2 -10 15.5 -52.5t13.5 -56.5q0 -15 -7.5 -27t-22.5 -12q-16 0 -24.5 12t-8.5 26 q0 11 8 52.5t10 53.5q1 4 1 10q0 11 -4 11q-6 0 -17 -11l-36 -37.5t-41 -37.5q-12 -7 -25 -7t-21.5 7.5t-8.5 19.5z" />
+<glyph unicode="+" horiz-adv-x="527" d="M31 212q0 8 0.5 11.5t4.5 6t13 2.5h170q22 0 22 19v176q0 7 2.5 10.5t6 4t12.5 0.5t13 -0.5t7.5 -5.5t3.5 -14v-163q0 -27 17 -27h177q8 0 11.5 -2.5t4 -6t0.5 -12.5q0 -14 -3 -18.5t-18 -4.5h-172q-12 0 -14.5 -4t-2.5 -14v-175q0 -11 -5 -14t-15 -3q-16 0 -20.5 2.5 t-4.5 15.5v174q0 12 -4.5 15t-19.5 3h-169q-12 0 -14.5 5t-2.5 19z" />
+<glyph unicode="," horiz-adv-x="203" d="M40 -139l18 16q17 16 34.5 41t17.5 48q0 16 -10 30.5t-22.5 22.5t-22.5 15.5t-10 12.5q0 14 19.5 27.5t27.5 13.5q14 0 42.5 -23t28.5 -40q0 -38 -26.5 -83t-53 -71.5t-32.5 -26.5q-4 0 -7.5 5.5t-3.5 11.5z" />
+<glyph unicode="-" horiz-adv-x="258" d="M25 201q0 12 6 25.5t12 14.5t91.5 4t91.5 3q2 0 2 -9q0 -33 -8 -33q-104 -8 -191 -8q-4 0 -4 3z" />
+<glyph unicode="." horiz-adv-x="221" d="M60 38q0 16 16 37.5t28 21.5q16 0 36.5 -15t20.5 -32q0 -21 -16 -39.5t-26 -18.5q-20 0 -39.5 17t-19.5 29z" />
+<glyph unicode="/" horiz-adv-x="406" d="M10 -220q0 2 19 57q315 843 317 850q4 11 9.5 14.5t19.5 3.5q21 0 21 -12q0 -8 -14 -44l-314 -851q-8 -22 -13.5 -26.5t-18.5 -4.5q-26 0 -26 13z" />
+<glyph unicode="0" d="M58 189q0 82 56 136.5t137 54.5q88 0 139.5 -55.5t51.5 -136.5q0 -84 -57 -138.5t-140 -54.5q-77 0 -132 57.5t-55 136.5zM91 189q0 -65 44.5 -105.5t108.5 -40.5q80 0 120.5 45t40.5 114q0 59 -47.5 98.5t-110.5 39.5t-109.5 -44.5t-46.5 -106.5z" />
+<glyph unicode="1" d="M150 12q0 7 2.5 10t11.5 3h42q8 0 9.5 2t1.5 10q1 29 1 88v89q0 93 -2 137q0 5 -0.5 7t-2.5 3.5t-7 1.5h-42q-11 0 -11 13q0 8 1.5 11t9.5 3q9 0 43.5 -1t47.5 -1t47 1t43 1q8 0 9.5 -2.5t1.5 -11.5q0 -7 -2.5 -10t-11.5 -3h-39q-7 0 -9 -1.5t-2 -7.5v-3q-3 -58 -3 -234 q0 -53 1 -80q0 -12 12 -12h40q11 0 11 -13q0 -8 -1.5 -11t-9.5 -3q-9 0 -43.5 1t-47.5 1t-47 -1t-43 -1q-8 0 -9.5 2.5t-1.5 11.5z" />
+<glyph unicode="2" d="M60 323q0 8 26 27.5t68 37.5t76 18q55 0 91.5 -36t36.5 -90q0 -39 -35 -83t-71 -70.5t-75 -49.5q-28 -16 -28 -18q0 -1 7 -1h232q4 0 19.5 33t17.5 33q4 0 11 -2.5t7 -4.5q0 -15 -27 -111q-2 -6 -11 -6h-326q-15 0 -15 11q0 7 12 17q13 12 54.5 41t73.5 53.5t59 65 t27 82.5q0 44 -23 69t-61 25q-30 0 -61 -15t-49 -31l-19 -15q-4 0 -10.5 7.5t-6.5 12.5z" />
+<glyph unicode="3" d="M80 -164q0 8 11.5 14t26.5 6q16 0 41 -15q4 -2 14 -9t15.5 -10.5t18 -6.5t26.5 -3q48 0 87 45.5t39 103.5q0 70 -36.5 100.5t-114.5 30.5q-12 0 -32 -1.5t-21 -1.5q-3 0 -5.5 1t-3.5 3t-2 3.5t-1.5 5t-1.5 5.5q-2 6 -2 9q0 11 21 17q78 22 114.5 54t36.5 85 q0 40 -24 68.5t-61 28.5q-33 0 -59.5 -12.5t-39 -25t-13.5 -12.5q-6 0 -12 5.5t-6 11.5q0 7 19.5 23.5t54.5 32t68 15.5q61 0 97.5 -33.5t36.5 -89.5q0 -82 -91 -122q-48 -20 -48 -23q0 -2 42 -5q147 -12 147 -161q0 -80 -60.5 -133t-138.5 -53q-42 0 -92.5 15t-50.5 34z " />
+<glyph unicode="4" d="M40 8q0 32 84 130l133 160q85 96 96 96q13 0 13 -26v-296q0 -13 2 -15.5t13 -2.5h58q7 0 7 -10v-34q0 -8 -1.5 -9t-10.5 -1h-52q-11 0 -13 -2t-1 -12q9 -183 9 -185q0 -10 -16 -11l-45 -4q-11 0 -11 13v186q0 11 -2.5 13t-13.5 2h-231q-18 0 -18 8zM93 60q0 -6 25 -6h168 q14 0 16.5 3t2.5 17v216q0 26 -3 26q-1 0 -18 -21l-174 -210q-17 -21 -17 -25z" />
+<glyph unicode="5" d="M100 158q0 6 8.5 44.5l20.5 94t18 88.5q1 6 15 6q2 0 41 -2.5t88.5 -4.5t77.5 -2q22 0 24 5q8 24 10 24h4q13 0 13 -6q-3 -45 -4 -69q-1 -17 -37 -17q-35 0 -64.5 1.5t-66 4.5t-65.5 4q-19 0 -21 -10q-20 -100 -20 -107q0 -4 1.5 -5.5t5.5 -1.5h4q107 -10 167 -52 t60 -134q0 -60 -36 -109.5t-85 -76t-88.5 -40.5t-57.5 -14q-8 0 -8 18q0 13 8 14q22 4 46 13t51.5 25t49 37t35.5 51.5t14 65.5q0 73 -54.5 108t-139.5 35q-15 0 -15 12z" />
+<glyph unicode="6" d="M48 231q0 65 21.5 126.5t55.5 106t73 82t75 61t61 36t33 12.5q5 0 10 -7t5 -13q0 -4 -5 -6q-49 -20 -91.5 -54.5t-70.5 -73.5t-44.5 -69t-26.5 -57q-9 -25 -9 -27q3 -3 4.5 -3t10.5 2t12 3q43 8 91 8q79 0 133.5 -47.5t54.5 -121.5q0 -89 -56.5 -141.5t-140.5 -52.5 q-88 0 -142 61.5t-54 174.5zM115 201q0 -69 36.5 -122t106.5 -53q49 0 82 44t33 98q0 75 -40 121.5t-116 46.5q-30 0 -66 -6q-9 -2 -13 -3t-7 -6.5t-3.5 -7.5t-3.5 -15q-9 -43 -9 -97z" />
+<glyph unicode="7" d="M84 278q0 4 1.5 19.5t5 45.5t5.5 56q1 13 4.5 15.5t11.5 2.5q13 0 13 -20q0 -4 164 -4h166q17 0 17 -9q0 -2 -4 -10l-129 -246.5l-128 -248.5t-52 -95q-13 0 -24.5 9t-11.5 19q0 1 288 502q9 16 9 17q0 4 -18 4h-199q-84 0 -85 -9l-9 -51q-1 -6 -13 -5t-12 8z" />
+<glyph unicode="8" d="M71 154q0 37 11.5 66.5t32.5 49t35 28.5t34 19q5 3 9.5 4.5t6.5 2.5h2l-2 2q-3 1 -8 4t-11 7q-101 69 -101 158q0 68 49.5 115.5t120.5 47.5q67 0 112.5 -42t45.5 -108q0 -16 -2 -30t-7 -26.5t-9.5 -22.5t-13.5 -20t-14 -16.5t-15.5 -15t-14.5 -12t-15 -11t-12 -8.5 q-9 -7 -9 -8t9 -6q1 -1 17 -9.5t23 -14l22.5 -17t24 -24t19 -29.5t15 -38.5t4.5 -45.5q0 -72 -50 -116t-132 -44q-73 0 -125 45t-52 115zM124 164q0 -63 35 -102.5t93 -39.5q50 0 81.5 39t31.5 92q0 40 -19.5 70.5t-40 45t-59.5 35.5q-22 12 -27 12q-3 0 -33 -21 q-62 -46 -62 -131zM138 507q0 -64 69 -118q34 -26 54 -35l16 -7q3 0 14 10q26 23 49 65t23 78q0 64 -32 100t-83 36q-50 0 -80 -37.5t-30 -91.5z" />
+<glyph unicode="9" d="M60 204q0 89 55 141.5t138 52.5q87 0 143.5 -62t56.5 -174q0 -70 -26.5 -130t-68 -99.5t-88.5 -70.5t-91 -47.5t-71.5 -24.5t-34.5 -8q-4 0 -7 9t-3 16q0 2 24 9.5t62 24t79 42t80 71t59 102.5l3 7l3 10.5t0 3.5q-2 0 -20 -12q-54 -33 -125 -33q-77 0 -122.5 47.5 t-45.5 124.5zM125 214q0 -60 35 -105.5t95 -45.5q96 0 126 52q6 11 6 57q0 50 -13 92.5t-43.5 73t-74.5 30.5q-64 0 -97.5 -43.5t-33.5 -110.5z" />
+<glyph unicode=":" horiz-adv-x="221" d="M60 38q0 16 16 37.5t28 21.5q16 0 36.5 -15t20.5 -32q0 -21 -16 -39.5t-26 -18.5q-20 0 -39.5 17t-19.5 29zM60 313q0 16 16 37.5t28 21.5q16 0 36.5 -15t20.5 -32q0 -21 -16 -39.5t-26 -18.5q-20 0 -39.5 17t-19.5 29z" />
+<glyph unicode=";" horiz-adv-x="223" d="M50 -139l18 16q17 16 34.5 41t17.5 48q0 16 -10 30.5t-22.5 22.5t-22.5 15.5t-10 12.5q0 14 19.5 27.5t27.5 13.5q14 0 42.5 -23t28.5 -40q0 -38 -26.5 -83t-53 -71.5t-32.5 -26.5q-4 0 -7.5 5.5t-3.5 11.5zM61 313q0 16 16 37.5t28 21.5q16 0 36.5 -15t20.5 -32 q0 -21 -16 -39.5t-26 -18.5q-20 0 -39.5 17t-19.5 29z" />
+<glyph unicode="&#x3c;" horiz-adv-x="527" d="M41 211q0 6 0.5 8.5t4 5.5t10.5 6l361 132q48 18 51 18q19 0 19 -25q0 -10 -16 -16l-315 -111q-42 -15 -42 -21q0 -3 42 -18l320 -112q11 -4 11 -13q0 -8 -6 -16t-18 -8q-3 0 -408 147q-10 4 -12 8t-2 15z" />
+<glyph unicode="=" horiz-adv-x="527" d="M31 134q0 8 0.5 11.5t4.5 6.5t13 3h431q8 0 11.5 -2.5t4 -6t0.5 -12.5q0 -14 -3 -19t-18 -5h-427q-9 0 -12.5 3t-4 6.5t-0.5 14.5zM31 290q0 8 0.5 11.5t4.5 6t13 2.5h431q8 0 11.5 -2.5t4 -6t0.5 -12.5q0 -14 -3 -18.5t-18 -4.5h-427q-9 0 -12.5 3t-4 6.5t-0.5 14.5z " />
+<glyph unicode="&#x3e;" horiz-adv-x="527" d="M41 65q0 10 10 13l321 112q42 15 42 18q0 6 -42 21l-316 111q-15 6 -15 16q0 25 18 25q3 0 51 -18l361 -132q16 -6 16 -20q0 -11 -2.5 -15t-12.5 -8q-405 -147 -408 -147q-12 0 -17.5 8t-5.5 16z" />
+<glyph unicode="?" horiz-adv-x="364" d="M60 605v45q0 17 9 17q6 0 10 -12t9 -13q24 -4 37.5 -6.5t42.5 -10.5t48 -17.5t43.5 -27t39 -39t25 -53t10.5 -69.5q0 -79 -29 -126t-106 -48q-15 0 -20 -4t-6 -13q-1 -16 -4 -45t-4 -45q0 -9 -12 -9q-10 0 -13 4.5t-3 17.5q0 119 2 147q1 12 7 15t21 3h57q87 0 87 88 q0 72 -57.5 122t-170.5 64q-2 0 -5.5 0.5t-5 1t-4 1t-3.5 1.5l-2.5 2.5t-2 3.5t-0.5 5zM96 38q0 16 16 37.5t28 21.5q16 0 36.5 -15t20.5 -32q0 -21 -16 -39.5t-26 -18.5q-20 0 -39.5 17t-19.5 29z" />
+<glyph unicode="@" horiz-adv-x="795" d="M50 187q0 110 61 203.5t157 145.5t200 52q56 0 103.5 -13t87.5 -41t63 -76.5t23 -113.5q0 -69 -31.5 -126t-81.5 -91.5t-108 -53.5t-115 -19q-35 0 -35 22l6 47q-7 -8 -18.5 -19t-43 -29.5t-56.5 -18.5q-28 0 -43 24t-15 59q0 36 31.5 95t92 110t126.5 51q8 0 20 -3 l11 -3q1 0 14 15q13 16 28 16q25 0 25 -13q0 -8 -3 -14q-110 -237 -110 -278q0 -11 0.5 -16t5.5 -10t14 -5q42 0 93 25t95 69q68 68 68 159q0 112 -66.5 167.5t-177.5 55.5q-157 0 -272 -108.5t-115 -270.5q0 -119 80.5 -192t191.5 -73q97 0 169.5 32.5t140.5 95.5q8 8 13 8 q6 0 10 -5.5t4 -8.5q0 -7 -4 -11q-62 -67 -150 -103.5t-186 -36.5q-125 0 -214 80t-89 220zM271 147q0 -18 11.5 -32t30.5 -14q31 0 67.5 57.5t58 116t21.5 75.5q0 11 -10 17.5t-22 6.5q-42 0 -99.5 -75.5t-57.5 -151.5z" />
+<glyph unicode="A" horiz-adv-x="698" d="M30 15q0 9 3 10.5t15 1.5h28q3 0 17.5 30.5t34.5 77.5l39 92l35.5 84.5l19.5 46.5l106 246q4 9 17 25.5t19 30.5q12 27 19 27t9 -7l120 -337l19 -53l21.5 -60.5l21 -58.5l21 -56.5t17.5 -44t15 -32.5t8 -11h32q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5 t-50.5 1.5q-16 0 -58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h54q1 0 1 3q0 30 -70 226q-6 17 -10 18q-3 1 -10 1h-201q-5 0 -8 -0.5t-5 -1t-4 -3t-2 -3t-2 -5t-2 -5.5q-81 -206 -81 -227q0 -3 1 -3h78q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3 q-11 0 -43.5 1.5t-48.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5zM231 305q0 -6 16 -6h179q13 0 13 5q0 1 -4 13l-83 243q-6 19 -8 19t-10 -19l-98 -240q-5 -12 -5 -15z" />
+<glyph unicode="B" horiz-adv-x="592" d="M40 649q0 7 2.5 10.5t6 4t11.5 0.5q6 0 51 -1t62 -1q19 0 60.5 1.5t62.5 1.5q99 0 160.5 -38t61.5 -123q0 -101 -150 -156l-17 -7q0 -1 11 -2.5t28 -5t38 -9.5t42 -18t38 -29.5t28 -45t11 -62.5q0 -171 -280 -171q-27 0 -60.5 1t-35.5 1q-18 0 -61 -1.5t-45 -1.5 q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h53q5 0 5 42v323q0 242 -10 242l-57 -2q-20 0 -20 17zM209 315q0 -288 9 -288h61q180 0 180 149q0 111 -87 140q-31 10 -118 10h-34q-11 0 -11 -11zM209 358q0 -6 3 -8t13 -2h57q10 0 20.5 -0.5t12.5 -0.5q11 0 20 3 q41 12 70 46.5t29 91.5q0 73 -49.5 114.5t-127.5 41.5q-29 0 -43 -4q-5 -1 -5 -234v-48z" />
+<glyph unicode="C" horiz-adv-x="731" d="M45 335q0 154 101.5 249.5t255.5 95.5q19 0 37.5 -2t34.5 -5.5t29.5 -8t27 -10.5l23 -10.5t19.5 -11l15 -10l12.5 -8.5t8.5 -6q5 -4 6.5 -5t5 -2t4.5 1.5t1 8.5v27q0 9 2 11t13 2q12 0 16 -2t4 -11q0 -5 -2 -84t-2 -109q0 -9 -3 -12.5t-13 -3.5q-13 0 -16 2.5t-3 9.5 q0 1 2 43t2 47t-11 18t-32.5 30t-48.5 33t-64.5 27t-74.5 11q-108 0 -178 -90t-70 -227q0 -127 81 -218.5t196 -91.5q51 0 99 15t71.5 30.5t24.5 22.5l13 113q1 10 5.5 13t16.5 1q12 -1 12 -13q0 -13 -16 -133q-1 -10 -36.5 -30.5t-97.5 -39t-120 -18.5q-71 0 -133 21.5 t-111.5 63t-78 110.5t-28.5 156z" />
+<glyph unicode="D" horiz-adv-x="758" d="M35 10q0 11 3 13t14 2h66q4 0 8.5 200t4.5 338q0 78 -2 78l-70 -2q-5 0 -7.5 0.5t-4 3t-1.5 8.5v7.5t1.5 5t4 3t7.5 0.5q1 0 11.5 -0.5t26.5 -0.5h31q41 0 114.5 6t89.5 6q166 0 273.5 -93t107.5 -250q0 -105 -49.5 -183.5t-126.5 -116.5t-169 -39q-32 0 -97 2t-98 2 q-16 0 -70 -2t-57 -2q-8 0 -9.5 2t-1.5 12zM213 86q0 -59 2 -60q6 -4 57 -4q69 0 124.5 14t90 34.5t60 53t37.5 59t19 63.5t8 56t1 46q0 73 -35.5 141.5t-106.5 115.5t-159 47q-67 0 -90 -6q-7 -2 -7 -146q-1 -138 -1 -414z" />
+<glyph unicode="E" horiz-adv-x="605" d="M40 15q0 9 2.5 10.5t14.5 1.5h61q7 0 7 75v96q0 31 -0.5 72t-1 78t-1 69.5t-1 53t-0.5 21.5q0 144 -11 144h-43q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l43 -1q43 -2 64 -2q28 0 128.5 1.5t120.5 1.5q47 0 56.5 1.5t10.5 10.5v1q1 12 13 12q11 0 14 -2t3 -9 q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 7 -272 7q-7 0 -7 -128q0 -42 2 -142q0 -10 1.5 -13t10.5 -3h167q55 0 55 16v50q0 9 17 9q14 0 14 -8q0 -1 -1 -29t-1 -49t1 -50t1 -33q0 -8 -13 -8q-18 0 -18 9v46q0 7 -2 10t-15 6.5t-38 3.5 h-163q-12 0 -14 -2t-2 -13q6 -276 12 -276q27 0 68 0.5l79.5 1t73.5 0.5t57 0.5t23 0.5q12 0 15 3t4 20q1 14 3 87q0 8 14 8q17 0 17 -9q0 -28 -1.5 -77t-1.5 -61q0 -11 -22 -11q-11 0 -182.5 1.5t-187.5 1.5t-63.5 -1.5t-58.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="F" horiz-adv-x="550" d="M40 651q0 14 12 14l43 -1q43 -2 64 -2q28 0 133.5 1.5t125.5 1.5q47 0 56.5 1.5t10.5 10.5v1q1 12 13 12q11 0 14 -2t3 -9q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 7 -282 7q-7 0 -7 -114q0 -110 2 -156q0 -12 2 -14t14 -2h173 q55 0 55 16v50q0 9 17 9q14 0 14 -8q0 -1 -1 -29t-1 -49t1 -55t1 -38q0 -8 -13 -8q-18 0 -18 9v56q0 7 -2 10t-15 6.5t-38 3.5h-173q-11 0 -13.5 -3t-2.5 -17q1 -49 1.5 -128.5t1.5 -114.5t4 -35h83q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5 t-54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h43q7 0 7 75v96q0 31 -0.5 72t-1 78t-1 69.5t-1 53t-0.5 21.5q0 144 -11 144h-43q-7 0 -10.5 0.5t-6 4t-2.5 10.5z" />
+<glyph unicode="G" horiz-adv-x="764" d="M45 335q0 160 102.5 251t260.5 91q117 0 201 -59q5 -4 6.5 -5t5 -2t4.5 1.5t1 8.5v25q0 9 2 11t13 2q12 0 15.5 -2t3.5 -11q0 -2 -1.5 -76.5t-1.5 -104.5q0 -9 -3 -12.5t-13 -3.5q-13 0 -16 2.5t-3 9.5q0 1 2 38t2 42t-9.5 17t-29.5 27.5t-45.5 30t-62.5 24.5t-75 10 q-109 0 -183 -91t-74 -226q0 -130 79 -225.5t198 -95.5q51 0 91 12t55.5 24.5t16.5 19.5q3 26 3 94q0 58 -10 58h-87q-8 0 -8 12q0 18 9 18q15 0 64.5 -1.5t67.5 -1.5q17 0 42.5 1.5t47.5 1.5q8 0 8 -14q0 -16 -8 -16h-31q-9 0 -11 -13t-2 -45q0 -12 -0.5 -42t-0.5 -47 q0 -10 -39 -31.5t-106.5 -40.5t-129.5 -19q-71 0 -133 21t-111.5 62.5t-78 110.5t-28.5 159z" />
+<glyph unicode="H" horiz-adv-x="791" d="M40 15q0 9 3 10.5t15 1.5h57q7 0 7 258v102q0 252 -6 252h-43q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 39.5 -1.5t50.5 -1.5q16 0 55.5 1.5t50.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-54q-7 0 -7 -134q0 -27 0.5 -73t0.5 -59t2 -15.5 t13 -2.5h365q11 0 13 2t2 13v122q0 147 -10 147h-57q-10 0 -12.5 2t-2.5 13t2.5 13t12.5 2q6 0 47 -1.5t58 -1.5q18 0 55 1.5t40 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-46q-2 0 -2 -242q0 -370 4 -370h55q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3 q-11 0 -44.5 1.5t-49.5 1.5t-58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h55q6 0 6 165v124q0 11 -1 13t-8 2h-374q-8 0 -10 -2.5t-2 -14.5q0 -287 11 -287h65q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -52.5 1.5t-57.5 1.5t-61 -1.5t-56 -1.5 q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="I" horiz-adv-x="333" d="M30 15q0 9 3 10.5t15 1.5h68q10 0 10 367v98q0 147 -10 147h-62q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 54.5 -1.5t65.5 -1.5q16 0 60 1.5t55 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-63q-11 0 -11 -158v-135q0 -319 10 -319h71 q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-66.5 -1.5t-61.5 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="J" horiz-adv-x="333" d="M-30 -188q0 23 28.5 43.5t38.5 20.5q7 0 24 -10.5t28 -10.5q26 0 33 32t7 108v497q0 147 -10 147h-65q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 56 -1.5t67 -1.5q16 0 53.5 1.5t48.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-50q-7 0 -7 -269 v-240q0 -84 -17 -153t-69 -125q-60 -64 -109 -64q-19 0 -36 7t-17 17z" />
+<glyph unicode="K" horiz-adv-x="650" d="M40 15q0 9 3 10.5t15 1.5h55q8 0 8 170v290q0 147 -8 147h-44q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 45.5 -1.5t56.5 -1.5q16 0 55.5 1.5t50.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-54q-14 0 -14 -158v-125q0 -8 0.5 -11.5t3.5 -6 t9 -2.5h22q11 0 57 56t107.5 139l64.5 87q9 13 9 16q0 5 -15 5h-37q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 37 -1.5t48 -1.5q16 0 42.5 1.5t37.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-49l-40 -48l-97.5 -116l-78.5 -94q-3 -3 -4 -5t-2 -3 t0 -2.5t1.5 -2.5t3 -4t4.5 -5l269 -310q15 -17 31 -17h14q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -47.5 1.5t-52.5 1.5t-52.5 -1.5t-47.5 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h30q17 0 17 4l-12 14l-217 257q-7 8 -22 8h-20q-9 0 -11.5 -1.5 t-2.5 -10.5q0 -271 11 -271h73q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-60 -1.5t-55 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="L" horiz-adv-x="592" d="M40 15q0 9 2.5 10.5t14.5 1.5h62q9 0 9 292v231q0 89 -7 89h-58q-10 0 -13 2.5t-3 12.5t3.5 12.5t16.5 2.5q6 0 49.5 -1.5t60.5 -1.5q16 0 61.5 1.5t56.5 1.5q12 0 14.5 -2t2.5 -13q0 -9 -3 -12t-15 -3h-70q-9 0 -9 -215v-277q0 -116 8 -116q227 0 293 6q13 1 17 4t6 19 l12 84q2 8 11 8q20 0 20 -10q0 -3 -4.5 -30l-9.5 -60t-7 -44q-1 -11 -22 -11q-11 0 -179.5 1.5t-184.5 1.5t-63.5 -1.5t-58.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="M" horiz-adv-x="895" d="M35 15q0 9 2.5 10.5t15.5 1.5h42q2 0 3.5 4.5t2 14.5l1 20t1 29.5t1.5 33.5q18 366 18 497q0 8 -4 10.5t-18 2.5h-46q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q6 0 51 -1.5t56 -1.5q13 0 35.5 1.5t23.5 1.5q15 0 20 -13l210 -524q9 -22 11 -22q3 0 11 22l196 511q6 16 10 19.5 t15 3.5h46q16 0 52.5 1.5t47.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-46q-7 0 -7 -80v-90q0 -153 4.5 -297.5t11.5 -144.5h54q8 0 10.5 -2t2.5 -11q0 -11 -2 -14t-9 -3q-11 0 -51 1.5t-56 1.5t-55.5 -1.5t-50.5 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5 t15.5 1.5h46q9 0 9 177q0 98 -2.5 257.5t-4.5 159.5t-36 -88l-85 -219.5l-81 -204.5q-10 -25 -27.5 -50t-28.5 -47q-9 -19 -15 -19q-5 0 -17 28l-233 575q-13 30 -16 30q-2 0 -4 -32q-8 -211 -8 -465q0 -102 5 -102h72q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3 q-11 0 -41.5 1.5t-46.5 1.5t-43.5 -1.5t-38.5 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="N" horiz-adv-x="814" d="M40 15q0 9 3 10.5t15 1.5h44q3 0 5 2.5t3 7.5t1.5 11t1 15.5t0.5 18.5t0.5 22.5t0.5 24.5l8 510h-68q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q6 0 53.5 -1.5t58.5 -1.5q13 0 33.5 1.5t21.5 1.5q10 0 20 -13l406 -499q16 -20 18 -20q4 0 4 28v42q0 49 -1 187t-1 189 q0 56 -1 56h-94q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q11 0 50.5 -1.5t55.5 -1.5t43.5 1.5t38.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-47q-4 0 -4 -59q0 -68 -3.5 -209.5l-6.5 -253t-3 -113.5q0 -22 -10 -22q-4 0 -18 16l-492 598q-14 18 -16 18q-3 0 -3 -20 q-1 -25 -1 -122q0 -54 -0.5 -175.5t-0.5 -167.5q0 -102 5 -102h86q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -50.5 1.5t-55.5 1.5t-43.5 -1.5t-38.5 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="O" horiz-adv-x="752" d="M45 318q0 158 99 257.5t241 99.5q145 0 233.5 -101t88.5 -250t-94.5 -242t-242.5 -93q-83 0 -155.5 36.5t-121 113.5t-48.5 179zM139 345q0 -140 63 -234t169 -94q79 0 136 48t82.5 118t25.5 150t-25 149.5t-81 117t-134 47.5q-103 0 -169.5 -91t-66.5 -211z" />
+<glyph unicode="P" horiz-adv-x="564" d="M40 649q0 7 2.5 10.5t6 4t11.5 0.5q6 0 51 -1t62 -1q16 0 68 2.5t63 2.5q108 0 174 -49.5t66 -146.5q0 -92 -64 -136.5t-175 -44.5q-19 0 -46.5 1.5t-40.5 1.5q-10 0 -10 -11v-66q0 -189 5 -189h73q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -55 1.5t-60 1.5 q-18 0 -61.5 -1.5t-45.5 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h51q9 0 9 447v52q0 108 -5 108l-63 -2q-20 0 -20 17zM209 325q0 -13 38 -13q94 0 152.5 41.5t58.5 132.5q0 71 -59.5 113t-151.5 42q-22 0 -33 -1q-5 0 -5 -54v-261z" />
+<glyph unicode="Q" horiz-adv-x="783" d="M45 340q0 155 101 245t246 90q149 0 247.5 -95t98.5 -240q0 -119 -67.5 -207t-176.5 -119q-15 -4 -62 -24l-87 -38t-40 -19q0 -2 25.5 -3t64.5 -4t64 -9q24 -5 64 -16.5t68.5 -18t47.5 -6.5q30 0 55 7.5t37.5 15t13.5 7.5q3 0 8.5 -6t5.5 -11q0 -7 -23 -25t-61 -34.5 t-72 -16.5q-59 0 -134.5 20.5t-135 41.5t-79.5 21q-15 0 -40 -9t-27 -9q-9 0 -22.5 16.5t-13.5 25.5q0 15 25 15q4 0 11 -0.5t11 -0.5q32 0 57 6q16 4 50.5 18.5t62.5 27.5t28 15l-14 2q-70 9 -128.5 31.5t-106.5 61.5t-75 101.5t-27 142.5zM132 356q0 -140 85 -237 q37 -42 113 -71.5t104 -29.5q15 0 46 18.5t68 53.5t64.5 99.5t27.5 142.5q0 123 -71 219t-187 96q-105 0 -177.5 -87t-72.5 -204z" />
+<glyph unicode="R" horiz-adv-x="641" d="M40 649q0 7 2.5 10.5t6 4t11.5 0.5q6 0 51 -1t62 -1q16 0 75 3t70 3q42 0 77 -7.5t68.5 -25t53 -52.5t19.5 -85q0 -32 -14.5 -61t-37.5 -49t-42.5 -32t-39.5 -21q-5 -3 -10.5 -4.5t-7.5 -2.5l-2 -1l2 -1q2 0 7 -1t11 -3q160 -48 167 -230q2 -44 4 -54.5t10 -10.5h46 q7 0 9.5 -3.5t2.5 -18.5q0 -8 -17 -8l-133 3q-5 0 -6.5 1t-1.5 7v58q0 43 -2 72t-12 64.5t-27.5 57t-51 36.5t-80.5 16q-10 0 -43.5 0.5t-48.5 0.5q-11 0 -11 -11q0 -62 3.5 -168.5t7.5 -106.5h61q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -51.5 1.5t-56.5 1.5 q-18 0 -57 -1.5t-41 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h45q5 0 5 129v133q0 345 -12 345l-55 -2q-20 0 -20 17zM207 345q0 -6 3 -8t13 -2q20 0 65 -0.5t63 -1.5q10 0 12 1q88 40 88 150q0 71 -55.5 114.5t-129.5 43.5q-18 0 -52 -2q-7 0 -7 -54v-241z" />
+<glyph unicode="S" horiz-adv-x="528" d="M55 488q0 81 65 135t149 54q73 0 135 -42q10 -8 16 -8t7 10l1 11q0 9 2 11.5t13 2.5q12 0 15.5 -2.5t3.5 -11.5l-2 -63q-3 -63 -3 -94q0 -9 -3 -12.5t-13 -3.5q-13 0 -16 2.5t-3 9.5q0 1 1.5 30t1.5 34q0 22 -51.5 60t-102.5 38q-57 0 -95 -37t-38 -92q0 -43 26.5 -73.5 t65.5 -46l85.5 -34t85.5 -37.5t65.5 -58t26.5 -93q0 -88 -67.5 -140.5t-156.5 -52.5q-51 0 -99 9.5t-73 20t-26 16.5l-3.5 48l-4.5 62t-2 34q0 14 12 14h5q15 0 16 -16l6 -92q1 -21 65.5 -42t112.5 -21q54 0 93.5 35t39.5 86q0 42 -26.5 72t-66 46.5l-85.5 36.5t-85.5 40 t-66 60t-26.5 94z" />
+<glyph unicode="T" horiz-adv-x="690" d="M20 544l4 22q3 21 7 52.5t6 53.5q1 10 3 12t13 2q13 0 13 -6v-11q0 -6 108 -6h357q108 0 109 11q1 12 13 12q11 0 14 -2t3 -9q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 8 -113 8h-116q-3 0 -5 -10t-3 -30.5t-1 -36t-0.5 -44 t-0.5 -37.5l-1 -29q0 -28 -1 -72.5t-2 -94.5t-1.5 -102t-0.5 -87q0 -65 2 -65h74q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-63 -1.5t-58 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h62q7 0 10.5 192.5t3.5 325.5q0 90 -7 90h-144 q-96 0 -97 -13l-7 -70q-1 -17 -13 -17q-20 0 -20 9z" />
+<glyph unicode="U" horiz-adv-x="755" d="M40 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 59.5 1.5t54.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-65q-6 0 -10 -166.5t-4 -239.5q0 -97 48 -145.5t153 -48.5q92 0 172 54q17 11 20 23q5 17 5 136v305q0 82 -7 82h-49q-8 0 -11 0.5t-6 4 t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 44.5 -1.5t55.5 -1.5t46 1.5t32 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-24q-3 0 -5 -17t-3 -51t-1.5 -69t-1.5 -88.5t-2 -91.5q-1 -57 -3 -128t-3 -113t-1 -51q0 -32 -21 -32q-10 0 -30 36.5t-32 36.5q-10 0 -46 -20 q-40 -23 -96.5 -40t-109.5 -17q-59 0 -100.5 14t-64 34t-35.5 54t-16 63.5t-3 72.5q0 11 0.5 157t0.5 191q0 59 -5 59h-37q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="V" horiz-adv-x="685" d="M10 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 67.5 1.5t62.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-71q-2 0 -2 -5q0 -19 12 -51q68 -199 159 -436q19 -48 22 -48q6 0 23 46l37 95.5l46.5 119l42.5 111t34 98.5t12 54q0 16 -9 16h-71h-5.5 t-4 0.5t-4 1.5t-2.5 2.5t-1.5 4t-0.5 6.5q0 11 2.5 13t12.5 2q6 0 47 -1.5t58 -1.5t46 1.5t32 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5t-19.5 -2.5t-9 -6t-7.5 -14.5l-231 -543q-3 -8 -27 -42q-6 -9 -12.5 -20.5t-10 -17t-8 -9.5t-10.5 -4q-5 0 -10 15l-17 51 t-27 69q0 1 -51.5 133.5l-103 261.5t-54.5 129h-31q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="W" horiz-adv-x="1008" d="M10 649q0 7 2.5 10.5t6 4t11.5 0.5q6 0 41 -1.5t52 -1.5q16 0 54.5 1.5t49.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-50q-10 0 -10 -9t27 -99l47.5 -155l50.5 -158t23 -71q12 -36 13 -36q2 0 16 36l143 365q5 13 5 18q0 4 -3.5 14t-5.5 17q-22 78 -27 78 h-60q-7 0 -10 0.5t-5 4t-2 10.5q0 11 3 13t14 2q6 0 50 -1.5t61 -1.5q16 0 62.5 1.5t57.5 1.5q10 0 12 -2.5t2 -15.5q0 -8 -3 -10t-14 -2h-64q-3 0 -3 -9q0 -27 18 -99l32.5 -116l34.5 -120.5l28.5 -98.5t14.5 -49l4 -14t3.5 -11.5l3 -9l2.5 -7.5t2 -5.5t2 -3.5t2 -1 q2 0 22 50l35.5 93.5l46 122l39 108t33.5 102t11 52.5q0 16 -9 16h-65q-7 0 -10 0.5t-5 4t-2 10.5q0 11 3 13t14 2q6 0 46 -1.5t57 -1.5q18 0 42 1.5t26 1.5q10 0 12 -2.5t2 -13.5q0 -9 -3 -11.5t-15 -2.5q-13 0 -19.5 -2.5t-9 -6t-7.5 -14.5l-221 -543q-4 -11 -8 -17.5 t-9.5 -13l-9.5 -11.5l-11 -17t-9 -14t-7 -10.5t-7 -7.5t-7 -2q-8 0 -14.5 14t-18 55.5t-19.5 65.5q0 1 -14 51l-37 132l-41 147q-7 25 -10 25t-12 -25l-142 -372q-4 -11 -8 -17.5t-9.5 -13l-9.5 -11.5l-11 -17t-9 -14t-7 -10.5t-7 -7.5t-7 -2q-8 0 -14.5 14t-18 55.5 t-19.5 65.5q0 1 -16.5 56.5l-39.5 131.5l-46.5 152.5l-40.5 130t-19 53.5h-35q-8 0 -11 0.5t-6 4t-3 10.5z" />
+<glyph unicode="X" horiz-adv-x="638" d="M10 12q0 6 0.5 9t3 4.5t4.5 1.5h8h37q2 0 6.5 4.5t12.5 16l14.5 20.5t19.5 28.5t21 30.5l42.5 59.5t56 72t45.5 57.5q7 9 0 20q0 2 -92 150t-97 148h-39h-5.5t-4 0.5t-4 1.5t-2.5 2.5t-1.5 4t-0.5 6.5q0 7 2 10.5t5 4t11 0.5q6 0 53 -1.5t64 -1.5q16 0 51 1.5t46 1.5 q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-41q-11 0 -12 -2t4 -13q27 -65 121 -227q2 -2 3.5 -4.5t2.5 -3.5l1 -2q3 0 89 133q63 94 63 115q0 4 -3 4h-56q-13 0 -15.5 1.5t-2.5 10.5q0 13 2 15.5t12 2.5q11 0 36.5 -1.5t41.5 -1.5q17 0 43.5 1.5t32.5 1.5 q11 0 13.5 -2t2.5 -13t-3 -13t-13 -2h-26q-4 0 -46 -60q-33 -48 -88.5 -121.5t-63.5 -85.5q-4 -6 -4 -7t4 -7q205 -326 214 -326h35q6 0 8 -0.5t5 -1.5t4 -4t1 -9q0 -7 -2 -10.5t-5 -4t-11 -0.5q-6 0 -45.5 1.5t-56.5 1.5q-16 0 -60.5 -1.5t-55.5 -1.5q-10 0 -12 2.5 t-2 15.5q0 9 3 10.5t15 1.5h50q6 0 8.5 0.5t3.5 2t0 4t-4 8.5q-18 37 -145 250l-6 9q-2 1 -7 -7q-110 -155 -163 -242l-12 -21q0 -4 13 -4h54q12 0 15 -1.5t3 -10.5q0 -13 -2 -15.5t-12 -2.5q-11 0 -39 1.5t-44 1.5q-17 0 -47 -1.5t-36 -1.5q-10 0 -13 2t-3 13z" />
+<glyph unicode="Y" horiz-adv-x="597" d="M10 654q0 7 2 10.5t5 4t11 0.5q6 0 46 -1.5t57 -1.5q16 0 60 1.5t55 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-59q-11 0 -12 -2.5t4 -12.5q9 -23 37 -76.5l62.5 -117t42.5 -79.5q9 -17 11 -17q3 0 11 14l27 52l38 72.5l35.5 69.5t29 62t10.5 32q0 3 -2 3h-56 q-13 0 -15.5 1.5t-2.5 10.5q0 13 2 15.5t12 2.5q11 0 36.5 -1.5t41.5 -1.5q17 0 43.5 1.5t32.5 1.5q11 0 13.5 -2t2.5 -13q0 -6 -0.5 -9t-3 -4.5t-5 -1.5h-7.5h-36q-2 0 -37.5 -62l-81.5 -142l-65 -111q-3 -5 -3 -11q0 -286 10 -286h71q8 0 9.5 -2t1.5 -11q0 -11 -2 -14 t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-58.5 -1.5t-53.5 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h52q10 0 10 244q0 11 -7 23q-189 345 -199 345h-29q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="Z" horiz-adv-x="601" d="M40 15q0 5 61 98.5l163.5 249.5l165.5 254q5 7 5 9q0 3 -24 3h-302q-9 0 -10 -7q-1 -2 -1 -3q-2 -9 -5 -28.5t-5.5 -33.5t-2.5 -16q-4 -15 -9 -15q-24 0 -24 9q0 3 3.5 24.5l9 56t8.5 60.5q0 6 16 6q13 0 13 -6v-6q0 -3 1.5 -4.5t8 -2.5t18 -1.5t31.5 -0.5h381 q10 0 13.5 -3t3.5 -12q0 -6 -62.5 -98l-159 -238t-157.5 -250q-10 -16 -10 -18q0 -5 11 -5h337h5.5t4 0.5t2.5 1t1 3t1 4t0.5 6t0.5 8.5q1 14 3 87q0 8 18 8q17 0 17 -9q0 -28 -1.5 -77t-1.5 -61q0 -11 -22 -11q-57 0 -252 1.5t-246 1.5q-5 0 -6.5 2.5t-1.5 12.5z" />
+<glyph unicode="[" horiz-adv-x="296" d="M80 -126v801q0 9 2 12t10 3h151q9 0 11 -1.5t2 -7.5v-14q0 -9 -2 -11t-11 -2h-105q-9 0 -11 -2t-2 -10v-735q0 -12 13 -12h105q6 0 8.5 -0.5t3.5 -3t1 -9.5v-12q0 -6 -2 -8.5t-11 -2.5h-150q-9 0 -11 2.5t-2 12.5z" />
+<glyph unicode="\" horiz-adv-x="406" d="M10 693q0 12 21 12q14 0 19.5 -3.5t9.5 -14.5l317 -850q19 -55 19 -57q0 -13 -26 -13q-13 0 -18.5 4.5t-13.5 26.5l-314 851q-14 36 -14 44z" />
+<glyph unicode="]" horiz-adv-x="296" d="M40 -118q0 9 2 11t11 2h105q9 0 11 2t2 10v735v6t-1.5 3.5t-4 2t-7.5 0.5h-105q-6 0 -8.5 0.5t-3.5 3t-1 9.5v12q0 7 2 9t11 2h150q9 0 11 -2.5t2 -12.5v-801q0 -9 -2 -12t-10 -3h-151q-9 0 -11 1.5t-2 7.5v14z" />
+<glyph unicode="^" horiz-adv-x="402" d="M51 311l146 320q2 1 6 1t6 -1l146 -320q-15 -3 -26 -3q-9 0 -26 3l-102 232l-98 -232q-18 -3 -28 -3q-11 0 -24 3z" />
+<glyph unicode="_" horiz-adv-x="410" d="M25 -43q0 18 16 18h331q13 0 13 -17v-5q0 -23 -13 -23h-334q-13 0 -13 19v8z" />
+<glyph unicode="`" horiz-adv-x="400" d="M98 582q0 13 9.5 21.5t26.5 8.5q21 0 30 -25l49 -130q2 -4 2 -6t-4 -2h-16q-3 0 -8 6l-82 107q-7 10 -7 20z" />
+<glyph unicode="a" horiz-adv-x="419" d="M35 71q0 42 37 74t83.5 48t103.5 26q8 1 8 16q0 27 -0.5 42t-5 36.5t-13.5 32.5t-26 19.5t-42 8.5q-18 0 -31 -5q-20 -9 -25.5 -22t-6.5 -45q0 -16 -7 -21q-11 -8 -30.5 -18t-22.5 -10q-8 0 -8 15q0 57 49 94t103 37q72 0 101.5 -33.5t29.5 -97.5q0 -29 -3 -113t-3 -91 q0 -30 22 -30q2 0 19.5 12t18.5 12q3 0 8 -5.5t5 -9.5q0 -5 -65 -49q-15 -11 -26 -11q-10 0 -17.5 6t-11.5 14t-6.5 16t-3.5 14l-1 6q-1 0 -4 -2t-8 -5t-8 -5q-68 -41 -115 -41q-46 0 -72 23t-26 62zM105 99q0 -26 17.5 -47.5t47.5 -21.5q20 0 44 6t38.5 12.5t14.5 9.5v134 q0 11 -6 11q-14 0 -62 -15q-94 -30 -94 -89z" />
+<glyph unicode="b" horiz-adv-x="485" d="M5 639q0 21 5 21q20 2 55.5 6l60 7t26.5 3q6 0 6 -15q-3 -185 -3 -267q0 -38 1 -38t7.5 3t17.5 7.5t23.5 9t28.5 7.5t30 3q83 0 137.5 -57.5t54.5 -140.5q0 -92 -65 -146.5t-156 -54.5q-19 0 -47.5 9.5t-41.5 9.5q-11 0 -28 -9t-21 -9q-12 0 -12 13q0 1 1 36.5t2.5 82.5 t1.5 77q0 87 -4.5 264.5t-12.5 177.5q-2 0 -30.5 -3t-30.5 -3q-6 0 -6 6zM153 64q0 -50 84 -50q67 0 106.5 51t39.5 122q0 67 -47.5 118.5t-112.5 51.5q-16 0 -32.5 -5.5t-26 -11t-9.5 -8.5q0 -59 -1 -159.5t-1 -108.5z" />
+<glyph unicode="c" horiz-adv-x="412" d="M35 177q0 104 63 163t143 59q50 0 91.5 -29t41.5 -67q0 -13 -10 -20q-17 -13 -30 -13t-17 11q-2 5 -8.5 25.5t-10 27t-12 18.5t-21 16t-30.5 4q-60 0 -97.5 -53t-37.5 -117q0 -68 40.5 -118t113.5 -50q30 0 58.5 7.5t44.5 15t18 7.5q7 0 7 -8q0 -2 -6.5 -9t-20.5 -17 t-32 -18.5t-44.5 -15t-54.5 -6.5q-87 0 -138 51t-51 136z" />
+<glyph unicode="d" horiz-adv-x="499" d="M30 181q0 85 58.5 141.5t144.5 56.5q17 0 33.5 -2.5t28.5 -6.5t21 -8t14 -6l6 -3q6 0 6 18q0 48 -2 113.5t-4.5 112t-3.5 46.5t-32 -4.5t-35 -4.5t-5 2t1 13q2 12 8 13q24 3 56.5 7.5t52.5 7.5t22 3q7 0 8.5 -3.5t1.5 -19.5q0 -7 -1.5 -62.5t-3 -164.5t-1.5 -246 q0 -48 2 -120q1 -29 6 -39t17 -10q4 0 34 4q6 1 8.5 0t2.5 -8q0 -8 -0.5 -11t-3 -5t-9.5 -3l-115 -15q-6 0 -6 9q0 1 0.5 17.5t0.5 18.5q0 8 -2.5 9t-12.5 -5q-63 -39 -120 -39q-75 0 -125.5 47t-50.5 147zM103 188q0 -74 37.5 -119t114.5 -45q23 0 55 10.5t32 22.5v250 q0 12 -31 32t-66 20q-64 0 -103 -50.5t-39 -120.5z" />
+<glyph unicode="e" horiz-adv-x="424" d="M30 182q0 91 57 152.5t147 61.5q71 0 110 -46t39 -113q0 -5 -20.5 -8.5t-33.5 -3.5q-6 0 -113 2.5t-111 2.5q-5 0 -5 -36q0 -76 44.5 -120.5t104.5 -44.5q22 0 43.5 6.5t36 16.5t25.5 19.5t18 16.5l6 6q2 0 9 -6.5t7 -8.5q0 -5 -21 -26.5t-64 -44.5t-88 -23 q-91 0 -141 53.5t-50 143.5zM105 255q0 -8 12 -8q57 0 157 4q40 1 40 4q0 65 -29.5 92t-62.5 27q-46 0 -80 -38.5t-37 -80.5z" />
+<glyph unicode="f" horiz-adv-x="306" d="M35 12q0 13 12 13h40q4 0 4 63q0 20 -0.5 51t-0.5 33v60q0 114 -2 114h-33q-9 0 -11.5 2t-2.5 11t2 11t9 2h27q7 0 8.5 2t1.5 10q0 24 -1 47t-1 50q0 87 37 142t119 55q31 0 57 -19t26 -48q0 -16 -18 -31.5t-30 -15.5t-13 9q-3 23 -5 33t-7 24.5t-13.5 20t-21.5 5.5 q-59 0 -59 -164q0 -17 -2 -103q0 -12 3 -14.5t18 -2.5h116q7 0 7 -5t-2.5 -12.5t-5.5 -7.5h-115q-11 0 -14 -2t-3 -10v-166q0 -144 10 -144h66q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -49 1t-57 1q-12 0 -39.5 -1t-43.5 -1q-9 0 -11 2.5t-2 11.5z" />
+<glyph unicode="g" horiz-adv-x="425" d="M15 -173q0 32 25.5 58t54 38.5t57.5 18.5q23 5 23 6t-21 1h-57q-31 0 -40 19q-9 21 -9 48q0 28 18 32q33 8 76 20q38 11 38 12l-2 1q-3 1 -8 2t-9 2q-127 38 -127 161q0 64 53.5 106.5t122.5 42.5q22 0 42 -5.5t33.5 -12.5t24 -14.5t16.5 -12.5l6 -6q2 0 14.5 4.5t29.5 9 t31 5.5q2 0 5.5 -9.5t3.5 -18.5q0 -6 -3 -6q-11 -1 -35 -6t-24 -8q0 -1 3 -10.5t6.5 -26t3.5 -35.5q0 -60 -29 -95t-86 -57q-27 -11 -173 -52q-4 -1 -4 -9t5.5 -18.5t8.5 -11.5q17 -1 57.5 -2.5t64.5 -3t60.5 -6t59 -12.5t45 -20.5t33.5 -32.5t11 -47q0 -76 -61 -121 t-159 -45q-44 0 -85 12t-70.5 39.5t-29.5 65.5zM60 -166q0 -46 44 -72t95 -26q66 0 115 28t49 88q0 27 -29 46t-67 26.5t-78 7.5q-43 0 -86 -26.5t-43 -71.5zM98 250q0 -65 41 -110t68 -45q33 0 65.5 43t32.5 106q0 59 -27 92.5t-73 33.5q-43 0 -75 -35.5t-32 -84.5z" />
+<glyph unicode="h" horiz-adv-x="503" d="M10 640q0 16 5 17q138 18 146 18q5 0 5 -20q-8 -166 -8 -301v-10t2 -3t3 0.5t6 3.5q73 40 133 40q40 0 66.5 -16t38.5 -47t16 -63t4 -79v-143q0 -8 1.5 -10t9.5 -2h26q14 0 14 -13q0 -14 -14 -14q-8 0 -31.5 1t-39.5 1q-12 0 -41 -1t-45 -1q-9 0 -11 2.5t-2 11.5 q0 13 13 13h39q8 0 9 1.5t2 9.5q2 40 2 176q0 58 -24 95t-72 37q-47 0 -89 -21q-16 -8 -16 -15l1 -150q0 -89 1 -115q1 -10 1.5 -13t2 -4t7.5 -1h38q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -37.5 1t-45.5 1q-12 0 -41 -1t-45 -1q-9 0 -11 2.5t-2 11.5 q0 13 12 13h39q7 0 8.5 3t1.5 15q1 94 1 220q0 202 -8 356q-1 17 -6 17q-1 0 -30 -3.5t-31 -3.5q-4 0 -4 11z" />
+<glyph unicode="i" horiz-adv-x="249" d="M25 357q0 5 4 13q3 6 4.5 6.5t10.5 1.5q95 5 113 5q7 0 7 -6v-170q0 -113 3 -170q0 -5 0.5 -7t2.5 -3.5t7 -1.5h36q11 0 11 -13q0 -8 -1.5 -11t-9.5 -3q-9 0 -40 1t-44 1t-46.5 -1t-42.5 -1q-8 0 -9.5 2.5t-1.5 11.5q0 7 2.5 10t11.5 3h41q8 0 9.5 2t1.5 10q1 29 1 88 q0 117 -4 214q-1 11 -3 13.5t-10 2.5q-1 0 -24.5 -1t-25.5 -1q-4 0 -4 4zM77 553q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5z" />
+<glyph unicode="j" horiz-adv-x="292" d="M5 -255q0 16 14.5 34.5t26.5 18.5t31.5 -2t23.5 -2q19 0 28.5 9.5t9.5 23.5q0 9 -2.5 56.5t-4.5 145t-2 229.5q0 49 -2 76q-1 14 -9 14q-3 0 -34 -1.5t-36 -1.5q-3 0 -3 4q0 5 4 15q0 1 1 3q2 6 14 6q22 0 52.5 1.5l51 2.5t21.5 1q7 0 7 -23q0 -20 2.5 -136.5t2.5 -191.5 q0 -90 -10.5 -145t-43.5 -98q-13 -17 -57.5 -38t-66.5 -21q-19 0 -19 20zM80 580q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5z" />
+<glyph unicode="k" horiz-adv-x="449" d="M10 649v9q0 13 12 14q114 9 131 9q5 0 6 -2t1 -11l-11 -448q0 -8 2.5 -9.5t13.5 -1.5h22q4 0 7.5 1t7 4.5l5 5t5.5 6t4 5.5q53 70 79 113q3 5 3.5 6.5t1.5 4t-0.5 3.5t-5 1.5t-9.5 0.5h-20q-8 0 -10.5 3t-2.5 10q0 14 14 14q4 0 25 -1t33 -1q10 0 30 1t27 1q13 0 13 -14 q0 -13 -12 -13h-32q-11 0 -107 -123q-2 -2 -5 -6q-3 -3 -4 -4.5t0.5 -4t3.5 -4.5l5 -5l151 -175q11 -13 22 -13h10q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2t-29.5 1t-37.5 1t-38 -1t-30 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h11q17 0 5 15l-110 136q-2 2 -4 5 q-9 12 -18 12h-14q-8 0 -9.5 -3t-1.5 -13v-134q0 -13 1.5 -15.5t9.5 -2.5h23q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -30 1t-38 1q-19 0 -48 -1t-32 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h41q7 0 8.5 3t1.5 15v193q0 408 -9 408q-2 0 -26 -1.5t-30 -1.5 q-7 0 -8.5 1.5t-1.5 6.5z" />
+<glyph unicode="l" horiz-adv-x="257" d="M20 645q0 2 2 16q1 6 2 6.5t8 1.5q120 9 123 9q5 0 6 -2.5t1 -12.5q1 -160 3.5 -332t2.5 -267q0 -39 8 -39h39q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -35.5 1t-43.5 1q-12 0 -44.5 -1t-48.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h52q4 0 4 85 q0 395 -11 517q-7 18 -11 19q-3 0 -24.5 -2t-23.5 -2q-8 0 -8 3z" />
+<glyph unicode="m" horiz-adv-x="739" d="M25 350q0 6 4 18q2 6 3.5 6.5t11.5 1.5q16 1 41.5 2t41 2t17.5 1q11 0 13 -1.5t2 -9.5v-28q0 -14 2 -15l8 6q79 55 141 55q21 0 37.5 -5.5t25.5 -13t14.5 -14.5t8.5 -13l2 -5q3 0 13 7q25 16 61.5 29t63.5 13q69 0 96.5 -38t27.5 -108q0 -46 -1 -116t-1 -89q0 -10 10 -10 h32q14 0 14 -13q0 -14 -14 -14q-8 0 -34 1t-42 1q-12 0 -40.5 -1t-44.5 -1q-9 0 -11 2.5t-2 11.5q0 13 15 13h40q9 0 9 191q0 128 -89 128q-23 0 -47 -7t-37 -14t-13 -9t1.5 -9.5t3 -25t1.5 -43.5v-170q0 -41 3 -41h34q14 0 14 -13q0 -14 -14 -14q-8 0 -32.5 1t-40.5 1 q-12 0 -34.5 -1t-38.5 -1q-9 0 -12 3t-3 11q0 13 12 13h39q7 0 7 97v41t-0.5 36.5t-0.5 16.5q0 25 -1 40t-4.5 34t-11 29t-21.5 17.5t-34 7.5q-60 0 -100 -30q-11 -9 -11 -18v-228q0 -30 2.5 -36.5t16.5 -6.5h21q14 0 14 -13q0 -14 -14 -14q-9 0 -36 1t-40 1q-14 0 -45.5 -1 t-38.5 -1q-12 0 -12 13q0 14 11 14h39q10 0 13 32q2 20 2 106v109q0 78 -4 78q-1 0 -28.5 -1.5t-30.5 -1.5q-5 0 -5 3z" />
+<glyph unicode="n" horiz-adv-x="514" d="M25 350q0 4 5 16q2 6 3.5 6.5t11.5 1.5q5 0 47 3t58 4q9 1 11 -0.5t2 -7.5v-3v-42q0 -6 13 3l2 2l18 12t23 14.5t23 11.5t31 10t33 3q42 0 69.5 -13t41 -39.5t18 -55t4.5 -69.5q0 -33 -2.5 -100t-2.5 -70q0 -8 1.5 -10t9.5 -2h30q9 0 11.5 -2t2.5 -11q0 -6 -0.5 -8t-3 -4 t-8.5 -2q-8 0 -33.5 1t-41.5 1q-12 0 -40.5 -1t-44.5 -1q-10 0 -12 2t-2 11t2.5 11.5t10.5 2.5h37q7 0 8.5 1.5t2.5 9.5q4 48 4 176q0 130 -96 130q-33 0 -89 -28q-18 -9 -18 -23q0 -41 -0.5 -123.5t-0.5 -123.5q0 -9 0.5 -12.5t3 -5t9.5 -1.5h36q8 0 10.5 -3t2.5 -10 q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -36.5 1t-44.5 1q-12 0 -42 -1t-46 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h39q6 0 7.5 2.5t2.5 11.5v4q5 98 5 194q0 68 -2 99q-1 11 -2.5 12.5t-9.5 1.5q-1 0 -27 -2t-28 -2q-3 0 -3 4z" />
+<glyph unicode="o" horiz-adv-x="446" d="M30 183q0 90 57 151.5t148 61.5q80 0 130.5 -57.5t50.5 -141.5q0 -94 -53 -153t-144 -59q-80 0 -134.5 58t-54.5 140zM101 169q0 -62 31.5 -110t86.5 -48q36 0 61.5 17t38.5 46.5t18.5 61t5.5 68.5q0 66 -31 116t-89 50q-122 0 -122 -201z" />
+<glyph unicode="p" horiz-adv-x="512" d="M25 352q0 4 3.5 13t5.5 9q29 1 61.5 2.5t51 2.5t19.5 1q7 0 9 -2t2 -12v-24q0 -10 2 -10q1 0 19 14q50 37 108 37q83 0 127 -53t44 -136q0 -81 -57.5 -142t-151.5 -61q-31 0 -66 11l-7.5 2.5t-6.5 2.5t-5 1t-4 -1.5t-1 -4.5l3 -189q2 -67 6 -67h70q8 0 10.5 -3t2.5 -10 q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -49 1t-57 1q-12 0 -46.5 -1t-50.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h55q3 0 3 160v142q0 191 -7 287q-1 10 -3 12t-13 2q-3 0 -25.5 -1t-24.5 -1q-13 0 -13 5zM178 52q0 -17 30 -29.5t57 -12.5q66 0 103 55t37 122q0 72 -37 116.5 t-93 44.5q-36 0 -64 -13q-33 -17 -33 -33v-250z" />
+<glyph unicode="q" horiz-adv-x="490" d="M35 180q0 87 59.5 144t148.5 57q33 0 72 -13t45 -13q9 0 20 16.5t18 16.5q16 0 16 -13q-5 -149 -5 -298v-165q0 -163 3 -163h41q12 0 12 -15q0 -6 -0.5 -8.5t-3.5 -4t-9 -1.5h-27q-24 0 -48.5 -1t-42.5 -3l-32.5 -3.5t-23 -2.5t-9.5 -1q-9 0 -12 2.5t-3 9.5q0 16 13 17 q9 1 20 2t16 1t12 1.5t9 2t5.5 3t4 4t1.5 6t1 8.5v12l2 223q0 9 -4 9q-1 0 -15 -4q-65 -19 -110 -19q-68 0 -121 48t-53 145zM106 191q0 -66 39.5 -119t104.5 -53q29 0 59 5.5t30 16.5v250q0 30 -28 46.5t-76 16.5q-62 0 -95.5 -49t-33.5 -114z" />
+<glyph unicode="r" horiz-adv-x="329" d="M25 353q0 5 3 12q2 6 3.5 6.5t11.5 1.5q42 3 105 3q10 0 11 -0.5t1 -4.5v-5q0 -10 -0.5 -32t-0.5 -32q0 -18 1 -18t2.5 4t3 10.5t3.5 10.5q17 39 43 62t50 23q20 0 38.5 -16t18.5 -27q0 -9 -13 -25t-24 -16q-12 0 -31 15.5t-29 15.5q-57 0 -57 -204q0 -112 12 -112h63 q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -49 1t-57 1q-12 0 -41 -1t-45 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h43q9 0 9 137q0 189 -7 189q-1 0 -31.5 -1t-32.5 -1q-3 0 -3 4z" />
+<glyph unicode="s" horiz-adv-x="337" d="M35 50q0 11 11.5 24.5t18.5 13.5q3 0 5 -3.5t5.5 -10.5t8.5 -13q42 -50 93 -50q28 0 47 16.5t19 48.5t-23 51.5t-66 37.5q-2 1 -18 8t-19 8.5t-17 8t-17.5 10t-13.5 11t-13.5 14t-9 15t-7 18.5t-1.5 22q0 48 44 80.5t100 32.5q51 0 77.5 -22.5t26.5 -44.5q0 -7 -15 -13 t-25 -6q-7 0 -12.5 10t-10 22.5t-18.5 22.5t-36 10q-29 0 -51 -17t-22 -53q0 -15 5.5 -27t21 -22.5t24 -15t31.5 -15.5q33 -16 45.5 -22.5t36 -22.5t33 -33t9.5 -38q0 -53 -41.5 -85.5t-99.5 -32.5q-46 0 -86 19.5t-40 42.5z" />
+<glyph unicode="t" horiz-adv-x="289" d="M35 344q0 5 3 8l91 127q3 5 9 5q10 0 10 -10q0 -1 -1.5 -20.5t-3 -42t-1.5 -29.5t2 -8.5t9 -1.5h95q9 0 10.5 -2t-1.5 -16q-4 -16 -13 -16h-99q-3 0 -3 -46v-192q0 -20 2 -31t13 -21t33 -10q23 0 52 8l28 8q4 0 4 -16q0 -3 -22.5 -14t-53.5 -22t-50 -11q-39 0 -55.5 20.5 t-16.5 48.5q2 144 2 216q0 61 -12 61h-25q-6 0 -6 7z" />
+<glyph unicode="u" horiz-adv-x="510" d="M15 360q0 4 3 11q2 6 4 7t11 2q88 4 110 4q7 0 7 -6v-272q0 -67 111 -67q91 0 91 16v118q0 186 -8 186q-1 0 -25.5 -1t-26.5 -1q-4 0 -4 4q2 17 6 19q2 1 7 1q95 5 113 5q7 0 7 -6q-1 -239 -1 -301q0 -37 3.5 -48t15.5 -11q2 0 21 3t20 3q5 0 5 -10t-2 -12t-12 -4 q-102 -15 -104 -15q-10 0 -11 13q-3 38 -4 38l-26 -12q-25 -12 -64.5 -23.5t-72.5 -11.5q-34 0 -57 11t-33.5 31t-14.5 41t-4 50v157q0 77 -12 77q-1 0 -24 -0.5t-25 -0.5q-4 0 -4 5z" />
+<glyph unicode="v" horiz-adv-x="461" d="M25 368q0 6 0.5 8t3.5 4t9 2q8 0 29.5 -1t37.5 -1q13 0 45 1t40 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-30q-18 0 -18 -8q0 -2 17 -52.5l40.5 -115t36.5 -95.5q8 -18 12 -18q3 0 9 16q94 223 94 257q0 16 -10 16h-26q-8 0 -10.5 3t-2.5 10q0 14 14 14q3 0 24 -1t33 -1 t28 1t23 1t9 -2.5t2 -11.5q0 -13 -12 -13h-16q-7 0 -13 -10q-11 -19 -57.5 -132t-69.5 -161q-7 -14 -13 -22.5t-16 -20.5t-20 -27q-6 -7 -11 -7q-4 0 -7.5 4.5t-7 13t-6 16t-5.5 18t-4 14.5q-32 98 -109 299q-4 11 -7.5 13t-14.5 2h-9q-8 0 -10.5 3t-2.5 10z" />
+<glyph unicode="w" horiz-adv-x="697" d="M25 368q0 6 0.5 8t3.5 4t9 2q8 0 29.5 -1t37.5 -1q13 0 45 1t40 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-25q-18 0 -18 -8q0 -2 15.5 -52.5t37.5 -115t35 -95.5q7 -16 9 -16q4 0 13 23q68 172 80 206q7 18 7 27q0 6 -5 16q-8 15 -34 15h-10q-8 0 -10.5 3t-2.5 10 q0 6 0.5 8t3.5 4t9 2q11 0 33 -1t40 -1q13 0 35.5 1t34.5 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-21q-13 0 -13 -8q0 -2 14.5 -52.5t35 -115t32.5 -95.5q10 -23 12 -23t11 22q18 43 51 143.5t33 117.5q0 11 -12 11h-31q-8 0 -10.5 3t-2.5 10q0 14 14 14q3 0 24 -1t33 -1 q13 0 31 1t20 1q7 0 9 -2.5t2 -11.5q0 -13 -12 -13h-6q-9 0 -14 -10q-9 -18 -50.5 -130t-66.5 -163q-8 -17 -21.5 -34t-24.5 -36q-3 -7 -11 -7q-11 0 -30 66q-22 80 -69 224q-6 18 -8 18q-3 0 -9 -18q-67 -177 -84 -212q-8 -16 -22 -33t-26 -38q-4 -7 -12 -7q-12 0 -31 66 q-4 15 -21 63.5l-42 119.5l-41 116q-4 11 -7.5 13t-14.5 2h-11q-8 0 -10.5 3t-2.5 10z" />
+<glyph unicode="x" horiz-adv-x="468" d="M25 12q0 13 12 13q14 0 21 4.5t26 24.5l120 123q8 7 8 9.5t-5 9.5l-107 144q-8 11 -11.5 13t-14.5 2h-16q-8 0 -10.5 3t-2.5 10q0 6 0.5 8t3.5 4t9 2q8 0 35.5 -1t43.5 -1q13 0 31.5 1t26.5 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13q-20 0 -20 -6q0 -4 10 -18l63 -92 q9 -11 9.5 -11t11.5 11q64 71 85 98q6 10 6 11q0 7 -26 7h-13q-8 0 -10.5 3t-2.5 10q0 14 14 14q9 0 26.5 -1t27.5 -1q12 0 29 1t24 1q13 0 13 -14q0 -13 -12 -13q-7 0 -13.5 -3t-9.5 -5.5t-10.5 -10.5t-10.5 -10q-13 -12 -105 -104q-10 -10 -10 -12t10 -15 q78 -109 116 -157q13 -13 18 -13h12q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -30.5 1t-38.5 1q-13 0 -36.5 -1t-31.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h11q20 0 20 8q0 1 -21 33q-24 38 -65 93q-7 9 -9.5 9.5t-10.5 -8.5q-89 -105 -94 -113 q-10 -14 -10 -16q0 -6 18 -6h28q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -27.5 1t-35.5 1q-14 0 -32 -1t-24 -1q-8 0 -10.5 3t-2.5 11z" />
+<glyph unicode="y" horiz-adv-x="467" d="M25 368q0 6 0.5 8t3.5 4t9 2q8 0 33 -1t41 -1q13 0 46.5 1t41.5 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-19q-26 0 -26 -10q0 -12 31 -97.5t58 -151.5q16 -40 19 -40t17 40q82 231 82 252q0 7 -31 7h-23q-8 0 -10.5 3t-2.5 10q0 14 14 14q9 0 31.5 -1t32.5 -1q12 0 30 1 t25 1q13 0 13 -14q0 -13 -12 -13h-14q-10 0 -13 -10q-38 -105 -133 -342q-1 -3 -7 -19.5t-15.5 -46t-17.5 -51.5q-2 -4 -5.5 -15.5t-5 -14.5t-4.5 -11.5t-5 -12t-5.5 -11t-7 -12.5t-8 -12.5t-10.5 -14.5t-13 -16q-17 -22 -26 -27q-6 -4 -15 -8q-54 -26 -62 -26q-18 0 -18 20 q0 15 19 42q7 11 28 18l22.5 7.5t29.5 11t22 13.5t16 19q44 109 44 121q0 8 -28 77l-72.5 174l-55.5 132q-4 11 -7 13t-14 2h-11q-8 0 -10.5 3t-2.5 10z" />
+<glyph unicode="z" horiz-adv-x="413" d="M35 10q0 7 10 20l214 315q2 3 5 7t5 7t2 4q0 3 -14 3l-155 -5q-17 -1 -20.5 -3.5t-6.5 -15.5l-10 -40q-3 -12 -13 -12q-16 0 -16 6q0 2 9 80q1 9 3 11t11 2h281q23 0 23 -9q0 -1 -9 -15l-210 -310q-9 -13 -9 -18q0 -10 15 -10l174 4q10 0 12 1.5t4 11.5l7 58q1 9 3 10.5 t14 1.5q9 0 9 -6q0 -20 -5 -93q-1 -11 -3 -13t-13 -2h-295q-22 0 -22 10z" />
+<glyph unicode="{" horiz-adv-x="307" d="M40 274q0 6 5.5 9t14.5 4t18.5 7.5t18.5 18t14.5 38t5.5 65.5v80q0 36 0.5 53.5t3 42.5t8 36.5t15 26t24.5 20t36.5 10t50.5 4.5q8 0 10 -2t2 -11t-2.5 -11t-11.5 -2q-43 0 -63.5 -19t-20.5 -73v-149q0 -72 -9.5 -100t-48.5 -41q-15 -6 -15 -7t15 -7q39 -13 48.5 -41 t9.5 -100v-149q0 -54 20.5 -73t63.5 -19q6 0 8.5 -0.5t4 -3.5t1.5 -9q0 -9 -2 -11t-10 -2q-29 0 -50.5 4.5t-36.5 10t-24.5 20t-15 26t-8 36.5t-3 42.5t-0.5 53.5v80q0 39 -5.5 65.5t-14.5 38t-18.5 18t-18.5 7.5t-14.5 4t-5.5 9z" />
+<glyph unicode="|" horiz-adv-x="247" d="M100 -187v933q0 10 4 13t14 3h7q15 0 18.5 -2.5t3.5 -14.5v-932q0 -9 -0.5 -12.5t-3 -6.5t-8.5 -3h-21q-10 0 -12 3t-2 19z" />
+<glyph unicode="}" horiz-adv-x="307" d="M40 -128q0 9 3 11t11 2q43 0 63.5 19t20.5 73v149q0 72 9.5 100t48.5 41q15 6 15 7t-15 7q-39 13 -48.5 41t-9.5 100v149q0 54 -20.5 73t-63.5 19q-6 0 -8.5 0.5t-4 3.5t-1.5 9q0 9 2 11t10 2q29 0 50.5 -4.5t36.5 -10t24.5 -20t15 -26t8 -36.5t3 -42.5t0.5 -53.5v-80 q0 -39 5.5 -65.5t14.5 -38t18.5 -18t18.5 -7.5t14.5 -4t5.5 -9t-5.5 -9t-14.5 -4t-18.5 -7.5t-18.5 -18t-14.5 -38t-5.5 -65.5v-80q0 -36 -0.5 -53.5t-3 -42.5t-8 -36.5t-15 -26t-24.5 -20t-36.5 -10t-50.5 -4.5q-8 0 -10 2t-2 11z" />
+<glyph unicode="~" horiz-adv-x="793" d="M45 117q0 5 4 17q6 23 17 46t31.5 51.5t54.5 46.5t76 18q48 0 101.5 -22.5t93 -49.5t88 -49.5t86.5 -22.5q26 0 48.5 16t37 41.5t22 43t12.5 34.5q2 8 4.5 8.5t10.5 -1.5q11 -3 11 -7q0 -3 -1 -6q-7 -28 -19.5 -54.5t-33 -54.5t-54 -45t-73.5 -17q-50 0 -104.5 21.5 t-95 47.5t-89.5 47.5t-89 21.5q-27 0 -48 -14t-34 -36.5t-19.5 -40t-10.5 -35.5q-4 -14 -7 -14q-2 0 -10 2q-10 2 -10 7z" />
+<glyph unicode="&#xa1;" horiz-adv-x="261" d="M80 615q0 21 16 39.5t26 18.5q20 0 39.5 -17t19.5 -29q0 -16 -16 -37.5t-28 -21.5q-16 0 -36.5 15t-20.5 32zM92 13q0 3 4 63t10.5 175.5t11.5 231.5q0 10 14 10q13 0 13 -10q3 -95 7.5 -202t8 -175t3.5 -89q0 -25 -41 -25q-18 0 -24.5 4t-6.5 17z" />
+<glyph unicode="&#xa2;" horiz-adv-x="407" d="M30 177q0 96 54 153.5t128 66.5q7 1 8.5 3t2.5 8v3q1 15 2.5 32.5t2.5 28t1 15.5q0 6 2 6q20 0 20 -3l-7 -79v-6q0 -5 7 -6q3 -1 5 -1q45 -7 79 -34.5t34 -60.5q0 -13 -10 -20q-17 -13 -30 -13t-17 11q-2 7 -7 22.5t-8 23t-9.5 18t-15 16.5t-20.5 9q-2 1 -5 1 q-5 0 -7 -11l-26 -312q0 -10 6 -11q14 -3 29 -3q30 0 58.5 7.5t44.5 15t18 7.5q7 0 7 -8q0 -2 -6.5 -9t-20.5 -17t-32 -18.5t-44.5 -15t-54.5 -6.5h-4q-7 0 -8 -8q-10 -112 -11 -112q-18 0 -18 2q0 1 1 14.5t3.5 41.5t4.5 54q0 5 -1 7.5t-1.5 2.5t-5.5 1q-2 1 -4 1 q-68 12 -106.5 60.5t-38.5 122.5zM95 202q0 -49 22.5 -91.5t64.5 -62.5q6 -3 8 -3q3 0 3 7l25 308v6q0 5 -3 5q-4 0 -8 -1q-51 -11 -81.5 -60.5t-30.5 -107.5z" />
+<glyph unicode="&#xa3;" horiz-adv-x="510" d="M40 -56q0 10 9 19t30.5 22.5t28.5 18.5q10 7 11.5 9t2.5 10q4 70 4 105q0 50 -3 104q-1 12 -3 14t-13 2h-51q-6 0 -7.5 2t-1.5 11q0 11 8 11h50q11 0 13.5 1.5t2.5 7.5q0 1 -1.5 33.5t-3.5 84.5t-2 101q0 73 49.5 119t117.5 46q48 0 81.5 -21t33.5 -57q0 -17 -11.5 -29 t-28.5 -12q-16 0 -16 8q0 34 -15 61t-51 27q-31 0 -50.5 -14t-28 -43t-11 -55.5t-2.5 -69.5v-170q0 -13 3 -15.5t15 -2.5h121q6 0 7.5 -2t1.5 -10t-1.5 -10t-7.5 -2h-121q-12 0 -14.5 -2t-3.5 -14q-5 -105 -35 -190q-4 -9 -4 -12l1 1q2 1 4.5 2.5t5.5 2.5q36 17 76 17 q27 0 87.5 -8.5t81.5 -8.5q52 0 52 37q0 11 -21.5 29t-21.5 22q0 7 10.5 19.5t21.5 12.5q14 0 29.5 -16.5t15.5 -38.5q0 -43 -35 -76t-77 -33q-32 0 -130 7t-103 7q-7 0 -10.5 -5t-7.5 -15q-1 -3 -1 -4t-3 -8.5t-3.5 -10t-3.5 -9t-4.5 -9l-5 -8t-6.5 -7.5t-7 -5t-9 -4 t-11 -1q-28 0 -28 24z" />
+<glyph unicode="&#xa4;" horiz-adv-x="494" d="M25 8q0 10 17 27l61 62q-35 48 -35 107q0 60 34 105l-60 62q-17 17 -17 27t7.5 17t16.5 7q12 0 28 -16l62 -62q46 35 105 35t106 -35l62 62q16 16 27 16q10 0 17.5 -7.5t7.5 -16.5q0 -10 -17 -27l-62 -63q37 -50 37 -106q0 -55 -37 -104l62 -63q17 -17 17 -27t-8 -17.5 t-17 -7.5q-10 0 -27 17l-62 62q-47 -36 -106 -36t-105 35l-62 -61q-16 -16 -28 -16q-10 0 -17 7.5t-7 16.5zM119 202q0 -53 37 -89.5t88 -36.5t88.5 37.5t37.5 89.5t-37.5 90.5t-88.5 38.5q-52 0 -88.5 -38.5t-36.5 -91.5z" />
+<glyph unicode="&#xa5;" horiz-adv-x="597" d="M10 654q0 7 2 10.5t5 4t11 0.5q6 0 46 -1.5t57 -1.5q16 0 60 1.5t55 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-59q-11 0 -12 -2.5t4 -12.5q9 -23 37 -76.5l62.5 -117t42.5 -79.5q9 -17 11 -17q3 0 11 14l27 52l38 72.5l35.5 69.5t29 62t10.5 32q0 3 -2 3h-56 q-13 0 -15.5 1.5t-2.5 10.5q0 13 2 15.5t12 2.5q11 0 36.5 -1.5t41.5 -1.5q17 0 43.5 1.5t32.5 1.5q11 0 13.5 -2t2.5 -13q0 -6 -0.5 -9t-3 -4.5t-5 -1.5h-7.5h-36q-2 0 -27.5 -44.5l-66 -116l-63.5 -109.5h150q3 0 3 -12t-3 -12h-164l-13 -21q-3 -5 -3 -11v-66h180 q3 0 3 -12t-3 -12h-180q2 -196 10 -196h71q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-58.5 -1.5t-53.5 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h52q10 0 10 196h-176q-2 0 -2.5 12t2.5 12h176v24q0 11 -7 23l-28 51h-141q-2 0 -2.5 12 t2.5 12h128q-150 270 -158 270h-29q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#xa6;" horiz-adv-x="247" d="M100 -187v376q0 14 11 14h25q11 0 11 -14v-376q0 -9 -0.5 -12.5t-3 -6.5t-8.5 -3h-21q-10 0 -12 3t-2 19zM100 379v367q0 10 4 13t14 3h7q15 0 18.5 -2.5t3.5 -14.5v-366q0 -12 -2.5 -15.5t-11.5 -3.5h-18q-10 0 -12.5 3t-2.5 16z" />
+<glyph unicode="&#xa7;" horiz-adv-x="381" d="M40 310q0 67 69 118q7 5 -2 18q-44 68 -44 110q0 52 34 86.5t91 34.5q41 0 77.5 -11t36.5 -34q0 -27 -37 -27q-22 0 -54.5 15.5t-54.5 15.5q-58 0 -58 -42q0 -28 38 -84t83.5 -111.5t83.5 -130t38 -136.5q0 -43 -66 -94q-10 -9 -10 -12q0 -2 7 -14q42 -76 42 -114 q0 -56 -39 -90t-107 -34q-103 0 -103 44q0 10 8.5 16.5t19.5 6.5q7 0 43 -13q34 -12 72 -12q32 0 52 13t20 39q0 25 -37.5 80t-82.5 111t-82.5 127t-37.5 124zM78 357q0 -33 37 -102.5t69 -117t61 -85.5q7 -10 10 -10t14 10q33 31 33 50q0 21 -11 51t-25 56.5t-37.5 63 t-37.5 56l-36.5 50.5t-23.5 32t-3 4t-2.5 3.5t-2.5 0.5t-4 -1.5l-6 -4.5q-35 -27 -35 -56z" />
+<glyph unicode="&#xa8;" horiz-adv-x="400" d="M69 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM229 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5z" />
+<glyph unicode="&#xa9;" horiz-adv-x="843" d="M54 189q0 156 105.5 264t260.5 108t260.5 -107.5t105.5 -264.5q0 -156 -105.5 -264t-260.5 -108t-260.5 108t-105.5 264zM88 189q0 -142 96 -241t236 -99t236 99t96 241t-96 241t-236 99t-236 -99t-96 -241zM196 201q0 99 65 159.5t164 60.5q14 0 27 -1.5t23.5 -4 t21 -6.5t18 -7.5t15.5 -8t11.5 -7.5t9 -7t6.5 -4q10 -2 11 2v17q0 9 15 9q8 0 10 -1.5t2 -7.5q0 -3 -1 -53.5t-1 -69.5q0 -10 -10 -10q-18 0 -18 7q0 1 1.5 27t1.5 29q0 6 -18 23.5t-55 35.5t-75 18q-69 0 -114 -57.5t-45 -144.5q0 -81 52 -138.5t126 -57.5q27 0 51 5 t39.5 12.5t26.5 15t17 12.5t7 5t6.5 -9t5.5 -10q0 -5 -18 -18.5t-60 -28t-93 -14.5q-95 0 -160 59t-65 169z" />
+<glyph unicode="&#xaa;" horiz-adv-x="352" d="M35 407q0 49 55 78.5t132 42.5q6 1 6 12q0 27 -1.5 41.5t-7.5 32.5t-21 26.5t-39 8.5q-13 0 -24 -4q-16 -6 -20.5 -16.5t-5.5 -35.5q0 -13 -6 -17q-33 -21 -47 -21q-8 0 -8 12q0 46 41.5 75.5t87.5 29.5q60 0 85 -26.5t25 -77.5q0 -23 -2.5 -90t-2.5 -73q0 -24 18 -24 q2 0 16 9.5t15 9.5q2 0 6 -4.5t4 -8.5t-54 -43q-13 -9 -22 -9q-13 0 -21 12.5t-10 24.5l-3 13q-1 0 -3.5 -2t-6.5 -4.5l-7 -4.5q-56 -36 -96 -36q-39 0 -61 18.5t-22 50.5zM98 431q0 -21 14.5 -37.5t38.5 -16.5q16 0 35 4.5t30.5 10t11.5 7.5v104q0 9 -4 9q-11 0 -50 -12 q-76 -24 -76 -69z" />
+<glyph unicode="&#xab;" horiz-adv-x="408" d="M50 193q0 4 55 55l36 34.5l31 30.5l12 11q2 0 8 -5.5t6 -6.5q0 -4 -31 -58t-31 -61t31 -61t31 -58q0 -1 -6 -6.5t-8 -5.5l-12 11l-31 30.5l-36 34.5q-55 51 -55 55zM200 193q0 4 55 55l36 34.5l31 30.5l12 11q2 0 8 -5.5t6 -6.5q0 -4 -31 -58t-31 -61t31 -61t31 -58 q0 -1 -6 -6.5t-8 -5.5l-12 11l-31 30.5l-36 34.5q-55 51 -55 55z" />
+<glyph unicode="&#xac;" horiz-adv-x="527" d="M31 215q0 17 19 17h427q13 0 16.5 -3t3.5 -16v-158q0 -15 -16 -15q-12 0 -16.5 0.5t-8.5 5t-4 14.5v111q0 17 -26 17h-376q-13 0 -16 5.5t-3 21.5z" />
+<glyph unicode="&#xad;" horiz-adv-x="258" d="M25 201q0 12 6 25.5t12 14.5t91.5 4t91.5 3q2 0 2 -9q0 -33 -8 -33q-104 -8 -191 -8q-4 0 -4 3z" />
+<glyph unicode="&#xae;" horiz-adv-x="536" d="M25 470q0 104 70 175.5t173 71.5t173 -71.5t70 -175.5t-70 -175.5t-173 -71.5t-173 71.5t-70 175.5zM50 470q0 -94 63 -159t155 -65t155 65t63 159t-63 159t-155 65t-155 -65t-63 -159zM142 628q0 9 11 9q3 0 23.5 -0.5t27.5 -0.5t34.5 1.5t32.5 1.5q101 0 101 -80 q0 -49 -64 -78q77 -23 80 -107q1 -28 4 -28h20q8 0 8 -12q0 -6 -10 -6l-60 1q-7 0 -7 7v27q0 31 -3 50t-18 36.5t-43 20.5q-15 2 -52 2q-5 0 -5 -3q0 -99 4 -123h27q7 0 7 -7q0 -11 -7 -11q-5 0 -24 0.5t-26 0.5t-25 -0.5t-19 -0.5q-9 0 -9 11q0 7 11 7h19q2 16 2 58v60 q0 141 -5 155l-24 -1q-11 0 -11 10zM222 489q0 -2 5 -2q12 0 33.5 -0.5t29.5 -0.5q39 19 39 67q0 32 -24.5 51t-57.5 19q-4 0 -11.5 -0.5t-11.5 -0.5q-2 -8 -2 -23v-110z" />
+<glyph unicode="&#xaf;" horiz-adv-x="400" d="M98 518v23q0 6 1.5 7t7.5 1h187q6 0 7 -1t1 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8z" />
+<glyph unicode="&#xb0;" horiz-adv-x="256" d="M40 535q0 36 26 62t62 26t62 -26t26 -62t-26 -62t-62 -26t-62 26t-26 62zM71 535q0 -24 16.5 -40.5t40.5 -16.5t40.5 16.5t16.5 40.5t-16.5 40.5t-40.5 16.5t-40.5 -16.5t-16.5 -40.5z" />
+<glyph unicode="&#xb1;" horiz-adv-x="527" d="M31 90q0 11 0.5 15.5t4.5 8t13 3.5h429q11 0 14.5 -4t3.5 -16q0 -13 -3.5 -18.5t-17.5 -5.5h-427q-9 0 -13 3t-4 14zM31 324q0 22 18 22h181q11 0 11 10v9v130q0 15 16 15q18 0 23 -3t5 -14v-128v-8q0 -11 12 -11h183q16 0 16 -15q0 -12 -1 -17t-5.5 -9t-14.5 -4h-178 q-12 0 -12 -17v-132q0 -14 -16 -14q-17 0 -22.5 2.5t-5.5 11.5v132q0 10 -2.5 13.5t-13.5 3.5h-177q-12 0 -14.5 5t-2.5 18z" />
+<glyph unicode="&#xb2;" horiz-adv-x="360" d="M40 671q0 7 16.5 28t49 41.5t67.5 20.5q57 0 86.5 -37.5t29.5 -79.5q0 -102 -160 -219q-18 -14 -24 -25h185q3 10 7 52q0 6 10 5q11 0 11 -5q0 -2 -2.5 -20l-6 -41.5t-4.5 -34.5q-1 -6 -12 -6h-230q-13 0 -13 9q0 5 20 36.5t24 34.5q1 1 16.5 14t21.5 18.5l22 21t24.5 26 t20.5 27.5t18.5 31t11.5 32.5t5 35.5q0 33 -19.5 58t-54.5 25q-29 0 -53.5 -15.5t-38.5 -30.5t-15 -15q-4 0 -8.5 4.5t-4.5 8.5z" />
+<glyph unicode="&#xb3;" horiz-adv-x="360" d="M65 368q0 29 32 29q11 0 29 -7q5 -2 24.5 -13t29.5 -11q32 0 56 26t24 64q0 79 -74 79q-12 0 -41.5 -2t-31.5 -2q-13 0 -13 21q0 10 17 13q63 13 87.5 33t24.5 64q0 32 -17.5 49t-45.5 17q-23 0 -42 -8t-29 -16.5t-13 -8.5q-4 0 -8.5 4.5t-4.5 8.5q0 6 13.5 18t39.5 23.5 t53 11.5q48 0 79.5 -25.5t31.5 -63.5q0 -22 -9 -39t-26.5 -29.5t-32.5 -20t-38 -16.5q58 0 96.5 -25.5t38.5 -71.5q0 -55 -47 -91.5t-103 -36.5q-34 0 -67 6.5t-33 19.5z" />
+<glyph unicode="&#xb4;" horiz-adv-x="400" d="M185 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2z" />
+<glyph unicode="&#xb5;" horiz-adv-x="509" d="M25 -136q0 41 8.5 85t26 106t25.5 100q23 101 36 150.5t18 60t11 10.5q39 0 39 -17q0 -7 -9.5 -40.5t-22.5 -87.5t-19 -103q-3 -36 -3 -43q0 -47 29 -47q32 0 74 53.5t73 114t56 123.5q19 48 23 48q13 0 26.5 -4.5t13.5 -10.5q0 -2 -25 -133.5t-25 -158.5 q0 -11 7.5 -18.5t17.5 -7.5q16 0 28 17t20 33.5t13 16.5q8 0 8 -13q0 -32 -37 -73.5t-83 -41.5q-34 0 -34 64q0 24 8 79.5t8 57.5q0 8 -4 8l-8 -12q-7 -13 -21.5 -36l-27.5 -42q-1 -1 -13 -19.5t-16 -23.5l-16 -20.5t-20.5 -22l-21 -15.5t-25.5 -12.5t-27 -3.5 q-17 0 -28.5 17.5t-16 34.5t-5.5 17q-4 0 -12.5 -54t-8.5 -79q0 -19 12 -47.5t12 -29.5q0 -3 -2 -9t-9.5 -12t-18.5 -6q-14 0 -24 12t-10 35z" />
+<glyph unicode="&#xb6;" horiz-adv-x="492" d="M40 417q0 48 16 87.5t41 64.5t56.5 42.5t61.5 25t58 7.5q8 0 10 -3t2 -11v-468q0 -8 -5 -8q-23 0 -52 8t-62.5 28.5t-61 49t-46 75t-18.5 102.5zM280 -205q0 8 10 8h58q7 0 9 1.5t2 6.5v831q0 8 2.5 10t8.5 2h70q8 0 10 -2t2 -9v-14q0 -6 -2 -7.5t-10 -1.5h-46 q-5 0 -6.5 -1.5t-1.5 -8.5v-832q0 -6 -2 -7.5t-12 -1.5h-82q-10 0 -10 8v18z" />
+<glyph unicode="&#xb7;" horiz-adv-x="147" d="M25 333q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5z" />
+<glyph unicode="&#xb8;" horiz-adv-x="400" d="M117 -200q0 11 8 11l9 -3q8 -4 22 -8t29 -4q34 0 50 13.5t16 42.5q0 45 -55 45q-8 0 -16.5 -2.5t-14 -4.5t-6.5 -2q-8 0 -8 5t41 107h17l-24 -65q-2 -9 0 -9l5 2l14.5 2.5t16.5 1.5q40 0 62.5 -21t22.5 -47q0 -35 -29.5 -63.5t-76.5 -28.5q-23 0 -43.5 6.5t-30 12.5 t-9.5 9z" />
+<glyph unicode="&#xb9;" horiz-adv-x="360" d="M95 364q0 7 2.5 8.5t11.5 1.5h60q1 9 1 50v75q0 181 -2 217q-1 8 -5 8q-1 0 -29.5 -1.5t-30.5 -1.5q-8 0 -8 6v12q0 6 11 6q28 1 49.5 3l33 3t18.5 2.5t10 2t4 0.5q7 0 7 -14q0 -65 -0.5 -176.5t-0.5 -169.5q0 -21 1 -22h44q7 0 7 -10q0 -16 -8 -16q-1 0 -23.5 1t-47.5 1 q-27 0 -58 -1t-36 -1q-7 0 -9 3t-2 13z" />
+<glyph unicode="&#xba;" horiz-adv-x="384" d="M30 497q0 73 48 122.5t124 49.5q67 0 109.5 -46.5t42.5 -114.5q0 -76 -44 -123.5t-121 -47.5q-67 0 -113 47t-46 113zM94 486q0 -49 25.5 -87.5t69.5 -38.5q99 0 99 154q0 52 -24.5 92t-71.5 40q-98 0 -98 -160z" />
+<glyph unicode="&#xbb;" horiz-adv-x="408" d="M60 74q0 4 31 58t31 61t-31 61t-31 58q0 1 6 6.5t8 5.5l12 -11l31 -30.5l36 -34.5q55 -51 55 -55t-55 -55l-36 -34.5l-31 -30.5l-12 -11q-2 0 -8 5.5t-6 6.5zM210 74q0 4 31 58t31 61t-31 61t-31 58q0 1 6 6.5t8 5.5l12 -11l31 -30.5l36 -34.5q55 -51 55 -55t-55 -55 l-36 -34.5l-31 -30.5l-12 -11q-2 0 -8 5.5t-6 6.5z" />
+<glyph unicode="&#xbc;" horiz-adv-x="774" d="M449 138q0 20 11 39q44 77 149 190q7 8 27 22q6 5 13 12.5t10.5 10t7.5 2.5q13 0 13 -22v-212q0 -5 1 -6t6 -1h51q7 0 7 -10v-22q0 -10 -12 -10h-46q-6 0 -6 -6v-123q0 -8 -6 -8l-43 -4q-6 0 -6 8l3 125q0 8 -10 8h-153q-17 0 -17 7zM487 173h131q7 0 9 1.5t2 6.5v173 q-19 -19 -73 -86t-69 -95zM200 -8q0 1 4 9l408 657q7 10 23 10q17 0 17 -6q0 -2 -1 -4l-410 -659q-3 -5 -4 -6t-3.5 -3t-6 -2.5t-9.5 -0.5q-18 0 -18 5zM95 264q0 7 2.5 8.5t11.5 1.5h60q1 9 1 50v75q0 181 -2 217q-1 8 -5 8q-1 0 -29.5 -1.5t-30.5 -1.5q-8 0 -8 6v12 q0 6 11 6q28 1 49.5 3l33 3t18.5 2.5t10 2t4 0.5q7 0 7 -14q0 -65 -0.5 -176.5t-0.5 -169.5q0 -21 1 -22h44q7 0 7 -10q0 -16 -8 -16q-1 0 -23.5 1t-47.5 1q-27 0 -58 -1t-36 -1q-7 0 -9 3t-2 13z" />
+<glyph unicode="&#xbd;" horiz-adv-x="844" d="M524 321q0 7 16.5 28t49 41.5t67.5 20.5q57 0 86.5 -37.5t29.5 -79.5q0 -102 -160 -219q-18 -14 -24 -25h185q3 10 7 52q0 6 10 5q11 0 11 -5q0 -2 -2.5 -20l-6 -41.5t-4.5 -34.5q-1 -6 -12 -6h-230q-13 0 -13 9q0 5 20 36.5t24 34.5q1 1 16.5 14t21.5 18.5l22 21 t24.5 26t20.5 27.5t18.5 31t11.5 32.5t5 35.5q0 33 -19.5 58t-54.5 25q-29 0 -53.5 -15.5t-38.5 -30.5t-15 -15q-4 0 -8.5 4.5t-4.5 8.5zM200 -8q0 1 4 9l408 657q7 10 23 10q17 0 17 -6q0 -2 -1 -4l-410 -659q-3 -5 -4 -6t-3.5 -3t-6 -2.5t-9.5 -0.5q-18 0 -18 5zM95 264 q0 7 2.5 8.5t11.5 1.5h60q1 9 1 50v75q0 181 -2 217q-1 8 -5 8q-1 0 -29.5 -1.5t-30.5 -1.5q-8 0 -8 6v12q0 6 11 6q28 1 49.5 3l33 3t18.5 2.5t10 2t4 0.5q7 0 7 -14q0 -65 -0.5 -176.5t-0.5 -169.5q0 -21 1 -22h44q7 0 7 -10q0 -16 -8 -16q-1 0 -23.5 1t-47.5 1 q-27 0 -58 -1t-36 -1q-7 0 -9 3t-2 13z" />
+<glyph unicode="&#xbe;" horiz-adv-x="774" d="M449 138q0 20 11 39q44 77 149 190q7 8 27 22q6 5 13 12.5t10.5 10t7.5 2.5q13 0 13 -22v-212q0 -5 1 -6t6 -1h51q7 0 7 -10v-22q0 -10 -12 -10h-46q-6 0 -6 -6v-123q0 -8 -6 -8l-43 -4q-6 0 -6 8l3 125q0 8 -10 8h-153q-17 0 -17 7zM487 173h131q7 0 9 1.5t2 6.5v173 q-19 -19 -73 -86t-69 -95zM200 -8q0 1 4 9l408 657q7 10 23 10q17 0 17 -6q0 -2 -1 -4l-410 -659q-3 -5 -4 -6t-3.5 -3t-6 -2.5t-9.5 -0.5q-18 0 -18 5zM65 268q0 29 32 29q11 0 29 -7q5 -2 24.5 -13t29.5 -11q32 0 56 26t24 64q0 79 -74 79q-12 0 -41.5 -2t-31.5 -2 q-13 0 -13 21q0 10 17 13q63 13 87.5 33t24.5 64q0 32 -17.5 49t-45.5 17q-23 0 -42 -8t-29 -16.5t-13 -8.5q-4 0 -8.5 4.5t-4.5 8.5q0 6 13.5 18t39.5 23.5t53 11.5q48 0 79.5 -25.5t31.5 -63.5q0 -22 -9 -39t-26.5 -29.5t-32.5 -20t-38 -16.5q58 0 96.5 -25.5t38.5 -71.5 q0 -55 -47 -91.5t-103 -36.5q-34 0 -67 6.5t-33 19.5z" />
+<glyph unicode="&#xbf;" horiz-adv-x="364" d="M30 240q0 79 29 126t106 48q15 0 20 4t6 13q1 16 4 45t4 45q0 9 12 9q10 0 13 -4.5t3 -17.5q0 -119 -2 -147q-1 -12 -7 -15t-21 -3h-57q-87 0 -87 -88q0 -72 57.5 -122t170.5 -64q2 0 5.5 -0.5t5 -1t4 -1t3.5 -1.5l2.5 -2.5t2 -3.5t0.5 -5v-45q0 -17 -9 -17q-6 0 -10 12 t-9 13q-24 4 -37.5 6.5t-42.5 10.5t-48 17.5t-43.5 27t-39 39t-25 53t-10.5 69.5zM167 609q0 21 16 39.5t26 18.5q20 0 39.5 -17t19.5 -29q0 -16 -16 -37.5t-28 -21.5q-16 0 -36.5 15t-20.5 32z" />
+<glyph unicode="&#xc0;" horiz-adv-x="698" d="M262 822q0 25 30 25q18 0 34 -25l53 -85q2 -4 2 -6t-4 -2h-21l-8 6l-72 60q-14 11 -14 27zM30 15q0 9 3 10.5t15 1.5h28q3 0 17.5 30.5t34.5 77.5l39 92l35.5 84.5l19.5 46.5l106 246q4 9 17 25.5t19 30.5q12 27 19 27t9 -7l120 -337l19 -53l21.5 -60.5l21 -58.5 l21 -56.5t17.5 -44t15 -32.5t8 -11h32q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5t-50.5 1.5q-16 0 -58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h54q1 0 1 3q0 30 -70 226q-6 17 -10 18q-3 1 -10 1h-201q-5 0 -8 -0.5t-5 -1t-4 -3t-2 -3t-2 -5 t-2 -5.5q-81 -206 -81 -227q0 -3 1 -3h78q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -43.5 1.5t-48.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5zM231 305q0 -6 16 -6h179q13 0 13 5q0 1 -4 13l-83 243q-6 19 -8 19t-10 -19l-98 -240q-5 -12 -5 -15z" />
+<glyph unicode="&#xc1;" horiz-adv-x="698" d="M361 731q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2zM30 15q0 9 3 10.5t15 1.5h28q3 0 17.5 30.5t34.5 77.5l39 92l35.5 84.5l19.5 46.5l106 246q4 9 17 25.5t19 30.5q12 27 19 27t9 -7l120 -337l19 -53l21.5 -60.5l21 -58.5 l21 -56.5t17.5 -44t15 -32.5t8 -11h32q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5t-50.5 1.5q-16 0 -58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h54q1 0 1 3q0 30 -70 226q-6 17 -10 18q-3 1 -10 1h-201q-5 0 -8 -0.5t-5 -1t-4 -3t-2 -3t-2 -5 t-2 -5.5q-81 -206 -81 -227q0 -3 1 -3h78q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -43.5 1.5t-48.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5zM231 305q0 -6 16 -6h179q13 0 13 5q0 1 -4 13l-83 243q-6 19 -8 19t-10 -19l-98 -240q-5 -12 -5 -15z" />
+<glyph unicode="&#xc2;" horiz-adv-x="698" d="M260 731l4 6l79 89q12 13 16 13h24q4 0 16 -13l79 -89q4 -4 4 -6t-6 -2h-9q-1 0 -11 6l-81 45q-4 2 -8 0l-81 -45q-10 -6 -11 -6h-9q-6 0 -6 2zM30 15q0 9 3 10.5t15 1.5h28q3 0 17.5 30.5t34.5 77.5l39 92l35.5 84.5l19.5 46.5l106 246q4 9 17 25.5t19 30.5q12 27 19 27 t9 -7l120 -337l19 -53l21.5 -60.5l21 -58.5l21 -56.5t17.5 -44t15 -32.5t8 -11h32q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5t-50.5 1.5q-16 0 -58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h54q1 0 1 3q0 30 -70 226q-6 17 -10 18q-3 1 -10 1 h-201q-5 0 -8 -0.5t-5 -1t-4 -3t-2 -3t-2 -5t-2 -5.5q-81 -206 -81 -227q0 -3 1 -3h78q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -43.5 1.5t-48.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5zM231 305q0 -6 16 -6h179q13 0 13 5q0 1 -4 13l-83 243q-6 19 -8 19 t-10 -19l-98 -240q-5 -12 -5 -15z" />
+<glyph unicode="&#xc3;" horiz-adv-x="698" d="M266 748q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM30 15q0 9 3 10.5t15 1.5h28q3 0 17.5 30.5t34.5 77.5l39 92l35.5 84.5l19.5 46.5 l106 246q4 9 17 25.5t19 30.5q12 27 19 27t9 -7l120 -337l19 -53l21.5 -60.5l21 -58.5l21 -56.5t17.5 -44t15 -32.5t8 -11h32q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5t-50.5 1.5q-16 0 -58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h54 q1 0 1 3q0 30 -70 226q-6 17 -10 18q-3 1 -10 1h-201q-5 0 -8 -0.5t-5 -1t-4 -3t-2 -3t-2 -5t-2 -5.5q-81 -206 -81 -227q0 -3 1 -3h78q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -43.5 1.5t-48.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5zM231 305q0 -6 16 -6h179 q13 0 13 5q0 1 -4 13l-83 243q-6 19 -8 19t-10 -19l-98 -240q-5 -12 -5 -15z" />
+<glyph unicode="&#xc4;" horiz-adv-x="698" d="M240 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM400 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM30 15q0 9 3 10.5t15 1.5h28q3 0 17.5 30.5t34.5 77.5l39 92 l35.5 84.5l19.5 46.5l106 246q4 9 17 25.5t19 30.5q12 27 19 27t9 -7l120 -337l19 -53l21.5 -60.5l21 -58.5l21 -56.5t17.5 -44t15 -32.5t8 -11h32q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5t-50.5 1.5q-16 0 -58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5 q0 9 3 10.5t15 1.5h54q1 0 1 3q0 30 -70 226q-6 17 -10 18q-3 1 -10 1h-201q-5 0 -8 -0.5t-5 -1t-4 -3t-2 -3t-2 -5t-2 -5.5q-81 -206 -81 -227q0 -3 1 -3h78q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -43.5 1.5t-48.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5z M231 305q0 -6 16 -6h179q13 0 13 5q0 1 -4 13l-83 243q-6 19 -8 19t-10 -19l-98 -240q-5 -12 -5 -15z" />
+<glyph unicode="&#xc5;" horiz-adv-x="698" d="M300 785q0 29 21 50t50 21t50 -21t21 -50t-21 -50t-50 -21t-50 21t-21 50zM328 785q0 -18 12.5 -30.5t30.5 -12.5t30.5 12.5t12.5 30.5t-12.5 30.5t-30.5 12.5t-30.5 -12.5t-12.5 -30.5zM30 15q0 9 3 10.5t15 1.5h28q3 0 17.5 30.5t34.5 77.5l39 92l35.5 84.5l19.5 46.5 l106 246q4 9 17 25.5t19 30.5q12 27 19 27t9 -7l120 -337l19 -53l21.5 -60.5l21 -58.5l21 -56.5t17.5 -44t15 -32.5t8 -11h32q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5t-50.5 1.5q-16 0 -58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h54 q1 0 1 3q0 30 -70 226q-6 17 -10 18q-3 1 -10 1h-201q-5 0 -8 -0.5t-5 -1t-4 -3t-2 -3t-2 -5t-2 -5.5q-81 -206 -81 -227q0 -3 1 -3h78q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -43.5 1.5t-48.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5zM231 305q0 -6 16 -6h179 q13 0 13 5q0 1 -4 13l-83 243q-6 19 -8 19t-10 -19l-98 -240q-5 -12 -5 -15z" />
+<glyph unicode="&#xc6;" horiz-adv-x="973" d="M20 15q0 9 3 10.5t15 1.5h28q4 0 13 11.5t24.5 36l30.5 50.5l40 67.5l45 73.5l221 360q5 8 4 9t-13 1h-45q-7 0 -9.5 3t-2.5 12q0 14 12 14l18 -1q18 0 53 -1t78 -1q28 0 128.5 1.5t120.5 1.5q47 0 56.5 1.5t10.5 10.5v1q1 12 13 12q11 0 14 -2t3 -9q0 -2 -2 -43t-2 -87 q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 7 -272 7q-7 0 -7 -128q0 -42 2 -142q0 -10 1.5 -13t10.5 -3h167q55 0 55 16v50q0 9 17 9q14 0 14 -8q0 -1 -1 -29t-1 -49t1 -50t1 -33q0 -8 -13 -8q-18 0 -18 9v46q0 7 -2 10t-15 6.5t-38 3.5h-163q-12 0 -14 -2 t-2 -13q6 -276 12 -276q27 0 68 0.5l79.5 1t73.5 0.5t57 0.5t23 0.5q12 0 15 3t4 20q1 14 3 87q0 8 14 8q17 0 17 -9q0 -28 -1.5 -77t-1.5 -61q0 -11 -22 -11q-11 0 -182.5 1.5t-187.5 1.5t-63.5 -1.5t-58.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5q0 9 2.5 10.5t14.5 1.5h61 q7 0 7 75v158q0 7 -4.5 10.5t-9.5 4t-16 0.5h-201q-4 0 -64 -105t-75 -137l-2 -6h7h64q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -41 1.5t-46 1.5t-38 -1.5t-33 -1.5q-10 0 -12 2.5t-2 15.5zM279 306q0 -7 16 -7h169q20 0 24.5 3.5t4.5 16.5v92q0 225 -14 225h-1 q-5 0 -11 -10l-182 -306q-6 -12 -6 -14z" />
+<glyph unicode="&#xc7;" horiz-adv-x="731" d="M45 335q0 154 101.5 249.5t255.5 95.5q19 0 37.5 -2t34.5 -5.5t29.5 -8t27 -10.5l23 -10.5t19.5 -11l15 -10l12.5 -8.5t8.5 -6q5 -4 6.5 -5t5 -2t4.5 1.5t1 8.5v27q0 9 2 11t13 2q12 0 16 -2t4 -11q0 -5 -2 -84t-2 -109q0 -9 -3 -12.5t-13 -3.5q-13 0 -16 2.5t-3 9.5 q0 1 2 43t2 47t-11 18t-32.5 30t-48.5 33t-64.5 27t-74.5 11q-108 0 -178 -90t-70 -227q0 -127 81 -218.5t196 -91.5q51 0 99 15t71.5 30.5t24.5 22.5l13 113q1 10 5.5 13t16.5 1q12 -1 12 -13q0 -13 -16 -133q-1 -10 -36 -30.5t-96 -39t-119 -18.5l-18 -49q-2 -9 0 -9l5 2 l14.5 2.5t16.5 1.5q40 0 62.5 -21t22.5 -47q0 -35 -29.5 -63.5t-76.5 -28.5q-23 0 -43.5 6.5t-30 12.5t-9.5 9q0 11 8 11l9 -3q8 -4 22 -8t29 -4q34 0 50 13.5t16 42.5q0 45 -55 45q-8 0 -16.5 -2.5t-14 -4.5t-6.5 -2q-8 0 -8 5q0 2 35 91q-68 2 -128 24.5t-107 64.5 t-74.5 109.5t-27.5 152.5z" />
+<glyph unicode="&#xc8;" horiz-adv-x="605" d="M207 822q0 25 30 25q18 0 34 -25l53 -85q2 -4 2 -6t-4 -2h-21l-8 6l-72 60q-14 11 -14 27zM40 15q0 9 2.5 10.5t14.5 1.5h61q7 0 7 75v96q0 31 -0.5 72t-1 78t-1 69.5t-1 53t-0.5 21.5q0 144 -11 144h-43q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l43 -1q43 -2 64 -2 q28 0 128.5 1.5t120.5 1.5q47 0 56.5 1.5t10.5 10.5v1q1 12 13 12q11 0 14 -2t3 -9q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 7 -272 7q-7 0 -7 -128q0 -42 2 -142q0 -10 1.5 -13t10.5 -3h167q55 0 55 16v50q0 9 17 9q14 0 14 -8 q0 -1 -1 -29t-1 -49t1 -50t1 -33q0 -8 -13 -8q-18 0 -18 9v46q0 7 -2 10t-15 6.5t-38 3.5h-163q-12 0 -14 -2t-2 -13q6 -276 12 -276q27 0 68 0.5l79.5 1t73.5 0.5t57 0.5t23 0.5q12 0 15 3t4 20q1 14 3 87q0 8 14 8q17 0 17 -9q0 -28 -1.5 -77t-1.5 -61q0 -11 -22 -11 q-11 0 -182.5 1.5t-187.5 1.5t-63.5 -1.5t-58.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="&#xc9;" horiz-adv-x="605" d="M306 731q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2zM40 15q0 9 2.5 10.5t14.5 1.5h61q7 0 7 75v96q0 31 -0.5 72t-1 78t-1 69.5t-1 53t-0.5 21.5q0 144 -11 144h-43q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l43 -1 q43 -2 64 -2q28 0 128.5 1.5t120.5 1.5q47 0 56.5 1.5t10.5 10.5v1q1 12 13 12q11 0 14 -2t3 -9q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 7 -272 7q-7 0 -7 -128q0 -42 2 -142q0 -10 1.5 -13t10.5 -3h167q55 0 55 16v50q0 9 17 9 q14 0 14 -8q0 -1 -1 -29t-1 -49t1 -50t1 -33q0 -8 -13 -8q-18 0 -18 9v46q0 7 -2 10t-15 6.5t-38 3.5h-163q-12 0 -14 -2t-2 -13q6 -276 12 -276q27 0 68 0.5l79.5 1t73.5 0.5t57 0.5t23 0.5q12 0 15 3t4 20q1 14 3 87q0 8 14 8q17 0 17 -9q0 -28 -1.5 -77t-1.5 -61 q0 -11 -22 -11q-11 0 -182.5 1.5t-187.5 1.5t-63.5 -1.5t-58.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="&#xca;" horiz-adv-x="605" d="M205 731l4 6l79 89q12 13 16 13h24q4 0 16 -13l79 -89q4 -4 4 -6t-6 -2h-9q-1 0 -11 6l-81 45q-4 2 -8 0l-81 -45q-10 -6 -11 -6h-9q-6 0 -6 2zM40 15q0 9 2.5 10.5t14.5 1.5h61q7 0 7 75v96q0 31 -0.5 72t-1 78t-1 69.5t-1 53t-0.5 21.5q0 144 -11 144h-43 q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l43 -1q43 -2 64 -2q28 0 128.5 1.5t120.5 1.5q47 0 56.5 1.5t10.5 10.5v1q1 12 13 12q11 0 14 -2t3 -9q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 7 -272 7q-7 0 -7 -128q0 -42 2 -142 q0 -10 1.5 -13t10.5 -3h167q55 0 55 16v50q0 9 17 9q14 0 14 -8q0 -1 -1 -29t-1 -49t1 -50t1 -33q0 -8 -13 -8q-18 0 -18 9v46q0 7 -2 10t-15 6.5t-38 3.5h-163q-12 0 -14 -2t-2 -13q6 -276 12 -276q27 0 68 0.5l79.5 1t73.5 0.5t57 0.5t23 0.5q12 0 15 3t4 20q1 14 3 87 q0 8 14 8q17 0 17 -9q0 -28 -1.5 -77t-1.5 -61q0 -11 -22 -11q-11 0 -182.5 1.5t-187.5 1.5t-63.5 -1.5t-58.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="&#xcb;" horiz-adv-x="605" d="M185 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM345 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM40 15q0 9 2.5 10.5t14.5 1.5h61q7 0 7 75v96q0 31 -0.5 72 t-1 78t-1 69.5t-1 53t-0.5 21.5q0 144 -11 144h-43q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l43 -1q43 -2 64 -2q28 0 128.5 1.5t120.5 1.5q47 0 56.5 1.5t10.5 10.5v1q1 12 13 12q11 0 14 -2t3 -9q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 1.5 38.5 t1.5 39.5q0 7 -272 7q-7 0 -7 -128q0 -42 2 -142q0 -10 1.5 -13t10.5 -3h167q55 0 55 16v50q0 9 17 9q14 0 14 -8q0 -1 -1 -29t-1 -49t1 -50t1 -33q0 -8 -13 -8q-18 0 -18 9v46q0 7 -2 10t-15 6.5t-38 3.5h-163q-12 0 -14 -2t-2 -13q6 -276 12 -276q27 0 68 0.5l79.5 1 t73.5 0.5t57 0.5t23 0.5q12 0 15 3t4 20q1 14 3 87q0 8 14 8q17 0 17 -9q0 -28 -1.5 -77t-1.5 -61q0 -11 -22 -11q-11 0 -182.5 1.5t-187.5 1.5t-63.5 -1.5t-58.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="&#xcc;" horiz-adv-x="333" d="M59 822q0 25 30 25q18 0 34 -25l53 -85q2 -4 2 -6t-4 -2h-21l-8 6l-72 60q-14 11 -14 27zM30 15q0 9 3 10.5t15 1.5h68q10 0 10 367v98q0 147 -10 147h-62q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 54.5 -1.5t65.5 -1.5q16 0 60 1.5t55 1.5q10 0 12 -2.5 t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-63q-11 0 -11 -158v-135q0 -319 10 -319h71q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-66.5 -1.5t-61.5 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#xcd;" horiz-adv-x="333" d="M158 731q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2zM30 15q0 9 3 10.5t15 1.5h68q10 0 10 367v98q0 147 -10 147h-62q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 54.5 -1.5t65.5 -1.5q16 0 60 1.5t55 1.5 q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-63q-11 0 -11 -158v-135q0 -319 10 -319h71q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-66.5 -1.5t-61.5 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#xce;" horiz-adv-x="333" d="M57 731l4 6l79 89q12 13 16 13h24q4 0 16 -13l79 -89q4 -4 4 -6t-6 -2h-9q-1 0 -11 6l-81 45q-4 2 -8 0l-81 -45q-10 -6 -11 -6h-9q-6 0 -6 2zM30 15q0 9 3 10.5t15 1.5h68q10 0 10 367v98q0 147 -10 147h-62q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5 q6 0 54.5 -1.5t65.5 -1.5q16 0 60 1.5t55 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-63q-11 0 -11 -158v-135q0 -319 10 -319h71q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-66.5 -1.5t-61.5 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#xcf;" horiz-adv-x="333" d="M37 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM197 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM30 15q0 9 3 10.5t15 1.5h68q10 0 10 367v98q0 147 -10 147h-62 q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 54.5 -1.5t65.5 -1.5q16 0 60 1.5t55 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-63q-11 0 -11 -158v-135q0 -319 10 -319h71q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5 t-66.5 -1.5t-61.5 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#xd0;" horiz-adv-x="758" d="M35 10q0 11 3 13t14 2h66q5 0 11 298q0 8 -7 8h-79q-2 0 -2.5 12t2.5 12h76q10 0 10 10q2 148 2 198q0 78 -2 78l-70 -2q-5 0 -7.5 0.5t-4 3t-1.5 8.5v7.5t1.5 5t4 3t7.5 0.5q1 0 11.5 -0.5t26.5 -0.5h31q41 0 114.5 6t89.5 6q166 0 273.5 -93t107.5 -250 q0 -105 -49.5 -183.5t-126.5 -116.5t-169 -39q-32 0 -97 2t-98 2q-16 0 -70 -2t-57 -2q-8 0 -9.5 2t-1.5 12zM213 86q0 -59 2 -60q6 -4 57 -4q69 0 124.5 14t90 34.5t60 53t37.5 59t19 63.5t8 56t1 46q0 73 -35.5 141.5t-106.5 115.5t-159 47q-67 0 -90 -6q-7 -2 -7 -146 q0 -22 -0.5 -67t-0.5 -68q0 -7 1.5 -8.5t9.5 -1.5h208q3 0 3 -12t-3 -12h-212q-7 0 -7 -8v-237z" />
+<glyph unicode="&#xd1;" horiz-adv-x="814" d="M316 748q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM40 15q0 9 3 10.5t15 1.5h44q3 0 5 2.5t3 7.5t1.5 11t1 15.5t0.5 18.5t0.5 22.5 t0.5 24.5l8 510h-68q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q6 0 53.5 -1.5t58.5 -1.5q13 0 33.5 1.5t21.5 1.5q10 0 20 -13l406 -499q16 -20 18 -20q4 0 4 28v42q0 49 -1 187t-1 189q0 56 -1 56h-94q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q11 0 50.5 -1.5t55.5 -1.5t43.5 1.5 t38.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-47q-4 0 -4 -59q0 -68 -3.5 -209.5l-6.5 -253t-3 -113.5q0 -22 -10 -22q-4 0 -18 16l-492 598q-14 18 -16 18q-3 0 -3 -20q-1 -25 -1 -122q0 -54 -0.5 -175.5t-0.5 -167.5q0 -102 5 -102h86q8 0 9.5 -2t1.5 -11 q0 -11 -2 -14t-9 -3q-11 0 -50.5 1.5t-55.5 1.5t-43.5 -1.5t-38.5 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#xd2;" horiz-adv-x="752" d="M266 822q0 25 30 25q18 0 34 -25l53 -85q2 -4 2 -6t-4 -2h-21l-8 6l-72 60q-14 11 -14 27zM45 318q0 158 99 257.5t241 99.5q145 0 233.5 -101t88.5 -250t-94.5 -242t-242.5 -93q-83 0 -155.5 36.5t-121 113.5t-48.5 179zM139 345q0 -140 63 -234t169 -94q79 0 136 48 t82.5 118t25.5 150t-25 149.5t-81 117t-134 47.5q-103 0 -169.5 -91t-66.5 -211z" />
+<glyph unicode="&#xd3;" horiz-adv-x="752" d="M365 731q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2zM45 318q0 158 99 257.5t241 99.5q145 0 233.5 -101t88.5 -250t-94.5 -242t-242.5 -93q-83 0 -155.5 36.5t-121 113.5t-48.5 179zM139 345q0 -140 63 -234t169 -94 q79 0 136 48t82.5 118t25.5 150t-25 149.5t-81 117t-134 47.5q-103 0 -169.5 -91t-66.5 -211z" />
+<glyph unicode="&#xd4;" horiz-adv-x="752" d="M264 731l4 6l79 89q12 13 16 13h24q4 0 16 -13l79 -89q4 -4 4 -6t-6 -2h-9q-1 0 -11 6l-81 45q-4 2 -8 0l-81 -45q-10 -6 -11 -6h-9q-6 0 -6 2zM45 318q0 158 99 257.5t241 99.5q145 0 233.5 -101t88.5 -250t-94.5 -242t-242.5 -93q-83 0 -155.5 36.5t-121 113.5 t-48.5 179zM139 345q0 -140 63 -234t169 -94q79 0 136 48t82.5 118t25.5 150t-25 149.5t-81 117t-134 47.5q-103 0 -169.5 -91t-66.5 -211z" />
+<glyph unicode="&#xd5;" horiz-adv-x="752" d="M270 748q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM45 318q0 158 99 257.5t241 99.5q145 0 233.5 -101t88.5 -250t-94.5 -242 t-242.5 -93q-83 0 -155.5 36.5t-121 113.5t-48.5 179zM139 345q0 -140 63 -234t169 -94q79 0 136 48t82.5 118t25.5 150t-25 149.5t-81 117t-134 47.5q-103 0 -169.5 -91t-66.5 -211z" />
+<glyph unicode="&#xd6;" horiz-adv-x="752" d="M244 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM404 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM45 318q0 158 99 257.5t241 99.5q145 0 233.5 -101t88.5 -250 t-94.5 -242t-242.5 -93q-83 0 -155.5 36.5t-121 113.5t-48.5 179zM139 345q0 -140 63 -234t169 -94q79 0 136 48t82.5 118t25.5 150t-25 149.5t-81 117t-134 47.5q-103 0 -169.5 -91t-66.5 -211z" />
+<glyph unicode="&#xd7;" horiz-adv-x="527" d="M88 358q0 5 10.5 15.5t17.5 10.5q6 0 14 -8l116 -115q12 -12 19 -12q6 0 11 5l125 125q6 6 12 6q5 0 15 -10t10 -17q0 -5 -9 -14l-121 -121q-8 -8 -8 -13q0 -4 8 -12l124 -124q6 -6 6 -12t-10.5 -16.5t-15.5 -10.5q-6 0 -13 7l-123 124q-7 7 -13 7q-5 0 -16 -11 l-120 -120q-7 -7 -12 -7t-15.5 10t-10.5 16q0 5 8 13l120 121q9 9 9 15t-7 13l-124 124q-7 7 -7 11z" />
+<glyph unicode="&#xd8;" horiz-adv-x="752" d="M45 318q0 158 99 257.5t241 99.5q78 0 142 -31q6 -3 8 -2.5t5 6.5l42 74q1 1 3 1q5 0 12 -5.5t6 -7.5l-44 -75q-4 -7 2 -11q69 -46 107.5 -125.5t38.5 -174.5q0 -149 -94.5 -242t-242.5 -93q-82 0 -152 36q-8 4 -12 -2l-44 -76q-2 -2 -3 -2q-4 0 -8.5 2.5t-8 5.5t-2.5 4 l46 79q3 5 -4 10q-63 43 -100 112t-37 160zM139 345q0 -154 73 -247l5 -5q1 0 4 5l286 494q3 4 3 6t-6 7q-54 42 -129 42q-103 0 -169.5 -91t-66.5 -211zM238 79q-3 -6 2 -11q57 -51 131 -51q79 0 136 48t82.5 118t25.5 150q0 153 -80 243q-5 5 -7 3q-1 -1 -2 -3z" />
+<glyph unicode="&#xd9;" horiz-adv-x="755" d="M275 822q0 25 30 25q18 0 34 -25l53 -85q2 -4 2 -6t-4 -2h-21l-8 6l-72 60q-14 11 -14 27zM40 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 59.5 1.5t54.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-65q-6 0 -10 -166.5t-4 -239.5q0 -97 48 -145.5 t153 -48.5q92 0 172 54q17 11 20 23q5 17 5 136v305q0 82 -7 82h-49q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 44.5 -1.5t55.5 -1.5t46 1.5t32 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-24q-3 0 -5 -17t-3 -51t-1.5 -69t-1.5 -88.5t-2 -91.5 q-1 -57 -3 -128t-3 -113t-1 -51q0 -32 -21 -32q-10 0 -30 36.5t-32 36.5q-10 0 -46 -20q-40 -23 -96.5 -40t-109.5 -17q-59 0 -100.5 14t-64 34t-35.5 54t-16 63.5t-3 72.5q0 11 0.5 157t0.5 191q0 59 -5 59h-37q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#xda;" horiz-adv-x="755" d="M374 731q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2zM40 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 59.5 1.5t54.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-65q-6 0 -10 -166.5t-4 -239.5 q0 -97 48 -145.5t153 -48.5q92 0 172 54q17 11 20 23q5 17 5 136v305q0 82 -7 82h-49q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 44.5 -1.5t55.5 -1.5t46 1.5t32 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-24q-3 0 -5 -17t-3 -51t-1.5 -69 t-1.5 -88.5t-2 -91.5q-1 -57 -3 -128t-3 -113t-1 -51q0 -32 -21 -32q-10 0 -30 36.5t-32 36.5q-10 0 -46 -20q-40 -23 -96.5 -40t-109.5 -17q-59 0 -100.5 14t-64 34t-35.5 54t-16 63.5t-3 72.5q0 11 0.5 157t0.5 191q0 59 -5 59h-37q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#xdb;" horiz-adv-x="755" d="M273 731l4 6l79 89q12 13 16 13h24q4 0 16 -13l79 -89q4 -4 4 -6t-6 -2h-9q-1 0 -11 6l-81 45q-4 2 -8 0l-81 -45q-10 -6 -11 -6h-9q-6 0 -6 2zM40 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 59.5 1.5t54.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5 t-15 -1.5h-65q-6 0 -10 -166.5t-4 -239.5q0 -97 48 -145.5t153 -48.5q92 0 172 54q17 11 20 23q5 17 5 136v305q0 82 -7 82h-49q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 44.5 -1.5t55.5 -1.5t46 1.5t32 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5 h-24q-3 0 -5 -17t-3 -51t-1.5 -69t-1.5 -88.5t-2 -91.5q-1 -57 -3 -128t-3 -113t-1 -51q0 -32 -21 -32q-10 0 -30 36.5t-32 36.5q-10 0 -46 -20q-40 -23 -96.5 -40t-109.5 -17q-59 0 -100.5 14t-64 34t-35.5 54t-16 63.5t-3 72.5q0 11 0.5 157t0.5 191q0 59 -5 59h-37 q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#xdc;" horiz-adv-x="755" d="M253 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM413 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM40 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5 q16 0 59.5 1.5t54.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-65q-6 0 -10 -166.5t-4 -239.5q0 -97 48 -145.5t153 -48.5q92 0 172 54q17 11 20 23q5 17 5 136v305q0 82 -7 82h-49q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 44.5 -1.5t55.5 -1.5 t46 1.5t32 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-24q-3 0 -5 -17t-3 -51t-1.5 -69t-1.5 -88.5t-2 -91.5q-1 -57 -3 -128t-3 -113t-1 -51q0 -32 -21 -32q-10 0 -30 36.5t-32 36.5q-10 0 -46 -20q-40 -23 -96.5 -40t-109.5 -17q-59 0 -100.5 14t-64 34 t-35.5 54t-16 63.5t-3 72.5q0 11 0.5 157t0.5 191q0 59 -5 59h-37q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#xdd;" horiz-adv-x="597" d="M318 731q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2zM10 654q0 7 2 10.5t5 4t11 0.5q6 0 46 -1.5t57 -1.5q16 0 60 1.5t55 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-59q-11 0 -12 -2.5t4 -12.5q9 -23 37 -76.5 l62.5 -117t42.5 -79.5q9 -17 11 -17q3 0 11 14l27 52l38 72.5l35.5 69.5t29 62t10.5 32q0 3 -2 3h-56q-13 0 -15.5 1.5t-2.5 10.5q0 13 2 15.5t12 2.5q11 0 36.5 -1.5t41.5 -1.5q17 0 43.5 1.5t32.5 1.5q11 0 13.5 -2t2.5 -13q0 -6 -0.5 -9t-3 -4.5t-5 -1.5h-7.5h-36 q-2 0 -37.5 -62l-81.5 -142l-65 -111q-3 -5 -3 -11q0 -286 10 -286h71q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-58.5 -1.5t-53.5 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h52q10 0 10 244q0 11 -7 23q-189 345 -199 345h-29 q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#xde;" horiz-adv-x="591" d="M30 15q0 9 3 10.5t15 1.5h68q10 0 10 367v98q0 147 -10 147h-62q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 54.5 -1.5t65.5 -1.5q16 0 60 1.5t55 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-63q-9 0 -11 -102q0 -13 2 -15t15 -1q14 0 42.5 1.5 t35.5 1.5q108 0 174 -49.5t66 -146.5q0 -92 -64 -136.5t-175 -44.5q-5 0 -77 3h-4h-7t-4 -1.5t-2.5 -4t-0.5 -7.5q2 -110 9 -110h71q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-66.5 -1.5t-61.5 -1.5q-10 0 -12 2.5t-2 15.5zM211 188q0 -15 14 -17 q7 -2 24 -2q94 0 152.5 41.5t58.5 132.5q0 71 -59.5 113t-151.5 42q-24 0 -35 -1q-3 0 -3 -27v-282z" />
+<glyph unicode="&#xdf;" horiz-adv-x="482" d="M30 12q0 13 12 13h38q6 0 6 178q0 70 -1 174l-1 104q0 86 42 141.5t130 55.5q68 0 106.5 -37t38.5 -102q0 -64 -34.5 -103.5t-76.5 -55.5q-6 -3 -12.5 -4.5t-9.5 -1.5l-2 -1l2 -1q2 0 7 -1t11 -3q18 -5 36 -12.5t43 -24t43 -37.5t31 -55t13 -75q0 -72 -38 -123t-101 -51 q-46 0 -76 21t-30 57q0 18 7.5 26.5t27.5 14.5q16 5 18 -8q0 -4 1 -18.5l1.5 -21.5t4 -19t9 -18t15.5 -11t24 -5q31 0 47 44t16 102q0 54 -12 94t-26.5 60t-40.5 33t-40 16t-39 6q-7 1 -7 10.5t7 9.5q46 2 82 41.5t36 117.5q0 53 -20.5 83.5t-76.5 30.5q-23 0 -40 -12 t-25 -27.5t-12.5 -41t-5.5 -42t-1 -41.5v-475q0 -18 -8 -18q-2 0 -12.5 0.5t-15.5 0.5q-12 0 -37 -1t-41 -1q-9 0 -11 2.5t-2 11.5z" />
+<glyph unicode="&#xe0;" horiz-adv-x="419" d="M99 582q0 13 9.5 21.5t26.5 8.5q21 0 30 -25l49 -130q2 -4 2 -6t-4 -2h-16q-4 0 -8 6l-82 107q-7 10 -7 20zM35 71q0 42 37 74t83.5 48t103.5 26q8 1 8 16q0 27 -0.5 42t-5 36.5t-13.5 32.5t-26 19.5t-42 8.5q-18 0 -31 -5q-20 -9 -25.5 -22t-6.5 -45q0 -16 -7 -21 q-11 -8 -30.5 -18t-22.5 -10q-8 0 -8 15q0 57 49 94t103 37q72 0 101.5 -33.5t29.5 -97.5q0 -29 -3 -113t-3 -91q0 -30 22 -30q2 0 19.5 12t18.5 12q3 0 8 -5.5t5 -9.5q0 -5 -65 -49q-15 -11 -26 -11q-10 0 -17.5 6t-11.5 14t-6.5 16t-3.5 14l-1 6q-1 0 -4 -2t-8 -5t-8 -5 q-68 -41 -115 -41q-46 0 -72 23t-26 62zM105 99q0 -26 17.5 -47.5t47.5 -21.5q20 0 44 6t38.5 12.5t14.5 9.5v134q0 11 -6 11q-14 0 -62 -15q-94 -30 -94 -89z" />
+<glyph unicode="&#xe1;" horiz-adv-x="419" d="M186 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM35 71q0 42 37 74t83.5 48t103.5 26q8 1 8 16q0 27 -0.5 42t-5 36.5t-13.5 32.5t-26 19.5t-42 8.5q-18 0 -31 -5q-20 -9 -25.5 -22t-6.5 -45 q0 -16 -7 -21q-11 -8 -30.5 -18t-22.5 -10q-8 0 -8 15q0 57 49 94t103 37q72 0 101.5 -33.5t29.5 -97.5q0 -29 -3 -113t-3 -91q0 -30 22 -30q2 0 19.5 12t18.5 12q3 0 8 -5.5t5 -9.5q0 -5 -65 -49q-15 -11 -26 -11q-10 0 -17.5 6t-11.5 14t-6.5 16t-3.5 14l-1 6q-1 0 -4 -2 t-8 -5t-8 -5q-68 -41 -115 -41q-46 0 -72 23t-26 62zM105 99q0 -26 17.5 -47.5t47.5 -21.5q20 0 44 6t38.5 12.5t14.5 9.5v134q0 11 -6 11q-14 0 -62 -15q-94 -30 -94 -89z" />
+<glyph unicode="&#xe2;" horiz-adv-x="419" d="M91 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM35 71q0 42 37 74t83.5 48t103.5 26q8 1 8 16q0 27 -0.5 42t-5 36.5t-13.5 32.5t-26 19.5 t-42 8.5q-18 0 -31 -5q-20 -9 -25.5 -22t-6.5 -45q0 -16 -7 -21q-11 -8 -30.5 -18t-22.5 -10q-8 0 -8 15q0 57 49 94t103 37q72 0 101.5 -33.5t29.5 -97.5q0 -29 -3 -113t-3 -91q0 -30 22 -30q2 0 19.5 12t18.5 12q3 0 8 -5.5t5 -9.5q0 -5 -65 -49q-15 -11 -26 -11 q-10 0 -17.5 6t-11.5 14t-6.5 16t-3.5 14l-1 6q-1 0 -4 -2t-8 -5t-8 -5q-68 -41 -115 -41q-46 0 -72 23t-26 62zM105 99q0 -26 17.5 -47.5t47.5 -21.5q20 0 44 6t38.5 12.5t14.5 9.5v134q0 11 -6 11q-14 0 -62 -15q-94 -30 -94 -89z" />
+<glyph unicode="&#xe3;" horiz-adv-x="419" d="M96 498q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM35 71q0 42 37 74t83.5 48t103.5 26q8 1 8 16q0 27 -0.5 42t-5 36.5t-13.5 32.5 t-26 19.5t-42 8.5q-18 0 -31 -5q-20 -9 -25.5 -22t-6.5 -45q0 -16 -7 -21q-11 -8 -30.5 -18t-22.5 -10q-8 0 -8 15q0 57 49 94t103 37q72 0 101.5 -33.5t29.5 -97.5q0 -29 -3 -113t-3 -91q0 -30 22 -30q2 0 19.5 12t18.5 12q3 0 8 -5.5t5 -9.5q0 -5 -65 -49q-15 -11 -26 -11 q-10 0 -17.5 6t-11.5 14t-6.5 16t-3.5 14l-1 6q-1 0 -4 -2t-8 -5t-8 -5q-68 -41 -115 -41q-46 0 -72 23t-26 62zM105 99q0 -26 17.5 -47.5t47.5 -21.5q20 0 44 6t38.5 12.5t14.5 9.5v134q0 11 -6 11q-14 0 -62 -15q-94 -30 -94 -89z" />
+<glyph unicode="&#xe4;" horiz-adv-x="419" d="M70 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM230 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM35 71q0 42 37 74t83.5 48t103.5 26q8 1 8 16q0 27 -0.5 42 t-5 36.5t-13.5 32.5t-26 19.5t-42 8.5q-18 0 -31 -5q-20 -9 -25.5 -22t-6.5 -45q0 -16 -7 -21q-11 -8 -30.5 -18t-22.5 -10q-8 0 -8 15q0 57 49 94t103 37q72 0 101.5 -33.5t29.5 -97.5q0 -29 -3 -113t-3 -91q0 -30 22 -30q2 0 19.5 12t18.5 12q3 0 8 -5.5t5 -9.5 q0 -5 -65 -49q-15 -11 -26 -11q-10 0 -17.5 6t-11.5 14t-6.5 16t-3.5 14l-1 6q-1 0 -4 -2t-8 -5t-8 -5q-68 -41 -115 -41q-46 0 -72 23t-26 62zM105 99q0 -26 17.5 -47.5t47.5 -21.5q20 0 44 6t38.5 12.5t14.5 9.5v134q0 11 -6 11q-14 0 -62 -15q-94 -30 -94 -89z" />
+<glyph unicode="&#xe5;" horiz-adv-x="419" d="M130 535q0 29 21 50t50 21t50 -21t21 -50t-21 -50t-50 -21t-50 21t-21 50zM158 535q0 -18 12.5 -30.5t30.5 -12.5t30.5 12.5t12.5 30.5t-12.5 30.5t-30.5 12.5t-30.5 -12.5t-12.5 -30.5zM35 71q0 42 37 74t83.5 48t103.5 26q8 1 8 16q0 27 -0.5 42t-5 36.5t-13.5 32.5 t-26 19.5t-42 8.5q-18 0 -31 -5q-20 -9 -25.5 -22t-6.5 -45q0 -16 -7 -21q-11 -8 -30.5 -18t-22.5 -10q-8 0 -8 15q0 57 49 94t103 37q72 0 101.5 -33.5t29.5 -97.5q0 -29 -3 -113t-3 -91q0 -30 22 -30q2 0 19.5 12t18.5 12q3 0 8 -5.5t5 -9.5q0 -5 -65 -49q-15 -11 -26 -11 q-10 0 -17.5 6t-11.5 14t-6.5 16t-3.5 14l-1 6q-1 0 -4 -2t-8 -5t-8 -5q-68 -41 -115 -41q-46 0 -72 23t-26 62zM105 99q0 -26 17.5 -47.5t47.5 -21.5q20 0 44 6t38.5 12.5t14.5 9.5v134q0 11 -6 11q-14 0 -62 -15q-94 -30 -94 -89z" />
+<glyph unicode="&#xe6;" horiz-adv-x="649" d="M35 70q0 42 37 74t83.5 48t103.5 26q8 1 8 16q0 27 -0.5 42t-5 36.5t-13.5 32.5t-26 19.5t-42 8.5q-18 0 -31 -5q-20 -9 -25.5 -22t-6.5 -45q0 -16 -7 -21q-11 -8 -30.5 -18t-22.5 -10q-8 0 -8 15q0 57 49 94t103 37q80 0 111 -45q7 -11 10 -9q1 0 9 7q55 45 128 45 q71 0 110 -46t39 -113q0 -5 -20 -8.5t-34 -3.5q-6 0 -113 2.5t-111 2.5q-5 0 -5 -36q0 -76 44.5 -120.5t104.5 -44.5q22 0 43.5 6.5t36 16.5t25.5 19.5t17 16.5l7 6q2 0 9 -6.5t7 -8.5q0 -5 -21 -26.5t-64 -44.5t-88 -23q-90 0 -141 54q-7 6 -8.5 6t-10.5 -6 q-87 -54 -153 -54q-46 0 -72 23t-26 62zM105 98q0 -26 17.5 -47.5t47.5 -21.5q39 0 79 17q12 5 15 8.5t3 11.5v125q0 11 -6 11q-14 0 -62 -15q-94 -30 -94 -89zM330 255q0 -8 12 -8q57 0 157 4q40 1 40 4q0 65 -29.5 92t-62.5 27q-46 0 -80 -38.5t-37 -80.5z" />
+<glyph unicode="&#xe7;" horiz-adv-x="412" d="M35 177q0 104 63 163t143 59q50 0 91.5 -29t41.5 -67q0 -13 -10 -20q-17 -13 -30 -13t-17 11q-2 5 -8.5 25.5t-10 27t-12 18.5t-21 16t-30.5 4q-60 0 -97.5 -53t-37.5 -117q0 -68 40.5 -118t113.5 -50q30 0 58.5 7.5t44.5 15t18 7.5q7 0 7 -8q0 -5 -16.5 -19t-52.5 -29.5 t-77 -17.5l-20 -55q-2 -9 0 -9l6 2q5 1 13.5 2.5t16.5 1.5q40 0 62.5 -21t22.5 -47q0 -35 -29.5 -63.5t-76.5 -28.5q-23 0 -43.5 6.5t-30 12.5t-9.5 9q0 11 8 11l8 -3q9 -4 23 -8t29 -4q34 0 50 13.5t16 42.5q0 45 -55 45q-8 0 -16.5 -2.5t-14 -4.5t-6.5 -2q-8 0 -8 5 q0 1 6.5 17.5l16 42t14.5 37.5q-85 1 -134.5 52t-49.5 135z" />
+<glyph unicode="&#xe8;" horiz-adv-x="424" d="M126 582q0 13 9.5 21.5t26.5 8.5q21 0 30 -25l49 -130q2 -4 2 -6t-4 -2h-16q-3 0 -8 6l-82 107q-7 10 -7 20zM30 182q0 91 57 152.5t147 61.5q71 0 110 -46t39 -113q0 -5 -20.5 -8.5t-33.5 -3.5q-6 0 -113 2.5t-111 2.5q-5 0 -5 -36q0 -76 44.5 -120.5t104.5 -44.5 q22 0 43.5 6.5t36 16.5t25.5 19.5t18 16.5l6 6q2 0 9 -6.5t7 -8.5q0 -5 -21 -26.5t-64 -44.5t-88 -23q-91 0 -141 53.5t-50 143.5zM105 255q0 -8 12 -8q57 0 157 4q40 1 40 4q0 65 -29.5 92t-62.5 27q-46 0 -80 -38.5t-37 -80.5z" />
+<glyph unicode="&#xe9;" horiz-adv-x="424" d="M213 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM30 182q0 91 57 152.5t147 61.5q71 0 110 -46t39 -113q0 -5 -20.5 -8.5t-33.5 -3.5q-6 0 -113 2.5t-111 2.5q-5 0 -5 -36q0 -76 44.5 -120.5t104.5 -44.5 q22 0 43.5 6.5t36 16.5t25.5 19.5t18 16.5l6 6q2 0 9 -6.5t7 -8.5q0 -5 -21 -26.5t-64 -44.5t-88 -23q-91 0 -141 53.5t-50 143.5zM105 255q0 -8 12 -8q57 0 157 4q40 1 40 4q0 65 -29.5 92t-62.5 27q-46 0 -80 -38.5t-37 -80.5z" />
+<glyph unicode="&#xea;" horiz-adv-x="424" d="M118 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12q-1 0 -8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM30 182q0 91 57 152.5t147 61.5q71 0 110 -46t39 -113q0 -5 -20.5 -8.5t-33.5 -3.5 q-6 0 -113 2.5t-111 2.5q-5 0 -5 -36q0 -76 44.5 -120.5t104.5 -44.5q22 0 43.5 6.5t36 16.5t25.5 19.5t18 16.5l6 6q2 0 9 -6.5t7 -8.5q0 -5 -21 -26.5t-64 -44.5t-88 -23q-91 0 -141 53.5t-50 143.5zM105 255q0 -8 12 -8q57 0 157 4q40 1 40 4q0 65 -29.5 92t-62.5 27 q-46 0 -80 -38.5t-37 -80.5z" />
+<glyph unicode="&#xeb;" horiz-adv-x="424" d="M97 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM257 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM30 182q0 91 57 152.5t147 61.5q71 0 110 -46t39 -113 q0 -5 -20.5 -8.5t-33.5 -3.5q-6 0 -113 2.5t-111 2.5q-5 0 -5 -36q0 -76 44.5 -120.5t104.5 -44.5q22 0 43.5 6.5t36 16.5t25.5 19.5t18 16.5l6 6q2 0 9 -6.5t7 -8.5q0 -5 -21 -26.5t-64 -44.5t-88 -23q-91 0 -141 53.5t-50 143.5zM105 255q0 -8 12 -8q57 0 157 4q40 1 40 4 q0 65 -29.5 92t-62.5 27q-46 0 -80 -38.5t-37 -80.5z" />
+<glyph unicode="&#xec;" horiz-adv-x="249" d="M13 582q0 13 9.5 21.5t26.5 8.5q21 0 30 -25l49 -130q2 -4 2 -6t-4 -2h-16q-4 0 -8 6l-82 107q-7 10 -7 20zM25 357q0 5 4 13q3 6 4.5 6.5t10.5 1.5q95 5 113 5q7 0 7 -6v-170q0 -113 3 -170q0 -5 0.5 -7t2.5 -3.5t7 -1.5h36q11 0 11 -13q0 -8 -1.5 -11t-9.5 -3 q-9 0 -40 1t-44 1t-46.5 -1t-42.5 -1q-8 0 -9.5 2.5t-1.5 11.5q0 7 2.5 10t11.5 3h41q8 0 9.5 2t1.5 10q1 29 1 88q0 117 -4 214q-1 11 -3 13.5t-10 2.5q-1 0 -24.5 -1t-25.5 -1q-4 0 -4 4z" />
+<glyph unicode="&#xed;" horiz-adv-x="249" d="M100 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM25 357q0 5 4 13q3 6 4.5 6.5t10.5 1.5q95 5 113 5q7 0 7 -6v-170q0 -113 3 -170q0 -5 0.5 -7t2.5 -3.5t7 -1.5h36q11 0 11 -13q0 -8 -1.5 -11t-9.5 -3 q-9 0 -40 1t-44 1t-46.5 -1t-42.5 -1q-8 0 -9.5 2.5t-1.5 11.5q0 7 2.5 10t11.5 3h41q8 0 9.5 2t1.5 10q1 29 1 88q0 117 -4 214q-1 11 -3 13.5t-10 2.5q-1 0 -24.5 -1t-25.5 -1q-4 0 -4 4z" />
+<glyph unicode="&#xee;" horiz-adv-x="249" d="M5 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM25 357q0 5 4 13q3 6 4.5 6.5t10.5 1.5q95 5 113 5q7 0 7 -6v-170q0 -113 3 -170q0 -5 0.5 -7 t2.5 -3.5t7 -1.5h36q11 0 11 -13q0 -8 -1.5 -11t-9.5 -3q-9 0 -40 1t-44 1t-46.5 -1t-42.5 -1q-8 0 -9.5 2.5t-1.5 11.5q0 7 2.5 10t11.5 3h41q8 0 9.5 2t1.5 10q1 29 1 88q0 117 -4 214q-1 11 -3 13.5t-10 2.5q-1 0 -24.5 -1t-25.5 -1q-4 0 -4 4z" />
+<glyph unicode="&#xef;" horiz-adv-x="249" d="M-6 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM134 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 357q0 5 4 13q3 6 4.5 6.5t10.5 1.5q95 5 113 5q7 0 7 -6v-170 q0 -113 3 -170q0 -5 0.5 -7t2.5 -3.5t7 -1.5h36q11 0 11 -13q0 -8 -1.5 -11t-9.5 -3q-9 0 -40 1t-44 1t-46.5 -1t-42.5 -1q-8 0 -9.5 2.5t-1.5 11.5q0 7 2.5 10t11.5 3h41q8 0 9.5 2t1.5 10q1 29 1 88q0 117 -4 214q-1 11 -3 13.5t-10 2.5q-1 0 -24.5 -1t-25.5 -1q-4 0 -4 4 z" />
+<glyph unicode="&#xf0;" horiz-adv-x="438" d="M30 183q0 95 52.5 153.5t135.5 58.5q47 0 73 -17q16 -10 17 -10q1 1 0.5 5.5t-3 11l-4.5 11.5q-33 74 -68 123q-2 3 -9 2l-114 -30q-1 0 -4 4t-5.5 10t-2.5 8l25 7q25 7 52.5 14l31.5 8q8 1 3 6q-57 69 -106 107q-9 5 -8 6q0 2 8 2h44q9 0 39 -28t68 -74q4 -5 11 -3 q94 26 98 26q2 0 8 -8t6 -12q0 -1 -44 -12.5l-52 -13.5q-3 -1 -4 -4t1 -4q52 -70 90.5 -160.5t38.5 -172.5q0 -93 -51.5 -152.5t-136.5 -59.5q-81 0 -135.5 57t-54.5 141zM103 192q0 -73 31 -127t91 -54q116 0 116 182q0 74 -28 125.5t-89 51.5q-58 0 -89.5 -49t-31.5 -129z " />
+<glyph unicode="&#xf1;" horiz-adv-x="514" d="M167 498q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM25 350q0 4 5 16q2 6 3.5 6.5t11.5 1.5q5 0 47 3t58 4q9 1 11 -0.5t2 -7.5v-3v-42 q0 -6 13 3l2 2l18 12t23 14.5t23 11.5t31 10t33 3q42 0 69.5 -13t41 -39.5t18 -55t4.5 -69.5q0 -33 -2.5 -100t-2.5 -70q0 -8 1.5 -10t9.5 -2h30q9 0 11.5 -2t2.5 -11q0 -6 -0.5 -8t-3 -4t-8.5 -2q-8 0 -33.5 1t-41.5 1q-12 0 -40.5 -1t-44.5 -1q-10 0 -12 2t-2 11t2.5 11.5 t10.5 2.5h37q7 0 8.5 1.5t2.5 9.5q4 48 4 176q0 130 -96 130q-33 0 -89 -28q-18 -9 -18 -23q0 -41 -0.5 -123.5t-0.5 -123.5q0 -9 0.5 -12.5t3 -5t9.5 -1.5h36q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -36.5 1t-44.5 1q-12 0 -42 -1t-46 -1q-9 0 -11 2.5 t-2 11.5q0 13 12 13h39q6 0 7.5 2.5t2.5 11.5v4q5 98 5 194q0 68 -2 99q-1 11 -2.5 12.5t-9.5 1.5q-1 0 -27 -2t-28 -2q-3 0 -3 4z" />
+<glyph unicode="&#xf2;" horiz-adv-x="446" d="M128 582q0 13 9.5 21.5t26.5 8.5q21 0 30 -25l49 -130q2 -4 2 -6t-4 -2h-16q-3 0 -8 6l-82 107q-7 10 -7 20zM30 183q0 90 57 151.5t148 61.5q80 0 130.5 -57.5t50.5 -141.5q0 -94 -53 -153t-144 -59q-80 0 -134.5 58t-54.5 140zM101 169q0 -62 31.5 -110t86.5 -48 q36 0 61.5 17t38.5 46.5t18.5 61t5.5 68.5q0 66 -31 116t-89 50q-122 0 -122 -201z" />
+<glyph unicode="&#xf3;" horiz-adv-x="446" d="M215 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM30 183q0 90 57 151.5t148 61.5q80 0 130.5 -57.5t50.5 -141.5q0 -94 -53 -153t-144 -59q-80 0 -134.5 58t-54.5 140zM101 169q0 -62 31.5 -110t86.5 -48 q36 0 61.5 17t38.5 46.5t18.5 61t5.5 68.5q0 66 -31 116t-89 50q-122 0 -122 -201z" />
+<glyph unicode="&#xf4;" horiz-adv-x="446" d="M120 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12q-1 0 -8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM30 183q0 90 57 151.5t148 61.5q80 0 130.5 -57.5t50.5 -141.5q0 -94 -53 -153t-144 -59 q-80 0 -134.5 58t-54.5 140zM101 169q0 -62 31.5 -110t86.5 -48q36 0 61.5 17t38.5 46.5t18.5 61t5.5 68.5q0 66 -31 116t-89 50q-122 0 -122 -201z" />
+<glyph unicode="&#xf5;" horiz-adv-x="446" d="M125 498q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM30 183q0 90 57 151.5t148 61.5q80 0 130.5 -57.5t50.5 -141.5q0 -94 -53 -153 t-144 -59q-80 0 -134.5 58t-54.5 140zM101 169q0 -62 31.5 -110t86.5 -48q36 0 61.5 17t38.5 46.5t18.5 61t5.5 68.5q0 66 -31 116t-89 50q-122 0 -122 -201z" />
+<glyph unicode="&#xf6;" horiz-adv-x="446" d="M99 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM259 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM30 183q0 90 57 151.5t148 61.5q80 0 130.5 -57.5t50.5 -141.5 q0 -94 -53 -153t-144 -59q-80 0 -134.5 58t-54.5 140zM101 169q0 -62 31.5 -110t86.5 -48q36 0 61.5 17t38.5 46.5t18.5 61t5.5 68.5q0 66 -31 116t-89 50q-122 0 -122 -201z" />
+<glyph unicode="&#xf7;" horiz-adv-x="527" d="M31 212q0 8 0.5 11.5t4.5 6t13 2.5h431q8 0 11.5 -2.5t4 -6t0.5 -12.5q0 -14 -3 -18.5t-18 -4.5h-427q-9 0 -12.5 3t-4 6.5t-0.5 14.5zM212 320q0 16 12.5 28.5t29.5 12.5q16 0 28 -11.5t12 -28.5t-12 -29t-29 -12t-29 12t-12 28zM217 101q0 16 12 28t29 12 q16 0 28.5 -12.5t12.5 -28.5t-11.5 -28t-28.5 -12t-29.5 12t-12.5 29z" />
+<glyph unicode="&#xf8;" horiz-adv-x="446" d="M30 183q0 90 57 151.5t148 61.5q35 0 67 -13q8 -3 10 0q1 1 3 4l38 65q1 2 4 2q5 0 12 -5t6 -7l-39 -67q-4 -7 0 -10q38 -26 59 -70.5t21 -97.5q0 -94 -53 -153t-144 -59q-47 0 -88 22q-5 3 -8 -2l-38 -66q-2 -2 -3 -2q-4 0 -11 5t-7 7l1 3l38 66q3 5 -4 11 q-69 58 -69 154zM101 169q0 -54 25 -99q3 -7 8 2l154 267q4 6 -4 11q-28 20 -61 20q-122 0 -122 -201zM146 44q0 -1 3 -4q29 -29 70 -29q36 0 61.5 17t38.5 46.5t18.5 61t5.5 68.5q0 69 -31 116q-1 1 -2 3q0 1 -1 1l-4 -4l-156 -270q-3 -4 -3 -6z" />
+<glyph unicode="&#xf9;" horiz-adv-x="510" d="M138 582q0 13 9.5 21.5t26.5 8.5q21 0 30 -25l49 -130q2 -4 2 -6t-4 -2h-16q-3 0 -8 6l-82 107q-7 10 -7 20zM15 360q0 4 3 11q2 6 4 7t11 2q88 4 110 4q7 0 7 -6v-272q0 -67 111 -67q91 0 91 16v118q0 186 -8 186q-1 0 -25.5 -1t-26.5 -1q-4 0 -4 4q2 17 6 19q2 1 7 1 q95 5 113 5q7 0 7 -6q-1 -239 -1 -301q0 -37 3.5 -48t15.5 -11q2 0 21 3t20 3q5 0 5 -10t-2 -12t-12 -4q-102 -15 -104 -15q-10 0 -11 13q-3 38 -4 38l-26 -12q-25 -12 -64.5 -23.5t-72.5 -11.5q-34 0 -57 11t-33.5 31t-14.5 41t-4 50v157q0 77 -12 77q-1 0 -24 -0.5 t-25 -0.5q-4 0 -4 5z" />
+<glyph unicode="&#xfa;" horiz-adv-x="510" d="M225 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM15 360q0 4 3 11q2 6 4 7t11 2q88 4 110 4q7 0 7 -6v-272q0 -67 111 -67q91 0 91 16v118q0 186 -8 186q-1 0 -25.5 -1t-26.5 -1q-4 0 -4 4q2 17 6 19 q2 1 7 1q95 5 113 5q7 0 7 -6q-1 -239 -1 -301q0 -37 3.5 -48t15.5 -11q2 0 21 3t20 3q5 0 5 -10t-2 -12t-12 -4q-102 -15 -104 -15q-10 0 -11 13q-3 38 -4 38l-26 -12q-25 -12 -64.5 -23.5t-72.5 -11.5q-34 0 -57 11t-33.5 31t-14.5 41t-4 50v157q0 77 -12 77 q-1 0 -24 -0.5t-25 -0.5q-4 0 -4 5z" />
+<glyph unicode="&#xfb;" horiz-adv-x="510" d="M130 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12q-1 0 -8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM15 360q0 4 3 11q2 6 4 7t11 2q88 4 110 4q7 0 7 -6v-272q0 -67 111 -67q91 0 91 16v118 q0 186 -8 186q-1 0 -25.5 -1t-26.5 -1q-4 0 -4 4q2 17 6 19q2 1 7 1q95 5 113 5q7 0 7 -6q-1 -239 -1 -301q0 -37 3.5 -48t15.5 -11q2 0 21 3t20 3q5 0 5 -10t-2 -12t-12 -4q-102 -15 -104 -15q-10 0 -11 13q-3 38 -4 38l-26 -12q-25 -12 -64.5 -23.5t-72.5 -11.5 q-34 0 -57 11t-33.5 31t-14.5 41t-4 50v157q0 77 -12 77q-1 0 -24 -0.5t-25 -0.5q-4 0 -4 5z" />
+<glyph unicode="&#xfc;" horiz-adv-x="510" d="M109 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM269 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM15 360q0 4 3 11q2 6 4 7t11 2q88 4 110 4q7 0 7 -6v-272 q0 -67 111 -67q91 0 91 16v118q0 186 -8 186q-1 0 -25.5 -1t-26.5 -1q-4 0 -4 4q2 17 6 19q2 1 7 1q95 5 113 5q7 0 7 -6q-1 -239 -1 -301q0 -37 3.5 -48t15.5 -11q2 0 21 3t20 3q5 0 5 -10t-2 -12t-12 -4q-102 -15 -104 -15q-10 0 -11 13q-3 38 -4 38l-26 -12 q-25 -12 -64.5 -23.5t-72.5 -11.5q-34 0 -57 11t-33.5 31t-14.5 41t-4 50v157q0 77 -12 77q-1 0 -24 -0.5t-25 -0.5q-4 0 -4 5z" />
+<glyph unicode="&#xfd;" horiz-adv-x="467" d="M236 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM25 368q0 6 0.5 8t3.5 4t9 2q8 0 33 -1t41 -1q13 0 46.5 1t41.5 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-19q-26 0 -26 -10q0 -12 31 -97.5t58 -151.5 q16 -40 19 -40t17 40q82 231 82 252q0 7 -31 7h-23q-8 0 -10.5 3t-2.5 10q0 14 14 14q9 0 31.5 -1t32.5 -1q12 0 30 1t25 1q13 0 13 -14q0 -13 -12 -13h-14q-10 0 -13 -10q-38 -105 -133 -342q-1 -3 -7 -19.5t-15.5 -46t-17.5 -51.5q-2 -4 -5.5 -15.5t-5 -14.5t-4.5 -11.5 t-5 -12t-5.5 -11t-7 -12.5t-8 -12.5t-10.5 -14.5t-13 -16q-17 -22 -26 -27q-6 -4 -15 -8q-54 -26 -62 -26q-18 0 -18 20q0 15 19 42q7 11 28 18l22.5 7.5t29.5 11t22 13.5t16 19q44 109 44 121q0 8 -28 77l-72.5 174l-55.5 132q-4 11 -7 13t-14 2h-11q-8 0 -10.5 3t-2.5 10z " />
+<glyph unicode="&#xfe;" horiz-adv-x="498" d="M20 645q0 2 2 16q1 6 2 6.5t8 1.5q120 9 123 9q5 0 6 -2.5t1 -12.5q1 -130 1 -321q0 -10 2 -10q1 0 19 14q50 37 108 37q83 0 127 -53t44 -136q0 -81 -57.5 -142t-151.5 -61q-31 0 -66 11l-7.5 2.5t-6.5 2.5t-5 1t-4 -1.5t-1 -4.5l3 -189q2 -67 6 -67h70q8 0 10.5 -3 t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -49 1t-57 1q-12 0 -46.5 -1t-50.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h55q3 0 3 160l-1 204q0 417 -9 517q-7 18 -11 19q-3 0 -24.5 -2t-23.5 -2q-8 0 -8 3zM164 52q0 -17 30 -29.5t57 -12.5q66 0 103 55t37 122q0 72 -37 116.5 t-93 44.5q-36 0 -64 -13q-33 -17 -33 -33v-250z" />
+<glyph unicode="&#xff;" horiz-adv-x="467" d="M120 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM280 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 368q0 6 0.5 8t3.5 4t9 2q8 0 33 -1t41 -1q13 0 46.5 1 t41.5 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-19q-26 0 -26 -10q0 -12 31 -97.5t58 -151.5q16 -40 19 -40t17 40q82 231 82 252q0 7 -31 7h-23q-8 0 -10.5 3t-2.5 10q0 14 14 14q9 0 31.5 -1t32.5 -1q12 0 30 1t25 1q13 0 13 -14q0 -13 -12 -13h-14q-10 0 -13 -10 q-38 -105 -133 -342q-1 -3 -7 -19.5t-15.5 -46t-17.5 -51.5q-2 -4 -5.5 -15.5t-5 -14.5t-4.5 -11.5t-5 -12t-5.5 -11t-7 -12.5t-8 -12.5t-10.5 -14.5t-13 -16q-17 -22 -26 -27q-6 -4 -15 -8q-54 -26 -62 -26q-18 0 -18 20q0 15 19 42q7 11 28 18l22.5 7.5t29.5 11t22 13.5 t16 19q44 109 44 121q0 8 -28 77l-72.5 174l-55.5 132q-4 11 -7 13t-14 2h-11q-8 0 -10.5 3t-2.5 10z" />
+<glyph unicode="&#x100;" horiz-adv-x="698" d="M269 788v23q0 6 1.5 7t7.5 1h187q5 0 6.5 -1t1.5 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM30 15q0 9 3 10.5t15 1.5h28q3 0 17.5 30.5t34.5 77.5l39 92l35.5 84.5l19.5 46.5l106 246q4 9 17 25.5t19 30.5q12 27 19 27t9 -7l120 -337l19 -53l21.5 -60.5l21 -58.5 l21 -56.5t17.5 -44t15 -32.5t8 -11h32q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5t-50.5 1.5q-16 0 -58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h54q1 0 1 3q0 30 -70 226q-6 17 -10 18q-3 1 -10 1h-201q-5 0 -8 -0.5t-5 -1t-4 -3t-2 -3t-2 -5 t-2 -5.5q-81 -206 -81 -227q0 -3 1 -3h78q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -43.5 1.5t-48.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5zM231 305q0 -6 16 -6h179q13 0 13 5q0 1 -4 13l-83 243q-6 19 -8 19t-10 -19l-98 -240q-5 -12 -5 -15z" />
+<glyph unicode="&#x101;" horiz-adv-x="419" d="M99 518v23q0 6 1.5 7t7.5 1h187q5 0 6.5 -1t1.5 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM35 71q0 42 37 74t83.5 48t103.5 26q8 1 8 16q0 27 -0.5 42t-5 36.5t-13.5 32.5t-26 19.5t-42 8.5q-18 0 -31 -5q-20 -9 -25.5 -22t-6.5 -45q0 -16 -7 -21q-11 -8 -30.5 -18 t-22.5 -10q-8 0 -8 15q0 57 49 94t103 37q72 0 101.5 -33.5t29.5 -97.5q0 -29 -3 -113t-3 -91q0 -30 22 -30q2 0 19.5 12t18.5 12q3 0 8 -5.5t5 -9.5q0 -5 -65 -49q-15 -11 -26 -11q-10 0 -17.5 6t-11.5 14t-6.5 16t-3.5 14l-1 6q-1 0 -4 -2t-8 -5t-8 -5q-68 -41 -115 -41 q-46 0 -72 23t-26 62zM105 99q0 -26 17.5 -47.5t47.5 -21.5q20 0 44 6t38.5 12.5t14.5 9.5v134q0 11 -6 11q-14 0 -62 -15q-94 -30 -94 -89z" />
+<glyph unicode="&#x102;" horiz-adv-x="698" d="M268 832q0 6 1 6h17q1 0 2 -6t4.5 -15t10.5 -17.5t24.5 -14.5t43.5 -6t43.5 6t24.5 14.5t10.5 17.5t4.5 15t2 6h17q1 0 1 -6q0 -45 -26 -74t-77 -29t-77 29t-26 74zM30 15q0 9 3 10.5t15 1.5h28q3 0 17.5 30.5t34.5 77.5l39 92l35.5 84.5l19.5 46.5l106 246q4 9 17 25.5 t19 30.5q12 27 19 27t9 -7l120 -337l19 -53l21.5 -60.5l21 -58.5l21 -56.5t17.5 -44t15 -32.5t8 -11h32q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5t-50.5 1.5q-16 0 -58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h54q1 0 1 3q0 30 -70 226 q-6 17 -10 18q-3 1 -10 1h-201q-5 0 -8 -0.5t-5 -1t-4 -3t-2 -3t-2 -5t-2 -5.5q-81 -206 -81 -227q0 -3 1 -3h78q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -43.5 1.5t-48.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5zM231 305q0 -6 16 -6h179q13 0 13 5q0 1 -4 13 l-83 243q-6 19 -8 19t-10 -19l-98 -240q-5 -12 -5 -15z" />
+<glyph unicode="&#x103;" horiz-adv-x="419" d="M98 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84zM35 71q0 42 37 74t83.5 48t103.5 26q8 1 8 16q0 27 -0.5 42t-5 36.5t-13.5 32.5t-26 19.5t-42 8.5 q-18 0 -31 -5q-20 -9 -25.5 -22t-6.5 -45q0 -16 -7 -21q-11 -8 -30.5 -18t-22.5 -10q-8 0 -8 15q0 57 49 94t103 37q72 0 101.5 -33.5t29.5 -97.5q0 -29 -3 -113t-3 -91q0 -30 22 -30q2 0 19.5 12t18.5 12q3 0 8 -5.5t5 -9.5q0 -5 -65 -49q-15 -11 -26 -11q-10 0 -17.5 6 t-11.5 14t-6.5 16t-3.5 14l-1 6q-1 0 -4 -2t-8 -5t-8 -5q-68 -41 -115 -41q-46 0 -72 23t-26 62zM105 99q0 -26 17.5 -47.5t47.5 -21.5q20 0 44 6t38.5 12.5t14.5 9.5v134q0 11 -6 11q-14 0 -62 -15q-94 -30 -94 -89z" />
+<glyph unicode="&#x104;" horiz-adv-x="698" d="M30 15q0 9 3 10.5t15 1.5h28q4 0 23.5 44l60 140l62.5 147l106 246q4 9 17 25.5t19 30.5q12 27 19 27t9 -7l120 -337l19 -53l21.5 -60.5l21 -58.5l21 -56.5t17.5 -44t15 -32.5t8 -11h32q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5t-50.5 1.5q-4 0 -8 -4 q-84 -86 -84 -163q0 -33 20 -56.5t44 -23.5q23 0 43 11t31 22l11 11q1 0 6 -6t5 -7q0 -3 -15 -19t-47.5 -34t-68.5 -18q-32 0 -62.5 29.5t-30.5 63.5q0 12 1.5 23.5t6.5 23.5t9 20.5t13.5 21l14.5 19.5t18 20.5l18.5 19l22 21.5t22.5 21q3 3 -1 3q-58 -2 -80 -2 q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h54q1 0 1 3q0 30 -70 226q-6 17 -10 18q-3 1 -10 1h-201q-5 0 -8 -0.5t-5 -1t-4 -3t-2 -3t-2 -5t-2 -5.5q-81 -206 -81 -227q0 -3 1 -3h78q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -43.5 1.5t-48.5 1.5t-39 -1.5t-34 -1.5 q-10 0 -12 2.5t-2 15.5zM231 305q0 -6 16 -6h179q13 0 13 5q0 1 -4 13l-83 243q-6 19 -8 19t-10 -19l-98 -240q-5 -12 -5 -15z" />
+<glyph unicode="&#x105;" horiz-adv-x="419" d="M35 71q0 42 37 74t83.5 48t103.5 26q8 1 8 16q0 27 -0.5 42t-5 36.5t-13.5 32.5t-26 19.5t-42 8.5q-18 0 -31 -5q-20 -9 -25.5 -22t-6.5 -45q0 -16 -7 -21q-11 -8 -30.5 -18t-22.5 -10q-8 0 -8 15q0 57 49 94t103 37q72 0 101.5 -33.5t29.5 -97.5q0 -29 -3 -113t-3 -91 q0 -30 22 -30q2 0 19.5 12t18.5 12q3 0 8 -5.5t5 -9.5q0 -1 -47 -37q-28 -21 -41.5 -32.5t-38.5 -36t-36.5 -50.5t-11.5 -54q0 -33 20 -56.5t44 -23.5q23 0 43 11t31 22l11 11q1 0 6 -6t5 -7q0 -3 -15 -19t-47.5 -34t-68.5 -18q-32 0 -62.5 29.5t-30.5 63.5q0 74 126 173 l7 7l-7 7q-7 7 -11 18.5t-5 19.5t-2 8t-4 -2t-8 -5t-8 -5q-68 -41 -115 -41q-46 0 -72 23t-26 62zM105 99q0 -26 17.5 -47.5t47.5 -21.5q20 0 44 6t38.5 12.5t14.5 9.5v134q0 11 -6 11q-14 0 -62 -15q-94 -30 -94 -89z" />
+<glyph unicode="&#x106;" horiz-adv-x="731" d="M385 731q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2zM45 335q0 154 101.5 249.5t255.5 95.5q19 0 37.5 -2t34.5 -5.5t29.5 -8t27 -10.5l23 -10.5t19.5 -11l15 -10l12.5 -8.5t8.5 -6q5 -4 6.5 -5t5 -2t4.5 1.5t1 8.5v27q0 9 2 11 t13 2q12 0 16 -2t4 -11q0 -5 -2 -84t-2 -109q0 -9 -3 -12.5t-13 -3.5q-13 0 -16 2.5t-3 9.5q0 1 2 43t2 47t-11 18t-32.5 30t-48.5 33t-64.5 27t-74.5 11q-108 0 -178 -90t-70 -227q0 -127 81 -218.5t196 -91.5q51 0 99 15t71.5 30.5t24.5 22.5l13 113q1 10 5.5 13t16.5 1 q12 -1 12 -13q0 -13 -16 -133q-1 -10 -36.5 -30.5t-97.5 -39t-120 -18.5q-71 0 -133 21.5t-111.5 63t-78 110.5t-28.5 156z" />
+<glyph unicode="&#x107;" horiz-adv-x="412" d="M216 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM35 177q0 104 63 163t143 59q50 0 91.5 -29t41.5 -67q0 -13 -10 -20q-17 -13 -30 -13t-17 11q-2 5 -8.5 25.5t-10 27t-12 18.5t-21 16t-30.5 4 q-60 0 -97.5 -53t-37.5 -117q0 -68 40.5 -118t113.5 -50q30 0 58.5 7.5t44.5 15t18 7.5q7 0 7 -8q0 -2 -6.5 -9t-20.5 -17t-32 -18.5t-44.5 -15t-54.5 -6.5q-87 0 -138 51t-51 136z" />
+<glyph unicode="&#x108;" horiz-adv-x="731" d="M284 731l4 6l79 89q12 13 16 13h24q4 0 16 -13l79 -89q4 -4 4 -6t-6 -2h-9q-1 0 -11 6l-81 45q-4 2 -8 0l-81 -45q-10 -6 -11 -6h-9q-6 0 -6 2zM45 335q0 154 101.5 249.5t255.5 95.5q19 0 37.5 -2t34.5 -5.5t29.5 -8t27 -10.5l23 -10.5t19.5 -11l15 -10l12.5 -8.5 t8.5 -6q5 -4 6.5 -5t5 -2t4.5 1.5t1 8.5v27q0 9 2 11t13 2q12 0 16 -2t4 -11q0 -5 -2 -84t-2 -109q0 -9 -3 -12.5t-13 -3.5q-13 0 -16 2.5t-3 9.5q0 1 2 43t2 47t-11 18t-32.5 30t-48.5 33t-64.5 27t-74.5 11q-108 0 -178 -90t-70 -227q0 -127 81 -218.5t196 -91.5 q51 0 99 15t71.5 30.5t24.5 22.5l13 113q1 10 5.5 13t16.5 1q12 -1 12 -13q0 -13 -16 -133q-1 -10 -36.5 -30.5t-97.5 -39t-120 -18.5q-71 0 -133 21.5t-111.5 63t-78 110.5t-28.5 156z" />
+<glyph unicode="&#x109;" horiz-adv-x="412" d="M121 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM35 177q0 104 63 163t143 59q50 0 91.5 -29t41.5 -67q0 -13 -10 -20q-17 -13 -30 -13t-17 11 q-2 5 -8.5 25.5t-10 27t-12 18.5t-21 16t-30.5 4q-60 0 -97.5 -53t-37.5 -117q0 -68 40.5 -118t113.5 -50q30 0 58.5 7.5t44.5 15t18 7.5q7 0 7 -8q0 -2 -6.5 -9t-20.5 -17t-32 -18.5t-44.5 -15t-54.5 -6.5q-87 0 -138 51t-51 136z" />
+<glyph unicode="&#x10a;" horiz-adv-x="731" d="M344 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM45 335q0 154 101.5 249.5t255.5 95.5q19 0 37.5 -2t34.5 -5.5t29.5 -8t27 -10.5l23 -10.5t19.5 -11l15 -10l12.5 -8.5t8.5 -6q5 -4 6.5 -5t5 -2t4.5 1.5t1 8.5v27 q0 9 2 11t13 2q12 0 16 -2t4 -11q0 -5 -2 -84t-2 -109q0 -9 -3 -12.5t-13 -3.5q-13 0 -16 2.5t-3 9.5q0 1 2 43t2 47t-11 18t-32.5 30t-48.5 33t-64.5 27t-74.5 11q-108 0 -178 -90t-70 -227q0 -127 81 -218.5t196 -91.5q51 0 99 15t71.5 30.5t24.5 22.5l13 113q1 10 5.5 13 t16.5 1q12 -1 12 -13q0 -13 -16 -133q-1 -10 -36.5 -30.5t-97.5 -39t-120 -18.5q-71 0 -133 21.5t-111.5 63t-78 110.5t-28.5 156z" />
+<glyph unicode="&#x10b;" horiz-adv-x="412" d="M180 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM35 177q0 104 63 163t143 59q50 0 91.5 -29t41.5 -67q0 -13 -10 -20q-17 -13 -30 -13t-17 11q-2 5 -8.5 25.5t-10 27t-12 18.5t-21 16t-30.5 4q-60 0 -97.5 -53 t-37.5 -117q0 -68 40.5 -118t113.5 -50q30 0 58.5 7.5t44.5 15t18 7.5q7 0 7 -8q0 -2 -6.5 -9t-20.5 -17t-32 -18.5t-44.5 -15t-54.5 -6.5q-87 0 -138 51t-51 136z" />
+<glyph unicode="&#x10c;" horiz-adv-x="731" d="M284 837q0 2 6 2h9q1 0 11 -6l81 -45q4 -2 8 0l81 45q10 6 11 6h9q6 0 6 -2l-4 -6l-79 -89q-12 -13 -16 -13h-24q-4 0 -16 13l-79 89q-4 4 -4 6zM45 335q0 154 101.5 249.5t255.5 95.5q19 0 37.5 -2t34.5 -5.5t29.5 -8t27 -10.5l23 -10.5t19.5 -11l15 -10l12.5 -8.5 t8.5 -6q5 -4 6.5 -5t5 -2t4.5 1.5t1 8.5v27q0 9 2 11t13 2q12 0 16 -2t4 -11q0 -5 -2 -84t-2 -109q0 -9 -3 -12.5t-13 -3.5q-13 0 -16 2.5t-3 9.5q0 1 2 43t2 47t-11 18t-32.5 30t-48.5 33t-64.5 27t-74.5 11q-108 0 -178 -90t-70 -227q0 -127 81 -218.5t196 -91.5 q51 0 99 15t71.5 30.5t24.5 22.5l13 113q1 10 5.5 13t16.5 1q12 -1 12 -13q0 -13 -16 -133q-1 -10 -36.5 -30.5t-97.5 -39t-120 -18.5q-71 0 -133 21.5t-111.5 63t-78 110.5t-28.5 156z" />
+<glyph unicode="&#x10d;" horiz-adv-x="412" d="M121 597q0 2 5 2h12l8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM35 177q0 104 63 163t143 59q50 0 91.5 -29t41.5 -67q0 -13 -10 -20q-17 -13 -30 -13t-17 11 q-2 5 -8.5 25.5t-10 27t-12 18.5t-21 16t-30.5 4q-60 0 -97.5 -53t-37.5 -117q0 -68 40.5 -118t113.5 -50q30 0 58.5 7.5t44.5 15t18 7.5q7 0 7 -8q0 -2 -6.5 -9t-20.5 -17t-32 -18.5t-44.5 -15t-54.5 -6.5q-87 0 -138 51t-51 136z" />
+<glyph unicode="&#x10e;" horiz-adv-x="758" d="M231 837q0 2 6 2h9q1 0 11 -6l81 -45q4 -2 8 0l81 45q10 6 11 6h9q6 0 6 -2l-4 -6l-79 -89q-12 -13 -16 -13h-24q-4 0 -16 13l-79 89q-4 4 -4 6zM35 10q0 11 3 13t14 2h66q4 0 8.5 200t4.5 338q0 78 -2 78l-70 -2q-5 0 -7.5 0.5t-4 3t-1.5 8.5v7.5t1.5 5t4 3t7.5 0.5 q1 0 11.5 -0.5t26.5 -0.5h31q41 0 114.5 6t89.5 6q166 0 273.5 -93t107.5 -250q0 -105 -49.5 -183.5t-126.5 -116.5t-169 -39q-32 0 -97 2t-98 2q-16 0 -70 -2t-57 -2q-8 0 -9.5 2t-1.5 12zM213 86q0 -59 2 -60q6 -4 57 -4q69 0 124.5 14t90 34.5t60 53t37.5 59t19 63.5 t8 56t1 46q0 73 -35.5 141.5t-106.5 115.5t-159 47q-67 0 -90 -6q-7 -2 -7 -146q-1 -138 -1 -414z" />
+<glyph unicode="&#x10f;" horiz-adv-x="499" d="M458 491q0 2 2.5 27t5.5 60.5t5 54.5q3 33 35 33t32 -29q0 -5 -3 -13l-51 -124q-6 -12 -8 -12h-15q-3 0 -3 3zM30 181q0 85 58.5 141.5t144.5 56.5q17 0 33.5 -2.5t28.5 -6.5t21 -8t14 -6l6 -3q6 0 6 18q0 48 -2 113.5t-4.5 112t-3.5 46.5t-32 -4.5t-35 -4.5t-5 2t1 13 q2 12 8 13q24 3 56.5 7.5t52.5 7.5t22 3q7 0 8.5 -3.5t1.5 -19.5q0 -7 -1.5 -62.5t-3 -164.5t-1.5 -246q0 -48 2 -120q1 -29 6 -39t17 -10q4 0 34 4q6 1 8.5 0t2.5 -8q0 -8 -0.5 -11t-3 -5t-9.5 -3l-115 -15q-6 0 -6 9q0 1 0.5 17.5t0.5 18.5q0 8 -2.5 9t-12.5 -5 q-63 -39 -120 -39q-75 0 -125.5 47t-50.5 147zM103 188q0 -74 37.5 -119t114.5 -45q23 0 55 10.5t32 22.5v250q0 12 -31 32t-66 20q-64 0 -103 -50.5t-39 -120.5z" />
+<glyph unicode="&#x110;" horiz-adv-x="758" d="M35 10q0 11 3 13t14 2h66q5 0 11 298q0 8 -7 8h-79q-2 0 -2.5 12t2.5 12h76q10 0 10 10q2 148 2 198q0 78 -2 78l-70 -2q-5 0 -7.5 0.5t-4 3t-1.5 8.5v7.5t1.5 5t4 3t7.5 0.5q1 0 11.5 -0.5t26.5 -0.5h31q41 0 114.5 6t89.5 6q166 0 273.5 -93t107.5 -250 q0 -105 -49.5 -183.5t-126.5 -116.5t-169 -39q-32 0 -97 2t-98 2q-16 0 -70 -2t-57 -2q-8 0 -9.5 2t-1.5 12zM213 86q0 -59 2 -60q6 -4 57 -4q69 0 124.5 14t90 34.5t60 53t37.5 59t19 63.5t8 56t1 46q0 73 -35.5 141.5t-106.5 115.5t-159 47q-67 0 -90 -6q-7 -2 -7 -146 q0 -22 -0.5 -67t-0.5 -68q0 -7 1.5 -8.5t9.5 -1.5h208q3 0 3 -12t-3 -12h-212q-7 0 -7 -8v-237z" />
+<glyph unicode="&#x111;" horiz-adv-x="499" d="M30 181q0 85 58.5 141.5t144.5 56.5q17 0 33.5 -2.5t28.5 -6.5t21 -8t14 -6l6 -3q6 0 6 18q0 36 -2 116q0 6 -9 6h-151q-2 0 -2.5 12t2.5 12h152q5 0 6 1.5t1 7.5q-4 117 -7 117q-1 0 -32 -4.5t-35 -4.5t-5 2t1 13q2 12 8 13q24 3 56.5 7.5t52.5 7.5t22 3q7 0 8.5 -3.5 t1.5 -19.5q0 -6 -0.5 -23t-1.5 -46.5t-1 -61.5q0 -9 6 -9h58q3 0 3 -12t-3 -12h-58q-7 0 -7 -6q-2 -146 -2 -303q0 -48 2 -120q1 -29 6 -39t17 -10q4 0 34 4q6 1 8.5 0t2.5 -8q0 -8 -0.5 -11t-3 -5t-9.5 -3l-115 -15q-6 0 -6 9q0 1 0.5 17.5t0.5 18.5q0 8 -2.5 9t-12.5 -5 q-63 -39 -120 -39q-75 0 -125.5 47t-50.5 147zM103 188q0 -74 37.5 -119t114.5 -45q23 0 55 10.5t32 22.5v250q0 12 -31 32t-66 20q-64 0 -103 -50.5t-39 -120.5z" />
+<glyph unicode="&#x112;" horiz-adv-x="605" d="M214 788v23q0 6 1.5 7t7.5 1h187q6 0 7 -1t1 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM40 15q0 9 2.5 10.5t14.5 1.5h61q7 0 7 75v96q0 31 -0.5 72t-1 78t-1 69.5t-1 53t-0.5 21.5q0 144 -11 144h-43q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l43 -1q43 -2 64 -2 q28 0 128.5 1.5t120.5 1.5q47 0 56.5 1.5t10.5 10.5v1q1 12 13 12q11 0 14 -2t3 -9q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 7 -272 7q-7 0 -7 -128q0 -42 2 -142q0 -10 1.5 -13t10.5 -3h167q55 0 55 16v50q0 9 17 9q14 0 14 -8 q0 -1 -1 -29t-1 -49t1 -50t1 -33q0 -8 -13 -8q-18 0 -18 9v46q0 7 -2 10t-15 6.5t-38 3.5h-163q-12 0 -14 -2t-2 -13q6 -276 12 -276q27 0 68 0.5l79.5 1t73.5 0.5t57 0.5t23 0.5q12 0 15 3t4 20q1 14 3 87q0 8 14 8q17 0 17 -9q0 -28 -1.5 -77t-1.5 -61q0 -11 -22 -11 q-11 0 -182.5 1.5t-187.5 1.5t-63.5 -1.5t-58.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="&#x113;" horiz-adv-x="424" d="M126 518v23q0 6 1.5 7t7.5 1h187q6 0 7 -1t1 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM30 182q0 91 57 152.5t147 61.5q71 0 110 -46t39 -113q0 -5 -20.5 -8.5t-33.5 -3.5q-6 0 -113 2.5t-111 2.5q-5 0 -5 -36q0 -76 44.5 -120.5t104.5 -44.5q22 0 43.5 6.5 t36 16.5t25.5 19.5t18 16.5l6 6q2 0 9 -6.5t7 -8.5q0 -5 -21 -26.5t-64 -44.5t-88 -23q-91 0 -141 53.5t-50 143.5zM105 255q0 -8 12 -8q57 0 157 4q40 1 40 4q0 65 -29.5 92t-62.5 27q-46 0 -80 -38.5t-37 -80.5z" />
+<glyph unicode="&#x114;" horiz-adv-x="605" d="M213 832q0 6 1 6h17q1 0 2 -6t4.5 -15t10.5 -17.5t24.5 -14.5t43.5 -6t43.5 6t24.5 14.5t10.5 17.5t4.5 15t2 6h17q1 0 1 -6q0 -45 -26 -74t-77 -29t-77 29t-26 74zM40 15q0 9 2.5 10.5t14.5 1.5h61q7 0 7 75v96q0 31 -0.5 72t-1 78t-1 69.5t-1 53t-0.5 21.5 q0 144 -11 144h-43q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l43 -1q43 -2 64 -2q28 0 128.5 1.5t120.5 1.5q47 0 56.5 1.5t10.5 10.5v1q1 12 13 12q11 0 14 -2t3 -9q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 7 -272 7q-7 0 -7 -128 q0 -42 2 -142q0 -10 1.5 -13t10.5 -3h167q55 0 55 16v50q0 9 17 9q14 0 14 -8q0 -1 -1 -29t-1 -49t1 -50t1 -33q0 -8 -13 -8q-18 0 -18 9v46q0 7 -2 10t-15 6.5t-38 3.5h-163q-12 0 -14 -2t-2 -13q6 -276 12 -276q27 0 68 0.5l79.5 1t73.5 0.5t57 0.5t23 0.5q12 0 15 3t4 20 q1 14 3 87q0 8 14 8q17 0 17 -9q0 -28 -1.5 -77t-1.5 -61q0 -11 -22 -11q-11 0 -182.5 1.5t-187.5 1.5t-63.5 -1.5t-58.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="&#x115;" horiz-adv-x="424" d="M125 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84zM30 182q0 91 57 152.5t147 61.5q71 0 110 -46t39 -113q0 -5 -20.5 -8.5t-33.5 -3.5q-6 0 -113 2.5 t-111 2.5q-5 0 -5 -36q0 -76 44.5 -120.5t104.5 -44.5q22 0 43.5 6.5t36 16.5t25.5 19.5t18 16.5l6 6q2 0 9 -6.5t7 -8.5q0 -5 -21 -26.5t-64 -44.5t-88 -23q-91 0 -141 53.5t-50 143.5zM105 255q0 -8 12 -8q57 0 157 4q40 1 40 4q0 65 -29.5 92t-62.5 27q-46 0 -80 -38.5 t-37 -80.5z" />
+<glyph unicode="&#x116;" horiz-adv-x="605" d="M265 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM40 15q0 9 2.5 10.5t14.5 1.5h61q7 0 7 75v96q0 31 -0.5 72t-1 78t-1 69.5t-1 53t-0.5 21.5q0 144 -11 144h-43q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l43 -1 q43 -2 64 -2q28 0 128.5 1.5t120.5 1.5q47 0 56.5 1.5t10.5 10.5v1q1 12 13 12q11 0 14 -2t3 -9q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 7 -272 7q-7 0 -7 -128q0 -42 2 -142q0 -10 1.5 -13t10.5 -3h167q55 0 55 16v50q0 9 17 9 q14 0 14 -8q0 -1 -1 -29t-1 -49t1 -50t1 -33q0 -8 -13 -8q-18 0 -18 9v46q0 7 -2 10t-15 6.5t-38 3.5h-163q-12 0 -14 -2t-2 -13q6 -276 12 -276q27 0 68 0.5l79.5 1t73.5 0.5t57 0.5t23 0.5q12 0 15 3t4 20q1 14 3 87q0 8 14 8q17 0 17 -9q0 -28 -1.5 -77t-1.5 -61 q0 -11 -22 -11q-11 0 -182.5 1.5t-187.5 1.5t-63.5 -1.5t-58.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="&#x117;" horiz-adv-x="424" d="M177 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM30 182q0 91 57 152.5t147 61.5q71 0 110 -46t39 -113q0 -5 -20.5 -8.5t-33.5 -3.5q-6 0 -113 2.5t-111 2.5q-5 0 -5 -36q0 -76 44.5 -120.5t104.5 -44.5 q22 0 43.5 6.5t36 16.5t25.5 19.5t18 16.5l6 6q2 0 9 -6.5t7 -8.5q0 -5 -21 -26.5t-64 -44.5t-88 -23q-91 0 -141 53.5t-50 143.5zM105 255q0 -8 12 -8q57 0 157 4q40 1 40 4q0 65 -29.5 92t-62.5 27q-46 0 -80 -38.5t-37 -80.5z" />
+<glyph unicode="&#x118;" horiz-adv-x="605" d="M40 15q0 9 2.5 10.5t14.5 1.5h61q7 0 7 75v96q0 31 -0.5 72t-1 78t-1 69.5t-1 53t-0.5 21.5q0 144 -11 144h-43q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l43 -1q43 -2 64 -2q28 0 128.5 1.5t120.5 1.5q47 0 56.5 1.5t10.5 10.5v1q1 12 13 12q11 0 14 -2t3 -9 q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 7 -272 7q-7 0 -7 -128q0 -42 2 -142q0 -10 1.5 -13t10.5 -3h167q55 0 55 16v50q0 9 17 9q14 0 14 -8q0 -1 -1 -29t-1 -49t1 -50t1 -33q0 -8 -13 -8q-18 0 -18 9v46q0 7 -2 10t-15 6.5t-38 3.5 h-163q-12 0 -14 -2t-2 -13q6 -276 12 -276q27 0 68 0.5l79.5 1t73.5 0.5t57 0.5t23 0.5q12 0 15 3t4 20q1 14 3 87q0 8 14 8q17 0 17 -9q0 -28 -1.5 -77t-1.5 -61q0 -11 -22 -11h-62q-14 0 -23 -9q-76 -82 -76 -155q0 -33 20 -56.5t44 -23.5q23 0 43 11t31 22l11 11 q1 0 6 -6t5 -7q0 -3 -15 -19t-47.5 -34t-68.5 -18q-32 0 -62.5 29.5t-30.5 63.5q0 21 7.5 42t13.5 33.5t29 37.5t29.5 31.5l38.5 37.5q8 6 7.5 8t-13.5 2l-257 2q-16 0 -63.5 -1.5t-58.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="&#x119;" horiz-adv-x="424" d="M30 182q0 91 57 152.5t147 61.5q71 0 110 -46t39 -113q0 -5 -20.5 -8.5t-33.5 -3.5q-6 0 -113 2.5t-111 2.5q-5 0 -5 -36q0 -76 44.5 -120.5t104.5 -44.5q22 0 43.5 6.5t36 16.5t25.5 19.5t18 16.5l6 6q2 0 9 -6.5t7 -8.5q0 -10 -48 -49q-45 -35 -83.5 -89t-38.5 -108 q0 -33 20 -56.5t44 -23.5q23 0 43 11t31 22l11 11q1 0 6 -6t5 -7q0 -3 -15 -19t-47.5 -34t-68.5 -18q-32 0 -62.5 29.5t-30.5 63.5q0 16 2 29.5t8.5 27t11 22t17.5 23.5l19 21.5t25 25.5l27 27q2 2 9 7q12 9 7 8q-1 0 -3 -1q-31 -11 -62 -11q-91 0 -141 53.5t-50 143.5z M105 255q0 -8 12 -8q57 0 157 4q40 1 40 4q0 65 -29.5 92t-62.5 27q-46 0 -80 -38.5t-37 -80.5z" />
+<glyph unicode="&#x11a;" horiz-adv-x="605" d="M205 837q0 2 6 2h9q1 0 11 -6l81 -45q4 -2 8 0l81 45q10 6 11 6h9q6 0 6 -2l-4 -6l-79 -89q-12 -13 -16 -13h-24q-4 0 -16 13l-79 89q-4 4 -4 6zM40 15q0 9 2.5 10.5t14.5 1.5h61q7 0 7 75v96q0 31 -0.5 72t-1 78t-1 69.5t-1 53t-0.5 21.5q0 144 -11 144h-43 q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l43 -1q43 -2 64 -2q28 0 128.5 1.5t120.5 1.5q47 0 56.5 1.5t10.5 10.5v1q1 12 13 12q11 0 14 -2t3 -9q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 7 -272 7q-7 0 -7 -128q0 -42 2 -142 q0 -10 1.5 -13t10.5 -3h167q55 0 55 16v50q0 9 17 9q14 0 14 -8q0 -1 -1 -29t-1 -49t1 -50t1 -33q0 -8 -13 -8q-18 0 -18 9v46q0 7 -2 10t-15 6.5t-38 3.5h-163q-12 0 -14 -2t-2 -13q6 -276 12 -276q27 0 68 0.5l79.5 1t73.5 0.5t57 0.5t23 0.5q12 0 15 3t4 20q1 14 3 87 q0 8 14 8q17 0 17 -9q0 -28 -1.5 -77t-1.5 -61q0 -11 -22 -11q-11 0 -182.5 1.5t-187.5 1.5t-63.5 -1.5t-58.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="&#x11b;" horiz-adv-x="424" d="M118 597q0 2 5 2h12q1 0 8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM30 182q0 91 57 152.5t147 61.5q71 0 110 -46t39 -113q0 -5 -20.5 -8.5t-33.5 -3.5 q-6 0 -113 2.5t-111 2.5q-5 0 -5 -36q0 -76 44.5 -120.5t104.5 -44.5q22 0 43.5 6.5t36 16.5t25.5 19.5t18 16.5l6 6q2 0 9 -6.5t7 -8.5q0 -5 -21 -26.5t-64 -44.5t-88 -23q-91 0 -141 53.5t-50 143.5zM105 255q0 -8 12 -8q57 0 157 4q40 1 40 4q0 65 -29.5 92t-62.5 27 q-46 0 -80 -38.5t-37 -80.5z" />
+<glyph unicode="&#x11c;" horiz-adv-x="764" d="M293 731l4 6l79 89q12 13 16 13h24q4 0 16 -13l79 -89q4 -4 4 -6t-6 -2h-9q-1 0 -11 6l-81 45q-4 2 -8 0l-81 -45q-10 -6 -11 -6h-9q-6 0 -6 2zM45 335q0 160 102.5 251t260.5 91q117 0 201 -59q5 -4 6.5 -5t5 -2t4.5 1.5t1 8.5v25q0 9 2 11t13 2q12 0 15.5 -2t3.5 -11 q0 -2 -1.5 -76.5t-1.5 -104.5q0 -9 -3 -12.5t-13 -3.5q-13 0 -16 2.5t-3 9.5q0 1 2 38t2 42t-9.5 17t-29.5 27.5t-45.5 30t-62.5 24.5t-75 10q-109 0 -183 -91t-74 -226q0 -130 79 -225.5t198 -95.5q51 0 91 12t55.5 24.5t16.5 19.5q3 26 3 94q0 58 -10 58h-87q-8 0 -8 12 q0 18 9 18q15 0 64.5 -1.5t67.5 -1.5q17 0 42.5 1.5t47.5 1.5q8 0 8 -14q0 -16 -8 -16h-31q-9 0 -11 -13t-2 -45q0 -12 -0.5 -42t-0.5 -47q0 -10 -39 -31.5t-106.5 -40.5t-129.5 -19q-71 0 -133 21t-111.5 62.5t-78 110.5t-28.5 159z" />
+<glyph unicode="&#x11d;" horiz-adv-x="425" d="M95 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM15 -173q0 32 25.5 58t54 38.5t57.5 18.5q23 5 23 6t-21 1h-57q-31 0 -40 19q-9 21 -9 48 q0 28 18 32q33 8 76 20q38 11 38 12l-2 1q-3 1 -8 2t-9 2q-127 38 -127 161q0 64 53.5 106.5t122.5 42.5q22 0 42 -5.5t33.5 -12.5t24 -14.5t16.5 -12.5l6 -6q2 0 14.5 4.5t29.5 9t31 5.5q2 0 5.5 -9.5t3.5 -18.5q0 -6 -3 -6q-11 -1 -35 -6t-24 -8q0 -1 3 -10.5t6.5 -26 t3.5 -35.5q0 -60 -29 -95t-86 -57q-27 -11 -173 -52q-4 -1 -4 -9t5.5 -18.5t8.5 -11.5q17 -1 57.5 -2.5t64.5 -3t60.5 -6t59 -12.5t45 -20.5t33.5 -32.5t11 -47q0 -76 -61 -121t-159 -45q-44 0 -85 12t-70.5 39.5t-29.5 65.5zM60 -166q0 -46 44 -72t95 -26q66 0 115 28 t49 88q0 27 -29 46t-67 26.5t-78 7.5q-43 0 -86 -26.5t-43 -71.5zM98 250q0 -65 41 -110t68 -45q33 0 65.5 43t32.5 106q0 59 -27 92.5t-73 33.5q-43 0 -75 -35.5t-32 -84.5z" />
+<glyph unicode="&#x11e;" horiz-adv-x="764" d="M301 832q0 6 1 6h17q1 0 2 -6t4.5 -15t10.5 -17.5t24.5 -14.5t43.5 -6t43.5 6t24.5 14.5t10.5 17.5t4.5 15t2 6h17q1 0 1 -6q0 -45 -26 -74t-77 -29t-77 29t-26 74zM45 335q0 160 102.5 251t260.5 91q117 0 201 -59q5 -4 6.5 -5t5 -2t4.5 1.5t1 8.5v25q0 9 2 11t13 2 q12 0 15.5 -2t3.5 -11q0 -2 -1.5 -76.5t-1.5 -104.5q0 -9 -3 -12.5t-13 -3.5q-13 0 -16 2.5t-3 9.5q0 1 2 38t2 42t-9.5 17t-29.5 27.5t-45.5 30t-62.5 24.5t-75 10q-109 0 -183 -91t-74 -226q0 -130 79 -225.5t198 -95.5q51 0 91 12t55.5 24.5t16.5 19.5q3 26 3 94 q0 58 -10 58h-87q-8 0 -8 12q0 18 9 18q15 0 64.5 -1.5t67.5 -1.5q17 0 42.5 1.5t47.5 1.5q8 0 8 -14q0 -16 -8 -16h-31q-9 0 -11 -13t-2 -45q0 -12 -0.5 -42t-0.5 -47q0 -10 -39 -31.5t-106.5 -40.5t-129.5 -19q-71 0 -133 21t-111.5 62.5t-78 110.5t-28.5 159z" />
+<glyph unicode="&#x11f;" horiz-adv-x="425" d="M102 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84zM15 -173q0 32 25.5 58t54 38.5t57.5 18.5q23 5 23 6t-21 1h-57q-31 0 -40 19q-9 21 -9 48 q0 28 18 32q33 8 76 20q38 11 38 12l-2 1q-3 1 -8 2t-9 2q-127 38 -127 161q0 64 53.5 106.5t122.5 42.5q22 0 42 -5.5t33.5 -12.5t24 -14.5t16.5 -12.5l6 -6q2 0 14.5 4.5t29.5 9t31 5.5q2 0 5.5 -9.5t3.5 -18.5q0 -6 -3 -6q-11 -1 -35 -6t-24 -8q0 -1 3 -10.5t6.5 -26 t3.5 -35.5q0 -60 -29 -95t-86 -57q-27 -11 -173 -52q-4 -1 -4 -9t5.5 -18.5t8.5 -11.5q17 -1 57.5 -2.5t64.5 -3t60.5 -6t59 -12.5t45 -20.5t33.5 -32.5t11 -47q0 -76 -61 -121t-159 -45q-44 0 -85 12t-70.5 39.5t-29.5 65.5zM60 -166q0 -46 44 -72t95 -26q66 0 115 28 t49 88q0 27 -29 46t-67 26.5t-78 7.5q-43 0 -86 -26.5t-43 -71.5zM98 250q0 -65 41 -110t68 -45q33 0 65.5 43t32.5 106q0 59 -27 92.5t-73 33.5q-43 0 -75 -35.5t-32 -84.5z" />
+<glyph unicode="&#x120;" horiz-adv-x="764" d="M353 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM45 335q0 160 102.5 251t260.5 91q117 0 201 -59q5 -4 6.5 -5t5 -2t4.5 1.5t1 8.5v25q0 9 2 11t13 2q12 0 15.5 -2t3.5 -11q0 -2 -1.5 -76.5t-1.5 -104.5 q0 -9 -3 -12.5t-13 -3.5q-13 0 -16 2.5t-3 9.5q0 1 2 38t2 42t-9.5 17t-29.5 27.5t-45.5 30t-62.5 24.5t-75 10q-109 0 -183 -91t-74 -226q0 -130 79 -225.5t198 -95.5q51 0 91 12t55.5 24.5t16.5 19.5q3 26 3 94q0 58 -10 58h-87q-8 0 -8 12q0 18 9 18q15 0 64.5 -1.5 t67.5 -1.5q17 0 42.5 1.5t47.5 1.5q8 0 8 -14q0 -16 -8 -16h-31q-9 0 -11 -13t-2 -45q0 -12 -0.5 -42t-0.5 -47q0 -10 -39 -31.5t-106.5 -40.5t-129.5 -19q-71 0 -133 21t-111.5 62.5t-78 110.5t-28.5 159z" />
+<glyph unicode="&#x121;" horiz-adv-x="425" d="M154 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM15 -173q0 32 25.5 58t54 38.5t57.5 18.5q23 5 23 6t-21 1h-57q-31 0 -40 19q-9 21 -9 48q0 28 18 32q33 8 76 20q38 11 38 12l-2 1q-3 1 -8 2t-9 2q-127 38 -127 161 q0 64 53.5 106.5t122.5 42.5q22 0 42 -5.5t33.5 -12.5t24 -14.5t16.5 -12.5l6 -6q2 0 14.5 4.5t29.5 9t31 5.5q2 0 5.5 -9.5t3.5 -18.5q0 -6 -3 -6q-11 -1 -35 -6t-24 -8q0 -1 3 -10.5t6.5 -26t3.5 -35.5q0 -60 -29 -95t-86 -57q-27 -11 -173 -52q-4 -1 -4 -9t5.5 -18.5 t8.5 -11.5q17 -1 57.5 -2.5t64.5 -3t60.5 -6t59 -12.5t45 -20.5t33.5 -32.5t11 -47q0 -76 -61 -121t-159 -45q-44 0 -85 12t-70.5 39.5t-29.5 65.5zM60 -166q0 -46 44 -72t95 -26q66 0 115 28t49 88q0 27 -29 46t-67 26.5t-78 7.5q-43 0 -86 -26.5t-43 -71.5zM98 250 q0 -65 41 -110t68 -45q33 0 65.5 43t32.5 106q0 59 -27 92.5t-73 33.5q-43 0 -75 -35.5t-32 -84.5z" />
+<glyph unicode="&#x122;" horiz-adv-x="764" d="M362 -225l15 10q15 10 29.5 25.5t14.5 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM45 335q0 160 102.5 251t260.5 91q117 0 201 -59q5 -4 6.5 -5t5 -2 t4.5 1.5t1 8.5v25q0 9 2 11t13 2q12 0 15.5 -2t3.5 -11q0 -2 -1.5 -76.5t-1.5 -104.5q0 -9 -3 -12.5t-13 -3.5q-13 0 -16 2.5t-3 9.5q0 1 2 38t2 42t-9.5 17t-29.5 27.5t-45.5 30t-62.5 24.5t-75 10q-109 0 -183 -91t-74 -226q0 -130 79 -225.5t198 -95.5q51 0 91 12 t55.5 24.5t16.5 19.5q3 26 3 94q0 58 -10 58h-87q-8 0 -8 12q0 18 9 18q15 0 64.5 -1.5t67.5 -1.5q17 0 42.5 1.5t47.5 1.5q8 0 8 -14q0 -16 -8 -16h-31q-9 0 -11 -13t-2 -45q0 -12 -0.5 -42t-0.5 -47q0 -10 -39 -31.5t-106.5 -40.5t-129.5 -19q-71 0 -133 21t-111.5 62.5 t-78 110.5t-28.5 159z" />
+<glyph unicode="&#x123;" horiz-adv-x="425" d="M148 502q0 31 24.5 62.5t48 48t29.5 16.5q4 0 7 -5.5t3 -10.5l-15 -10q-15 -10 -29.5 -25.5t-14.5 -29.5q0 -17 13.5 -30t26.5 -21.5t13 -12.5q0 -11 -18.5 -23t-24.5 -12q-12 0 -37.5 19.5t-25.5 33.5zM15 -173q0 32 25.5 58t54 38.5t57.5 18.5q23 5 23 6t-21 1h-57 q-31 0 -40 19q-9 21 -9 48q0 28 18 32q33 8 76 20q38 11 38 12l-2 1q-3 1 -8 2t-9 2q-127 38 -127 161q0 64 53.5 106.5t122.5 42.5q22 0 42 -5.5t33.5 -12.5t24 -14.5t16.5 -12.5l6 -6q2 0 14.5 4.5t29.5 9t31 5.5q2 0 5.5 -9.5t3.5 -18.5q0 -6 -3 -6q-11 -1 -35 -6t-24 -8 q0 -1 3 -10.5t6.5 -26t3.5 -35.5q0 -60 -29 -95t-86 -57q-27 -11 -173 -52q-4 -1 -4 -9t5.5 -18.5t8.5 -11.5q17 -1 57.5 -2.5t64.5 -3t60.5 -6t59 -12.5t45 -20.5t33.5 -32.5t11 -47q0 -76 -61 -121t-159 -45q-44 0 -85 12t-70.5 39.5t-29.5 65.5zM60 -166q0 -46 44 -72 t95 -26q66 0 115 28t49 88q0 27 -29 46t-67 26.5t-78 7.5q-43 0 -86 -26.5t-43 -71.5zM98 250q0 -65 41 -110t68 -45q33 0 65.5 43t32.5 106q0 59 -27 92.5t-73 33.5q-43 0 -75 -35.5t-32 -84.5z" />
+<glyph unicode="&#x124;" horiz-adv-x="791" d="M291 731l4 6l79 89q12 13 16 13h24q4 0 16 -13l79 -89q4 -4 4 -6t-6 -2h-9q-1 0 -11 6l-81 45q-4 2 -8 0l-81 -45q-10 -6 -11 -6h-9q-6 0 -6 2zM40 15q0 9 3 10.5t15 1.5h57q7 0 7 258v102q0 252 -6 252h-43q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5 q6 0 39.5 -1.5t50.5 -1.5q16 0 55.5 1.5t50.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-54q-7 0 -7 -134q0 -27 0.5 -73t0.5 -59t2 -15.5t13 -2.5h365q11 0 13 2t2 13v122q0 147 -10 147h-57q-10 0 -12.5 2t-2.5 13t2.5 13t12.5 2q6 0 47 -1.5t58 -1.5 q18 0 55 1.5t40 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-46q-2 0 -2 -242q0 -370 4 -370h55q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -44.5 1.5t-49.5 1.5t-58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h55q6 0 6 165v124 q0 11 -1 13t-8 2h-374q-8 0 -10 -2.5t-2 -14.5q0 -287 11 -287h65q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -52.5 1.5t-57.5 1.5t-61 -1.5t-56 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x125;" horiz-adv-x="503" d="M18 731l4 6l79 89q12 13 16 13h24q4 0 16 -13l79 -89q4 -4 4 -6t-6 -2h-9q-1 0 -11 6l-81 45q-4 2 -8 0l-81 -45q-10 -6 -11 -6h-9q-6 0 -6 2zM10 640q0 16 5 17q138 18 146 18q5 0 5 -20q-8 -166 -8 -301v-10t2 -3t3 0.5t6 3.5q73 40 133 40q40 0 66.5 -16t38.5 -47 t16 -63t4 -79v-143q0 -8 1.5 -10t9.5 -2h26q14 0 14 -13q0 -14 -14 -14q-8 0 -31.5 1t-39.5 1q-12 0 -41 -1t-45 -1q-9 0 -11 2.5t-2 11.5q0 13 13 13h39q8 0 9 1.5t2 9.5q2 40 2 176q0 58 -24 95t-72 37q-47 0 -89 -21q-16 -8 -16 -15l1 -150q0 -89 1 -115q1 -10 1.5 -13 t2 -4t7.5 -1h38q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -37.5 1t-45.5 1q-12 0 -41 -1t-45 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h39q7 0 8.5 3t1.5 15q1 94 1 220q0 202 -8 356q-1 17 -6 17q-1 0 -30 -3.5t-31 -3.5q-4 0 -4 11z" />
+<glyph unicode="&#x126;" horiz-adv-x="791" d="M40 15q0 9 3 10.5t15 1.5h57q7 0 7 258v197q0 6 -9 6h-60q-2 0 -2.5 12t2.5 12h60q6 0 7.5 1.5t1.5 8.5q-2 117 -6 117h-43q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 39.5 -1.5t50.5 -1.5q16 0 55.5 1.5t50.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5 t-15.5 -1.5h-54q-7 0 -7 -117q0 -7 1 -8.5t8 -1.5h375q9 0 10.5 2t1.5 11q-2 114 -10 114h-57q-10 0 -12.5 2t-2.5 13t2.5 13t12.5 2q6 0 47 -1.5t58 -1.5q18 0 55 1.5t40 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-46q-2 0 -2 -114q0 -6 0.5 -8.5t2.5 -3.5 t7 -1h58q3 0 3 -12t-3 -12h-58q-10 0 -10 -8v-83q0 -370 4 -370h55q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -44.5 1.5t-49.5 1.5t-58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h55q6 0 6 165v124q0 11 -1 13t-8 2h-374q-8 0 -10 -2.5t-2 -14.5 q0 -287 11 -287h65q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -52.5 1.5t-57.5 1.5t-61 -1.5t-56 -1.5q-10 0 -12 2.5t-2 15.5zM204 482q0 -23 0.5 -60.5t0.5 -48.5q0 -13 2 -15.5t13 -2.5h365q11 0 13 2t2 13v110q0 6 -2 7t-10 1h-379q-5 0 -5 -6z" />
+<glyph unicode="&#x127;" horiz-adv-x="503" d="M10 640q0 16 5 17q138 18 146 18q5 0 5 -20q-4 -68 -5 -133q0 -10 7 -10h143q3 0 3 -12t-3 -12h-143q-6 0 -7 -1t-1 -7q-2 -90 -2 -126v-10t2 -3t3 0.5t6 3.5q73 40 133 40q40 0 66.5 -16t38.5 -47t16 -63t4 -79v-143q0 -8 1.5 -10t9.5 -2h26q14 0 14 -13q0 -14 -14 -14 q-8 0 -31.5 1t-39.5 1q-12 0 -41 -1t-45 -1q-9 0 -11 2.5t-2 11.5q0 13 13 13h39q8 0 9 1.5t2 9.5q2 40 2 176q0 58 -24 95t-72 37q-47 0 -89 -21q-16 -8 -16 -15l1 -150q0 -89 1 -115q1 -10 1.5 -13t2 -4t7.5 -1h38q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2 q-8 0 -37.5 1t-45.5 1q-12 0 -41 -1t-45 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h39q7 0 8.5 3t1.5 15q1 94 1 220q0 111 -3 217q0 6 -1 7t-6 1h-64q-2 0 -2.5 12t2.5 12h64q6 0 6 10q0 17 -1 35l-2 36t-1 26q-1 17 -6 17q-1 0 -30 -3.5t-31 -3.5q-4 0 -4 11z" />
+<glyph unicode="&#x128;" horiz-adv-x="333" d="M63 748q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM30 15q0 9 3 10.5t15 1.5h68q10 0 10 367v98q0 147 -10 147h-62q-8 0 -11 0.5t-6 4 t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 54.5 -1.5t65.5 -1.5q16 0 60 1.5t55 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-63q-11 0 -11 -158v-135q0 -319 10 -319h71q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-66.5 -1.5t-61.5 -1.5 q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x129;" horiz-adv-x="249" d="M10 498q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM25 357q0 5 4 13q3 6 4.5 6.5t10.5 1.5q95 5 113 5q7 0 7 -6v-170q0 -113 3 -170 q0 -5 0.5 -7t2.5 -3.5t7 -1.5h36q11 0 11 -13q0 -8 -1.5 -11t-9.5 -3q-9 0 -40 1t-44 1t-46.5 -1t-42.5 -1q-8 0 -9.5 2.5t-1.5 11.5q0 7 2.5 10t11.5 3h41q8 0 9.5 2t1.5 10q1 29 1 88q0 117 -4 214q-1 11 -3 13.5t-10 2.5q-1 0 -24.5 -1t-25.5 -1q-4 0 -4 4z" />
+<glyph unicode="&#x12a;" horiz-adv-x="333" d="M66 788v23q0 6 1.5 7t7.5 1h187q6 0 7 -1t1 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM30 15q0 9 3 10.5t15 1.5h68q10 0 10 367v98q0 147 -10 147h-62q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 54.5 -1.5t65.5 -1.5q16 0 60 1.5t55 1.5q10 0 12 -2.5 t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-63q-11 0 -11 -158v-135q0 -319 10 -319h71q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-66.5 -1.5t-61.5 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x12b;" horiz-adv-x="249" d="M13 518v23q0 6 1.5 7t7.5 1h187q5 0 6.5 -1t1.5 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM25 357q0 5 4 13q3 6 4.5 6.5t10.5 1.5q95 5 113 5q7 0 7 -6v-170q0 -113 3 -170q0 -5 0.5 -7t2.5 -3.5t7 -1.5h36q11 0 11 -13q0 -8 -1.5 -11t-9.5 -3q-9 0 -40 1t-44 1 t-46.5 -1t-42.5 -1q-8 0 -9.5 2.5t-1.5 11.5q0 7 2.5 10t11.5 3h41q8 0 9.5 2t1.5 10q1 29 1 88q0 117 -4 214q-1 11 -3 13.5t-10 2.5q-1 0 -24.5 -1t-25.5 -1q-4 0 -4 4z" />
+<glyph unicode="&#x12c;" horiz-adv-x="333" d="M65 832q0 6 1 6h17q1 0 2 -6t4.5 -15t10.5 -17.5t24.5 -14.5t43.5 -6t43.5 6t24.5 14.5t10.5 17.5t4.5 15t2 6h17q1 0 1 -6q0 -45 -26 -74t-77 -29t-77 29t-26 74zM30 15q0 9 3 10.5t15 1.5h68q10 0 10 367v98q0 147 -10 147h-62q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4 t11.5 0.5q6 0 54.5 -1.5t65.5 -1.5q16 0 60 1.5t55 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-63q-11 0 -11 -158v-135q0 -319 10 -319h71q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-66.5 -1.5t-61.5 -1.5q-10 0 -12 2.5t-2 15.5z " />
+<glyph unicode="&#x12d;" horiz-adv-x="249" d="M12 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84zM25 357q0 5 4 13q3 6 4.5 6.5t10.5 1.5q95 5 113 5q7 0 7 -6v-170q0 -113 3 -170q0 -5 0.5 -7 t2.5 -3.5t7 -1.5h36q11 0 11 -13q0 -8 -1.5 -11t-9.5 -3q-9 0 -40 1t-44 1t-46.5 -1t-42.5 -1q-8 0 -9.5 2.5t-1.5 11.5q0 7 2.5 10t11.5 3h41q8 0 9.5 2t1.5 10q1 29 1 88q0 117 -4 214q-1 11 -3 13.5t-10 2.5q-1 0 -24.5 -1t-25.5 -1q-4 0 -4 4z" />
+<glyph unicode="&#x12e;" horiz-adv-x="333" d="M30 15q0 9 3 10.5t15 1.5h68q10 0 10 367v98q0 147 -10 147h-62q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 54.5 -1.5t65.5 -1.5q16 0 60 1.5t55 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-63q-11 0 -11 -158v-135q0 -319 10 -319h71 q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-17 0 -73 2q-12 0 -17 -5q-82 -86 -82 -161q0 -33 20 -56.5t44 -23.5q23 0 43 11t31 22l11 11q1 0 6 -6t5 -7q0 -3 -15 -19t-47.5 -34t-68.5 -18q-32 0 -62.5 29.5t-30.5 63.5q0 12 1.5 23.5t6.5 23.5l8.5 20t13.5 21l14 18.5 t18 20.5t18 19l22 21l22 21q6 6 -1 6h-7q-16 0 -66.5 -1.5t-61.5 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x12f;" horiz-adv-x="249" d="M25 357q0 5 4 13q3 6 4.5 6.5t10.5 1.5q95 5 113 5q7 0 7 -6v-170q0 -113 3 -170q0 -5 0.5 -7t2.5 -3.5t7 -1.5h36q11 0 11 -13q0 -8 -1.5 -11t-9.5 -3q-17 0 -63 2q-8 0 -13 -8q-45 -75 -45 -159q0 -38 15.5 -59.5t45.5 -21.5q18 0 32 6t20.5 12.5t7.5 6.5t6 -6t5 -7 q0 -3 -12 -14t-41 -24t-63 -13q-30 0 -52.5 26t-22.5 59q0 67 82 194q-2 7 -6 8l-69 -2q-8 0 -9.5 2.5t-1.5 11.5q0 7 2.5 10t11.5 3h41q8 0 9.5 2t1.5 10q1 29 1 88q0 117 -4 214q-1 11 -3 13.5t-10 2.5q-1 0 -24.5 -1t-25.5 -1q-4 0 -4 4zM77 553q0 25 19.5 40t40.5 15 q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5z" />
+<glyph unicode="&#x130;" horiz-adv-x="333" d="M117 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM30 15q0 9 3 10.5t15 1.5h68q10 0 10 367v98q0 147 -10 147h-62q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 54.5 -1.5t65.5 -1.5q16 0 60 1.5t55 1.5 q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-63q-11 0 -11 -158v-135q0 -319 10 -319h71q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-66.5 -1.5t-61.5 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x131;" horiz-adv-x="249" d="M25 357q0 5 4 13q3 6 4.5 6.5t10.5 1.5q95 5 113 5q7 0 7 -6v-170q0 -113 3 -170q0 -5 0.5 -7t2.5 -3.5t7 -1.5h36q11 0 11 -13q0 -8 -1.5 -11t-9.5 -3q-9 0 -40 1t-44 1t-46.5 -1t-42.5 -1q-8 0 -9.5 2.5t-1.5 11.5q0 7 2.5 10t11.5 3h41q8 0 9.5 2t1.5 10q1 29 1 88 q0 117 -4 214q-1 11 -3 13.5t-10 2.5q-1 0 -24.5 -1t-25.5 -1q-4 0 -4 4z" />
+<glyph unicode="&#x132;" horiz-adv-x="666" d="M303 -188q0 23 28.5 43.5t38.5 20.5q7 0 24 -10.5t28 -10.5q26 0 33 32t7 108v497q0 147 -10 147h-65q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 56 -1.5t67 -1.5q16 0 53.5 1.5t48.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-50q-7 0 -7 -269 v-240q0 -84 -17 -153t-69 -125q-60 -64 -109 -64q-19 0 -36 7t-17 17zM30 15q0 9 3 10.5t15 1.5h68q10 0 10 367v98q0 147 -10 147h-62q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 54.5 -1.5t65.5 -1.5q16 0 60 1.5t55 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5 t-15.5 -1.5h-63q-11 0 -11 -158v-135q0 -319 10 -319h71q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-66.5 -1.5t-61.5 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x133;" horiz-adv-x="541" d="M254 -255q0 16 14.5 34.5t26.5 18.5t31.5 -2t23.5 -2q19 0 28.5 9.5t9.5 23.5q0 9 -2 56.5t-4.5 145t-2.5 229.5q0 49 -2 76q-1 14 -9 14q-3 0 -34 -1.5t-36 -1.5q-3 0 -3 4q0 5 4 15q0 1 1 3q2 6 14 6q22 0 52.5 1.5l51 2.5t21.5 1q7 0 7 -23q0 -20 2.5 -136.5 t2.5 -191.5q0 -90 -10.5 -145t-43.5 -98q-13 -17 -57.5 -38t-66.5 -21q-19 0 -19 20zM329 580q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 357q0 5 4 13q3 6 4.5 6.5t10.5 1.5q95 5 113 5q7 0 7 -6v-170q0 -113 3 -170 q0 -5 0.5 -7t2.5 -3.5t7 -1.5h36q11 0 11 -13q0 -8 -1.5 -11t-9.5 -3q-9 0 -40 1t-44 1t-46.5 -1t-42.5 -1q-8 0 -9.5 2.5t-1.5 11.5q0 7 2.5 10t11.5 3h41q8 0 9.5 2t1.5 10q1 29 1 88q0 117 -4 214q-1 11 -3 13.5t-10 2.5q-1 0 -24.5 -1t-25.5 -1q-4 0 -4 4zM77 553 q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5z" />
+<glyph unicode="&#x134;" horiz-adv-x="333" d="M56 731l4 6l79 89q12 13 16 13h24q4 0 16 -13l79 -89q4 -4 4 -6t-6 -2h-9q-1 0 -11 6l-81 45q-4 2 -8 0l-81 -45q-10 -6 -11 -6h-9q-6 0 -6 2zM-30 -188q0 23 28.5 43.5t38.5 20.5q7 0 24 -10.5t28 -10.5q26 0 33 32t7 108v497q0 147 -10 147h-65q-8 0 -11 0.5t-6 4 t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 56 -1.5t67 -1.5q16 0 53.5 1.5t48.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-50q-7 0 -7 -269v-240q0 -84 -17 -153t-69 -125q-60 -64 -109 -64q-19 0 -36 7t-17 17z" />
+<glyph unicode="&#x135;" horiz-adv-x="292" d="M27 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM5 -255q0 16 14.5 34.5t26.5 18.5t31.5 -2t23.5 -2q19 0 28.5 9.5t9.5 23.5q0 9 -2.5 56.5 t-4.5 145t-2 229.5q0 49 -2 76q-1 14 -9 14q-3 0 -34 -1.5t-36 -1.5q-3 0 -3 4q0 5 4 15q0 1 1 3q2 6 14 6q22 0 52.5 1.5l51 2.5t21.5 1q7 0 7 -23q0 -20 2.5 -136.5t2.5 -191.5q0 -90 -10.5 -145t-43.5 -98q-13 -17 -57.5 -38t-66.5 -21q-19 0 -19 20z" />
+<glyph unicode="&#x136;" horiz-adv-x="650" d="M282 -225l15 10q15 10 29.5 25.5t14.5 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM40 15q0 9 3 10.5t15 1.5h55q8 0 8 170v290q0 147 -8 147h-44 q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 45.5 -1.5t56.5 -1.5q16 0 55.5 1.5t50.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-54q-14 0 -14 -158v-125q0 -8 0.5 -11.5t3.5 -6t9 -2.5h22q11 0 57 56t107.5 139l64.5 87q9 13 9 16q0 5 -15 5h-37 q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 37 -1.5t48 -1.5q16 0 42.5 1.5t37.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-49l-40 -48l-97.5 -116l-78.5 -94q-3 -3 -4 -5t-2 -3t0 -2.5t1.5 -2.5t3 -4t4.5 -5l269 -310q15 -17 31 -17h14 q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -47.5 1.5t-52.5 1.5t-52.5 -1.5t-47.5 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h30q17 0 17 4l-12 14l-217 257q-7 8 -22 8h-20q-9 0 -11.5 -1.5t-2.5 -10.5q0 -271 11 -271h73q8 0 9.5 -2t1.5 -11q0 -11 -2 -14 t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-60 -1.5t-55 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x137;" horiz-adv-x="449" d="M174 -225l15 10q15 10 29.5 25.5t14.5 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM10 649v9q0 13 12 14q114 9 131 9q5 0 6 -2t1 -11l-11 -448 q0 -8 2.5 -9.5t13.5 -1.5h22q4 0 7.5 1t7 4.5l5 5t5.5 6t4 5.5q53 70 79 113q3 5 3.5 6.5t1.5 4t-0.5 3.5t-5 1.5t-9.5 0.5h-20q-8 0 -10.5 3t-2.5 10q0 14 14 14q4 0 25 -1t33 -1q10 0 30 1t27 1q13 0 13 -14q0 -13 -12 -13h-32q-11 0 -107 -123q-2 -2 -5 -6q-3 -3 -4 -4.5 t0.5 -4t3.5 -4.5l5 -5l151 -175q11 -13 22 -13h10q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2t-29.5 1t-37.5 1t-38 -1t-30 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h11q17 0 5 15l-110 136q-2 2 -4 5q-9 12 -18 12h-14q-8 0 -9.5 -3t-1.5 -13v-134q0 -13 1.5 -15.5 t9.5 -2.5h23q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -30 1t-38 1q-19 0 -48 -1t-32 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h41q7 0 8.5 3t1.5 15v193q0 408 -9 408q-2 0 -26 -1.5t-30 -1.5q-7 0 -8.5 1.5t-1.5 6.5z" />
+<glyph unicode="&#x138;" horiz-adv-x="449" d="M12 350q0 6 4 16q2 6 3.5 6.5t11.5 1.5q5 0 47 3t58 4q9 1 11 -0.5t2 -7.5v-3v-150q0 -8 2.5 -9.5t13.5 -1.5h22q4 0 7.5 1t7 4.5l5 5t5.5 6t4 5.5q53 70 79 113q3 5 3.5 6.5t1.5 4t-0.5 3.5t-5 1.5t-9.5 0.5h-20q-8 0 -10.5 3t-2.5 10q0 14 14 14q4 0 25 -1t33 -1 q10 0 30 1t27 1q13 0 13 -14q0 -13 -12 -13h-32q-11 0 -107 -123q-2 -2 -5 -6q-3 -3 -4 -4.5t0.5 -4t3.5 -4.5l5 -5l151 -175q11 -13 22 -13h10q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2t-29.5 1t-37.5 1t-38 -1t-30 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h11 q17 0 5 15l-110 136q-2 2 -4 5q-9 12 -18 12h-14q-8 0 -9.5 -3t-1.5 -13v-134q0 -13 1.5 -15.5t9.5 -2.5h23q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -30 1t-38 1q-19 0 -48 -1t-32 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h41q7 0 8.5 3t1.5 15v119q0 115 -4 174 q-1 11 -2.5 12.5t-9.5 1.5q-1 0 -26.5 -2t-27.5 -2q-3 0 -3 4z" />
+<glyph unicode="&#x139;" horiz-adv-x="592" d="M162 731q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2zM40 15q0 9 2.5 10.5t14.5 1.5h62q9 0 9 292v231q0 89 -7 89h-58q-10 0 -13 2.5t-3 12.5t3.5 12.5t16.5 2.5q6 0 49.5 -1.5t60.5 -1.5q16 0 61.5 1.5t56.5 1.5q12 0 14.5 -2 t2.5 -13q0 -9 -3 -12t-15 -3h-70q-9 0 -9 -215v-277q0 -116 8 -116q227 0 293 6q13 1 17 4t6 19l12 84q2 8 11 8q20 0 20 -10q0 -3 -4.5 -30l-9.5 -60t-7 -44q-1 -11 -22 -11q-11 0 -179.5 1.5t-184.5 1.5t-63.5 -1.5t-58.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="&#x13a;" horiz-adv-x="257" d="M106 731q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2zM20 645q0 2 2 16q1 6 2 6.5t8 1.5q120 9 123 9q5 0 6 -2.5t1 -12.5q1 -160 3.5 -332t2.5 -267q0 -39 8 -39h39q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2 q-8 0 -35.5 1t-43.5 1q-12 0 -44.5 -1t-48.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h52q4 0 4 85q0 395 -11 517q-7 18 -11 19q-3 0 -24.5 -2t-23.5 -2q-8 0 -8 3z" />
+<glyph unicode="&#x13b;" horiz-adv-x="592" d="M278 -225l15 10q15 10 29.5 25.5t14.5 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM40 15q0 9 2.5 10.5t14.5 1.5h62q9 0 9 292v231q0 89 -7 89h-58 q-10 0 -13 2.5t-3 12.5t3.5 12.5t16.5 2.5q6 0 49.5 -1.5t60.5 -1.5q16 0 61.5 1.5t56.5 1.5q12 0 14.5 -2t2.5 -13q0 -9 -3 -12t-15 -3h-70q-9 0 -9 -215v-277q0 -116 8 -116q227 0 293 6q13 1 17 4t6 19l12 84q2 8 11 8q20 0 20 -10q0 -3 -4.5 -30l-9.5 -60t-7 -44 q-1 -11 -22 -11q-11 0 -179.5 1.5t-184.5 1.5t-63.5 -1.5t-58.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="&#x13c;" horiz-adv-x="257" d="M83 -225l15 10q14 10 29 25.5t15 29.5q0 17 -13 30t-26.5 21.5t-13.5 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM20 645q0 2 2 16q1 6 2 6.5t8 1.5q120 9 123 9q5 0 6 -2.5t1 -12.5 q1 -160 3.5 -332t2.5 -267q0 -39 8 -39h39q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -35.5 1t-43.5 1q-12 0 -44.5 -1t-48.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h52q4 0 4 85q0 395 -11 517q-7 18 -11 19q-3 0 -24.5 -2t-23.5 -2q-8 0 -8 3z" />
+<glyph unicode="&#x13d;" horiz-adv-x="592" d="M345 491q0 2 2.5 27t5.5 60.5t5 54.5q3 33 35 33t32 -29q0 -5 -3 -13l-51 -124q-6 -12 -8 -12h-15q-3 0 -3 3zM40 15q0 9 2.5 10.5t14.5 1.5h62q9 0 9 292v231q0 89 -7 89h-58q-10 0 -13 2.5t-3 12.5t3.5 12.5t16.5 2.5q6 0 49.5 -1.5t60.5 -1.5q16 0 61.5 1.5t56.5 1.5 q12 0 14.5 -2t2.5 -13q0 -9 -3 -12t-15 -3h-70q-9 0 -9 -215v-277q0 -116 8 -116q227 0 293 6q13 1 17 4t6 19l12 84q2 8 11 8q20 0 20 -10q0 -3 -4.5 -30l-9.5 -60t-7 -44q-1 -11 -22 -11q-11 0 -179.5 1.5t-184.5 1.5t-63.5 -1.5t-58.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z " />
+<glyph unicode="&#x13e;" horiz-adv-x="257" d="M210 491q0 2 2.5 27t5.5 60.5t5 54.5q3 33 35 33t32 -29q0 -5 -3 -13l-51 -124q-6 -12 -8 -12h-15q-3 0 -3 3zM20 645q0 2 2 16q1 6 2 6.5t8 1.5q120 9 123 9q5 0 6 -2.5t1 -12.5q1 -160 3.5 -332t2.5 -267q0 -39 8 -39h39q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4 t-9 -2q-8 0 -35.5 1t-43.5 1q-12 0 -44.5 -1t-48.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h52q4 0 4 85q0 395 -11 517q-7 18 -11 19q-3 0 -24.5 -2t-23.5 -2q-8 0 -8 3z" />
+<glyph unicode="&#x13f;" horiz-adv-x="592" d="M40 15q0 9 2.5 10.5t14.5 1.5h62q9 0 9 292v231q0 89 -7 89h-58q-10 0 -13 2.5t-3 12.5t3.5 12.5t16.5 2.5q6 0 49.5 -1.5t60.5 -1.5q16 0 61.5 1.5t56.5 1.5q12 0 14.5 -2t2.5 -13q0 -9 -3 -12t-15 -3h-70q-9 0 -9 -215v-277q0 -116 8 -116q227 0 293 6q13 1 17 4t6 19 l12 84q2 8 11 8q20 0 20 -10q0 -3 -4.5 -30l-9.5 -60t-7 -44q-1 -11 -22 -11q-11 0 -179.5 1.5t-184.5 1.5t-63.5 -1.5t-58.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5zM417 333q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5z" />
+<glyph unicode="&#x140;" horiz-adv-x="404" d="M282 333q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM20 645q0 2 2 16q1 6 2 6.5t8 1.5q120 9 123 9q5 0 6 -2.5t1 -12.5q1 -160 3.5 -332t2.5 -267q0 -39 8 -39h39q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2 q-8 0 -35.5 1t-43.5 1q-12 0 -44.5 -1t-48.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h52q4 0 4 85q0 395 -11 517q-7 18 -11 19q-3 0 -24.5 -2t-23.5 -2q-8 0 -8 3z" />
+<glyph unicode="&#x141;" horiz-adv-x="592" d="M40 15q0 9 2.5 10.5t14.5 1.5h62q7 0 9 194q0 7 -8 4q-76 -36 -77 -36q-3 0 -3 16q0 8 2 10l78 36q8 3 8 15v284q0 89 -7 89h-58q-10 0 -13 2.5t-3 12.5t3.5 12.5t16.5 2.5q6 0 49.5 -1.5t60.5 -1.5q16 0 61.5 1.5t56.5 1.5q12 0 14.5 -2t2.5 -13q0 -9 -3 -12t-15 -3h-70 q-9 0 -9 -215v-117q0 -8 2.5 -9t9.5 3l95.5 44.5l120.5 56.5l51 23q2 0 2 -12q0 -14 -2 -14l-267 -124q-10 -5 -11 -9q-1 -2 -1 -7v-112q0 -116 8 -116q227 0 293 6q13 1 17 4t6 19l12 84q2 8 11 8q20 0 20 -10q0 -3 -4.5 -30l-9.5 -60t-7 -44q-1 -11 -22 -11 q-11 0 -179.5 1.5t-184.5 1.5t-63.5 -1.5t-58.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="&#x142;" horiz-adv-x="257" d="M20 645q0 2 2 16q1 6 2 6.5t8 1.5q120 9 123 9q5 0 6 -2.5t1 -12.5q0 -131 2 -275q0 -7 2 -7.5t6 2.5q51 30 52 30q3 0 3 -18q0 -8 -1 -9l-52 -30q-9 -5 -9 -12q0 -32 1 -85.5t1.5 -100t0.5 -94.5q0 -39 8 -39h39q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2 q-8 0 -35.5 1t-43.5 1q-12 0 -44.5 -1t-48.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h52q4 0 4 85q0 9 -2 193q0 8 -8 4l-19.5 -11.5l-26.5 -15.5l-11 -6q-2 0 -2 10q0 16 3 18l56 32q8 5 8 16q-4 219 -9 277q-7 18 -11 19q-3 0 -24.5 -2t-23.5 -2q-8 0 -8 3z" />
+<glyph unicode="&#x143;" horiz-adv-x="814" d="M411 731q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2zM40 15q0 9 3 10.5t15 1.5h44q3 0 5 2.5t3 7.5t1.5 11t1 15.5t0.5 18.5t0.5 22.5t0.5 24.5l8 510h-68q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q6 0 53.5 -1.5t58.5 -1.5 q13 0 33.5 1.5t21.5 1.5q10 0 20 -13l406 -499q16 -20 18 -20q4 0 4 28v42q0 49 -1 187t-1 189q0 56 -1 56h-94q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q11 0 50.5 -1.5t55.5 -1.5t43.5 1.5t38.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-47q-4 0 -4 -59 q0 -68 -3.5 -209.5l-6.5 -253t-3 -113.5q0 -22 -10 -22q-4 0 -18 16l-492 598q-14 18 -16 18q-3 0 -3 -20q-1 -25 -1 -122q0 -54 -0.5 -175.5t-0.5 -167.5q0 -102 5 -102h86q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -50.5 1.5t-55.5 1.5t-43.5 -1.5t-38.5 -1.5 q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x144;" horiz-adv-x="514" d="M257 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM25 350q0 4 5 16q2 6 3.5 6.5t11.5 1.5q5 0 47 3t58 4q9 1 11 -0.5t2 -7.5v-3v-42q0 -6 13 3l2 2l18 12t23 14.5t23 11.5t31 10t33 3q42 0 69.5 -13 t41 -39.5t18 -55t4.5 -69.5q0 -33 -2.5 -100t-2.5 -70q0 -8 1.5 -10t9.5 -2h30q9 0 11.5 -2t2.5 -11q0 -6 -0.5 -8t-3 -4t-8.5 -2q-8 0 -33.5 1t-41.5 1q-12 0 -40.5 -1t-44.5 -1q-10 0 -12 2t-2 11t2.5 11.5t10.5 2.5h37q7 0 8.5 1.5t2.5 9.5q4 48 4 176q0 130 -96 130 q-33 0 -89 -28q-18 -9 -18 -23q0 -41 -0.5 -123.5t-0.5 -123.5q0 -9 0.5 -12.5t3 -5t9.5 -1.5h36q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -36.5 1t-44.5 1q-12 0 -42 -1t-46 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h39q6 0 7.5 2.5t2.5 11.5v4q5 98 5 194 q0 68 -2 99q-1 11 -2.5 12.5t-9.5 1.5q-1 0 -27 -2t-28 -2q-3 0 -3 4z" />
+<glyph unicode="&#x145;" horiz-adv-x="814" d="M360 -225l15 10q15 10 29.5 25.5t14.5 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM40 15q0 9 3 10.5t15 1.5h44q3 0 5 2.5t3 7.5t1.5 11t1 15.5t0.5 18.5 t0.5 22.5t0.5 24.5l8 510h-68q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q6 0 53.5 -1.5t58.5 -1.5q13 0 33.5 1.5t21.5 1.5q10 0 20 -13l406 -499q16 -20 18 -20q4 0 4 28v42q0 49 -1 187t-1 189q0 56 -1 56h-94q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q11 0 50.5 -1.5t55.5 -1.5 t43.5 1.5t38.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-47q-4 0 -4 -59q0 -68 -3.5 -209.5l-6.5 -253t-3 -113.5q0 -22 -10 -22q-4 0 -18 16l-492 598q-14 18 -16 18q-3 0 -3 -20q-1 -25 -1 -122q0 -54 -0.5 -175.5t-0.5 -167.5q0 -102 5 -102h86q8 0 9.5 -2 t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -50.5 1.5t-55.5 1.5t-43.5 -1.5t-38.5 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x146;" horiz-adv-x="514" d="M210 -225l15 10q15 10 29.5 25.5t14.5 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM25 350q0 4 5 16q2 6 3.5 6.5t11.5 1.5q5 0 47 3t58 4q9 1 11 -0.5 t2 -7.5v-3v-42q0 -6 13 3l2 2l18 12t23 14.5t23 11.5t31 10t33 3q42 0 69.5 -13t41 -39.5t18 -55t4.5 -69.5q0 -33 -2.5 -100t-2.5 -70q0 -8 1.5 -10t9.5 -2h30q9 0 11.5 -2t2.5 -11q0 -6 -0.5 -8t-3 -4t-8.5 -2q-8 0 -33.5 1t-41.5 1q-12 0 -40.5 -1t-44.5 -1q-10 0 -12 2 t-2 11t2.5 11.5t10.5 2.5h37q7 0 8.5 1.5t2.5 9.5q4 48 4 176q0 130 -96 130q-33 0 -89 -28q-18 -9 -18 -23q0 -41 -0.5 -123.5t-0.5 -123.5q0 -9 0.5 -12.5t3 -5t9.5 -1.5h36q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -36.5 1t-44.5 1q-12 0 -42 -1t-46 -1 q-9 0 -11 2.5t-2 11.5q0 13 12 13h39q6 0 7.5 2.5t2.5 11.5v4q5 98 5 194q0 68 -2 99q-1 11 -2.5 12.5t-9.5 1.5q-1 0 -27 -2t-28 -2q-3 0 -3 4z" />
+<glyph unicode="&#x147;" horiz-adv-x="814" d="M310 837q0 2 6 2h9q1 0 11 -6l81 -45q4 -2 8 0l81 45q10 6 11 6h9q6 0 6 -2l-4 -6l-79 -89q-12 -13 -16 -13h-24q-4 0 -16 13l-79 89q-4 4 -4 6zM40 15q0 9 3 10.5t15 1.5h44q3 0 5 2.5t3 7.5t1.5 11t1 15.5t0.5 18.5t0.5 22.5t0.5 24.5l8 510h-68q-8 0 -9.5 2t-1.5 11 q0 11 2 14t9 3q6 0 53.5 -1.5t58.5 -1.5q13 0 33.5 1.5t21.5 1.5q10 0 20 -13l406 -499q16 -20 18 -20q4 0 4 28v42q0 49 -1 187t-1 189q0 56 -1 56h-94q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q11 0 50.5 -1.5t55.5 -1.5t43.5 1.5t38.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5 t-15 -1.5h-47q-4 0 -4 -59q0 -68 -3.5 -209.5l-6.5 -253t-3 -113.5q0 -22 -10 -22q-4 0 -18 16l-492 598q-14 18 -16 18q-3 0 -3 -20q-1 -25 -1 -122q0 -54 -0.5 -175.5t-0.5 -167.5q0 -102 5 -102h86q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -50.5 1.5t-55.5 1.5 t-43.5 -1.5t-38.5 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x148;" horiz-adv-x="514" d="M162 597q0 2 5 2h12q1 0 8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM25 350q0 4 5 16q2 6 3.5 6.5t11.5 1.5q5 0 47 3t58 4q9 1 11 -0.5t2 -7.5v-3v-42 q0 -6 13 3l2 2l18 12t23 14.5t23 11.5t31 10t33 3q42 0 69.5 -13t41 -39.5t18 -55t4.5 -69.5q0 -33 -2.5 -100t-2.5 -70q0 -8 1.5 -10t9.5 -2h30q9 0 11.5 -2t2.5 -11q0 -6 -0.5 -8t-3 -4t-8.5 -2q-8 0 -33.5 1t-41.5 1q-12 0 -40.5 -1t-44.5 -1q-10 0 -12 2t-2 11t2.5 11.5 t10.5 2.5h37q7 0 8.5 1.5t2.5 9.5q4 48 4 176q0 130 -96 130q-33 0 -89 -28q-18 -9 -18 -23q0 -41 -0.5 -123.5t-0.5 -123.5q0 -9 0.5 -12.5t3 -5t9.5 -1.5h36q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -36.5 1t-44.5 1q-12 0 -42 -1t-46 -1q-9 0 -11 2.5 t-2 11.5q0 13 12 13h39q6 0 7.5 2.5t2.5 11.5v4q5 98 5 194q0 68 -2 99q-1 11 -2.5 12.5t-9.5 1.5q-1 0 -27 -2t-28 -2q-3 0 -3 4z" />
+<glyph unicode="&#x149;" horiz-adv-x="723" d="M234 350q0 4 5 16q2 6 3.5 6.5t11.5 1.5q5 0 47 3t58 4q9 1 11 -0.5t2 -7.5v-3v-42q0 -6 13 3l2 2l18 12t23 14.5t23 11.5t31 10t33 3q42 0 69.5 -13t41 -39.5t18 -55t4.5 -69.5q0 -33 -2.5 -100t-2.5 -70q0 -8 1.5 -10t9.5 -2h30q9 0 11.5 -2t2.5 -11q0 -6 -0.5 -8 t-3 -4t-8.5 -2q-8 0 -33.5 1t-41.5 1q-12 0 -40.5 -1t-44.5 -1q-10 0 -12 2t-2 11t2.5 11.5t10.5 2.5h37q8 0 9 1.5t2 9.5q4 48 4 176q0 130 -96 130q-33 0 -89 -28q-18 -9 -18 -23q0 -41 -0.5 -123.5t-0.5 -123.5q0 -9 0.5 -12.5t3 -5t9.5 -1.5h36q8 0 10.5 -3t2.5 -10 q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -36.5 1t-44.5 1q-12 0 -42 -1t-46 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h39q6 0 7.5 2.5t2.5 11.5v4q5 98 5 194q0 68 -2 99q-1 11 -2.5 12.5t-9.5 1.5q-1 0 -27 -2t-28 -2q-3 0 -3 4zM60 453q0 1 17 17t34.5 37t17.5 36q0 13 -24 39 t-24 39q0 16 17 39t30 23q7 0 29 -34t22 -51q0 -32 -24.5 -72.5t-49 -65.5t-29.5 -25t-10.5 6.5t-5.5 11.5z" />
+<glyph unicode="&#x14a;" horiz-adv-x="814" d="M40 15q0 9 3 10.5t15 1.5h44q3 0 5 2.5t3 7.5t1.5 11t1 15.5t0.5 18.5t0.5 22.5t0.5 24.5l8 510h-68q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q6 0 53.5 -1.5t58.5 -1.5q13 0 33.5 1.5t21.5 1.5q10 0 20 -13l406 -499q16 -20 18 -20q4 0 4 28v42q0 49 -1 187t-1 189 q0 56 -1 56h-94q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q11 0 50.5 -1.5t55.5 -1.5t43.5 1.5t38.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-47q-4 0 -4 -59q0 -68 -3.5 -209.5l-6.5 -253t-3 -113.5q0 -152 -52 -220q-13 -17 -57.5 -38t-66.5 -21q-19 0 -19 20 q0 16 14.5 34.5t26.5 18.5t31.5 -2t23.5 -2q19 0 28.5 9.5t9.5 23.5q0 11 -1 40.5l-2.5 71.5l-2.5 71q-1 37 -15 54l-438 532q-14 18 -16 18q-3 0 -3 -20q-1 -25 -1 -122q0 -54 -0.5 -175.5t-0.5 -167.5q0 -102 5 -102h86q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3 q-11 0 -50.5 1.5t-55.5 1.5t-43.5 -1.5t-38.5 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x14b;" horiz-adv-x="514" d="M25 350q0 4 5 16q2 6 3.5 6.5t11.5 1.5q5 0 47 3t58 4q9 1 11 -0.5t2 -7.5v-3v-42q0 -6 13 3l2 2l18 12t23 14.5t23 11.5t31 10t33 3q42 0 69.5 -13t41 -39.5t18 -55t4.5 -69.5v-174q0 -91 -10.5 -148.5t-43.5 -100.5q-13 -17 -57.5 -38t-66.5 -21q-19 0 -19 20 q0 16 14.5 34.5t26.5 18.5t31.5 -2t23.5 -2q19 0 28.5 9.5t9.5 23.5q0 10 -2.5 76.5t-3.5 106.5q-2 79 -2 202q0 130 -96 130q-33 0 -89 -28q-18 -9 -18 -23q0 -41 -0.5 -123.5t-0.5 -123.5q0 -9 0.5 -12.5t3 -5t9.5 -1.5h36q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4 t-9 -2q-8 0 -36.5 1t-44.5 1q-12 0 -42 -1t-46 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h39q6 0 7.5 2.5t2.5 11.5v4q5 98 5 194q0 68 -2 99q-1 11 -2.5 12.5t-9.5 1.5q-1 0 -27 -2t-28 -2q-3 0 -3 4z" />
+<glyph unicode="&#x14c;" horiz-adv-x="752" d="M273 788v23q0 6 1.5 7t7.5 1h187q5 0 6.5 -1t1.5 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM45 318q0 158 99 257.5t241 99.5q145 0 233.5 -101t88.5 -250t-94.5 -242t-242.5 -93q-83 0 -155.5 36.5t-121 113.5t-48.5 179zM139 345q0 -140 63 -234t169 -94 q79 0 136 48t82.5 118t25.5 150t-25 149.5t-81 117t-134 47.5q-103 0 -169.5 -91t-66.5 -211z" />
+<glyph unicode="&#x14d;" horiz-adv-x="446" d="M128 518v23q0 6 1.5 7t7.5 1h187q6 0 7 -1t1 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM30 183q0 90 57 151.5t148 61.5q80 0 130.5 -57.5t50.5 -141.5q0 -94 -53 -153t-144 -59q-80 0 -134.5 58t-54.5 140zM101 169q0 -62 31.5 -110t86.5 -48q36 0 61.5 17 t38.5 46.5t18.5 61t5.5 68.5q0 66 -31 116t-89 50q-122 0 -122 -201z" />
+<glyph unicode="&#x14e;" horiz-adv-x="752" d="M272 832q0 6 1 6h17q1 0 2 -6t4.5 -15t10.5 -17.5t24.5 -14.5t43.5 -6t43.5 6t24.5 14.5t10.5 17.5t4.5 15t2 6h17q1 0 1 -6q0 -45 -26 -74t-77 -29t-77 29t-26 74zM45 318q0 158 99 257.5t241 99.5q145 0 233.5 -101t88.5 -250t-94.5 -242t-242.5 -93q-83 0 -155.5 36.5 t-121 113.5t-48.5 179zM139 345q0 -140 63 -234t169 -94q79 0 136 48t82.5 118t25.5 150t-25 149.5t-81 117t-134 47.5q-103 0 -169.5 -91t-66.5 -211z" />
+<glyph unicode="&#x14f;" horiz-adv-x="446" d="M127 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84zM30 183q0 90 57 151.5t148 61.5q80 0 130.5 -57.5t50.5 -141.5q0 -94 -53 -153t-144 -59 q-80 0 -134.5 58t-54.5 140zM101 169q0 -62 31.5 -110t86.5 -48q36 0 61.5 17t38.5 46.5t18.5 61t5.5 68.5q0 66 -31 116t-89 50q-122 0 -122 -201z" />
+<glyph unicode="&#x150;" horiz-adv-x="752" d="M298 731q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2zM418 731q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2zM45 318q0 158 99 257.5t241 99.5q145 0 233.5 -101t88.5 -250t-94.5 -242 t-242.5 -93q-83 0 -155.5 36.5t-121 113.5t-48.5 179zM139 345q0 -140 63 -234t169 -94q79 0 136 48t82.5 118t25.5 150t-25 149.5t-81 117t-134 47.5q-103 0 -169.5 -91t-66.5 -211z" />
+<glyph unicode="&#x151;" horiz-adv-x="446" d="M150 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM260 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM30 183q0 90 57 151.5t148 61.5 q80 0 130.5 -57.5t50.5 -141.5q0 -94 -53 -153t-144 -59q-80 0 -134.5 58t-54.5 140zM101 169q0 -62 31.5 -110t86.5 -48q36 0 61.5 17t38.5 46.5t18.5 61t5.5 68.5q0 66 -31 116t-89 50q-122 0 -122 -201z" />
+<glyph unicode="&#x152;" horiz-adv-x="996" d="M45 318q0 158 99 257.5t241 99.5q33 0 92 -6.5t81 -6.5q28 0 128.5 1.5t120.5 1.5q47 0 56.5 1.5t10.5 10.5v1q1 12 13 12q11 0 14 -2t3 -9q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 7 -272 7q-7 0 -7 -128q0 -42 2 -142 q0 -10 1.5 -13t10.5 -3h167q55 0 55 16v50q0 9 17 9q14 0 14 -8q0 -1 -1 -29t-1 -49t1 -50t1 -33q0 -8 -13 -8q-18 0 -18 9v46q0 7 -2 10t-15 6.5t-38 3.5h-163q-12 0 -14 -2t-2 -13q1 -53 1.5 -130t1 -111.5t3.5 -34.5q27 0 68.5 0.5l81 1t75 0.5t58.5 0.5t24 0.5 q12 0 15 3t4 20q1 14 3 87q0 8 14 8q17 0 17 -9q0 -28 -1.5 -77t-1.5 -61q0 -11 -22 -11q-11 0 -182.5 1.5t-187.5 1.5q-45 0 -100 -5.5t-96 -5.5q-83 0 -155.5 36.5t-121 113.5t-48.5 179zM139 345q0 -110 40.5 -193.5t112.5 -116.5q41 -19 133 -19q29 0 51 5.5t31.5 11.5 t9.5 12q0 21 -0.5 75t-0.5 78q0 31 -0.5 72t-1 78t-1 69.5t-1 53t-0.5 21.5v93q0 15 -1.5 24.5t-2 15t-8.5 9t-10 4.5t-17 3t-21 3q-18 3 -74 3q-104 0 -171.5 -90.5t-67.5 -211.5z" />
+<glyph unicode="&#x153;" horiz-adv-x="733" d="M30 183q0 90 57 151.5t148 61.5q83 0 136 -64q9 -11 11 -11q1 0 12 11q58 64 149 64q71 0 110 -46t39 -113q0 -5 -20 -8.5t-34 -3.5q-6 0 -113 2.5t-111 2.5q-5 0 -5 -36q0 -76 44.5 -120.5t104.5 -44.5q22 0 43.5 6.5t36 16.5t25.5 19.5t17 16.5l7 6q2 0 9 -6.5t7 -8.5 q0 -5 -21 -26.5t-64 -44.5t-88 -23q-95 0 -144 62l-12 15q-1 0 -10 -12q-46 -65 -145 -65q-80 0 -134.5 58t-54.5 140zM101 169q0 -62 31.5 -110t86.5 -48q36 0 61.5 17t38.5 46.5t18.5 61t5.5 68.5q0 66 -31 116t-89 50q-122 0 -122 -201zM414 255q0 -8 12 -8q57 0 157 4 q40 1 40 4q0 65 -29.5 92t-62.5 27q-46 0 -80 -38.5t-37 -80.5z" />
+<glyph unicode="&#x154;" horiz-adv-x="641" d="M287 731q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2zM40 649q0 7 2.5 10.5t6 4t11.5 0.5q6 0 51 -1t62 -1q16 0 75 3t70 3q42 0 77 -7.5t68.5 -25t53 -52.5t19.5 -85q0 -32 -14.5 -61t-37.5 -49t-42.5 -32t-39.5 -21 q-5 -3 -10.5 -4.5t-7.5 -2.5l-2 -1l2 -1q2 0 7 -1t11 -3q160 -48 167 -230q2 -44 4 -54.5t10 -10.5h46q7 0 9.5 -3.5t2.5 -18.5q0 -8 -17 -8l-133 3q-5 0 -6.5 1t-1.5 7v58q0 43 -2 72t-12 64.5t-27.5 57t-51 36.5t-80.5 16q-10 0 -43.5 0.5t-48.5 0.5q-11 0 -11 -11 q0 -62 3.5 -168.5t7.5 -106.5h61q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -51.5 1.5t-56.5 1.5q-18 0 -57 -1.5t-41 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h45q5 0 5 129v133q0 345 -12 345l-55 -2q-20 0 -20 17zM207 345q0 -6 3 -8t13 -2q20 0 65 -0.5 t63 -1.5q10 0 12 1q88 40 88 150q0 71 -55.5 114.5t-129.5 43.5q-18 0 -52 -2q-7 0 -7 -54v-241z" />
+<glyph unicode="&#x155;" horiz-adv-x="329" d="M166 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM25 353q0 5 3 12q2 6 3.5 6.5t11.5 1.5q42 3 105 3q10 0 11 -0.5t1 -4.5v-5q0 -10 -0.5 -32t-0.5 -32q0 -18 1 -18t2.5 4t3 10.5t3.5 10.5q17 39 43 62 t50 23q20 0 38.5 -16t18.5 -27q0 -9 -13 -25t-24 -16q-12 0 -31 15.5t-29 15.5q-57 0 -57 -204q0 -112 12 -112h63q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -49 1t-57 1q-12 0 -41 -1t-45 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h43q9 0 9 137q0 189 -7 189 q-1 0 -31.5 -1t-32.5 -1q-3 0 -3 4z" />
+<glyph unicode="&#x156;" horiz-adv-x="641" d="M308 -225l15 10q15 10 29.5 25.5t14.5 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM40 649q0 7 2.5 10.5t6 4t11.5 0.5q6 0 51 -1t62 -1q16 0 75 3t70 3 q42 0 77 -7.5t68.5 -25t53 -52.5t19.5 -85q0 -32 -14.5 -61t-37.5 -49t-42.5 -32t-39.5 -21q-5 -3 -10.5 -4.5t-7.5 -2.5l-2 -1l2 -1q2 0 7 -1t11 -3q160 -48 167 -230q2 -44 4 -54.5t10 -10.5h46q7 0 9.5 -3.5t2.5 -18.5q0 -8 -17 -8l-133 3q-5 0 -6.5 1t-1.5 7v58 q0 43 -2 72t-12 64.5t-27.5 57t-51 36.5t-80.5 16q-10 0 -43.5 0.5t-48.5 0.5q-11 0 -11 -11q0 -62 3.5 -168.5t7.5 -106.5h61q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -51.5 1.5t-56.5 1.5q-18 0 -57 -1.5t-41 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h45 q5 0 5 129v133q0 345 -12 345l-55 -2q-20 0 -20 17zM207 345q0 -6 3 -8t13 -2q20 0 65 -0.5t63 -1.5q10 0 12 1q88 40 88 150q0 71 -55.5 114.5t-129.5 43.5q-18 0 -52 -2q-7 0 -7 -54v-241z" />
+<glyph unicode="&#x157;" horiz-adv-x="329" d="M90 -225l14 10q15 10 30 25.5t15 29.5q0 17 -13 30t-26.5 21.5t-13.5 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM25 353q0 5 3 12q2 6 3.5 6.5t11.5 1.5q42 3 105 3q10 0 11 -0.5t1 -4.5v-5 q0 -10 -0.5 -32t-0.5 -32q0 -18 1 -18t2.5 4t3 10.5t3.5 10.5q17 39 43 62t50 23q20 0 38.5 -16t18.5 -27q0 -9 -13 -25t-24 -16q-12 0 -31 15.5t-29 15.5q-57 0 -57 -204q0 -112 12 -112h63q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -49 1t-57 1q-12 0 -41 -1 t-45 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h43q9 0 9 137q0 189 -7 189q-1 0 -31.5 -1t-32.5 -1q-3 0 -3 4z" />
+<glyph unicode="&#x158;" horiz-adv-x="641" d="M186 837q0 2 6 2h9q1 0 11 -6l81 -45q4 -2 8 0l81 45q10 6 11 6h9q6 0 6 -2l-4 -6l-79 -89q-12 -13 -16 -13h-24q-4 0 -16 13l-79 89q-4 4 -4 6zM40 649q0 7 2.5 10.5t6 4t11.5 0.5q6 0 51 -1t62 -1q16 0 75 3t70 3q42 0 77 -7.5t68.5 -25t53 -52.5t19.5 -85 q0 -32 -14.5 -61t-37.5 -49t-42.5 -32t-39.5 -21q-5 -3 -10.5 -4.5t-7.5 -2.5l-2 -1l2 -1q2 0 7 -1t11 -3q160 -48 167 -230q2 -44 4 -54.5t10 -10.5h46q7 0 9.5 -3.5t2.5 -18.5q0 -8 -17 -8l-133 3q-5 0 -6.5 1t-1.5 7v58q0 43 -2 72t-12 64.5t-27.5 57t-51 36.5t-80.5 16 q-10 0 -43.5 0.5t-48.5 0.5q-11 0 -11 -11q0 -62 3.5 -168.5t7.5 -106.5h61q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -51.5 1.5t-56.5 1.5q-18 0 -57 -1.5t-41 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h45q5 0 5 129v133q0 345 -12 345l-55 -2q-20 0 -20 17 zM207 345q0 -6 3 -8t13 -2q20 0 65 -0.5t63 -1.5q10 0 12 1q88 40 88 150q0 71 -55.5 114.5t-129.5 43.5q-18 0 -52 -2q-7 0 -7 -54v-241z" />
+<glyph unicode="&#x159;" horiz-adv-x="329" d="M71 597q0 2 5 2h12l8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM25 353q0 5 3 12q2 6 3.5 6.5t11.5 1.5q42 3 105 3q10 0 11 -0.5t1 -4.5v-5q0 -10 -0.5 -32 t-0.5 -32q0 -18 1 -18t2.5 4t3 10.5t3.5 10.5q17 39 43 62t50 23q20 0 38.5 -16t18.5 -27q0 -9 -13 -25t-24 -16q-12 0 -31 15.5t-29 15.5q-57 0 -57 -204q0 -112 12 -112h63q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -49 1t-57 1q-12 0 -41 -1t-45 -1 q-9 0 -11 2.5t-2 11.5q0 13 12 13h43q9 0 9 137q0 189 -7 189q-1 0 -31.5 -1t-32.5 -1q-3 0 -3 4z" />
+<glyph unicode="&#x15a;" horiz-adv-x="528" d="M259 731q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2zM55 488q0 81 65 135t149 54q73 0 135 -42q10 -8 16 -8t7 10l1 11q0 9 2 11.5t13 2.5q12 0 15.5 -2.5t3.5 -11.5l-2 -63q-3 -63 -3 -94q0 -9 -3 -12.5t-13 -3.5q-13 0 -16 2.5 t-3 9.5q0 1 1.5 30t1.5 34q0 22 -51.5 60t-102.5 38q-57 0 -95 -37t-38 -92q0 -43 26.5 -73.5t65.5 -46l85.5 -34t85.5 -37.5t65.5 -58t26.5 -93q0 -88 -67.5 -140.5t-156.5 -52.5q-51 0 -99 9.5t-73 20t-26 16.5l-3.5 48l-4.5 62t-2 34q0 14 12 14h5q15 0 16 -16l6 -92 q1 -21 65.5 -42t112.5 -21q54 0 93.5 35t39.5 86q0 42 -26.5 72t-66 46.5l-85.5 36.5t-85.5 40t-66 60t-26.5 94z" />
+<glyph unicode="&#x15b;" horiz-adv-x="337" d="M154 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM35 50q0 11 11.5 24.5t18.5 13.5q3 0 5 -3.5t5.5 -10.5t8.5 -13q42 -50 93 -50q28 0 47 16.5t19 48.5t-23 51.5t-66 37.5q-2 1 -18 8t-19 8.5t-17 8 t-17.5 10t-13.5 11t-13.5 14t-9 15t-7 18.5t-1.5 22q0 48 44 80.5t100 32.5q51 0 77.5 -22.5t26.5 -44.5q0 -7 -15 -13t-25 -6q-7 0 -12.5 10t-10 22.5t-18.5 22.5t-36 10q-29 0 -51 -17t-22 -53q0 -15 5.5 -27t21 -22.5t24 -15t31.5 -15.5q33 -16 45.5 -22.5t36 -22.5 t33 -33t9.5 -38q0 -53 -41.5 -85.5t-99.5 -32.5q-46 0 -86 19.5t-40 42.5z" />
+<glyph unicode="&#x15c;" horiz-adv-x="528" d="M158 731l4 6l79 89q12 13 16 13h24q4 0 16 -13l79 -89q4 -4 4 -6t-6 -2h-9q-1 0 -11 6l-81 45q-4 2 -8 0l-81 -45q-10 -6 -11 -6h-9q-6 0 -6 2zM55 488q0 81 65 135t149 54q73 0 135 -42q10 -8 16 -8t7 10l1 11q0 9 2 11.5t13 2.5q12 0 15.5 -2.5t3.5 -11.5l-2 -63 q-3 -63 -3 -94q0 -9 -3 -12.5t-13 -3.5q-13 0 -16 2.5t-3 9.5q0 1 1.5 30t1.5 34q0 22 -51.5 60t-102.5 38q-57 0 -95 -37t-38 -92q0 -43 26.5 -73.5t65.5 -46l85.5 -34t85.5 -37.5t65.5 -58t26.5 -93q0 -88 -67.5 -140.5t-156.5 -52.5q-51 0 -99 9.5t-73 20t-26 16.5 l-3.5 48l-4.5 62t-2 34q0 14 12 14h5q15 0 16 -16l6 -92q1 -21 65.5 -42t112.5 -21q54 0 93.5 35t39.5 86q0 42 -26.5 72t-66 46.5l-85.5 36.5t-85.5 40t-66 60t-26.5 94z" />
+<glyph unicode="&#x15d;" horiz-adv-x="337" d="M59 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM35 50q0 11 11.5 24.5t18.5 13.5q3 0 5 -3.5t5.5 -10.5t8.5 -13q42 -50 93 -50q28 0 47 16.5 t19 48.5t-23 51.5t-66 37.5q-2 1 -18 8t-19 8.5t-17 8t-17.5 10t-13.5 11t-13.5 14t-9 15t-7 18.5t-1.5 22q0 48 44 80.5t100 32.5q51 0 77.5 -22.5t26.5 -44.5q0 -7 -15 -13t-25 -6q-7 0 -12.5 10t-10 22.5t-18.5 22.5t-36 10q-29 0 -51 -17t-22 -53q0 -15 5.5 -27 t21 -22.5t24 -15t31.5 -15.5q33 -16 45.5 -22.5t36 -22.5t33 -33t9.5 -38q0 -53 -41.5 -85.5t-99.5 -32.5q-46 0 -86 19.5t-40 42.5z" />
+<glyph unicode="&#x15e;" horiz-adv-x="528" d="M55 488q0 81 65 135t149 54q73 0 135 -42q10 -8 16 -8t7 10l1 11q0 9 2 11.5t13 2.5q12 0 15.5 -2.5t3.5 -11.5l-2 -63q-3 -63 -3 -94q0 -9 -3 -12.5t-13 -3.5q-13 0 -16 2.5t-3 9.5q0 1 1.5 30t1.5 34q0 22 -51.5 60t-102.5 38q-57 0 -95 -37t-38 -92q0 -43 26.5 -73.5 t65.5 -46l85.5 -34t85.5 -37.5t65.5 -58t26.5 -93q0 -85 -62.5 -137t-148.5 -56l-19 -50q-2 -9 0 -9l5 2l14.5 2.5t16.5 1.5q40 0 62.5 -21t22.5 -47q0 -35 -29.5 -63.5t-76.5 -28.5q-23 0 -43.5 6.5t-30 12.5t-9.5 9q0 11 8 11l9 -3q8 -4 22 -8t29 -4q34 0 50 13.5t16 42.5 q0 45 -55 45q-8 0 -16.5 -2.5t-14 -4.5t-6.5 -2q-8 0 -8 5q0 3 35 92q-50 0 -97 10t-71 20t-25 16l-3.5 48l-4.5 62t-2 34q0 14 12 14h5q15 0 16 -16l6 -92q1 -21 65.5 -42t112.5 -21q54 0 93.5 35t39.5 86q0 42 -26.5 72t-66 46.5l-85.5 36.5t-85.5 40t-66 60t-26.5 94z " />
+<glyph unicode="&#x15f;" horiz-adv-x="337" d="M35 50q0 11 11.5 24.5t18.5 13.5q3 0 5 -3.5t5.5 -10.5t8.5 -13q42 -50 93 -50q28 0 47 16.5t19 48.5t-23 51.5t-66 37.5q-2 1 -18 8t-19 8.5t-17 8t-17.5 10t-13.5 11t-13.5 14t-9 15t-7 18.5t-1.5 22q0 48 44 80.5t100 32.5q51 0 77.5 -22.5t26.5 -44.5q0 -7 -15 -13 t-25 -6q-7 0 -12.5 10t-10 22.5t-18.5 22.5t-36 10q-29 0 -51 -17t-22 -53q0 -15 5.5 -27t21 -22.5t24 -15t31.5 -15.5q33 -16 45.5 -22.5t36 -22.5t33 -33t9.5 -38q0 -48 -35 -80t-87 -37l-20 -54q-2 -9 0 -9l6 2q5 1 13.5 2.5t16.5 1.5q40 0 62.5 -21t22.5 -47 q0 -35 -29.5 -63.5t-76.5 -28.5q-23 0 -43.5 6.5t-30 12.5t-9.5 9q0 11 8 11l8 -3q9 -4 23 -8t29 -4q34 0 50 13.5t16 42.5q0 45 -55 45q-8 0 -16.5 -2.5t-14 -4.5t-6.5 -2q-8 0 -8 5q0 6 36 95h-1q-46 0 -86 19.5t-40 42.5z" />
+<glyph unicode="&#x160;" horiz-adv-x="528" d="M158 837q0 2 6 2h9q1 0 11 -6l81 -45q4 -2 8 0l81 45q10 6 11 6h9q6 0 6 -2l-4 -6l-79 -89q-12 -13 -16 -13h-24q-4 0 -16 13l-79 89q-4 4 -4 6zM55 488q0 81 65 135t149 54q73 0 135 -42q10 -8 16 -8t7 10l1 11q0 9 2 11.5t13 2.5q12 0 15.5 -2.5t3.5 -11.5l-2 -63 q-3 -63 -3 -94q0 -9 -3 -12.5t-13 -3.5q-13 0 -16 2.5t-3 9.5q0 1 1.5 30t1.5 34q0 22 -51.5 60t-102.5 38q-57 0 -95 -37t-38 -92q0 -43 26.5 -73.5t65.5 -46l85.5 -34t85.5 -37.5t65.5 -58t26.5 -93q0 -88 -67.5 -140.5t-156.5 -52.5q-51 0 -99 9.5t-73 20t-26 16.5 l-3.5 48l-4.5 62t-2 34q0 14 12 14h5q15 0 16 -16l6 -92q1 -21 65.5 -42t112.5 -21q54 0 93.5 35t39.5 86q0 42 -26.5 72t-66 46.5l-85.5 36.5t-85.5 40t-66 60t-26.5 94z" />
+<glyph unicode="&#x161;" horiz-adv-x="337" d="M59 597q0 2 5 2h12l8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM35 50q0 11 11.5 24.5t18.5 13.5q3 0 5 -3.5t5.5 -10.5t8.5 -13q42 -50 93 -50q28 0 47 16.5 t19 48.5t-23 51.5t-66 37.5q-2 1 -18 8t-19 8.5t-17 8t-17.5 10t-13.5 11t-13.5 14t-9 15t-7 18.5t-1.5 22q0 48 44 80.5t100 32.5q51 0 77.5 -22.5t26.5 -44.5q0 -7 -15 -13t-25 -6q-7 0 -12.5 10t-10 22.5t-18.5 22.5t-36 10q-29 0 -51 -17t-22 -53q0 -15 5.5 -27 t21 -22.5t24 -15t31.5 -15.5q33 -16 45.5 -22.5t36 -22.5t33 -33t9.5 -38q0 -53 -41.5 -85.5t-99.5 -32.5q-46 0 -86 19.5t-40 42.5z" />
+<glyph unicode="&#x162;" horiz-adv-x="690" d="M20 544l4 22q3 21 7 52.5t6 53.5q1 10 3 12t13 2q13 0 13 -6v-11q0 -6 108 -6h357q108 0 109 11q1 12 13 12q11 0 14 -2t3 -9q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 8 -113 8h-116q-3 0 -5 -10t-3 -30.5t-1 -36t-0.5 -44 t-0.5 -37.5l-1 -29q0 -28 -1 -72.5t-2 -94.5t-1.5 -102t-0.5 -87q0 -65 2 -65h74q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-9 0 -50.5 1.5t-59.5 1.5l-24 -65q-2 -9 0 -9l5 2l14.5 2.5t16.5 1.5q40 0 62.5 -21t22.5 -47q0 -35 -29.5 -63.5t-76.5 -28.5q-23 0 -43.5 6.5 t-30 12.5t-9.5 9q0 11 8 11l9 -3q8 -4 22 -8t29 -4q34 0 50 13.5t16 42.5q0 45 -55 45q-8 0 -16.5 -2.5t-14 -4.5t-6.5 -2q-8 0 -8 5t41 107q-18 0 -61.5 -1.5t-52.5 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h62q7 0 10.5 192.5t3.5 325.5q0 90 -7 90h-144 q-96 0 -97 -13l-7 -70q-1 -17 -13 -17q-20 0 -20 9z" />
+<glyph unicode="&#x163;" horiz-adv-x="289" d="M35 344q0 5 3 8l91 127q3 5 9 5q10 0 10 -10q0 -1 -1.5 -20.5t-3 -42t-1.5 -29.5t2 -8.5t9 -1.5h95q9 0 10.5 -2t-1.5 -16q-4 -16 -13 -16h-99q-3 0 -3 -46v-192q0 -20 2 -31t13 -21t33 -10q23 0 52 8l28 8q4 0 4 -16q0 -3 -18.5 -12.5t-46.5 -20t-48 -13.5l-21 -57 q-2 -9 0 -9l6 2q5 1 13.5 2.5t16.5 1.5q40 0 62.5 -21t22.5 -47q0 -35 -29.5 -63.5t-76.5 -28.5q-23 0 -43.5 6.5t-30 12.5t-9.5 9q0 11 8 11l8 -3q9 -4 23 -8t29 -4q34 0 50 13.5t16 42.5q0 45 -55 45q-8 0 -16.5 -2.5t-14 -4.5t-6.5 -2q-8 0 -8 5q0 2 37 98 q-36 1 -51.5 21.5t-15.5 47.5q2 144 2 216q0 61 -12 61h-25q-6 0 -6 7z" />
+<glyph unicode="&#x164;" horiz-adv-x="690" d="M234 834q0 2 6 2h9q1 0 11 -6l81 -45q4 -2 8 0l81 45q10 6 11 6h9q6 0 6 -2l-4 -6l-79 -89q-12 -13 -16 -13h-24q-4 0 -16 13l-79 89q-4 4 -4 6zM20 544l4 22q3 21 7 52.5t6 53.5q1 10 3 12t13 2q13 0 13 -6v-11q0 -6 108 -6h357q108 0 109 11q1 12 13 12q11 0 14 -2 t3 -9q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 8 -113 8h-116q-3 0 -5 -10t-3 -30.5t-1 -36t-0.5 -44t-0.5 -37.5l-1 -29q0 -28 -1 -72.5t-2 -94.5t-1.5 -102t-0.5 -87q0 -65 2 -65h74q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3 q-11 0 -57.5 1.5t-62.5 1.5t-63 -1.5t-58 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h62q7 0 10.5 192.5t3.5 325.5q0 90 -7 90h-144q-96 0 -97 -13l-7 -70q-1 -17 -13 -17q-20 0 -20 9z" />
+<glyph unicode="&#x165;" horiz-adv-x="289" d="M189 491q0 2 2.5 27t5.5 60.5t5 54.5q3 33 35 33t32 -29q0 -5 -3 -13l-51 -124q-6 -12 -8 -12h-15q-3 0 -3 3zM35 344q0 5 3 8l91 127q3 5 9 5q10 0 10 -10q0 -1 -1.5 -20.5t-3 -42t-1.5 -29.5t2 -8.5t9 -1.5h95q9 0 10.5 -2t-1.5 -16q-4 -16 -13 -16h-99q-3 0 -3 -46 v-192q0 -20 2 -31t13 -21t33 -10q23 0 52 8l28 8q4 0 4 -16q0 -3 -22.5 -14t-53.5 -22t-50 -11q-39 0 -55.5 20.5t-16.5 48.5q2 144 2 216q0 61 -12 61h-25q-6 0 -6 7z" />
+<glyph unicode="&#x166;" horiz-adv-x="690" d="M20 544l4 22q3 21 7 52.5t6 53.5q1 10 3 12t13 2q13 0 13 -6v-11q0 -6 108 -6h357q108 0 109 11q1 12 13 12q11 0 14 -2t3 -9q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 8 -113 8h-116q-3 0 -5 -10t-3 -30.5t-1 -36t-0.5 -44 t-0.5 -37.5l-1 -15q0 -14 -0.5 -42t-0.5 -56q0 -7 1 -8t8 -1h156q3 0 3 -12t-3 -12h-156q-7 0 -8.5 -2t-1.5 -9q0 -27 -1 -76.5t-1.5 -87t-0.5 -64.5q0 -65 2 -65h74q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-63 -1.5t-58 -1.5q-10 0 -12 2.5 t-2 15.5q0 9 3 10.5t15 1.5h62q8 0 12 293q0 7 -1.5 9t-8.5 2h-153q-2 0 -2.5 12t2.5 12h157q7 0 7 9q1 76 1 181q0 90 -7 90h-144q-96 0 -97 -13l-7 -70q-1 -17 -13 -17q-20 0 -20 9z" />
+<glyph unicode="&#x167;" horiz-adv-x="289" d="M35 344q0 5 3 8l91 127q3 5 9 5q10 0 10 -10q0 -1 -1.5 -20.5t-3 -42t-1.5 -29.5t2 -8.5t9 -1.5h95q9 0 10.5 -2t-1.5 -16q-4 -16 -13 -16h-99q-3 0 -3 -46v-68q0 -7 1 -8t8 -1h101q3 0 3 -12t-3 -12h-101q-9 0 -9 -7v-84q0 -20 2 -31t13 -21t33 -10q23 0 52 8l28 8 q4 0 4 -16q0 -3 -22.5 -14t-53.5 -22t-50 -11q-39 0 -55.5 20.5t-16.5 48.5q0 17 0.5 60t0.5 64q0 7 -10 7h-29q-2 0 -2.5 12t2.5 12h29q8 0 9.5 1t1.5 8v52q0 61 -12 61h-25q-6 0 -6 7z" />
+<glyph unicode="&#x168;" horiz-adv-x="755" d="M279 748q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM40 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 59.5 1.5t54.5 1.5 q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-65q-6 0 -10 -166.5t-4 -239.5q0 -97 48 -145.5t153 -48.5q92 0 172 54q17 11 20 23q5 17 5 136v305q0 82 -7 82h-49q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 44.5 -1.5t55.5 -1.5t46 1.5t32 1.5q10 0 12 -2.5 t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-24q-3 0 -5 -17t-3 -51t-1.5 -69t-1.5 -88.5t-2 -91.5q-1 -57 -3 -128t-3 -113t-1 -51q0 -32 -21 -32q-10 0 -30 36.5t-32 36.5q-10 0 -46 -20q-40 -23 -96.5 -40t-109.5 -17q-59 0 -100.5 14t-64 34t-35.5 54t-16 63.5t-3 72.5 q0 11 0.5 157t0.5 191q0 59 -5 59h-37q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#x169;" horiz-adv-x="510" d="M135 498q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM15 360q0 4 3 11q2 6 4 7t11 2q88 4 110 4q7 0 7 -6v-272q0 -67 111 -67 q91 0 91 16v118q0 186 -8 186q-1 0 -25.5 -1t-26.5 -1q-4 0 -4 4q2 17 6 19q2 1 7 1q95 5 113 5q7 0 7 -6q-1 -239 -1 -301q0 -37 3.5 -48t15.5 -11q2 0 21 3t20 3q5 0 5 -10t-2 -12t-12 -4q-102 -15 -104 -15q-10 0 -11 13q-3 38 -4 38l-26 -12q-25 -12 -64.5 -23.5 t-72.5 -11.5q-34 0 -57 11t-33.5 31t-14.5 41t-4 50v157q0 77 -12 77q-1 0 -24 -0.5t-25 -0.5q-4 0 -4 5z" />
+<glyph unicode="&#x16a;" horiz-adv-x="755" d="M282 788v23q0 6 1.5 7t7.5 1h187q6 0 7 -1t1 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM40 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 59.5 1.5t54.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-65q-6 0 -10 -166.5t-4 -239.5 q0 -97 48 -145.5t153 -48.5q92 0 172 54q17 11 20 23q5 17 5 136v305q0 82 -7 82h-49q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 44.5 -1.5t55.5 -1.5t46 1.5t32 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-24q-3 0 -5 -17t-3 -51t-1.5 -69 t-1.5 -88.5t-2 -91.5q-1 -57 -3 -128t-3 -113t-1 -51q0 -32 -21 -32q-10 0 -30 36.5t-32 36.5q-10 0 -46 -20q-40 -23 -96.5 -40t-109.5 -17q-59 0 -100.5 14t-64 34t-35.5 54t-16 63.5t-3 72.5q0 11 0.5 157t0.5 191q0 59 -5 59h-37q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#x16b;" horiz-adv-x="510" d="M138 518v23q0 6 1.5 7t7.5 1h187q6 0 7 -1t1 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM15 360q0 4 3 11q2 6 4 7t11 2q88 4 110 4q7 0 7 -6v-272q0 -67 111 -67q91 0 91 16v118q0 186 -8 186q-1 0 -25.5 -1t-26.5 -1q-4 0 -4 4q2 17 6 19q2 1 7 1q95 5 113 5 q7 0 7 -6q-1 -239 -1 -301q0 -37 3.5 -48t15.5 -11q2 0 21 3t20 3q5 0 5 -10t-2 -12t-12 -4q-102 -15 -104 -15q-10 0 -11 13q-3 38 -4 38l-26 -12q-25 -12 -64.5 -23.5t-72.5 -11.5q-34 0 -57 11t-33.5 31t-14.5 41t-4 50v157q0 77 -12 77q-1 0 -24 -0.5t-25 -0.5 q-4 0 -4 5z" />
+<glyph unicode="&#x16c;" horiz-adv-x="755" d="M281 832q0 6 1 6h17q1 0 2 -6t4.5 -15t10.5 -17.5t24.5 -14.5t43.5 -6t43.5 6t24.5 14.5t10.5 17.5t4.5 15t2 6h17q1 0 1 -6q0 -45 -26 -74t-77 -29t-77 29t-26 74zM40 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 59.5 1.5t54.5 1.5q10 0 12 -2.5t2 -15.5 q0 -9 -3 -10.5t-15 -1.5h-65q-6 0 -10 -166.5t-4 -239.5q0 -97 48 -145.5t153 -48.5q92 0 172 54q17 11 20 23q5 17 5 136v305q0 82 -7 82h-49q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 44.5 -1.5t55.5 -1.5t46 1.5t32 1.5q10 0 12 -2.5t2 -15.5 q0 -9 -2.5 -10.5t-15.5 -1.5h-24q-3 0 -5 -17t-3 -51t-1.5 -69t-1.5 -88.5t-2 -91.5q-1 -57 -3 -128t-3 -113t-1 -51q0 -32 -21 -32q-10 0 -30 36.5t-32 36.5q-10 0 -46 -20q-40 -23 -96.5 -40t-109.5 -17q-59 0 -100.5 14t-64 34t-35.5 54t-16 63.5t-3 72.5q0 11 0.5 157 t0.5 191q0 59 -5 59h-37q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#x16d;" horiz-adv-x="510" d="M137 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84zM15 360q0 4 3 11q2 6 4 7t11 2q88 4 110 4q7 0 7 -6v-272q0 -67 111 -67q91 0 91 16v118 q0 186 -8 186q-1 0 -25.5 -1t-26.5 -1q-4 0 -4 4q2 17 6 19q2 1 7 1q95 5 113 5q7 0 7 -6q-1 -239 -1 -301q0 -37 3.5 -48t15.5 -11q2 0 21 3t20 3q5 0 5 -10t-2 -12t-12 -4q-102 -15 -104 -15q-10 0 -11 13q-3 38 -4 38l-26 -12q-25 -12 -64.5 -23.5t-72.5 -11.5 q-34 0 -57 11t-33.5 31t-14.5 41t-4 50v157q0 77 -12 77q-1 0 -24 -0.5t-25 -0.5q-4 0 -4 5z" />
+<glyph unicode="&#x16e;" horiz-adv-x="755" d="M313 785q0 29 21 50t50 21t50 -21t21 -50t-21 -50t-50 -21t-50 21t-21 50zM341 785q0 -18 12.5 -30.5t30.5 -12.5t30.5 12.5t12.5 30.5t-12.5 30.5t-30.5 12.5t-30.5 -12.5t-12.5 -30.5zM40 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 59.5 1.5t54.5 1.5 q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-65q-6 0 -10 -166.5t-4 -239.5q0 -97 48 -145.5t153 -48.5q92 0 172 54q17 11 20 23q5 17 5 136v305q0 82 -7 82h-49q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 44.5 -1.5t55.5 -1.5t46 1.5t32 1.5q10 0 12 -2.5 t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-24q-3 0 -5 -17t-3 -51t-1.5 -69t-1.5 -88.5t-2 -91.5q-1 -57 -3 -128t-3 -113t-1 -51q0 -32 -21 -32q-10 0 -30 36.5t-32 36.5q-10 0 -46 -20q-40 -23 -96.5 -40t-109.5 -17q-59 0 -100.5 14t-64 34t-35.5 54t-16 63.5t-3 72.5 q0 11 0.5 157t0.5 191q0 59 -5 59h-37q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#x16f;" horiz-adv-x="510" d="M169 535q0 29 21 50t50 21t50 -21t21 -50t-21 -50t-50 -21t-50 21t-21 50zM197 535q0 -18 12.5 -30.5t30.5 -12.5t30.5 12.5t12.5 30.5t-12.5 30.5t-30.5 12.5t-30.5 -12.5t-12.5 -30.5zM15 360q0 4 3 11q2 6 4 7t11 2q88 4 110 4q7 0 7 -6v-272q0 -67 111 -67 q91 0 91 16v118q0 186 -8 186q-1 0 -25.5 -1t-26.5 -1q-4 0 -4 4q2 17 6 19q2 1 7 1q95 5 113 5q7 0 7 -6q-1 -239 -1 -301q0 -37 3.5 -48t15.5 -11q2 0 21 3t20 3q5 0 5 -10t-2 -12t-12 -4q-102 -15 -104 -15q-10 0 -11 13q-3 38 -4 38l-26 -12q-25 -12 -64.5 -23.5 t-72.5 -11.5q-34 0 -57 11t-33.5 31t-14.5 41t-4 50v157q0 77 -12 77q-1 0 -24 -0.5t-25 -0.5q-4 0 -4 5z" />
+<glyph unicode="&#x170;" horiz-adv-x="755" d="M307 731q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2zM427 731q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2zM40 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 59.5 1.5 t54.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-65q-6 0 -10 -166.5t-4 -239.5q0 -97 48 -145.5t153 -48.5q92 0 172 54q17 11 20 23q5 17 5 136v305q0 82 -7 82h-49q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 44.5 -1.5t55.5 -1.5t46 1.5t32 1.5 q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-24q-3 0 -5 -17t-3 -51t-1.5 -69t-1.5 -88.5t-2 -91.5q-1 -57 -3 -128t-3 -113t-1 -51q0 -32 -21 -32q-10 0 -30 36.5t-32 36.5q-10 0 -46 -20q-40 -23 -96.5 -40t-109.5 -17q-59 0 -100.5 14t-64 34t-35.5 54t-16 63.5 t-3 72.5q0 11 0.5 157t0.5 191q0 59 -5 59h-37q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#x171;" horiz-adv-x="510" d="M160 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM270 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM15 360q0 4 3 11q2 6 4 7t11 2 q88 4 110 4q7 0 7 -6v-272q0 -67 111 -67q91 0 91 16v118q0 186 -8 186q-1 0 -25.5 -1t-26.5 -1q-4 0 -4 4q2 17 6 19q2 1 7 1q95 5 113 5q7 0 7 -6q-1 -239 -1 -301q0 -37 3.5 -48t15.5 -11q2 0 21 3t20 3q5 0 5 -10t-2 -12t-12 -4q-102 -15 -104 -15q-10 0 -11 13 q-3 38 -4 38l-26 -12q-25 -12 -64.5 -23.5t-72.5 -11.5q-34 0 -57 11t-33.5 31t-14.5 41t-4 50v157q0 77 -12 77q-1 0 -24 -0.5t-25 -0.5q-4 0 -4 5z" />
+<glyph unicode="&#x172;" horiz-adv-x="755" d="M40 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 59.5 1.5t54.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-65q-6 0 -10 -166.5t-4 -239.5q0 -97 48 -145.5t153 -48.5q92 0 172 54q17 11 20 23q5 17 5 136v305q0 82 -7 82h-49q-8 0 -11 0.5t-6 4 t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 44.5 -1.5t55.5 -1.5t46 1.5t32 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-24q-3 0 -5 -17t-3 -51t-1.5 -69t-1.5 -88.5t-2 -91.5q-1 -57 -3 -128t-3 -113t-1 -51q0 -32 -21 -32q-10 0 -30 36.5t-32 36.5q-10 0 -46 -20 q-10 -6 -60.5 -28t-69.5 -45q-63 -74 -63 -140q0 -33 20 -56.5t44 -23.5q23 0 43 11t31 22l11 11q1 0 6 -6t5 -7q0 -3 -15 -19t-47.5 -34t-68.5 -18q-32 0 -62.5 29.5t-30.5 63.5t19 68.5t36.5 52.5t63.5 62q9 8 5 8q-2 0 -11 -2q-32 -6 -62 -6q-59 0 -100.5 14t-64 34 t-35.5 54t-16 63.5t-3 72.5q0 11 0.5 157t0.5 191q0 59 -5 59h-37q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#x173;" horiz-adv-x="510" d="M15 360q0 4 3 11q2 6 4 7t11 2q88 4 110 4q7 0 7 -6v-272q0 -67 111 -67q91 0 91 16v118q0 186 -8 186q-1 0 -25.5 -1t-26.5 -1q-4 0 -4 4q2 17 6 19q2 1 7 1q95 5 113 5q7 0 7 -6q-1 -239 -1 -301q0 -37 3.5 -48t15.5 -11q2 0 21 3t20 3q5 0 5 -10t-2 -12t-12 -4l-37 -6 q-44 -6 -58 -20q-58 -61 -58 -141q0 -33 20 -56.5t44 -23.5q23 0 43 11t31 22l11 11q1 0 6 -6t5 -7q0 -3 -15 -19t-47.5 -34t-68.5 -18q-32 0 -62.5 29.5t-30.5 63.5q0 29 15 60t30 49t50 57q7 9 7 15q0 49 -4 49l-26 -12q-25 -12 -64.5 -23.5t-72.5 -11.5q-34 0 -57 11 t-33.5 31t-14.5 41t-4 50v157q0 77 -12 77q-1 0 -24 -0.5t-25 -0.5q-4 0 -4 5z" />
+<glyph unicode="&#x174;" horiz-adv-x="1008" d="M391 731l4 6l79 89q12 13 16 13h24q4 0 16 -13l79 -89q4 -4 4 -6t-6 -2h-9q-1 0 -11 6l-81 45q-4 2 -8 0l-81 -45q-10 -6 -11 -6h-9q-6 0 -6 2zM10 649q0 7 2.5 10.5t6 4t11.5 0.5q6 0 41 -1.5t52 -1.5q16 0 54.5 1.5t49.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5 t-15.5 -1.5h-50q-10 0 -10 -9t27 -99l47.5 -155l50.5 -158t23 -71q12 -36 13 -36q2 0 16 36l143 365q5 13 5 18q0 4 -3.5 14t-5.5 17q-22 78 -27 78h-60q-7 0 -10 0.5t-5 4t-2 10.5q0 11 3 13t14 2q6 0 50 -1.5t61 -1.5q16 0 62.5 1.5t57.5 1.5q10 0 12 -2.5t2 -15.5 q0 -8 -3 -10t-14 -2h-64q-3 0 -3 -9q0 -27 18 -99l32.5 -116l34.5 -120.5l28.5 -98.5t14.5 -49l4 -14t3.5 -11.5l3 -9l2.5 -7.5t2 -5.5t2 -3.5t2 -1q2 0 22 50l35.5 93.5l46 122l39 108t33.5 102t11 52.5q0 16 -9 16h-65q-7 0 -10 0.5t-5 4t-2 10.5q0 11 3 13t14 2 q6 0 46 -1.5t57 -1.5q18 0 42 1.5t26 1.5q10 0 12 -2.5t2 -13.5q0 -9 -3 -11.5t-15 -2.5q-13 0 -19.5 -2.5t-9 -6t-7.5 -14.5l-221 -543q-4 -11 -8 -17.5t-9.5 -13l-9.5 -11.5l-11 -17t-9 -14t-7 -10.5t-7 -7.5t-7 -2q-8 0 -14.5 14t-18 55.5t-19.5 65.5q0 1 -14 51l-37 132 l-41 147q-7 25 -10 25t-12 -25l-142 -372q-4 -11 -8 -17.5t-9.5 -13l-9.5 -11.5l-11 -17t-9 -14t-7 -10.5t-7 -7.5t-7 -2q-8 0 -14.5 14t-18 55.5t-19.5 65.5q0 1 -16.5 56.5l-39.5 131.5l-46.5 152.5l-40.5 130t-19 53.5h-35q-8 0 -11 0.5t-6 4t-3 10.5z" />
+<glyph unicode="&#x175;" horiz-adv-x="697" d="M257 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM25 368q0 6 0.5 8t3.5 4t9 2q8 0 29.5 -1t37.5 -1q13 0 45 1t40 1q9 0 11 -2.5t2 -11.5 q0 -13 -12 -13h-25q-18 0 -18 -8q0 -2 15.5 -52.5t37.5 -115t35 -95.5q7 -16 9 -16q4 0 13 23q68 172 80 206q7 18 7 27q0 6 -5 16q-8 15 -34 15h-10q-8 0 -10.5 3t-2.5 10q0 6 0.5 8t3.5 4t9 2q11 0 33 -1t40 -1q13 0 35.5 1t34.5 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-21 q-13 0 -13 -8q0 -2 14.5 -52.5t35 -115t32.5 -95.5q10 -23 12 -23t11 22q18 43 51 143.5t33 117.5q0 11 -12 11h-31q-8 0 -10.5 3t-2.5 10q0 14 14 14q3 0 24 -1t33 -1q13 0 31 1t20 1q7 0 9 -2.5t2 -11.5q0 -13 -12 -13h-6q-9 0 -14 -10q-9 -18 -50.5 -130t-66.5 -163 q-8 -17 -21.5 -34t-24.5 -36q-3 -7 -11 -7q-11 0 -30 66q-22 80 -69 224q-6 18 -8 18q-3 0 -9 -18q-67 -177 -84 -212q-8 -16 -22 -33t-26 -38q-4 -7 -12 -7q-12 0 -31 66q-4 15 -21 63.5l-42 119.5l-41 116q-4 11 -7.5 13t-14.5 2h-11q-8 0 -10.5 3t-2.5 10z" />
+<glyph unicode="&#x176;" horiz-adv-x="597" d="M217 731l4 6l79 89q12 13 16 13h24q4 0 16 -13l79 -89q4 -4 4 -6t-6 -2h-9q-1 0 -11 6l-81 45q-4 2 -8 0l-81 -45q-10 -6 -11 -6h-9q-6 0 -6 2zM10 654q0 7 2 10.5t5 4t11 0.5q6 0 46 -1.5t57 -1.5q16 0 60 1.5t55 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-59 q-11 0 -12 -2.5t4 -12.5q9 -23 37 -76.5l62.5 -117t42.5 -79.5q9 -17 11 -17q3 0 11 14l27 52l38 72.5l35.5 69.5t29 62t10.5 32q0 3 -2 3h-56q-13 0 -15.5 1.5t-2.5 10.5q0 13 2 15.5t12 2.5q11 0 36.5 -1.5t41.5 -1.5q17 0 43.5 1.5t32.5 1.5q11 0 13.5 -2t2.5 -13 q0 -6 -0.5 -9t-3 -4.5t-5 -1.5h-7.5h-36q-2 0 -37.5 -62l-81.5 -142l-65 -111q-3 -5 -3 -11q0 -286 10 -286h71q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-58.5 -1.5t-53.5 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h52q10 0 10 244 q0 11 -7 23q-189 345 -199 345h-29q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#x177;" horiz-adv-x="467" d="M141 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM25 368q0 6 0.5 8t3.5 4t9 2q8 0 33 -1t41 -1q13 0 46.5 1t41.5 1q9 0 11 -2.5t2 -11.5 q0 -13 -12 -13h-19q-26 0 -26 -10q0 -12 31 -97.5t58 -151.5q16 -40 19 -40t17 40q82 231 82 252q0 7 -31 7h-23q-8 0 -10.5 3t-2.5 10q0 14 14 14q9 0 31.5 -1t32.5 -1q12 0 30 1t25 1q13 0 13 -14q0 -13 -12 -13h-14q-10 0 -13 -10q-38 -105 -133 -342q-1 -3 -7 -19.5 t-15.5 -46t-17.5 -51.5q-2 -4 -5.5 -15.5t-5 -14.5t-4.5 -11.5t-5 -12t-5.5 -11t-7 -12.5t-8 -12.5t-10.5 -14.5t-13 -16q-17 -22 -26 -27q-6 -4 -15 -8q-54 -26 -62 -26q-18 0 -18 20q0 15 19 42q7 11 28 18l22.5 7.5t29.5 11t22 13.5t16 19q44 109 44 121q0 8 -28 77 l-72.5 174l-55.5 132q-4 11 -7 13t-14 2h-11q-8 0 -10.5 3t-2.5 10z" />
+<glyph unicode="&#x178;" horiz-adv-x="597" d="M197 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM357 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM10 654q0 7 2 10.5t5 4t11 0.5q6 0 46 -1.5t57 -1.5q16 0 60 1.5 t55 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-59q-11 0 -12 -2.5t4 -12.5q9 -23 37 -76.5l62.5 -117t42.5 -79.5q9 -17 11 -17q3 0 11 14l27 52l38 72.5l35.5 69.5t29 62t10.5 32q0 3 -2 3h-56q-13 0 -15.5 1.5t-2.5 10.5q0 13 2 15.5t12 2.5q11 0 36.5 -1.5 t41.5 -1.5q17 0 43.5 1.5t32.5 1.5q11 0 13.5 -2t2.5 -13q0 -6 -0.5 -9t-3 -4.5t-5 -1.5h-7.5h-36q-2 0 -37.5 -62l-81.5 -142l-65 -111q-3 -5 -3 -11q0 -286 10 -286h71q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-58.5 -1.5t-53.5 -1.5 q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h52q10 0 10 244q0 11 -7 23q-189 345 -199 345h-29q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#x179;" horiz-adv-x="601" d="M304 731q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2zM40 15q0 5 61 98.5l163.5 249.5l165.5 254q5 7 5 9q0 3 -24 3h-302q-9 0 -10 -7q-1 -2 -1 -3q-2 -9 -5 -28.5t-5.5 -33.5t-2.5 -16q-4 -15 -9 -15q-24 0 -24 9q0 3 3.5 24.5 l9 56t8.5 60.5q0 6 16 6q13 0 13 -6v-6q0 -3 1.5 -4.5t8 -2.5t18 -1.5t31.5 -0.5h381q10 0 13.5 -3t3.5 -12q0 -6 -62.5 -98l-159 -238t-157.5 -250q-10 -16 -10 -18q0 -5 11 -5h337h5.5t4 0.5t2.5 1t1 3t1 4t0.5 6t0.5 8.5q1 14 3 87q0 8 18 8q17 0 17 -9q0 -28 -1.5 -77 t-1.5 -61q0 -11 -22 -11q-57 0 -252 1.5t-246 1.5q-5 0 -6.5 2.5t-1.5 12.5z" />
+<glyph unicode="&#x17a;" horiz-adv-x="413" d="M185 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM35 10q0 7 10 20l214 315q2 3 5 7t5 7t2 4q0 3 -14 3l-155 -5q-17 -1 -20.5 -3.5t-6.5 -15.5l-10 -40q-3 -12 -13 -12q-16 0 -16 6q0 2 9 80q1 9 3 11 t11 2h281q23 0 23 -9q0 -1 -9 -15l-210 -310q-9 -13 -9 -18q0 -10 15 -10l174 4q10 0 12 1.5t4 11.5l7 58q1 9 3 10.5t14 1.5q9 0 9 -6q0 -20 -5 -93q-1 -11 -3 -13t-13 -2h-295q-22 0 -22 10z" />
+<glyph unicode="&#x17b;" horiz-adv-x="601" d="M263 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM40 15q0 5 61 98.5l163.5 249.5l165.5 254q5 7 5 9q0 3 -24 3h-302q-9 0 -10 -7q-1 -2 -1 -3q-2 -9 -5 -28.5t-5.5 -33.5t-2.5 -16q-4 -15 -9 -15q-24 0 -24 9 q0 3 3.5 24.5l9 56t8.5 60.5q0 6 16 6q13 0 13 -6v-6q0 -3 1.5 -4.5t8 -2.5t18 -1.5t31.5 -0.5h381q10 0 13.5 -3t3.5 -12q0 -6 -62.5 -98l-159 -238t-157.5 -250q-10 -16 -10 -18q0 -5 11 -5h337h5.5t4 0.5t2.5 1t1 3t1 4t0.5 6t0.5 8.5q1 14 3 87q0 8 18 8q17 0 17 -9 q0 -28 -1.5 -77t-1.5 -61q0 -11 -22 -11q-57 0 -252 1.5t-246 1.5q-5 0 -6.5 2.5t-1.5 12.5z" />
+<glyph unicode="&#x17c;" horiz-adv-x="413" d="M149 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM35 10q0 7 10 20l214 315q2 3 5 7t5 7t2 4q0 3 -14 3l-155 -5q-17 -1 -20.5 -3.5t-6.5 -15.5l-10 -40q-3 -12 -13 -12q-16 0 -16 6q0 2 9 80q1 9 3 11t11 2h281 q23 0 23 -9q0 -1 -9 -15l-210 -310q-9 -13 -9 -18q0 -10 15 -10l174 4q10 0 12 1.5t4 11.5l7 58q1 9 3 10.5t14 1.5q9 0 9 -6q0 -20 -5 -93q-1 -11 -3 -13t-13 -2h-295q-22 0 -22 10z" />
+<glyph unicode="&#x17d;" horiz-adv-x="601" d="M203 837q0 2 6 2h9q1 0 11 -6l81 -45q4 -2 8 0l81 45q10 6 11 6h9q6 0 6 -2l-4 -6l-79 -89q-12 -13 -16 -13h-24q-4 0 -16 13l-79 89q-4 4 -4 6zM40 15q0 5 61 98.5l163.5 249.5l165.5 254q5 7 5 9q0 3 -24 3h-302q-9 0 -10 -7q-1 -2 -1 -3q-2 -9 -5 -28.5t-5.5 -33.5 t-2.5 -16q-4 -15 -9 -15q-24 0 -24 9q0 3 3.5 24.5l9 56t8.5 60.5q0 6 16 6q13 0 13 -6v-6q0 -3 1.5 -4.5t8 -2.5t18 -1.5t31.5 -0.5h381q10 0 13.5 -3t3.5 -12q0 -6 -62.5 -98l-159 -238t-157.5 -250q-10 -16 -10 -18q0 -5 11 -5h337h5.5t4 0.5t2.5 1t1 3t1 4t0.5 6 t0.5 8.5q1 14 3 87q0 8 18 8q17 0 17 -9q0 -28 -1.5 -77t-1.5 -61q0 -11 -22 -11q-57 0 -252 1.5t-246 1.5q-5 0 -6.5 2.5t-1.5 12.5z" />
+<glyph unicode="&#x17e;" horiz-adv-x="413" d="M90 597q0 2 5 2h12q1 0 8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM35 10q0 7 10 20l214 315q2 3 5 7t5 7t2 4q0 3 -14 3l-155 -5q-17 -1 -20.5 -3.5t-6.5 -15.5 l-10 -40q-3 -12 -13 -12q-16 0 -16 6q0 2 9 80q1 9 3 11t11 2h281q23 0 23 -9q0 -1 -9 -15l-210 -310q-9 -13 -9 -18q0 -10 15 -10l174 4q10 0 12 1.5t4 11.5l7 58q1 9 3 10.5t14 1.5q9 0 9 -6q0 -20 -5 -93q-1 -11 -3 -13t-13 -2h-295q-22 0 -22 10z" />
+<glyph unicode="&#x17f;" horiz-adv-x="274" d="M32 12q0 13 12 13h40q4 0 4 63q0 116 -2 296q0 18 -0.5 33t-1 27.5t-0.5 36.5q0 87 37 142t119 55q31 0 57 -19t26 -48q0 -16 -18 -31.5t-30 -15.5t-13 9q-3 23 -5 33t-7 24.5t-13.5 20t-21.5 5.5q-59 0 -59 -164q0 -107 2 -323q2 -144 10 -144h66q8 0 10.5 -3t2.5 -10 q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -49 1t-57 1q-12 0 -39.5 -1t-43.5 -1q-9 0 -11 2.5t-2 11.5z" />
+<glyph unicode="&#x218;" horiz-adv-x="528" d="M224 -225l15 10q15 10 29.5 25.5t14.5 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM55 488q0 81 65 135t149 54q73 0 135 -42q10 -8 16 -8t7 10l1 11 q0 9 2 11.5t13 2.5q12 0 15.5 -2.5t3.5 -11.5l-2 -63q-3 -63 -3 -94q0 -9 -3 -12.5t-13 -3.5q-13 0 -16 2.5t-3 9.5q0 1 1.5 30t1.5 34q0 22 -51.5 60t-102.5 38q-57 0 -95 -37t-38 -92q0 -43 26.5 -73.5t65.5 -46l85.5 -34t85.5 -37.5t65.5 -58t26.5 -93 q0 -88 -67.5 -140.5t-156.5 -52.5q-51 0 -99 9.5t-73 20t-26 16.5l-3.5 48l-4.5 62t-2 34q0 14 12 14h5q15 0 16 -16l6 -92q1 -21 65.5 -42t112.5 -21q54 0 93.5 35t39.5 86q0 42 -26.5 72t-66 46.5l-85.5 36.5t-85.5 40t-66 60t-26.5 94z" />
+<glyph unicode="&#x219;" horiz-adv-x="337" d="M121 -225l15 10q14 10 29 25.5t15 29.5q0 17 -13 30t-26.5 21.5t-13.5 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM35 50q0 11 11.5 24.5t18.5 13.5q3 0 5 -3.5t5.5 -10.5t8.5 -13 q42 -50 93 -50q28 0 47 16.5t19 48.5t-23 51.5t-66 37.5q-2 1 -18 8t-19 8.5t-17 8t-17.5 10t-13.5 11t-13.5 14t-9 15t-7 18.5t-1.5 22q0 48 44 80.5t100 32.5q51 0 77.5 -22.5t26.5 -44.5q0 -7 -15 -13t-25 -6q-7 0 -12.5 10t-10 22.5t-18.5 22.5t-36 10q-29 0 -51 -17 t-22 -53q0 -15 5.5 -27t21 -22.5t24 -15t31.5 -15.5q33 -16 45.5 -22.5t36 -22.5t33 -33t9.5 -38q0 -53 -41.5 -85.5t-99.5 -32.5q-46 0 -86 19.5t-40 42.5z" />
+<glyph unicode="&#x21a;" horiz-adv-x="690" d="M296 -225l15 10q15 10 29.5 25.5t14.5 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM20 544l4 22q3 21 7 52.5t6 53.5q1 10 3 12t13 2q13 0 13 -6v-11 q0 -6 108 -6h357q108 0 109 11q1 12 13 12q11 0 14 -2t3 -9q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 8 -113 8h-116q-3 0 -5 -10t-3 -30.5t-1 -36t-0.5 -44t-0.5 -37.5l-1 -29q0 -28 -1 -72.5t-2 -94.5t-1.5 -102t-0.5 -87q0 -65 2 -65 h74q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-63 -1.5t-58 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h62q7 0 10.5 192.5t3.5 325.5q0 90 -7 90h-144q-96 0 -97 -13l-7 -70q-1 -17 -13 -17q-20 0 -20 9z" />
+<glyph unicode="&#x21b;" horiz-adv-x="289" d="M101 -225l15 10q14 10 29 25.5t15 29.5q0 17 -13 30t-26.5 21.5t-13.5 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM35 344q0 5 3 8l91 127q3 5 9 5q10 0 10 -10q0 -1 -1.5 -20.5t-3 -42 t-1.5 -29.5t2 -8.5t9 -1.5h95q9 0 10.5 -2t-1.5 -16q-4 -16 -13 -16h-99q-3 0 -3 -46v-192q0 -20 2 -31t13 -21t33 -10q23 0 52 8l28 8q4 0 4 -16q0 -3 -22.5 -14t-53.5 -22t-50 -11q-39 0 -55.5 20.5t-16.5 48.5q2 144 2 216q0 61 -12 61h-25q-6 0 -6 7z" />
+<glyph unicode="&#x237;" horiz-adv-x="292" d="M5 -255q0 16 14.5 34.5t26.5 18.5t31.5 -2t23.5 -2q19 0 28.5 9.5t9.5 23.5q0 9 -2.5 56.5t-4.5 145t-2 229.5q0 49 -2 76q-1 14 -9 14q-3 0 -34 -1.5t-36 -1.5q-3 0 -3 4q0 5 4 15q0 1 1 3q2 6 14 6q22 0 52.5 1.5l51 2.5t21.5 1q7 0 7 -23q0 -20 2.5 -136.5t2.5 -191.5 q0 -90 -10.5 -145t-43.5 -98q-13 -17 -57.5 -38t-66.5 -21q-19 0 -19 20z" />
+<glyph unicode="&#x2bb;" horiz-adv-x="400" d="M143 502q0 31 24.5 62.5t48 48t29.5 16.5q4 0 7 -5.5t3 -10.5l-15 -10q-14 -10 -29 -25.5t-15 -29.5q0 -17 13 -30t26.5 -21.5t13.5 -12.5q0 -11 -18.5 -23t-24.5 -12q-12 0 -37.5 19.5t-25.5 33.5z" />
+<glyph unicode="&#x2bc;" horiz-adv-x="400" d="M408 491q0 2 2.5 27t5.5 60.5t5 54.5q3 33 35 33t32 -29q0 -5 -3 -13l-51 -124q-6 -12 -8 -12h-15q-3 0 -3 3z" />
+<glyph unicode="&#x2c0;" horiz-adv-x="400" />
+<glyph unicode="&#x2c6;" horiz-adv-x="400" d="M90 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12q-1 0 -8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2z" />
+<glyph unicode="&#x2c7;" horiz-adv-x="400" d="M90 597q0 2 5 2h12q1 0 8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6z" />
+<glyph unicode="&#x2d8;" horiz-adv-x="400" d="M97 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84z" />
+<glyph unicode="&#x2d9;" horiz-adv-x="400" d="M149 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5z" />
+<glyph unicode="&#x2da;" horiz-adv-x="400" d="M129 535q0 29 21 50t50 21t50 -21t21 -50t-21 -50t-50 -21t-50 21t-21 50zM157 535q0 -18 12.5 -30.5t30.5 -12.5t30.5 12.5t12.5 30.5t-12.5 30.5t-30.5 12.5t-30.5 -12.5t-12.5 -30.5z" />
+<glyph unicode="&#x2db;" horiz-adv-x="400" d="M107 -194q0 14 3 28t6.5 24.5t13.5 25l15 22t20 23.5l21 22l25.5 24.5l25.5 24.5h22q-88 -88 -88 -167q0 -33 20 -56.5t44 -23.5q23 0 43 11t31 22l11 11q1 0 6 -6t5 -7q0 -3 -15 -19t-47.5 -34t-68.5 -18q-32 0 -62.5 29.5t-30.5 63.5z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="400" d="M95 498q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2z" />
+<glyph unicode="&#x2dd;" horiz-adv-x="400" d="M120 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM230 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2z" />
+<glyph unicode="&#x300;" horiz-adv-x="0" d="M-302 582q0 13 9.5 21.5t26.5 8.5q21 0 30 -25l49 -130q2 -4 2 -6t-4 -2h-16q-3 0 -8 6l-82 107q-7 10 -7 20z" />
+<glyph unicode="&#x301;" horiz-adv-x="0" d="M-215 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2z" />
+<glyph unicode="&#x302;" horiz-adv-x="0" d="M-310 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12q-1 0 -8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2z" />
+<glyph unicode="&#x303;" horiz-adv-x="0" d="M-305 498q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2z" />
+<glyph unicode="&#x304;" horiz-adv-x="0" d="M-302 518v23q0 6 1.5 7t7.5 1h187q6 0 7 -1t1 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8z" />
+<glyph unicode="&#x306;" horiz-adv-x="0" d="M-303 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84z" />
+<glyph unicode="&#x307;" horiz-adv-x="0" d="M-251 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5z" />
+<glyph unicode="&#x308;" horiz-adv-x="0" d="M-331 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM-171 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5z" />
+<glyph unicode="&#x30a;" horiz-adv-x="0" d="M-271 535q0 29 21 50t50 21t50 -21t21 -50t-21 -50t-50 -21t-50 21t-21 50zM-243 535q0 -18 12.5 -30.5t30.5 -12.5t30.5 12.5t12.5 30.5t-12.5 30.5t-30.5 12.5t-30.5 -12.5t-12.5 -30.5z" />
+<glyph unicode="&#x30b;" horiz-adv-x="0" d="M-280 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM-170 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2z" />
+<glyph unicode="&#x30c;" horiz-adv-x="0" d="M-310 597q0 2 5 2h12q1 0 8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6z" />
+<glyph unicode="&#x312;" horiz-adv-x="0" d="M-257 502q0 31 24.5 62.5t48 48t29.5 16.5q4 0 7 -5.5t3 -10.5l-15 -10q-14 -10 -29 -25.5t-15 -29.5q0 -17 13 -30t26.5 -21.5t13.5 -12.5q0 -11 -18.5 -23t-24.5 -12q-12 0 -37.5 19.5t-25.5 33.5z" />
+<glyph unicode="&#x315;" horiz-adv-x="0" d="M8 491q0 2 2.5 27t5.5 60.5t5 54.5q3 33 35 33t32 -29q0 -5 -3 -13l-51 -124q-6 -12 -8 -12h-15q-3 0 -3 3z" />
+<glyph unicode="&#x326;" horiz-adv-x="0" d="M-254 -225l15 10q15 10 29.5 25.5t14.5 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5z" />
+<glyph unicode="&#x327;" horiz-adv-x="0" d="M-283 -200q0 11 8 11l9 -3q8 -4 22 -8t29 -4q34 0 50 13.5t16 42.5q0 45 -55 45q-8 0 -16.5 -2.5t-14 -4.5t-6.5 -2q-8 0 -8 5t41 107h17l-24 -65q-2 -9 0 -9l5 2l14.5 2.5t16.5 1.5q40 0 62.5 -21t22.5 -47q0 -35 -29.5 -63.5t-76.5 -28.5q-23 0 -43.5 6.5t-30 12.5 t-9.5 9z" />
+<glyph unicode="&#x328;" horiz-adv-x="0" d="M-293 -194q0 14 3 28t6.5 24.5t13.5 25l15 22t20 23.5l21 22l25.5 24.5l25.5 24.5h22q-88 -88 -88 -167q0 -33 20 -56.5t44 -23.5q23 0 43 11t31 22l11 11q1 0 6 -6t5 -7q0 -3 -15 -19t-47.5 -34t-68.5 -18q-32 0 -62.5 29.5t-30.5 63.5z" />
+<glyph unicode="&#x1e02;" horiz-adv-x="592" d="M240 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM40 649q0 7 2.5 10.5t6 4t11.5 0.5q6 0 51 -1t62 -1q19 0 60.5 1.5t62.5 1.5q99 0 160.5 -38t61.5 -123q0 -101 -150 -156l-17 -7q0 -1 11 -2.5t28 -5t38 -9.5t42 -18 t38 -29.5t28 -45t11 -62.5q0 -171 -280 -171q-27 0 -60.5 1t-35.5 1q-18 0 -61 -1.5t-45 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h53q5 0 5 42v323q0 242 -10 242l-57 -2q-20 0 -20 17zM209 315q0 -288 9 -288h61q180 0 180 149q0 111 -87 140q-31 10 -118 10 h-34q-11 0 -11 -11zM209 358q0 -6 3 -8t13 -2h57q10 0 20.5 -0.5t12.5 -0.5q11 0 20 3q41 12 70 46.5t29 91.5q0 73 -49.5 114.5t-127.5 41.5q-29 0 -43 -4q-5 -1 -5 -234v-48z" />
+<glyph unicode="&#x1e03;" horiz-adv-x="485" d="M78 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM5 639q0 21 5 21q20 2 55.5 6l60 7t26.5 3q6 0 6 -15q-3 -185 -3 -267q0 -38 1 -38t7.5 3t17.5 7.5t23.5 9t28.5 7.5t30 3q83 0 137.5 -57.5t54.5 -140.5 q0 -92 -65 -146.5t-156 -54.5q-19 0 -47.5 9.5t-41.5 9.5q-11 0 -28 -9t-21 -9q-12 0 -12 13q0 1 1 36.5t2.5 82.5t1.5 77q0 87 -4.5 264.5t-12.5 177.5q-2 0 -30.5 -3t-30.5 -3q-6 0 -6 6zM153 64q0 -50 84 -50q67 0 106.5 51t39.5 122q0 67 -47.5 118.5t-112.5 51.5 q-16 0 -32.5 -5.5t-26 -11t-9.5 -8.5q0 -59 -1 -159.5t-1 -108.5z" />
+<glyph unicode="&#x1e0a;" horiz-adv-x="758" d="M291 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM35 10q0 11 3 13t14 2h66q4 0 8.5 200t4.5 338q0 78 -2 78l-70 -2q-5 0 -7.5 0.5t-4 3t-1.5 8.5v7.5t1.5 5t4 3t7.5 0.5q1 0 11.5 -0.5t26.5 -0.5h31q41 0 114.5 6 t89.5 6q166 0 273.5 -93t107.5 -250q0 -105 -49.5 -183.5t-126.5 -116.5t-169 -39q-32 0 -97 2t-98 2q-16 0 -70 -2t-57 -2q-8 0 -9.5 2t-1.5 12zM213 86q0 -59 2 -60q6 -4 57 -4q69 0 124.5 14t90 34.5t60 53t37.5 59t19 63.5t8 56t1 46q0 73 -35.5 141.5t-106.5 115.5 t-159 47q-67 0 -90 -6q-7 -2 -7 -146q-1 -138 -1 -414z" />
+<glyph unicode="&#x1e0b;" horiz-adv-x="499" d="M311 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM30 181q0 85 58.5 141.5t144.5 56.5q17 0 33.5 -2.5t28.5 -6.5t21 -8t14 -6l6 -3q6 0 6 18q0 48 -2 113.5t-4.5 112t-3.5 46.5t-32 -4.5t-35 -4.5t-5 2t1 13q2 12 8 13 q24 3 56.5 7.5t52.5 7.5t22 3q7 0 8.5 -3.5t1.5 -19.5q0 -7 -1.5 -62.5t-3 -164.5t-1.5 -246q0 -48 2 -120q1 -29 6 -39t17 -10q4 0 34 4q6 1 8.5 0t2.5 -8q0 -8 -0.5 -11t-3 -5t-9.5 -3l-115 -15q-6 0 -6 9q0 1 0.5 17.5t0.5 18.5q0 8 -2.5 9t-12.5 -5q-63 -39 -120 -39 q-75 0 -125.5 47t-50.5 147zM103 188q0 -74 37.5 -119t114.5 -45q23 0 55 10.5t32 22.5v250q0 12 -31 32t-66 20q-64 0 -103 -50.5t-39 -120.5z" />
+<glyph unicode="&#x1e1e;" horiz-adv-x="550" d="M257 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM40 651q0 14 12 14l43 -1q43 -2 64 -2q28 0 133.5 1.5t125.5 1.5q47 0 56.5 1.5t10.5 10.5v1q1 12 13 12q11 0 14 -2t3 -9q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2 q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 7 -282 7q-7 0 -7 -114q0 -110 2 -156q0 -12 2 -14t14 -2h173q55 0 55 16v50q0 9 17 9q14 0 14 -8q0 -1 -1 -29t-1 -49t1 -55t1 -38q0 -8 -13 -8q-18 0 -18 9v56q0 7 -2 10t-15 6.5t-38 3.5h-173q-11 0 -13.5 -3t-2.5 -17 q1 -49 1.5 -128.5t1.5 -114.5t4 -35h83q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h43q7 0 7 75v96q0 31 -0.5 72t-1 78t-1 69.5t-1 53t-0.5 21.5q0 144 -11 144h-43q-7 0 -10.5 0.5 t-6 4t-2.5 10.5z" />
+<glyph unicode="&#x1e1f;" horiz-adv-x="306" d="M167 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM35 12q0 13 12 13h40q4 0 4 63q0 20 -0.5 51t-0.5 33v60q0 114 -2 114h-33q-9 0 -11.5 2t-2.5 11t2 11t9 2h27q7 0 8.5 2t1.5 10q0 24 -1 47t-1 50q0 87 37 142t119 55 q31 0 57 -19t26 -48q0 -16 -18 -31.5t-30 -15.5t-13 9q-3 23 -5 33t-7 24.5t-13.5 20t-21.5 5.5q-59 0 -59 -164q0 -17 -2 -103q0 -12 3 -14.5t18 -2.5h116q7 0 7 -5t-2.5 -12.5t-5.5 -7.5h-115q-11 0 -14 -2t-3 -10v-166q0 -144 10 -144h66q8 0 10.5 -3t2.5 -10 q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -49 1t-57 1q-12 0 -39.5 -1t-43.5 -1q-9 0 -11 2.5t-2 11.5z" />
+<glyph unicode="&#x1e22;" horiz-adv-x="791" d="M351 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM40 15q0 9 3 10.5t15 1.5h57q7 0 7 258v102q0 252 -6 252h-43q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 39.5 -1.5t50.5 -1.5q16 0 55.5 1.5t50.5 1.5 q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-54q-7 0 -7 -134q0 -27 0.5 -73t0.5 -59t2 -15.5t13 -2.5h365q11 0 13 2t2 13v122q0 147 -10 147h-57q-10 0 -12.5 2t-2.5 13t2.5 13t12.5 2q6 0 47 -1.5t58 -1.5q18 0 55 1.5t40 1.5q10 0 12 -2.5t2 -15.5 q0 -9 -2.5 -10.5t-15.5 -1.5h-46q-2 0 -2 -242q0 -370 4 -370h55q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -44.5 1.5t-49.5 1.5t-58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h55q6 0 6 165v124q0 11 -1 13t-8 2h-374q-8 0 -10 -2.5t-2 -14.5 q0 -287 11 -287h65q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -52.5 1.5t-57.5 1.5t-61 -1.5t-56 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x1e23;" horiz-adv-x="503" d="M78 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM10 640q0 16 5 17q138 18 146 18q5 0 5 -20q-8 -166 -8 -301v-10t2 -3t3 0.5t6 3.5q73 40 133 40q40 0 66.5 -16t38.5 -47t16 -63t4 -79v-143q0 -8 1.5 -10t9.5 -2h26 q14 0 14 -13q0 -14 -14 -14q-8 0 -31.5 1t-39.5 1q-12 0 -41 -1t-45 -1q-9 0 -11 2.5t-2 11.5q0 13 13 13h39q8 0 9 1.5t2 9.5q2 40 2 176q0 58 -24 95t-72 37q-47 0 -89 -21q-16 -8 -16 -15l1 -150q0 -89 1 -115q1 -10 1.5 -13t2 -4t7.5 -1h38q8 0 10.5 -3t2.5 -10 q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -37.5 1t-45.5 1q-12 0 -41 -1t-45 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h39q7 0 8.5 3t1.5 15q1 94 1 220q0 202 -8 356q-1 17 -6 17q-1 0 -30 -3.5t-31 -3.5q-4 0 -4 11z" />
+<glyph unicode="&#x1e40;" horiz-adv-x="895" d="M407 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM35 15q0 9 2.5 10.5t15.5 1.5h42q2 0 3.5 4.5t2 14.5l1 20t1 29.5t1.5 33.5q18 366 18 497q0 8 -4 10.5t-18 2.5h-46q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q6 0 51 -1.5 t56 -1.5q13 0 35.5 1.5t23.5 1.5q15 0 20 -13l210 -524q9 -22 11 -22q3 0 11 22l196 511q6 16 10 19.5t15 3.5h46q16 0 52.5 1.5t47.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-46q-7 0 -7 -80v-90q0 -153 4.5 -297.5t11.5 -144.5h54q8 0 10.5 -2t2.5 -11 q0 -11 -2 -14t-9 -3q-11 0 -51 1.5t-56 1.5t-55.5 -1.5t-50.5 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h46q9 0 9 177q0 98 -2.5 257.5t-4.5 159.5t-36 -88l-85 -219.5l-81 -204.5q-10 -25 -27.5 -50t-28.5 -47q-9 -19 -15 -19q-5 0 -17 28l-233 575 q-13 30 -16 30q-2 0 -4 -32q-8 -211 -8 -465q0 -102 5 -102h72q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -41.5 1.5t-46.5 1.5t-43.5 -1.5t-38.5 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x1e41;" horiz-adv-x="739" d="M330 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 350q0 6 4 18q2 6 3.5 6.5t11.5 1.5q16 1 41.5 2t41 2t17.5 1q11 0 13 -1.5t2 -9.5v-28q0 -14 2 -15l8 6q79 55 141 55q21 0 37.5 -5.5t25.5 -13t14.5 -14.5 t8.5 -13l2 -5q3 0 13 7q25 16 61.5 29t63.5 13q69 0 96.5 -38t27.5 -108q0 -46 -1 -116t-1 -89q0 -10 10 -10h32q14 0 14 -13q0 -14 -14 -14q-8 0 -34 1t-42 1q-12 0 -40.5 -1t-44.5 -1q-9 0 -11 2.5t-2 11.5q0 13 15 13h40q9 0 9 191q0 128 -89 128q-23 0 -47 -7t-37 -14 t-13 -9t1.5 -9.5t3 -25t1.5 -43.5v-170q0 -41 3 -41h34q14 0 14 -13q0 -14 -14 -14q-8 0 -32.5 1t-40.5 1q-12 0 -34.5 -1t-38.5 -1q-9 0 -12 3t-3 11q0 13 12 13h39q7 0 7 97v41t-0.5 36.5t-0.5 16.5q0 25 -1 40t-4.5 34t-11 29t-21.5 17.5t-34 7.5q-60 0 -100 -30 q-11 -9 -11 -18v-228q0 -30 2.5 -36.5t16.5 -6.5h21q14 0 14 -13q0 -14 -14 -14q-9 0 -36 1t-40 1q-14 0 -45.5 -1t-38.5 -1q-12 0 -12 13q0 14 11 14h39q10 0 13 32q2 20 2 106v109q0 78 -4 78q-1 0 -28.5 -1.5t-30.5 -1.5q-5 0 -5 3z" />
+<glyph unicode="&#x1e56;" horiz-adv-x="564" d="M253 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM40 649q0 7 2.5 10.5t6 4t11.5 0.5q6 0 51 -1t62 -1q16 0 68 2.5t63 2.5q108 0 174 -49.5t66 -146.5q0 -92 -64 -136.5t-175 -44.5q-19 0 -46.5 1.5t-40.5 1.5 q-10 0 -10 -11v-66q0 -189 5 -189h73q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -55 1.5t-60 1.5q-18 0 -61.5 -1.5t-45.5 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h51q9 0 9 447v52q0 108 -5 108l-63 -2q-20 0 -20 17zM209 325q0 -13 38 -13q94 0 152.5 41.5 t58.5 132.5q0 71 -59.5 113t-151.5 42q-22 0 -33 -1q-5 0 -5 -54v-261z" />
+<glyph unicode="&#x1e57;" horiz-adv-x="512" d="M229 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 352q0 4 3.5 13t5.5 9q29 1 61.5 2.5t51 2.5t19.5 1q7 0 9 -2t2 -12v-24q0 -10 2 -10q1 0 19 14q50 37 108 37q83 0 127 -53t44 -136q0 -81 -57.5 -142t-151.5 -61 q-31 0 -66 11l-7.5 2.5t-6.5 2.5t-5 1t-4 -1.5t-1 -4.5l3 -189q2 -67 6 -67h70q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -49 1t-57 1q-12 0 -46.5 -1t-50.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h55q3 0 3 160v142q0 191 -7 287q-1 10 -3 12t-13 2 q-3 0 -25.5 -1t-24.5 -1q-13 0 -13 5zM178 52q0 -17 30 -29.5t57 -12.5q66 0 103 55t37 122q0 72 -37 116.5t-93 44.5q-36 0 -64 -13q-33 -17 -33 -33v-250z" />
+<glyph unicode="&#x1e60;" horiz-adv-x="528" d="M218 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM55 488q0 81 65 135t149 54q73 0 135 -42q10 -8 16 -8t7 10l1 11q0 9 2 11.5t13 2.5q12 0 15.5 -2.5t3.5 -11.5l-2 -63q-3 -63 -3 -94q0 -9 -3 -12.5t-13 -3.5 q-13 0 -16 2.5t-3 9.5q0 1 1.5 30t1.5 34q0 22 -51.5 60t-102.5 38q-57 0 -95 -37t-38 -92q0 -43 26.5 -73.5t65.5 -46l85.5 -34t85.5 -37.5t65.5 -58t26.5 -93q0 -88 -67.5 -140.5t-156.5 -52.5q-51 0 -99 9.5t-73 20t-26 16.5l-3.5 48l-4.5 62t-2 34q0 14 12 14h5 q15 0 16 -16l6 -92q1 -21 65.5 -42t112.5 -21q54 0 93.5 35t39.5 86q0 42 -26.5 72t-66 46.5l-85.5 36.5t-85.5 40t-66 60t-26.5 94z" />
+<glyph unicode="&#x1e61;" horiz-adv-x="337" d="M118 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM35 50q0 11 11.5 24.5t18.5 13.5q3 0 5 -3.5t5.5 -10.5t8.5 -13q42 -50 93 -50q28 0 47 16.5t19 48.5t-23 51.5t-66 37.5q-2 1 -18 8t-19 8.5t-17 8t-17.5 10t-13.5 11 t-13.5 14t-9 15t-7 18.5t-1.5 22q0 48 44 80.5t100 32.5q51 0 77.5 -22.5t26.5 -44.5q0 -7 -15 -13t-25 -6q-7 0 -12.5 10t-10 22.5t-18.5 22.5t-36 10q-29 0 -51 -17t-22 -53q0 -15 5.5 -27t21 -22.5t24 -15t31.5 -15.5q33 -16 45.5 -22.5t36 -22.5t33 -33t9.5 -38 q0 -53 -41.5 -85.5t-99.5 -32.5q-46 0 -86 19.5t-40 42.5z" />
+<glyph unicode="&#x1e6a;" horiz-adv-x="690" d="M294 767q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM20 544l4 22q3 21 7 52.5t6 53.5q1 10 3 12t13 2q13 0 13 -6v-11q0 -6 108 -6h357q108 0 109 11q1 12 13 12q11 0 14 -2t3 -9q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2 q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 8 -113 8h-116q-3 0 -5 -10t-3 -30.5t-1 -36t-0.5 -44t-0.5 -37.5l-1 -29q0 -28 -1 -72.5t-2 -94.5t-1.5 -102t-0.5 -87q0 -65 2 -65h74q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-63 -1.5t-58 -1.5 q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h62q7 0 10.5 192.5t3.5 325.5q0 90 -7 90h-144q-96 0 -97 -13l-7 -70q-1 -17 -13 -17q-20 0 -20 9z" />
+<glyph unicode="&#x1e6b;" horiz-adv-x="289" d="M91 573q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM35 344q0 5 3 8l91 127q3 5 9 5q10 0 10 -10q0 -1 -1.5 -20.5t-3 -42t-1.5 -29.5t2 -8.5t9 -1.5h95q9 0 10.5 -2t-1.5 -16q-4 -16 -13 -16h-99q-3 0 -3 -46v-192 q0 -20 2 -31t13 -21t33 -10q23 0 52 8l28 8q4 0 4 -16q0 -3 -22.5 -14t-53.5 -22t-50 -11q-39 0 -55.5 20.5t-16.5 48.5q2 144 2 216q0 61 -12 61h-25q-6 0 -6 7z" />
+<glyph unicode="&#x2000;" />
+<glyph unicode="&#x2001;" horiz-adv-x="1000" />
+<glyph unicode="&#x2002;" />
+<glyph unicode="&#x2003;" horiz-adv-x="1000" />
+<glyph unicode="&#x2004;" horiz-adv-x="333" />
+<glyph unicode="&#x2005;" horiz-adv-x="250" />
+<glyph unicode="&#x2006;" horiz-adv-x="166" />
+<glyph unicode="&#x2007;" />
+<glyph unicode="&#x2008;" horiz-adv-x="221" />
+<glyph unicode="&#x2009;" horiz-adv-x="166" />
+<glyph unicode="&#x200a;" horiz-adv-x="100" />
+<glyph unicode="&#x200b;" horiz-adv-x="0" />
+<glyph unicode="&#x200c;" horiz-adv-x="0" />
+<glyph unicode="&#x200d;" horiz-adv-x="0" />
+<glyph unicode="&#x200e;" horiz-adv-x="0" />
+<glyph unicode="&#x200f;" horiz-adv-x="0" />
+<glyph unicode="&#x2010;" horiz-adv-x="258" d="M25 201q0 12 6 25.5t12 14.5t91.5 4t91.5 3q2 0 2 -9q0 -33 -8 -33q-104 -8 -191 -8q-4 0 -4 3z" />
+<glyph unicode="&#x2011;" horiz-adv-x="258" d="M25 201q0 12 6 25.5t12 14.5t91.5 4t91.5 3q2 0 2 -9q0 -33 -8 -33q-104 -8 -191 -8q-4 0 -4 3z" />
+<glyph unicode="&#x2012;" d="M98 201q0 12 6 25.5t12 14.5t141 4t143 3q2 0 2 -9q0 -33 -8 -33q-9 -1 -145 -4.5t-147 -3.5q-4 0 -4 3z" />
+<glyph unicode="&#x2013;" d="M10 195q0 12 2 14.5t11 2.5h451q11 0 13.5 -2t2.5 -10v-12q0 -9 -2.5 -11t-13.5 -2h-444q-15 0 -17.5 2.5t-2.5 17.5z" />
+<glyph unicode="&#x2014;" horiz-adv-x="750" d="M10 195q0 12 2 14.5t11 2.5h701q11 0 13.5 -2t2.5 -10v-12q0 -9 -2.5 -11t-13.5 -2h-694q-15 0 -17.5 2.5t-2.5 17.5z" />
+<glyph unicode="&#x2015;" horiz-adv-x="750" d="M10 195q0 12 2 14.5t11 2.5h701q11 0 13.5 -2t2.5 -10v-12q0 -9 -2.5 -11t-13.5 -2h-694q-15 0 -17.5 2.5t-2.5 17.5z" />
+<glyph unicode="&#x2018;" horiz-adv-x="209" d="M30 520q0 32 24.5 72.5t49 65.5t29.5 25t10.5 -6.5t5.5 -11.5q0 -1 -17.5 -17t-34.5 -37t-17 -36q0 -13 24 -39t24 -39q0 -16 -17 -39t-30 -23q-7 0 -29 34t-22 51z" />
+<glyph unicode="&#x2019;" horiz-adv-x="209" d="M60 453q0 1 17 17t34.5 37t17.5 36q0 13 -24 39t-24 39q0 16 17 39t30 23q7 0 29 -34t22 -51q0 -32 -24.5 -72.5t-49 -65.5t-29.5 -25t-10.5 6.5t-5.5 11.5z" />
+<glyph unicode="&#x201a;" horiz-adv-x="209" d="M60 -118q0 1 17 17t34.5 37t17.5 36q0 13 -24 39t-24 39q0 16 17 39t30 23q7 0 29 -34t22 -51q0 -32 -24.5 -72.5t-49 -65.5t-29.5 -25t-10.5 6.5t-5.5 11.5z" />
+<glyph unicode="&#x201b;" horiz-adv-x="209" d="M30 598q0 17 22 51t29 34q13 0 30 -23t17 -39q0 -13 -24 -39t-24 -39q0 -15 17 -36t34.5 -37t17.5 -17q0 -5 -5.5 -11.5t-10.5 -6.5t-29.5 25t-49 65.5t-24.5 72.5z" />
+<glyph unicode="&#x201c;" horiz-adv-x="394" d="M30 520q0 32 24.5 72.5t49 65.5t29.5 25t10.5 -6.5t5.5 -11.5q0 -1 -17.5 -17t-34.5 -37t-17 -36q0 -13 24 -39t24 -39q0 -16 -17 -39t-30 -23q-7 0 -29 34t-22 51zM215 520q0 32 24.5 72.5t49 65.5t29.5 25t10.5 -6.5t5.5 -11.5q0 -1 -17 -17t-34.5 -37t-17.5 -36 q0 -13 24 -39t24 -39q0 -16 -17 -39t-30 -23q-7 0 -29 34t-22 51z" />
+<glyph unicode="&#x201d;" horiz-adv-x="394" d="M60 453q0 1 17 17t34.5 37t17.5 36q0 13 -24 39t-24 39q0 16 17 39t30 23q7 0 29 -34t22 -51q0 -32 -24.5 -72.5t-49 -65.5t-29.5 -25t-10.5 6.5t-5.5 11.5zM245 453q0 1 17.5 17t34.5 37t17 36q0 13 -24 39t-24 39q0 16 17 39t30 23q7 0 29 -34t22 -51 q0 -32 -24.5 -72.5t-49 -65.5t-29.5 -25t-10.5 6.5t-5.5 11.5z" />
+<glyph unicode="&#x201e;" horiz-adv-x="394" d="M60 -118q0 1 17 17t34.5 37t17.5 36q0 13 -24 39t-24 39q0 16 17 39t30 23q7 0 29 -34t22 -51q0 -32 -24.5 -72.5t-49 -65.5t-29.5 -25t-10.5 6.5t-5.5 11.5zM245 -118q0 1 17.5 17t34.5 37t17 36q0 13 -24 39t-24 39q0 16 17 39t30 23q7 0 29 -34t22 -51 q0 -32 -24.5 -72.5t-49 -65.5t-29.5 -25t-10.5 6.5t-5.5 11.5z" />
+<glyph unicode="&#x201f;" horiz-adv-x="394" d="M30 598q0 17 22 51t29 34q13 0 30 -23t17 -39q0 -13 -24 -39t-24 -39q0 -15 17 -36t34.5 -37t17.5 -17q0 -5 -5.5 -11.5t-10.5 -6.5t-29.5 25t-49 65.5t-24.5 72.5zM215 598q0 17 22 51t29 34q13 0 30 -23t17 -39q0 -13 -24 -39t-24 -39q0 -15 17.5 -36t34.5 -37t17 -17 q0 -5 -5.5 -11.5t-10.5 -6.5t-29.5 25t-49 65.5t-24.5 72.5z" />
+<glyph unicode="&#x2020;" horiz-adv-x="463" d="M25 423q0 17 15.5 25t36.5 8q27 0 64 -9.5t58 -9.5q9 0 16.5 6.5t7.5 15.5q0 3 -16 76t-16 92t11 34t29 15q20 0 30.5 -15t10.5 -33q0 -24 -11.5 -96t-11.5 -78q0 -8 8 -14t17 -6q21 0 61.5 11t52.5 11q50 0 50 -33t-48 -33q-17 0 -58.5 13t-51.5 13q-8 0 -15 -5.5 t-7 -12.5q0 -10 5 -25.5t5 -19.5q0 -2 -1 -19t-2.5 -54.5t-3 -96t-2.5 -163.5t-1 -237q0 -10 -17 -10h-6q-17 0 -17 10q0 131 -2 236.5t-5 164t-5.5 96.5t-4.5 54.5t-2 18.5t6 20.5t6 24.5q0 16 -15 16q-6 0 -48 -12t-71 -12q-52 0 -52 33z" />
+<glyph unicode="&#x2021;" horiz-adv-x="401" d="M25 -36q0 26 39 26q14 0 52 -10t46 -10q6 0 11.5 4t5.5 10q0 8 -3.5 15.5t-3.5 10.5q0 1 9.5 81t9.5 115q0 6 9 6t9 -6q0 -26 4 -72.5t8 -83.5t4 -40q0 -2 -4 -12t-4 -14q0 -13 12 -13q5 0 43.5 9.5t61.5 9.5q42 0 42 -26t-42 -26q-22 0 -56.5 7.5t-51.5 7.5 q-8 0 -13.5 -5.5t-5.5 -12.5q0 -2 12 -51.5t12 -64.5t-7.5 -27t-22.5 -12q-16 0 -23.5 12t-7.5 26q0 19 8 67.5t8 53.5q0 6 -6.5 11t-13.5 5q-17 0 -54 -8.5t-47 -8.5q-40 0 -40 26zM25 492q0 26 42 26q22 0 56.5 -7.5t51.5 -7.5q8 0 13.5 5.5t5.5 12.5q0 2 -12 49t-12 62 t7.5 27t22.5 12q16 0 23.5 -12t7.5 -26q0 -19 -8 -65t-8 -51q0 -6 6.5 -11t13.5 -5q17 0 54 8.5t47 8.5q40 0 40 -26t-39 -26q-14 0 -52 10t-46 10q-6 0 -11.5 -4t-5.5 -10q0 -8 3.5 -15.5t3.5 -10.5q0 -1 -8 -76t-8 -110q0 -7 -10 -7q-9 0 -9 7q0 26 -4.5 70t-9 78.5 t-4.5 37.5q0 2 4 12t4 14q0 13 -12 13q-5 0 -43.5 -9.5t-61.5 -9.5q-42 0 -42 26z" />
+<glyph unicode="&#x2022;" horiz-adv-x="356" d="M60 327q0 49 34.5 83.5t83.5 34.5t83.5 -34.5t34.5 -83.5t-34.5 -83.5t-83.5 -34.5t-83.5 34.5t-34.5 83.5z" />
+<glyph unicode="&#x2026;" horiz-adv-x="663" d="M502 38q0 16 16 37.5t28 21.5q16 0 36.5 -15t20.5 -32q0 -21 -16 -39.5t-26 -18.5q-20 0 -39.5 17t-19.5 29zM281 38q0 16 16 37.5t28 21.5q16 0 36.5 -15t20.5 -32q0 -21 -16 -39.5t-26 -18.5q-20 0 -39.5 17t-19.5 29zM60 38q0 16 16 37.5t28 21.5q16 0 36.5 -15 t20.5 -32q0 -21 -16 -39.5t-26 -18.5q-20 0 -39.5 17t-19.5 29z" />
+<glyph unicode="&#x202f;" horiz-adv-x="166" />
+<glyph unicode="&#x2030;" horiz-adv-x="952" d="M50 362q0 62 52.5 131.5t124.5 69.5q40 0 71 -31q24 -24 58 -24q46 0 93 28q17 10 31.5 22t35.5 33.5l22 22.5t4.5 5t7.5 8l3 4q6 0 12 -4t6 -8q0 -3 -5 -11q-360 -527 -434 -643q-4 -6 -19 -6q-16 0 -16 10q0 2 2 6l80 114l169.5 245.5t112.5 170.5q9 15 8 16 q-2 1 -8 -2q-47 -28 -105 -28q-16 0 -35 3v-16v-14q0 -17 -1 -25q-6 -72 -57.5 -130.5t-112.5 -58.5q-47 0 -73.5 32t-26.5 80zM99 336q0 -29 13.5 -50t40.5 -21q51 0 95 58.5t44 137.5q0 70 -52 70q-46 0 -93.5 -64t-47.5 -131zM336 103q0 71 56 137t125 66q42 0 66 -29.5 t24 -79.5q0 -79 -53 -142.5t-118 -63.5q-47 0 -73.5 31.5t-26.5 80.5zM385 78q0 -30 13 -50.5t41 -20.5q51 0 95 58.5t44 136.5q0 71 -53 71q-45 0 -92.5 -64t-47.5 -131zM631 103q0 71 56 137t125 66q42 0 66 -29.5t24 -79.5q0 -79 -53 -142.5t-118 -63.5q-47 0 -73.5 31.5 t-26.5 80.5zM680 78q0 -30 13 -50.5t41 -20.5q51 0 95 58.5t44 136.5q0 71 -53 71q-45 0 -92.5 -64t-47.5 -131z" />
+<glyph unicode="&#x2032;" horiz-adv-x="131" d="M30 511q0 1 2 32.5l4.5 68.5t3.5 47q4 29 32 29q29 0 29 -25q0 -4 -2 -14l-12.5 -43l-17.5 -57.5t-10 -32.5q-1 -3 -2 -7t-1.5 -5l-1.5 -3t-2.5 -2.5t-3.5 -1t-6 -0.5q-12 0 -12 14z" />
+<glyph unicode="&#x2033;" horiz-adv-x="261" d="M30 511q0 1 2 32.5l4.5 68.5t3.5 47q4 29 32 29q29 0 29 -25q0 -4 -2 -14l-12.5 -43l-17.5 -57.5t-10 -32.5q-1 -3 -2 -7t-1.5 -5l-1.5 -3t-2.5 -2.5t-3.5 -1t-6 -0.5q-12 0 -12 14zM160 511q0 1 2 32.5l4.5 68.5t3.5 47q4 29 32 29q29 0 29 -25q0 -4 -2 -14l-12.5 -43 l-17.5 -57.5t-10 -32.5q-1 -3 -2 -7t-1.5 -5l-1.5 -3t-2.5 -2.5t-3.5 -1t-6 -0.5q-12 0 -12 14z" />
+<glyph unicode="&#x2039;" horiz-adv-x="258" d="M50 193q0 4 55 55l36 34.5l31 30.5l12 11q2 0 8 -5.5t6 -6.5q0 -4 -31 -58t-31 -61t31 -61t31 -58q0 -1 -6 -6.5t-8 -5.5l-12 11l-31 30.5l-36 34.5q-55 51 -55 55z" />
+<glyph unicode="&#x203a;" horiz-adv-x="258" d="M60 74q0 4 31 58t31 61t-31 61t-31 58q0 1 6 6.5t8 5.5l12 -11l31 -30.5l36 -34.5q55 -51 55 -55t-55 -55l-36 -34.5l-31 -30.5l-12 -11q-2 0 -8 5.5t-6 6.5z" />
+<glyph unicode="&#x203e;" horiz-adv-x="400" />
+<glyph unicode="&#x2044;" horiz-adv-x="144" d="M-150 -8q0 1 4 9l408 657q7 10 23 10q17 0 17 -6q0 -2 -1 -4l-410 -659q-3 -5 -4 -6t-3.5 -3t-6 -2.5t-9.5 -0.5q-18 0 -18 5z" />
+<glyph unicode="&#x2053;" horiz-adv-x="793" d="M45 117q0 5 4 17q6 23 17 46t31.5 51.5t54.5 46.5t76 18q48 0 101.5 -22.5t93 -49.5t88 -49.5t86.5 -22.5q26 0 48.5 16t37 41.5t22 43t12.5 34.5q2 8 4.5 8.5t10.5 -1.5q11 -3 11 -7q0 -3 -1 -6q-7 -28 -19.5 -54.5t-33 -54.5t-54 -45t-73.5 -17q-50 0 -104.5 21.5 t-95 47.5t-89.5 47.5t-89 21.5q-27 0 -48 -14t-34 -36.5t-19.5 -40t-10.5 -35.5q-4 -14 -7 -14q-2 0 -10 2q-10 2 -10 7z" />
+<glyph unicode="&#x205f;" horiz-adv-x="222" />
+<glyph unicode="&#x2060;" horiz-adv-x="0" />
+<glyph unicode="&#x20ac;" horiz-adv-x="606" d="M30 282l15 37h70q14 55 45.5 97t70 63.5t74 32t65.5 10.5q60 0 105.5 -18t90.5 -60q-4 -9 -18 -38q-23 29 -67 54.5t-107 25.5q-33 0 -63 -7t-61.5 -24.5t-56.5 -52t-39 -83.5h358l-15 -37h-348q-2 -12 -2 -27l2 -27h325l-16 -38h-303q31 -81 91.5 -123.5t126.5 -42.5 q101 0 173 72v-48q-77 -61 -170 -61q-48 0 -97 17t-97.5 65t-66.5 121h-82l15 38h61q-2 12 -2 27l2 27h-79z" />
+<glyph unicode="&#x2122;" horiz-adv-x="797" d="M40 579q0 1 1.5 10.5t3.5 23.5t3 24q2 11 9 11q11 0 11 -10q7 -1 43 -1h161q37 0 45 2q3 9 11 9q9 0 9 -10q0 -1 -1 -19.5t-1 -39.5q0 -9 -9 -9q-11 0 -11 11l1 14v19q-18 2 -46 2h-50q-2 -10 -2 -67v-7q0 -7 -0.5 -19t-1 -26.5t-0.5 -31.5t-0.5 -33.5t-0.5 -32.5v-27 v-25h30q9 0 9 -9q0 -11 -9 -11q-5 0 -26.5 1t-28.5 1t-28 -1t-26 -1q-11 0 -11 11q0 9 13 9h24q5 35 5 232q0 33 -1 37h-62q-27 0 -39 -3l-3 -31q-2 -12 -11 -12q-11 0 -11 9zM373 337q0 10 13 10h21q0 3 0.5 9.5t1 17t0.5 18.5q8 224 8 228h-30q-10 0 -10 11q0 9 10 9 q3 0 23 -0.5t25 -0.5q6 0 16 0.5t11 0.5q9 0 13 -9l97 -243l92 237q6 14 16 14h16q7 0 23.5 0.5t21.5 0.5q11 0 11 -10t-13 -10h-18q-1 -6 -1 -34v-41q0 -160 6 -198h21q10 0 10 -10t-9 -10q-5 0 -23.5 1t-25.5 1t-24.5 -1t-22.5 -1q-12 0 -12 10t13 10h18q2 10 2 79 q0 88 -2 166l-83 -211q-5 -12 -12.5 -23t-12.5 -21q-7 -11 -11 -11q-7 0 -12 15l-105 259q-4 -122 -4 -208q0 -39 1 -45h29q10 0 10 -10t-10 -10q-5 0 -19 1t-21 1t-19.5 -1t-17.5 -1q-11 0 -11 10z" />
+<glyph unicode="&#x2212;" horiz-adv-x="527" d="M31 212q0 8 0.5 11.5t4.5 6t13 2.5h431q8 0 11.5 -2.5t4 -6t0.5 -12.5q0 -14 -3 -18.5t-18 -4.5h-427q-9 0 -12.5 3t-4 6.5t-0.5 14.5z" />
+<glyph unicode="&#xe000;" horiz-adv-x="380" d="M0 380h380v-380h-380v380z" />
+<glyph unicode="&#xfeff;" horiz-adv-x="0" />
+<glyph d="M38 305q0 149 65 236t149 87q93 0 151.5 -85t58.5 -231q0 -88 -24.5 -164t-74.5 -124.5t-115 -48.5q-93 0 -151.5 92t-58.5 238zM108 288q0 -141 39 -209t103 -68q39 0 69 29.5t46.5 77t24.5 98t8 100.5q0 45 -8.5 91.5t-25.5 88.5t-46.5 68.5t-66.5 26.5 q-63 0 -103 -86.5t-40 -216.5z" />
+<glyph d="M150 589v13q0 6 1 6.5t9 1.5q120 9 143 9q5 0 6 -2.5t1 -12.5q0 -101 -0.5 -274.5t-0.5 -263.5q0 -39 8 -39h46q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -38 1.5t-49 1.5q-16 0 -57 -1.5t-52 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h64q4 0 4 83v118 q0 226 -4 340q-1 10 -1.5 13t-2.5 5t-7 2q-3 0 -34.5 -2.5t-33.5 -2.5q-6 0 -6 6z" />
+<glyph d="M40 493q0 10 25 39.5t74 59.5t99 30q57 0 98.5 -29.5t59 -68t17.5 -77.5q0 -24 -6.5 -48.5t-20 -48.5t-27.5 -45t-36 -44l-37.5 -39.5t-40 -37l-36 -30l-33 -26t-23.5 -18.5q-8 -6 -16 -18.5t-12.5 -22t-4.5 -10.5t7 -1h292q2 0 9 42t9 42q21 0 21 -3q0 -31 -21 -133 q-1 -6 -11 -6h-346q-14 0 -14 11q0 4 28.5 53.5t32.5 52.5q4 4 33.5 29.5t46 41t45 47.5t44.5 58.5t29 63t13 71.5q0 57 -31 101.5t-88 44.5q-27 0 -53 -10t-44 -24t-31.5 -28t-21 -24t-8.5 -10q-5 0 -13 5t-8 10z" />
+<glyph d="M90 17q0 8 12.5 19t27.5 11q14 0 37 -13q42 -26 70 -26q63 0 99.5 43t36.5 107q0 128 -133 128q-15 0 -49.5 -2.5t-36.5 -2.5q-4 0 -6.5 1.5t-3.5 3.5t-1.5 6t-1.5 6q-2 6 -2 12q0 4 2 7t4 3.5t7.5 1.5t7.5 2q86 20 125.5 58t39.5 110q0 41 -28.5 74t-68.5 33 q-31 0 -58.5 -15.5t-42.5 -30.5t-16 -15q-6 0 -12.5 6t-6.5 12q0 8 20 25.5t57 34.5t75 17q64 0 107 -37.5t43 -93.5q0 -50 -31.5 -90t-76.5 -61q-10 -5 -24 -10.5l-20 -8t-6 -3.5t4 -1.5t16.5 -0.5t23.5 -1q73 -5 115 -38.5t42 -112.5q0 -84 -64.5 -138.5t-146.5 -54.5 q-136 0 -136 35z" />
+<glyph d="M40 209q0 27 16 55q68 119 204 295q8 11 22 20l17 11l11.5 11.5l10.5 10.5t8.5 8t8 6t5.5 2q11 0 11 -29v-326q0 -13 2 -15.5t13 -2.5h68q7 0 7 -10v-34q0 -7 -1.5 -8.5t-10.5 -1.5h-62q-11 0 -13 -2t-1 -12q4 -81 4 -185q0 -8 -4 -9q-12 -4 -61 -4q-5 0 -5 13l3 184 q0 11 -2.5 13t-13.5 2h-219q-18 0 -18 8zM87 259q0 -4 20 -4h167q14 0 16.5 3t2.5 17v243q0 26 -3 26q-8 0 -190 -263q-13 -18 -13 -22z" />
+<glyph d="M100 -18q0 13 8 14q4 1 31 4t38 5t37.5 9t39.5 15t33 23.5t30 34t17.5 46t7.5 61.5q0 144 -197 144q-5 0 -14.5 -0.5t-14.5 -0.5q-14 0 -14 10q0 49 27 265q1 6 16 6q1 0 9.5 -1l26 -3t42 -3.5t65 -2.5t86.5 -1q3 0 6 28q0 5 11 5h8q7 0 8.5 -1.5t1.5 -7.5q0 -2 -0.5 -13 t-1.5 -28t-1 -27q-1 -11 -7.5 -14t-26.5 -3q-88 0 -210 12q-5 2 -7 1t-2 -2t-1 -6q-14 -119 -14 -149q0 -11 11 -11q11 1 34 1q225 0 225 -194q0 -59 -28.5 -104t-66.5 -68.5t-85 -38t-75 -18t-45 -3.5q-8 0 -8 16z" />
+<glyph d="M45 218q0 83 31.5 156.5t75 119.5t91 80t78.5 48.5t39 14.5q3 0 8.5 -9t5.5 -12q0 -2 -0.5 -3.5t-1.5 -3t-3.5 -2.5t-4 -2t-5 -3t-5.5 -3q-88 -51 -137 -107t-76 -125q-10 -30 -10 -35q0 -3 6 -1q4 1 6 2q61 19 109 19q84 0 136 -48.5t52 -132.5q0 -86 -54.5 -139.5 t-136.5 -53.5q-90 0 -147 59.5t-57 180.5zM116 222q0 -218 142 -218q52 0 82.5 46t30.5 108q0 164 -143 164q-42 0 -75 -9q-27 -7 -29 -16q-8 -34 -8 -75z" />
+<glyph d="M80 491v25.5t0.5 55t0.5 59.5q0 13 3 16t16 3q11 0 13.5 -3t2.5 -17v-8q0 -4 166 -4h166q17 0 17 -12q0 -4 -4 -14l-63 -137l-53 -112.5l-53.5 -115.5t-38.5 -96t-39 -117q-8 -31 -9.5 -35t-7.5 -4q-19 0 -33 7t-14 17q0 46 101 255q53 110 153 285q9 16 9 18q0 3 -18 3 h-199q-83 0 -83 -9v-58q0 -8 -16 -8q-17 0 -17 6z" />
+<glyph d="M67 140q0 57 36 97.5t75 60.5q18 9 18 11l-2 1q-3 2 -8 5t-11 7q-96 66 -96 159q0 68 49 114.5t118 46.5q68 0 118.5 -41.5t50.5 -106.5q0 -34 -9 -60.5t-30 -49t-28.5 -28.5t-31.5 -24q-6 -5 -7.5 -7t0 -4t7.5 -6q2 -1 16.5 -9t22 -13.5l21.5 -16t22.5 -22.5t17.5 -28 t13.5 -36.5t4.5 -44.5q0 -71 -56 -120.5t-138 -49.5q-75 0 -124 47t-49 118zM120 150q0 -64 35 -104.5t92 -40.5q60 0 91.5 37.5t31.5 89.5q0 31 -9 55t-30 42.5t-35.5 28t-44.5 25.5q-7 4 -11 6q-20 11 -25 11q-3 0 -35 -22q-60 -44 -60 -128zM134 493q0 -64 69 -118 q17 -13 44.5 -29t32.5 -16q1 0 15 12q27 24 47 62t20 82q0 61 -36 92.5t-83 31.5q-43 0 -76 -33.5t-33 -83.5z" />
+<glyph d="M55 439q0 84 61.5 140.5t129.5 56.5q88 0 150 -70.5t62 -190.5q0 -76 -19 -139t-47.5 -102.5t-66.5 -70t-72.5 -46t-69 -25t-52 -11.5t-25.5 -2q-7 0 -7 23q0 9 20 11q6 1 10 2q46 7 88.5 26.5t84.5 62.5t61 103q13 44 16 84q0 14 -2 14q-3 0 -27 -16q-57 -37 -127 -37 q-73 0 -120.5 55.5t-47.5 131.5zM123 440q0 -60 38 -104.5t101 -44.5q39 0 71 13.5t45 30.5q8 10 8 56q0 86 -34.5 147.5t-101.5 61.5q-56 0 -91.5 -45t-35.5 -115z" />
+<glyph horiz-adv-x="249" d="M25 357q0 5 4 13q3 6 4.5 6.5t10.5 1.5q95 5 113 5q7 0 7 -6v-170q0 -113 3 -170q0 -5 0.5 -7t2.5 -3.5t7 -1.5h36q11 0 11 -13q0 -8 -1.5 -11t-9.5 -3q-9 0 -40 1t-44 1t-46.5 -1t-42.5 -1q-8 0 -9.5 2.5t-1.5 11.5q0 7 2.5 10t11.5 3h41q8 0 9.5 2t1.5 10q1 29 1 88 q0 117 -4 214q-1 11 -3 13.5t-10 2.5q-1 0 -24.5 -1t-25.5 -1q-4 0 -4 4zM77 553q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5z" />
+<glyph horiz-adv-x="0" d="M-309 542q0 25 30 25q18 0 34 -25l53 -85q2 -4 2 -6t-4 -2h-21l-8 6l-72 60q-14 11 -14 27z" />
+<glyph horiz-adv-x="0" d="M-210 451q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2z" />
+<glyph horiz-adv-x="0" d="M-311 451l4 6l79 89q12 13 16 13h24q4 0 16 -13l79 -89q4 -4 4 -6t-6 -2h-9q-1 0 -11 6l-81 45q-4 2 -8 0l-81 -45q-10 -6 -11 -6h-9q-6 0 -6 2z" />
+<glyph horiz-adv-x="0" d="M-311 557q0 2 6 2h9q1 0 11 -6l81 -45q4 -2 8 0l81 45q10 6 11 6h9q6 0 6 -2l-4 -6l-79 -89q-12 -13 -16 -13h-24q-4 0 -16 13l-79 89q-4 4 -4 6z" />
+<glyph horiz-adv-x="0" d="M-302 508v23q0 6 1.5 7t7.5 1h187q6 0 7 -1t1 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8z" />
+<glyph horiz-adv-x="0" d="M-303 552q0 6 1 6h17q1 0 2 -6t4.5 -15t10.5 -17.5t24.5 -14.5t43.5 -6t43.5 6t24.5 14.5t10.5 17.5t4.5 15t2 6h17q1 0 1 -6q0 -45 -26 -74t-77 -29t-77 29t-26 74z" />
+<glyph horiz-adv-x="0" d="M-277 451q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2zM-157 451q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2z" />
+<glyph horiz-adv-x="0" d="M-251 503q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5z" />
+<glyph horiz-adv-x="0" d="M-331 503q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM-171 503q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5z" />
+<glyph horiz-adv-x="0" d="M-321 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM-181 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5z" />
+<glyph horiz-adv-x="0" d="M-271 505q0 29 21 50t50 21t50 -21t21 -50t-21 -50t-50 -21t-50 21t-21 50zM-243 505q0 -18 12.5 -30.5t30.5 -12.5t30.5 12.5t12.5 30.5t-12.5 30.5t-30.5 12.5t-30.5 -12.5t-12.5 -30.5z" />
+<glyph horiz-adv-x="0" d="M-305 468q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2z" />
+<glyph horiz-adv-x="486" d="M20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14t19.5 44q6 19 19 19q3 0 5 -1.5t4 -5.5t3 -8t4 -12t6 -15q139 -362 147 -362h31q7 0 7 -13q0 -14 -10 -14q-4 0 -36 1t-43 1q-10 0 -52.5 -1t-48.5 -1t-6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5 q-3 8 -5 10t-7 2h-114q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12q0 -15 -12 -15q-7 0 -40.5 1t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182q0 -3 7 -3h94q9 0 9 4t-2 7q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="463" d="M25 388q0 14 10 14q2 0 44 -0.5t59 -0.5q18 0 58 1t50 1q31 0 54 -3t49 -12t40 -30t14 -53q0 -23 -10.5 -41.5t-25.5 -28.5t-30.5 -16.5t-26 -9t-10.5 -3.5l12 -3q13 -3 31.5 -9t36.5 -16.5t30.5 -30.5t12.5 -46q0 -102 -177 -102q-14 0 -54 0.5t-55 0.5 q-19 0 -42.5 -0.5t-39.5 -1t-17 -0.5q-9 0 -9 12q0 15 9 15h61q6 0 6 54v158q0 139 -8 139h-61q-11 0 -11 12zM178 129q0 -104 8 -104h47q60 0 88.5 23t28.5 56q0 89 -120 89h-45q-7 0 -7 -7v-57zM178 220q0 -6 10 -6h50q6 0 18 -0.5t13 -0.5q29 0 45.5 24.5t16.5 59.5 q0 41 -30 63t-79 22q-32 0 -41 -2q-3 -2 -3 -66v-94z" />
+<glyph horiz-adv-x="487" d="M30 208q0 80 67.5 142.5t156.5 62.5q40 0 80 -12t60 -24l19 -12l2 13q1 11 13 11q14 0 14 -9q0 -4 -2 -62t-2 -76q0 -8 -16 -8q-15 0 -15 7q0 1 1.5 33t1.5 35q0 4 -11 15q-60 60 -138 60q-60 0 -101 -51.5t-41 -129.5q0 -76 44 -130t113 -54q93 0 138 45q2 12 3 25 t1 28.5t1 25.5q1 9 12 9q16 0 16 -11q0 -45 -4 -101q-1 -6 -29 -19t-72 -24.5t-79 -11.5q-107 0 -170 56.5t-63 166.5z" />
+<glyph horiz-adv-x="502" d="M25 8q0 17 8 17h59q7 0 7 316v35h-60q-8 0 -8 14q0 13 8 13h6q6 0 16 -0.5t22 -1t26 -0.5h27q23 0 58 1.5t45 1.5q102 0 162.5 -54t60.5 -156q0 -95 -63 -145.5t-150 -50.5q-19 0 -59 1t-59 1q-17 0 -39.5 -0.5t-39 -1t-18.5 -0.5q-9 0 -9 10zM172 63q0 -35 3 -38 q4 -2 35 -2q50 0 85.5 16t53.5 43.5t25.5 55.5t7.5 60q0 80 -43 131.5t-136 51.5q-17 0 -25 -1q-6 0 -6 -70v-247z" />
+<glyph horiz-adv-x="458" d="M25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13q0 14 5 14l17 -1q17 0 42.5 -0.5t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34 q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57 q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5t-100.5 1t-139 0.5q-27 0 -68 -1t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="444" d="M25 389q0 15 9 15q1 0 17.5 -1t41 -1.5t44.5 -0.5q176 0 202 1q30 1 35.5 2.5t6.5 7.5q0 3 0.5 6t0.5 4.5t0.5 3.5t1.5 2.5t3 1t5 0.5q17 0 17 -6q0 -2 -1.5 -41t-1.5 -67q0 -5 -16 -5q-12 0 -12 9q0 1 0.5 24t0.5 25q0 7 -118 7h-82q-4 0 -4 -65q0 -69 1 -84v-6t1 -3.5 t3 -1.5h6h27q143 0 143 7v38q0 4 12 4q13 0 13 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28t0.5 -30q0 -6 -13 -6q-12 0 -12 7v41q0 7 -101 7h-69q-7 0 -8.5 -2t-1.5 -9q0 -159 4 -159h77q7 0 7 -15q0 -12 -7 -12t-57 1t-59 1t-50 -1t-48 -1q-8 0 -8 13q0 14 10 14h53 q5 0 5 117v96q0 138 -9 138h-57q-12 0 -12 13z" />
+<glyph horiz-adv-x="485" d="M25 200q0 96 65.5 155.5t158.5 59.5q39 0 76 -13.5t53 -26.5q10 -8 10 3l1 22q0 11 11 11q18 0 18 -8q0 -1 -3 -57t-3 -79q0 -7 -15 -7q-14 0 -14 8q0 1 1 24.5t1 26.5q0 4 -15.5 20.5t-47 33.5t-64.5 17q-65 0 -106.5 -47t-41.5 -131q0 -83 44.5 -137.5t118.5 -54.5 q36 0 60.5 8.5t26.5 18.5q2 18 2 28v29q0 24 -7 24h-55q-5 0 -5 15q0 12 5 12q7 0 36 -1t46 -1q13 0 36.5 1t37.5 1q4 0 4 -10q0 -17 -4 -17h-19q-8 0 -8 -34q0 -7 -0.5 -21t-0.5 -25q0 -8 -27.5 -21.5t-71.5 -24.5t-82 -11q-93 0 -157.5 50.5t-64.5 158.5z" />
+<glyph horiz-adv-x="567" d="M25 13q0 12 9 12h60q4 0 4 144v62q0 145 -4 145h-55q-13 0 -13 15q0 7 2 9.5t10 2.5l34 -1q34 -1 60 -1q19 0 62 1t46 1q9 0 9 -13q0 -14 -12 -14h-59q-4 0 -4 -74v-74q0 -7 1.5 -9t7.5 -2h208q7 0 8 1t1 8v68q0 82 -6 82h-57q-10 0 -10 16q0 11 10 11q3 0 16.5 -0.5 t34.5 -1t43 -0.5q24 0 47 0.5t36.5 1t14.5 0.5q7 0 7 -13q0 -14 -10 -14h-49q-1 0 -1 -138q0 -213 3 -213h57q6 0 6 -15q0 -12 -6 -12l-33 1q-33 1 -67 1q-33 0 -68 -1t-36 -1q-8 0 -8 13q0 14 9 14h63q4 0 4 88v73q0 7 -0.5 8t-4.5 1h-213h-4t-2.5 -1t-1.5 -3v-6 q0 -160 7 -160h59q7 0 7 -12q0 -15 -7 -15l-35 1q-35 1 -69 1q-31 0 -66.5 -1t-36.5 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="283" d="M25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74v-189q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="291" d="M-20 -153q0 21 22 41.5t30 20.5q10 0 29.5 -11.5t28.5 -11.5q18 0 24 16t6 51q0 44 -1.5 138t-1.5 140v72q0 73 -2 73h-77q-13 0 -13 15q0 12 13 12l44 -1q45 -1 71 -1q30 0 66.5 1t37.5 1q9 0 9 -13q0 -14 -10 -14h-57q-5 0 -5 -74v-217q0 -44 -2.5 -71.5t-17.5 -66.5 t-44 -70q-48 -52 -99 -52q-17 0 -34 6.5t-17 15.5z" />
+<glyph horiz-adv-x="493" d="M25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1q24 0 59.5 1t37.5 1q9 0 9 -13q0 -14 -12 -14h-48q-6 0 -6 -75v-82q0 -13 9 -13h16q6 0 128 157q7 7 6.5 10t-12.5 3h-22q-13 0 -13 15q0 12 13 12q1 0 22.5 -1t42.5 -1 q23 0 46 1t26 1q9 0 9 -13q0 -14 -12 -14h-39q-3 0 -50 -49.5l-80 -85.5q-6 -6 0 -12l174 -194q10 -10 19 -10h16q7 0 7 -12q0 -15 -7 -15q-2 0 -30.5 1t-54.5 1q-27 0 -56.5 -1t-31.5 -1q-8 0 -8 15q0 12 9 12h37q10 0 10 1.5t-5 7.5l-129 148q-3 3 -12 3h-16q-7 0 -9.5 -1 t-2.5 -7v-94q0 -58 7 -58h55q7 0 7 -12q0 -15 -7 -15q-1 0 -33 1t-65 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="445" d="M25 13q0 12 9 12h60q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l36 -1q36 -1 62 -1q30 0 73.5 1t44.5 1q9 0 9 -14q0 -13 -11 -13h-70q-6 0 -6 -74v-189q0 -83 8 -83q98 0 186 8q12 1 16.5 5t5.5 18l7 57q1 9 15 7t14 -9q0 -3 -1.5 -16.5l-4.5 -39.5l-6 -52 q-1 -11 -19 -11q-11 0 -126 1.5t-131 1.5q-36 0 -72 -1l-37 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="705" d="M25 13q0 12 9 12h62q3 0 6.5 87.5t5.5 175.5l1 88h-70q-13 0 -13 15q0 12 13 12l36 -1q36 -1 62 -1h59q7 0 10 -6q150 -301 155 -301q2 0 15.5 26.5t32 68l36 80.5l33.5 75.5t18 41.5q5 11 6.5 13t7.5 2h51q30 0 62.5 1t33.5 1q9 0 9 -13q0 -14 -12 -14h-53q-5 0 -5 -74 q0 -277 10 -277h67q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15q0 12 9 12h62q5 0 5 120q0 225 -7 225q-5 0 -140 -303q-6 -14 -15.5 -29.5t-16.5 -29.5q-5 -8 -10 -8q-7 0 -13 10l-167 327q-12 24 -15 24q-4 0 -4 -29q0 -307 11 -307h69 q7 0 7 -12q0 -15 -7 -15q-1 0 -31 1t-63 1q-36 0 -62 -1l-26 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="569" d="M25 13q0 12 9 12h59l16 351h-70q-13 0 -13 15q0 12 13 12l35 -1q34 -1 60 -1h51q5 0 10 -6l240 -271q7 -9 10 -9q2 0 2 10q0 251 -9 251h-74q-7 0 -7 12q0 15 7 15q1 0 35 -1t64 -1q21 0 45.5 1t27.5 1q8 0 8 -15q0 -12 -9 -12h-47q-6 0 -10 -120.5t-4 -181.5l2 -77 q0 -10 -7 -10q-8 0 -17 9l-305 337q-3 3 -6 6.5t-4.5 5t-2.5 1.5q-2 0 -2 -14v-69q0 -238 9 -238h76q7 0 7 -12q0 -15 -7 -15q-1 0 -33 1t-66 1q-26 0 -44.5 -0.5t-27.5 -1t-13 -0.5q-8 0 -8 15z" />
+<glyph d="M30 190q0 94 60.5 159t175.5 65q91 0 147.5 -64.5t56.5 -148.5q0 -91 -54 -151.5t-175 -60.5q-99 0 -155 58t-56 143zM113 210q0 -88 35.5 -143t95.5 -55q73 0 108.5 55t35.5 129q0 78 -39.5 137t-100.5 59q-56 0 -95.5 -54.5t-39.5 -127.5z" />
+<glyph horiz-adv-x="446" d="M25 388q0 14 10 14q2 0 45 -0.5t60 -0.5q18 0 58 1t50 1q168 0 168 -113q0 -118 -172 -118q-14 0 -34.5 1t-23.5 1q-7 0 -7 -7v-38q0 -104 9 -104h74q7 0 7 -12q0 -15 -7 -15l-42 1q-42 1 -76 1q-19 0 -43.5 -0.5t-42 -1t-18.5 -0.5q-9 0 -9 12q0 15 9 15h61q6 0 6 54 v158q0 139 -8 139h-63q-11 0 -11 12zM179 200q0 -9 10 -9q76 0 115.5 19.5t39.5 69.5q0 47 -32 72.5t-88 25.5q-33 0 -42 -2q-3 -2 -3 -62v-114z" />
+<glyph horiz-adv-x="494" d="M30 198q0 93 57.5 154.5t172.5 61.5q89 0 146.5 -60.5t57.5 -142.5q0 -71 -45 -128.5t-118 -72.5q-2 0 -11.5 -2t-14.5 -4q-9 -3 -25.5 -13l-29.5 -18.5t-13 -9.5t13.5 -3.5t36.5 -6t37 -6.5q11 -3 27 -7t24 -6.5t19 -4t20 -1.5q18 0 38.5 6.5t34 13t14.5 6.5q2 0 5 -4.5 t3 -7.5q0 -4 -22 -20t-54 -31t-52 -15q-37 0 -81.5 15t-75.5 30t-34 15q-6 0 -25.5 -9t-26.5 -9q-13 0 -21.5 10.5t-8.5 21.5q0 3 2.5 5.5t7 4t8 2.5t10.5 2t8 1q3 1 25.5 3t30.5 4q15 5 39 18.5t24 15.5t-18 5q-85 14 -135 64t-50 123zM113 206q0 -78 49.5 -131.5 t92.5 -53.5q56 0 91.5 53.5t35.5 121.5q0 90 -39 142.5t-100 52.5q-57 0 -93.5 -48.5t-36.5 -136.5z" />
+<glyph horiz-adv-x="478" d="M20 388q0 14 10 14q2 0 40 -0.5t55 -0.5q18 0 59.5 1t51.5 1q156 0 156 -98q0 -23 -11 -42.5t-26.5 -30.5t-31 -18.5t-26.5 -11t-11 -4.5l13 -3q13 -3 31 -11.5t36.5 -22t31.5 -40t14 -61.5q0 -16 2 -24t3.5 -9.5t5.5 -1.5h31q7 0 7 -16q0 -11 -10 -11l-110 2q-5 0 -5 5 v37q0 35 -3 55.5t-13.5 44t-35 34t-64.5 10.5h-48q-7 0 -7 -7v-50q0 -104 8 -104h61q7 0 7 -12q0 -15 -7 -15l-36 1q-36 1 -70 1q-19 0 -41.5 -0.5t-37.5 -1t-16 -0.5q-9 0 -9 12q0 15 9 15h53q6 0 6 54v158q0 139 -8 139h-53q-11 0 -11 12zM165 208q0 -6 10 -6h68 q37 0 56 25.5t19 62.5q0 40 -32.5 66t-73.5 26q-35 0 -44 -2q-3 -2 -3 -66v-106z" />
+<glyph horiz-adv-x="369" d="M40 292q0 53 39 87t96 34q46 0 99 -24q1 0 5.5 -2.5t6 -1.5t1.5 7l1 9q0 7 12 7q17 0 17 -8q0 -2 -1.5 -21t-3 -44.5t-1.5 -43.5q0 -7 -10 -7h-3q-14 0 -14 7q0 1 1 20t1 22q0 6 -14.5 19t-41 25t-52.5 12t-51 -18.5t-25 -50.5q0 -29 24.5 -48t59.5 -30t69.5 -24 t59 -40.5t24.5 -69.5q0 -63 -45.5 -91.5t-117.5 -28.5q-29 0 -59.5 6t-48 12.5t-18.5 9.5q-4 92 -4 106q0 3 14 5q10 1 12 -0.5t2 -8.5v-4l3 -49q1 -17 40 -32t77 -15q86 0 86 68q0 25 -24.5 41.5t-60 27.5t-71 24.5t-60 42t-24.5 70.5z" />
+<glyph horiz-adv-x="464" d="M20 307q0 11 13 111q0 3 11 3q12 0 12 -4v-14q0 -2 24 -2h275q62 0 63 5q1 3 1.5 10t0.5 11q0 3 12 3q11 0 11 -7l1 -107q0 -7 -14 -7q-11 0 -11 9v54q0 4 -65 4h-73q-9 0 -9 -101v-184q0 -66 10 -66h69q7 0 7 -12q0 -15 -7 -15q-1 0 -41 1t-74 1q-36 0 -74 -1l-39 -1 q-8 0 -8 15q0 12 9 12h65q4 0 6 84l3 210q0 57 -5 57h-45q-95 0 -96 -10l-7 -60q-1 -4 -13 -4t-12 5z" />
+<glyph horiz-adv-x="551" d="M25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-62q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14 h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17t-5 5.5l-10 -6q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="452" d="M10 389q0 6 0.5 8t3.5 4t9 2q8 0 34.5 -1t42.5 -1q28 0 58.5 1t35.5 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-38q-18 0 -18 -8q0 -3 46 -119t67 -165q6 -14 7 -14q2 -1 5 8q1 1 2 4q19 47 54 152.5t35 133.5q0 8 -3 8h-46q-8 0 -10.5 3t-2.5 10q0 14 14 14q2 0 11.5 -0.5 t26 -1t34.5 -0.5q12 0 28.5 1t23.5 1t9 -2.5t2 -11.5q0 -13 -12 -13h-15q-9 0 -13 -10q-6 -15 -50.5 -135t-66.5 -173q-6 -15 -12 -23.5t-16.5 -20t-20.5 -26.5q-6 -7 -11 -7q-12 0 -32 60q-5 16 -58 141t-74 179q-4 11 -7.5 13t-14.5 2h-16q-8 0 -10.5 3t-2.5 10z" />
+<glyph horiz-adv-x="709" d="M10 389q0 6 0.5 8t3.5 4t9 2q8 0 35.5 -1t43.5 -1q13 0 46 1t41 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-35q-19 0 -19 -8q0 -2 18 -55l42.5 -119.5t38.5 -97.5q6 -13 8 -13t10 17l89 197q2 5 2 23q0 7 -13 42q-4 11 -7.5 12.5t-15.5 1.5h-23q-8 0 -10.5 3t-2.5 10 q0 6 0.5 8t3.5 4t9 2q3 0 31 -1t48 -1q28 0 59 1t36 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-43q-13 0 -13 -8q0 -2 18 -57.5l42 -124.5t36 -100q6 -15 7 -15l8 17q97 228 97 277q0 11 -4 11h-45q-8 0 -10.5 3t-2.5 10q0 14 14 14q2 0 27 -1t36 -1q13 0 36 1t25 1q7 0 9 -2.5 t2 -11.5q0 -13 -12 -13h-13q-9 0 -14 -10q-4 -9 -31 -74l-55 -128.5l-48 -105.5q-8 -17 -22 -34t-25 -36q-2 -4 -7 -4q-14 0 -31 63q-3 11 -15.5 44.5l-30.5 83.5t-31 90q-1 4 -3 9q-1 3 -2 0l-4 -10l-92 -205q-8 -17 -22.5 -33.5t-25.5 -37.5q-2 -4 -7 -4q-4 0 -7.5 3.5 t-7 10.5t-5.5 12.5t-5.5 16t-4.5 14.5q-4 12 -26.5 71.5l-48.5 130l-43 118.5q-4 11 -7 13t-14 2h-16q-8 0 -10.5 3t-2.5 10z" />
+<glyph horiz-adv-x="458" d="M10 12q0 13 12 13q27 0 36 4t26 25l111 134q5 6 -4 19q-116 169 -118 169h-32q-8 0 -10.5 3t-2.5 10q0 6 0.5 8t3.5 4t9 2q7 0 34.5 -1t48.5 -1q22 0 49 1t34 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-36q0 -6 16 -36q36 -63 52 -87q4 -8 9 -2l3 3q15 16 73 104q8 12 8 14 q0 4 -16 4h-23q-8 0 -10.5 3t-2.5 10q0 14 14 14q1 0 24.5 -1t44.5 -1q15 0 33.5 1t22.5 1q13 0 13 -14q0 -13 -12 -13h-20q-4 0 -7 -0.5t-6 -3.5t-5.5 -5t-8 -8.5l-9.5 -11.5l-97 -109q-8 -9 -8 -9.5t7 -14.5q21 -34 75.5 -111.5t60.5 -77.5h32q8 0 10.5 -3t2.5 -10 q0 -6 -0.5 -8t-3.5 -4t-9 -2q-7 0 -36.5 1t-52.5 1q-26 0 -59 -1t-39 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h51q1 0 1 2q0 14 -79 137q-1 1 -2 3q-5 5 -8 1.5t-5 -6.5q-9 -11 -84 -115q-10 -14 -10 -16q0 -6 18 -6h32q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2 q-8 0 -32 1t-40 1t-38 -1t-28 -1q-8 0 -10.5 3t-2.5 11z" />
+<glyph horiz-adv-x="464" d="M10 389q0 6 0.5 8t3.5 4t9 2q7 0 34.5 -1t48.5 -1q29 0 61 1t37 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-51q1 -12 23 -55.5l42.5 -80.5t21.5 -38q2 -5 4 -6.5t4 -0.5t6 5q11 13 45.5 69.5t50.5 88.5q1 2 3 5t3.5 5.5t1.5 3.5q0 4 -19 4h-40q-8 0 -10.5 3t-2.5 10 q0 14 14 14q1 0 33.5 -1t53.5 -1q15 0 32 1t21 1q13 0 13 -14q0 -13 -12 -13h-17h-5t-4 -1l-3 -1.5t-3.5 -3t-3.5 -4l-4.5 -6.5l-5.5 -8l-123 -168q-10 -13 -10 -31v-87q0 -41 9 -41h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-26 0 -48 -0.5t-34 -1t-16 -0.5q-8 0 -8 15 q0 12 9 12h57q5 0 5 84v38q0 7 -66.5 118t-70.5 111h-32q-8 0 -10.5 3t-2.5 10z" />
+<glyph horiz-adv-x="413" d="M30 10q0 4 10 20l228 327l4 6t3.5 5.5t1.5 3.5q0 4 -14 4l-165 -5h-9t-6.5 -0.5t-4 -0.5t-3 -2t-1 -4.5l-1.5 -7.5l-7 -50q-2 -12 -13 -12q-15 0 -15 10q0 2 3 22.5l7 49t6 46.5q2 6 8 6q9 0 14.5 -1.5t4.5 -6.5l-1 -9q-1 -8 0 -9t9 -1h266q19 0 19 -8q0 -3 -8 -16 l-215 -322q-13 -19 -13 -24q0 -4 10 -4l194 7q9 0 11 1.5t3 11.5l3 60q1 9 4.5 11.5t15.5 1.5q9 -1 9 -9q0 -23 -5 -96q-1 -11 -3 -13t-13 -2h-315q-22 0 -22 10z" />
+<glyph horiz-adv-x="486" d="M20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14t19.5 44q6 19 19 19q3 0 5 -1.5t4 -5.5t3 -8t4 -12t6 -15q139 -362 147 -362h31q7 0 7 -13q0 -14 -10 -14q-4 0 -36 1t-43 1q-10 0 -52.5 -1t-48.5 -1t-6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5 q-3 8 -5 10t-7 2h-114q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12q0 -15 -12 -15q-7 0 -40.5 1t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182q0 -3 7 -3h94q9 0 9 4t-2 7q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="463" d="M25 388q0 14 10 14q2 0 44 -0.5t59 -0.5q18 0 58 1t50 1q31 0 54 -3t49 -12t40 -30t14 -53q0 -23 -10.5 -41.5t-25.5 -28.5t-30.5 -16.5t-26 -9t-10.5 -3.5l12 -3q13 -3 31.5 -9t36.5 -16.5t30.5 -30.5t12.5 -46q0 -102 -177 -102q-14 0 -54 0.5t-55 0.5 q-19 0 -42.5 -0.5t-39.5 -1t-17 -0.5q-9 0 -9 12q0 15 9 15h61q6 0 6 54v158q0 139 -8 139h-61q-11 0 -11 12zM178 129q0 -104 8 -104h47q60 0 88.5 23t28.5 56q0 89 -120 89h-45q-7 0 -7 -7v-57zM178 220q0 -6 10 -6h50q6 0 18 -0.5t13 -0.5q29 0 45.5 24.5t16.5 59.5 q0 41 -30 63t-79 22q-32 0 -41 -2q-3 -2 -3 -66v-94z" />
+<glyph horiz-adv-x="487" d="M30 208q0 80 67.5 142.5t156.5 62.5q40 0 80 -12t60 -24l19 -12l2 13q1 11 13 11q14 0 14 -9q0 -4 -2 -62t-2 -76q0 -8 -16 -8q-15 0 -15 7q0 1 1.5 33t1.5 35q0 4 -11 15q-60 60 -138 60q-60 0 -101 -51.5t-41 -129.5q0 -76 44 -130t113 -54q93 0 138 45q2 12 3 25 t1 28.5t1 25.5q1 9 12 9q16 0 16 -11q0 -45 -4 -101q-1 -6 -29 -19t-72 -24.5t-79 -11.5q-107 0 -170 56.5t-63 166.5z" />
+<glyph horiz-adv-x="502" d="M25 8q0 17 8 17h59q7 0 7 316v35h-60q-8 0 -8 14q0 13 8 13h6q6 0 16 -0.5t22 -1t26 -0.5h27q23 0 58 1.5t45 1.5q102 0 162.5 -54t60.5 -156q0 -95 -63 -145.5t-150 -50.5q-19 0 -59 1t-59 1q-17 0 -39.5 -0.5t-39 -1t-18.5 -0.5q-9 0 -9 10zM172 63q0 -35 3 -38 q4 -2 35 -2q50 0 85.5 16t53.5 43.5t25.5 55.5t7.5 60q0 80 -43 131.5t-136 51.5q-17 0 -25 -1q-6 0 -6 -70v-247z" />
+<glyph horiz-adv-x="458" d="M25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13q0 14 5 14l17 -1q17 0 42.5 -0.5t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34 q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57 q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5t-100.5 1t-139 0.5q-27 0 -68 -1t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="444" d="M25 389q0 15 9 15q1 0 17.5 -1t41 -1.5t44.5 -0.5q176 0 202 1q30 1 35.5 2.5t6.5 7.5q0 3 0.5 6t0.5 4.5t0.5 3.5t1.5 2.5t3 1t5 0.5q17 0 17 -6q0 -2 -1.5 -41t-1.5 -67q0 -5 -16 -5q-12 0 -12 9q0 1 0.5 24t0.5 25q0 7 -118 7h-82q-4 0 -4 -65q0 -69 1 -84v-6t1 -3.5 t3 -1.5h6h27q143 0 143 7v38q0 4 12 4q13 0 13 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28t0.5 -30q0 -6 -13 -6q-12 0 -12 7v41q0 7 -101 7h-69q-7 0 -8.5 -2t-1.5 -9q0 -159 4 -159h77q7 0 7 -15q0 -12 -7 -12t-57 1t-59 1t-50 -1t-48 -1q-8 0 -8 13q0 14 10 14h53 q5 0 5 117v96q0 138 -9 138h-57q-12 0 -12 13z" />
+<glyph horiz-adv-x="485" d="M25 200q0 96 65.5 155.5t158.5 59.5q39 0 76 -13.5t53 -26.5q10 -8 10 3l1 22q0 11 11 11q18 0 18 -8q0 -1 -3 -57t-3 -79q0 -7 -15 -7q-14 0 -14 8q0 1 1 24.5t1 26.5q0 4 -15.5 20.5t-47 33.5t-64.5 17q-65 0 -106.5 -47t-41.5 -131q0 -83 44.5 -137.5t118.5 -54.5 q36 0 60.5 8.5t26.5 18.5q2 18 2 28v29q0 24 -7 24h-55q-5 0 -5 15q0 12 5 12q7 0 36 -1t46 -1q13 0 36.5 1t37.5 1q4 0 4 -10q0 -17 -4 -17h-19q-8 0 -8 -34q0 -7 -0.5 -21t-0.5 -25q0 -8 -27.5 -21.5t-71.5 -24.5t-82 -11q-93 0 -157.5 50.5t-64.5 158.5z" />
+<glyph horiz-adv-x="567" d="M25 13q0 12 9 12h60q4 0 4 144v62q0 145 -4 145h-55q-13 0 -13 15q0 7 2 9.5t10 2.5l34 -1q34 -1 60 -1q19 0 62 1t46 1q9 0 9 -13q0 -14 -12 -14h-59q-4 0 -4 -74v-74q0 -7 1.5 -9t7.5 -2h208q7 0 8 1t1 8v68q0 82 -6 82h-57q-10 0 -10 16q0 11 10 11q3 0 16.5 -0.5 t34.5 -1t43 -0.5q24 0 47 0.5t36.5 1t14.5 0.5q7 0 7 -13q0 -14 -10 -14h-49q-1 0 -1 -138q0 -213 3 -213h57q6 0 6 -15q0 -12 -6 -12l-33 1q-33 1 -67 1q-33 0 -68 -1t-36 -1q-8 0 -8 13q0 14 9 14h63q4 0 4 88v73q0 7 -0.5 8t-4.5 1h-213h-4t-2.5 -1t-1.5 -3v-6 q0 -160 7 -160h59q7 0 7 -12q0 -15 -7 -15l-35 1q-35 1 -69 1q-31 0 -66.5 -1t-36.5 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="283" d="M25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74v-189q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="291" d="M-20 -153q0 21 22 41.5t30 20.5q10 0 29.5 -11.5t28.5 -11.5q18 0 24 16t6 51q0 44 -1.5 138t-1.5 140v72q0 73 -2 73h-77q-13 0 -13 15q0 12 13 12l44 -1q45 -1 71 -1q30 0 66.5 1t37.5 1q9 0 9 -13q0 -14 -10 -14h-57q-5 0 -5 -74v-217q0 -44 -2.5 -71.5t-17.5 -66.5 t-44 -70q-48 -52 -99 -52q-17 0 -34 6.5t-17 15.5z" />
+<glyph horiz-adv-x="493" d="M25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1q24 0 59.5 1t37.5 1q9 0 9 -13q0 -14 -12 -14h-48q-6 0 -6 -75v-82q0 -13 9 -13h16q6 0 128 157q7 7 6.5 10t-12.5 3h-22q-13 0 -13 15q0 12 13 12q1 0 22.5 -1t42.5 -1 q23 0 46 1t26 1q9 0 9 -13q0 -14 -12 -14h-39q-3 0 -50 -49.5l-80 -85.5q-6 -6 0 -12l174 -194q10 -10 19 -10h16q7 0 7 -12q0 -15 -7 -15q-2 0 -30.5 1t-54.5 1q-27 0 -56.5 -1t-31.5 -1q-8 0 -8 15q0 12 9 12h37q10 0 10 1.5t-5 7.5l-129 148q-3 3 -12 3h-16q-7 0 -9.5 -1 t-2.5 -7v-94q0 -58 7 -58h55q7 0 7 -12q0 -15 -7 -15q-1 0 -33 1t-65 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="445" d="M25 13q0 12 9 12h60q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l36 -1q36 -1 62 -1q30 0 73.5 1t44.5 1q9 0 9 -14q0 -13 -11 -13h-70q-6 0 -6 -74v-189q0 -83 8 -83q98 0 186 8q12 1 16.5 5t5.5 18l7 57q1 9 15 7t14 -9q0 -3 -1.5 -16.5l-4.5 -39.5l-6 -52 q-1 -11 -19 -11q-11 0 -126 1.5t-131 1.5q-36 0 -72 -1l-37 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="705" d="M25 13q0 12 9 12h62q3 0 6.5 87.5t5.5 175.5l1 88h-70q-13 0 -13 15q0 12 13 12l36 -1q36 -1 62 -1h59q7 0 10 -6q150 -301 155 -301q2 0 15.5 26.5t32 68l36 80.5l33.5 75.5t18 41.5q5 11 6.5 13t7.5 2h51q30 0 62.5 1t33.5 1q9 0 9 -13q0 -14 -12 -14h-53q-5 0 -5 -74 q0 -277 10 -277h67q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15q0 12 9 12h62q5 0 5 120q0 225 -7 225q-5 0 -140 -303q-6 -14 -15.5 -29.5t-16.5 -29.5q-5 -8 -10 -8q-7 0 -13 10l-167 327q-12 24 -15 24q-4 0 -4 -29q0 -307 11 -307h69 q7 0 7 -12q0 -15 -7 -15q-1 0 -31 1t-63 1q-36 0 -62 -1l-26 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="569" d="M25 13q0 12 9 12h59l16 351h-70q-13 0 -13 15q0 12 13 12l35 -1q34 -1 60 -1h51q5 0 10 -6l240 -271q7 -9 10 -9q2 0 2 10q0 251 -9 251h-74q-7 0 -7 12q0 15 7 15q1 0 35 -1t64 -1q21 0 45.5 1t27.5 1q8 0 8 -15q0 -12 -9 -12h-47q-6 0 -10 -120.5t-4 -181.5l2 -77 q0 -10 -7 -10q-8 0 -17 9l-305 337q-3 3 -6 6.5t-4.5 5t-2.5 1.5q-2 0 -2 -14v-69q0 -238 9 -238h76q7 0 7 -12q0 -15 -7 -15q-1 0 -33 1t-66 1q-26 0 -44.5 -0.5t-27.5 -1t-13 -0.5q-8 0 -8 15z" />
+<glyph d="M30 190q0 94 60.5 159t175.5 65q91 0 147.5 -64.5t56.5 -148.5q0 -91 -54 -151.5t-175 -60.5q-99 0 -155 58t-56 143zM113 210q0 -88 35.5 -143t95.5 -55q73 0 108.5 55t35.5 129q0 78 -39.5 137t-100.5 59q-56 0 -95.5 -54.5t-39.5 -127.5z" />
+<glyph horiz-adv-x="446" d="M25 388q0 14 10 14q2 0 45 -0.5t60 -0.5q18 0 58 1t50 1q168 0 168 -113q0 -118 -172 -118q-14 0 -34.5 1t-23.5 1q-7 0 -7 -7v-38q0 -104 9 -104h74q7 0 7 -12q0 -15 -7 -15l-42 1q-42 1 -76 1q-19 0 -43.5 -0.5t-42 -1t-18.5 -0.5q-9 0 -9 12q0 15 9 15h61q6 0 6 54 v158q0 139 -8 139h-63q-11 0 -11 12zM179 200q0 -9 10 -9q76 0 115.5 19.5t39.5 69.5q0 47 -32 72.5t-88 25.5q-33 0 -42 -2q-3 -2 -3 -62v-114z" />
+<glyph horiz-adv-x="494" d="M30 198q0 93 57.5 154.5t172.5 61.5q89 0 146.5 -60.5t57.5 -142.5q0 -71 -45 -128.5t-118 -72.5q-2 0 -11.5 -2t-14.5 -4q-9 -3 -25.5 -13l-29.5 -18.5t-13 -9.5t13.5 -3.5t36.5 -6t37 -6.5q11 -3 27 -7t24 -6.5t19 -4t20 -1.5q18 0 38.5 6.5t34 13t14.5 6.5q2 0 5 -4.5 t3 -7.5q0 -4 -22 -20t-54 -31t-52 -15q-37 0 -81.5 15t-75.5 30t-34 15q-6 0 -25.5 -9t-26.5 -9q-13 0 -21.5 10.5t-8.5 21.5q0 3 2.5 5.5t7 4t8 2.5t10.5 2t8 1q3 1 25.5 3t30.5 4q15 5 39 18.5t24 15.5t-18 5q-85 14 -135 64t-50 123zM113 206q0 -78 49.5 -131.5 t92.5 -53.5q56 0 91.5 53.5t35.5 121.5q0 90 -39 142.5t-100 52.5q-57 0 -93.5 -48.5t-36.5 -136.5z" />
+<glyph horiz-adv-x="478" d="M20 388q0 14 10 14q2 0 40 -0.5t55 -0.5q18 0 59.5 1t51.5 1q156 0 156 -98q0 -23 -11 -42.5t-26.5 -30.5t-31 -18.5t-26.5 -11t-11 -4.5l13 -3q13 -3 31 -11.5t36.5 -22t31.5 -40t14 -61.5q0 -16 2 -24t3.5 -9.5t5.5 -1.5h31q7 0 7 -16q0 -11 -10 -11l-110 2q-5 0 -5 5 v37q0 35 -3 55.5t-13.5 44t-35 34t-64.5 10.5h-48q-7 0 -7 -7v-50q0 -104 8 -104h61q7 0 7 -12q0 -15 -7 -15l-36 1q-36 1 -70 1q-19 0 -41.5 -0.5t-37.5 -1t-16 -0.5q-9 0 -9 12q0 15 9 15h53q6 0 6 54v158q0 139 -8 139h-53q-11 0 -11 12zM165 208q0 -6 10 -6h68 q37 0 56 25.5t19 62.5q0 40 -32.5 66t-73.5 26q-35 0 -44 -2q-3 -2 -3 -66v-106z" />
+<glyph horiz-adv-x="369" d="M40 292q0 53 39 87t96 34q46 0 99 -24q1 0 5.5 -2.5t6 -1.5t1.5 7l1 9q0 7 12 7q17 0 17 -8q0 -2 -1.5 -21t-3 -44.5t-1.5 -43.5q0 -7 -10 -7h-3q-14 0 -14 7q0 1 1 20t1 22q0 6 -14.5 19t-41 25t-52.5 12t-51 -18.5t-25 -50.5q0 -29 24.5 -48t59.5 -30t69.5 -24 t59 -40.5t24.5 -69.5q0 -63 -45.5 -91.5t-117.5 -28.5q-29 0 -59.5 6t-48 12.5t-18.5 9.5q-4 92 -4 106q0 3 14 5q10 1 12 -0.5t2 -8.5v-4l3 -49q1 -17 40 -32t77 -15q86 0 86 68q0 25 -24.5 41.5t-60 27.5t-71 24.5t-60 42t-24.5 70.5z" />
+<glyph horiz-adv-x="464" d="M20 307q0 11 13 111q0 3 11 3q12 0 12 -4v-14q0 -2 24 -2h275q62 0 63 5q1 3 1.5 10t0.5 11q0 3 12 3q11 0 11 -7l1 -107q0 -7 -14 -7q-11 0 -11 9v54q0 4 -65 4h-73q-9 0 -9 -101v-184q0 -66 10 -66h69q7 0 7 -12q0 -15 -7 -15q-1 0 -41 1t-74 1q-36 0 -74 -1l-39 -1 q-8 0 -8 15q0 12 9 12h65q4 0 6 84l3 210q0 57 -5 57h-45q-95 0 -96 -10l-7 -60q-1 -4 -13 -4t-12 5z" />
+<glyph horiz-adv-x="551" d="M25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-62q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14 h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17t-5 5.5l-10 -6q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="452" d="M10 389q0 6 0.5 8t3.5 4t9 2q8 0 34.5 -1t42.5 -1q28 0 58.5 1t35.5 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-38q-18 0 -18 -8q0 -3 46 -119t67 -165q6 -14 7 -14q2 -1 5 8q1 1 2 4q19 47 54 152.5t35 133.5q0 8 -3 8h-46q-8 0 -10.5 3t-2.5 10q0 14 14 14q2 0 11.5 -0.5 t26 -1t34.5 -0.5q12 0 28.5 1t23.5 1t9 -2.5t2 -11.5q0 -13 -12 -13h-15q-9 0 -13 -10q-6 -15 -50.5 -135t-66.5 -173q-6 -15 -12 -23.5t-16.5 -20t-20.5 -26.5q-6 -7 -11 -7q-12 0 -32 60q-5 16 -58 141t-74 179q-4 11 -7.5 13t-14.5 2h-16q-8 0 -10.5 3t-2.5 10z" />
+<glyph horiz-adv-x="709" d="M10 389q0 6 0.5 8t3.5 4t9 2q8 0 35.5 -1t43.5 -1q13 0 46 1t41 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-35q-19 0 -19 -8q0 -2 18 -55l42.5 -119.5t38.5 -97.5q6 -13 8 -13t10 17l89 197q2 5 2 23q0 7 -13 42q-4 11 -7.5 12.5t-15.5 1.5h-23q-8 0 -10.5 3t-2.5 10 q0 6 0.5 8t3.5 4t9 2q3 0 31 -1t48 -1q28 0 59 1t36 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-43q-13 0 -13 -8q0 -2 18 -57.5l42 -124.5t36 -100q6 -15 7 -15l8 17q97 228 97 277q0 11 -4 11h-45q-8 0 -10.5 3t-2.5 10q0 14 14 14q2 0 27 -1t36 -1q13 0 36 1t25 1q7 0 9 -2.5 t2 -11.5q0 -13 -12 -13h-13q-9 0 -14 -10q-4 -9 -31 -74l-55 -128.5l-48 -105.5q-8 -17 -22 -34t-25 -36q-2 -4 -7 -4q-14 0 -31 63q-3 11 -15.5 44.5l-30.5 83.5t-31 90q-1 4 -3 9q-1 3 -2 0l-4 -10l-92 -205q-8 -17 -22.5 -33.5t-25.5 -37.5q-2 -4 -7 -4q-4 0 -7.5 3.5 t-7 10.5t-5.5 12.5t-5.5 16t-4.5 14.5q-4 12 -26.5 71.5l-48.5 130l-43 118.5q-4 11 -7 13t-14 2h-16q-8 0 -10.5 3t-2.5 10z" />
+<glyph horiz-adv-x="458" d="M10 12q0 13 12 13q27 0 36 4t26 25l111 134q5 6 -4 19q-116 169 -118 169h-32q-8 0 -10.5 3t-2.5 10q0 6 0.5 8t3.5 4t9 2q7 0 34.5 -1t48.5 -1q22 0 49 1t34 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-36q0 -6 16 -36q36 -63 52 -87q4 -8 9 -2l3 3q15 16 73 104q8 12 8 14 q0 4 -16 4h-23q-8 0 -10.5 3t-2.5 10q0 14 14 14q1 0 24.5 -1t44.5 -1q15 0 33.5 1t22.5 1q13 0 13 -14q0 -13 -12 -13h-20q-4 0 -7 -0.5t-6 -3.5t-5.5 -5t-8 -8.5l-9.5 -11.5l-97 -109q-8 -9 -8 -9.5t7 -14.5q21 -34 75.5 -111.5t60.5 -77.5h32q8 0 10.5 -3t2.5 -10 q0 -6 -0.5 -8t-3.5 -4t-9 -2q-7 0 -36.5 1t-52.5 1q-26 0 -59 -1t-39 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h51q1 0 1 2q0 14 -79 137q-1 1 -2 3q-5 5 -8 1.5t-5 -6.5q-9 -11 -84 -115q-10 -14 -10 -16q0 -6 18 -6h32q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2 q-8 0 -32 1t-40 1t-38 -1t-28 -1q-8 0 -10.5 3t-2.5 11z" />
+<glyph horiz-adv-x="464" d="M10 389q0 6 0.5 8t3.5 4t9 2q7 0 34.5 -1t48.5 -1q29 0 61 1t37 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-51q1 -12 23 -55.5l42.5 -80.5t21.5 -38q2 -5 4 -6.5t4 -0.5t6 5q11 13 45.5 69.5t50.5 88.5q1 2 3 5t3.5 5.5t1.5 3.5q0 4 -19 4h-40q-8 0 -10.5 3t-2.5 10 q0 14 14 14q1 0 33.5 -1t53.5 -1q15 0 32 1t21 1q13 0 13 -14q0 -13 -12 -13h-17h-5t-4 -1l-3 -1.5t-3.5 -3t-3.5 -4l-4.5 -6.5l-5.5 -8l-123 -168q-10 -13 -10 -31v-87q0 -41 9 -41h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-26 0 -48 -0.5t-34 -1t-16 -0.5q-8 0 -8 15 q0 12 9 12h57q5 0 5 84v38q0 7 -66.5 118t-70.5 111h-32q-8 0 -10.5 3t-2.5 10z" />
+<glyph horiz-adv-x="413" d="M30 10q0 4 10 20l228 327l4 6t3.5 5.5t1.5 3.5q0 4 -14 4l-165 -5h-9t-6.5 -0.5t-4 -0.5t-3 -2t-1 -4.5l-1.5 -7.5l-7 -50q-2 -12 -13 -12q-15 0 -15 10q0 2 3 22.5l7 49t6 46.5q2 6 8 6q9 0 14.5 -1.5t4.5 -6.5l-1 -9q-1 -8 0 -9t9 -1h266q19 0 19 -8q0 -3 -8 -16 l-215 -322q-13 -19 -13 -24q0 -4 10 -4l194 7q9 0 11 1.5t3 11.5l3 60q1 9 4.5 11.5t15.5 1.5q9 -1 9 -9q0 -23 -5 -96q-1 -11 -3 -13t-13 -2h-315q-22 0 -22 10z" />
+<glyph horiz-adv-x="486" d="M240 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14t19.5 44q6 19 19 19q3 0 5 -1.5t4 -5.5t3 -8t4 -12t6 -15q139 -362 147 -362h31 q7 0 7 -13q0 -14 -10 -14q-4 0 -36 1t-43 1q-10 0 -52.5 -1t-48.5 -1t-6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5q-3 8 -5 10t-7 2h-114q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12q0 -15 -12 -15q-7 0 -40.5 1t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182 q0 -3 7 -3h94q9 0 9 4t-2 7q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="486" d="M145 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14t19.5 44q6 19 19 19q3 0 5 -1.5 t4 -5.5t3 -8t4 -12t6 -15q139 -362 147 -362h31q7 0 7 -13q0 -14 -10 -14q-4 0 -36 1t-43 1q-10 0 -52.5 -1t-48.5 -1t-6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5q-3 8 -5 10t-7 2h-114q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12q0 -15 -12 -15q-7 0 -40.5 1 t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182q0 -3 7 -3h94q9 0 9 4t-2 7q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="486" d="M152 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84zM20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14t19.5 44q6 19 19 19q3 0 5 -1.5 t4 -5.5t3 -8t4 -12t6 -15q139 -362 147 -362h31q7 0 7 -13q0 -14 -10 -14q-4 0 -36 1t-43 1q-10 0 -52.5 -1t-48.5 -1t-6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5q-3 8 -5 10t-7 2h-114q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12q0 -15 -12 -15q-7 0 -40.5 1 t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182q0 -3 7 -3h94q9 0 9 4t-2 7q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="486" d="M150 498q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14t19.5 44 q6 19 19 19q3 0 5 -1.5t4 -5.5t3 -8t4 -12t6 -15q139 -362 147 -362h31q7 0 7 -13q0 -14 -10 -14q-4 0 -36 1t-43 1q-10 0 -52.5 -1t-48.5 -1t-6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5q-3 8 -5 10t-7 2h-114q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12 q0 -15 -12 -15q-7 0 -40.5 1t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182q0 -3 7 -3h94q9 0 9 4t-2 7q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="486" d="M124 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM284 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14 t19.5 44q6 19 19 19q3 0 5 -1.5t4 -5.5t3 -8t4 -12t6 -15q139 -362 147 -362h31q7 0 7 -13q0 -14 -10 -14q-4 0 -36 1t-43 1q-10 0 -52.5 -1t-48.5 -1t-6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5q-3 8 -5 10t-7 2h-114q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12 q0 -15 -12 -15q-7 0 -40.5 1t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182q0 -3 7 -3h94q9 0 9 4t-2 7q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="486" d="M153 582q0 13 9.5 21.5t26.5 8.5q21 0 30 -25l49 -130q2 -4 2 -6t-4 -2h-16q-4 0 -8 6l-82 107q-7 10 -7 20zM20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14t19.5 44q6 19 19 19q3 0 5 -1.5t4 -5.5t3 -8t4 -12t6 -15q139 -362 147 -362h31q7 0 7 -13 q0 -14 -10 -14q-4 0 -36 1t-43 1q-10 0 -52.5 -1t-48.5 -1t-6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5q-3 8 -5 10t-7 2h-114q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12q0 -15 -12 -15q-7 0 -40.5 1t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182q0 -3 7 -3h94 q9 0 9 4t-2 7q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="486" d="M184 535q0 29 21 50t50 21t50 -21t21 -50t-21 -50t-50 -21t-50 21t-21 50zM212 535q0 -18 12.5 -30.5t30.5 -12.5t30.5 12.5t12.5 30.5t-12.5 30.5t-30.5 12.5t-30.5 -12.5t-12.5 -30.5zM20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14t19.5 44 q6 19 19 19q3 0 5 -1.5t4 -5.5t3 -8t4 -12t6 -15q139 -362 147 -362h31q7 0 7 -13q0 -14 -10 -14q-4 0 -36 1t-43 1q-10 0 -52.5 -1t-48.5 -1t-6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5q-3 8 -5 10t-7 2h-114q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12 q0 -15 -12 -15q-7 0 -40.5 1t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182q0 -3 7 -3h94q9 0 9 4t-2 7q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="486" d="M153 518v23q0 6 1.5 7t7.5 1h187q5 0 6.5 -1t1.5 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14t19.5 44q6 19 19 19q3 0 5 -1.5t4 -5.5t3 -8t4 -12t6 -15q139 -362 147 -362h31q7 0 7 -13q0 -14 -10 -14 q-4 0 -36 1t-43 1q-10 0 -52.5 -1t-48.5 -1t-6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5q-3 8 -5 10t-7 2h-114q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12q0 -15 -12 -15q-7 0 -40.5 1t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182q0 -3 7 -3h94q9 0 9 4t-2 7 q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="486" d="M20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14t19.5 44q6 19 19 19q3 0 5 -1.5t4 -5.5t3 -8t4 -12t6 -15l30.5 -78.5l37.5 -97.5l35 -89t29.5 -71t14.5 -26h31q7 0 7 -13q0 -14 -10 -14q-4 0 -36 1t-43 1q-88 -88 -88 -167q0 -33 20 -56.5t44 -23.5 q23 0 43 11t31 22l11 11q1 0 6 -6t5 -7q0 -3 -15 -19t-47.5 -34t-68.5 -18q-32 0 -62.5 29.5t-30.5 63.5q0 14 3 28t6.5 24.5t13.5 25l15 22t20 23.5l21 22l25.5 24.5l25.5 24.5q-56 -2 -79 -2q-6 0 -6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5q-3 8 -5 10t-7 2h-114 q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12q0 -15 -12 -15q-7 0 -40.5 1t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182q0 -3 7 -3h94q9 0 9 4t-2 7q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="486" d="M240 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14t19.5 44q6 19 19 19q3 0 5 -1.5t4 -5.5t3 -8t4 -12t6 -15q139 -362 147 -362h31 q7 0 7 -13q0 -14 -10 -14q-4 0 -36 1t-43 1q-10 0 -52.5 -1t-48.5 -1t-6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5q-3 8 -5 10t-7 2h-114q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12q0 -15 -12 -15q-7 0 -40.5 1t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182 q0 -3 7 -3h94q9 0 9 4t-2 7q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="486" d="M145 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14t19.5 44q6 19 19 19q3 0 5 -1.5 t4 -5.5t3 -8t4 -12t6 -15q139 -362 147 -362h31q7 0 7 -13q0 -14 -10 -14q-4 0 -36 1t-43 1q-10 0 -52.5 -1t-48.5 -1t-6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5q-3 8 -5 10t-7 2h-114q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12q0 -15 -12 -15q-7 0 -40.5 1 t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182q0 -3 7 -3h94q9 0 9 4t-2 7q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="486" d="M152 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84zM20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14t19.5 44q6 19 19 19q3 0 5 -1.5 t4 -5.5t3 -8t4 -12t6 -15q139 -362 147 -362h31q7 0 7 -13q0 -14 -10 -14q-4 0 -36 1t-43 1q-10 0 -52.5 -1t-48.5 -1t-6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5q-3 8 -5 10t-7 2h-114q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12q0 -15 -12 -15q-7 0 -40.5 1 t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182q0 -3 7 -3h94q9 0 9 4t-2 7q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="486" d="M150 498q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14t19.5 44 q6 19 19 19q3 0 5 -1.5t4 -5.5t3 -8t4 -12t6 -15q139 -362 147 -362h31q7 0 7 -13q0 -14 -10 -14q-4 0 -36 1t-43 1q-10 0 -52.5 -1t-48.5 -1t-6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5q-3 8 -5 10t-7 2h-114q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12 q0 -15 -12 -15q-7 0 -40.5 1t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182q0 -3 7 -3h94q9 0 9 4t-2 7q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="486" d="M124 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM284 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14 t19.5 44q6 19 19 19q3 0 5 -1.5t4 -5.5t3 -8t4 -12t6 -15q139 -362 147 -362h31q7 0 7 -13q0 -14 -10 -14q-4 0 -36 1t-43 1q-10 0 -52.5 -1t-48.5 -1t-6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5q-3 8 -5 10t-7 2h-114q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12 q0 -15 -12 -15q-7 0 -40.5 1t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182q0 -3 7 -3h94q9 0 9 4t-2 7q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="486" d="M153 582q0 13 9.5 21.5t26.5 8.5q21 0 30 -25l49 -130q2 -4 2 -6t-4 -2h-16q-4 0 -8 6l-82 107q-7 10 -7 20zM20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14t19.5 44q6 19 19 19q3 0 5 -1.5t4 -5.5t3 -8t4 -12t6 -15q139 -362 147 -362h31q7 0 7 -13 q0 -14 -10 -14q-4 0 -36 1t-43 1q-10 0 -52.5 -1t-48.5 -1t-6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5q-3 8 -5 10t-7 2h-114q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12q0 -15 -12 -15q-7 0 -40.5 1t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182q0 -3 7 -3h94 q9 0 9 4t-2 7q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="486" d="M184 535q0 29 21 50t50 21t50 -21t21 -50t-21 -50t-50 -21t-50 21t-21 50zM212 535q0 -18 12.5 -30.5t30.5 -12.5t30.5 12.5t12.5 30.5t-12.5 30.5t-30.5 12.5t-30.5 -12.5t-12.5 -30.5zM20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14t19.5 44 q6 19 19 19q3 0 5 -1.5t4 -5.5t3 -8t4 -12t6 -15q139 -362 147 -362h31q7 0 7 -13q0 -14 -10 -14q-4 0 -36 1t-43 1q-10 0 -52.5 -1t-48.5 -1t-6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5q-3 8 -5 10t-7 2h-114q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12 q0 -15 -12 -15q-7 0 -40.5 1t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182q0 -3 7 -3h94q9 0 9 4t-2 7q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="486" d="M153 518v23q0 6 1.5 7t7.5 1h187q5 0 6.5 -1t1.5 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14t19.5 44q6 19 19 19q3 0 5 -1.5t4 -5.5t3 -8t4 -12t6 -15q139 -362 147 -362h31q7 0 7 -13q0 -14 -10 -14 q-4 0 -36 1t-43 1q-10 0 -52.5 -1t-48.5 -1t-6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5q-3 8 -5 10t-7 2h-114q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12q0 -15 -12 -15q-7 0 -40.5 1t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182q0 -3 7 -3h94q9 0 9 4t-2 7 q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="486" d="M20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14t19.5 44q6 19 19 19q3 0 5 -1.5t4 -5.5t3 -8t4 -12t6 -15l30.5 -78.5l37.5 -97.5l35 -89t29.5 -71t14.5 -26h31q7 0 7 -13q0 -14 -10 -14q-4 0 -36 1t-43 1q-88 -88 -88 -167q0 -33 20 -56.5t44 -23.5 q23 0 43 11t31 22l11 11q1 0 6 -6t5 -7q0 -3 -15 -19t-47.5 -34t-68.5 -18q-32 0 -62.5 29.5t-30.5 63.5q0 14 3 28t6.5 24.5t13.5 25l15 22t20 23.5l21 22l25.5 24.5l25.5 24.5q-56 -2 -79 -2q-6 0 -6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5q-3 8 -5 10t-7 2h-114 q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12q0 -15 -12 -15q-7 0 -40.5 1t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182q0 -3 7 -3h94q9 0 9 4t-2 7q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="487" d="M151 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM30 208q0 80 67.5 142.5t156.5 62.5q40 0 80 -12t60 -24l19 -12l2 13q1 11 13 11q14 0 14 -9 q0 -4 -2 -62t-2 -76q0 -8 -16 -8q-15 0 -15 7q0 1 1.5 33t1.5 35q0 4 -11 15q-60 60 -138 60q-60 0 -101 -51.5t-41 -129.5q0 -76 44 -130t113 -54q93 0 138 45q2 12 3 25t1 28.5t1 25.5q1 9 12 9q16 0 16 -11q0 -45 -4 -101q-1 -6 -29 -19t-72 -24.5t-79 -11.5 q-107 0 -170 56.5t-63 166.5z" />
+<glyph horiz-adv-x="487" d="M151 597q0 2 5 2h12l8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM30 208q0 80 67.5 142.5t156.5 62.5q40 0 80 -12t60 -24l19 -12l2 13q1 11 13 11q14 0 14 -9 q0 -4 -2 -62t-2 -76q0 -8 -16 -8q-15 0 -15 7q0 1 1.5 33t1.5 35q0 4 -11 15q-60 60 -138 60q-60 0 -101 -51.5t-41 -129.5q0 -76 44 -130t113 -54q93 0 138 45q2 12 3 25t1 28.5t1 25.5q1 9 12 9q16 0 16 -11q0 -45 -4 -101q-1 -6 -29 -19t-72 -24.5t-79 -11.5 q-107 0 -170 56.5t-63 166.5z" />
+<glyph horiz-adv-x="487" d="M246 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM30 208q0 80 67.5 142.5t156.5 62.5q40 0 80 -12t60 -24l19 -12l2 13q1 11 13 11q14 0 14 -9q0 -4 -2 -62t-2 -76q0 -8 -16 -8q-15 0 -15 7q0 1 1.5 33 t1.5 35q0 4 -11 15q-60 60 -138 60q-60 0 -101 -51.5t-41 -129.5q0 -76 44 -130t113 -54q93 0 138 45q2 12 3 25t1 28.5t1 25.5q1 9 12 9q16 0 16 -11q0 -45 -4 -101q-1 -6 -29 -19t-72 -24.5t-79 -11.5q-107 0 -170 56.5t-63 166.5z" />
+<glyph horiz-adv-x="487" d="M210 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM30 208q0 80 67.5 142.5t156.5 62.5q40 0 80 -12t60 -24l19 -12l2 13q1 11 13 11q14 0 14 -9q0 -4 -2 -62t-2 -76q0 -8 -16 -8q-15 0 -15 7q0 1 1.5 33t1.5 35 q0 4 -11 15q-60 60 -138 60q-60 0 -101 -51.5t-41 -129.5q0 -76 44 -130t113 -54q93 0 138 45q2 12 3 25t1 28.5t1 25.5q1 9 12 9q16 0 16 -11q0 -45 -4 -101q-1 -6 -29 -19t-72 -24.5t-79 -11.5q-107 0 -170 56.5t-63 166.5z" />
+<glyph horiz-adv-x="487" d="M30 208q0 80 67.5 142.5t156.5 62.5q40 0 80 -12t60 -24l19 -12l2 13q1 11 13 11q14 0 14 -9q0 -4 -2 -62t-2 -76q0 -8 -16 -8q-15 0 -15 7q0 1 1.5 33t1.5 35q0 4 -11 15q-60 60 -138 60q-60 0 -101 -51.5t-41 -129.5q0 -76 44 -130t113 -54q93 0 138 45q2 12 3 25 t1 28.5t1 25.5q1 9 12 9q16 0 16 -11q0 -45 -4 -101q-1 -6 -27 -18.5t-67.5 -24t-76.5 -12.5l-19 -50q-2 -9 0 -9l5 2l14.5 2.5t16.5 1.5q40 0 62.5 -21t22.5 -47q0 -35 -29.5 -63.5t-76.5 -28.5q-23 0 -43.5 6.5t-30 12.5t-9.5 9q0 11 8 11l9 -3q8 -4 22 -8t29 -4 q34 0 50 13.5t16 42.5q0 45 -55 45q-8 0 -16.5 -2.5t-14 -4.5t-6.5 -2q-8 0 -8 5q0 3 35 92q-103 2 -163.5 58.5t-60.5 164.5z" />
+<glyph horiz-adv-x="487" d="M151 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM30 208q0 80 67.5 142.5t156.5 62.5q40 0 80 -12t60 -24l19 -12l2 13q1 11 13 11q14 0 14 -9 q0 -4 -2 -62t-2 -76q0 -8 -16 -8q-15 0 -15 7q0 1 1.5 33t1.5 35q0 4 -11 15q-60 60 -138 60q-60 0 -101 -51.5t-41 -129.5q0 -76 44 -130t113 -54q93 0 138 45q2 12 3 25t1 28.5t1 25.5q1 9 12 9q16 0 16 -11q0 -45 -4 -101q-1 -6 -29 -19t-72 -24.5t-79 -11.5 q-107 0 -170 56.5t-63 166.5z" />
+<glyph horiz-adv-x="487" d="M151 597q0 2 5 2h12l8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM30 208q0 80 67.5 142.5t156.5 62.5q40 0 80 -12t60 -24l19 -12l2 13q1 11 13 11q14 0 14 -9 q0 -4 -2 -62t-2 -76q0 -8 -16 -8q-15 0 -15 7q0 1 1.5 33t1.5 35q0 4 -11 15q-60 60 -138 60q-60 0 -101 -51.5t-41 -129.5q0 -76 44 -130t113 -54q93 0 138 45q2 12 3 25t1 28.5t1 25.5q1 9 12 9q16 0 16 -11q0 -45 -4 -101q-1 -6 -29 -19t-72 -24.5t-79 -11.5 q-107 0 -170 56.5t-63 166.5z" />
+<glyph horiz-adv-x="487" d="M246 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM30 208q0 80 67.5 142.5t156.5 62.5q40 0 80 -12t60 -24l19 -12l2 13q1 11 13 11q14 0 14 -9q0 -4 -2 -62t-2 -76q0 -8 -16 -8q-15 0 -15 7q0 1 1.5 33 t1.5 35q0 4 -11 15q-60 60 -138 60q-60 0 -101 -51.5t-41 -129.5q0 -76 44 -130t113 -54q93 0 138 45q2 12 3 25t1 28.5t1 25.5q1 9 12 9q16 0 16 -11q0 -45 -4 -101q-1 -6 -29 -19t-72 -24.5t-79 -11.5q-107 0 -170 56.5t-63 166.5z" />
+<glyph horiz-adv-x="487" d="M210 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM30 208q0 80 67.5 142.5t156.5 62.5q40 0 80 -12t60 -24l19 -12l2 13q1 11 13 11q14 0 14 -9q0 -4 -2 -62t-2 -76q0 -8 -16 -8q-15 0 -15 7q0 1 1.5 33t1.5 35 q0 4 -11 15q-60 60 -138 60q-60 0 -101 -51.5t-41 -129.5q0 -76 44 -130t113 -54q93 0 138 45q2 12 3 25t1 28.5t1 25.5q1 9 12 9q16 0 16 -11q0 -45 -4 -101q-1 -6 -29 -19t-72 -24.5t-79 -11.5q-107 0 -170 56.5t-63 166.5z" />
+<glyph horiz-adv-x="487" d="M30 208q0 80 67.5 142.5t156.5 62.5q40 0 80 -12t60 -24l19 -12l2 13q1 11 13 11q14 0 14 -9q0 -4 -2 -62t-2 -76q0 -8 -16 -8q-15 0 -15 7q0 1 1.5 33t1.5 35q0 4 -11 15q-60 60 -138 60q-60 0 -101 -51.5t-41 -129.5q0 -76 44 -130t113 -54q93 0 138 45q2 12 3 25 t1 28.5t1 25.5q1 9 12 9q16 0 16 -11q0 -45 -4 -101q-1 -6 -27 -18.5t-67.5 -24t-76.5 -12.5l-19 -50q-2 -9 0 -9l5 2l14.5 2.5t16.5 1.5q40 0 62.5 -21t22.5 -47q0 -35 -29.5 -63.5t-76.5 -28.5q-23 0 -43.5 6.5t-30 12.5t-9.5 9q0 11 8 11l9 -3q8 -4 22 -8t29 -4 q34 0 50 13.5t16 42.5q0 45 -55 45q-8 0 -16.5 -2.5t-14 -4.5t-6.5 -2q-8 0 -8 5q0 3 35 92q-103 2 -163.5 58.5t-60.5 164.5z" />
+<glyph horiz-adv-x="502" d="M129 597q0 2 5 2h12l8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM25 8q0 17 8 17h59q7 0 7 316v35h-60q-8 0 -8 14q0 13 8 13h6q6 0 16 -0.5t22 -1t26 -0.5h27 q23 0 58 1.5t45 1.5q102 0 162.5 -54t60.5 -156q0 -95 -63 -145.5t-150 -50.5q-19 0 -59 1t-59 1q-17 0 -39.5 -0.5t-39 -1t-18.5 -0.5q-9 0 -9 10zM172 63q0 -35 3 -38q4 -2 35 -2q50 0 85.5 16t53.5 43.5t25.5 55.5t7.5 60q0 80 -43 131.5t-136 51.5q-17 0 -25 -1 q-6 0 -6 -70v-247z" />
+<glyph horiz-adv-x="502" d="M25 8q0 17 8 17h59q4 0 6 161q0 6 -4 6h-63q-2 0 -2.5 12t2.5 12h61q7 0 7 9v151h-60q-8 0 -8 14q0 13 8 13h6q6 0 16 -0.5t22 -1t26 -0.5h27q23 0 58 1.5t45 1.5q102 0 162.5 -54t60.5 -156q0 -95 -63 -145.5t-150 -50.5q-19 0 -59 1t-59 1q-17 0 -39.5 -0.5t-39 -1 t-18.5 -0.5q-9 0 -9 10zM172 63q0 -35 3 -38q4 -2 35 -2q50 0 85.5 16t53.5 43.5t25.5 55.5t7.5 60q0 80 -43 131.5t-136 51.5q-17 0 -25 -1q-6 0 -6 -70v-85q0 -7 1 -8t8 -1h101q3 0 3 -12t-3 -12h-101q-9 0 -9 -6v-123z" />
+<glyph horiz-adv-x="502" d="M129 597q0 2 5 2h12l8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM25 8q0 17 8 17h59q7 0 7 316v35h-60q-8 0 -8 14q0 13 8 13h6q6 0 16 -0.5t22 -1t26 -0.5h27 q23 0 58 1.5t45 1.5q102 0 162.5 -54t60.5 -156q0 -95 -63 -145.5t-150 -50.5q-19 0 -59 1t-59 1q-17 0 -39.5 -0.5t-39 -1t-18.5 -0.5q-9 0 -9 10zM172 63q0 -35 3 -38q4 -2 35 -2q50 0 85.5 16t53.5 43.5t25.5 55.5t7.5 60q0 80 -43 131.5t-136 51.5q-17 0 -25 -1 q-6 0 -6 -70v-247z" />
+<glyph horiz-adv-x="502" d="M25 8q0 17 8 17h59q4 0 6 161q0 6 -4 6h-63q-2 0 -2.5 12t2.5 12h61q7 0 7 9v151h-60q-8 0 -8 14q0 13 8 13h6q6 0 16 -0.5t22 -1t26 -0.5h27q23 0 58 1.5t45 1.5q102 0 162.5 -54t60.5 -156q0 -95 -63 -145.5t-150 -50.5q-19 0 -59 1t-59 1q-17 0 -39.5 -0.5t-39 -1 t-18.5 -0.5q-9 0 -9 10zM172 63q0 -35 3 -38q4 -2 35 -2q50 0 85.5 16t53.5 43.5t25.5 55.5t7.5 60q0 80 -43 131.5t-136 51.5q-17 0 -25 -1q-6 0 -6 -70v-85q0 -7 1 -8t8 -1h101q3 0 3 -12t-3 -12h-101q-9 0 -9 -6v-123z" />
+<glyph horiz-adv-x="458" d="M225 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13q0 14 5 14l17 -1q17 0 42.5 -0.5t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6 q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6 q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5t-100.5 1t-139 0.5q-27 0 -68 -1t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="458" d="M138 582q0 13 9.5 21.5t26.5 8.5q21 0 30 -25l49 -130q2 -4 2 -6t-4 -2h-16q-3 0 -8 6l-82 107q-7 10 -7 20zM25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13q0 14 5 14l17 -1q17 0 42.5 -0.5t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6 q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6 q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5t-100.5 1t-139 0.5q-27 0 -68 -1t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="458" d="M130 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12q-1 0 -8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13q0 14 5 14l17 -1 q17 0 42.5 -0.5t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5 q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5t-100.5 1t-139 0.5 q-27 0 -68 -1t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="458" d="M109 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM269 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13 q0 14 5 14l17 -1q17 0 42.5 -0.5t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5 t0.5 -28.5t0.5 -29.5q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5 t-100.5 1t-139 0.5q-27 0 -68 -1t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="458" d="M130 597q0 2 5 2h12q1 0 8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13q0 14 5 14l17 -1 q17 0 42.5 -0.5t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5 q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5t-100.5 1t-139 0.5 q-27 0 -68 -1t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="458" d="M137 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84zM25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13q0 14 5 14l17 -1q17 0 42.5 -0.5 t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5q0 -6 -14 -6 q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5t-100.5 1t-139 0.5q-27 0 -68 -1 t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="458" d="M189 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13q0 14 5 14l17 -1q17 0 42.5 -0.5t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7 q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6 q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5t-100.5 1t-139 0.5q-27 0 -68 -1t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="458" d="M138 518v23q0 6 1.5 7t7.5 1h187q6 0 7 -1t1 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13q0 14 5 14l17 -1q17 0 42.5 -0.5t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7 q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6 q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5t-100.5 1t-139 0.5q-27 0 -68 -1t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="458" d="M25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13q0 14 5 14l17 -1q17 0 42.5 -0.5t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34 q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57 q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7h-11.5t-28 0.5t-37.5 0.5q-87 -87 -87 -166q0 -33 20 -56.5t44 -23.5q23 0 43 11t31 22l11 11q1 0 6 -6t5 -7q0 -3 -15 -19t-47.5 -34t-68.5 -18q-32 0 -62.5 29.5t-30.5 63.5q0 14 3 28t6.5 24.5t13 24.5t14.5 22 t20.5 23.5t21 21.5t25 24.5l25.5 24.5q-19 0 -78 0.5t-99 0.5q-27 0 -68 -1t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="458" d="M225 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13q0 14 5 14l17 -1q17 0 42.5 -0.5t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6 q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6 q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5t-100.5 1t-139 0.5q-27 0 -68 -1t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="458" d="M138 582q0 13 9.5 21.5t26.5 8.5q21 0 30 -25l49 -130q2 -4 2 -6t-4 -2h-16q-3 0 -8 6l-82 107q-7 10 -7 20zM25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13q0 14 5 14l17 -1q17 0 42.5 -0.5t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6 q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6 q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5t-100.5 1t-139 0.5q-27 0 -68 -1t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="458" d="M130 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12q-1 0 -8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13q0 14 5 14l17 -1 q17 0 42.5 -0.5t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5 q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5t-100.5 1t-139 0.5 q-27 0 -68 -1t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="458" d="M109 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM269 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13 q0 14 5 14l17 -1q17 0 42.5 -0.5t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5 t0.5 -28.5t0.5 -29.5q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5 t-100.5 1t-139 0.5q-27 0 -68 -1t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="458" d="M130 597q0 2 5 2h12q1 0 8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13q0 14 5 14l17 -1 q17 0 42.5 -0.5t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5 q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5t-100.5 1t-139 0.5 q-27 0 -68 -1t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="458" d="M137 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84zM25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13q0 14 5 14l17 -1q17 0 42.5 -0.5 t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5q0 -6 -14 -6 q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5t-100.5 1t-139 0.5q-27 0 -68 -1 t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="458" d="M189 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13q0 14 5 14l17 -1q17 0 42.5 -0.5t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7 q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6 q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5t-100.5 1t-139 0.5q-27 0 -68 -1t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="458" d="M138 518v23q0 6 1.5 7t7.5 1h187q6 0 7 -1t1 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13q0 14 5 14l17 -1q17 0 42.5 -0.5t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7 q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6 q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5t-100.5 1t-139 0.5q-27 0 -68 -1t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="458" d="M25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13q0 14 5 14l17 -1q17 0 42.5 -0.5t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34 q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57 q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7h-11.5t-28 0.5t-37.5 0.5q-87 -87 -87 -166q0 -33 20 -56.5t44 -23.5q23 0 43 11t31 22l11 11q1 0 6 -6t5 -7q0 -3 -15 -19t-47.5 -34t-68.5 -18q-32 0 -62.5 29.5t-30.5 63.5q0 14 3 28t6.5 24.5t13 24.5t14.5 22 t20.5 23.5t21 21.5t25 24.5l25.5 24.5q-19 0 -78 0.5t-99 0.5q-27 0 -68 -1t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="485" d="M138 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12q-1 0 -8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM25 200q0 96 65.5 155.5t158.5 59.5q39 0 76 -13.5t53 -26.5q10 -8 10 3l1 22q0 11 11 11 q18 0 18 -8q0 -1 -3 -57t-3 -79q0 -7 -15 -7q-14 0 -14 8q0 1 1 24.5t1 26.5q0 4 -15.5 20.5t-47 33.5t-64.5 17q-65 0 -106.5 -47t-41.5 -131q0 -83 44.5 -137.5t118.5 -54.5q36 0 60.5 8.5t26.5 18.5q2 18 2 28v29q0 24 -7 24h-55q-5 0 -5 15q0 12 5 12q7 0 36 -1t46 -1 q13 0 36.5 1t37.5 1q4 0 4 -10q0 -17 -4 -17h-19q-8 0 -8 -34q0 -7 -0.5 -21t-0.5 -25q0 -8 -27.5 -21.5t-71.5 -24.5t-82 -11q-93 0 -157.5 50.5t-64.5 158.5z" />
+<glyph horiz-adv-x="485" d="M145 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84zM25 200q0 96 65.5 155.5t158.5 59.5q39 0 76 -13.5t53 -26.5q10 -8 10 3l1 22q0 11 11 11 q18 0 18 -8q0 -1 -3 -57t-3 -79q0 -7 -15 -7q-14 0 -14 8q0 1 1 24.5t1 26.5q0 4 -15.5 20.5t-47 33.5t-64.5 17q-65 0 -106.5 -47t-41.5 -131q0 -83 44.5 -137.5t118.5 -54.5q36 0 60.5 8.5t26.5 18.5q2 18 2 28v29q0 24 -7 24h-55q-5 0 -5 15q0 12 5 12q7 0 36 -1t46 -1 q13 0 36.5 1t37.5 1q4 0 4 -10q0 -17 -4 -17h-19q-8 0 -8 -34q0 -7 -0.5 -21t-0.5 -25q0 -8 -27.5 -21.5t-71.5 -24.5t-82 -11q-93 0 -157.5 50.5t-64.5 158.5z" />
+<glyph horiz-adv-x="485" d="M197 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 200q0 96 65.5 155.5t158.5 59.5q39 0 76 -13.5t53 -26.5q10 -8 10 3l1 22q0 11 11 11q18 0 18 -8q0 -1 -3 -57t-3 -79q0 -7 -15 -7q-14 0 -14 8q0 1 1 24.5t1 26.5 q0 4 -15.5 20.5t-47 33.5t-64.5 17q-65 0 -106.5 -47t-41.5 -131q0 -83 44.5 -137.5t118.5 -54.5q36 0 60.5 8.5t26.5 18.5q2 18 2 28v29q0 24 -7 24h-55q-5 0 -5 15q0 12 5 12q7 0 36 -1t46 -1q13 0 36.5 1t37.5 1q4 0 4 -10q0 -17 -4 -17h-19q-8 0 -8 -34q0 -7 -0.5 -21 t-0.5 -25q0 -8 -27.5 -21.5t-71.5 -24.5t-82 -11q-93 0 -157.5 50.5t-64.5 158.5z" />
+<glyph horiz-adv-x="485" d="M215 -225l15 10q14 10 29 25.5t15 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM25 200q0 96 65.5 155.5t158.5 59.5q39 0 76 -13.5t53 -26.5q10 -8 10 3l1 22 q0 11 11 11q18 0 18 -8q0 -1 -3 -57t-3 -79q0 -7 -15 -7q-14 0 -14 8q0 1 1 24.5t1 26.5q0 4 -15.5 20.5t-47 33.5t-64.5 17q-65 0 -106.5 -47t-41.5 -131q0 -83 44.5 -137.5t118.5 -54.5q36 0 60.5 8.5t26.5 18.5q2 18 2 28v29q0 24 -7 24h-55q-5 0 -5 15q0 12 5 12 q7 0 36 -1t46 -1q13 0 36.5 1t37.5 1q4 0 4 -10q0 -17 -4 -17h-19q-8 0 -8 -34q0 -7 -0.5 -21t-0.5 -25q0 -8 -27.5 -21.5t-71.5 -24.5t-82 -11q-93 0 -157.5 50.5t-64.5 158.5z" />
+<glyph horiz-adv-x="485" d="M138 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12q-1 0 -8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM25 200q0 96 65.5 155.5t158.5 59.5q39 0 76 -13.5t53 -26.5q10 -8 10 3l1 22q0 11 11 11 q18 0 18 -8q0 -1 -3 -57t-3 -79q0 -7 -15 -7q-14 0 -14 8q0 1 1 24.5t1 26.5q0 4 -15.5 20.5t-47 33.5t-64.5 17q-65 0 -106.5 -47t-41.5 -131q0 -83 44.5 -137.5t118.5 -54.5q36 0 60.5 8.5t26.5 18.5q2 18 2 28v29q0 24 -7 24h-55q-5 0 -5 15q0 12 5 12q7 0 36 -1t46 -1 q13 0 36.5 1t37.5 1q4 0 4 -10q0 -17 -4 -17h-19q-8 0 -8 -34q0 -7 -0.5 -21t-0.5 -25q0 -8 -27.5 -21.5t-71.5 -24.5t-82 -11q-93 0 -157.5 50.5t-64.5 158.5z" />
+<glyph horiz-adv-x="485" d="M145 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84zM25 200q0 96 65.5 155.5t158.5 59.5q39 0 76 -13.5t53 -26.5q10 -8 10 3l1 22q0 11 11 11 q18 0 18 -8q0 -1 -3 -57t-3 -79q0 -7 -15 -7q-14 0 -14 8q0 1 1 24.5t1 26.5q0 4 -15.5 20.5t-47 33.5t-64.5 17q-65 0 -106.5 -47t-41.5 -131q0 -83 44.5 -137.5t118.5 -54.5q36 0 60.5 8.5t26.5 18.5q2 18 2 28v29q0 24 -7 24h-55q-5 0 -5 15q0 12 5 12q7 0 36 -1t46 -1 q13 0 36.5 1t37.5 1q4 0 4 -10q0 -17 -4 -17h-19q-8 0 -8 -34q0 -7 -0.5 -21t-0.5 -25q0 -8 -27.5 -21.5t-71.5 -24.5t-82 -11q-93 0 -157.5 50.5t-64.5 158.5z" />
+<glyph horiz-adv-x="485" d="M197 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 200q0 96 65.5 155.5t158.5 59.5q39 0 76 -13.5t53 -26.5q10 -8 10 3l1 22q0 11 11 11q18 0 18 -8q0 -1 -3 -57t-3 -79q0 -7 -15 -7q-14 0 -14 8q0 1 1 24.5t1 26.5 q0 4 -15.5 20.5t-47 33.5t-64.5 17q-65 0 -106.5 -47t-41.5 -131q0 -83 44.5 -137.5t118.5 -54.5q36 0 60.5 8.5t26.5 18.5q2 18 2 28v29q0 24 -7 24h-55q-5 0 -5 15q0 12 5 12q7 0 36 -1t46 -1q13 0 36.5 1t37.5 1q4 0 4 -10q0 -17 -4 -17h-19q-8 0 -8 -34q0 -7 -0.5 -21 t-0.5 -25q0 -8 -27.5 -21.5t-71.5 -24.5t-82 -11q-93 0 -157.5 50.5t-64.5 158.5z" />
+<glyph horiz-adv-x="485" d="M215 -225l15 10q14 10 29 25.5t15 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM25 200q0 96 65.5 155.5t158.5 59.5q39 0 76 -13.5t53 -26.5q10 -8 10 3l1 22 q0 11 11 11q18 0 18 -8q0 -1 -3 -57t-3 -79q0 -7 -15 -7q-14 0 -14 8q0 1 1 24.5t1 26.5q0 4 -15.5 20.5t-47 33.5t-64.5 17q-65 0 -106.5 -47t-41.5 -131q0 -83 44.5 -137.5t118.5 -54.5q36 0 60.5 8.5t26.5 18.5q2 18 2 28v29q0 24 -7 24h-55q-5 0 -5 15q0 12 5 12 q7 0 36 -1t46 -1q13 0 36.5 1t37.5 1q4 0 4 -10q0 -17 -4 -17h-19q-8 0 -8 -34q0 -7 -0.5 -21t-0.5 -25q0 -8 -27.5 -21.5t-71.5 -24.5t-82 -11q-93 0 -157.5 50.5t-64.5 158.5z" />
+<glyph horiz-adv-x="567" d="M175 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM25 13q0 12 9 12h60q4 0 4 144v62q0 145 -4 145h-55q-13 0 -13 15q0 7 2 9.5t10 2.5l34 -1 q34 -1 60 -1q19 0 62 1t46 1q9 0 9 -13q0 -14 -12 -14h-59q-4 0 -4 -74v-74q0 -7 1.5 -9t7.5 -2h208q7 0 8 1t1 8v68q0 82 -6 82h-57q-10 0 -10 16q0 11 10 11q3 0 16.5 -0.5t34.5 -1t43 -0.5q24 0 47 0.5t36.5 1t14.5 0.5q7 0 7 -13q0 -14 -10 -14h-49q-1 0 -1 -138 q0 -213 3 -213h57q6 0 6 -15q0 -12 -6 -12l-33 1q-33 1 -67 1q-33 0 -68 -1t-36 -1q-8 0 -8 13q0 14 9 14h63q4 0 4 88v73q0 7 -0.5 8t-4.5 1h-213h-4t-2.5 -1t-1.5 -3v-6q0 -160 7 -160h59q7 0 7 -12q0 -15 -7 -15l-35 1q-35 1 -69 1q-31 0 -66.5 -1t-36.5 -1q-8 0 -8 15z " />
+<glyph horiz-adv-x="567" d="M25 13q0 12 9 12h60q4 0 4 144v104q0 7 -10 7h-59q-2 0 -2.5 12t2.5 12h59q7 0 8 1t1 8q-2 63 -3 63h-55q-13 0 -13 15q0 7 2 9.5t10 2.5l34 -1q34 -1 60 -1q19 0 62 1t46 1q9 0 9 -13q0 -14 -12 -14h-59q-4 0 -4 -63q0 -9 6 -9h211q6 0 7.5 2t1.5 10q-2 60 -6 60h-57 q-10 0 -10 16q0 11 10 11q3 0 16.5 -0.5t34.5 -1t43 -0.5q24 0 47 0.5t36.5 1t14.5 0.5q7 0 7 -13q0 -14 -10 -14h-49q-1 0 -1 -60v-6t1 -3.5t3 -2t5 -0.5h48q3 0 3 -12t-3 -12h-48q-6 0 -7.5 -1.5t-1.5 -8.5v-32q0 -213 3 -213h57q6 0 6 -15q0 -12 -6 -12l-33 1 q-33 1 -67 1q-33 0 -68 -1t-36 -1q-8 0 -8 13q0 14 9 14h63q4 0 4 88v73q0 7 -0.5 8t-4.5 1h-213h-4t-2.5 -1t-1.5 -3v-6q0 -160 7 -160h59q7 0 7 -12q0 -15 -7 -15l-35 1q-35 1 -69 1q-31 0 -66.5 -1t-36.5 -1q-8 0 -8 15zM174 228q0 -7 1.5 -9t7.5 -2h208q7 0 8 1t1 8v44 q0 8 -1 9t-9 1h-210q-6 0 -6 -7v-45z" />
+<glyph horiz-adv-x="567" d="M175 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM25 13q0 12 9 12h60q4 0 4 144v62q0 145 -4 145h-55q-13 0 -13 15q0 7 2 9.5t10 2.5l34 -1 q34 -1 60 -1q19 0 62 1t46 1q9 0 9 -13q0 -14 -12 -14h-59q-4 0 -4 -74v-74q0 -7 1.5 -9t7.5 -2h208q7 0 8 1t1 8v68q0 82 -6 82h-57q-10 0 -10 16q0 11 10 11q3 0 16.5 -0.5t34.5 -1t43 -0.5q24 0 47 0.5t36.5 1t14.5 0.5q7 0 7 -13q0 -14 -10 -14h-49q-1 0 -1 -138 q0 -213 3 -213h57q6 0 6 -15q0 -12 -6 -12l-33 1q-33 1 -67 1q-33 0 -68 -1t-36 -1q-8 0 -8 13q0 14 9 14h63q4 0 4 88v73q0 7 -0.5 8t-4.5 1h-213h-4t-2.5 -1t-1.5 -3v-6q0 -160 7 -160h59q7 0 7 -12q0 -15 -7 -15l-35 1q-35 1 -69 1q-31 0 -66.5 -1t-36.5 -1q-8 0 -8 15z " />
+<glyph horiz-adv-x="567" d="M25 13q0 12 9 12h60q4 0 4 144v104q0 7 -10 7h-59q-2 0 -2.5 12t2.5 12h59q7 0 8 1t1 8q-2 63 -3 63h-55q-13 0 -13 15q0 7 2 9.5t10 2.5l34 -1q34 -1 60 -1q19 0 62 1t46 1q9 0 9 -13q0 -14 -12 -14h-59q-4 0 -4 -63q0 -9 6 -9h211q6 0 7.5 2t1.5 10q-2 60 -6 60h-57 q-10 0 -10 16q0 11 10 11q3 0 16.5 -0.5t34.5 -1t43 -0.5q24 0 47 0.5t36.5 1t14.5 0.5q7 0 7 -13q0 -14 -10 -14h-49q-1 0 -1 -60v-6t1 -3.5t3 -2t5 -0.5h48q3 0 3 -12t-3 -12h-48q-6 0 -7.5 -1.5t-1.5 -8.5v-32q0 -213 3 -213h57q6 0 6 -15q0 -12 -6 -12l-33 1 q-33 1 -67 1q-33 0 -68 -1t-36 -1q-8 0 -8 13q0 14 9 14h63q4 0 4 88v73q0 7 -0.5 8t-4.5 1h-213h-4t-2.5 -1t-1.5 -3v-6q0 -160 7 -160h59q7 0 7 -12q0 -15 -7 -15l-35 1q-35 1 -69 1q-31 0 -66.5 -1t-36.5 -1q-8 0 -8 15zM174 228q0 -7 1.5 -9t7.5 -2h208q7 0 8 1t1 8v44 q0 8 -1 9t-9 1h-210q-6 0 -6 -7v-45z" />
+<glyph horiz-adv-x="283" d="M122 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59 q-5 0 -5 -74v-189q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="283" d="M27 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1 q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74v-189q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="283" d="M6 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM166 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15 q0 12 13 12l34 -1q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74v-189q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="283" d="M35 582q0 13 9.5 21.5t26.5 8.5q21 0 30 -25l49 -130q2 -4 2 -6t-4 -2h-16q-4 0 -8 6l-82 107q-7 10 -7 20zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74 v-189q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="283" d="M32 498q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1 q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74v-189q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="283" d="M34 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1 q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74v-189q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="283" d="M35 518v23q0 6 1.5 7t7.5 1h187q5 0 6.5 -1t1.5 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74v-189 q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="283" d="M25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74v-189q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -35 1t-64 1q-49 -92 -49 -167q0 -38 15.5 -59.5 t45.5 -21.5q18 0 32 6t20.5 12.5t7.5 6.5t6 -6t5 -7q0 -3 -12 -14t-41 -24t-63 -13q-30 0 -52.5 26t-22.5 59q0 60 87 202q-32 0 -65 -1l-33 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="283" d="M122 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59 q-5 0 -5 -74v-189q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="283" d="M27 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1 q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74v-189q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="283" d="M6 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM166 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15 q0 12 13 12l34 -1q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74v-189q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="283" d="M35 582q0 13 9.5 21.5t26.5 8.5q21 0 30 -25l49 -130q2 -4 2 -6t-4 -2h-16q-4 0 -8 6l-82 107q-7 10 -7 20zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74 v-189q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="283" d="M32 498q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1 q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74v-189q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="283" d="M34 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1 q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74v-189q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="283" d="M35 518v23q0 6 1.5 7t7.5 1h187q5 0 6.5 -1t1.5 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74v-189 q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="283" d="M25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74v-189q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -35 1t-64 1q-49 -92 -49 -167q0 -38 15.5 -59.5 t45.5 -21.5q18 0 32 6t20.5 12.5t7.5 6.5t6 -6t5 -7q0 -3 -12 -14t-41 -24t-63 -13q-30 0 -52.5 26t-22.5 59q0 60 87 202q-32 0 -65 -1l-33 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="291" d="M35 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM-20 -153q0 21 22 41.5t30 20.5q10 0 29.5 -11.5t28.5 -11.5q18 0 24 16t6 51q0 44 -1.5 138 t-1.5 140v72q0 73 -2 73h-77q-13 0 -13 15q0 12 13 12l44 -1q45 -1 71 -1q30 0 66.5 1t37.5 1q9 0 9 -13q0 -14 -10 -14h-57q-5 0 -5 -74v-217q0 -44 -2.5 -71.5t-17.5 -66.5t-44 -70q-48 -52 -99 -52q-17 0 -34 6.5t-17 15.5z" />
+<glyph horiz-adv-x="291" d="M35 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM-20 -153q0 21 22 41.5t30 20.5q10 0 29.5 -11.5t28.5 -11.5q18 0 24 16t6 51q0 44 -1.5 138 t-1.5 140v72q0 73 -2 73h-77q-13 0 -13 15q0 12 13 12l44 -1q45 -1 71 -1q30 0 66.5 1t37.5 1q9 0 9 -13q0 -14 -10 -14h-57q-5 0 -5 -74v-217q0 -44 -2.5 -71.5t-17.5 -66.5t-44 -70q-48 -52 -99 -52q-17 0 -34 6.5t-17 15.5z" />
+<glyph horiz-adv-x="493" d="M208 -225l15 10q15 10 29.5 25.5t14.5 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15 q0 12 13 12l34 -1q35 -1 61 -1q24 0 59.5 1t37.5 1q9 0 9 -13q0 -14 -12 -14h-48q-6 0 -6 -75v-82q0 -13 9 -13h16q6 0 128 157q7 7 6.5 10t-12.5 3h-22q-13 0 -13 15q0 12 13 12q1 0 22.5 -1t42.5 -1q23 0 46 1t26 1q9 0 9 -13q0 -14 -12 -14h-39q-3 0 -50 -49.5l-80 -85.5 q-6 -6 0 -12l174 -194q10 -10 19 -10h16q7 0 7 -12q0 -15 -7 -15q-2 0 -30.5 1t-54.5 1q-27 0 -56.5 -1t-31.5 -1q-8 0 -8 15q0 12 9 12h37q10 0 10 1.5t-5 7.5l-129 148q-3 3 -12 3h-16q-7 0 -9.5 -1t-2.5 -7v-94q0 -58 7 -58h55q7 0 7 -12q0 -15 -7 -15q-1 0 -33 1t-65 1 q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="493" d="M208 -225l15 10q15 10 29.5 25.5t14.5 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15 q0 12 13 12l34 -1q35 -1 61 -1q24 0 59.5 1t37.5 1q9 0 9 -13q0 -14 -12 -14h-48q-6 0 -6 -75v-82q0 -13 9 -13h16q6 0 128 157q7 7 6.5 10t-12.5 3h-22q-13 0 -13 15q0 12 13 12q1 0 22.5 -1t42.5 -1q23 0 46 1t26 1q9 0 9 -13q0 -14 -12 -14h-39q-3 0 -50 -49.5l-80 -85.5 q-6 -6 0 -12l174 -194q10 -10 19 -10h16q7 0 7 -12q0 -15 -7 -15q-2 0 -30.5 1t-54.5 1q-27 0 -56.5 -1t-31.5 -1q-8 0 -8 15q0 12 9 12h37q10 0 10 1.5t-5 7.5l-129 148q-3 3 -12 3h-16q-7 0 -9.5 -1t-2.5 -7v-94q0 -58 7 -58h55q7 0 7 -12q0 -15 -7 -15q-1 0 -33 1t-65 1 q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="445" d="M189 -225l15 10q14 10 29 25.5t15 29.5q0 17 -13 30t-26.5 21.5t-13.5 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM25 13q0 12 9 12h60q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12 l36 -1q36 -1 62 -1q30 0 73.5 1t44.5 1q9 0 9 -14q0 -13 -11 -13h-70q-6 0 -6 -74v-189q0 -83 8 -83q98 0 186 8q12 1 16.5 5t5.5 18l7 57q1 9 15 7t14 -9q0 -3 -1.5 -16.5l-4.5 -39.5l-6 -52q-1 -11 -19 -11q-11 0 -126 1.5t-131 1.5q-36 0 -72 -1l-37 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="445" d="M123 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM25 13q0 12 9 12h60q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l36 -1q36 -1 62 -1q30 0 73.5 1t44.5 1q9 0 9 -14q0 -13 -11 -13h-70 q-6 0 -6 -74v-189q0 -83 8 -83q98 0 186 8q12 1 16.5 5t5.5 18l7 57q1 9 15 7t14 -9q0 -3 -1.5 -16.5l-4.5 -39.5l-6 -52q-1 -11 -19 -11q-11 0 -126 1.5t-131 1.5q-36 0 -72 -1l-37 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="445" d="M310 331q0 2 2.5 27t5.5 60.5t5 54.5q3 33 35 33t32 -29q0 -5 -3 -13l-51 -124q-6 -12 -8 -12h-15q-3 0 -3 3zM25 13q0 12 9 12h60q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l36 -1q36 -1 62 -1q30 0 73.5 1t44.5 1q9 0 9 -14q0 -13 -11 -13h-70 q-6 0 -6 -74v-189q0 -83 8 -83q98 0 186 8q12 1 16.5 5t5.5 18l7 57q1 9 15 7t14 -9q0 -3 -1.5 -16.5l-4.5 -39.5l-6 -52q-1 -11 -19 -11q-11 0 -126 1.5t-131 1.5q-36 0 -72 -1l-37 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="445" d="M25 13q0 12 9 12h60q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l36 -1q36 -1 62 -1q30 0 73.5 1t44.5 1q9 0 9 -14q0 -13 -11 -13h-70q-6 0 -6 -74v-189q0 -83 8 -83q98 0 186 8q12 1 16.5 5t5.5 18l7 57q1 9 15 7t14 -9q0 -3 -1.5 -16.5l-4.5 -39.5l-6 -52 q-1 -11 -19 -11q-11 0 -126 1.5t-131 1.5q-36 0 -72 -1l-37 -1q-8 0 -8 15zM319 229q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5z" />
+<glyph horiz-adv-x="445" d="M25 13q0 12 9 12h60q5 0 5 84v16q0 7 -1.5 7.5t-7.5 -1.5l-60 -22q-1 0 -2.5 6t-1 12.5t2.5 6.5l61 22q8 9 9 13v62q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l36 -1q36 -1 62 -1q30 0 73.5 1t44.5 1q9 0 9 -14q0 -13 -11 -13h-70q-6 0 -6 -74v-102q0 -6 0.5 -8t2.5 -2 t7 2l179 65q1 1 2 -3q4 -16 -1 -22l-180 -66q-9 -9 -10 -13v-40q0 -83 8 -83q98 0 186 8q12 1 16.5 5t5.5 18l7 57q1 9 15 7t14 -9q0 -3 -1.5 -16.5l-4.5 -39.5l-6 -52q-1 -11 -19 -11q-11 0 -126 1.5t-131 1.5q-36 0 -72 -1l-37 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="445" d="M189 -225l15 10q14 10 29 25.5t15 29.5q0 17 -13 30t-26.5 21.5t-13.5 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM25 13q0 12 9 12h60q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12 l36 -1q36 -1 62 -1q30 0 73.5 1t44.5 1q9 0 9 -14q0 -13 -11 -13h-70q-6 0 -6 -74v-189q0 -83 8 -83q98 0 186 8q12 1 16.5 5t5.5 18l7 57q1 9 15 7t14 -9q0 -3 -1.5 -16.5l-4.5 -39.5l-6 -52q-1 -11 -19 -11q-11 0 -126 1.5t-131 1.5q-36 0 -72 -1l-37 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="445" d="M123 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM25 13q0 12 9 12h60q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l36 -1q36 -1 62 -1q30 0 73.5 1t44.5 1q9 0 9 -14q0 -13 -11 -13h-70 q-6 0 -6 -74v-189q0 -83 8 -83q98 0 186 8q12 1 16.5 5t5.5 18l7 57q1 9 15 7t14 -9q0 -3 -1.5 -16.5l-4.5 -39.5l-6 -52q-1 -11 -19 -11q-11 0 -126 1.5t-131 1.5q-36 0 -72 -1l-37 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="445" d="M310 331q0 2 2.5 27t5.5 60.5t5 54.5q3 33 35 33t32 -29q0 -5 -3 -13l-51 -124q-6 -12 -8 -12h-15q-3 0 -3 3zM25 13q0 12 9 12h60q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l36 -1q36 -1 62 -1q30 0 73.5 1t44.5 1q9 0 9 -14q0 -13 -11 -13h-70 q-6 0 -6 -74v-189q0 -83 8 -83q98 0 186 8q12 1 16.5 5t5.5 18l7 57q1 9 15 7t14 -9q0 -3 -1.5 -16.5l-4.5 -39.5l-6 -52q-1 -11 -19 -11q-11 0 -126 1.5t-131 1.5q-36 0 -72 -1l-37 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="445" d="M25 13q0 12 9 12h60q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l36 -1q36 -1 62 -1q30 0 73.5 1t44.5 1q9 0 9 -14q0 -13 -11 -13h-70q-6 0 -6 -74v-189q0 -83 8 -83q98 0 186 8q12 1 16.5 5t5.5 18l7 57q1 9 15 7t14 -9q0 -3 -1.5 -16.5l-4.5 -39.5l-6 -52 q-1 -11 -19 -11q-11 0 -126 1.5t-131 1.5q-36 0 -72 -1l-37 -1q-8 0 -8 15zM319 229q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5z" />
+<glyph horiz-adv-x="445" d="M25 13q0 12 9 12h60q5 0 5 84v16q0 7 -1.5 7.5t-7.5 -1.5l-60 -22q-1 0 -2.5 6t-1 12.5t2.5 6.5l61 22q8 9 9 13v62q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l36 -1q36 -1 62 -1q30 0 73.5 1t44.5 1q9 0 9 -14q0 -13 -11 -13h-70q-6 0 -6 -74v-102q0 -6 0.5 -8t2.5 -2 t7 2l179 65q1 1 2 -3q4 -16 -1 -22l-180 -66q-9 -9 -10 -13v-40q0 -83 8 -83q98 0 186 8q12 1 16.5 5t5.5 18l7 57q1 9 15 7t14 -9q0 -3 -1.5 -16.5l-4.5 -39.5l-6 -52q-1 -11 -19 -11q-11 0 -126 1.5t-131 1.5q-36 0 -72 -1l-37 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="569" d="M179 498q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM25 13q0 12 9 12h59l16 351h-70q-13 0 -13 15q0 12 13 12l35 -1q34 -1 60 -1h51 q5 0 10 -6l240 -271q7 -9 10 -9q2 0 2 10q0 251 -9 251h-74q-7 0 -7 12q0 15 7 15q1 0 35 -1t64 -1q21 0 45.5 1t27.5 1q8 0 8 -15q0 -12 -9 -12h-47q-6 0 -10 -120.5t-4 -181.5l2 -77q0 -10 -7 -10q-8 0 -17 9l-305 337q-3 3 -6 6.5t-4.5 5t-2.5 1.5q-2 0 -2 -14v-69 q0 -238 9 -238h76q7 0 7 -12q0 -15 -7 -15q-1 0 -33 1t-66 1q-26 0 -44.5 -0.5t-27.5 -1t-13 -0.5q-8 0 -8 15z" />
+<glyph horiz-adv-x="569" d="M269 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM25 13q0 12 9 12h59l16 351h-70q-13 0 -13 15q0 12 13 12l35 -1q34 -1 60 -1h51q5 0 10 -6l240 -271q7 -9 10 -9q2 0 2 10q0 251 -9 251h-74q-7 0 -7 12 q0 15 7 15q1 0 35 -1t64 -1q21 0 45.5 1t27.5 1q8 0 8 -15q0 -12 -9 -12h-47q-6 0 -10 -120.5t-4 -181.5l2 -77q0 -10 -7 -10q-8 0 -17 9l-305 337q-3 3 -6 6.5t-4.5 5t-2.5 1.5q-2 0 -2 -14v-69q0 -238 9 -238h76q7 0 7 -12q0 -15 -7 -15q-1 0 -33 1t-66 1 q-26 0 -44.5 -0.5t-27.5 -1t-13 -0.5q-8 0 -8 15z" />
+<glyph horiz-adv-x="569" d="M174 597q0 2 5 2h12q1 0 8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM25 13q0 12 9 12h59l16 351h-70q-13 0 -13 15q0 12 13 12l35 -1q34 -1 60 -1h51q5 0 10 -6 l240 -271q7 -9 10 -9q2 0 2 10q0 251 -9 251h-74q-7 0 -7 12q0 15 7 15q1 0 35 -1t64 -1q21 0 45.5 1t27.5 1q8 0 8 -15q0 -12 -9 -12h-47q-6 0 -10 -120.5t-4 -181.5l2 -77q0 -10 -7 -10q-8 0 -17 9l-305 337q-3 3 -6 6.5t-4.5 5t-2.5 1.5q-2 0 -2 -14v-69q0 -238 9 -238 h76q7 0 7 -12q0 -15 -7 -15q-1 0 -33 1t-66 1q-26 0 -44.5 -0.5t-27.5 -1t-13 -0.5q-8 0 -8 15z" />
+<glyph horiz-adv-x="569" d="M250 -225l15 10q15 10 29.5 25.5t14.5 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM25 13q0 12 9 12h59l16 351h-70q-13 0 -13 15q0 12 13 12l35 -1 q34 -1 60 -1h51q5 0 10 -6l240 -271q7 -9 10 -9q2 0 2 10q0 251 -9 251h-74q-7 0 -7 12q0 15 7 15q1 0 35 -1t64 -1q21 0 45.5 1t27.5 1q8 0 8 -15q0 -12 -9 -12h-47q-6 0 -10 -120.5t-4 -181.5l2 -77q0 -10 -7 -10q-8 0 -17 9l-305 337q-3 3 -6 6.5t-4.5 5t-2.5 1.5 q-2 0 -2 -14v-69q0 -238 9 -238h76q7 0 7 -12q0 -15 -7 -15q-1 0 -33 1t-66 1q-26 0 -44.5 -0.5t-27.5 -1t-13 -0.5q-8 0 -8 15z" />
+<glyph horiz-adv-x="569" d="M179 498q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM25 13q0 12 9 12h59l16 351h-70q-13 0 -13 15q0 12 13 12l35 -1q34 -1 60 -1h51 q5 0 10 -6l240 -271q7 -9 10 -9q2 0 2 10q0 251 -9 251h-74q-7 0 -7 12q0 15 7 15q1 0 35 -1t64 -1q21 0 45.5 1t27.5 1q8 0 8 -15q0 -12 -9 -12h-47q-6 0 -10 -120.5t-4 -181.5l2 -77q0 -10 -7 -10q-8 0 -17 9l-305 337q-3 3 -6 6.5t-4.5 5t-2.5 1.5q-2 0 -2 -14v-69 q0 -238 9 -238h76q7 0 7 -12q0 -15 -7 -15q-1 0 -33 1t-66 1q-26 0 -44.5 -0.5t-27.5 -1t-13 -0.5q-8 0 -8 15z" />
+<glyph horiz-adv-x="569" d="M269 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM25 13q0 12 9 12h59l16 351h-70q-13 0 -13 15q0 12 13 12l35 -1q34 -1 60 -1h51q5 0 10 -6l240 -271q7 -9 10 -9q2 0 2 10q0 251 -9 251h-74q-7 0 -7 12 q0 15 7 15q1 0 35 -1t64 -1q21 0 45.5 1t27.5 1q8 0 8 -15q0 -12 -9 -12h-47q-6 0 -10 -120.5t-4 -181.5l2 -77q0 -10 -7 -10q-8 0 -17 9l-305 337q-3 3 -6 6.5t-4.5 5t-2.5 1.5q-2 0 -2 -14v-69q0 -238 9 -238h76q7 0 7 -12q0 -15 -7 -15q-1 0 -33 1t-66 1 q-26 0 -44.5 -0.5t-27.5 -1t-13 -0.5q-8 0 -8 15z" />
+<glyph horiz-adv-x="569" d="M174 597q0 2 5 2h12q1 0 8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM25 13q0 12 9 12h59l16 351h-70q-13 0 -13 15q0 12 13 12l35 -1q34 -1 60 -1h51q5 0 10 -6 l240 -271q7 -9 10 -9q2 0 2 10q0 251 -9 251h-74q-7 0 -7 12q0 15 7 15q1 0 35 -1t64 -1q21 0 45.5 1t27.5 1q8 0 8 -15q0 -12 -9 -12h-47q-6 0 -10 -120.5t-4 -181.5l2 -77q0 -10 -7 -10q-8 0 -17 9l-305 337q-3 3 -6 6.5t-4.5 5t-2.5 1.5q-2 0 -2 -14v-69q0 -238 9 -238 h76q7 0 7 -12q0 -15 -7 -15q-1 0 -33 1t-66 1q-26 0 -44.5 -0.5t-27.5 -1t-13 -0.5q-8 0 -8 15z" />
+<glyph horiz-adv-x="569" d="M250 -225l15 10q15 10 29.5 25.5t14.5 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM25 13q0 12 9 12h59l16 351h-70q-13 0 -13 15q0 12 13 12l35 -1 q34 -1 60 -1h51q5 0 10 -6l240 -271q7 -9 10 -9q2 0 2 10q0 251 -9 251h-74q-7 0 -7 12q0 15 7 15q1 0 35 -1t64 -1q21 0 45.5 1t27.5 1q8 0 8 -15q0 -12 -9 -12h-47q-6 0 -10 -120.5t-4 -181.5l2 -77q0 -10 -7 -10q-8 0 -17 9l-305 337q-3 3 -6 6.5t-4.5 5t-2.5 1.5 q-2 0 -2 -14v-69q0 -238 9 -238h76q7 0 7 -12q0 -15 -7 -15q-1 0 -33 1t-66 1q-26 0 -44.5 -0.5t-27.5 -1t-13 -0.5q-8 0 -8 15z" />
+<glyph d="M139 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM30 190q0 94 60.5 159t175.5 65q91 0 147.5 -64.5t56.5 -148.5q0 -91 -54 -151.5t-175 -60.5 q-99 0 -155 58t-56 143zM113 210q0 -88 35.5 -143t95.5 -55q73 0 108.5 55t35.5 129q0 78 -39.5 137t-100.5 59q-56 0 -95.5 -54.5t-39.5 -127.5z" />
+<glyph d="M118 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM278 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM30 190q0 94 60.5 159t175.5 65q91 0 147.5 -64.5t56.5 -148.5 q0 -91 -54 -151.5t-175 -60.5q-99 0 -155 58t-56 143zM113 210q0 -88 35.5 -143t95.5 -55q73 0 108.5 55t35.5 129q0 78 -39.5 137t-100.5 59q-56 0 -95.5 -54.5t-39.5 -127.5z" />
+<glyph d="M147 582q0 13 9.5 21.5t26.5 8.5q21 0 30 -25l49 -130q2 -4 2 -6t-4 -2h-16q-4 0 -8 6l-82 107q-7 10 -7 20zM30 190q0 94 60.5 159t175.5 65q91 0 147.5 -64.5t56.5 -148.5q0 -91 -54 -151.5t-175 -60.5q-99 0 -155 58t-56 143zM113 210q0 -88 35.5 -143t95.5 -55 q73 0 108.5 55t35.5 129q0 78 -39.5 137t-100.5 59q-56 0 -95.5 -54.5t-39.5 -127.5z" />
+<glyph d="M234 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM30 190q0 94 60.5 159t175.5 65q91 0 147.5 -64.5t56.5 -148.5q0 -91 -54 -151.5t-175 -60.5q-99 0 -155 58t-56 143zM113 210q0 -88 35.5 -143t95.5 -55 q73 0 108.5 55t35.5 129q0 78 -39.5 137t-100.5 59q-56 0 -95.5 -54.5t-39.5 -127.5z" />
+<glyph d="M144 498q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM30 190q0 94 60.5 159t175.5 65q91 0 147.5 -64.5t56.5 -148.5q0 -91 -54 -151.5 t-175 -60.5q-99 0 -155 58t-56 143zM113 210q0 -88 35.5 -143t95.5 -55q73 0 108.5 55t35.5 129q0 78 -39.5 137t-100.5 59q-56 0 -95.5 -54.5t-39.5 -127.5z" />
+<glyph d="M146 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84zM30 190q0 94 60.5 159t175.5 65q91 0 147.5 -64.5t56.5 -148.5q0 -91 -54 -151.5t-175 -60.5 q-99 0 -155 58t-56 143zM113 210q0 -88 35.5 -143t95.5 -55q73 0 108.5 55t35.5 129q0 78 -39.5 137t-100.5 59q-56 0 -95.5 -54.5t-39.5 -127.5z" />
+<glyph d="M147 518v23q0 6 1.5 7t7.5 1h187q5 0 6.5 -1t1.5 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM30 190q0 94 60.5 159t175.5 65q91 0 147.5 -64.5t56.5 -148.5q0 -91 -54 -151.5t-175 -60.5q-99 0 -155 58t-56 143zM113 210q0 -88 35.5 -143t95.5 -55q73 0 108.5 55 t35.5 129q0 78 -39.5 137t-100.5 59q-56 0 -95.5 -54.5t-39.5 -127.5z" />
+<glyph d="M169 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM279 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM30 190q0 94 60.5 159t175.5 65 q91 0 147.5 -64.5t56.5 -148.5q0 -91 -54 -151.5t-175 -60.5q-99 0 -155 58t-56 143zM113 210q0 -88 35.5 -143t95.5 -55q73 0 108.5 55t35.5 129q0 78 -39.5 137t-100.5 59q-56 0 -95.5 -54.5t-39.5 -127.5z" />
+<glyph d="M30 190q0 94 60.5 159t175.5 65q36 0 72 -13h1q8 -1 11 3l1 2l45 78h1q2 0 7.5 -2.5t9.5 -5.5t3 -4l-45 -78q-3 -7 1 -10q46 -29 71.5 -78.5t25.5 -104.5q0 -91 -54 -151.5t-175 -60.5q-49 0 -88 15q-5 2 -8 -3l-48 -83h-1q-2 0 -7.5 2.5t-9.5 5.5t-3 4l47 81q3 5 -2 8 q-44 26 -67.5 71.5t-23.5 99.5zM113 210q0 -89 36 -144q1 -2 2 -2q2 0 4 4l166 286l2 4l1 2q0 1 -4 5q-32 27 -72 27q-56 0 -95.5 -54.5t-39.5 -127.5zM172 39q32 -27 72 -27q73 0 108.5 55t35.5 129q0 80 -42 140q-2 4 -3 4.5t-2 0t-3 -4.5l-166 -288q-3 -7 0 -9z" />
+<glyph d="M139 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM30 190q0 94 60.5 159t175.5 65q91 0 147.5 -64.5t56.5 -148.5q0 -91 -54 -151.5t-175 -60.5 q-99 0 -155 58t-56 143zM113 210q0 -88 35.5 -143t95.5 -55q73 0 108.5 55t35.5 129q0 78 -39.5 137t-100.5 59q-56 0 -95.5 -54.5t-39.5 -127.5z" />
+<glyph d="M118 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM278 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM30 190q0 94 60.5 159t175.5 65q91 0 147.5 -64.5t56.5 -148.5 q0 -91 -54 -151.5t-175 -60.5q-99 0 -155 58t-56 143zM113 210q0 -88 35.5 -143t95.5 -55q73 0 108.5 55t35.5 129q0 78 -39.5 137t-100.5 59q-56 0 -95.5 -54.5t-39.5 -127.5z" />
+<glyph d="M147 582q0 13 9.5 21.5t26.5 8.5q21 0 30 -25l49 -130q2 -4 2 -6t-4 -2h-16q-4 0 -8 6l-82 107q-7 10 -7 20zM30 190q0 94 60.5 159t175.5 65q91 0 147.5 -64.5t56.5 -148.5q0 -91 -54 -151.5t-175 -60.5q-99 0 -155 58t-56 143zM113 210q0 -88 35.5 -143t95.5 -55 q73 0 108.5 55t35.5 129q0 78 -39.5 137t-100.5 59q-56 0 -95.5 -54.5t-39.5 -127.5z" />
+<glyph d="M234 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM30 190q0 94 60.5 159t175.5 65q91 0 147.5 -64.5t56.5 -148.5q0 -91 -54 -151.5t-175 -60.5q-99 0 -155 58t-56 143zM113 210q0 -88 35.5 -143t95.5 -55 q73 0 108.5 55t35.5 129q0 78 -39.5 137t-100.5 59q-56 0 -95.5 -54.5t-39.5 -127.5z" />
+<glyph d="M144 498q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM30 190q0 94 60.5 159t175.5 65q91 0 147.5 -64.5t56.5 -148.5q0 -91 -54 -151.5 t-175 -60.5q-99 0 -155 58t-56 143zM113 210q0 -88 35.5 -143t95.5 -55q73 0 108.5 55t35.5 129q0 78 -39.5 137t-100.5 59q-56 0 -95.5 -54.5t-39.5 -127.5z" />
+<glyph d="M146 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84zM30 190q0 94 60.5 159t175.5 65q91 0 147.5 -64.5t56.5 -148.5q0 -91 -54 -151.5t-175 -60.5 q-99 0 -155 58t-56 143zM113 210q0 -88 35.5 -143t95.5 -55q73 0 108.5 55t35.5 129q0 78 -39.5 137t-100.5 59q-56 0 -95.5 -54.5t-39.5 -127.5z" />
+<glyph d="M147 518v23q0 6 1.5 7t7.5 1h187q5 0 6.5 -1t1.5 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM30 190q0 94 60.5 159t175.5 65q91 0 147.5 -64.5t56.5 -148.5q0 -91 -54 -151.5t-175 -60.5q-99 0 -155 58t-56 143zM113 210q0 -88 35.5 -143t95.5 -55q73 0 108.5 55 t35.5 129q0 78 -39.5 137t-100.5 59q-56 0 -95.5 -54.5t-39.5 -127.5z" />
+<glyph d="M169 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM279 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM30 190q0 94 60.5 159t175.5 65 q91 0 147.5 -64.5t56.5 -148.5q0 -91 -54 -151.5t-175 -60.5q-99 0 -155 58t-56 143zM113 210q0 -88 35.5 -143t95.5 -55q73 0 108.5 55t35.5 129q0 78 -39.5 137t-100.5 59q-56 0 -95.5 -54.5t-39.5 -127.5z" />
+<glyph d="M30 190q0 94 60.5 159t175.5 65q36 0 72 -13h1q8 -1 11 3l1 2l45 78h1q2 0 7.5 -2.5t9.5 -5.5t3 -4l-45 -78q-3 -7 1 -10q46 -29 71.5 -78.5t25.5 -104.5q0 -91 -54 -151.5t-175 -60.5q-49 0 -88 15q-5 2 -8 -3l-48 -83h-1q-2 0 -7.5 2.5t-9.5 5.5t-3 4l47 81q3 5 -2 8 q-44 26 -67.5 71.5t-23.5 99.5zM113 210q0 -89 36 -144q1 -2 2 -2q2 0 4 4l166 286l2 4l1 2q0 1 -4 5q-32 27 -72 27q-56 0 -95.5 -54.5t-39.5 -127.5zM172 39q32 -27 72 -27q73 0 108.5 55t35.5 129q0 80 -42 140q-2 4 -3 4.5t-2 0t-3 -4.5l-166 -288q-3 -7 0 -9z" />
+<glyph horiz-adv-x="478" d="M104 597q0 2 5 2h12q1 0 8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM20 388q0 14 10 14q2 0 40 -0.5t55 -0.5q18 0 59.5 1t51.5 1q156 0 156 -98 q0 -23 -11 -42.5t-26.5 -30.5t-31 -18.5t-26.5 -11t-11 -4.5l13 -3q13 -3 31 -11.5t36.5 -22t31.5 -40t14 -61.5q0 -16 2 -24t3.5 -9.5t5.5 -1.5h31q7 0 7 -16q0 -11 -10 -11l-110 2q-5 0 -5 5v37q0 35 -3 55.5t-13.5 44t-35 34t-64.5 10.5h-48q-7 0 -7 -7v-50 q0 -104 8 -104h61q7 0 7 -12q0 -15 -7 -15l-36 1q-36 1 -70 1q-19 0 -41.5 -0.5t-37.5 -1t-16 -0.5q-9 0 -9 12q0 15 9 15h53q6 0 6 54v158q0 139 -8 139h-53q-11 0 -11 12zM165 208q0 -6 10 -6h68q37 0 56 25.5t19 62.5q0 40 -32.5 66t-73.5 26q-35 0 -44 -2q-3 -2 -3 -66 v-106z" />
+<glyph horiz-adv-x="478" d="M199 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM20 388q0 14 10 14q2 0 40 -0.5t55 -0.5q18 0 59.5 1t51.5 1q156 0 156 -98q0 -23 -11 -42.5t-26.5 -30.5t-31 -18.5t-26.5 -11t-11 -4.5l13 -3 q13 -3 31 -11.5t36.5 -22t31.5 -40t14 -61.5q0 -16 2 -24t3.5 -9.5t5.5 -1.5h31q7 0 7 -16q0 -11 -10 -11l-110 2q-5 0 -5 5v37q0 35 -3 55.5t-13.5 44t-35 34t-64.5 10.5h-48q-7 0 -7 -7v-50q0 -104 8 -104h61q7 0 7 -12q0 -15 -7 -15l-36 1q-36 1 -70 1q-19 0 -41.5 -0.5 t-37.5 -1t-16 -0.5q-9 0 -9 12q0 15 9 15h53q6 0 6 54v158q0 139 -8 139h-53q-11 0 -11 12zM165 208q0 -6 10 -6h68q37 0 56 25.5t19 62.5q0 40 -32.5 66t-73.5 26q-35 0 -44 -2q-3 -2 -3 -66v-106z" />
+<glyph horiz-adv-x="478" d="M194 -225l15 10q15 10 29.5 25.5t14.5 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM20 388q0 14 10 14q2 0 40 -0.5t55 -0.5q18 0 59.5 1t51.5 1 q156 0 156 -98q0 -23 -11 -42.5t-26.5 -30.5t-31 -18.5t-26.5 -11t-11 -4.5l13 -3q13 -3 31 -11.5t36.5 -22t31.5 -40t14 -61.5q0 -16 2 -24t3.5 -9.5t5.5 -1.5h31q7 0 7 -16q0 -11 -10 -11l-110 2q-5 0 -5 5v37q0 35 -3 55.5t-13.5 44t-35 34t-64.5 10.5h-48q-7 0 -7 -7 v-50q0 -104 8 -104h61q7 0 7 -12q0 -15 -7 -15l-36 1q-36 1 -70 1q-19 0 -41.5 -0.5t-37.5 -1t-16 -0.5q-9 0 -9 12q0 15 9 15h53q6 0 6 54v158q0 139 -8 139h-53q-11 0 -11 12zM165 208q0 -6 10 -6h68q37 0 56 25.5t19 62.5q0 40 -32.5 66t-73.5 26q-35 0 -44 -2 q-3 -2 -3 -66v-106z" />
+<glyph horiz-adv-x="478" d="M104 597q0 2 5 2h12q1 0 8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM20 388q0 14 10 14q2 0 40 -0.5t55 -0.5q18 0 59.5 1t51.5 1q156 0 156 -98 q0 -23 -11 -42.5t-26.5 -30.5t-31 -18.5t-26.5 -11t-11 -4.5l13 -3q13 -3 31 -11.5t36.5 -22t31.5 -40t14 -61.5q0 -16 2 -24t3.5 -9.5t5.5 -1.5h31q7 0 7 -16q0 -11 -10 -11l-110 2q-5 0 -5 5v37q0 35 -3 55.5t-13.5 44t-35 34t-64.5 10.5h-48q-7 0 -7 -7v-50 q0 -104 8 -104h61q7 0 7 -12q0 -15 -7 -15l-36 1q-36 1 -70 1q-19 0 -41.5 -0.5t-37.5 -1t-16 -0.5q-9 0 -9 12q0 15 9 15h53q6 0 6 54v158q0 139 -8 139h-53q-11 0 -11 12zM165 208q0 -6 10 -6h68q37 0 56 25.5t19 62.5q0 40 -32.5 66t-73.5 26q-35 0 -44 -2q-3 -2 -3 -66 v-106z" />
+<glyph horiz-adv-x="478" d="M199 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM20 388q0 14 10 14q2 0 40 -0.5t55 -0.5q18 0 59.5 1t51.5 1q156 0 156 -98q0 -23 -11 -42.5t-26.5 -30.5t-31 -18.5t-26.5 -11t-11 -4.5l13 -3 q13 -3 31 -11.5t36.5 -22t31.5 -40t14 -61.5q0 -16 2 -24t3.5 -9.5t5.5 -1.5h31q7 0 7 -16q0 -11 -10 -11l-110 2q-5 0 -5 5v37q0 35 -3 55.5t-13.5 44t-35 34t-64.5 10.5h-48q-7 0 -7 -7v-50q0 -104 8 -104h61q7 0 7 -12q0 -15 -7 -15l-36 1q-36 1 -70 1q-19 0 -41.5 -0.5 t-37.5 -1t-16 -0.5q-9 0 -9 12q0 15 9 15h53q6 0 6 54v158q0 139 -8 139h-53q-11 0 -11 12zM165 208q0 -6 10 -6h68q37 0 56 25.5t19 62.5q0 40 -32.5 66t-73.5 26q-35 0 -44 -2q-3 -2 -3 -66v-106z" />
+<glyph horiz-adv-x="478" d="M194 -225l15 10q15 10 29.5 25.5t14.5 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM20 388q0 14 10 14q2 0 40 -0.5t55 -0.5q18 0 59.5 1t51.5 1 q156 0 156 -98q0 -23 -11 -42.5t-26.5 -30.5t-31 -18.5t-26.5 -11t-11 -4.5l13 -3q13 -3 31 -11.5t36.5 -22t31.5 -40t14 -61.5q0 -16 2 -24t3.5 -9.5t5.5 -1.5h31q7 0 7 -16q0 -11 -10 -11l-110 2q-5 0 -5 5v37q0 35 -3 55.5t-13.5 44t-35 34t-64.5 10.5h-48q-7 0 -7 -7 v-50q0 -104 8 -104h61q7 0 7 -12q0 -15 -7 -15l-36 1q-36 1 -70 1q-19 0 -41.5 -0.5t-37.5 -1t-16 -0.5q-9 0 -9 12q0 15 9 15h53q6 0 6 54v158q0 139 -8 139h-53q-11 0 -11 12zM165 208q0 -6 10 -6h68q37 0 56 25.5t19 62.5q0 40 -32.5 66t-73.5 26q-35 0 -44 -2 q-3 -2 -3 -66v-106z" />
+<glyph horiz-adv-x="369" d="M68 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12q-1 0 -8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM40 292q0 53 39 87t96 34q46 0 99 -24q1 0 5.5 -2.5t6 -1.5t1.5 7l1 9q0 7 12 7q17 0 17 -8 q0 -2 -1.5 -21t-3 -44.5t-1.5 -43.5q0 -7 -10 -7h-3q-14 0 -14 7q0 1 1 20t1 22q0 6 -14.5 19t-41 25t-52.5 12t-51 -18.5t-25 -50.5q0 -29 24.5 -48t59.5 -30t69.5 -24t59 -40.5t24.5 -69.5q0 -63 -45.5 -91.5t-117.5 -28.5q-29 0 -59.5 6t-48 12.5t-18.5 9.5q-4 92 -4 106 q0 3 14 5q10 1 12 -0.5t2 -8.5v-4l3 -49q1 -17 40 -32t77 -15q86 0 86 68q0 25 -24.5 41.5t-60 27.5t-71 24.5t-60 42t-24.5 70.5z" />
+<glyph horiz-adv-x="369" d="M163 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM40 292q0 53 39 87t96 34q46 0 99 -24q1 0 5.5 -2.5t6 -1.5t1.5 7l1 9q0 7 12 7q17 0 17 -8q0 -2 -1.5 -21t-3 -44.5t-1.5 -43.5q0 -7 -10 -7h-3 q-14 0 -14 7q0 1 1 20t1 22q0 6 -14.5 19t-41 25t-52.5 12t-51 -18.5t-25 -50.5q0 -29 24.5 -48t59.5 -30t69.5 -24t59 -40.5t24.5 -69.5q0 -63 -45.5 -91.5t-117.5 -28.5q-29 0 -59.5 6t-48 12.5t-18.5 9.5q-4 92 -4 106q0 3 14 5q10 1 12 -0.5t2 -8.5v-4l3 -49 q1 -17 40 -32t77 -15q86 0 86 68q0 25 -24.5 41.5t-60 27.5t-71 24.5t-60 42t-24.5 70.5z" />
+<glyph horiz-adv-x="369" d="M68 597q0 2 5 2h12q1 0 8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM40 292q0 53 39 87t96 34q46 0 99 -24q1 0 5.5 -2.5t6 -1.5t1.5 7l1 9q0 7 12 7q17 0 17 -8 q0 -2 -1.5 -21t-3 -44.5t-1.5 -43.5q0 -7 -10 -7h-3q-14 0 -14 7q0 1 1 20t1 22q0 6 -14.5 19t-41 25t-52.5 12t-51 -18.5t-25 -50.5q0 -29 24.5 -48t59.5 -30t69.5 -24t59 -40.5t24.5 -69.5q0 -63 -45.5 -91.5t-117.5 -28.5q-29 0 -59.5 6t-48 12.5t-18.5 9.5q-4 92 -4 106 q0 3 14 5q10 1 12 -0.5t2 -8.5v-4l3 -49q1 -17 40 -32t77 -15q86 0 86 68q0 25 -24.5 41.5t-60 27.5t-71 24.5t-60 42t-24.5 70.5z" />
+<glyph horiz-adv-x="369" d="M40 292q0 53 39 87t96 34q46 0 99 -24q1 0 5.5 -2.5t6 -1.5t1.5 7l1 9q0 7 12 7q17 0 17 -8q0 -2 -1.5 -21t-3 -44.5t-1.5 -43.5q0 -7 -10 -7h-3q-14 0 -14 7q0 1 1 20t1 22q0 6 -14.5 19t-41 25t-52.5 12t-51 -18.5t-25 -50.5q0 -29 24.5 -48t59.5 -30t69.5 -24 t59 -40.5t24.5 -69.5q0 -110 -140 -119l-20 -54q-2 -9 0 -9l5 2l14.5 2.5t16.5 1.5q40 0 62.5 -21t22.5 -47q0 -35 -29.5 -63.5t-76.5 -28.5q-23 0 -43.5 6.5t-30 12.5t-9.5 9q0 11 8 11l9 -3q8 -4 22 -8t29 -4q34 0 50 13.5t16 42.5q0 45 -55 45q-8 0 -16.5 -2.5t-14 -4.5 t-6.5 -2q-8 0 -8 5q0 6 36 95h-5q-29 0 -59.5 6t-48 12.5t-18.5 9.5q-4 92 -4 106q0 3 14 5q10 1 12 -0.5t2 -8.5v-4l3 -49q1 -17 40 -32t77 -15q86 0 86 68q0 25 -24.5 41.5t-60 27.5t-71 24.5t-60 42t-24.5 70.5z" />
+<glyph horiz-adv-x="369" d="M140 -225l15 10q15 10 29.5 25.5t14.5 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM40 292q0 53 39 87t96 34q46 0 99 -24q1 0 5.5 -2.5t6 -1.5t1.5 7l1 9 q0 7 12 7q17 0 17 -8q0 -2 -1.5 -21t-3 -44.5t-1.5 -43.5q0 -7 -10 -7h-3q-14 0 -14 7q0 1 1 20t1 22q0 6 -14.5 19t-41 25t-52.5 12t-51 -18.5t-25 -50.5q0 -29 24.5 -48t59.5 -30t69.5 -24t59 -40.5t24.5 -69.5q0 -63 -45.5 -91.5t-117.5 -28.5q-29 0 -59.5 6t-48 12.5 t-18.5 9.5q-4 92 -4 106q0 3 14 5q10 1 12 -0.5t2 -8.5v-4l3 -49q1 -17 40 -32t77 -15q86 0 86 68q0 25 -24.5 41.5t-60 27.5t-71 24.5t-60 42t-24.5 70.5z" />
+<glyph horiz-adv-x="369" d="M68 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12q-1 0 -8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM40 292q0 53 39 87t96 34q46 0 99 -24q1 0 5.5 -2.5t6 -1.5t1.5 7l1 9q0 7 12 7q17 0 17 -8 q0 -2 -1.5 -21t-3 -44.5t-1.5 -43.5q0 -7 -10 -7h-3q-14 0 -14 7q0 1 1 20t1 22q0 6 -14.5 19t-41 25t-52.5 12t-51 -18.5t-25 -50.5q0 -29 24.5 -48t59.5 -30t69.5 -24t59 -40.5t24.5 -69.5q0 -63 -45.5 -91.5t-117.5 -28.5q-29 0 -59.5 6t-48 12.5t-18.5 9.5q-4 92 -4 106 q0 3 14 5q10 1 12 -0.5t2 -8.5v-4l3 -49q1 -17 40 -32t77 -15q86 0 86 68q0 25 -24.5 41.5t-60 27.5t-71 24.5t-60 42t-24.5 70.5z" />
+<glyph horiz-adv-x="369" d="M163 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM40 292q0 53 39 87t96 34q46 0 99 -24q1 0 5.5 -2.5t6 -1.5t1.5 7l1 9q0 7 12 7q17 0 17 -8q0 -2 -1.5 -21t-3 -44.5t-1.5 -43.5q0 -7 -10 -7h-3 q-14 0 -14 7q0 1 1 20t1 22q0 6 -14.5 19t-41 25t-52.5 12t-51 -18.5t-25 -50.5q0 -29 24.5 -48t59.5 -30t69.5 -24t59 -40.5t24.5 -69.5q0 -63 -45.5 -91.5t-117.5 -28.5q-29 0 -59.5 6t-48 12.5t-18.5 9.5q-4 92 -4 106q0 3 14 5q10 1 12 -0.5t2 -8.5v-4l3 -49 q1 -17 40 -32t77 -15q86 0 86 68q0 25 -24.5 41.5t-60 27.5t-71 24.5t-60 42t-24.5 70.5z" />
+<glyph horiz-adv-x="369" d="M68 597q0 2 5 2h12q1 0 8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM40 292q0 53 39 87t96 34q46 0 99 -24q1 0 5.5 -2.5t6 -1.5t1.5 7l1 9q0 7 12 7q17 0 17 -8 q0 -2 -1.5 -21t-3 -44.5t-1.5 -43.5q0 -7 -10 -7h-3q-14 0 -14 7q0 1 1 20t1 22q0 6 -14.5 19t-41 25t-52.5 12t-51 -18.5t-25 -50.5q0 -29 24.5 -48t59.5 -30t69.5 -24t59 -40.5t24.5 -69.5q0 -63 -45.5 -91.5t-117.5 -28.5q-29 0 -59.5 6t-48 12.5t-18.5 9.5q-4 92 -4 106 q0 3 14 5q10 1 12 -0.5t2 -8.5v-4l3 -49q1 -17 40 -32t77 -15q86 0 86 68q0 25 -24.5 41.5t-60 27.5t-71 24.5t-60 42t-24.5 70.5z" />
+<glyph horiz-adv-x="369" d="M40 292q0 53 39 87t96 34q46 0 99 -24q1 0 5.5 -2.5t6 -1.5t1.5 7l1 9q0 7 12 7q17 0 17 -8q0 -2 -1.5 -21t-3 -44.5t-1.5 -43.5q0 -7 -10 -7h-3q-14 0 -14 7q0 1 1 20t1 22q0 6 -14.5 19t-41 25t-52.5 12t-51 -18.5t-25 -50.5q0 -29 24.5 -48t59.5 -30t69.5 -24 t59 -40.5t24.5 -69.5q0 -110 -140 -119l-20 -54q-2 -9 0 -9l5 2l14.5 2.5t16.5 1.5q40 0 62.5 -21t22.5 -47q0 -35 -29.5 -63.5t-76.5 -28.5q-23 0 -43.5 6.5t-30 12.5t-9.5 9q0 11 8 11l9 -3q8 -4 22 -8t29 -4q34 0 50 13.5t16 42.5q0 45 -55 45q-8 0 -16.5 -2.5t-14 -4.5 t-6.5 -2q-8 0 -8 5q0 6 36 95h-5q-29 0 -59.5 6t-48 12.5t-18.5 9.5q-4 92 -4 106q0 3 14 5q10 1 12 -0.5t2 -8.5v-4l3 -49q1 -17 40 -32t77 -15q86 0 86 68q0 25 -24.5 41.5t-60 27.5t-71 24.5t-60 42t-24.5 70.5z" />
+<glyph horiz-adv-x="369" d="M140 -225l15 10q15 10 29.5 25.5t14.5 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM40 292q0 53 39 87t96 34q46 0 99 -24q1 0 5.5 -2.5t6 -1.5t1.5 7l1 9 q0 7 12 7q17 0 17 -8q0 -2 -1.5 -21t-3 -44.5t-1.5 -43.5q0 -7 -10 -7h-3q-14 0 -14 7q0 1 1 20t1 22q0 6 -14.5 19t-41 25t-52.5 12t-51 -18.5t-25 -50.5q0 -29 24.5 -48t59.5 -30t69.5 -24t59 -40.5t24.5 -69.5q0 -63 -45.5 -91.5t-117.5 -28.5q-29 0 -59.5 6t-48 12.5 t-18.5 9.5q-4 92 -4 106q0 3 14 5q10 1 12 -0.5t2 -8.5v-4l3 -49q1 -17 40 -32t77 -15q86 0 86 68q0 25 -24.5 41.5t-60 27.5t-71 24.5t-60 42t-24.5 70.5z" />
+<glyph horiz-adv-x="464" d="M124 597q0 2 5 2h12q1 0 8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM20 307q0 11 13 111q0 3 11 3q12 0 12 -4v-14q0 -2 24 -2h275q62 0 63 5q1 3 1.5 10t0.5 11 q0 3 12 3q11 0 11 -7l1 -107q0 -7 -14 -7q-11 0 -11 9v54q0 4 -65 4h-73q-9 0 -9 -101v-184q0 -66 10 -66h69q7 0 7 -12q0 -15 -7 -15q-1 0 -41 1t-74 1q-36 0 -74 -1l-39 -1q-8 0 -8 15q0 12 9 12h65q4 0 6 84l3 210q0 57 -5 57h-45q-95 0 -96 -10l-7 -60q-1 -4 -13 -4 t-12 5z" />
+<glyph horiz-adv-x="464" d="M20 307q0 11 13 111q0 3 11 3q12 0 12 -4v-14q0 -2 24 -2h275q62 0 63 5q1 3 1.5 10t0.5 11q0 3 12 3q11 0 11 -7l1 -107q0 -7 -14 -7q-11 0 -11 9v54q0 4 -65 4h-73q-9 0 -9 -101v-184q0 -66 10 -66h69q7 0 7 -12q0 -15 -7 -15q-1 0 -37 1t-66 1l-24 -65q-2 -9 0 -9l6 2 q5 1 13.5 2.5t16.5 1.5q40 0 62.5 -21t22.5 -47q0 -35 -29.5 -63.5t-76.5 -28.5q-23 0 -43.5 6.5t-30 12.5t-9.5 9q0 11 8 11l8 -3q9 -4 23 -8t29 -4q34 0 50 13.5t16 42.5q0 45 -55 45q-8 0 -16.5 -2.5t-14 -4.5t-6.5 -2q-8 0 -8 5t41 107q-34 0 -71 -1l-37 -1q-8 0 -8 15 q0 12 9 12h65q4 0 6 84l3 210q0 57 -5 57h-45q-95 0 -96 -10l-7 -60q-1 -4 -13 -4t-12 5z" />
+<glyph horiz-adv-x="464" d="M185 -225l15 10q14 10 29 25.5t15 29.5q0 17 -13 30t-26.5 21.5t-13.5 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM20 307q0 11 13 111q0 3 11 3q12 0 12 -4v-14q0 -2 24 -2h275q62 0 63 5 q1 3 1.5 10t0.5 11q0 3 12 3q11 0 11 -7l1 -107q0 -7 -14 -7q-11 0 -11 9v54q0 4 -65 4h-73q-9 0 -9 -101v-184q0 -66 10 -66h69q7 0 7 -12q0 -15 -7 -15q-1 0 -41 1t-74 1q-36 0 -74 -1l-39 -1q-8 0 -8 15q0 12 9 12h65q4 0 6 84l3 210q0 57 -5 57h-45q-95 0 -96 -10 l-7 -60q-1 -4 -13 -4t-12 5z" />
+<glyph horiz-adv-x="464" d="M20 307q0 11 13 111q0 3 11 3q12 0 12 -4v-14q0 -2 24 -2h275q62 0 63 5q1 3 1.5 10t0.5 11q0 3 12 3q11 0 11 -7l1 -107q0 -7 -14 -7q-11 0 -11 9v54q0 4 -65 4h-73q-9 0 -9 -101v-48q0 -8 1.5 -9.5t9.5 -1.5h99q3 0 3 -12t-3 -12h-99q-8 0 -9.5 -1t-1.5 -8v-92 q0 -66 10 -66h69q7 0 7 -12q0 -15 -7 -15q-1 0 -41 1t-74 1q-36 0 -74 -1l-39 -1q-8 0 -8 15q0 12 9 12h65q4 0 6 84l1 74q0 9 -6 9h-99q-2 0 -2.5 12t2.5 12h94q9 0 10.5 1.5t1.5 9.5l1 92q0 57 -5 57h-45q-95 0 -96 -10l-7 -60q-1 -4 -13 -4t-12 5z" />
+<glyph horiz-adv-x="464" d="M124 597q0 2 5 2h12q1 0 8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM20 307q0 11 13 111q0 3 11 3q12 0 12 -4v-14q0 -2 24 -2h275q62 0 63 5q1 3 1.5 10t0.5 11 q0 3 12 3q11 0 11 -7l1 -107q0 -7 -14 -7q-11 0 -11 9v54q0 4 -65 4h-73q-9 0 -9 -101v-184q0 -66 10 -66h69q7 0 7 -12q0 -15 -7 -15q-1 0 -41 1t-74 1q-36 0 -74 -1l-39 -1q-8 0 -8 15q0 12 9 12h65q4 0 6 84l3 210q0 57 -5 57h-45q-95 0 -96 -10l-7 -60q-1 -4 -13 -4 t-12 5z" />
+<glyph horiz-adv-x="464" d="M20 307q0 11 13 111q0 3 11 3q12 0 12 -4v-14q0 -2 24 -2h275q62 0 63 5q1 3 1.5 10t0.5 11q0 3 12 3q11 0 11 -7l1 -107q0 -7 -14 -7q-11 0 -11 9v54q0 4 -65 4h-73q-9 0 -9 -101v-184q0 -66 10 -66h69q7 0 7 -12q0 -15 -7 -15q-1 0 -37 1t-66 1l-24 -65q-2 -9 0 -9l6 2 q5 1 13.5 2.5t16.5 1.5q40 0 62.5 -21t22.5 -47q0 -35 -29.5 -63.5t-76.5 -28.5q-23 0 -43.5 6.5t-30 12.5t-9.5 9q0 11 8 11l8 -3q9 -4 23 -8t29 -4q34 0 50 13.5t16 42.5q0 45 -55 45q-8 0 -16.5 -2.5t-14 -4.5t-6.5 -2q-8 0 -8 5t41 107q-34 0 -71 -1l-37 -1q-8 0 -8 15 q0 12 9 12h65q4 0 6 84l3 210q0 57 -5 57h-45q-95 0 -96 -10l-7 -60q-1 -4 -13 -4t-12 5z" />
+<glyph horiz-adv-x="464" d="M185 -225l15 10q14 10 29 25.5t15 29.5q0 17 -13 30t-26.5 21.5t-13.5 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM20 307q0 11 13 111q0 3 11 3q12 0 12 -4v-14q0 -2 24 -2h275q62 0 63 5 q1 3 1.5 10t0.5 11q0 3 12 3q11 0 11 -7l1 -107q0 -7 -14 -7q-11 0 -11 9v54q0 4 -65 4h-73q-9 0 -9 -101v-184q0 -66 10 -66h69q7 0 7 -12q0 -15 -7 -15q-1 0 -41 1t-74 1q-36 0 -74 -1l-39 -1q-8 0 -8 15q0 12 9 12h65q4 0 6 84l3 210q0 57 -5 57h-45q-95 0 -96 -10 l-7 -60q-1 -4 -13 -4t-12 5z" />
+<glyph horiz-adv-x="464" d="M20 307q0 11 13 111q0 3 11 3q12 0 12 -4v-14q0 -2 24 -2h275q62 0 63 5q1 3 1.5 10t0.5 11q0 3 12 3q11 0 11 -7l1 -107q0 -7 -14 -7q-11 0 -11 9v54q0 4 -65 4h-73q-9 0 -9 -101v-48q0 -8 1.5 -9.5t9.5 -1.5h99q3 0 3 -12t-3 -12h-99q-8 0 -9.5 -1t-1.5 -8v-92 q0 -66 10 -66h69q7 0 7 -12q0 -15 -7 -15q-1 0 -41 1t-74 1q-36 0 -74 -1l-39 -1q-8 0 -8 15q0 12 9 12h65q4 0 6 84l1 74q0 9 -6 9h-99q-2 0 -2.5 12t2.5 12h94q9 0 10.5 1.5t1.5 9.5l1 92q0 57 -5 57h-45q-95 0 -96 -10l-7 -60q-1 -4 -13 -4t-12 5z" />
+<glyph horiz-adv-x="551" d="M174 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84zM25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-62 q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17t-5 5.5l-10 -6 q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M172 498q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13 q0 -14 -12 -14h-62q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17 t-5 5.5l-10 -6q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M262 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-62q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103 q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17t-5 5.5l-10 -6q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5 t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M146 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM306 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1 q9 0 9 -13q0 -14 -12 -14h-62q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10 l-12.5 19.5t-11.5 17t-5 5.5l-10 -6q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M167 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-62 q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17t-5 5.5l-10 -6 q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M206 535q0 29 21 50t50 21t50 -21t21 -50t-21 -50t-50 -21t-50 21t-21 50zM234 535q0 -18 12.5 -30.5t30.5 -12.5t30.5 12.5t12.5 30.5t-12.5 30.5t-30.5 12.5t-30.5 -12.5t-12.5 -30.5zM25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13 q0 -14 -12 -14h-62q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17 t-5 5.5l-10 -6q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M175 582q0 13 9.5 21.5t26.5 8.5q21 0 30 -25l49 -130q2 -4 2 -6t-4 -2h-16q-4 0 -8 6l-82 107q-7 10 -7 20zM25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-62q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103 q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17t-5 5.5l-10 -6q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5 t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M175 518v23q0 6 1.5 7t7.5 1h187q5 0 6.5 -1t1.5 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-62q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103q1 14 1 107 q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17t-5 5.5l-10 -6q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5t-31.5 93.5v112 q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M197 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM307 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM25 391q0 12 13 12l28 -1 q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-62q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14h-35q-5 0 -5 -74v-292 q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17t-5 5.5l-10 -6q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-62q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14 h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17t-5 5.5t-9.5 -4.5l-25 -13t-33.5 -15.5q-15 -6 -27 -18q-85 -87 -85 -164q0 -33 20 -56.5t44 -23.5q23 0 43 11t31 22l11 11q1 0 6 -6t5 -7q0 -3 -15 -19t-47.5 -34t-68.5 -18q-32 0 -62.5 29.5 t-30.5 63.5q0 47 26.5 84t87.5 96q10 9 15 14q-30 -8 -61 -8q-85 0 -116.5 33.5t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M174 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84zM25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-62 q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17t-5 5.5l-10 -6 q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M172 498q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13 q0 -14 -12 -14h-62q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17 t-5 5.5l-10 -6q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M262 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-62q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103 q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17t-5 5.5l-10 -6q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5 t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M146 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM306 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1 q9 0 9 -13q0 -14 -12 -14h-62q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10 l-12.5 19.5t-11.5 17t-5 5.5l-10 -6q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M167 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-62 q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17t-5 5.5l-10 -6 q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M206 535q0 29 21 50t50 21t50 -21t21 -50t-21 -50t-50 -21t-50 21t-21 50zM234 535q0 -18 12.5 -30.5t30.5 -12.5t30.5 12.5t12.5 30.5t-12.5 30.5t-30.5 12.5t-30.5 -12.5t-12.5 -30.5zM25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13 q0 -14 -12 -14h-62q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17 t-5 5.5l-10 -6q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M175 582q0 13 9.5 21.5t26.5 8.5q21 0 30 -25l49 -130q2 -4 2 -6t-4 -2h-16q-4 0 -8 6l-82 107q-7 10 -7 20zM25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-62q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103 q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17t-5 5.5l-10 -6q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5 t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M175 518v23q0 6 1.5 7t7.5 1h187q5 0 6.5 -1t1.5 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-62q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103q1 14 1 107 q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17t-5 5.5l-10 -6q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5t-31.5 93.5v112 q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M197 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM307 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM25 391q0 12 13 12l28 -1 q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-62q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14h-35q-5 0 -5 -74v-292 q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17t-5 5.5l-10 -6q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-62q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14 h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17t-5 5.5t-9.5 -4.5l-25 -13t-33.5 -15.5q-15 -6 -27 -18q-85 -87 -85 -164q0 -33 20 -56.5t44 -23.5q23 0 43 11t31 22l11 11q1 0 6 -6t5 -7q0 -3 -15 -19t-47.5 -34t-68.5 -18q-32 0 -62.5 29.5 t-30.5 63.5q0 47 26.5 84t87.5 96q10 9 15 14q-30 -8 -61 -8q-85 0 -116.5 33.5t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="709" d="M255 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM10 389q0 6 0.5 8t3.5 4t9 2q8 0 35.5 -1t43.5 -1q13 0 46 1t41 1q9 0 11 -2.5t2 -11.5 q0 -13 -12 -13h-35q-19 0 -19 -8q0 -2 18 -55l42.5 -119.5t38.5 -97.5q6 -13 8 -13t10 17l89 197q2 5 2 23q0 7 -13 42q-4 11 -7.5 12.5t-15.5 1.5h-23q-8 0 -10.5 3t-2.5 10q0 6 0.5 8t3.5 4t9 2q3 0 31 -1t48 -1q28 0 59 1t36 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-43 q-13 0 -13 -8q0 -2 18 -57.5l42 -124.5t36 -100q6 -15 7 -15l8 17q97 228 97 277q0 11 -4 11h-45q-8 0 -10.5 3t-2.5 10q0 14 14 14q2 0 27 -1t36 -1q13 0 36 1t25 1q7 0 9 -2.5t2 -11.5q0 -13 -12 -13h-13q-9 0 -14 -10q-4 -9 -31 -74l-55 -128.5l-48 -105.5 q-8 -17 -22 -34t-25 -36q-2 -4 -7 -4q-14 0 -31 63q-3 11 -15.5 44.5l-30.5 83.5t-31 90q-1 4 -3 9q-1 3 -2 0l-4 -10l-92 -205q-8 -17 -22.5 -33.5t-25.5 -37.5q-2 -4 -7 -4q-4 0 -7.5 3.5t-7 10.5t-5.5 12.5t-5.5 16t-4.5 14.5q-4 12 -26.5 71.5l-48.5 130l-43 118.5 q-4 11 -7 13t-14 2h-16q-8 0 -10.5 3t-2.5 10z" />
+<glyph horiz-adv-x="709" d="M255 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM10 389q0 6 0.5 8t3.5 4t9 2q8 0 35.5 -1t43.5 -1q13 0 46 1t41 1q9 0 11 -2.5t2 -11.5 q0 -13 -12 -13h-35q-19 0 -19 -8q0 -2 18 -55l42.5 -119.5t38.5 -97.5q6 -13 8 -13t10 17l89 197q2 5 2 23q0 7 -13 42q-4 11 -7.5 12.5t-15.5 1.5h-23q-8 0 -10.5 3t-2.5 10q0 6 0.5 8t3.5 4t9 2q3 0 31 -1t48 -1q28 0 59 1t36 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-43 q-13 0 -13 -8q0 -2 18 -57.5l42 -124.5t36 -100q6 -15 7 -15l8 17q97 228 97 277q0 11 -4 11h-45q-8 0 -10.5 3t-2.5 10q0 14 14 14q2 0 27 -1t36 -1q13 0 36 1t25 1q7 0 9 -2.5t2 -11.5q0 -13 -12 -13h-13q-9 0 -14 -10q-4 -9 -31 -74l-55 -128.5l-48 -105.5 q-8 -17 -22 -34t-25 -36q-2 -4 -7 -4q-14 0 -31 63q-3 11 -15.5 44.5l-30.5 83.5t-31 90q-1 4 -3 9q-1 3 -2 0l-4 -10l-92 -205q-8 -17 -22.5 -33.5t-25.5 -37.5q-2 -4 -7 -4q-4 0 -7.5 3.5t-7 10.5t-5.5 12.5t-5.5 16t-4.5 14.5q-4 12 -26.5 71.5l-48.5 130l-43 118.5 q-4 11 -7 13t-14 2h-16q-8 0 -10.5 3t-2.5 10z" />
+<glyph horiz-adv-x="464" d="M138 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12q-1 0 -8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM10 389q0 6 0.5 8t3.5 4t9 2q7 0 34.5 -1t48.5 -1q29 0 61 1t37 1q9 0 11 -2.5t2 -11.5 q0 -13 -12 -13h-51q1 -12 23 -55.5l42.5 -80.5t21.5 -38q2 -5 4 -6.5t4 -0.5t6 5q11 13 45.5 69.5t50.5 88.5q1 2 3 5t3.5 5.5t1.5 3.5q0 4 -19 4h-40q-8 0 -10.5 3t-2.5 10q0 14 14 14q1 0 33.5 -1t53.5 -1q15 0 32 1t21 1q13 0 13 -14q0 -13 -12 -13h-17h-5t-4 -1l-3 -1.5 t-3.5 -3t-3.5 -4l-4.5 -6.5l-5.5 -8l-123 -168q-10 -13 -10 -31v-87q0 -41 9 -41h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-26 0 -48 -0.5t-34 -1t-16 -0.5q-8 0 -8 15q0 12 9 12h57q5 0 5 84v38q0 7 -66.5 118t-70.5 111h-32q-8 0 -10.5 3t-2.5 10z" />
+<glyph horiz-adv-x="464" d="M233 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM10 389q0 6 0.5 8t3.5 4t9 2q7 0 34.5 -1t48.5 -1q29 0 61 1t37 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-51q1 -12 23 -55.5l42.5 -80.5t21.5 -38 q2 -5 4 -6.5t4 -0.5t6 5q11 13 45.5 69.5t50.5 88.5q1 2 3 5t3.5 5.5t1.5 3.5q0 4 -19 4h-40q-8 0 -10.5 3t-2.5 10q0 14 14 14q1 0 33.5 -1t53.5 -1q15 0 32 1t21 1q13 0 13 -14q0 -13 -12 -13h-17h-5t-4 -1l-3 -1.5t-3.5 -3t-3.5 -4l-4.5 -6.5l-5.5 -8l-123 -168 q-10 -13 -10 -31v-87q0 -41 9 -41h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-26 0 -48 -0.5t-34 -1t-16 -0.5q-8 0 -8 15q0 12 9 12h57q5 0 5 84v38q0 7 -66.5 118t-70.5 111h-32q-8 0 -10.5 3t-2.5 10z" />
+<glyph horiz-adv-x="464" d="M117 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM277 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM10 389q0 6 0.5 8t3.5 4t9 2q7 0 34.5 -1t48.5 -1q29 0 61 1 t37 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-51q1 -12 23 -55.5l42.5 -80.5t21.5 -38q2 -5 4 -6.5t4 -0.5t6 5q11 13 45.5 69.5t50.5 88.5q1 2 3 5t3.5 5.5t1.5 3.5q0 4 -19 4h-40q-8 0 -10.5 3t-2.5 10q0 14 14 14q1 0 33.5 -1t53.5 -1q15 0 32 1t21 1q13 0 13 -14 q0 -13 -12 -13h-17h-5t-4 -1l-3 -1.5t-3.5 -3t-3.5 -4l-4.5 -6.5l-5.5 -8l-123 -168q-10 -13 -10 -31v-87q0 -41 9 -41h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-26 0 -48 -0.5t-34 -1t-16 -0.5q-8 0 -8 15q0 12 9 12h57q5 0 5 84v38q0 7 -66.5 118t-70.5 111h-32 q-8 0 -10.5 3t-2.5 10z" />
+<glyph horiz-adv-x="464" d="M138 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12q-1 0 -8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM10 389q0 6 0.5 8t3.5 4t9 2q7 0 34.5 -1t48.5 -1q29 0 61 1t37 1q9 0 11 -2.5t2 -11.5 q0 -13 -12 -13h-51q1 -12 23 -55.5l42.5 -80.5t21.5 -38q2 -5 4 -6.5t4 -0.5t6 5q11 13 45.5 69.5t50.5 88.5q1 2 3 5t3.5 5.5t1.5 3.5q0 4 -19 4h-40q-8 0 -10.5 3t-2.5 10q0 14 14 14q1 0 33.5 -1t53.5 -1q15 0 32 1t21 1q13 0 13 -14q0 -13 -12 -13h-17h-5t-4 -1l-3 -1.5 t-3.5 -3t-3.5 -4l-4.5 -6.5l-5.5 -8l-123 -168q-10 -13 -10 -31v-87q0 -41 9 -41h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-26 0 -48 -0.5t-34 -1t-16 -0.5q-8 0 -8 15q0 12 9 12h57q5 0 5 84v38q0 7 -66.5 118t-70.5 111h-32q-8 0 -10.5 3t-2.5 10z" />
+<glyph horiz-adv-x="464" d="M233 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM10 389q0 6 0.5 8t3.5 4t9 2q7 0 34.5 -1t48.5 -1q29 0 61 1t37 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-51q1 -12 23 -55.5l42.5 -80.5t21.5 -38 q2 -5 4 -6.5t4 -0.5t6 5q11 13 45.5 69.5t50.5 88.5q1 2 3 5t3.5 5.5t1.5 3.5q0 4 -19 4h-40q-8 0 -10.5 3t-2.5 10q0 14 14 14q1 0 33.5 -1t53.5 -1q15 0 32 1t21 1q13 0 13 -14q0 -13 -12 -13h-17h-5t-4 -1l-3 -1.5t-3.5 -3t-3.5 -4l-4.5 -6.5l-5.5 -8l-123 -168 q-10 -13 -10 -31v-87q0 -41 9 -41h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-26 0 -48 -0.5t-34 -1t-16 -0.5q-8 0 -8 15q0 12 9 12h57q5 0 5 84v38q0 7 -66.5 118t-70.5 111h-32q-8 0 -10.5 3t-2.5 10z" />
+<glyph horiz-adv-x="464" d="M117 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM277 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM10 389q0 6 0.5 8t3.5 4t9 2q7 0 34.5 -1t48.5 -1q29 0 61 1 t37 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-51q1 -12 23 -55.5l42.5 -80.5t21.5 -38q2 -5 4 -6.5t4 -0.5t6 5q11 13 45.5 69.5t50.5 88.5q1 2 3 5t3.5 5.5t1.5 3.5q0 4 -19 4h-40q-8 0 -10.5 3t-2.5 10q0 14 14 14q1 0 33.5 -1t53.5 -1q15 0 32 1t21 1q13 0 13 -14 q0 -13 -12 -13h-17h-5t-4 -1l-3 -1.5t-3.5 -3t-3.5 -4l-4.5 -6.5l-5.5 -8l-123 -168q-10 -13 -10 -31v-87q0 -41 9 -41h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-26 0 -48 -0.5t-34 -1t-16 -0.5q-8 0 -8 15q0 12 9 12h57q5 0 5 84v38q0 7 -66.5 118t-70.5 111h-32 q-8 0 -10.5 3t-2.5 10z" />
+<glyph horiz-adv-x="413" d="M201 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM30 10q0 4 10 20l228 327l4 6t3.5 5.5t1.5 3.5q0 4 -14 4l-165 -5h-9t-6.5 -0.5t-4 -0.5t-3 -2t-1 -4.5l-1.5 -7.5l-7 -50q-2 -12 -13 -12q-15 0 -15 10 q0 2 3 22.5l7 49t6 46.5q2 6 8 6q9 0 14.5 -1.5t4.5 -6.5l-1 -9q-1 -8 0 -9t9 -1h266q19 0 19 -8q0 -3 -8 -16l-215 -322q-13 -19 -13 -24q0 -4 10 -4l194 7q9 0 11 1.5t3 11.5l3 60q1 9 4.5 11.5t15.5 1.5q9 -1 9 -9q0 -23 -5 -96q-1 -11 -3 -13t-13 -2h-315q-22 0 -22 10z " />
+<glyph horiz-adv-x="413" d="M106 597q0 2 5 2h12q1 0 8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM30 10q0 4 10 20l228 327l4 6t3.5 5.5t1.5 3.5q0 4 -14 4l-165 -5h-9t-6.5 -0.5t-4 -0.5 t-3 -2t-1 -4.5l-1.5 -7.5l-7 -50q-2 -12 -13 -12q-15 0 -15 10q0 2 3 22.5l7 49t6 46.5q2 6 8 6q9 0 14.5 -1.5t4.5 -6.5l-1 -9q-1 -8 0 -9t9 -1h266q19 0 19 -8q0 -3 -8 -16l-215 -322q-13 -19 -13 -24q0 -4 10 -4l194 7q9 0 11 1.5t3 11.5l3 60q1 9 4.5 11.5t15.5 1.5 q9 -1 9 -9q0 -23 -5 -96q-1 -11 -3 -13t-13 -2h-315q-22 0 -22 10z" />
+<glyph horiz-adv-x="413" d="M165 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM30 10q0 4 10 20l228 327l4 6t3.5 5.5t1.5 3.5q0 4 -14 4l-165 -5h-9t-6.5 -0.5t-4 -0.5t-3 -2t-1 -4.5l-1.5 -7.5l-7 -50q-2 -12 -13 -12q-15 0 -15 10q0 2 3 22.5 l7 49t6 46.5q2 6 8 6q9 0 14.5 -1.5t4.5 -6.5l-1 -9q-1 -8 0 -9t9 -1h266q19 0 19 -8q0 -3 -8 -16l-215 -322q-13 -19 -13 -24q0 -4 10 -4l194 7q9 0 11 1.5t3 11.5l3 60q1 9 4.5 11.5t15.5 1.5q9 -1 9 -9q0 -23 -5 -96q-1 -11 -3 -13t-13 -2h-315q-22 0 -22 10z" />
+<glyph horiz-adv-x="413" d="M201 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM30 10q0 4 10 20l228 327l4 6t3.5 5.5t1.5 3.5q0 4 -14 4l-165 -5h-9t-6.5 -0.5t-4 -0.5t-3 -2t-1 -4.5l-1.5 -7.5l-7 -50q-2 -12 -13 -12q-15 0 -15 10 q0 2 3 22.5l7 49t6 46.5q2 6 8 6q9 0 14.5 -1.5t4.5 -6.5l-1 -9q-1 -8 0 -9t9 -1h266q19 0 19 -8q0 -3 -8 -16l-215 -322q-13 -19 -13 -24q0 -4 10 -4l194 7q9 0 11 1.5t3 11.5l3 60q1 9 4.5 11.5t15.5 1.5q9 -1 9 -9q0 -23 -5 -96q-1 -11 -3 -13t-13 -2h-315q-22 0 -22 10z " />
+<glyph horiz-adv-x="413" d="M106 597q0 2 5 2h12q1 0 8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM30 10q0 4 10 20l228 327l4 6t3.5 5.5t1.5 3.5q0 4 -14 4l-165 -5h-9t-6.5 -0.5t-4 -0.5 t-3 -2t-1 -4.5l-1.5 -7.5l-7 -50q-2 -12 -13 -12q-15 0 -15 10q0 2 3 22.5l7 49t6 46.5q2 6 8 6q9 0 14.5 -1.5t4.5 -6.5l-1 -9q-1 -8 0 -9t9 -1h266q19 0 19 -8q0 -3 -8 -16l-215 -322q-13 -19 -13 -24q0 -4 10 -4l194 7q9 0 11 1.5t3 11.5l3 60q1 9 4.5 11.5t15.5 1.5 q9 -1 9 -9q0 -23 -5 -96q-1 -11 -3 -13t-13 -2h-315q-22 0 -22 10z" />
+<glyph horiz-adv-x="413" d="M165 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM30 10q0 4 10 20l228 327l4 6t3.5 5.5t1.5 3.5q0 4 -14 4l-165 -5h-9t-6.5 -0.5t-4 -0.5t-3 -2t-1 -4.5l-1.5 -7.5l-7 -50q-2 -12 -13 -12q-15 0 -15 10q0 2 3 22.5 l7 49t6 46.5q2 6 8 6q9 0 14.5 -1.5t4.5 -6.5l-1 -9q-1 -8 0 -9t9 -1h266q19 0 19 -8q0 -3 -8 -16l-215 -322q-13 -19 -13 -24q0 -4 10 -4l194 7q9 0 11 1.5t3 11.5l3 60q1 9 4.5 11.5t15.5 1.5q9 -1 9 -9q0 -23 -5 -96q-1 -11 -3 -13t-13 -2h-315q-22 0 -22 10z" />
+<glyph horiz-adv-x="283" d="M86 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74v-189 q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="475" d="M30 91q0 27 19.5 54t33 37l36.5 26q9 6 7 8l-5 5q-36 35 -36 81q0 45 32 76.5t78 31.5q36 0 64 -22.5t28 -55.5q0 -13 -4 -24.5t-9.5 -19.5t-15 -17t-15.5 -13t-17.5 -11t-13.5 -9q-9 -6 -9 -7t9 -10q46 -38 96 -91l8 -8q1 0 8 11q34 55 34 70q0 5 -4 5h-38q-8 0 -10.5 3 t-2.5 10q0 14 14 14q1 0 22.5 -1t42.5 -1q15 0 34 1t23 1q7 0 9 -2.5t2 -11.5q0 -13 -12 -13h-34q-1 0 -68 -90l-6 -10q0 -2 7 -11q27 -38 36 -53q11 -19 39 -19h22q9 0 9 -13q0 -12 -7 -12q-20 0 -40.5 -3t-33.5 -6t-16 -3q-9 0 -13 7q-13 23 -37 56q-1 1 -2 3q-3 4 -6 1 l-2 -2q-22 -25 -61 -47.5t-77 -22.5q-53 0 -85.5 30t-32.5 78zM90 117q0 -34 26.5 -62t67.5 -28q27 0 47.5 8t26.5 14l18 18q3 3 3 5t-3 6q-3 3 -4 5q-28 39 -111 107q-10 8 -12 8q-3 0 -17 -10q-42 -30 -42 -71zM131 325q0 -38 37 -69q12 -10 14 -10q6 0 26 15q32 24 32 65 q0 23 -14 39t-37 16q-28 0 -43 -15.5t-15 -40.5z" />
+<glyph horiz-adv-x="574" d="M263 -153q0 21 22 41.5t30 20.5q10 0 29.5 -11.5t28.5 -11.5q18 0 24 16t6 51q0 44 -1.5 138t-1.5 140v72q0 73 -2 73h-77q-13 0 -13 15q0 12 13 12l45 -1q44 -1 70 -1q30 0 66.5 1t37.5 1q9 0 9 -13q0 -14 -10 -14h-57q-5 0 -5 -74v-217q0 -44 -2.5 -71.5t-17.5 -66.5 t-44 -70q-48 -52 -99 -52q-17 0 -34 6.5t-17 15.5zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74v-189q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1 t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="502" d="M25 8q0 17 8 17h59q4 0 6 161q0 6 -4 6h-63q-2 0 -2.5 12t2.5 12h61q7 0 7 9v151h-60q-8 0 -8 14q0 13 8 13h6q6 0 16 -0.5t22 -1t26 -0.5h27q23 0 58 1.5t45 1.5q102 0 162.5 -54t60.5 -156q0 -95 -63 -145.5t-150 -50.5q-19 0 -59 1t-59 1q-17 0 -39.5 -0.5t-39 -1 t-18.5 -0.5q-9 0 -9 10zM172 63q0 -35 3 -38q4 -2 35 -2q50 0 85.5 16t53.5 43.5t25.5 55.5t7.5 60q0 80 -43 131.5t-136 51.5q-17 0 -25 -1q-6 0 -6 -70v-85q0 -7 1 -8t8 -1h101q3 0 3 -12t-3 -12h-101q-9 0 -9 -6v-123z" />
+<glyph horiz-adv-x="502" d="M25 8q0 17 8 17h59q4 0 6 161q0 6 -4 6h-63q-2 0 -2.5 12t2.5 12h61q7 0 7 9v151h-60q-8 0 -8 14q0 13 8 13h6q6 0 16 -0.5t22 -1t26 -0.5h27q23 0 58 1.5t45 1.5q102 0 162.5 -54t60.5 -156q0 -95 -63 -145.5t-150 -50.5q-19 0 -59 1t-59 1q-17 0 -39.5 -0.5t-39 -1 t-18.5 -0.5q-9 0 -9 10zM172 63q0 -35 3 -38q4 -2 35 -2q50 0 85.5 16t53.5 43.5t25.5 55.5t7.5 60q0 80 -43 131.5t-136 51.5q-17 0 -25 -1q-6 0 -6 -70v-85q0 -7 1 -8t8 -1h101q3 0 3 -12t-3 -12h-101q-9 0 -9 -6v-123z" />
+<glyph horiz-adv-x="574" d="M263 -153q0 21 22 41.5t30 20.5q10 0 29.5 -11.5t28.5 -11.5q18 0 24 16t6 51q0 44 -1.5 138t-1.5 140v72q0 73 -2 73h-77q-13 0 -13 15q0 12 13 12l45 -1q44 -1 70 -1q30 0 66.5 1t37.5 1q9 0 9 -13q0 -14 -10 -14h-57q-5 0 -5 -74v-217q0 -44 -2.5 -71.5t-17.5 -66.5 t-44 -70q-48 -52 -99 -52q-17 0 -34 6.5t-17 15.5zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74v-189q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1 t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="257" d="M20 645q0 2 2 16q1 6 2 6.5t8 1.5q120 9 123 9q5 0 6 -2.5t1 -12.5q1 -160 3.5 -332t2.5 -267q0 -39 8 -39h39q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -35.5 1t-43.5 1q-12 0 -44.5 -1t-48.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h52q4 0 4 85 q0 395 -11 517q-7 18 -11 19q-3 0 -24.5 -2t-23.5 -2q-8 0 -8 3z" />
+<glyph horiz-adv-x="445" d="M25 13q0 12 9 12h60q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l36 -1q36 -1 62 -1q30 0 73.5 1t44.5 1q9 0 9 -14q0 -13 -11 -13h-70q-6 0 -6 -74v-189q0 -83 8 -83q98 0 186 8q12 1 16.5 5t5.5 18l7 57q1 9 15 7t14 -9q0 -3 -1.5 -16.5l-4.5 -39.5l-6 -52 q-1 -11 -19 -11q-11 0 -126 1.5t-131 1.5q-36 0 -72 -1l-37 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="592" d="M40 15q0 9 2.5 10.5t14.5 1.5h62q9 0 9 292v231q0 89 -7 89h-58q-10 0 -13 2.5t-3 12.5t3.5 12.5t16.5 2.5q6 0 49.5 -1.5t60.5 -1.5q16 0 61.5 1.5t56.5 1.5q12 0 14.5 -2t2.5 -13q0 -9 -3 -12t-15 -3h-70q-9 0 -9 -215v-277q0 -116 8 -116q227 0 293 6q13 1 17 4t6 19 l12 84q2 8 11 8q20 0 20 -10q0 -3 -4.5 -30l-9.5 -60t-7 -44q-1 -11 -22 -11q-11 0 -179.5 1.5t-184.5 1.5t-63.5 -1.5t-58.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph horiz-adv-x="445" d="M25 13q0 12 9 12h60q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l36 -1q36 -1 62 -1q30 0 73.5 1t44.5 1q9 0 9 -14q0 -13 -11 -13h-70q-6 0 -6 -74v-189q0 -83 8 -83q98 0 186 8q12 1 16.5 5t5.5 18l7 57q1 9 15 7t14 -9q0 -3 -1.5 -16.5l-4.5 -39.5l-6 -52 q-1 -11 -19 -11q-11 0 -126 1.5t-131 1.5q-36 0 -72 -1l-37 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="463" d="M176 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 388q0 14 10 14q2 0 44 -0.5t59 -0.5q18 0 58 1t50 1q31 0 54 -3t49 -12t40 -30t14 -53q0 -23 -10.5 -41.5t-25.5 -28.5t-30.5 -16.5t-26 -9t-10.5 -3.5l12 -3 q13 -3 31.5 -9t36.5 -16.5t30.5 -30.5t12.5 -46q0 -102 -177 -102q-14 0 -54 0.5t-55 0.5q-19 0 -42.5 -0.5t-39.5 -1t-17 -0.5q-9 0 -9 12q0 15 9 15h61q6 0 6 54v158q0 139 -8 139h-61q-11 0 -11 12zM178 129q0 -104 8 -104h47q60 0 88.5 23t28.5 56q0 89 -120 89h-45 q-7 0 -7 -7v-57zM178 220q0 -6 10 -6h50q6 0 18 -0.5t13 -0.5q29 0 45.5 24.5t16.5 59.5q0 41 -30 63t-79 22q-32 0 -41 -2q-3 -2 -3 -66v-94z" />
+<glyph horiz-adv-x="502" d="M188 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 8q0 17 8 17h59q7 0 7 316v35h-60q-8 0 -8 14q0 13 8 13h6q6 0 16 -0.5t22 -1t26 -0.5h27q23 0 58 1.5t45 1.5q102 0 162.5 -54t60.5 -156q0 -95 -63 -145.5 t-150 -50.5q-19 0 -59 1t-59 1q-17 0 -39.5 -0.5t-39 -1t-18.5 -0.5q-9 0 -9 10zM172 63q0 -35 3 -38q4 -2 35 -2q50 0 85.5 16t53.5 43.5t25.5 55.5t7.5 60q0 80 -43 131.5t-136 51.5q-17 0 -25 -1q-6 0 -6 -70v-247z" />
+<glyph horiz-adv-x="444" d="M189 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 389q0 15 9 15q1 0 17.5 -1t41 -1.5t44.5 -0.5q176 0 202 1q30 1 35.5 2.5t6.5 7.5q0 3 0.5 6t0.5 4.5t0.5 3.5t1.5 2.5t3 1t5 0.5q17 0 17 -6q0 -2 -1.5 -41 t-1.5 -67q0 -5 -16 -5q-12 0 -12 9q0 1 0.5 24t0.5 25q0 7 -118 7h-82q-4 0 -4 -65q0 -69 1 -84v-6t1 -3.5t3 -1.5h6h27q143 0 143 7v38q0 4 12 4q13 0 13 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28t0.5 -30q0 -6 -13 -6q-12 0 -12 7v41q0 7 -101 7h-69q-7 0 -8.5 -2t-1.5 -9 q0 -159 4 -159h77q7 0 7 -15q0 -12 -7 -12t-57 1t-59 1t-50 -1t-48 -1q-8 0 -8 13q0 14 10 14h53q5 0 5 117v96q0 138 -9 138h-57q-12 0 -12 13z" />
+<glyph horiz-adv-x="567" d="M234 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 13q0 12 9 12h60q4 0 4 144v62q0 145 -4 145h-55q-13 0 -13 15q0 7 2 9.5t10 2.5l34 -1q34 -1 60 -1q19 0 62 1t46 1q9 0 9 -13q0 -14 -12 -14h-59q-4 0 -4 -74v-74 q0 -7 1.5 -9t7.5 -2h208q7 0 8 1t1 8v68q0 82 -6 82h-57q-10 0 -10 16q0 11 10 11q3 0 16.5 -0.5t34.5 -1t43 -0.5q24 0 47 0.5t36.5 1t14.5 0.5q7 0 7 -13q0 -14 -10 -14h-49q-1 0 -1 -138q0 -213 3 -213h57q6 0 6 -15q0 -12 -6 -12l-33 1q-33 1 -67 1q-33 0 -68 -1t-36 -1 q-8 0 -8 13q0 14 9 14h63q4 0 4 88v73q0 7 -0.5 8t-4.5 1h-213h-4t-2.5 -1t-1.5 -3v-6q0 -160 7 -160h59q7 0 7 -12q0 -15 -7 -15l-35 1q-35 1 -69 1q-31 0 -66.5 -1t-36.5 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="705" d="M300 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 13q0 12 9 12h62q3 0 6.5 87.5t5.5 175.5l1 88h-70q-13 0 -13 15q0 12 13 12l36 -1q36 -1 62 -1h59q7 0 10 -6q150 -301 155 -301q2 0 15.5 26.5t32 68l36 80.5 l33.5 75.5t18 41.5q5 11 6.5 13t7.5 2h51q30 0 62.5 1t33.5 1q9 0 9 -13q0 -14 -12 -14h-53q-5 0 -5 -74q0 -277 10 -277h67q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15q0 12 9 12h62q5 0 5 120q0 225 -7 225q-5 0 -140 -303 q-6 -14 -15.5 -29.5t-16.5 -29.5q-5 -8 -10 -8q-7 0 -13 10l-167 327q-12 24 -15 24q-4 0 -4 -29q0 -307 11 -307h69q7 0 7 -12q0 -15 -7 -15q-1 0 -31 1t-63 1q-36 0 -62 -1l-26 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="446" d="M178 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 388q0 14 10 14q2 0 45 -0.5t60 -0.5q18 0 58 1t50 1q168 0 168 -113q0 -118 -172 -118q-14 0 -34.5 1t-23.5 1q-7 0 -7 -7v-38q0 -104 9 -104h74q7 0 7 -12 q0 -15 -7 -15l-42 1q-42 1 -76 1q-19 0 -43.5 -0.5t-42 -1t-18.5 -0.5q-9 0 -9 12q0 15 9 15h61q6 0 6 54v158q0 139 -8 139h-63q-11 0 -11 12zM179 200q0 -9 10 -9q76 0 115.5 19.5t39.5 69.5q0 47 -32 72.5t-88 25.5q-33 0 -42 -2q-3 -2 -3 -62v-114z" />
+<glyph horiz-adv-x="369" d="M127 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM40 292q0 53 39 87t96 34q46 0 99 -24q1 0 5.5 -2.5t6 -1.5t1.5 7l1 9q0 7 12 7q17 0 17 -8q0 -2 -1.5 -21t-3 -44.5t-1.5 -43.5q0 -7 -10 -7h-3q-14 0 -14 7q0 1 1 20 t1 22q0 6 -14.5 19t-41 25t-52.5 12t-51 -18.5t-25 -50.5q0 -29 24.5 -48t59.5 -30t69.5 -24t59 -40.5t24.5 -69.5q0 -63 -45.5 -91.5t-117.5 -28.5q-29 0 -59.5 6t-48 12.5t-18.5 9.5q-4 92 -4 106q0 3 14 5q10 1 12 -0.5t2 -8.5v-4l3 -49q1 -17 40 -32t77 -15q86 0 86 68 q0 25 -24.5 41.5t-60 27.5t-71 24.5t-60 42t-24.5 70.5z" />
+<glyph horiz-adv-x="464" d="M183 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM20 307q0 11 13 111q0 3 11 3q12 0 12 -4v-14q0 -2 24 -2h275q62 0 63 5q1 3 1.5 10t0.5 11q0 3 12 3q11 0 11 -7l1 -107q0 -7 -14 -7q-11 0 -11 9v54q0 4 -65 4h-73 q-9 0 -9 -101v-184q0 -66 10 -66h69q7 0 7 -12q0 -15 -7 -15q-1 0 -41 1t-74 1q-36 0 -74 -1l-39 -1q-8 0 -8 15q0 12 9 12h65q4 0 6 84l3 210q0 57 -5 57h-45q-95 0 -96 -10l-7 -60q-1 -4 -13 -4t-12 5z" />
+<glyph horiz-adv-x="463" d="M176 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 388q0 14 10 14q2 0 44 -0.5t59 -0.5q18 0 58 1t50 1q31 0 54 -3t49 -12t40 -30t14 -53q0 -23 -10.5 -41.5t-25.5 -28.5t-30.5 -16.5t-26 -9t-10.5 -3.5l12 -3 q13 -3 31.5 -9t36.5 -16.5t30.5 -30.5t12.5 -46q0 -102 -177 -102q-14 0 -54 0.5t-55 0.5q-19 0 -42.5 -0.5t-39.5 -1t-17 -0.5q-9 0 -9 12q0 15 9 15h61q6 0 6 54v158q0 139 -8 139h-61q-11 0 -11 12zM178 129q0 -104 8 -104h47q60 0 88.5 23t28.5 56q0 89 -120 89h-45 q-7 0 -7 -7v-57zM178 220q0 -6 10 -6h50q6 0 18 -0.5t13 -0.5q29 0 45.5 24.5t16.5 59.5q0 41 -30 63t-79 22q-32 0 -41 -2q-3 -2 -3 -66v-94z" />
+<glyph horiz-adv-x="502" d="M188 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 8q0 17 8 17h59q7 0 7 316v35h-60q-8 0 -8 14q0 13 8 13h6q6 0 16 -0.5t22 -1t26 -0.5h27q23 0 58 1.5t45 1.5q102 0 162.5 -54t60.5 -156q0 -95 -63 -145.5 t-150 -50.5q-19 0 -59 1t-59 1q-17 0 -39.5 -0.5t-39 -1t-18.5 -0.5q-9 0 -9 10zM172 63q0 -35 3 -38q4 -2 35 -2q50 0 85.5 16t53.5 43.5t25.5 55.5t7.5 60q0 80 -43 131.5t-136 51.5q-17 0 -25 -1q-6 0 -6 -70v-247z" />
+<glyph horiz-adv-x="444" d="M189 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 389q0 15 9 15q1 0 17.5 -1t41 -1.5t44.5 -0.5q176 0 202 1q30 1 35.5 2.5t6.5 7.5q0 3 0.5 6t0.5 4.5t0.5 3.5t1.5 2.5t3 1t5 0.5q17 0 17 -6q0 -2 -1.5 -41 t-1.5 -67q0 -5 -16 -5q-12 0 -12 9q0 1 0.5 24t0.5 25q0 7 -118 7h-82q-4 0 -4 -65q0 -69 1 -84v-6t1 -3.5t3 -1.5h6h27q143 0 143 7v38q0 4 12 4q13 0 13 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28t0.5 -30q0 -6 -13 -6q-12 0 -12 7v41q0 7 -101 7h-69q-7 0 -8.5 -2t-1.5 -9 q0 -159 4 -159h77q7 0 7 -15q0 -12 -7 -12t-57 1t-59 1t-50 -1t-48 -1q-8 0 -8 13q0 14 10 14h53q5 0 5 117v96q0 138 -9 138h-57q-12 0 -12 13z" />
+<glyph horiz-adv-x="567" d="M234 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 13q0 12 9 12h60q4 0 4 144v62q0 145 -4 145h-55q-13 0 -13 15q0 7 2 9.5t10 2.5l34 -1q34 -1 60 -1q19 0 62 1t46 1q9 0 9 -13q0 -14 -12 -14h-59q-4 0 -4 -74v-74 q0 -7 1.5 -9t7.5 -2h208q7 0 8 1t1 8v68q0 82 -6 82h-57q-10 0 -10 16q0 11 10 11q3 0 16.5 -0.5t34.5 -1t43 -0.5q24 0 47 0.5t36.5 1t14.5 0.5q7 0 7 -13q0 -14 -10 -14h-49q-1 0 -1 -138q0 -213 3 -213h57q6 0 6 -15q0 -12 -6 -12l-33 1q-33 1 -67 1q-33 0 -68 -1t-36 -1 q-8 0 -8 13q0 14 9 14h63q4 0 4 88v73q0 7 -0.5 8t-4.5 1h-213h-4t-2.5 -1t-1.5 -3v-6q0 -160 7 -160h59q7 0 7 -12q0 -15 -7 -15l-35 1q-35 1 -69 1q-31 0 -66.5 -1t-36.5 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="705" d="M300 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 13q0 12 9 12h62q3 0 6.5 87.5t5.5 175.5l1 88h-70q-13 0 -13 15q0 12 13 12l36 -1q36 -1 62 -1h59q7 0 10 -6q150 -301 155 -301q2 0 15.5 26.5t32 68l36 80.5 l33.5 75.5t18 41.5q5 11 6.5 13t7.5 2h51q30 0 62.5 1t33.5 1q9 0 9 -13q0 -14 -12 -14h-53q-5 0 -5 -74q0 -277 10 -277h67q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15q0 12 9 12h62q5 0 5 120q0 225 -7 225q-5 0 -140 -303 q-6 -14 -15.5 -29.5t-16.5 -29.5q-5 -8 -10 -8q-7 0 -13 10l-167 327q-12 24 -15 24q-4 0 -4 -29q0 -307 11 -307h69q7 0 7 -12q0 -15 -7 -15q-1 0 -31 1t-63 1q-36 0 -62 -1l-26 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="446" d="M178 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 388q0 14 10 14q2 0 45 -0.5t60 -0.5q18 0 58 1t50 1q168 0 168 -113q0 -118 -172 -118q-14 0 -34.5 1t-23.5 1q-7 0 -7 -7v-38q0 -104 9 -104h74q7 0 7 -12 q0 -15 -7 -15l-42 1q-42 1 -76 1q-19 0 -43.5 -0.5t-42 -1t-18.5 -0.5q-9 0 -9 12q0 15 9 15h61q6 0 6 54v158q0 139 -8 139h-63q-11 0 -11 12zM179 200q0 -9 10 -9q76 0 115.5 19.5t39.5 69.5q0 47 -32 72.5t-88 25.5q-33 0 -42 -2q-3 -2 -3 -62v-114z" />
+<glyph horiz-adv-x="369" d="M127 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM40 292q0 53 39 87t96 34q46 0 99 -24q1 0 5.5 -2.5t6 -1.5t1.5 7l1 9q0 7 12 7q17 0 17 -8q0 -2 -1.5 -21t-3 -44.5t-1.5 -43.5q0 -7 -10 -7h-3q-14 0 -14 7q0 1 1 20 t1 22q0 6 -14.5 19t-41 25t-52.5 12t-51 -18.5t-25 -50.5q0 -29 24.5 -48t59.5 -30t69.5 -24t59 -40.5t24.5 -69.5q0 -63 -45.5 -91.5t-117.5 -28.5q-29 0 -59.5 6t-48 12.5t-18.5 9.5q-4 92 -4 106q0 3 14 5q10 1 12 -0.5t2 -8.5v-4l3 -49q1 -17 40 -32t77 -15q86 0 86 68 q0 25 -24.5 41.5t-60 27.5t-71 24.5t-60 42t-24.5 70.5z" />
+<glyph horiz-adv-x="464" d="M183 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM20 307q0 11 13 111q0 3 11 3q12 0 12 -4v-14q0 -2 24 -2h275q62 0 63 5q1 3 1.5 10t0.5 11q0 3 12 3q11 0 11 -7l1 -107q0 -7 -14 -7q-11 0 -11 9v54q0 4 -65 4h-73 q-9 0 -9 -101v-184q0 -66 10 -66h69q7 0 7 -12q0 -15 -7 -15q-1 0 -41 1t-74 1q-36 0 -74 -1l-39 -1q-8 0 -8 15q0 12 9 12h65q4 0 6 84l3 210q0 57 -5 57h-45q-95 0 -96 -10l-7 -60q-1 -4 -13 -4t-12 5z" />
+<glyph horiz-adv-x="686" d="M5 11q0 14 11 14h31q4 0 23 23.5t53.5 72.5l57.5 82l65 95l46 68q5 6 4.5 8t-9.5 2h-50q-10 0 -10 13q0 14 5 14l24 -1q25 0 58 -0.5t54 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58 q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5 h17q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5t-100.5 1t-139 0.5q-27 0 -68 -1t-43 -1q-8 0 -8 12q0 15 11 15h62q5 0 5 36v97h-138q-8 0 -19 -18q-62 -102 -63 -115h63q8 0 8 -12q0 -15 -12 -15q-7 0 -40.5 1t-44.5 1 t-37 -1t-33 -1q-10 0 -10 13zM202 182q0 -3 7 -3h122v135q0 60 -3 60l-1 -2q-1 -1 -2.5 -3t-2.5 -4q-10 -16 -42 -63.5l-55 -82t-23 -37.5z" />
+<glyph horiz-adv-x="701" d="M30 190q0 93 60.5 158t175.5 65q13 0 55 -6t62 -6q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5 t-0.5 -28.5t0.5 -28.5t0.5 -29.5q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t42.5 0.5h16q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7 q-1 0 -36.5 0.5t-100.5 1t-139 0.5q-7 0 -53.5 -6t-84.5 -6q-103 0 -161 57.5t-58 144.5zM113 210q0 -96 39.5 -148t113.5 -52q61 0 80 14v290l-3 56q-19 19 -80 19q-67 0 -108.5 -50t-41.5 -129z" />
+<glyph horiz-adv-x="445" d="M25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -51q0 -5 1 -6.5t6 -1.5q42 2 62 2q168 0 168 -113q0 -118 -172 -118q-14 0 -34.5 1t-23.5 1q-7 0 -7 -6 q2 -59 8 -59h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15zM178 116q0 -9 10 -9q76 0 115.5 19.5t39.5 69.5q0 47 -32 72.5t-88 25.5q-27 0 -38 -1q-5 -1 -6 -2t-1 -7v-168z" />
+<glyph horiz-adv-x="686" d="M5 11q0 14 11 14h31q4 0 23 23.5t53.5 72.5l57.5 82l65 95l46 68q5 6 4.5 8t-9.5 2h-50q-10 0 -10 13q0 14 5 14l24 -1q25 0 58 -0.5t54 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58 q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5 h17q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5t-100.5 1t-139 0.5q-27 0 -68 -1t-43 -1q-8 0 -8 12q0 15 11 15h62q5 0 5 36v97h-138q-8 0 -19 -18q-62 -102 -63 -115h63q8 0 8 -12q0 -15 -12 -15q-7 0 -40.5 1t-44.5 1 t-37 -1t-33 -1q-10 0 -10 13zM202 182q0 -3 7 -3h122v135q0 60 -3 60l-1 -2q-1 -1 -2.5 -3t-2.5 -4q-10 -16 -42 -63.5l-55 -82t-23 -37.5z" />
+<glyph horiz-adv-x="701" d="M30 190q0 93 60.5 158t175.5 65q13 0 55 -6t62 -6q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5 t-0.5 -28.5t0.5 -28.5t0.5 -29.5q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t42.5 0.5h16q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7 q-1 0 -36.5 0.5t-100.5 1t-139 0.5q-7 0 -53.5 -6t-84.5 -6q-103 0 -161 57.5t-58 144.5zM113 210q0 -96 39.5 -148t113.5 -52q61 0 80 14v290l-3 56q-19 19 -80 19q-67 0 -108.5 -50t-41.5 -129z" />
+<glyph horiz-adv-x="445" d="M25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -51q0 -5 1 -6.5t6 -1.5q42 2 62 2q168 0 168 -113q0 -118 -172 -118q-14 0 -34.5 1t-23.5 1q-7 0 -7 -6 q2 -59 8 -59h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15zM178 116q0 -9 10 -9q76 0 115.5 19.5t39.5 69.5q0 47 -32 72.5t-88 25.5q-27 0 -38 -1q-5 -1 -6 -2t-1 -7v-168z" />
+<glyph horiz-adv-x="258" d="M25 291q0 12 6 25.5t12 14.5t91.5 4t91.5 3q2 0 2 -9q0 -33 -8 -33q-104 -8 -191 -8q-4 0 -4 3z" />
+<glyph horiz-adv-x="258" d="M25 291q0 12 6 25.5t12 14.5t91.5 4t91.5 3q2 0 2 -9q0 -33 -8 -33q-104 -8 -191 -8q-4 0 -4 3z" />
+<glyph horiz-adv-x="258" d="M25 291q0 12 6 25.5t12 14.5t91.5 4t91.5 3q2 0 2 -9q0 -33 -8 -33q-104 -8 -191 -8q-4 0 -4 3z" />
+<glyph horiz-adv-x="258" d="M25 291q0 12 6 25.5t12 14.5t91.5 4t91.5 3q2 0 2 -9q0 -33 -8 -33q-104 -8 -191 -8q-4 0 -4 3z" />
+<glyph d="M10 295q0 12 2 14.5t11 2.5h451q11 0 13.5 -2t2.5 -10v-12q0 -9 -2.5 -11t-13.5 -2h-444q-15 0 -17.5 2.5t-2.5 17.5z" />
+<glyph horiz-adv-x="750" d="M10 295q0 12 2 14.5t11 2.5h701q11 0 13.5 -2t2.5 -10v-12q0 -9 -2.5 -11t-13.5 -2h-694q-15 0 -17.5 2.5t-2.5 17.5z" />
+<glyph horiz-adv-x="750" d="M10 295q0 12 2 14.5t11 2.5h701q11 0 13.5 -2t2.5 -10v-12q0 -9 -2.5 -11t-13.5 -2h-694q-15 0 -17.5 2.5t-2.5 17.5z" />
+<glyph horiz-adv-x="408" d="M50 318q0 4 55 55l36 34.5l31 30.5l12 11q2 0 8 -5.5t6 -6.5q0 -3 -31 -58t-31 -61t31 -61t31 -58q0 -1 -6 -6.5t-8 -5.5l-12 11l-31 30.5l-36 34.5q-55 51 -55 55zM200 318q0 4 55 55l36 34.5l31 30.5l12 11q2 0 8 -5.5t6 -6.5q0 -3 -31 -58t-31 -61t31 -61t31 -58 q0 -1 -6 -6.5t-8 -5.5l-12 11l-31 30.5l-36 34.5q-55 51 -55 55z" />
+<glyph horiz-adv-x="408" d="M60 199q0 3 31 58t31 61t-31 61t-31 58q0 1 6 6.5t8 5.5l12 -11l31 -30.5l36 -34.5q55 -51 55 -55t-55 -55l-36 -34.5l-31 -30.5l-12 -11q-2 0 -8 5.5t-6 6.5zM210 199q0 3 31 58t31 61t-31 61t-31 58q0 1 6 6.5t8 5.5l12 -11l31 -30.5l36 -34.5q55 -51 55 -55t-55 -55 l-36 -34.5l-31 -30.5l-12 -11q-2 0 -8 5.5t-6 6.5z" />
+<glyph horiz-adv-x="258" d="M50 318q0 4 55 55l36 34.5l31 30.5l12 11q2 0 8 -5.5t6 -6.5q0 -3 -31 -58t-31 -61t31 -61t31 -58q0 -1 -6 -6.5t-8 -5.5l-12 11l-31 30.5l-36 34.5q-55 51 -55 55z" />
+<glyph horiz-adv-x="258" d="M60 199q0 3 31 58t31 61t-31 61t-31 58q0 1 6 6.5t8 5.5l12 -11l31 -30.5l36 -34.5q55 -51 55 -55t-55 -55l-36 -34.5l-31 -30.5l-12 -11q-2 0 -8 5.5t-6 6.5z" />
+<glyph horiz-adv-x="279" d="M40 315q0 73 19 142t45 114.5t53.5 80.5t45.5 51t20 16q6 0 11 -4t5 -9l-8 -8q-8 -9 -20.5 -25.5t-27.5 -39t-30 -54.5t-27.5 -68.5t-20.5 -84.5t-8 -99q0 -79 14 -150t34.5 -117.5t41 -80.5t34.5 -53t14 -22q0 -14 -16 -14q-4 0 -22.5 21.5t-45 62.5t-51.5 91.5 t-42.5 117.5t-17.5 132z" />
+<glyph horiz-adv-x="279" d="M40 -97l8 9q8 8 20.5 24.5t27.5 39t30 54.5t27.5 68.5t20.5 84.5t8 99q0 79 -14 150t-34.5 117.5t-41 80.5t-34.5 53t-14 22q0 14 16 14q4 0 22.5 -21.5t45 -62.5t51.5 -91.5t42.5 -117.5t17.5 -132q0 -73 -19 -142t-45 -114.5t-53.5 -80.5t-45.5 -51t-20 -16q-6 0 -11 4 t-5 9z" />
+<glyph horiz-adv-x="296" d="M80 -96v801q0 9 2 12t10 3h151q9 0 11 -1.5t2 -7.5v-14q0 -9 -2 -11t-11 -2h-105q-9 0 -11 -2t-2 -10v-735q0 -12 13 -12h105q6 0 8.5 -0.5t3.5 -3t1 -9.5v-12q0 -6 -2 -8.5t-11 -2.5h-150q-9 0 -11 2.5t-2 12.5z" />
+<glyph horiz-adv-x="296" d="M40 -88q0 9 2 11t11 2h105q9 0 11 2t2 10v735v6t-1.5 3.5t-4 2t-7.5 0.5h-105q-6 0 -8.5 0.5t-3.5 3t-1 9.5v12q0 7 2 9t11 2h150q9 0 11 -2.5t2 -12.5v-801q0 -9 -2 -12t-10 -3h-151q-9 0 -11 1.5t-2 7.5v14z" />
+<glyph horiz-adv-x="307" d="M40 304q0 6 5.5 9t14.5 4t18.5 7.5t18.5 18t14.5 38t5.5 65.5v80q0 36 0.5 53.5t3 42.5t8 36.5t15 26t24.5 20t36.5 10t50.5 4.5q8 0 10 -2t2 -11t-2.5 -11t-11.5 -2q-43 0 -63.5 -19t-20.5 -73v-149q0 -72 -9.5 -100t-48.5 -41q-15 -6 -15 -7t15 -7q39 -13 48.5 -41 t9.5 -100v-149q0 -54 20.5 -73t63.5 -19q6 0 8.5 -0.5t4 -3.5t1.5 -9q0 -9 -2 -11t-10 -2q-29 0 -50.5 4.5t-36.5 10t-24.5 20t-15 26t-8 36.5t-3 42.5t-0.5 53.5v80q0 39 -5.5 65.5t-14.5 38t-18.5 18t-18.5 7.5t-14.5 4t-5.5 9z" />
+<glyph horiz-adv-x="307" d="M40 -98q0 9 3 11t11 2q43 0 63.5 19t20.5 73v149q0 72 9.5 100t48.5 41q15 6 15 7t-15 7q-39 13 -48.5 41t-9.5 100v149q0 54 -20.5 73t-63.5 19q-6 0 -8.5 0.5t-4 3.5t-1.5 9q0 9 2 11t10 2q29 0 50.5 -4.5t36.5 -10t24.5 -20t15 -26t8 -36.5t3 -42.5t0.5 -53.5v-80 q0 -39 5.5 -65.5t14.5 -38t18.5 -18t18.5 -7.5t14.5 -4t5.5 -9t-5.5 -9t-14.5 -4t-18.5 -7.5t-18.5 -18t-14.5 -38t-5.5 -65.5v-80q0 -36 -0.5 -53.5t-3 -42.5t-8 -36.5t-15 -26t-24.5 -20t-36.5 -10t-50.5 -4.5q-8 0 -10 2t-2 11z" />
+<glyph horiz-adv-x="360" d="M28 201q0 97 46.5 153.5t106.5 56.5q67 0 109 -55t42 -150q0 -90 -41 -153.5t-112 -63.5q-68 0 -109.5 59t-41.5 153zM84 198q0 -89 28.5 -135.5t68.5 -46.5q50 0 74.5 59.5t24.5 131.5q0 64 -25.5 119.5t-73.5 55.5q-49 0 -73 -49t-24 -135z" />
+<glyph horiz-adv-x="360" d="M95 14q0 7 2.5 8.5t11.5 1.5h60q1 9 1 50v75q0 181 -2 217q-1 8 -5 8q-1 0 -29.5 -1.5t-30.5 -1.5q-8 0 -8 6v12q0 6 11 6q28 1 49.5 3l33 3t18.5 2.5t10 2t4 0.5q7 0 7 -14q0 -65 -0.5 -176.5t-0.5 -169.5q0 -21 1 -22h44q7 0 7 -10q0 -16 -8 -16q-1 0 -23.5 1t-47.5 1 q-27 0 -58 -1t-36 -1q-7 0 -9 3t-2 13z" />
+<glyph horiz-adv-x="360" d="M40 321q0 7 16.5 28t49 41.5t67.5 20.5q57 0 86.5 -37.5t29.5 -79.5q0 -102 -160 -219q-18 -14 -24 -25h185q3 10 7 52q0 6 10 5q11 0 11 -5q0 -2 -2.5 -20l-6 -41.5t-4.5 -34.5q-1 -6 -12 -6h-230q-13 0 -13 9q0 5 20 36.5t24 34.5q1 1 16.5 14t21.5 18.5l22 21t24.5 26 t20.5 27.5t18.5 31t11.5 32.5t5 35.5q0 33 -19.5 58t-54.5 25q-29 0 -53.5 -15.5t-38.5 -30.5t-15 -15q-4 0 -8.5 4.5t-4.5 8.5z" />
+<glyph horiz-adv-x="360" d="M65 18q0 29 32 29q11 0 29 -7q5 -2 24.5 -13t29.5 -11q32 0 56 26t24 64q0 79 -74 79q-12 0 -41.5 -2t-31.5 -2q-13 0 -13 21q0 10 17 13q63 13 87.5 33t24.5 64q0 32 -17.5 49t-45.5 17q-23 0 -42 -8t-29 -16.5t-13 -8.5q-4 0 -8.5 4.5t-4.5 8.5q0 6 13.5 18t39.5 23.5 t53 11.5q48 0 79.5 -25.5t31.5 -63.5q0 -22 -9 -39t-26.5 -29.5t-32.5 -20t-38 -16.5q58 0 96.5 -25.5t38.5 -71.5q0 -55 -47 -91.5t-103 -36.5q-34 0 -67 6.5t-33 19.5z" />
+<glyph horiz-adv-x="360" d="M35 138q0 20 11 39q44 77 149 190q7 8 27 22q6 5 13 12.5t10.5 10t7.5 2.5q13 0 13 -22v-212q0 -5 1 -6t6 -1h51q7 0 7 -10v-22q0 -10 -12 -10h-46q-6 0 -6 -6v-123q0 -8 -6 -8l-43 -4q-6 0 -6 8l3 125q0 8 -10 8h-153q-17 0 -17 7zM73 173h131q7 0 9 1.5t2 6.5v173 q-19 -19 -73 -86t-69 -95z" />
+<glyph horiz-adv-x="360" d="M70 -1q0 7 11 9q165 13 165 112q0 55 -35.5 73t-102.5 18q-3 0 -9 -1t-10 -1q-13 0 -13 11q0 38 17 167q1 10 14 10h5q5 0 13.5 -0.5t20 -1t26 -1l30 -1t34 -0.5h35.5q2 10 3 16q1 7 11 7h4q9 0 9 -8q0 -1 -0.5 -9.5t-1.5 -21.5t-1 -19q-1 -8 -4.5 -11t-15.5 -3 q-74 0 -161 5q-9 -72 -9 -84q0 -8 4 -8h23q36 0 63.5 -5t53.5 -17.5t39.5 -38t13.5 -62.5q0 -73 -68.5 -112t-155.5 -39q-8 0 -8 16z" />
+<glyph horiz-adv-x="360" d="M40 141q0 54 22.5 101.5t53.5 77.5t65 51.5t56.5 31t27.5 9.5q9 0 9 -16q0 -3 -14 -9q-67 -36 -99 -73.5t-55 -97.5q49 17 82 17q59 0 96.5 -33t37.5 -88q0 -57 -39.5 -93t-97.5 -36q-64 0 -104.5 39.5t-40.5 118.5zM96 144q0 -139 97 -139q34 0 54.5 29.5t20.5 68.5 q0 104 -96 104q-14 0 -41 -5.5t-30 -11.5q-1 0 -3 -20.5t-2 -25.5z" />
+<glyph horiz-adv-x="360" d="M65 297q0 1 1 18t2 43t1 49q0 8 14 8q12 0 12 -14v-2q22 -2 111 -2h114q16 0 16 -10q0 -6 -3 -12l-69.5 -126t-51.5 -108.5t-48 -131.5q-4 -17 -7.5 -21t-9.5 -4q-14 0 -27 6t-13 12q0 31 69 162q40 76 110 185h-139q-46 0 -56 -4l-2 -46q0 -8 -9 -8q-15 0 -15 6z" />
+<glyph horiz-adv-x="360" d="M50 89q0 38 29.5 69.5t59.5 41.5q-2 1 -14 8.5t-16 10.5l-14.5 10.5t-14.5 14l-10 16t-8.5 21.5t-2.5 25q0 44 34.5 74.5t81.5 30.5q46 0 82.5 -25.5t36.5 -68.5q0 -28 -13 -49.5t-26 -31t-32 -20.5l-6 -3q2 -1 23.5 -15.5t33 -24t24 -30.5t12.5 -44q0 -48 -40 -81.5 t-97 -33.5q-55 0 -89 26.5t-34 78.5zM98 96q0 -39 22.5 -64.5t57.5 -25.5q36 0 55 25.5t19 59.5q0 18 -7.5 33.5t-25 28.5t-28 19.5t-33.5 18.5q-19 -13 -28 -20.5t-20.5 -28t-11.5 -46.5zM111 314q0 -14 5 -26t16.5 -22t19.5 -16t24.5 -15.5t20.5 -11.5q20 9 35.5 33 t15.5 54q0 36 -20.5 57t-46.5 21q-28 0 -49 -20.5t-21 -53.5z" />
+<glyph horiz-adv-x="360" d="M45 277q0 57 40.5 95.5t91.5 38.5q60 0 101.5 -47t41.5 -125q0 -47 -13 -86.5t-32.5 -64.5t-45 -44.5t-49 -29t-46.5 -16t-35 -8t-17 -1.5q-7 0 -7 16q0 8 23 11q58 8 109.5 53.5t54.5 118.5q-43 -29 -101 -29q-51 0 -83.5 33.5t-32.5 84.5zM98 285q0 -40 23.5 -68 t66.5 -28q18 0 36.5 6.5t28.5 12.5l10 6q0 6 0.5 17t0.5 16q-2 143 -85 143q-38 0 -59.5 -31t-21.5 -74z" />
+<glyph horiz-adv-x="360" d="M28 451q0 97 46.5 153.5t106.5 56.5q67 0 109 -55t42 -150q0 -90 -41 -153.5t-112 -63.5q-68 0 -109.5 59t-41.5 153zM84 448q0 -89 28.5 -135.5t68.5 -46.5q50 0 74.5 59.5t24.5 131.5q0 64 -25.5 119.5t-73.5 55.5q-49 0 -73 -49t-24 -135z" />
+<glyph horiz-adv-x="360" d="M95 264q0 7 2.5 8.5t11.5 1.5h60q1 9 1 50v75q0 181 -2 217q-1 8 -5 8q-1 0 -29.5 -1.5t-30.5 -1.5q-8 0 -8 6v12q0 6 11 6q28 1 49.5 3l33 3t18.5 2.5t10 2t4 0.5q7 0 7 -14q0 -65 -0.5 -176.5t-0.5 -169.5q0 -21 1 -22h44q7 0 7 -10q0 -16 -8 -16q-1 0 -23.5 1t-47.5 1 q-27 0 -58 -1t-36 -1q-7 0 -9 3t-2 13z" />
+<glyph horiz-adv-x="360" d="M40 571q0 7 16.5 28t49 41.5t67.5 20.5q57 0 86.5 -37.5t29.5 -79.5q0 -102 -160 -219q-18 -14 -24 -25h185q3 10 7 52q0 6 10 5q11 0 11 -5q0 -2 -2.5 -20l-6 -41.5t-4.5 -34.5q-1 -6 -12 -6h-230q-13 0 -13 9q0 5 20 36.5t24 34.5q1 1 16.5 14t21.5 18.5l22 21t24.5 26 t20.5 27.5t18.5 31t11.5 32.5t5 35.5q0 33 -19.5 58t-54.5 25q-29 0 -53.5 -15.5t-38.5 -30.5t-15 -15q-4 0 -8.5 4.5t-4.5 8.5z" />
+<glyph horiz-adv-x="360" d="M65 268q0 29 32 29q11 0 29 -7q5 -2 24.5 -13t29.5 -11q32 0 56 26t24 64q0 79 -74 79q-12 0 -41.5 -2t-31.5 -2q-13 0 -13 21q0 10 17 13q63 13 87.5 33t24.5 64q0 32 -17.5 49t-45.5 17q-23 0 -42 -8t-29 -16.5t-13 -8.5q-4 0 -8.5 4.5t-4.5 8.5q0 6 13.5 18t39.5 23.5 t53 11.5q48 0 79.5 -25.5t31.5 -63.5q0 -22 -9 -39t-26.5 -29.5t-32.5 -20t-38 -16.5q58 0 96.5 -25.5t38.5 -71.5q0 -55 -47 -91.5t-103 -36.5q-34 0 -67 6.5t-33 19.5z" />
+<glyph horiz-adv-x="360" d="M35 388q0 20 11 39q44 77 149 190q7 8 27 22q6 5 13 12.5t10.5 10t7.5 2.5q13 0 13 -22v-212q0 -5 1 -6t6 -1h51q7 0 7 -10v-22q0 -10 -12 -10h-46q-6 0 -6 -6v-123q0 -8 -6 -8l-43 -4q-6 0 -6 8l3 125q0 8 -10 8h-153q-17 0 -17 7zM73 423h131q7 0 9 1.5t2 6.5v173 q-19 -19 -73 -86t-69 -95z" />
+<glyph horiz-adv-x="360" d="M70 249q0 7 11 9q165 13 165 112q0 55 -35.5 73t-102.5 18q-3 0 -9 -1t-10 -1q-13 0 -13 11q0 38 17 167q1 10 14 10h5q5 0 13.5 -0.5t20 -1t26 -1l30 -1t34 -0.5h35.5q2 10 3 16q1 7 11 7h4q9 0 9 -8q0 -1 -0.5 -9.5t-1.5 -21.5t-1 -19q-1 -8 -4.5 -11t-15.5 -3 q-74 0 -161 5q-9 -72 -9 -84q0 -8 4 -8h23q36 0 63.5 -5t53.5 -17.5t39.5 -38t13.5 -62.5q0 -73 -68.5 -112t-155.5 -39q-8 0 -8 16z" />
+<glyph horiz-adv-x="360" d="M40 391q0 54 22.5 101.5t53.5 77.5t65 51.5t56.5 31t27.5 9.5q9 0 9 -16q0 -3 -14 -9q-67 -36 -99 -73.5t-55 -97.5q49 17 82 17q59 0 96.5 -33t37.5 -88q0 -57 -39.5 -93t-97.5 -36q-64 0 -104.5 39.5t-40.5 118.5zM96 394q0 -139 97 -139q34 0 54.5 29.5t20.5 68.5 q0 104 -96 104q-14 0 -41 -5.5t-30 -11.5q-1 0 -3 -20.5t-2 -25.5z" />
+<glyph horiz-adv-x="360" d="M65 547q0 1 1 18t2 43t1 49q0 8 14 8q12 0 12 -14v-2q22 -2 111 -2h114q16 0 16 -10q0 -6 -3 -12l-69.5 -126t-51.5 -108.5t-48 -131.5q-4 -17 -7.5 -21t-9.5 -4q-14 0 -27 6t-13 12q0 31 69 162q40 76 110 185h-139q-46 0 -56 -4l-2 -46q0 -8 -9 -8q-15 0 -15 6z" />
+<glyph horiz-adv-x="360" d="M50 339q0 38 29.5 69.5t59.5 41.5q-2 1 -14 8.5t-16 10.5l-14.5 10.5t-14.5 14l-10 16t-8.5 21.5t-2.5 25q0 44 34.5 74.5t81.5 30.5q46 0 82.5 -25.5t36.5 -68.5q0 -28 -13 -49.5t-26 -31t-32 -20.5l-6 -3q2 -1 23.5 -15.5t33 -24t24 -30.5t12.5 -44q0 -48 -40 -81.5 t-97 -33.5q-55 0 -89 26.5t-34 78.5zM98 346q0 -39 22.5 -64.5t57.5 -25.5q36 0 55 25.5t19 59.5q0 18 -7.5 33.5t-25 28.5t-28 19.5t-33.5 18.5q-19 -13 -28 -20.5t-20.5 -28t-11.5 -46.5zM111 564q0 -14 5 -26t16.5 -22t19.5 -16t24.5 -15.5t20.5 -11.5q20 9 35.5 33 t15.5 54q0 36 -20.5 57t-46.5 21q-28 0 -49 -20.5t-21 -53.5z" />
+<glyph horiz-adv-x="360" d="M45 527q0 57 40.5 95.5t91.5 38.5q60 0 101.5 -47t41.5 -125q0 -47 -13 -86.5t-32.5 -64.5t-45 -44.5t-49 -29t-46.5 -16t-35 -8t-17 -1.5q-7 0 -7 16q0 8 23 11q58 8 109.5 53.5t54.5 118.5q-43 -29 -101 -29q-51 0 -83.5 33.5t-32.5 84.5zM98 535q0 -40 23.5 -68 t66.5 -28q18 0 36.5 6.5t28.5 12.5l10 6q0 6 0.5 17t0.5 16q-2 143 -85 143q-38 0 -59.5 -31t-21.5 -74z" />
+<glyph horiz-adv-x="360" d="M28 51q0 97 46.5 153.5t106.5 56.5q67 0 109 -55t42 -150q0 -90 -41 -153.5t-112 -63.5q-68 0 -109.5 59t-41.5 153zM84 48q0 -89 28.5 -135.5t68.5 -46.5q50 0 74.5 59.5t24.5 131.5q0 64 -25.5 119.5t-73.5 55.5q-49 0 -73 -49t-24 -135z" />
+<glyph horiz-adv-x="360" d="M95 -136q0 7 2.5 8.5t11.5 1.5h60q1 9 1 50v75q0 181 -2 217q-1 8 -5 8q-1 0 -29.5 -1.5t-30.5 -1.5q-8 0 -8 6v12q0 6 11 6q28 1 49.5 3l33 3t18.5 2.5t10 2t4 0.5q7 0 7 -14q0 -65 -0.5 -176.5t-0.5 -169.5q0 -21 1 -22h44q7 0 7 -10q0 -16 -8 -16q-1 0 -23.5 1 t-47.5 1q-27 0 -58 -1t-36 -1q-7 0 -9 3t-2 13z" />
+<glyph horiz-adv-x="360" d="M40 171q0 7 16.5 28t49 41.5t67.5 20.5q57 0 86.5 -37.5t29.5 -79.5q0 -102 -160 -219q-18 -14 -24 -25h185q3 10 7 52q0 6 10 5q11 0 11 -5q0 -2 -2.5 -20l-6 -41.5t-4.5 -34.5q-1 -6 -12 -6h-230q-13 0 -13 9q0 5 20 36.5t24 34.5q1 1 16.5 14t21.5 18.5l22 21t24.5 26 t20.5 27.5t18.5 31t11.5 32.5t5 35.5q0 33 -19.5 58t-54.5 25q-29 0 -53.5 -15.5t-38.5 -30.5t-15 -15q-4 0 -8.5 4.5t-4.5 8.5z" />
+<glyph horiz-adv-x="360" d="M65 -132q0 29 32 29q11 0 29 -7q5 -2 24.5 -13t29.5 -11q32 0 56 26t24 64q0 79 -74 79q-12 0 -41.5 -2t-31.5 -2q-13 0 -13 21q0 10 17 13q63 13 87.5 33t24.5 64q0 32 -17.5 49t-45.5 17q-23 0 -42 -8t-29 -16.5t-13 -8.5q-4 0 -8.5 4.5t-4.5 8.5q0 6 13.5 18 t39.5 23.5t53 11.5q48 0 79.5 -25.5t31.5 -63.5q0 -22 -9 -39t-26.5 -29.5t-32.5 -20t-38 -16.5q58 0 96.5 -25.5t38.5 -71.5q0 -55 -47 -91.5t-103 -36.5q-34 0 -67 6.5t-33 19.5z" />
+<glyph horiz-adv-x="360" d="M35 -12q0 20 11 39q44 77 149 190q7 8 27 22q6 5 13 12.5t10.5 10t7.5 2.5q13 0 13 -22v-212q0 -5 1 -6t6 -1h51q7 0 7 -10v-22q0 -10 -12 -10h-46q-6 0 -6 -6v-123q0 -8 -6 -8l-43 -4q-6 0 -6 8l3 125q0 8 -10 8h-153q-17 0 -17 7zM73 23h131q7 0 9 1.5t2 6.5v173 q-19 -19 -73 -86t-69 -95z" />
+<glyph horiz-adv-x="360" d="M70 -151q0 7 11 9q165 13 165 112q0 55 -35.5 73t-102.5 18q-3 0 -9 -1t-10 -1q-13 0 -13 11q0 38 17 167q1 10 14 10h5q5 0 13.5 -0.5t20 -1t26 -1l30 -1t34 -0.5h35.5q2 10 3 16q1 7 11 7h4q9 0 9 -8q0 -1 -0.5 -9.5t-1.5 -21.5t-1 -19q-1 -8 -4.5 -11t-15.5 -3 q-74 0 -161 5q-9 -72 -9 -84q0 -8 4 -8h23q36 0 63.5 -5t53.5 -17.5t39.5 -38t13.5 -62.5q0 -73 -68.5 -112t-155.5 -39q-8 0 -8 16z" />
+<glyph horiz-adv-x="360" d="M40 -9q0 54 22.5 101.5t53.5 77.5t65 51.5t56.5 31t27.5 9.5q9 0 9 -16q0 -3 -14 -9q-67 -36 -99 -73.5t-55 -97.5q49 17 82 17q59 0 96.5 -33t37.5 -88q0 -57 -39.5 -93t-97.5 -36q-64 0 -104.5 39.5t-40.5 118.5zM96 -6q0 -139 97 -139q34 0 54.5 29.5t20.5 68.5 q0 104 -96 104q-14 0 -41 -5.5t-30 -11.5q-1 0 -3 -20.5t-2 -25.5z" />
+<glyph horiz-adv-x="360" d="M65 147q0 1 1 18t2 43t1 49q0 8 14 8q12 0 12 -14v-2q22 -2 111 -2h114q16 0 16 -10q0 -6 -3 -12l-69.5 -126t-51.5 -108.5t-48 -131.5q-4 -17 -7.5 -21t-9.5 -4q-14 0 -27 6t-13 12q0 31 69 162q40 76 110 185h-139q-46 0 -56 -4l-2 -46q0 -8 -9 -8q-15 0 -15 6z" />
+<glyph horiz-adv-x="360" d="M50 -61q0 38 29.5 69.5t59.5 41.5q-2 1 -14 8.5t-16 10.5l-14.5 10.5t-14.5 14l-10 16t-8.5 21.5t-2.5 25q0 44 34.5 74.5t81.5 30.5q46 0 82.5 -25.5t36.5 -68.5q0 -28 -13 -49.5t-26 -31t-32 -20.5l-6 -3q2 -1 23.5 -15.5t33 -24t24 -30.5t12.5 -44q0 -48 -40 -81.5 t-97 -33.5q-55 0 -89 26.5t-34 78.5zM98 -54q0 -39 22.5 -64.5t57.5 -25.5q36 0 55 25.5t19 59.5q0 18 -7.5 33.5t-25 28.5t-28 19.5t-33.5 18.5q-19 -13 -28 -20.5t-20.5 -28t-11.5 -46.5zM111 164q0 -14 5 -26t16.5 -22t19.5 -16t24.5 -15.5t20.5 -11.5q20 9 35.5 33 t15.5 54q0 36 -20.5 57t-46.5 21q-28 0 -49 -20.5t-21 -53.5z" />
+<glyph horiz-adv-x="360" d="M45 127q0 57 40.5 95.5t91.5 38.5q60 0 101.5 -47t41.5 -125q0 -47 -13 -86.5t-32.5 -64.5t-45 -44.5t-49 -29t-46.5 -16t-35 -8t-17 -1.5q-7 0 -7 16q0 8 23 11q58 8 109.5 53.5t54.5 118.5q-43 -29 -101 -29q-51 0 -83.5 33.5t-32.5 84.5zM98 135q0 -40 23.5 -68 t66.5 -28q18 0 36.5 6.5t28.5 12.5l10 6q0 6 0.5 17t0.5 16q-2 143 -85 143q-38 0 -59.5 -31t-21.5 -74z" />
+<glyph horiz-adv-x="360" d="M28 551q0 97 46.5 153.5t106.5 56.5q67 0 109 -55t42 -150q0 -90 -41 -153.5t-112 -63.5q-68 0 -109.5 59t-41.5 153zM84 548q0 -89 28.5 -135.5t68.5 -46.5q50 0 74.5 59.5t24.5 131.5q0 64 -25.5 119.5t-73.5 55.5q-49 0 -73 -49t-24 -135z" />
+<glyph horiz-adv-x="360" d="M95 364q0 7 2.5 8.5t11.5 1.5h60q1 9 1 50v75q0 181 -2 217q-1 8 -5 8q-1 0 -29.5 -1.5t-30.5 -1.5q-8 0 -8 6v12q0 6 11 6q28 1 49.5 3l33 3t18.5 2.5t10 2t4 0.5q7 0 7 -14q0 -65 -0.5 -176.5t-0.5 -169.5q0 -21 1 -22h44q7 0 7 -10q0 -16 -8 -16q-1 0 -23.5 1t-47.5 1 q-27 0 -58 -1t-36 -1q-7 0 -9 3t-2 13z" />
+<glyph horiz-adv-x="360" d="M40 671q0 7 16.5 28t49 41.5t67.5 20.5q57 0 86.5 -37.5t29.5 -79.5q0 -102 -160 -219q-18 -14 -24 -25h185q3 10 7 52q0 6 10 5q11 0 11 -5q0 -2 -2.5 -20l-6 -41.5t-4.5 -34.5q-1 -6 -12 -6h-230q-13 0 -13 9q0 5 20 36.5t24 34.5q1 1 16.5 14t21.5 18.5l22 21t24.5 26 t20.5 27.5t18.5 31t11.5 32.5t5 35.5q0 33 -19.5 58t-54.5 25q-29 0 -53.5 -15.5t-38.5 -30.5t-15 -15q-4 0 -8.5 4.5t-4.5 8.5z" />
+<glyph horiz-adv-x="360" d="M65 368q0 29 32 29q11 0 29 -7q5 -2 24.5 -13t29.5 -11q32 0 56 26t24 64q0 79 -74 79q-12 0 -41.5 -2t-31.5 -2q-13 0 -13 21q0 10 17 13q63 13 87.5 33t24.5 64q0 32 -17.5 49t-45.5 17q-23 0 -42 -8t-29 -16.5t-13 -8.5q-4 0 -8.5 4.5t-4.5 8.5q0 6 13.5 18t39.5 23.5 t53 11.5q48 0 79.5 -25.5t31.5 -63.5q0 -22 -9 -39t-26.5 -29.5t-32.5 -20t-38 -16.5q58 0 96.5 -25.5t38.5 -71.5q0 -55 -47 -91.5t-103 -36.5q-34 0 -67 6.5t-33 19.5z" />
+<glyph horiz-adv-x="360" d="M35 488q0 20 11 39q44 77 149 190q7 8 27 22q6 5 13 12.5t10.5 10t7.5 2.5q13 0 13 -22v-212q0 -5 1 -6t6 -1h51q7 0 7 -10v-22q0 -10 -12 -10h-46q-6 0 -6 -6v-123q0 -8 -6 -8l-43 -4q-6 0 -6 8l3 125q0 8 -10 8h-153q-17 0 -17 7zM73 523h131q7 0 9 1.5t2 6.5v173 q-19 -19 -73 -86t-69 -95z" />
+<glyph horiz-adv-x="360" d="M70 349q0 7 11 9q165 13 165 112q0 55 -35.5 73t-102.5 18q-3 0 -9 -1t-10 -1q-13 0 -13 11q0 38 17 167q1 10 14 10h5q5 0 13.5 -0.5t20 -1t26 -1l30 -1t34 -0.5h35.5q2 10 3 16q1 7 11 7h4q9 0 9 -8q0 -1 -0.5 -9.5t-1.5 -21.5t-1 -19q-1 -8 -4.5 -11t-15.5 -3 q-74 0 -161 5q-9 -72 -9 -84q0 -8 4 -8h23q36 0 63.5 -5t53.5 -17.5t39.5 -38t13.5 -62.5q0 -73 -68.5 -112t-155.5 -39q-8 0 -8 16z" />
+<glyph horiz-adv-x="360" d="M40 491q0 54 22.5 101.5t53.5 77.5t65 51.5t56.5 31t27.5 9.5q9 0 9 -16q0 -3 -14 -9q-67 -36 -99 -73.5t-55 -97.5q49 17 82 17q59 0 96.5 -33t37.5 -88q0 -57 -39.5 -93t-97.5 -36q-64 0 -104.5 39.5t-40.5 118.5zM96 494q0 -139 97 -139q34 0 54.5 29.5t20.5 68.5 q0 104 -96 104q-14 0 -41 -5.5t-30 -11.5q-1 0 -3 -20.5t-2 -25.5z" />
+<glyph horiz-adv-x="360" d="M65 647q0 1 1 18t2 43t1 49q0 8 14 8q12 0 12 -14v-2q22 -2 111 -2h114q16 0 16 -10q0 -6 -3 -12l-69.5 -126t-51.5 -108.5t-48 -131.5q-4 -17 -7.5 -21t-9.5 -4q-14 0 -27 6t-13 12q0 31 69 162q40 76 110 185h-139q-46 0 -56 -4l-2 -46q0 -8 -9 -8q-15 0 -15 6z" />
+<glyph horiz-adv-x="360" d="M50 439q0 38 29.5 69.5t59.5 41.5q-2 1 -14 8.5t-16 10.5l-14.5 10.5t-14.5 14l-10 16t-8.5 21.5t-2.5 25q0 44 34.5 74.5t81.5 30.5q46 0 82.5 -25.5t36.5 -68.5q0 -28 -13 -49.5t-26 -31t-32 -20.5l-6 -3q2 -1 23.5 -15.5t33 -24t24 -30.5t12.5 -44q0 -48 -40 -81.5 t-97 -33.5q-55 0 -89 26.5t-34 78.5zM98 446q0 -39 22.5 -64.5t57.5 -25.5q36 0 55 25.5t19 59.5q0 18 -7.5 33.5t-25 28.5t-28 19.5t-33.5 18.5q-19 -13 -28 -20.5t-20.5 -28t-11.5 -46.5zM111 664q0 -14 5 -26t16.5 -22t19.5 -16t24.5 -15.5t20.5 -11.5q20 9 35.5 33 t15.5 54q0 36 -20.5 57t-46.5 21q-28 0 -49 -20.5t-21 -53.5z" />
+<glyph horiz-adv-x="360" d="M45 627q0 57 40.5 95.5t91.5 38.5q60 0 101.5 -47t41.5 -125q0 -47 -13 -86.5t-32.5 -64.5t-45 -44.5t-49 -29t-46.5 -16t-35 -8t-17 -1.5q-7 0 -7 16q0 8 23 11q58 8 109.5 53.5t54.5 118.5q-43 -29 -101 -29q-51 0 -83.5 33.5t-32.5 84.5zM98 635q0 -40 23.5 -68 t66.5 -28q18 0 36.5 6.5t28.5 12.5l10 6q0 6 0.5 17t0.5 16q-2 143 -85 143q-38 0 -59.5 -31t-21.5 -74z" />
+<glyph horiz-adv-x="352" d="M35 57q0 49 55 78.5t132 42.5q6 1 6 12q0 27 -1.5 41.5t-7.5 32.5t-21 26.5t-39 8.5q-13 0 -24 -4q-16 -6 -20.5 -16.5t-5.5 -35.5q0 -13 -6 -17q-33 -21 -47 -21q-8 0 -8 12q0 46 41.5 75.5t87.5 29.5q60 0 85 -26.5t25 -77.5q0 -23 -2.5 -90t-2.5 -73q0 -24 18 -24 q2 0 16 9.5t15 9.5q2 0 6 -4.5t4 -8.5t-54 -43q-13 -9 -22 -9q-13 0 -21 12.5t-10 24.5l-3 13q-1 0 -3.5 -2t-6.5 -4.5l-7 -4.5q-56 -36 -96 -36q-39 0 -61 18.5t-22 50.5zM98 81q0 -21 14.5 -37.5t38.5 -16.5q16 0 35 4.5t30.5 10t11.5 7.5v104q0 9 -4 9q-11 0 -50 -12 q-76 -24 -76 -69z" />
+<glyph horiz-adv-x="414" d="M10 509q0 19 4 19l47.5 5.5l50 6t22.5 2.5q6 0 6 -12q-3 -150 -3 -216q0 -31 1 -31l6 3q5 3 14 6.5l19.5 7.5t24 7t24.5 3q69 0 113.5 -46t44.5 -113q0 -75 -54.5 -118.5t-130.5 -43.5q-16 0 -40 8.5t-35 8.5q-10 0 -24 -8t-17 -8q-10 0 -10 10q0 1 1.5 29.5t2.5 66.5 t1 61q0 64 -4 208t-10 144q-2 0 -25 -2.5t-24 -2.5q-5 0 -5 5zM135 53q0 -40 67 -40q54 0 85.5 40.5t31.5 96.5q0 53 -38 93.5t-90 40.5q-12 0 -25.5 -4t-21 -9t-7.5 -7q0 -47 -1 -126t-1 -85z" />
+<glyph horiz-adv-x="350" d="M30 142q0 84 52.5 132t119.5 48q41 0 76.5 -24t35.5 -54q0 -10 -9 -16q-15 -11 -27 -11q-11 0 -15 9q-2 5 -6 17l-6 18t-7 14.5t-10.5 12.5t-15 7t-21.5 3q-48 0 -78 -41.5t-30 -92.5q0 -54 33.5 -93.5t92.5 -39.5q25 0 48 6t36 12t15 6q6 0 6 -7q0 -4 -14.5 -17 t-47.5 -26.5t-70 -13.5q-73 0 -115.5 41t-42.5 110z" />
+<glyph horiz-adv-x="424" d="M29 147q0 68 48.5 114.5t119.5 46.5q14 0 27.5 -2.5t23 -6l17.5 -6.5l13 -5l4 -3q5 0 5 15q0 37 -1.5 89t-3.5 87.5t-3 35.5t-25 -3.5t-28 -3.5q-6 0 -4 13q2 11 7 12l48 7l44 6.5t19 2.5q6 0 7.5 -2.5t1.5 -15.5q0 -5 -1.5 -49.5t-3 -132.5t-1.5 -197q0 -38 2 -96 q1 -24 4.5 -31.5t13.5 -7.5q3 0 27 4q9 2 9 -8t-1.5 -13t-9.5 -4l-98 -13q-5 0 -5 8q0 1 0.5 15.5t0.5 16.5q0 8 -1.5 8.5t-10.5 -4.5q-52 -35 -99 -35q-62 0 -104 38.5t-42 119.5zM95 153q0 -58 31 -94.5t92 -36.5q19 0 44 8t25 18v201q0 10 -24.5 25.5t-52.5 15.5 q-51 0 -83 -41t-32 -96z" />
+<glyph horiz-adv-x="366" d="M30 146q0 74 48 123.5t124 49.5q59 0 92 -37.5t33 -92.5q0 -9 -44 -9q-5 0 -93.5 2t-91.5 2q-4 0 -4 -28q0 -60 36.5 -94.5t86.5 -34.5q18 0 35.5 5.5t29.5 12.5t21.5 14.5t14.5 12.5l5 6q1 0 7 -6t6 -7q0 -4 -17.5 -22t-53.5 -37t-74 -19q-76 0 -118.5 43.5t-42.5 115.5 zM98 206q0 -6 10 -6q45 0 125 4q32 1 32 3q0 50 -23 71t-50 21q-37 0 -64.5 -30.5t-29.5 -62.5z" />
+<glyph horiz-adv-x="296" d="M45 11q0 12 10 12h32q3 0 3 49q0 16 -0.5 40t-0.5 26v47v56q0 33 -1 33h-27q-7 0 -9 2t-2 10t1.5 10t7.5 2h22q5 0 6.5 1.5t1.5 8.5q0 19 -1 37.5t-1 40.5q0 70 31.5 114t101.5 44q27 0 49 -15.5t22 -39.5q0 -13 -16 -25.5t-27 -12.5t-12 7q-7 48 -17 58q-7 8 -20 8 q-47 0 -47 -131q0 -13 -2 -81q0 -10 2.5 -12t14.5 -2h96q6 0 6 -5q0 -4 -2.5 -11t-4.5 -7h-95q-9 0 -11.5 -1.5t-2.5 -7.5v-130q0 -113 8 -113h53q10 0 10 -12q-4 -12 -10 -13q-7 0 -41.5 1t-47.5 1q-10 0 -33 -1t-36 -1q-8 0 -9.5 2.5t-1.5 10.5z" />
+<glyph horiz-adv-x="399" d="M30 -140q0 36 37.5 59t79.5 31q20 4 20 5t-18 1h-47q-27 0 -34 15q-8 17 -8 39q0 25 16 29l35.5 9.5l39.5 10.5q6 2 12 3q4 0 3.5 0.5t-4.5 1.5t-7 2q-108 29 -108 131q0 52 45.5 86.5t103.5 34.5q27 0 51.5 -11t37.5 -23l13 -11q2 0 12.5 4t26 8.5t26.5 5.5q2 0 5 -9 t3 -17q0 -5 -3 -5q-53 -5 -53 -11q0 -1 3 -8.5t6 -20t3 -27.5q0 -88 -95 -122q-27 -10 -143 -41q-4 -2 -4 -7q0 -6 4 -12.5t7 -7.5q19 -1 57 -2t63.5 -1.5t58 -6t52 -15t33.5 -29t14 -47.5q0 -62 -51.5 -98.5t-134.5 -36.5q-60 0 -109 24.5t-49 68.5zM71 -134 q0 -35 36.5 -55.5t79.5 -20.5q55 0 95.5 21.5t40.5 68.5q0 31 -45 47t-99 16q-36 0 -72 -21t-36 -56zM105 200q0 -51 33 -87t55 -36q27 0 52.5 34t25.5 84q0 47 -21.5 73.5t-58.5 26.5q-35 0 -60.5 -28t-25.5 -67z" />
+<glyph horiz-adv-x="439" d="M25 510q0 14 4 15q15 2 47.5 6t54.5 7t24 3q4 0 4 -16q-8 -134 -8 -244q0 -10 1.5 -11t7.5 4q62 36 110 36q33 0 54.5 -12.5t31.5 -38t13.5 -51t3.5 -62.5v-114q0 -7 1.5 -8.5t7.5 -1.5h21q11 0 11 -12t-12 -12q-7 0 -26.5 1t-32.5 1q-10 0 -34.5 -1t-37.5 -1 q-8 0 -9.5 2t-1.5 10q0 12 11 12h31q6 0 6.5 1t1.5 8q2 32 2 138q0 46 -19.5 75t-57.5 29q-37 0 -71 -17q-13 -7 -13 -11l1 -118q0 -71 1 -91q1 -10 2 -12t7 -2h31q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -31.5 1t-38.5 1q-10 0 -34.5 -1t-37.5 -1q-8 0 -9.5 2t-1.5 10 q0 12 9 12h32q6 0 7 2t1 12q1 74 1 174q0 175 -7 282q-1 14 -5 14q-1 0 -24 -3t-25 -3q-3 0 -3 10z" />
+<glyph horiz-adv-x="220" d="M25 284q0 3 4 12q2 5 3.5 5.5t9.5 1.5q80 5 97 5q6 0 6 -5v-136q0 -90 3 -135q0 -10 8 -10h30q9 0 9 -12t-9 -12q-7 0 -34 1t-38 1t-40 -1t-36 -1q-6 0 -7.5 2t-1.5 10q0 7 1.5 9.5t9.5 2.5h34q7 0 8 1.5t1 7.5q1 23 1 70q0 110 -3 168q-1 9 -3 11t-8 2q-1 0 -20 -1 t-21 -1q-4 0 -4 4zM67 440q0 22 18 35.5t37 13.5q37 0 37 -36q0 -21 -17.5 -35.5t-37.5 -14.5q-15 0 -26 9.5t-11 27.5z" />
+<glyph horiz-adv-x="245" d="M5 -202q0 15 12 31.5t21 16.5q10 0 25.5 -2t18.5 -2q31 0 31 26q0 7 -2 44.5t-4 114t-2 179.5q0 38 -2 59q-1 11 -8 11q-3 0 -28.5 -1.5t-29.5 -1.5q-2 0 -2 4q0 7 3 14q11 8 13 8q19 0 45.5 1.5l44 2.5t18.5 1q6 0 6 -19q0 -16 2.5 -109.5t2.5 -153.5q0 -71 -9.5 -116 t-36.5 -79q-11 -13 -48 -30t-55 -17q-16 0 -16 18zM60 461q0 22 17.5 35.5t36.5 13.5q38 0 38 -36q0 -21 -17.5 -35.5t-37.5 -14.5q-15 0 -26 9.5t-11 27.5z" />
+<glyph horiz-adv-x="406" d="M25 518v8q0 12 9 13q85 8 111 8q7 0 7 -10l-9 -360q0 -6 2 -7.5t11 -1.5h17q9 0 24 17q36 48 61 89q6 7 5.5 10t-12.5 3h-14q-9 0 -9 12t11 12q3 0 20 -1t27 -1q8 0 24 1t22 1q10 0 10 -12t-9 -12h-26q-4 0 -37 -38.5l-49 -58.5l-2 -2q-7 -7 -4 -10q1 0 2 -2q4 -3 6 -5 l127 -139q9 -10 18 -10h8q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-5 0 -25 1t-32 1t-32.5 -1t-25.5 -1q-8 0 -9.5 2t-1.5 10q0 12 12 12h10q15 0 5 12l-97 106q-7 10 -9 11.5t-8 1.5h-11q-6 0 -7 -2.5t-1 -9.5v-105q0 -10 1.5 -12t7.5 -2h19q10 0 10 -12q0 -7 -1.5 -9.5 t-9.5 -2.5q-7 0 -25 1t-32 1q-16 0 -41 -1t-27 -1q-8 0 -9.5 2t-1.5 10q0 12 10 12h33q6 0 7 2t1 12v154q0 324 -8 324q-2 0 -21 -1.5t-23 -1.5q-8 0 -8 7z" />
+<glyph horiz-adv-x="223" d="M25 515q0 2 2 14q1 5 2 5.5t7 1.5q91 8 103 8q6 0 6 -12q1 -126 3 -263.5t2 -215.5q0 -31 7 -31h31q10 0 10 -12t-10 -12q-7 0 -30 1t-36 1q-10 0 -37.5 -1t-40.5 -1q-8 0 -9.5 2t-1.5 10q0 12 10 12h41q3 0 3 68q0 309 -10 410q0 3 -1 7q0 6 -1 7.5t-6 1.5q-2 0 -19 -2 t-18 -2q-7 0 -7 3z" />
+<glyph horiz-adv-x="620" d="M25 279q0 9 3 16q2 5 3 5.5t10 1.5q70 4 84 4q10 0 11.5 -1t1.5 -8v-26q0 -12 1 -13q1 0 7 5q64 49 116 49q18 0 31.5 -4.5t21 -11t12 -13.5t6.5 -11l2 -5q2 0 11 6q21 14 51 25.5t52 11.5q57 0 80 -30t23 -86q0 -37 -1 -93t-1 -71q0 -8 8 -8h25q12 0 12 -12t-12 -12 q-7 0 -29 1t-35 1q-10 0 -34 -1t-37 -1q-8 0 -9.5 2t-1.5 10q0 12 12 12h32q8 0 8 150q0 100 -72 100q-18 0 -37.5 -5.5t-30 -11.5t-10.5 -7t1.5 -7t3 -19.5t1.5 -34.5v-133q0 -32 2 -32h27q11 0 11 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -27.5 1t-33.5 1q-10 0 -29 -1t-32 -1 q-8 0 -10.5 2t-2.5 10q0 12 10 12h31q6 0 6 76v32t-0.5 29t-0.5 13q0 33 -2.5 51t-16 33.5t-39.5 15.5q-45 0 -80 -24q-8 -6 -8 -14v-178q0 -24 2 -29t13 -5h17q11 0 11 -12t-12 -12q-7 0 -29.5 1t-33.5 1t-38 -1t-32 -1q-10 0 -10 12t9 12h31q7 0 10 25q2 16 2 84v86 q0 62 -4 62q-1 0 -22.5 -1.5t-23.5 -1.5q-4 0 -4 3z" />
+<glyph horiz-adv-x="435" d="M25 279q0 6 4 14q2 5 3 5.5t10 1.5q4 0 40 2.5t49 3.5q10 1 10.5 0t0.5 -9v-37q0 -6 10 3l2 2l15 10.5t19.5 12.5l19.5 10t25 8.5t27 2.5q66 0 88 -36.5t22 -105.5q0 -26 -2.5 -79.5t-2.5 -55.5q0 -7 1.5 -8.5t7.5 -1.5h24q8 0 10 -2t2 -10q0 -12 -10 -12q-7 0 -28.5 1 t-34.5 1q-10 0 -34 -1t-37 -1q-9 0 -10.5 2t-1.5 10t2 10t8 2h29q6 0 7 1t2 8q4 38 4 138q0 102 -77 102q-25 0 -71 -23q-14 -6 -14 -18q0 -32 -0.5 -96.5t-0.5 -96.5q0 -7 0.5 -9.5t2.5 -4t7 -1.5h29q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -30.5 1t-36.5 1 q-10 0 -35.5 -1t-38.5 -1q-8 0 -9 2t-1 10q0 12 9 12h31q6 0 6.5 2t1.5 12q5 78 5 153q0 55 -2 79q-1 10 -2 10.5t-8 0.5q-1 0 -21.5 -2t-22.5 -2t-2 4z" />
+<glyph horiz-adv-x="384" d="M30 147q0 73 48 122.5t124 49.5q67 0 109.5 -46.5t42.5 -114.5q0 -76 -44 -123.5t-121 -47.5q-67 0 -113 47t-46 113zM94 136q0 -49 25.5 -87.5t69.5 -38.5q99 0 99 154q0 52 -24.5 92t-71.5 40q-98 0 -98 -160z" />
+<glyph horiz-adv-x="432" d="M25 280q0 4 2.5 12t4.5 8q25 1 52.5 2t43 2t16.5 1q4 0 6 -0.5t3 -3t1 -8.5v-21q0 -9 1 -9t16 13q41 32 89 32q69 0 105.5 -42.5t36.5 -109.5q0 -65 -48 -114.5t-125 -49.5q-23 0 -55 10q-17 6 -18 4q-1 -1 -1 -4l2 -150q2 -53 5 -53h56q10 0 10 -12q-4 -12 -10 -13 q-7 0 -41.5 1t-47.5 1q-10 0 -39 -1t-42 -1q-8 0 -9.5 2.5t-1.5 10.5q0 12 10 12h45q3 0 3 127v112q0 151 -7 228q-1 8 -2.5 9.5t-10.5 1.5q-3 0 -20.5 -1t-19.5 -1q-10 0 -10 5zM155 42q0 -13 24 -23t45 -10q52 0 82.5 43.5t30.5 96.5q0 57 -30 92t-75 35q-31 0 -51 -10 q-26 -13 -26 -26v-198z" />
+<glyph horiz-adv-x="413" d="M30 145q0 70 49.5 115.5t124.5 45.5q27 0 60 -11.5t38 -11.5q8 0 17 14.5t15 14.5q13 0 13 -10q-4 -95 -4 -238v-132q0 -130 2 -130h33q10 0 10 -13q0 -8 -1.5 -10.5t-9.5 -2.5h-23q-20 0 -40.5 -1t-35.5 -2.5t-27 -3t-19 -2.5t-8 -1q-8 0 -10 2.5t-2 8.5q0 14 10 15 q8 1 17.5 2l14 1.5t9.5 1t6.5 2t4 3t2.5 5t0.5 7t0.5 10.5l2 177q0 7 -3 7q-4 0 -13 -3q-50 -15 -90 -15q-56 0 -99.5 38.5t-43.5 116.5zM94 153q0 -52 31.5 -94t83.5 -42q71 0 71 17v198q0 24 -22 37t-61 13q-50 0 -76.5 -38.5t-26.5 -90.5z" />
+<glyph horiz-adv-x="291" d="M30 280q0 6 2 11t3 5.5t10 1.5q36 3 86 3q10 0 10.5 -0.5t0.5 -7.5q0 -8 0.5 -26.5t0.5 -26.5v-15l8 21q13 33 34 52.5t40 19.5q16 0 31 -14t15 -23q0 -8 -10.5 -21.5t-19.5 -13.5t-24.5 12t-23.5 12q-45 0 -45 -159q0 -88 10 -88h49q11 0 11 -12q0 -13 -11 -13 q-7 0 -41 1t-47 1q-10 0 -34 -1t-37 -1q-8 0 -9 2t-1 11q0 12 9 12h34q8 0 8 107q0 148 -6 148q-1 0 -25 -1t-26 -1t-2 4z" />
+<glyph horiz-adv-x="276" d="M40 40q0 9 8 20t13 11q2 0 3.5 -2.5t4 -8t6.5 -10.5q29 -40 66 -40q20 0 33.5 13.5t13.5 38.5q0 26 -16.5 41.5t-46.5 30.5q-2 1 -13 6t-13.5 6.5l-12 7t-12.5 8l-10 8.5t-9.5 11l-6 12.5t-5 15.5t-1.5 17q0 39 32.5 65t74.5 26q38 0 58 -18.5t20 -36.5q0 -6 -10.5 -11 t-17.5 -5q-6 0 -10.5 13t-14 26t-29.5 13t-35.5 -13.5t-15.5 -42.5q0 -16 10 -29.5t19 -19t30 -16.5q57 -32 72 -50q16 -19 16 -43q0 -43 -31 -69t-75 -26q-35 0 -65 16t-30 35z" />
+<glyph horiz-adv-x="258" d="M40 272q0 3 3 6l78 105q5 5 8 5q9 0 9 -8q0 -1 -1.5 -16.5t-3 -33.5t-1.5 -24q0 -8 9 -8h76q9 0 10 -2t-2 -14q-3 -15 -11 -15h-79q-3 0 -3 -36v-149q0 -15 1.5 -23.5t11 -16.5t26.5 -8q14 0 28.5 3t24 6t11.5 3q3 0 3 -13q0 -2 -19 -12t-45 -19.5t-41 -9.5 q-33 0 -46.5 16.5t-13.5 38.5q2 114 2 171q0 48 -10 48h-20q-5 0 -5 6z" />
+<glyph horiz-adv-x="440" d="M25 287q0 3 3 10t13 8q76 4 93 4q6 0 6 -5v-217q0 -54 89 -54q73 0 73 13v93q0 147 -6 147q-1 0 -20.5 -1t-21.5 -1q-3 0 -3 3q2 16 5 17q2 2 6 2q64 4 96 4q6 0 6 -4q-1 -191 -1 -240q0 -30 2.5 -38.5t12.5 -8.5q1 0 16.5 2t16.5 2q4 0 4 -9t-1.5 -10.5t-10.5 -3.5 q-11 -2 -33 -5t-37 -5.5t-18 -2.5q-8 0 -9 11q-3 33 -4 33l-22 -11q-21 -10 -53.5 -20t-59.5 -10q-54 0 -72 28.5t-18 77.5v126v17q0 44 -9 44q-1 0 -19.5 -0.5t-20.5 -0.5q-3 0 -3 5z" />
+<glyph horiz-adv-x="378" d="M20 295q0 12 10 12q6 0 24 -1t30 -1q11 0 36.5 1t31.5 1q7 0 8.5 -2t1.5 -10q0 -12 -9 -12h-24q-15 0 -15 -6q0 -2 14 -41.5l33 -90.5l29 -76q7 -15 9 -15t7 13q76 180 76 203q0 13 -8 13h-21q-10 0 -10 12t12 12q2 0 20.5 -1t28.5 -1t24 1t20 1q7 0 8.5 -2t1.5 -10 q0 -12 -10 -12h-13q-6 0 -11 -8q-9 -15 -47 -105.5t-57 -129.5q-7 -14 -19.5 -28.5t-21.5 -27.5q-5 -6 -9 -6q-5 0 -9 8t-9 25.5t-6 19.5q-28 84 -90 240q-4 9 -6.5 10.5t-11.5 1.5h-8q-10 0 -10 12z" />
+<glyph horiz-adv-x="578" d="M20 295q0 12 10 12q7 0 24.5 -1t30.5 -1q11 0 37 1t33 1q8 0 9.5 -2t1.5 -10q0 -12 -9 -12h-18q-13 0 -13 -6q0 -2 12.5 -41.5l30 -91t27.5 -75.5q4 -13 6 -13t8 18q49 105 67 147q6 21 6 29q0 5 -4 17q-6 16 -28 16h-9q-10 0 -10 12q0 7 1.5 9.5t9.5 2.5q9 0 27 -1 t34 -1q11 0 30.5 1t29.5 1q8 0 9.5 -2t1.5 -10q0 -12 -10 -12h-17q-10 0 -10 -6q0 -2 11.5 -41.5l27.5 -91t26 -75.5q9 -19 10 -19q2 0 9 18q14 33 40.5 112.5t26.5 93.5q0 9 -10 9h-24q-11 0 -11 12t12 12q2 0 20.5 -1t28.5 -1q11 0 26.5 1t16.5 1q7 0 8.5 -2t1.5 -10 q0 -12 -10 -12h-5q-7 0 -11 -8q-7 -14 -41.5 -104t-54.5 -131q-7 -14 -17.5 -27.5t-19.5 -28.5q-2 -6 -9 -6q-9 0 -25 53q-23 82 -56 181q-4 14 -6 14q-4 0 -8 -14q-6 -13 -22.5 -52l-29 -67t-24.5 -49q-7 -14 -19.5 -28t-22.5 -32q-4 -6 -10 -6q-11 0 -27 57q-3 11 -17 50 l-34 94l-33 92q-3 9 -5.5 10.5t-11.5 1.5h-9q-10 0 -10 12z" />
+<glyph horiz-adv-x="392" d="M15 10q0 12 9 12q11 0 17 3.5t21 19.5l98 97q6 7 5.5 8t-5.5 7l-86 114q-7 9 -9.5 10.5t-11.5 1.5h-13q-10 0 -10 12q0 7 1.5 9.5t9.5 2.5q7 0 30 -1t36 -1q11 0 26.5 1t22.5 1q8 0 9.5 -2t1.5 -10q0 -12 -9 -12q-14 0 -14 -5q0 -2 8 -14l55 -73q4 -9 5 -8l2 3q2 5 4 8 q58 61 69 75q1 2 2 3.5t2 2.5t1 2q0 6 -21 6h-10q-10 0 -10 12q0 7 1.5 9.5t9.5 2.5t22 -1t23 -1q10 0 24.5 1t19.5 1q11 0 11 -12t-10 -12q-5 0 -10 -2.5t-8 -5t-8 -7.5l-8 -8l-54.5 -48.5t-35.5 -32.5q-2 -6 -2 -10q0 -2 8 -13q50 -70 94 -124q8 -10 14 -10h10 q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -26 1t-32 1q-11 0 -30.5 -1t-26.5 -1q-8 0 -9.5 2t-1.5 10q0 12 8 12h8q14 0 14 6l-17 26q-21 31 -56 74q-2 6 -3 7.5t-2 0t-4 -7.5l-21.5 -25l-31.5 -36t-23 -28q-1 -2 -3 -4l-3 -3t-1.5 -2.5t-0.5 -2.5q0 -5 14 -5h22 q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -23 1t-29 1q-12 0 -27 -1t-20 -1q-7 0 -8.5 2t-1.5 10z" />
+<glyph horiz-adv-x="378" d="M20 295q0 7 1.5 9.5t9.5 2.5q7 0 27 -1t32 -1q11 0 37.5 1t33.5 1q8 0 9.5 -2t1.5 -10q0 -12 -10 -12h-15q-21 0 -21 -8q0 -10 25 -80t45 -118q14 -32 15 -32q3 0 14 32q65 186 65 200q0 6 -23 6h-18q-10 0 -10 12q0 7 1.5 9.5t9.5 2.5q7 0 26 -1t27 -1q10 0 24.5 1 t19.5 1q11 0 11 -12t-10 -12h-11q-8 0 -10 -8l-104 -272q0 -1 -36 -93q-1 -4 -5.5 -16t-5.5 -14.5l-4.5 -11.5t-6 -13l-7.5 -12t-10.5 -15l-12.5 -16q-14 -19 -34 -29q-42 -21 -50 -21q-15 0 -15 17q0 11 15 34q8 11 23 15q3 1 14 5l18 6.5t16.5 7.5t15 10.5t8.5 12.5 q35 82 35 97q0 6 -22 59.5l-59.5 141.5t-43.5 103q-4 9 -6 10.5t-11 1.5h-9q-10 0 -10 12z" />
+<glyph horiz-adv-x="345" d="M35 9q0 6 8 17q179 261 179 263q0 3 -7 3q-41 0 -121 -4q-8 0 -10.5 -0.5t-5 -2t-3.5 -4t-2 -8.5l-7 -32q-3 -9 -12 -9q-14 0 -14 5q0 1 1.5 12.5t3 27.5t2.5 25q0 4 0.5 6t2 3t3.5 1.5t6 0.5h228q19 0 19 -8q0 -1 -7 -13l-168 -246q-11 -18 -11 -20t15 -2l137 4 q8 0 10 1t3 9l7 45q1 8 2.5 9t7.5 1h5q8 0 8 -5q0 -16 -5 -76q-1 -9 -2.5 -10.5t-10.5 -1.5h-244q-18 0 -18 9z" />
+<glyph horiz-adv-x="201" d="M30 205q0 53 15 103t36 83t43.5 58.5t36.5 37.5t16 12q5 0 9.5 -3t4.5 -7l-7 -7q-6 -6 -16 -17.5t-22 -28t-24 -39.5t-22 -49.5t-16.5 -61.5t-6.5 -72q0 -57 11.5 -109t27.5 -85.5t32 -58t27.5 -38.5t11.5 -16q0 -10 -13 -10q-3 0 -18 15.5t-36.5 45.5t-41.5 66.5t-34 85 t-14 95.5z" />
+<glyph horiz-adv-x="201" d="M10 -94l6 6q7 7 17 18.5t22 28t24 40t22 50t16.5 61.5t6.5 72q0 57 -11.5 108.5t-28 85t-32.5 58.5t-27.5 38.5t-11.5 15.5q0 11 14 11q3 0 18 -15.5t36.5 -45.5t41.5 -67t34 -85.5t14 -95.5q0 -53 -15 -103t-36.5 -83t-43.5 -58t-36.5 -37t-16.5 -12q-13 0 -13 9z" />
+<glyph horiz-adv-x="201" d="M30 455q0 53 15 103t36 83t43.5 58.5t36.5 37.5t16 12q5 0 9.5 -3t4.5 -7l-7 -7q-6 -6 -16 -17.5t-22 -28t-24 -39.5t-22 -49.5t-16.5 -61.5t-6.5 -72q0 -57 11.5 -109t27.5 -85.5t32 -58t27.5 -38.5t11.5 -16q0 -10 -13 -10q-3 0 -18 15.5t-36.5 45.5t-41.5 66.5t-34 85 t-14 95.5z" />
+<glyph horiz-adv-x="201" d="M10 156l6 6q7 7 17 18.5t22 28t24 40t22 50t16.5 61.5t6.5 72q0 57 -11.5 108.5t-28 85t-32.5 58.5t-27.5 38.5t-11.5 15.5q0 11 14 11q3 0 18 -15.5t36.5 -45.5t41.5 -67t34 -85.5t14 -95.5q0 -53 -15 -103t-36.5 -83t-43.5 -58t-36.5 -37t-16.5 -12q-13 0 -13 9z" />
+<glyph horiz-adv-x="201" d="M30 55q0 53 15 103t36 83t43.5 58.5t36.5 37.5t16 12q5 0 9.5 -3t4.5 -7l-7 -7q-6 -6 -16 -17.5t-22 -28t-24 -39.5t-22 -49.5t-16.5 -61.5t-6.5 -72q0 -57 11.5 -109t27.5 -85.5t32 -58t27.5 -38.5t11.5 -16q0 -10 -13 -10q-3 0 -18 15.5t-36.5 45.5t-41.5 66.5t-34 85 t-14 95.5z" />
+<glyph horiz-adv-x="201" d="M10 -244l6 6q7 7 17 18.5t22 28t24 40t22 50t16.5 61.5t6.5 72q0 57 -11.5 108.5t-28 85t-32.5 58.5t-27.5 38.5t-11.5 15.5q0 11 14 11q3 0 18 -15.5t36.5 -45.5t41.5 -67t34 -85.5t14 -95.5q0 -53 -15 -103t-36.5 -83t-43.5 -58t-36.5 -37t-16.5 -12q-13 0 -13 9z" />
+<glyph horiz-adv-x="201" d="M30 555q0 53 15 103t36 83t43.5 58.5t36.5 37.5t16 12q5 0 9.5 -3t4.5 -7l-7 -7q-6 -6 -16 -17.5t-22 -28t-24 -39.5t-22 -49.5t-16.5 -61.5t-6.5 -72q0 -57 11.5 -109t27.5 -85.5t32 -58t27.5 -38.5t11.5 -16q0 -10 -13 -10q-3 0 -18 15.5t-36.5 45.5t-41.5 66.5t-34 85 t-14 95.5z" />
+<glyph horiz-adv-x="201" d="M10 256l6 6q7 7 17 18.5t22 28t24 40t22 50t16.5 61.5t6.5 72q0 57 -11.5 108.5t-28 85t-32.5 58.5t-27.5 38.5t-11.5 15.5q0 11 14 11q3 0 18 -15.5t36.5 -45.5t41.5 -67t34 -85.5t14 -95.5q0 -53 -15 -103t-36.5 -83t-43.5 -58t-36.5 -37t-16.5 -12q-13 0 -13 9z" />
+<glyph horiz-adv-x="246" d="M90 -95v583q0 11 11 11h124q7 0 9 -1.5t2 -6.5v-12q0 -8 -2 -9.5t-9 -1.5h-84q-7 0 -8.5 -1.5t-1.5 -7.5v-526q0 -4 0.5 -5.5t2.5 -2.5t7 -1h84q5 0 7 -0.5t3 -2.5t1 -7v-11q0 -6 -2 -7.5t-9 -1.5h-124q-8 0 -9.5 1.5t-1.5 9.5z" />
+<glyph horiz-adv-x="246" d="M10 -86q0 7 1.5 8.5t8.5 1.5h84q7 0 9 1.5t2 7.5v526q0 6 -2 7.5t-9 1.5h-84q-7 0 -8.5 1.5t-1.5 9.5v11q0 4 0.5 5.5t2.5 2.5t7 1h124q8 0 10 -1.5t2 -9.5v-583q0 -11 -11 -11h-125q-8 0 -9 1t-1 6v13z" />
+<glyph horiz-adv-x="246" d="M90 155v583q0 11 11 11h124q7 0 9 -1.5t2 -6.5v-12q0 -8 -2 -9.5t-9 -1.5h-84q-7 0 -8.5 -1.5t-1.5 -7.5v-526q0 -4 0.5 -5.5t2.5 -2.5t7 -1h84q5 0 7 -0.5t3 -2.5t1 -7v-11q0 -6 -2 -7.5t-9 -1.5h-124q-8 0 -9.5 1.5t-1.5 9.5z" />
+<glyph horiz-adv-x="246" d="M10 164q0 7 1.5 8.5t8.5 1.5h84q7 0 9 1.5t2 7.5v526q0 6 -2 7.5t-9 1.5h-84q-7 0 -8.5 1.5t-1.5 9.5v11q0 4 0.5 5.5t2.5 2.5t7 1h124q8 0 10 -1.5t2 -9.5v-583q0 -11 -11 -11h-125q-8 0 -9 1t-1 6v13z" />
+<glyph horiz-adv-x="246" d="M90 -245v583q0 11 11 11h124q7 0 9 -1.5t2 -6.5v-12q0 -8 -2 -9.5t-9 -1.5h-84q-7 0 -8.5 -1.5t-1.5 -7.5v-526q0 -4 0.5 -5.5t2.5 -2.5t7 -1h84q5 0 7 -0.5t3 -2.5t1 -7v-11q0 -6 -2 -7.5t-9 -1.5h-124q-8 0 -9.5 1.5t-1.5 9.5z" />
+<glyph horiz-adv-x="246" d="M10 -236q0 7 1.5 8.5t8.5 1.5h84q7 0 9 1.5t2 7.5v526q0 6 -2 7.5t-9 1.5h-84q-7 0 -8.5 1.5t-1.5 9.5v11q0 4 0.5 5.5t2.5 2.5t7 1h124q8 0 10 -1.5t2 -9.5v-583q0 -11 -11 -11h-125q-8 0 -9 1t-1 6v13z" />
+<glyph horiz-adv-x="246" d="M90 255v583q0 11 11 11h124q7 0 9 -1.5t2 -6.5v-12q0 -8 -2 -9.5t-9 -1.5h-84q-7 0 -8.5 -1.5t-1.5 -7.5v-526q0 -4 0.5 -5.5t2.5 -2.5t7 -1h84q5 0 7 -0.5t3 -2.5t1 -7v-11q0 -6 -2 -7.5t-9 -1.5h-124q-8 0 -9.5 1.5t-1.5 9.5z" />
+<glyph horiz-adv-x="246" d="M10 264q0 7 1.5 8.5t8.5 1.5h84q7 0 9 1.5t2 7.5v526q0 6 -2 7.5t-9 1.5h-84q-7 0 -8.5 1.5t-1.5 9.5v11q0 4 0.5 5.5t2.5 2.5t7 1h124q8 0 10 -1.5t2 -9.5v-583q0 -11 -11 -11h-125q-8 0 -9 1t-1 6v13z" />
+<glyph horiz-adv-x="188" d="M40 -113q0 1 14 12.5t27.5 32t13.5 40.5q0 19 -13 34t-26 25t-13 15q0 12 17.5 24.5t23.5 12.5q12 0 36 -20.5t24 -36.5q0 -35 -21.5 -73t-43 -59t-26.5 -21q-4 0 -8.5 5t-4.5 9z" />
+<glyph horiz-adv-x="192" d="M49 35q0 14 14.5 33.5t24.5 19.5q14 0 33 -13.5t19 -29.5q0 -19 -14.5 -35.5t-23.5 -16.5q-18 0 -35.5 15.5t-17.5 26.5z" />
+<glyph horiz-adv-x="188" d="M40 137q0 1 14 12.5t27.5 32t13.5 40.5q0 19 -13 34t-26 25t-13 15q0 12 17.5 24.5t23.5 12.5q12 0 36 -20.5t24 -36.5q0 -35 -21.5 -73t-43 -59t-26.5 -21q-4 0 -8.5 5t-4.5 9z" />
+<glyph horiz-adv-x="192" d="M49 285q0 14 14.5 33.5t24.5 19.5q14 0 33 -13.5t19 -29.5q0 -19 -14.5 -35.5t-23.5 -16.5q-18 0 -35.5 15.5t-17.5 26.5z" />
+<glyph horiz-adv-x="188" d="M40 -263q0 1 14 12.5t27.5 32t13.5 40.5q0 19 -13 34t-26 25t-13 15q0 12 17.5 24.5t23.5 12.5q12 0 36 -20.5t24 -36.5q0 -35 -21.5 -73t-43 -59t-26.5 -21q-4 0 -8.5 5t-4.5 9z" />
+<glyph horiz-adv-x="192" d="M49 -115q0 14 14.5 33.5t24.5 19.5q14 0 33 -13.5t19 -29.5q0 -19 -14.5 -35.5t-23.5 -16.5q-18 0 -35.5 15.5t-17.5 26.5z" />
+<glyph horiz-adv-x="188" d="M40 237q0 1 14 12.5t27.5 32t13.5 40.5q0 19 -13 34t-26 25t-13 15q0 12 17.5 24.5t23.5 12.5q12 0 36 -20.5t24 -36.5q0 -35 -21.5 -73t-43 -59t-26.5 -21q-4 0 -8.5 5t-4.5 9z" />
+<glyph horiz-adv-x="192" d="M49 385q0 14 14.5 33.5t24.5 19.5q14 0 33 -13.5t19 -29.5q0 -19 -14.5 -35.5t-23.5 -16.5q-18 0 -35.5 15.5t-17.5 26.5z" />
+<glyph horiz-adv-x="223" d="M20 168q0 11 5 23.5t11 13.5q5 1 82 3.5t83 2.5q2 0 2 -8q0 -30 -7 -30q-96 -8 -172 -8q-4 0 -4 3z" />
+<glyph horiz-adv-x="223" d="M20 418q0 11 5 23.5t11 13.5q5 1 82 3.5t83 2.5q2 0 2 -8q0 -30 -7 -30q-96 -8 -172 -8q-4 0 -4 3z" />
+<glyph horiz-adv-x="223" d="M20 18q0 11 5 23.5t11 13.5q5 1 82 3.5t83 2.5q2 0 2 -8q0 -30 -7 -30q-96 -8 -172 -8q-4 0 -4 3z" />
+<glyph horiz-adv-x="223" d="M20 518q0 11 5 23.5t11 13.5q5 1 82 3.5t83 2.5q2 0 2 -8q0 -30 -7 -30q-96 -8 -172 -8q-4 0 -4 3z" />
+<glyph horiz-adv-x="360" d="M46 61q0 7 9.5 11t17.5 4q5 0 8.5 -2.5t10.5 -11.5t8 -11q26 -29 63 -32q4 0 4.5 0.5t0.5 4.5v152q0 9 -7 12q-35 15 -54.5 26t-39 35.5t-19.5 55.5q0 41 34 70t82 34q4 0 4 4v34q0 10 9 10h7q8 0 8 -10v-33q0 -4 3 -4q44 -3 72.5 -25t28.5 -42q0 -9 -10.5 -15t-16.5 -6 q-8 0 -11.5 9.5t-5 21t-15 22.5t-40.5 13q-5 0 -5 -3v-150v-8.5t6 -2.5q27 -12 41.5 -19.5t34.5 -22t29.5 -32.5t9.5 -41q0 -48 -30 -77.5t-84 -34.5q-5 0 -6 -0.5t-1 -4.5v-80q0 -11 -12 -11t-12 11v80q0 5 -6 5q-46 3 -81 22.5t-35 41.5zM96 309q0 -27 18 -42.5t51 -29.5 q2 -1 2.5 -0.5t0.5 4.5v144q0 4 -7 2q-17 -4 -28 -11q-37 -22 -37 -67zM192 27q0 -9 10 -6q27 7 45 29t18 46q0 27 -17.5 44.5t-50.5 32.5q-5 2 -5 -1v-145z" />
+<glyph horiz-adv-x="360" d="M46 311q0 7 9.5 11t17.5 4q5 0 8.5 -2.5t10.5 -11.5t8 -11q26 -29 63 -32q4 0 4.5 0.5t0.5 4.5v152q0 9 -7 12q-35 15 -54.5 26t-39 35.5t-19.5 55.5q0 41 34 70t82 34q4 0 4 4v34q0 10 9 10h7q8 0 8 -10v-33q0 -4 3 -4q44 -3 72.5 -25t28.5 -42q0 -9 -10.5 -15t-16.5 -6 q-8 0 -11.5 9.5t-5 21t-15 22.5t-40.5 13q-5 0 -5 -3v-150v-8.5t6 -2.5q27 -12 41.5 -19.5t34.5 -22t29.5 -32.5t9.5 -41q0 -48 -30 -77.5t-84 -34.5q-5 0 -6 -0.5t-1 -4.5v-80q0 -11 -12 -11t-12 11v80q0 5 -6 5q-46 3 -81 22.5t-35 41.5zM96 559q0 -27 18 -42.5t51 -29.5 q2 -1 2.5 -0.5t0.5 4.5v144q0 4 -7 2q-17 -4 -28 -11q-37 -22 -37 -67zM192 277q0 -9 10 -6q27 7 45 29t18 46q0 27 -17.5 44.5t-50.5 32.5q-5 2 -5 -1v-145z" />
+<glyph horiz-adv-x="360" d="M46 -89q0 7 9.5 11t17.5 4q5 0 8.5 -2.5t10.5 -11.5t8 -11q26 -29 63 -32q4 0 4.5 0.5t0.5 4.5v152q0 9 -7 12q-35 15 -54.5 26t-39 35.5t-19.5 55.5q0 41 34 70t82 34q4 0 4 4v34q0 10 9 10h7q8 0 8 -10v-33q0 -4 3 -4q44 -3 72.5 -25t28.5 -42q0 -9 -10.5 -15t-16.5 -6 q-8 0 -11.5 9.5t-5 21t-15 22.5t-40.5 13q-5 0 -5 -3v-150v-8.5t6 -2.5q27 -12 41.5 -19.5t34.5 -22t29.5 -32.5t9.5 -41q0 -48 -30 -77.5t-84 -34.5q-5 0 -6 -0.5t-1 -4.5v-80q0 -11 -12 -11t-12 11v80q0 5 -6 5q-46 3 -81 22.5t-35 41.5zM96 159q0 -27 18 -42.5t51 -29.5 q2 -1 2.5 -0.5t0.5 4.5v144q0 4 -7 2q-17 -4 -28 -11q-37 -22 -37 -67zM192 -123q0 -9 10 -6q27 7 45 29t18 46q0 27 -17.5 44.5t-50.5 32.5q-5 2 -5 -1v-145z" />
+<glyph horiz-adv-x="360" d="M46 411q0 7 9.5 11t17.5 4q5 0 8.5 -2.5t10.5 -11.5t8 -11q26 -29 63 -32q4 0 4.5 0.5t0.5 4.5v152q0 9 -7 12q-35 15 -54.5 26t-39 35.5t-19.5 55.5q0 41 34 70t82 34q4 0 4 4v34q0 10 9 10h7q8 0 8 -10v-33q0 -4 3 -4q44 -3 72.5 -25t28.5 -42q0 -9 -10.5 -15t-16.5 -6 q-8 0 -11.5 9.5t-5 21t-15 22.5t-40.5 13q-5 0 -5 -3v-150v-8.5t6 -2.5q27 -12 41.5 -19.5t34.5 -22t29.5 -32.5t9.5 -41q0 -48 -30 -77.5t-84 -34.5q-5 0 -6 -0.5t-1 -4.5v-80q0 -11 -12 -11t-12 11v80q0 5 -6 5q-46 3 -81 22.5t-35 41.5zM96 659q0 -27 18 -42.5t51 -29.5 q2 -1 2.5 -0.5t0.5 4.5v144q0 4 -7 2q-17 -4 -28 -11q-37 -22 -37 -67zM192 377q0 -9 10 -6q27 7 45 29t18 46q0 27 -17.5 44.5t-50.5 32.5q-5 2 -5 -1v-145z" />
+<glyph horiz-adv-x="360" d="M59 129q0 69 41.5 111.5t96.5 46.5q4 0 6 10q1 11 2.5 24l2.5 21t1 11q0 2 3 2h7q7 0 7 -2l-6 -56q-1 -10 9 -11q27 -5 47 -24t20 -42q0 -8 -8 -13q-14 -10 -22 -10q-10 0 -11 6q-1 4 -2.5 12t-2.5 12t-2.5 11t-3.5 10.5t-5 8t-6.5 7.5t-7.5 4q-6 2 -7 -6l-20 -224 q0 -8 3 -9q5 -3 25 -3q19 1 35.5 7t26.5 11l9 6q5 0 5 -6q0 -2 -6 -8q-41 -41 -95 -41q-8 0 -9 -8q-6 -54 -10 -79h-15q0 11 8 78q2 11 -8 12q-50 10 -79 45.5t-29 85.5zM108 148q0 -36 16.5 -67t46.5 -45q1 -1 4 -1q4 0 4 5l21 219q0 9 -6 9h-1q-38 -3 -61.5 -40.5 t-23.5 -79.5z" />
+<glyph horiz-adv-x="360" d="M59 379q0 69 41.5 111.5t96.5 46.5q4 0 6 10q1 11 2.5 24l2.5 21t1 11q0 2 3 2h7q7 0 7 -2l-6 -56q-1 -10 9 -11q27 -5 47 -24t20 -42q0 -8 -8 -13q-14 -10 -22 -10q-10 0 -11 6q-1 4 -2.5 12t-2.5 12t-2.5 11t-3.5 10.5t-5 8t-6.5 7.5t-7.5 4q-6 2 -7 -6l-20 -224 q0 -8 3 -9q5 -3 25 -3q19 1 35.5 7t26.5 11l9 6q5 0 5 -6q0 -2 -6 -8q-41 -41 -95 -41q-8 0 -9 -8q-6 -54 -10 -79h-15q0 11 8 78q2 11 -8 12q-50 10 -79 45.5t-29 85.5zM108 398q0 -36 16.5 -67t46.5 -45q1 -1 4 -1q4 0 4 5l21 219q0 9 -6 9h-1q-38 -3 -61.5 -40.5 t-23.5 -79.5z" />
+<glyph horiz-adv-x="360" d="M59 -21q0 69 41.5 111.5t96.5 46.5q4 0 6 10q1 11 2.5 24l2.5 21t1 11q0 2 3 2h7q7 0 7 -2l-6 -56q-1 -10 9 -11q27 -5 47 -24t20 -42q0 -8 -8 -13q-14 -10 -22 -10q-10 0 -11 6q-1 4 -2.5 12t-2.5 12t-2.5 11t-3.5 10.5t-5 8t-6.5 7.5t-7.5 4q-6 2 -7 -6l-20 -224 q0 -8 3 -9q5 -3 25 -3q19 1 35.5 7t26.5 11l9 6q5 0 5 -6q0 -2 -6 -8q-41 -41 -95 -41q-8 0 -9 -8q-6 -54 -10 -79h-15q0 11 8 78q2 11 -8 12q-50 10 -79 45.5t-29 85.5zM108 -2q0 -36 16.5 -67t46.5 -45q1 -1 4 -1q4 0 4 5l21 219q0 9 -6 9h-1q-38 -3 -61.5 -40.5 t-23.5 -79.5z" />
+<glyph horiz-adv-x="360" d="M59 479q0 69 41.5 111.5t96.5 46.5q4 0 6 10q1 11 2.5 24l2.5 21t1 11q0 2 3 2h7q7 0 7 -2l-6 -56q-1 -10 9 -11q27 -5 47 -24t20 -42q0 -8 -8 -13q-14 -10 -22 -10q-10 0 -11 6q-1 4 -2.5 12t-2.5 12t-2.5 11t-3.5 10.5t-5 8t-6.5 7.5t-7.5 4q-6 2 -7 -6l-20 -224 q0 -8 3 -9q5 -3 25 -3q19 1 35.5 7t26.5 11l9 6q5 0 5 -6q0 -2 -6 -8q-41 -41 -95 -41q-8 0 -9 -8q-6 -54 -10 -79h-15q0 11 8 78q2 11 -8 12q-50 10 -79 45.5t-29 85.5zM108 498q0 -36 16.5 -67t46.5 -45q1 -1 4 -1q4 0 4 5l21 219q0 9 -6 9h-1q-38 -3 -61.5 -40.5 t-23.5 -79.5z" />
+<glyph horiz-adv-x="352" d="M35 307q0 49 55 78.5t132 42.5q6 1 6 12q0 27 -1.5 41.5t-7.5 32.5t-21 26.5t-39 8.5q-13 0 -24 -4q-16 -6 -20.5 -16.5t-5.5 -35.5q0 -13 -6 -17q-33 -21 -47 -21q-8 0 -8 12q0 46 41.5 75.5t87.5 29.5q60 0 85 -26.5t25 -77.5q0 -23 -2.5 -90t-2.5 -73q0 -24 18 -24 q2 0 16 9.5t15 9.5q2 0 6 -4.5t4 -8.5t-54 -43q-13 -9 -22 -9q-13 0 -21 12.5t-10 24.5l-3 13q-1 0 -3.5 -2t-6.5 -4.5l-7 -4.5q-56 -36 -96 -36q-39 0 -61 18.5t-22 50.5zM98 331q0 -21 14.5 -37.5t38.5 -16.5q16 0 35 4.5t30.5 10t11.5 7.5v104q0 9 -4 9q-11 0 -50 -12 q-76 -24 -76 -69z" />
+<glyph horiz-adv-x="414" d="M10 759q0 19 4 19l47.5 5.5l50 6t22.5 2.5q6 0 6 -12q-3 -150 -3 -216q0 -31 1 -31l6 3q5 3 14 6.5l19.5 7.5t24 7t24.5 3q69 0 113.5 -46t44.5 -113q0 -75 -54.5 -118.5t-130.5 -43.5q-16 0 -40 8.5t-35 8.5q-10 0 -24 -8t-17 -8q-10 0 -10 10q0 1 1.5 29.5t2.5 66.5 t1 61q0 64 -4 208t-10 144q-2 0 -25 -2.5t-24 -2.5q-5 0 -5 5zM135 303q0 -40 67 -40q54 0 85.5 40.5t31.5 96.5q0 53 -38 93.5t-90 40.5q-12 0 -25.5 -4t-21 -9t-7.5 -7q0 -47 -1 -126t-1 -85z" />
+<glyph horiz-adv-x="350" d="M30 392q0 84 52.5 132t119.5 48q41 0 76.5 -24t35.5 -54q0 -10 -9 -16q-15 -11 -27 -11q-11 0 -15 9q-2 5 -6 17l-6 18t-7 14.5t-10.5 12.5t-15 7t-21.5 3q-48 0 -78 -41.5t-30 -92.5q0 -54 33.5 -93.5t92.5 -39.5q25 0 48 6t36 12t15 6q6 0 6 -7q0 -4 -14.5 -17 t-47.5 -26.5t-70 -13.5q-73 0 -115.5 41t-42.5 110z" />
+<glyph horiz-adv-x="424" d="M29 397q0 68 48.5 114.5t119.5 46.5q14 0 27.5 -2.5t23 -6l17.5 -6.5l13 -5l4 -3q5 0 5 15q0 37 -1.5 89t-3.5 87.5t-3 35.5t-25 -3.5t-28 -3.5q-6 0 -4 13q2 11 7 12l48 7l44 6.5t19 2.5q6 0 7.5 -2.5t1.5 -15.5q0 -5 -1.5 -49.5t-3 -132.5t-1.5 -197q0 -38 2 -96 q1 -24 4.5 -31.5t13.5 -7.5q3 0 27 4q9 2 9 -8t-1.5 -13t-9.5 -4l-98 -13q-5 0 -5 8q0 1 0.5 15.5t0.5 16.5q0 8 -1.5 8.5t-10.5 -4.5q-52 -35 -99 -35q-62 0 -104 38.5t-42 119.5zM95 403q0 -58 31 -94.5t92 -36.5q19 0 44 8t25 18v201q0 10 -24.5 25.5t-52.5 15.5 q-51 0 -83 -41t-32 -96z" />
+<glyph horiz-adv-x="366" d="M30 396q0 74 48 123.5t124 49.5q59 0 92 -37.5t33 -92.5q0 -9 -44 -9q-5 0 -93.5 2t-91.5 2q-4 0 -4 -28q0 -60 36.5 -94.5t86.5 -34.5q18 0 35.5 5.5t29.5 12.5t21.5 14.5t14.5 12.5l5 6q1 0 7 -6t6 -7q0 -4 -17.5 -22t-53.5 -37t-74 -19q-76 0 -118.5 43.5t-42.5 115.5 zM98 456q0 -6 10 -6q45 0 125 4q32 1 32 3q0 50 -23 71t-50 21q-37 0 -64.5 -30.5t-29.5 -62.5z" />
+<glyph horiz-adv-x="296" d="M45 261q0 12 10 12h32q3 0 3 49q0 16 -0.5 40t-0.5 26v47v56q0 33 -1 33h-27q-7 0 -9 2t-2 10t1.5 10t7.5 2h22q5 0 6.5 1.5t1.5 8.5q0 19 -1 37.5t-1 40.5q0 70 31.5 114t101.5 44q27 0 49 -15.5t22 -39.5q0 -13 -16 -25.5t-27 -12.5t-12 7q-7 48 -17 58q-7 8 -20 8 q-47 0 -47 -131q0 -13 -2 -81q0 -10 2.5 -12t14.5 -2h96q6 0 6 -5q0 -4 -2.5 -11t-4.5 -7h-95q-9 0 -11.5 -1.5t-2.5 -7.5v-130q0 -113 8 -113h53q10 0 10 -12q-4 -12 -10 -13q-7 0 -41.5 1t-47.5 1q-10 0 -33 -1t-36 -1q-8 0 -9.5 2.5t-1.5 10.5z" />
+<glyph horiz-adv-x="399" d="M30 110q0 36 37.5 59t79.5 31q20 4 20 5t-18 1h-47q-27 0 -34 15q-8 17 -8 39q0 25 16 29l35.5 9.5l39.5 10.5q6 2 12 3q4 0 3.5 0.5t-4.5 1.5t-7 2q-108 29 -108 131q0 52 45.5 86.5t103.5 34.5q27 0 51.5 -11t37.5 -23l13 -11q2 0 12.5 4t26 8.5t26.5 5.5q2 0 5 -9 t3 -17q0 -5 -3 -5q-53 -5 -53 -11q0 -1 3 -8.5t6 -20t3 -27.5q0 -88 -95 -122q-27 -10 -143 -41q-4 -2 -4 -7q0 -6 4 -12.5t7 -7.5q19 -1 57 -2t63.5 -1.5t58 -6t52 -15t33.5 -29t14 -47.5q0 -62 -51.5 -98.5t-134.5 -36.5q-60 0 -109 24.5t-49 68.5zM71 116 q0 -35 36.5 -55.5t79.5 -20.5q55 0 95.5 21.5t40.5 68.5q0 31 -45 47t-99 16q-36 0 -72 -21t-36 -56zM105 450q0 -51 33 -87t55 -36q27 0 52.5 34t25.5 84q0 47 -21.5 73.5t-58.5 26.5q-35 0 -60.5 -28t-25.5 -67z" />
+<glyph horiz-adv-x="439" d="M25 760q0 14 4 15q15 2 47.5 6t54.5 7t24 3q4 0 4 -16q-8 -134 -8 -244q0 -10 1.5 -11t7.5 4q62 36 110 36q33 0 54.5 -12.5t31.5 -38t13.5 -51t3.5 -62.5v-114q0 -7 1.5 -8.5t7.5 -1.5h21q11 0 11 -12t-12 -12q-7 0 -26.5 1t-32.5 1q-10 0 -34.5 -1t-37.5 -1 q-8 0 -9.5 2t-1.5 10q0 12 11 12h31q6 0 6.5 1t1.5 8q2 32 2 138q0 46 -19.5 75t-57.5 29q-37 0 -71 -17q-13 -7 -13 -11l1 -118q0 -71 1 -91q1 -10 2 -12t7 -2h31q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -31.5 1t-38.5 1q-10 0 -34.5 -1t-37.5 -1q-8 0 -9.5 2t-1.5 10 q0 12 9 12h32q6 0 7 2t1 12q1 74 1 174q0 175 -7 282q-1 14 -5 14q-1 0 -24 -3t-25 -3q-3 0 -3 10z" />
+<glyph horiz-adv-x="220" d="M25 534q0 3 4 12q2 5 3.5 5.5t9.5 1.5q80 5 97 5q6 0 6 -5v-136q0 -90 3 -135q0 -10 8 -10h30q9 0 9 -12t-9 -12q-7 0 -34 1t-38 1t-40 -1t-36 -1q-6 0 -7.5 2t-1.5 10q0 7 1.5 9.5t9.5 2.5h34q7 0 8 1.5t1 7.5q1 23 1 70q0 110 -3 168q-1 9 -3 11t-8 2q-1 0 -20 -1 t-21 -1q-4 0 -4 4zM67 690q0 22 18 35.5t37 13.5q37 0 37 -36q0 -21 -17.5 -35.5t-37.5 -14.5q-15 0 -26 9.5t-11 27.5z" />
+<glyph horiz-adv-x="245" d="M5 48q0 15 12 31.5t21 16.5q10 0 25.5 -2t18.5 -2q31 0 31 26q0 7 -2 44.5t-4 114t-2 179.5q0 38 -2 59q-1 11 -8 11q-3 0 -28.5 -1.5t-29.5 -1.5q-2 0 -2 4q0 7 3 14q11 8 13 8q19 0 45.5 1.5l44 2.5t18.5 1q6 0 6 -19q0 -16 2.5 -109.5t2.5 -153.5q0 -71 -9.5 -116 t-36.5 -79q-11 -13 -48 -30t-55 -17q-16 0 -16 18zM60 711q0 22 17.5 35.5t36.5 13.5q38 0 38 -36q0 -21 -17.5 -35.5t-37.5 -14.5q-15 0 -26 9.5t-11 27.5z" />
+<glyph horiz-adv-x="406" d="M25 768v8q0 12 9 13q85 8 111 8q7 0 7 -10l-9 -360q0 -6 2 -7.5t11 -1.5h17q9 0 24 17q36 48 61 89q6 7 5.5 10t-12.5 3h-14q-9 0 -9 12t11 12q3 0 20 -1t27 -1q8 0 24 1t22 1q10 0 10 -12t-9 -12h-26q-4 0 -37 -38.5l-49 -58.5l-2 -2q-7 -7 -4 -10q1 0 2 -2q4 -3 6 -5 l127 -139q9 -10 18 -10h8q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-5 0 -25 1t-32 1t-32.5 -1t-25.5 -1q-8 0 -9.5 2t-1.5 10q0 12 12 12h10q15 0 5 12l-97 106q-7 10 -9 11.5t-8 1.5h-11q-6 0 -7 -2.5t-1 -9.5v-105q0 -10 1.5 -12t7.5 -2h19q10 0 10 -12q0 -7 -1.5 -9.5 t-9.5 -2.5q-7 0 -25 1t-32 1q-16 0 -41 -1t-27 -1q-8 0 -9.5 2t-1.5 10q0 12 10 12h33q6 0 7 2t1 12v154q0 324 -8 324q-2 0 -21 -1.5t-23 -1.5q-8 0 -8 7z" />
+<glyph horiz-adv-x="223" d="M25 765q0 2 2 14q1 5 2 5.5t7 1.5q91 8 103 8q6 0 6 -12q1 -126 3 -263.5t2 -215.5q0 -31 7 -31h31q10 0 10 -12t-10 -12q-7 0 -30 1t-36 1q-10 0 -37.5 -1t-40.5 -1q-8 0 -9.5 2t-1.5 10q0 12 10 12h41q3 0 3 68q0 309 -10 410q0 3 -1 7q0 6 -1 7.5t-6 1.5q-2 0 -19 -2 t-18 -2q-7 0 -7 3z" />
+<glyph horiz-adv-x="620" d="M25 529q0 9 3 16q2 5 3 5.5t10 1.5q70 4 84 4q10 0 11.5 -1t1.5 -8v-26q0 -12 1 -13q1 0 7 5q64 49 116 49q18 0 31.5 -4.5t21 -11t12 -13.5t6.5 -11l2 -5q2 0 11 6q21 14 51 25.5t52 11.5q57 0 80 -30t23 -86q0 -37 -1 -93t-1 -71q0 -8 8 -8h25q12 0 12 -12t-12 -12 q-7 0 -29 1t-35 1q-10 0 -34 -1t-37 -1q-8 0 -9.5 2t-1.5 10q0 12 12 12h32q8 0 8 150q0 100 -72 100q-18 0 -37.5 -5.5t-30 -11.5t-10.5 -7t1.5 -7t3 -19.5t1.5 -34.5v-133q0 -32 2 -32h27q11 0 11 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -27.5 1t-33.5 1q-10 0 -29 -1t-32 -1 q-8 0 -10.5 2t-2.5 10q0 12 10 12h31q6 0 6 76v32t-0.5 29t-0.5 13q0 33 -2.5 51t-16 33.5t-39.5 15.5q-45 0 -80 -24q-8 -6 -8 -14v-178q0 -24 2 -29t13 -5h17q11 0 11 -12t-12 -12q-7 0 -29.5 1t-33.5 1t-38 -1t-32 -1q-10 0 -10 12t9 12h31q7 0 10 25q2 16 2 84v86 q0 62 -4 62q-1 0 -22.5 -1.5t-23.5 -1.5q-4 0 -4 3z" />
+<glyph horiz-adv-x="435" d="M25 529q0 6 4 14q2 5 3 5.5t10 1.5q4 0 40 2.5t49 3.5q10 1 10.5 0t0.5 -9v-37q0 -6 10 3l2 2l15 10.5t19.5 12.5l19.5 10t25 8.5t27 2.5q66 0 88 -36.5t22 -105.5q0 -26 -2.5 -79.5t-2.5 -55.5q0 -7 1.5 -8.5t7.5 -1.5h24q8 0 10 -2t2 -10q0 -12 -10 -12q-7 0 -28.5 1 t-34.5 1q-10 0 -34 -1t-37 -1q-9 0 -10.5 2t-1.5 10t2 10t8 2h29q6 0 7 1t2 8q4 38 4 138q0 102 -77 102q-25 0 -71 -23q-14 -6 -14 -18q0 -32 -0.5 -96.5t-0.5 -96.5q0 -7 0.5 -9.5t2.5 -4t7 -1.5h29q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -30.5 1t-36.5 1 q-10 0 -35.5 -1t-38.5 -1q-8 0 -9 2t-1 10q0 12 9 12h31q6 0 6.5 2t1.5 12q5 78 5 153q0 55 -2 79q-1 10 -2 10.5t-8 0.5q-1 0 -21.5 -2t-22.5 -2t-2 4z" />
+<glyph horiz-adv-x="384" d="M30 397q0 73 48 122.5t124 49.5q67 0 109.5 -46.5t42.5 -114.5q0 -76 -44 -123.5t-121 -47.5q-67 0 -113 47t-46 113zM94 386q0 -49 25.5 -87.5t69.5 -38.5q99 0 99 154q0 52 -24.5 92t-71.5 40q-98 0 -98 -160z" />
+<glyph horiz-adv-x="432" d="M25 530q0 4 2.5 12t4.5 8q25 1 52.5 2t43 2t16.5 1q4 0 6 -0.5t3 -3t1 -8.5v-21q0 -9 1 -9t16 13q41 32 89 32q69 0 105.5 -42.5t36.5 -109.5q0 -65 -48 -114.5t-125 -49.5q-23 0 -55 10q-17 6 -18 4q-1 -1 -1 -4l2 -150q2 -53 5 -53h56q10 0 10 -12q-4 -12 -10 -13 q-7 0 -41.5 1t-47.5 1q-10 0 -39 -1t-42 -1q-8 0 -9.5 2.5t-1.5 10.5q0 12 10 12h45q3 0 3 127v112q0 151 -7 228q-1 8 -2.5 9.5t-10.5 1.5q-3 0 -20.5 -1t-19.5 -1q-10 0 -10 5zM155 292q0 -13 24 -23t45 -10q52 0 82.5 43.5t30.5 96.5q0 57 -30 92t-75 35q-31 0 -51 -10 q-26 -13 -26 -26v-198z" />
+<glyph horiz-adv-x="413" d="M30 395q0 70 49.5 115.5t124.5 45.5q27 0 60 -11.5t38 -11.5q8 0 17 14.5t15 14.5q13 0 13 -10q-4 -95 -4 -238v-132q0 -130 2 -130h33q10 0 10 -13q0 -8 -1.5 -10.5t-9.5 -2.5h-23q-20 0 -40.5 -1t-35.5 -2.5t-27 -3t-19 -2.5t-8 -1q-8 0 -10 2.5t-2 8.5q0 14 10 15 q8 1 17.5 2l14 1.5t9.5 1t6.5 2t4 3t2.5 5t0.5 7t0.5 10.5l2 177q0 7 -3 7q-4 0 -13 -3q-50 -15 -90 -15q-56 0 -99.5 38.5t-43.5 116.5zM94 403q0 -52 31.5 -94t83.5 -42q71 0 71 17v198q0 24 -22 37t-61 13q-50 0 -76.5 -38.5t-26.5 -90.5z" />
+<glyph horiz-adv-x="291" d="M30 530q0 6 2 11t3 5.5t10 1.5q36 3 86 3q10 0 10.5 -0.5t0.5 -7.5q0 -8 0.5 -26.5t0.5 -26.5v-15l8 21q13 33 34 52.5t40 19.5q16 0 31 -14t15 -23q0 -8 -10.5 -21.5t-19.5 -13.5t-24.5 12t-23.5 12q-45 0 -45 -159q0 -88 10 -88h49q11 0 11 -12q0 -13 -11 -13 q-7 0 -41 1t-47 1q-10 0 -34 -1t-37 -1q-8 0 -9 2t-1 11q0 12 9 12h34q8 0 8 107q0 148 -6 148q-1 0 -25 -1t-26 -1t-2 4z" />
+<glyph horiz-adv-x="276" d="M40 290q0 9 8 20t13 11q2 0 3.5 -2.5t4 -8t6.5 -10.5q29 -40 66 -40q20 0 33.5 13.5t13.5 38.5q0 26 -16.5 41.5t-46.5 30.5q-2 1 -13 6t-13.5 6.5l-12 7t-12.5 8l-10 8.5t-9.5 11l-6 12.5t-5 15.5t-1.5 17q0 39 32.5 65t74.5 26q38 0 58 -18.5t20 -36.5q0 -6 -10.5 -11 t-17.5 -5q-6 0 -10.5 13t-14 26t-29.5 13t-35.5 -13.5t-15.5 -42.5q0 -16 10 -29.5t19 -19t30 -16.5q57 -32 72 -50q16 -19 16 -43q0 -43 -31 -69t-75 -26q-35 0 -65 16t-30 35z" />
+<glyph horiz-adv-x="258" d="M40 522q0 3 3 6l78 105q5 5 8 5q9 0 9 -8q0 -1 -1.5 -16.5t-3 -33.5t-1.5 -24q0 -8 9 -8h76q9 0 10 -2t-2 -14q-3 -15 -11 -15h-79q-3 0 -3 -36v-149q0 -15 1.5 -23.5t11 -16.5t26.5 -8q14 0 28.5 3t24 6t11.5 3q3 0 3 -13q0 -2 -19 -12t-45 -19.5t-41 -9.5 q-33 0 -46.5 16.5t-13.5 38.5q2 114 2 171q0 48 -10 48h-20q-5 0 -5 6z" />
+<glyph horiz-adv-x="440" d="M25 537q0 3 3 10t13 8q76 4 93 4q6 0 6 -5v-217q0 -54 89 -54q73 0 73 13v93q0 147 -6 147q-1 0 -20.5 -1t-21.5 -1q-3 0 -3 3q2 16 5 17q2 2 6 2q64 4 96 4q6 0 6 -4q-1 -191 -1 -240q0 -30 2.5 -38.5t12.5 -8.5q1 0 16.5 2t16.5 2q4 0 4 -9t-1.5 -10.5t-10.5 -3.5 q-11 -2 -33 -5t-37 -5.5t-18 -2.5q-8 0 -9 11q-3 33 -4 33l-22 -11q-21 -10 -53.5 -20t-59.5 -10q-54 0 -72 28.5t-18 77.5v126v17q0 44 -9 44q-1 0 -19.5 -0.5t-20.5 -0.5q-3 0 -3 5z" />
+<glyph horiz-adv-x="378" d="M20 545q0 12 10 12q6 0 24 -1t30 -1q11 0 36.5 1t31.5 1q7 0 8.5 -2t1.5 -10q0 -12 -9 -12h-24q-15 0 -15 -6q0 -2 14 -41.5l33 -90.5l29 -76q7 -15 9 -15t7 13q76 180 76 203q0 13 -8 13h-21q-10 0 -10 12t12 12q2 0 20.5 -1t28.5 -1t24 1t20 1q7 0 8.5 -2t1.5 -10 q0 -12 -10 -12h-13q-6 0 -11 -8q-9 -15 -47 -105.5t-57 -129.5q-7 -14 -19.5 -28.5t-21.5 -27.5q-5 -6 -9 -6q-5 0 -9 8t-9 25.5t-6 19.5q-28 84 -90 240q-4 9 -6.5 10.5t-11.5 1.5h-8q-10 0 -10 12z" />
+<glyph horiz-adv-x="578" d="M20 545q0 12 10 12q7 0 24.5 -1t30.5 -1q11 0 37 1t33 1q8 0 9.5 -2t1.5 -10q0 -12 -9 -12h-18q-13 0 -13 -6q0 -2 12.5 -41.5l30 -91t27.5 -75.5q4 -13 6 -13t8 18q49 105 67 147q6 21 6 29q0 5 -4 17q-6 16 -28 16h-9q-10 0 -10 12q0 7 1.5 9.5t9.5 2.5q9 0 27 -1 t34 -1q11 0 30.5 1t29.5 1q8 0 9.5 -2t1.5 -10q0 -12 -10 -12h-17q-10 0 -10 -6q0 -2 11.5 -41.5l27.5 -91t26 -75.5q9 -19 10 -19q2 0 9 18q14 33 40.5 112.5t26.5 93.5q0 9 -10 9h-24q-11 0 -11 12t12 12q2 0 20.5 -1t28.5 -1q11 0 26.5 1t16.5 1q7 0 8.5 -2t1.5 -10 q0 -12 -10 -12h-5q-7 0 -11 -8q-7 -14 -41.5 -104t-54.5 -131q-7 -14 -17.5 -27.5t-19.5 -28.5q-2 -6 -9 -6q-9 0 -25 53q-23 82 -56 181q-4 14 -6 14q-4 0 -8 -14q-6 -13 -22.5 -52l-29 -67t-24.5 -49q-7 -14 -19.5 -28t-22.5 -32q-4 -6 -10 -6q-11 0 -27 57q-3 11 -17 50 l-34 94l-33 92q-3 9 -5.5 10.5t-11.5 1.5h-9q-10 0 -10 12z" />
+<glyph horiz-adv-x="392" d="M15 260q0 12 9 12q11 0 17 3.5t21 19.5l98 97q6 7 5.5 8t-5.5 7l-86 114q-7 9 -9.5 10.5t-11.5 1.5h-13q-10 0 -10 12q0 7 1.5 9.5t9.5 2.5q7 0 30 -1t36 -1q11 0 26.5 1t22.5 1q8 0 9.5 -2t1.5 -10q0 -12 -9 -12q-14 0 -14 -5q0 -2 8 -14l55 -73q4 -9 5 -8l2 3q2 5 4 8 q58 61 69 75q1 2 2 3.5t2 2.5t1 2q0 6 -21 6h-10q-10 0 -10 12q0 7 1.5 9.5t9.5 2.5t22 -1t23 -1q10 0 24.5 1t19.5 1q11 0 11 -12t-10 -12q-5 0 -10 -2.5t-8 -5t-8 -7.5l-8 -8l-54.5 -48.5t-35.5 -32.5q-2 -6 -2 -10q0 -2 8 -13q50 -70 94 -124q8 -10 14 -10h10 q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -26 1t-32 1q-11 0 -30.5 -1t-26.5 -1q-8 0 -9.5 2t-1.5 10q0 12 8 12h8q14 0 14 6l-17 26q-21 31 -56 74q-2 6 -3 7.5t-2 0t-4 -7.5l-21.5 -25l-31.5 -36t-23 -28q-1 -2 -3 -4l-3 -3t-1.5 -2.5t-0.5 -2.5q0 -5 14 -5h22 q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -23 1t-29 1q-12 0 -27 -1t-20 -1q-7 0 -8.5 2t-1.5 10z" />
+<glyph horiz-adv-x="378" d="M20 545q0 7 1.5 9.5t9.5 2.5q7 0 27 -1t32 -1q11 0 37.5 1t33.5 1q8 0 9.5 -2t1.5 -10q0 -12 -10 -12h-15q-21 0 -21 -8q0 -10 25 -80t45 -118q14 -32 15 -32q3 0 14 32q65 186 65 200q0 6 -23 6h-18q-10 0 -10 12q0 7 1.5 9.5t9.5 2.5q7 0 26 -1t27 -1q10 0 24.5 1 t19.5 1q11 0 11 -12t-10 -12h-11q-8 0 -10 -8l-104 -272q0 -1 -36 -93q-1 -4 -5.5 -16t-5.5 -14.5l-4.5 -11.5t-6 -13l-7.5 -12t-10.5 -15l-12.5 -16q-14 -19 -34 -29q-42 -21 -50 -21q-15 0 -15 17q0 11 15 34q8 11 23 15q3 1 14 5l18 6.5t16.5 7.5t15 10.5t8.5 12.5 q35 82 35 97q0 6 -22 59.5l-59.5 141.5t-43.5 103q-4 9 -6 10.5t-11 1.5h-9q-10 0 -10 12z" />
+<glyph horiz-adv-x="345" d="M35 259q0 6 8 17q179 261 179 263q0 3 -7 3q-41 0 -121 -4q-8 0 -10.5 -0.5t-5 -2t-3.5 -4t-2 -8.5l-7 -32q-3 -9 -12 -9q-14 0 -14 5q0 1 1.5 12.5t3 27.5t2.5 25q0 4 0.5 6t2 3t3.5 1.5t6 0.5h228q19 0 19 -8q0 -1 -7 -13l-168 -246q-11 -18 -11 -20t15 -2l137 4 q8 0 10 1t3 9l7 45q1 8 2.5 9t7.5 1h5q8 0 8 -5q0 -16 -5 -76q-1 -9 -2.5 -10.5t-10.5 -1.5h-244q-18 0 -18 9z" />
+<glyph horiz-adv-x="352" d="M35 -93q0 49 55 78.5t132 42.5q6 1 6 12q0 27 -1.5 41.5t-7.5 32.5t-21 26.5t-39 8.5q-13 0 -24 -4q-16 -6 -20.5 -16.5t-5.5 -35.5q0 -13 -6 -17q-33 -21 -47 -21q-8 0 -8 12q0 46 41.5 75.5t87.5 29.5q60 0 85 -26.5t25 -77.5q0 -23 -2.5 -90t-2.5 -73q0 -24 18 -24 q2 0 16 9.5t15 9.5q2 0 6 -4.5t4 -8.5t-54 -43q-13 -9 -22 -9q-13 0 -21 12.5t-10 24.5l-3 13q-1 0 -3.5 -2t-6.5 -4.5l-7 -4.5q-56 -36 -96 -36q-39 0 -61 18.5t-22 50.5zM98 -69q0 -21 14.5 -37.5t38.5 -16.5q16 0 35 4.5t30.5 10t11.5 7.5v104q0 9 -4 9q-11 0 -50 -12 q-76 -24 -76 -69z" />
+<glyph horiz-adv-x="414" d="M10 359q0 19 4 19l47.5 5.5l50 6t22.5 2.5q6 0 6 -12q-3 -150 -3 -216q0 -31 1 -31l6 3q5 3 14 6.5l19.5 7.5t24 7t24.5 3q69 0 113.5 -46t44.5 -113q0 -75 -54.5 -118.5t-130.5 -43.5q-16 0 -40 8.5t-35 8.5q-10 0 -24 -8t-17 -8q-10 0 -10 10q0 1 1.5 29.5t2.5 66.5 t1 61q0 64 -4 208t-10 144q-2 0 -25 -2.5t-24 -2.5q-5 0 -5 5zM135 -97q0 -40 67 -40q54 0 85.5 40.5t31.5 96.5q0 53 -38 93.5t-90 40.5q-12 0 -25.5 -4t-21 -9t-7.5 -7q0 -47 -1 -126t-1 -85z" />
+<glyph horiz-adv-x="350" d="M30 -8q0 84 52.5 132t119.5 48q41 0 76.5 -24t35.5 -54q0 -10 -9 -16q-15 -11 -27 -11q-11 0 -15 9q-2 5 -6 17l-6 18t-7 14.5t-10.5 12.5t-15 7t-21.5 3q-48 0 -78 -41.5t-30 -92.5q0 -54 33.5 -93.5t92.5 -39.5q25 0 48 6t36 12t15 6q6 0 6 -7q0 -4 -14.5 -17 t-47.5 -26.5t-70 -13.5q-73 0 -115.5 41t-42.5 110z" />
+<glyph horiz-adv-x="424" d="M29 -3q0 68 48.5 114.5t119.5 46.5q14 0 27.5 -2.5t23 -6l17.5 -6.5l13 -5l4 -3q5 0 5 15q0 37 -1.5 89t-3.5 87.5t-3 35.5t-25 -3.5t-28 -3.5q-6 0 -4 13q2 11 7 12l48 7l44 6.5t19 2.5q6 0 7.5 -2.5t1.5 -15.5q0 -5 -1.5 -49.5t-3 -132.5t-1.5 -197q0 -38 2 -96 q1 -24 4.5 -31.5t13.5 -7.5q3 0 27 4q9 2 9 -8t-1.5 -13t-9.5 -4l-98 -13q-5 0 -5 8q0 1 0.5 15.5t0.5 16.5q0 8 -1.5 8.5t-10.5 -4.5q-52 -35 -99 -35q-62 0 -104 38.5t-42 119.5zM95 3q0 -58 31 -94.5t92 -36.5q19 0 44 8t25 18v201q0 10 -24.5 25.5t-52.5 15.5 q-51 0 -83 -41t-32 -96z" />
+<glyph horiz-adv-x="366" d="M30 -4q0 74 48 123.5t124 49.5q59 0 92 -37.5t33 -92.5q0 -9 -44 -9q-5 0 -93.5 2t-91.5 2q-4 0 -4 -28q0 -60 36.5 -94.5t86.5 -34.5q18 0 35.5 5.5t29.5 12.5t21.5 14.5t14.5 12.5l5 6q1 0 7 -6t6 -7q0 -4 -17.5 -22t-53.5 -37t-74 -19q-76 0 -118.5 43.5t-42.5 115.5z M98 56q0 -6 10 -6q45 0 125 4q32 1 32 3q0 50 -23 71t-50 21q-37 0 -64.5 -30.5t-29.5 -62.5z" />
+<glyph horiz-adv-x="296" d="M45 -139q0 12 10 12h32q3 0 3 49q0 16 -0.5 40t-0.5 26v47v56q0 33 -1 33h-27q-7 0 -9 2t-2 10t1.5 10t7.5 2h22q5 0 6.5 1.5t1.5 8.5q0 19 -1 37.5t-1 40.5q0 70 31.5 114t101.5 44q27 0 49 -15.5t22 -39.5q0 -13 -16 -25.5t-27 -12.5t-12 7q-7 48 -17 58q-7 8 -20 8 q-47 0 -47 -131q0 -13 -2 -81q0 -10 2.5 -12t14.5 -2h96q6 0 6 -5q0 -4 -2.5 -11t-4.5 -7h-95q-9 0 -11.5 -1.5t-2.5 -7.5v-130q0 -113 8 -113h53q10 0 10 -12q-4 -12 -10 -13q-7 0 -41.5 1t-47.5 1q-10 0 -33 -1t-36 -1q-8 0 -9.5 2.5t-1.5 10.5z" />
+<glyph horiz-adv-x="399" d="M30 -290q0 36 37.5 59t79.5 31q20 4 20 5t-18 1h-47q-27 0 -34 15q-8 17 -8 39q0 25 16 29l35.5 9.5l39.5 10.5q6 2 12 3q4 0 3.5 0.5t-4.5 1.5t-7 2q-108 29 -108 131q0 52 45.5 86.5t103.5 34.5q27 0 51.5 -11t37.5 -23l13 -11q2 0 12.5 4t26 8.5t26.5 5.5q2 0 5 -9 t3 -17q0 -5 -3 -5q-53 -5 -53 -11q0 -1 3 -8.5t6 -20t3 -27.5q0 -88 -95 -122q-27 -10 -143 -41q-4 -2 -4 -7q0 -6 4 -12.5t7 -7.5q19 -1 57 -2t63.5 -1.5t58 -6t52 -15t33.5 -29t14 -47.5q0 -62 -51.5 -98.5t-134.5 -36.5q-60 0 -109 24.5t-49 68.5zM71 -284 q0 -35 36.5 -55.5t79.5 -20.5q55 0 95.5 21.5t40.5 68.5q0 31 -45 47t-99 16q-36 0 -72 -21t-36 -56zM105 50q0 -51 33 -87t55 -36q27 0 52.5 34t25.5 84q0 47 -21.5 73.5t-58.5 26.5q-35 0 -60.5 -28t-25.5 -67z" />
+<glyph horiz-adv-x="439" d="M25 360q0 14 4 15q15 2 47.5 6t54.5 7t24 3q4 0 4 -16q-8 -134 -8 -244q0 -10 1.5 -11t7.5 4q62 36 110 36q33 0 54.5 -12.5t31.5 -38t13.5 -51t3.5 -62.5v-114q0 -7 1.5 -8.5t7.5 -1.5h21q11 0 11 -12t-12 -12q-7 0 -26.5 1t-32.5 1q-10 0 -34.5 -1t-37.5 -1 q-8 0 -9.5 2t-1.5 10q0 12 11 12h31q6 0 6.5 1t1.5 8q2 32 2 138q0 46 -19.5 75t-57.5 29q-37 0 -71 -17q-13 -7 -13 -11l1 -118q0 -71 1 -91q1 -10 2 -12t7 -2h31q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -31.5 1t-38.5 1q-10 0 -34.5 -1t-37.5 -1q-8 0 -9.5 2t-1.5 10 q0 12 9 12h32q6 0 7 2t1 12q1 74 1 174q0 175 -7 282q-1 14 -5 14q-1 0 -24 -3t-25 -3q-3 0 -3 10z" />
+<glyph horiz-adv-x="220" d="M25 134q0 3 4 12q2 5 3.5 5.5t9.5 1.5q80 5 97 5q6 0 6 -5v-136q0 -90 3 -135q0 -10 8 -10h30q9 0 9 -12t-9 -12q-7 0 -34 1t-38 1t-40 -1t-36 -1q-6 0 -7.5 2t-1.5 10q0 7 1.5 9.5t9.5 2.5h34q7 0 8 1.5t1 7.5q1 23 1 70q0 110 -3 168q-1 9 -3 11t-8 2q-1 0 -20 -1 t-21 -1q-4 0 -4 4zM67 290q0 22 18 35.5t37 13.5q37 0 37 -36q0 -21 -17.5 -35.5t-37.5 -14.5q-15 0 -26 9.5t-11 27.5z" />
+<glyph horiz-adv-x="245" d="M5 -352q0 15 12 31.5t21 16.5q10 0 25.5 -2t18.5 -2q31 0 31 26q0 7 -2 44.5t-4 114t-2 179.5q0 38 -2 59q-1 11 -8 11q-3 0 -28.5 -1.5t-29.5 -1.5q-2 0 -2 4q0 7 3 14q11 8 13 8q19 0 45.5 1.5l44 2.5t18.5 1q6 0 6 -19q0 -16 2.5 -109.5t2.5 -153.5q0 -71 -9.5 -116 t-36.5 -79q-11 -13 -48 -30t-55 -17q-16 0 -16 18zM60 311q0 22 17.5 35.5t36.5 13.5q38 0 38 -36q0 -21 -17.5 -35.5t-37.5 -14.5q-15 0 -26 9.5t-11 27.5z" />
+<glyph horiz-adv-x="406" d="M25 368v8q0 12 9 13q85 8 111 8q7 0 7 -10l-9 -360q0 -6 2 -7.5t11 -1.5h17q9 0 24 17q36 48 61 89q6 7 5.5 10t-12.5 3h-14q-9 0 -9 12t11 12q3 0 20 -1t27 -1q8 0 24 1t22 1q10 0 10 -12t-9 -12h-26q-4 0 -37 -38.5l-49 -58.5l-2 -2q-7 -7 -4 -10q1 0 2 -2q4 -3 6 -5 l127 -139q9 -10 18 -10h8q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-5 0 -25 1t-32 1t-32.5 -1t-25.5 -1q-8 0 -9.5 2t-1.5 10q0 12 12 12h10q15 0 5 12l-97 106q-7 10 -9 11.5t-8 1.5h-11q-6 0 -7 -2.5t-1 -9.5v-105q0 -10 1.5 -12t7.5 -2h19q10 0 10 -12q0 -7 -1.5 -9.5 t-9.5 -2.5q-7 0 -25 1t-32 1q-16 0 -41 -1t-27 -1q-8 0 -9.5 2t-1.5 10q0 12 10 12h33q6 0 7 2t1 12v154q0 324 -8 324q-2 0 -21 -1.5t-23 -1.5q-8 0 -8 7z" />
+<glyph horiz-adv-x="223" d="M25 365q0 2 2 14q1 5 2 5.5t7 1.5q91 8 103 8q6 0 6 -12q1 -126 3 -263.5t2 -215.5q0 -31 7 -31h31q10 0 10 -12t-10 -12q-7 0 -30 1t-36 1q-10 0 -37.5 -1t-40.5 -1q-8 0 -9.5 2t-1.5 10q0 12 10 12h41q3 0 3 68q0 309 -10 410q0 3 -1 7q0 6 -1 7.5t-6 1.5q-2 0 -19 -2 t-18 -2q-7 0 -7 3z" />
+<glyph horiz-adv-x="620" d="M25 129q0 9 3 16q2 5 3 5.5t10 1.5q70 4 84 4q10 0 11.5 -1t1.5 -8v-26q0 -12 1 -13q1 0 7 5q64 49 116 49q18 0 31.5 -4.5t21 -11t12 -13.5t6.5 -11l2 -5q2 0 11 6q21 14 51 25.5t52 11.5q57 0 80 -30t23 -86q0 -37 -1 -93t-1 -71q0 -8 8 -8h25q12 0 12 -12t-12 -12 q-7 0 -29 1t-35 1q-10 0 -34 -1t-37 -1q-8 0 -9.5 2t-1.5 10q0 12 12 12h32q8 0 8 150q0 100 -72 100q-18 0 -37.5 -5.5t-30 -11.5t-10.5 -7t1.5 -7t3 -19.5t1.5 -34.5v-133q0 -32 2 -32h27q11 0 11 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -27.5 1t-33.5 1q-10 0 -29 -1t-32 -1 q-8 0 -10.5 2t-2.5 10q0 12 10 12h31q6 0 6 76v32t-0.5 29t-0.5 13q0 33 -2.5 51t-16 33.5t-39.5 15.5q-45 0 -80 -24q-8 -6 -8 -14v-178q0 -24 2 -29t13 -5h17q11 0 11 -12t-12 -12q-7 0 -29.5 1t-33.5 1t-38 -1t-32 -1q-10 0 -10 12t9 12h31q7 0 10 25q2 16 2 84v86 q0 62 -4 62q-1 0 -22.5 -1.5t-23.5 -1.5q-4 0 -4 3z" />
+<glyph horiz-adv-x="435" d="M25 129q0 6 4 14q2 5 3 5.5t10 1.5q4 0 40 2.5t49 3.5q10 1 10.5 0t0.5 -9v-37q0 -6 10 3l2 2l15 10.5t19.5 12.5l19.5 10t25 8.5t27 2.5q66 0 88 -36.5t22 -105.5q0 -26 -2.5 -79.5t-2.5 -55.5q0 -7 1.5 -8.5t7.5 -1.5h24q8 0 10 -2t2 -10q0 -12 -10 -12q-7 0 -28.5 1 t-34.5 1q-10 0 -34 -1t-37 -1q-9 0 -10.5 2t-1.5 10t2 10t8 2h29q6 0 7 1t2 8q4 38 4 138q0 102 -77 102q-25 0 -71 -23q-14 -6 -14 -18q0 -32 -0.5 -96.5t-0.5 -96.5q0 -7 0.5 -9.5t2.5 -4t7 -1.5h29q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -30.5 1t-36.5 1 q-10 0 -35.5 -1t-38.5 -1q-8 0 -9 2t-1 10q0 12 9 12h31q6 0 6.5 2t1.5 12q5 78 5 153q0 55 -2 79q-1 10 -2 10.5t-8 0.5q-1 0 -21.5 -2t-22.5 -2t-2 4z" />
+<glyph horiz-adv-x="384" d="M30 -3q0 73 48 122.5t124 49.5q67 0 109.5 -46.5t42.5 -114.5q0 -76 -44 -123.5t-121 -47.5q-67 0 -113 47t-46 113zM94 -14q0 -49 25.5 -87.5t69.5 -38.5q99 0 99 154q0 52 -24.5 92t-71.5 40q-98 0 -98 -160z" />
+<glyph horiz-adv-x="432" d="M25 130q0 4 2.5 12t4.5 8q25 1 52.5 2t43 2t16.5 1q4 0 6 -0.5t3 -3t1 -8.5v-21q0 -9 1 -9t16 13q41 32 89 32q69 0 105.5 -42.5t36.5 -109.5q0 -65 -48 -114.5t-125 -49.5q-23 0 -55 10q-17 6 -18 4q-1 -1 -1 -4l2 -150q2 -53 5 -53h56q10 0 10 -12q-4 -12 -10 -13 q-7 0 -41.5 1t-47.5 1q-10 0 -39 -1t-42 -1q-8 0 -9.5 2.5t-1.5 10.5q0 12 10 12h45q3 0 3 127v112q0 151 -7 228q-1 8 -2.5 9.5t-10.5 1.5q-3 0 -20.5 -1t-19.5 -1q-10 0 -10 5zM155 -108q0 -13 24 -23t45 -10q52 0 82.5 43.5t30.5 96.5q0 57 -30 92t-75 35q-31 0 -51 -10 q-26 -13 -26 -26v-198z" />
+<glyph horiz-adv-x="413" d="M30 -5q0 70 49.5 115.5t124.5 45.5q27 0 60 -11.5t38 -11.5q8 0 17 14.5t15 14.5q13 0 13 -10q-4 -95 -4 -238v-132q0 -130 2 -130h33q10 0 10 -13q0 -8 -1.5 -10.5t-9.5 -2.5h-23q-20 0 -40.5 -1t-35.5 -2.5t-27 -3t-19 -2.5t-8 -1q-8 0 -10 2.5t-2 8.5q0 14 10 15 q8 1 17.5 2l14 1.5t9.5 1t6.5 2t4 3t2.5 5t0.5 7t0.5 10.5l2 177q0 7 -3 7q-4 0 -13 -3q-50 -15 -90 -15q-56 0 -99.5 38.5t-43.5 116.5zM94 3q0 -52 31.5 -94t83.5 -42q71 0 71 17v198q0 24 -22 37t-61 13q-50 0 -76.5 -38.5t-26.5 -90.5z" />
+<glyph horiz-adv-x="291" d="M30 130q0 6 2 11t3 5.5t10 1.5q36 3 86 3q10 0 10.5 -0.5t0.5 -7.5q0 -8 0.5 -26.5t0.5 -26.5v-15l8 21q13 33 34 52.5t40 19.5q16 0 31 -14t15 -23q0 -8 -10.5 -21.5t-19.5 -13.5t-24.5 12t-23.5 12q-45 0 -45 -159q0 -88 10 -88h49q11 0 11 -12q0 -13 -11 -13 q-7 0 -41 1t-47 1q-10 0 -34 -1t-37 -1q-8 0 -9 2t-1 11q0 12 9 12h34q8 0 8 107q0 148 -6 148q-1 0 -25 -1t-26 -1t-2 4z" />
+<glyph horiz-adv-x="276" d="M40 -110q0 9 8 20t13 11q2 0 3.5 -2.5t4 -8t6.5 -10.5q29 -40 66 -40q20 0 33.5 13.5t13.5 38.5q0 26 -16.5 41.5t-46.5 30.5q-2 1 -13 6t-13.5 6.5l-12 7t-12.5 8l-10 8.5t-9.5 11l-6 12.5t-5 15.5t-1.5 17q0 39 32.5 65t74.5 26q38 0 58 -18.5t20 -36.5q0 -6 -10.5 -11 t-17.5 -5q-6 0 -10.5 13t-14 26t-29.5 13t-35.5 -13.5t-15.5 -42.5q0 -16 10 -29.5t19 -19t30 -16.5q57 -32 72 -50q16 -19 16 -43q0 -43 -31 -69t-75 -26q-35 0 -65 16t-30 35z" />
+<glyph horiz-adv-x="258" d="M40 122q0 3 3 6l78 105q5 5 8 5q9 0 9 -8q0 -1 -1.5 -16.5t-3 -33.5t-1.5 -24q0 -8 9 -8h76q9 0 10 -2t-2 -14q-3 -15 -11 -15h-79q-3 0 -3 -36v-149q0 -15 1.5 -23.5t11 -16.5t26.5 -8q14 0 28.5 3t24 6t11.5 3q3 0 3 -13q0 -2 -19 -12t-45 -19.5t-41 -9.5 q-33 0 -46.5 16.5t-13.5 38.5q2 114 2 171q0 48 -10 48h-20q-5 0 -5 6z" />
+<glyph horiz-adv-x="440" d="M25 137q0 3 3 10t13 8q76 4 93 4q6 0 6 -5v-217q0 -54 89 -54q73 0 73 13v93q0 147 -6 147q-1 0 -20.5 -1t-21.5 -1q-3 0 -3 3q2 16 5 17q2 2 6 2q64 4 96 4q6 0 6 -4q-1 -191 -1 -240q0 -30 2.5 -38.5t12.5 -8.5q1 0 16.5 2t16.5 2q4 0 4 -9t-1.5 -10.5t-10.5 -3.5 q-11 -2 -33 -5t-37 -5.5t-18 -2.5q-8 0 -9 11q-3 33 -4 33l-22 -11q-21 -10 -53.5 -20t-59.5 -10q-54 0 -72 28.5t-18 77.5v126v17q0 44 -9 44q-1 0 -19.5 -0.5t-20.5 -0.5q-3 0 -3 5z" />
+<glyph horiz-adv-x="378" d="M20 145q0 12 10 12q6 0 24 -1t30 -1q11 0 36.5 1t31.5 1q7 0 8.5 -2t1.5 -10q0 -12 -9 -12h-24q-15 0 -15 -6q0 -2 14 -41.5l33 -90.5l29 -76q7 -15 9 -15t7 13q76 180 76 203q0 13 -8 13h-21q-10 0 -10 12t12 12q2 0 20.5 -1t28.5 -1t24 1t20 1q7 0 8.5 -2t1.5 -10 q0 -12 -10 -12h-13q-6 0 -11 -8q-9 -15 -47 -105.5t-57 -129.5q-7 -14 -19.5 -28.5t-21.5 -27.5q-5 -6 -9 -6q-5 0 -9 8t-9 25.5t-6 19.5q-28 84 -90 240q-4 9 -6.5 10.5t-11.5 1.5h-8q-10 0 -10 12z" />
+<glyph horiz-adv-x="578" d="M20 145q0 12 10 12q7 0 24.5 -1t30.5 -1q11 0 37 1t33 1q8 0 9.5 -2t1.5 -10q0 -12 -9 -12h-18q-13 0 -13 -6q0 -2 12.5 -41.5l30 -91t27.5 -75.5q4 -13 6 -13t8 18q49 105 67 147q6 21 6 29q0 5 -4 17q-6 16 -28 16h-9q-10 0 -10 12q0 7 1.5 9.5t9.5 2.5q9 0 27 -1 t34 -1q11 0 30.5 1t29.5 1q8 0 9.5 -2t1.5 -10q0 -12 -10 -12h-17q-10 0 -10 -6q0 -2 11.5 -41.5l27.5 -91t26 -75.5q9 -19 10 -19q2 0 9 18q14 33 40.5 112.5t26.5 93.5q0 9 -10 9h-24q-11 0 -11 12t12 12q2 0 20.5 -1t28.5 -1q11 0 26.5 1t16.5 1q7 0 8.5 -2t1.5 -10 q0 -12 -10 -12h-5q-7 0 -11 -8q-7 -14 -41.5 -104t-54.5 -131q-7 -14 -17.5 -27.5t-19.5 -28.5q-2 -6 -9 -6q-9 0 -25 53q-23 82 -56 181q-4 14 -6 14q-4 0 -8 -14q-6 -13 -22.5 -52l-29 -67t-24.5 -49q-7 -14 -19.5 -28t-22.5 -32q-4 -6 -10 -6q-11 0 -27 57q-3 11 -17 50 l-34 94l-33 92q-3 9 -5.5 10.5t-11.5 1.5h-9q-10 0 -10 12z" />
+<glyph horiz-adv-x="392" d="M15 -140q0 12 9 12q11 0 17 3.5t21 19.5l98 97q6 7 5.5 8t-5.5 7l-86 114q-7 9 -9.5 10.5t-11.5 1.5h-13q-10 0 -10 12q0 7 1.5 9.5t9.5 2.5q7 0 30 -1t36 -1q11 0 26.5 1t22.5 1q8 0 9.5 -2t1.5 -10q0 -12 -9 -12q-14 0 -14 -5q0 -2 8 -14l55 -73q4 -9 5 -8l2 3q2 5 4 8 q58 61 69 75q1 2 2 3.5t2 2.5t1 2q0 6 -21 6h-10q-10 0 -10 12q0 7 1.5 9.5t9.5 2.5t22 -1t23 -1q10 0 24.5 1t19.5 1q11 0 11 -12t-10 -12q-5 0 -10 -2.5t-8 -5t-8 -7.5l-8 -8l-54.5 -48.5t-35.5 -32.5q-2 -6 -2 -10q0 -2 8 -13q50 -70 94 -124q8 -10 14 -10h10 q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -26 1t-32 1q-11 0 -30.5 -1t-26.5 -1q-8 0 -9.5 2t-1.5 10q0 12 8 12h8q14 0 14 6l-17 26q-21 31 -56 74q-2 6 -3 7.5t-2 0t-4 -7.5l-21.5 -25l-31.5 -36t-23 -28q-1 -2 -3 -4l-3 -3t-1.5 -2.5t-0.5 -2.5q0 -5 14 -5h22 q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -23 1t-29 1q-12 0 -27 -1t-20 -1q-7 0 -8.5 2t-1.5 10z" />
+<glyph horiz-adv-x="378" d="M20 145q0 7 1.5 9.5t9.5 2.5q7 0 27 -1t32 -1q11 0 37.5 1t33.5 1q8 0 9.5 -2t1.5 -10q0 -12 -10 -12h-15q-21 0 -21 -8q0 -10 25 -80t45 -118q14 -32 15 -32q3 0 14 32q65 186 65 200q0 6 -23 6h-18q-10 0 -10 12q0 7 1.5 9.5t9.5 2.5q7 0 26 -1t27 -1q10 0 24.5 1 t19.5 1q11 0 11 -12t-10 -12h-11q-8 0 -10 -8l-104 -272q0 -1 -36 -93q-1 -4 -5.5 -16t-5.5 -14.5l-4.5 -11.5t-6 -13l-7.5 -12t-10.5 -15l-12.5 -16q-14 -19 -34 -29q-42 -21 -50 -21q-15 0 -15 17q0 11 15 34q8 11 23 15q3 1 14 5l18 6.5t16.5 7.5t15 10.5t8.5 12.5 q35 82 35 97q0 6 -22 59.5l-59.5 141.5t-43.5 103q-4 9 -6 10.5t-11 1.5h-9q-10 0 -10 12z" />
+<glyph horiz-adv-x="345" d="M35 -141q0 6 8 17q179 261 179 263q0 3 -7 3q-41 0 -121 -4q-8 0 -10.5 -0.5t-5 -2t-3.5 -4t-2 -8.5l-7 -32q-3 -9 -12 -9q-14 0 -14 5q0 1 1.5 12.5t3 27.5t2.5 25q0 4 0.5 6t2 3t3.5 1.5t6 0.5h228q19 0 19 -8q0 -1 -7 -13l-168 -246q-11 -18 -11 -20t15 -2l137 4 q8 0 10 1t3 9l7 45q1 8 2.5 9t7.5 1h5q8 0 8 -5q0 -16 -5 -76q-1 -9 -2.5 -10.5t-10.5 -1.5h-244q-18 0 -18 9z" />
+<glyph horiz-adv-x="352" d="M35 407q0 49 55 78.5t132 42.5q6 1 6 12q0 27 -1.5 41.5t-7.5 32.5t-21 26.5t-39 8.5q-13 0 -24 -4q-16 -6 -20.5 -16.5t-5.5 -35.5q0 -13 -6 -17q-33 -21 -47 -21q-8 0 -8 12q0 46 41.5 75.5t87.5 29.5q60 0 85 -26.5t25 -77.5q0 -23 -2.5 -90t-2.5 -73q0 -24 18 -24 q2 0 16 9.5t15 9.5q2 0 6 -4.5t4 -8.5t-54 -43q-13 -9 -22 -9q-13 0 -21 12.5t-10 24.5l-3 13q-1 0 -3.5 -2t-6.5 -4.5l-7 -4.5q-56 -36 -96 -36q-39 0 -61 18.5t-22 50.5zM98 431q0 -21 14.5 -37.5t38.5 -16.5q16 0 35 4.5t30.5 10t11.5 7.5v104q0 9 -4 9q-11 0 -50 -12 q-76 -24 -76 -69z" />
+<glyph horiz-adv-x="414" d="M10 859q0 19 4 19l47.5 5.5l50 6t22.5 2.5q6 0 6 -12q-3 -150 -3 -216q0 -31 1 -31l6 3q5 3 14 6.5l19.5 7.5t24 7t24.5 3q69 0 113.5 -46t44.5 -113q0 -75 -54.5 -118.5t-130.5 -43.5q-16 0 -40 8.5t-35 8.5q-10 0 -24 -8t-17 -8q-10 0 -10 10q0 1 1.5 29.5t2.5 66.5 t1 61q0 64 -4 208t-10 144q-2 0 -25 -2.5t-24 -2.5q-5 0 -5 5zM135 403q0 -40 67 -40q54 0 85.5 40.5t31.5 96.5q0 53 -38 93.5t-90 40.5q-12 0 -25.5 -4t-21 -9t-7.5 -7q0 -47 -1 -126t-1 -85z" />
+<glyph horiz-adv-x="350" d="M30 492q0 84 52.5 132t119.5 48q41 0 76.5 -24t35.5 -54q0 -10 -9 -16q-15 -11 -27 -11q-11 0 -15 9q-2 5 -6 17l-6 18t-7 14.5t-10.5 12.5t-15 7t-21.5 3q-48 0 -78 -41.5t-30 -92.5q0 -54 33.5 -93.5t92.5 -39.5q25 0 48 6t36 12t15 6q6 0 6 -7q0 -4 -14.5 -17 t-47.5 -26.5t-70 -13.5q-73 0 -115.5 41t-42.5 110z" />
+<glyph horiz-adv-x="424" d="M29 497q0 68 48.5 114.5t119.5 46.5q14 0 27.5 -2.5t23 -6l17.5 -6.5l13 -5l4 -3q5 0 5 15q0 37 -1.5 89t-3.5 87.5t-3 35.5t-25 -3.5t-28 -3.5q-6 0 -4 13q2 11 7 12l48 7l44 6.5t19 2.5q6 0 7.5 -2.5t1.5 -15.5q0 -5 -1.5 -49.5t-3 -132.5t-1.5 -197q0 -38 2 -96 q1 -24 4.5 -31.5t13.5 -7.5q3 0 27 4q9 2 9 -8t-1.5 -13t-9.5 -4l-98 -13q-5 0 -5 8q0 1 0.5 15.5t0.5 16.5q0 8 -1.5 8.5t-10.5 -4.5q-52 -35 -99 -35q-62 0 -104 38.5t-42 119.5zM95 503q0 -58 31 -94.5t92 -36.5q19 0 44 8t25 18v201q0 10 -24.5 25.5t-52.5 15.5 q-51 0 -83 -41t-32 -96z" />
+<glyph horiz-adv-x="366" d="M30 496q0 74 48 123.5t124 49.5q59 0 92 -37.5t33 -92.5q0 -9 -44 -9q-5 0 -93.5 2t-91.5 2q-4 0 -4 -28q0 -60 36.5 -94.5t86.5 -34.5q18 0 35.5 5.5t29.5 12.5t21.5 14.5t14.5 12.5l5 6q1 0 7 -6t6 -7q0 -4 -17.5 -22t-53.5 -37t-74 -19q-76 0 -118.5 43.5t-42.5 115.5 zM98 556q0 -6 10 -6q45 0 125 4q32 1 32 3q0 50 -23 71t-50 21q-37 0 -64.5 -30.5t-29.5 -62.5z" />
+<glyph horiz-adv-x="296" d="M45 361q0 12 10 12h32q3 0 3 49q0 16 -0.5 40t-0.5 26v47v56q0 33 -1 33h-27q-7 0 -9 2t-2 10t1.5 10t7.5 2h22q5 0 6.5 1.5t1.5 8.5q0 19 -1 37.5t-1 40.5q0 70 31.5 114t101.5 44q27 0 49 -15.5t22 -39.5q0 -13 -16 -25.5t-27 -12.5t-12 7q-7 48 -17 58q-7 8 -20 8 q-47 0 -47 -131q0 -13 -2 -81q0 -10 2.5 -12t14.5 -2h96q6 0 6 -5q0 -4 -2.5 -11t-4.5 -7h-95q-9 0 -11.5 -1.5t-2.5 -7.5v-130q0 -113 8 -113h53q10 0 10 -12q-4 -12 -10 -13q-7 0 -41.5 1t-47.5 1q-10 0 -33 -1t-36 -1q-8 0 -9.5 2.5t-1.5 10.5z" />
+<glyph horiz-adv-x="399" d="M30 210q0 36 37.5 59t79.5 31q20 4 20 5t-18 1h-47q-27 0 -34 15q-8 17 -8 39q0 25 16 29l35.5 9.5l39.5 10.5q6 2 12 3q4 0 3.5 0.5t-4.5 1.5t-7 2q-108 29 -108 131q0 52 45.5 86.5t103.5 34.5q27 0 51.5 -11t37.5 -23l13 -11q2 0 12.5 4t26 8.5t26.5 5.5q2 0 5 -9 t3 -17q0 -5 -3 -5q-53 -5 -53 -11q0 -1 3 -8.5t6 -20t3 -27.5q0 -88 -95 -122q-27 -10 -143 -41q-4 -2 -4 -7q0 -6 4 -12.5t7 -7.5q19 -1 57 -2t63.5 -1.5t58 -6t52 -15t33.5 -29t14 -47.5q0 -62 -51.5 -98.5t-134.5 -36.5q-60 0 -109 24.5t-49 68.5zM71 216 q0 -35 36.5 -55.5t79.5 -20.5q55 0 95.5 21.5t40.5 68.5q0 31 -45 47t-99 16q-36 0 -72 -21t-36 -56zM105 550q0 -51 33 -87t55 -36q27 0 52.5 34t25.5 84q0 47 -21.5 73.5t-58.5 26.5q-35 0 -60.5 -28t-25.5 -67z" />
+<glyph horiz-adv-x="439" d="M25 860q0 14 4 15q15 2 47.5 6t54.5 7t24 3q4 0 4 -16q-8 -134 -8 -244q0 -10 1.5 -11t7.5 4q62 36 110 36q33 0 54.5 -12.5t31.5 -38t13.5 -51t3.5 -62.5v-114q0 -7 1.5 -8.5t7.5 -1.5h21q11 0 11 -12t-12 -12q-7 0 -26.5 1t-32.5 1q-10 0 -34.5 -1t-37.5 -1 q-8 0 -9.5 2t-1.5 10q0 12 11 12h31q6 0 6.5 1t1.5 8q2 32 2 138q0 46 -19.5 75t-57.5 29q-37 0 -71 -17q-13 -7 -13 -11l1 -118q0 -71 1 -91q1 -10 2 -12t7 -2h31q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -31.5 1t-38.5 1q-10 0 -34.5 -1t-37.5 -1q-8 0 -9.5 2t-1.5 10 q0 12 9 12h32q6 0 7 2t1 12q1 74 1 174q0 175 -7 282q-1 14 -5 14q-1 0 -24 -3t-25 -3q-3 0 -3 10z" />
+<glyph horiz-adv-x="220" d="M25 634q0 3 4 12q2 5 3.5 5.5t9.5 1.5q80 5 97 5q6 0 6 -5v-136q0 -90 3 -135q0 -10 8 -10h30q9 0 9 -12t-9 -12q-7 0 -34 1t-38 1t-40 -1t-36 -1q-6 0 -7.5 2t-1.5 10q0 7 1.5 9.5t9.5 2.5h34q7 0 8 1.5t1 7.5q1 23 1 70q0 110 -3 168q-1 9 -3 11t-8 2q-1 0 -20 -1 t-21 -1q-4 0 -4 4zM67 790q0 22 18 35.5t37 13.5q37 0 37 -36q0 -21 -17.5 -35.5t-37.5 -14.5q-15 0 -26 9.5t-11 27.5z" />
+<glyph horiz-adv-x="245" d="M5 148q0 15 12 31.5t21 16.5q10 0 25.5 -2t18.5 -2q31 0 31 26q0 7 -2 44.5t-4 114t-2 179.5q0 38 -2 59q-1 11 -8 11q-3 0 -28.5 -1.5t-29.5 -1.5q-2 0 -2 4q0 7 3 14q11 8 13 8q19 0 45.5 1.5l44 2.5t18.5 1q6 0 6 -19q0 -16 2.5 -109.5t2.5 -153.5q0 -71 -9.5 -116 t-36.5 -79q-11 -13 -48 -30t-55 -17q-16 0 -16 18zM60 811q0 22 17.5 35.5t36.5 13.5q38 0 38 -36q0 -21 -17.5 -35.5t-37.5 -14.5q-15 0 -26 9.5t-11 27.5z" />
+<glyph horiz-adv-x="406" d="M25 868v8q0 12 9 13q85 8 111 8q7 0 7 -10l-9 -360q0 -6 2 -7.5t11 -1.5h17q9 0 24 17q36 48 61 89q6 7 5.5 10t-12.5 3h-14q-9 0 -9 12t11 12q3 0 20 -1t27 -1q8 0 24 1t22 1q10 0 10 -12t-9 -12h-26q-4 0 -37 -38.5l-49 -58.5l-2 -2q-7 -7 -4 -10q1 0 2 -2q4 -3 6 -5 l127 -139q9 -10 18 -10h8q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-5 0 -25 1t-32 1t-32.5 -1t-25.5 -1q-8 0 -9.5 2t-1.5 10q0 12 12 12h10q15 0 5 12l-97 106q-7 10 -9 11.5t-8 1.5h-11q-6 0 -7 -2.5t-1 -9.5v-105q0 -10 1.5 -12t7.5 -2h19q10 0 10 -12q0 -7 -1.5 -9.5 t-9.5 -2.5q-7 0 -25 1t-32 1q-16 0 -41 -1t-27 -1q-8 0 -9.5 2t-1.5 10q0 12 10 12h33q6 0 7 2t1 12v154q0 324 -8 324q-2 0 -21 -1.5t-23 -1.5q-8 0 -8 7z" />
+<glyph horiz-adv-x="223" d="M25 865q0 2 2 14q1 5 2 5.5t7 1.5q91 8 103 8q6 0 6 -12q1 -126 3 -263.5t2 -215.5q0 -31 7 -31h31q10 0 10 -12t-10 -12q-7 0 -30 1t-36 1q-10 0 -37.5 -1t-40.5 -1q-8 0 -9.5 2t-1.5 10q0 12 10 12h41q3 0 3 68q0 309 -10 410q0 3 -1 7q0 6 -1 7.5t-6 1.5q-2 0 -19 -2 t-18 -2q-7 0 -7 3z" />
+<glyph horiz-adv-x="620" d="M25 629q0 9 3 16q2 5 3 5.5t10 1.5q70 4 84 4q10 0 11.5 -1t1.5 -8v-26q0 -12 1 -13q1 0 7 5q64 49 116 49q18 0 31.5 -4.5t21 -11t12 -13.5t6.5 -11l2 -5q2 0 11 6q21 14 51 25.5t52 11.5q57 0 80 -30t23 -86q0 -37 -1 -93t-1 -71q0 -8 8 -8h25q12 0 12 -12t-12 -12 q-7 0 -29 1t-35 1q-10 0 -34 -1t-37 -1q-8 0 -9.5 2t-1.5 10q0 12 12 12h32q8 0 8 150q0 100 -72 100q-18 0 -37.5 -5.5t-30 -11.5t-10.5 -7t1.5 -7t3 -19.5t1.5 -34.5v-133q0 -32 2 -32h27q11 0 11 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -27.5 1t-33.5 1q-10 0 -29 -1t-32 -1 q-8 0 -10.5 2t-2.5 10q0 12 10 12h31q6 0 6 76v32t-0.5 29t-0.5 13q0 33 -2.5 51t-16 33.5t-39.5 15.5q-45 0 -80 -24q-8 -6 -8 -14v-178q0 -24 2 -29t13 -5h17q11 0 11 -12t-12 -12q-7 0 -29.5 1t-33.5 1t-38 -1t-32 -1q-10 0 -10 12t9 12h31q7 0 10 25q2 16 2 84v86 q0 62 -4 62q-1 0 -22.5 -1.5t-23.5 -1.5q-4 0 -4 3z" />
+<glyph horiz-adv-x="435" d="M25 629q0 6 4 14q2 5 3 5.5t10 1.5q4 0 40 2.5t49 3.5q10 1 10.5 0t0.5 -9v-37q0 -6 10 3l2 2l15 10.5t19.5 12.5l19.5 10t25 8.5t27 2.5q66 0 88 -36.5t22 -105.5q0 -26 -2.5 -79.5t-2.5 -55.5q0 -7 1.5 -8.5t7.5 -1.5h24q8 0 10 -2t2 -10q0 -12 -10 -12q-7 0 -28.5 1 t-34.5 1q-10 0 -34 -1t-37 -1q-9 0 -10.5 2t-1.5 10t2 10t8 2h29q6 0 7 1t2 8q4 38 4 138q0 102 -77 102q-25 0 -71 -23q-14 -6 -14 -18q0 -32 -0.5 -96.5t-0.5 -96.5q0 -7 0.5 -9.5t2.5 -4t7 -1.5h29q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -30.5 1t-36.5 1 q-10 0 -35.5 -1t-38.5 -1q-8 0 -9 2t-1 10q0 12 9 12h31q6 0 6.5 2t1.5 12q5 78 5 153q0 55 -2 79q-1 10 -2 10.5t-8 0.5q-1 0 -21.5 -2t-22.5 -2t-2 4z" />
+<glyph horiz-adv-x="384" d="M30 497q0 73 48 122.5t124 49.5q67 0 109.5 -46.5t42.5 -114.5q0 -76 -44 -123.5t-121 -47.5q-67 0 -113 47t-46 113zM94 486q0 -49 25.5 -87.5t69.5 -38.5q99 0 99 154q0 52 -24.5 92t-71.5 40q-98 0 -98 -160z" />
+<glyph horiz-adv-x="432" d="M25 630q0 4 2.5 12t4.5 8q25 1 52.5 2t43 2t16.5 1q4 0 6 -0.5t3 -3t1 -8.5v-21q0 -9 1 -9t16 13q41 32 89 32q69 0 105.5 -42.5t36.5 -109.5q0 -65 -48 -114.5t-125 -49.5q-23 0 -55 10q-17 6 -18 4q-1 -1 -1 -4l2 -150q2 -53 5 -53h56q10 0 10 -12q-4 -12 -10 -13 q-7 0 -41.5 1t-47.5 1q-10 0 -39 -1t-42 -1q-8 0 -9.5 2.5t-1.5 10.5q0 12 10 12h45q3 0 3 127v112q0 151 -7 228q-1 8 -2.5 9.5t-10.5 1.5q-3 0 -20.5 -1t-19.5 -1q-10 0 -10 5zM155 392q0 -13 24 -23t45 -10q52 0 82.5 43.5t30.5 96.5q0 57 -30 92t-75 35q-31 0 -51 -10 q-26 -13 -26 -26v-198z" />
+<glyph horiz-adv-x="413" d="M30 495q0 70 49.5 115.5t124.5 45.5q27 0 60 -11.5t38 -11.5q8 0 17 14.5t15 14.5q13 0 13 -10q-4 -95 -4 -238v-132q0 -130 2 -130h33q10 0 10 -13q0 -8 -1.5 -10.5t-9.5 -2.5h-23q-20 0 -40.5 -1t-35.5 -2.5t-27 -3t-19 -2.5t-8 -1q-8 0 -10 2.5t-2 8.5q0 14 10 15 q8 1 17.5 2l14 1.5t9.5 1t6.5 2t4 3t2.5 5t0.5 7t0.5 10.5l2 177q0 7 -3 7q-4 0 -13 -3q-50 -15 -90 -15q-56 0 -99.5 38.5t-43.5 116.5zM94 503q0 -52 31.5 -94t83.5 -42q71 0 71 17v198q0 24 -22 37t-61 13q-50 0 -76.5 -38.5t-26.5 -90.5z" />
+<glyph horiz-adv-x="291" d="M30 630q0 6 2 11t3 5.5t10 1.5q36 3 86 3q10 0 10.5 -0.5t0.5 -7.5q0 -8 0.5 -26.5t0.5 -26.5v-15l8 21q13 33 34 52.5t40 19.5q16 0 31 -14t15 -23q0 -8 -10.5 -21.5t-19.5 -13.5t-24.5 12t-23.5 12q-45 0 -45 -159q0 -88 10 -88h49q11 0 11 -12q0 -13 -11 -13 q-7 0 -41 1t-47 1q-10 0 -34 -1t-37 -1q-8 0 -9 2t-1 11q0 12 9 12h34q8 0 8 107q0 148 -6 148q-1 0 -25 -1t-26 -1t-2 4z" />
+<glyph horiz-adv-x="276" d="M40 390q0 9 8 20t13 11q2 0 3.5 -2.5t4 -8t6.5 -10.5q29 -40 66 -40q20 0 33.5 13.5t13.5 38.5q0 26 -16.5 41.5t-46.5 30.5q-2 1 -13 6t-13.5 6.5l-12 7t-12.5 8l-10 8.5t-9.5 11l-6 12.5t-5 15.5t-1.5 17q0 39 32.5 65t74.5 26q38 0 58 -18.5t20 -36.5q0 -6 -10.5 -11 t-17.5 -5q-6 0 -10.5 13t-14 26t-29.5 13t-35.5 -13.5t-15.5 -42.5q0 -16 10 -29.5t19 -19t30 -16.5q57 -32 72 -50q16 -19 16 -43q0 -43 -31 -69t-75 -26q-35 0 -65 16t-30 35z" />
+<glyph horiz-adv-x="258" d="M40 622q0 3 3 6l78 105q5 5 8 5q9 0 9 -8q0 -1 -1.5 -16.5t-3 -33.5t-1.5 -24q0 -8 9 -8h76q9 0 10 -2t-2 -14q-3 -15 -11 -15h-79q-3 0 -3 -36v-149q0 -15 1.5 -23.5t11 -16.5t26.5 -8q14 0 28.5 3t24 6t11.5 3q3 0 3 -13q0 -2 -19 -12t-45 -19.5t-41 -9.5 q-33 0 -46.5 16.5t-13.5 38.5q2 114 2 171q0 48 -10 48h-20q-5 0 -5 6z" />
+<glyph horiz-adv-x="440" d="M25 637q0 3 3 10t13 8q76 4 93 4q6 0 6 -5v-217q0 -54 89 -54q73 0 73 13v93q0 147 -6 147q-1 0 -20.5 -1t-21.5 -1q-3 0 -3 3q2 16 5 17q2 2 6 2q64 4 96 4q6 0 6 -4q-1 -191 -1 -240q0 -30 2.5 -38.5t12.5 -8.5q1 0 16.5 2t16.5 2q4 0 4 -9t-1.5 -10.5t-10.5 -3.5 q-11 -2 -33 -5t-37 -5.5t-18 -2.5q-8 0 -9 11q-3 33 -4 33l-22 -11q-21 -10 -53.5 -20t-59.5 -10q-54 0 -72 28.5t-18 77.5v126v17q0 44 -9 44q-1 0 -19.5 -0.5t-20.5 -0.5q-3 0 -3 5z" />
+<glyph horiz-adv-x="378" d="M20 645q0 12 10 12q6 0 24 -1t30 -1q11 0 36.5 1t31.5 1q7 0 8.5 -2t1.5 -10q0 -12 -9 -12h-24q-15 0 -15 -6q0 -2 14 -41.5l33 -90.5l29 -76q7 -15 9 -15t7 13q76 180 76 203q0 13 -8 13h-21q-10 0 -10 12t12 12q2 0 20.5 -1t28.5 -1t24 1t20 1q7 0 8.5 -2t1.5 -10 q0 -12 -10 -12h-13q-6 0 -11 -8q-9 -15 -47 -105.5t-57 -129.5q-7 -14 -19.5 -28.5t-21.5 -27.5q-5 -6 -9 -6q-5 0 -9 8t-9 25.5t-6 19.5q-28 84 -90 240q-4 9 -6.5 10.5t-11.5 1.5h-8q-10 0 -10 12z" />
+<glyph horiz-adv-x="578" d="M20 645q0 12 10 12q7 0 24.5 -1t30.5 -1q11 0 37 1t33 1q8 0 9.5 -2t1.5 -10q0 -12 -9 -12h-18q-13 0 -13 -6q0 -2 12.5 -41.5l30 -91t27.5 -75.5q4 -13 6 -13t8 18q49 105 67 147q6 21 6 29q0 5 -4 17q-6 16 -28 16h-9q-10 0 -10 12q0 7 1.5 9.5t9.5 2.5q9 0 27 -1 t34 -1q11 0 30.5 1t29.5 1q8 0 9.5 -2t1.5 -10q0 -12 -10 -12h-17q-10 0 -10 -6q0 -2 11.5 -41.5l27.5 -91t26 -75.5q9 -19 10 -19q2 0 9 18q14 33 40.5 112.5t26.5 93.5q0 9 -10 9h-24q-11 0 -11 12t12 12q2 0 20.5 -1t28.5 -1q11 0 26.5 1t16.5 1q7 0 8.5 -2t1.5 -10 q0 -12 -10 -12h-5q-7 0 -11 -8q-7 -14 -41.5 -104t-54.5 -131q-7 -14 -17.5 -27.5t-19.5 -28.5q-2 -6 -9 -6q-9 0 -25 53q-23 82 -56 181q-4 14 -6 14q-4 0 -8 -14q-6 -13 -22.5 -52l-29 -67t-24.5 -49q-7 -14 -19.5 -28t-22.5 -32q-4 -6 -10 -6q-11 0 -27 57q-3 11 -17 50 l-34 94l-33 92q-3 9 -5.5 10.5t-11.5 1.5h-9q-10 0 -10 12z" />
+<glyph horiz-adv-x="392" d="M15 360q0 12 9 12q11 0 17 3.5t21 19.5l98 97q6 7 5.5 8t-5.5 7l-86 114q-7 9 -9.5 10.5t-11.5 1.5h-13q-10 0 -10 12q0 7 1.5 9.5t9.5 2.5q7 0 30 -1t36 -1q11 0 26.5 1t22.5 1q8 0 9.5 -2t1.5 -10q0 -12 -9 -12q-14 0 -14 -5q0 -2 8 -14l55 -73q4 -9 5 -8l2 3q2 5 4 8 q58 61 69 75q1 2 2 3.5t2 2.5t1 2q0 6 -21 6h-10q-10 0 -10 12q0 7 1.5 9.5t9.5 2.5t22 -1t23 -1q10 0 24.5 1t19.5 1q11 0 11 -12t-10 -12q-5 0 -10 -2.5t-8 -5t-8 -7.5l-8 -8l-54.5 -48.5t-35.5 -32.5q-2 -6 -2 -10q0 -2 8 -13q50 -70 94 -124q8 -10 14 -10h10 q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -26 1t-32 1q-11 0 -30.5 -1t-26.5 -1q-8 0 -9.5 2t-1.5 10q0 12 8 12h8q14 0 14 6l-17 26q-21 31 -56 74q-2 6 -3 7.5t-2 0t-4 -7.5l-21.5 -25l-31.5 -36t-23 -28q-1 -2 -3 -4l-3 -3t-1.5 -2.5t-0.5 -2.5q0 -5 14 -5h22 q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -23 1t-29 1q-12 0 -27 -1t-20 -1q-7 0 -8.5 2t-1.5 10z" />
+<glyph horiz-adv-x="378" d="M20 645q0 7 1.5 9.5t9.5 2.5q7 0 27 -1t32 -1q11 0 37.5 1t33.5 1q8 0 9.5 -2t1.5 -10q0 -12 -10 -12h-15q-21 0 -21 -8q0 -10 25 -80t45 -118q14 -32 15 -32q3 0 14 32q65 186 65 200q0 6 -23 6h-18q-10 0 -10 12q0 7 1.5 9.5t9.5 2.5q7 0 26 -1t27 -1q10 0 24.5 1 t19.5 1q11 0 11 -12t-10 -12h-11q-8 0 -10 -8l-104 -272q0 -1 -36 -93q-1 -4 -5.5 -16t-5.5 -14.5l-4.5 -11.5t-6 -13l-7.5 -12t-10.5 -15l-12.5 -16q-14 -19 -34 -29q-42 -21 -50 -21q-15 0 -15 17q0 11 15 34q8 11 23 15q3 1 14 5l18 6.5t16.5 7.5t15 10.5t8.5 12.5 q35 82 35 97q0 6 -22 59.5l-59.5 141.5t-43.5 103q-4 9 -6 10.5t-11 1.5h-9q-10 0 -10 12z" />
+<glyph horiz-adv-x="345" d="M35 359q0 6 8 17q179 261 179 263q0 3 -7 3q-41 0 -121 -4q-8 0 -10.5 -0.5t-5 -2t-3.5 -4t-2 -8.5l-7 -32q-3 -9 -12 -9q-14 0 -14 5q0 1 1.5 12.5t3 27.5t2.5 25q0 4 0.5 6t2 3t3.5 1.5t6 0.5h228q19 0 19 -8q0 -1 -7 -13l-168 -246q-11 -18 -11 -20t15 -2l137 4 q8 0 10 1t3 9l7 45q1 8 2.5 9t7.5 1h5q8 0 8 -5q0 -16 -5 -76q-1 -9 -2.5 -10.5t-10.5 -1.5h-244q-18 0 -18 9z" />
+<glyph d="M98 291q0 12 6 25.5t12 14.5t141 4t143 3q2 0 2 -9q0 -33 -8 -33q-9 -1 -145 -4.5t-147 -3.5q-4 0 -4 3z" />
+<glyph horiz-adv-x="474" d="M45 189q0 82 56 136.5t137 54.5q88 0 139.5 -55.5t51.5 -136.5q0 -84 -57 -138.5t-140 -54.5q-77 0 -132 57.5t-55 136.5zM78 189q0 -65 44.5 -105.5t108.5 -40.5q80 0 120.5 45t40.5 114q0 59 -47.5 98.5t-110.5 39.5t-109.5 -44.5t-46.5 -106.5z" />
+<glyph horiz-adv-x="336" d="M65 12q0 7 2.5 10t11.5 3h42q8 0 9.5 2t1.5 10q1 29 1 88v89q0 93 -2 137q0 5 -0.5 7t-2.5 3.5t-7 1.5h-42q-11 0 -11 13q0 8 1.5 11t9.5 3q9 0 43.5 -1t47.5 -1t47 1t43 1q8 0 9.5 -2.5t1.5 -11.5q0 -7 -2.5 -10t-11.5 -3h-39q-7 0 -9 -1.5t-2 -7.5v-3q-3 -58 -3 -234 q0 -53 1 -80q0 -12 12 -12h40q11 0 11 -13q0 -8 -1.5 -11t-9.5 -3q-9 0 -43.5 1t-47.5 1t-47 -1t-43 -1q-8 0 -9.5 2.5t-1.5 11.5z" />
+<glyph horiz-adv-x="508" d="M65 323q0 8 26 27.5t68 37.5t76 18q55 0 91.5 -36t36.5 -90q0 -39 -35 -83t-71 -70.5t-75 -49.5q-28 -16 -28 -18q0 -1 7 -1h232q4 0 19.5 33t17.5 33q4 0 11 -2.5t7 -4.5q0 -15 -27 -111q-2 -6 -11 -6h-326q-15 0 -15 11q0 7 12 17q13 12 54.5 41t73.5 53.5t59 65 t27 82.5q0 44 -23 69t-61 25q-30 0 -61 -15t-50 -31l-18 -15q-4 0 -10.5 7.5t-6.5 12.5z" />
+<glyph horiz-adv-x="422" d="M30 -164q0 8 11.5 14t26.5 6q16 0 41 -15q4 -2 14 -9t15.5 -10.5t18 -6.5t26.5 -3q48 0 87 45.5t39 103.5q0 70 -36.5 100.5t-114.5 30.5q-12 0 -32 -1.5t-21 -1.5q-3 0 -5.5 1t-3.5 3t-2 3.5t-1.5 5t-1.5 5.5q-2 6 -2 9q0 11 21 17q78 22 114.5 54t36.5 85 q0 40 -24 68.5t-61 28.5q-33 0 -59.5 -12.5t-39 -25t-13.5 -12.5q-6 0 -12 5.5t-6 11.5q0 7 19.5 23.5t54.5 32t68 15.5q61 0 97.5 -33.5t36.5 -89.5q0 -82 -91 -122q-48 -20 -48 -23q0 -2 42 -5q147 -12 147 -161q0 -80 -60.5 -133t-138.5 -53q-42 0 -92.5 15t-50.5 34z " />
+<glyph d="M40 8q0 32 84 130l133 160q85 96 96 96q13 0 13 -26v-296q0 -13 2 -15.5t13 -2.5h58q7 0 7 -10v-34q0 -8 -1.5 -9t-10.5 -1h-52q-11 0 -13 -2t-1 -12q9 -183 9 -185q0 -10 -16 -11l-45 -4q-11 0 -11 13v186q0 11 -2.5 13t-13.5 2h-231q-18 0 -18 8zM93 60q0 -6 25 -6h168 q14 0 16.5 3t2.5 17v216q0 26 -3 26q-1 0 -18 -21l-174 -210q-17 -21 -17 -25z" />
+<glyph horiz-adv-x="440" d="M70 158q0 6 8.5 44.5l20.5 94t18 88.5q1 6 15 6q2 0 41 -2.5t88.5 -4.5t77.5 -2q22 0 24 5q8 24 10 24h4q13 0 13 -6q-3 -45 -4 -69q-1 -17 -37 -17q-35 0 -64.5 1.5t-66 4.5t-65.5 4q-19 0 -21 -10q-20 -100 -20 -107q0 -4 1.5 -5.5t5.5 -1.5h4q107 -10 167 -52t60 -134 q0 -60 -36 -109.5t-85 -76t-88.5 -40.5t-57.5 -14q-8 0 -8 18q0 13 8 14q22 4 46 13t51.5 25t49 37t35.5 51.5t14 65.5q0 73 -54.5 108t-139.5 35q-15 0 -15 12z" />
+<glyph d="M48 231q0 65 21.5 126.5t55.5 106t73 82t75 61t61 36t33 12.5q5 0 10 -7t5 -13q0 -4 -5 -6q-49 -20 -91.5 -54.5t-70.5 -73.5t-44.5 -69t-26.5 -57q-9 -25 -9 -27q3 -3 4.5 -3t10.5 2t12 3q43 8 91 8q79 0 133.5 -47.5t54.5 -121.5q0 -89 -56.5 -141.5t-140.5 -52.5 q-88 0 -142 61.5t-54 174.5zM115 201q0 -69 36.5 -122t106.5 -53q49 0 82 44t33 98q0 75 -40 121.5t-116 46.5q-30 0 -66 -6q-9 -2 -13 -3t-7 -6.5t-3.5 -7.5t-3.5 -15q-9 -43 -9 -97z" />
+<glyph d="M64 278q0 4 1.5 19.5t5 45.5t5.5 56q1 13 4.5 15.5t11.5 2.5q13 0 13 -20q0 -4 164 -4h166q17 0 17 -9q0 -2 -4 -10l-129 -246.5l-128 -248.5t-52 -95q-13 0 -24.5 9t-11.5 19q0 1 288 502q9 16 9 17q0 4 -18 4h-199q-84 0 -85 -9l-9 -51q-1 -6 -13 -5t-12 8z" />
+<glyph d="M71 154q0 37 11.5 66.5t32.5 49t35 28.5t34 19q5 3 9.5 4.5t6.5 2.5h2l-2 2q-3 1 -8 4t-11 7q-101 69 -101 158q0 68 49.5 115.5t120.5 47.5q67 0 112.5 -42t45.5 -108q0 -16 -2 -30t-7 -26.5t-9.5 -22.5t-13.5 -20t-14 -16.5t-15.5 -15t-14.5 -12t-15 -11t-12 -8.5 q-9 -7 -9 -8t9 -6q1 -1 17 -9.5t23 -14l22.5 -17t24 -24t19 -29.5t15 -38.5t4.5 -45.5q0 -72 -50 -116t-132 -44q-73 0 -125 45t-52 115zM124 164q0 -63 35 -102.5t93 -39.5q50 0 81.5 39t31.5 92q0 40 -19.5 70.5t-40 45t-59.5 35.5q-22 12 -27 12q-3 0 -33 -21 q-62 -46 -62 -131zM138 507q0 -64 69 -118q34 -26 54 -35l16 -7q3 0 14 10q26 23 49 65t23 78q0 64 -32 100t-83 36q-50 0 -80 -37.5t-30 -91.5z" />
+<glyph d="M60 204q0 89 55 141.5t138 52.5q87 0 143.5 -62t56.5 -174q0 -70 -26.5 -130t-68 -99.5t-88.5 -70.5t-91 -47.5t-71.5 -24.5t-34.5 -8q-4 0 -7 9t-3 16q0 2 24 9.5t62 24t79 42t80 71t59 102.5l3 7l3 10.5t0 3.5q-2 0 -20 -12q-54 -33 -125 -33q-77 0 -122.5 47.5 t-45.5 124.5zM125 214q0 -60 35 -105.5t95 -45.5q96 0 126 52q6 11 6 57q0 50 -13 92.5t-43.5 73t-74.5 30.5q-64 0 -97.5 -43.5t-33.5 -110.5z" />
+</font>
+</defs></svg> 
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/css/font-files/fanwood_italic-webfont.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/css/font-files/fanwood_italic-webfont.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/css/font-files/fanwood_italic-webfont.svg	(revision 29468)
@@ -0,0 +1,682 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Copyright c 2011 Barry Schwartz
+</metadata>
+<defs>
+<font id="FanwoodItalic" horiz-adv-x="360" >
+<font-face units-per-em="1000" ascent="690" descent="-310" />
+<missing-glyph horiz-adv-x="200" />
+<glyph unicode="fi" horiz-adv-x="508" d="M-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q9 98 42 157q41 72 110 112q48 28 100 28q24 0 48.5 -12.5 t24.5 -23.5q0 -13 -19 -27t-35 -14q-12 0 -42 18.5t-48 18.5q-26 0 -49.5 -27.5t-36.5 -68.5q-17 -52 -33 -167q-1 -3 2 -4.5t6 -1.5h82q52 0 87.5 5.5t47.5 5.5q20 0 20 -22q0 -26 -32.5 -150t-32.5 -136q0 -20 13 -20q8 0 27 16t35 32t17 16q3 0 7.5 -5t4.5 -7 q0 -12 -64.5 -62.5t-86.5 -50.5q-24 0 -24 18q0 24 35.5 145t35.5 153q0 37 -13 37h-161q-7 0 -7.5 -1t-2.5 -10q-2 -11 -13 -91l-23.5 -164.5l-20.5 -134.5q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3 t-14 -1.5q-24 0 -46 12.5t-22 23.5z" />
+<glyph unicode="fl" horiz-adv-x="534" d="M-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q2 19 11 64q14 62 38 101.5t67 75.5q62 53 128 53 q29 0 50 -16q9 -6 9.5 -6t9.5 4q11 5 20.5 10.5t13 7t5.5 1.5q10 0 10 -9q0 -12 -50 -305.5t-50 -296.5q0 -21 14 -21q12 0 36 21t43.5 42t20.5 21q3 0 9.5 -5.5t6.5 -7.5q0 -4 -28 -34.5t-71.5 -62t-73.5 -31.5q-29 0 -29 38q0 5 7 46l21 120l25 143q1 7 0 8.5t-8 1.5h-167 q-7 0 -7.5 -1t-2.5 -10q-2 -13 -13 -91.5l-23.5 -163.5t-20.5 -135q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5q-24 0 -46 12.5t-22 23.5zM189 377q0 -5 8 -5h169h6t3 1.5t1.5 2.5t1 4t0.5 5 q26 162 35 239q-4 -2 -9 -4q-8 -4 -21 -4q-12 0 -42 16q-18 9 -24 9q-14 0 -37 -16q-74 -53 -91 -248z" />
+<glyph unicode="ff" horiz-adv-x="531" d="M-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q6 51 24 102q26 71 86.5 128t140.5 57q31 0 60 -13t38 -27 q2 -2 2 -5q0 -1 2 0l2 2q24 19 35 25q48 28 91 28q24 0 48.5 -12.5t24.5 -23.5q0 -13 -19 -27t-35 -14q-12 0 -37.5 18.5t-43.5 18.5q-75 0 -109 -254q-1 -6 -1 -9q-1 -3 2 -4.5t6 -1.5h82q5 0 5 -2q0 -8 -2 -14q-1 -9 -7 -9h-80q-6 0 -7 -1t-2 -7q-1 -2 -1 -3l-48 -320 q-9 -56 -34.5 -116.5t-64.5 -95.5q-48 -43 -91 -43q-23 0 -44 9.5t-21 19.5q0 13 16.5 26t30.5 13q12 0 36.5 -7.5t41.5 -7.5q11 0 20.5 7t16.5 22.5t12 28.5t9.5 37l6.5 35t5 34.5t3 25.5q42 290 42 332q0 11 -4 11h-170q-7 0 -7.5 -1t-2.5 -10q-2 -13 -13 -91.5 l-23.5 -163.5t-20.5 -135q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5q-24 0 -46 12.5t-22 23.5zM189 377q0 -5 8 -5h167q7 0 8 1.5t2 10.5q9 98 42 157q18 33 37 56q4 4 4 5h-2.5t-6.5 -2 q-6 -3 -12 -3q-16 0 -37 17q-39 30 -60 30q-43 0 -77 -37t-48 -88q-25 -93 -25 -142z" />
+<glyph unicode="ffi" horiz-adv-x="755" d="M-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q6 51 24 102q26 71 86.5 128t140.5 57q31 0 60 -13t38 -27 q2 -3 3 -6q3 -5 8 1q2 1 3 2q10 9 36 25q48 28 100 28q24 0 48.5 -12.5t24.5 -23.5q0 -13 -19 -27t-35 -14q-12 0 -42 18.5t-48 18.5q-26 0 -49.5 -27.5t-36.5 -68.5q-17 -52 -33 -167v-1q0 -5 8 -5h82q52 0 87.5 5.5t47.5 5.5q20 0 20 -22q0 -26 -32.5 -150t-32.5 -136 q0 -20 13 -20q8 0 27 16t35 32t17 16q3 0 7.5 -5t4.5 -7q0 -12 -64.5 -62.5t-86.5 -50.5q-24 0 -24 18q0 24 35.5 145t35.5 153q0 37 -13 37h-161q-6 0 -7 -1t-2 -7q-1 -2 -1 -3l-48 -320q-9 -56 -34.5 -116.5t-64.5 -95.5q-48 -43 -91 -43q-23 0 -44 9.5t-21 19.5 q0 13 16.5 26t30.5 13q12 0 36.5 -7.5t41.5 -7.5q11 0 20.5 7t16.5 22.5t12 28.5t9.5 37l6.5 35t5 34.5t3 25.5q42 290 42 332v4q0 7 -4 7h-170q-7 0 -7.5 -1t-2.5 -10q-2 -13 -13 -91.5l-23.5 -163.5t-20.5 -135q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6 t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5q-24 0 -46 12.5t-22 23.5zM189 377q0 -5 8 -5h167q7 0 8 1.5t2 10.5q3 32 14.5 82.5t31.5 81.5q13 21 37 48l5 6q-1 1 -7 -1q-12 -4 -19 -4q-16 0 -37 17q-39 30 -60 30q-43 0 -77 -37t-48 -88 q-25 -93 -25 -142z" />
+<glyph unicode="ffl" horiz-adv-x="781" d="M-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q6 51 24 102q26 71 86.5 128t140.5 57q39 0 75 -21 q21 -12 25 -25l1 -9l1 1q2 1 5 3.5t5 4.5q62 53 128 53q29 0 50 -16q9 -6 9.5 -6t9.5 4q11 5 20.5 10.5t13 7t5.5 1.5q10 0 10 -9q0 -12 -50 -305.5t-50 -296.5q0 -21 14 -21q12 0 36 21t43.5 42t20.5 21q3 0 9.5 -5.5t6.5 -7.5q0 -4 -28 -34.5t-71.5 -62t-73.5 -31.5 q-29 0 -29 38q0 5 7 46l21 120l25 143q1 7 0 8.5t-8 1.5h-167q-6 0 -7 -1t-2 -7q-1 -2 -1 -3l-48 -320q-9 -56 -34.5 -116.5t-64.5 -95.5q-48 -43 -91 -43q-23 0 -44 9.5t-21 19.5q0 13 16.5 26t30.5 13q12 0 36.5 -7.5t41.5 -7.5q11 0 20.5 7t16.5 22.5t12 28.5t9.5 37 l6.5 35t5 34.5t3 25.5q42 290 42 332q0 11 -4 11h-170q-7 0 -7.5 -1t-2.5 -10q-2 -13 -13 -91.5l-23.5 -163.5t-20.5 -135q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5q-24 0 -46 12.5t-22 23.5z M189 377q0 -5 8 -5h167q7 0 8 1.5t2 10.5q2 19 11 64q21 92 73 147q5 5 4.5 5.5t-8.5 -2.5q-6 -3 -12 -3q-20 0 -43 19q-39 30 -60 30q-43 0 -77 -37t-48 -88q-25 -93 -25 -142zM436 377q0 -5 8 -5h169h6t3 1.5t1.5 2.5t1 4t0.5 5q26 162 35 239q-4 -2 -9 -4q-8 -4 -21 -4 q-12 0 -42 16q-18 9 -24 9q-14 0 -37 -16q-74 -53 -91 -248z" />
+<glyph unicode="fj" horiz-adv-x="508" d="M-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q9 98 42 157q41 72 110 112q48 28 100 28q24 0 48.5 -12.5 t24.5 -23.5q0 -13 -19 -27t-35 -14q-12 0 -42 18.5t-48 18.5q-26 0 -49.5 -27.5t-36.5 -68.5q-17 -52 -33 -167q-1 -3 2 -4.5t6 -1.5h82q52 0 87.5 5.5t47.5 5.5q14 0 18 -10q3 -6 3 -14q0 -21 -13 -103.5l-27.5 -167t-15.5 -91.5q-6 -37 -9 -51.5t-13 -48t-27 -57 t-41 -41.5q-52 -38 -87 -38q-24 0 -39.5 11t-15.5 23q0 15 10 25.5t25 10.5q18 0 38 -12.5t37 -12.5q10 0 17 5.5t12.5 20.5t8.5 26.5t9 39.5q18 91 41.5 240.5t23.5 171.5q0 37 -13 37h-161q-7 0 -7.5 -1t-2.5 -10q-2 -13 -13 -91.5l-23.5 -163.5t-20.5 -135 q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5q-24 0 -46 12.5t-22 23.5z" />
+<glyph unicode="ffj" horiz-adv-x="755" d="M-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q6 51 24 102q26 71 86.5 128t140.5 57q31 0 60 -13t38 -27 q2 -3 3 -6q3 -5 8 1q2 1 3 2q10 9 36 25q48 28 100 28q24 0 48.5 -12.5t24.5 -23.5q0 -13 -19 -27t-35 -14q-12 0 -42 18.5t-48 18.5q-26 0 -49.5 -27.5t-36.5 -68.5q-17 -52 -33 -167v-1q0 -5 8 -5h82q52 0 87.5 5.5t47.5 5.5q14 0 18 -10q3 -6 3 -14q0 -21 -13 -103.5 l-27.5 -167t-15.5 -91.5q-6 -37 -9 -51.5t-13 -48t-27 -57t-41 -41.5q-52 -38 -87 -38q-24 0 -39.5 11t-15.5 23q0 15 10 25.5t25 10.5q18 0 38 -12.5t37 -12.5q10 0 17 5.5t12.5 20.5t8.5 26.5t9 39.5q18 91 41.5 240.5t23.5 171.5q0 37 -13 37h-161q-6 0 -7 -1t-2 -7 q-1 -2 -1 -3l-48 -320q-9 -56 -34.5 -116.5t-64.5 -95.5q-48 -43 -91 -43q-23 0 -44 9.5t-21 19.5q0 13 16.5 26t30.5 13q12 0 36.5 -7.5t41.5 -7.5q11 0 20.5 7t16.5 22.5t12 28.5t9.5 37l6.5 35t5 34.5t3 25.5q42 290 42 332v4q0 7 -4 7h-170q-7 0 -7.5 -1t-2.5 -10 q-2 -13 -13 -91.5l-23.5 -163.5t-20.5 -135q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5q-24 0 -46 12.5t-22 23.5zM189 377q0 -5 8 -5h167q7 0 8 1.5t2 10.5q3 32 14.5 82.5t31.5 81.5q13 21 37 48 l5 6q-1 1 -7 -1q-12 -4 -19 -4q-16 0 -37 17q-39 30 -60 30q-43 0 -77 -37t-48 -88q-25 -93 -25 -142z" />
+<glyph unicode="fb" horiz-adv-x="732" d="M-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q2 19 11 64q14 62 38 101.5t67 75.5q62 53 128 53 q29 0 50 -16q9 -6 9.5 -6t9.5 4l16.5 8.5t17.5 9.5t9 4q12 0 12 -10q0 -6 -17.5 -117.5t-22.5 -140.5l-49 -251q51 85 87 133q38 51 64.5 71.5t71.5 20.5q41 0 64 -23q14 -14 14 -42q0 -72 -28.5 -137t-69.5 -106t-84 -64.5t-76 -23.5q-20 0 -40 7t-32.5 14t-15.5 7 q-4 0 -20 -8q-20 -8 -27 -8q-10 0 -10 8q0 4 13 23q5 7 8 19q75 403 87 569q-2 0 -8 -3q-8 -4 -21 -4q-12 0 -42 16q-18 9 -24 9q-14 0 -37 -16q-74 -53 -91 -248q0 -5 8 -5h82q5 0 5 -2q0 -8 -2 -14q-2 -9 -7 -9h-80q-7 0 -7.5 -1t-2.5 -10q-2 -13 -13 -91.5l-23.5 -163.5 t-20.5 -135q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5q-24 0 -46 12.5t-22 23.5zM391 80q0 -25 17 -42.5t51 -17.5q41 0 84.5 51t69 112.5t25.5 98.5q0 23 -10 41t-32 18q-41 0 -83 -59l-48.5 -68 l-36.5 -54.5t-28.5 -49t-8.5 -30.5z" />
+<glyph unicode="fh" horiz-adv-x="766" d="M-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q2 19 11 64q14 62 38 101.5t67 75.5q62 53 128 53 q29 0 50 -16q9 -6 9.5 -6t9.5 4l16.5 8.5t17.5 9.5t9 4q12 0 12 -10q0 -33 -9 -93q-23 -158 -84 -456q47 110 115 192q56 68 124 68q26 0 42.5 -12t16.5 -36q0 -37 -33.5 -147.5t-33.5 -120.5q0 -22 21 -22q11 0 34 21.5t41.5 43.5t19.5 22q2 0 7 -4t5 -6q0 -5 -22 -33.5 t-60.5 -58.5t-72.5 -30q-18 0 -29.5 10.5t-11.5 27.5q0 14 36.5 127.5t36.5 141.5q0 17 -9 28t-25 11q-33 0 -66.5 -40t-74.5 -107q-46 -77 -54 -108l-20 -82q-2 -11 -58 -11q-8 0 -8 8q0 1 7 33t18.5 90t24 130t26 171t23.5 196q-14 -4 -18 -6q-8 -4 -21 -4q-12 0 -42 16 q-18 9 -24 9q-14 0 -37 -16q-74 -53 -91 -248q0 -5 8 -5h82q5 0 5 -2q0 -8 -2 -14q-2 -9 -7 -9h-80q-7 0 -7.5 -1t-2.5 -10q-2 -13 -13 -91.5l-23.5 -163.5t-20.5 -135q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5 t-13 -3t-14 -1.5q-24 0 -46 12.5t-22 23.5z" />
+<glyph unicode="fk" horiz-adv-x="731" d="M-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q2 19 11 64q14 62 38 101.5t67 75.5q62 53 128 53 q29 0 50 -16q9 -6 9.5 -6t9.5 4l16.5 8.5t17.5 9.5t9 4q12 0 12 -14q0 -16 -97 -489q36 69 72 117q33 43 66.5 64t82.5 21q59 0 59 -37q0 -42 -32.5 -78t-67.5 -53t-65 -24q-21 -3 -21 -4l4 -2q4 -2 10.5 -6.5t12.5 -9.5q47 -45 73 -77q16 -20 24 -28.5t22.5 -16.5t31.5 -8 q34 0 34 27q0 4 -1 10.5t-1 9.5q0 12 8 12t14.5 -10.5t6.5 -32.5t-38.5 -38.5t-72.5 -16.5q-22 0 -43 20q-11 10 -23.5 25t-29 37.5t-24.5 32.5q-10 13 -23.5 28.5t-20 24t-6.5 9.5q0 5 17 22q2 2 10 2q15 0 28 5q37 17 71 53.5t34 70.5q0 20 -31 20q-29 0 -63 -32 q-9 -9 -18.5 -20t-20.5 -26.5l-18.5 -26.5l-21.5 -33t-21 -32q-17 -27 -24 -58q-15 -64 -21 -98q-3 -22 -10 -22q-1 0 -11 -1.5t-22 -3t-17 -1.5q-4 0 -4.5 1t-0.5 6q0 3 21 102.5t48.5 251t38.5 268.5q-6 -1 -10 -3q-8 -4 -21 -4q-12 0 -42 16q-18 9 -24 9q-14 0 -37 -16 q-74 -53 -91 -248q0 -5 8 -5h82q5 0 5 -2q0 -8 -2 -14q-2 -9 -7 -9h-80q-7 0 -7.5 -1t-2.5 -10q-2 -13 -13 -91.5l-23.5 -163.5t-20.5 -135q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5 q-24 0 -46 12.5t-22 23.5z" />
+<glyph unicode="ffb" horiz-adv-x="979" d="M-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q6 51 24 102q26 71 86.5 128t140.5 57q39 0 75 -21 q21 -12 25 -25l1 -9l1 1q2 1 5 3.5t5 4.5q62 53 128 53q29 0 50 -16q9 -6 9.5 -6t9.5 4l16.5 8.5t17.5 9.5t9 4q12 0 12 -10q0 -6 -17.5 -117.5t-22.5 -140.5l-49 -251q51 85 87 133q38 51 64.5 71.5t71.5 20.5q41 0 64 -23q14 -14 14 -42q0 -72 -28.5 -137t-69.5 -106 t-84 -64.5t-76 -23.5q-20 0 -40 7t-32.5 14t-15.5 7q-4 0 -20 -8q-20 -8 -27 -8q-10 0 -10 8q0 4 13 23q5 7 8 19q75 403 87 569q-2 0 -8 -3q-8 -4 -21 -4q-12 0 -42 16q-18 9 -24 9q-14 0 -37 -16q-74 -53 -91 -248q0 -5 8 -5h82q5 0 5 -2q0 -8 -2 -14q-1 -9 -7 -9h-80 q-6 0 -7 -1t-2 -7q-1 -2 -1 -3l-48 -320q-9 -56 -34.5 -116.5t-64.5 -95.5q-48 -43 -91 -43q-23 0 -44 9.5t-21 19.5q0 13 16.5 26t30.5 13q12 0 36.5 -7.5t41.5 -7.5q11 0 20.5 7t16.5 22.5t12 28.5t9.5 37l6.5 35t5 34.5t3 25.5q42 290 42 332q0 11 -4 11h-170 q-7 0 -7.5 -1t-2.5 -10q-2 -13 -13 -91.5l-23.5 -163.5t-20.5 -135q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5q-24 0 -46 12.5t-22 23.5zM189 377q0 -5 8 -5h167q7 0 8 1.5t2 10.5q2 19 11 64 q21 92 73 147q5 5 4.5 5.5t-8.5 -2.5q-6 -3 -12 -3q-20 0 -43 19q-39 30 -60 30q-43 0 -77 -37t-48 -88q-25 -93 -25 -142zM638 80q0 -25 17 -42.5t51 -17.5q41 0 84.5 51t69 112.5t25.5 98.5q0 23 -10 41t-32 18q-41 0 -83 -59l-48.5 -68l-36.5 -54.5t-28.5 -49t-8.5 -30.5 z" />
+<glyph unicode="ffh" horiz-adv-x="1013" d="M-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q6 51 24 102q26 71 86.5 128t140.5 57q39 0 75 -21 q21 -12 25 -25l1 -9l1 1q2 1 5 3.5t5 4.5q62 53 128 53q29 0 50 -16q9 -6 9.5 -6t9.5 4l16.5 8.5t17.5 9.5t9 4q12 0 12 -10q0 -33 -9 -93q-23 -158 -84 -456q47 110 115 192q56 68 124 68q26 0 42.5 -12t16.5 -36q0 -37 -33.5 -147.5t-33.5 -120.5q0 -22 21 -22 q11 0 34 21.5t41.5 43.5t19.5 22q2 0 7 -4t5 -6q0 -5 -22 -33.5t-60.5 -58.5t-72.5 -30q-18 0 -29.5 10.5t-11.5 27.5q0 14 36.5 127.5t36.5 141.5q0 17 -9 28t-25 11q-33 0 -66.5 -40t-74.5 -107q-46 -77 -54 -108l-20 -82q-2 -11 -58 -11q-8 0 -8 8q0 1 7 33t18.5 90 t24 130t26 171t23.5 196q-14 -4 -18 -6q-8 -4 -21 -4q-12 0 -42 16q-18 9 -24 9q-14 0 -37 -16q-74 -53 -91 -248q0 -5 8 -5h82q5 0 5 -2q0 -8 -2 -14q-1 -9 -7 -9h-80q-6 0 -7 -1t-2 -7q-1 -2 -1 -3l-48 -320q-9 -56 -34.5 -116.5t-64.5 -95.5q-48 -43 -91 -43 q-23 0 -44 9.5t-21 19.5q0 13 16.5 26t30.5 13q12 0 36.5 -7.5t41.5 -7.5q11 0 20.5 7t16.5 22.5t12 28.5t9.5 37l6.5 35t5 34.5t3 25.5q42 290 42 332q0 11 -4 11h-170q-7 0 -7.5 -1t-2.5 -10q-2 -13 -13 -91.5l-23.5 -163.5t-20.5 -135q-3 -17 -11 -44.5t-31 -70.5 t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5q-24 0 -46 12.5t-22 23.5zM189 377q0 -5 8 -5h167q7 0 8 1.5t2 10.5q2 19 11 64q21 92 73 147q5 5 4.5 5.5t-8.5 -2.5q-6 -3 -12 -3q-20 0 -43 19q-39 30 -60 30q-43 0 -77 -37 t-48 -88q-25 -93 -25 -142z" />
+<glyph unicode="ffk" horiz-adv-x="978" d="M-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q6 51 24 102q26 71 86.5 128t140.5 57q39 0 75 -21 q21 -12 25 -25l1 -9l1 1q2 1 5 3.5t5 4.5q62 53 128 53q29 0 50 -16q9 -6 9.5 -6t9.5 4l16.5 8.5t17.5 9.5t9 4q12 0 12 -14q0 -16 -97 -489q36 69 72 117q33 43 66.5 64t82.5 21q59 0 59 -37q0 -42 -32.5 -78t-67.5 -53t-65 -24q-21 -3 -21 -4l4 -2q4 -2 10.5 -6.5 t12.5 -9.5q47 -45 73 -77q16 -20 24 -28.5t22.5 -16.5t31.5 -8q34 0 34 27q0 4 -1 10.5t-1 9.5q0 12 8 12t14.5 -10.5t6.5 -32.5t-38.5 -38.5t-72.5 -16.5q-22 0 -43 20q-11 10 -23.5 25t-29 37.5t-24.5 32.5q-10 13 -23.5 28.5t-20 24t-6.5 9.5q0 5 17 22q2 2 10 2 q16 0 28 5q37 17 71 53.5t34 70.5q0 20 -31 20q-29 0 -63 -32q-9 -9 -18.5 -20t-20.5 -26.5l-18.5 -26.5l-21.5 -33t-21 -32q-17 -27 -24 -58q-15 -64 -21 -98q-3 -22 -10 -22q-1 0 -11 -1.5t-22 -3t-17 -1.5q-4 0 -4.5 1t-0.5 6q0 3 21 102.5t48.5 251t38.5 268.5 q-6 -1 -10 -3q-8 -4 -21 -4q-12 0 -42 16q-18 9 -24 9q-14 0 -37 -16q-74 -53 -91 -248q0 -5 8 -5h82q5 0 5 -2q0 -8 -2 -14q-1 -9 -7 -9h-80q-6 0 -7 -1t-2 -7q-1 -2 -1 -3l-48 -320q-9 -56 -34.5 -116.5t-64.5 -95.5q-48 -43 -91 -43q-23 0 -44 9.5t-21 19.5q0 13 16.5 26 t30.5 13q12 0 36.5 -7.5t41.5 -7.5q11 0 20.5 7t16.5 22.5t12 28.5t9.5 37l6.5 35t5 34.5t3 25.5q42 290 42 332q0 11 -4 11h-170q-7 0 -7.5 -1t-2.5 -10q-2 -13 -13 -91.5l-23.5 -163.5t-20.5 -135q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7 t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5q-24 0 -46 12.5t-22 23.5zM189 377q0 -5 8 -5h167q7 0 8 1.5t2 10.5q2 19 11 64q21 92 73 147q5 5 4.5 5.5t-8.5 -2.5q-6 -3 -12 -3q-20 0 -43 19q-39 30 -60 30q-43 0 -77 -37t-48 -88q-25 -93 -25 -142z" />
+<glyph unicode="f&#x125;" horiz-adv-x="766" d="M451 731q0 1 4 5l91 92q11 11 20 11h20q7 0 9 -1.5t7 -9.5l53 -92q2 -3 2 -5t-5 -2h-12q-1 0 -7 6l-63 52q-3 3 -8 0l-85 -52q-2 -1 -4 -2.5t-3 -2.5l-2 -1h-12q-5 0 -5 2zM-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5 t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q2 19 11 64q14 62 38 101.5t67 75.5q62 53 128 53q29 0 50 -16q9 -6 9.5 -6t9.5 4l16.5 8.5t17.5 9.5t9 4q12 0 12 -10q0 -33 -9 -93q-23 -158 -84 -456 q47 110 115 192q56 68 124 68q26 0 42.5 -12t16.5 -36q0 -37 -33.5 -147.5t-33.5 -120.5q0 -22 21 -22q11 0 34 21.5t41.5 43.5t19.5 22q2 0 7 -4t5 -6q0 -5 -22 -33.5t-60.5 -58.5t-72.5 -30q-18 0 -29.5 10.5t-11.5 27.5q0 14 36.5 127.5t36.5 141.5q0 17 -9 28t-25 11 q-33 0 -66.5 -40t-74.5 -107q-46 -77 -54 -108l-20 -82q-2 -11 -58 -11q-8 0 -8 8q0 1 7 33t18.5 90t24 130t26 171t23.5 196q-14 -4 -18 -6q-8 -4 -21 -4q-12 0 -42 16q-18 9 -24 9q-14 0 -37 -16q-74 -53 -91 -248q0 -5 8 -5h82q5 0 5 -2q0 -8 -2 -14q-2 -9 -7 -9h-80 q-7 0 -7.5 -1t-2.5 -10q-2 -13 -13 -91.5l-23.5 -163.5t-20.5 -135q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5q-24 0 -46 12.5t-22 23.5z" />
+<glyph unicode="ff&#x125;" horiz-adv-x="1013" d="M698 731q0 1 4 5l91 92q11 11 20 11h20q7 0 9 -1.5t7 -9.5l53 -92q2 -3 2 -5t-5 -2h-12q-1 0 -7 6l-63 52q-3 3 -8 0l-85 -52q-2 -1 -4 -2.5t-4 -2.5l-1 -1h-12q-5 0 -5 2zM-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5 t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q6 51 24 102q26 71 86.5 128t140.5 57q39 0 75 -21q21 -12 25 -25l1 -9l1 1q2 1 5 3.5t5 4.5q62 53 128 53q29 0 50 -16q9 -6 9.5 -6t9.5 4l16.5 8.5t17.5 9.5 t9 4q12 0 12 -10q0 -33 -9 -93q-23 -158 -84 -456q47 110 115 192q56 68 124 68q26 0 42.5 -12t16.5 -36q0 -37 -33.5 -147.5t-33.5 -120.5q0 -22 21 -22q11 0 34 21.5t41.5 43.5t19.5 22q2 0 7 -4t5 -6q0 -5 -22 -33.5t-60.5 -58.5t-72.5 -30q-18 0 -29.5 10.5t-11.5 27.5 q0 14 36.5 127.5t36.5 141.5q0 17 -9 28t-25 11q-33 0 -66.5 -40t-74.5 -107q-46 -77 -54 -108l-20 -82q-2 -11 -58 -11q-8 0 -8 8q0 1 7 33t18.5 90t24 130t26 171t23.5 196q-14 -4 -18 -6q-8 -4 -21 -4q-12 0 -42 16q-18 9 -24 9q-14 0 -37 -16q-74 -53 -91 -248 q0 -5 8 -5h82q5 0 5 -2q0 -8 -2 -14q-1 -9 -7 -9h-80q-6 0 -7 -1t-2 -7q-1 -2 -1 -3l-48 -320q-9 -56 -34.5 -116.5t-64.5 -95.5q-48 -43 -91 -43q-23 0 -44 9.5t-21 19.5q0 13 16.5 26t30.5 13q12 0 36.5 -7.5t41.5 -7.5q11 0 20.5 7t16.5 22.5t12 28.5t9.5 37l6.5 35 t5 34.5t3 25.5q42 290 42 332q0 11 -4 11h-170q-7 0 -7.5 -1t-2.5 -10q-2 -13 -13 -91.5l-23.5 -163.5t-20.5 -135q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5q-24 0 -46 12.5t-22 23.5zM189 377 q0 -5 8 -5h167q7 0 8 1.5t2 10.5q2 19 11 64q21 92 73 147q5 5 4.5 5.5t-8.5 -2.5q-6 -3 -12 -3q-20 0 -43 19q-39 30 -60 30q-43 0 -77 -37t-48 -88q-25 -93 -25 -142z" />
+<glyph unicode="f&#xfe;" horiz-adv-x="701" d="M-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q2 19 11 64q14 62 38 101.5t67 75.5q62 53 128 53 q29 0 50 -16q9 -6 9.5 -6t9.5 4l16.5 8.5t17.5 9.5t9 4q12 0 12 -10q0 -27 -8 -74q-36 -225 -86 -467q43 107 100 194q37 57 99 57q44 0 60 -23.5t16 -67.5q0 -110 -74 -204t-151 -94q-11 0 -32 3.5t-24 3.5q-12 0 -13 -8l-32 -209q-4 -23 9 -24q16 -2 40 -4 q14 -1 19.5 -1.5t11 -2t7 -4t1.5 -6.5q0 -14 -4.5 -17.5t-15.5 -3.5q-1 0 -27 3.5t-67.5 7t-79.5 3.5q-17 0 -17 10q0 14 3.5 18t15.5 4h16q12 0 16 3.5t6 17.5q26 137 43 243l35 208q49 279 60 388q-14 -4 -18 -6q-8 -4 -21 -4q-12 0 -42 16q-18 9 -24 9q-14 0 -37 -16 q-74 -53 -91 -248q0 -5 8 -5h82q5 0 5 -2q0 -8 -2 -14q-2 -9 -7 -9h-80q-7 0 -7.5 -1t-2.5 -10q-2 -13 -13 -91.5l-23.5 -163.5t-20.5 -135q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5 q-24 0 -46 12.5t-22 23.5zM396 51q0 -32 64 -32q33 0 69.5 42.5t60.5 103.5t24 113q0 64 -44 64q-15 0 -29.5 -9.5t-29 -30t-22.5 -34t-22 -41.5l-16 -32q-55 -105 -55 -144z" />
+<glyph unicode="ff&#xfe;" horiz-adv-x="948" d="M-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q6 51 24 102q26 71 86.5 128t140.5 57q39 0 75 -21 q21 -12 25 -25l1 -9l1 1q2 1 5 3.5t5 4.5q62 53 128 53q29 0 50 -16q9 -6 9.5 -6t9.5 4l16.5 8.5t17.5 9.5t9 4q12 0 12 -10q0 -27 -8 -74q-36 -225 -86 -467q43 107 100 194q37 57 99 57q44 0 60 -23.5t16 -67.5q0 -110 -74 -204t-151 -94q-11 0 -32 3.5t-24 3.5 q-12 0 -13 -8l-32 -209q-5 -23 9 -24q16 -2 40 -4q14 -1 19.5 -1.5t11 -2t7 -4t1.5 -6.5q0 -14 -4.5 -17.5t-15.5 -3.5q-1 0 -27 3.5t-67.5 7t-79.5 3.5q-17 0 -17 10q0 14 3.5 18t15.5 4h16q12 0 16 3.5t6 17.5q26 137 43 243l35 208q49 279 60 388q-14 -4 -18 -6 q-8 -4 -21 -4q-12 0 -42 16q-18 9 -24 9q-14 0 -37 -16q-74 -53 -91 -248q0 -5 8 -5h82q5 0 5 -2q0 -8 -2 -14q-1 -9 -7 -9h-80q-6 0 -7 -1t-2 -7q-1 -2 -1 -3l-48 -320q-9 -56 -34.5 -116.5t-64.5 -95.5q-48 -43 -91 -43q-23 0 -44 9.5t-21 19.5q0 13 16.5 26t30.5 13 q12 0 36.5 -7.5t41.5 -7.5q11 0 20.5 7t16.5 22.5t12 28.5t9.5 37l6.5 35t5 34.5t3 25.5q42 290 42 332q0 11 -4 11h-170q-7 0 -7.5 -1t-2.5 -10q-2 -13 -13 -91.5l-23.5 -163.5t-20.5 -135q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5 t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5q-24 0 -46 12.5t-22 23.5zM189 377q0 -5 8 -5h167q7 0 8 1.5t2 10.5q2 19 11 64q21 92 73 147q5 5 4.5 5.5t-8.5 -2.5q-6 -3 -12 -3q-20 0 -43 19q-39 30 -60 30q-43 0 -77 -37t-48 -88q-25 -93 -25 -142zM643 51q0 -32 64 -32 q33 0 69.5 42.5t60.5 103.5t24 113q0 64 -44 64q-15 0 -29.5 -9.5t-29 -30t-22.5 -34t-22 -41.5l-16 -32q-55 -105 -55 -144z" />
+<glyph unicode=" "  horiz-adv-x="200" />
+<glyph unicode="&#x09;" horiz-adv-x="200" />
+<glyph unicode="&#xa0;" horiz-adv-x="200" />
+<glyph unicode="!" horiz-adv-x="220" d="M65 38q0 19 15.5 35.5t30.5 16.5q14 0 29 -16t15 -31q0 -23 -14.5 -37t-25.5 -14q-19 0 -34.5 16.5t-15.5 29.5zM102 150q0 23 20 183q27 211 34 302q1 22 29 22h5q25 0 25 -17q0 -2 -2 -12q-33 -148 -86 -477q-1 -5 -12 -5q-13 0 -13 4z" />
+<glyph unicode="&#x22;" horiz-adv-x="261" d="M30 511q0 1 2 32.5l4.5 68.5t3.5 47q4 29 32 29q29 0 29 -25q0 -4 -2 -14l-12.5 -43l-17.5 -57.5t-10 -32.5q-1 -3 -2 -7t-1.5 -5l-1.5 -3t-2.5 -2.5t-3.5 -1t-6 -0.5q-12 0 -12 14zM160 511q0 1 2 32.5l4.5 68.5t3.5 47q4 29 32 29q29 0 29 -25q0 -4 -2 -14l-12.5 -43 l-17.5 -57.5t-10 -32.5q-1 -3 -2 -7t-1.5 -5l-1.5 -3t-2.5 -2.5t-3.5 -1t-6 -0.5q-12 0 -12 14z" />
+<glyph unicode="#" horiz-adv-x="442" d="M30 169v4q0 8 2 10.5t9 2.5h73q5 0 5.5 1t1.5 6q16 115 16 126q0 4 -5 4h-95q-7 0 -7 13v6q0 11 7 11h100q9 0 9 6l21 148q2 16 3 18q4 6 6.5 6.5t14.5 0.5q19 0 19 -11q0 -3 -12.5 -81t-12.5 -82q0 -5 6 -5h90q7 0 8 7q25 161 26 165q3 7 14 7q24 0 24 -10 q0 -5 -12 -82.5t-12 -81.5q0 -5 4 -5h64q10 0 12.5 -2.5t2.5 -13.5q0 -10 -3 -12t-10 -2h-72q-6 0 -6 -5q-19 -120 -19 -126t7 -6h92q7 0 9 -3t2 -14q0 -10 -2.5 -12t-11.5 -2h-86q-15 -2 -15 -5q-21 -150 -22 -152q0 -1 -1 -3q-1 -5 -21 -5h-10.5t-5 1.5l-2 2t0 4t0.5 5.5 q0 4 11 74.5t11 73.5q0 4 -7 4h-86q-11 -2 -12 -5q-21 -150 -22 -152q-4 -7 -9 -8h-13q-11 0 -14.5 2.5t-3.5 10.5q0 4 11 74.5t11 73.5q0 4 -3 4h-68q-8 0 -10 3t-2 11zM158 193q0 -5 9 -5h90q7 0 7 6l9.5 67t7 44t2.5 16q0 4 -7 4h-90q-6 0 -8 -5v-1q-2 -16 -7.5 -47.5 t-9 -53.5t-3.5 -25z" />
+<glyph unicode="$" horiz-adv-x="500" d="M50 128q0 8 12.5 17t20.5 9q2 0 6 -8.5l11.5 -25.5t14.5 -29q25 -44 52 -58q16 -8 29 -8q6 0 7 11l32 234q2 11 1 15.5t-8 8.5q-35 21 -52.5 33.5t-41.5 35t-35 49t-11 58.5q0 73 54 115t126 42q12 0 13 10l5 36q1 9 8 9h9q7 0 6 -9l-5 -36q-1 -11 3 -12q1 -1 3 -1 q60 -10 94 -53t34 -75q0 -25 -18 -25q-9 0 -18.5 9t-11.5 20q-1 6 -4 22t-5.5 26t-6.5 16q-26 35 -63 41q-11 2 -12 -3l-32 -247q-2 -16 4 -20q73 -47 95 -70q50 -50 50 -120q0 -66 -52 -105t-133 -39q-9 0 -10 -4q-1 -1 -2 -11l-14 -122q-1 -6 -6 -6h-17q-5 0 -4 7l18 121 q1 4 1 10t-2 7.5t-11 3.5q-2 1 -3 1q-58 12 -94.5 51t-36.5 69zM141 485q0 -36 26.5 -72t62.5 -55q6 -4 8 -4q6 0 7 14l31 234q1 6 -4 6q-49 0 -90 -35t-41 -88zM227 25q0 -6 18 -6q50 2 82.5 35.5t32.5 90.5q0 38 -27 73t-67 54l-6 3q-1 0 -3 -9l-29 -228q-1 -6 -1 -13z " />
+<glyph unicode="%" horiz-adv-x="657" d="M50 362q0 62 52.5 131.5t124.5 69.5q40 0 71 -31q24 -24 58 -24q46 0 93 28q17 10 31.5 22t35.5 33.5l22 22.5t4.5 5t7.5 8l3 4q6 0 12 -4t6 -8q0 -3 -5 -11q-360 -527 -434 -643q-4 -6 -19 -6q-16 0 -16 10q0 2 2 6l80 114l169.5 245.5t112.5 170.5q9 15 8 16 q-2 1 -8 -2q-47 -28 -105 -28q-16 0 -35 3v-16v-14q0 -17 -1 -25q-6 -72 -57.5 -130.5t-112.5 -58.5q-47 0 -73.5 32t-26.5 80zM99 336q0 -29 13.5 -50t40.5 -21q51 0 95 58.5t44 137.5q0 70 -52 70q-46 0 -93.5 -64t-47.5 -131zM336 103q0 71 56 137t125 66q42 0 66 -29.5 t24 -79.5q0 -79 -53 -142.5t-118 -63.5q-47 0 -73.5 31.5t-26.5 80.5zM385 78q0 -30 13 -50.5t41 -20.5q51 0 95 58.5t44 136.5q0 71 -53 71q-45 0 -92.5 -64t-47.5 -131z" />
+<glyph unicode="&#x26;" horiz-adv-x="693" d="M35 201q0 32 9.5 60t23.5 46t27.5 31t23 20.5t9.5 9.5q0 1 -11 13t-22.5 36.5t-11.5 58.5q0 69 44 118t119 49q40 0 78 -16q37 -16 37 -41q0 -31 -21 -52q-3 -3 -5 -3.5t-4.5 1t-4 2.5t-4.5 4.5t-3 4.5q-40 43 -97 43q-43 0 -75.5 -34t-32.5 -78q0 -36 17.5 -63t41.5 -27 q13 0 30 2.5t25 2.5q19 0 19 -12q0 -16 -23 -29.5t-38 -13.5q-10 0 -25 7l-15 7q-5 0 -17 -8t-26 -34t-14 -64q0 -86 59 -137.5t146 -51.5q34 0 68 10.5t66.5 33.5t52.5 66.5t20 101.5q0 59 -12 64q-76 28 -114 28q-29 0 -47 -15t-18 -42q0 -7 1.5 -13t3 -10.5t5.5 -9 t6.5 -7t8.5 -5t8.5 -4t10 -3.5l9.5 -2.5t10.5 -2t9.5 -1.5q16 -3 16 -9q0 -8 -10.5 -15.5t-20.5 -7.5q-11 0 -25 4q-28 9 -41.5 30.5t-13.5 38.5q0 58 39.5 90.5t94.5 32.5q21 0 88 -23.5t107 -23.5q25 0 40.5 15.5t15.5 40.5q0 63 -84 63q-11 0 -11 7q0 15 12 25t25 10 q39 0 58.5 -28.5t19.5 -60.5q0 -38 -17 -65q-15 -24 -44 -39t-52 -15q-25 0 -37 3q-5 2 -9 1t-4 -8q0 -3 0.5 -14.5t0.5 -16.5q0 -32 -9 -68.5t-30 -75.5t-51.5 -70t-78.5 -51t-106 -20q-103 0 -162 59t-59 150z" />
+<glyph unicode="'" horiz-adv-x="131" d="M30 511q0 1 2 32.5l4.5 68.5t3.5 47q4 29 32 29q29 0 29 -25q0 -4 -2 -14l-12.5 -43l-17.5 -57.5t-10 -32.5q-1 -3 -2 -7t-1.5 -5l-1.5 -3t-2.5 -2.5t-3.5 -1t-6 -0.5q-12 0 -12 14z" />
+<glyph unicode="(" horiz-adv-x="319" d="M60 285q0 73 19 142t45 114.5t53.5 80.5t45.5 51t20 16q6 0 11 -4t5 -9l-8 -8q-8 -9 -20.5 -25.5t-27.5 -39t-30 -54.5t-27.5 -68.5t-20.5 -84.5t-8 -99q0 -79 14 -150t34.5 -117.5t41 -80.5t34.5 -53t14 -22q0 -14 -16 -14q-4 0 -22.5 21.5t-45 62.5t-51.5 91.5 t-42.5 117.5t-17.5 132z" />
+<glyph unicode=")" horiz-adv-x="319" d="M60 -127l8 9q8 8 20.5 24.5t27.5 39t30 54.5t27.5 68.5t20.5 84.5t8 99q0 79 -14 150t-34.5 117.5t-41 80.5t-34.5 53t-14 22q0 14 16 14q4 0 22.5 -21.5t45 -62.5t51.5 -91.5t42.5 -117.5t17.5 -132q0 -73 -19 -142t-45 -114.5t-53.5 -80.5t-45.5 -51t-20 -16 q-6 0 -11 4t-5 9z" />
+<glyph unicode="*" horiz-adv-x="391" d="M30 447q0 21 23 31q10 4 48.5 17.5t52.5 19.5q19 7 19 13q0 4 -15 15q-6 5 -42.5 28t-45.5 32q-13 15 -13 29q0 11 7.5 19t20.5 8q18 0 31 -15q7 -8 18 -25l24 -39l18 -30q8 -13 11 -13q2 0 8 13q4 9 12.5 34t16 45t12.5 27q13 19 32 19q11 0 19 -9t8 -19q0 -13 -9 -26 q-8 -12 -39 -39.5t-39 -35.5q-10 -12 -10 -15q0 -6 18 -7q8 -1 56 -2t60 -5q29 -10 29 -31q0 -14 -9.5 -21.5t-22.5 -7.5q-7 0 -15 3t-46.5 22.5t-51.5 25.5q-12 6 -16 6q-5 0 -5 -4t3 -14q2 -10 15.5 -52.5t13.5 -56.5q0 -15 -7.5 -27t-22.5 -12q-16 0 -24.5 12t-8.5 26 q0 11 8 52.5t10 53.5q1 4 1 10q0 11 -4 11q-6 0 -17 -11l-36 -37.5t-41 -37.5q-12 -7 -25 -7t-21.5 7.5t-8.5 19.5z" />
+<glyph unicode="+" horiz-adv-x="527" d="M31 212q0 8 0.5 11.5t4.5 6t13 2.5h170q22 0 22 19v176q0 7 2.5 10.5t6 4t12.5 0.5t13 -0.5t7.5 -5.5t3.5 -14v-163q0 -27 17 -27h177q8 0 11.5 -2.5t4 -6t0.5 -12.5q0 -14 -3 -18.5t-18 -4.5h-172q-12 0 -14.5 -4t-2.5 -14v-175q0 -11 -5 -14t-15 -3q-16 0 -20.5 2.5 t-4.5 15.5v174q0 12 -4.5 15t-19.5 3h-169q-12 0 -14.5 5t-2.5 19z" />
+<glyph unicode="," horiz-adv-x="195" d="M7 -127q0 1 6 5.5t17 13.5t20 18q48 48 48 79q0 15 -15 35q-6 8 -16.5 18.5t-16 16.5t-5.5 9q0 6 20.5 17t32.5 11q13 0 35 -24t22 -56q0 -28 -32 -69t-63.5 -68t-35.5 -27t-10.5 8t-6.5 13z" />
+<glyph unicode="-" horiz-adv-x="268" d="M30 201q0 12 6 25.5t12 14.5t91.5 4t91.5 3q2 0 2 -9q0 -33 -8 -33q-104 -8 -191 -8q-4 0 -4 3z" />
+<glyph unicode="." horiz-adv-x="210" d="M60 38q0 19 15.5 35.5t30.5 16.5q14 0 29 -16t15 -31q0 -23 -14.5 -37t-25.5 -14q-19 0 -34.5 16.5t-15.5 29.5z" />
+<glyph unicode="/" horiz-adv-x="406" d="M10 -220q0 2 19 57q315 843 317 850q4 11 9.5 14.5t19.5 3.5q21 0 21 -12q0 -8 -14 -44l-314 -851q-8 -22 -13.5 -26.5t-18.5 -4.5q-26 0 -26 13z" />
+<glyph unicode="0" horiz-adv-x="500" d="M62 164q0 86 57.5 144t144.5 58q79 0 127 -48.5t48 -119.5q0 -85 -58 -144t-141 -59q-76 0 -127 46.5t-51 122.5zM107 156q0 -62 34.5 -95.5t89.5 -33.5q62 0 111 51.5t49 128.5q0 59 -36 94t-91 35q-63 0 -110 -57.5t-47 -122.5z" />
+<glyph unicode="1" horiz-adv-x="500" d="M130 12q0 7 2.5 10t11.5 3h40h5t3 1.5t1.5 2t1 3.5t0.5 5q9 47 21.5 122t20.5 129t8 58q0 11 -3 11q-1 1 -5 1h-53q-11 0 -11 13q0 8 1.5 11t9.5 3q9 0 44.5 -1t48.5 -1t47 1t43 1q8 0 9.5 -2.5t1.5 -11.5q0 -7 -2.5 -10t-11.5 -3h-39q-8 0 -9.5 -2t-3.5 -10 q-30 -197 -45 -309q-1 -7 2 -9.5t11 -2.5h50q11 0 11 -13q0 -8 -1.5 -11t-9.5 -3q-9 0 -46 1t-50 1t-48.5 -1t-44.5 -1q-8 0 -9.5 2.5t-1.5 11.5z" />
+<glyph unicode="2" horiz-adv-x="500" d="M54 11q0 7 12 17q13 12 69.5 50.5t86.5 65.5q73 65 73 122q0 40 -22.5 66.5t-61.5 26.5q-29 0 -58 -20.5t-46 -40.5l-17 -20q-5 0 -11.5 5.5t-6.5 10.5q0 7 22.5 30t64 46.5t80.5 23.5q61 0 93 -30t32 -84q0 -86 -197 -201q-28 -16 -28 -20q0 -1 7 -1h248q6 0 20 24 t15 24q4 0 11 -3t7 -5q0 -3 -7 -17l-18 -36.5t-18 -38.5q-2 -6 -11 -6h-324q-15 0 -15 11z" />
+<glyph unicode="3" horiz-adv-x="500" d="M56 -146q0 12 35 12q24 0 34 -11q37 -44 80 -44q55 0 99.5 47.5t44.5 106.5q0 56 -37.5 83.5t-103.5 27.5q-12 0 -33 -1.5t-22 -1.5q-17 0 -17 11t3 14t16 7q172 49 172 167q0 39 -22.5 63t-60.5 24q-29 0 -55 -8.5t-40.5 -17.5t-15.5 -9q-4 0 -7.5 6t-3.5 11q0 4 21 15 t55.5 21t64.5 10q55 0 88.5 -27.5t33.5 -78.5q0 -27 -12.5 -52t-30.5 -42t-36.5 -29.5t-31 -19.5t-12.5 -8t16 -4t38 -11t44.5 -22.5t38.5 -44t16 -69.5q0 -78 -68 -135.5t-152 -57.5q-34 0 -62.5 8t-44 20t-24 22.5t-8.5 17.5z" />
+<glyph unicode="4" horiz-adv-x="500" d="M46 8q0 21 44 78l18 20t16 18q34 41 163 174q15 17 55 55.5t48 38.5q14 0 10 -24l-50 -296q-2 -13 1 -15.5t14 -2.5h83q7 0 7 -10v-34q0 -8 -1.5 -9t-10.5 -1h-97q-9 0 -10 -1t-2 -7q-1 -4 -1 -6q-3 -27 -9 -71l-10 -75t-4 -33q0 -5 -2.5 -7t-12.5 -4l-42 -8q-6 -1 -11 4 t-3 17l34 180q2 4 1 6t-1.5 3.5t-3 2t-4 0t-5.5 -0.5h-7h-189q-18 0 -18 8zM102 60q0 -6 25 -6h147q13 0 15 2.5t4 17.5l35 216q1 8 -3 9.5t-9 -4.5l-197 -210q-17 -17 -17 -25z" />
+<glyph unicode="5" horiz-adv-x="500" d="M58 -199q0 10 7 10q42 3 79.5 14t72.5 31.5t55.5 56t20.5 82.5q0 38 -26.5 71.5t-58.5 52.5l-58.5 36t-26.5 25q0 6 11 36l28.5 76.5t27.5 79.5q2 6 15 6q4 0 83 -7.5t85 -7.5q20 0 24 4l2 4l12 24q6 0 13 -2.5t7 -5.5q0 -1 -25 -68q-6 -16 -11 -18q-3 -1 -9 -1t-28 3 t-62 9t-72 10q-23 2 -28 -7q-12 -24 -23 -55.5t-11 -37.5q0 -4 20 -14.5t48 -27.5t56.5 -39.5t48.5 -57.5t20 -74q0 -65 -48 -117.5t-113.5 -78t-127.5 -25.5q-8 0 -8 13z" />
+<glyph unicode="6" horiz-adv-x="500" d="M55 187q0 107 56 204.5t138 169.5q54 47 112 76.5t75 29.5q10 0 10 -19q0 -3 -8 -6q-81 -32 -130 -80q-94 -91 -135 -173q-14 -30 -14 -36q0 -1 6.5 0t20.5 4q37 7 65 7q79 0 125.5 -45t46.5 -128q0 -89 -58.5 -142.5t-142.5 -53.5q-32 0 -59.5 8.5t-53 29t-40 60 t-14.5 94.5zM116 173q0 -31 8.5 -62t37 -59t71.5 -28q54 0 87.5 51.5t33.5 121.5q0 146 -120 146q-19 0 -48 -6.5t-35 -14.5q-35 -47 -35 -149z" />
+<glyph unicode="7" horiz-adv-x="500" d="M65 286q0 4 6 20t14 43.5t13 54.5q3 20 12 20q17 0 17 -9q0 -3 -1 -9.5t-1 -10.5q0 -2 51 -2h268q13 0 13 -9q0 -6 -41.5 -76.5l-100 -166l-73.5 -121.5q-80 -137 -109 -215q-5 -15 -12 -15q-11 0 -21 6t-10 14q0 28 56 122.5t143.5 226t102.5 155.5q5 8 5 13q0 8 -14 8 h-193q-82 0 -85 -9l-13 -40q-6 -8 -10 -9q-17 0 -17 9z" />
+<glyph unicode="8" horiz-adv-x="500" d="M70 130q0 34 14.5 66t35 54.5t41.5 39.5t35.5 27t14.5 12q0 1 -10.5 10.5t-25 25t-29 35.5t-25 47t-10.5 53q0 71 48 116t124 45q62 0 99.5 -35.5t37.5 -98.5q0 -29 -13.5 -58t-33 -49.5t-38.5 -37t-32.5 -26.5t-13.5 -12q0 -1 11.5 -11.5t27.5 -28.5t32.5 -40t28 -53 t11.5 -61q0 -67 -52.5 -110t-129.5 -43q-68 0 -108 33.5t-40 99.5zM124 145q0 -55 30.5 -89t72.5 -34q48 0 81 35.5t33 82.5q0 22 -11.5 48.5t-27.5 48t-33.5 39.5t-29.5 28.5t-14 10.5q-7 0 -30 -20.5t-47 -62.5t-24 -87zM164 534q0 -36 25.5 -79.5t51 -69.5t30.5 -26 q7 0 30.5 21.5t46.5 62.5t23 82q0 48 -28 80.5t-74 32.5q-48 0 -76.5 -32t-28.5 -72z" />
+<glyph unicode="9" horiz-adv-x="500" d="M42 -185q0 2 32 13q114 40 235 186q20 23 20 32q-2 1 -5 0.5t-12 -4t-12 -4.5q-41 -13 -74 -13q-62 0 -100 45.5t-38 121.5q0 89 62 145.5t146 56.5q70 0 109.5 -52.5t39.5 -138.5q0 -77 -39 -150.5t-101 -125.5q-49 -41 -111.5 -74t-99 -45.5t-43.5 -12.5q-9 0 -9 20z M147 173q0 -55 26.5 -88t79.5 -33q44 0 74 13q25 11 42.5 64t17.5 111q0 61 -25.5 94.5t-66.5 33.5q-66 0 -107 -60.5t-41 -134.5z" />
+<glyph unicode=":" horiz-adv-x="209" d="M60 38q0 19 15.5 35.5t30.5 16.5q14 0 29 -16t15 -31q0 -23 -14.5 -37t-25.5 -14q-19 0 -34.5 16.5t-15.5 29.5zM89 313q0 19 15.5 35.5t30.5 16.5q14 0 29 -16t15 -31q0 -23 -14.5 -37t-25.5 -14q-19 0 -34.5 16.5t-15.5 29.5z" />
+<glyph unicode=";" horiz-adv-x="195" d="M7 -127q0 1 6 5.5t17 13.5t20 18q48 48 48 79q0 15 -15 35q-6 8 -16.5 18.5t-16 16.5t-5.5 9q0 6 20.5 17t32.5 11q13 0 35 -24t22 -56q0 -28 -32 -69t-63.5 -68t-35.5 -27t-10.5 8t-6.5 13zM80 313q0 19 15.5 35.5t30.5 16.5q14 0 29 -16t15 -31q0 -23 -14.5 -37 t-25.5 -14q-19 0 -34.5 16.5t-15.5 29.5z" />
+<glyph unicode="&#x3c;" horiz-adv-x="527" d="M41 211q0 6 0.5 8.5t4 5.5t10.5 6l361 132q48 18 51 18q19 0 19 -25q0 -10 -16 -16l-315 -111q-42 -15 -42 -21q0 -3 42 -18l320 -112q11 -4 11 -13q0 -8 -6 -16t-18 -8q-3 0 -408 147q-10 4 -12 8t-2 15z" />
+<glyph unicode="=" horiz-adv-x="527" d="M31 134q0 8 0.5 11.5t4.5 6.5t13 3h431q8 0 11.5 -2.5t4 -6t0.5 -12.5q0 -14 -3 -19t-18 -5h-427q-9 0 -12.5 3t-4 6.5t-0.5 14.5zM31 290q0 8 0.5 11.5t4.5 6t13 2.5h431q8 0 11.5 -2.5t4 -6t0.5 -12.5q0 -14 -3 -18.5t-18 -4.5h-427q-9 0 -12.5 3t-4 6.5t-0.5 14.5z " />
+<glyph unicode="&#x3e;" horiz-adv-x="527" d="M41 65q0 10 10 13l321 112q42 15 42 18q0 6 -42 21l-316 111q-15 6 -15 16q0 25 18 25q3 0 51 -18l361 -132q16 -6 16 -20q0 -11 -2.5 -15t-12.5 -8q-405 -147 -408 -147q-12 0 -17.5 8t-5.5 16z" />
+<glyph unicode="?" horiz-adv-x="374" d="M80 38q0 19 15.5 35.5t30.5 16.5q14 0 29 -16t15 -31q0 -23 -14.5 -37t-25.5 -14q-19 0 -34.5 16.5t-15.5 29.5zM84 206q0 44 65 109l42.5 41l45.5 44t37 39.5t29.5 41t9.5 34.5q0 21 -11 41.5t-26 29.5q-22 14 -89 14q-13 0 -45 -1.5t-35 -1.5t-5 1t-3 3.5l-2 5t-1 6.5 t-0.5 7t-0.5 8v8q-1 9 3 11.5t15 4.5q30 5 64 5q60 0 90 -19q33 -21 52.5 -59.5t19.5 -77.5q0 -31 -7.5 -53.5t-13.5 -30.5t-28 -32q-16 -18 -105 -107q-1 -1 -17.5 -16.5t-24 -24t-16.5 -22t-9 -23.5q0 -11 7 -23.5t14 -20.5t7 -9q0 -3 -5 -8t-9 -5q-3 0 -14.5 11t-22.5 31 t-11 38z" />
+<glyph unicode="@" horiz-adv-x="795" d="M50 187q0 110 61 203.5t157 145.5t200 52q56 0 103.5 -13t87.5 -41t63 -76.5t23 -113.5q0 -69 -31.5 -126t-81.5 -91.5t-108 -53.5t-115 -19q-35 0 -35 22l6 47q-7 -8 -18.5 -19t-43 -29.5t-56.5 -18.5q-28 0 -43 24t-15 59q0 36 31.5 95t92 110t126.5 51q8 0 20 -3 l11 -3q1 0 14 15q13 16 28 16q25 0 25 -13q0 -8 -3 -14q-110 -237 -110 -278q0 -11 0.5 -16t5.5 -10t14 -5q42 0 93 25t95 69q68 68 68 159q0 112 -66.5 167.5t-177.5 55.5q-157 0 -272 -108.5t-115 -270.5q0 -119 80.5 -192t191.5 -73q97 0 169.5 32.5t140.5 95.5q8 8 13 8 q6 0 10 -5.5t4 -8.5q0 -7 -4 -11q-62 -67 -150 -103.5t-186 -36.5q-125 0 -214 80t-89 220zM271 147q0 -18 11.5 -32t30.5 -14q31 0 67.5 57.5t58 116t21.5 75.5q0 11 -10 17.5t-22 6.5q-42 0 -99.5 -75.5t-57.5 -151.5z" />
+<glyph unicode="A" horiz-adv-x="688" d="M20 15q0 9 3 10.5t15 1.5h33q3 0 72 118l155.5 266t121.5 199q4 5 22.5 24.5t28.5 38.5q7 14 15 14q3 0 5 -1l3 -1.5t2 -3t1 -3.5t1 -5t1 -5q104 -641 116 -641h42q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5t-50.5 1.5q-16 0 -58 -1.5t-53 -1.5 q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h57q2 0 2 11q0 24 -13.5 121t-14.5 103q-1 14 -4 16.5t-14 2.5h-189q-15 0 -23 -15q-121 -227 -121 -238l1 -1h68q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -48.5 1.5t-53.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5z M284 311q0 -6 18 -6h167q13 0 13 5q0 7 -11 74l-22 131t-12 64q-3 0 -13 -19l-133 -234q-7 -12 -7 -15z" />
+<glyph unicode="B" horiz-adv-x="571" d="M20 15q0 9 3 10.5t15 1.5h43q78 514 82 595q1 9 -1 11.5t-9 2.5h-55q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l51 -1q50 -2 71 -2q16 0 60.5 1.5t49.5 1.5q198 0 198 -149q0 -29 -10.5 -54.5t-27.5 -43t-38 -32t-41.5 -23t-37.5 -14.5t-28 -9l-10 -3l20 -3 q21 -2 50 -11.5t58 -26t49.5 -51t20.5 -80.5q0 -168 -289 -168q-11 0 -47.5 1.5t-52.5 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5zM166 48q0 -10 6 -13t25 -4h3q14 -1 45 -1q92 0 145.5 37.5t53.5 113.5q0 71 -50.5 106.5t-131.5 35.5h-31q-19 0 -23 -2t-6 -10 q-8 -36 -35 -251q-1 -5 -1 -12zM208 364q-2 -17 2 -19q3 -1 10 -1h16h21t20.5 -0.5t9.5 -0.5q21 0 55 17q100 51 100 141q0 62 -41 99t-110 37h-16q-16 0 -22 -5.5t-10 -25.5q-9 -56 -35 -242z" />
+<glyph unicode="C" horiz-adv-x="686" d="M35 291q0 160 108 270t255 110q62 0 120 -24.5t92 -62.5l12 41q8 0 18.5 -3.5t10.5 -7.5q0 -3 -7.5 -41l-17 -84t-10.5 -54q-1 -5 -13 -5q-9 0 -16 4t-7 7q0 1 11.5 46.5t11.5 50.5t-28 29.5t-79 50t-99 25.5q-75 0 -139 -56t-98.5 -137t-34.5 -162q0 -123 69.5 -195.5 t172.5 -72.5q47 0 91 16.5t67 33.5t26 26q10 29 25 84q3 9 8 10.5t15 -1.5q17 -4 17 -11q0 -6 -33 -116q-5 -18 -81.5 -47t-141.5 -29q-64 0 -119.5 16.5t-103 50.5t-75 95t-27.5 143z" />
+<glyph unicode="D" horiz-adv-x="742" d="M19 10q0 11 3 13t14 2h43q5 0 42.5 261.5t45.5 338.5q2 11 -4 11l-70 -2q-5 0 -7.5 0.5t-4 3t-1.5 8.5v6t0.5 4.5t2 3.5t4 1.5t6.5 0.5h24t51.5 -0.5t43.5 -0.5q33 0 75.5 1t56.5 1q165 0 261.5 -80t96.5 -248q0 -158 -102 -247.5t-248 -91.5q-32 0 -112 2t-113 2 q-16 0 -55 -2t-42 -2q-8 0 -9.5 2t-1.5 12zM171 46q0 -13 6 -17t59 -4q97 0 170 27t111 64t61.5 88t29.5 87.5t6 73.5q0 123 -74.5 196.5t-223.5 73.5q-49 0 -63 -4l-9 -56l-20 -137.5l-24 -165t-20.5 -148.5t-8.5 -78z" />
+<glyph unicode="E" horiz-adv-x="579" d="M20 15q0 9 3 10.5t15 1.5h43q83 519 83 599q0 10 -3 10h-55q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l47 -1q46 -2 67 -2q28 0 108.5 1.5t100.5 1.5q55 0 74.5 2.5t20.5 10.5q1 12 13 12q11 0 14 -2t3 -9q0 -4 -4 -41t-5 -84q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 3 36 t3 37q0 7 -263 7q-5 0 -41 -269q-2 -11 -0.5 -14t14.5 -3h164q45 0 47 13l11 53q1 7 16 7q13 0 13 -6q0 -4 -2.5 -17t-7 -34l-7.5 -36q-7 -39 -15 -89q-1 -7 -13 -7q-17 0 -17 8q1 7 4 23.5t5.5 29t2.5 14.5q0 8 -10 11t-40 3h-151q-9 0 -12 -0.5t-5 -2.5t-3 -7 q-3 -13 -19.5 -129t-19.5 -147q0 -9 7 -9l319 7q4 0 10 16.5t14.5 43t13.5 37.5q4 9 14 9q17 0 17 -11q0 -5 -5.5 -21l-17 -47.5t-19.5 -55.5q-4 -11 -17 -11q-11 0 -179 1.5t-184 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="F" horiz-adv-x="541" d="M20 15q0 9 3 10.5t15 1.5h43q83 519 83 599q0 10 -3 10h-55q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l47 -1q46 -2 67 -2q28 0 108.5 1.5t100.5 1.5q49 0 58 2t11 11q1 12 13 12q11 0 14 -2t3 -9q0 -4 -4 -41t-5 -84q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 3 36t3 37 q0 7 -237 7q-5 0 -41 -270q-2 -8 -0.5 -11.5t3.5 -4t11 -0.5h156q45 0 47 13l8 43q1 7 16 7q13 0 13 -6q0 -1 -14 -77q-3 -14 -5.5 -30.5t-4.5 -31t-2 -17.5q-1 -7 -13 -7q-17 0 -17 8q9 54 9 57q0 8 -10 11t-40 3h-143q-9 0 -12 -0.5t-5 -2.5t-3 -7q-2 -13 -18.5 -130.5 t-20.5 -148.5q-2 -9 8 -9h65q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -47.5 1.5t-52.5 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="G" horiz-adv-x="721" d="M35 266q0 108 51.5 203t138.5 150.5t186 55.5q26 0 51.5 -3.5t46.5 -8.5t39.5 -12t33 -13.5t24.5 -11.5l16 -8l6 -4q1 0 6 27q3 11 11 11q9 0 15.5 -2t5.5 -7q-13 -84 -23 -175l-1.5 -7.5t-4 -4.5t-9.5 -2q-22 0 -18 16q1 5 8.5 49.5t7.5 50.5q0 5 -35.5 24t-87.5 37.5 t-88 18.5q-78 0 -145.5 -57.5t-103.5 -143.5t-36 -173q0 -122 67 -195t165 -73q65 0 111.5 21.5t51.5 40.5q15 55 18 136q1 14 -9 14h-85q-8 0 -8 12q0 18 9 18q16 0 64 -1.5t66 -1.5q17 0 49.5 1.5t53.5 1.5q8 0 8 -14q0 -16 -8 -16h-57q-2 0 -19 -146q-1 -10 -44.5 -33.5 t-116.5 -45t-138 -21.5q-28 0 -59 6t-70.5 26t-70 50.5t-52 85t-21.5 124.5z" />
+<glyph unicode="H" horiz-adv-x="795" d="M20 13q0 9 3 11.5t15 2.5h53q7 0 48 282t41 314q0 16 -9 16h-61q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5q6 0 47.5 -1.5t58.5 -1.5q16 0 53 1.5t48 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-50q-8 0 -47 -270q-2 -11 -0.5 -15t12.5 -4h332q8 0 11 0.5t5.5 3 t3.5 8.5q30 232 30 261q0 16 -9 16h-61q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5q6 0 48 -1.5t59 -1.5q16 0 52.5 1.5t47.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-50q-10 0 -47 -288.5t-37 -310.5q0 -13 8 -13h57q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3 q-11 0 -54.5 1.5t-59.5 1.5t-50 -1.5t-45 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h53q5 0 44 287q1 8 -1.5 10t-13.5 2h-334q-9 0 -12.5 -3t-4.5 -13q-32 -235 -32 -270q0 -13 8 -13h59q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -54 1.5t-59 1.5t-53.5 -1.5 t-48.5 -1.5q-9 0 -11.5 3t-2.5 13z" />
+<glyph unicode="I" horiz-adv-x="377" d="M20 15q0 9 3 10.5t15 1.5h60q5 0 47 279t42 317q0 16 -9 16h-66q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5q6 0 52 -1.5t63 -1.5q16 0 57 1.5t52 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-57q-9 0 -48.5 -275.5t-39.5 -323.5q0 -13 8 -13h66q8 0 9.5 -2 t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -58 1.5t-63 1.5t-59 -1.5t-54 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="J" horiz-adv-x="365" d="M-58 -188q0 23 28.5 43.5t38.5 20.5q7 0 24 -10.5t28 -10.5q6 0 11.5 2.5t9.5 8.5t7 12t5.5 16.5t4.5 18t3.5 21t2.5 20.5t2 21.5t2 19.5q11 106 30.5 260l33.5 257t14 109q0 18 -10 18h-68q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 56 -1.5t67 -1.5 q16 0 52 1.5t47 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-50q-5 0 -20 -101t-34.5 -253.5t-19.5 -154.5q-16 -121 -35 -173q-23 -62 -64 -105q-60 -64 -109 -64q-19 0 -36 7t-17 17z" />
+<glyph unicode="K" horiz-adv-x="656" d="M20 13q0 9 3 11.5t15 2.5h33q7 0 50.5 282t43.5 314q0 16 -9 16h-57q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5q6 0 45.5 -1.5t56.5 -1.5q16 0 48 1.5t43 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-35q-10 0 -33 -127t-25 -154q-2 -20 13 -20h50 q8 0 93 108.5t130 171.5q10 15 10 16q0 5 -15 5h-21q-7 0 -10.5 0.5t-6 4t-2.5 10.5t2.5 10.5t5.5 4t11 0.5q6 0 29 -1.5t40 -1.5q16 0 42.5 1.5t37.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-58q-82 -110 -218 -261q-3 -3 -6 -6.5t-5.5 -5.5t-4 -4t-1.5 -3 q0 -3 9 -12q24 -22 56 -60.5t56 -70l66 -89.5l61 -83q12 -17 35 -17h28q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -54.5 1.5t-59.5 1.5t-41.5 -1.5t-36.5 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h8q20 0 20 7q0 4 -12 20q-187 266 -196 266h-46h-8 t-4.5 -2.5t-3.5 -7.5q-4 -33 -14.5 -101t-16.5 -112.5t-6 -58.5q0 -11 2 -11h69q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -54 1.5t-59 1.5t-43.5 -1.5t-38.5 -1.5q-9 0 -11.5 3t-2.5 13z" />
+<glyph unicode="L" horiz-adv-x="586" d="M20 15q0 9 2.5 10.5t14.5 1.5h52q1 0 20 142.5l38 292t19 164.5q0 13 -2 13h-58q-10 0 -13 2.5t-3 12.5t3.5 12.5t16.5 2.5q6 0 43.5 -1.5t54.5 -1.5q16 0 57.5 1.5t52.5 1.5q12 0 14.5 -2t2.5 -13q0 -9 -3 -12t-15 -3h-62l-19 -144l-39 -290t-19 -152q0 -22 17 -22 q231 0 291 6q12 1 15 4t8 19l25 77q3 8 11 8q21 0 21 -10q0 -3 -5 -19l-14.5 -47t-17.5 -61q-2 -11 -20 -11q-11 0 -185.5 1.5t-190.5 1.5t-52.5 -1.5t-47.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="M" horiz-adv-x="883" d="M20 15q0 9 3 10.5t15 1.5h48l46 207.5l61 273t26 123.5q0 8 -25 8h-46q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q6 0 50 -1.5t55 -1.5q13 0 29.5 1.5t17.5 1.5q17 0 20 -13l101 -509q5 -24 10 -24t16 24q168 351 252 505q8 14 21 14h44q16 0 45 1.5t40 1.5q10 0 12 -2.5 t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-46l-7 -59l-15.5 -143l-19 -172.5t-16 -155.5t-6.5 -82h77q8 0 10.5 -2t2.5 -11q0 -11 -2 -14t-9 -3q-11 0 -58.5 1.5t-63.5 1.5q-18 0 -56 -1.5t-40 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h39q21 3 80 594 q-188 -358 -253 -497q-9 -20 -19.5 -33t-26.5 -30t-29 -34q-10 -12 -16 -12q-13 0 -16 21q-12 72 -39.5 217l-49.5 255l-22 109q-32 -121 -56 -240q-63 -303 -63 -350h65q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-2 0 -36 1.5t-52 1.5q-17 0 -42 -1.5t-30 -1.5 q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="N" horiz-adv-x="824" d="M20 15q0 9 3 10.5t15 1.5h50q40 245 89 514q1 6 4 22.5t5 29.5t2 21q0 3 -5 12t-10 11t-22 2h-50q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q6 0 53.5 -1.5t58.5 -1.5q13 0 28.5 1.5t16.5 1.5q12 0 20 -13l329 -499q8 -12 16 -12q7 0 39.5 218.5t32.5 263.5q0 12 -2 12h-76 q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q11 0 42 -1.5t47 -1.5t44.5 1.5t39.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-42q-6 0 -80 -467q-10 -60 -16 -168q-1 -15 -4 -20t-12 -5t-28 32q-45 73 -118 180l-256 374q-15 21 -16 21q-4 0 -5 -20q0 -3 -17.5 -117 t-35 -241.5t-17.5 -165.5q0 -15 3 -15h85q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -50.5 1.5t-55.5 1.5q-18 0 -52 -1.5t-35 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="O" horiz-adv-x="734" d="M35 280q0 87 32.5 162t85.5 124.5t119.5 78t134.5 28.5q135 0 213.5 -89t78.5 -236q0 -151 -107 -260.5t-258 -109.5q-62 0 -114.5 17.5t-94.5 53t-66 94.5t-24 137zM127 286q0 -116 57 -200t167 -84q75 0 135.5 60t91 144t30.5 167q0 44 -11 89.5t-33.5 87.5t-62.5 68.5 t-91 26.5q-71 0 -137 -52.5t-106 -136t-40 -170.5z" />
+<glyph unicode="P" horiz-adv-x="570" d="M20 15q0 9 3 10.5t15 1.5h43q83 569 83 599q0 10 -3 10h-55q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l44 -1q44 -2 65 -2q16 0 63 2.5t54 2.5q99 0 154.5 -47.5t55.5 -123.5q0 -44 -14.5 -78.5t-38 -55.5t-56 -35t-65.5 -19.5t-70 -5.5q-16 0 -44.5 1t-31.5 1 q-16 0 -18 -9q-9 -48 -33 -259q-2 -9 8 -9h65q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -47.5 1.5t-52.5 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5zM202 335q0 -12 31 -12q59 0 107.5 15.5t83 54.5t34.5 97q0 74 -42.5 113.5t-124.5 39.5q-44 0 -45 -5 q-22 -138 -42 -284q-2 -18 -2 -19z" />
+<glyph unicode="Q" horiz-adv-x="717" d="M16 -107q0 41 101 41q14 0 38 -2.5t33 -2.5q13 0 23 4q5 2 23.5 11.5l43.5 22t41 19.5q13 6 13 7l-16 2q-17 2 -43 8t-57.5 17t-63.5 34t-58 54.5t-42.5 82.5t-16.5 114q0 90 46.5 174.5t131.5 140t185 55.5q128 0 206 -85.5t78 -214.5q0 -133 -69.5 -227t-174.5 -132 q-13 -5 -27 -9t-25.5 -8.5t-28.5 -12.5q-52 -25 -91 -46q-28 -15 -28 -16t33 -9q265 -72 354 -72q30 0 53 2.5t33.5 5.5t11.5 3q5 0 5 -11q0 -1 -28 -11t-70 -20t-70 -10q-85 0 -184 22t-166 43.5t-75 21.5q-15 0 -37 -9q-35 -13 -49 -13q-33 0 -33 26zM121 290 q0 -134 73 -203.5t174 -69.5q16 0 43 17t58.5 51t59.5 78.5t47 107.5t19 129q0 114 -57.5 180t-152.5 66q-89 0 -176.5 -106.5t-87.5 -249.5z" />
+<glyph unicode="R" horiz-adv-x="625" d="M20 13q0 9 3 11.5t15 2.5h41q19 106 47.5 312t35.5 282q0 15 -3 15h-61q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 17 14q1 0 15 -0.5t38.5 -1.5t53.5 -1q15 0 69.5 3.5t72.5 3.5q87 0 144.5 -45.5t57.5 -116.5q0 -44 -20 -78.5t-48.5 -53t-57 -30t-48.5 -16t-20 -5.5 t7.5 -3.5l24.5 -8t34 -12.5q113 -45 113 -164q0 -6 -1.5 -44t-1.5 -54q0 -11 3 -11h43q12 0 16 -2.5t4 -12.5q0 -15 -8 -15q-2 0 -29.5 0.5t-61.5 1.5t-53 1q-7 0 -5 13q16 94 16 157q0 48 -38 86.5t-97 50.5q-24 5 -71 5h-27q-25 0 -28 -24q-26 -182 -29 -252q0 -9 8 -9h53 q8 0 10.5 -2t2.5 -11q0 -11 -2 -14t-9 -3q-11 0 -42.5 1.5t-47.5 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2t-2 14zM204 350q0 -14 18 -14h7q20 0 43.5 -1.5t26.5 -1.5q53 0 108 50t55 115q0 145 -171 145q-50 0 -50 -5q-3 -25 -18.5 -143t-17.5 -132q-1 -5 -1 -13z" />
+<glyph unicode="S" horiz-adv-x="505" d="M40 67q0 15 17 100q1 3 2.5 11.5t3 15t2.5 7.5t5 1q23 0 23 -10q0 -2 -7.5 -45.5t-7.5 -46.5q0 -18 64.5 -51t122.5 -33q56 0 93 35t37 88q0 42 -31.5 72.5t-76.5 52l-90 45t-76.5 65t-31.5 99.5q0 86 57.5 141t147.5 55q20 0 41 -6t37.5 -14t30 -16t21.5 -14l8 -6l8 32 q2 10 9 10h3q18 -3 18 -7q0 -3 -31 -167q-2 -12 -15 -12q-16 0 -16 12l4 14q4 14 7.5 31t3.5 24q0 2 -6 11.5t-18.5 22.5t-28.5 25t-39.5 20.5t-47.5 8.5q-57 0 -90.5 -36.5t-33.5 -95.5q0 -39 22.5 -67.5t55.5 -44l72.5 -35t72.5 -39t55.5 -57t22.5 -88.5q0 -85 -66 -136.5 t-144 -51.5q-55 0 -106.5 16.5t-77.5 35t-26 28.5z" />
+<glyph unicode="T" horiz-adv-x="681" d="M20 546q0 1 6 16.5t16.5 46.5l20.5 63q3 9 7 11.5t15 2.5q10 0 10 -12v-5q0 -8 106 -8h326q103 0 104 11q1 14 14 14q11 0 13.5 -2t2.5 -9q0 -8 -1.5 -23t-3.5 -44t-4 -63q0 -10 -19 -10q-8 0 -9.5 2.5t-1.5 11.5q0 2 3 38.5t3 39.5q0 6 -107 6h-106q-9 0 -13 -20 l-27 -188l-37 -262t-17 -122q0 -14 8 -14h64q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5q-17 0 -61 -1.5t-50 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h54q10 0 94 569q3 24 3 26q0 11 -6 11h-137q-92 0 -95 -11l-24 -70q-4 -11 -6.5 -14 t-9.5 -3q-19 0 -19 11z" />
+<glyph unicode="U" horiz-adv-x="759" d="M60 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 52.5 1.5t47.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-32q-5 0 -23.5 -98.5t-35 -211.5t-16.5 -148q0 -37 15 -64.5t34.5 -40.5t46 -21t40.5 -9t27 -1q42 0 88.5 16t76.5 35q28 19 39 60 q12 47 32 163q41 241 48 320h-67q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 46.5 -1.5t57.5 -1.5t48 1.5t34 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-32q-8 -38 -22 -118q-62 -378 -95 -490q-7 -25 -19 -25h-5q-9 0 -11 11q-1 10 -2.5 23 t-2 19.5t-1.5 13t-2.5 9t-4.5 2.5t-45 -24q-113 -62 -211 -62q-82 0 -137 42.5t-55 115.5q0 46 33 248.5t33 229.5q0 5 -1 5h-63q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="V" horiz-adv-x="666" d="M20 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 55 1.5t50 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-55q-4 0 -4 -5q0 -26 37.5 -287t42.5 -261q3 0 30 46l69 121l79 145l118 225q4 12 3 14t-9 2h-67h-5.5t-4 0.5t-4 1.5t-2.5 2.5t-1.5 4 t-0.5 6.5q0 11 3 13t14 2q1 0 34 -1.5t65 -1.5q8 0 31 1.5t27 1.5q10 0 12.5 -3t2.5 -15q0 -9 -3 -10.5t-16 -1.5q-15 0 -18 -1t-6 -6l-314 -539q-3 -6 -21 -27.5t-33 -44.5q-22 -33 -37 -33q-8 0 -11.5 10.5t-8.5 50.5q-20 146 -56.5 368t-43.5 222h-40q-6 0 -8 0.5t-5 1.5 t-4 4t-1 9z" />
+<glyph unicode="W" horiz-adv-x="1010" d="M20 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 52 1.5t47 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-53q-4 0 -4 -5q0 -26 35.5 -285.5t40.5 -259.5t88 149l139 255q-18 146 -21 146h-43h-5.5t-4 0.5t-4 1.5t-2.5 2.5t-1.5 4t-0.5 6.5 q0 7 2 10.5t5 4t11 0.5q6 0 37 -1.5t48 -1.5q16 0 67.5 1.5t59.5 1.5q10 0 12.5 -3t2.5 -15q0 -9 -3 -10.5t-16 -1.5h-73q-3 0 -3 -19q0 -14 32 -278.5t36 -264.5q3 0 30 49.5l66.5 127l76 149.5l71 141.5t39.5 78.5q4 12 3 14t-9 2h-64q-6 0 -8 0.5t-5 1.5t-4 4t-1 9 q0 11 3 13t14 2q1 0 32.5 -1.5t63.5 -1.5q8 0 32 1.5t28 1.5q10 0 12.5 -3t2.5 -15q0 -9 -3 -10.5t-16 -1.5h-11.5t-8 -0.5t-5.5 -1t-3.5 -2.5t-3 -3.5t-3 -6t-3.5 -7.5q-147 -285 -194 -369l-88 -156q-3 -6 -21.5 -28t-32.5 -44q-22 -33 -37 -33q-8 0 -11.5 10.5t-8.5 50.5 q-22 154 -62 394l-195 -350q-3 -6 -21.5 -28t-32.5 -44q-22 -33 -35 -33q-8 0 -11.5 10.5t-8.5 50.5q-20 147 -55.5 368.5t-40.5 221.5h-40q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="X" horiz-adv-x="661" d="M20 12q0 6 0.5 9t3 4.5t4.5 1.5h8h26q5 0 39.5 43.5l95.5 123l104 131.5q8 9 8 10t-4 11l-125 254q-17 34 -22 34h-43h-5.5t-4 0.5t-4 1.5t-2.5 2.5t-1.5 4t-0.5 6.5q0 7 2 10.5t5 4t11 0.5q6 0 42 -1.5t53 -1.5q16 0 53.5 1.5t48.5 1.5q10 0 12 -2.5t2 -15.5 q0 -9 -3 -10.5t-15 -1.5h-41q-11 0 -11.5 -2t3.5 -13q13 -43 85 -193q19 -39 20 -39q2 0 30 39q140 195 140 204q0 4 -3 4h-46q-13 0 -15.5 1.5t-2.5 10.5q0 13 2 15.5t12 2.5q11 0 31.5 -1.5t36.5 -1.5q17 0 43.5 1.5t32.5 1.5q11 0 13.5 -2t2.5 -13t-3 -13t-13 -2h-29 q-4 0 -57.5 -66.5l-104.5 -133.5l-52 -67q-6 -8 -1 -16l58.5 -110.5l82 -152t39.5 -61.5h47q6 0 8 -0.5t5 -1.5t4 -4t1 -9q0 -7 -2 -10.5t-5 -4t-11 -0.5q-6 0 -44.5 1.5t-55.5 1.5q-16 0 -60.5 -1.5t-55.5 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h47q11 0 12.5 2.5 t-3.5 12.5q-14 34 -66.5 142l-58.5 120q-5 6 -6 5.5t-9 -10.5l-114 -154t-72 -114q0 -4 13 -4h41q12 0 15 -1.5t3 -10.5q0 -13 -2 -15.5t-12 -2.5q-4 0 -36 1.5t-49 1.5t-38.5 -1.5t-24.5 -1.5q-10 0 -13 2t-3 13z" />
+<glyph unicode="Y" horiz-adv-x="613" d="M20 654q0 7 2 10.5t5 4t11 0.5q6 0 45 -1.5t56 -1.5q16 0 46.5 1.5t41.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-31q-10 0 -11 -2t3 -13q13 -44 103 -265q6 -12 8 -12q5 0 16 18l35 52l46 68l43 65t34.5 56.5t12.5 29.5v3h-53q-13 0 -15.5 1.5t-2.5 10.5 q0 13 2 15.5t12 2.5q11 0 36.5 -1.5t41.5 -1.5q17 0 42.5 1.5t31.5 1.5q11 0 13.5 -2t2.5 -13q0 -6 -0.5 -9t-3 -4.5t-5 -1.5h-7.5h-36q-2 0 -45.5 -58l-97 -133t-80.5 -116q-5 -9 -8 -22q-44 -260 -44 -270q0 -13 5 -13h63q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3 q-11 0 -50 1.5t-55 1.5t-49.5 -1.5t-44.5 -1.5q-9 0 -11.5 3t-2.5 13q0 9 3 11.5t15 2.5h42q6 0 30 143l15 90q5 27 5 41l-146 338h-47q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="Z" horiz-adv-x="599" d="M35 15q0 7 215 308t215 303q0 3 -24 3h-256q-42 0 -44 -10l-5.5 -28l-6 -32t-2.5 -15q-3 -10 -8 -11h-5q-21 0 -21 7q0 2 4.5 24.5t10.5 56t9 59.5q0 6 16 6q14 0 14 -5v-9q0 -11 57 -11h348q10 0 13.5 -3t3.5 -12q0 -6 -187 -275q-224 -322 -224 -329q0 -10 11 -10 l304 3q15 0 21 15q8 23 23 89q2 8 14 8q20 0 20 -12q0 -2 -6.5 -27l-15 -56.5t-11.5 -43.5q-2 -11 -22 -11q-57 0 -229.5 1.5t-223.5 1.5q-5 0 -6.5 2.5t-1.5 12.5z" />
+<glyph unicode="[" horiz-adv-x="296" d="M80 -126v801q0 9 2 12t10 3h151q9 0 11 -1.5t2 -7.5v-14q0 -9 -2 -11t-11 -2h-105q-9 0 -11 -2t-2 -10v-735q0 -12 13 -12h105q6 0 8.5 -0.5t3.5 -3t1 -9.5v-12q0 -6 -2 -8.5t-11 -2.5h-150q-9 0 -11 2.5t-2 12.5z" />
+<glyph unicode="\" horiz-adv-x="406" d="M10 693q0 12 21 12q14 0 19.5 -3.5t9.5 -14.5l317 -850q19 -55 19 -57q0 -13 -26 -13q-13 0 -18.5 4.5t-13.5 26.5l-314 851q-14 36 -14 44z" />
+<glyph unicode="]" horiz-adv-x="296" d="M40 -118q0 9 2 11t11 2h105q9 0 11 2t2 10v735v6t-1.5 3.5t-4 2t-7.5 0.5h-105q-6 0 -8.5 0.5t-3.5 3t-1 9.5v12q0 7 2 9t11 2h150q9 0 11 -2.5t2 -12.5v-801q0 -9 -2 -12t-10 -3h-151q-9 0 -11 1.5t-2 7.5v14z" />
+<glyph unicode="^" horiz-adv-x="402" d="M51 311l146 320q2 1 6 1t6 -1l146 -320q-15 -3 -26 -3q-9 0 -26 3l-102 232l-98 -232q-18 -3 -28 -3q-11 0 -24 3z" />
+<glyph unicode="_" horiz-adv-x="410" d="M25 -43q0 18 16 18h331q13 0 13 -17v-5q0 -23 -13 -23h-334q-13 0 -13 19v8z" />
+<glyph unicode="`" horiz-adv-x="400" d="M128 575q0 31 34 31q21 0 26 -24l26 -125v-3l1 -3q0 -2 -4 -2h-15q-4 0 -7 6l-57 107q-4 7 -4 13z" />
+<glyph unicode="a" horiz-adv-x="433" d="M25 59q0 46 15 100.5t42 106.5t72 86.5t98 34.5q35 0 56 -30l7.5 -12.5t7.5 -11.5t5 -4t8.5 21t6.5 23q2 6 36 11q21 2 21 -5q0 -3 -40.5 -146.5t-40.5 -169.5q0 -20 14 -20q9 0 37 28l27 28q3 0 7 -4t4 -10q0 -3 -22 -26t-54 -46.5t-51 -23.5q-27 0 -27 24q0 19 14 72 t28 97l15 44q-55 -101 -125 -174q-23 -24 -33.5 -33.5t-28 -19t-34.5 -9.5q-31 0 -48 19.5t-17 49.5zM94 96q0 -53 26 -53q25 0 81.5 62.5t97.5 129.5q15 24 15 54q0 26 -27.5 42t-54.5 16q-32 0 -65 -46t-53 -105t-20 -100z" />
+<glyph unicode="b" horiz-adv-x="453" d="M25 12q0 4 13 23q5 7 8 19q30 158 58.5 349t28.5 220q0 7 -7 7q-4 0 -41 -11t-41 -11q-9 0 -9 25q0 10 5 11q155 38 164 38q12 0 12 -10q0 -6 -17.5 -117.5t-22.5 -140.5l-49 -251q51 85 87 133q38 51 64.5 71.5t71.5 20.5q41 0 64 -23q14 -14 14 -42q0 -72 -28.5 -137 t-69.5 -106t-84 -64.5t-76 -23.5q-20 0 -40 7t-32.5 14t-15.5 7q-4 0 -20 -8q-20 -8 -27 -8q-10 0 -10 8zM112 80q0 -25 17 -42.5t51 -17.5q41 0 84.5 51t69 112.5t25.5 98.5q0 23 -10 41t-32 18q-41 0 -83 -59l-48.5 -68l-36.5 -54.5t-28.5 -49t-8.5 -30.5z" />
+<glyph unicode="c" horiz-adv-x="402" d="M25 128q0 114 71 188.5t150 74.5q58 0 86 -31q22 -24 22 -56q0 -21 -12 -35t-31 -14q-22 0 -22 37q0 4 0.5 12t0.5 12q0 20 -11.5 34t-35.5 14q-28 0 -57 -18.5t-49 -48.5q-47 -71 -47 -153q0 -16 2.5 -28.5t11 -32.5t32 -31.5t60.5 -11.5q38 0 76.5 19.5t61.5 39 t24 19.5q3 0 7.5 -5t4.5 -9q0 -5 -30 -31.5t-82 -54t-96 -27.5q-73 0 -105 40t-32 97z" />
+<glyph unicode="d" horiz-adv-x="473" d="M25 74q0 34 14.5 83.5t40 100t68 86t92.5 35.5q17 0 33.5 -3t25 -6.5t18 -8.5t10.5 -5q9 -4 12 -2t5 12q6 31 15 91.5l15.5 107t6.5 47.5q5 17 -4 17q-2 0 -44 -10.5t-45 -10.5q-5 0 -3 21q1 8 2.5 9.5t7.5 3.5q39 8 76 17.5t55 14.5t20 5q11 0 11 -15q0 -3 -50 -288 t-50 -316q0 -15 13 -15t35.5 18.5t39.5 36.5t18 18q3 0 6.5 -3t3.5 -5q0 -5 -22 -32t-61.5 -56t-75.5 -29q-12 0 -19.5 9.5t-7.5 25.5q0 18 10.5 70.5t20.5 95.5l10 43q-38 -72 -89 -139l-30.5 -39t-29 -30.5t-37 -25t-40.5 -7.5q-10 0 -19.5 2t-24.5 9t-24 24t-9 43z M91 102q0 -56 46 -56q41 0 138 140q54 82 54 118q0 14 -29 33.5t-60 19.5q-41 0 -77 -49t-54 -107t-18 -99z" />
+<glyph unicode="e" horiz-adv-x="390" d="M25 105q0 114 73 200t172 86q93 0 93 -66q0 -43 -35 -77t-88 -54q-65 -24 -141 -24q-8 0 -8 -46q0 -89 96 -89q42 0 82 21.5t63.5 43.5t24.5 22q4 0 8.5 -5t4.5 -9q0 -2 -11 -13.5t-32 -28t-47 -32.5t-61 -27.5t-68 -11.5q-55 0 -90.5 27.5t-35.5 82.5zM106 200 q0 -7 10 -7q74 0 128 36.5t54 96.5q0 19 -14 30t-36 11q-82 0 -128 -122q-14 -35 -14 -45z" />
+<glyph unicode="f" horiz-adv-x="284" d="M-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q9 98 42 157q46 80 101 112q48 28 91 28q24 0 48.5 -12.5 t24.5 -23.5q0 -13 -19 -27t-35 -14q-12 0 -37.5 18.5t-43.5 18.5q-75 0 -109 -254q-1 -6 -1 -9q-1 -3 2 -4.5t6 -1.5h82q5 0 5 -2q0 -8 -2 -14q-2 -9 -7 -9h-80q-7 0 -7.5 -1t-2.5 -10q-2 -11 -13 -91l-23.5 -164.5l-20.5 -134.5q-3 -17 -11 -44.5t-31 -70.5t-52 -65 q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5q-24 0 -46 12.5t-22 23.5z" />
+<glyph unicode="g" horiz-adv-x="426" d="M-6 -157q0 39 29.5 67t61.5 42q12 6 12 8q0 1 -3 2.5t-7.5 3.5t-7.5 4q-25 18 -25 33q0 7 18 35.5t27 31.5l60 22l6 3q0 2 -7 4q-14 4 -28 11.5t-31.5 22t-28 40t-10.5 57.5q0 70 51.5 119.5t125.5 49.5q18 0 35 -4.5t28 -11.5t19 -13.5t12 -11t5 -4.5q2 0 7.5 11.5 t12 26.5t8.5 19q5 9 21 9q27 0 27 -11q0 -12 -11.5 -33t-23 -38t-11.5 -18q0 -6 3 -13q7 -18 7 -40q0 -73 -53 -121q-26 -24 -51.5 -35t-74.5 -24q-93 -27 -93 -47q0 -9 10.5 -16t37 -13.5t41.5 -9t55 -8.5q17 -3 26 -4q65 -11 98 -30.5t33 -64.5q0 -75 -67 -110t-173 -35 q-44 0 -79.5 7t-63.5 29t-28 58zM36 -151q0 -21 18 -36.5t46.5 -22t53.5 -9.5t50 -3q62 0 101 22.5t39 66.5q0 32 -26 46t-78 23q-98 17 -107 17q-8 0 -32 -11q-65 -32 -65 -93zM123 229q0 -60 24.5 -87t49.5 -27q40 0 78.5 48.5t38.5 115.5q0 37 -22 67t-56 30 q-50 0 -81.5 -48.5t-31.5 -98.5z" />
+<glyph unicode="h" horiz-adv-x="468" d="M25 6q0 2 7 33.5t18 88l23.5 127t26 168.5t23.5 196q2 19 -4 19q-10 0 -49 -14l-38 -13q-3 0 -3 14q0 13 7 16q30 11 83 22.5t72 11.5q6 0 6 -15q-5 -101 -93 -537q47 110 115 192q56 68 124 68q26 0 42.5 -12t16.5 -36q0 -37 -33.5 -147.5t-33.5 -120.5q0 -22 21 -22 q11 0 34 21.5t41.5 43.5t19.5 22q2 0 7 -4t5 -6q0 -5 -22 -33.5t-60.5 -58.5t-72.5 -30q-18 0 -29.5 10.5t-11.5 27.5q0 14 36.5 127.5t36.5 141.5q0 17 -9 28t-25 11q-33 0 -66.5 -40t-74.5 -107q-46 -77 -54 -108l-20 -82q-2 -11 -58 -11q-8 0 -8 8z" />
+<glyph unicode="i" horiz-adv-x="270" d="M25 282q0 4 29.5 28.5t67 48.5t54.5 24q20 0 20 -22q0 -26 -32.5 -150t-32.5 -136q0 -20 13 -20q8 0 27 16t35 32t17 16q3 0 7.5 -5t4.5 -7q0 -12 -64.5 -62.5t-86.5 -50.5q-24 0 -24 18q0 24 35.5 145t35.5 153q0 18 -12 18q-11 0 -30.5 -15t-35 -29.5t-16.5 -14.5 q-4 0 -8 4.5t-4 8.5zM128 549q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33z" />
+<glyph unicode="j" horiz-adv-x="297" d="M-69 -221q0 15 10 25.5t25 10.5q18 0 38 -12.5t37 -12.5q10 0 17.5 7.5t14 26.5t9.5 31.5t9 42.5q19 93 43 242t24 170q0 18 -12 18q-11 0 -35 -22t-43.5 -44.5t-20.5 -22.5q-4 0 -8 3.5t-4 7.5t30 36t71.5 64.5t66.5 32.5q21 0 21 -24q0 -21 -12.5 -103t-27 -167 t-15.5 -92q-7 -45 -14 -73.5t-28.5 -72.5t-53.5 -68q-52 -38 -87 -38q-24 0 -39.5 11t-15.5 23zM157 579q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33z" />
+<glyph unicode="k" horiz-adv-x="450" d="M25 -3q0 8 21 107t48.5 249.5t38.5 269.5q0 9 -7 9q-8 0 -75 -19q-6 -1 -7.5 2t0.5 17q2 8 6 9l77.5 20l53.5 14t19 4q14 0 14 -11q0 -16 -97 -489q36 69 72 117q33 43 66.5 64t82.5 21q59 0 59 -37q0 -42 -32.5 -78t-67.5 -53t-65 -24q-21 -3 -21 -4l4 -2 q4 -2 10.5 -6.5t12.5 -9.5q47 -45 73 -77q16 -20 24 -28.5t22.5 -16.5t31.5 -8q34 0 34 27q0 4 -1 10.5t-1 9.5q0 12 8 12t14.5 -10.5t6.5 -32.5t-38.5 -38.5t-72.5 -16.5q-22 0 -43 20q-11 10 -23.5 25t-29 37.5t-24.5 32.5q-10 13 -23.5 28.5t-20 24t-6.5 9.5q0 5 17 22 q2 2 10 2q16 0 28 5q37 17 71 53.5t34 70.5q0 20 -31 20q-29 0 -63 -32q-9 -9 -18.5 -20t-20.5 -26.5l-18.5 -26.5l-21.5 -33t-21 -32q-17 -27 -24 -58q-15 -64 -21 -98q-3 -22 -10 -22q-1 0 -11 -1.5t-22 -3t-17 -1.5t-5 3z" />
+<glyph unicode="l" horiz-adv-x="272" d="M55 28q0 6 18 106.5l42 243t35 234.5q2 10 -1 14t-13 1q-66 -18 -74 -18q-5 0 -3 20q1 8 2.5 9.5t7.5 3.5q39 9 75.5 18.5l53.5 14t19 4.5q10 0 10 -9q0 -12 -50 -305.5t-50 -296.5q0 -21 14 -21q12 0 36 21t43.5 42t20.5 21q3 0 9.5 -5.5t6.5 -7.5q0 -4 -28 -34.5 t-71.5 -62t-73.5 -31.5q-29 0 -29 38z" />
+<glyph unicode="m" horiz-adv-x="739" d="M15 255q0 11 69 64.5t101 53.5q18 0 18 -19q0 -28 -5 -63.5t-16 -95.5t-14 -78q114 262 225 262q16 0 25 -14t9 -33q0 -82 -57 -251q2 4 20 37.5l29.5 53.5l32.5 55.5t39.5 57.5t41 46t45.5 36t45 12q51 0 51 -34q0 -28 -36.5 -141t-36.5 -131q0 -24 18 -24q12 0 53 41 l40 41q3 0 7.5 -5t4.5 -7q0 -4 -28.5 -33.5t-69 -59.5t-65.5 -30q-15 0 -25 8.5t-10 20.5q0 17 39 136.5t39 152.5q0 8 -5.5 15t-15.5 7q-39 0 -125 -133q-64 -98 -90 -188q-3 -10 -14 -12q-24 -3 -42 -3q-8 0 -8 7l29 110q29 110 29 179q0 37 -21 37q-18 0 -37 -25 q-63 -76 -108 -167q-17 -34 -41 -118q-5 -17 -11 -20q-36 -14 -49 -14q-7 0 -5 10q12 51 28.5 151.5t16.5 145.5q0 17 -14 17q-11 0 -33.5 -18.5t-41 -37.5t-19.5 -19q-12 0 -12 17z" />
+<glyph unicode="n" horiz-adv-x="515" d="M15 287q0 2 29.5 26t72.5 48.5t70 24.5q21 0 21 -21t-6 -55t-12 -57l-19.5 -72.5t-16.5 -62.5q74 131 134.5 199.5t116.5 68.5q51 0 51 -44q0 -29 -38.5 -145t-38.5 -127q0 -20 19 -20q13 0 34.5 18.5t38 37t17.5 18.5q3 0 7.5 -4.5t4.5 -6.5q0 -5 -24 -31.5t-63.5 -53.5 t-72.5 -27q-15 0 -23.5 11.5t-8.5 29.5q0 28 40 135t40 138q0 12 -6 20.5t-16 8.5q-26 0 -79 -66.5t-100 -141.5q-22 -36 -44 -112q-7 -25 -15 -26q-40 -4 -48 -4q-7 0 -5 10q60 249 60 312q0 18 -13 18q-14 0 -54 -32l-39 -32q-3 0 -8.5 5t-5.5 12z" />
+<glyph unicode="o" horiz-adv-x="419" d="M25 138q0 110 66 184.5t165 74.5q71 0 104.5 -50t33.5 -109q0 -94 -68 -170t-161 -76q-67 0 -103.5 42.5t-36.5 103.5zM87 146q0 -130 80 -130q46 0 85.5 47.5t59 107t19.5 107.5q0 36 -19 66t-67 30q-57 0 -107.5 -78.5t-50.5 -149.5z" />
+<glyph unicode="p" horiz-adv-x="486" d="M10 225l11 18.5t29.5 40.5t44 51.5t51 41t55.5 18.5q17 0 17 -31q0 -21 -8 -79t-16 -106l-8 -48q43 107 100 194q37 57 99 57q44 0 60 -23.5t16 -67.5q0 -110 -74 -204t-151 -94q-11 0 -32 3.5t-24 3.5q-12 0 -13 -8l-32 -209q-5 -23 9 -24q16 -2 40 -4q14 -1 19.5 -1.5 t11 -2t7 -4t1.5 -6.5q0 -14 -4.5 -17.5t-15.5 -3.5q-1 0 -27 3.5t-67.5 7t-79.5 3.5q-17 0 -17 10q0 14 3.5 18t15.5 4h16q12 0 16 3.5t6 17.5q47 272 62.5 371t15.5 146q0 18 -12 18q-15 0 -41 -28t-46.5 -56t-21.5 -28q-4 0 -10 5.5t-6 9.5zM181 51q0 -32 64 -32 q33 0 69.5 42.5t60.5 103.5t24 113q0 64 -44 64q-15 0 -29.5 -9.5t-29 -30t-22.5 -34t-22 -41.5l-16 -32q-55 -105 -55 -144z" />
+<glyph unicode="q" horiz-adv-x="455" d="M25 74q0 36 17.5 87t48 101t79.5 84.5t104 34.5q41 0 86 -20l14 -6q4 0 16 7q1 1 6.5 4t12 5.5t11.5 3.5q4 1 7 -2t3 -8q0 -3 -27 -61q-5 -13 -7 -25l-90 -515q0 -11 14 -11q33 0 52 -2q12 -1 12 -16v-7t-0.5 -5t-2.5 -4.5t-5 -1.5t-8 -1q-1 0 -13.5 1t-32.5 1.5t-39 0.5 q-14 0 -34.5 -1.5t-36 -3.5t-16.5 -2q-5 0 -7 0.5t-4 3t-2 8.5q1 13 4.5 16t16.5 5q2 0 6.5 1t6 1t4.5 0.5t3.5 1.5t2.5 1.5t2.5 2t2 3t2 4l1 5t1.5 6.5q3 14 16.5 72.5t29.5 141.5l47 252q-31 -69 -82 -139q-75 -105 -138 -105q-9 0 -20.5 2.5t-27 10t-26 25t-10.5 43.5z M89 99q0 -27 14 -43t33 -16q41 0 142 146q64 98 64 132q0 12 -19 27.5t-49 15.5q-61 0 -123 -99t-62 -163z" />
+<glyph unicode="r" horiz-adv-x="341" d="M25 291q0 11 50.5 53t79.5 42q18 0 18 -20q0 -17 -27 -176l4 -1q47 121 62 149q29 55 72 55q18 0 32.5 -10t14.5 -26q0 -37 -22 -37q-11 0 -28 9t-27 9q-14 0 -25 -17q-23 -35 -57 -125q-2 -6 -11 -38q-9 -36 -19.5 -86.5l-13.5 -64.5q-1 -4 -21.5 -7.5t-30.5 -3.5t-10 4 q0 2 12 63.5t24 133t12 96.5q0 38 -13 38q-11 0 -27 -12.5t-27.5 -25.5t-12.5 -13q-9 0 -9 11z" />
+<glyph unicode="s" horiz-adv-x="336" d="M20 61q0 11 8.5 18t15.5 7q5 0 8.5 -0.5t7.5 -2t6 -2.5t5.5 -4t5 -4t5.5 -5.5t5 -5.5l13 -13.5l11.5 -12t9.5 -8t12 -6t13 -1.5q30 0 50.5 20t20.5 53q0 20 -22.5 44t-49.5 42.5t-49.5 46.5t-22.5 56q0 47 39 81.5t92 34.5q31 0 52 -8t30 -20t12 -21t3 -15q0 -17 -18 -17 q-29 0 -48 35q-15 27 -32 27q-27 0 -48 -15t-21 -48q0 -26 15 -47.5t36 -37l42.5 -31.5t36.5 -40t15 -54q0 -45 -39 -78.5t-92 -33.5q-46 0 -87 21.5t-41 44.5z" />
+<glyph unicode="t" horiz-adv-x="284" d="M35 346q0 1 0.5 9t0.5 10q0 7 8 7h61q9 0 11 8q10 55 16 101q2 10 4.5 13t13.5 4q5 1 21 1q28 0 28 -5q0 -1 -5.5 -25l-11.5 -51.5t-7 -35.5q-1 -7 0.5 -8.5t9.5 -1.5h73q9 0 9 -8q0 -22 -13 -22h-73h-7t-3.5 -1.5t-1.5 -2.5t-1 -6q-41 -220 -41 -247q0 -21 19 -21 q11 0 37 22.5t48.5 45t23.5 22.5q2 0 8 -4.5t6 -6.5q0 -4 -31.5 -39t-76.5 -70.5t-72 -35.5q-35 0 -35 34q0 10 26.5 153.5t26.5 145.5v4q1 5 -0.5 6t-8.5 1h-47q-16 0 -16 4z" />
+<glyph unicode="u" horiz-adv-x="521" d="M15 256q0 2 12 19t32 41.5t38 43.5q31 31 71 31q22 0 38.5 -9t16.5 -27q0 -13 -32 -132.5t-32 -145.5q0 -23 28 -23q33 0 88 78q72 104 101 199q6 24 12 55q1 4 27 7q15 2 26 3q9 0 9 -9q0 -5 -27.5 -145.5t-27.5 -152.5q0 -25 19 -25q11 0 31 22.5t36 45t17 22.5 q8 0 8 -7q0 -6 -22 -40.5t-57 -70.5t-62 -36q-14 0 -23.5 7.5t-9.5 19.5q0 22 22.5 122.5t26.5 130.5q-1 -3 -10 -22t-26 -50t-33 -55q-104 -158 -173 -158q-55 0 -55 42q0 11 30.5 125.5t30.5 152.5q0 29 -20 29q-11 0 -34 -24.5t-41.5 -49t-20.5 -24.5q-4 0 -9 3t-5 7z " />
+<glyph unicode="v" horiz-adv-x="443" d="M10 299q0 11 45 52t69 41q25 0 42 -10q24 -14 31.5 -21.5t7.5 -23.5q0 -38 -12.5 -130t-12.5 -107q0 -12 14 -24t20 -12q14 0 23 11q2 2 31 41q31 42 47.5 66.5t35.5 68.5t19 80q0 40 -25 40q-11 0 -25 -2.5t-23.5 -4.5t-10.5 -2q-6 0 -6 16q0 5 38.5 14t59.5 9 q19 0 29.5 -8t10.5 -32q0 -44 -27 -101t-52.5 -92.5t-77.5 -101.5q-9 -12 -14 -18q-11 -15 -23 -34t-24 -19q-15 0 -41 21q-23 18 -31 33t-8 48q0 17 10 102.5t10 119.5q0 16 -10 23q-14 8 -24 8q-15 0 -33.5 -16t-31.5 -32t-14 -16q-5 0 -11 5t-6 8z" />
+<glyph unicode="w" horiz-adv-x="681" d="M10 302q0 10 50 47t74 37q15 0 45 -18q31 -21 31 -46q0 -30 -6 -85t-12.5 -98t-6.5 -44q0 -13 12.5 -27t21.5 -14q10 0 22 18l47 68t50 71q13 16 23.5 47t10.5 45q0 12 -20 32q-4 4 -8.5 8t-8 6t-6 4t-3.5 3.5t-1 2.5q0 9 14 22.5t24 13.5q16 0 43.5 -23.5t27.5 -37.5 q0 -15 -15 -117t-15 -122q0 -16 13 -29.5t25 -13.5q9 0 30 25q57 66 88 111q44 65 45 141q0 33 -21 33q-11 0 -30 -3t-33.5 -6t-15.5 -3q-6 0 -6 17q0 4 53.5 15.5t63.5 11.5q20 0 30 -7.5t10 -31.5q0 -57 -48.5 -140t-116.5 -151l-48 -50q-10 -10 -16 -10q-35 0 -58.5 23 t-23.5 54q0 4 29 153q-83 -129 -125 -183q-3 -5 -13 -19l-13 -18q-11 -15 -21 -15q-14 0 -41 22q-22 17 -28.5 28.5t-6.5 36.5q0 13 11 84.5t11 127.5q0 13 -15.5 29.5t-28.5 16.5q-15 0 -34 -14t-32 -28.5t-14 -14.5q-5 0 -9.5 5.5t-4.5 9.5z" />
+<glyph unicode="x" horiz-adv-x="458" d="M15 23q0 33 26 91q3 5 8 5q3 0 8.5 -2.5t5.5 -5.5q0 -1 -2.5 -8.5t-5 -18t-2.5 -19.5q0 -22 21 -22t64 46.5t75 89.5q6 9 2 21q-53 148 -100 148q-19 0 -46.5 -28.5t-28.5 -28.5q-4 0 -7.5 4.5t-3.5 8.5t15.5 23.5t45 40t58.5 20.5t49 -17t28.5 -34t27.5 -69q5 -13 8 -20 q2 -6 4 -7.5t3.5 0.5t4.5 7q1 1 1 2l17.5 28.5t21.5 34t22 30t26 28.5t26 17t29 8q12 0 18.5 -11.5t6.5 -28.5l-8 -56q0 -2 -4.5 -2.5t-8.5 0.5t-4 2q0 6 0.5 16.5t0.5 15.5q0 25 -17 25q-32 0 -121 -133q-6 -8 -2 -20q52 -152 88 -152q12 0 26.5 16.5t24 33t10.5 16.5 q4 0 10.5 -2.5t6.5 -5.5q0 -19 -39.5 -66t-72.5 -47q-11 0 -20.5 3.5t-17.5 13.5l-14 18t-13 26.5l-11 28.5t-12 34.5t-12 35.5q-3 9 -8 2q-2 -2 -3 -4l-33.5 -43l-43.5 -54.5t-45 -41t-49 -19.5q-34 0 -34 26z" />
+<glyph unicode="y" horiz-adv-x="422" d="M-13 -262q0 11 4 19t13 13.5t16.5 8t21 6.5t19.5 6q33 12 54 49q37 69 48 105.5t11 71.5q0 320 -69 320q-18 0 -37 -15.5t-31 -30.5t-13 -15t-4.5 1t-6.5 3.5t-3 5.5q0 4 16.5 26.5t47.5 46t61 23.5q56 0 75 -86q12 -52 20 -241q1 -6 1 -12l35 64.5t48 94t29 74.5t17 101 q1 17 11 17q12 0 24 -7t12 -18q0 -5 -2 -17q-12 -76 -148 -311l-29 -49l-10 -19q-82 -157 -101 -190q-11 -20 -39 -37q-58 -35 -74 -35q-8 0 -12.5 9t-4.5 18z" />
+<glyph unicode="z" horiz-adv-x="414" d="M25 2q0 8 4.5 16t15 18.5l11.5 11.5l238 265q5 6 2.5 7t-7.5 -1q-2 0 -3 -0.5t-3 -0.5h-3q-23 0 -75.5 16t-67.5 16q-16 0 -31.5 -12t-25 -24t-10.5 -12q-4 0 -8.5 3t-4.5 5q0 4 13.5 24t38.5 41t49 21q23 0 84 -22t82 -22q8 0 23 18.5t27 18.5q6 0 10.5 -5t4.5 -11 q0 -11 -11 -20.5t-27 -17.5t-21 -14l-220 -244q-4 -5 -5 -6.5t2 -3.5t13 -2q42 -2 120 -8t97 -6q9 0 12 4t3 14v13q-1 14 -1 15q0 6 11 6q9 0 9 -5q1 -14 3 -35.5t3.5 -35t1.5 -15.5q0 -14 -36 -14h-7q-23 0 -125.5 8t-145.5 8q-4 0 -13 -12t-16 -12q-11 0 -11 12z" />
+<glyph unicode="{" horiz-adv-x="307" d="M40 274q0 6 5.5 9t14.5 4t18.5 7.5t18.5 18t14.5 38t5.5 65.5v80q0 36 0.5 53.5t3 42.5t8 36.5t15 26t24.5 20t36.5 10t50.5 4.5q8 0 10 -2t2 -11t-2.5 -11t-11.5 -2q-43 0 -63.5 -19t-20.5 -73v-149q0 -72 -9.5 -100t-48.5 -41q-15 -6 -15 -7t15 -7q39 -13 48.5 -41 t9.5 -100v-149q0 -54 20.5 -73t63.5 -19q6 0 8.5 -0.5t4 -3.5t1.5 -9q0 -9 -2 -11t-10 -2q-29 0 -50.5 4.5t-36.5 10t-24.5 20t-15 26t-8 36.5t-3 42.5t-0.5 53.5v80q0 39 -5.5 65.5t-14.5 38t-18.5 18t-18.5 7.5t-14.5 4t-5.5 9z" />
+<glyph unicode="|" horiz-adv-x="247" d="M100 -187v933q0 10 4 13t14 3h7q15 0 18.5 -2.5t3.5 -14.5v-932q0 -9 -0.5 -12.5t-3 -6.5t-8.5 -3h-21q-10 0 -12 3t-2 19z" />
+<glyph unicode="}" horiz-adv-x="307" d="M40 -128q0 9 3 11t11 2q43 0 63.5 19t20.5 73v149q0 72 9.5 100t48.5 41q15 6 15 7t-15 7q-39 13 -48.5 41t-9.5 100v149q0 54 -20.5 73t-63.5 19q-6 0 -8.5 0.5t-4 3.5t-1.5 9q0 9 2 11t10 2q29 0 50.5 -4.5t36.5 -10t24.5 -20t15 -26t8 -36.5t3 -42.5t0.5 -53.5v-80 q0 -39 5.5 -65.5t14.5 -38t18.5 -18t18.5 -7.5t14.5 -4t5.5 -9t-5.5 -9t-14.5 -4t-18.5 -7.5t-18.5 -18t-14.5 -38t-5.5 -65.5v-80q0 -36 -0.5 -53.5t-3 -42.5t-8 -36.5t-15 -26t-24.5 -20t-36.5 -10t-50.5 -4.5q-8 0 -10 2t-2 11z" />
+<glyph unicode="~" horiz-adv-x="793" d="M45 117q0 5 4 17q6 23 17 46t31.5 51.5t54.5 46.5t76 18q48 0 101.5 -22.5t93 -49.5t88 -49.5t86.5 -22.5q26 0 48.5 16t37 41.5t22 43t12.5 34.5q2 8 4.5 8.5t10.5 -1.5q11 -3 11 -7q0 -3 -1 -6q-7 -28 -19.5 -54.5t-33 -54.5t-54 -45t-73.5 -17q-50 0 -104.5 21.5 t-95 47.5t-89.5 47.5t-89 21.5q-27 0 -48 -14t-34 -36.5t-19.5 -40t-10.5 -35.5q-4 -14 -7 -14q-2 0 -10 2q-10 2 -10 7z" />
+<glyph unicode="&#xa1;" horiz-adv-x="220" d="M5 9q0 2 2 12q33 148 86 477q1 5 12 5q13 0 13 -4q0 -23 -20 -183q-27 -211 -34 -302q-1 -22 -29 -22h-5q-25 0 -25 17zM65 606q0 23 14.5 37t25.5 14q19 0 34.5 -16.5t15.5 -29.5q0 -19 -15.5 -35.5t-30.5 -16.5q-14 0 -29 16t-15 31z" />
+<glyph unicode="&#xa2;" horiz-adv-x="407" d="M42 153q0 104 57.5 169t131.5 75q4 0 6 0.5t3 3t1.5 4t1.5 6.5q2 15 5 32.5t4.5 28t2.5 15.5q0 6 2 6q19 0 19 -3l-14 -79v-6q-1 -5 6 -6q2 -1 4 -1q40 -7 68.5 -32.5t28.5 -57.5q0 -16 -11 -25q-17 -13 -29 -13q-13 0 -15 11q-2 7 -5 22.5t-5.5 23.5t-7 18t-12 16 t-18.5 9q-2 1 -4 1q-5 0 -8 -11l-51 -312q-1 -10 4 -11q12 -3 27 -3q28 0 55 7.5t43 15t17 7.5q7 0 6 -8q-1 -5 -18.5 -20t-55.5 -30.5t-79 -15.5h-4q-6 0 -8 -8q-18 -112 -20 -112q-16 0 -16 2q0 1 2 14.5t7 41.5t9 54q1 10 -6 11q-2 1 -4 1q-57 11 -88.5 53t-31.5 106z M104 182q0 -96 69 -134q6 -3 7 -3q2 0 3 7l51 308v6q0 5 -2 5q-4 0 -8 -1q-52 -12 -86 -67.5t-34 -120.5z" />
+<glyph unicode="&#xa3;" horiz-adv-x="489" d="M20 -16q0 5 1.5 8.5t4.5 6.5l5.5 5.5t8 4.5t8 3.5t9.5 2.5t8.5 1.5t8.5 1.5l7 1q24 4 38 93q12 82 13 120q0 12 -2 14t-13 2h-66q-7 0 -6 13q1 7 2 9t6 2h71q12 0 12 5v4t1 20t4.5 51.5t8.5 69.5q10 73 41.5 130t83.5 83q38 18 80 18q46 0 77 -27t31 -80q0 -62 -25 -62 q-12 0 -18.5 11.5t-6.5 26.5q0 9 3.5 28t3.5 29q0 17 -22 33.5t-52 16.5q-87 0 -116 -110q-18 -69 -35 -237q-1 -9 0.5 -9.5t12.5 -0.5h107q5 0 6 -2t1 -10q0 -12 -11 -12h-107q-10 0 -11.5 -1t-2.5 -7q-1 -5 -2 -8q-19 -93 -61 -177q0 -1 -4.5 -10.5t-4.5 -10.5t1.5 -1t5 1 t5.5 1.5t6.5 2.5t5.5 2q21 9 54 9q29 0 100.5 -11.5t84.5 -11.5q57 0 57 37q0 6 -3 12.5t-6 10.5t-9.5 11t-7.5 9q-6 8 -5 11t11 7q4 2 16 2q14 0 22 -15t8 -33q0 -45 -37 -68.5t-85 -23.5q-32 0 -129.5 14t-102.5 14q-8 0 -33.5 -24t-40.5 -24q-16 0 -16 18z" />
+<glyph unicode="&#xa4;" horiz-adv-x="494" d="M25 8q0 10 17 27l61 62q-35 48 -35 107q0 60 34 105l-60 62q-17 17 -17 27t7.5 17t16.5 7q12 0 28 -16l62 -62q46 35 105 35t106 -35l62 62q16 16 27 16q10 0 17.5 -7.5t7.5 -16.5q0 -10 -17 -27l-62 -63q37 -50 37 -106q0 -55 -37 -104l62 -63q17 -17 17 -27t-8 -17.5 t-17 -7.5q-10 0 -27 17l-62 62q-47 -36 -106 -36t-105 35l-62 -61q-16 -16 -28 -16q-10 0 -17 7.5t-7 16.5zM119 202q0 -53 37 -89.5t88 -36.5t88.5 37.5t37.5 89.5t-37.5 90.5t-88.5 38.5q-52 0 -88.5 -38.5t-36.5 -91.5z" />
+<glyph unicode="&#xa5;" horiz-adv-x="613" d="M20 654q0 7 2 10.5t5 4t11 0.5q6 0 45 -1.5t56 -1.5q16 0 46.5 1.5t41.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-31q-10 0 -11 -2t3 -13q13 -44 103 -265q6 -12 8 -12q5 0 16 18l35 52l46 68l43 65t34.5 56.5t12.5 29.5v3h-53q-13 0 -15.5 1.5t-2.5 10.5 q0 13 2 15.5t12 2.5q11 0 36.5 -1.5t41.5 -1.5q17 0 42.5 1.5t31.5 1.5q11 0 13.5 -2t2.5 -13q0 -6 -0.5 -9t-3 -4.5t-5 -1.5h-7.5h-36q-3 0 -75 -98l-123 -172h133q3 0 3 -12t-3 -12h-149l-9 -13q-5 -9 -8 -22l-11 -63h157q3 0 3 -12t-3 -12h-161q-29 -172 -29 -183 q0 -13 5 -13h63q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -50 1.5t-55 1.5t-49.5 -1.5t-44.5 -1.5q-9 0 -11.5 3t-2.5 13q0 9 3 11.5t15 2.5h42q6 0 26 120l13 76h-147q-2 0 -2.5 12t2.5 12h151l2 13q5 27 5 41q0 1 -18 44h-120q-2 0 -2.5 12t2.5 12h110l-118 270h-47 q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#xa6;" horiz-adv-x="247" d="M100 -187v376q0 14 11 14h25q11 0 11 -14v-376q0 -9 -0.5 -12.5t-3 -6.5t-8.5 -3h-21q-10 0 -12 3t-2 19zM100 379v367q0 10 4 13t14 3h7q15 0 18.5 -2.5t3.5 -14.5v-366q0 -12 -2.5 -15.5t-11.5 -3.5h-18q-10 0 -12.5 3t-2.5 16z" />
+<glyph unicode="&#xa7;" horiz-adv-x="381" d="M40 310q0 67 69 118q7 5 -2 18q-44 68 -44 110q0 52 34 86.5t91 34.5q41 0 77.5 -11t36.5 -34q0 -27 -37 -27q-22 0 -54.5 15.5t-54.5 15.5q-58 0 -58 -42q0 -28 38 -84t83.5 -111.5t83.5 -130t38 -136.5q0 -43 -66 -94q-10 -9 -10 -12q0 -2 7 -14q42 -76 42 -114 q0 -56 -39 -90t-107 -34q-103 0 -103 44q0 10 8.5 16.5t19.5 6.5q7 0 43 -13q34 -12 72 -12q32 0 52 13t20 39q0 25 -37.5 80t-82.5 111t-82.5 127t-37.5 124zM78 357q0 -33 37 -102.5t69 -117t61 -85.5q7 -10 10 -10t14 10q33 31 33 50q0 21 -11 51t-25 56.5t-37.5 63 t-37.5 56l-36.5 50.5t-23.5 32t-3 4t-2.5 3.5t-2.5 0.5t-4 -1.5l-6 -4.5q-35 -27 -35 -56z" />
+<glyph unicode="&#xa8;" horiz-adv-x="400" d="M89 535q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM229 535q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33z" />
+<glyph unicode="&#xa9;" horiz-adv-x="843" d="M54 189q0 156 105.5 264t260.5 108t260.5 -107.5t105.5 -264.5q0 -156 -105.5 -264t-260.5 -108t-260.5 108t-105.5 264zM88 189q0 -142 96 -241t236 -99t236 99t96 241t-96 241t-236 99t-236 -99t-96 -241zM196 201q0 99 65 159.5t164 60.5q14 0 27 -1.5t23.5 -4 t21 -6.5t18 -7.5t15.5 -8t11.5 -7.5t9 -7t6.5 -4q10 -2 11 2v17q0 9 15 9q8 0 10 -1.5t2 -7.5q0 -3 -1 -53.5t-1 -69.5q0 -10 -10 -10q-18 0 -18 7q0 1 1.5 27t1.5 29q0 6 -18 23.5t-55 35.5t-75 18q-69 0 -114 -57.5t-45 -144.5q0 -81 52 -138.5t126 -57.5q27 0 51 5 t39.5 12.5t26.5 15t17 12.5t7 5t6.5 -9t5.5 -10q0 -5 -18 -18.5t-60 -28t-93 -14.5q-95 0 -160 59t-65 169z" />
+<glyph unicode="&#xaa;" horiz-adv-x="379" d="M30 399q0 38 12.5 83.5t35 88.5t60.5 71.5t83 28.5q28 0 45 -25q3 -4 6.5 -10t6 -9.5t3.5 -3.5q2 2 7 17.5t5 18.5q4 10 34 10q14 0 14 -6q0 -3 -33.5 -121.5t-33.5 -139.5q0 -16 11 -16q7 0 29.5 23.5t23.5 23.5q3 0 6.5 -4t3.5 -9q0 -3 -18.5 -22t-45 -38.5 t-42.5 -19.5q-23 0 -23 21q0 26 44 167q-46 -80 -100 -135q-40 -40 -59 -48q-10 -4 -22 -4q-26 0 -39.5 16.5t-13.5 41.5zM85 430q0 -44 23 -44q21 0 68 52t81 107q12 18 12 44q0 21 -23 34t-45 13q-39 0 -77.5 -75t-38.5 -131z" />
+<glyph unicode="&#xab;" horiz-adv-x="408" d="M50 193q0 4 55 55l36 34.5l31 30.5l12 11q2 0 8 -5.5t6 -6.5q0 -4 -31 -58t-31 -61t31 -61t31 -58q0 -1 -6 -6.5t-8 -5.5l-12 11l-31 30.5l-36 34.5q-55 51 -55 55zM200 193q0 4 55 55l36 34.5l31 30.5l12 11q2 0 8 -5.5t6 -6.5q0 -4 -31 -58t-31 -61t31 -61t31 -58 q0 -1 -6 -6.5t-8 -5.5l-12 11l-31 30.5l-36 34.5q-55 51 -55 55z" />
+<glyph unicode="&#xac;" horiz-adv-x="527" d="M31 215q0 17 19 17h427q13 0 16.5 -3t3.5 -16v-158q0 -15 -16 -15q-12 0 -16.5 0.5t-8.5 5t-4 14.5v111q0 17 -26 17h-376q-13 0 -16 5.5t-3 21.5z" />
+<glyph unicode="&#xad;" horiz-adv-x="268" d="M30 201q0 12 6 25.5t12 14.5t91.5 4t91.5 3q2 0 2 -9q0 -33 -8 -33q-104 -8 -191 -8q-4 0 -4 3z" />
+<glyph unicode="&#xae;" horiz-adv-x="536" d="M25 470q0 104 70 175.5t173 71.5t173 -71.5t70 -175.5t-70 -175.5t-173 -71.5t-173 71.5t-70 175.5zM50 470q0 -94 63 -159t155 -65t155 65t63 159t-63 159t-155 65t-155 -65t-63 -159zM142 628q0 9 11 9q3 0 23.5 -0.5t27.5 -0.5t34.5 1.5t32.5 1.5q101 0 101 -80 q0 -49 -64 -78q77 -23 80 -107q1 -28 4 -28h20q8 0 8 -12q0 -6 -10 -6l-60 1q-7 0 -7 7v27q0 31 -3 50t-18 36.5t-43 20.5q-15 2 -52 2q-5 0 -5 -3q0 -99 4 -123h27q7 0 7 -7q0 -11 -7 -11q-5 0 -24 0.5t-26 0.5t-25 -0.5t-19 -0.5q-9 0 -9 11q0 7 11 7h19q2 16 2 58v60 q0 141 -5 155l-24 -1q-11 0 -11 10zM222 489q0 -2 5 -2q12 0 33.5 -0.5t29.5 -0.5q39 19 39 67q0 32 -24.5 51t-57.5 19q-4 0 -11.5 -0.5t-11.5 -0.5q-2 -8 -2 -23v-110z" />
+<glyph unicode="&#xaf;" horiz-adv-x="400" d="M100 518l2 21q1 6 2 7t7 1h181q6 0 7 -1t1 -6l-2 -23q-5 -8 -8 -8h-181q-7 0 -8.5 1t-0.5 8z" />
+<glyph unicode="&#xb0;" horiz-adv-x="256" d="M40 535q0 36 26 62t62 26t62 -26t26 -62t-26 -62t-62 -26t-62 26t-26 62zM71 535q0 -24 16.5 -40.5t40.5 -16.5t40.5 16.5t16.5 40.5t-16.5 40.5t-40.5 16.5t-40.5 -16.5t-16.5 -40.5z" />
+<glyph unicode="&#xb1;" horiz-adv-x="527" d="M31 90q0 11 0.5 15.5t4.5 8t13 3.5h429q11 0 14.5 -4t3.5 -16q0 -13 -3.5 -18.5t-17.5 -5.5h-427q-9 0 -13 3t-4 14zM31 324q0 22 18 22h181q11 0 11 10v9v130q0 15 16 15q18 0 23 -3t5 -14v-128v-8q0 -11 12 -11h183q16 0 16 -15q0 -12 -1 -17t-5.5 -9t-14.5 -4h-178 q-12 0 -12 -17v-132q0 -14 -16 -14q-17 0 -22.5 2.5t-5.5 11.5v132q0 10 -2.5 13.5t-13.5 3.5h-177q-12 0 -14.5 5t-2.5 18z" />
+<glyph unicode="&#xb2;" d="M41 357q0 6 27 43t31 40q154 139 154 206q0 30 -19 50.5t-55 20.5q-31 0 -56.5 -16.5t-38.5 -32.5t-14 -16q-3 0 -9 4.5t-6 8.5q0 7 19 29t54.5 44t70.5 22q49 0 79 -30.5t30 -77.5q0 -52 -51 -108q-21 -23 -45.5 -43.5t-49.5 -39l-29 -21.5l-38 -43h182l6 17l11 29.5 t7 13.5q18 0 18 -5q0 -2 -5.5 -19.5l-13.5 -41t-11 -36.5q-1 -5 -9 -5h-228q-11 0 -11 7z" />
+<glyph unicode="&#xb3;" d="M49 377q0 6 10.5 12t19.5 6q15 0 35 -15.5t35 -15.5q39 0 63.5 26.5t24.5 67.5q0 76 -86 76q-5 0 -17.5 -1t-17.5 -1q-7 0 -7 13q0 15 4 15q36 4 53 11q70 27 70 94q0 30 -16.5 47.5t-41.5 17.5q-20 0 -38 -8.5t-29 -17t-12 -8.5q-3 0 -8 4t-4 8q1 5 14 17t38 23.5 t49 11.5q48 0 75.5 -26.5t27.5 -61.5q0 -19 -8 -35.5t-18.5 -27.5t-26 -21t-26 -14.5l-22.5 -9.5l-13 -5l13 -3q13 -3 23.5 -6t26 -10.5t26 -17t18.5 -25.5t8 -35q0 -57 -46 -89t-105 -32q-25 0 -58.5 13t-33.5 23z" />
+<glyph unicode="&#xb4;" horiz-adv-x="400" d="M172 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-5 -6 -8 -6h-15q-4 0 -4 2z" />
+<glyph unicode="&#xb5;" horiz-adv-x="509" d="M25 -136q0 41 8.5 85t26 106t25.5 100q23 101 36 150.5t18 60t11 10.5q39 0 39 -17q0 -7 -9.5 -40.5t-22.5 -87.5t-19 -103q-3 -36 -3 -43q0 -47 29 -47q32 0 74 53.5t73 114t56 123.5q19 48 23 48q13 0 26.5 -4.5t13.5 -10.5q0 -2 -25 -133.5t-25 -158.5 q0 -11 7.5 -18.5t17.5 -7.5q16 0 28 17t20 33.5t13 16.5q8 0 8 -13q0 -32 -37 -73.5t-83 -41.5q-34 0 -34 64q0 24 8 79.5t8 57.5q0 8 -4 8l-8 -12q-7 -13 -21.5 -36l-27.5 -42q-1 -1 -13 -19.5t-16 -23.5l-16 -20.5t-20.5 -22l-21 -15.5t-25.5 -12.5t-27 -3.5 q-17 0 -28.5 17.5t-16 34.5t-5.5 17q-4 0 -12.5 -54t-8.5 -79q0 -19 12 -47.5t12 -29.5q0 -3 -2 -9t-9.5 -12t-18.5 -6q-14 0 -24 12t-10 35z" />
+<glyph unicode="&#xb6;" horiz-adv-x="492" d="M40 417q0 48 16 87.5t41 64.5t56.5 42.5t61.5 25t58 7.5q8 0 10 -3t2 -11v-468q0 -8 -5 -8q-23 0 -52 8t-62.5 28.5t-61 49t-46 75t-18.5 102.5zM280 -205q0 8 10 8h58q7 0 9 1.5t2 6.5v831q0 8 2.5 10t8.5 2h70q8 0 10 -2t2 -9v-14q0 -6 -2 -7.5t-10 -1.5h-46 q-5 0 -6.5 -1.5t-1.5 -8.5v-832q0 -6 -2 -7.5t-12 -1.5h-82q-10 0 -10 8v18z" />
+<glyph unicode="&#xb7;" horiz-adv-x="125" d="M25 340q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33z" />
+<glyph unicode="&#xb8;" horiz-adv-x="400" d="M109 -190q0 10 8 10l8 -4q8 -3 21 -6.5t27 -3.5q69 0 69 49q0 18 -11 31.5t-36 13.5q-8 0 -16 -1.5t-13.5 -3t-6.5 -1.5q-7 0 -7 4q0 1 11.5 21l25.5 45.5t19 35.5h19q-37 -66 -37 -67q0 -2 5 -2q8 2 24 2q35 0 56 -19t21 -45q0 -37 -32 -61.5t-80 -24.5q-22 0 -40.5 6 t-26.5 12t-8 9z" />
+<glyph unicode="&#xb9;" d="M78 360q0 15 13 15h56q7 45 26 190.5t19 160.5q-5 -1 -32 -6t-28 -5q-7 0 -7 9v8q0 8 8 9q12 1 41 6l53 9t26 4q7 0 7 -8q0 -3 -3.5 -24l-9.5 -57.5t-9 -58.5l-35 -237h58q8 0 8 -16q0 -8 -1 -9.5t-7 -1.5q-4 0 -37.5 1t-44.5 1t-47.5 -1t-43.5 -1t-8.5 2t-1.5 10z" />
+<glyph unicode="&#xba;" horiz-adv-x="377" d="M30 464q0 92 54.5 153.5t137.5 61.5q59 0 87 -42t28 -90q0 -78 -56.5 -141.5t-133.5 -63.5q-56 0 -86.5 35.5t-30.5 86.5zM83 471q0 -107 65 -107q37 0 69.5 39t49 88t16.5 89q0 29 -15.5 53.5t-54.5 24.5q-47 0 -88.5 -64.5t-41.5 -122.5z" />
+<glyph unicode="&#xbb;" horiz-adv-x="408" d="M60 74q0 4 31 58t31 61t-31 61t-31 58q0 1 6 6.5t8 5.5l12 -11l31 -30.5l36 -34.5q55 -51 55 -55t-55 -55l-36 -34.5l-31 -30.5l-12 -11q-2 0 -8 5.5t-6 6.5zM210 74q0 4 31 58t31 61t-31 61t-31 58q0 1 6 6.5t8 5.5l12 -11l31 -30.5l36 -34.5q55 -51 55 -55t-55 -55 l-36 -34.5l-31 -30.5l-12 -11q-2 0 -8 5.5t-6 6.5z" />
+<glyph unicode="&#xbc;" horiz-adv-x="794" d="M458 141q0 15 17 38q18 25 78.5 88.5t82.5 90.5q6 7 15 13t11 8q35 35 40 35q7 0 7 -14l-30 -216q-1 -8 0.5 -9.5t8.5 -1.5h37q6 0 6 -8v-23q0 -5 -1.5 -6t-7.5 -1h-46q-3 0 -4 -0.5t-2.5 -2.5t-1.5 -6q-18 -120 -18 -126q0 -3 -1.5 -4.5t-4.5 -1.5l-2 -1q-16 -4 -41 -4 q-6 0 -4 10l23 126q1 7 -0.5 8.5t-9.5 1.5h-139q-13 0 -13 6zM498 175q0 -2 14 -2h108q6 0 7.5 1.5t3.5 11.5q21 126 21 158q-21 -16 -143 -155q-11 -11 -11 -14zM210 -8q0 1 4 9l408 657q7 10 23 10q17 0 17 -6q0 -2 -1 -4l-410 -659q-3 -5 -4 -6t-3.5 -3t-6 -2.5 t-9.5 -0.5q-18 0 -18 5zM78 260q0 15 13 15h56q7 45 26 190.5t19 160.5q-5 -1 -32 -6t-28 -5q-7 0 -7 9v8q0 8 8 9q12 1 41 6l53 9t26 4q7 0 7 -8q0 -3 -3.5 -24l-9.5 -57.5t-9 -58.5l-35 -237h58q8 0 8 -16q0 -8 -1 -9.5t-7 -1.5q-4 0 -37.5 1t-44.5 1t-47.5 -1t-43.5 -1 t-8.5 2t-1.5 10z" />
+<glyph unicode="&#xbd;" horiz-adv-x="844" d="M525 7q0 6 27 43t31 40q154 139 154 206q0 30 -19 50.5t-55 20.5q-31 0 -56.5 -16.5t-38.5 -32.5t-14 -16q-3 0 -9 4.5t-6 8.5q0 7 19 29t54.5 44t70.5 22q49 0 79 -30.5t30 -77.5q0 -52 -51 -108q-21 -23 -45.5 -43.5t-49.5 -39l-29 -21.5l-38 -43h182q0 1 2.5 8 l5.5 15.5t6.5 17t6 14t3.5 5.5q18 0 18 -5q0 -2 -5.5 -19.5l-13.5 -41t-11 -36.5q-1 -5 -9 -5h-228q-11 0 -11 7zM210 -8q0 1 4 9l408 657q7 10 23 10q17 0 17 -6q0 -2 -1 -4l-410 -659q-3 -5 -4 -6t-3.5 -3t-6 -2.5t-9.5 -0.5q-18 0 -18 5zM78 260q0 15 13 15h56 q7 45 26 190.5t19 160.5q-5 -1 -32 -6t-28 -5q-7 0 -7 9v8q0 8 8 9q12 1 41 6l53 9t26 4q7 0 7 -8q0 -3 -3.5 -24l-9.5 -57.5t-9 -58.5l-35 -237h58q8 0 8 -16q0 -8 -1 -9.5t-7 -1.5q-4 0 -37.5 1t-44.5 1t-47.5 -1t-43.5 -1t-8.5 2t-1.5 10z" />
+<glyph unicode="&#xbe;" horiz-adv-x="794" d="M458 141q0 15 17 38q18 25 78.5 88.5t82.5 90.5q6 7 15 13t11 8q35 35 40 35q7 0 7 -14l-30 -216q-1 -8 0.5 -9.5t8.5 -1.5h37q6 0 6 -8v-23q0 -5 -1.5 -6t-7.5 -1h-46q-3 0 -4 -0.5t-2.5 -2.5t-1.5 -6q-18 -120 -18 -126q0 -3 -1.5 -4.5t-4.5 -1.5l-2 -1q-16 -4 -41 -4 q-6 0 -4 10l23 126q1 7 -0.5 8.5t-9.5 1.5h-139q-13 0 -13 6zM498 175q0 -2 14 -2h108q6 0 7.5 1.5t3.5 11.5q21 126 21 158q-21 -16 -143 -155q-11 -11 -11 -14zM210 -8q0 1 4 9l408 657q7 10 23 10q17 0 17 -6q0 -2 -1 -4l-410 -659q-3 -5 -4 -6t-3.5 -3t-6 -2.5 t-9.5 -0.5q-18 0 -18 5zM49 277q0 6 10.5 12t19.5 6q15 0 35 -15.5t35 -15.5q39 0 63.5 26.5t24.5 67.5q0 76 -86 76q-5 0 -17.5 -1t-17.5 -1q-7 0 -7 13q0 15 4 15q36 4 53 11q70 27 70 94q0 30 -16.5 47.5t-41.5 17.5q-20 0 -38 -8.5t-29 -17t-12 -8.5q-3 0 -8 4t-4 8 q1 5 14 17t38 23.5t49 11.5q48 0 75.5 -26.5t27.5 -61.5q0 -19 -8 -35.5t-18.5 -27.5t-26 -21t-26 -14.5l-22.5 -9.5l-13 -5l13 -3q13 -3 23.5 -6t26 -10.5t26 -17t18.5 -25.5t8 -35q0 -57 -46 -89t-105 -32q-25 0 -58.5 13t-33.5 23z" />
+<glyph unicode="&#xbf;" horiz-adv-x="374" d="M35 148q0 31 7.5 53.5t13.5 30.5t28 32q16 18 105 107q1 1 17.5 16.5t24 24t16.5 22t9 23.5q0 11 -7 23.5t-14 20.5t-7 9q0 2 5 7.5t9 5.5q3 0 14.5 -11t22.5 -31t11 -38q0 -44 -65 -109l-42.5 -41l-45.5 -44t-37 -39.5t-29.5 -41t-9.5 -34.5q0 -21 11 -41.5t26 -29.5 q22 -14 89 -14q13 0 45 1.5t35 1.5t5 -1t3 -3.5l2 -5t1 -6.5t0.5 -7t0.5 -8v-8q1 -9 -3 -11.5t-15 -4.5q-30 -5 -64 -5q-60 0 -90 19q-33 21 -52.5 59.5t-19.5 77.5zM204 606q0 23 14.5 37t25.5 14q19 0 34.5 -16.5t15.5 -29.5q0 -19 -15.5 -35.5t-30.5 -16.5q-14 0 -29 16 t-15 31z" />
+<glyph unicode="&#xc0;" horiz-adv-x="688" d="M402 818q0 29 29 29q17 0 30 -25l40 -85q1 -2 1 -5t-4 -3h-18q-1 0 -7 6l-61 60q-10 10 -10 23zM20 15q0 9 3 10.5t15 1.5h33q3 0 72 118l155.5 266t121.5 199q4 5 22.5 24.5t28.5 38.5q7 14 15 14q3 0 5 -1l3 -1.5t2 -3t1 -3.5t1 -5t1 -5q104 -641 116 -641h42 q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5t-50.5 1.5q-16 0 -58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h57q2 0 2 11q0 24 -13.5 121t-14.5 103q-1 14 -4 16.5t-14 2.5h-189q-15 0 -23 -15q-121 -227 -121 -238l1 -1h68q8 0 9.5 -2t1.5 -11 q0 -11 -2 -14t-9 -3q-11 0 -48.5 1.5t-53.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5zM284 311q0 -6 18 -6h167q13 0 13 5q0 7 -11 74l-22 131t-12 64q-3 0 -13 -19l-133 -234q-7 -12 -7 -15z" />
+<glyph unicode="&#xc1;" horiz-adv-x="688" d="M482 731l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2zM20 15q0 9 3 10.5t15 1.5h33q3 0 72 118l155.5 266t121.5 199q4 5 22.5 24.5t28.5 38.5q7 14 15 14q3 0 5 -1l3 -1.5t2 -3t1 -3.5t1 -5t1 -5q104 -641 116 -641h42 q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5t-50.5 1.5q-16 0 -58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h57q2 0 2 11q0 24 -13.5 121t-14.5 103q-1 14 -4 16.5t-14 2.5h-189q-15 0 -23 -15q-121 -227 -121 -238l1 -1h68q8 0 9.5 -2t1.5 -11 q0 -11 -2 -14t-9 -3q-11 0 -48.5 1.5t-53.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5zM284 311q0 -6 18 -6h167q13 0 13 5q0 7 -11 74l-22 131t-12 64q-3 0 -13 -19l-133 -234q-7 -12 -7 -15z" />
+<glyph unicode="&#xc2;" horiz-adv-x="688" d="M388 731q0 1 4 5l91 92q11 11 20 11h20q7 0 9 -1.5t7 -9.5l53 -92q2 -3 2 -5t-5 -2h-12q-1 0 -7 6l-63 52q-3 3 -8 0l-85 -52q-2 -1 -4 -2.5t-4 -2.5l-1 -1h-12q-5 0 -5 2zM20 15q0 9 3 10.5t15 1.5h33q3 0 72 118l155.5 266t121.5 199q4 5 22.5 24.5t28.5 38.5 q7 14 15 14q3 0 5 -1l3 -1.5t2 -3t1 -3.5t1 -5t1 -5q104 -641 116 -641h42q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5t-50.5 1.5q-16 0 -58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h57q2 0 2 11q0 24 -13.5 121t-14.5 103q-1 14 -4 16.5 t-14 2.5h-189q-15 0 -23 -15q-121 -227 -121 -238l1 -1h68q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -48.5 1.5t-53.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5zM284 311q0 -6 18 -6h167q13 0 13 5q0 7 -11 74l-22 131t-12 64q-3 0 -13 -19l-133 -234 q-7 -12 -7 -15z" />
+<glyph unicode="&#xc3;" horiz-adv-x="688" d="M393 745q2 9 11 25q15 25 32.5 38.5t30.5 13.5q15 0 41 -18t39 -18q21 0 40 33q3 7 13 7q6 0 6 -2q-1 -6 -11 -26q-29 -55 -66 -55q-17 0 -41 17.5t-39 17.5q-22 0 -38 -29q-3 -6 -12 -6q-6 0 -6 2zM20 15q0 9 3 10.5t15 1.5h33q3 0 72 118l155.5 266t121.5 199 q4 5 22.5 24.5t28.5 38.5q7 14 15 14q3 0 5 -1l3 -1.5t2 -3t1 -3.5t1 -5t1 -5q104 -641 116 -641h42q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5t-50.5 1.5q-16 0 -58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h57q2 0 2 11q0 24 -13.5 121 t-14.5 103q-1 14 -4 16.5t-14 2.5h-189q-15 0 -23 -15q-121 -227 -121 -238l1 -1h68q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -48.5 1.5t-53.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5zM284 311q0 -6 18 -6h167q13 0 13 5q0 7 -11 74l-22 131t-12 64 q-3 0 -13 -19l-133 -234q-7 -12 -7 -15z" />
+<glyph unicode="&#xc4;" horiz-adv-x="688" d="M390 785q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM530 785q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM20 15q0 9 3 10.5t15 1.5h33q3 0 72 118l155.5 266t121.5 199 q4 5 22.5 24.5t28.5 38.5q7 14 15 14q3 0 5 -1l3 -1.5t2 -3t1 -3.5t1 -5t1 -5q104 -641 116 -641h42q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5t-50.5 1.5q-16 0 -58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h57q2 0 2 11q0 24 -13.5 121 t-14.5 103q-1 14 -4 16.5t-14 2.5h-189q-15 0 -23 -15q-121 -227 -121 -238l1 -1h68q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -48.5 1.5t-53.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5zM284 311q0 -6 18 -6h167q13 0 13 5q0 7 -11 74l-22 131t-12 64 q-3 0 -13 -19l-133 -234q-7 -12 -7 -15z" />
+<glyph unicode="&#xc5;" horiz-adv-x="688" d="M433 781q0 28 20 48t48 20t48 -20t20 -48t-20 -48t-48 -20t-48 20t-20 48zM461 781q0 -17 11.5 -28.5t28.5 -11.5t28.5 11.5t11.5 28.5t-11.5 28.5t-28.5 11.5t-28.5 -11.5t-11.5 -28.5zM20 15q0 9 3 10.5t15 1.5h33q3 0 72 118l155.5 266t121.5 199q4 5 22.5 24.5 t28.5 38.5q7 14 15 14q3 0 5 -1l3 -1.5t2 -3t1 -3.5t1 -5t1 -5q104 -641 116 -641h42q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5t-50.5 1.5q-16 0 -58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h57q2 0 2 11q0 24 -13.5 121t-14.5 103 q-1 14 -4 16.5t-14 2.5h-189q-15 0 -23 -15q-121 -227 -121 -238l1 -1h68q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -48.5 1.5t-53.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5zM284 311q0 -6 18 -6h167q13 0 13 5q0 7 -11 74l-22 131t-12 64q-3 0 -13 -19 l-133 -234q-7 -12 -7 -15z" />
+<glyph unicode="&#xc6;" horiz-adv-x="968" d="M-10 15q0 9 3 10.5t15 1.5h33q7 0 105 125l219 282.5t158 201.5h-68q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l66 -1q67 -2 88 -2q28 0 108.5 1.5t100.5 1.5q55 0 74.5 2.5t20.5 10.5q1 12 13 12q11 0 14 -2t3 -9q0 -4 -4 -41t-5 -84q0 -6 -3 -8t-13 -2q-15 0 -15 14 q0 2 3 36t3 37q0 7 -263 7q-6 0 -39 -256q-3 -21 -3 -24q0 -6 15 -6h164q45 0 47 13l11 53q1 7 16 7q13 0 13 -6q0 -4 -2.5 -17t-7 -34l-7.5 -36q-7 -39 -15 -89q-1 -7 -13 -7q-17 0 -17 8q1 7 4 23.5t5.5 29t2.5 14.5q0 8 -10 11t-40 3h-151q-9 0 -12 -0.5t-5 -2.5t-3 -7 q-3 -13 -19.5 -129t-19.5 -147q0 -9 7 -9l319 7q4 0 10 16.5t14.5 43t13.5 37.5q4 9 14 9q17 0 17 -11q0 -5 -5.5 -21l-17 -47.5t-19.5 -55.5q-4 -11 -17 -11q-11 0 -179 1.5t-184 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h43l42 274h-201 q-13 0 -23 -15q-3 -4 -54 -77l-85 -124t-34 -57l1 -1h68q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -51 1.5t-56 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5zM323 331q0 -6 21 -6h172l20 145q20 144 20 154q0 8 -3 8q-4 0 -11 -10l-209 -276q-10 -14 -10 -15z" />
+<glyph unicode="&#xc7;" horiz-adv-x="686" d="M35 291q0 160 108 270t255 110q62 0 120 -24.5t92 -62.5l12 41q8 0 18.5 -3.5t10.5 -7.5q0 -3 -7.5 -41l-17 -84t-10.5 -54q-1 -5 -13 -5q-9 0 -16 4t-7 7q0 1 11.5 46.5t11.5 50.5t-28 29.5t-79 50t-99 25.5q-75 0 -139 -56t-98.5 -137t-34.5 -162q0 -123 69.5 -195.5 t172.5 -72.5q47 0 91 16.5t67 33.5t26 26q10 29 25 84q3 9 8 10.5t15 -1.5q17 -4 17 -11q0 -6 -33 -116q-5 -17 -78 -45.5t-137 -30.5q-29 -51 -29 -53t5 -2q8 2 24 2q35 0 56 -19t21 -45q0 -37 -32 -61.5t-80 -24.5q-22 0 -40.5 6t-26.5 12t-8 9q0 10 8 10l8 -4 q8 -3 21 -6.5t27 -3.5q69 0 69 49q0 18 -11 31.5t-36 13.5q-8 0 -16 -1.5t-13.5 -3t-6.5 -1.5q-7 0 -7 4q0 1 8 15.5l21 37.5l20 35q-63 1 -117 18t-99.5 51.5t-72 95t-26.5 140.5z" />
+<glyph unicode="&#xc8;" horiz-adv-x="579" d="M253 818q0 29 29 29q18 0 30 -25l40 -85q1 -2 1 -5t-4 -3h-18q-1 0 -7 6l-61 60q-10 10 -10 23zM20 15q0 9 3 10.5t15 1.5h43q83 519 83 599q0 10 -3 10h-55q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l47 -1q46 -2 67 -2q28 0 108.5 1.5t100.5 1.5q55 0 74.5 2.5 t20.5 10.5q1 12 13 12q11 0 14 -2t3 -9q0 -4 -4 -41t-5 -84q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 3 36t3 37q0 7 -263 7q-5 0 -41 -269q-2 -11 -0.5 -14t14.5 -3h164q45 0 47 13l11 53q1 7 16 7q13 0 13 -6q0 -4 -2.5 -17t-7 -34l-7.5 -36q-7 -39 -15 -89q-1 -7 -13 -7 q-17 0 -17 8q1 7 4 23.5t5.5 29t2.5 14.5q0 8 -10 11t-40 3h-151q-9 0 -12 -0.5t-5 -2.5t-3 -7q-3 -13 -19.5 -129t-19.5 -147q0 -9 7 -9l319 7q4 0 10 16.5t14.5 43t13.5 37.5q4 9 14 9q17 0 17 -11q0 -5 -5.5 -21l-17 -47.5t-19.5 -55.5q-4 -11 -17 -11q-11 0 -179 1.5 t-184 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#xc9;" horiz-adv-x="579" d="M333 731l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2zM20 15q0 9 3 10.5t15 1.5h43q83 519 83 599q0 10 -3 10h-55q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l47 -1q46 -2 67 -2q28 0 108.5 1.5t100.5 1.5q55 0 74.5 2.5 t20.5 10.5q1 12 13 12q11 0 14 -2t3 -9q0 -4 -4 -41t-5 -84q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 3 36t3 37q0 7 -263 7q-5 0 -41 -269q-2 -11 -0.5 -14t14.5 -3h164q45 0 47 13l11 53q1 7 16 7q13 0 13 -6q0 -4 -2.5 -17t-7 -34l-7.5 -36q-7 -39 -15 -89q-1 -7 -13 -7 q-17 0 -17 8q1 7 4 23.5t5.5 29t2.5 14.5q0 8 -10 11t-40 3h-151q-9 0 -12 -0.5t-5 -2.5t-3 -7q-3 -13 -19.5 -129t-19.5 -147q0 -9 7 -9l319 7q4 0 10 16.5t14.5 43t13.5 37.5q4 9 14 9q17 0 17 -11q0 -5 -5.5 -21l-17 -47.5t-19.5 -55.5q-4 -11 -17 -11q-11 0 -179 1.5 t-184 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#xca;" horiz-adv-x="579" d="M239 731q0 1 4 5l91 92q11 11 20 11h20q7 0 9 -1.5t7 -9.5l53 -92q2 -3 2 -5t-5 -2h-12q-1 0 -7 6l-63 52q-3 3 -8 0l-85 -52q-2 -1 -4 -2.5t-3 -2.5l-2 -1h-12q-5 0 -5 2zM20 15q0 9 3 10.5t15 1.5h43q83 519 83 599q0 10 -3 10h-55q-7 0 -10.5 0.5t-6 4t-2.5 10.5 q0 14 12 14l47 -1q46 -2 67 -2q28 0 108.5 1.5t100.5 1.5q55 0 74.5 2.5t20.5 10.5q1 12 13 12q11 0 14 -2t3 -9q0 -4 -4 -41t-5 -84q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 3 36t3 37q0 7 -263 7q-5 0 -41 -269q-2 -11 -0.5 -14t14.5 -3h164q45 0 47 13l11 53q1 7 16 7 q13 0 13 -6q0 -4 -2.5 -17t-7 -34l-7.5 -36q-7 -39 -15 -89q-1 -7 -13 -7q-17 0 -17 8q1 7 4 23.5t5.5 29t2.5 14.5q0 8 -10 11t-40 3h-151q-9 0 -12 -0.5t-5 -2.5t-3 -7q-3 -13 -19.5 -129t-19.5 -147q0 -9 7 -9l319 7q4 0 10 16.5t14.5 43t13.5 37.5q4 9 14 9q17 0 17 -11 q0 -5 -5.5 -21l-17 -47.5t-19.5 -55.5q-4 -11 -17 -11q-11 0 -179 1.5t-184 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#xcb;" horiz-adv-x="579" d="M241 785q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM381 785q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM20 15q0 9 3 10.5t15 1.5h43q83 519 83 599q0 10 -3 10h-55 q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l47 -1q46 -2 67 -2q28 0 108.5 1.5t100.5 1.5q55 0 74.5 2.5t20.5 10.5q1 12 13 12q11 0 14 -2t3 -9q0 -4 -4 -41t-5 -84q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 3 36t3 37q0 7 -263 7q-5 0 -41 -269q-2 -11 -0.5 -14t14.5 -3h164 q45 0 47 13l11 53q1 7 16 7q13 0 13 -6q0 -4 -2.5 -17t-7 -34l-7.5 -36q-7 -39 -15 -89q-1 -7 -13 -7q-17 0 -17 8q1 7 4 23.5t5.5 29t2.5 14.5q0 8 -10 11t-40 3h-151q-9 0 -12 -0.5t-5 -2.5t-3 -7q-3 -13 -19.5 -129t-19.5 -147q0 -9 7 -9l319 7q4 0 10 16.5t14.5 43 t13.5 37.5q4 9 14 9q17 0 17 -11q0 -5 -5.5 -21l-17 -47.5t-19.5 -55.5q-4 -11 -17 -11q-11 0 -179 1.5t-184 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#xcc;" horiz-adv-x="377" d="M151 818q0 29 29 29q18 0 30 -25l40 -85q1 -2 1 -5t-4 -3h-18q-1 0 -7 6l-61 60q-10 10 -10 23zM20 15q0 9 3 10.5t15 1.5h60q5 0 47 279t42 317q0 16 -9 16h-66q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5q6 0 52 -1.5t63 -1.5q16 0 57 1.5t52 1.5q10 0 12 -2.5t2 -15.5 q0 -9 -2.5 -10.5t-15.5 -1.5h-57q-9 0 -48.5 -275.5t-39.5 -323.5q0 -13 8 -13h66q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -58 1.5t-63 1.5t-59 -1.5t-54 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#xcd;" horiz-adv-x="377" d="M231 731l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2zM20 15q0 9 3 10.5t15 1.5h60q5 0 47 279t42 317q0 16 -9 16h-66q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5q6 0 52 -1.5t63 -1.5q16 0 57 1.5t52 1.5q10 0 12 -2.5t2 -15.5 q0 -9 -2.5 -10.5t-15.5 -1.5h-57q-9 0 -48.5 -275.5t-39.5 -323.5q0 -13 8 -13h66q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -58 1.5t-63 1.5t-59 -1.5t-54 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#xce;" horiz-adv-x="377" d="M137 731q0 1 4 5l91 92q11 11 20 11h20q7 0 9 -1.5t7 -9.5l53 -92q2 -3 2 -5t-5 -2h-12q-1 0 -7 6l-63 52q-3 3 -8 0l-85 -52q-2 -1 -4 -2.5t-3 -2.5l-2 -1h-12q-5 0 -5 2zM20 15q0 9 3 10.5t15 1.5h60q5 0 47 279t42 317q0 16 -9 16h-66q-12 0 -12 15q0 7 2.5 10.5 t5.5 4t11 0.5q6 0 52 -1.5t63 -1.5q16 0 57 1.5t52 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-57q-9 0 -48.5 -275.5t-39.5 -323.5q0 -13 8 -13h66q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -58 1.5t-63 1.5t-59 -1.5t-54 -1.5q-10 0 -12 2.5t-2 15.5z " />
+<glyph unicode="&#xcf;" horiz-adv-x="377" d="M139 785q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM279 785q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM20 15q0 9 3 10.5t15 1.5h60q5 0 47 279t42 317q0 16 -9 16h-66 q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5q6 0 52 -1.5t63 -1.5q16 0 57 1.5t52 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-57q-9 0 -48.5 -275.5t-39.5 -323.5q0 -13 8 -13h66q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -58 1.5t-63 1.5t-59 -1.5t-54 -1.5 q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#xd0;" horiz-adv-x="742" d="M19 10q0 11 3 13t14 2h43q5 0 46 285q1 8 -1 9.5t-11 1.5h-64q-2 0 -2.5 12t2.5 12h71q10 0 11 12q27 188 36 268q2 11 -4 11l-70 -2q-5 0 -7.5 0.5t-4 3t-1.5 8.5v6t0.5 4.5t2 3.5t4 1.5t6.5 0.5h24t51.5 -0.5t43.5 -0.5q33 0 75.5 1t56.5 1q165 0 261.5 -80t96.5 -248 q0 -158 -102 -247.5t-248 -91.5q-32 0 -112 2t-113 2q-16 0 -55 -2t-42 -2q-8 0 -9.5 2t-1.5 12zM171 46q0 -13 6 -17t59 -4q97 0 170 27t111 64t61.5 88t29.5 87.5t6 73.5q0 123 -74.5 196.5t-223.5 73.5q-49 0 -63 -4l-41 -274q-1 -7 0 -9.5t8 -2.5h196q3 0 3 -12t-3 -12 h-197q-9 0 -11 -1.5t-3 -9.5q-34 -236 -34 -264z" />
+<glyph unicode="&#xd1;" horiz-adv-x="824" d="M366 745q2 9 11 25q15 25 32.5 38.5t30.5 13.5q16 0 42 -18t38 -18q21 0 40 33q3 7 13 7q6 0 6 -2q-1 -6 -11 -26q-29 -55 -66 -55q-17 0 -41 17.5t-39 17.5q-22 0 -38 -29q-3 -6 -12 -6q-6 0 -6 2zM20 15q0 9 3 10.5t15 1.5h50q40 245 89 514q1 6 4 22.5t5 29.5t2 21 q0 3 -5 12t-10 11t-22 2h-50q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q6 0 53.5 -1.5t58.5 -1.5q13 0 28.5 1.5t16.5 1.5q12 0 20 -13l329 -499q8 -12 16 -12q7 0 39.5 218.5t32.5 263.5q0 12 -2 12h-76q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q11 0 42 -1.5t47 -1.5t44.5 1.5 t39.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-42q-6 0 -80 -467q-10 -60 -16 -168q-1 -15 -4 -20t-12 -5t-28 32q-45 73 -118 180l-256 374q-15 21 -16 21q-4 0 -5 -20q0 -3 -17.5 -117t-35 -241.5t-17.5 -165.5q0 -15 3 -15h85q8 0 9.5 -2t1.5 -11q0 -11 -2 -14 t-9 -3q-11 0 -50.5 1.5t-55.5 1.5q-18 0 -52 -1.5t-35 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#xd2;" horiz-adv-x="734" d="M340 818q0 29 29 29q17 0 30 -25l40 -85q1 -2 1 -5t-4 -3h-18q-1 0 -7 6l-61 60q-10 10 -10 23zM35 280q0 87 32.5 162t85.5 124.5t119.5 78t134.5 28.5q135 0 213.5 -89t78.5 -236q0 -151 -107 -260.5t-258 -109.5q-62 0 -114.5 17.5t-94.5 53t-66 94.5t-24 137z M127 286q0 -116 57 -200t167 -84q75 0 135.5 60t91 144t30.5 167q0 44 -11 89.5t-33.5 87.5t-62.5 68.5t-91 26.5q-71 0 -137 -52.5t-106 -136t-40 -170.5z" />
+<glyph unicode="&#xd3;" horiz-adv-x="734" d="M420 731l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2zM35 280q0 87 32.5 162t85.5 124.5t119.5 78t134.5 28.5q135 0 213.5 -89t78.5 -236q0 -151 -107 -260.5t-258 -109.5q-62 0 -114.5 17.5t-94.5 53t-66 94.5t-24 137z M127 286q0 -116 57 -200t167 -84q75 0 135.5 60t91 144t30.5 167q0 44 -11 89.5t-33.5 87.5t-62.5 68.5t-91 26.5q-71 0 -137 -52.5t-106 -136t-40 -170.5z" />
+<glyph unicode="&#xd4;" horiz-adv-x="734" d="M326 731q0 1 4 5l91 92q11 11 20 11h20q7 0 9 -1.5t7 -9.5l53 -92q2 -3 2 -5t-5 -2h-12q-1 0 -7 6l-63 52q-3 3 -8 0l-85 -52q-2 -1 -4 -2.5t-4 -2.5l-1 -1h-12q-5 0 -5 2zM35 280q0 87 32.5 162t85.5 124.5t119.5 78t134.5 28.5q135 0 213.5 -89t78.5 -236 q0 -151 -107 -260.5t-258 -109.5q-62 0 -114.5 17.5t-94.5 53t-66 94.5t-24 137zM127 286q0 -116 57 -200t167 -84q75 0 135.5 60t91 144t30.5 167q0 44 -11 89.5t-33.5 87.5t-62.5 68.5t-91 26.5q-71 0 -137 -52.5t-106 -136t-40 -170.5z" />
+<glyph unicode="&#xd5;" horiz-adv-x="734" d="M331 745q2 9 11 25q15 25 32.5 38.5t30.5 13.5q15 0 41 -18t39 -18q21 0 40 33q3 7 13 7q6 0 6 -2q-1 -6 -11 -26q-29 -55 -66 -55q-17 0 -41 17.5t-39 17.5q-22 0 -38 -29q-3 -6 -12 -6q-6 0 -6 2zM35 280q0 87 32.5 162t85.5 124.5t119.5 78t134.5 28.5 q135 0 213.5 -89t78.5 -236q0 -151 -107 -260.5t-258 -109.5q-62 0 -114.5 17.5t-94.5 53t-66 94.5t-24 137zM127 286q0 -116 57 -200t167 -84q75 0 135.5 60t91 144t30.5 167q0 44 -11 89.5t-33.5 87.5t-62.5 68.5t-91 26.5q-71 0 -137 -52.5t-106 -136t-40 -170.5z" />
+<glyph unicode="&#xd6;" horiz-adv-x="734" d="M328 785q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM468 785q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM35 280q0 87 32.5 162t85.5 124.5t119.5 78t134.5 28.5q135 0 213.5 -89 t78.5 -236q0 -151 -107 -260.5t-258 -109.5q-62 0 -114.5 17.5t-94.5 53t-66 94.5t-24 137zM127 286q0 -116 57 -200t167 -84q75 0 135.5 60t91 144t30.5 167q0 44 -11 89.5t-33.5 87.5t-62.5 68.5t-91 26.5q-71 0 -137 -52.5t-106 -136t-40 -170.5z" />
+<glyph unicode="&#xd7;" horiz-adv-x="527" d="M88 358q0 5 10.5 15.5t17.5 10.5q6 0 14 -8l116 -115q12 -12 19 -12q6 0 11 5l125 125q6 6 12 6q5 0 15 -10t10 -17q0 -5 -9 -14l-121 -121q-8 -8 -8 -13q0 -4 8 -12l124 -124q6 -6 6 -12t-10.5 -16.5t-15.5 -10.5q-6 0 -13 7l-123 124q-7 7 -13 7q-5 0 -16 -11 l-120 -120q-7 -7 -12 -7t-15.5 10t-10.5 16q0 5 8 13l120 121q9 9 9 15t-7 13l-124 124q-7 7 -7 11z" />
+<glyph unicode="&#xd8;" horiz-adv-x="734" d="M35 280q0 87 32.5 162t85.5 124.5t119.5 78t134.5 28.5q67 0 125 -25q7 -3 10 4l40 70q1 1 3 1q5 0 12 -5.5t6 -7.5l-41 -70q-3 -5 1 -8q65 -40 100.5 -113.5t35.5 -170.5q0 -151 -107 -260.5t-258 -109.5q-74 0 -132 23q-6 3 -10 -3l-30 -51q-2 -2 -3 -2q-4 0 -8.5 2.5 t-8 5.5t-2.5 4l30 52q3 6 -1 9q-2 0 -3 1q-131 76 -131 261zM127 286q0 -136 70 -216q3 -4 4.5 -4.5t2.5 0.5t3 6l306 530q3 6 -1 9q-44 34 -102 34q-71 0 -137 -52.5t-106 -136t-40 -170.5zM224 54q-4 -7 2 -12q53 -40 125 -40q75 0 135.5 60t91 144t30.5 167 q0 56 -17.5 114.5t-52.5 98.5q-4 4 -7 0z" />
+<glyph unicode="&#xd9;" horiz-adv-x="759" d="M328 818q0 29 29 29q17 0 30 -25l40 -85q1 -2 1 -5t-4 -3h-18q-1 0 -7 6l-61 60q-10 10 -10 23zM60 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 52.5 1.5t47.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-32q-5 0 -23.5 -98.5t-35 -211.5 t-16.5 -148q0 -37 15 -64.5t34.5 -40.5t46 -21t40.5 -9t27 -1q42 0 88.5 16t76.5 35q28 19 39 60q12 47 32 163q41 241 48 320h-67q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 46.5 -1.5t57.5 -1.5t48 1.5t34 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5 t-15.5 -1.5h-32q-8 -38 -22 -118q-62 -378 -95 -490q-7 -25 -19 -25h-5q-9 0 -11 11q-1 10 -2.5 23t-2 19.5t-1.5 13t-2.5 9t-4.5 2.5t-45 -24q-113 -62 -211 -62q-82 0 -137 42.5t-55 115.5q0 46 33 248.5t33 229.5q0 5 -1 5h-63q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#xda;" horiz-adv-x="759" d="M408 731l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2zM60 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 52.5 1.5t47.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-32q-5 0 -23.5 -98.5t-35 -211.5 t-16.5 -148q0 -37 15 -64.5t34.5 -40.5t46 -21t40.5 -9t27 -1q42 0 88.5 16t76.5 35q28 19 39 60q12 47 32 163q41 241 48 320h-67q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 46.5 -1.5t57.5 -1.5t48 1.5t34 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5 t-15.5 -1.5h-32q-8 -38 -22 -118q-62 -378 -95 -490q-7 -25 -19 -25h-5q-9 0 -11 11q-1 10 -2.5 23t-2 19.5t-1.5 13t-2.5 9t-4.5 2.5t-45 -24q-113 -62 -211 -62q-82 0 -137 42.5t-55 115.5q0 46 33 248.5t33 229.5q0 5 -1 5h-63q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#xdb;" horiz-adv-x="759" d="M314 731q0 1 4 5l91 92q11 11 20 11h20q7 0 9 -1.5t7 -9.5l53 -92q2 -3 2 -5t-5 -2h-12q-1 0 -7 6l-63 52q-3 3 -8 0l-85 -52q-2 -1 -4 -2.5t-4 -2.5l-1 -1h-12q-5 0 -5 2zM60 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 52.5 1.5t47.5 1.5q10 0 12 -2.5 t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-32q-5 0 -23.5 -98.5t-35 -211.5t-16.5 -148q0 -37 15 -64.5t34.5 -40.5t46 -21t40.5 -9t27 -1q42 0 88.5 16t76.5 35q28 19 39 60q12 47 32 163q41 241 48 320h-67q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 46.5 -1.5 t57.5 -1.5t48 1.5t34 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-32q-8 -38 -22 -118q-62 -378 -95 -490q-7 -25 -19 -25h-5q-9 0 -11 11q-1 10 -2.5 23t-2 19.5t-1.5 13t-2.5 9t-4.5 2.5t-45 -24q-113 -62 -211 -62q-82 0 -137 42.5t-55 115.5q0 46 33 248.5 t33 229.5q0 5 -1 5h-63q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#xdc;" horiz-adv-x="759" d="M316 785q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM456 785q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM60 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 52.5 1.5 t47.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-32q-5 0 -23.5 -98.5t-35 -211.5t-16.5 -148q0 -37 15 -64.5t34.5 -40.5t46 -21t40.5 -9t27 -1q42 0 88.5 16t76.5 35q28 19 39 60q12 47 32 163q41 241 48 320h-67q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4 t11.5 0.5q6 0 46.5 -1.5t57.5 -1.5t48 1.5t34 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-32q-8 -38 -22 -118q-62 -378 -95 -490q-7 -25 -19 -25h-5q-9 0 -11 11q-1 10 -2.5 23t-2 19.5t-1.5 13t-2.5 9t-4.5 2.5t-45 -24q-113 -62 -211 -62q-82 0 -137 42.5 t-55 115.5q0 46 33 248.5t33 229.5q0 5 -1 5h-63q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#xdd;" horiz-adv-x="613" d="M322 731l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2zM20 654q0 7 2 10.5t5 4t11 0.5q6 0 45 -1.5t56 -1.5q16 0 46.5 1.5t41.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-31q-10 0 -11 -2t3 -13q13 -44 103 -265 q6 -12 8 -12q5 0 16 18l35 52l46 68l43 65t34.5 56.5t12.5 29.5v3h-53q-13 0 -15.5 1.5t-2.5 10.5q0 13 2 15.5t12 2.5q11 0 36.5 -1.5t41.5 -1.5q17 0 42.5 1.5t31.5 1.5q11 0 13.5 -2t2.5 -13q0 -6 -0.5 -9t-3 -4.5t-5 -1.5h-7.5h-36q-2 0 -45.5 -58l-97 -133t-80.5 -116 q-5 -9 -8 -22q-44 -260 -44 -270q0 -13 5 -13h63q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -50 1.5t-55 1.5t-49.5 -1.5t-44.5 -1.5q-9 0 -11.5 3t-2.5 13q0 9 3 11.5t15 2.5h42q6 0 30 143l15 90q5 27 5 41l-146 338h-47q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#xde;" horiz-adv-x="566" d="M14 15q0 9 3 10.5t15 1.5h60q5 0 47 279t42 317q0 16 -9 16h-66q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5q6 0 52 -1.5t63 -1.5q16 0 57 1.5t52 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-57q-3 0 -22 -106q-1 -4 -1 -9q0 -7 7 -7q8 0 14 1q23 3 52 3 q99 0 154.5 -47.5t55.5 -123.5q0 -44 -14.5 -78.5t-38 -55.5t-56 -35t-65.5 -19.5t-70 -5.5q-16 0 -44.5 1t-31.5 1q-13 0 -15 -2.5t-4 -14.5q-15 -90 -15 -109q0 -5 1 -5h79q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -58 1.5t-63 1.5t-59 -1.5t-54 -1.5q-10 0 -12 2.5 t-2 15.5zM204 189q0 -10 12 -11q5 -1 18 -1q59 0 107.5 15.5t83 54.5t34.5 97q0 74 -42.5 113.5t-124.5 39.5q-18 0 -28 -1q-9 -1 -12.5 -2.5t-4 -2.5t-1.5 -8q-1 -3 -1 -4l-12 -81q-16 -106 -28 -197q-1 -5 -1 -12z" />
+<glyph unicode="&#xdf;" horiz-adv-x="488" d="M-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5q29 179 58 438q0 4 12 97q11 86 54.5 141.5t120.5 55.5q55 0 87 -34t32 -88q0 -39 -13.5 -71.5t-35 -54t-40.5 -34.5t-38 -21q-6 -3 -11.5 -4.5t-8.5 -2.5 h-2h2q1 -1 5.5 -2t9.5 -3q131 -46 131 -165q0 -89 -43 -148.5t-112 -59.5q-39 0 -64.5 19.5t-25.5 53.5q0 33 39 46q19 6 19 -8q0 -4 -2.5 -19t-2.5 -23q0 -51 40 -51q41 0 63 66.5t22 138.5q0 37 -9 64.5t-19.5 41t-31 23t-30 11l-29.5 4.5q-6 1 -5 12q2 8 7 9q45 4 86 56 t41 135q0 38 -19 63.5t-54 25.5q-26 0 -44.5 -15.5t-28 -40t-14.5 -49.5t-9 -51q-1 -7 -1 -10q-7 -44 -32 -235t-45 -311q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5q-24 0 -46 12.5t-22 23.5z" />
+<glyph unicode="&#xe0;" horiz-adv-x="433" d="M212 575q0 31 34 31q21 0 26 -24l26 -125v-3l1 -3q0 -2 -4 -2h-15q-4 0 -7 6l-57 107q-4 7 -4 13zM25 59q0 46 15 100.5t42 106.5t72 86.5t98 34.5q35 0 56 -30l7.5 -12.5t7.5 -11.5t5 -4t8.5 21t6.5 23q2 6 36 11q21 2 21 -5q0 -3 -40.5 -146.5t-40.5 -169.5 q0 -20 14 -20q9 0 37 28l27 28q3 0 7 -4t4 -10q0 -3 -22 -26t-54 -46.5t-51 -23.5q-27 0 -27 24q0 19 14 72t28 97l15 44q-55 -101 -125 -174q-23 -24 -33.5 -33.5t-28 -19t-34.5 -9.5q-31 0 -48 19.5t-17 49.5zM94 96q0 -53 26 -53q25 0 81.5 62.5t97.5 129.5q15 24 15 54 q0 26 -27.5 42t-54.5 16q-32 0 -65 -46t-53 -105t-20 -100z" />
+<glyph unicode="&#xe1;" horiz-adv-x="433" d="M256 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-5 -6 -8 -6h-15q-4 0 -4 2zM25 59q0 46 15 100.5t42 106.5t72 86.5t98 34.5q35 0 56 -30l7.5 -12.5t7.5 -11.5t5 -4t8.5 21t6.5 23q2 6 36 11q21 2 21 -5q0 -3 -40.5 -146.5t-40.5 -169.5 q0 -20 14 -20q9 0 37 28l27 28q3 0 7 -4t4 -10q0 -3 -22 -26t-54 -46.5t-51 -23.5q-27 0 -27 24q0 19 14 72t28 97l15 44q-55 -101 -125 -174q-23 -24 -33.5 -33.5t-28 -19t-34.5 -9.5q-31 0 -48 19.5t-17 49.5zM94 96q0 -53 26 -53q25 0 81.5 62.5t97.5 129.5q15 24 15 54 q0 26 -27.5 42t-54.5 16q-32 0 -65 -46t-53 -105t-20 -100z" />
+<glyph unicode="&#xe2;" horiz-adv-x="433" d="M174 462l4 6l91 104q11 12 20 12h20q7 0 9 -1.5t7 -10.5l53 -104q2 -3 2 -6q0 -2 -5 -2h-12q-1 0 -7 6l-63 62q-3 3 -8 0l-85 -62q-8 -6 -9 -6h-12q-5 0 -5 2zM25 59q0 46 15 100.5t42 106.5t72 86.5t98 34.5q35 0 56 -30l7.5 -12.5t7.5 -11.5t5 -4t8.5 21t6.5 23 q2 6 36 11q21 2 21 -5q0 -3 -40.5 -146.5t-40.5 -169.5q0 -20 14 -20q9 0 37 28l27 28q3 0 7 -4t4 -10q0 -3 -22 -26t-54 -46.5t-51 -23.5q-27 0 -27 24q0 19 14 72t28 97l15 44q-55 -101 -125 -174q-23 -24 -33.5 -33.5t-28 -19t-34.5 -9.5q-31 0 -48 19.5t-17 49.5zM94 96 q0 -53 26 -53q25 0 81.5 62.5t97.5 129.5q15 24 15 54q0 26 -27.5 42t-54.5 16q-32 0 -65 -46t-53 -105t-20 -100z" />
+<glyph unicode="&#xe3;" horiz-adv-x="433" d="M176 495q2 9 11 25q15 25 32.5 38.5t30.5 13.5q16 0 42 -18t38 -18q21 0 40 33q3 7 13 7q6 0 6 -2q-1 -6 -11 -26q-29 -55 -66 -55q-17 0 -41 17.5t-39 17.5q-22 0 -38 -29q-3 -6 -12 -6q-6 0 -6 2zM25 59q0 46 15 100.5t42 106.5t72 86.5t98 34.5q35 0 56 -30l7.5 -12.5 t7.5 -11.5t5 -4t8.5 21t6.5 23q2 6 36 11q21 2 21 -5q0 -3 -40.5 -146.5t-40.5 -169.5q0 -20 14 -20q9 0 37 28l27 28q3 0 7 -4t4 -10q0 -3 -22 -26t-54 -46.5t-51 -23.5q-27 0 -27 24q0 19 14 72t28 97l15 44q-55 -101 -125 -174q-23 -24 -33.5 -33.5t-28 -19t-34.5 -9.5 q-31 0 -48 19.5t-17 49.5zM94 96q0 -53 26 -53q25 0 81.5 62.5t97.5 129.5q15 24 15 54q0 26 -27.5 42t-54.5 16q-32 0 -65 -46t-53 -105t-20 -100z" />
+<glyph unicode="&#xe4;" horiz-adv-x="433" d="M173 535q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM313 535q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM25 59q0 46 15 100.5t42 106.5t72 86.5t98 34.5q35 0 56 -30l7.5 -12.5 t7.5 -11.5t5 -4t8.5 21t6.5 23q2 6 36 11q21 2 21 -5q0 -3 -40.5 -146.5t-40.5 -169.5q0 -20 14 -20q9 0 37 28l27 28q3 0 7 -4t4 -10q0 -3 -22 -26t-54 -46.5t-51 -23.5q-27 0 -27 24q0 19 14 72t28 97l15 44q-55 -101 -125 -174q-23 -24 -33.5 -33.5t-28 -19t-34.5 -9.5 q-31 0 -48 19.5t-17 49.5zM94 96q0 -53 26 -53q25 0 81.5 62.5t97.5 129.5q15 24 15 54q0 26 -27.5 42t-54.5 16q-32 0 -65 -46t-53 -105t-20 -100z" />
+<glyph unicode="&#xe5;" horiz-adv-x="433" d="M216 531q0 28 20 48t48 20t48 -20t20 -48t-20 -48t-48 -20t-48 20t-20 48zM244 531q0 -17 11.5 -28.5t28.5 -11.5t28.5 11.5t11.5 28.5t-11.5 28.5t-28.5 11.5t-28.5 -11.5t-11.5 -28.5zM25 59q0 46 15 100.5t42 106.5t72 86.5t98 34.5q35 0 56 -30l7.5 -12.5t7.5 -11.5 t5 -4t8.5 21t6.5 23q2 6 36 11q21 2 21 -5q0 -3 -40.5 -146.5t-40.5 -169.5q0 -20 14 -20q9 0 37 28l27 28q3 0 7 -4t4 -10q0 -3 -22 -26t-54 -46.5t-51 -23.5q-27 0 -27 24q0 19 14 72t28 97l15 44q-55 -101 -125 -174q-23 -24 -33.5 -33.5t-28 -19t-34.5 -9.5 q-31 0 -48 19.5t-17 49.5zM94 96q0 -53 26 -53q25 0 81.5 62.5t97.5 129.5q15 24 15 54q0 26 -27.5 42t-54.5 16q-32 0 -65 -46t-53 -105t-20 -100z" />
+<glyph unicode="&#xe6;" horiz-adv-x="636" d="M25 59q0 46 15 100.5t42 106.5t72 86.5t98 34.5q35 0 56 -30l7.5 -12.5t7.5 -11.5t5 -4t8.5 21t6.5 23q2 6 36 11q21 2 21 -5q0 -1 -7 -29q58 41 123 41q93 0 93 -66q0 -43 -35 -77t-88 -54q-65 -24 -141 -24q-8 0 -8 -46q0 -89 96 -89q42 0 82 21.5t63.5 43.5t24.5 22 q4 0 8.5 -5t4.5 -9q0 -2 -11 -13.5t-32 -28t-47 -32.5t-61 -27.5t-68 -11.5q-55 0 -90.5 27.5t-35.5 82.5q0 36 7 67q-49 -75 -92 -120q-23 -24 -33.5 -33.5t-28 -19t-34.5 -9.5q-31 0 -48 19.5t-17 49.5zM94 96q0 -53 26 -53q25 0 81.5 62.5t97.5 129.5q15 24 15 54 q0 26 -27.5 42t-54.5 16q-32 0 -65 -46t-53 -105t-20 -100zM352 200q0 -7 10 -7q74 0 128 36.5t54 96.5q0 19 -14 30t-36 11q-82 0 -128 -122q-14 -35 -14 -45z" />
+<glyph unicode="&#xe7;" horiz-adv-x="402" d="M25 128q0 114 71 188.5t150 74.5q58 0 86 -31q22 -24 22 -56q0 -21 -12 -35t-31 -14q-22 0 -22 37q0 4 0.5 12t0.5 12q0 20 -11.5 34t-35.5 14q-28 0 -57 -18.5t-49 -48.5q-47 -71 -47 -153q0 -16 2.5 -28.5t11 -32.5t32 -31.5t60.5 -11.5q38 0 76.5 19.5t61.5 39 t24 19.5q3 0 7.5 -5t4.5 -9q0 -5 -30 -31.5t-82 -54t-96 -27.5h-2q-32 -53 -32 -58q0 -2 5 -2q8 2 24 2q35 0 56 -19t21 -45q0 -37 -32 -61.5t-80 -24.5q-22 0 -40.5 6t-26.5 12t-8 9q0 10 8 10l8 -4q8 -3 21 -6.5t27 -3.5q69 0 69 49q0 18 -11 31.5t-36 13.5q-8 0 -16 -1.5 t-13.5 -3t-6.5 -1.5q-7 0 -7 4q0 1 9.5 17.5l22.5 40.5l20 36q-63 6 -90 44.5t-27 91.5z" />
+<glyph unicode="&#xe8;" horiz-adv-x="390" d="M211 575q0 31 34 31q21 0 26 -24l26 -125q0 -1 1 -3v-3q0 -2 -4 -2h-15q-4 0 -7 6l-57 107q-4 7 -4 13zM25 105q0 114 73 200t172 86q93 0 93 -66q0 -43 -35 -77t-88 -54q-65 -24 -141 -24q-8 0 -8 -46q0 -89 96 -89q42 0 82 21.5t63.5 43.5t24.5 22q4 0 8.5 -5t4.5 -9 q0 -2 -11 -13.5t-32 -28t-47 -32.5t-61 -27.5t-68 -11.5q-55 0 -90.5 27.5t-35.5 82.5zM106 200q0 -7 10 -7q74 0 128 36.5t54 96.5q0 19 -14 30t-36 11q-82 0 -128 -122q-14 -35 -14 -45z" />
+<glyph unicode="&#xe9;" horiz-adv-x="390" d="M255 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-4 -6 -8 -6h-15q-4 0 -4 2zM25 105q0 114 73 200t172 86q93 0 93 -66q0 -43 -35 -77t-88 -54q-65 -24 -141 -24q-8 0 -8 -46q0 -89 96 -89q42 0 82 21.5t63.5 43.5t24.5 22q4 0 8.5 -5t4.5 -9 q0 -2 -11 -13.5t-32 -28t-47 -32.5t-61 -27.5t-68 -11.5q-55 0 -90.5 27.5t-35.5 82.5zM106 200q0 -7 10 -7q74 0 128 36.5t54 96.5q0 19 -14 30t-36 11q-82 0 -128 -122q-14 -35 -14 -45z" />
+<glyph unicode="&#xea;" horiz-adv-x="390" d="M173 462l4 6l91 104q11 12 20 12h20q7 0 9 -1.5t7 -10.5l53 -104q2 -3 2 -6q0 -2 -5 -2h-12q-1 0 -7 6l-63 62q-3 3 -8 0l-85 -62q-7 -6 -9 -6h-12q-5 0 -5 2zM25 105q0 114 73 200t172 86q93 0 93 -66q0 -43 -35 -77t-88 -54q-65 -24 -141 -24q-8 0 -8 -46q0 -89 96 -89 q42 0 82 21.5t63.5 43.5t24.5 22q4 0 8.5 -5t4.5 -9q0 -2 -11 -13.5t-32 -28t-47 -32.5t-61 -27.5t-68 -11.5q-55 0 -90.5 27.5t-35.5 82.5zM106 200q0 -7 10 -7q74 0 128 36.5t54 96.5q0 19 -14 30t-36 11q-82 0 -128 -122q-14 -35 -14 -45z" />
+<glyph unicode="&#xeb;" horiz-adv-x="390" d="M172 535q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM312 535q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM25 105q0 114 73 200t172 86q93 0 93 -66q0 -43 -35 -77t-88 -54 q-65 -24 -141 -24q-8 0 -8 -46q0 -89 96 -89q42 0 82 21.5t63.5 43.5t24.5 22q4 0 8.5 -5t4.5 -9q0 -2 -11 -13.5t-32 -28t-47 -32.5t-61 -27.5t-68 -11.5q-55 0 -90.5 27.5t-35.5 82.5zM106 200q0 -7 10 -7q74 0 128 36.5t54 96.5q0 19 -14 30t-36 11q-82 0 -128 -122 q-14 -35 -14 -45z" />
+<glyph unicode="&#xec;" horiz-adv-x="270" d="M114 575q0 31 34 31q21 0 26 -24l26 -125v-3l1 -3q0 -2 -4 -2h-15q-4 0 -7 6l-57 107q-4 7 -4 13zM25 282q0 4 29.5 28.5t67 48.5t54.5 24q20 0 20 -22q0 -26 -32.5 -150t-32.5 -136q0 -20 13 -20q8 0 27 16t35 32t17 16q3 0 7.5 -5t4.5 -7q0 -12 -64.5 -62.5 t-86.5 -50.5q-24 0 -24 18q0 24 35.5 145t35.5 153q0 18 -12 18q-11 0 -30.5 -15t-35 -29.5t-16.5 -14.5q-4 0 -8 4.5t-4 8.5z" />
+<glyph unicode="&#xed;" horiz-adv-x="270" d="M158 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-5 -6 -8 -6h-15q-4 0 -4 2zM25 282q0 4 29.5 28.5t67 48.5t54.5 24q20 0 20 -22q0 -26 -32.5 -150t-32.5 -136q0 -20 13 -20q8 0 27 16t35 32t17 16q3 0 7.5 -5t4.5 -7q0 -12 -64.5 -62.5 t-86.5 -50.5q-24 0 -24 18q0 24 35.5 145t35.5 153q0 18 -12 18q-11 0 -30.5 -15t-35 -29.5t-16.5 -14.5q-4 0 -8 4.5t-4 8.5z" />
+<glyph unicode="&#xee;" horiz-adv-x="270" d="M76 462l4 6l91 104q11 12 20 12h20q7 0 9 -1.5t7 -10.5l53 -104q2 -3 2 -6q0 -2 -5 -2h-12q-1 0 -7 6l-63 62q-3 3 -8 0l-85 -62q-8 -6 -9 -6h-12q-5 0 -5 2zM25 282q0 4 29.5 28.5t67 48.5t54.5 24q20 0 20 -22q0 -26 -32.5 -150t-32.5 -136q0 -20 13 -20q8 0 27 16 t35 32t17 16q3 0 7.5 -5t4.5 -7q0 -12 -64.5 -62.5t-86.5 -50.5q-24 0 -24 18q0 24 35.5 145t35.5 153q0 18 -12 18q-11 0 -30.5 -15t-35 -29.5t-16.5 -14.5q-4 0 -8 4.5t-4 8.5z" />
+<glyph unicode="&#xef;" horiz-adv-x="270" d="M82 535q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM208 535q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM25 282q0 4 29.5 28.5t67 48.5t54.5 24q20 0 20 -22q0 -26 -32.5 -150 t-32.5 -136q0 -20 13 -20q8 0 27 16t35 32t17 16q3 0 7.5 -5t4.5 -7q0 -12 -64.5 -62.5t-86.5 -50.5q-24 0 -24 18q0 24 35.5 145t35.5 153q0 18 -12 18q-11 0 -30.5 -15t-35 -29.5t-16.5 -14.5q-4 0 -8 4.5t-4 8.5z" />
+<glyph unicode="&#xf0;" horiz-adv-x="411" d="M25 138q0 110 65 183.5t164 73.5q32 0 61 -16q-5 30 -22.5 72t-31.5 66q-4 6 -7 4l-113 -31q-2 0 -7 9t-5 13l25 7l54.5 15t32.5 9q7 1 2 6q-40 64 -92 112q-8 8 0 8l44 1q14 0 96 -108q4 -5 12 -3q96 26 100 26q2 0 6.5 -8.5t4.5 -12.5t-101 -26q-6 -1 -1 -8 q74 -127 74 -265q0 -116 -63 -194.5t-160 -78.5q-65 0 -101.5 42.5t-36.5 103.5zM87 146q0 -24 1.5 -39.5t8 -40t24 -37.5t44.5 -13q46 0 84 47.5t56.5 107t18.5 107.5q0 96 -81 96q-57 0 -106.5 -78.5t-49.5 -149.5z" />
+<glyph unicode="&#xf1;" horiz-adv-x="515" d="M244 495q2 9 11 25q15 25 32.5 38.5t30.5 13.5q16 0 42 -18t38 -18q21 0 40 33q3 7 13 7q6 0 6 -2q-1 -6 -11 -26q-29 -55 -66 -55q-17 0 -41 17.5t-39 17.5q-22 0 -38 -29q-3 -6 -12 -6q-6 0 -6 2zM15 287q0 2 29.5 26t72.5 48.5t70 24.5q21 0 21 -21t-6 -55t-12 -57 l-19.5 -72.5t-16.5 -62.5q74 131 134.5 199.5t116.5 68.5q51 0 51 -44q0 -29 -38.5 -145t-38.5 -127q0 -20 19 -20q13 0 34.5 18.5t38 37t17.5 18.5q3 0 7.5 -4.5t4.5 -6.5q0 -5 -24 -31.5t-63.5 -53.5t-72.5 -27q-15 0 -23.5 11.5t-8.5 29.5q0 28 40 135t40 138 q0 12 -6 20.5t-16 8.5q-26 0 -79 -66.5t-100 -141.5q-22 -36 -44 -112q-7 -25 -15 -26q-40 -4 -48 -4q-7 0 -5 10q60 249 60 312q0 18 -13 18q-14 0 -54 -32l-39 -32q-3 0 -8.5 5t-5.5 12z" />
+<glyph unicode="&#xf2;" horiz-adv-x="419" d="M218 575q0 31 34 31q21 0 26 -24l26 -125v-3l1 -3q0 -2 -4 -2h-15q-4 0 -7 6l-57 107q-4 7 -4 13zM25 138q0 110 66 184.5t165 74.5q71 0 104.5 -50t33.5 -109q0 -94 -68 -170t-161 -76q-67 0 -103.5 42.5t-36.5 103.5zM87 146q0 -130 80 -130q46 0 85.5 47.5t59 107 t19.5 107.5q0 36 -19 66t-67 30q-57 0 -107.5 -78.5t-50.5 -149.5z" />
+<glyph unicode="&#xf3;" horiz-adv-x="419" d="M262 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-5 -6 -8 -6h-15q-4 0 -4 2zM25 138q0 110 66 184.5t165 74.5q71 0 104.5 -50t33.5 -109q0 -94 -68 -170t-161 -76q-67 0 -103.5 42.5t-36.5 103.5zM87 146q0 -130 80 -130q46 0 85.5 47.5t59 107 t19.5 107.5q0 36 -19 66t-67 30q-57 0 -107.5 -78.5t-50.5 -149.5z" />
+<glyph unicode="&#xf4;" horiz-adv-x="419" d="M180 462l4 6l91 104q11 12 20 12h20q7 0 9 -1.5t7 -10.5l53 -104q2 -3 2 -6q0 -2 -5 -2h-12q-1 0 -7 6l-63 62q-3 3 -8 0l-85 -62q-8 -6 -9 -6h-12q-5 0 -5 2zM25 138q0 110 66 184.5t165 74.5q71 0 104.5 -50t33.5 -109q0 -94 -68 -170t-161 -76q-67 0 -103.5 42.5 t-36.5 103.5zM87 146q0 -130 80 -130q46 0 85.5 47.5t59 107t19.5 107.5q0 36 -19 66t-67 30q-57 0 -107.5 -78.5t-50.5 -149.5z" />
+<glyph unicode="&#xf5;" horiz-adv-x="419" d="M182 495q2 9 11 25q15 25 32.5 38.5t30.5 13.5q16 0 42 -18t38 -18q21 0 40 33q3 7 13 7q6 0 6 -2q-1 -6 -11 -26q-29 -55 -66 -55q-17 0 -41 17.5t-39 17.5q-22 0 -38 -29q-3 -6 -12 -6q-6 0 -6 2zM25 138q0 110 66 184.5t165 74.5q71 0 104.5 -50t33.5 -109 q0 -94 -68 -170t-161 -76q-67 0 -103.5 42.5t-36.5 103.5zM87 146q0 -130 80 -130q46 0 85.5 47.5t59 107t19.5 107.5q0 36 -19 66t-67 30q-57 0 -107.5 -78.5t-50.5 -149.5z" />
+<glyph unicode="&#xf6;" horiz-adv-x="419" d="M179 535q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM319 535q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM25 138q0 110 66 184.5t165 74.5q71 0 104.5 -50t33.5 -109 q0 -94 -68 -170t-161 -76q-67 0 -103.5 42.5t-36.5 103.5zM87 146q0 -130 80 -130q46 0 85.5 47.5t59 107t19.5 107.5q0 36 -19 66t-67 30q-57 0 -107.5 -78.5t-50.5 -149.5z" />
+<glyph unicode="&#xf7;" horiz-adv-x="527" d="M31 212q0 8 0.5 11.5t4.5 6t13 2.5h431q8 0 11.5 -2.5t4 -6t0.5 -12.5q0 -14 -3 -18.5t-18 -4.5h-427q-9 0 -12.5 3t-4 6.5t-0.5 14.5zM212 320q0 16 12.5 28.5t29.5 12.5q16 0 28 -11.5t12 -28.5t-12 -29t-29 -12t-29 12t-12 28zM217 101q0 16 12 28t29 12 q16 0 28.5 -12.5t12.5 -28.5t-11.5 -28t-28.5 -12t-29.5 12t-12.5 29z" />
+<glyph unicode="&#xf8;" horiz-adv-x="419" d="M25 138q0 110 66 184.5t165 74.5q20 0 35 -4q11 -2 14 1q1 1 2 4l31 54q1 2 4 2q5 0 12 -5t6 -7l-30 -52q-4 -7 -4 -9t6 -6q32 -23 47 -61t15 -76q0 -94 -68 -170t-161 -76q-25 0 -49 8q-4 1 -5.5 1.5t-3 0t-2.5 -2l-3 -4.5l-32 -56q-2 -2 -3 -2q-4 0 -11 5t-7 7l1 3 l32 55q4 6 -3 12q-54 42 -54 119zM87 146q0 -57 14 -87q4 -8 5 -8t6 8l169 295q5 10 2 13q-1 1 -4 2q-13 5 -34 5q-57 0 -107.5 -78.5t-50.5 -149.5zM127 39q-5 -9 1 -13q17 -10 39 -10q46 0 85.5 47.5t59 107t19.5 107.5q0 40 -17 64q-4 6 -6 6t-7 -8z" />
+<glyph unicode="&#xf9;" horiz-adv-x="521" d="M246 575q0 31 34 31q21 0 26 -24l26 -125v-3l1 -3q0 -2 -4 -2h-15q-4 0 -7 6l-57 107q-4 7 -4 13zM15 256q0 2 12 19t32 41.5t38 43.5q31 31 71 31q22 0 38.5 -9t16.5 -27q0 -13 -32 -132.5t-32 -145.5q0 -23 28 -23q33 0 88 78q72 104 101 199q6 24 12 55q1 4 27 7 q15 2 26 3q9 0 9 -9q0 -5 -27.5 -145.5t-27.5 -152.5q0 -25 19 -25q11 0 31 22.5t36 45t17 22.5q8 0 8 -7q0 -6 -22 -40.5t-57 -70.5t-62 -36q-14 0 -23.5 7.5t-9.5 19.5q0 22 22.5 122.5t26.5 130.5q-1 -3 -10 -22t-26 -50t-33 -55q-104 -158 -173 -158q-55 0 -55 42 q0 11 30.5 125.5t30.5 152.5q0 29 -20 29q-11 0 -34 -24.5t-41.5 -49t-20.5 -24.5q-4 0 -9 3t-5 7z" />
+<glyph unicode="&#xfa;" horiz-adv-x="521" d="M290 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-5 -6 -8 -6h-15q-4 0 -4 2zM15 256q0 2 12 19t32 41.5t38 43.5q31 31 71 31q22 0 38.5 -9t16.5 -27q0 -13 -32 -132.5t-32 -145.5q0 -23 28 -23q33 0 88 78q72 104 101 199q6 24 12 55q1 4 27 7 q15 2 26 3q9 0 9 -9q0 -5 -27.5 -145.5t-27.5 -152.5q0 -25 19 -25q11 0 31 22.5t36 45t17 22.5q8 0 8 -7q0 -6 -22 -40.5t-57 -70.5t-62 -36q-14 0 -23.5 7.5t-9.5 19.5q0 22 22.5 122.5t26.5 130.5q-1 -3 -10 -22t-26 -50t-33 -55q-104 -158 -173 -158q-55 0 -55 42 q0 11 30.5 125.5t30.5 152.5q0 29 -20 29q-11 0 -34 -24.5t-41.5 -49t-20.5 -24.5q-4 0 -9 3t-5 7z" />
+<glyph unicode="&#xfb;" horiz-adv-x="521" d="M208 462l4 6l91 104q11 12 20 12h20q7 0 9 -1.5t7 -10.5l53 -104q2 -3 2 -6q0 -2 -5 -2h-12q-1 0 -7 6l-63 62q-3 3 -8 0l-85 -62q-8 -6 -9 -6h-12q-5 0 -5 2zM15 256q0 2 12 19t32 41.5t38 43.5q31 31 71 31q22 0 38.5 -9t16.5 -27q0 -13 -32 -132.5t-32 -145.5 q0 -23 28 -23q33 0 88 78q72 104 101 199q6 24 12 55q1 4 27 7q15 2 26 3q9 0 9 -9q0 -5 -27.5 -145.5t-27.5 -152.5q0 -25 19 -25q11 0 31 22.5t36 45t17 22.5q8 0 8 -7q0 -6 -22 -40.5t-57 -70.5t-62 -36q-14 0 -23.5 7.5t-9.5 19.5q0 22 22.5 122.5t26.5 130.5 q-1 -3 -10 -22t-26 -50t-33 -55q-104 -158 -173 -158q-55 0 -55 42q0 11 30.5 125.5t30.5 152.5q0 29 -20 29q-11 0 -34 -24.5t-41.5 -49t-20.5 -24.5q-4 0 -9 3t-5 7z" />
+<glyph unicode="&#xfc;" horiz-adv-x="521" d="M207 535q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM347 535q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM15 256q0 2 12 19t32 41.5t38 43.5q31 31 71 31q22 0 38.5 -9t16.5 -27 q0 -13 -32 -132.5t-32 -145.5q0 -23 28 -23q33 0 88 78q72 104 101 199q6 24 12 55q1 4 27 7q15 2 26 3q9 0 9 -9q0 -5 -27.5 -145.5t-27.5 -152.5q0 -25 19 -25q11 0 31 22.5t36 45t17 22.5q8 0 8 -7q0 -6 -22 -40.5t-57 -70.5t-62 -36q-14 0 -23.5 7.5t-9.5 19.5 q0 22 22.5 122.5t26.5 130.5q-1 -3 -10 -22t-26 -50t-33 -55q-104 -158 -173 -158q-55 0 -55 42q0 11 30.5 125.5t30.5 152.5q0 29 -20 29q-11 0 -34 -24.5t-41.5 -49t-20.5 -24.5q-4 0 -9 3t-5 7z" />
+<glyph unicode="&#xfd;" horiz-adv-x="422" d="M251 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-4 -6 -8 -6h-15q-4 0 -4 2zM-13 -262q0 11 4 19t13 13.5t16.5 8t21 6.5t19.5 6q33 12 54 49q37 69 48 105.5t11 71.5q0 320 -69 320q-18 0 -37 -15.5t-31 -30.5t-13 -15t-4.5 1t-6.5 3.5t-3 5.5 q0 4 16.5 26.5t47.5 46t61 23.5q56 0 75 -86q12 -52 20 -241q1 -6 1 -12l35 64.5t48 94t29 74.5t17 101q1 17 11 17q12 0 24 -7t12 -18q0 -5 -2 -17q-12 -76 -148 -311l-29 -49l-10 -19q-82 -157 -101 -190q-11 -20 -39 -37q-58 -35 -74 -35q-8 0 -12.5 9t-4.5 18z" />
+<glyph unicode="&#xfe;" horiz-adv-x="430" d="M-44 -256q0 14 3.5 18t15.5 4h16q12 0 16 3.5t6 17.5q26 137 43 243l35 208q44 249 59 374q2 10 -1 14t-13 1q-66 -18 -74 -18q-5 0 -3 20q1 8 2.5 9.5t7.5 3.5q39 9 75.5 18.5l53.5 14t19 4.5q10 0 10 -9q0 -8 -13 -87.5t-37 -209.5t-47 -242q43 107 100 194 q37 57 99 57q44 0 60 -23.5t16 -67.5q0 -110 -74 -204t-151 -94q-11 0 -32 3.5t-24 3.5q-12 0 -13 -8l-32 -209q-5 -23 9 -24q16 -2 40 -4q14 -1 19.5 -1.5t11 -2t7 -4t1.5 -6.5q0 -14 -4.5 -17.5t-15.5 -3.5q-1 0 -27 3.5t-67.5 7t-79.5 3.5q-17 0 -17 10zM125 51 q0 -32 64 -32q33 0 69.5 42.5t60.5 103.5t24 113q0 64 -44 64q-15 0 -29.5 -9.5t-29 -30t-22.5 -34t-22 -41.5l-16 -32q-55 -105 -55 -144z" />
+<glyph unicode="&#xff;" horiz-adv-x="422" d="M168 535q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM308 535q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM-13 -262q0 11 4 19t13 13.5t16.5 8t21 6.5t19.5 6q33 12 54 49 q37 69 48 105.5t11 71.5q0 320 -69 320q-18 0 -37 -15.5t-31 -30.5t-13 -15t-4.5 1t-6.5 3.5t-3 5.5q0 4 16.5 26.5t47.5 46t61 23.5q56 0 75 -86q12 -52 20 -241q1 -6 1 -12l35 64.5t48 94t29 74.5t17 101q1 17 11 17q12 0 24 -7t12 -18q0 -5 -2 -17q-12 -76 -148 -311 l-29 -49l-10 -19q-82 -157 -101 -190q-11 -20 -39 -37q-58 -35 -74 -35q-8 0 -12.5 9t-4.5 18z" />
+<glyph unicode="&#x100;" horiz-adv-x="688" d="M401 788l2 21q1 6 2 7t7 1h181q5 0 6.5 -1t1.5 -6l-2 -23q-5 -8 -8 -8h-181q-7 0 -8.5 1t-0.5 8zM20 15q0 9 3 10.5t15 1.5h33q3 0 72 118l155.5 266t121.5 199q4 5 22.5 24.5t28.5 38.5q7 14 15 14q3 0 5 -1l3 -1.5t2 -3t1 -3.5t1 -5t1 -5q104 -641 116 -641h42 q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5t-50.5 1.5q-16 0 -58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h57q2 0 2 11q0 24 -13.5 121t-14.5 103q-1 14 -4 16.5t-14 2.5h-189q-15 0 -23 -15q-121 -227 -121 -238l1 -1h68q8 0 9.5 -2t1.5 -11 q0 -11 -2 -14t-9 -3q-11 0 -48.5 1.5t-53.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5zM284 311q0 -6 18 -6h167q13 0 13 5q0 7 -11 74l-22 131t-12 64q-3 0 -13 -19l-133 -234q-7 -12 -7 -15z" />
+<glyph unicode="&#x101;" horiz-adv-x="433" d="M184 518l2 21q1 6 2 7t7 1h181q6 0 7 -1t1 -6l-2 -23q-5 -8 -8 -8h-181q-7 0 -8.5 1t-0.5 8zM25 59q0 46 15 100.5t42 106.5t72 86.5t98 34.5q35 0 56 -30l7.5 -12.5t7.5 -11.5t5 -4t8.5 21t6.5 23q2 6 36 11q21 2 21 -5q0 -3 -40.5 -146.5t-40.5 -169.5q0 -20 14 -20 q9 0 37 28l27 28q3 0 7 -4t4 -10q0 -3 -22 -26t-54 -46.5t-51 -23.5q-27 0 -27 24q0 19 14 72t28 97l15 44q-55 -101 -125 -174q-23 -24 -33.5 -33.5t-28 -19t-34.5 -9.5q-31 0 -48 19.5t-17 49.5zM94 96q0 -53 26 -53q25 0 81.5 62.5t97.5 129.5q15 24 15 54q0 26 -27.5 42 t-54.5 16q-32 0 -65 -46t-53 -105t-20 -100z" />
+<glyph unicode="&#x102;" horiz-adv-x="688" d="M415 810q0 28 4 28h13q1 0 1 -2q0 -31 15.5 -45t52.5 -14q53 0 77 32q4 6 7.5 13.5l5.5 11.5t3 4h13q-6 -46 -37.5 -77.5t-76.5 -31.5q-41 0 -59.5 23t-18.5 58zM20 15q0 9 3 10.5t15 1.5h33q3 0 72 118l155.5 266t121.5 199q4 5 22.5 24.5t28.5 38.5q7 14 15 14 q3 0 5 -1l3 -1.5t2 -3t1 -3.5t1 -5t1 -5q104 -641 116 -641h42q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5t-50.5 1.5q-16 0 -58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h57q2 0 2 11q0 24 -13.5 121t-14.5 103q-1 14 -4 16.5t-14 2.5h-189 q-15 0 -23 -15q-121 -227 -121 -238l1 -1h68q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -48.5 1.5t-53.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5zM284 311q0 -6 18 -6h167q13 0 13 5q0 7 -11 74l-22 131t-12 64q-3 0 -13 -19l-133 -234q-7 -12 -7 -15z" />
+<glyph unicode="&#x103;" horiz-adv-x="433" d="M200 552q0 32 4 32h13q1 0 1 -3q0 -9 2 -21q9 -49 66 -49q52 0 78 40q4 7 7.5 15.5t5 13t2.5 4.5h13q-6 -53 -37.5 -89t-76.5 -36q-41 0 -59.5 26.5t-18.5 66.5zM25 59q0 46 15 100.5t42 106.5t72 86.5t98 34.5q35 0 56 -30l7.5 -12.5t7.5 -11.5t5 -4t8.5 21t6.5 23 q2 6 36 11q21 2 21 -5q0 -3 -40.5 -146.5t-40.5 -169.5q0 -20 14 -20q9 0 37 28l27 28q3 0 7 -4t4 -10q0 -3 -22 -26t-54 -46.5t-51 -23.5q-27 0 -27 24q0 19 14 72t28 97l15 44q-55 -101 -125 -174q-23 -24 -33.5 -33.5t-28 -19t-34.5 -9.5q-31 0 -48 19.5t-17 49.5zM94 96 q0 -53 26 -53q25 0 81.5 62.5t97.5 129.5q15 24 15 54q0 26 -27.5 42t-54.5 16q-32 0 -65 -46t-53 -105t-20 -100z" />
+<glyph unicode="&#x104;" horiz-adv-x="688" d="M20 15q0 9 3 10.5t15 1.5h33q3 0 72 118l155.5 266t121.5 199q4 5 22.5 24.5t28.5 38.5q7 14 15 14q3 0 5 -1l3 -1.5t2 -3t1 -3.5t1 -5t1 -5q104 -641 116 -641h42q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -19 0.5t-31 1.5t-29 1q-107 -95 -107 -177 q0 -24 14.5 -44.5t34.5 -20.5t42 11t36 22l14 11q1 0 5 -6t4 -7q0 -3 -19 -19t-55 -34t-72 -18q-30 0 -50.5 26t-20.5 58q0 31 26 70t47 60l71 68q-17 0 -50 -1.5t-42 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h57q2 0 2 11q0 24 -13.5 121t-14.5 103q-1 14 -4 16.5 t-14 2.5h-189q-15 0 -23 -15q-121 -227 -121 -238l1 -1h68q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -48.5 1.5t-53.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5zM284 311q0 -6 18 -6h167q13 0 13 5q0 7 -11 74l-22 131t-12 64q-3 0 -13 -19l-133 -234 q-7 -12 -7 -15z" />
+<glyph unicode="&#x105;" horiz-adv-x="433" d="M25 59q0 46 15 100.5t42 106.5t72 86.5t98 34.5q35 0 56 -30l7.5 -12.5t7.5 -11.5t5 -4t8.5 21t6.5 23q2 6 36 11q21 2 21 -5q0 -3 -40.5 -146.5t-40.5 -169.5q0 -20 14 -20q9 0 37 28l27 28q3 0 7 -4t4 -10q0 -2 -11 -13.5t-30 -29t-36 -30.5q-22 -17 -33 -27 q-91 -89 -91 -162q0 -24 14.5 -44.5t34.5 -20.5t42 11t36 22l14 11q1 0 5 -6t4 -7q0 -3 -19 -19t-55 -34t-72 -18q-30 0 -50.5 26t-20.5 58q0 29 23 65t44.5 58.5t65.5 64.5q-19 3 -19 23q0 19 14 72t28 97l15 44q-55 -101 -125 -174q-23 -24 -33.5 -33.5t-28 -19 t-34.5 -9.5q-31 0 -48 19.5t-17 49.5zM94 96q0 -53 26 -53q25 0 81.5 62.5t97.5 129.5q15 24 15 54q0 26 -27.5 42t-54.5 16q-32 0 -65 -46t-53 -105t-20 -100z" />
+<glyph unicode="&#x106;" horiz-adv-x="686" d="M389 731l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2zM35 291q0 160 108 270t255 110q62 0 120 -24.5t92 -62.5l12 41q8 0 18.5 -3.5t10.5 -7.5q0 -3 -7.5 -41l-17 -84t-10.5 -54q-1 -5 -13 -5q-9 0 -16 4t-7 7q0 1 11.5 46.5 t11.5 50.5t-28 29.5t-79 50t-99 25.5q-75 0 -139 -56t-98.5 -137t-34.5 -162q0 -123 69.5 -195.5t172.5 -72.5q47 0 91 16.5t67 33.5t26 26q10 29 25 84q3 9 8 10.5t15 -1.5q17 -4 17 -11q0 -6 -33 -116q-5 -18 -81.5 -47t-141.5 -29q-64 0 -119.5 16.5t-103 50.5t-75 95 t-27.5 143z" />
+<glyph unicode="&#x107;" horiz-adv-x="402" d="M250 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-5 -6 -8 -6h-15q-4 0 -4 2zM25 128q0 114 71 188.5t150 74.5q58 0 86 -31q22 -24 22 -56q0 -21 -12 -35t-31 -14q-22 0 -22 37q0 4 0.5 12t0.5 12q0 20 -11.5 34t-35.5 14q-28 0 -57 -18.5t-49 -48.5 q-47 -71 -47 -153q0 -16 2.5 -28.5t11 -32.5t32 -31.5t60.5 -11.5q38 0 76.5 19.5t61.5 39t24 19.5q3 0 7.5 -5t4.5 -9q0 -5 -30 -31.5t-82 -54t-96 -27.5q-73 0 -105 40t-32 97z" />
+<glyph unicode="&#x108;" horiz-adv-x="686" d="M295 731q0 1 4 5l91 92q11 11 20 11h20q7 0 9 -1.5t7 -9.5l53 -92q2 -3 2 -5t-5 -2h-12q-1 0 -7 6l-63 52q-3 3 -8 0l-85 -52q-2 -1 -4 -2.5t-3 -2.5l-2 -1h-12q-5 0 -5 2zM35 291q0 160 108 270t255 110q62 0 120 -24.5t92 -62.5l12 41q8 0 18.5 -3.5t10.5 -7.5 q0 -3 -7.5 -41l-17 -84t-10.5 -54q-1 -5 -13 -5q-9 0 -16 4t-7 7q0 1 11.5 46.5t11.5 50.5t-28 29.5t-79 50t-99 25.5q-75 0 -139 -56t-98.5 -137t-34.5 -162q0 -123 69.5 -195.5t172.5 -72.5q47 0 91 16.5t67 33.5t26 26q10 29 25 84q3 9 8 10.5t15 -1.5q17 -4 17 -11 q0 -6 -33 -116q-5 -18 -81.5 -47t-141.5 -29q-64 0 -119.5 16.5t-103 50.5t-75 95t-27.5 143z" />
+<glyph unicode="&#x109;" horiz-adv-x="402" d="M168 462l4 6l91 104q11 12 20 12h20q7 0 9 -1.5t7 -10.5l53 -104q2 -3 2 -6q0 -2 -5 -2h-12q-1 0 -7 6l-63 62q-3 3 -8 0l-85 -62q-8 -6 -9 -6h-12q-5 0 -5 2zM25 128q0 114 71 188.5t150 74.5q58 0 86 -31q22 -24 22 -56q0 -21 -12 -35t-31 -14q-22 0 -22 37q0 4 0.5 12 t0.5 12q0 20 -11.5 34t-35.5 14q-28 0 -57 -18.5t-49 -48.5q-47 -71 -47 -153q0 -16 2.5 -28.5t11 -32.5t32 -31.5t60.5 -11.5q38 0 76.5 19.5t61.5 39t24 19.5q3 0 7.5 -5t4.5 -9q0 -5 -30 -31.5t-82 -54t-96 -27.5q-73 0 -105 40t-32 97z" />
+<glyph unicode="&#x10a;" horiz-adv-x="686" d="M366 790q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM35 291q0 160 108 270t255 110q62 0 120 -24.5t92 -62.5l12 41q8 0 18.5 -3.5t10.5 -7.5q0 -3 -7.5 -41l-17 -84t-10.5 -54q-1 -5 -13 -5q-9 0 -16 4t-7 7q0 1 11.5 46.5 t11.5 50.5t-28 29.5t-79 50t-99 25.5q-75 0 -139 -56t-98.5 -137t-34.5 -162q0 -123 69.5 -195.5t172.5 -72.5q47 0 91 16.5t67 33.5t26 26q10 29 25 84q3 9 8 10.5t15 -1.5q17 -4 17 -11q0 -6 -33 -116q-5 -18 -81.5 -47t-141.5 -29q-64 0 -119.5 16.5t-103 50.5t-75 95 t-27.5 143z" />
+<glyph unicode="&#x10b;" horiz-adv-x="402" d="M236 540q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM25 128q0 114 71 188.5t150 74.5q58 0 86 -31q22 -24 22 -56q0 -21 -12 -35t-31 -14q-22 0 -22 37q0 4 0.5 12t0.5 12q0 20 -11.5 34t-35.5 14q-28 0 -57 -18.5t-49 -48.5 q-47 -71 -47 -153q0 -16 2.5 -28.5t11 -32.5t32 -31.5t60.5 -11.5q38 0 76.5 19.5t61.5 39t24 19.5q3 0 7.5 -5t4.5 -9q0 -5 -30 -31.5t-82 -54t-96 -27.5q-73 0 -105 40t-32 97z" />
+<glyph unicode="&#x10c;" horiz-adv-x="686" d="M318 837q0 2 5 2h12q1 0 7 -6l63 -52q3 -3 8 0l85 52q2 1 4 2.5t4 2.5l1 1h12q5 0 5 -2q0 -1 -4 -5l-91 -92q-11 -11 -20 -11h-20q-7 0 -9 1.5t-7 9.5l-53 92q-2 3 -2 5zM35 291q0 160 108 270t255 110q62 0 120 -24.5t92 -62.5l12 41q8 0 18.5 -3.5t10.5 -7.5 q0 -3 -7.5 -41l-17 -84t-10.5 -54q-1 -5 -13 -5q-9 0 -16 4t-7 7q0 1 11.5 46.5t11.5 50.5t-28 29.5t-79 50t-99 25.5q-75 0 -139 -56t-98.5 -137t-34.5 -162q0 -123 69.5 -195.5t172.5 -72.5q47 0 91 16.5t67 33.5t26 26q10 29 25 84q3 9 8 10.5t15 -1.5q17 -4 17 -11 q0 -6 -33 -116q-5 -18 -81.5 -47t-141.5 -29q-64 0 -119.5 16.5t-103 50.5t-75 95t-27.5 143z" />
+<glyph unicode="&#x10d;" horiz-adv-x="402" d="M189 582q0 2 5 2h12q1 0 7 -6l63 -62q3 -3 8 0l85 62q7 6 9 6h12q5 0 5 -2l-4 -6l-91 -104q-11 -12 -20 -12h-20q-7 0 -9 1.5t-7 10.5l-53 104q-2 3 -2 6zM25 128q0 114 71 188.5t150 74.5q58 0 86 -31q22 -24 22 -56q0 -21 -12 -35t-31 -14q-22 0 -22 37q0 4 0.5 12 t0.5 12q0 20 -11.5 34t-35.5 14q-28 0 -57 -18.5t-49 -48.5q-47 -71 -47 -153q0 -16 2.5 -28.5t11 -32.5t32 -31.5t60.5 -11.5q38 0 76.5 19.5t61.5 39t24 19.5q3 0 7.5 -5t4.5 -9q0 -5 -30 -31.5t-82 -54t-96 -27.5q-73 0 -105 40t-32 97z" />
+<glyph unicode="&#x10e;" horiz-adv-x="742" d="M266 837q0 2 5 2h12q1 0 7 -6l63 -52q3 -3 8 0l85 52q2 1 4 2.5t4 2.5l1 1h12q5 0 5 -2q0 -1 -4 -5l-91 -92q-11 -11 -20 -11h-20q-7 0 -9 1.5t-7 9.5l-53 92q-2 3 -2 5zM19 10q0 11 3 13t14 2h43q5 0 42.5 261.5t45.5 338.5q2 11 -4 11l-70 -2q-5 0 -7.5 0.5t-4 3 t-1.5 8.5v6t0.5 4.5t2 3.5t4 1.5t6.5 0.5h24t51.5 -0.5t43.5 -0.5q33 0 75.5 1t56.5 1q165 0 261.5 -80t96.5 -248q0 -158 -102 -247.5t-248 -91.5q-32 0 -112 2t-113 2q-16 0 -55 -2t-42 -2q-8 0 -9.5 2t-1.5 12zM171 46q0 -13 6 -17t59 -4q97 0 170 27t111 64t61.5 88 t29.5 87.5t6 73.5q0 123 -74.5 196.5t-223.5 73.5q-49 0 -63 -4l-9 -56l-20 -137.5l-24 -165t-20.5 -148.5t-8.5 -78z" />
+<glyph unicode="&#x10f;" horiz-adv-x="473" d="M478 495q0 3 6 25.5l15 57.5l13 51q9 32 34 32q26 0 26 -23q0 -9 -13 -35l-55 -98q-6 -12 -9 -12h-15q-2 0 -2 2zM25 74q0 34 14.5 83.5t40 100t68 86t92.5 35.5q17 0 33.5 -3t25 -6.5t18 -8.5t10.5 -5q9 -4 12 -2t5 12q6 31 15 91.5l15.5 107t6.5 47.5q5 17 -4 17 q-2 0 -44 -10.5t-45 -10.5q-5 0 -3 21q1 8 2.5 9.5t7.5 3.5q39 8 76 17.5t55 14.5t20 5q11 0 11 -15q0 -3 -50 -288t-50 -316q0 -15 13 -15t35.5 18.5t39.5 36.5t18 18q3 0 6.5 -3t3.5 -5q0 -5 -22 -32t-61.5 -56t-75.5 -29q-12 0 -19.5 9.5t-7.5 25.5q0 18 10.5 70.5 t20.5 95.5l10 43q-38 -72 -89 -139l-30.5 -39t-29 -30.5t-37 -25t-40.5 -7.5q-10 0 -19.5 2t-24.5 9t-24 24t-9 43zM91 102q0 -56 46 -56q41 0 138 140q54 82 54 118q0 14 -29 33.5t-60 19.5q-41 0 -77 -49t-54 -107t-18 -99z" />
+<glyph unicode="&#x110;" horiz-adv-x="742" d="M19 10q0 11 3 13t14 2h43q5 0 46 285q1 8 -1 9.5t-11 1.5h-64q-2 0 -2.5 12t2.5 12h71q10 0 11 12q27 188 36 268q2 11 -4 11l-70 -2q-5 0 -7.5 0.5t-4 3t-1.5 8.5v6t0.5 4.5t2 3.5t4 1.5t6.5 0.5h24t51.5 -0.5t43.5 -0.5q33 0 75.5 1t56.5 1q165 0 261.5 -80t96.5 -248 q0 -158 -102 -247.5t-248 -91.5q-32 0 -112 2t-113 2q-16 0 -55 -2t-42 -2q-8 0 -9.5 2t-1.5 12zM171 46q0 -13 6 -17t59 -4q97 0 170 27t111 64t61.5 88t29.5 87.5t6 73.5q0 123 -74.5 196.5t-223.5 73.5q-49 0 -63 -4l-41 -274q-1 -7 0 -9.5t8 -2.5h196q3 0 3 -12t-3 -12 h-197q-9 0 -11 -1.5t-3 -9.5q-34 -236 -34 -264z" />
+<glyph unicode="&#x111;" horiz-adv-x="473" d="M25 74q0 34 14.5 83.5t40 100t68 86t92.5 35.5q17 0 33.5 -3t25 -6.5t18 -8.5t10.5 -5q9 -4 12 -2t5 12q10 54 18 110q1 6 0 7t-8 1h-145q-2 0 -2.5 12t2.5 12h148q9 0 10 7l6.5 46.5t5.5 37t2 13.5q5 17 -4 17q-2 0 -44 -10.5t-45 -10.5q-5 0 -3 21q1 8 2.5 9.5t7.5 3.5 q39 8 76 17.5t55 14.5t20 5q11 0 11 -15q0 -2 -25 -148q-1 -6 -0.5 -7t7.5 -1h61q3 0 3 -12t-3 -12h-64q-7 0 -8.5 -1t-2.5 -7q-68 -387 -68 -416q0 -15 13 -15t35.5 18.5t39.5 36.5t18 18q3 0 6.5 -3t3.5 -5q0 -5 -22 -32t-61.5 -56t-75.5 -29q-12 0 -19.5 9.5t-7.5 25.5 q0 18 10.5 70.5t20.5 95.5l10 43q-38 -72 -89 -139l-30.5 -39t-29 -30.5t-37 -25t-40.5 -7.5q-10 0 -19.5 2t-24.5 9t-24 24t-9 43zM91 102q0 -56 46 -56q41 0 138 140q54 82 54 118q0 14 -29 33.5t-60 19.5q-41 0 -77 -49t-54 -107t-18 -99z" />
+<glyph unicode="&#x112;" horiz-adv-x="579" d="M252 788l2 21q1 6 2 7t7 1h181q6 0 7 -1t1 -6l-2 -23q-5 -8 -8 -8h-181q-7 0 -8.5 1t-0.5 8zM20 15q0 9 3 10.5t15 1.5h43q83 519 83 599q0 10 -3 10h-55q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l47 -1q46 -2 67 -2q28 0 108.5 1.5t100.5 1.5q55 0 74.5 2.5t20.5 10.5 q1 12 13 12q11 0 14 -2t3 -9q0 -4 -4 -41t-5 -84q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 3 36t3 37q0 7 -263 7q-5 0 -41 -269q-2 -11 -0.5 -14t14.5 -3h164q45 0 47 13l11 53q1 7 16 7q13 0 13 -6q0 -4 -2.5 -17t-7 -34l-7.5 -36q-7 -39 -15 -89q-1 -7 -13 -7q-17 0 -17 8 q1 7 4 23.5t5.5 29t2.5 14.5q0 8 -10 11t-40 3h-151q-9 0 -12 -0.5t-5 -2.5t-3 -7q-3 -13 -19.5 -129t-19.5 -147q0 -9 7 -9l319 7q4 0 10 16.5t14.5 43t13.5 37.5q4 9 14 9q17 0 17 -11q0 -5 -5.5 -21l-17 -47.5t-19.5 -55.5q-4 -11 -17 -11q-11 0 -179 1.5t-184 1.5 t-54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x113;" horiz-adv-x="390" d="M183 518l2 21q1 6 2 7t7 1h181q5 0 6.5 -1t1.5 -6l-2 -23q-5 -8 -8 -8h-181q-7 0 -8.5 1t-0.5 8zM25 105q0 114 73 200t172 86q93 0 93 -66q0 -43 -35 -77t-88 -54q-65 -24 -141 -24q-8 0 -8 -46q0 -89 96 -89q42 0 82 21.5t63.5 43.5t24.5 22q4 0 8.5 -5t4.5 -9 q0 -2 -11 -13.5t-32 -28t-47 -32.5t-61 -27.5t-68 -11.5q-55 0 -90.5 27.5t-35.5 82.5zM106 200q0 -7 10 -7q74 0 128 36.5t54 96.5q0 19 -14 30t-36 11q-82 0 -128 -122q-14 -35 -14 -45z" />
+<glyph unicode="&#x114;" horiz-adv-x="579" d="M266 810q0 28 4 28h13q1 0 1 -2q0 -31 15.5 -45t52.5 -14q53 0 77 32q4 6 7.5 13.5l5.5 11.5t3 4h13q-6 -46 -37.5 -77.5t-76.5 -31.5q-41 0 -59.5 23t-18.5 58zM20 15q0 9 3 10.5t15 1.5h43q83 519 83 599q0 10 -3 10h-55q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14 l47 -1q46 -2 67 -2q28 0 108.5 1.5t100.5 1.5q55 0 74.5 2.5t20.5 10.5q1 12 13 12q11 0 14 -2t3 -9q0 -4 -4 -41t-5 -84q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 3 36t3 37q0 7 -263 7q-5 0 -41 -269q-2 -11 -0.5 -14t14.5 -3h164q45 0 47 13l11 53q1 7 16 7q13 0 13 -6 q0 -4 -2.5 -17t-7 -34l-7.5 -36q-7 -39 -15 -89q-1 -7 -13 -7q-17 0 -17 8q1 7 4 23.5t5.5 29t2.5 14.5q0 8 -10 11t-40 3h-151q-9 0 -12 -0.5t-5 -2.5t-3 -7q-3 -13 -19.5 -129t-19.5 -147q0 -9 7 -9l319 7q4 0 10 16.5t14.5 43t13.5 37.5q4 9 14 9q17 0 17 -11 q0 -5 -5.5 -21l-17 -47.5t-19.5 -55.5q-4 -11 -17 -11q-11 0 -179 1.5t-184 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x115;" horiz-adv-x="390" d="M199 552q0 32 4 32h13q1 0 1 -3q0 -9 2 -21q9 -49 66 -49q52 0 78 40q4 7 7.5 15.5t5 13t2.5 4.5h13q-6 -53 -37.5 -89t-76.5 -36q-41 0 -59.5 26.5t-18.5 66.5zM25 105q0 114 73 200t172 86q93 0 93 -66q0 -43 -35 -77t-88 -54q-65 -24 -141 -24q-8 0 -8 -46 q0 -89 96 -89q42 0 82 21.5t63.5 43.5t24.5 22q4 0 8.5 -5t4.5 -9q0 -2 -11 -13.5t-32 -28t-47 -32.5t-61 -27.5t-68 -11.5q-55 0 -90.5 27.5t-35.5 82.5zM106 200q0 -7 10 -7q74 0 128 36.5t54 96.5q0 19 -14 30t-36 11q-82 0 -128 -122q-14 -35 -14 -45z" />
+<glyph unicode="&#x116;" horiz-adv-x="579" d="M310 790q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM20 15q0 9 3 10.5t15 1.5h43q83 519 83 599q0 10 -3 10h-55q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l47 -1q46 -2 67 -2q28 0 108.5 1.5t100.5 1.5q55 0 74.5 2.5 t20.5 10.5q1 12 13 12q11 0 14 -2t3 -9q0 -4 -4 -41t-5 -84q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 3 36t3 37q0 7 -263 7q-5 0 -41 -269q-2 -11 -0.5 -14t14.5 -3h164q45 0 47 13l11 53q1 7 16 7q13 0 13 -6q0 -4 -2.5 -17t-7 -34l-7.5 -36q-7 -39 -15 -89q-1 -7 -13 -7 q-17 0 -17 8q1 7 4 23.5t5.5 29t2.5 14.5q0 8 -10 11t-40 3h-151q-9 0 -12 -0.5t-5 -2.5t-3 -7q-3 -13 -19.5 -129t-19.5 -147q0 -9 7 -9l319 7q4 0 10 16.5t14.5 43t13.5 37.5q4 9 14 9q17 0 17 -11q0 -5 -5.5 -21l-17 -47.5t-19.5 -55.5q-4 -11 -17 -11q-11 0 -179 1.5 t-184 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x117;" horiz-adv-x="390" d="M241 540q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM25 105q0 114 73 200t172 86q93 0 93 -66q0 -43 -35 -77t-88 -54q-65 -24 -141 -24q-8 0 -8 -46q0 -89 96 -89q42 0 82 21.5t63.5 43.5t24.5 22q4 0 8.5 -5t4.5 -9 q0 -2 -11 -13.5t-32 -28t-47 -32.5t-61 -27.5t-68 -11.5q-55 0 -90.5 27.5t-35.5 82.5zM106 200q0 -7 10 -7q74 0 128 36.5t54 96.5q0 19 -14 30t-36 11q-82 0 -128 -122q-14 -35 -14 -45z" />
+<glyph unicode="&#x118;" horiz-adv-x="579" d="M20 15q0 9 3 10.5t15 1.5h43q83 519 83 599q0 10 -3 10h-55q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l47 -1q46 -2 67 -2q28 0 108.5 1.5t100.5 1.5q55 0 74.5 2.5t20.5 10.5q1 12 13 12q11 0 14 -2t3 -9q0 -4 -4 -41t-5 -84q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 3 36 t3 37q0 7 -263 7q-5 0 -41 -269q-2 -11 -0.5 -14t14.5 -3h164q45 0 47 13l11 53q1 7 16 7q13 0 13 -6q0 -4 -2.5 -17t-7 -34l-7.5 -36q-7 -39 -15 -89q-1 -7 -13 -7q-17 0 -17 8q1 7 4 23.5t5.5 29t2.5 14.5q0 8 -10 11t-40 3h-151q-9 0 -12 -0.5t-5 -2.5t-3 -7 q-3 -13 -19.5 -129t-19.5 -147q0 -9 7 -9l319 7q4 0 10 16.5t14.5 43t13.5 37.5q4 9 14 9q17 0 17 -11q0 -5 -5.5 -21l-17 -47.5t-19.5 -55.5q-4 -11 -17 -11h-62q-101 -109 -101 -174t47 -65q20 0 42 11t36 22l14 11q1 0 5 -6t4 -7q0 -3 -19 -19t-55 -34t-72 -18 q-31 0 -50 21t-19 56q0 73 143 203q-202 2 -276 2q-16 0 -54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x119;" horiz-adv-x="390" d="M25 105q0 114 73 200t172 86q93 0 93 -66q0 -43 -35 -77t-88 -54q-65 -24 -141 -24q-8 0 -8 -46q0 -89 96 -89q42 0 82 21.5t63.5 43.5t24.5 22q4 0 8.5 -5t4.5 -9q0 -5 -33 -33t-50 -46q-48 -49 -87 -107t-39 -99q0 -65 47 -65q20 0 42 11t36 22l14 11q1 0 5 -6t4 -7 q0 -3 -19 -19t-55 -34t-72 -18q-31 0 -50 21t-19 56q0 11 2.5 22t9.5 24.5l12.5 23.5t18 26l19.5 25t23.5 27l23 25l25 26.5l23.5 24.5q-51 -24 -100 -24q-55 0 -90.5 27.5t-35.5 82.5zM106 200q0 -7 10 -7q74 0 128 36.5t54 96.5q0 19 -14 30t-36 11q-82 0 -128 -122 q-14 -35 -14 -45z" />
+<glyph unicode="&#x11a;" horiz-adv-x="579" d="M262 837q0 2 5 2h12q1 0 7 -6l63 -52q3 -3 8 0l85 52q2 1 4 2.5t4 2.5l1 1h12q5 0 5 -2q0 -1 -4 -5l-91 -92q-11 -11 -20 -11h-20q-7 0 -9 1.5t-7 9.5l-53 92q-2 3 -2 5zM20 15q0 9 3 10.5t15 1.5h43q83 519 83 599q0 10 -3 10h-55q-7 0 -10.5 0.5t-6 4t-2.5 10.5 q0 14 12 14l47 -1q46 -2 67 -2q28 0 108.5 1.5t100.5 1.5q55 0 74.5 2.5t20.5 10.5q1 12 13 12q11 0 14 -2t3 -9q0 -4 -4 -41t-5 -84q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 3 36t3 37q0 7 -263 7q-5 0 -41 -269q-2 -11 -0.5 -14t14.5 -3h164q45 0 47 13l11 53q1 7 16 7 q13 0 13 -6q0 -4 -2.5 -17t-7 -34l-7.5 -36q-7 -39 -15 -89q-1 -7 -13 -7q-17 0 -17 8q1 7 4 23.5t5.5 29t2.5 14.5q0 8 -10 11t-40 3h-151q-9 0 -12 -0.5t-5 -2.5t-3 -7q-3 -13 -19.5 -129t-19.5 -147q0 -9 7 -9l319 7q4 0 10 16.5t14.5 43t13.5 37.5q4 9 14 9q17 0 17 -11 q0 -5 -5.5 -21l-17 -47.5t-19.5 -55.5q-4 -11 -17 -11q-11 0 -179 1.5t-184 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x11b;" horiz-adv-x="390" d="M194 582q0 2 5 2h12q1 0 7 -6l63 -62q3 -3 8 0l85 62q8 6 9 6h12q5 0 5 -2l-4 -6l-91 -104q-11 -12 -20 -12h-20q-7 0 -9 1.5t-7 10.5l-53 104q-2 3 -2 6zM25 105q0 114 73 200t172 86q93 0 93 -66q0 -43 -35 -77t-88 -54q-65 -24 -141 -24q-8 0 -8 -46q0 -89 96 -89 q42 0 82 21.5t63.5 43.5t24.5 22q4 0 8.5 -5t4.5 -9q0 -2 -11 -13.5t-32 -28t-47 -32.5t-61 -27.5t-68 -11.5q-55 0 -90.5 27.5t-35.5 82.5zM106 200q0 -7 10 -7q74 0 128 36.5t54 96.5q0 19 -14 30t-36 11q-82 0 -128 -122q-14 -35 -14 -45z" />
+<glyph unicode="&#x11c;" horiz-adv-x="721" d="M309 731q0 1 4 5l91 92q11 11 20 11h20q7 0 9 -1.5t7 -9.5l53 -92q2 -3 2 -5t-5 -2h-12q-1 0 -7 6l-63 52q-3 3 -8 0l-85 -52q-2 -1 -4 -2.5t-3 -2.5l-2 -1h-12q-5 0 -5 2zM35 266q0 108 51.5 203t138.5 150.5t186 55.5q26 0 51.5 -3.5t46.5 -8.5t39.5 -12t33 -13.5 t24.5 -11.5l16 -8l6 -4q1 0 6 27q3 11 11 11q9 0 15.5 -2t5.5 -7q-13 -84 -23 -175l-1.5 -7.5t-4 -4.5t-9.5 -2q-22 0 -18 16q1 5 8.5 49.5t7.5 50.5q0 5 -35.5 24t-87.5 37.5t-88 18.5q-78 0 -145.5 -57.5t-103.5 -143.5t-36 -173q0 -122 67 -195t165 -73q65 0 111.5 21.5 t51.5 40.5q15 55 18 136q1 14 -9 14h-85q-8 0 -8 12q0 18 9 18q16 0 64 -1.5t66 -1.5q17 0 49.5 1.5t53.5 1.5q8 0 8 -14q0 -16 -8 -16h-57q-2 0 -19 -146q-1 -10 -44.5 -33.5t-116.5 -45t-138 -21.5q-28 0 -59 6t-70.5 26t-70 50.5t-52 85t-21.5 124.5z" />
+<glyph unicode="&#x11d;" horiz-adv-x="426" d="M146 460l4 6l91 104q11 12 20 12h20q7 0 9 -1.5t7 -10.5l53 -104q2 -3 2 -6q0 -2 -5 -2h-12q-1 0 -7 6l-63 62q-3 3 -8 0l-85 -62q-8 -6 -9 -6h-12q-5 0 -5 2zM-6 -157q0 39 29.5 67t61.5 42q12 6 12 8q0 1 -3 2.5t-7.5 3.5t-7.5 4q-25 18 -25 33q0 7 18 35.5t27 31.5 l60 22l6 3q0 2 -7 4q-14 4 -28 11.5t-31.5 22t-28 40t-10.5 57.5q0 70 51.5 119.5t125.5 49.5q18 0 35 -4.5t28 -11.5t19 -13.5t12 -11t5 -4.5q2 0 7.5 11.5t12 26.5t8.5 19q5 9 21 9q27 0 27 -11q0 -12 -11.5 -33t-23 -38t-11.5 -18q0 -6 3 -13q7 -18 7 -40q0 -73 -53 -121 q-26 -24 -51.5 -35t-74.5 -24q-93 -27 -93 -47q0 -9 10.5 -16t37 -13.5t41.5 -9t55 -8.5q17 -3 26 -4q65 -11 98 -30.5t33 -64.5q0 -75 -67 -110t-173 -35q-44 0 -79.5 7t-63.5 29t-28 58zM36 -151q0 -21 18 -36.5t46.5 -22t53.5 -9.5t50 -3q62 0 101 22.5t39 66.5 q0 32 -26 46t-78 23q-98 17 -107 17q-8 0 -32 -11q-65 -32 -65 -93zM123 229q0 -60 24.5 -87t49.5 -27q40 0 78.5 48.5t38.5 115.5q0 37 -22 67t-56 30q-50 0 -81.5 -48.5t-31.5 -98.5z" />
+<glyph unicode="&#x11e;" horiz-adv-x="721" d="M336 810q0 28 4 28h13q1 0 1 -2q0 -31 15.5 -45t52.5 -14q53 0 77 32q4 6 7.5 13.5l5.5 11.5t3 4h13q-6 -46 -37.5 -77.5t-76.5 -31.5q-41 0 -59.5 23t-18.5 58zM35 266q0 108 51.5 203t138.5 150.5t186 55.5q26 0 51.5 -3.5t46.5 -8.5t39.5 -12t33 -13.5t24.5 -11.5 l16 -8l6 -4q1 0 6 27q3 11 11 11q9 0 15.5 -2t5.5 -7q-13 -84 -23 -175l-1.5 -7.5t-4 -4.5t-9.5 -2q-22 0 -18 16q1 5 8.5 49.5t7.5 50.5q0 5 -35.5 24t-87.5 37.5t-88 18.5q-78 0 -145.5 -57.5t-103.5 -143.5t-36 -173q0 -122 67 -195t165 -73q65 0 111.5 21.5t51.5 40.5 q15 55 18 136q1 14 -9 14h-85q-8 0 -8 12q0 18 9 18q16 0 64 -1.5t66 -1.5q17 0 49.5 1.5t53.5 1.5q8 0 8 -14q0 -16 -8 -16h-57q-2 0 -19 -146q-1 -10 -44.5 -33.5t-116.5 -45t-138 -21.5q-28 0 -59 6t-70.5 26t-70 50.5t-52 85t-21.5 124.5z" />
+<glyph unicode="&#x11f;" horiz-adv-x="426" d="M172 550q0 32 4 32h13q1 0 1 -3q0 -9 2 -21q9 -49 66 -49q52 0 78 40q4 7 7.5 15.5t5 13t2.5 4.5h13q-6 -53 -37.5 -89t-76.5 -36q-41 0 -59.5 26.5t-18.5 66.5zM-6 -157q0 39 29.5 67t61.5 42q12 6 12 8q0 1 -3 2.5t-7.5 3.5t-7.5 4q-25 18 -25 33q0 7 18 35.5t27 31.5 l60 22l6 3q0 2 -7 4q-14 4 -28 11.5t-31.5 22t-28 40t-10.5 57.5q0 70 51.5 119.5t125.5 49.5q18 0 35 -4.5t28 -11.5t19 -13.5t12 -11t5 -4.5q2 0 7.5 11.5t12 26.5t8.5 19q5 9 21 9q27 0 27 -11q0 -12 -11.5 -33t-23 -38t-11.5 -18q0 -6 3 -13q7 -18 7 -40q0 -73 -53 -121 q-26 -24 -51.5 -35t-74.5 -24q-93 -27 -93 -47q0 -9 10.5 -16t37 -13.5t41.5 -9t55 -8.5q17 -3 26 -4q65 -11 98 -30.5t33 -64.5q0 -75 -67 -110t-173 -35q-44 0 -79.5 7t-63.5 29t-28 58zM36 -151q0 -21 18 -36.5t46.5 -22t53.5 -9.5t50 -3q62 0 101 22.5t39 66.5 q0 32 -26 46t-78 23q-98 17 -107 17q-8 0 -32 -11q-65 -32 -65 -93zM123 229q0 -60 24.5 -87t49.5 -27q40 0 78.5 48.5t38.5 115.5q0 37 -22 67t-56 30q-50 0 -81.5 -48.5t-31.5 -98.5z" />
+<glyph unicode="&#x120;" horiz-adv-x="721" d="M380 790q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM35 266q0 108 51.5 203t138.5 150.5t186 55.5q26 0 51.5 -3.5t46.5 -8.5t39.5 -12t33 -13.5t24.5 -11.5l16 -8l6 -4q1 0 6 27q3 11 11 11q9 0 15.5 -2t5.5 -7 q-13 -84 -23 -175l-1.5 -7.5t-4 -4.5t-9.5 -2q-22 0 -18 16q1 5 8.5 49.5t7.5 50.5q0 5 -35.5 24t-87.5 37.5t-88 18.5q-78 0 -145.5 -57.5t-103.5 -143.5t-36 -173q0 -122 67 -195t165 -73q65 0 111.5 21.5t51.5 40.5q15 55 18 136q1 14 -9 14h-85q-8 0 -8 12q0 18 9 18 q16 0 64 -1.5t66 -1.5q17 0 49.5 1.5t53.5 1.5q8 0 8 -14q0 -16 -8 -16h-57q-2 0 -19 -146q-1 -10 -44.5 -33.5t-116.5 -45t-138 -21.5q-28 0 -59 6t-70.5 26t-70 50.5t-52 85t-21.5 124.5z" />
+<glyph unicode="&#x121;" horiz-adv-x="426" d="M214 538q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM-6 -157q0 39 29.5 67t61.5 42q12 6 12 8q0 1 -3 2.5t-7.5 3.5t-7.5 4q-25 18 -25 33q0 7 18 35.5t27 31.5l60 22l6 3q0 2 -7 4q-14 4 -28 11.5t-31.5 22t-28 40 t-10.5 57.5q0 70 51.5 119.5t125.5 49.5q18 0 35 -4.5t28 -11.5t19 -13.5t12 -11t5 -4.5q2 0 7.5 11.5t12 26.5t8.5 19q5 9 21 9q27 0 27 -11q0 -12 -11.5 -33t-23 -38t-11.5 -18q0 -6 3 -13q7 -18 7 -40q0 -73 -53 -121q-26 -24 -51.5 -35t-74.5 -24q-93 -27 -93 -47 q0 -9 10.5 -16t37 -13.5t41.5 -9t55 -8.5q17 -3 26 -4q65 -11 98 -30.5t33 -64.5q0 -75 -67 -110t-173 -35q-44 0 -79.5 7t-63.5 29t-28 58zM36 -151q0 -21 18 -36.5t46.5 -22t53.5 -9.5t50 -3q62 0 101 22.5t39 66.5q0 32 -26 46t-78 23q-98 17 -107 17q-8 0 -32 -11 q-65 -32 -65 -93zM123 229q0 -60 24.5 -87t49.5 -27q40 0 78.5 48.5t38.5 115.5q0 37 -22 67t-56 30q-50 0 -81.5 -48.5t-31.5 -98.5z" />
+<glyph unicode="&#x122;" horiz-adv-x="721" d="M235 -207q0 1 14 8.5t27 21t13 28.5q0 18 -17 34.5t-17 19.5q0 11 19.5 22.5t24.5 11.5q10 0 27 -17.5t17 -30.5q0 -30 -26 -58t-49 -41.5t-26 -13.5q-7 0 -7 13v2zM35 266q0 108 51.5 203t138.5 150.5t186 55.5q26 0 51.5 -3.5t46.5 -8.5t39.5 -12t33 -13.5t24.5 -11.5 l16 -8l6 -4q1 0 6 27q3 11 11 11q9 0 15.5 -2t5.5 -7q-13 -84 -23 -175l-1.5 -7.5t-4 -4.5t-9.5 -2q-22 0 -18 16q1 5 8.5 49.5t7.5 50.5q0 5 -35.5 24t-87.5 37.5t-88 18.5q-78 0 -145.5 -57.5t-103.5 -143.5t-36 -173q0 -122 67 -195t165 -73q65 0 111.5 21.5t51.5 40.5 q15 55 18 136q1 14 -9 14h-85q-8 0 -8 12q0 18 9 18q16 0 64 -1.5t66 -1.5q17 0 49.5 1.5t53.5 1.5q8 0 8 -14q0 -16 -8 -16h-57q-2 0 -19 -146q-1 -10 -44.5 -33.5t-116.5 -45t-138 -21.5q-28 0 -59 6t-70.5 26t-70 50.5t-52 85t-21.5 124.5z" />
+<glyph unicode="&#x123;" horiz-adv-x="426" d="M208 498q0 30 26 58t49 41.5t26 13.5q7 0 7 -13v-2q0 -1 -14 -8.5t-27 -21t-13 -28.5q0 -18 17 -34.5t17 -19.5q0 -11 -19.5 -22.5t-24.5 -11.5q-10 0 -27 17.5t-17 30.5zM-6 -157q0 39 29.5 67t61.5 42q12 6 12 8q0 1 -3 2.5t-7.5 3.5t-7.5 4q-25 18 -25 33q0 7 18 35.5 t27 31.5l60 22l6 3q0 2 -7 4q-14 4 -28 11.5t-31.5 22t-28 40t-10.5 57.5q0 70 51.5 119.5t125.5 49.5q18 0 35 -4.5t28 -11.5t19 -13.5t12 -11t5 -4.5q2 0 7.5 11.5t12 26.5t8.5 19q5 9 21 9q27 0 27 -11q0 -12 -11.5 -33t-23 -38t-11.5 -18q0 -6 3 -13q7 -18 7 -40 q0 -73 -53 -121q-26 -24 -51.5 -35t-74.5 -24q-93 -27 -93 -47q0 -9 10.5 -16t37 -13.5t41.5 -9t55 -8.5q17 -3 26 -4q65 -11 98 -30.5t33 -64.5q0 -75 -67 -110t-173 -35q-44 0 -79.5 7t-63.5 29t-28 58zM36 -151q0 -21 18 -36.5t46.5 -22t53.5 -9.5t50 -3q62 0 101 22.5 t39 66.5q0 32 -26 46t-78 23q-98 17 -107 17q-8 0 -32 -11q-65 -32 -65 -93zM123 229q0 -60 24.5 -87t49.5 -27q40 0 78.5 48.5t38.5 115.5q0 37 -22 67t-56 30q-50 0 -81.5 -48.5t-31.5 -98.5z" />
+<glyph unicode="&#x124;" horiz-adv-x="795" d="M341 731q0 1 4 5l91 92q11 11 20 11h20q7 0 9 -1.5t7 -9.5l53 -92q2 -3 2 -5t-5 -2h-12q-1 0 -7 6l-63 52q-3 3 -8 0l-85 -52q-2 -1 -4 -2.5t-3 -2.5l-2 -1h-12q-5 0 -5 2zM20 13q0 9 3 11.5t15 2.5h53q7 0 48 282t41 314q0 16 -9 16h-61q-12 0 -12 15q0 7 2.5 10.5 t5.5 4t11 0.5q6 0 47.5 -1.5t58.5 -1.5q16 0 53 1.5t48 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-50q-8 0 -47 -270q-2 -11 -0.5 -15t12.5 -4h332q8 0 11 0.5t5.5 3t3.5 8.5q30 232 30 261q0 16 -9 16h-61q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5q6 0 48 -1.5 t59 -1.5q16 0 52.5 1.5t47.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-50q-10 0 -47 -288.5t-37 -310.5q0 -13 8 -13h57q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -54.5 1.5t-59.5 1.5t-50 -1.5t-45 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5 h53q5 0 44 287q1 8 -1.5 10t-13.5 2h-334q-9 0 -12.5 -3t-4.5 -13q-32 -235 -32 -270q0 -13 8 -13h59q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -54 1.5t-59 1.5t-53.5 -1.5t-48.5 -1.5q-9 0 -11.5 3t-2.5 13z" />
+<glyph unicode="&#x125;" horiz-adv-x="468" d="M85 731q0 1 4 5l91 92q11 11 20 11h20q7 0 9 -1.5t7 -9.5l53 -92q2 -3 2 -5t-5 -2h-12q-1 0 -7 6l-63 52q-3 3 -8 0l-85 -52q-2 -1 -4 -2.5t-3 -2.5l-2 -1h-12q-5 0 -5 2zM25 6q0 2 7 33.5t18 88l23.5 127t26 168.5t23.5 196q2 19 -4 19q-10 0 -49 -14l-38 -13 q-3 0 -3 14q0 13 7 16q30 11 83 22.5t72 11.5q6 0 6 -15q-5 -101 -93 -537q47 110 115 192q56 68 124 68q26 0 42.5 -12t16.5 -36q0 -37 -33.5 -147.5t-33.5 -120.5q0 -22 21 -22q11 0 34 21.5t41.5 43.5t19.5 22q2 0 7 -4t5 -6q0 -5 -22 -33.5t-60.5 -58.5t-72.5 -30 q-18 0 -29.5 10.5t-11.5 27.5q0 14 36.5 127.5t36.5 141.5q0 17 -9 28t-25 11q-33 0 -66.5 -40t-74.5 -107q-46 -77 -54 -108l-20 -82q-2 -11 -58 -11q-8 0 -8 8z" />
+<glyph unicode="&#x126;" horiz-adv-x="795" d="M20 13q0 9 3 11.5t15 2.5h53q11 0 72 451q1 10 -7 10h-74q-2 0 -2.5 12t2.5 12h74h6.5t3.5 1t2.5 3t0.5 6q11 83 11 101q0 16 -9 16h-61q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5q6 0 47.5 -1.5t58.5 -1.5q16 0 53 1.5t48 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5 t-15 -1.5h-50q-5 0 -24 -115q-2 -7 -0.5 -9.5t8.5 -2.5h342q7 0 8.5 2t2.5 10q10 85 10 99q0 16 -9 16h-61q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5q6 0 48 -1.5t59 -1.5q16 0 52.5 1.5t47.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-50q-6 0 -23 -115 q-1 -8 0 -10t8 -2h61q3 0 3 -12t-3 -12h-65q-9 0 -10 -9l-24.5 -186.5l-22 -177t-8.5 -75.5q0 -13 8 -13h57q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -54.5 1.5t-59.5 1.5t-50 -1.5t-45 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h53q5 0 44 287q1 8 -1.5 10 t-13.5 2h-334q-9 0 -12.5 -3t-4.5 -13q-32 -235 -32 -270q0 -13 8 -13h59q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -54 1.5t-59 1.5t-53.5 -1.5t-48.5 -1.5q-9 0 -11.5 3t-2.5 13zM222 358q0 -8 13 -8h332q8 0 11 0.5t5.5 3t3.5 8.5l15 117v4l1 2q0 3 -8 3h-345 q-7 0 -8.5 -1.5t-2.5 -8.5l-16 -109q-1 -5 -1 -11z" />
+<glyph unicode="&#x127;" horiz-adv-x="468" d="M11 497q0 11 3 11h87q7 0 8.5 1.5t2.5 8.5q8 66 11 101q2 19 -4 19q-10 0 -49 -14l-38 -13q-3 0 -3 14q0 13 7 16q30 11 83 22.5t72 11.5q6 0 6 -15q-3 -46 -19 -142q-1 -7 -0.5 -8.5t8.5 -1.5h149q3 0 3 -12t-3 -12h-151q-8 0 -10 -1t-3 -9q-10 -61 -67 -351 q47 110 115 192q56 68 124 68q26 0 42.5 -12t16.5 -36q0 -37 -33.5 -147.5t-33.5 -120.5q0 -22 21 -22q11 0 34 21.5t41.5 43.5t19.5 22q2 0 7 -4t5 -6q0 -5 -22 -33.5t-60.5 -58.5t-72.5 -30q-18 0 -29.5 10.5t-11.5 27.5q0 14 36.5 127.5t36.5 141.5q0 17 -9 28t-25 11 q-33 0 -66.5 -40t-74.5 -107q-46 -77 -54 -108l-20 -82q-2 -11 -58 -11q-8 0 -8 8q0 1 12.5 59.5t33.5 173.5t36 235q1 8 -0.5 9t-9.5 1h-83q-3 0 -3 13z" />
+<glyph unicode="&#x128;" horiz-adv-x="377" d="M142 745q2 9 11 25q15 25 32.5 38.5t30.5 13.5q16 0 42 -18t38 -18q21 0 40 33q3 7 13 7q6 0 6 -2q-1 -6 -11 -26q-29 -55 -66 -55q-17 0 -41 17.5t-39 17.5q-22 0 -38 -29q-3 -6 -12 -6q-6 0 -6 2zM20 15q0 9 3 10.5t15 1.5h60q5 0 47 279t42 317q0 16 -9 16h-66 q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5q6 0 52 -1.5t63 -1.5q16 0 57 1.5t52 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-57q-9 0 -48.5 -275.5t-39.5 -323.5q0 -13 8 -13h66q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -58 1.5t-63 1.5t-59 -1.5t-54 -1.5 q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x129;" horiz-adv-x="270" d="M78 495q2 9 11 25q15 25 32.5 38.5t30.5 13.5q16 0 42 -18t38 -18q21 0 40 33q3 7 13 7q6 0 6 -2q-1 -6 -11 -26q-29 -55 -66 -55q-17 0 -41 17.5t-39 17.5q-22 0 -38 -29q-3 -6 -12 -6q-6 0 -6 2zM25 282q0 4 29.5 28.5t67 48.5t54.5 24q20 0 20 -22q0 -26 -32.5 -150 t-32.5 -136q0 -20 13 -20q8 0 27 16t35 32t17 16q3 0 7.5 -5t4.5 -7q0 -12 -64.5 -62.5t-86.5 -50.5q-24 0 -24 18q0 24 35.5 145t35.5 153q0 18 -12 18q-11 0 -30.5 -15t-35 -29.5t-16.5 -14.5q-4 0 -8 4.5t-4 8.5z" />
+<glyph unicode="&#x12a;" horiz-adv-x="377" d="M150 788l2 21q1 6 2 7t7 1h181q6 0 7 -1t1 -6l-2 -23q-5 -8 -8 -8h-181q-7 0 -8.5 1t-0.5 8zM20 15q0 9 3 10.5t15 1.5h60q5 0 47 279t42 317q0 16 -9 16h-66q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5q6 0 52 -1.5t63 -1.5q16 0 57 1.5t52 1.5q10 0 12 -2.5t2 -15.5 q0 -9 -2.5 -10.5t-15.5 -1.5h-57q-9 0 -48.5 -275.5t-39.5 -323.5q0 -13 8 -13h66q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -58 1.5t-63 1.5t-59 -1.5t-54 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x12b;" horiz-adv-x="270" d="M86 518l2 21q1 6 2 7t7 1h181q6 0 7 -1t1 -6l-2 -23q-5 -8 -8 -8h-181q-7 0 -8.5 1t-0.5 8zM25 282q0 4 29.5 28.5t67 48.5t54.5 24q20 0 20 -22q0 -26 -32.5 -150t-32.5 -136q0 -20 13 -20q8 0 27 16t35 32t17 16q3 0 7.5 -5t4.5 -7q0 -12 -64.5 -62.5t-86.5 -50.5 q-24 0 -24 18q0 24 35.5 145t35.5 153q0 18 -12 18q-11 0 -30.5 -15t-35 -29.5t-16.5 -14.5q-4 0 -8 4.5t-4 8.5z" />
+<glyph unicode="&#x12c;" horiz-adv-x="377" d="M164 810q0 28 4 28h13q1 0 1 -2q0 -31 15.5 -45t52.5 -14q53 0 77 32q4 6 7.5 13.5l5.5 11.5t3 4h13q-6 -46 -37.5 -77.5t-76.5 -31.5q-41 0 -59.5 23t-18.5 58zM20 15q0 9 3 10.5t15 1.5h60q5 0 47 279t42 317q0 16 -9 16h-66q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5 q6 0 52 -1.5t63 -1.5q16 0 57 1.5t52 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-57q-9 0 -48.5 -275.5t-39.5 -323.5q0 -13 8 -13h66q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -58 1.5t-63 1.5t-59 -1.5t-54 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x12d;" horiz-adv-x="270" d="M102 552q0 32 4 32h13q1 0 1 -3q0 -9 2 -21q9 -49 66 -49q52 0 78 40q4 7 7.5 15.5t5 13t2.5 4.5h13q-6 -53 -37.5 -89t-76.5 -36q-41 0 -59.5 26.5t-18.5 66.5zM25 282q0 4 29.5 28.5t67 48.5t54.5 24q20 0 20 -22q0 -26 -32.5 -150t-32.5 -136q0 -20 13 -20q8 0 27 16 t35 32t17 16q3 0 7.5 -5t4.5 -7q0 -12 -64.5 -62.5t-86.5 -50.5q-24 0 -24 18q0 24 35.5 145t35.5 153q0 18 -12 18q-11 0 -30.5 -15t-35 -29.5t-16.5 -14.5q-4 0 -8 4.5t-4 8.5z" />
+<glyph unicode="&#x12e;" horiz-adv-x="377" d="M10 -205q0 65 124 205q-96 -3 -100 -3q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h60q5 0 47 279t42 317q0 16 -9 16h-66q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5q6 0 52 -1.5t63 -1.5q16 0 57 1.5t52 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-57 q-9 0 -48.5 -275.5t-39.5 -323.5q0 -13 8 -13h66q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -110 3q-40 -52 -60.5 -93t-20.5 -88q0 -61 47 -61q20 0 42 11t36 22l14 11q1 0 5 -6t4 -7q0 -3 -19 -19t-55 -34t-72 -18q-31 0 -50 21t-19 56z" />
+<glyph unicode="&#x12f;" horiz-adv-x="270" d="M-40 -205q0 27 23.5 66t45 63.5t67.5 72.5q-8 -3 -12 -3q-24 0 -24 18q0 24 35.5 145t35.5 153q0 18 -12 18q-11 0 -30.5 -15t-35 -29.5t-16.5 -14.5q-4 0 -8 4.5t-4 8.5t29.5 28.5t67 48.5t54.5 24q20 0 20 -22q0 -26 -32.5 -150t-32.5 -136q0 -20 13 -20q8 0 27 16 t35 32t17 16q3 0 7.5 -5t4.5 -7q0 -11 -55 -55q-24 -19 -49 -47q-104 -119 -104 -182q0 -65 47 -65q20 0 42 11t36 22l14 11q1 0 5 -6t4 -7q0 -3 -19 -19t-55 -34t-72 -18q-31 0 -50 21t-19 56zM128 549q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13 q-20 0 -32 15t-12 33z" />
+<glyph unicode="&#x130;" horiz-adv-x="377" d="M208 790q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM20 15q0 9 3 10.5t15 1.5h60q5 0 47 279t42 317q0 16 -9 16h-66q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5q6 0 52 -1.5t63 -1.5q16 0 57 1.5t52 1.5q10 0 12 -2.5t2 -15.5 q0 -9 -2.5 -10.5t-15.5 -1.5h-57q-9 0 -48.5 -275.5t-39.5 -323.5q0 -13 8 -13h66q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -58 1.5t-63 1.5t-59 -1.5t-54 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x131;" horiz-adv-x="270" d="M25 282q0 4 29.5 28.5t67 48.5t54.5 24q20 0 20 -22q0 -26 -32.5 -150t-32.5 -136q0 -20 13 -20q8 0 27 16t35 32t17 16q3 0 7.5 -5t4.5 -7q0 -12 -64.5 -62.5t-86.5 -50.5q-24 0 -24 18q0 24 35.5 145t35.5 153q0 18 -12 18q-11 0 -30.5 -15t-35 -29.5t-16.5 -14.5 q-4 0 -8 4.5t-4 8.5z" />
+<glyph unicode="&#x132;" horiz-adv-x="677" d="M254 -188q0 23 28.5 43.5t38.5 20.5q7 0 24 -10.5t28 -10.5q6 0 11.5 2.5t9.5 8.5t7 12t5.5 16.5t4.5 18t3.5 21t2.5 20.5t2 21.5t2 19.5q11 106 30.5 260l33.5 257t14 109q0 18 -10 18h-68q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 56 -1.5t67 -1.5 q16 0 52 1.5t47 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-50q-5 0 -20 -101t-34.5 -253.5t-19.5 -154.5q-16 -121 -35 -173q-23 -62 -64 -105q-60 -64 -109 -64q-19 0 -36 7t-17 17zM20 15q0 9 3 10.5t15 1.5h60q5 0 47 279t42 317q0 16 -9 16h-66 q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5q6 0 52 -1.5t63 -1.5q16 0 57 1.5t52 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-57q-9 0 -48.5 -275.5t-39.5 -323.5q0 -13 8 -13h66q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -58 1.5t-63 1.5t-59 -1.5t-54 -1.5 q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x133;" horiz-adv-x="567" d="M201 -221q0 15 10 25.5t25 10.5q18 0 38 -12.5t37 -12.5q10 0 17.5 7.5t14 26.5t9.5 31.5t9 42.5q19 93 43 242t24 170q0 18 -12 18q-11 0 -35 -22t-43.5 -44.5t-20.5 -22.5q-4 0 -8 3.5t-4 7.5t30 36t71.5 64.5t66.5 32.5q21 0 21 -24q0 -21 -12.5 -103t-27 -167 t-15.5 -92q-7 -45 -14 -73.5t-28.5 -72.5t-53.5 -68q-52 -38 -87 -38q-24 0 -39.5 11t-15.5 23zM427 579q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM25 282q0 4 29.5 28.5t67 48.5t54.5 24q20 0 20 -22q0 -26 -32.5 -150 t-32.5 -136q0 -20 13 -20q8 0 27 16t35 32t17 16q3 0 7.5 -5t4.5 -7q0 -12 -64.5 -62.5t-86.5 -50.5q-24 0 -24 18q0 24 35.5 145t35.5 153q0 18 -12 18q-11 0 -30.5 -15t-35 -29.5t-16.5 -14.5q-4 0 -8 4.5t-4 8.5zM128 549q0 20 11 33t30 13q20 0 32 -15t12 -33 q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33z" />
+<glyph unicode="&#x134;" horiz-adv-x="365" d="M124 731q0 1 4 5l91 92q11 11 20 11h20q7 0 9 -1.5t7 -9.5l53 -92q2 -3 2 -5t-5 -2h-12q-1 0 -7 6l-63 52q-3 3 -8 0l-85 -52q-2 -1 -4 -2.5t-4 -2.5l-1 -1h-12q-5 0 -5 2zM-58 -188q0 23 28.5 43.5t38.5 20.5q7 0 24 -10.5t28 -10.5q6 0 11.5 2.5t9.5 8.5t7 12t5.5 16.5 t4.5 18t3.5 21t2.5 20.5t2 21.5t2 19.5q11 106 30.5 260l33.5 257t14 109q0 18 -10 18h-68q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 56 -1.5t67 -1.5q16 0 52 1.5t47 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-50q-5 0 -20 -101t-34.5 -253.5 t-19.5 -154.5q-16 -121 -35 -173q-23 -62 -64 -105q-60 -64 -109 -64q-19 0 -36 7t-17 17z" />
+<glyph unicode="&#x135;" horiz-adv-x="297" d="M77 462l4 6l91 104q11 12 20 12h20q7 0 9 -1.5t7 -10.5l53 -104q2 -3 2 -6q0 -2 -5 -2h-12q-1 0 -7 6l-63 62q-3 3 -8 0l-85 -62q-7 -6 -9 -6h-12q-5 0 -5 2zM-69 -221q0 15 10 25.5t25 10.5q18 0 38 -12.5t37 -12.5q10 0 17.5 7.5t14 26.5t9.5 31.5t9 42.5q19 93 43 242 t24 170q0 18 -12 18q-11 0 -35 -22t-43.5 -44.5t-20.5 -22.5q-4 0 -8 3.5t-4 7.5t30 36t71.5 64.5t66.5 32.5q21 0 21 -24q0 -21 -12.5 -103t-27 -167t-15.5 -92q-7 -45 -14 -73.5t-28.5 -72.5t-53.5 -68q-52 -38 -87 -38q-24 0 -39.5 11t-15.5 23z" />
+<glyph unicode="&#x136;" horiz-adv-x="656" d="M249 -207q0 1 14 8.5t27 21t13 28.5q0 18 -17 34.5t-17 19.5q0 11 19.5 22.5t24.5 11.5q10 0 27 -17.5t17 -30.5q0 -30 -26 -58t-49 -41.5t-26 -13.5q-7 0 -7 13v2zM20 13q0 9 3 11.5t15 2.5h33q7 0 50.5 282t43.5 314q0 16 -9 16h-57q-12 0 -12 15q0 7 2.5 10.5t5.5 4 t11 0.5q6 0 45.5 -1.5t56.5 -1.5q16 0 48 1.5t43 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-35q-10 0 -33 -127t-25 -154q-2 -20 13 -20h50q8 0 93 108.5t130 171.5q10 15 10 16q0 5 -15 5h-21q-7 0 -10.5 0.5t-6 4t-2.5 10.5t2.5 10.5t5.5 4t11 0.5 q6 0 29 -1.5t40 -1.5q16 0 42.5 1.5t37.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-58q-82 -110 -218 -261q-3 -3 -6 -6.5t-5.5 -5.5t-4 -4t-1.5 -3q0 -3 9 -12q24 -22 56 -60.5t56 -70l66 -89.5l61 -83q12 -17 35 -17h28q8 0 9.5 -2t1.5 -11q0 -11 -2 -14 t-9 -3q-11 0 -54.5 1.5t-59.5 1.5t-41.5 -1.5t-36.5 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h8q20 0 20 7q0 4 -12 20q-187 266 -196 266h-46h-8t-4.5 -2.5t-3.5 -7.5q-4 -33 -14.5 -101t-16.5 -112.5t-6 -58.5q0 -11 2 -11h69q8 0 9.5 -2t1.5 -11q0 -11 -2 -14 t-9 -3q-11 0 -54 1.5t-59 1.5t-43.5 -1.5t-38.5 -1.5q-9 0 -11.5 3t-2.5 13z" />
+<glyph unicode="&#x137;" horiz-adv-x="450" d="M128 -207q0 1 14 8.5t27 21t13 28.5q0 18 -17 34.5t-17 19.5q0 11 19.5 22.5t24.5 11.5q10 0 27 -17.5t17 -30.5q0 -30 -26 -58t-49 -41.5t-26 -13.5q-7 0 -7 13v2zM25 -3q0 8 21 107t48.5 249.5t38.5 269.5q0 9 -7 9q-8 0 -75 -19q-6 -1 -7.5 2t0.5 17q2 8 6 9l77.5 20 l53.5 14t19 4q14 0 14 -11q0 -16 -97 -489q36 69 72 117q33 43 66.5 64t82.5 21q59 0 59 -37q0 -42 -32.5 -78t-67.5 -53t-65 -24q-21 -3 -21 -4l4 -2q4 -2 10.5 -6.5t12.5 -9.5q47 -45 73 -77q16 -20 24 -28.5t22.5 -16.5t31.5 -8q34 0 34 27q0 4 -1 10.5t-1 9.5q0 12 8 12 t14.5 -10.5t6.5 -32.5t-38.5 -38.5t-72.5 -16.5q-22 0 -43 20q-11 10 -23.5 25t-29 37.5t-24.5 32.5q-10 13 -23.5 28.5t-20 24t-6.5 9.5q0 5 17 22q2 2 10 2q16 0 28 5q37 17 71 53.5t34 70.5q0 20 -31 20q-29 0 -63 -32q-9 -9 -18.5 -20t-20.5 -26.5l-18.5 -26.5 l-21.5 -33t-21 -32q-17 -27 -24 -58q-15 -64 -21 -98q-3 -22 -10 -22q-1 0 -11 -1.5t-22 -3t-17 -1.5t-5 3z" />
+<glyph unicode="&#x138;" horiz-adv-x="491" d="M25 291q0 11 50.5 53t79.5 42q18 0 18 -20q0 -67 -31 -211q58 101 88 141q33 43 66.5 64t82.5 21q59 0 59 -37q0 -42 -32.5 -78t-67.5 -53t-65 -24q-21 -3 -21 -4l4 -2q4 -2 10.5 -6.5t12.5 -9.5q47 -45 73 -77q16 -20 24 -28.5t22.5 -16.5t31.5 -8q34 0 34 27 q0 4 -1 10.5t-1 9.5q0 12 8 12t14.5 -10.5t6.5 -32.5t-38.5 -38.5t-72.5 -16.5q-22 0 -43 20q-11 10 -23.5 25t-29 37.5t-24.5 32.5q-10 13 -23.5 28.5t-20 24t-6.5 9.5q0 5 17 22q2 2 10 2q15 0 28 5q37 17 71 53.5t34 70.5q0 20 -31 20q-29 0 -63 -32q-9 -9 -18.5 -20 t-20.5 -26.5l-18.5 -26.5l-21.5 -33t-21 -32q-17 -27 -24 -58q-15 -64 -21 -98q-3 -22 -10 -22q-1 0 -11 -1.5t-22 -3t-17 -1.5q-7 0 -5 9q1 3 9.5 48.5l16.5 87.5t15 88.5t7 65.5q0 38 -13 38q-11 0 -27 -12.5t-27.5 -25.5t-12.5 -13q-9 0 -9 11z" />
+<glyph unicode="&#x139;" horiz-adv-x="586" d="M204 731l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2zM20 15q0 9 2.5 10.5t14.5 1.5h52q1 0 20 142.5l38 292t19 164.5q0 13 -2 13h-58q-10 0 -13 2.5t-3 12.5t3.5 12.5t16.5 2.5q6 0 43.5 -1.5t54.5 -1.5q16 0 57.5 1.5 t52.5 1.5q12 0 14.5 -2t2.5 -13q0 -9 -3 -12t-15 -3h-62l-19 -144l-39 -290t-19 -152q0 -22 17 -22q231 0 291 6q12 1 15 4t8 19l25 77q3 8 11 8q21 0 21 -10q0 -3 -5 -19l-14.5 -47t-17.5 -61q-2 -11 -20 -11q-11 0 -185.5 1.5t-190.5 1.5t-52.5 -1.5t-47.5 -1.5 q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="&#x13a;" horiz-adv-x="272" d="M196 731l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2zM55 28q0 6 18 106.5l42 243t35 234.5q2 10 -1 14t-13 1q-66 -18 -74 -18q-5 0 -3 20q1 8 2.5 9.5t7.5 3.5q39 9 75.5 18.5l53.5 14t19 4.5q10 0 10 -9q0 -12 -50 -305.5 t-50 -296.5q0 -21 14 -21q12 0 36 21t43.5 42t20.5 21q3 0 9.5 -5.5t6.5 -7.5q0 -4 -28 -34.5t-71.5 -62t-73.5 -31.5q-29 0 -29 38z" />
+<glyph unicode="&#x13b;" horiz-adv-x="586" d="M236 -207q0 1 14 8.5t27 21t13 28.5q0 18 -17 34.5t-17 19.5q0 11 19.5 22.5t24.5 11.5q10 0 27 -17.5t17 -30.5q0 -30 -26 -58t-49 -41.5t-26 -13.5q-7 0 -7 13v2zM20 15q0 9 2.5 10.5t14.5 1.5h52q1 0 20 142.5l38 292t19 164.5q0 13 -2 13h-58q-10 0 -13 2.5t-3 12.5 t3.5 12.5t16.5 2.5q6 0 43.5 -1.5t54.5 -1.5q16 0 57.5 1.5t52.5 1.5q12 0 14.5 -2t2.5 -13q0 -9 -3 -12t-15 -3h-62l-19 -144l-39 -290t-19 -152q0 -22 17 -22q231 0 291 6q12 1 15 4t8 19l25 77q3 8 11 8q21 0 21 -10q0 -3 -5 -19l-14.5 -47t-17.5 -61q-2 -11 -20 -11 q-11 0 -185.5 1.5t-190.5 1.5t-52.5 -1.5t-47.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="&#x13c;" horiz-adv-x="272" d="M17 -207q0 1 14 8.5t27 21t13 28.5q0 18 -17 34.5t-17 19.5q0 11 19.5 22.5t24.5 11.5q10 0 27 -17.5t17 -30.5q0 -30 -26 -58t-49 -41.5t-26 -13.5q-7 0 -7 13v2zM55 28q0 6 18 106.5l42 243t35 234.5q2 10 -1 14t-13 1q-66 -18 -74 -18q-5 0 -3 20q1 8 2.5 9.5t7.5 3.5 q39 9 75.5 18.5l53.5 14t19 4.5q10 0 10 -9q0 -12 -50 -305.5t-50 -296.5q0 -21 14 -21q12 0 36 21t43.5 42t20.5 21q3 0 9.5 -5.5t6.5 -7.5q0 -4 -28 -34.5t-71.5 -62t-73.5 -31.5q-29 0 -29 38z" />
+<glyph unicode="&#x13d;" horiz-adv-x="586" d="M367 495q0 3 6 25.5l15 57.5l13 51q9 32 34 32q26 0 26 -23q0 -9 -13 -35l-55 -98q-6 -12 -9 -12h-15q-2 0 -2 2zM20 15q0 9 2.5 10.5t14.5 1.5h52q1 0 20 142.5l38 292t19 164.5q0 13 -2 13h-58q-10 0 -13 2.5t-3 12.5t3.5 12.5t16.5 2.5q6 0 43.5 -1.5t54.5 -1.5 q16 0 57.5 1.5t52.5 1.5q12 0 14.5 -2t2.5 -13q0 -9 -3 -12t-15 -3h-62l-19 -144l-39 -290t-19 -152q0 -22 17 -22q231 0 291 6q12 1 15 4t8 19l25 77q3 8 11 8q21 0 21 -10q0 -3 -5 -19l-14.5 -47t-17.5 -61q-2 -11 -20 -11q-11 0 -185.5 1.5t-190.5 1.5t-52.5 -1.5 t-47.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="&#x13e;" horiz-adv-x="272" d="M248 495q0 3 6 25.5l15 57.5l13 51q9 32 34 32q26 0 26 -23q0 -9 -13 -35l-55 -98q-6 -12 -9 -12h-15q-2 0 -2 2zM55 28q0 6 18 106.5l42 243t35 234.5q2 10 -1 14t-13 1q-66 -18 -74 -18q-5 0 -3 20q1 8 2.5 9.5t7.5 3.5q39 9 75.5 18.5l53.5 14t19 4.5q10 0 10 -9 q0 -12 -50 -305.5t-50 -296.5q0 -21 14 -21q12 0 36 21t43.5 42t20.5 21q3 0 9.5 -5.5t6.5 -7.5q0 -4 -28 -34.5t-71.5 -62t-73.5 -31.5q-29 0 -29 38z" />
+<glyph unicode="&#x13f;" horiz-adv-x="586" d="M20 15q0 9 2.5 10.5t14.5 1.5h52q1 0 20 142.5l38 292t19 164.5q0 13 -2 13h-58q-10 0 -13 2.5t-3 12.5t3.5 12.5t16.5 2.5q6 0 43.5 -1.5t54.5 -1.5q16 0 57.5 1.5t52.5 1.5q12 0 14.5 -2t2.5 -13q0 -9 -3 -12t-15 -3h-62l-19 -144l-39 -290t-19 -152q0 -22 17 -22 q231 0 291 6q12 1 15 4t8 19l25 77q3 8 11 8q21 0 21 -10q0 -3 -5 -19l-14.5 -47t-17.5 -61q-2 -11 -20 -11q-11 0 -185.5 1.5t-190.5 1.5t-52.5 -1.5t-47.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5zM428 340q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13 q-20 0 -32 15t-12 33z" />
+<glyph unicode="&#x140;" horiz-adv-x="397" d="M297 340q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM55 28q0 6 18 106.5l42 243t35 234.5q2 10 -1 14t-13 1q-66 -18 -74 -18q-5 0 -3 20q1 8 2.5 9.5t7.5 3.5q39 9 75.5 18.5l53.5 14t19 4.5q10 0 10 -9q0 -12 -50 -305.5 t-50 -296.5q0 -21 14 -21q12 0 36 21t43.5 42t20.5 21q3 0 9.5 -5.5t6.5 -7.5q0 -4 -28 -34.5t-71.5 -62t-73.5 -31.5q-29 0 -29 38z" />
+<glyph unicode="&#x141;" horiz-adv-x="586" d="M20 15q0 9 2.5 10.5t14.5 1.5h52q1 0 26 188q1 7 0 7t-6 -2q-10 -5 -27.5 -13t-29.5 -13l-11 -6q-2 0 -2 9q0 15 3 18l69 32q9 4 10 15q45 343 45 364q0 13 -2 13h-58q-10 0 -13 2.5t-3 12.5t3.5 12.5t16.5 2.5q6 0 43.5 -1.5t54.5 -1.5q16 0 57.5 1.5t52.5 1.5 q12 0 14.5 -2t2.5 -13q0 -9 -3 -12t-15 -3h-62q0 -1 -44 -334q-1 -10 -1 -10.5t7 1.5l100 46.5l123.5 58t53.5 24.5q2 0 2 -4q0 -5 -3 -20q-1 -3 -5 -5l-271 -126q-10 -5 -12 -11q-1 -2 -1 -4q-26 -201 -26 -202q0 -22 17 -22q231 0 291 6q12 1 15 4t8 19l25 77q3 8 11 8 q21 0 21 -10q0 -3 -5 -19l-14.5 -47t-17.5 -61q-2 -11 -20 -11q-11 0 -185.5 1.5t-190.5 1.5t-52.5 -1.5t-47.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="&#x142;" horiz-adv-x="272" d="M29 273q-2 0 0 11q0 15 5 18l67 34q8 3 9 12q32 196 40 264q2 10 -1 14t-13 1q-66 -18 -74 -18q-5 0 -3 20q1 8 2.5 9.5t7.5 3.5q39 9 75.5 18.5l53.5 14t19 4.5q10 0 10 -9q0 -12 -47 -288v-1q-1 -5 -0.5 -5t3.5 1l2 1l35 17q34 18 35 18q2 0 0 -18q0 -2 -0.5 -4 t-0.5 -4l-1 -2l-74 -37q-5 -2 -6 -8q-46 -264 -46 -272q0 -21 14 -21q12 0 36 21t43.5 42t20.5 21q3 0 9.5 -5.5t6.5 -7.5q0 -4 -28 -34.5t-71.5 -62t-73.5 -31.5q-29 0 -29 38q0 4 6.5 40l19 105.5l22.5 128.5q1 6 0 6.5t-5 -1.5q-2 -1 -3 -1q-64 -33 -66 -33z" />
+<glyph unicode="&#x143;" horiz-adv-x="824" d="M455 731l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2zM20 15q0 9 3 10.5t15 1.5h50q40 245 89 514q1 6 4 22.5t5 29.5t2 21q0 3 -5 12t-10 11t-22 2h-50q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q6 0 53.5 -1.5t58.5 -1.5 q13 0 28.5 1.5t16.5 1.5q12 0 20 -13l329 -499q8 -12 16 -12q7 0 39.5 218.5t32.5 263.5q0 12 -2 12h-76q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q11 0 42 -1.5t47 -1.5t44.5 1.5t39.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-42q-6 0 -80 -467q-10 -60 -16 -168 q-1 -15 -4 -20t-12 -5t-28 32q-45 73 -118 180l-256 374q-15 21 -16 21q-4 0 -5 -20q0 -3 -17.5 -117t-35 -241.5t-17.5 -165.5q0 -15 3 -15h85q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -50.5 1.5t-55.5 1.5q-18 0 -52 -1.5t-35 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x144;" horiz-adv-x="515" d="M324 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-5 -6 -8 -6h-15q-4 0 -4 2zM15 287q0 2 29.5 26t72.5 48.5t70 24.5q21 0 21 -21t-6 -55t-12 -57l-19.5 -72.5t-16.5 -62.5q74 131 134.5 199.5t116.5 68.5q51 0 51 -44q0 -29 -38.5 -145t-38.5 -127 q0 -20 19 -20q13 0 34.5 18.5t38 37t17.5 18.5q3 0 7.5 -4.5t4.5 -6.5q0 -5 -24 -31.5t-63.5 -53.5t-72.5 -27q-15 0 -23.5 11.5t-8.5 29.5q0 28 40 135t40 138q0 12 -6 20.5t-16 8.5q-26 0 -79 -66.5t-100 -141.5q-22 -36 -44 -112q-7 -25 -15 -26q-40 -4 -48 -4 q-7 0 -5 10q60 249 60 312q0 18 -13 18q-14 0 -54 -32l-39 -32q-3 0 -8.5 5t-5.5 12z" />
+<glyph unicode="&#x145;" horiz-adv-x="824" d="M320 -207q0 1 14 8.5t27 21t13 28.5q0 18 -17 34.5t-17 19.5q0 11 19.5 22.5t24.5 11.5q10 0 27 -17.5t17 -30.5q0 -30 -26 -58t-49 -41.5t-26 -13.5q-7 0 -7 13v2zM20 15q0 9 3 10.5t15 1.5h50q40 245 89 514q1 6 4 22.5t5 29.5t2 21q0 3 -5 12t-10 11t-22 2h-50 q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q6 0 53.5 -1.5t58.5 -1.5q13 0 28.5 1.5t16.5 1.5q12 0 20 -13l329 -499q8 -12 16 -12q7 0 39.5 218.5t32.5 263.5q0 12 -2 12h-76q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q11 0 42 -1.5t47 -1.5t44.5 1.5t39.5 1.5q10 0 12 -2.5t2 -15.5 q0 -9 -3 -10.5t-15 -1.5h-42q-6 0 -80 -467q-10 -60 -16 -168q-1 -15 -4 -20t-12 -5t-28 32q-45 73 -118 180l-256 374q-15 21 -16 21q-4 0 -5 -20q0 -3 -17.5 -117t-35 -241.5t-17.5 -165.5q0 -15 3 -15h85q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -50.5 1.5 t-55.5 1.5q-18 0 -52 -1.5t-35 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x146;" horiz-adv-x="515" d="M162 -207q0 1 14 8.5t27 21t13 28.5q0 18 -17 34.5t-17 19.5q0 11 19.5 22.5t24.5 11.5q10 0 27 -17.5t17 -30.5q0 -30 -26 -58t-49 -41.5t-26 -13.5q-7 0 -7 13v2zM15 287q0 2 29.5 26t72.5 48.5t70 24.5q21 0 21 -21t-6 -55t-12 -57l-19.5 -72.5t-16.5 -62.5 q74 131 134.5 199.5t116.5 68.5q51 0 51 -44q0 -29 -38.5 -145t-38.5 -127q0 -20 19 -20q13 0 34.5 18.5t38 37t17.5 18.5q3 0 7.5 -4.5t4.5 -6.5q0 -5 -24 -31.5t-63.5 -53.5t-72.5 -27q-15 0 -23.5 11.5t-8.5 29.5q0 28 40 135t40 138q0 12 -6 20.5t-16 8.5 q-26 0 -79 -66.5t-100 -141.5q-22 -36 -44 -112q-7 -25 -15 -26q-40 -4 -48 -4q-7 0 -5 10q60 249 60 312q0 18 -13 18q-14 0 -54 -32l-39 -32q-3 0 -8.5 5t-5.5 12z" />
+<glyph unicode="&#x147;" horiz-adv-x="824" d="M384 837q0 2 5 2h12q1 0 7 -6l63 -52q3 -3 8 0l85 52q2 1 4 2.5t4 2.5l1 1h12q5 0 5 -2q0 -1 -4 -5l-91 -92q-11 -11 -20 -11h-20q-7 0 -9 1.5t-7 9.5l-53 92q-2 3 -2 5zM20 15q0 9 3 10.5t15 1.5h50q40 245 89 514q1 6 4 22.5t5 29.5t2 21q0 3 -5 12t-10 11t-22 2h-50 q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q6 0 53.5 -1.5t58.5 -1.5q13 0 28.5 1.5t16.5 1.5q12 0 20 -13l329 -499q8 -12 16 -12q7 0 39.5 218.5t32.5 263.5q0 12 -2 12h-76q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q11 0 42 -1.5t47 -1.5t44.5 1.5t39.5 1.5q10 0 12 -2.5t2 -15.5 q0 -9 -3 -10.5t-15 -1.5h-42q-6 0 -80 -467q-10 -60 -16 -168q-1 -15 -4 -20t-12 -5t-28 32q-45 73 -118 180l-256 374q-15 21 -16 21q-4 0 -5 -20q0 -3 -17.5 -117t-35 -241.5t-17.5 -165.5q0 -15 3 -15h85q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -50.5 1.5 t-55.5 1.5q-18 0 -52 -1.5t-35 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x148;" horiz-adv-x="515" d="M263 582q0 2 5 2h12q1 0 7 -6l63 -62q3 -3 8 0l85 62q7 6 9 6h12q5 0 5 -2l-4 -6l-91 -104q-11 -12 -20 -12h-20q-7 0 -9 1.5t-7 10.5l-53 104q-2 3 -2 6zM15 287q0 2 29.5 26t72.5 48.5t70 24.5q21 0 21 -21t-6 -55t-12 -57l-19.5 -72.5t-16.5 -62.5q74 131 134.5 199.5 t116.5 68.5q51 0 51 -44q0 -29 -38.5 -145t-38.5 -127q0 -20 19 -20q13 0 34.5 18.5t38 37t17.5 18.5q3 0 7.5 -4.5t4.5 -6.5q0 -5 -24 -31.5t-63.5 -53.5t-72.5 -27q-15 0 -23.5 11.5t-8.5 29.5q0 28 40 135t40 138q0 12 -6 20.5t-16 8.5q-26 0 -79 -66.5t-100 -141.5 q-22 -36 -44 -112q-7 -25 -15 -26q-40 -4 -48 -4q-7 0 -5 10q60 249 60 312q0 18 -13 18q-14 0 -54 -32l-39 -32q-3 0 -8.5 5t-5.5 12z" />
+<glyph unicode="&#x149;" horiz-adv-x="744" d="M244 287q0 2 29.5 26t72.5 48.5t70 24.5q21 0 21 -21t-6 -55t-12 -57l-19.5 -72.5t-16.5 -62.5q74 131 134.5 199.5t116.5 68.5q51 0 51 -44q0 -29 -38.5 -145t-38.5 -127q0 -20 19 -20q13 0 34.5 18.5t38 37t17.5 18.5q3 0 7.5 -4.5t4.5 -6.5q0 -5 -24 -31.5 t-63.5 -53.5t-72.5 -27q-15 0 -23.5 11.5t-8.5 29.5q0 28 40 135t40 138q0 12 -6 20.5t-16 8.5q-26 0 -79 -66.5t-100 -141.5q-22 -36 -44 -112q-7 -25 -15 -26q-40 -4 -48 -4q-7 0 -5 10q60 249 60 312q0 18 -13 18q-14 0 -53 -32l-40 -32q-3 0 -8.5 5t-5.5 12zM60 453 q0 1 16 16t32 35.5t16 35.5q0 13 -10.5 41.5t-10.5 41.5q0 19 18 36.5t29 17.5q10 0 19.5 -31.5t9.5 -53.5q0 -34 -25 -73t-49 -61.5t-28 -22.5q-3 0 -10 7.5t-7 10.5z" />
+<glyph unicode="&#x14a;" horiz-adv-x="824" d="M20 15q0 9 3 10.5t15 1.5h50q40 245 89 514q1 6 4 22.5t5 29.5t2 21q0 3 -5 12t-10 11t-22 2h-50q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q6 0 53.5 -1.5t58.5 -1.5q13 0 28.5 1.5t16.5 1.5q12 0 20 -13l329 -499q8 -12 16 -12q7 0 39.5 218.5t32.5 263.5q0 12 -2 12h-76 q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q11 0 42 -1.5t47 -1.5t44.5 1.5t39.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-42q-5 0 -68 -394l-12 -73q-22 -140 -44 -238q-23 -104 -86 -151q-52 -38 -87 -38q-24 0 -39.5 11t-15.5 23q0 15 10 25.5t25 10.5q18 0 38 -12.5 t37 -12.5q5 0 9 1.5t7 5.5l6 8t6 11.5t5 13t4.5 15.5t4 16.5l4 18t4.5 18.5q29 113 29 138q0 14 -10 30l-341 499q-15 21 -16 21q-4 0 -5 -20q0 -3 -17.5 -117t-35 -241.5t-17.5 -165.5q0 -15 3 -15h85q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -50.5 1.5t-55.5 1.5 q-18 0 -52 -1.5t-35 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x14b;" horiz-adv-x="515" d="M15 287q0 2 29.5 26t72.5 48.5t70 24.5q21 0 21 -21t-6 -55t-12 -57l-19.5 -72.5t-16.5 -62.5q74 131 134.5 199.5t116.5 68.5q51 0 51 -44q0 -49 -97 -408q-30 -109 -86 -151q-52 -38 -87 -38q-24 0 -39.5 11t-15.5 23q0 15 10 25.5t25 10.5q18 0 38 -12.5t37 -12.5 q5 0 9 1.5t7 5.5l6 8t6 11.5t5 13t4.5 15.5t4 16.5l4 18t4.5 18.5q7 30 35 137.5t46 183t18 96.5q0 12 -7 20.5t-17 8.5q-26 0 -79 -66.5t-100 -141.5q-22 -36 -44 -112q-7 -25 -15 -26q-40 -4 -48 -4q-7 0 -5 10q60 249 60 312q0 18 -13 18q-14 0 -54 -32l-39 -32 q-3 0 -8.5 5t-5.5 12z" />
+<glyph unicode="&#x14c;" horiz-adv-x="734" d="M339 788l2 21q1 6 2 7t7 1h181q5 0 6.5 -1t1.5 -6l-2 -23q-5 -8 -8 -8h-181q-7 0 -8.5 1t-0.5 8zM35 280q0 87 32.5 162t85.5 124.5t119.5 78t134.5 28.5q135 0 213.5 -89t78.5 -236q0 -151 -107 -260.5t-258 -109.5q-62 0 -114.5 17.5t-94.5 53t-66 94.5t-24 137z M127 286q0 -116 57 -200t167 -84q75 0 135.5 60t91 144t30.5 167q0 44 -11 89.5t-33.5 87.5t-62.5 68.5t-91 26.5q-71 0 -137 -52.5t-106 -136t-40 -170.5z" />
+<glyph unicode="&#x14d;" horiz-adv-x="419" d="M190 518l2 21q1 6 2 7t7 1h181q6 0 7 -1t1 -6l-2 -23q-5 -8 -8 -8h-181q-7 0 -8.5 1t-0.5 8zM25 138q0 110 66 184.5t165 74.5q71 0 104.5 -50t33.5 -109q0 -94 -68 -170t-161 -76q-67 0 -103.5 42.5t-36.5 103.5zM87 146q0 -130 80 -130q46 0 85.5 47.5t59 107 t19.5 107.5q0 36 -19 66t-67 30q-57 0 -107.5 -78.5t-50.5 -149.5z" />
+<glyph unicode="&#x14e;" horiz-adv-x="734" d="M353 810q0 28 4 28h13q1 0 1 -2q0 -31 15.5 -45t52.5 -14q53 0 77 32q4 6 7.5 13.5l5.5 11.5t3 4h13q-6 -46 -37.5 -77.5t-76.5 -31.5q-41 0 -59.5 23t-18.5 58zM35 280q0 87 32.5 162t85.5 124.5t119.5 78t134.5 28.5q135 0 213.5 -89t78.5 -236q0 -151 -107 -260.5 t-258 -109.5q-62 0 -114.5 17.5t-94.5 53t-66 94.5t-24 137zM127 286q0 -116 57 -200t167 -84q75 0 135.5 60t91 144t30.5 167q0 44 -11 89.5t-33.5 87.5t-62.5 68.5t-91 26.5q-71 0 -137 -52.5t-106 -136t-40 -170.5z" />
+<glyph unicode="&#x14f;" horiz-adv-x="419" d="M206 552q0 32 4 32h13q1 0 1 -3q0 -9 2 -21q9 -49 66 -49q52 0 78 40q4 7 7.5 15.5t5 13t2.5 4.5h13q-6 -53 -37.5 -89t-76.5 -36q-41 0 -59.5 26.5t-18.5 66.5zM25 138q0 110 66 184.5t165 74.5q71 0 104.5 -50t33.5 -109q0 -94 -68 -170t-161 -76q-67 0 -103.5 42.5 t-36.5 103.5zM87 146q0 -130 80 -130q46 0 85.5 47.5t59 107t19.5 107.5q0 36 -19 66t-67 30q-57 0 -107.5 -78.5t-50.5 -149.5z" />
+<glyph unicode="&#x150;" horiz-adv-x="734" d="M355 731l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2zM475 731l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2zM35 280q0 87 32.5 162t85.5 124.5t119.5 78t134.5 28.5q135 0 213.5 -89 t78.5 -236q0 -151 -107 -260.5t-258 -109.5q-62 0 -114.5 17.5t-94.5 53t-66 94.5t-24 137zM127 286q0 -116 57 -200t167 -84q75 0 135.5 60t91 144t30.5 167q0 44 -11 89.5t-33.5 87.5t-62.5 68.5t-91 26.5q-71 0 -137 -52.5t-106 -136t-40 -170.5z" />
+<glyph unicode="&#x151;" horiz-adv-x="419" d="M206 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-5 -6 -8 -6h-15q-4 0 -4 2zM316 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-5 -6 -8 -6h-15q-4 0 -4 2zM25 138q0 110 66 184.5t165 74.5q71 0 104.5 -50t33.5 -109 q0 -94 -68 -170t-161 -76q-67 0 -103.5 42.5t-36.5 103.5zM87 146q0 -130 80 -130q46 0 85.5 47.5t59 107t19.5 107.5q0 36 -19 66t-67 30q-57 0 -107.5 -78.5t-50.5 -149.5z" />
+<glyph unicode="&#x152;" horiz-adv-x="988" d="M35 287q0 166 114 277t270 111q36 0 105 -6.5t98 -6.5q28 0 108.5 1.5t100.5 1.5q55 0 74.5 2.5t20.5 10.5q1 12 13 12q11 0 14 -2t3 -9q0 -4 -4 -41t-5 -84q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 3 36t3 37q0 7 -263 7q-5 0 -41 -270q-2 -12 0 -14t14 -2h164q45 0 47 13 l11 53q1 7 16 7q13 0 13 -6q0 -4 -2.5 -17t-7 -34l-7.5 -36q-7 -39 -15 -89q-1 -7 -13 -7q-17 0 -17 8q1 7 4 23.5t5.5 29t2.5 14.5q0 8 -10 11t-40 3h-151q-9 0 -12 -0.5t-5 -2.5t-3 -7q-3 -13 -19.5 -129t-19.5 -147q0 -9 7 -9l319 7q4 0 10 16.5t14.5 43t13.5 37.5 q4 9 14 9q17 0 17 -11q0 -5 -5.5 -21l-17 -47.5t-19.5 -55.5q-4 -11 -17 -11q-11 0 -179 1.5t-184 1.5q-21 0 -88 -8.5t-119 -8.5q-58 0 -110.5 18t-97 53.5t-70.5 95.5t-26 137zM127 293q0 -111 64 -198.5t165 -87.5q44 0 71.5 3t35 6l27.5 11q60 376 78 537q1 7 2.5 22 l2.5 25t1 13t-20.5 9t-51 11t-53.5 5q-145 0 -233.5 -102t-88.5 -254z" />
+<glyph unicode="&#x153;" horiz-adv-x="669" d="M25 138q0 110 66 184.5t165 74.5q93 0 125 -92q67 86 168 86q93 0 93 -66q0 -43 -35 -77t-88 -54q-65 -24 -141 -24q-8 0 -8 -46q0 -89 96 -89q26 0 52.5 9t46 21.5t35 25.5l25.5 22t11 9q4 0 8.5 -5t4.5 -9q0 -2 -11 -13.5t-32 -28t-47 -32.5t-61 -27.5t-68 -11.5 q-85 0 -116 66q-71 -69 -149 -69q-67 0 -103.5 42.5t-36.5 103.5zM87 146q0 -130 80 -130q46 0 85.5 47.5t59 107t19.5 107.5q0 36 -19 66t-67 30q-57 0 -107.5 -78.5t-50.5 -149.5zM385 200q0 -7 10 -7q74 0 128 36.5t54 96.5q0 19 -14 30t-36 11q-82 0 -128 -122 q-14 -35 -14 -45z" />
+<glyph unicode="&#x154;" horiz-adv-x="625" d="M320 731l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2zM20 13q0 9 3 11.5t15 2.5h41q19 106 47.5 312t35.5 282q0 15 -3 15h-61q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 17 14q1 0 15 -0.5t38.5 -1.5t53.5 -1q15 0 69.5 3.5 t72.5 3.5q87 0 144.5 -45.5t57.5 -116.5q0 -44 -20 -78.5t-48.5 -53t-57 -30t-48.5 -16t-20 -5.5t7.5 -3.5l24.5 -8t34 -12.5q113 -45 113 -164q0 -6 -1.5 -44t-1.5 -54q0 -11 3 -11h43q12 0 16 -2.5t4 -12.5q0 -15 -8 -15q-2 0 -29.5 0.5t-61.5 1.5t-53 1q-7 0 -5 13 q16 94 16 157q0 48 -38 86.5t-97 50.5q-24 5 -71 5h-27q-25 0 -28 -24q-26 -182 -29 -252q0 -9 8 -9h53q8 0 10.5 -2t2.5 -11q0 -11 -2 -14t-9 -3q-11 0 -42.5 1.5t-47.5 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2t-2 14zM204 350q0 -14 18 -14h7q20 0 43.5 -1.5t26.5 -1.5 q53 0 108 50t55 115q0 145 -171 145q-50 0 -50 -5q-3 -25 -18.5 -143t-17.5 -132q-1 -5 -1 -13z" />
+<glyph unicode="&#x155;" horiz-adv-x="341" d="M188 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-5 -6 -8 -6h-15q-4 0 -4 2zM25 291q0 11 50.5 53t79.5 42q18 0 18 -20q0 -17 -27 -176l4 -1q47 121 62 149q29 55 72 55q18 0 32.5 -10t14.5 -26q0 -37 -22 -37q-11 0 -28 9t-27 9q-14 0 -25 -17 q-23 -35 -57 -125q-2 -6 -11 -38q-9 -36 -19.5 -86.5l-13.5 -64.5q-1 -4 -21.5 -7.5t-30.5 -3.5t-10 4q0 2 12 63.5t24 133t12 96.5q0 38 -13 38q-11 0 -27 -12.5t-27.5 -25.5t-12.5 -13q-9 0 -9 11z" />
+<glyph unicode="&#x156;" horiz-adv-x="625" d="M244 -207q0 1 14 8.5t27 21t13 28.5q0 18 -17 34.5t-17 19.5q0 11 19.5 22.5t24.5 11.5q10 0 27 -17.5t17 -30.5q0 -30 -26 -58t-49 -41.5t-26 -13.5q-7 0 -7 13v2zM20 13q0 9 3 11.5t15 2.5h41q19 106 47.5 312t35.5 282q0 15 -3 15h-61q-7 0 -10.5 0.5t-6 4t-2.5 10.5 q0 14 17 14q1 0 15 -0.5t38.5 -1.5t53.5 -1q15 0 69.5 3.5t72.5 3.5q87 0 144.5 -45.5t57.5 -116.5q0 -44 -20 -78.5t-48.5 -53t-57 -30t-48.5 -16t-20 -5.5t7.5 -3.5l24.5 -8t34 -12.5q113 -45 113 -164q0 -6 -1.5 -44t-1.5 -54q0 -11 3 -11h43q12 0 16 -2.5t4 -12.5 q0 -15 -8 -15q-2 0 -29.5 0.5t-61.5 1.5t-53 1q-7 0 -5 13q16 94 16 157q0 48 -38 86.5t-97 50.5q-24 5 -71 5h-27q-25 0 -28 -24q-26 -182 -29 -252q0 -9 8 -9h53q8 0 10.5 -2t2.5 -11q0 -11 -2 -14t-9 -3q-11 0 -42.5 1.5t-47.5 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2t-2 14z M204 350q0 -14 18 -14h7q20 0 43.5 -1.5t26.5 -1.5q53 0 108 50t55 115q0 145 -171 145q-50 0 -50 -5q-3 -25 -18.5 -143t-17.5 -132q-1 -5 -1 -13z" />
+<glyph unicode="&#x157;" horiz-adv-x="341" d="M24 -207q0 1 14 8.5t27 21t13 28.5q0 18 -17 34.5t-17 19.5q0 11 19.5 22.5t24.5 11.5q10 0 27 -17.5t17 -30.5q0 -30 -26 -58t-49 -41.5t-26 -13.5q-7 0 -7 13v2zM25 291q0 11 50.5 53t79.5 42q18 0 18 -20q0 -17 -27 -176l4 -1q47 121 62 149q29 55 72 55 q18 0 32.5 -10t14.5 -26q0 -37 -22 -37q-11 0 -28 9t-27 9q-14 0 -25 -17q-23 -35 -57 -125q-2 -6 -11 -38q-9 -36 -19.5 -86.5l-13.5 -64.5q-1 -4 -21.5 -7.5t-30.5 -3.5t-10 4q0 2 12 63.5t24 133t12 96.5q0 38 -13 38q-11 0 -27 -12.5t-27.5 -25.5t-12.5 -13q-9 0 -9 11z " />
+<glyph unicode="&#x158;" horiz-adv-x="625" d="M249 837q0 2 5 2h12q1 0 7 -6l63 -52q3 -3 8 0l85 52q2 1 4 2.5t3 2.5l2 1h12q5 0 5 -2q0 -1 -4 -5l-91 -92q-11 -11 -20 -11h-20q-7 0 -9 1.5t-7 9.5l-53 92q-2 3 -2 5zM20 13q0 9 3 11.5t15 2.5h41q19 106 47.5 312t35.5 282q0 15 -3 15h-61q-7 0 -10.5 0.5t-6 4 t-2.5 10.5q0 14 17 14q1 0 15 -0.5t38.5 -1.5t53.5 -1q15 0 69.5 3.5t72.5 3.5q87 0 144.5 -45.5t57.5 -116.5q0 -44 -20 -78.5t-48.5 -53t-57 -30t-48.5 -16t-20 -5.5t7.5 -3.5l24.5 -8t34 -12.5q113 -45 113 -164q0 -6 -1.5 -44t-1.5 -54q0 -11 3 -11h43q12 0 16 -2.5 t4 -12.5q0 -15 -8 -15q-2 0 -29.5 0.5t-61.5 1.5t-53 1q-7 0 -5 13q16 94 16 157q0 48 -38 86.5t-97 50.5q-24 5 -71 5h-27q-25 0 -28 -24q-26 -182 -29 -252q0 -9 8 -9h53q8 0 10.5 -2t2.5 -11q0 -11 -2 -14t-9 -3q-11 0 -42.5 1.5t-47.5 1.5t-54 -1.5t-49 -1.5 q-10 0 -12 2t-2 14zM204 350q0 -14 18 -14h7q20 0 43.5 -1.5t26.5 -1.5q53 0 108 50t55 115q0 145 -171 145q-50 0 -50 -5q-3 -25 -18.5 -143t-17.5 -132q-1 -5 -1 -13z" />
+<glyph unicode="&#x159;" horiz-adv-x="341" d="M127 582q0 2 5 2h12q1 0 7 -6l63 -62q3 -3 8 0l85 62q7 6 9 6h12q5 0 5 -2l-4 -6l-91 -104q-11 -12 -20 -12h-20q-7 0 -9 1.5t-7 10.5l-53 104q-2 3 -2 6zM25 291q0 11 50.5 53t79.5 42q18 0 18 -20q0 -17 -27 -176l4 -1q47 121 62 149q29 55 72 55q18 0 32.5 -10 t14.5 -26q0 -37 -22 -37q-11 0 -28 9t-27 9q-14 0 -25 -17q-23 -35 -57 -125q-2 -6 -11 -38q-9 -36 -19.5 -86.5l-13.5 -64.5q-1 -4 -21.5 -7.5t-30.5 -3.5t-10 4q0 2 12 63.5t24 133t12 96.5q0 38 -13 38q-11 0 -27 -12.5t-27.5 -25.5t-12.5 -13q-9 0 -9 11z" />
+<glyph unicode="&#x15a;" horiz-adv-x="505" d="M296 731l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2zM40 67q0 15 17 100q1 3 2.5 11.5t3 15t2.5 7.5t5 1q23 0 23 -10q0 -2 -7.5 -45.5t-7.5 -46.5q0 -18 64.5 -51t122.5 -33q56 0 93 35t37 88q0 42 -31.5 72.5t-76.5 52 l-90 45t-76.5 65t-31.5 99.5q0 86 57.5 141t147.5 55q20 0 41 -6t37.5 -14t30 -16t21.5 -14l8 -6l8 32q2 10 9 10h3q18 -3 18 -7q0 -3 -31 -167q-2 -12 -15 -12q-16 0 -16 12l4 14q4 14 7.5 31t3.5 24q0 2 -6 11.5t-18.5 22.5t-28.5 25t-39.5 20.5t-47.5 8.5 q-57 0 -90.5 -36.5t-33.5 -95.5q0 -39 22.5 -67.5t55.5 -44l72.5 -35t72.5 -39t55.5 -57t22.5 -88.5q0 -85 -66 -136.5t-144 -51.5q-55 0 -106.5 16.5t-77.5 35t-26 28.5z" />
+<glyph unicode="&#x15b;" horiz-adv-x="336" d="M192 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-5 -6 -8 -6h-15q-4 0 -4 2zM20 61q0 11 8.5 18t15.5 7q5 0 8.5 -0.5t7.5 -2t6 -2.5t5.5 -4t5 -4t5.5 -5.5t5 -5.5l13 -13.5l11.5 -12t9.5 -8t12 -6t13 -1.5q30 0 50.5 20t20.5 53q0 20 -22.5 44 t-49.5 42.5t-49.5 46.5t-22.5 56q0 47 39 81.5t92 34.5q31 0 52 -8t30 -20t12 -21t3 -15q0 -17 -18 -17q-29 0 -48 35q-15 27 -32 27q-27 0 -48 -15t-21 -48q0 -26 15 -47.5t36 -37l42.5 -31.5t36.5 -40t15 -54q0 -45 -39 -78.5t-92 -33.5q-46 0 -87 21.5t-41 44.5z" />
+<glyph unicode="&#x15c;" horiz-adv-x="505" d="M202 731q0 1 4 5l91 92q11 11 20 11h20q7 0 9 -1.5t7 -9.5l53 -92q2 -3 2 -5t-5 -2h-12q-1 0 -7 6l-63 52q-3 3 -8 0l-85 -52q-2 -1 -4 -2.5t-4 -2.5l-1 -1h-12q-5 0 -5 2zM40 67q0 15 17 100q1 3 2.5 11.5t3 15t2.5 7.5t5 1q23 0 23 -10q0 -2 -7.5 -45.5t-7.5 -46.5 q0 -18 64.5 -51t122.5 -33q56 0 93 35t37 88q0 42 -31.5 72.5t-76.5 52l-90 45t-76.5 65t-31.5 99.5q0 86 57.5 141t147.5 55q20 0 41 -6t37.5 -14t30 -16t21.5 -14l8 -6l8 32q2 10 9 10h3q18 -3 18 -7q0 -3 -31 -167q-2 -12 -15 -12q-16 0 -16 12l4 14q4 14 7.5 31t3.5 24 q0 2 -6 11.5t-18.5 22.5t-28.5 25t-39.5 20.5t-47.5 8.5q-57 0 -90.5 -36.5t-33.5 -95.5q0 -39 22.5 -67.5t55.5 -44l72.5 -35t72.5 -39t55.5 -57t22.5 -88.5q0 -85 -66 -136.5t-144 -51.5q-55 0 -106.5 16.5t-77.5 35t-26 28.5z" />
+<glyph unicode="&#x15d;" horiz-adv-x="336" d="M110 462l4 6l91 104q11 12 20 12h20q7 0 9 -1.5t7 -10.5l53 -104q2 -3 2 -6q0 -2 -5 -2h-12q-1 0 -7 6l-63 62q-3 3 -8 0l-85 -62q-8 -6 -9 -6h-12q-5 0 -5 2zM20 61q0 11 8.5 18t15.5 7q5 0 8.5 -0.5t7.5 -2t6 -2.5t5.5 -4t5 -4t5.5 -5.5t5 -5.5l13 -13.5l11.5 -12 t9.5 -8t12 -6t13 -1.5q30 0 50.5 20t20.5 53q0 20 -22.5 44t-49.5 42.5t-49.5 46.5t-22.5 56q0 47 39 81.5t92 34.5q31 0 52 -8t30 -20t12 -21t3 -15q0 -17 -18 -17q-29 0 -48 35q-15 27 -32 27q-27 0 -48 -15t-21 -48q0 -26 15 -47.5t36 -37l42.5 -31.5t36.5 -40t15 -54 q0 -45 -39 -78.5t-92 -33.5q-46 0 -87 21.5t-41 44.5z" />
+<glyph unicode="&#x15e;" horiz-adv-x="505" d="M40 67q0 15 17 100q1 3 2.5 11.5t3 15t2.5 7.5t5 1q23 0 23 -10q0 -2 -7.5 -45.5t-7.5 -46.5q0 -18 64.5 -51t122.5 -33q56 0 93 35t37 88q0 42 -31.5 72.5t-76.5 52l-90 45t-76.5 65t-31.5 99.5q0 86 57.5 141t147.5 55q20 0 41 -6t37.5 -14t30 -16t21.5 -14l8 -6l8 32 q2 10 9 10h3q18 -3 18 -7q0 -3 -31 -167q-2 -12 -15 -12q-16 0 -16 12l4 14q4 14 7.5 31t3.5 24q0 2 -6 11.5t-18.5 22.5t-28.5 25t-39.5 20.5t-47.5 8.5q-57 0 -90.5 -36.5t-33.5 -95.5q0 -39 22.5 -67.5t55.5 -44l72.5 -35t72.5 -39t55.5 -57t22.5 -88.5q0 -85 -66 -136.5 t-144 -51.5h-2q-30 -53 -30 -54q0 -2 5 -2q8 2 24 2q35 0 56 -19t21 -45q0 -37 -32 -61.5t-80 -24.5q-22 0 -40.5 6t-26.5 12t-8 9q0 10 8 10l8 -4q8 -3 21 -6.5t27 -3.5q69 0 69 49q0 18 -11 31.5t-36 13.5q-8 0 -16 -1.5t-13.5 -3t-6.5 -1.5q-7 0 -7 4q0 1 49 90 q-50 3 -96.5 19.5t-69.5 33t-23 26.5z" />
+<glyph unicode="&#x15f;" horiz-adv-x="336" d="M20 61q0 11 8.5 18t15.5 7q5 0 8.5 -0.5t7.5 -2t6 -2.5t5.5 -4t5 -4t5.5 -5.5t5 -5.5l13 -13.5l11.5 -12t9.5 -8t12 -6t13 -1.5q30 0 50.5 20t20.5 53q0 20 -22.5 44t-49.5 42.5t-49.5 46.5t-22.5 56q0 47 39 81.5t92 34.5q31 0 52 -8t30 -20t12 -21t3 -15q0 -17 -18 -17 q-29 0 -48 35q-15 27 -32 27q-27 0 -48 -15t-21 -48q0 -26 15 -47.5t36 -37l42.5 -31.5t36.5 -40t15 -54q0 -44 -38 -77.5t-91 -34.5q-34 -59 -34 -62q0 -2 5 -2q8 2 24 2q35 0 56 -19t21 -45q0 -37 -32 -61.5t-80 -24.5q-22 0 -40.5 6t-26.5 12t-8 9q0 10 8 10l8 -4 q8 -3 21 -6.5t27 -3.5q69 0 69 49q0 18 -11 31.5t-36 13.5q-8 0 -16 -1.5t-13.5 -3t-6.5 -1.5q-7 0 -7 4q0 1 10.5 19l24 42.5t19.5 36.5q-42 4 -77 24t-35 41z" />
+<glyph unicode="&#x160;" horiz-adv-x="505" d="M225 837q0 2 5 2h12q1 0 7 -6l63 -52q3 -3 8 0l85 52q2 1 4 2.5t3 2.5l2 1h12q5 0 5 -2q0 -1 -4 -5l-91 -92q-11 -11 -20 -11h-20q-7 0 -9 1.5t-7 9.5l-53 92q-2 3 -2 5zM40 67q0 15 17 100q1 3 2.5 11.5t3 15t2.5 7.5t5 1q23 0 23 -10q0 -2 -7.5 -45.5t-7.5 -46.5 q0 -18 64.5 -51t122.5 -33q56 0 93 35t37 88q0 42 -31.5 72.5t-76.5 52l-90 45t-76.5 65t-31.5 99.5q0 86 57.5 141t147.5 55q20 0 41 -6t37.5 -14t30 -16t21.5 -14l8 -6l8 32q2 10 9 10h3q18 -3 18 -7q0 -3 -31 -167q-2 -12 -15 -12q-16 0 -16 12l4 14q4 14 7.5 31t3.5 24 q0 2 -6 11.5t-18.5 22.5t-28.5 25t-39.5 20.5t-47.5 8.5q-57 0 -90.5 -36.5t-33.5 -95.5q0 -39 22.5 -67.5t55.5 -44l72.5 -35t72.5 -39t55.5 -57t22.5 -88.5q0 -85 -66 -136.5t-144 -51.5q-55 0 -106.5 16.5t-77.5 35t-26 28.5z" />
+<glyph unicode="&#x161;" horiz-adv-x="336" d="M131 582q0 2 5 2h12q1 0 7 -6l63 -62q3 -3 8 0l85 62q7 6 9 6h12q5 0 5 -2l-4 -6l-91 -104q-11 -12 -20 -12h-20q-7 0 -9 1.5t-7 10.5l-53 104q-2 3 -2 6zM20 61q0 11 8.5 18t15.5 7q5 0 8.5 -0.5t7.5 -2t6 -2.5t5.5 -4t5 -4t5.5 -5.5t5 -5.5l13 -13.5l11.5 -12t9.5 -8 t12 -6t13 -1.5q30 0 50.5 20t20.5 53q0 20 -22.5 44t-49.5 42.5t-49.5 46.5t-22.5 56q0 47 39 81.5t92 34.5q31 0 52 -8t30 -20t12 -21t3 -15q0 -17 -18 -17q-29 0 -48 35q-15 27 -32 27q-27 0 -48 -15t-21 -48q0 -26 15 -47.5t36 -37l42.5 -31.5t36.5 -40t15 -54 q0 -45 -39 -78.5t-92 -33.5q-46 0 -87 21.5t-41 44.5z" />
+<glyph unicode="&#x162;" horiz-adv-x="681" d="M20 546q0 1 6 16.5t16.5 46.5l20.5 63q3 9 7 11.5t15 2.5q10 0 10 -12v-5q0 -8 106 -8h326q103 0 104 11q1 14 14 14q11 0 13.5 -2t2.5 -9q0 -8 -1.5 -23t-3.5 -44t-4 -63q0 -10 -19 -10q-8 0 -9.5 2.5t-1.5 11.5q0 2 3 38.5t3 39.5q0 6 -107 6h-106q-9 0 -13 -20 l-27 -188l-37 -262t-17 -122q0 -14 8 -14h64q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-8 0 -107 3q-37 -66 -37 -67q0 -2 5 -2q8 2 24 2q35 0 56 -19t21 -45q0 -37 -32 -61.5t-80 -24.5q-22 0 -40.5 6t-26.5 12t-8 9q0 10 8 10l8 -4q8 -3 21 -6.5t27 -3.5q69 0 69 49 q0 18 -11 31.5t-36 13.5q-8 0 -16 -1.5t-13.5 -3t-6.5 -1.5q-7 0 -7 4q0 1 11.5 21l25.5 45.5t19 35.5q-18 0 -59 -1.5t-46 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h54q10 0 94 569q3 24 3 26q0 11 -6 11h-137q-92 0 -95 -11l-24 -70q-4 -11 -6.5 -14t-9.5 -3 q-19 0 -19 11z" />
+<glyph unicode="&#x163;" horiz-adv-x="284" d="M-17 -190q0 10 8 10l8 -4q8 -3 21 -6.5t27 -3.5q69 0 69 49q0 18 -11 31.5t-36 13.5q-8 0 -16 -1.5t-13.5 -3t-6.5 -1.5q-7 0 -7 4q0 1 11 20l24.5 44l19.5 36q-27 3 -27 34q0 10 26.5 153.5t26.5 145.5v4q1 5 -0.5 6t-8.5 1h-47q-16 0 -16 4q0 1 0.5 9t0.5 10q0 7 8 7 h61q9 0 11 8q10 55 16 101q2 10 4.5 13t13.5 4q5 1 21 1q28 0 28 -5q0 -1 -5.5 -25l-11.5 -51.5t-7 -35.5q-1 -7 0.5 -8.5t9.5 -1.5h73q9 0 9 -8q0 -22 -13 -22h-73h-7t-3.5 -1.5t-1.5 -2.5t-1 -6q-41 -220 -41 -247q0 -21 19 -21q11 0 37 22.5t48.5 45t23.5 22.5 q2 0 8 -4.5t6 -6.5q0 -4 -28 -35t-70 -66t-70 -42q-37 -66 -37 -67q0 -2 5 -2q8 2 24 2q35 0 56 -19t21 -45q0 -37 -32 -61.5t-80 -24.5q-22 0 -40.5 6t-26.5 12t-8 9z" />
+<glyph unicode="&#x164;" horiz-adv-x="681" d="M279 834q0 2 5 2h12q1 0 7 -6l63 -52q3 -3 8 0l85 52q2 1 4 2.5t3 2.5l2 1h12q5 0 5 -2q0 -1 -4 -5l-91 -92q-11 -11 -20 -11h-20q-7 0 -9 1.5t-7 9.5l-53 92q-2 3 -2 5zM20 546q0 1 6 16.5t16.5 46.5l20.5 63q3 9 7 11.5t15 2.5q10 0 10 -12v-5q0 -8 106 -8h326 q103 0 104 11q1 14 14 14q11 0 13.5 -2t2.5 -9q0 -8 -1.5 -23t-3.5 -44t-4 -63q0 -10 -19 -10q-8 0 -9.5 2.5t-1.5 11.5q0 2 3 38.5t3 39.5q0 6 -107 6h-106q-9 0 -13 -20l-27 -188l-37 -262t-17 -122q0 -14 8 -14h64q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3 q-11 0 -57.5 1.5t-62.5 1.5q-17 0 -61 -1.5t-50 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h54q10 0 94 569q3 24 3 26q0 11 -6 11h-137q-92 0 -95 -11l-24 -70q-4 -11 -6.5 -14t-9.5 -3q-19 0 -19 11z" />
+<glyph unicode="&#x165;" horiz-adv-x="284" d="M243 495q0 3 6 25.5l15 57.5l13 51q9 32 34 32q26 0 26 -23q0 -9 -13 -35l-55 -98q-6 -12 -9 -12h-15q-2 0 -2 2zM35 346q0 1 0.5 9t0.5 10q0 7 8 7h61q9 0 11 8q10 55 16 101q2 10 4.5 13t13.5 4q5 1 21 1q28 0 28 -5q0 -1 -5.5 -25l-11.5 -51.5t-7 -35.5 q-1 -7 0.5 -8.5t9.5 -1.5h73q9 0 9 -8q0 -22 -13 -22h-73h-7t-3.5 -1.5t-1.5 -2.5t-1 -6q-41 -220 -41 -247q0 -21 19 -21q11 0 37 22.5t48.5 45t23.5 22.5q2 0 8 -4.5t6 -6.5q0 -4 -31.5 -39t-76.5 -70.5t-72 -35.5q-35 0 -35 34q0 10 26.5 153.5t26.5 145.5v4q1 5 -0.5 6 t-8.5 1h-47q-16 0 -16 4z" />
+<glyph unicode="&#x166;" horiz-adv-x="681" d="M20 546q0 1 6 16.5t16.5 46.5l20.5 63q3 9 7 11.5t15 2.5q10 0 10 -12v-5q0 -8 106 -8h326q103 0 104 11q1 14 14 14q11 0 13.5 -2t2.5 -9q0 -8 -1.5 -23t-3.5 -44t-4 -63q0 -10 -19 -10q-8 0 -9.5 2.5t-1.5 11.5q0 2 3 38.5t3 39.5q0 6 -107 6h-106q-9 0 -13 -20 l-35 -246q-1 -9 0.5 -10.5t10.5 -1.5h158q3 0 3 -12t-3 -12h-160q-10 0 -12 -1.5t-4 -11.5q-39 -273 -39 -277q0 -14 8 -14h64q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5q-17 0 -61 -1.5t-50 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h54 q9 0 53 291q2 8 0.5 10.5t-9.5 2.5h-157q-2 0 -2.5 12t2.5 12h159h7.5t4 2t1.5 3t1 7l34 229q3 24 3 26q0 11 -6 11h-137q-92 0 -95 -11l-24 -70q-4 -11 -6.5 -14t-9.5 -3q-19 0 -19 11z" />
+<glyph unicode="&#x167;" horiz-adv-x="284" d="M22 225q-1 0 -1.5 6t0.5 12t3 6h59q7 0 8.5 1t2.5 6q13 67 13 75v4q1 5 -0.5 6t-8.5 1h-47q-16 0 -16 4q0 1 0.5 9t0.5 10q0 7 8 7h61q9 0 11 8q10 55 16 101q2 10 4.5 13t13.5 4q5 1 21 1q28 0 28 -5q0 -1 -5.5 -25l-11.5 -51.5t-7 -35.5q-1 -7 0.5 -8.5t9.5 -1.5h73 q9 0 9 -8q0 -22 -13 -22h-73h-7t-3.5 -1.5t-1.5 -2.5t-1 -6l-14 -76q-1 -7 6 -7h86q2 0 2 -6t-1.5 -12t-3.5 -6h-87q-7 0 -8 -6v-2q-21 -126 -21 -132q0 -21 19 -21q11 0 37 22.5t48.5 45t23.5 22.5q2 0 8 -4.5t6 -6.5q0 -4 -31.5 -39t-76.5 -70.5t-72 -35.5q-35 0 -35 34 q0 14 32 185q1 6 0 7t-8 1h-56z" />
+<glyph unicode="&#x168;" horiz-adv-x="759" d="M319 745q2 9 11 25q15 25 32.5 38.5t30.5 13.5q15 0 41 -18t39 -18q21 0 40 33q3 7 13 7q6 0 6 -2q-1 -6 -11 -26q-29 -55 -66 -55q-17 0 -41 17.5t-39 17.5q-22 0 -38 -29q-3 -6 -12 -6q-6 0 -6 2zM60 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 52.5 1.5 t47.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-32q-5 0 -23.5 -98.5t-35 -211.5t-16.5 -148q0 -37 15 -64.5t34.5 -40.5t46 -21t40.5 -9t27 -1q42 0 88.5 16t76.5 35q28 19 39 60q12 47 32 163q41 241 48 320h-67q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4 t11.5 0.5q6 0 46.5 -1.5t57.5 -1.5t48 1.5t34 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-32q-8 -38 -22 -118q-62 -378 -95 -490q-7 -25 -19 -25h-5q-9 0 -11 11q-1 10 -2.5 23t-2 19.5t-1.5 13t-2.5 9t-4.5 2.5t-45 -24q-113 -62 -211 -62q-82 0 -137 42.5 t-55 115.5q0 46 33 248.5t33 229.5q0 5 -1 5h-63q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#x169;" horiz-adv-x="521" d="M210 495q2 9 11 25q15 25 32.5 38.5t30.5 13.5q16 0 42 -18t38 -18q21 0 40 33q3 7 13 7q6 0 6 -2q-1 -6 -11 -26q-29 -55 -66 -55q-17 0 -41 17.5t-39 17.5q-22 0 -38 -29q-3 -6 -12 -6q-6 0 -6 2zM15 256q0 2 12 19t32 41.5t38 43.5q31 31 71 31q22 0 38.5 -9t16.5 -27 q0 -13 -32 -132.5t-32 -145.5q0 -23 28 -23q33 0 88 78q72 104 101 199q6 24 12 55q1 4 27 7q15 2 26 3q9 0 9 -9q0 -5 -27.5 -145.5t-27.5 -152.5q0 -25 19 -25q11 0 31 22.5t36 45t17 22.5q8 0 8 -7q0 -6 -22 -40.5t-57 -70.5t-62 -36q-14 0 -23.5 7.5t-9.5 19.5 q0 22 22.5 122.5t26.5 130.5q-1 -3 -10 -22t-26 -50t-33 -55q-104 -158 -173 -158q-55 0 -55 42q0 11 30.5 125.5t30.5 152.5q0 29 -20 29q-11 0 -34 -24.5t-41.5 -49t-20.5 -24.5q-4 0 -9 3t-5 7z" />
+<glyph unicode="&#x16a;" horiz-adv-x="759" d="M327 788l2 21q1 6 2 7t7 1h181q5 0 6.5 -1t1.5 -6l-2 -23q-5 -8 -8 -8h-181q-7 0 -8.5 1t-0.5 8zM60 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 52.5 1.5t47.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-32q-5 0 -23.5 -98.5t-35 -211.5 t-16.5 -148q0 -37 15 -64.5t34.5 -40.5t46 -21t40.5 -9t27 -1q42 0 88.5 16t76.5 35q28 19 39 60q12 47 32 163q41 241 48 320h-67q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 46.5 -1.5t57.5 -1.5t48 1.5t34 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5 t-15.5 -1.5h-32q-8 -38 -22 -118q-62 -378 -95 -490q-7 -25 -19 -25h-5q-9 0 -11 11q-1 10 -2.5 23t-2 19.5t-1.5 13t-2.5 9t-4.5 2.5t-45 -24q-113 -62 -211 -62q-82 0 -137 42.5t-55 115.5q0 46 33 248.5t33 229.5q0 5 -1 5h-63q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#x16b;" horiz-adv-x="521" d="M218 518l2 21q1 6 2 7t7 1h181q6 0 7 -1t1 -6l-2 -23q-5 -8 -8 -8h-181q-7 0 -8.5 1t-0.5 8zM15 256q0 2 12 19t32 41.5t38 43.5q31 31 71 31q22 0 38.5 -9t16.5 -27q0 -13 -32 -132.5t-32 -145.5q0 -23 28 -23q33 0 88 78q72 104 101 199q6 24 12 55q1 4 27 7q15 2 26 3 q9 0 9 -9q0 -5 -27.5 -145.5t-27.5 -152.5q0 -25 19 -25q11 0 31 22.5t36 45t17 22.5q8 0 8 -7q0 -6 -22 -40.5t-57 -70.5t-62 -36q-14 0 -23.5 7.5t-9.5 19.5q0 22 22.5 122.5t26.5 130.5q-1 -3 -10 -22t-26 -50t-33 -55q-104 -158 -173 -158q-55 0 -55 42q0 11 30.5 125.5 t30.5 152.5q0 29 -20 29q-11 0 -34 -24.5t-41.5 -49t-20.5 -24.5q-4 0 -9 3t-5 7z" />
+<glyph unicode="&#x16c;" horiz-adv-x="759" d="M341 810q0 28 4 28h13q1 0 1 -2q0 -31 15.5 -45t52.5 -14q53 0 77 32q4 6 7.5 13.5l5.5 11.5t3 4h13q-6 -46 -37.5 -77.5t-76.5 -31.5q-41 0 -59.5 23t-18.5 58zM60 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 52.5 1.5t47.5 1.5q10 0 12 -2.5t2 -15.5 q0 -9 -3 -10.5t-15 -1.5h-32q-5 0 -23.5 -98.5t-35 -211.5t-16.5 -148q0 -37 15 -64.5t34.5 -40.5t46 -21t40.5 -9t27 -1q42 0 88.5 16t76.5 35q28 19 39 60q12 47 32 163q41 241 48 320h-67q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 46.5 -1.5t57.5 -1.5 t48 1.5t34 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-32q-8 -38 -22 -118q-62 -378 -95 -490q-7 -25 -19 -25h-5q-9 0 -11 11q-1 10 -2.5 23t-2 19.5t-1.5 13t-2.5 9t-4.5 2.5t-45 -24q-113 -62 -211 -62q-82 0 -137 42.5t-55 115.5q0 46 33 248.5t33 229.5 q0 5 -1 5h-63q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#x16d;" horiz-adv-x="521" d="M234 552q0 32 4 32h13q1 0 1 -3q0 -9 2 -21q9 -49 66 -49q52 0 78 40q4 7 7.5 15.5t5 13t2.5 4.5h13q-6 -53 -37.5 -89t-76.5 -36q-41 0 -59.5 26.5t-18.5 66.5zM15 256q0 2 12 19t32 41.5t38 43.5q31 31 71 31q22 0 38.5 -9t16.5 -27q0 -13 -32 -132.5t-32 -145.5 q0 -23 28 -23q33 0 88 78q72 104 101 199q6 24 12 55q1 4 27 7q15 2 26 3q9 0 9 -9q0 -5 -27.5 -145.5t-27.5 -152.5q0 -25 19 -25q11 0 31 22.5t36 45t17 22.5q8 0 8 -7q0 -6 -22 -40.5t-57 -70.5t-62 -36q-14 0 -23.5 7.5t-9.5 19.5q0 22 22.5 122.5t26.5 130.5 q-1 -3 -10 -22t-26 -50t-33 -55q-104 -158 -173 -158q-55 0 -55 42q0 11 30.5 125.5t30.5 152.5q0 29 -20 29q-11 0 -34 -24.5t-41.5 -49t-20.5 -24.5q-4 0 -9 3t-5 7z" />
+<glyph unicode="&#x16e;" horiz-adv-x="759" d="M359 781q0 28 20 48t48 20t48 -20t20 -48t-20 -48t-48 -20t-48 20t-20 48zM387 781q0 -17 11.5 -28.5t28.5 -11.5t28.5 11.5t11.5 28.5t-11.5 28.5t-28.5 11.5t-28.5 -11.5t-11.5 -28.5zM60 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 52.5 1.5t47.5 1.5 q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-32q-5 0 -23.5 -98.5t-35 -211.5t-16.5 -148q0 -37 15 -64.5t34.5 -40.5t46 -21t40.5 -9t27 -1q42 0 88.5 16t76.5 35q28 19 39 60q12 47 32 163q41 241 48 320h-67q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5 q6 0 46.5 -1.5t57.5 -1.5t48 1.5t34 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-32q-8 -38 -22 -118q-62 -378 -95 -490q-7 -25 -19 -25h-5q-9 0 -11 11q-1 10 -2.5 23t-2 19.5t-1.5 13t-2.5 9t-4.5 2.5t-45 -24q-113 -62 -211 -62q-82 0 -137 42.5t-55 115.5 q0 46 33 248.5t33 229.5q0 5 -1 5h-63q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#x16f;" horiz-adv-x="521" d="M250 531q0 28 20 48t48 20t48 -20t20 -48t-20 -48t-48 -20t-48 20t-20 48zM278 531q0 -17 11.5 -28.5t28.5 -11.5t28.5 11.5t11.5 28.5t-11.5 28.5t-28.5 11.5t-28.5 -11.5t-11.5 -28.5zM15 256q0 2 12 19t32 41.5t38 43.5q31 31 71 31q22 0 38.5 -9t16.5 -27 q0 -13 -32 -132.5t-32 -145.5q0 -23 28 -23q33 0 88 78q72 104 101 199q6 24 12 55q1 4 27 7q15 2 26 3q9 0 9 -9q0 -5 -27.5 -145.5t-27.5 -152.5q0 -25 19 -25q11 0 31 22.5t36 45t17 22.5q8 0 8 -7q0 -6 -22 -40.5t-57 -70.5t-62 -36q-14 0 -23.5 7.5t-9.5 19.5 q0 22 22.5 122.5t26.5 130.5q-1 -3 -10 -22t-26 -50t-33 -55q-104 -158 -173 -158q-55 0 -55 42q0 11 30.5 125.5t30.5 152.5q0 29 -20 29q-11 0 -34 -24.5t-41.5 -49t-20.5 -24.5q-4 0 -9 3t-5 7z" />
+<glyph unicode="&#x170;" horiz-adv-x="759" d="M343 731l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2zM463 731l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2zM60 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 52.5 1.5 t47.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-32q-5 0 -23.5 -98.5t-35 -211.5t-16.5 -148q0 -37 15 -64.5t34.5 -40.5t46 -21t40.5 -9t27 -1q42 0 88.5 16t76.5 35q28 19 39 60q12 47 32 163q41 241 48 320h-67q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4 t11.5 0.5q6 0 46.5 -1.5t57.5 -1.5t48 1.5t34 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-32q-8 -38 -22 -118q-62 -378 -95 -490q-7 -25 -19 -25h-5q-9 0 -11 11q-1 10 -2.5 23t-2 19.5t-1.5 13t-2.5 9t-4.5 2.5t-45 -24q-113 -62 -211 -62q-82 0 -137 42.5 t-55 115.5q0 46 33 248.5t33 229.5q0 5 -1 5h-63q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#x171;" horiz-adv-x="521" d="M234 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-5 -6 -8 -6h-15q-4 0 -4 2zM344 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-5 -6 -8 -6h-15q-4 0 -4 2zM15 256q0 2 12 19t32 41.5t38 43.5q31 31 71 31q22 0 38.5 -9t16.5 -27 q0 -13 -32 -132.5t-32 -145.5q0 -23 28 -23q33 0 88 78q72 104 101 199q6 24 12 55q1 4 27 7q15 2 26 3q9 0 9 -9q0 -5 -27.5 -145.5t-27.5 -152.5q0 -25 19 -25q11 0 31 22.5t36 45t17 22.5q8 0 8 -7q0 -6 -22 -40.5t-57 -70.5t-62 -36q-14 0 -23.5 7.5t-9.5 19.5 q0 22 22.5 122.5t26.5 130.5q-1 -3 -10 -22t-26 -50t-33 -55q-104 -158 -173 -158q-55 0 -55 42q0 11 30.5 125.5t30.5 152.5q0 29 -20 29q-11 0 -34 -24.5t-41.5 -49t-20.5 -24.5q-4 0 -9 3t-5 7z" />
+<glyph unicode="&#x172;" horiz-adv-x="759" d="M60 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 52.5 1.5t47.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-32q-5 0 -23.5 -98.5t-35 -211.5t-16.5 -148q0 -37 15 -64.5t34.5 -40.5t46 -21t40.5 -9t27 -1q42 0 88.5 16t76.5 35q28 19 39 60 q12 47 32 163q41 241 48 320h-67q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 46.5 -1.5t57.5 -1.5t48 1.5t34 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-32q-8 -38 -22 -118q-62 -378 -95 -490q-7 -25 -19 -25h-5q-9 0 -11 11q-1 11 -2.5 23.5 t-2 20.5t-1.5 13q-2 8 -3 9t-6 -3q-173 -156 -173 -247q0 -27 13.5 -48.5t40.5 -21.5q20 0 42 11t36 22l14 11q1 0 5 -6t4 -7q0 -3 -19 -19t-55 -34t-72 -18q-32 0 -54 23.5t-22 60.5q0 19 6 38.5t21 41.5l25.5 36.5t35.5 39l34 33t38.5 34t31.5 27.5q-110 -59 -206 -59 q-82 0 -137 42.5t-55 115.5q0 46 33 248.5t33 229.5q0 5 -1 5h-63q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#x173;" horiz-adv-x="521" d="M15 256q0 2 12 19t32 41.5t38 43.5q31 31 71 31q22 0 38.5 -9t16.5 -27q0 -13 -32 -132.5t-32 -145.5q0 -23 28 -23q33 0 88 78q72 104 101 199q6 24 12 55q1 4 27 7q15 2 26 3q9 0 9 -9q0 -5 -27.5 -145.5t-27.5 -152.5q0 -25 19 -25q11 0 31 22.5t36 45t17 22.5 q8 0 8 -7q0 -3 -12 -23.5t-34 -49.5t-43 -48q-8 -7 -28 -23t-31 -28q-81 -85 -81 -152q0 -24 14.5 -44.5t34.5 -20.5t42 11t36 22l14 11q1 0 5 -6t4 -7q0 -3 -19 -19t-55 -34t-72 -18q-30 0 -50.5 26t-20.5 58q0 22 10.5 45.5t33.5 50t40 44t48 45.5q9 9 14 13 q-10 1 -17 9.5t-7 17.5q0 22 22.5 122.5t26.5 130.5q-1 -3 -10 -22t-26 -50t-33 -55q-104 -158 -173 -158q-55 0 -55 42q0 11 30.5 125.5t30.5 152.5q0 29 -20 29q-11 0 -34 -24.5t-41.5 -49t-20.5 -24.5q-4 0 -9 3t-5 7z" />
+<glyph unicode="&#x174;" horiz-adv-x="1010" d="M419 731q0 1 4 5l91 92q11 11 20 11h20q7 0 9 -1.5t7 -9.5l53 -92q2 -3 2 -5t-5 -2h-12q-1 0 -7 6l-63 52q-3 3 -8 0l-85 -52q-2 -1 -4 -2.5t-3 -2.5l-2 -1h-12q-5 0 -5 2zM20 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 52 1.5t47 1.5q10 0 12 -2.5 t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-53q-4 0 -4 -5q0 -26 35.5 -285.5t40.5 -259.5t88 149l139 255q-18 146 -21 146h-43h-5.5t-4 0.5t-4 1.5t-2.5 2.5t-1.5 4t-0.5 6.5q0 7 2 10.5t5 4t11 0.5q6 0 37 -1.5t48 -1.5q16 0 67.5 1.5t59.5 1.5q10 0 12.5 -3t2.5 -15 q0 -9 -3 -10.5t-16 -1.5h-73q-3 0 -3 -19q0 -14 32 -278.5t36 -264.5q3 0 30 49.5l66.5 127l76 149.5l71 141.5t39.5 78.5q4 12 3 14t-9 2h-64q-6 0 -8 0.5t-5 1.5t-4 4t-1 9q0 11 3 13t14 2q1 0 32.5 -1.5t63.5 -1.5q8 0 32 1.5t28 1.5q10 0 12.5 -3t2.5 -15q0 -9 -3 -10.5 t-16 -1.5h-11.5t-8 -0.5t-5.5 -1t-3.5 -2.5t-3 -3.5t-3 -6t-3.5 -7.5q-147 -285 -194 -369l-88 -156q-3 -6 -21.5 -28t-32.5 -44q-22 -33 -37 -33q-8 0 -11.5 10.5t-8.5 50.5q-22 154 -62 394l-195 -350q-3 -6 -21.5 -28t-32.5 -44q-22 -33 -35 -33q-8 0 -11.5 10.5 t-8.5 50.5q-20 147 -55.5 368.5t-40.5 221.5h-40q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#x175;" horiz-adv-x="681" d="M272 462l4 6l91 104q11 12 20 12h20q7 0 9 -1.5t7 -10.5l53 -104q2 -3 2 -6q0 -2 -5 -2h-12q-1 0 -7 6l-63 62q-3 3 -8 0l-85 -62q-8 -6 -9 -6h-12q-5 0 -5 2zM10 302q0 10 50 47t74 37q15 0 45 -18q31 -21 31 -46q0 -30 -6 -85t-12.5 -98t-6.5 -44q0 -13 12.5 -27 t21.5 -14q10 0 22 18l47 68t50 71q13 16 23.5 47t10.5 45q0 12 -20 32q-4 4 -8.5 8t-8 6t-6 4t-3.5 3.5t-1 2.5q0 9 14 22.5t24 13.5q16 0 43.5 -23.5t27.5 -37.5q0 -15 -15 -117t-15 -122q0 -16 13 -29.5t25 -13.5q9 0 30 25q57 66 88 111q44 65 45 141q0 33 -21 33 q-11 0 -30 -3t-33.5 -6t-15.5 -3q-6 0 -6 17q0 4 53.5 15.5t63.5 11.5q20 0 30 -7.5t10 -31.5q0 -57 -48.5 -140t-116.5 -151l-48 -50q-10 -10 -16 -10q-35 0 -58.5 23t-23.5 54q0 4 29 153q-83 -129 -125 -183q-3 -5 -13 -19l-13 -18q-11 -15 -21 -15q-14 0 -41 22 q-22 17 -28.5 28.5t-6.5 36.5q0 13 11 84.5t11 127.5q0 13 -15.5 29.5t-28.5 16.5q-15 0 -34 -14t-32 -28.5t-14 -14.5q-5 0 -9.5 5.5t-4.5 9.5z" />
+<glyph unicode="&#x176;" horiz-adv-x="613" d="M228 731q0 1 4 5l91 92q11 11 20 11h20q7 0 9 -1.5t7 -9.5l53 -92q2 -3 2 -5t-5 -2h-12q-1 0 -7 6l-63 52q-3 3 -8 0l-85 -52q-2 -1 -4 -2.5t-4 -2.5l-1 -1h-12q-5 0 -5 2zM20 654q0 7 2 10.5t5 4t11 0.5q6 0 45 -1.5t56 -1.5q16 0 46.5 1.5t41.5 1.5q10 0 12 -2.5 t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-31q-10 0 -11 -2t3 -13q13 -44 103 -265q6 -12 8 -12q5 0 16 18l35 52l46 68l43 65t34.5 56.5t12.5 29.5v3h-53q-13 0 -15.5 1.5t-2.5 10.5q0 13 2 15.5t12 2.5q11 0 36.5 -1.5t41.5 -1.5q17 0 42.5 1.5t31.5 1.5q11 0 13.5 -2t2.5 -13 q0 -6 -0.5 -9t-3 -4.5t-5 -1.5h-7.5h-36q-2 0 -45.5 -58l-97 -133t-80.5 -116q-5 -9 -8 -22q-44 -260 -44 -270q0 -13 5 -13h63q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -50 1.5t-55 1.5t-49.5 -1.5t-44.5 -1.5q-9 0 -11.5 3t-2.5 13q0 9 3 11.5t15 2.5h42q6 0 30 143 l15 90q5 27 5 41l-146 338h-47q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#x177;" horiz-adv-x="422" d="M169 462l4 6l91 104q11 12 20 12h20q7 0 9 -1.5t7 -10.5l53 -104q2 -3 2 -6q0 -2 -5 -2h-12q-1 0 -7 6l-63 62q-3 3 -8 0l-85 -62q-7 -6 -9 -6h-12q-5 0 -5 2zM-13 -262q0 11 4 19t13 13.5t16.5 8t21 6.5t19.5 6q33 12 54 49q37 69 48 105.5t11 71.5q0 320 -69 320 q-18 0 -37 -15.5t-31 -30.5t-13 -15t-4.5 1t-6.5 3.5t-3 5.5q0 4 16.5 26.5t47.5 46t61 23.5q56 0 75 -86q12 -52 20 -241q1 -6 1 -12l35 64.5t48 94t29 74.5t17 101q1 17 11 17q12 0 24 -7t12 -18q0 -5 -2 -17q-12 -76 -148 -311l-29 -49l-10 -19q-82 -157 -101 -190 q-11 -20 -39 -37q-58 -35 -74 -35q-8 0 -12.5 9t-4.5 18z" />
+<glyph unicode="&#x178;" horiz-adv-x="613" d="M230 785q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM370 785q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM20 654q0 7 2 10.5t5 4t11 0.5q6 0 45 -1.5t56 -1.5q16 0 46.5 1.5 t41.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-31q-10 0 -11 -2t3 -13q13 -44 103 -265q6 -12 8 -12q5 0 16 18l35 52l46 68l43 65t34.5 56.5t12.5 29.5v3h-53q-13 0 -15.5 1.5t-2.5 10.5q0 13 2 15.5t12 2.5q11 0 36.5 -1.5t41.5 -1.5q17 0 42.5 1.5 t31.5 1.5q11 0 13.5 -2t2.5 -13q0 -6 -0.5 -9t-3 -4.5t-5 -1.5h-7.5h-36q-2 0 -45.5 -58l-97 -133t-80.5 -116q-5 -9 -8 -22q-44 -260 -44 -270q0 -13 5 -13h63q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -50 1.5t-55 1.5t-49.5 -1.5t-44.5 -1.5q-9 0 -11.5 3t-2.5 13 q0 9 3 11.5t15 2.5h42q6 0 30 143l15 90q5 27 5 41l-146 338h-47q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#x179;" horiz-adv-x="599" d="M335 731l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2zM35 15q0 7 215 308t215 303q0 3 -24 3h-256q-42 0 -44 -10l-5.5 -28l-6 -32t-2.5 -15q-3 -10 -8 -11h-5q-21 0 -21 7q0 2 4.5 24.5t10.5 56t9 59.5q0 6 16 6q14 0 14 -5v-9 q0 -11 57 -11h348q10 0 13.5 -3t3.5 -12q0 -6 -187 -275q-224 -322 -224 -329q0 -10 11 -10l304 3q15 0 21 15q8 23 23 89q2 8 14 8q20 0 20 -12q0 -2 -6.5 -27l-15 -56.5t-11.5 -43.5q-2 -11 -22 -11q-57 0 -229.5 1.5t-223.5 1.5q-5 0 -6.5 2.5t-1.5 12.5z" />
+<glyph unicode="&#x17a;" horiz-adv-x="414" d="M229 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-4 -6 -8 -6h-15q-4 0 -4 2zM25 2q0 8 4.5 16t15 18.5l11.5 11.5l238 265q5 6 2.5 7t-7.5 -1q-2 0 -3 -0.5t-3 -0.5h-3q-23 0 -75.5 16t-67.5 16q-16 0 -31.5 -12t-25 -24t-10.5 -12q-4 0 -8.5 3 t-4.5 5q0 4 13.5 24t38.5 41t49 21q23 0 84 -22t82 -22q8 0 23 18.5t27 18.5q6 0 10.5 -5t4.5 -11q0 -11 -11 -20.5t-27 -17.5t-21 -14l-220 -244q-4 -5 -5 -6.5t2 -3.5t13 -2q42 -2 120 -8t97 -6q9 0 12 4t3 14v13q-1 14 -1 15q0 6 11 6q9 0 9 -5q1 -14 3 -35.5t3.5 -35 t1.5 -15.5q0 -14 -36 -14h-7q-23 0 -125.5 8t-145.5 8q-4 0 -13 -12t-16 -12q-11 0 -11 12z" />
+<glyph unicode="&#x17b;" horiz-adv-x="599" d="M312 790q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM35 15q0 7 215 308t215 303q0 3 -24 3h-256q-42 0 -44 -10l-5.5 -28l-6 -32t-2.5 -15q-3 -10 -8 -11h-5q-21 0 -21 7q0 2 4.5 24.5t10.5 56t9 59.5q0 6 16 6q14 0 14 -5v-9 q0 -11 57 -11h348q10 0 13.5 -3t3.5 -12q0 -6 -187 -275q-224 -322 -224 -329q0 -10 11 -10l304 3q15 0 21 15q8 23 23 89q2 8 14 8q20 0 20 -12q0 -2 -6.5 -27l-15 -56.5t-11.5 -43.5q-2 -11 -22 -11q-57 0 -229.5 1.5t-223.5 1.5q-5 0 -6.5 2.5t-1.5 12.5z" />
+<glyph unicode="&#x17c;" horiz-adv-x="414" d="M215 540q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM25 2q0 8 4.5 16t15 18.5l11.5 11.5l238 265q5 6 2.5 7t-7.5 -1q-2 0 -3 -0.5t-3 -0.5h-3q-23 0 -75.5 16t-67.5 16q-16 0 -31.5 -12t-25 -24t-10.5 -12q-4 0 -8.5 3 t-4.5 5q0 4 13.5 24t38.5 41t49 21q23 0 84 -22t82 -22q8 0 23 18.5t27 18.5q6 0 10.5 -5t4.5 -11q0 -11 -11 -20.5t-27 -17.5t-21 -14l-220 -244q-4 -5 -5 -6.5t2 -3.5t13 -2q42 -2 120 -8t97 -6q9 0 12 4t3 14v13q-1 14 -1 15q0 6 11 6q9 0 9 -5q1 -14 3 -35.5t3.5 -35 t1.5 -15.5q0 -14 -36 -14h-7q-23 0 -125.5 8t-145.5 8q-4 0 -13 -12t-16 -12q-11 0 -11 12z" />
+<glyph unicode="&#x17d;" horiz-adv-x="599" d="M264 837q0 2 5 2h12q1 0 7 -6l63 -52q3 -3 8 0l85 52q2 1 4 2.5t4 2.5l1 1h12q5 0 5 -2q0 -1 -4 -5l-91 -92q-11 -11 -20 -11h-20q-7 0 -9 1.5t-7 9.5l-53 92q-2 3 -2 5zM35 15q0 7 215 308t215 303q0 3 -24 3h-256q-42 0 -44 -10l-5.5 -28l-6 -32t-2.5 -15 q-3 -10 -8 -11h-5q-21 0 -21 7q0 2 4.5 24.5t10.5 56t9 59.5q0 6 16 6q14 0 14 -5v-9q0 -11 57 -11h348q10 0 13.5 -3t3.5 -12q0 -6 -187 -275q-224 -322 -224 -329q0 -10 11 -10l304 3q15 0 21 15q8 23 23 89q2 8 14 8q20 0 20 -12q0 -2 -6.5 -27l-15 -56.5t-11.5 -43.5 q-2 -11 -22 -11q-57 0 -229.5 1.5t-223.5 1.5q-5 0 -6.5 2.5t-1.5 12.5z" />
+<glyph unicode="&#x17e;" horiz-adv-x="414" d="M168 582q0 2 5 2h12q1 0 7 -6l63 -62q3 -3 8 0l85 62q8 6 9 6h12q5 0 5 -2l-4 -6l-91 -104q-11 -12 -20 -12h-20q-7 0 -9 1.5t-7 10.5l-53 104q-2 3 -2 6zM25 2q0 8 4.5 16t15 18.5l11.5 11.5l238 265q5 6 2.5 7t-7.5 -1q-2 0 -3 -0.5t-3 -0.5h-3q-23 0 -75.5 16 t-67.5 16q-16 0 -31.5 -12t-25 -24t-10.5 -12q-4 0 -8.5 3t-4.5 5q0 4 13.5 24t38.5 41t49 21q23 0 84 -22t82 -22q8 0 23 18.5t27 18.5q6 0 10.5 -5t4.5 -11q0 -11 -11 -20.5t-27 -17.5t-21 -14l-220 -244q-4 -5 -5 -6.5t2 -3.5t13 -2q42 -2 120 -8t97 -6q9 0 12 4t3 14v13 q-1 14 -1 15q0 6 11 6q9 0 9 -5q1 -14 3 -35.5t3.5 -35t1.5 -15.5q0 -14 -36 -14h-7q-23 0 -125.5 8t-145.5 8q-4 0 -13 -12t-16 -12q-11 0 -11 12z" />
+<glyph unicode="&#x17f;" horiz-adv-x="284" d="M-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5q29 179 58 438q9 98 42 157q46 80 101 112q48 28 91 28q24 0 48.5 -12.5t24.5 -23.5q0 -13 -19 -27t-35 -14q-12 0 -37.5 18.5t-43.5 18.5 q-79 0 -110 -263q-31 -255 -61 -432q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5q-24 0 -46 12.5t-22 23.5z" />
+<glyph unicode="&#x218;" horiz-adv-x="505" d="M169 -207q0 1 14 8.5t27 21t13 28.5q0 18 -17 34.5t-17 19.5q0 11 19.5 22.5t24.5 11.5q10 0 27 -17.5t17 -30.5q0 -30 -26 -58t-49 -41.5t-26 -13.5q-7 0 -7 13v2zM40 67q0 15 17 100q1 3 2.5 11.5t3 15t2.5 7.5t5 1q23 0 23 -10q0 -2 -7.5 -45.5t-7.5 -46.5 q0 -18 64.5 -51t122.5 -33q56 0 93 35t37 88q0 42 -31.5 72.5t-76.5 52l-90 45t-76.5 65t-31.5 99.5q0 86 57.5 141t147.5 55q20 0 41 -6t37.5 -14t30 -16t21.5 -14l8 -6l8 32q2 10 9 10h3q18 -3 18 -7q0 -3 -31 -167q-2 -12 -15 -12q-16 0 -16 12l4 14q4 14 7.5 31t3.5 24 q0 2 -6 11.5t-18.5 22.5t-28.5 25t-39.5 20.5t-47.5 8.5q-57 0 -90.5 -36.5t-33.5 -95.5q0 -39 22.5 -67.5t55.5 -44l72.5 -35t72.5 -39t55.5 -57t22.5 -88.5q0 -85 -66 -136.5t-144 -51.5q-55 0 -106.5 16.5t-77.5 35t-26 28.5z" />
+<glyph unicode="&#x219;" horiz-adv-x="336" d="M67 -207q0 1 14 8.5t27 21t13 28.5q0 18 -17 34.5t-17 19.5q0 11 19.5 22.5t24.5 11.5q10 0 27 -17.5t17 -30.5q0 -30 -26 -58t-49 -41.5t-26 -13.5q-7 0 -7 13v2zM20 61q0 11 8.5 18t15.5 7q5 0 8.5 -0.5t7.5 -2t6 -2.5t5.5 -4t5 -4t5.5 -5.5t5 -5.5l13 -13.5l11.5 -12 t9.5 -8t12 -6t13 -1.5q30 0 50.5 20t20.5 53q0 20 -22.5 44t-49.5 42.5t-49.5 46.5t-22.5 56q0 47 39 81.5t92 34.5q31 0 52 -8t30 -20t12 -21t3 -15q0 -17 -18 -17q-29 0 -48 35q-15 27 -32 27q-27 0 -48 -15t-21 -48q0 -26 15 -47.5t36 -37l42.5 -31.5t36.5 -40t15 -54 q0 -45 -39 -78.5t-92 -33.5q-46 0 -87 21.5t-41 44.5z" />
+<glyph unicode="&#x21a;" horiz-adv-x="681" d="M200 -207q0 1 14 8.5t27 21t13 28.5q0 18 -17 34.5t-17 19.5q0 11 19.5 22.5t24.5 11.5q10 0 27 -17.5t17 -30.5q0 -30 -26 -58t-49 -41.5t-26 -13.5q-7 0 -7 13v2zM20 546q0 1 6 16.5t16.5 46.5l20.5 63q3 9 7 11.5t15 2.5q10 0 10 -12v-5q0 -8 106 -8h326q103 0 104 11 q1 14 14 14q11 0 13.5 -2t2.5 -9q0 -8 -1.5 -23t-3.5 -44t-4 -63q0 -10 -19 -10q-8 0 -9.5 2.5t-1.5 11.5q0 2 3 38.5t3 39.5q0 6 -107 6h-106q-9 0 -13 -20l-27 -188l-37 -262t-17 -122q0 -14 8 -14h64q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5 q-17 0 -61 -1.5t-50 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h54q10 0 94 569q3 24 3 26q0 11 -6 11h-137q-92 0 -95 -11l-24 -70q-4 -11 -6.5 -14t-9.5 -3q-19 0 -19 11z" />
+<glyph unicode="&#x21b;" horiz-adv-x="284" d="M15 -207q0 1 14 8.5t27 21t13 28.5q0 18 -17 34.5t-17 19.5q0 11 19.5 22.5t24.5 11.5q10 0 27 -17.5t17 -30.5q0 -30 -26 -58t-49 -41.5t-26 -13.5q-7 0 -7 13v2zM35 346q0 1 0.5 9t0.5 10q0 7 8 7h61q9 0 11 8q10 55 16 101q2 10 4.5 13t13.5 4q5 1 21 1q28 0 28 -5 q0 -1 -5.5 -25l-11.5 -51.5t-7 -35.5q-1 -7 0.5 -8.5t9.5 -1.5h73q9 0 9 -8q0 -22 -13 -22h-73h-7t-3.5 -1.5t-1.5 -2.5t-1 -6q-41 -220 -41 -247q0 -21 19 -21q11 0 37 22.5t48.5 45t23.5 22.5q2 0 8 -4.5t6 -6.5q0 -4 -31.5 -39t-76.5 -70.5t-72 -35.5q-35 0 -35 34 q0 10 26.5 153.5t26.5 145.5v4q1 5 -0.5 6t-8.5 1h-47q-16 0 -16 4z" />
+<glyph unicode="&#x237;" horiz-adv-x="297" d="M-69 -221q0 15 10 25.5t25 10.5q18 0 38 -12.5t37 -12.5q10 0 17.5 7.5t14 26.5t9.5 31.5t9 42.5q19 93 43 242t24 170q0 18 -12 18q-11 0 -35 -22t-43.5 -44.5t-20.5 -22.5q-4 0 -8 3.5t-4 7.5t30 36t71.5 64.5t66.5 32.5q21 0 21 -24q0 -21 -12.5 -103t-27 -167 t-15.5 -92q-7 -45 -14 -73.5t-28.5 -72.5t-53.5 -68q-52 -38 -87 -38q-24 0 -39.5 11t-15.5 23z" />
+<glyph unicode="&#x2bb;" horiz-adv-x="400" d="M152 500q0 30 26 58t49 41.5t26 13.5q7 0 7 -13v-2q0 -1 -14 -8.5t-27 -21t-13 -28.5q0 -18 17 -34.5t17 -19.5q0 -11 -19.5 -22.5t-24.5 -11.5q-10 0 -27 17.5t-17 30.5z" />
+<glyph unicode="&#x2bc;" horiz-adv-x="400" d="M387 495q0 3 6 25.5l15 57.5l13 51q9 32 34 32q26 0 26 -23q0 -9 -13 -35l-55 -98q-6 -12 -9 -12h-15q-2 0 -2 2z" />
+<glyph unicode="&#x2c0;" horiz-adv-x="400" />
+<glyph unicode="&#x2c6;" horiz-adv-x="400" d="M90 462l4 6l91 104q11 12 20 12h20q7 0 9 -1.5t7 -10.5l53 -104q2 -3 2 -6q0 -2 -5 -2h-12q-1 0 -7 6l-63 62q-3 3 -8 0l-85 -62q-8 -6 -9 -6h-12q-5 0 -5 2z" />
+<glyph unicode="&#x2c7;" horiz-adv-x="400" d="M111 582q0 2 5 2h12q1 0 7 -6l63 -62q3 -3 8 0l85 62q7 6 9 6h12q5 0 5 -2l-4 -6l-91 -104q-11 -12 -20 -12h-20q-7 0 -9 1.5t-7 10.5l-53 104q-2 3 -2 6z" />
+<glyph unicode="&#x2c8;" horiz-adv-x="400" />
+<glyph unicode="&#x2d8;" horiz-adv-x="400" d="M116 552q0 32 4 32h13q1 0 1 -3q0 -9 2 -21q9 -49 66 -49q52 0 78 40q4 7 7.5 15.5t5 13t2.5 4.5h13q-6 -53 -37.5 -89t-76.5 -36q-41 0 -59.5 26.5t-18.5 66.5z" />
+<glyph unicode="&#x2d9;" horiz-adv-x="400" d="M158 540q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33z" />
+<glyph unicode="&#x2da;" horiz-adv-x="400" d="M132 531q0 28 20 48t48 20t48 -20t20 -48t-20 -48t-48 -20t-48 20t-20 48zM160 531q0 -17 11.5 -28.5t28.5 -11.5t28.5 11.5t11.5 28.5t-11.5 28.5t-28.5 11.5t-28.5 -11.5t-11.5 -28.5z" />
+<glyph unicode="&#x2db;" horiz-adv-x="400" d="M97 -203q0 31 25 70t50 65t69 68h30q-43 -38 -75 -86.5t-32 -95.5q0 -24 14.5 -44.5t34.5 -20.5t42 11t36 22l14 11q1 0 5 -6t4 -7q0 -3 -19 -19t-55 -34t-72 -18q-30 0 -50.5 26t-20.5 58z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="400" d="M92 495q2 9 11 25q15 25 32.5 38.5t30.5 13.5q16 0 42 -18t38 -18q21 0 40 33q3 7 13 7q6 0 6 -2q-1 -6 -11 -26q-29 -55 -66 -55q-17 0 -41 17.5t-39 17.5q-22 0 -38 -29q-3 -6 -12 -6q-6 0 -6 2z" />
+<glyph unicode="&#x2dd;" horiz-adv-x="400" d="M116 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-5 -6 -8 -6h-15q-4 0 -4 2zM226 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-5 -6 -8 -6h-15q-4 0 -4 2z" />
+<glyph unicode="&#x300;" horiz-adv-x="0" d="M-272 575q0 31 34 31q21 0 26 -24l26 -125v-3l1 -3q0 -2 -4 -2h-15q-4 0 -7 6l-57 107q-4 7 -4 13z" />
+<glyph unicode="&#x301;" horiz-adv-x="0" d="M-228 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-5 -6 -8 -6h-15q-4 0 -4 2z" />
+<glyph unicode="&#x302;" horiz-adv-x="0" d="M-310 462l4 6l91 104q11 12 20 12h20q7 0 9 -1.5t7 -10.5l53 -104q2 -3 2 -6q0 -2 -5 -2h-12q-1 0 -7 6l-63 62q-3 3 -8 0l-85 -62q-8 -6 -9 -6h-12q-5 0 -5 2z" />
+<glyph unicode="&#x303;" horiz-adv-x="0" d="M-308 495q2 9 11 25q15 25 32.5 38.5t30.5 13.5q16 0 42 -18t38 -18q21 0 40 33q3 7 13 7q6 0 6 -2q-1 -6 -11 -26q-29 -55 -66 -55q-17 0 -41 17.5t-39 17.5q-22 0 -38 -29q-3 -6 -12 -6q-6 0 -6 2z" />
+<glyph unicode="&#x304;" horiz-adv-x="0" d="M-300 518l2 21q1 6 2 7t7 1h181q6 0 7 -1t1 -6l-2 -23q-5 -8 -8 -8h-181q-7 0 -8.5 1t-0.5 8z" />
+<glyph unicode="&#x306;" horiz-adv-x="0" d="M-284 552q0 32 4 32h13q1 0 1 -3q0 -9 2 -21q9 -49 66 -49q52 0 78 40q4 7 7.5 15.5t5 13t2.5 4.5h13q-6 -53 -37.5 -89t-76.5 -36q-41 0 -59.5 26.5t-18.5 66.5z" />
+<glyph unicode="&#x307;" horiz-adv-x="0" d="M-242 540q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33z" />
+<glyph unicode="&#x308;" horiz-adv-x="0" d="M-311 535q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM-171 535q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33z" />
+<glyph unicode="&#x30a;" horiz-adv-x="0" d="M-268 531q0 28 20 48t48 20t48 -20t20 -48t-20 -48t-48 -20t-48 20t-20 48zM-240 531q0 -17 11.5 -28.5t28.5 -11.5t28.5 11.5t11.5 28.5t-11.5 28.5t-28.5 11.5t-28.5 -11.5t-11.5 -28.5z" />
+<glyph unicode="&#x30b;" horiz-adv-x="0" d="M-284 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-5 -6 -8 -6h-15q-4 0 -4 2zM-174 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-5 -6 -8 -6h-15q-4 0 -4 2z" />
+<glyph unicode="&#x30c;" horiz-adv-x="0" d="M-289 582q0 2 5 2h12q1 0 7 -6l63 -62q3 -3 8 0l85 62q7 6 9 6h12q5 0 5 -2l-4 -6l-91 -104q-11 -12 -20 -12h-20q-7 0 -9 1.5t-7 10.5l-53 104q-2 3 -2 6z" />
+<glyph unicode="&#x312;" horiz-adv-x="0" d="M-248 500q0 30 26 58t49 41.5t26 13.5q7 0 7 -13v-2q0 -1 -14 -8.5t-27 -21t-13 -28.5q0 -18 17 -34.5t17 -19.5q0 -11 -19.5 -22.5t-24.5 -11.5q-10 0 -27 17.5t-17 30.5z" />
+<glyph unicode="&#x315;" horiz-adv-x="0" d="M-13 495q0 3 6 25.5l15 57.5l13 51q9 32 34 32q26 0 26 -23q0 -9 -13 -35l-55 -98q-6 -12 -9 -12h-15q-2 0 -2 2z" />
+<glyph unicode="&#x326;" horiz-adv-x="0" d="M-259 -207q0 1 14 8.5t27 21t13 28.5q0 18 -17 34.5t-17 19.5q0 11 19.5 22.5t24.5 11.5q10 0 27 -17.5t17 -30.5q0 -30 -26 -58t-49 -41.5t-26 -13.5q-7 0 -7 13v2z" />
+<glyph unicode="&#x327;" horiz-adv-x="0" d="M-291 -190q0 10 8 10l8 -4q8 -3 21 -6.5t27 -3.5q69 0 69 49q0 18 -11 31.5t-36 13.5q-8 0 -16 -1.5t-13.5 -3t-6.5 -1.5q-7 0 -7 4q0 1 11.5 21l25.5 45.5t19 35.5h19q-37 -66 -37 -67q0 -2 5 -2q8 2 24 2q35 0 56 -19t21 -45q0 -37 -32 -61.5t-80 -24.5q-22 0 -40.5 6 t-26.5 12t-8 9z" />
+<glyph unicode="&#x328;" horiz-adv-x="0" d="M-303 -203q0 31 25 70t50 65t69 68h30q-43 -38 -75 -86.5t-32 -95.5q0 -24 14.5 -44.5t34.5 -20.5t42 11t36 22l14 11q1 0 5 -6t4 -7q0 -3 -19 -19t-55 -34t-72 -18q-30 0 -50.5 26t-20.5 58z" />
+<glyph unicode="&#x1e02;" horiz-adv-x="571" d="M273 790q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM20 15q0 9 3 10.5t15 1.5h43q78 514 82 595q1 9 -1 11.5t-9 2.5h-55q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l51 -1q50 -2 71 -2q16 0 60.5 1.5t49.5 1.5 q198 0 198 -149q0 -29 -10.5 -54.5t-27.5 -43t-38 -32t-41.5 -23t-37.5 -14.5t-28 -9l-10 -3l20 -3q21 -2 50 -11.5t58 -26t49.5 -51t20.5 -80.5q0 -168 -289 -168q-11 0 -47.5 1.5t-52.5 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5zM166 48q0 -10 6 -13t25 -4h3 q14 -1 45 -1q92 0 145.5 37.5t53.5 113.5q0 71 -50.5 106.5t-131.5 35.5h-31q-19 0 -23 -2t-6 -10q-8 -36 -35 -251q-1 -5 -1 -12zM208 364q-2 -17 2 -19q3 -1 10 -1h16h21t20.5 -0.5t9.5 -0.5q21 0 55 17q100 51 100 141q0 62 -41 99t-110 37h-16q-16 0 -22 -5.5t-10 -25.5 q-9 -56 -35 -242z" />
+<glyph unicode="&#x1e03;" horiz-adv-x="453" d="M156 790q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM25 12q0 4 13 23q5 7 8 19q30 158 58.5 349t28.5 220q0 7 -7 7q-4 0 -41 -11t-41 -11q-9 0 -9 25q0 10 5 11q155 38 164 38q12 0 12 -10q0 -6 -17.5 -117.5t-22.5 -140.5 l-49 -251q51 85 87 133q38 51 64.5 71.5t71.5 20.5q41 0 64 -23q14 -14 14 -42q0 -72 -28.5 -137t-69.5 -106t-84 -64.5t-76 -23.5q-20 0 -40 7t-32.5 14t-15.5 7q-4 0 -20 -8q-20 -8 -27 -8q-10 0 -10 8zM112 80q0 -25 17 -42.5t51 -17.5q41 0 84.5 51t69 112.5t25.5 98.5 q0 23 -10 41t-32 18q-41 0 -83 -59l-48.5 -68l-36.5 -54.5t-28.5 -49t-8.5 -30.5z" />
+<glyph unicode="&#x1e0a;" horiz-adv-x="742" d="M314 790q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM19 10q0 11 3 13t14 2h43q5 0 42.5 261.5t45.5 338.5q2 11 -4 11l-70 -2q-5 0 -7.5 0.5t-4 3t-1.5 8.5v6t0.5 4.5t2 3.5t4 1.5t6.5 0.5h24t51.5 -0.5t43.5 -0.5 q33 0 75.5 1t56.5 1q165 0 261.5 -80t96.5 -248q0 -158 -102 -247.5t-248 -91.5q-32 0 -112 2t-113 2q-16 0 -55 -2t-42 -2q-8 0 -9.5 2t-1.5 12zM171 46q0 -13 6 -17t59 -4q97 0 170 27t111 64t61.5 88t29.5 87.5t6 73.5q0 123 -74.5 196.5t-223.5 73.5q-49 0 -63 -4 l-9 -56l-20 -137.5l-24 -165t-20.5 -148.5t-8.5 -78z" />
+<glyph unicode="&#x1e0b;" horiz-adv-x="473" d="M386 790q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM25 74q0 34 14.5 83.5t40 100t68 86t92.5 35.5q17 0 33.5 -3t25 -6.5t18 -8.5t10.5 -5q9 -4 12 -2t5 12q6 31 15 91.5l15.5 107t6.5 47.5q5 17 -4 17q-2 0 -44 -10.5 t-45 -10.5q-5 0 -3 21q1 8 2.5 9.5t7.5 3.5q39 8 76 17.5t55 14.5t20 5q11 0 11 -15q0 -3 -50 -288t-50 -316q0 -15 13 -15t35.5 18.5t39.5 36.5t18 18q3 0 6.5 -3t3.5 -5q0 -5 -22 -32t-61.5 -56t-75.5 -29q-12 0 -19.5 9.5t-7.5 25.5q0 18 10.5 70.5t20.5 95.5l10 43 q-38 -72 -89 -139l-30.5 -39t-29 -30.5t-37 -25t-40.5 -7.5q-10 0 -19.5 2t-24.5 9t-24 24t-9 43zM91 102q0 -56 46 -56q41 0 138 140q54 82 54 118q0 14 -29 33.5t-60 19.5q-41 0 -77 -49t-54 -107t-18 -99z" />
+<glyph unicode="&#x1e1e;" horiz-adv-x="541" d="M302 790q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM20 15q0 9 3 10.5t15 1.5h43q83 519 83 599q0 10 -3 10h-55q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l47 -1q46 -2 67 -2q28 0 108.5 1.5t100.5 1.5q49 0 58 2t11 11 q1 12 13 12q11 0 14 -2t3 -9q0 -4 -4 -41t-5 -84q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 3 36t3 37q0 7 -237 7q-5 0 -41 -270q-2 -8 -0.5 -11.5t3.5 -4t11 -0.5h156q45 0 47 13l8 43q1 7 16 7q13 0 13 -6q0 -1 -14 -77q-3 -14 -5.5 -30.5t-4.5 -31t-2 -17.5q-1 -7 -13 -7 q-17 0 -17 8q9 54 9 57q0 8 -10 11t-40 3h-143q-9 0 -12 -0.5t-5 -2.5t-3 -7q-2 -13 -18.5 -130.5t-20.5 -148.5q-2 -9 8 -9h65q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -47.5 1.5t-52.5 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x1e1f;" horiz-adv-x="284" d="M309 789q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6 q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q9 98 42 157q46 80 101 112q48 28 91 28q24 0 48.5 -12.5t24.5 -23.5q0 -13 -19 -27t-35 -14q-12 0 -37.5 18.5t-43.5 18.5q-75 0 -109 -254q-1 -6 -1 -9q-1 -3 2 -4.5t6 -1.5h82q5 0 5 -2q0 -8 -2 -14q-2 -9 -7 -9h-80q-7 0 -7.5 -1 t-2.5 -10q-2 -11 -13 -91l-23.5 -164.5l-20.5 -134.5q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5q-24 0 -46 12.5t-22 23.5z" />
+<glyph unicode="&#x1e22;" horiz-adv-x="795" d="M412 790q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM20 13q0 9 3 11.5t15 2.5h53q7 0 48 282t41 314q0 16 -9 16h-61q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5q6 0 47.5 -1.5t58.5 -1.5q16 0 53 1.5t48 1.5q10 0 12 -2.5 t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-50q-8 0 -47 -270q-2 -11 -0.5 -15t12.5 -4h332q8 0 11 0.5t5.5 3t3.5 8.5q30 232 30 261q0 16 -9 16h-61q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5q6 0 48 -1.5t59 -1.5q16 0 52.5 1.5t47.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5 t-15.5 -1.5h-50q-10 0 -47 -288.5t-37 -310.5q0 -13 8 -13h57q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -54.5 1.5t-59.5 1.5t-50 -1.5t-45 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h53q5 0 44 287q1 8 -1.5 10t-13.5 2h-334q-9 0 -12.5 -3t-4.5 -13 q-32 -235 -32 -270q0 -13 8 -13h59q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -54 1.5t-59 1.5t-53.5 -1.5t-48.5 -1.5q-9 0 -11.5 3t-2.5 13z" />
+<glyph unicode="&#x1e23;" horiz-adv-x="468" d="M156 790q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM25 6q0 2 7 33.5t18 88l23.5 127t26 168.5t23.5 196q2 19 -4 19q-10 0 -49 -14l-38 -13q-3 0 -3 14q0 13 7 16q30 11 83 22.5t72 11.5q6 0 6 -15q-5 -101 -93 -537 q47 110 115 192q56 68 124 68q26 0 42.5 -12t16.5 -36q0 -37 -33.5 -147.5t-33.5 -120.5q0 -22 21 -22q11 0 34 21.5t41.5 43.5t19.5 22q2 0 7 -4t5 -6q0 -5 -22 -33.5t-60.5 -58.5t-72.5 -30q-18 0 -29.5 10.5t-11.5 27.5q0 14 36.5 127.5t36.5 141.5q0 17 -9 28t-25 11 q-33 0 -66.5 -40t-74.5 -107q-46 -77 -54 -108l-20 -82q-2 -11 -58 -11q-8 0 -8 8z" />
+<glyph unicode="&#x1e40;" horiz-adv-x="883" d="M465 790q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM20 15q0 9 3 10.5t15 1.5h48l46 207.5l61 273t26 123.5q0 8 -25 8h-46q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q6 0 50 -1.5t55 -1.5q13 0 29.5 1.5t17.5 1.5q17 0 20 -13 l101 -509q5 -24 10 -24t16 24q168 351 252 505q8 14 21 14h44q16 0 45 1.5t40 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-46l-7 -59l-15.5 -143l-19 -172.5t-16 -155.5t-6.5 -82h77q8 0 10.5 -2t2.5 -11q0 -11 -2 -14t-9 -3q-11 0 -58.5 1.5t-63.5 1.5 q-18 0 -56 -1.5t-40 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h39q21 3 80 594q-188 -358 -253 -497q-9 -20 -19.5 -33t-26.5 -30t-29 -34q-10 -12 -16 -12q-13 0 -16 21q-12 72 -39.5 217l-49.5 255l-22 109q-32 -121 -56 -240q-63 -303 -63 -350h65q8 0 9.5 -2 t1.5 -11q0 -11 -2 -14t-9 -3q-2 0 -36 1.5t-52 1.5q-17 0 -42 -1.5t-30 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x1e41;" horiz-adv-x="739" d="M429 540q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM15 255q0 11 69 64.5t101 53.5q18 0 18 -19q0 -28 -5 -63.5t-16 -95.5t-14 -78q114 262 225 262q16 0 25 -14t9 -33q0 -82 -57 -251q2 4 20 37.5l29.5 53.5l32.5 55.5 t39.5 57.5t41 46t45.5 36t45 12q51 0 51 -34q0 -28 -36.5 -141t-36.5 -131q0 -24 18 -24q12 0 53 41l40 41q3 0 7.5 -5t4.5 -7q0 -4 -28.5 -33.5t-69 -59.5t-65.5 -30q-15 0 -25 8.5t-10 20.5q0 17 39 136.5t39 152.5q0 8 -5.5 15t-15.5 7q-39 0 -125 -133q-64 -98 -90 -188 q-3 -10 -14 -12q-24 -3 -42 -3q-8 0 -8 7l29 110q29 110 29 179q0 37 -21 37q-18 0 -37 -25q-63 -76 -108 -167q-17 -34 -41 -118q-5 -17 -11 -20q-36 -14 -49 -14q-7 0 -5 10q12 51 28.5 151.5t16.5 145.5q0 17 -14 17q-11 0 -33.5 -18.5t-41 -37.5t-19.5 -19q-12 0 -12 17 z" />
+<glyph unicode="&#x1e56;" horiz-adv-x="570" d="M283 790q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM20 15q0 9 3 10.5t15 1.5h43q83 569 83 599q0 10 -3 10h-55q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l44 -1q44 -2 65 -2q16 0 63 2.5t54 2.5q99 0 154.5 -47.5 t55.5 -123.5q0 -44 -14.5 -78.5t-38 -55.5t-56 -35t-65.5 -19.5t-70 -5.5q-16 0 -44.5 1t-31.5 1q-16 0 -18 -9q-9 -48 -33 -259q-2 -9 8 -9h65q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -47.5 1.5t-52.5 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5zM202 335 q0 -12 31 -12q59 0 107.5 15.5t83 54.5t34.5 97q0 74 -42.5 113.5t-124.5 39.5q-44 0 -45 -5q-22 -138 -42 -284q-2 -18 -2 -19z" />
+<glyph unicode="&#x1e57;" horiz-adv-x="486" d="M295 540q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM10 225l11 18.5t29.5 40.5t44 51.5t51 41t55.5 18.5q17 0 17 -31q0 -21 -8 -79t-16 -106l-8 -48q43 107 100 194q37 57 99 57q44 0 60 -23.5t16 -67.5q0 -110 -74 -204 t-151 -94q-11 0 -32 3.5t-24 3.5q-12 0 -13 -8l-32 -209q-5 -23 9 -24q16 -2 40 -4q14 -1 19.5 -1.5t11 -2t7 -4t1.5 -6.5q0 -14 -4.5 -17.5t-15.5 -3.5q-1 0 -27 3.5t-67.5 7t-79.5 3.5q-17 0 -17 10q0 14 3.5 18t15.5 4h16q12 0 16 3.5t6 17.5q47 272 62.5 371t15.5 146 q0 18 -12 18q-15 0 -41 -28t-46.5 -56t-21.5 -28q-4 0 -10 5.5t-6 9.5zM181 51q0 -32 64 -32q33 0 69.5 42.5t60.5 103.5t24 113q0 64 -44 64q-15 0 -29.5 -9.5t-29 -30t-22.5 -34t-22 -41.5l-16 -32q-55 -105 -55 -144z" />
+<glyph unicode="&#x1e60;" horiz-adv-x="505" d="M273 790q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM40 67q0 15 17 100q1 3 2.5 11.5t3 15t2.5 7.5t5 1q23 0 23 -10q0 -2 -7.5 -45.5t-7.5 -46.5q0 -18 64.5 -51t122.5 -33q56 0 93 35t37 88q0 42 -31.5 72.5t-76.5 52 l-90 45t-76.5 65t-31.5 99.5q0 86 57.5 141t147.5 55q20 0 41 -6t37.5 -14t30 -16t21.5 -14l8 -6l8 32q2 10 9 10h3q18 -3 18 -7q0 -3 -31 -167q-2 -12 -15 -12q-16 0 -16 12l4 14q4 14 7.5 31t3.5 24q0 2 -6 11.5t-18.5 22.5t-28.5 25t-39.5 20.5t-47.5 8.5 q-57 0 -90.5 -36.5t-33.5 -95.5q0 -39 22.5 -67.5t55.5 -44l72.5 -35t72.5 -39t55.5 -57t22.5 -88.5q0 -85 -66 -136.5t-144 -51.5q-55 0 -106.5 16.5t-77.5 35t-26 28.5z" />
+<glyph unicode="&#x1e61;" horiz-adv-x="336" d="M178 540q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM20 61q0 11 8.5 18t15.5 7q5 0 8.5 -0.5t7.5 -2t6 -2.5t5.5 -4t5 -4t5.5 -5.5t5 -5.5l13 -13.5l11.5 -12t9.5 -8t12 -6t13 -1.5q30 0 50.5 20t20.5 53q0 20 -22.5 44 t-49.5 42.5t-49.5 46.5t-22.5 56q0 47 39 81.5t92 34.5q31 0 52 -8t30 -20t12 -21t3 -15q0 -17 -18 -17q-29 0 -48 35q-15 27 -32 27q-27 0 -48 -15t-21 -48q0 -26 15 -47.5t36 -37l42.5 -31.5t36.5 -40t15 -54q0 -45 -39 -78.5t-92 -33.5q-46 0 -87 21.5t-41 44.5z" />
+<glyph unicode="&#x1e6a;" horiz-adv-x="681" d="M330 774q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM20 546q0 1 6 16.5t16.5 46.5l20.5 63q3 9 7 11.5t15 2.5q10 0 10 -12v-5q0 -8 106 -8h326q103 0 104 11q1 14 14 14q11 0 13.5 -2t2.5 -9q0 -8 -1.5 -23t-3.5 -44t-4 -63 q0 -10 -19 -10q-8 0 -9.5 2.5t-1.5 11.5q0 2 3 38.5t3 39.5q0 6 -107 6h-106q-9 0 -13 -20l-27 -188l-37 -262t-17 -122q0 -14 8 -14h64q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5q-17 0 -61 -1.5t-50 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5 t15 1.5h54q10 0 94 569q3 24 3 26q0 11 -6 11h-137q-92 0 -95 -11l-24 -70q-4 -11 -6.5 -14t-9.5 -3q-19 0 -19 11z" />
+<glyph unicode="&#x1e6b;" horiz-adv-x="284" d="M136 580q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM35 346q0 1 0.5 9t0.5 10q0 7 8 7h61q9 0 11 8q10 55 16 101q2 10 4.5 13t13.5 4q5 1 21 1q28 0 28 -5q0 -1 -5.5 -25l-11.5 -51.5t-7 -35.5q-1 -7 0.5 -8.5t9.5 -1.5h73 q9 0 9 -8q0 -22 -13 -22h-73h-7t-3.5 -1.5t-1.5 -2.5t-1 -6q-41 -220 -41 -247q0 -21 19 -21q11 0 37 22.5t48.5 45t23.5 22.5q2 0 8 -4.5t6 -6.5q0 -4 -31.5 -39t-76.5 -70.5t-72 -35.5q-35 0 -35 34q0 10 26.5 153.5t26.5 145.5v4q1 5 -0.5 6t-8.5 1h-47q-16 0 -16 4z" />
+<glyph unicode="&#x2000;" horiz-adv-x="500" />
+<glyph unicode="&#x2001;" horiz-adv-x="1000" />
+<glyph unicode="&#x2002;" horiz-adv-x="500" />
+<glyph unicode="&#x2003;" horiz-adv-x="1000" />
+<glyph unicode="&#x2004;" horiz-adv-x="333" />
+<glyph unicode="&#x2005;" horiz-adv-x="250" />
+<glyph unicode="&#x2006;" horiz-adv-x="166" />
+<glyph unicode="&#x2007;" horiz-adv-x="500" />
+<glyph unicode="&#x2008;" horiz-adv-x="210" />
+<glyph unicode="&#x2009;" horiz-adv-x="166" />
+<glyph unicode="&#x200a;" horiz-adv-x="100" />
+<glyph unicode="&#x200b;" horiz-adv-x="0" />
+<glyph unicode="&#x200c;" horiz-adv-x="0" />
+<glyph unicode="&#x200d;" horiz-adv-x="0" />
+<glyph unicode="&#x200e;" horiz-adv-x="0" />
+<glyph unicode="&#x200f;" horiz-adv-x="0" />
+<glyph unicode="&#x2010;" horiz-adv-x="268" d="M30 201q0 12 6 25.5t12 14.5t91.5 4t91.5 3q2 0 2 -9q0 -33 -8 -33q-104 -8 -191 -8q-4 0 -4 3z" />
+<glyph unicode="&#x2011;" horiz-adv-x="268" d="M30 201q0 12 6 25.5t12 14.5t91.5 4t91.5 3q2 0 2 -9q0 -33 -8 -33q-104 -8 -191 -8q-4 0 -4 3z" />
+<glyph unicode="&#x2012;" horiz-adv-x="500" d="M98 201q0 12 6 25.5t12 14.5t141 4t143 3q2 0 2 -9q0 -33 -8 -33q-9 -1 -145 -4.5t-147 -3.5q-4 0 -4 3z" />
+<glyph unicode="&#x2013;" horiz-adv-x="500" d="M10 195q0 12 2 14.5t11 2.5h451q11 0 13.5 -2t2.5 -10v-12q0 -9 -2.5 -11t-13.5 -2h-444q-15 0 -17.5 2.5t-2.5 17.5z" />
+<glyph unicode="&#x2014;" horiz-adv-x="750" d="M10 195q0 12 2 14.5t11 2.5h701q11 0 13.5 -2t2.5 -10v-12q0 -9 -2.5 -11t-13.5 -2h-694q-15 0 -17.5 2.5t-2.5 17.5z" />
+<glyph unicode="&#x2015;" horiz-adv-x="750" d="M10 195q0 12 2 14.5t11 2.5h701q11 0 13.5 -2t2.5 -10v-12q0 -9 -2.5 -11t-13.5 -2h-694q-15 0 -17.5 2.5t-2.5 17.5z" />
+<glyph unicode="&#x2018;" horiz-adv-x="229" d="M70 520q0 34 25 73t49 61.5t28 22.5q3 0 10 -7.5t7 -10.5q0 -1 -16 -16t-32 -35.5t-16 -35.5q0 -13 10.5 -41.5t10.5 -41.5q0 -19 -18 -36.5t-29 -17.5q-10 0 -19.5 31.5t-9.5 53.5z" />
+<glyph unicode="&#x2019;" horiz-adv-x="249" d="M60 453q0 1 16 16t32 35.5t16 35.5q0 13 -10.5 41.5t-10.5 41.5q0 19 18 36.5t29 17.5q10 0 19.5 -31.5t9.5 -53.5q0 -34 -25 -73t-49 -61.5t-28 -22.5q-3 0 -10 7.5t-7 10.5z" />
+<glyph unicode="&#x201a;" horiz-adv-x="249" d="M60 -112q0 1 16 16t32 35.5t16 35.5q0 13 -10.5 41.5t-10.5 41.5q0 19 18 36.5t29 17.5q10 0 19.5 -31.5t9.5 -53.5q0 -34 -25 -73t-49 -61.5t-28 -22.5q-3 0 -10 7.5t-7 10.5z" />
+<glyph unicode="&#x201b;" horiz-adv-x="249" d="M70 592q0 22 9.5 53.5t19.5 31.5q11 0 29 -17.5t18 -36.5q0 -13 -10.5 -41.5t-10.5 -41.5q0 -15 16 -35.5t32 -35.5t16 -16q0 -3 -7 -10.5t-10 -7.5q-4 0 -28 22.5t-49 61.5t-25 73z" />
+<glyph unicode="&#x201c;" horiz-adv-x="414" d="M70 520q0 34 25 73t49 61.5t28 22.5q3 0 10 -7.5t7 -10.5q0 -1 -16 -16t-32 -35.5t-16 -35.5q0 -13 10.5 -41.5t10.5 -41.5q0 -19 -18 -36.5t-29 -17.5q-10 0 -19.5 31.5t-9.5 53.5zM255 520q0 34 25 73t49 61.5t28 22.5q3 0 10 -7.5t7 -10.5q0 -1 -16 -16t-32 -35.5 t-16 -35.5q0 -13 10.5 -41.5t10.5 -41.5q0 -19 -18 -36.5t-29 -17.5q-10 0 -19.5 31.5t-9.5 53.5z" />
+<glyph unicode="&#x201d;" horiz-adv-x="434" d="M60 453q0 1 16 16t32 35.5t16 35.5q0 13 -10.5 41.5t-10.5 41.5q0 19 18 36.5t29 17.5q10 0 19.5 -31.5t9.5 -53.5q0 -34 -25 -73t-49 -61.5t-28 -22.5q-3 0 -10 7.5t-7 10.5zM245 453q0 1 16 16t32 35.5t16 35.5q0 13 -10.5 41.5t-10.5 41.5q0 19 18 36.5t29 17.5 q10 0 19.5 -31.5t9.5 -53.5q0 -34 -25 -73t-49 -61.5t-28 -22.5q-3 0 -10 7.5t-7 10.5z" />
+<glyph unicode="&#x201e;" horiz-adv-x="434" d="M60 -112q0 1 16 16t32 35.5t16 35.5q0 13 -10.5 41.5t-10.5 41.5q0 19 18 36.5t29 17.5q10 0 19.5 -31.5t9.5 -53.5q0 -34 -25 -73t-49 -61.5t-28 -22.5q-3 0 -10 7.5t-7 10.5zM245 -112q0 1 16 16t32 35.5t16 35.5q0 13 -10.5 41.5t-10.5 41.5q0 19 18 36.5t29 17.5 q10 0 19.5 -31.5t9.5 -53.5q0 -34 -25 -73t-49 -61.5t-28 -22.5q-3 0 -10 7.5t-7 10.5z" />
+<glyph unicode="&#x201f;" horiz-adv-x="434" d="M70 592q0 22 9.5 53.5t19.5 31.5q11 0 29 -17.5t18 -36.5q0 -13 -10.5 -41.5t-10.5 -41.5q0 -15 16 -35.5t32 -35.5t16 -16q0 -3 -7 -10.5t-10 -7.5q-4 0 -28 22.5t-49 61.5t-25 73zM255 592q0 22 9.5 53.5t19.5 31.5q11 0 29 -17.5t18 -36.5q0 -13 -10.5 -41.5 t-10.5 -41.5q0 -15 16 -35.5t32 -35.5t16 -16q0 -3 -7 -10.5t-10 -7.5q-4 0 -28 22.5t-49 61.5t-25 73z" />
+<glyph unicode="&#x2020;" horiz-adv-x="463" d="M25 423q0 17 15.5 25t36.5 8q27 0 64 -9.5t58 -9.5q9 0 16.5 6.5t7.5 15.5q0 3 -16 76t-16 92t11 34t29 15q20 0 30.5 -15t10.5 -33q0 -24 -11.5 -96t-11.5 -78q0 -8 8 -14t17 -6q21 0 61.5 11t52.5 11q50 0 50 -33t-48 -33q-17 0 -58.5 13t-51.5 13q-8 0 -15 -5.5 t-7 -12.5q0 -10 5 -25.5t5 -19.5q0 -2 -1 -19t-2.5 -54.5t-3 -96t-2.5 -163.5t-1 -237q0 -10 -17 -10h-6q-17 0 -17 10q0 131 -2 236.5t-5 164t-5.5 96.5t-4.5 54.5t-2 18.5t6 20.5t6 24.5q0 16 -15 16q-6 0 -48 -12t-71 -12q-52 0 -52 33z" />
+<glyph unicode="&#x2021;" horiz-adv-x="401" d="M25 -36q0 26 39 26q14 0 52 -10t46 -10q6 0 11.5 4t5.5 10q0 8 -3.5 15.5t-3.5 10.5q0 1 9.5 81t9.5 115q0 6 9 6t9 -6q0 -26 4 -72.5t8 -83.5t4 -40q0 -2 -4 -12t-4 -14q0 -13 12 -13q5 0 43.5 9.5t61.5 9.5q42 0 42 -26t-42 -26q-22 0 -56.5 7.5t-51.5 7.5 q-8 0 -13.5 -5.5t-5.5 -12.5q0 -2 12 -51.5t12 -64.5t-7.5 -27t-22.5 -12q-16 0 -23.5 12t-7.5 26q0 19 8 67.5t8 53.5q0 6 -6.5 11t-13.5 5q-17 0 -54 -8.5t-47 -8.5q-40 0 -40 26zM25 492q0 26 42 26q22 0 56.5 -7.5t51.5 -7.5q8 0 13.5 5.5t5.5 12.5q0 2 -12 49t-12 62 t7.5 27t22.5 12q16 0 23.5 -12t7.5 -26q0 -19 -8 -65t-8 -51q0 -6 6.5 -11t13.5 -5q17 0 54 8.5t47 8.5q40 0 40 -26t-39 -26q-14 0 -52 10t-46 10q-6 0 -11.5 -4t-5.5 -10q0 -8 3.5 -15.5t3.5 -10.5q0 -1 -8 -76t-8 -110q0 -7 -10 -7q-9 0 -9 7q0 26 -4.5 70t-9 78.5 t-4.5 37.5q0 2 4 12t4 14q0 13 -12 13q-5 0 -43.5 -9.5t-61.5 -9.5q-42 0 -42 26z" />
+<glyph unicode="&#x2022;" horiz-adv-x="356" d="M60 327q0 49 34.5 83.5t83.5 34.5t83.5 -34.5t34.5 -83.5t-34.5 -83.5t-83.5 -34.5t-83.5 34.5t-34.5 83.5z" />
+<glyph unicode="&#x2026;" horiz-adv-x="630" d="M480 38q0 19 15.5 35.5t30.5 16.5q14 0 29 -16t15 -31q0 -23 -14.5 -37t-25.5 -14q-19 0 -34.5 16.5t-15.5 29.5zM270 38q0 19 15.5 35.5t30.5 16.5q14 0 29 -16t15 -31q0 -23 -14.5 -37t-25.5 -14q-19 0 -34.5 16.5t-15.5 29.5zM60 38q0 19 15.5 35.5t30.5 16.5 q14 0 29 -16t15 -31q0 -23 -14.5 -37t-25.5 -14q-19 0 -34.5 16.5t-15.5 29.5z" />
+<glyph unicode="&#x202f;" horiz-adv-x="166" />
+<glyph unicode="&#x2030;" horiz-adv-x="952" d="M50 362q0 62 52.5 131.5t124.5 69.5q40 0 71 -31q24 -24 58 -24q46 0 93 28q17 10 31.5 22t35.5 33.5l22 22.5t4.5 5t7.5 8l3 4q6 0 12 -4t6 -8q0 -3 -5 -11q-360 -527 -434 -643q-4 -6 -19 -6q-16 0 -16 10q0 2 2 6l80 114l169.5 245.5t112.5 170.5q9 15 8 16 q-2 1 -8 -2q-47 -28 -105 -28q-16 0 -35 3v-16v-14q0 -17 -1 -25q-6 -72 -57.5 -130.5t-112.5 -58.5q-47 0 -73.5 32t-26.5 80zM99 336q0 -29 13.5 -50t40.5 -21q51 0 95 58.5t44 137.5q0 70 -52 70q-46 0 -93.5 -64t-47.5 -131zM336 103q0 71 56 137t125 66q42 0 66 -29.5 t24 -79.5q0 -79 -53 -142.5t-118 -63.5q-47 0 -73.5 31.5t-26.5 80.5zM385 78q0 -30 13 -50.5t41 -20.5q51 0 95 58.5t44 136.5q0 71 -53 71q-45 0 -92.5 -64t-47.5 -131zM631 103q0 71 56 137t125 66q42 0 66 -29.5t24 -79.5q0 -79 -53 -142.5t-118 -63.5q-47 0 -73.5 31.5 t-26.5 80.5zM680 78q0 -30 13 -50.5t41 -20.5q51 0 95 58.5t44 136.5q0 71 -53 71q-45 0 -92.5 -64t-47.5 -131z" />
+<glyph unicode="&#x2032;" horiz-adv-x="131" d="M30 511q0 1 2 32.5l4.5 68.5t3.5 47q4 29 32 29q29 0 29 -25q0 -4 -2 -14l-12.5 -43l-17.5 -57.5t-10 -32.5q-1 -3 -2 -7t-1.5 -5l-1.5 -3t-2.5 -2.5t-3.5 -1t-6 -0.5q-12 0 -12 14z" />
+<glyph unicode="&#x2033;" horiz-adv-x="261" d="M30 511q0 1 2 32.5l4.5 68.5t3.5 47q4 29 32 29q29 0 29 -25q0 -4 -2 -14l-12.5 -43l-17.5 -57.5t-10 -32.5q-1 -3 -2 -7t-1.5 -5l-1.5 -3t-2.5 -2.5t-3.5 -1t-6 -0.5q-12 0 -12 14zM160 511q0 1 2 32.5l4.5 68.5t3.5 47q4 29 32 29q29 0 29 -25q0 -4 -2 -14l-12.5 -43 l-17.5 -57.5t-10 -32.5q-1 -3 -2 -7t-1.5 -5l-1.5 -3t-2.5 -2.5t-3.5 -1t-6 -0.5q-12 0 -12 14z" />
+<glyph unicode="&#x2039;" horiz-adv-x="258" d="M50 193q0 4 55 55l36 34.5l31 30.5l12 11q2 0 8 -5.5t6 -6.5q0 -4 -31 -58t-31 -61t31 -61t31 -58q0 -1 -6 -6.5t-8 -5.5l-12 11l-31 30.5l-36 34.5q-55 51 -55 55z" />
+<glyph unicode="&#x203a;" horiz-adv-x="258" d="M60 74q0 4 31 58t31 61t-31 61t-31 58q0 1 6 6.5t8 5.5l12 -11l31 -30.5l36 -34.5q55 -51 55 -55t-55 -55l-36 -34.5l-31 -30.5l-12 -11q-2 0 -8 5.5t-6 6.5z" />
+<glyph unicode="&#x203e;" horiz-adv-x="400" />
+<glyph unicode="&#x2044;" horiz-adv-x="144" d="M-150 -8q0 1 4 9l408 657q7 10 23 10q17 0 17 -6q0 -2 -1 -4l-410 -659q-3 -5 -4 -6t-3.5 -3t-6 -2.5t-9.5 -0.5q-18 0 -18 5z" />
+<glyph unicode="&#x2053;" horiz-adv-x="793" d="M45 117q0 5 4 17q6 23 17 46t31.5 51.5t54.5 46.5t76 18q48 0 101.5 -22.5t93 -49.5t88 -49.5t86.5 -22.5q26 0 48.5 16t37 41.5t22 43t12.5 34.5q2 8 4.5 8.5t10.5 -1.5q11 -3 11 -7q0 -3 -1 -6q-7 -28 -19.5 -54.5t-33 -54.5t-54 -45t-73.5 -17q-50 0 -104.5 21.5 t-95 47.5t-89.5 47.5t-89 21.5q-27 0 -48 -14t-34 -36.5t-19.5 -40t-10.5 -35.5q-4 -14 -7 -14q-2 0 -10 2q-10 2 -10 7z" />
+<glyph unicode="&#x205f;" horiz-adv-x="222" />
+<glyph unicode="&#x2060;" horiz-adv-x="0" />
+<glyph unicode="&#x20ac;" horiz-adv-x="606" d="M30 282l15 37h70q14 55 45.5 97t70 63.5t74 32t65.5 10.5q60 0 105.5 -18t90.5 -60q-4 -9 -18 -38q-23 29 -67 54.5t-107 25.5q-33 0 -63 -7t-61.5 -24.5t-56.5 -52t-39 -83.5h358l-15 -37h-348q-2 -12 -2 -27l2 -27h325l-16 -38h-303q31 -81 91.5 -123.5t126.5 -42.5 q101 0 173 72v-48q-77 -61 -170 -61q-48 0 -97 17t-97.5 65t-66.5 121h-82l15 38h61q-2 12 -2 27l2 27h-79z" />
+<glyph unicode="&#x2122;" horiz-adv-x="797" d="M40 579q0 1 1.5 10.5t3.5 23.5t3 24q2 11 9 11q11 0 11 -10q7 -1 43 -1h161q37 0 45 2q3 9 11 9q9 0 9 -10q0 -1 -1 -19.5t-1 -39.5q0 -9 -9 -9q-11 0 -11 11l1 14v19q-18 2 -46 2h-50q-2 -10 -2 -67v-7q0 -7 -0.5 -19t-1 -26.5t-0.5 -31.5t-0.5 -33.5t-0.5 -32.5v-27 v-25h30q9 0 9 -9q0 -11 -9 -11q-5 0 -26.5 1t-28.5 1t-28 -1t-26 -1q-11 0 -11 11q0 9 13 9h24q5 35 5 232q0 33 -1 37h-62q-27 0 -39 -3l-3 -31q-2 -12 -11 -12q-11 0 -11 9zM373 337q0 10 13 10h21q0 3 0.5 9.5t1 17t0.5 18.5q8 224 8 228h-30q-10 0 -10 11q0 9 10 9 q3 0 23 -0.5t25 -0.5q6 0 16 0.5t11 0.5q9 0 13 -9l97 -243l92 237q6 14 16 14h16q7 0 23.5 0.5t21.5 0.5q11 0 11 -10t-13 -10h-18q-1 -6 -1 -34v-41q0 -160 6 -198h21q10 0 10 -10t-9 -10q-5 0 -23.5 1t-25.5 1t-24.5 -1t-22.5 -1q-12 0 -12 10t13 10h18q2 10 2 79 q0 88 -2 166l-83 -211q-5 -12 -12.5 -23t-12.5 -21q-7 -11 -11 -11q-7 0 -12 15l-105 259q-4 -122 -4 -208q0 -39 1 -45h29q10 0 10 -10t-10 -10q-5 0 -19 1t-21 1t-19.5 -1t-17.5 -1q-11 0 -11 10z" />
+<glyph unicode="&#x2212;" horiz-adv-x="527" d="M31 212q0 8 0.5 11.5t4.5 6t13 2.5h431q8 0 11.5 -2.5t4 -6t0.5 -12.5q0 -14 -3 -18.5t-18 -4.5h-427q-9 0 -12.5 3t-4 6.5t-0.5 14.5z" />
+<glyph unicode="&#xe000;" horiz-adv-x="395" d="M0 395h395v-395h-395v395z" />
+<glyph unicode="&#xfeff;" horiz-adv-x="0" />
+<glyph horiz-adv-x="500" d="M40 231q0 175 78 282t182 107q76 0 122 -69.5t46 -178.5q0 -103 -30.5 -192t-89 -144.5t-131.5 -55.5q-84 0 -130.5 69t-46.5 182zM103 187q0 -86 32 -133t82 -47q59 0 105 66.5t67 153.5t21 169q0 79 -29.5 131.5t-86.5 52.5q-52 0 -96.5 -58t-69.5 -148t-25 -187z" />
+<glyph horiz-adv-x="500" d="M130 15q0 9 3 10.5t15 1.5h54q12 73 45 302.5t33 252.5v2q-3 0 -40 -7t-39 -7q-8 0 -8 9v13q0 10 10 11q17 2 54 8.5l66.5 12t31.5 5.5q9 0 9 -10q0 -4 -6.5 -40.5l-15.5 -91.5t-14 -92l-54 -368h66q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -43 1.5t-54 1.5 q-16 0 -52 -1.5t-47 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph horiz-adv-x="500" d="M48 11q0 7 49 71t55 69q9 8 42.5 35t59 50t55 56.5t46 72t16.5 77.5q0 51 -28.5 88.5t-84.5 37.5q-27 0 -53.5 -10t-45 -24.5t-33 -29.5t-22.5 -25t-9 -10q-5 0 -12.5 6t-7.5 11q0 7 17.5 27.5t45 45t68.5 43t80 18.5q69 0 112.5 -44t43.5 -109q0 -49 -23.5 -99.5 t-57.5 -87.5q-30 -32 -68 -62.5t-74.5 -54.5t-44.5 -31q-8 -6 -23.5 -24l-28 -33t-12.5 -16t7 -1h288q2 0 12.5 33t12.5 33q22 0 22 -5q0 -3 -5.5 -21.5l-14 -45.5t-12.5 -46q-1 -6 -11 -6h-347q-14 0 -14 11z" />
+<glyph horiz-adv-x="500" d="M60 30q0 8 14 15.5t24 7.5q18 0 43 -19q34 -25 69 -25q63 0 103.5 43t40.5 109q0 38 -23.5 67.5t-59.5 40.5q-25 8 -57 8q-8 0 -23 -0.5t-23 -0.5q-11 0 -11 18t5 18q100 10 146 56q40 40 40 108q0 46 -23.5 79t-68.5 33q-31 0 -58.5 -12.5t-42 -25t-15.5 -12.5 q-6 0 -12 6t-5 12q1 8 19.5 23.5t54.5 30.5t74 15q64 0 102 -39t38 -91q0 -37 -15.5 -68.5t-37.5 -51t-44.5 -34t-38 -22t-15.5 -8.5l16 -3q17 -3 40.5 -11.5t47 -23t40 -43.5t16.5 -67q0 -84 -65.5 -132t-155.5 -48q-39 0 -89 16.5t-50 30.5z" />
+<glyph horiz-adv-x="500" d="M42 209q0 18 28 55q22 30 66.5 82.5l101 117l82.5 95.5q9 10 22.5 19t16.5 12q40 38 47 38q6 0 6 -14q0 -3 -0.5 -8t-0.5 -7l-48 -326q-2 -13 0.5 -15.5t14.5 -2.5h65q7 0 7 -10v-34q0 -7 -1.5 -8.5t-10.5 -1.5h-78q-9 0 -10.5 -1t-2.5 -8q-1 -3 -1 -5q-25 -164 -25 -185 q0 -6 -10 -9q-21 -7 -53 -7q-8 0 -5 13l36 187q3 7 1 10.5t-5 4t-12 0.5h-213q-18 0 -18 8zM98 259q0 -4 22 -4h167q13 0 14.5 2t4.5 18q5 22 19.5 128.5t14.5 130.5q0 6 -1 6q-2 0 -42 -46.5l-98.5 -115l-84.5 -97.5q-16 -16 -16 -22z" />
+<glyph horiz-adv-x="500" d="M57 1q0 17 10 17q7 0 28 -1.5t39 -1.5q81 0 140 41t59 131q0 35 -16.5 63t-46.5 47t-63 32t-76 23q-19 4 -19 12q0 4 3 13q8 22 33.5 118t34.5 125q3 5 16 5q3 0 82.5 -7.5t125.5 -7.5q6 0 8 4t6 19q2 5 5 5q18 0 18 -5q0 -4 -2 -14t-6 -26t-6 -27q-6 -25 -19 -25 q-9 0 -106.5 11.5t-102.5 11.5q-7 0 -8 -4v-2q-7 -24 -35 -127q-4 -18 -4 -19q0 -7 14 -11q1 0 22 -6t29.5 -9t31.5 -10.5t35.5 -15l32.5 -19t31 -24.5t23 -29.5t17.5 -37t5.5 -43.5q0 -53 -20.5 -94t-50.5 -63.5t-70 -37t-73.5 -19t-66.5 -4.5q-34 0 -54 6q-5 2 -5 6z" />
+<glyph horiz-adv-x="500" d="M50 170q0 77 18.5 144t48 113t67 83.5t74.5 60t73 37.5t59.5 21t35.5 6q3 0 5.5 -9t2.5 -15q0 -2 -19 -6t-59.5 -23t-82.5 -52q-84 -67 -122 -175q-5 -12 -5 -18q0 -5 19 3q57 20 97 20q73 0 116 -45t43 -115q0 -103 -57.5 -162.5t-147.5 -59.5q-76 0 -121 51.5 t-45 140.5zM108 148q0 -65 29 -104.5t77 -39.5q64 0 102.5 60.5t38.5 140.5q0 63 -32 96t-88 33q-35 0 -66.5 -16t-38.5 -32q-22 -54 -22 -138z" />
+<glyph horiz-adv-x="500" d="M63 506q0 4 5.5 20.5t13.5 44t14 53.5q6 27 11 27q20 0 20 -8q0 -3 -2 -13.5t-2 -14.5q0 -2 51 -2h275q13 0 13 -9q0 -3 -44 -82l-99 -177t-73 -133q-34 -66 -50.5 -111t-31.5 -109q-5 -17 -12 -17q-8 0 -20.5 5.5t-12.5 13.5q0 73 144 316l132 224q5 8 5 13q0 8 -14 8 h-198q-82 0 -85 -9l-13 -40q-6 -8 -10 -9q-17 0 -17 9z" />
+<glyph horiz-adv-x="500" d="M56 126q0 37 16 69.5t39 53t46.5 35.5t39.5 23t16 9t-11 9.5t-26.5 24t-30.5 35t-26 46.5t-11 54q0 70 49 115t120 45q61 0 103.5 -38.5t42.5 -95.5q0 -33 -13 -63t-31.5 -49.5t-37 -34.5t-31.5 -23.5t-13 -9.5t12 -9.5t29 -23.5t34 -35t29 -50.5t12 -62.5 q0 -75 -58 -119.5t-138 -44.5q-66 0 -113.5 41t-47.5 99zM113 138q0 -58 34.5 -93t78.5 -35q50 0 88 36.5t38 93.5q0 40 -29 81t-57 62.5t-34 21.5q-4 0 -16 -6t-29.5 -19.5t-34 -32t-28 -47.5t-11.5 -62zM155 497q0 -36 30.5 -74.5t59.5 -59t34 -20.5q8 0 29 18t43 56 t22 79q0 52 -28 87t-74 35q-55 0 -85.5 -33.5t-30.5 -87.5z" />
+<glyph horiz-adv-x="500" d="M52 10q0 16 11 16q108 0 180.5 59.5t114.5 181.5q2 6 -1.5 8t-10.5 -2q-58 -34 -123 -34q-66 0 -103.5 47.5t-37.5 115.5q0 103 58 165.5t145 62.5q71 0 117.5 -52.5t46.5 -145.5q0 -84 -19 -152.5t-48.5 -112.5t-70 -77t-77 -50t-76.5 -27t-62 -12.5t-39 -2.5 q-5 0 -5 12zM143 409q0 -56 27.5 -96t84.5 -40q67 0 113 36q9 7 14 52t5 82q0 66 -28 113t-77 47q-58 0 -98.5 -56.5t-40.5 -137.5z" />
+<glyph horiz-adv-x="270" d="M25 282q0 4 29.5 28.5t67 48.5t54.5 24q20 0 20 -22q0 -26 -32.5 -150t-32.5 -136q0 -20 13 -20q8 0 27 16t35 32t17 16q3 0 7.5 -5t4.5 -7q0 -12 -64.5 -62.5t-86.5 -50.5q-24 0 -24 18q0 24 35.5 145t35.5 153q0 18 -12 18q-11 0 -30.5 -15t-35 -29.5t-16.5 -14.5 q-4 0 -8 4.5t-4 8.5zM128 549q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33z" />
+<glyph horiz-adv-x="0" d="M-299 538q0 29 29 29q18 0 30 -25l40 -85q1 -2 1 -5t-4 -3h-18q-1 0 -7 6l-61 60q-10 10 -10 23z" />
+<glyph horiz-adv-x="0" d="M-219 451l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2z" />
+<glyph horiz-adv-x="0" d="M-313 451q0 1 4 5l91 92q11 11 20 11h20q7 0 9 -1.5t7 -9.5l53 -92q2 -3 2 -5t-5 -2h-12q-1 0 -7 6l-63 52q-3 3 -8 0l-85 -52q-2 -1 -4 -2.5t-3 -2.5l-2 -1h-12q-5 0 -5 2z" />
+<glyph horiz-adv-x="0" d="M-290 557q0 2 5 2h12q1 0 7 -6l63 -52q3 -3 8 0l85 52q2 1 4 2.5t4 2.5l1 1h12q5 0 5 -2q0 -1 -4 -5l-91 -92q-11 -11 -20 -11h-20q-7 0 -9 1.5t-7 9.5l-53 92q-2 3 -2 5z" />
+<glyph horiz-adv-x="0" d="M-300 508l2 21q1 6 2 7t7 1h181q6 0 7 -1t1 -6l-2 -23q-5 -8 -8 -8h-181q-7 0 -8.5 1t-0.5 8z" />
+<glyph horiz-adv-x="0" d="M-286 530q0 28 4 28h13q1 0 1 -2q0 -31 15.5 -45t52.5 -14q53 0 77 32q4 6 7.5 13.5l5.5 11.5t3 4h13q-6 -46 -37.5 -77.5t-76.5 -31.5q-41 0 -59.5 23t-18.5 58z" />
+<glyph horiz-adv-x="0" d="M-284 451l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2zM-164 451l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2z" />
+<glyph horiz-adv-x="0" d="M-242 510q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33z" />
+<glyph horiz-adv-x="0" d="M-311 505q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM-171 505q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33z" />
+<glyph horiz-adv-x="0" d="M-304 535q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM-178 535q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33z" />
+<glyph horiz-adv-x="0" d="M-268 501q0 28 20 48t48 20t48 -20t20 -48t-20 -48t-48 -20t-48 20t-20 48zM-240 501q0 -17 11.5 -28.5t28.5 -11.5t28.5 11.5t11.5 28.5t-11.5 28.5t-28.5 11.5t-28.5 -11.5t-11.5 -28.5z" />
+<glyph horiz-adv-x="0" d="M-308 465q2 9 11 25q15 25 32.5 38.5t30.5 13.5q16 0 42 -18t38 -18q21 0 40 33q3 7 13 7q6 0 6 -2q-1 -6 -11 -26q-29 -55 -66 -55q-17 0 -41 17.5t-39 17.5q-22 0 -38 -29q-3 -6 -12 -6q-6 0 -6 2z" />
+<glyph horiz-adv-x="272" d="M55 28q0 6 18 106.5l42 243t35 234.5q2 10 -1 14t-13 1q-66 -18 -74 -18q-5 0 -3 20q1 8 2.5 9.5t7.5 3.5q39 9 75.5 18.5l53.5 14t19 4.5q10 0 10 -9q0 -12 -50 -305.5t-50 -296.5q0 -21 14 -21q12 0 36 21t43.5 42t20.5 21q3 0 9.5 -5.5t6.5 -7.5q0 -4 -28 -34.5 t-71.5 -62t-73.5 -31.5q-29 0 -29 38z" />
+<glyph horiz-adv-x="586" d="M20 15q0 9 2.5 10.5t14.5 1.5h52q1 0 20 142.5l38 292t19 164.5q0 13 -2 13h-58q-10 0 -13 2.5t-3 12.5t3.5 12.5t16.5 2.5q6 0 43.5 -1.5t54.5 -1.5q16 0 57.5 1.5t52.5 1.5q12 0 14.5 -2t2.5 -13q0 -9 -3 -12t-15 -3h-62l-19 -144l-39 -290t-19 -152q0 -22 17 -22 q231 0 291 6q12 1 15 4t8 19l25 77q3 8 11 8q21 0 21 -10q0 -3 -5 -19l-14.5 -47t-17.5 -61q-2 -11 -20 -11q-11 0 -185.5 1.5t-190.5 1.5t-52.5 -1.5t-47.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph horiz-adv-x="268" d="M30 291q0 12 6 25.5t12 14.5t91.5 4t91.5 3q2 0 2 -9q0 -33 -8 -33q-104 -8 -191 -8q-4 0 -4 3z" />
+<glyph horiz-adv-x="268" d="M30 291q0 12 6 25.5t12 14.5t91.5 4t91.5 3q2 0 2 -9q0 -33 -8 -33q-104 -8 -191 -8q-4 0 -4 3z" />
+<glyph horiz-adv-x="268" d="M30 291q0 12 6 25.5t12 14.5t91.5 4t91.5 3q2 0 2 -9q0 -33 -8 -33q-104 -8 -191 -8q-4 0 -4 3z" />
+<glyph horiz-adv-x="268" d="M30 291q0 12 6 25.5t12 14.5t91.5 4t91.5 3q2 0 2 -9q0 -33 -8 -33q-104 -8 -191 -8q-4 0 -4 3z" />
+<glyph horiz-adv-x="500" d="M10 295q0 12 2 14.5t11 2.5h451q11 0 13.5 -2t2.5 -10v-12q0 -9 -2.5 -11t-13.5 -2h-444q-15 0 -17.5 2.5t-2.5 17.5z" />
+<glyph horiz-adv-x="750" d="M10 295q0 12 2 14.5t11 2.5h701q11 0 13.5 -2t2.5 -10v-12q0 -9 -2.5 -11t-13.5 -2h-694q-15 0 -17.5 2.5t-2.5 17.5z" />
+<glyph horiz-adv-x="750" d="M10 295q0 12 2 14.5t11 2.5h701q11 0 13.5 -2t2.5 -10v-12q0 -9 -2.5 -11t-13.5 -2h-694q-15 0 -17.5 2.5t-2.5 17.5z" />
+<glyph horiz-adv-x="408" d="M50 318q0 4 55 55l36 34.5l31 30.5l12 11q2 0 8 -5.5t6 -6.5q0 -3 -31 -58t-31 -61t31 -61t31 -58q0 -1 -6 -6.5t-8 -5.5l-12 11l-31 30.5l-36 34.5q-55 51 -55 55zM200 318q0 4 55 55l36 34.5l31 30.5l12 11q2 0 8 -5.5t6 -6.5q0 -3 -31 -58t-31 -61t31 -61t31 -58 q0 -1 -6 -6.5t-8 -5.5l-12 11l-31 30.5l-36 34.5q-55 51 -55 55z" />
+<glyph horiz-adv-x="408" d="M60 199q0 3 31 58t31 61t-31 61t-31 58q0 1 6 6.5t8 5.5l12 -11l31 -30.5l36 -34.5q55 -51 55 -55t-55 -55l-36 -34.5l-31 -30.5l-12 -11q-2 0 -8 5.5t-6 6.5zM210 199q0 3 31 58t31 61t-31 61t-31 58q0 1 6 6.5t8 5.5l12 -11l31 -30.5l36 -34.5q55 -51 55 -55t-55 -55 l-36 -34.5l-31 -30.5l-12 -11q-2 0 -8 5.5t-6 6.5z" />
+<glyph horiz-adv-x="258" d="M50 318q0 4 55 55l36 34.5l31 30.5l12 11q2 0 8 -5.5t6 -6.5q0 -3 -31 -58t-31 -61t31 -61t31 -58q0 -1 -6 -6.5t-8 -5.5l-12 11l-31 30.5l-36 34.5q-55 51 -55 55z" />
+<glyph horiz-adv-x="258" d="M60 199q0 3 31 58t31 61t-31 61t-31 58q0 1 6 6.5t8 5.5l12 -11l31 -30.5l36 -34.5q55 -51 55 -55t-55 -55l-36 -34.5l-31 -30.5l-12 -11q-2 0 -8 5.5t-6 6.5z" />
+<glyph horiz-adv-x="319" d="M60 315q0 73 19 142t45 114.5t53.5 80.5t45.5 51t20 16q6 0 11 -4t5 -9l-8 -8q-8 -9 -20.5 -25.5t-27.5 -39t-30 -54.5t-27.5 -68.5t-20.5 -84.5t-8 -99q0 -79 14 -150t34.5 -117.5t41 -80.5t34.5 -53t14 -22q0 -14 -16 -14q-4 0 -22.5 21.5t-45 62.5t-51.5 91.5 t-42.5 117.5t-17.5 132z" />
+<glyph horiz-adv-x="319" d="M60 -97l8 9q8 8 20.5 24.5t27.5 39t30 54.5t27.5 68.5t20.5 84.5t8 99q0 79 -14 150t-34.5 117.5t-41 80.5t-34.5 53t-14 22q0 14 16 14q4 0 22.5 -21.5t45 -62.5t51.5 -91.5t42.5 -117.5t17.5 -132q0 -73 -19 -142t-45 -114.5t-53.5 -80.5t-45.5 -51t-20 -16q-6 0 -11 4 t-5 9z" />
+<glyph horiz-adv-x="296" d="M80 -96v801q0 9 2 12t10 3h151q9 0 11 -1.5t2 -7.5v-14q0 -9 -2 -11t-11 -2h-105q-9 0 -11 -2t-2 -10v-735q0 -12 13 -12h105q6 0 8.5 -0.5t3.5 -3t1 -9.5v-12q0 -6 -2 -8.5t-11 -2.5h-150q-9 0 -11 2.5t-2 12.5z" />
+<glyph horiz-adv-x="296" d="M40 -88q0 9 2 11t11 2h105q9 0 11 2t2 10v735v6t-1.5 3.5t-4 2t-7.5 0.5h-105q-6 0 -8.5 0.5t-3.5 3t-1 9.5v12q0 7 2 9t11 2h150q9 0 11 -2.5t2 -12.5v-801q0 -9 -2 -12t-10 -3h-151q-9 0 -11 1.5t-2 7.5v14z" />
+<glyph horiz-adv-x="307" d="M40 304q0 6 5.5 9t14.5 4t18.5 7.5t18.5 18t14.5 38t5.5 65.5v80q0 36 0.5 53.5t3 42.5t8 36.5t15 26t24.5 20t36.5 10t50.5 4.5q8 0 10 -2t2 -11t-2.5 -11t-11.5 -2q-43 0 -63.5 -19t-20.5 -73v-149q0 -72 -9.5 -100t-48.5 -41q-15 -6 -15 -7t15 -7q39 -13 48.5 -41 t9.5 -100v-149q0 -54 20.5 -73t63.5 -19q6 0 8.5 -0.5t4 -3.5t1.5 -9q0 -9 -2 -11t-10 -2q-29 0 -50.5 4.5t-36.5 10t-24.5 20t-15 26t-8 36.5t-3 42.5t-0.5 53.5v80q0 39 -5.5 65.5t-14.5 38t-18.5 18t-18.5 7.5t-14.5 4t-5.5 9z" />
+<glyph horiz-adv-x="307" d="M40 -98q0 9 3 11t11 2q43 0 63.5 19t20.5 73v149q0 72 9.5 100t48.5 41q15 6 15 7t-15 7q-39 13 -48.5 41t-9.5 100v149q0 54 -20.5 73t-63.5 19q-6 0 -8.5 0.5t-4 3.5t-1.5 9q0 9 2 11t10 2q29 0 50.5 -4.5t36.5 -10t24.5 -20t15 -26t8 -36.5t3 -42.5t0.5 -53.5v-80 q0 -39 5.5 -65.5t14.5 -38t18.5 -18t18.5 -7.5t14.5 -4t5.5 -9t-5.5 -9t-14.5 -4t-18.5 -7.5t-18.5 -18t-14.5 -38t-5.5 -65.5v-80q0 -36 -0.5 -53.5t-3 -42.5t-8 -36.5t-15 -26t-24.5 -20t-36.5 -10t-50.5 -4.5q-8 0 -10 2t-2 11z" />
+<glyph d="M22 155q0 115 58 185.5t129 70.5q53 0 89.5 -45.5t36.5 -116.5q0 -104 -53 -183t-128 -79q-58 0 -95 47.5t-37 120.5zM79 126q0 -56 21 -83t54 -27q57 0 92 80.5t35 168.5q0 52 -19 83.5t-57 31.5q-52 0 -89 -77.5t-37 -176.5z" />
+<glyph d="M78 10q0 15 13 15h56q7 45 26 190.5t19 160.5q-5 -1 -32 -6t-28 -5q-7 0 -7 9v8q0 8 8 9q12 1 41 6l53 9t26 4q7 0 7 -8q0 -3 -3.5 -24l-9.5 -57.5t-9 -58.5l-35 -237h58q8 0 8 -16q0 -8 -1 -9.5t-7 -1.5q-4 0 -37.5 1t-44.5 1t-47.5 -1t-43.5 -1t-8.5 2t-1.5 10z" />
+<glyph d="M41 7q0 6 27 43t31 40q154 139 154 206q0 30 -19 50.5t-55 20.5q-31 0 -56.5 -16.5t-38.5 -32.5t-14 -16q-3 0 -9 4.5t-6 8.5q0 7 19 29t54.5 44t70.5 22q49 0 79 -30.5t30 -77.5q0 -52 -51 -108q-21 -23 -45.5 -43.5t-49.5 -39l-29 -21.5l-38 -43h182l6 17l11 29.5 t7 13.5q18 0 18 -5q0 -2 -5.5 -19.5l-13.5 -41t-11 -36.5q-1 -5 -9 -5h-228q-11 0 -11 7z" />
+<glyph d="M49 27q0 6 10.5 12t19.5 6q15 0 35 -15.5t35 -15.5q39 0 63.5 26.5t24.5 67.5q0 76 -86 76q-5 0 -17.5 -1t-17.5 -1q-7 0 -7 13q0 15 4 15q36 4 53 11q70 27 70 94q0 30 -16.5 47.5t-41.5 17.5q-20 0 -38 -8.5t-29 -17t-12 -8.5q-3 0 -8 4t-4 8q1 5 14 17t38 23.5 t49 11.5q48 0 75.5 -26.5t27.5 -61.5q0 -19 -8 -35.5t-18.5 -27.5t-26 -21t-26 -14.5l-22.5 -9.5l-13 -5l13 -3q13 -3 23.5 -6t26 -10.5t26 -17t18.5 -25.5t8 -35q0 -57 -46 -89t-105 -32q-25 0 -58.5 13t-33.5 23z" />
+<glyph d="M24 141q0 15 17 38q18 25 78.5 88.5t82.5 90.5q6 7 15 13t11 8q35 35 40 35q7 0 7 -14l-30 -216q-1 -8 0.5 -9.5t8.5 -1.5h37q6 0 6 -8v-23q0 -5 -1.5 -6t-7.5 -1h-46q-3 0 -4 -0.5t-2.5 -2.5t-1.5 -6q-18 -120 -18 -126q0 -3 -1.5 -4.5t-4.5 -1.5l-2 -1q-16 -4 -41 -4 q-6 0 -4 10l23 126q1 7 -0.5 8.5t-9.5 1.5h-139q-13 0 -13 6zM64 175q0 -2 14 -2h108q6 0 7.5 1.5t3.5 11.5q21 126 21 158q-21 -16 -143 -155q-11 -11 -11 -14z" />
+<glyph d="M43 -2q0 11 7 11q4 0 18.5 -1t26.5 -1q42 0 80.5 29t38.5 78q0 86 -121 106q-14 3 -14 9l2 8q5 13 21 76t23 85q0 4 11 4q2 0 54.5 -5.5t82.5 -5.5q4 0 8 14q2 4 5 4q12 0 12 -4q0 -3 -2 -11t-5 -19t-5 -19q-4 -18 -14 -18q-5 0 -70.5 7.5t-68.5 7.5q-2 0 -4 -4 q-2 -5 -18 -67q0 -3 -1.5 -7t-1.5 -6q0 -4 8 -6q154 -36 154 -128q0 -42 -20 -73t-51 -46.5t-60.5 -23t-55.5 -7.5q-27 0 -37 3q-3 1 -3 10z" />
+<glyph d="M45 120q0 86 47 157q45 67 115 101.5t102 34.5q7 0 7 -18q0 -1 -7 -3t-22 -7t-30 -11q-101 -43 -136 -147q-4 -12 -3.5 -12.5t11.5 2.5q37 14 60 14q52 0 83 -31.5t31 -80.5q0 -67 -41 -101t-96 -34q-56 0 -88.5 39.5t-32.5 96.5zM93 108q0 -48 22 -75.5t58 -27.5 q80 0 80 118q0 40 -26 64t-52 24q-24 0 -44 -10.5t-25 -21.5q-13 -32 -13 -71z" />
+<glyph d="M58 314q0 3 4 16.5l10.5 34.5t10.5 39q4 20 9 20q17 0 17 -7q0 -2 -2.5 -9.5t-2.5 -9.5q3 -1 35 -1h182q10 0 10 -7q0 -3 -31 -58l-69.5 -124t-50.5 -93q-27 -51 -32.5 -63.5t-21.5 -57.5q-5 -13 -9 -13q-6 0 -16 4.5t-10 10.5q0 14 14.5 46t40 75l48.5 80.5l50.5 81.5 l36.5 58q4 8 4 9q0 4 -9 4h-127q-56 0 -58 -5l-9 -31q-2 -7 -8 -7q-16 0 -16 7z" />
+<glyph d="M54 75q0 18 7 35.5t17 29t24 22.5t24 17t21 11.5t12 6.5q-1 1 -9 7t-14.5 12t-16 16.5t-16 21t-11.5 25t-5 28.5q0 46 35.5 76t84.5 30q41 0 70 -26.5t29 -64.5q0 -17 -5.5 -33t-13.5 -27t-19 -21.5t-19 -16t-17 -11t-10 -6.5l6 -5q7 -4 11.5 -7.5l13 -10.5t14.5 -13.5 t13 -16.5t12 -19.5t8 -22t3 -25.5q0 -50 -41 -78.5t-97 -28.5q-45 0 -78 28t-33 67zM98 85q0 -38 22.5 -58.5t51.5 -20.5q34 0 58 20.5t24 56.5q0 26 -19 51.5t-36.5 39t-22.5 14.5q-7 -1 -23.5 -11t-35.5 -35.5t-19 -56.5zM130 315q0 -23 18.5 -47t35 -36t22.5 -14 q5 1 18.5 11.5t27.5 33.5t14 49q0 33 -17 55.5t-46 22.5q-35 0 -54 -22.5t-19 -52.5z" />
+<glyph d="M48 -4q0 9 7 10q148 11 200 164q1 2 0 3.5t-3 1.5t-5 -2q-35 -21 -85 -21q-45 0 -72 33.5t-27 79.5q0 67 44 106.5t97 39.5q54 0 85 -38.5t31 -100.5q0 -61 -17 -110.5t-44.5 -79.5t-58 -51t-62.5 -30.5t-52.5 -13.5t-33.5 -4q-4 0 -4 13zM110 271q0 -38 18 -66t54 -28 q50 0 78 23q13 10 13 80q0 110 -71 110q-38 0 -65 -33.5t-27 -85.5z" />
+<glyph d="M22 405q0 115 58 185.5t129 70.5q53 0 89.5 -45.5t36.5 -116.5q0 -104 -53 -183t-128 -79q-58 0 -95 47.5t-37 120.5zM79 376q0 -56 21 -83t54 -27q57 0 92 80.5t35 168.5q0 52 -19 83.5t-57 31.5q-52 0 -89 -77.5t-37 -176.5z" />
+<glyph d="M78 260q0 15 13 15h56q7 45 26 190.5t19 160.5q-5 -1 -32 -6t-28 -5q-7 0 -7 9v8q0 8 8 9q12 1 41 6l53 9t26 4q7 0 7 -8q0 -3 -3.5 -24l-9.5 -57.5t-9 -58.5l-35 -237h58q8 0 8 -16q0 -8 -1 -9.5t-7 -1.5q-4 0 -37.5 1t-44.5 1t-47.5 -1t-43.5 -1t-8.5 2t-1.5 10z" />
+<glyph d="M41 257q0 6 27 43t31 40q154 139 154 206q0 30 -19 50.5t-55 20.5q-31 0 -56.5 -16.5t-38.5 -32.5t-14 -16q-3 0 -9 4.5t-6 8.5q0 7 19 29t54.5 44t70.5 22q49 0 79 -30.5t30 -77.5q0 -52 -51 -108q-21 -23 -45.5 -43.5t-49.5 -39l-29 -21.5l-38 -43h182l6 17l11 29.5 t7 13.5q18 0 18 -5q0 -2 -5.5 -19.5l-13.5 -41t-11 -36.5q-1 -5 -9 -5h-228q-11 0 -11 7z" />
+<glyph d="M49 277q0 6 10.5 12t19.5 6q15 0 35 -15.5t35 -15.5q39 0 63.5 26.5t24.5 67.5q0 76 -86 76q-5 0 -17.5 -1t-17.5 -1q-7 0 -7 13q0 15 4 15q36 4 53 11q70 27 70 94q0 30 -16.5 47.5t-41.5 17.5q-20 0 -38 -8.5t-29 -17t-12 -8.5q-3 0 -8 4t-4 8q1 5 14 17t38 23.5 t49 11.5q48 0 75.5 -26.5t27.5 -61.5q0 -19 -8 -35.5t-18.5 -27.5t-26 -21t-26 -14.5l-22.5 -9.5l-13 -5l13 -3q13 -3 23.5 -6t26 -10.5t26 -17t18.5 -25.5t8 -35q0 -57 -46 -89t-105 -32q-25 0 -58.5 13t-33.5 23z" />
+<glyph d="M24 391q0 15 17 38q18 25 78.5 88.5t82.5 90.5q6 7 15 13t11 8q35 35 40 35q7 0 7 -14l-30 -216q-1 -8 0.5 -9.5t8.5 -1.5h37q6 0 6 -8v-23q0 -5 -1.5 -6t-7.5 -1h-46q-3 0 -4 -0.5t-2.5 -2.5t-1.5 -6q-18 -120 -18 -126q0 -3 -1.5 -4.5t-4.5 -1.5l-2 -1q-16 -4 -41 -4 q-6 0 -4 10l23 126q1 7 -0.5 8.5t-9.5 1.5h-139q-13 0 -13 6zM64 425q0 -2 14 -2h108q6 0 7.5 1.5t3.5 11.5q21 126 21 158q-21 -16 -143 -155q-11 -11 -11 -14z" />
+<glyph d="M43 248q0 11 7 11q4 0 18.5 -1t26.5 -1q42 0 80.5 29t38.5 78q0 86 -121 106q-14 3 -14 9l2 8q5 13 21 76t23 85q0 4 11 4q2 0 54.5 -5.5t82.5 -5.5q4 0 8 14q2 4 5 4q12 0 12 -4q0 -3 -2 -11t-5 -19t-5 -19q-4 -18 -14 -18q-5 0 -70.5 7.5t-68.5 7.5q-2 0 -4 -4 q-2 -5 -18 -67q0 -3 -1.5 -7t-1.5 -6q0 -4 8 -6q154 -36 154 -128q0 -42 -20 -73t-51 -46.5t-60.5 -23t-55.5 -7.5q-27 0 -37 3q-3 1 -3 10z" />
+<glyph d="M45 370q0 86 47 157q45 67 115 101.5t102 34.5q7 0 7 -18q0 -1 -7 -3t-22 -7t-30 -11q-101 -43 -136 -147q-4 -12 -3.5 -12.5t11.5 2.5q37 14 60 14q52 0 83 -31.5t31 -80.5q0 -67 -41 -101t-96 -34q-56 0 -88.5 39.5t-32.5 96.5zM93 358q0 -48 22 -75.5t58 -27.5 q80 0 80 118q0 40 -26 64t-52 24q-24 0 -44 -10.5t-25 -21.5q-13 -32 -13 -71z" />
+<glyph d="M58 564q0 3 4 16.5l10.5 34.5t10.5 39q4 20 9 20q17 0 17 -7q0 -2 -2.5 -9.5t-2.5 -9.5q3 -1 35 -1h182q10 0 10 -7q0 -3 -31 -58l-69.5 -124t-50.5 -93q-27 -51 -32.5 -63.5t-21.5 -57.5q-5 -13 -9 -13q-6 0 -16 4.5t-10 10.5q0 14 14.5 46t40 75l48.5 80.5l50.5 81.5 l36.5 58q4 8 4 9q0 4 -9 4h-127q-56 0 -58 -5l-9 -31q-2 -7 -8 -7q-16 0 -16 7z" />
+<glyph d="M54 325q0 18 7 35.5t17 29t24 22.5t24 17t21 11.5t12 6.5q-1 1 -9 7t-14.5 12t-16 16.5t-16 21t-11.5 25t-5 28.5q0 46 35.5 76t84.5 30q41 0 70 -26.5t29 -64.5q0 -17 -5.5 -33t-13.5 -27t-19 -21.5t-19 -16t-17 -11t-10 -6.5l6 -5q7 -4 11.5 -7.5l13 -10.5t14.5 -13.5 t13 -16.5t12 -19.5t8 -22t3 -25.5q0 -50 -41 -78.5t-97 -28.5q-45 0 -78 28t-33 67zM98 335q0 -38 22.5 -58.5t51.5 -20.5q34 0 58 20.5t24 56.5q0 26 -19 51.5t-36.5 39t-22.5 14.5q-7 -1 -23.5 -11t-35.5 -35.5t-19 -56.5zM130 565q0 -23 18.5 -47t35 -36t22.5 -14 q5 1 18.5 11.5t27.5 33.5t14 49q0 33 -17 55.5t-46 22.5q-35 0 -54 -22.5t-19 -52.5z" />
+<glyph d="M48 246q0 9 7 10q148 11 200 164q1 2 0 3.5t-3 1.5t-5 -2q-35 -21 -85 -21q-45 0 -72 33.5t-27 79.5q0 67 44 106.5t97 39.5q54 0 85 -38.5t31 -100.5q0 -61 -17 -110.5t-44.5 -79.5t-58 -51t-62.5 -30.5t-52.5 -13.5t-33.5 -4q-4 0 -4 13zM110 521q0 -38 18 -66t54 -28 q50 0 78 23q13 10 13 80q0 110 -71 110q-38 0 -65 -33.5t-27 -85.5z" />
+<glyph d="M22 5q0 115 58 185.5t129 70.5q53 0 89.5 -45.5t36.5 -116.5q0 -104 -53 -183t-128 -79q-58 0 -95 47.5t-37 120.5zM79 -24q0 -56 21 -83t54 -27q57 0 92 80.5t35 168.5q0 52 -19 83.5t-57 31.5q-52 0 -89 -77.5t-37 -176.5z" />
+<glyph d="M78 -140q0 15 13 15h56q7 45 26 190.5t19 160.5q-5 -1 -32 -6t-28 -5q-7 0 -7 9v8q0 8 8 9q12 1 41 6l53 9t26 4q7 0 7 -8q0 -3 -3.5 -24l-9.5 -57.5t-9 -58.5l-35 -237h58q8 0 8 -16q0 -8 -1 -9.5t-7 -1.5q-4 0 -37.5 1t-44.5 1t-47.5 -1t-43.5 -1t-8.5 2t-1.5 10z" />
+<glyph d="M41 -143q0 6 27 43t31 40q154 139 154 206q0 30 -19 50.5t-55 20.5q-31 0 -56.5 -16.5t-38.5 -32.5t-14 -16q-3 0 -9 4.5t-6 8.5q0 7 19 29t54.5 44t70.5 22q49 0 79 -30.5t30 -77.5q0 -52 -51 -108q-21 -23 -45.5 -43.5t-49.5 -39l-29 -21.5l-38 -43h182l6 17l11 29.5 t7 13.5q18 0 18 -5q0 -2 -5.5 -19.5l-13.5 -41t-11 -36.5q-1 -5 -9 -5h-228q-11 0 -11 7z" />
+<glyph d="M49 -123q0 6 10.5 12t19.5 6q15 0 35 -15.5t35 -15.5q39 0 63.5 26.5t24.5 67.5q0 76 -86 76q-5 0 -17.5 -1t-17.5 -1q-7 0 -7 13q0 15 4 15q36 4 53 11q70 27 70 94q0 30 -16.5 47.5t-41.5 17.5q-20 0 -38 -8.5t-29 -17t-12 -8.5q-3 0 -8 4t-4 8q1 5 14 17t38 23.5 t49 11.5q48 0 75.5 -26.5t27.5 -61.5q0 -19 -8 -35.5t-18.5 -27.5t-26 -21t-26 -14.5l-22.5 -9.5l-13 -5l13 -3q13 -3 23.5 -6t26 -10.5t26 -17t18.5 -25.5t8 -35q0 -57 -46 -89t-105 -32q-25 0 -58.5 13t-33.5 23z" />
+<glyph d="M24 -9q0 15 17 38q18 25 78.5 88.5t82.5 90.5q6 7 15 13t11 8q35 35 40 35q7 0 7 -14l-30 -216q-1 -8 0.5 -9.5t8.5 -1.5h37q6 0 6 -8v-23q0 -5 -1.5 -6t-7.5 -1h-46q-3 0 -4 -0.5t-2.5 -2.5t-1.5 -6q-18 -120 -18 -126q0 -3 -1.5 -4.5t-4.5 -1.5l-2 -1q-16 -4 -41 -4 q-6 0 -4 10l23 126q1 7 -0.5 8.5t-9.5 1.5h-139q-13 0 -13 6zM64 25q0 -2 14 -2h108q6 0 7.5 1.5t3.5 11.5q21 126 21 158q-21 -16 -143 -155q-11 -11 -11 -14z" />
+<glyph d="M43 -152q0 11 7 11q4 0 18.5 -1t26.5 -1q42 0 80.5 29t38.5 78q0 86 -121 106q-14 3 -14 9l2 8q5 13 21 76t23 85q0 4 11 4q2 0 54.5 -5.5t82.5 -5.5q4 0 8 14q2 4 5 4q12 0 12 -4q0 -3 -2 -11t-5 -19t-5 -19q-4 -18 -14 -18q-5 0 -70.5 7.5t-68.5 7.5q-2 0 -4 -4 q-2 -5 -18 -67q0 -3 -1.5 -7t-1.5 -6q0 -4 8 -6q154 -36 154 -128q0 -42 -20 -73t-51 -46.5t-60.5 -23t-55.5 -7.5q-27 0 -37 3q-3 1 -3 10z" />
+<glyph d="M45 -30q0 86 47 157q45 67 115 101.5t102 34.5q7 0 7 -18q0 -1 -7 -3t-22 -7t-30 -11q-101 -43 -136 -147q-4 -12 -3.5 -12.5t11.5 2.5q37 14 60 14q52 0 83 -31.5t31 -80.5q0 -67 -41 -101t-96 -34q-56 0 -88.5 39.5t-32.5 96.5zM93 -42q0 -48 22 -75.5t58 -27.5 q80 0 80 118q0 40 -26 64t-52 24q-24 0 -44 -10.5t-25 -21.5q-13 -32 -13 -71z" />
+<glyph d="M58 164q0 3 4 16.5l10.5 34.5t10.5 39q4 20 9 20q17 0 17 -7q0 -2 -2.5 -9.5t-2.5 -9.5q3 -1 35 -1h182q10 0 10 -7q0 -3 -31 -58l-69.5 -124t-50.5 -93q-27 -51 -32.5 -63.5t-21.5 -57.5q-5 -13 -9 -13q-6 0 -16 4.5t-10 10.5q0 14 14.5 46t40 75l48.5 80.5l50.5 81.5 l36.5 58q4 8 4 9q0 4 -9 4h-127q-56 0 -58 -5l-9 -31q-2 -7 -8 -7q-16 0 -16 7z" />
+<glyph d="M54 -75q0 18 7 35.5t17 29t24 22.5t24 17t21 11.5t12 6.5q-1 1 -9 7t-14.5 12t-16 16.5t-16 21t-11.5 25t-5 28.5q0 46 35.5 76t84.5 30q41 0 70 -26.5t29 -64.5q0 -17 -5.5 -33t-13.5 -27t-19 -21.5t-19 -16t-17 -11t-10 -6.5l6 -5q7 -4 11.5 -7.5l13 -10.5t14.5 -13.5 t13 -16.5t12 -19.5t8 -22t3 -25.5q0 -50 -41 -78.5t-97 -28.5q-45 0 -78 28t-33 67zM98 -65q0 -38 22.5 -58.5t51.5 -20.5q34 0 58 20.5t24 56.5q0 26 -19 51.5t-36.5 39t-22.5 14.5q-7 -1 -23.5 -11t-35.5 -35.5t-19 -56.5zM130 165q0 -23 18.5 -47t35 -36t22.5 -14 q5 1 18.5 11.5t27.5 33.5t14 49q0 33 -17 55.5t-46 22.5q-35 0 -54 -22.5t-19 -52.5z" />
+<glyph d="M48 -154q0 9 7 10q148 11 200 164q1 2 0 3.5t-3 1.5t-5 -2q-35 -21 -85 -21q-45 0 -72 33.5t-27 79.5q0 67 44 106.5t97 39.5q54 0 85 -38.5t31 -100.5q0 -61 -17 -110.5t-44.5 -79.5t-58 -51t-62.5 -30.5t-52.5 -13.5t-33.5 -4q-4 0 -4 13zM110 121q0 -38 18 -66t54 -28 q50 0 78 23q13 10 13 80q0 110 -71 110q-38 0 -65 -33.5t-27 -85.5z" />
+<glyph d="M22 505q0 115 58 185.5t129 70.5q53 0 89.5 -45.5t36.5 -116.5q0 -104 -53 -183t-128 -79q-58 0 -95 47.5t-37 120.5zM79 476q0 -56 21 -83t54 -27q57 0 92 80.5t35 168.5q0 52 -19 83.5t-57 31.5q-52 0 -89 -77.5t-37 -176.5z" />
+<glyph d="M78 360q0 15 13 15h56q7 45 26 190.5t19 160.5q-5 -1 -32 -6t-28 -5q-7 0 -7 9v8q0 8 8 9q12 1 41 6l53 9t26 4q7 0 7 -8q0 -3 -3.5 -24l-9.5 -57.5t-9 -58.5l-35 -237h58q8 0 8 -16q0 -8 -1 -9.5t-7 -1.5q-4 0 -37.5 1t-44.5 1t-47.5 -1t-43.5 -1t-8.5 2t-1.5 10z" />
+<glyph d="M41 357q0 6 27 43t31 40q154 139 154 206q0 30 -19 50.5t-55 20.5q-31 0 -56.5 -16.5t-38.5 -32.5t-14 -16q-3 0 -9 4.5t-6 8.5q0 7 19 29t54.5 44t70.5 22q49 0 79 -30.5t30 -77.5q0 -52 -51 -108q-21 -23 -45.5 -43.5t-49.5 -39l-29 -21.5l-38 -43h182l6 17l11 29.5 t7 13.5q18 0 18 -5q0 -2 -5.5 -19.5l-13.5 -41t-11 -36.5q-1 -5 -9 -5h-228q-11 0 -11 7z" />
+<glyph d="M49 377q0 6 10.5 12t19.5 6q15 0 35 -15.5t35 -15.5q39 0 63.5 26.5t24.5 67.5q0 76 -86 76q-5 0 -17.5 -1t-17.5 -1q-7 0 -7 13q0 15 4 15q36 4 53 11q70 27 70 94q0 30 -16.5 47.5t-41.5 17.5q-20 0 -38 -8.5t-29 -17t-12 -8.5q-3 0 -8 4t-4 8q1 5 14 17t38 23.5 t49 11.5q48 0 75.5 -26.5t27.5 -61.5q0 -19 -8 -35.5t-18.5 -27.5t-26 -21t-26 -14.5l-22.5 -9.5l-13 -5l13 -3q13 -3 23.5 -6t26 -10.5t26 -17t18.5 -25.5t8 -35q0 -57 -46 -89t-105 -32q-25 0 -58.5 13t-33.5 23z" />
+<glyph d="M24 491q0 15 17 38q18 25 78.5 88.5t82.5 90.5q6 7 15 13t11 8q35 35 40 35q7 0 7 -14l-30 -216q-1 -8 0.5 -9.5t8.5 -1.5h37q6 0 6 -8v-23q0 -5 -1.5 -6t-7.5 -1h-46q-3 0 -4 -0.5t-2.5 -2.5t-1.5 -6q-18 -120 -18 -126q0 -3 -1.5 -4.5t-4.5 -1.5l-2 -1q-16 -4 -41 -4 q-6 0 -4 10l23 126q1 7 -0.5 8.5t-9.5 1.5h-139q-13 0 -13 6zM64 525q0 -2 14 -2h108q6 0 7.5 1.5t3.5 11.5q21 126 21 158q-21 -16 -143 -155q-11 -11 -11 -14z" />
+<glyph d="M43 348q0 11 7 11q4 0 18.5 -1t26.5 -1q42 0 80.5 29t38.5 78q0 86 -121 106q-14 3 -14 9l2 8q5 13 21 76t23 85q0 4 11 4q2 0 54.5 -5.5t82.5 -5.5q4 0 8 14q2 4 5 4q12 0 12 -4q0 -3 -2 -11t-5 -19t-5 -19q-4 -18 -14 -18q-5 0 -70.5 7.5t-68.5 7.5q-2 0 -4 -4 q-2 -5 -18 -67q0 -3 -1.5 -7t-1.5 -6q0 -4 8 -6q154 -36 154 -128q0 -42 -20 -73t-51 -46.5t-60.5 -23t-55.5 -7.5q-27 0 -37 3q-3 1 -3 10z" />
+<glyph d="M45 470q0 86 47 157q45 67 115 101.5t102 34.5q7 0 7 -18q0 -1 -7 -3t-22 -7t-30 -11q-101 -43 -136 -147q-4 -12 -3.5 -12.5t11.5 2.5q37 14 60 14q52 0 83 -31.5t31 -80.5q0 -67 -41 -101t-96 -34q-56 0 -88.5 39.5t-32.5 96.5zM93 458q0 -48 22 -75.5t58 -27.5 q80 0 80 118q0 40 -26 64t-52 24q-24 0 -44 -10.5t-25 -21.5q-13 -32 -13 -71z" />
+<glyph d="M58 664q0 3 4 16.5l10.5 34.5t10.5 39q4 20 9 20q17 0 17 -7q0 -2 -2.5 -9.5t-2.5 -9.5q3 -1 35 -1h182q10 0 10 -7q0 -3 -31 -58l-69.5 -124t-50.5 -93q-27 -51 -32.5 -63.5t-21.5 -57.5q-5 -13 -9 -13q-6 0 -16 4.5t-10 10.5q0 14 14.5 46t40 75l48.5 80.5l50.5 81.5 l36.5 58q4 8 4 9q0 4 -9 4h-127q-56 0 -58 -5l-9 -31q-2 -7 -8 -7q-16 0 -16 7z" />
+<glyph d="M54 425q0 18 7 35.5t17 29t24 22.5t24 17t21 11.5t12 6.5q-1 1 -9 7t-14.5 12t-16 16.5t-16 21t-11.5 25t-5 28.5q0 46 35.5 76t84.5 30q41 0 70 -26.5t29 -64.5q0 -17 -5.5 -33t-13.5 -27t-19 -21.5t-19 -16t-17 -11t-10 -6.5l6 -5q7 -4 11.5 -7.5l13 -10.5t14.5 -13.5 t13 -16.5t12 -19.5t8 -22t3 -25.5q0 -50 -41 -78.5t-97 -28.5q-45 0 -78 28t-33 67zM98 435q0 -38 22.5 -58.5t51.5 -20.5q34 0 58 20.5t24 56.5q0 26 -19 51.5t-36.5 39t-22.5 14.5q-7 -1 -23.5 -11t-35.5 -35.5t-19 -56.5zM130 665q0 -23 18.5 -47t35 -36t22.5 -14 q5 1 18.5 11.5t27.5 33.5t14 49q0 33 -17 55.5t-46 22.5q-35 0 -54 -22.5t-19 -52.5z" />
+<glyph d="M48 346q0 9 7 10q148 11 200 164q1 2 0 3.5t-3 1.5t-5 -2q-35 -21 -85 -21q-45 0 -72 33.5t-27 79.5q0 67 44 106.5t97 39.5q54 0 85 -38.5t31 -100.5q0 -61 -17 -110.5t-44.5 -79.5t-58 -51t-62.5 -30.5t-52.5 -13.5t-33.5 -4q-4 0 -4 13zM110 621q0 -38 18 -66t54 -28 q50 0 78 23q13 10 13 80q0 110 -71 110q-38 0 -65 -33.5t-27 -85.5z" />
+<glyph horiz-adv-x="379" d="M30 49q0 38 12.5 83.5t35 88.5t60.5 71.5t83 28.5q28 0 45 -25q3 -4 6.5 -10t6 -9.5t3.5 -3.5q2 2 7 17.5t5 18.5q4 10 34 10q14 0 14 -6q0 -3 -33.5 -121.5t-33.5 -139.5q0 -16 11 -16q7 0 29.5 23.5t23.5 23.5q3 0 6.5 -4t3.5 -9q0 -3 -18.5 -22t-45 -38.5t-42.5 -19.5 q-23 0 -23 21q0 26 44 167q-46 -80 -100 -135q-40 -40 -59 -48q-10 -4 -22 -4q-26 0 -39.5 16.5t-13.5 41.5zM85 80q0 -44 23 -44q21 0 68 52t81 107q12 18 12 44q0 21 -23 34t-45 13q-39 0 -77.5 -75t-38.5 -131z" />
+<glyph horiz-adv-x="408" d="M45 10q0 4 2 7.5t5 7.5l4 4q2 2 5 16q24 132 48 290t24 180q0 5 -5 5q-2 0 -33 -9t-34 -9q-8 0 -8 22q0 9 4 10q119 31 132 31q11 0 11 -9q0 -5 -14.5 -96.5t-19.5 -116.5q-27 -155 -38 -203q39 67 69 106q31 42 54.5 58.5t61.5 16.5q65 0 65 -54q0 -111 -76.5 -193 t-140.5 -82q-17 0 -32.5 6t-24.5 12t-11 6q-1 0 -3.5 -1t-6 -3t-6.5 -3q-14 -7 -23 -7t-9 8zM115 66q0 -20 14 -34t41 -14q34 0 70.5 42t57.5 92t21 81q0 48 -34 48q-35 0 -69 -48q-101 -139 -101 -167z" />
+<glyph horiz-adv-x="357" d="M35 106q0 95 59 156.5t125 61.5q41 0 65 -20t24 -53q0 -18 -10 -29.5t-26 -11.5q-19 0 -19 31q0 3 0.5 10t0.5 10q0 16 -9.5 27.5t-28.5 11.5q-50 0 -87 -55q-38 -56 -38 -126q0 -14 1.5 -23.5t8.5 -26t26.5 -26t49.5 -9.5q32 0 63.5 16t50.5 32t20 16q3 0 7 -4t4 -8 q0 -5 -25 -27t-68 -45t-80 -23q-61 0 -87.5 33.5t-26.5 81.5z" />
+<glyph horiz-adv-x="424" d="M35 61q0 28 12 69t33.5 83t57.5 71.5t77 29.5q15 0 28.5 -2.5t20.5 -5.5t15 -7t9 -4q8 -3 9.5 -2t3.5 10q5 25 12 75.5l12.5 89t5.5 39.5q4 12 -2 12q-1 0 -36.5 -8.5t-37.5 -8.5q-6 0 -3 18q1 10 9 13q32 7 63 14.5t46 11.5t16 4q10 0 10 -13q0 -3 -41.5 -239.5 t-41.5 -261.5q0 -11 10 -11q11 0 29 15t32.5 30t15.5 15q9 0 9 -7q0 -5 -18 -27.5t-51 -46.5t-63 -24q-10 0 -17 8.5t-7 22.5q0 28 33 165q-42 -72 -71 -109q-22 -29 -34 -42.5t-34.5 -27.5t-46.5 -14q-8 0 -16 1.5t-20.5 7t-20.5 20t-8 36.5zM92 85q0 -24 8 -35t28 -11 q35 0 115 115q46 69 46 97q0 11 -24 27.5t-50 16.5q-34 0 -64 -40.5t-44.5 -88t-14.5 -81.5z" />
+<glyph horiz-adv-x="357" d="M35 87q0 95 61 166t143 71q78 0 78 -55q0 -36 -29.5 -64t-73.5 -45q-55 -20 -117 -20q-5 0 -5 -38q0 -72 78 -72q34 0 67.5 18t52.5 35.5t20 17.5q3 0 7.5 -4.5t4.5 -6.5q0 -4 -23.5 -26t-69 -45.5t-89.5 -23.5q-46 0 -75.5 23t-29.5 69zM104 165q0 -4 7 -4 q62 0 106 29.5t44 79.5q0 15 -11 23.5t-29 8.5q-68 0 -106 -99q-11 -29 -11 -38z" />
+<glyph horiz-adv-x="250" d="M-92 -199q0 12 14 23.5t27 11.5q10 0 31 -9.5t36 -9.5q8 0 14.5 5t11 15.5l8.5 20.5t7 26l5 26t4 25.5t3 20.5q9 54 19.5 133t17 132.5t6.5 56.5q0 8 -6 8h-59q-7 0 -7 7q0 4 2 10q1 5 7 5h57q4 0 5.5 0.5t3 2.5t1.5 7q9 80 36 130q37 67 84 94q37 22 77 22q21 0 41 -10 t20 -20q0 -12 -16.5 -24t-29.5 -12q-11 0 -31.5 15.5t-35.5 15.5q-61 0 -91 -216q0 -5 6 -5h69q5 0 5 -2q0 -20 -8 -20h-68h-2q-3 0 -4 -3l-0.5 -2t-0.5 -3t-19 -133.5t-29 -188.5q-3 -17 -9 -38t-25 -58t-44 -55q-48 -35 -76 -35q-20 0 -38.5 10.5t-18.5 20.5z" />
+<glyph horiz-adv-x="377" d="M4 -130q0 33 25 56.5t52 35.5q9 4 9 5t-2 2t-6 2.5t-7 3.5q-21 14 -21 28q0 6 14.5 29.5t22.5 26.5l51 18l4 2q0 1 -5 2q-82 27 -82 109q0 59 43 100t105 41q12 0 24 -2.5t20 -6.5t15.5 -8.5t11.5 -8.5t8 -7l4 -4q2 2 11.5 22.5t11.5 23.5q5 9 18 9q23 0 23 -10 t-9.5 -27.5t-19.5 -31.5t-10 -15q0 -2 1 -5q2 -4 2 -6q6 -22 6 -33q0 -60 -44 -101q-22 -20 -42.5 -28.5t-62.5 -20.5q-77 -21 -77 -38q0 -4 2.5 -7t8 -6t11 -5t15 -4.5t18 -4l20.5 -3.5l21 -3.5t22.5 -4t22.5 -3.5q53 -8 81 -25t28 -55q0 -63 -56 -92t-145 -29 q-143 0 -143 79zM41 -125q0 -32 44 -44.5t95 -12.5q52 0 84 18t32 54q0 25 -22 37t-64 19q-84 15 -90 15q-4 0 -26 -10q-53 -27 -53 -76zM112 189q0 -49 20.5 -70.5t41.5 -21.5q33 0 65 39t32 94q0 30 -19 55t-46 25q-41 0 -67.5 -40t-26.5 -81z" />
+<glyph horiz-adv-x="431" d="M40 5q0 2 5.5 27.5t14.5 72.5l19.5 105.5t22 139.5t19.5 162q2 15 -3 15q-8 0 -39.5 -11.5t-32.5 -11.5q-3 0 -3 13q0 10 6 14q24 9 69 18.5t61 9.5q6 0 6 -13q-4 -75 -76 -436q39 89 92 152q46 56 105 56q50 0 50 -41q0 -31 -27.5 -122.5t-27.5 -99.5q0 -17 15 -17 q9 0 28 18t34.5 36t16.5 18q3 0 7 -4t4 -6q0 -4 -18 -28t-50 -48.5t-61 -24.5q-14 0 -24.5 9.5t-10.5 23.5q0 12 30.5 105.5t30.5 116.5q0 13 -8 22.5t-20 9.5q-27 0 -55 -33.5t-62 -88.5q-4 -7 -13.5 -22.5l-14.5 -24t-10.5 -20.5t-7.5 -22l-15 -67q-2 -11 -50 -11 q-7 0 -7 8z" />
+<glyph horiz-adv-x="235" d="M30 233q0 7 53 46t73 39q7 0 12.5 -5t5.5 -15q0 -22 -27.5 -124t-27.5 -112q0 -16 10 -16q9 0 36.5 26.5t28.5 26.5q3 0 7 -3.5t4 -6.5q0 -11 -53.5 -53t-71.5 -42q-22 0 -22 16q0 21 30 120.5t30 125.5q0 15 -9 15q-13 0 -40 -24.5t-28 -24.5q-4 0 -7.5 4t-3.5 7z M116 453q0 17 9 28t25 11q17 0 27 -13t10 -28q0 -17 -9.5 -27.5t-24.5 -10.5q-17 0 -27 12.5t-10 27.5z" />
+<glyph horiz-adv-x="239" d="M-61 -183q0 13 8.5 22t21.5 9q15 0 31.5 -10t30.5 -10q15 0 22.5 20.5t17.5 66.5q16 75 35.5 199t19.5 142q0 15 -9 15q-13 0 -47 -37l-34 -37q-3 0 -7 3t-4 7t25 30.5t59.5 53.5t55.5 27q7 0 12.5 -5.5t5.5 -15.5q0 -19 -45 -300q-19 -130 -80 -177q-44 -32 -73 -32 q-21 0 -33.5 9t-12.5 20zM125 478q0 17 10 28t26 11q17 0 26.5 -12.5t9.5 -27.5q0 -17 -9.5 -28.5t-24.5 -11.5q-17 0 -27.5 13t-10.5 28z" />
+<glyph horiz-adv-x="421" d="M35 -4q0 3 17.5 85t40 208.5t32.5 225.5q0 7 -5 7q-14 0 -62 -16q-8 -2 -8 7q0 16 7 18q34 8 64.5 16.5l44 12t16.5 3.5q13 0 13 -10q0 -7 -16.5 -88l-37.5 -183t-26 -128q36 64 57 92q28 36 56 53t70 17q50 0 50 -31q0 -35 -27.5 -65t-56.5 -44t-55 -20q-2 0 -8 -1 t-8 -2q14 -7 22 -14q43 -43 61 -64q14 -17 20.5 -24t18 -13t25.5 -6q27 0 27 21q0 3 -0.5 9t-0.5 8q0 11 6 11q19 0 19 -37q0 -19 -32 -33t-60 -14q-19 0 -37 17q-9 9 -19 20.5t-25 31.5t-21 27l-19.5 23.5l-17 20t-5.5 8.5q0 4 14 18q2 2 10 2q11 0 22 4q31 14 59.5 45 t28.5 58q0 15 -25 15q-23 0 -52 -27q-20 -17 -84 -113q-14 -23 -20 -48q-10 -44 -16 -81q-2 -12 -4 -15.5t-6 -3.5l-18 -3q-19 -2 -24 -2t-5 2z" />
+<glyph horiz-adv-x="252" d="M55 24q0 5 15 88t34.5 201t28.5 193q2 8 0.5 11t-9.5 1q-54 -15 -62 -15q-6 0 -4 17q1 9 9 12q32 7 62 15t43.5 12t15.5 4q9 0 9 -8q0 -10 -41.5 -253t-41.5 -246q0 -17 11 -17q10 0 30 17.5t36 35t17 17.5q3 0 8.5 -4.5t5.5 -6.5q0 -4 -23 -29.5t-58 -51.5t-61 -26 q-25 0 -25 33z" />
+<glyph horiz-adv-x="650" d="M30 211q0 10 57 54t84 44q17 0 17 -16q0 -17 -3 -41.5t-6.5 -44t-10 -53t-9.5 -50.5q93 210 185 210q14 0 22 -11.5t8 -27.5q0 -66 -44 -198q69 129 111 179q51 58 94 58t43 -28q0 -24 -30 -118t-30 -108q0 -19 14 -19q10 0 43 34t34 34q3 0 7 -4t4 -7q0 -4 -24 -28.5 t-57.5 -49t-54.5 -24.5q-13 0 -21.5 7.5t-8.5 17.5q0 15 32 113.5t32 125.5q0 17 -15 17q-32 0 -104 -109q-55 -83 -75 -155q-3 -9 -12 -11q-20 -3 -35 -3q-8 0 -8 7l24 91q24 91 24 148q0 30 -16 30q-19 0 -54.5 -51t-64.5 -108q-17 -32 -35 -98q-5 -14 -9 -16 q-30 -12 -41 -12q-7 0 -5 9q10 39 23 123.5t13 122.5q0 13 -10 13q-12 0 -44 -31t-33 -31q-11 0 -11 15z" />
+<glyph horiz-adv-x="465" d="M30 237q0 2 24.5 22t60.5 40.5t58 20.5q19 0 19 -18q0 -17 -5 -44t-9.5 -46t-15.5 -57.5t-14 -50.5q60 105 110.5 160.5t96.5 55.5q43 0 43 -37q0 -25 -32 -120.5t-32 -104.5q0 -16 15 -16q11 0 28.5 15t31.5 30.5t15 15.5q3 0 7 -3t4 -6q0 -4 -20 -26.5t-53.5 -45 t-60.5 -22.5t-27 34q0 24 33 113t33 114q0 23 -18 23q-21 0 -64.5 -54.5t-83.5 -117.5q-20 -31 -37 -93q0 -1 -1.5 -5.5l-2.5 -7.5t-3.5 -6t-5.5 -3q-26 -3 -40 -3q-7 0 -5 9q49 196 49 258q0 15 -10 15q-11 0 -43 -26.5t-33 -26.5q-4 0 -8 4.5t-4 9.5z" />
+<glyph horiz-adv-x="377" d="M30 114q0 92 54.5 153.5t137.5 61.5q59 0 87 -42t28 -90q0 -78 -56.5 -141.5t-133.5 -63.5q-56 0 -86.5 35.5t-30.5 86.5zM83 121q0 -107 65 -107q37 0 69.5 39t49 88t16.5 89q0 29 -15.5 53.5t-54.5 24.5q-47 0 -88.5 -64.5t-41.5 -122.5z" />
+<glyph horiz-adv-x="432" d="M20 186v1q3 6 9 15.5t24.5 33.5t37 43t43 34t46.5 15q15 0 15 -27q0 -45 -26 -184q32 77 81 152q31 48 83 48q37 0 50.5 -20.5t13.5 -56.5q0 -91 -61.5 -169t-126.5 -78q-9 0 -26.5 3t-20.5 3q-9 0 -10 -6l-27 -172q-2 -18 7 -19l16 -2t13.5 -1t11 -1t9 -1t6.5 -1t5 -2 t3.5 -2t2 -3t0.5 -4q0 -12 -4 -14.5t-14 -2.5q-1 0 -23 3t-56.5 5.5t-65.5 2.5q-14 0 -14 9q0 11 3 15t13 4h13q9 0 12.5 3t5.5 14q64 368 64 427q0 14 -9 14q-17 0 -54 -47l-36 -46q-4 0 -9 5t-5 9zM164 42q0 -25 53 -25q42 0 84.5 73t42.5 140q0 52 -36 52q-12 0 -24.5 -8 t-24 -24.5t-18.5 -28t-17.5 -33.5t-13.5 -27q-46 -85 -46 -119z" />
+<glyph horiz-adv-x="397" d="M30 61q0 30 14.5 72t39.5 83.5t66 70.5t88 29q36 0 72 -17l11 -4q7 0 18.5 7t17.5 9q4 1 7 -1.5t3 -7.5t-22 -51q-4 -8 -6 -21l-31.5 -175.5l-32 -180.5t-11.5 -69q0 -8 11 -8h21q13 0 21 -1q12 -1 12 -15v-3v-6t-1.5 -4t-4 -2.5t-7.5 -0.5q-1 0 -11 0.5t-26.5 1 t-32.5 0.5q-11 0 -28.5 -1.5t-30.5 -3t-14 -1.5q-4 0 -6 0.5t-4 3t-2 7.5q1 11 4 13.5t14 4.5q20 4 22 8q2 3 4 13q46 203 77 378q-26 -54 -66 -109q-63 -87 -115 -87q-8 0 -17.5 2t-22.5 8.5t-22 21t-9 36.5zM85 82q0 -22 11 -35t26 -13q35 0 119 120q53 80 53 109 q0 9 -15.5 21.5t-40.5 12.5q-51 0 -102 -81t-51 -134z" />
+<glyph horiz-adv-x="295" d="M25 240q0 10 42 45t66 35q16 0 16 -18q0 -23 -22 -144h2q2 6 12.5 34.5t19.5 49.5t19 38q25 46 61 46q15 0 27 -8t12 -22q0 -32 -19 -32q-9 0 -23.5 7.5t-22.5 7.5q-11 0 -20 -14q-14 -21 -46 -103q-3 -8 -6 -19t-4 -12q-7 -29 -14.5 -68.5t-11.5 -56.5q-1 -4 -18.5 -7 t-26.5 -3q-10 0 -10 4q0 2 10 53l20.5 109.5t10.5 79.5q0 31 -10 31q-13 0 -34 -21l-21 -22q-9 0 -9 10z" />
+<glyph horiz-adv-x="289" d="M20 50q0 9 7 15.5t13 6.5q17 0 37 -20l10 -10.5t10 -10l8 -6.5t9.5 -5t10.5 -1q25 0 41 16t16 43q0 16 -18.5 35.5t-41 35t-41 38.5t-18.5 47q0 40 32.5 68.5t77.5 28.5q33 0 53 -12.5t24 -23t4 -18.5q0 -15 -16 -15q-24 0 -40 30q-12 21 -26 21q-22 0 -39 -12t-17 -39 q0 -26 19 -47t41 -34t41 -37t19 -55q0 -38 -32.5 -66t-77.5 -28q-38 0 -72 17.5t-34 37.5z" />
+<glyph horiz-adv-x="256" d="M35 287q0 1 0.5 7t0.5 8q0 6 8 6h50q7 0 8 6q2 10 6.5 44.5t5.5 38.5q1 5 2.5 8t4.5 4.5t10 2.5q4 1 17 1q25 0 25 -5q0 -1 -4.5 -20.5l-9.5 -42.5t-6 -29t0 -7t7 -1h60q9 0 9 -7q0 -19 -12 -19h-60h-3q-5 0 -6 -4q-1 -2 -1 -3q-35 -191 -35 -205q0 -16 15 -16 q11 0 51 37l40 37q2 0 7.5 -4t5.5 -6q0 -4 -26.5 -33t-64.5 -58.5t-60 -29.5q-30 0 -30 30q0 8 22 126.5t22 120.5q-5 8 -6 8h-40q-13 0 -13 5z" />
+<glyph horiz-adv-x="445" d="M25 212q0 2 10 16t26.5 34t31.5 36q26 26 59 26q47 0 47 -30q0 -11 -26.5 -110t-26.5 -120q0 -19 22 -19q27 0 73 65q59 82 84 164q1 3 10 45q1 5 45 10q8 0 8 -9q0 -4 -22.5 -120.5t-22.5 -125.5q0 -20 15 -20q12 0 40 37l29 37q8 0 8 -7q0 -5 -18.5 -34t-48 -58.5 t-51.5 -29.5q-12 0 -20.5 7t-8.5 17q0 18 18.5 99.5t21.5 102.5q-23 -48 -55 -98q-88 -132 -145 -132q-46 0 -46 36q0 9 25 104t25 126q0 23 -16 23q-12 0 -45 -40l-33 -41q-4 0 -8.5 3t-4.5 6z" />
+<glyph horiz-adv-x="396" d="M30 247q0 10 37.5 44t57.5 34q23 0 36 -8q20 -11 26.5 -18t6.5 -20q0 -32 -11 -108t-11 -88q0 -9 12 -19t16 -10q12 0 20 9q6 7 26 33q83 111 83 178q0 32 -19 32q-9 0 -20.5 -2t-19.5 -4t-9 -2q-6 0 -6 15q0 5 32 12.5t50 7.5q34 0 34 -35q0 -14 -2.5 -28t-8.5 -29.5 l-11 -27.5t-16.5 -30.5l-17 -28t-21 -30.5l-21 -28l-23 -29.5l-21.5 -27.5q-9 -12 -19 -28t-21 -16q-17 0 -36 17q-19 14 -26 27t-7 41q0 15 8.5 85.5t8.5 98.5q0 14 -7 18q-10 7 -19 7q-12 0 -27.5 -13.5t-26.5 -27t-12 -13.5q-4 0 -9.5 4.5t-5.5 7.5z" />
+<glyph horiz-adv-x="589" d="M25 250q0 9 41.5 39.5t61.5 30.5q14 0 38 -15q27 -18 27 -39q0 -25 -5.5 -70t-10.5 -80.5t-5 -36.5q0 -10 10 -22t16 -12q8 0 19 15q8 11 39.5 57.5t40.5 57.5q10 12 19 38.5t9 37.5q0 9 -16 25q-5 5 -11.5 10l-9 7t-2.5 4q0 8 11.5 19.5t20.5 11.5q14 0 37.5 -19.5 t23.5 -31.5q0 -13 -12.5 -97.5t-12.5 -100.5q0 -13 11 -24t20 -11q7 0 24 21q49 56 73 91q36 52 37 116q0 26 -17 26q-9 0 -24.5 -2t-27.5 -4.5t-13 -2.5q-6 0 -6 14q0 5 45 14.5t53 9.5q35 0 35 -33q0 -58 -57 -143q-10 -15 -21 -29t-26 -31.5t-22 -25l-27 -29t-24 -25.5 q-9 -9 -15 -9q-29 0 -49 19.5t-20 45.5q0 19 23 122q-70 -108 -101 -147q-3 -4 -11 -15.5t-11 -15.5q-10 -13 -18 -13q-13 0 -35 19q-19 14 -24.5 23.5t-5.5 30.5q0 11 9.5 70t9.5 105q0 10 -12.5 24t-22.5 14q-12 0 -27.5 -12t-26.5 -24t-12 -12q-5 0 -9 5.5t-4 8.5z" />
+<glyph horiz-adv-x="413" d="M25 19q0 28 22 76q3 4 7 4q13 0 13 -7l-5 -14q-4 -13 -4 -24q0 -18 17 -18q18 0 54 39t61 73q4 7 1 17q-44 122 -82 122q-15 0 -37.5 -24t-24.5 -24q-3 0 -6.5 4.5t-3.5 7.5q0 4 12.5 20.5t37 33.5t49.5 17q19 0 31.5 -5t23.5 -22t16.5 -28.5t17.5 -43.5q5 -12 7 -18 l4 -6l5 8q3 4 18 28.5t23 35t22 27t28 24t28 7.5q21 0 21 -34q0 -17 -5 -47q-1 -4 -9 -4t-8 4q0 5 0.5 14t0.5 13q0 20 -13 20q-26 0 -100 -110q-5 -8 -2 -16q44 -125 72 -125q14 0 33 27l19 27q14 0 14 -7q0 -16 -32.5 -55.5t-60.5 -39.5q-10 0 -18 3t-15 11.5t-12 15.5 t-11 22t-9 24t-10 28.5t-10 29.5q-2 1 -2.5 1t-4.5 -4q-2 -3 -36 -46.5t-59 -64t-49 -20.5q-29 0 -29 23z" />
+<glyph horiz-adv-x="376" d="M0 -217q0 9 3.5 16t11 11.5t14 7t17.5 5.5t16 5q28 11 44 40q49 90 49 146q0 100 -12.5 182t-44.5 82q-14 0 -29.5 -12.5t-25.5 -25t-12 -12.5q-12 0 -12 8q0 4 14 22.5t40 38.5t51 20t40 -14.5t23 -56.5t10.5 -69t5.5 -100q1 -25 2 -38q2 4 22.5 41t28 52t20.5 44.5 t20 52.5q9 29 15 83q1 15 10 15q10 0 20 -6t10 -16q0 -4 -2 -14q-2 -16 -11.5 -40.5t-22 -51.5t-27 -55l-29.5 -54.5l-26.5 -46.5l-20.5 -35l-9 -15l-23 -43.5l-37 -69l-34 -60.5q-12 -19 -32 -31q-47 -29 -61 -29q-7 0 -11.5 7.5t-4.5 15.5z" />
+<glyph horiz-adv-x="353" d="M30 2q0 5 3 11t6.5 9.5t9 9.5t7.5 8l197 220l2 4q-8 -2 -13 -2q-19 0 -63 13.5t-56 13.5q-13 0 -25.5 -10t-20.5 -20t-9 -10q-12 0 -12 7q0 4 11.5 20.5t32.5 34.5t41 18q19 0 70 -18t67 -18q6 0 18 15t23 15q6 0 10 -4.5t4 -10.5q0 -10 -9 -18t-22 -14.5t-17 -10.5 l-183 -202q-4 -4 -4 -6t12 -2q30 -2 96 -7t83 -5q7 0 9.5 3t2.5 11l-1 11v12q0 7 9 7t9 -6q7 -68 7 -71q0 -13 -31 -13h-5q-19 0 -104.5 7t-120.5 7q-3 0 -9.5 -10t-13.5 -10q-11 0 -11 11z" />
+<glyph horiz-adv-x="201" d="M30 205q0 53 15 103t36 83t43.5 58.5t36.5 37.5t16 12q5 0 9.5 -3t4.5 -7l-7 -7q-6 -6 -16 -17.5t-22 -28t-24 -39.5t-22 -49.5t-16.5 -61.5t-6.5 -72q0 -57 11.5 -109t27.5 -85.5t32 -58t27.5 -38.5t11.5 -16q0 -10 -13 -10q-3 0 -18 15.5t-36.5 45.5t-41.5 66.5t-34 85 t-14 95.5z" />
+<glyph horiz-adv-x="201" d="M10 -94l6 6q7 7 17 18.5t22 28t24 40t22 50t16.5 61.5t6.5 72q0 57 -11.5 108.5t-28 85t-32.5 58.5t-27.5 38.5t-11.5 15.5q0 11 14 11q3 0 18 -15.5t36.5 -45.5t41.5 -67t34 -85.5t14 -95.5q0 -53 -15 -103t-36.5 -83t-43.5 -58t-36.5 -37t-16.5 -12q-13 0 -13 9z" />
+<glyph horiz-adv-x="201" d="M30 455q0 53 15 103t36 83t43.5 58.5t36.5 37.5t16 12q5 0 9.5 -3t4.5 -7l-7 -7q-6 -6 -16 -17.5t-22 -28t-24 -39.5t-22 -49.5t-16.5 -61.5t-6.5 -72q0 -57 11.5 -109t27.5 -85.5t32 -58t27.5 -38.5t11.5 -16q0 -10 -13 -10q-3 0 -18 15.5t-36.5 45.5t-41.5 66.5t-34 85 t-14 95.5z" />
+<glyph horiz-adv-x="201" d="M10 156l6 6q7 7 17 18.5t22 28t24 40t22 50t16.5 61.5t6.5 72q0 57 -11.5 108.5t-28 85t-32.5 58.5t-27.5 38.5t-11.5 15.5q0 11 14 11q3 0 18 -15.5t36.5 -45.5t41.5 -67t34 -85.5t14 -95.5q0 -53 -15 -103t-36.5 -83t-43.5 -58t-36.5 -37t-16.5 -12q-13 0 -13 9z" />
+<glyph horiz-adv-x="201" d="M30 55q0 53 15 103t36 83t43.5 58.5t36.5 37.5t16 12q5 0 9.5 -3t4.5 -7l-7 -7q-6 -6 -16 -17.5t-22 -28t-24 -39.5t-22 -49.5t-16.5 -61.5t-6.5 -72q0 -57 11.5 -109t27.5 -85.5t32 -58t27.5 -38.5t11.5 -16q0 -10 -13 -10q-3 0 -18 15.5t-36.5 45.5t-41.5 66.5t-34 85 t-14 95.5z" />
+<glyph horiz-adv-x="201" d="M10 -244l6 6q7 7 17 18.5t22 28t24 40t22 50t16.5 61.5t6.5 72q0 57 -11.5 108.5t-28 85t-32.5 58.5t-27.5 38.5t-11.5 15.5q0 11 14 11q3 0 18 -15.5t36.5 -45.5t41.5 -67t34 -85.5t14 -95.5q0 -53 -15 -103t-36.5 -83t-43.5 -58t-36.5 -37t-16.5 -12q-13 0 -13 9z" />
+<glyph horiz-adv-x="201" d="M30 555q0 53 15 103t36 83t43.5 58.5t36.5 37.5t16 12q5 0 9.5 -3t4.5 -7l-7 -7q-6 -6 -16 -17.5t-22 -28t-24 -39.5t-22 -49.5t-16.5 -61.5t-6.5 -72q0 -57 11.5 -109t27.5 -85.5t32 -58t27.5 -38.5t11.5 -16q0 -10 -13 -10q-3 0 -18 15.5t-36.5 45.5t-41.5 66.5t-34 85 t-14 95.5z" />
+<glyph horiz-adv-x="201" d="M10 256l6 6q7 7 17 18.5t22 28t24 40t22 50t16.5 61.5t6.5 72q0 57 -11.5 108.5t-28 85t-32.5 58.5t-27.5 38.5t-11.5 15.5q0 11 14 11q3 0 18 -15.5t36.5 -45.5t41.5 -67t34 -85.5t14 -95.5q0 -53 -15 -103t-36.5 -83t-43.5 -58t-36.5 -37t-16.5 -12q-13 0 -13 9z" />
+<glyph horiz-adv-x="246" d="M90 -95v583q0 11 11 11h124q7 0 9 -1.5t2 -6.5v-12q0 -8 -2 -9.5t-9 -1.5h-84q-7 0 -8.5 -1.5t-1.5 -7.5v-526q0 -4 0.5 -5.5t2.5 -2.5t7 -1h84q5 0 7 -0.5t3 -2.5t1 -7v-11q0 -6 -2 -7.5t-9 -1.5h-124q-8 0 -9.5 1.5t-1.5 9.5z" />
+<glyph horiz-adv-x="246" d="M10 -86q0 7 1.5 8.5t8.5 1.5h84q7 0 9 1.5t2 7.5v526q0 6 -2 7.5t-9 1.5h-84q-7 0 -8.5 1.5t-1.5 9.5v11q0 4 0.5 5.5t2.5 2.5t7 1h124q8 0 10 -1.5t2 -9.5v-583q0 -11 -11 -11h-125q-8 0 -9 1t-1 6v13z" />
+<glyph horiz-adv-x="246" d="M90 155v583q0 11 11 11h124q7 0 9 -1.5t2 -6.5v-12q0 -8 -2 -9.5t-9 -1.5h-84q-7 0 -8.5 -1.5t-1.5 -7.5v-526q0 -4 0.5 -5.5t2.5 -2.5t7 -1h84q5 0 7 -0.5t3 -2.5t1 -7v-11q0 -6 -2 -7.5t-9 -1.5h-124q-8 0 -9.5 1.5t-1.5 9.5z" />
+<glyph horiz-adv-x="246" d="M10 164q0 7 1.5 8.5t8.5 1.5h84q7 0 9 1.5t2 7.5v526q0 6 -2 7.5t-9 1.5h-84q-7 0 -8.5 1.5t-1.5 9.5v11q0 4 0.5 5.5t2.5 2.5t7 1h124q8 0 10 -1.5t2 -9.5v-583q0 -11 -11 -11h-125q-8 0 -9 1t-1 6v13z" />
+<glyph horiz-adv-x="246" d="M90 -245v583q0 11 11 11h124q7 0 9 -1.5t2 -6.5v-12q0 -8 -2 -9.5t-9 -1.5h-84q-7 0 -8.5 -1.5t-1.5 -7.5v-526q0 -4 0.5 -5.5t2.5 -2.5t7 -1h84q5 0 7 -0.5t3 -2.5t1 -7v-11q0 -6 -2 -7.5t-9 -1.5h-124q-8 0 -9.5 1.5t-1.5 9.5z" />
+<glyph horiz-adv-x="246" d="M10 -236q0 7 1.5 8.5t8.5 1.5h84q7 0 9 1.5t2 7.5v526q0 6 -2 7.5t-9 1.5h-84q-7 0 -8.5 1.5t-1.5 9.5v11q0 4 0.5 5.5t2.5 2.5t7 1h124q8 0 10 -1.5t2 -9.5v-583q0 -11 -11 -11h-125q-8 0 -9 1t-1 6v13z" />
+<glyph horiz-adv-x="246" d="M90 255v583q0 11 11 11h124q7 0 9 -1.5t2 -6.5v-12q0 -8 -2 -9.5t-9 -1.5h-84q-7 0 -8.5 -1.5t-1.5 -7.5v-526q0 -4 0.5 -5.5t2.5 -2.5t7 -1h84q5 0 7 -0.5t3 -2.5t1 -7v-11q0 -6 -2 -7.5t-9 -1.5h-124q-8 0 -9.5 1.5t-1.5 9.5z" />
+<glyph horiz-adv-x="246" d="M10 264q0 7 1.5 8.5t8.5 1.5h84q7 0 9 1.5t2 7.5v526q0 6 -2 7.5t-9 1.5h-84q-7 0 -8.5 1.5t-1.5 9.5v11q0 4 0.5 5.5t2.5 2.5t7 1h124q8 0 10 -1.5t2 -9.5v-583q0 -11 -11 -11h-125q-8 0 -9 1t-1 6v13z" />
+<glyph horiz-adv-x="186" d="M0 -109q0 1 5 5l15 11.5t18 15.5q41 41 41 69q0 14 -13 30q-5 7 -14 16t-14 14.5t-5 7.5q0 5 17.5 14.5t28.5 9.5t30 -20.5t19 -48.5q0 -24 -28 -59.5t-55 -59t-30 -23.5q-4 0 -9.5 6.5t-5.5 11.5z" />
+<glyph horiz-adv-x="152" d="M25 33q0 17 14.5 32t27.5 15q12 0 26 -14.5t14 -27.5q0 -21 -13 -33.5t-23 -12.5q-17 0 -31.5 14.5t-14.5 26.5z" />
+<glyph horiz-adv-x="186" d="M0 141q0 1 5 5l15 11.5t18 15.5q41 41 41 69q0 14 -13 30q-5 7 -14 16t-14 14.5t-5 7.5q0 5 17.5 14.5t28.5 9.5t30 -20.5t19 -48.5q0 -24 -28 -59.5t-55 -59t-30 -23.5q-4 0 -9.5 6.5t-5.5 11.5z" />
+<glyph horiz-adv-x="152" d="M25 283q0 17 14.5 32t27.5 15q12 0 26 -14.5t14 -27.5q0 -21 -13 -33.5t-23 -12.5q-17 0 -31.5 14.5t-14.5 26.5z" />
+<glyph horiz-adv-x="186" d="M0 -259q0 1 5 5l15 11.5t18 15.5q41 41 41 69q0 14 -13 30q-5 7 -14 16t-14 14.5t-5 7.5q0 5 17.5 14.5t28.5 9.5t30 -20.5t19 -48.5q0 -24 -28 -59.5t-55 -59t-30 -23.5q-4 0 -9.5 6.5t-5.5 11.5z" />
+<glyph horiz-adv-x="152" d="M25 -117q0 17 14.5 32t27.5 15q12 0 26 -14.5t14 -27.5q0 -21 -13 -33.5t-23 -12.5q-17 0 -31.5 14.5t-14.5 26.5z" />
+<glyph horiz-adv-x="186" d="M0 241q0 1 5 5l15 11.5t18 15.5q41 41 41 69q0 14 -13 30q-5 7 -14 16t-14 14.5t-5 7.5q0 5 17.5 14.5t28.5 9.5t30 -20.5t19 -48.5q0 -24 -28 -59.5t-55 -59t-30 -23.5q-4 0 -9.5 6.5t-5.5 11.5z" />
+<glyph horiz-adv-x="152" d="M25 383q0 17 14.5 32t27.5 15q12 0 26 -14.5t14 -27.5q0 -21 -13 -33.5t-23 -12.5q-17 0 -31.5 14.5t-14.5 26.5z" />
+<glyph horiz-adv-x="223" d="M20 168q0 11 5 23.5t11 13.5q5 1 82 3.5t83 2.5q2 0 2 -8q0 -30 -7 -30q-96 -8 -172 -8q-4 0 -4 3z" />
+<glyph horiz-adv-x="223" d="M20 418q0 11 5 23.5t11 13.5q5 1 82 3.5t83 2.5q2 0 2 -8q0 -30 -7 -30q-96 -8 -172 -8q-4 0 -4 3z" />
+<glyph horiz-adv-x="223" d="M20 18q0 11 5 23.5t11 13.5q5 1 82 3.5t83 2.5q2 0 2 -8q0 -30 -7 -30q-96 -8 -172 -8q-4 0 -4 3z" />
+<glyph horiz-adv-x="223" d="M20 518q0 11 5 23.5t11 13.5q5 1 82 3.5t83 2.5q2 0 2 -8q0 -30 -7 -30q-96 -8 -172 -8q-4 0 -4 3z" />
+<glyph horiz-adv-x="350" d="M37 58q0 9 9.5 13.5t17.5 4.5q4 0 7 -2.5t5 -5t5.5 -8.5t5.5 -9q21 -30 55 -32q4 0 4.5 0.5t0.5 4.5l14 152q1 9 -6 12q-22 11 -34.5 18.5t-29 20.5t-24 30t-7.5 38q0 46 35 77.5t82 36.5q4 0 4 4l3 34q1 10 10 10h6q9 0 7 -10l-3 -33q0 -4 2 -4q39 -3 63.5 -24t24.5 -41 q0 -10 -10 -16.5t-17 -6.5q-8 0 -10 9.5t-2.5 21t-12 22.5t-36.5 13q-5 0 -5 -3l-13 -150q-1 -9 2 -10q2 0 3 -1q23 -11 35 -18t29 -20.5t25 -30t8 -37.5q0 -52 -31.5 -84t-84.5 -37q-5 0 -6 -0.5t-1 -4.5l-7 -80q-1 -11 -12 -11t-10 11l7 80q0 4 -0.5 4.5t-5.5 0.5 q-41 3 -71.5 21t-30.5 40zM105 302q0 -24 15 -38t43 -27q2 -1 2.5 -0.5t0.5 4.5l13 144q0 3 -6 2q-16 -3 -27 -11q-41 -23 -41 -74zM170 27q-1 -6 1.5 -7t7.5 1q28 8 46.5 31t18.5 51q0 40 -57 70l-4 -1z" />
+<glyph horiz-adv-x="350" d="M37 308q0 9 9.5 13.5t17.5 4.5q4 0 7 -2.5t5 -5t5.5 -8.5t5.5 -9q21 -30 55 -32q4 0 4.5 0.5t0.5 4.5l14 152q1 9 -6 12q-22 11 -34.5 18.5t-29 20.5t-24 30t-7.5 38q0 46 35 77.5t82 36.5q4 0 4 4l3 34q1 10 10 10h6q9 0 7 -10l-3 -33q0 -4 2 -4q39 -3 63.5 -24 t24.5 -41q0 -10 -10 -16.5t-17 -6.5q-8 0 -10 9.5t-2.5 21t-12 22.5t-36.5 13q-5 0 -5 -3l-13 -150q-1 -9 2 -10q2 0 3 -1q23 -11 35 -18t29 -20.5t25 -30t8 -37.5q0 -52 -31.5 -84t-84.5 -37q-5 0 -6 -0.5t-1 -4.5l-7 -80q-1 -11 -12 -11t-10 11l7 80q0 4 -0.5 4.5 t-5.5 0.5q-41 3 -71.5 21t-30.5 40zM105 552q0 -24 15 -38t43 -27q2 -1 2.5 -0.5t0.5 4.5l13 144q0 3 -6 2q-16 -3 -27 -11q-41 -23 -41 -74zM170 277q-1 -6 1.5 -7t7.5 1q28 8 46.5 31t18.5 51q0 40 -57 70l-4 -1z" />
+<glyph horiz-adv-x="350" d="M37 -92q0 9 9.5 13.5t17.5 4.5q4 0 7 -2.5t5 -5t5.5 -8.5t5.5 -9q21 -30 55 -32q4 0 4.5 0.5t0.5 4.5l14 152q1 9 -6 12q-22 11 -34.5 18.5t-29 20.5t-24 30t-7.5 38q0 46 35 77.5t82 36.5q4 0 4 4l3 34q1 10 10 10h6q9 0 7 -10l-3 -33q0 -4 2 -4q39 -3 63.5 -24 t24.5 -41q0 -10 -10 -16.5t-17 -6.5q-8 0 -10 9.5t-2.5 21t-12 22.5t-36.5 13q-5 0 -5 -3l-13 -150q-1 -9 2 -10q2 0 3 -1q23 -11 35 -18t29 -20.5t25 -30t8 -37.5q0 -52 -31.5 -84t-84.5 -37q-5 0 -6 -0.5t-1 -4.5l-7 -80q-1 -11 -12 -11t-10 11l7 80q0 4 -0.5 4.5 t-5.5 0.5q-41 3 -71.5 21t-30.5 40zM105 152q0 -24 15 -38t43 -27q2 -1 2.5 -0.5t0.5 4.5l13 144q0 3 -6 2q-16 -3 -27 -11q-41 -23 -41 -74zM170 -123q-1 -6 1.5 -7t7.5 1q28 8 46.5 31t18.5 51q0 40 -57 70l-4 -1z" />
+<glyph horiz-adv-x="350" d="M37 408q0 9 9.5 13.5t17.5 4.5q4 0 7 -2.5t5 -5t5.5 -8.5t5.5 -9q21 -30 55 -32q4 0 4.5 0.5t0.5 4.5l14 152q1 9 -6 12q-22 11 -34.5 18.5t-29 20.5t-24 30t-7.5 38q0 46 35 77.5t82 36.5q4 0 4 4l3 34q1 10 10 10h6q9 0 7 -10l-3 -33q0 -4 2 -4q39 -3 63.5 -24 t24.5 -41q0 -10 -10 -16.5t-17 -6.5q-8 0 -10 9.5t-2.5 21t-12 22.5t-36.5 13q-5 0 -5 -3l-13 -150q-1 -9 2 -10q2 0 3 -1q23 -11 35 -18t29 -20.5t25 -30t8 -37.5q0 -52 -31.5 -84t-84.5 -37q-5 0 -6 -0.5t-1 -4.5l-7 -80q-1 -11 -12 -11t-10 11l7 80q0 4 -0.5 4.5 t-5.5 0.5q-41 3 -71.5 21t-30.5 40zM105 652q0 -24 15 -38t43 -27q2 -1 2.5 -0.5t0.5 4.5l13 144q0 3 -6 2q-16 -3 -27 -11q-41 -23 -41 -74zM170 377q-1 -6 1.5 -7t7.5 1q28 8 46.5 31t18.5 51q0 40 -57 70l-4 -1z" />
+<glyph d="M60 114q0 74 44.5 121.5t98.5 51.5q5 0 7 10q2 11 4 24t3.5 21t2.5 11q0 2 3 2h7q6 0 6 -2l-11 -56q-2 -10 8 -11q23 -5 39.5 -22.5t16.5 -38.5q0 -13 -8 -18q-14 -10 -22 -10q-7 0 -9 6q0 4 -1 12l-1.5 12t-1.5 11t-2.5 10.5l-3.5 8t-5 7.5t-7 4q-6 2 -8 -6l-38 -224 q0 -8 2 -9q4 -3 23 -3q17 1 33.5 7t25.5 11l9 6q5 0 5 -6q0 -1 -7 -8q-41 -41 -92 -41q-8 0 -9 -8q-13 -69 -16 -79h-14q3 18 14 78q3 11 -6 12q-42 9 -66 40t-24 76zM107 135q0 -72 50 -99q1 -1 4 -1q4 0 4 5l38 219q0 9 -5 9q-38 -3 -64.5 -45t-26.5 -88z" />
+<glyph d="M60 364q0 74 44.5 121.5t98.5 51.5q5 0 7 10q2 11 4 24t3.5 21t2.5 11q0 2 3 2h7q6 0 6 -2l-11 -56q-2 -10 8 -11q23 -5 39.5 -22.5t16.5 -38.5q0 -13 -8 -18q-14 -10 -22 -10q-7 0 -9 6q0 4 -1 12l-1.5 12t-1.5 11t-2.5 10.5l-3.5 8t-5 7.5t-7 4q-6 2 -8 -6l-38 -224 q0 -8 2 -9q4 -3 23 -3q17 1 33.5 7t25.5 11l9 6q5 0 5 -6q0 -1 -7 -8q-41 -41 -92 -41q-8 0 -9 -8q-13 -69 -16 -79h-14q3 18 14 78q3 11 -6 12q-42 9 -66 40t-24 76zM107 385q0 -72 50 -99q1 -1 4 -1q4 0 4 5l38 219q0 9 -5 9q-38 -3 -64.5 -45t-26.5 -88z" />
+<glyph d="M60 -36q0 74 44.5 121.5t98.5 51.5q5 0 7 10q2 11 4 24t3.5 21t2.5 11q0 2 3 2h7q6 0 6 -2l-11 -56q-2 -10 8 -11q23 -5 39.5 -22.5t16.5 -38.5q0 -13 -8 -18q-14 -10 -22 -10q-7 0 -9 6q0 4 -1 12l-1.5 12t-1.5 11t-2.5 10.5l-3.5 8t-5 7.5t-7 4q-6 2 -8 -6l-38 -224 q0 -8 2 -9q4 -3 23 -3q17 1 33.5 7t25.5 11l9 6q5 0 5 -6q0 -1 -7 -8q-41 -41 -92 -41q-8 0 -9 -8q-13 -69 -16 -79h-14q3 18 14 78q3 11 -6 12q-42 9 -66 40t-24 76zM107 -15q0 -72 50 -99q1 -1 4 -1q4 0 4 5l38 219q0 9 -5 9q-38 -3 -64.5 -45t-26.5 -88z" />
+<glyph d="M60 464q0 74 44.5 121.5t98.5 51.5q5 0 7 10q2 11 4 24t3.5 21t2.5 11q0 2 3 2h7q6 0 6 -2l-11 -56q-2 -10 8 -11q23 -5 39.5 -22.5t16.5 -38.5q0 -13 -8 -18q-14 -10 -22 -10q-7 0 -9 6q0 4 -1 12l-1.5 12t-1.5 11t-2.5 10.5l-3.5 8t-5 7.5t-7 4q-6 2 -8 -6l-38 -224 q0 -8 2 -9q4 -3 23 -3q17 1 33.5 7t25.5 11l9 6q5 0 5 -6q0 -1 -7 -8q-41 -41 -92 -41q-8 0 -9 -8q-13 -69 -16 -79h-14q3 18 14 78q3 11 -6 12q-42 9 -66 40t-24 76zM107 485q0 -72 50 -99q1 -1 4 -1q4 0 4 5l38 219q0 9 -5 9q-38 -3 -64.5 -45t-26.5 -88z" />
+<glyph horiz-adv-x="379" d="M30 299q0 38 12.5 83.5t35 88.5t60.5 71.5t83 28.5q28 0 45 -25q3 -4 6.5 -10t6 -9.5t3.5 -3.5q2 2 7 17.5t5 18.5q4 10 34 10q14 0 14 -6q0 -3 -33.5 -121.5t-33.5 -139.5q0 -16 11 -16q7 0 29.5 23.5t23.5 23.5q3 0 6.5 -4t3.5 -9q0 -3 -18.5 -22t-45 -38.5 t-42.5 -19.5q-23 0 -23 21q0 26 44 167q-46 -80 -100 -135q-40 -40 -59 -48q-10 -4 -22 -4q-26 0 -39.5 16.5t-13.5 41.5zM85 330q0 -44 23 -44q21 0 68 52t81 107q12 18 12 44q0 21 -23 34t-45 13q-39 0 -77.5 -75t-38.5 -131z" />
+<glyph horiz-adv-x="408" d="M45 260q0 4 2 7.5t5 7.5l4 4q2 2 5 16q24 132 48 290t24 180q0 5 -5 5q-2 0 -33 -9t-34 -9q-8 0 -8 22q0 9 4 10q119 31 132 31q11 0 11 -9q0 -5 -14.5 -96.5t-19.5 -116.5q-27 -155 -38 -203q39 67 69 106q31 42 54.5 58.5t61.5 16.5q65 0 65 -54q0 -111 -76.5 -193 t-140.5 -82q-17 0 -32.5 6t-24.5 12t-11 6q-1 0 -3.5 -1t-6 -3t-6.5 -3q-14 -7 -23 -7t-9 8zM115 316q0 -20 14 -34t41 -14q34 0 70.5 42t57.5 92t21 81q0 48 -34 48q-35 0 -69 -48q-101 -139 -101 -167z" />
+<glyph horiz-adv-x="357" d="M35 356q0 95 59 156.5t125 61.5q41 0 65 -20t24 -53q0 -18 -10 -29.5t-26 -11.5q-19 0 -19 31q0 3 0.5 10t0.5 10q0 16 -9.5 27.5t-28.5 11.5q-50 0 -87 -55q-38 -56 -38 -126q0 -14 1.5 -23.5t8.5 -26t26.5 -26t49.5 -9.5q32 0 63.5 16t50.5 32t20 16q3 0 7 -4t4 -8 q0 -5 -25 -27t-68 -45t-80 -23q-61 0 -87.5 33.5t-26.5 81.5z" />
+<glyph horiz-adv-x="424" d="M35 311q0 28 12 69t33.5 83t57.5 71.5t77 29.5q15 0 28.5 -2.5t20.5 -5.5t15 -7t9 -4q8 -3 9.5 -2t3.5 10q5 25 12 75.5l12.5 89t5.5 39.5q4 12 -2 12q-1 0 -36.5 -8.5t-37.5 -8.5q-6 0 -3 18q1 10 9 13q32 7 63 14.5t46 11.5t16 4q10 0 10 -13q0 -3 -41.5 -239.5 t-41.5 -261.5q0 -11 10 -11q11 0 29 15t32.5 30t15.5 15q9 0 9 -7q0 -5 -18 -27.5t-51 -46.5t-63 -24q-10 0 -17 8.5t-7 22.5q0 28 33 165q-42 -72 -71 -109q-22 -29 -34 -42.5t-34.5 -27.5t-46.5 -14q-8 0 -16 1.5t-20.5 7t-20.5 20t-8 36.5zM92 335q0 -24 8 -35t28 -11 q35 0 115 115q46 69 46 97q0 11 -24 27.5t-50 16.5q-34 0 -64 -40.5t-44.5 -88t-14.5 -81.5z" />
+<glyph horiz-adv-x="357" d="M35 337q0 95 61 166t143 71q78 0 78 -55q0 -36 -29.5 -64t-73.5 -45q-55 -20 -117 -20q-5 0 -5 -38q0 -72 78 -72q34 0 67.5 18t52.5 35.5t20 17.5q3 0 7.5 -4.5t4.5 -6.5q0 -4 -23.5 -26t-69 -45.5t-89.5 -23.5q-46 0 -75.5 23t-29.5 69zM104 415q0 -4 7 -4 q62 0 106 29.5t44 79.5q0 15 -11 23.5t-29 8.5q-68 0 -106 -99q-11 -29 -11 -38z" />
+<glyph horiz-adv-x="250" d="M-92 51q0 12 14 23.5t27 11.5q10 0 31 -9.5t36 -9.5q8 0 14.5 5t11 15.5l8.5 20.5t7 26l5 26t4 25.5t3 20.5q9 54 19.5 133t17 132.5t6.5 56.5q0 8 -6 8h-59q-7 0 -7 7q0 4 2 10q1 5 7 5h57q4 0 5.5 0.5t3 2.5t1.5 7q9 80 36 130q37 67 84 94q37 22 77 22q21 0 41 -10 t20 -20q0 -12 -16.5 -24t-29.5 -12q-11 0 -31.5 15.5t-35.5 15.5q-61 0 -91 -216q0 -5 6 -5h69q5 0 5 -2q0 -20 -8 -20h-68h-2q-3 0 -4 -3l-0.5 -2t-0.5 -3t-19 -133.5t-29 -188.5q-3 -17 -9 -38t-25 -58t-44 -55q-48 -35 -76 -35q-20 0 -38.5 10.5t-18.5 20.5z" />
+<glyph horiz-adv-x="377" d="M4 120q0 33 25 56.5t52 35.5q9 4 9 5t-2 2t-6 2.5t-7 3.5q-21 14 -21 28q0 6 14.5 29.5t22.5 26.5l51 18l4 2q0 1 -5 2q-82 27 -82 109q0 59 43 100t105 41q12 0 24 -2.5t20 -6.5t15.5 -8.5t11.5 -8.5t8 -7l4 -4q2 2 11.5 22.5t11.5 23.5q5 9 18 9q23 0 23 -10 t-9.5 -27.5t-19.5 -31.5t-10 -15q0 -2 1 -5q2 -4 2 -6q6 -22 6 -33q0 -60 -44 -101q-22 -20 -42.5 -28.5t-62.5 -20.5q-77 -21 -77 -38q0 -4 2.5 -7t8 -6t11 -5t15 -4.5t18 -4l20.5 -3.5l21 -3.5t22.5 -4t22.5 -3.5q53 -8 81 -25t28 -55q0 -63 -56 -92t-145 -29 q-143 0 -143 79zM41 125q0 -32 44 -44.5t95 -12.5q52 0 84 18t32 54q0 25 -22 37t-64 19q-84 15 -90 15q-4 0 -26 -10q-53 -27 -53 -76zM112 439q0 -49 20.5 -70.5t41.5 -21.5q33 0 65 39t32 94q0 30 -19 55t-46 25q-41 0 -67.5 -40t-26.5 -81z" />
+<glyph horiz-adv-x="431" d="M40 255q0 2 5.5 27.5t14.5 72.5l19.5 105.5t22 139.5t19.5 162q2 15 -3 15q-8 0 -39.5 -11.5t-32.5 -11.5q-3 0 -3 13q0 10 6 14q24 9 69 18.5t61 9.5q6 0 6 -13q-4 -75 -76 -436q39 89 92 152q46 56 105 56q50 0 50 -41q0 -31 -27.5 -122.5t-27.5 -99.5q0 -17 15 -17 q9 0 28 18t34.5 36t16.5 18q3 0 7 -4t4 -6q0 -4 -18 -28t-50 -48.5t-61 -24.5q-14 0 -24.5 9.5t-10.5 23.5q0 12 30.5 105.5t30.5 116.5q0 13 -8 22.5t-20 9.5q-27 0 -55 -33.5t-62 -88.5q-4 -7 -13.5 -22.5l-14.5 -24t-10.5 -20.5t-7.5 -22l-15 -67q-2 -11 -50 -11 q-7 0 -7 8z" />
+<glyph horiz-adv-x="235" d="M30 483q0 7 53 46t73 39q7 0 12.5 -5t5.5 -15q0 -22 -27.5 -124t-27.5 -112q0 -16 10 -16q9 0 36.5 26.5t28.5 26.5q3 0 7 -3.5t4 -6.5q0 -11 -53.5 -53t-71.5 -42q-22 0 -22 16q0 21 30 120.5t30 125.5q0 15 -9 15q-13 0 -40 -24.5t-28 -24.5q-4 0 -7.5 4t-3.5 7z M116 703q0 17 9 28t25 11q17 0 27 -13t10 -28q0 -17 -9.5 -27.5t-24.5 -10.5q-17 0 -27 12.5t-10 27.5z" />
+<glyph horiz-adv-x="239" d="M-61 67q0 13 8.5 22t21.5 9q15 0 31.5 -10t30.5 -10q15 0 22.5 20.5t17.5 66.5q16 75 35.5 199t19.5 142q0 15 -9 15q-13 0 -47 -37l-34 -37q-3 0 -7 3t-4 7t25 30.5t59.5 53.5t55.5 27q7 0 12.5 -5.5t5.5 -15.5q0 -19 -45 -300q-19 -130 -80 -177q-44 -32 -73 -32 q-21 0 -33.5 9t-12.5 20zM125 728q0 17 10 28t26 11q17 0 26.5 -12.5t9.5 -27.5q0 -17 -9.5 -28.5t-24.5 -11.5q-17 0 -27.5 13t-10.5 28z" />
+<glyph horiz-adv-x="421" d="M35 246q0 3 17.5 85t40 208.5t32.5 225.5q0 7 -5 7q-14 0 -62 -16q-8 -2 -8 7q0 16 7 18q34 8 64.5 16.5l44 12t16.5 3.5q13 0 13 -10q0 -7 -16.5 -88l-37.5 -183t-26 -128q36 64 57 92q28 36 56 53t70 17q50 0 50 -31q0 -35 -27.5 -65t-56.5 -44t-55 -20q-2 0 -8 -1 t-8 -2q14 -7 22 -14q43 -43 61 -64q14 -17 20.5 -24t18 -13t25.5 -6q27 0 27 21q0 3 -0.5 9t-0.5 8q0 11 6 11q19 0 19 -37q0 -19 -32 -33t-60 -14q-19 0 -37 17q-9 9 -19 20.5t-25 31.5t-21 27l-19.5 23.5l-17 20t-5.5 8.5q0 4 14 18q2 2 10 2q11 0 22 4q31 14 59.5 45 t28.5 58q0 15 -25 15q-23 0 -52 -27q-20 -17 -84 -113q-14 -23 -20 -48q-10 -44 -16 -81q-2 -12 -4 -15.5t-6 -3.5l-18 -3q-19 -2 -24 -2t-5 2z" />
+<glyph horiz-adv-x="252" d="M55 274q0 5 15 88t34.5 201t28.5 193q2 8 0.5 11t-9.5 1q-54 -15 -62 -15q-6 0 -4 17q1 9 9 12q32 7 62 15t43.5 12t15.5 4q9 0 9 -8q0 -10 -41.5 -253t-41.5 -246q0 -17 11 -17q10 0 30 17.5t36 35t17 17.5q3 0 8.5 -4.5t5.5 -6.5q0 -4 -23 -29.5t-58 -51.5t-61 -26 q-25 0 -25 33z" />
+<glyph horiz-adv-x="650" d="M30 461q0 10 57 54t84 44q17 0 17 -16q0 -17 -3 -41.5t-6.5 -44t-10 -53t-9.5 -50.5q93 210 185 210q14 0 22 -11.5t8 -27.5q0 -66 -44 -198q69 129 111 179q51 58 94 58t43 -28q0 -24 -30 -118t-30 -108q0 -19 14 -19q10 0 43 34t34 34q3 0 7 -4t4 -7q0 -4 -24 -28.5 t-57.5 -49t-54.5 -24.5q-13 0 -21.5 7.5t-8.5 17.5q0 15 32 113.5t32 125.5q0 17 -15 17q-32 0 -104 -109q-55 -83 -75 -155q-3 -9 -12 -11q-20 -3 -35 -3q-8 0 -8 7l24 91q24 91 24 148q0 30 -16 30q-19 0 -54.5 -51t-64.5 -108q-17 -32 -35 -98q-5 -14 -9 -16 q-30 -12 -41 -12q-7 0 -5 9q10 39 23 123.5t13 122.5q0 13 -10 13q-12 0 -44 -31t-33 -31q-11 0 -11 15z" />
+<glyph horiz-adv-x="465" d="M30 487q0 2 24.5 22t60.5 40.5t58 20.5q19 0 19 -18q0 -17 -5 -44t-9.5 -46t-15.5 -57.5t-14 -50.5q60 105 110.5 160.5t96.5 55.5q43 0 43 -37q0 -25 -32 -120.5t-32 -104.5q0 -16 15 -16q11 0 28.5 15t31.5 30.5t15 15.5q3 0 7 -3t4 -6q0 -4 -20 -26.5t-53.5 -45 t-60.5 -22.5t-27 34q0 24 33 113t33 114q0 23 -18 23q-21 0 -64.5 -54.5t-83.5 -117.5q-20 -31 -37 -93q0 -1 -1.5 -5.5l-2.5 -7.5t-3.5 -6t-5.5 -3q-26 -3 -40 -3q-7 0 -5 9q49 196 49 258q0 15 -10 15q-11 0 -43 -26.5t-33 -26.5q-4 0 -8 4.5t-4 9.5z" />
+<glyph horiz-adv-x="377" d="M30 364q0 92 54.5 153.5t137.5 61.5q59 0 87 -42t28 -90q0 -78 -56.5 -141.5t-133.5 -63.5q-56 0 -86.5 35.5t-30.5 86.5zM83 371q0 -107 65 -107q37 0 69.5 39t49 88t16.5 89q0 29 -15.5 53.5t-54.5 24.5q-47 0 -88.5 -64.5t-41.5 -122.5z" />
+<glyph horiz-adv-x="432" d="M20 436v1q3 6 9 15.5t24.5 33.5t37 43t43 34t46.5 15q15 0 15 -27q0 -45 -26 -184q32 77 81 152q31 48 83 48q37 0 50.5 -20.5t13.5 -56.5q0 -91 -61.5 -169t-126.5 -78q-9 0 -26.5 3t-20.5 3q-9 0 -10 -6l-27 -172q-2 -18 7 -19l16 -2t13.5 -1t11 -1t9 -1t6.5 -1t5 -2 t3.5 -2t2 -3t0.5 -4q0 -12 -4 -14.5t-14 -2.5q-1 0 -23 3t-56.5 5.5t-65.5 2.5q-14 0 -14 9q0 11 3 15t13 4h13q9 0 12.5 3t5.5 14q64 368 64 427q0 14 -9 14q-17 0 -54 -47l-36 -46q-4 0 -9 5t-5 9zM164 292q0 -25 53 -25q42 0 84.5 73t42.5 140q0 52 -36 52 q-12 0 -24.5 -8t-24 -24.5t-18.5 -28t-17.5 -33.5t-13.5 -27q-46 -85 -46 -119z" />
+<glyph horiz-adv-x="397" d="M30 311q0 30 14.5 72t39.5 83.5t66 70.5t88 29q36 0 72 -17l11 -4q7 0 18.5 7t17.5 9q4 1 7 -1.5t3 -7.5t-22 -51q-4 -8 -6 -21l-31.5 -175.5l-32 -180.5t-11.5 -69q0 -8 11 -8h21q13 0 21 -1q12 -1 12 -15v-3v-6t-1.5 -4t-4 -2.5t-7.5 -0.5q-1 0 -11 0.5t-26.5 1 t-32.5 0.5q-11 0 -28.5 -1.5t-30.5 -3t-14 -1.5q-4 0 -6 0.5t-4 3t-2 7.5q1 11 4 13.5t14 4.5q20 4 22 8q2 3 4 13q46 203 77 378q-26 -54 -66 -109q-63 -87 -115 -87q-8 0 -17.5 2t-22.5 8.5t-22 21t-9 36.5zM85 332q0 -22 11 -35t26 -13q35 0 119 120q53 80 53 109 q0 9 -15.5 21.5t-40.5 12.5q-51 0 -102 -81t-51 -134z" />
+<glyph horiz-adv-x="295" d="M25 490q0 10 42 45t66 35q16 0 16 -18q0 -23 -22 -144h2q2 6 12.5 34.5t19.5 49.5t19 38q25 46 61 46q15 0 27 -8t12 -22q0 -32 -19 -32q-9 0 -23.5 7.5t-22.5 7.5q-11 0 -20 -14q-14 -21 -46 -103q-3 -8 -6 -19t-4 -12q-7 -29 -14.5 -68.5t-11.5 -56.5q-1 -4 -18.5 -7 t-26.5 -3q-10 0 -10 4q0 2 10 53l20.5 109.5t10.5 79.5q0 31 -10 31q-13 0 -34 -21l-21 -22q-9 0 -9 10z" />
+<glyph horiz-adv-x="289" d="M20 300q0 9 7 15.5t13 6.5q17 0 37 -20l10 -10.5t10 -10l8 -6.5t9.5 -5t10.5 -1q25 0 41 16t16 43q0 16 -18.5 35.5t-41 35t-41 38.5t-18.5 47q0 40 32.5 68.5t77.5 28.5q33 0 53 -12.5t24 -23t4 -18.5q0 -15 -16 -15q-24 0 -40 30q-12 21 -26 21q-22 0 -39 -12t-17 -39 q0 -26 19 -47t41 -34t41 -37t19 -55q0 -38 -32.5 -66t-77.5 -28q-38 0 -72 17.5t-34 37.5z" />
+<glyph horiz-adv-x="256" d="M35 537q0 1 0.5 7t0.5 8q0 6 8 6h50q7 0 8 6q2 10 6.5 44.5t5.5 38.5q1 5 2.5 8t4.5 4.5t10 2.5q4 1 17 1q25 0 25 -5q0 -1 -4.5 -20.5l-9.5 -42.5t-6 -29t0 -7t7 -1h60q9 0 9 -7q0 -19 -12 -19h-60h-3q-5 0 -6 -4q-1 -2 -1 -3q-35 -191 -35 -205q0 -16 15 -16 q11 0 51 37l40 37q2 0 7.5 -4t5.5 -6q0 -4 -26.5 -33t-64.5 -58.5t-60 -29.5q-30 0 -30 30q0 8 22 126.5t22 120.5q-5 8 -6 8h-40q-13 0 -13 5z" />
+<glyph horiz-adv-x="445" d="M25 462q0 2 10 16t26.5 34t31.5 36q26 26 59 26q47 0 47 -30q0 -11 -26.5 -110t-26.5 -120q0 -19 22 -19q27 0 73 65q59 82 84 164q1 3 10 45q1 5 45 10q8 0 8 -9q0 -4 -22.5 -120.5t-22.5 -125.5q0 -20 15 -20q12 0 40 37l29 37q8 0 8 -7q0 -5 -18.5 -34t-48 -58.5 t-51.5 -29.5q-12 0 -20.5 7t-8.5 17q0 18 18.5 99.5t21.5 102.5q-23 -48 -55 -98q-88 -132 -145 -132q-46 0 -46 36q0 9 25 104t25 126q0 23 -16 23q-12 0 -45 -40l-33 -41q-4 0 -8.5 3t-4.5 6z" />
+<glyph horiz-adv-x="396" d="M30 497q0 10 37.5 44t57.5 34q23 0 36 -8q20 -11 26.5 -18t6.5 -20q0 -32 -11 -108t-11 -88q0 -9 12 -19t16 -10q12 0 20 9q6 7 26 33q83 111 83 178q0 32 -19 32q-9 0 -20.5 -2t-19.5 -4t-9 -2q-6 0 -6 15q0 5 32 12.5t50 7.5q34 0 34 -35q0 -14 -2.5 -28t-8.5 -29.5 l-11 -27.5t-16.5 -30.5l-17 -28t-21 -30.5l-21 -28l-23 -29.5l-21.5 -27.5q-9 -12 -19 -28t-21 -16q-17 0 -36 17q-19 14 -26 27t-7 41q0 15 8.5 85.5t8.5 98.5q0 14 -7 18q-10 7 -19 7q-12 0 -27.5 -13.5t-26.5 -27t-12 -13.5q-4 0 -9.5 4.5t-5.5 7.5z" />
+<glyph horiz-adv-x="589" d="M25 500q0 9 41.5 39.5t61.5 30.5q14 0 38 -15q27 -18 27 -39q0 -25 -5.5 -70t-10.5 -80.5t-5 -36.5q0 -10 10 -22t16 -12q8 0 19 15q8 11 39.5 57.5t40.5 57.5q10 12 19 38.5t9 37.5q0 9 -16 25q-5 5 -11.5 10l-9 7t-2.5 4q0 8 11.5 19.5t20.5 11.5q14 0 37.5 -19.5 t23.5 -31.5q0 -13 -12.5 -97.5t-12.5 -100.5q0 -13 11 -24t20 -11q7 0 24 21q49 56 73 91q36 52 37 116q0 26 -17 26q-9 0 -24.5 -2t-27.5 -4.5t-13 -2.5q-6 0 -6 14q0 5 45 14.5t53 9.5q35 0 35 -33q0 -58 -57 -143q-10 -15 -21 -29t-26 -31.5t-22 -25l-27 -29t-24 -25.5 q-9 -9 -15 -9q-29 0 -49 19.5t-20 45.5q0 19 23 122q-70 -108 -101 -147q-3 -4 -11 -15.5t-11 -15.5q-10 -13 -18 -13q-13 0 -35 19q-19 14 -24.5 23.5t-5.5 30.5q0 11 9.5 70t9.5 105q0 10 -12.5 24t-22.5 14q-12 0 -27.5 -12t-26.5 -24t-12 -12q-5 0 -9 5.5t-4 8.5z" />
+<glyph horiz-adv-x="413" d="M25 269q0 28 22 76q3 4 7 4q13 0 13 -7l-5 -14q-4 -13 -4 -24q0 -18 17 -18q18 0 54 39t61 73q4 7 1 17q-44 122 -82 122q-15 0 -37.5 -24t-24.5 -24q-3 0 -6.5 4.5t-3.5 7.5q0 4 12.5 20.5t37 33.5t49.5 17q19 0 31.5 -5t23.5 -22t16.5 -28.5t17.5 -43.5q5 -12 7 -18 l4 -6l5 8q3 4 18 28.5t23 35t22 27t28 24t28 7.5q21 0 21 -34q0 -17 -5 -47q-1 -4 -9 -4t-8 4q0 5 0.5 14t0.5 13q0 20 -13 20q-26 0 -100 -110q-5 -8 -2 -16q44 -125 72 -125q14 0 33 27l19 27q14 0 14 -7q0 -16 -32.5 -55.5t-60.5 -39.5q-10 0 -18 3t-15 11.5t-12 15.5 t-11 22t-9 24t-10 28.5t-10 29.5q-2 1 -2.5 1t-4.5 -4q-2 -3 -36 -46.5t-59 -64t-49 -20.5q-29 0 -29 23z" />
+<glyph horiz-adv-x="376" d="M0 33q0 9 3.5 16t11 11.5t14 7t17.5 5.5t16 5q28 11 44 40q49 90 49 146q0 100 -12.5 182t-44.5 82q-15 0 -30 -12.5t-25 -25t-12 -12.5q-12 0 -12 8q0 4 14 22.5t40 38.5t51 20t40 -14.5t23 -56.5t10.5 -69t5.5 -100q1 -25 2 -38q2 4 22.5 41t28 52t20.5 44.5t20 52.5 q9 29 15 83q1 15 10 15q10 0 20 -6t10 -16q0 -4 -2 -14q-2 -16 -11.5 -40.5t-22 -51.5t-27 -55l-29.5 -54.5l-26.5 -46.5l-20.5 -35l-9 -15l-23 -43.5l-37 -69l-34 -60.5q-12 -19 -32 -31q-47 -29 -61 -29q-7 0 -11.5 7.5t-4.5 15.5z" />
+<glyph horiz-adv-x="353" d="M30 252q0 5 3 11t6.5 9.5t9 9.5t7.5 8l197 220l2 4q-8 -2 -13 -2q-19 0 -63 13.5t-56 13.5q-13 0 -25.5 -10t-20.5 -20t-9 -10q-12 0 -12 7q0 4 11.5 20.5t32.5 34.5t41 18q19 0 70 -18t67 -18q6 0 18 15t23 15q6 0 10 -4.5t4 -10.5q0 -10 -9 -18t-22 -14.5t-17 -10.5 l-183 -202q-4 -4 -4 -6t12 -2q30 -2 96 -7t83 -5q7 0 9.5 3t2.5 11l-1 11v12q0 7 9 7t9 -6q7 -68 7 -71q0 -13 -31 -13h-5q-19 0 -104.5 7t-120.5 7q-3 0 -9.5 -10t-13.5 -10q-11 0 -11 11z" />
+<glyph horiz-adv-x="379" d="M30 -101q0 38 12.5 83.5t35 88.5t60.5 71.5t83 28.5q28 0 45 -25q3 -4 6.5 -10t6 -9.5t3.5 -3.5q2 2 7 17.5t5 18.5q4 10 34 10q14 0 14 -6q0 -3 -33.5 -121.5t-33.5 -139.5q0 -16 11 -16q7 0 29.5 23.5t23.5 23.5q3 0 6.5 -4t3.5 -9q0 -3 -18.5 -22t-45 -38.5 t-42.5 -19.5q-23 0 -23 21q0 26 44 167q-46 -80 -100 -135q-40 -40 -59 -48q-10 -4 -22 -4q-26 0 -39.5 16.5t-13.5 41.5zM85 -70q0 -44 23 -44q21 0 68 52t81 107q12 18 12 44q0 21 -23 34t-45 13q-39 0 -77.5 -75t-38.5 -131z" />
+<glyph horiz-adv-x="408" d="M45 -140q0 4 2 7.5t5 7.5l4 4q2 2 5 16q24 132 48 290t24 180q0 5 -5 5q-2 0 -33 -9t-34 -9q-8 0 -8 22q0 9 4 10q119 31 132 31q11 0 11 -9q0 -5 -14.5 -96.5t-19.5 -116.5q-27 -155 -38 -203q39 67 69 106q31 42 54.5 58.5t61.5 16.5q65 0 65 -54q0 -111 -76.5 -193 t-140.5 -82q-17 0 -32.5 6t-24.5 12t-11 6q-1 0 -3.5 -1t-6 -3t-6.5 -3q-14 -7 -23 -7t-9 8zM115 -84q0 -20 14 -34t41 -14q34 0 70.5 42t57.5 92t21 81q0 48 -34 48q-35 0 -69 -48q-101 -139 -101 -167z" />
+<glyph horiz-adv-x="357" d="M35 -44q0 95 59 156.5t125 61.5q41 0 65 -20t24 -53q0 -18 -10 -29.5t-26 -11.5q-19 0 -19 31q0 3 0.5 10t0.5 10q0 16 -9.5 27.5t-28.5 11.5q-50 0 -87 -55q-38 -56 -38 -126q0 -14 1.5 -23.5t8.5 -26t26.5 -26t49.5 -9.5q32 0 63.5 16t50.5 32t20 16q3 0 7 -4t4 -8 q0 -5 -25 -27t-68 -45t-80 -23q-61 0 -87.5 33.5t-26.5 81.5z" />
+<glyph horiz-adv-x="424" d="M35 -89q0 28 12 69t33.5 83t57.5 71.5t77 29.5q15 0 28.5 -2.5t20.5 -5.5t15 -7t9 -4q8 -3 9.5 -2t3.5 10q5 25 12 75.5l12.5 89t5.5 39.5q4 12 -2 12q-1 0 -36.5 -8.5t-37.5 -8.5q-6 0 -3 18q1 10 9 13q32 7 63 14.5t46 11.5t16 4q10 0 10 -13q0 -3 -41.5 -239.5 t-41.5 -261.5q0 -11 10 -11q11 0 29 15t32.5 30t15.5 15q9 0 9 -7q0 -5 -18 -27.5t-51 -46.5t-63 -24q-10 0 -17 8.5t-7 22.5q0 28 33 165q-42 -72 -71 -109q-22 -29 -34 -42.5t-34.5 -27.5t-46.5 -14q-8 0 -16 1.5t-20.5 7t-20.5 20t-8 36.5zM92 -65q0 -24 8 -35t28 -11 q35 0 115 115q46 69 46 97q0 11 -24 27.5t-50 16.5q-34 0 -64 -40.5t-44.5 -88t-14.5 -81.5z" />
+<glyph horiz-adv-x="357" d="M35 -63q0 95 61 166t143 71q78 0 78 -55q0 -36 -29.5 -64t-73.5 -45q-55 -20 -117 -20q-5 0 -5 -38q0 -72 78 -72q34 0 67.5 18t52.5 35.5t20 17.5q3 0 7.5 -4.5t4.5 -6.5q0 -4 -23.5 -26t-69 -45.5t-89.5 -23.5q-46 0 -75.5 23t-29.5 69zM104 15q0 -4 7 -4 q62 0 106 29.5t44 79.5q0 15 -11 23.5t-29 8.5q-68 0 -106 -99q-11 -29 -11 -38z" />
+<glyph horiz-adv-x="250" d="M-92 -349q0 12 14 23.5t27 11.5q10 0 31 -9.5t36 -9.5q8 0 14.5 5t11 15.5l8.5 20.5t7 26l5 26t4 25.5t3 20.5q9 54 19.5 133t17 132.5t6.5 56.5q0 8 -6 8h-59q-7 0 -7 7q0 4 2 10q1 5 7 5h57q4 0 5.5 0.5t3 2.5t1.5 7q9 80 36 130q37 67 84 94q37 22 77 22q21 0 41 -10 t20 -20q0 -12 -16.5 -24t-29.5 -12q-11 0 -31.5 15.5t-35.5 15.5q-61 0 -91 -216q0 -5 6 -5h69q5 0 5 -2q0 -20 -8 -20h-68h-2q-3 0 -4 -3l-0.5 -2t-0.5 -3t-19 -133.5t-29 -188.5q-3 -17 -9 -38t-25 -58t-44 -55q-48 -35 -76 -35q-20 0 -38.5 10.5t-18.5 20.5z" />
+<glyph horiz-adv-x="377" d="M4 -280q0 33 25 56.5t52 35.5q9 4 9 5t-2 2t-6 2.5t-7 3.5q-21 14 -21 28q0 6 14.5 29.5t22.5 26.5l51 18l4 2q0 1 -5 2q-82 27 -82 109q0 59 43 100t105 41q12 0 24 -2.5t20 -6.5t15.5 -8.5t11.5 -8.5t8 -7l4 -4q2 2 11.5 22.5t11.5 23.5q5 9 18 9q23 0 23 -10 t-9.5 -27.5t-19.5 -31.5t-10 -15q0 -2 1 -5q2 -4 2 -6q6 -22 6 -33q0 -60 -44 -101q-22 -20 -42.5 -28.5t-62.5 -20.5q-77 -21 -77 -38q0 -4 2.5 -7t8 -6t11 -5t15 -4.5t18 -4l20.5 -3.5l21 -3.5t22.5 -4t22.5 -3.5q53 -8 81 -25t28 -55q0 -63 -56 -92t-145 -29 q-143 0 -143 79zM41 -275q0 -32 44 -44.5t95 -12.5q52 0 84 18t32 54q0 25 -22 37t-64 19q-84 15 -90 15q-4 0 -26 -10q-53 -27 -53 -76zM112 39q0 -49 20.5 -70.5t41.5 -21.5q33 0 65 39t32 94q0 30 -19 55t-46 25q-41 0 -67.5 -40t-26.5 -81z" />
+<glyph horiz-adv-x="431" d="M40 -145q0 2 5.5 27.5t14.5 72.5l19.5 105.5t22 139.5t19.5 162q2 15 -3 15q-8 0 -39.5 -11.5t-32.5 -11.5q-3 0 -3 13q0 10 6 14q24 9 69 18.5t61 9.5q6 0 6 -13q-4 -75 -76 -436q39 89 92 152q46 56 105 56q50 0 50 -41q0 -31 -27.5 -122.5t-27.5 -99.5q0 -17 15 -17 q9 0 28 18t34.5 36t16.5 18q3 0 7 -4t4 -6q0 -4 -18 -28t-50 -48.5t-61 -24.5q-14 0 -24.5 9.5t-10.5 23.5q0 12 30.5 105.5t30.5 116.5q0 13 -8 22.5t-20 9.5q-27 0 -55 -33.5t-62 -88.5q-4 -7 -13.5 -22.5l-14.5 -24t-10.5 -20.5t-7.5 -22l-15 -67q-2 -11 -50 -11 q-7 0 -7 8z" />
+<glyph horiz-adv-x="235" d="M30 83q0 7 53 46t73 39q7 0 12.5 -5t5.5 -15q0 -22 -27.5 -124t-27.5 -112q0 -16 10 -16q9 0 36.5 26.5t28.5 26.5q3 0 7 -3.5t4 -6.5q0 -11 -53.5 -53t-71.5 -42q-22 0 -22 16q0 21 30 120.5t30 125.5q0 15 -9 15q-13 0 -40 -24.5t-28 -24.5q-4 0 -7.5 4t-3.5 7z M116 303q0 17 9 28t25 11q17 0 27 -13t10 -28q0 -17 -9.5 -27.5t-24.5 -10.5q-17 0 -27 12.5t-10 27.5z" />
+<glyph horiz-adv-x="239" d="M-61 -333q0 13 8.5 22t21.5 9q15 0 31.5 -10t30.5 -10q15 0 22.5 20.5t17.5 66.5q16 75 35.5 199t19.5 142q0 15 -9 15q-13 0 -47 -37l-34 -37q-3 0 -7 3t-4 7t25 30.5t59.5 53.5t55.5 27q7 0 12.5 -5.5t5.5 -15.5q0 -19 -45 -300q-19 -130 -80 -177q-44 -32 -73 -32 q-21 0 -33.5 9t-12.5 20zM125 328q0 17 10 28t26 11q17 0 26.5 -12.5t9.5 -27.5q0 -17 -9.5 -28.5t-24.5 -11.5q-17 0 -27.5 13t-10.5 28z" />
+<glyph horiz-adv-x="421" d="M35 -154q0 3 17.5 85t40 208.5t32.5 225.5q0 7 -5 7q-14 0 -62 -16q-8 -2 -8 7q0 16 7 18q34 8 64.5 16.5l44 12t16.5 3.5q13 0 13 -10q0 -7 -16.5 -88l-37.5 -183t-26 -128q36 64 57 92q28 36 56 53t70 17q50 0 50 -31q0 -35 -27.5 -65t-56.5 -44t-55 -20q-2 0 -8 -1 t-8 -2q14 -7 22 -14q43 -43 61 -64q14 -17 20.5 -24t18 -13t25.5 -6q27 0 27 21q0 3 -0.5 9t-0.5 8q0 11 6 11q19 0 19 -37q0 -19 -32 -33t-60 -14q-19 0 -37 17q-9 9 -19 20.5t-25 31.5t-21 27l-19.5 23.5l-17 20t-5.5 8.5q0 4 14 18q2 2 10 2q11 0 22 4q31 14 59.5 45 t28.5 58q0 15 -25 15q-23 0 -52 -27q-20 -17 -84 -113q-14 -23 -20 -48q-10 -44 -16 -81q-2 -12 -4 -15.5t-6 -3.5l-18 -3q-19 -2 -24 -2t-5 2z" />
+<glyph horiz-adv-x="252" d="M55 -126q0 5 15 88t34.5 201t28.5 193q2 8 0.5 11t-9.5 1q-54 -15 -62 -15q-6 0 -4 17q1 9 9 12q32 7 62 15t43.5 12t15.5 4q9 0 9 -8q0 -10 -41.5 -253t-41.5 -246q0 -17 11 -17q10 0 30 17.5t36 35t17 17.5q3 0 8.5 -4.5t5.5 -6.5q0 -4 -23 -29.5t-58 -51.5t-61 -26 q-25 0 -25 33z" />
+<glyph horiz-adv-x="650" d="M30 61q0 10 57 54t84 44q17 0 17 -16q0 -17 -3 -41.5t-6.5 -44t-10 -53t-9.5 -50.5q93 210 185 210q14 0 22 -11.5t8 -27.5q0 -66 -44 -198q69 129 111 179q51 58 94 58t43 -28q0 -24 -30 -118t-30 -108q0 -19 14 -19q10 0 43 34t34 34q3 0 7 -4t4 -7q0 -4 -24 -28.5 t-57.5 -49t-54.5 -24.5q-13 0 -21.5 7.5t-8.5 17.5q0 15 32 113.5t32 125.5q0 17 -15 17q-32 0 -104 -109q-55 -83 -75 -155q-3 -9 -12 -11q-20 -3 -35 -3q-8 0 -8 7l24 91q24 91 24 148q0 30 -16 30q-19 0 -54.5 -51t-64.5 -108q-17 -32 -35 -98q-5 -14 -9 -16 q-30 -12 -41 -12q-7 0 -5 9q10 39 23 123.5t13 122.5q0 13 -10 13q-12 0 -44 -31t-33 -31q-11 0 -11 15z" />
+<glyph horiz-adv-x="465" d="M30 87q0 2 24.5 22t60.5 40.5t58 20.5q19 0 19 -18q0 -17 -5 -44t-9.5 -46t-15.5 -57.5t-14 -50.5q60 105 110.5 160.5t96.5 55.5q43 0 43 -37q0 -25 -32 -120.5t-32 -104.5q0 -16 15 -16q11 0 28.5 15t31.5 30.5t15 15.5q3 0 7 -3t4 -6q0 -4 -20 -26.5t-53.5 -45 t-60.5 -22.5t-27 34q0 24 33 113t33 114q0 23 -18 23q-21 0 -64.5 -54.5t-83.5 -117.5q-20 -31 -37 -93q0 -1 -1.5 -5.5l-2.5 -7.5t-3.5 -6t-5.5 -3q-26 -3 -40 -3q-7 0 -5 9q49 196 49 258q0 15 -10 15q-11 0 -43 -26.5t-33 -26.5q-4 0 -8 4.5t-4 9.5z" />
+<glyph horiz-adv-x="377" d="M30 -36q0 92 54.5 153.5t137.5 61.5q59 0 87 -42t28 -90q0 -78 -56.5 -141.5t-133.5 -63.5q-56 0 -86.5 35.5t-30.5 86.5zM83 -29q0 -107 65 -107q37 0 69.5 39t49 88t16.5 89q0 29 -15.5 53.5t-54.5 24.5q-47 0 -88.5 -64.5t-41.5 -122.5z" />
+<glyph horiz-adv-x="432" d="M20 36v1q3 6 9 15.5t24.5 33.5t37 43t43 34t46.5 15q15 0 15 -27q0 -45 -26 -184q32 77 81 152q31 48 83 48q37 0 50.5 -20.5t13.5 -56.5q0 -91 -61.5 -169t-126.5 -78q-9 0 -26.5 3t-20.5 3q-9 0 -10 -6l-27 -172q-2 -18 7 -19l16 -2t13.5 -1t11 -1t9 -1t6.5 -1t5 -2 t3.5 -2t2 -3t0.5 -4q0 -12 -4 -14.5t-14 -2.5q-1 0 -23 3t-56.5 5.5t-65.5 2.5q-14 0 -14 9q0 11 3 15t13 4h13q9 0 12.5 3t5.5 14q64 368 64 427q0 14 -9 14q-17 0 -54 -47l-36 -46q-4 0 -9 5t-5 9zM164 -108q0 -25 53 -25q42 0 84.5 73t42.5 140q0 52 -36 52 q-12 0 -24.5 -8t-24 -24.5t-18.5 -28t-17.5 -33.5t-13.5 -27q-46 -85 -46 -119z" />
+<glyph horiz-adv-x="397" d="M30 -89q0 30 14.5 72t39.5 83.5t66 70.5t88 29q36 0 72 -17l11 -4q7 0 18.5 7t17.5 9q4 1 7 -1.5t3 -7.5t-22 -51q-4 -8 -6 -21l-31.5 -175.5l-32 -180.5t-11.5 -69q0 -8 11 -8h21q13 0 21 -1q12 -1 12 -15v-3v-6t-1.5 -4t-4 -2.5t-7.5 -0.5q-1 0 -11 0.5t-26.5 1 t-32.5 0.5q-11 0 -28.5 -1.5t-30.5 -3t-14 -1.5q-4 0 -6 0.5t-4 3t-2 7.5q1 11 4 13.5t14 4.5q20 4 22 8q2 3 4 13q46 203 77 378q-26 -54 -66 -109q-63 -87 -115 -87q-8 0 -17.5 2t-22.5 8.5t-22 21t-9 36.5zM85 -68q0 -22 11 -35t26 -13q35 0 119 120q53 80 53 109 q0 9 -15.5 21.5t-40.5 12.5q-51 0 -102 -81t-51 -134z" />
+<glyph horiz-adv-x="295" d="M25 90q0 10 42 45t66 35q16 0 16 -18q0 -23 -22 -144h2q2 6 12.5 34.5t19.5 49.5t19 38q25 46 61 46q15 0 27 -8t12 -22q0 -32 -19 -32q-9 0 -23.5 7.5t-22.5 7.5q-11 0 -20 -14q-14 -21 -46 -103q-3 -8 -6 -19t-4 -12q-7 -29 -14.5 -68.5t-11.5 -56.5q-1 -4 -18.5 -7 t-26.5 -3q-10 0 -10 4q0 2 10 53l20.5 109.5t10.5 79.5q0 31 -10 31q-13 0 -34 -21l-21 -22q-9 0 -9 10z" />
+<glyph horiz-adv-x="289" d="M20 -100q0 9 7 15.5t13 6.5q17 0 37 -20l10 -10.5t10 -10l8 -6.5t9.5 -5t10.5 -1q25 0 41 16t16 43q0 16 -18.5 35.5t-41 35t-41 38.5t-18.5 47q0 40 32.5 68.5t77.5 28.5q33 0 53 -12.5t24 -23t4 -18.5q0 -15 -16 -15q-24 0 -40 30q-12 21 -26 21q-22 0 -39 -12t-17 -39 q0 -26 19 -47t41 -34t41 -37t19 -55q0 -38 -32.5 -66t-77.5 -28q-38 0 -72 17.5t-34 37.5z" />
+<glyph horiz-adv-x="256" d="M35 137q0 1 0.5 7t0.5 8q0 6 8 6h50q7 0 8 6q2 10 6.5 44.5t5.5 38.5q1 5 2.5 8t4.5 4.5t10 2.5q4 1 17 1q25 0 25 -5q0 -1 -4.5 -20.5l-9.5 -42.5t-6 -29t0 -7t7 -1h60q9 0 9 -7q0 -19 -12 -19h-60h-3q-5 0 -6 -4q-1 -2 -1 -3q-35 -191 -35 -205q0 -16 15 -16 q11 0 51 37l40 37q2 0 7.5 -4t5.5 -6q0 -4 -26.5 -33t-64.5 -58.5t-60 -29.5q-30 0 -30 30q0 8 22 126.5t22 120.5q-5 8 -6 8h-40q-13 0 -13 5z" />
+<glyph horiz-adv-x="445" d="M25 62q0 2 10 16t26.5 34t31.5 36q26 26 59 26q47 0 47 -30q0 -11 -26.5 -110t-26.5 -120q0 -19 22 -19q27 0 73 65q59 82 84 164q1 3 10 45q1 5 45 10q8 0 8 -9q0 -4 -22.5 -120.5t-22.5 -125.5q0 -20 15 -20q12 0 40 37l29 37q8 0 8 -7q0 -5 -18.5 -34t-48 -58.5 t-51.5 -29.5q-12 0 -20.5 7t-8.5 17q0 18 18.5 99.5t21.5 102.5q-23 -48 -55 -98q-88 -132 -145 -132q-46 0 -46 36q0 9 25 104t25 126q0 23 -16 23q-12 0 -45 -40l-33 -41q-4 0 -8.5 3t-4.5 6z" />
+<glyph horiz-adv-x="396" d="M30 97q0 10 37.5 44t57.5 34q23 0 36 -8q20 -11 26.5 -18t6.5 -20q0 -32 -11 -108t-11 -88q0 -9 12 -19t16 -10q12 0 20 9q6 7 26 33q83 111 83 178q0 32 -19 32q-9 0 -20.5 -2t-19.5 -4t-9 -2q-6 0 -6 15q0 5 32 12.5t50 7.5q34 0 34 -35q0 -14 -2.5 -28t-8.5 -29.5 l-11 -27.5t-16.5 -30.5l-17 -28t-21 -30.5l-21 -28l-23 -29.5l-21.5 -27.5q-9 -12 -19 -28t-21 -16q-17 0 -36 17q-19 14 -26 27t-7 41q0 15 8.5 85.5t8.5 98.5q0 14 -7 18q-10 7 -19 7q-12 0 -27.5 -13.5t-26.5 -27t-12 -13.5q-4 0 -9.5 4.5t-5.5 7.5z" />
+<glyph horiz-adv-x="589" d="M25 100q0 9 41.5 39.5t61.5 30.5q14 0 38 -15q27 -18 27 -39q0 -25 -5.5 -70t-10.5 -80.5t-5 -36.5q0 -10 10 -22t16 -12q8 0 19 15q8 11 39.5 57.5t40.5 57.5q10 12 19 38.5t9 37.5q0 9 -16 25q-5 5 -11.5 10l-9 7t-2.5 4q0 8 11.5 19.5t20.5 11.5q14 0 37.5 -19.5 t23.5 -31.5q0 -13 -12.5 -97.5t-12.5 -100.5q0 -13 11 -24t20 -11q7 0 24 21q49 56 73 91q36 52 37 116q0 26 -17 26q-9 0 -24.5 -2t-27.5 -4.5t-13 -2.5q-6 0 -6 14q0 5 45 14.5t53 9.5q35 0 35 -33q0 -58 -57 -143q-10 -15 -21 -29t-26 -31.5t-22 -25l-27 -29t-24 -25.5 q-9 -9 -15 -9q-29 0 -49 19.5t-20 45.5q0 19 23 122q-70 -108 -101 -147q-3 -4 -11 -15.5t-11 -15.5q-10 -13 -18 -13q-13 0 -35 19q-19 14 -24.5 23.5t-5.5 30.5q0 11 9.5 70t9.5 105q0 10 -12.5 24t-22.5 14q-12 0 -27.5 -12t-26.5 -24t-12 -12q-5 0 -9 5.5t-4 8.5z" />
+<glyph horiz-adv-x="413" d="M25 -131q0 28 22 76q3 4 7 4q13 0 13 -7l-5 -14q-4 -13 -4 -24q0 -18 17 -18q18 0 54 39t61 73q4 7 1 17q-44 122 -82 122q-15 0 -37.5 -24t-24.5 -24q-3 0 -6.5 4.5t-3.5 7.5q0 4 12.5 20.5t37 33.5t49.5 17q19 0 31.5 -5t23.5 -22t16.5 -28.5t17.5 -43.5q5 -12 7 -18 l4 -6l5 8q3 4 18 28.5t23 35t22 27t28 24t28 7.5q21 0 21 -34q0 -17 -5 -47q-1 -4 -9 -4t-8 4q0 5 0.5 14t0.5 13q0 20 -13 20q-26 0 -100 -110q-5 -8 -2 -16q44 -125 72 -125q14 0 33 27l19 27q14 0 14 -7q0 -16 -32.5 -55.5t-60.5 -39.5q-10 0 -18 3t-15 11.5t-12 15.5 t-11 22t-9 24t-10 28.5t-10 29.5q-2 1 -2.5 1t-4.5 -4q-2 -3 -36 -46.5t-59 -64t-49 -20.5q-29 0 -29 23z" />
+<glyph horiz-adv-x="376" d="M0 -367q0 9 3.5 16t11 11.5t14 7t17.5 5.5t16 5q28 11 44 40q49 90 49 146q0 100 -12.5 182t-44.5 82q-15 0 -30 -12.5t-25 -25t-12 -12.5q-12 0 -12 8q0 4 14 22.5t40 38.5t51 20t40 -14.5t23 -56.5t10.5 -69t5.5 -100q1 -25 2 -38q2 4 22.5 41t28 52t20.5 44.5t20 52.5 q9 29 15 83q1 15 10 15q10 0 20 -6t10 -16q0 -4 -2 -14q-2 -16 -11.5 -40.5t-22 -51.5t-27 -55l-29.5 -54.5l-26.5 -46.5l-20.5 -35l-9 -15l-23 -43.5l-37 -69l-34 -60.5q-12 -19 -32 -31q-47 -29 -61 -29q-7 0 -11.5 7.5t-4.5 15.5z" />
+<glyph horiz-adv-x="353" d="M30 -148q0 5 3 11t6.5 9.5t9 9.5t7.5 8l197 220l2 4q-8 -2 -13 -2q-19 0 -63 13.5t-56 13.5q-13 0 -25.5 -10t-20.5 -20t-9 -10q-12 0 -12 7q0 4 11.5 20.5t32.5 34.5t41 18q19 0 70 -18t67 -18q6 0 18 15t23 15q6 0 10 -4.5t4 -10.5q0 -10 -9 -18t-22 -14.5t-17 -10.5 l-183 -202q-4 -4 -4 -6t12 -2q30 -2 96 -7t83 -5q7 0 9.5 3t2.5 11l-1 11v12q0 7 9 7t9 -6q7 -68 7 -71q0 -13 -31 -13h-5q-19 0 -104.5 7t-120.5 7q-3 0 -9.5 -10t-13.5 -10q-11 0 -11 11z" />
+<glyph horiz-adv-x="379" d="M30 399q0 38 12.5 83.5t35 88.5t60.5 71.5t83 28.5q28 0 45 -25q3 -4 6.5 -10t6 -9.5t3.5 -3.5q2 2 7 17.5t5 18.5q4 10 34 10q14 0 14 -6q0 -3 -33.5 -121.5t-33.5 -139.5q0 -16 11 -16q7 0 29.5 23.5t23.5 23.5q3 0 6.5 -4t3.5 -9q0 -3 -18.5 -22t-45 -38.5 t-42.5 -19.5q-23 0 -23 21q0 26 44 167q-46 -80 -100 -135q-40 -40 -59 -48q-10 -4 -22 -4q-26 0 -39.5 16.5t-13.5 41.5zM85 430q0 -44 23 -44q21 0 68 52t81 107q12 18 12 44q0 21 -23 34t-45 13q-39 0 -77.5 -75t-38.5 -131z" />
+<glyph horiz-adv-x="408" d="M45 360q0 4 2 7.5t5 7.5l4 4q2 2 5 16q24 132 48 290t24 180q0 5 -5 5q-2 0 -33 -9t-34 -9q-8 0 -8 22q0 9 4 10q119 31 132 31q11 0 11 -9q0 -5 -14.5 -96.5t-19.5 -116.5q-27 -155 -38 -203q39 67 69 106q31 42 54.5 58.5t61.5 16.5q65 0 65 -54q0 -111 -76.5 -193 t-140.5 -82q-17 0 -32.5 6t-24.5 12t-11 6q-1 0 -3.5 -1t-6 -3t-6.5 -3q-14 -7 -23 -7t-9 8zM115 416q0 -20 14 -34t41 -14q34 0 70.5 42t57.5 92t21 81q0 48 -34 48q-35 0 -69 -48q-101 -139 -101 -167z" />
+<glyph horiz-adv-x="357" d="M35 456q0 95 59 156.5t125 61.5q41 0 65 -20t24 -53q0 -18 -10 -29.5t-26 -11.5q-19 0 -19 31q0 3 0.5 10t0.5 10q0 16 -9.5 27.5t-28.5 11.5q-50 0 -87 -55q-38 -56 -38 -126q0 -14 1.5 -23.5t8.5 -26t26.5 -26t49.5 -9.5q32 0 63.5 16t50.5 32t20 16q3 0 7 -4t4 -8 q0 -5 -25 -27t-68 -45t-80 -23q-61 0 -87.5 33.5t-26.5 81.5z" />
+<glyph horiz-adv-x="424" d="M35 411q0 28 12 69t33.5 83t57.5 71.5t77 29.5q15 0 28.5 -2.5t20.5 -5.5t15 -7t9 -4q8 -3 9.5 -2t3.5 10q5 25 12 75.5l12.5 89t5.5 39.5q4 12 -2 12q-1 0 -36.5 -8.5t-37.5 -8.5q-6 0 -3 18q1 10 9 13q32 7 63 14.5t46 11.5t16 4q10 0 10 -13q0 -3 -41.5 -239.5 t-41.5 -261.5q0 -11 10 -11q11 0 29 15t32.5 30t15.5 15q9 0 9 -7q0 -5 -18 -27.5t-51 -46.5t-63 -24q-10 0 -17 8.5t-7 22.5q0 28 33 165q-42 -72 -71 -109q-22 -29 -34 -42.5t-34.5 -27.5t-46.5 -14q-8 0 -16 1.5t-20.5 7t-20.5 20t-8 36.5zM92 435q0 -24 8 -35t28 -11 q35 0 115 115q46 69 46 97q0 11 -24 27.5t-50 16.5q-34 0 -64 -40.5t-44.5 -88t-14.5 -81.5z" />
+<glyph horiz-adv-x="357" d="M35 437q0 95 61 166t143 71q78 0 78 -55q0 -36 -29.5 -64t-73.5 -45q-55 -20 -117 -20q-5 0 -5 -38q0 -72 78 -72q34 0 67.5 18t52.5 35.5t20 17.5q3 0 7.5 -4.5t4.5 -6.5q0 -4 -23.5 -26t-69 -45.5t-89.5 -23.5q-46 0 -75.5 23t-29.5 69zM104 515q0 -4 7 -4 q62 0 106 29.5t44 79.5q0 15 -11 23.5t-29 8.5q-68 0 -106 -99q-11 -29 -11 -38z" />
+<glyph horiz-adv-x="250" d="M-92 151q0 12 14 23.5t27 11.5q10 0 31 -9.5t36 -9.5q8 0 14.5 5t11 15.5l8.5 20.5t7 26l5 26t4 25.5t3 20.5q9 54 19.5 133t17 132.5t6.5 56.5q0 8 -6 8h-59q-7 0 -7 7q0 4 2 10q1 5 7 5h57q4 0 5.5 0.5t3 2.5t1.5 7q9 80 36 130q37 67 84 94q37 22 77 22q21 0 41 -10 t20 -20q0 -12 -16.5 -24t-29.5 -12q-11 0 -31.5 15.5t-35.5 15.5q-61 0 -91 -216q0 -5 6 -5h69q5 0 5 -2q0 -20 -8 -20h-68h-2q-3 0 -4 -3l-0.5 -2t-0.5 -3t-19 -133.5t-29 -188.5q-3 -17 -9 -38t-25 -58t-44 -55q-48 -35 -76 -35q-20 0 -38.5 10.5t-18.5 20.5z" />
+<glyph horiz-adv-x="377" d="M4 220q0 33 25 56.5t52 35.5q9 4 9 5t-2 2t-6 2.5t-7 3.5q-21 14 -21 28q0 6 14.5 29.5t22.5 26.5l51 18l4 2q0 1 -5 2q-82 27 -82 109q0 59 43 100t105 41q12 0 24 -2.5t20 -6.5t15.5 -8.5t11.5 -8.5t8 -7l4 -4q2 2 11.5 22.5t11.5 23.5q5 9 18 9q23 0 23 -10 t-9.5 -27.5t-19.5 -31.5t-10 -15q0 -2 1 -5q2 -4 2 -6q6 -22 6 -33q0 -60 -44 -101q-22 -20 -42.5 -28.5t-62.5 -20.5q-77 -21 -77 -38q0 -4 2.5 -7t8 -6t11 -5t15 -4.5t18 -4l20.5 -3.5l21 -3.5t22.5 -4t22.5 -3.5q53 -8 81 -25t28 -55q0 -63 -56 -92t-145 -29 q-143 0 -143 79zM41 225q0 -32 44 -44.5t95 -12.5q52 0 84 18t32 54q0 25 -22 37t-64 19q-84 15 -90 15q-4 0 -26 -10q-53 -27 -53 -76zM112 539q0 -49 20.5 -70.5t41.5 -21.5q33 0 65 39t32 94q0 30 -19 55t-46 25q-41 0 -67.5 -40t-26.5 -81z" />
+<glyph horiz-adv-x="431" d="M40 355q0 2 5.5 27.5t14.5 72.5l19.5 105.5t22 139.5t19.5 162q2 15 -3 15q-8 0 -39.5 -11.5t-32.5 -11.5q-3 0 -3 13q0 10 6 14q24 9 69 18.5t61 9.5q6 0 6 -13q-4 -75 -76 -436q39 89 92 152q46 56 105 56q50 0 50 -41q0 -31 -27.5 -122.5t-27.5 -99.5q0 -17 15 -17 q9 0 28 18t34.5 36t16.5 18q3 0 7 -4t4 -6q0 -4 -18 -28t-50 -48.5t-61 -24.5q-14 0 -24.5 9.5t-10.5 23.5q0 12 30.5 105.5t30.5 116.5q0 13 -8 22.5t-20 9.5q-27 0 -55 -33.5t-62 -88.5q-4 -7 -13.5 -22.5l-14.5 -24t-10.5 -20.5t-7.5 -22l-15 -67q-2 -11 -50 -11 q-7 0 -7 8z" />
+<glyph horiz-adv-x="235" d="M30 583q0 7 53 46t73 39q7 0 12.5 -5t5.5 -15q0 -22 -27.5 -124t-27.5 -112q0 -16 10 -16q9 0 36.5 26.5t28.5 26.5q3 0 7 -3.5t4 -6.5q0 -11 -53.5 -53t-71.5 -42q-22 0 -22 16q0 21 30 120.5t30 125.5q0 15 -9 15q-13 0 -40 -24.5t-28 -24.5q-4 0 -7.5 4t-3.5 7z M116 803q0 17 9 28t25 11q17 0 27 -13t10 -28q0 -17 -9.5 -27.5t-24.5 -10.5q-17 0 -27 12.5t-10 27.5z" />
+<glyph horiz-adv-x="239" d="M-61 167q0 13 8.5 22t21.5 9q15 0 31.5 -10t30.5 -10q15 0 22.5 20.5t17.5 66.5q16 75 35.5 199t19.5 142q0 15 -9 15q-13 0 -47 -37l-34 -37q-3 0 -7 3t-4 7t25 30.5t59.5 53.5t55.5 27q7 0 12.5 -5.5t5.5 -15.5q0 -19 -45 -300q-19 -130 -80 -177q-44 -32 -73 -32 q-21 0 -33.5 9t-12.5 20zM125 828q0 17 10 28t26 11q17 0 26.5 -12.5t9.5 -27.5q0 -17 -9.5 -28.5t-24.5 -11.5q-17 0 -27.5 13t-10.5 28z" />
+<glyph horiz-adv-x="421" d="M35 346q0 3 17.5 85t40 208.5t32.5 225.5q0 7 -5 7q-14 0 -62 -16q-8 -2 -8 7q0 16 7 18q34 8 64.5 16.5l44 12t16.5 3.5q13 0 13 -10q0 -7 -16.5 -88l-37.5 -183t-26 -128q36 64 57 92q28 36 56 53t70 17q50 0 50 -31q0 -35 -27.5 -65t-56.5 -44t-55 -20q-2 0 -8 -1 t-8 -2q14 -7 22 -14q43 -43 61 -64q14 -17 20.5 -24t18 -13t25.5 -6q27 0 27 21q0 3 -0.5 9t-0.5 8q0 11 6 11q19 0 19 -37q0 -19 -32 -33t-60 -14q-19 0 -37 17q-9 9 -19 20.5t-25 31.5t-21 27l-19.5 23.5l-17 20t-5.5 8.5q0 4 14 18q2 2 10 2q11 0 22 4q31 14 59.5 45 t28.5 58q0 15 -25 15q-23 0 -52 -27q-20 -17 -84 -113q-14 -23 -20 -48q-10 -44 -16 -81q-2 -12 -4 -15.5t-6 -3.5l-18 -3q-19 -2 -24 -2t-5 2z" />
+<glyph horiz-adv-x="252" d="M55 374q0 5 15 88t34.5 201t28.5 193q2 8 0.5 11t-9.5 1q-54 -15 -62 -15q-6 0 -4 17q1 9 9 12q32 7 62 15t43.5 12t15.5 4q9 0 9 -8q0 -10 -41.5 -253t-41.5 -246q0 -17 11 -17q10 0 30 17.5t36 35t17 17.5q3 0 8.5 -4.5t5.5 -6.5q0 -4 -23 -29.5t-58 -51.5t-61 -26 q-25 0 -25 33z" />
+<glyph horiz-adv-x="650" d="M30 561q0 10 57 54t84 44q17 0 17 -16q0 -17 -3 -41.5t-6.5 -44t-10 -53t-9.5 -50.5q93 210 185 210q14 0 22 -11.5t8 -27.5q0 -66 -44 -198q69 129 111 179q51 58 94 58t43 -28q0 -24 -30 -118t-30 -108q0 -19 14 -19q10 0 43 34t34 34q3 0 7 -4t4 -7q0 -4 -24 -28.5 t-57.5 -49t-54.5 -24.5q-13 0 -21.5 7.5t-8.5 17.5q0 15 32 113.5t32 125.5q0 17 -15 17q-32 0 -104 -109q-55 -83 -75 -155q-3 -9 -12 -11q-20 -3 -35 -3q-8 0 -8 7l24 91q24 91 24 148q0 30 -16 30q-19 0 -54.5 -51t-64.5 -108q-17 -32 -35 -98q-5 -14 -9 -16 q-30 -12 -41 -12q-7 0 -5 9q10 39 23 123.5t13 122.5q0 13 -10 13q-12 0 -44 -31t-33 -31q-11 0 -11 15z" />
+<glyph horiz-adv-x="465" d="M30 587q0 2 24.5 22t60.5 40.5t58 20.5q19 0 19 -18q0 -17 -5 -44t-9.5 -46t-15.5 -57.5t-14 -50.5q60 105 110.5 160.5t96.5 55.5q43 0 43 -37q0 -25 -32 -120.5t-32 -104.5q0 -16 15 -16q11 0 28.5 15t31.5 30.5t15 15.5q3 0 7 -3t4 -6q0 -4 -20 -26.5t-53.5 -45 t-60.5 -22.5t-27 34q0 24 33 113t33 114q0 23 -18 23q-21 0 -64.5 -54.5t-83.5 -117.5q-20 -31 -37 -93q0 -1 -1.5 -5.5l-2.5 -7.5t-3.5 -6t-5.5 -3q-26 -3 -40 -3q-7 0 -5 9q49 196 49 258q0 15 -10 15q-11 0 -43 -26.5t-33 -26.5q-4 0 -8 4.5t-4 9.5z" />
+<glyph horiz-adv-x="377" d="M30 464q0 92 54.5 153.5t137.5 61.5q59 0 87 -42t28 -90q0 -78 -56.5 -141.5t-133.5 -63.5q-56 0 -86.5 35.5t-30.5 86.5zM83 471q0 -107 65 -107q37 0 69.5 39t49 88t16.5 89q0 29 -15.5 53.5t-54.5 24.5q-47 0 -88.5 -64.5t-41.5 -122.5z" />
+<glyph horiz-adv-x="432" d="M20 536v1q3 6 9 15.5t24.5 33.5t37 43t43 34t46.5 15q15 0 15 -27q0 -45 -26 -184q32 77 81 152q31 48 83 48q37 0 50.5 -20.5t13.5 -56.5q0 -91 -61.5 -169t-126.5 -78q-9 0 -26.5 3t-20.5 3q-9 0 -10 -6l-27 -172q-2 -18 7 -19l16 -2t13.5 -1t11 -1t9 -1t6.5 -1t5 -2 t3.5 -2t2 -3t0.5 -4q0 -12 -4 -14.5t-14 -2.5q-1 0 -23 3t-56.5 5.5t-65.5 2.5q-14 0 -14 9q0 11 3 15t13 4h13q9 0 12.5 3t5.5 14q64 368 64 427q0 14 -9 14q-17 0 -54 -47l-36 -46q-4 0 -9 5t-5 9zM164 392q0 -25 53 -25q42 0 84.5 73t42.5 140q0 52 -36 52 q-12 0 -24.5 -8t-24 -24.5t-18.5 -28t-17.5 -33.5t-13.5 -27q-46 -85 -46 -119z" />
+<glyph horiz-adv-x="397" d="M30 411q0 30 14.5 72t39.5 83.5t66 70.5t88 29q36 0 72 -17l11 -4q7 0 18.5 7t17.5 9q4 1 7 -1.5t3 -7.5t-22 -51q-4 -8 -6 -21l-31.5 -175.5l-32 -180.5t-11.5 -69q0 -8 11 -8h21q13 0 21 -1q12 -1 12 -15v-3v-6t-1.5 -4t-4 -2.5t-7.5 -0.5q-1 0 -11 0.5t-26.5 1 t-32.5 0.5q-11 0 -28.5 -1.5t-30.5 -3t-14 -1.5q-4 0 -6 0.5t-4 3t-2 7.5q1 11 4 13.5t14 4.5q20 4 22 8q2 3 4 13q46 203 77 378q-26 -54 -66 -109q-63 -87 -115 -87q-8 0 -17.5 2t-22.5 8.5t-22 21t-9 36.5zM85 432q0 -22 11 -35t26 -13q35 0 119 120q53 80 53 109 q0 9 -15.5 21.5t-40.5 12.5q-51 0 -102 -81t-51 -134z" />
+<glyph horiz-adv-x="295" d="M25 590q0 10 42 45t66 35q16 0 16 -18q0 -23 -22 -144h2q2 6 12.5 34.5t19.5 49.5t19 38q25 46 61 46q15 0 27 -8t12 -22q0 -32 -19 -32q-9 0 -23.5 7.5t-22.5 7.5q-11 0 -20 -14q-14 -21 -46 -103q-3 -8 -6 -19t-4 -12q-7 -29 -14.5 -68.5t-11.5 -56.5q-1 -4 -18.5 -7 t-26.5 -3q-10 0 -10 4q0 2 10 53l20.5 109.5t10.5 79.5q0 31 -10 31q-13 0 -34 -21l-21 -22q-9 0 -9 10z" />
+<glyph horiz-adv-x="289" d="M20 400q0 9 7 15.5t13 6.5q17 0 37 -20l10 -10.5t10 -10l8 -6.5t9.5 -5t10.5 -1q25 0 41 16t16 43q0 16 -18.5 35.5t-41 35t-41 38.5t-18.5 47q0 40 32.5 68.5t77.5 28.5q33 0 53 -12.5t24 -23t4 -18.5q0 -15 -16 -15q-24 0 -40 30q-12 21 -26 21q-22 0 -39 -12t-17 -39 q0 -26 19 -47t41 -34t41 -37t19 -55q0 -38 -32.5 -66t-77.5 -28q-38 0 -72 17.5t-34 37.5z" />
+<glyph horiz-adv-x="256" d="M35 637q0 1 0.5 7t0.5 8q0 6 8 6h50q7 0 8 6q2 10 6.5 44.5t5.5 38.5q1 5 2.5 8t4.5 4.5t10 2.5q4 1 17 1q25 0 25 -5q0 -1 -4.5 -20.5l-9.5 -42.5t-6 -29t0 -7t7 -1h60q9 0 9 -7q0 -19 -12 -19h-60h-3q-5 0 -6 -4q-1 -2 -1 -3q-35 -191 -35 -205q0 -16 15 -16 q11 0 51 37l40 37q2 0 7.5 -4t5.5 -6q0 -4 -26.5 -33t-64.5 -58.5t-60 -29.5q-30 0 -30 30q0 8 22 126.5t22 120.5q-5 8 -6 8h-40q-13 0 -13 5z" />
+<glyph horiz-adv-x="445" d="M25 562q0 2 10 16t26.5 34t31.5 36q26 26 59 26q47 0 47 -30q0 -11 -26.5 -110t-26.5 -120q0 -19 22 -19q27 0 73 65q59 82 84 164q1 3 10 45q1 5 45 10q8 0 8 -9q0 -4 -22.5 -120.5t-22.5 -125.5q0 -20 15 -20q12 0 40 37l29 37q8 0 8 -7q0 -5 -18.5 -34t-48 -58.5 t-51.5 -29.5q-12 0 -20.5 7t-8.5 17q0 18 18.5 99.5t21.5 102.5q-23 -48 -55 -98q-88 -132 -145 -132q-46 0 -46 36q0 9 25 104t25 126q0 23 -16 23q-12 0 -45 -40l-33 -41q-4 0 -8.5 3t-4.5 6z" />
+<glyph horiz-adv-x="396" d="M30 597q0 10 37.5 44t57.5 34q23 0 36 -8q20 -11 26.5 -18t6.5 -20q0 -32 -11 -108t-11 -88q0 -9 12 -19t16 -10q12 0 20 9q6 7 26 33q83 111 83 178q0 32 -19 32q-9 0 -20.5 -2t-19.5 -4t-9 -2q-6 0 -6 15q0 5 32 12.5t50 7.5q34 0 34 -35q0 -14 -2.5 -28t-8.5 -29.5 l-11 -27.5t-16.5 -30.5l-17 -28t-21 -30.5l-21 -28l-23 -29.5l-21.5 -27.5q-9 -12 -19 -28t-21 -16q-17 0 -36 17q-19 14 -26 27t-7 41q0 15 8.5 85.5t8.5 98.5q0 14 -7 18q-10 7 -19 7q-12 0 -27.5 -13.5t-26.5 -27t-12 -13.5q-4 0 -9.5 4.5t-5.5 7.5z" />
+<glyph horiz-adv-x="589" d="M25 600q0 9 41.5 39.5t61.5 30.5q14 0 38 -15q27 -18 27 -39q0 -25 -5.5 -70t-10.5 -80.5t-5 -36.5q0 -10 10 -22t16 -12q8 0 19 15q8 11 39.5 57.5t40.5 57.5q10 12 19 38.5t9 37.5q0 9 -16 25q-5 5 -11.5 10l-9 7t-2.5 4q0 8 11.5 19.5t20.5 11.5q14 0 37.5 -19.5 t23.5 -31.5q0 -13 -12.5 -97.5t-12.5 -100.5q0 -13 11 -24t20 -11q7 0 24 21q49 56 73 91q36 52 37 116q0 26 -17 26q-9 0 -24.5 -2t-27.5 -4.5t-13 -2.5q-6 0 -6 14q0 5 45 14.5t53 9.5q35 0 35 -33q0 -58 -57 -143q-10 -15 -21 -29t-26 -31.5t-22 -25l-27 -29t-24 -25.5 q-9 -9 -15 -9q-29 0 -49 19.5t-20 45.5q0 19 23 122q-70 -108 -101 -147q-3 -4 -11 -15.5t-11 -15.5q-10 -13 -18 -13q-13 0 -35 19q-19 14 -24.5 23.5t-5.5 30.5q0 11 9.5 70t9.5 105q0 10 -12.5 24t-22.5 14q-12 0 -27.5 -12t-26.5 -24t-12 -12q-5 0 -9 5.5t-4 8.5z" />
+<glyph horiz-adv-x="413" d="M25 369q0 28 22 76q3 4 7 4q13 0 13 -7l-5 -14q-4 -13 -4 -24q0 -18 17 -18q18 0 54 39t61 73q4 7 1 17q-44 122 -82 122q-15 0 -37.5 -24t-24.5 -24q-3 0 -6.5 4.5t-3.5 7.5q0 4 12.5 20.5t37 33.5t49.5 17q19 0 31.5 -5t23.5 -22t16.5 -28.5t17.5 -43.5q5 -12 7 -18 l4 -6l5 8q3 4 18 28.5t23 35t22 27t28 24t28 7.5q21 0 21 -34q0 -17 -5 -47q-1 -4 -9 -4t-8 4q0 5 0.5 14t0.5 13q0 20 -13 20q-26 0 -100 -110q-5 -8 -2 -16q44 -125 72 -125q14 0 33 27l19 27q14 0 14 -7q0 -16 -32.5 -55.5t-60.5 -39.5q-10 0 -18 3t-15 11.5t-12 15.5 t-11 22t-9 24t-10 28.5t-10 29.5q-2 1 -2.5 1t-4.5 -4q-2 -3 -36 -46.5t-59 -64t-49 -20.5q-29 0 -29 23z" />
+<glyph horiz-adv-x="376" d="M0 133q0 9 3.5 16t11 11.5t14 7t17.5 5.5t16 5q28 11 44 40q49 90 49 146q0 100 -12.5 182t-44.5 82q-15 0 -30 -12.5t-25 -25t-12 -12.5q-12 0 -12 8q0 4 14 22.5t40 38.5t51 20t40 -14.5t23 -56.5t10.5 -69t5.5 -100q1 -25 2 -38q2 4 22.5 41t28 52t20.5 44.5t20 52.5 q9 29 15 83q1 15 10 15q10 0 20 -6t10 -16q0 -4 -2 -14q-2 -16 -11.5 -40.5t-22 -51.5t-27 -55l-29.5 -54.5l-26.5 -46.5l-20.5 -35l-9 -15l-23 -43.5l-37 -69l-34 -60.5q-12 -19 -32 -31q-47 -29 -61 -29q-7 0 -11.5 7.5t-4.5 15.5z" />
+<glyph horiz-adv-x="353" d="M30 352q0 5 3 11t6.5 9.5t9 9.5t7.5 8l197 220l2 4q-8 -2 -13 -2q-19 0 -63 13.5t-56 13.5q-13 0 -25.5 -10t-20.5 -20t-9 -10q-12 0 -12 7q0 4 11.5 20.5t32.5 34.5t41 18q19 0 70 -18t67 -18q6 0 18 15t23 15q6 0 10 -4.5t4 -10.5q0 -10 -9 -18t-22 -14.5t-17 -10.5 l-183 -202q-4 -4 -4 -6t12 -2q30 -2 96 -7t83 -5q7 0 9.5 3t2.5 11l-1 11v12q0 7 9 7t9 -6q7 -68 7 -71q0 -13 -31 -13h-5q-19 0 -104.5 7t-120.5 7q-3 0 -9.5 -10t-13.5 -10q-11 0 -11 11z" />
+<glyph horiz-adv-x="500" d="M98 291q0 12 6 25.5t12 14.5t141 4t143 3q2 0 2 -9q0 -33 -8 -33q-9 -1 -145 -4.5t-147 -3.5q-4 0 -4 3z" />
+<glyph horiz-adv-x="467" d="M45 164q0 86 57.5 144t144.5 58q79 0 127 -48.5t48 -119.5q0 -85 -58 -144t-141 -59q-76 0 -127 46.5t-51 122.5zM90 156q0 -62 34.5 -95.5t89.5 -33.5q62 0 111 51.5t49 128.5q0 59 -36 94t-91 35q-63 0 -110 -57.5t-47 -122.5z" />
+<glyph horiz-adv-x="363" d="M60 12q0 7 2.5 10t11.5 3h40h5t3 1.5t1.5 2t1 3.5t0.5 5q9 47 21.5 122t20.5 129t8 58q0 11 -3 11q-1 1 -5 1h-53q-11 0 -11 13q0 8 1.5 11t9.5 3q9 0 44.5 -1t48.5 -1t47 1t43 1q8 0 9.5 -2.5t1.5 -11.5q0 -7 -2.5 -10t-11.5 -3h-39q-8 0 -9.5 -2t-3.5 -10 q-30 -197 -45 -309q-1 -7 2 -9.5t11 -2.5h50q11 0 11 -13q0 -8 -1.5 -11t-9.5 -3q-9 0 -46 1t-50 1t-48.5 -1t-44.5 -1q-8 0 -9.5 2.5t-1.5 11.5z" />
+<glyph horiz-adv-x="453" d="M45 11q0 7 12 17q13 12 69.5 50.5t86.5 65.5q73 65 73 122q0 40 -22.5 66.5t-61.5 26.5q-29 0 -58 -20.5t-46 -40.5l-17 -20q-5 0 -11.5 5.5t-6.5 10.5q0 7 22.5 30t64 46.5t80.5 23.5q61 0 93 -30t32 -84q0 -86 -197 -201q-28 -16 -28 -20q0 -1 7 -1h248q6 0 20 24 t15 24q4 0 11 -3t7 -5q0 -3 -7 -17l-18 -36.5t-18 -38.5q-2 -6 -11 -6h-324q-15 0 -15 11z" />
+<glyph horiz-adv-x="409" d="M5 -146q0 12 35 12q24 0 34 -11q37 -44 80 -44q55 0 99.5 47.5t44.5 106.5q0 56 -37.5 83.5t-103.5 27.5q-13 0 -34 -2l-21 -1q-17 0 -17 11t3 14t16 7q172 49 172 167q0 39 -22.5 63t-60.5 24q-29 0 -55 -8.5t-40.5 -17.5t-15.5 -9q-4 0 -7.5 6t-3.5 11q0 4 21 15 t55.5 21t64.5 10q55 0 88.5 -27.5t33.5 -78.5q0 -27 -12.5 -52t-31 -42t-36.5 -29.5t-30.5 -19.5t-12.5 -8t16 -4t38.5 -11t44.5 -22.5t38 -44t16 -69.5q0 -78 -68 -135.5t-152 -57.5q-34 0 -62.5 8t-44 20t-24 22.5t-8.5 17.5z" />
+<glyph horiz-adv-x="484" d="M25 8q0 21 44 78l18 20t16 18q34 41 163 174q15 17 55 55.5t48 38.5q14 0 10 -24l-50 -296q-2 -13 0.5 -15.5t14.5 -2.5h83q7 0 7 -10v-34q0 -8 -1.5 -9t-10.5 -1h-97q-9 0 -10 -1t-2 -7q-1 -4 -1 -6q-3 -27 -9 -71l-10 -75t-4 -33q0 -5 -2.5 -7t-12.5 -4l-42 -8 q-6 -1 -11 4t-3 17l34 180q2 4 1 6t-1.5 3.5t-3 2t-4 0t-5.5 -0.5h-7h-189q-18 0 -18 8zM81 60q0 -6 25 -6h147q13 0 15 2.5t4 17.5l35 216q1 8 -3 9.5t-9 -4.5l-197 -210q-17 -17 -17 -25z" />
+<glyph horiz-adv-x="388" d="M-10 -199q0 10 7 10q42 3 79.5 14t72.5 31.5t55.5 56t20.5 82.5q0 38 -26.5 71.5t-58.5 52.5l-58.5 36t-26.5 25q0 6 11 36l28.5 76.5t27.5 79.5q2 6 15 6q4 0 83 -7.5t85 -7.5q20 0 24 4l2 4l12 24q6 0 13 -2.5t7 -5.5q0 -1 -25 -68q-6 -16 -11 -18q-3 -1 -9 -1t-28 3 t-62 9t-72 10q-23 2 -28 -7q-12 -24 -23 -55.5t-11 -37.5q0 -4 20 -14.5t48 -27.5t56.5 -39.5t48.5 -57.5t20 -74q0 -65 -48 -117.5t-113.5 -78t-127.5 -25.5q-8 0 -8 13z" />
+<glyph horiz-adv-x="471" d="M55 187q0 107 56 204.5t138 169.5q54 47 112 76.5t75 29.5q10 0 10 -19q0 -3 -8 -6q-81 -32 -130 -80q-94 -91 -135 -173q-14 -30 -14 -36q0 -1 6.5 0t20.5 4q37 7 65 7q79 0 125.5 -45t46.5 -128q0 -89 -58.5 -142.5t-142.5 -53.5q-32 0 -59.5 8.5t-53 29t-40 60 t-14.5 94.5zM116 173q0 -31 8.5 -62t37 -59t71.5 -28q54 0 87.5 51.5t33.5 121.5q0 146 -120 146q-19 0 -48 -6.5t-35 -14.5q-35 -47 -35 -149z" />
+<glyph horiz-adv-x="452" d="M45 286q0 4 6 20t14 43.5t13 54.5q3 20 12 20q17 0 17 -9q0 -3 -1 -9.5t-1 -10.5q0 -2 51 -2h268q13 0 13 -9q0 -6 -41.5 -76.5l-100 -166l-73.5 -121.5q-80 -137 -109 -215q-5 -15 -12 -15q-11 0 -21 6t-10 14q0 28 56 122.5t143.5 226t102.5 155.5q5 8 5 13q0 8 -14 8 h-193q-82 0 -85 -9l-13 -40q-6 -8 -10 -9q-17 0 -17 9z" />
+<glyph horiz-adv-x="415" d="M45 130q0 34 14.5 66t35 54.5t41.5 39.5t35.5 27t14.5 12q0 1 -10.5 10.5t-25 25t-29 35.5t-25 47t-10.5 53q0 71 48 116t124 45q62 0 99.5 -35.5t37.5 -98.5q0 -29 -13.5 -58t-32.5 -49.5t-38.5 -37t-33 -26.5t-13.5 -12q0 -1 11.5 -11.5t28 -28.5t32.5 -40t27.5 -53 t11.5 -61q0 -67 -52.5 -110t-129.5 -43q-68 0 -108 33.5t-40 99.5zM99 145q0 -55 30.5 -89t72.5 -34q48 0 81 35.5t33 82.5q0 22 -11.5 48.5t-27.5 48t-33.5 39.5t-29.5 28.5t-14 10.5q-7 0 -30 -20.5t-47 -62.5t-24 -87zM139 534q0 -36 25.5 -79.5t51 -69.5t30.5 -26 q7 0 30.5 21.5t46.5 62.5t23 82q0 48 -28 80.5t-74 32.5q-48 0 -76.5 -32t-28.5 -72z" />
+<glyph horiz-adv-x="437" d="M-6 -185q0 2 32 13q114 40 235 186q20 23 20 32q-2 1 -5 0.5t-12 -4t-12 -4.5q-41 -13 -74 -13q-62 0 -100 45.5t-38 121.5q0 89 62 145.5t146 56.5q70 0 109.5 -52.5t39.5 -138.5q0 -77 -39 -150.5t-101 -125.5q-49 -41 -111.5 -74t-99 -45.5t-43.5 -12.5q-9 0 -9 20z M99 173q0 -55 26.5 -88t79.5 -33q44 0 74 13q25 11 42.5 64t17.5 111q0 61 -25.5 94.5t-66.5 33.5q-66 0 -107 -60.5t-41 -134.5z" />
+</font>
+</defs></svg> 
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/css/font-files/test.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/css/font-files/test.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/css/font-files/test.html	(revision 29468)
@@ -0,0 +1,62 @@
+<!DOCTYPE HTML>
+<html lang="en-En">
+<head>
+  <meta charset="UTF-8">
+  <title>SVG @font-face Test</title>
+</head>
+<body>
+  <h2>@font-face in SVG</h2>
+  
+  <p style="width: 500px"><strong>Problem:</strong> I'm trying trying to place an images in svg format with custom fonts. It works in <code>svg</code> but not in  <code>img</code>. If you open the image in a new tab you will see it rendered with the proper font. The font is served from this same website in this directory.</p>
+  
+  <a href="test_ff.svg">Link to the test.svg</a>
+  
+  <table>
+    <tr><td>
+  <svg width="500" height="200" version="1.1" xmlns = 'http://www.w3.org/2000/svg' xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 500 200">  
+    <defs>
+    <style type="text/css">
+    @font-face {
+      font-family: 'Arvo';
+      font-style: normal;
+      font-weight: normal;
+      src: url(arvo-regular-webfont.woff) format('woff');
+    }
+    </style>
+    </defs>
+    <rect x="0" y="0" height="100" width="500" fill="#eee" />
+    <text x="20" y="50" font-family="Arvo" font-weight="normal" font-size="32">Text using CSS @font-face</text>
+  </svg>
+  </td>
+  <td>
+    <pre>
+      &lt;svg width=&quot;500&quot; height=&quot;200&quot; version=&quot;1.1&quot; xmlns = &#39;http://www.w3.org/2000/svg&#39; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot; viewBox=&quot;0 0 500 200&quot;&gt;  
+           &lt;defs&gt;
+           &lt;style type=&quot;text/css&quot;&gt;
+           @font-face {
+             font-family: &#39;Arvo&#39;;
+             font-style: normal;
+             font-weight: normal;
+             src: url(arvo-regular-webfont.woff) format(&#39;woff&#39;);
+           }
+           &lt;/style&gt;
+           &lt;/defs&gt;
+           &lt;rect x=&quot;0&quot; y=&quot;0&quot; height=&quot;100&quot; width=&quot;500&quot; fill=&quot;#eee&quot; /&gt;
+           &lt;text x=&quot;20&quot; y=&quot;50&quot; font-family=&quot;Arvo&quot; font-weight=&quot;normal&quot; font-size=&quot;32&quot;&gt;Text using CSS @font-face&lt;/text&gt;
+         &lt;/svg&gt;
+  </pre>
+  </td>
+  </tr>
+  <tr>
+    <td><img src="test_ff.svg" width="500" height="200" /></td>
+    <td style="verical-align: top;">
+      <pre>
+        &lt;img src="test_ff.svg" width="500" height="200" /&gt;
+      </pre>
+    </td>
+  </tr>
+  </table> 
+   
+   
+</body>
+</html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/css/font-files/test.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/css/font-files/test.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/css/font-files/test.svg	(revision 29468)
@@ -0,0 +1,15 @@
+
+<svg width="300" height="300" version="1.1" xmlns = 'http://www.w3.org/2000/svg' viewBox="0 0 300 300">  
+  <defs>
+    <style type="text/css">
+   		@font-face {
+   		  font-family: Arvo;
+   		  src: url('arvo-regular-webfont.woff') format('woff');
+   		  font-weight: normal;
+   		  font-style: normal;
+   		}
+   </style>
+  </defs>
+  <rect x="0" y="0" height="300" width="300" fill="#eee" />
+  <text x="100" y="100" font-family="Arvo" font-weight="normal" font-size="32">Text using CSS @font-face</text>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/css/font-files/test_ff.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/css/font-files/test_ff.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/css/font-files/test_ff.svg	(revision 29468)
@@ -0,0 +1,16 @@
+
+
+<svg width="500" height="200" version="1.1" xmlns = 'http://www.w3.org/2000/svg' xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 500 200">  
+  <defs>
+  <style type="text/css">
+  @font-face {
+    font-family: 'Arvo';
+    font-style: normal;
+    font-weight: normal;
+    src: url(arvo-regular-webfont.woff) format('woff');
+  }
+  </style>
+  </defs>
+  <rect x="0" y="0" height="100" width="500" fill="#eee" />
+  <text x="20" y="50" font-family="Arvo" font-weight="normal" font-size="32">Text using CSS @font-face</text>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/css/font-files/test_ffsvg.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/css/font-files/test_ffsvg.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/css/font-files/test_ffsvg.svg	(revision 29468)
@@ -0,0 +1,13 @@
+<svg width="500" height="200" version="1.1" xmlns = 'http://www.w3.org/2000/svg' xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 500 200">  
+  <defs>
+  <font-face font-family="Arvo">
+   <font-face-src>
+    <font-face-uri xlink:href="Arvo-Regular-webfont.svg">
+     <font-face-format string="svg"/>
+    </font-face-uri>
+   </font-face-src>
+  </font-face>
+  </defs>
+  <rect x="0" y="0" height="100" width="500" fill="#eee" />
+  <text x="20" y="50" font-family="Arvo" font-weight="normal" font-size="32">Text using CSS @font-face</text>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/css/fonts.css
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/css/fonts.css	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/css/fonts.css	(revision 29468)
@@ -0,0 +1,72 @@
+@font-face {
+    font-family: 'Arvo';
+    src: url('font-files/arvo-bold-webfont.woff') format('woff');
+    font-weight: bold;
+    font-style: normal;
+}
+@font-face {
+    font-family: 'Arvo';
+    src: url('font-files/arvo-bolditalic-webfont.woff') format('woff');
+    font-weight: bold;
+    font-style: italic;
+}
+@font-face {
+    font-family: 'Arvo';
+    src: url('font-files/arvo-italic-webfont.woff') format('woff');
+    font-weight: normal;
+    font-style: italic;
+}
+@font-face {
+    font-family: 'Arvo';
+    src: url('font-files/arvo-regular-webfont.woff') format('woff');
+    font-weight: normal;
+    font-style: normal;
+}
+@font-face {
+    font-family: 'Euphoria';
+    src: url('font-files/euphoriascript-regular-webfont.woff') format('woff');
+    font-weight: normal;
+    font-style: normal;
+}
+@font-face {
+    font-family: 'Oswald';
+    src: url('font-files/oswald-bold-webfont.woff') format('woff');
+    font-weight: bold;
+    font-style: normal;
+}
+@font-face {
+    font-family: 'Oswald';
+    src: url('font-files/oswald-light-webfont.woff') format('woff');
+    font-weight: normal;
+    font-style: normal;
+}
+@font-face {
+    font-family: 'Shadows Into Light';
+    src: url('font-files/shadowsintolight-webfont.woff') format('woff');
+    font-weight: normal;
+    font-style: normal;
+}
+@font-face {
+    font-family: 'Simonetta';
+    src: url('font-files/simonetta-black-webfont.woff') format('woff');
+    font-weight: normal;
+    font-style: normal;
+}
+@font-face {
+    font-family: 'Simonetta';
+    src: url('font-files/simonetta-blackitalic-webfont.woff') format('woff');
+    font-weight: normal;
+    font-style: italic;
+}
+@font-face {
+    font-family: 'Simonetta';
+    src: url('font-files/simonetta-italic-webfont.woff') format('woff');
+    font-weight: normal;
+    font-style: italic;
+}
+@font-face {
+    font-family: 'Simonetta';
+    src: url('font-files/simonetta-regular-webfont.woff') format('woff');
+    font-weight: normal;
+    font-style: normal;
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/css/method-draw.compiled.css
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/css/method-draw.compiled.css	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/css/method-draw.compiled.css	(revision 29468)
@@ -0,0 +1,417 @@
+#svg_editor .jPicker .Icon{display:inline-block;height:24px;position:relative;text-align:left;width:25px}
+#svg_editor .jPicker .Icon span.Color,#svg_editor .jPicker .Icon span.Alpha{background-position:2px 2px;display:block;height:100%;left:0;position:absolute;top:0;width:100%}
+#svg_editor .jPicker .Icon span.Image{background-repeat:no-repeat;cursor:pointer;display:block;height:100%;left:0;position:absolute;top:0;width:100%}
+#svg_editor .jPicker.Container{z-index:10}
+table#svg_editor .jPicker{width:545px;z-index:20}
+#svg_editor .jPicker .Move{background-color:#ddd;border-color:#fff #666 #666 #fff;border-style:solid;border-width:1px;cursor:move;height:12px;padding:0}
+#svg_editor .jPicker .Title{display:none}
+#svg_editor .jPicker div.Map{border:solid #000 1px;cursor:crosshair;height:260px;margin:0;overflow:hidden;padding:0;position:relative;width:260px}
+#svg_editor .jPicker div[class="Map"]{height:256px;width:256px}
+#svg_editor .jPicker div.Bar{border:solid #000 1px;cursor:n-resize;height:260px;margin:0 15px;overflow:hidden;padding:0;position:relative;width:24px}
+#svg_editor .jPicker div[class="Bar"]{height:256px;width:20px}
+#svg_editor .jPicker .Map .Map1,#svg_editor .jPicker .Map .Map2,#svg_editor .jPicker .Map .Map3,#svg_editor .jPicker .Bar .Map1,#svg_editor .jPicker .Bar .Map2,#svg_editor .jPicker .Bar .Map3,#svg_editor .jPicker .Bar .Map4,#svg_editor .jPicker .Bar .Map5,#svg_editor .jPicker .Bar .Map6{background-color:transparent;background-image:none;display:block;left:0;position:absolute;top:0}
+#svg_editor .jPicker .Map .Map1,#svg_editor .jPicker .Map .Map2,#svg_editor .jPicker .Map .Map3{height:2596px;width:256px}
+#svg_editor .jPicker .Bar .Map1,#svg_editor .jPicker .Bar .Map2,#svg_editor .jPicker .Bar .Map3,#svg_editor .jPicker .Bar .Map4{height:3896px;width:20px}
+#svg_editor .jPicker .Bar .Map5,#svg_editor .jPicker .Bar .Map6{height:256px;width:20px}
+#svg_editor .jPicker .Map .Map1,#svg_editor .jPicker .Map .Map2,#svg_editor .jPicker .Bar .Map6{background-repeat:no-repeat}
+#svg_editor .jPicker .Map .Map3,#svg_editor .jPicker .Bar .Map5{background-repeat:repeat}
+#svg_editor .jPicker .Bar .Map1,#svg_editor .jPicker .Bar .Map2,#svg_editor .jPicker .Bar .Map3,#svg_editor .jPicker .Bar .Map4{background-repeat:repeat-x}
+#svg_editor .jPicker .Map .Arrow{display:block;position:absolute}
+#svg_editor .jPicker .Bar .Arrow{display:block;left:0;position:absolute}
+#svg_editor .jPicker .Preview{font-size:9px;text-align:center}
+#svg_editor .jPicker .Preview div.bgt{height:62px;margin:0 auto;padding:0;width:62px}
+#svg_editor .jPicker .Preview div span{border:1px solid #000;display:block;height:30px;margin:0 auto;padding:0;width:60px}
+#svg_editor .jPicker .Preview .Active{border-bottom-width:0}
+#svg_editor .jPicker .Preview .Current{border-top-width:0;cursor:pointer}
+#svg_editor .jPicker .Button{text-align:center;width:115px}
+#svg_editor .jPicker .Button input{width:100px}
+#svg_editor .jPicker td.Radio{margin:0;padding:0;width:31px}
+#svg_editor .jPicker td.Radio input{margin:0 5px 0 0;padding:0}
+#svg_editor .jPicker td.Text{font-size:12px!important;height:22px;margin:0;padding:0;text-align:left;width:70px}
+#svg_editor .jPicker tr.Hex td.Text{width:100px;color:#666}
+#svg_editor .jPicker tr.Hex td.Text span{width:100px;color:#333}
+#svg_editor .jPicker td.Text input{background-color:#fff;border:1px inset #aaa;height:15px;margin:0 0 0 5px;text-align:left;width:30px;color:#333}
+#svg_editor #color_picker .jPicker tr.Hex td.Text input.Hex{width:50px;display:inline-block;float:none}
+#svg_editor .jPicker tr.Hex td.Text input.AHex{width:20px;display:none}
+#svg_editor .jPicker .Grid{text-align:center;float:right;width:108px}
+#svg_editor .jPicker .Grid span.QuickColor{cursor:pointer;display:inline-block;height:15px;line-height:15px;margin:0;padding:0;width:18px}
+#svg_editor .jPicker td{vertical-align:top}
+#svg_editor .jPicker td.colorsquare{width:275px}
+#svg_editor .jPicker .prev_div{margin-top:-15px}
+#svg_editor .jPicker .actions{position:absolute;bottom:20px;left:20px;right:20px}
+#svg_editor .jPicker .actions .Ok{position:absolute;top:0;right:0}
+#svg_editor .jPicker .actions .Cancel{position:absolute;top:0;left:0}
+#svg_editor .jPicker .color_preview{width:62px;margin:0 auto}
+h2.jGraduate_Title{display:none}
+.jGraduate_Picker{position:absolute;padding:20px}
+.jGraduate_tabs li{display:inline-block;padding:5px 10px;margin-right:5px;cursor:pointer}
+li.jGraduate_tab_current{background:#fff;border-radius:3px 3px 0 0}
+.jGraduate_colPick{display:none}
+.jGraduate_gradPick{display:none;overflow:visible}
+.jGraduate_tabs{position:relative;background-color:#ddd;padding:10px 10px 0 10px;margin:-20px -20px 20px -20px;border-radius:3px 3px 0 0}
+div.jGraduate_Swatch{float:left;margin:0 15px 0 0}
+div.jGraduate_GradContainer{border:solid #000 1px;background-image:url(../images/map-opacity.png);background-position:0 0;height:256px;width:256px;position:relative}
+div.jGraduate_GradContainer div.grad_coord{background:rgba(0,0,0,0.8);border:2px solid white;border-radius:15px;-moz-border-radius:5px;width:14px;height:14px;position:absolute;margin:-7px -7px;top:0;left:0;text-align:center;font-size:8px;line-height:14px;color:white;text-decoration:none;cursor:pointer;-moz-user-select:none;-webkit-user-select:none}
+.jGraduate_AlphaArrows{position:absolute;margin-top:-10px;margin-left:250.5px}
+div.jGraduate_Opacity{border:2px inset #eee;margin-top:14px;background-color:black;background-image:url(../images/Maps.png);background-position:0 -2816px;height:20px;cursor:ew-resize}
+div.jGraduate_StopSlider{margin:-10px 0 0 -10px;width:276px;overflow:visible;background:white;height:45px;cursor:pointer}
+div.jGraduate_StopSection{width:120px;float:left}
+div.jGraduate_StopSection.jGraduate_SpreadMethod{display:none}
+input.jGraduate_Ok,input.jGraduate_Cancel{display:block;width:100px}
+input.jGraduate_Ok{margin:0 0 5px 0}
+.colorBox{float:left;height:16px;width:16px;border:1px solid #808080;cursor:pointer;margin:4px 4px 4px 30px}
+.colorBox+label{float:left;margin-top:7px}
+label.jGraduate_Form_Heading{color:#333;padding:2px;font-weight:bold;font-size:13px}
+div.jGraduate_Form_Section{-moz-border-radius:5px;-webkit-border-radius:5px;padding:15px 5px 5px 5px;margin:5px 2px;width:100px;text-align:center;overflow:auto;background:#eee}
+div.jGraduate_Form label{padding:0 2px;color:#333}
+div.jGraduate_StopSection input[type=text],div.jGraduate_Slider input[type=text]{width:33px;color:#333}
+div.jGraduate_LightBox{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#000;opacity:.5;display:none}
+div.jGraduate_stopPicker{position:absolute;display:none;background:white;padding:20px;border-radius:3px;width:530px;height:300px;box-shadow:0 5px 25px black}
+.jGraduate_gradPick{width:526px}
+.jGraduate_gradPick div.jGraduate_Slider{line-height:160%}
+.jGraduate_gradPick div.jGraduate_Slider label:last-child{position:absolute;right:10px;top:0;color:#999;font-weight:bold}
+.jGraduate_gradPick div.jGraduate_Slider label:last-child input{margin:0 3px 0 0;color:#333}
+.jGraduate_gradPick .jGraduate_Form{float:left;width:270px;position:absolute;left:284px;width:266px;height:200px;top:195px;margin:-3px 3px 0 10px;line-height:200%}
+.jGraduate_gradPick .jGraduate_Form label,.jGraduate_gradPick .jGraduate_Form input{width:auto;float:left}
+.jGraduate_gradPick .jGraduate_Form.jGraduate_rg_field label,.jGraduate_gradPick .jGraduate_Form.jGraduate_rg_field input{width:auto;float:left;font-size:11px}
+.jGraduate_gradPick .jGraduate_Form.jGraduate_rg_field #color_picker_jGraduate_match_ctr{float:none}
+.jGraduate_gradPick .jGraduate_Form label{clear:left}
+.jGraduate_gradPick .jGraduate_Points{position:static;float:left;margin:0;width:auto}
+.jGraduate_Colorblocks{display:table;border-spacing:0 5px}
+.jGraduate_colorblock{display:table-row}
+.jGraduate_Colorblocks .jGraduate_colorblock>*{display:table-cell;vertical-align:middle;margin:0;float:none}
+.jGraduate_gradPick .jGraduate_Form_Section{padding-top:9px}
+.jGraduate_Slider{text-align:center;float:left;width:100%;position:relative;margin:5px 0}
+.jGraduate_Slider .jGraduate_Form_Section{border:0;width:250px;padding:0 2px;overflow:visible}
+.jGraduate_Slider label.prelabel{width:40px;text-align:left}
+.jGraduate_SliderBar{width:140px;float:left;margin:0 5px;border:1px solid #BBB;height:20px;position:relative}
+div.jGraduate_Slider input{margin-top:5px}
+div.jGraduate_Slider img{top:0;left:0;position:absolute;cursor:ew-resize}
+.jPicker .Button .Ok,.jGraduate_Picker .jGraduate_OkCancel .jGraduate_Ok{-webkit-appearance:none;margin:0;position:absolute;bottom:5px;right:5px}
+.jPicker .Button .Cancel,.jGraduate_Picker .jGraduate_OkCancel .jGraduate_Cancel{margin:0;position:absolute;bottom:5px;left:5px}
+body{background:#3f3f3c;font:13px/120% 'Lucida Sans','Lucida Grande','Lucida Sans Unicode',sans-serif;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin:0;padding:0}
+::selection{background:#000;color:#fff}
+::-moz-selection{background:#000;color:#fff}
+html,body{overflow:hidden;width:100%;height:100%}
+::-webkit-scrollbar{width:5px;height:5px;background:#444}
+::-webkit-scrollbar-track{border-radius:10px;background:#444}
+::-webkit-scrollbar-thumb{border-radius:10px;background:#666}
+::-webkit-scrollbar-corner{background:#444}
+#browser-not-supported{font-size:.8em;font-family:Verdana,Helvetica,Arial;color:#000}
+#svgroot{-moz-user-select:none;-webkit-user-select:none;position:absolute;top:0;left:0}
+#svg_editor{background:#2f2f2c}
+#menu_bar{padding:0 0 0 50px;background:#2f2f2c;position:relative;z-index:2}
+#menu_bar.active .menu.open .menu_list{display:block}
+.menu{position:relative;z-index:5;color:#333;display:inline-block}
+.menu_title{cursor:pointer;display:inline-block;padding:7px 10px;z-index:10;color:#fff;position:relative;height:16px;vertical-align:top}
+.touch .menu_title{padding:7px 17px;height:26px;line-height:26px}
+.menu .menu_title:hover{background:rgba(255,255,255,0.1)}
+.menu_list .separator{margin:5px 0;border-top:solid #ddd 1px}
+.menu_list{display:none;position:absolute;top:28px;left:0;white-space:nowrap;background:white;padding:7px 0;border-radius:0 3px 3px 3px;box-shadow:0 0 20px rgba(0,0,0,0.8)}
+.touch .menu_list{top:38px}
+#menu_bar.active .menu.open .menu_title{background:white;color:#333}
+.menu_list .menu_item{position:relative;overflow:hidden;line-height:22px;padding:5px 69px 5px 25px;cursor:default;color:#333}
+.menu_list .menu_item.tool_button{background:transparent;border:0;margin:0;padding:5px 55px 5px 25px;height:auto;width:auto}
+.menu_list .menu_item.push_button_pressed:before{content:'â';position:absolute;display:block;left:7px;top:3px;width:20px;height:20px}
+.menu_list .menu_item:hover,.menu_list .menu_item.push_button_pressed:hover{background:rgba(0,0,0,0.1);color:#000}
+.menu_list .menu_item.disabled:hover,.menu_list .menu_item.push_button_pressed.disabled:hover{background:transparent;color:#333}
+.menu_list .menu_item.push_button_pressed{background:transparent;border:0;width:auto;height:auto;margin:0}
+.menu_list .menu_item span{display:block;position:absolute;right:10px;padding:5px;background:rgba(0,0,0,0.1);top:6px;height:10px;text-align:center;font-size:10px;line-height:120%}
+#svgcanvas{line-height:normal;display:inline-block;background-color:#a0a0a0;text-align:center;vertical-align:middle;width:640px;height:480px;position:relative;background:#3f3f3c}
+#rulers>div{position:absolute;background:#2f2f2c;z-index:1;overflow:hidden;-webkit-font-smoothing:none}
+#rulers #ruler_corner{top:30px;left:50px;width:15px;height:15px;border:solid #444 1px;z-index:2}
+#ruler_x{height:15px;top:30px;left:66px;right:175px;border-top:solid #444 1px;border-right:solid #444 1px}
+#ruler_x_cursor{height:15px;border-right:dotted #999 1px;position:absolute;background:#2f2f2c}
+#ruler_y_cursor{width:15px;border-top:dotted #999 1px;position:absolute;background:#2f2f2c}
+#rulers.moved #ruler_corner,#rulers.moved #ruler_x{top:101px}
+#ruler_y{width:15px;top:46px;left:50px;bottom:40px;border-left:solid #444 1px;border-bottom:solid #444 1px}
+#rulers.moved #ruler_y{top:116px}
+#ruler_x canvas:first-child{margin-left:-16px}
+#ruler_x canvas{float:left}
+#ruler_y canvas{margin-top:-16px}
+#ruler_x>div,#ruler_y>div{overflow:hidden}
+#palette{display:block;position:absolute;z-index:2;left:10px;bottom:5px;width:410px;right:145px;height:30px}
+.palette_item{height:20%;width:5.2%;float:left;cursor:url(../images/eyedropper.png) 0 16,crosshair}
+.palette_item.transparent,.palette_item.white,.palette_item.black{background:#fff;position:absolute;width:10px;height:10px;left:-10px;top:0}
+.palette_item.transparent{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNXG14zYAAAAVdEVYdENyZWF0aW9uIFRpbWUAOC8yMi8xMg1cp6sAAABESURBVBiVjdBBCgAgCETRr/e/87SJKFPLnfIcQRMIwMBIShIAvgZzoSrfkzrs8WyF1+kX9r3p8AE7nL7kSpSshN+JEQ8GixkF0mSevgAAAABJRU5ErkJggg==)}
+.palette_item.black{background:#000;top:10px}
+.palette_item.white{background:#fff;top:20px}
+#color_tools{position:relative;width:48px;height:48px;margin:6px 6px 0 6px}
+.touch #color_tools{width:auto;height:auto}
+#tool_fill{position:absolute;top:0;left:0;z-index:1}
+.touch #tool_fill{position:static;width:36px;height:36px;margin-bottom:10px}
+#tool_fill.active,#tool_stroke.active{z-index:2}
+#tool_stroke{top:14px;left:14px}
+.touch #tool_fill.active,.touch #tool_stroke.active{outline:4px solid #09f}
+#tool_fill,#tool_stroke,#tool_canvas{box-shadow:0 0 0 1px #2f2f2c;position:absolute}
+.touch #tool_fill,.touch #tool_stroke,.touch #tool_canvas{position:relative;top:0;left:0}
+#color_canvas_tools{float:left;cursor:pointer}
+#tool_fill .color_block{width:24px;height:24px;overflow:hidden;border:solid #ccc 1px}
+.touch #tool_eyedropper{margin-top:6px}
+.touch #tool_fill .color_block{width:36px;height:36px}
+.touch #tool_fill .color_block svg{width:36px!important;height:36px!important}
+.touch #tool_switch{display:none}
+#use_panel .tool_button,#path_node_panel .tool_button{color:#999;border:solid #3f3f3c 1px;border-radius:3px;padding:3px 10px 3px 40px;background:transparent;position:relative;margin-top:10px;width:90px;height:23px;line-height:24px}
+#use_panel .tool_button{padding-left:10px;margin-bottom:10px;width:124px}
+#path_node_panel .tool_button img,#path_node_panel .tool_button svg{position:absolute;left:5px;top:3px}
+#color_tools #tool_fill .color_block:hover,#color_tools #tool_stroke .color_block:hover{border-color:#fff}
+#color_tools #tool_fill .color_block>div{position:absolute;top:0;left:0}
+.touch #color_tools #tool_fill .color_block>div{position:relative}
+#color_tools #tool_fill .color_block #fill_bg,#color_tools #tool_stroke .color_block #stroke_bg{position:absolute;top:1px;left:1px;bottom:1px;right:1px}
+.touch #color_tools #tool_fill .color_block #fill_bg,.touch #color_tools #tool_stroke .color_block #stroke_bg{width:36px;height:36px;right:auto;bottom:auto}
+.touch #tool_stroke{position:relative;top:0;left:0;z-index:0}
+#stroke_color:after{content:'';position:absolute;display:block;width:8px;height:8px;left:8px;top:8px;background:#ccc;box-shadow:0 0 0 1px #000}
+.touch #stroke_color:after{height:14px;left:10px;position:absolute;top:10px;width:14px}
+#color_tools #tool_switch{cursor:pointer;opacity:.7;width:11px;height:11px;background:transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABV0RVh0Q3JlYXRpb24gVGltZQA2LzE0LzEyP6j5+gAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNXG14zYAAAB4SURBVBiVjZHRCYUwDEVvxIF0kZKN7EjiIrrReR/PSNSKXiikcE5JUtMeADMzXQIcdRfgFWqlyyB7ap1wL+0HAnIv1DqRJUBxTkLUWXIvh9AHkIeb58UkIUnDMH4ZR0otCfhv4ynbtp7ut722ZniFG8L9xx4Ek6QfN9huARmYwR0AAAAASUVORK5CYII=) top left no-repeat;position:absolute;top:-2px;left:28px}
+#color_tools #cross:hover{opacity:1}
+#color_tools #tool_stroke:hover #stroke_color:after{background:#fff}
+#color_tools #tool_stroke .color_block{width:24px;height:24px;overflow:hidden;border:solid #ccc 1px}
+.touch #color_tools #tool_stroke .color_block{width:36px;height:36px}
+#color_tools #tool_stroke .color_block>div{position:absolute;bottom:0;right:0}
+.touch #color_tools #tool_stroke .color_block>div{position:relative}
+#color_tools .icon_label{padding:0;width:24px;height:100%;cursor:pointer;position:absolute}
+#linkLabel>svg{height:20px;padding-top:4px}
+div#workarea{display:inline-table-cell;position:absolute;top:30px;left:50px;bottom:40px;right:175px;background-color:#444;overflow:auto;text-align:center;-webkit-transition:-webkit-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);-moz-transition:-moz-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);-o-transition:-o-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);-ms-transition:-ms-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);transition:transform 500ms cubic-bezier(0.13,0.66,0.24,0.92)}
+.touch div#workarea{top:40px}
+.menu .menu_list{display:none;position:absolute}
+.tool_button,.tool_button_current,.tool_button_pressed{cursor:pointer}
+.tool_button:hover,.push_button:hover,.buttonup:hover,.buttondown,.tool_button_current,.push_button_pressed{background-color:#fff}
+.tool_button.disabled,.tool_button.disabled:hover{opacity:.3;background-color:#aaa}
+#tools_left .tool_button{background:#2f2f2c;position:relative}
+#tools_left .tool_button.loaded{background:#ccc}
+#tools_left .tool_button.loaded:hover{background:#fff}
+#tools_left .tool_button:after,#tools_left .tool_button_current:after{position:absolute;content:'';border:solid #2f2f2c 2px;top:-1px;left:-1px;width:26px;height:26px;z-index:0}
+#tools_left .tool_button_current{background-color:#0cf}
+#main_icon span{position:absolute;width:100%;height:100%;display:block;z-index:2}
+#tools_top{position:absolute;width:160px;height:100%;background:#2f2f2c;right:0;top:20px;border-bottom:0;overflow:visible;padding:0 0 0 15px}
+.touch #tools_top{top:30px}
+label{display:block;color:#999}
+div#font-selector{width:140px;height:300px;overflow:auto;margin:0 auto;position:absolute;top:27px;right:0;border:1px solid black;padding:10px;display:none;background-color:white;z-index:10;border-radius:3px;box-shadow:0 5px 10px rgba(0,0,0,0.7)}
+div#font-selector img{width:100%}
+div#font-selector .font-item{border-bottom:solid #ddd 1px;padding:5px 10px;margin:0 -10px}
+div#font-selector .font-item:hover{background-color:#eee}
+#tools_top #marker_panel *{float:left}
+#tools_top #marker_panel h4{float:none}
+#tools_top #marker_panel .dropdown .icon_label{width:36px;height:20px;margin-top:2px;border:solid #3f3f3c 1px;text-align:center}
+#tools_top #marker_panel .dropdown button{margin-top:2px}
+#tools_top #marker_panel #marker_panel_title{float:none;color:#fff;margin-bottom:3px}
+#tools_top #marker_panel .dropdown .icon_label img{float:none}
+#color_picker input[type=text],#color_picker input[type=number]{width:30px;background:#fff}
+.dropdown_set input[type=text],.dropdown_set input[type=number]{width:50px}
+input[type=text].wide,input[type=number].wide{width:110px}
+input[type=text].tuco,input[type=number].tuco{width:150px}
+input[type=submit],input[type=button],button{background:#4f80ff;color:#fff;border-radius:3px;padding:7px 17px;border:0;line-height:140%;font-size:14px;font-weight:bold;font-family:sans-serif}
+input[type=submit]:hover,button:hover{box-shadow:inset 0 3px 10px rgba(255,255,255,0.1),inset 0 -3px 10px rgba(0,0,0,0.2)}
+input[type=submit]:hover,button:hover{background:#2f84c1}
+input[type=submit]:active,button:active{box-shadow:inset 0 2px 2px rgba(0,0,0,0.2);border-bottom:solid rgba(255,255,255,0.1) 1px}
+#tools_left{position:absolute;border-right:0;width:50px;top:30px;bottom:0;left:0;background:#2f2f2c;z-index:4}
+#workarea.wireframe #svgcontent *{fill:none;stroke:#000;stroke-width:1px;stroke-opacity:1.0;stroke-dasharray:0;opacity:1;pointer-events:stroke;vector-effect:non-scaling-stroke;filter:none}
+#workarea.wireframe #svgcontent text{fill:#000;stroke:none}
+#workarea.wireframe #canvasBackground>rect{fill:#FFF!important}
+#workarea #canvasBackground>rect{stroke:transparent!important}
+.context_panel{display:none}
+#canvas_panel{display:block}
+#multiselected_panel .selected_tool{vertical-align:12px}
+#cur_context_panel{position:absolute;top:47px;left:68px;line-height:22px;overflow:auto;border-bottom:0;border-right:0;padding-left:5px;font-size:12px;background:black;color:#999;opacity:.5;padding:0 10px;border-radius:0 10px 10px 0}
+#cur_context_panel a{float:none;text-decoration:none;color:#fff}
+#cur_context_panel a:hover{text-decoration:underline}
+#tools_left .tool_button,#tools_left .tool_button_current{position:relative;z-index:11}
+.flyout_arrow_horiz{position:absolute;bottom:-1px;right:0;z-index:10}
+.dropdown{position:relative;float:left}
+.dropdown button{width:21px;height:22px;padding:0 3px 0 3px;border:0;background-color:#555;border-radius:0 2px 2px 0;margin-left:-1px;position:relative}
+.dropdown button:hover{background-color:#666}
+.dropdown button:after{content:'';position:absolute;border:solid transparent 4px;border-top-color:#999;top:9px;left:6px}
+.dropdown button.down{border-left:1px solid #808080;border-top:1px solid #808080;border-right:1px solid #fff;border-bottom:1px solid #fff;background-color:#b0b0b0}
+.dropdown ul{list-style:none;position:absolute;margin:0;padding:0;left:-80px;top:26px;z-index:4;display:none}
+.dropup ul{top:auto;bottom:26px;border-radius:3px;box-shadow:0 5px 10px #000}
+.dropup ul:after{content:'';display:block;position:absolute;bottom:-10px;right:50%;top:auto;width:0;height:0;border:solid transparent 5px;border-top-color:#fff}
+.dropdown li{display:block;width:120px;padding:5px 10px;color:#333;background:#fff;margin:0;line-height:16px}
+.dropdown li:first-child{border-radius:3px 3px 0 0}
+.dropdown li:last-child{border-radius:0 0 3px 3px}
+.dropdown li:hover{background-color:#ddd;color:#000}
+.dropdown li.special{padding:10px;background:white;border:0;box-shadow:0 3px 10px black;border-radius:3px!important}
+.dropdown li.special:after{content:'';display:block;position:absolute;top:-10px;right:50%;border:solid transparent 5px;border-bottom-color:#fff}
+.dropdown li.special.down:after{bottom:-10px;right:50%;top:auto;border:solid transparent 5px;border-top-color:#fff}
+.tool_button,.push_button,.tool_button_current,.push_button_pressed{height:27px;width:27px;border:solid #2f2f2c 8px;border-left-width:13px;margin:0;background-color:#ddd;cursor:pointer}
+#main_menu li#tool_open,#main_menu li#tool_import{position:relative;overflow:hidden}
+#tool_image{overflow:hidden}
+#tool_open input,#tool_import input,#tool_import_bitmap input{position:absolute;opacity:0;font-size:10em;top:-5px;right:-5px;margin:0;cursor:pointer}
+.disabled{opacity:.5;cursor:default}
+.width_label{padding-right:5px}
+#text{position:absolute;left:-9999px}
+#tool_bold span,#tool_italic span{position:absolute;width:100%;height:100%;top:0;left:0;background:#ccc;opacity:0}
+#url_notice{padding-top:4px;display:none}
+#color_picker{position:absolute;display:none;background:#fff;height:350px;border-radius:3px;z-index:5;box-shadow:0 5px 10px #000;width:530px}
+.tools_flyout{position:absolute;display:none;cursor:pointer;width:385px;z-index:10;left:47px!important;height:324px;background:#fff;border-radius:5px;box-shadow:0 5px 10px rgba(0,0,0,0.5)}
+.tools_flyout_v{position:absolute;display:none;cursor:pointer;width:30px}
+.tools_flyout .tool_button{float:left;background-color:#fff;height:24px;width:24px}
+#tools_bottom{position:absolute;left:50px;right:0;bottom:0;height:40px;overflow:visible;background:#2f2f2c}
+#tools_bottom_1{width:115px;float:left}
+#tools_bottom_2{position:relative;float:left;margin-top:5px}
+#tools_bottom input[type=text]{width:3.2em}
+#tools_top h4{color:#fff;font-weight:normal;margin:0;padding:10px 0 5px 0}
+#tools_top .dropdown .icon_label{border:1px solid transparent;height:auto}
+#tools_top.multiselected #align_tools{display:none}
+#tools_top.multiselected #multiselected_panel{display:block!important}
+#tools_top.multiselected #multiselected_panel .hidable{display:none}
+.draginput_cell{float:left;height:26px;height:26px;border:solid #3f3f3c 10px;outline:solid #2f2f2c 1px;background:#ddd;cursor:pointer;position:relative}
+.draginput_cell:hover{background:#fff}
+.draginput_cell:after{content:'';position:absolute;top:0;left:0;border:solid #3f3f3c 1px;height:26px;width:26px;z-index:0}
+.align_buttons .draginput_cell:nth-child(1){border-radius:3px 0 0 0}
+.align_buttons .draginput_cell:nth-child(3){border-radius:0 3px 0 0}
+.align_buttons .draginput_cell:nth-child(4){border-radius:0 0 0 3px}
+.align_buttons .draginput_cell:nth-child(6){border-radius:0 0 3px 0}
+.align_buttons .push_button{display:block;float:left}
+#option_lists ul{display:none;position:absolute;height:auto;z-index:3;margin:0;list-style:none;padding-left:0}
+#option_lists .optcols2{width:70px;margin-left:-15px}
+#option_lists .optcols3{width:192px;margin-left:-105px;margin-top:-25px;background:#fff;padding:5px;box-shadow:0 5px 10px #000;border-radius:3px}
+#option_lists .optcols3:after{content:'';display:block;position:absolute;top:-10px;right:70px;border:solid transparent 5px;border-bottom-color:#fff}
+#option_lists .tool_button,#option_lists .push_button,#option_lists .tool_button_current,#option_lists .push_button_pressed{border:0;background:transparent}
+#option_lists .tool_button:hover{background:#ddd}
+#option_lists ul li.current{background-color:#f4e284}
+#option_lists .optcols4{width:130px;margin-left:-44px}
+#option_lists ul[class^=optcols] li{float:left}
+ul li.current{background-color:#f4e284}
+#option_lists ul li{margin:0;border-radius:0;-moz-border-radius:0;-webkit-border-radius:0}
+#copyright{text-align:right;padding-right:.3em}
+#svg_source_editor{display:none}
+#svg_source_editor #svg_source_overlay{position:absolute;top:0;right:0;left:0;bottom:0;background-color:black;opacity:.6;z-index:5}
+#svg_source_editor #svg_source_container{position:absolute;top:30px;left:100px;right:100px;bottom:30px;background-color:#fff;border-radius:3px;opacity:1.0;text-align:center;z-index:6;padding:15px 0}
+#svg_source_editor form{position:absolute;display:block;top:15px;bottom:55px;left:15px;right:12px;padding:5px;font-size:12px}
+#svg_source_textarea{width:100%;height:100%;line-height:140%;font-family:'Lucida Sans','Lucida Grande','Lucida Sans Unicode',sans-serif;font-size:12px}
+#svg_source_editor #tool_source_back{position:absolute;bottom:45px;left:15px;right:15px}
+#svg_source_editor #tool_source_back #tool_source_save{display:block;position:absolute;right:0}
+#svg_source_editor #tool_source_back #tool_source_cancel{display:block;position:absolute;left:0}
+button.cancel,input.Cancel,input.cancel,input.jGraduate_Cancel,button.cancel{-webkit-appearance:none;background-color:#999;box-shadow:0 0 1px rgba(0,0,0,0.5);margin:0}
+#shape_buttons{overflow:auto;top:0;bottom:0;left:110px;right:0;position:absolute;vertical-align:top}
+#shape_cats{min-width:110px;display:block;position:absolute;left:0;top:0;height:300px;background:#eee;border-radius:3px 0 0 3px;z-index:2}
+#shape_cats>div{line-height:1em;padding:0 .5em;border-bottom:1px solid #ddd;background:#e8e8e8;color:#444;height:26px;line-height:26px}
+#shape_cats>div:first-child{border-radius:3px 0 0 0}
+#shape_cats>div:last-child{border-radius:0 0 0 3px}
+#shape_cats div:hover{background:#efefef;color:#000}
+#shape_cats div.current{font-weight:bold;background:#3f3f3c;color:#fff;position:relative}
+#shape_cats div.current:after{content:'';position:absolute;right:-26px;top:0;border:solid transparent 13px;border-left-color:#3f3f3c}
+.toolbar_button button .svg_icon{display:none}
+#dialog_box{display:none}
+#dialog_box_overlay{background:black;opacity:.5;height:100%;left:0;position:absolute;top:0;width:100%;z-index:6}
+#dialog_content{height:95px;margin:10px 10px 5px 10px;overflow:auto;text-align:left;font-size:13px}
+#dialog_buttons input:last-child{background:#999!important;position:absolute;left:10px;bottom:10px}
+#dialog_buttons input:first-child{position:absolute;right:10px;bottom:10px}
+#dialog_content.prompt{height:75px}
+#dialog_content p{margin:10px;line-height:1.3em}
+#dialog_container{position:absolute;left:50%;top:50%;width:300px;margin-left:-150px;height:150px;margin-top:-80px;position:fixed;z-index:50001;background:#fff}
+#dialog_container,#dialog_content{border-radius:3px}
+#dialog_buttons input[type=text]{width:90%;display:block;margin:0 0 5px 11px}
+#dialog_buttons input[type=button]{margin:0 1em}
+.invisible{visibility:none}
+.ui-slider{position:relative;text-align:left}
+.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}
+.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0}
+.ui-slider-horizontal{height:.8em}
+.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}
+.ui-slider-horizontal .ui-slider-range{top:0;height:100%}
+.ui-slider-horizontal .ui-slider-range-min{left:0}
+.ui-slider-horizontal .ui-slider-range-max{right:0}
+.ui-slider-vertical{width:.8em;height:100px}
+.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}
+.ui-slider-vertical .ui-slider-range{left:0;width:100%}
+.ui-slider-vertical .ui-slider-range-min{bottom:0}
+.ui-slider-vertical .ui-slider-range-max{top:0}
+.ui-slider{background:#3f3f3c;border-radius:10px}
+.ui-slider-handle{box-shadow:0 3px 3px rgba(0,0,0,0.3);border-radius:30px;background:#fff;background-image:-ms-linear-gradient(top,#ccc 0,#fff 100%);background-image:-moz-linear-gradient(top,#ccc 0,#fff 100%);background-image:-o-linear-gradient(top,#ccc 0,#fff 100%);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#ccc),color-stop(1,#fff));background-image:-webkit-linear-gradient(top,#ccc 0,#fff 100%);background-image:linear-gradient(top,#ccc 0,#fff 100%)}
+.ui-slider-handle:focus{outline:0}
+#shape_buttons{background:#fff;border-radius:0 3px 3px 0;padding:10px}
+.tools_flyout .tool_button,.tools_flyout .tool_flyout{background:#fff;width:40px;height:40px;margin:5px;border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;border-width:0}
+.contextMenu{position:absolute;z-index:99999;border:solid 1px rgba(0,0,0,.33);background:rgba(255,255,255,.95);padding:5px 0;margin:0;display:none;font:12px/15px 'Lucida Sans','Lucida Grande',Helvetica,Verdana,sans-serif;border-radius:5px;-moz-border-radius:5px;-moz-box-shadow:2px 5px 10px rgba(0,0,0,.3);-webkit-box-shadow:2px 5px 10px rgba(0,0,0,.3);box-shadow:2px 5px 10px rgba(0,0,0,.3)}
+.touch .contextMenu{border:solid 5px rgba(0,0,0,.7);padding:0;margin:0 0 0 20px;font:18px/24px sans-serif;border-radius:5px;-webkit-box-shadow:2px 5px 20px 3px #000;box-shadow:2px 5px 20px rgba(0,0,0,0.5)}
+.touch .contextMenu:after{content:'';width:0;height:0;border:solid transparent 10px;border-right-color:rgba(0,0,0,.7);position:absolute;top:50%;left:-25px;margin-top:-10px;z-index:1000}
+.contextMenu LI{list-style:none;padding:0;margin:0}
+.contextMenu .shortcut{width:115px;text-align:right;float:right}
+.touch .contextMenu .shortcut{display:none}
+.touch .shortcut{display:none}
+.contextMenu A{-moz-user-select:none;-webkit-user-select:none;color:#222;text-decoration:none;display:block;line-height:20px;height:20px;background-position:6px center;background-repeat:no-repeat;outline:0;padding:0 15px 1px 20px}
+.touch .contextMenu A{padding:0 15px;border-bottom:#;font-weight:bold;border-top:solid 1px #e3e3e3;height:40px;line-height:40px;min-width:200px}
+.contextMenu LI.hover A{background-color:#2e5dea;color:white;cursor:default}
+.contextMenu LI.disabled A{color:#999}
+.touch .contextMenu LI.disabled A{display:none}
+.contextMenu LI.hover.disabled A{background-color:transparent}
+.contextMenu LI.separator{border-top:solid 1px #e3e3e3;padding-top:5px;margin-top:5px}
+.touch .contextMenu LI.separator{border-top:0;margin:0;padding:0}
+#menu{display:none;position:absolute;top:0;left:0;right:0;height:30px;background:#000;z-index:10;color:#fff}
+#workarea.rect,#workarea.line,#workarea.ellipse,#workarea.path,#workarea.shapelib{cursor:crosshair}
+#workarea.text{cursor:text}
+#workarea.eyedropper{cursor:url(../images/eyedropper.png) 0 16,crosshair}
+#workarea.fhpath{cursor:url(../images/pencil_cursor.png) 0 20,crosshair}
+#workarea.rotate *{cursor:url(../images/rotate.png) 12 12,auto}
+#workarea.select text,#workarea.multiselect text{cursor:default}
+#workarea.n-resize *{cursor:n-resize!important}
+#workarea.e-resize *{cursor:e-resize!important}
+#workarea.w-resize *{cursor:w-resize!important}
+#workarea.s-resize *{cursor:s-resize!important}
+#workarea.ne-resize *{cursor:ne-resize!important}
+#workarea.se-resize *{cursor:se-resize!important}
+#workarea.nw-resize *{cursor:nw-resize!important}
+#workarea.sw-resize *{cursor:sw-resize!important}
+#workarea.copy{cursor:copy}
+#workarea.zoom{cursor:crosshair;cursor:-moz-zoom-in;cursor:-webkit-zoom-in}
+#workarea.zoom.out{cursor:crosshair;cursor:-moz-zoom-out;cursor:-webkit-zoom-out}
+#selectorRubberBand{shape-rendering:crispEdges}
+.clearfix:before,.clearfix:after{content:"";display:table}
+.clearfix:after{clear:both}
+.clearfix{*zoom:1}
+#group_title{display:none}
+#base_unit_container{display:none;position:absolute;z-index:20}
+.draginput{background:#3f3f3c;border-radius:3px;-webkit-font-smoothing:antialiased;width:70px;height:70px;display:block;position:relative;float:left;margin:0 5px 5px 0}
+.draginput .caret{border:solid transparent 5px;border-top-color:#999;position:absolute;width:0;height:0;right:5px;margin-top:-2px;top:50%}
+.draginput label{margin:28px 10px 0 5px;font-size:14px;color:white;font-weight:bold;font-family:sans-serif}
+.draginput label#resolution_label,.draginput label#seg_type_label{font:bold 12px/110% sans-serif;position:absolute;left:auto;right:10px;z-index:0;text-align:right}
+.draginput label#seg_type_label{margin-top:40px}
+.draginput label#seg_type_label .caret{top:66%}
+.draginput label#resolution_label .pull{position:relative;left:-15px}
+.draginput label#resolution_label span{right:-13px;left:auto;font-size:16px;top:2px;font-weight:bold;color:white}
+.touch .draginput.active:after{content:attr(data-value);display:block;position:absolute;background:#fff;font-size:16px;top:0;width:30px;left:-50px;padding:0 5px;color:#333;z-index:10;font-family:sans-serif;font-weight:bold;text-align:right;padding-right:10px;height:20px;line-height:20px;letter-spacing:-1px}
+.touch .draginput.active:before{content:'';height:0;width:0;position:absolute;top:5px;left:-5px;border:solid transparent 5px;border-left-color:#fff}
+.draginput input{border:0;background:transparent;font:24px/normal sans-serif;text-align:center;color:#4f80ff;padding:30px 0 16px;width:100%;height:24px;position:relative;z-index:2}
+.draginput.twocol{width:145px}
+#tool_font_family .caret{right:40px;top:55%}
+#tool_font_family select{width:110px}
+#tool_bold,#tool_italic{font:bold 20px/35px serif;text-align:center;position:absolute;padding:0;color:#ccc;background:transparent;border:0;width:35px;height:35px;margin:0;top:0;right:0}
+#tool_italic{border-top:solid #2f2f2c 2px;top:35px;font-weight:bold;font-style:italic;font-size:24px}
+#tool_bold:hover,#tool_italic:hover{color:#fff}
+#tool_bold.active,#tool_italic.active{color:#50a0ff}
+#preview_font{font-size:20px;color:#fff;height:70px;line-height:75px;padding:0 0 0 10px;white-space:nowrap;width:100px;overflow:hidden;border-right:solid #2f2f2c 2px;position:relative}
+#preview_font:after{content:'';position:absolute;right:0;top:3px;bottom:3px;width:15px;border-right:solid #3f3f3c 10px;background:transparent url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAxIDEiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxsaW5lYXJHcmFkaWVudCBpZD0iZzU4MCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIwJSIgeTE9IjAlIiB4Mj0iMTAwJSIgeTI9IjAlIj48c3RvcCBzdG9wLWNvbG9yPSIjM2YzZjNjIiBzdG9wLW9wYWNpdHk9IjAiIG9mZnNldD0iMCIvPjxzdG9wIHN0b3AtY29sb3I9IiMzZjNmM2MiIG9mZnNldD0iMC43Ii8+PC9saW5lYXJHcmFkaWVudD48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBmaWxsPSJ1cmwoI2c1ODApIiAvPjwvc3ZnPg==)}
+.draginput input,.draginput input:hover,.draginput input:active{cursor:url(../images/drag.png),move;cursor:-webkit-grab;cursor:-moz-grab}
+.draginput input[type="checkbox"],.draginput input[type="checkbox"]:hover,.draginput input[type="checkbox"]:active{cursor:pointer}
+.draginput.checkbox{cursor:pointer}
+.draginput.active input,.draginput.active input:hover,.draginput.active input:active{cursor:url(../images/dragging.png),move;cursor:-webkit-grabbing;cursor:-moz-grabbing}
+.draginput span{font:11px/130% sans-serif;color:#ccc;display:block;position:absolute;top:5px;left:5px;text-align:left}
+.draginput.error{background:#900}
+.draginput.error input{color:#fff}
+.draginput.stroke_tool{text-align:center}
+.draginput select{-webkit-appearance:none;opacity:0;display:block;position:absolute;height:100%;width:100%;margin:0;z-index:1;top:0;left:0}
+.draginput_cursor{position:absolute;top:50%;width:100%;border-top:solid rgba(50,100,200,0.25) 3px;margin-top:-2px;z-index:0}
+.draginput input[readonly=readonly]{-webkit-appearance:none;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
+.draginput input:focus{background:#50a0ff;color:#fff;outline:0;box-shadow:0 0 5px 2px #50a0ff}
+.draginput input:focus+span{z-index:10;color:#fff}
+.draginput .push_bottom{bottom:0;position:absolute}
+#zoom_label{height:20px;background:transparent;cursor:default!important;width:auto;padding:0 10px;margin:0}
+#zoom_panel{padding:9px 0;right:175px;position:absolute}
+#zoom_label img,#zoom_label svg{width:16px;height:16px}
+#logo svg{pointer-events:none}
+#zoomLabel{width:16px;height:16px;cursor:pointer;background:#ccc}
+#zoomLabel:after{content:'';position:absolute;border-left:solid #2f2f2c 1px;left:0;height:16px}
+#zoom_label input{color:#ccc;font-size:13px;height:auto;width:auto;padding:0;cursor:default;position:static}
+#zoom_label span{top:0;left:0}
+body.dragging *{cursor:url(../images/dragging.png),move;cursor:-webkit-grabbing;cursor:-moz-grabbing}
+body.drag *{cursor:url(../images/dragging.png),move;cursor:-webkit-grabbing;cursor:-moz-grabbing}
+input[readonly=readonly]:focus{box-shadow:none}
+#color_canvas_tools,#fill_bg,#stroke_bg{background:#fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMAQMAAABsu86kAAAAA3NCSVQICAjb4U/gAAAABlBMVEXu7u7///8o06qaAAAACXBIWXMAAAsSAAALEgHS3X78AAAAFXRFWHRDcmVhdGlvbiBUaW1lADcvMjIvMTL7FNdCAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M1cbXjNgAAABFJREFUCJljYP7AgIb+MKAhAM8/C5vWL6zSAAAAAElFTkSuQmCC) top left repeat}
+#color_canvas_tools{width:60px;height:40px;margin:23px 5px 5px 5px;position:relative;overflow:hidden}
+#color_canvas_tools{display:block}
+#tool_angle_indicator{width:50px;height:50px;border-radius:50px;background:rgba(255,255,255,0.05);position:absolute;bottom:2px;left:10px}
+#tool_angle_indicator_cursor{width:4px;height:25px;border-top:solid #50a0ff 3px;position:absolute;margin:0 0 0 23px;-webkit-transform-origin:50% 0;-moz-transform-origin:50% 0;-o-transform-origin:50% 0;-ms-transform-origin:50% 0;transform-origin:50% 0}
+#stroke_style_label{font-size:30px;margin-top:33px;letter-spacing:-1px}
+.stroke_tool .caret{top:60%}
+#tool_align_relative{position:absolute;top:-5px;left:0;right:20px;display:block}
+#tool_align_relative select{width:100%;display:block}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/css/method-draw.css
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/css/method-draw.css	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/css/method-draw.css	(revision 29468)
@@ -0,0 +1,2083 @@
+/* Comment to prevent wrong concat */
+
+body {
+	background: #3f3f3c;
+	font: 13px/120% 'Lucida Sans', 'Lucida Grande', 'Lucida Sans Unicode', sans-serif;
+	-webkit-touch-callout: none;
+  -webkit-user-select: none;
+  -khtml-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+	margin: 0;
+	padding: 0;
+}
+
+::selection {background: #000; color: #fff; /* Safari */}
+::-moz-selection {background: #000; color: #fff; /* Firefox */}
+
+html, body {
+  	overflow: hidden;
+  	width: 100%;
+  	height: 100%;
+}
+
+::-webkit-scrollbar {
+    width: 5px;
+    height: 5px;
+    background: #444;
+}
+
+::-webkit-scrollbar-track {
+    border-radius: 10px;
+    background: #444;
+}
+
+::-webkit-scrollbar-thumb {
+    border-radius: 10px;
+    background: #666;
+}
+
+::-webkit-scrollbar-corner {
+	background: #444;
+}
+
+#browser-not-supported {
+        font-size: 0.8em;
+        font-family: Verdana, Helvetica, Arial;
+        color: #000000;
+}
+
+ #svgroot {
+	-moz-user-select: none;
+	-webkit-user-select: none;
+	position: absolute;
+	top: 0;
+	left: 0;
+}
+
+#svg_editor {
+	background: #2f2f2c;
+}
+
+ #menu_bar {
+  padding: 0 0 0 50px;
+	background: #2f2f2c;
+	position: relative;
+	z-index: 2;
+}
+
+ #menu_bar.active .menu.open .menu_list {
+  display: block;
+}
+
+ .menu {
+  position: relative;
+  z-index: 5;
+  color: #333;
+  display: inline-block;
+}
+
+ .menu_title {
+  cursor: pointer;
+  display: inline-block;
+  padding: 7px 10px;
+  z-index: 10;
+  color: #fff;
+  position: relative;
+  height: 16px;
+  vertical-align: top;
+}
+
+.touch   .menu_title { 
+	padding: 7px 17px;
+	height: 26px;
+	line-height: 26px;
+}
+
+ .menu .menu_title:hover {
+  background: rgba(255,255,255,0.1);
+}
+
+ .menu_list .separator {
+  margin: 5px 0;
+  border-top: solid #ddd 1px;
+}
+
+ .menu_list {
+  display: none;
+  position: absolute;
+  top: 28px;
+  left: 0;
+  white-space: nowrap;
+  background: white;
+  padding: 7px 0;
+  border-radius: 0 3px 3px 3px;
+  box-shadow: 0 0 20px rgba(0,0,0,0.8);
+}
+
+.touch  .menu_list {
+	top: 38px;
+}
+
+ #menu_bar.active .menu.open .menu_title {
+  background: white;
+  color: #333;
+}
+
+ .menu_list .menu_item {
+  position: relative;
+  overflow: hidden;
+	line-height: 22px;
+	padding: 5px 69px 5px 25px;
+	cursor: default;
+	color: #333;
+}
+
+ .menu_list .menu_item.tool_button {
+  background: transparent;
+  border: none;
+  margin: 0;
+  padding: 5px 55px 5px 25px;
+  height: auto;
+  width: auto;
+}
+
+ .menu_list .menu_item.push_button_pressed:before {
+  content: 'â';
+  position: absolute;
+  display: block;
+  left: 7px;
+  top: 3px;
+  width: 20px;
+  height: 20px;
+}
+
+ .menu_list .menu_item:hover,
+ .menu_list .menu_item.push_button_pressed:hover {
+	background: rgba(0,0,0,0.1);
+	color: #000;
+}
+
+ .menu_list .menu_item.disabled:hover,
+ .menu_list .menu_item.push_button_pressed.disabled:hover {
+	background: transparent;
+	color: #333;
+}
+
+ .menu_list .menu_item.push_button_pressed {
+ background: transparent;
+ border: none; 
+ width: auto;
+ height: auto;
+ margin: 0;
+}
+
+ .menu_list .menu_item span {
+  display: block;
+  position: absolute;
+  right: 10px;
+  padding: 5px;
+  background: rgba(0,0,0, 0.1);
+  top: 6px;
+  height: 10px;
+  text-align: center;
+  font-size: 10px;
+  line-height: 120%;
+}
+
+ #svgcanvas {
+	line-height: normal;
+	display: inline-block;
+	background-color: #A0A0A0;
+	text-align: center;
+	vertical-align: middle;
+	width: 640px;
+	height: 480px;
+	position: relative;
+	background: #3F3F3C;
+}
+
+#rulers > div {
+	position: absolute;
+	background: #2f2f2c;
+	z-index: 1;
+	overflow: hidden;
+  -webkit-font-smoothing: none;
+}
+
+#rulers #ruler_corner {
+	top: 30px;
+	left: 50px;
+	width: 15px;
+	height: 15px;
+  border: solid #444 1px;
+	z-index: 2;
+}
+
+#ruler_x {
+	height: 15px;
+	top: 30px;
+	left: 66px;
+	right: 175px;
+	border-top: solid #444 1px;
+	border-right: solid #444 1px;
+}
+
+#ruler_x_cursor {
+  height: 15px;
+  border-right: dotted #999 1px;
+  position: absolute;
+  background: #2f2f2c;
+}
+
+#ruler_y_cursor {
+  width: 15px;
+  border-top: dotted #999 1px;
+  position: absolute;
+  background: #2f2f2c;
+}
+
+#rulers.moved #ruler_corner,
+#rulers.moved #ruler_x {
+	top: 101px;
+}
+
+#ruler_y {
+	width: 15px;
+	top: 46px;
+	left: 50px;
+	bottom: 40px;
+	border-left: solid #444 1px;
+	border-bottom: solid #444 1px;
+}
+
+#rulers.moved #ruler_y {
+	top: 116px;
+}
+
+
+#ruler_x canvas:first-child {
+	margin-left: -16px;
+}
+
+#ruler_x canvas {
+	float: left;
+}
+
+#ruler_y canvas {
+	margin-top: -16px;
+}
+
+#ruler_x > div, 
+#ruler_y > div {
+	overflow: hidden;
+}
+
+ #palette {
+	display: block;
+	position: absolute;
+	z-index: 2;
+	left: 10px;
+	bottom: 5px;
+	width: 410px;
+	right: 145px;
+	height: 30px;
+}
+
+ .palette_item {
+	height: 20%;
+	width: 5.2%;
+	float: left;
+	cursor: url(../images/eyedropper.png) 0 16, crosshair;
+}
+
+.palette_item.transparent, .palette_item.white, .palette_item.black {
+  background: #fff;
+  position: absolute;
+  width: 10px;
+  height: 10px;
+  left: -10px;
+  top: 0;
+}
+
+.palette_item.transparent {
+	background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNXG14zYAAAAVdEVYdENyZWF0aW9uIFRpbWUAOC8yMi8xMg1cp6sAAABESURBVBiVjdBBCgAgCETRr/e/87SJKFPLnfIcQRMIwMBIShIAvgZzoSrfkzrs8WyF1+kX9r3p8AE7nL7kSpSshN+JEQ8GixkF0mSevgAAAABJRU5ErkJggg==);
+}
+
+.palette_item.black {
+  background: #000;
+  top: 10px;
+}
+
+.palette_item.white {
+  background: #fff;
+  top: 20px;
+}
+
+ #color_tools {
+  position: relative;
+  width: 48px;
+  height: 48px;
+  margin: 6px 6px 0 6px;
+}
+
+.touch  #color_tools {
+	width: auto;
+	height: auto;
+}
+
+#tool_fill {
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: 1;
+}
+
+.touch #tool_fill {
+		position: static;
+		width: 36px;
+		height: 36px;
+		margin-bottom: 10px;
+}
+
+
+#tool_fill.active, #tool_stroke.active {
+  z-index: 2;
+}
+
+#tool_stroke {
+	top: 14px;
+	left: 14px;
+}
+
+.touch #tool_fill.active, .touch #tool_stroke.active {
+	outline: 4px solid #09f;
+}
+
+#tool_fill, #tool_stroke, #tool_canvas {
+  box-shadow: 0 0 0 1px #2f2f2c;
+  position: absolute;
+}
+
+.touch #tool_fill, .touch #tool_stroke, .touch #tool_canvas {
+	position: relative;
+	top: 0;
+	left: 0;
+}
+
+#color_canvas_tools {
+	float: left;
+	cursor: pointer;
+}
+
+#tool_fill .color_block {
+  width: 24px;
+  height: 24px;
+  overflow: hidden;
+  border: solid #ccc 1px;
+}
+
+.touch  #tool_eyedropper {
+	margin-top: 6px;
+}
+
+.touch #tool_fill .color_block {
+  width: 36px;
+  height: 36px;
+}
+
+.touch #tool_fill .color_block svg {
+  width: 36px !important;
+  height: 36px !important;
+}
+
+.touch  #tool_switch {
+	display: none;
+} 
+
+#use_panel .tool_button, #path_node_panel .tool_button {
+	color: #999;
+	border: solid #3F3F3C 1px;
+	border-radius: 3px;
+	padding: 3px 10px 3px 40px;
+	background: 
+	transparent;
+	position: relative;
+	margin-top: 10px;
+	width: 90px;
+	height: 23px;
+	line-height: 24px;
+}
+
+#use_panel .tool_button {
+	padding-left: 10px;
+	margin-bottom: 10px;
+	width: 124px;
+}
+
+ #path_node_panel .tool_button img,  #path_node_panel .tool_button svg {
+	position: absolute;
+	left: 5px;
+	top: 3px;
+}
+
+ #color_tools #tool_fill .color_block:hover,  #color_tools #tool_stroke .color_block:hover {
+  border-color: #fff;
+}
+
+ #color_tools #tool_fill .color_block > div {
+  position: absolute;
+  top: 0;
+  left: 0;
+}
+
+.touch  #color_tools #tool_fill .color_block > div {
+	position: relative;
+}
+
+ #color_tools #tool_fill .color_block #fill_bg,  #color_tools #tool_stroke .color_block #stroke_bg {
+  position: absolute;
+  top: 1px;
+  left: 1px;
+  bottom: 1px;
+  right: 1px;
+}
+
+.touch  #color_tools #tool_fill .color_block #fill_bg, .touch  #color_tools #tool_stroke .color_block #stroke_bg {
+	width: 36px;
+	height: 36px;
+	right: auto;
+	bottom: auto;
+}
+
+.touch #tool_stroke {
+  position: relative;
+  top: 0;
+  left: 0;
+  z-index: 0;
+}
+
+#stroke_color:after {
+  content: '';
+  position: absolute;
+  display: block;
+  width: 8px;
+  height: 8px;
+  left: 8px;
+  top: 8px;
+  background: #ccc;
+  box-shadow: 0 0 0 1px #000;
+}
+
+.touch #stroke_color:after {
+	height: 14px;
+   left: 10px;
+   position: absolute;
+   top: 10px;
+   width: 14px;
+	 
+}
+
+ #color_tools #tool_switch {
+  cursor: pointer;
+  opacity: 0.7;
+  width: 11px;
+  height: 11px;
+  background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABV0RVh0Q3JlYXRpb24gVGltZQA2LzE0LzEyP6j5+gAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNXG14zYAAAB4SURBVBiVjZHRCYUwDEVvxIF0kZKN7EjiIrrReR/PSNSKXiikcE5JUtMeADMzXQIcdRfgFWqlyyB7ap1wL+0HAnIv1DqRJUBxTkLUWXIvh9AHkIeb58UkIUnDMH4ZR0otCfhv4ynbtp7ut722ZniFG8L9xx4Ek6QfN9huARmYwR0AAAAASUVORK5CYII=) top left no-repeat;
+  position: absolute;
+  top: -2px;
+  left: 28px;
+}
+
+ #color_tools #cross:hover {
+  opacity: 1;
+}
+
+ #color_tools #tool_stroke:hover #stroke_color:after {
+  background: #fff;
+}
+
+ #color_tools #tool_stroke .color_block {
+  width: 24px;
+  height: 24px;
+  overflow: hidden;
+  border: solid #ccc 1px;
+}
+
+.touch  #color_tools #tool_stroke .color_block {
+  width: 36px;
+  height: 36px;
+}
+
+ #color_tools #tool_stroke .color_block > div {
+  position: absolute;
+  bottom: 0;
+  right: 0;
+}
+
+.touch  #color_tools #tool_stroke .color_block > div {
+  position: relative;
+}
+
+
+
+ #color_tools .icon_label {
+	padding: 0;
+	width: 24px;
+	height: 100%;
+	cursor: pointer;
+	position: absolute;
+}
+
+ #linkLabel > svg {
+	height: 20px;
+	padding-top: 4px;
+}
+
+ div#workarea {
+	display: inline-table-cell;
+	position:absolute;
+	top: 30px;
+	left: 50px;
+	bottom: 40px;
+	right: 175px;
+	background-color: #444;
+	overflow: auto;
+	text-align: center;
+	-webkit-transition: -webkit-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);
+	-moz-transition: -moz-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);
+	-o-transition: -o-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);
+	-ms-transition: -ms-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);
+	transition: transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);
+}
+
+.touch  div#workarea {
+	top: 40px;
+}
+
+ .menu .menu_list {
+  display: none;
+  position: absolute;
+}
+
+.tool_button, 
+.tool_button_current,
+.tool_button_pressed {
+  cursor: pointer;
+}
+
+ .tool_button:hover, 
+ .push_button:hover,
+ .buttonup:hover,
+ .buttondown,
+ .tool_button_current,
+ .push_button_pressed
+{
+  background-color: #fff;
+}
+
+ .tool_button.disabled,
+ .tool_button.disabled:hover {
+  opacity: 0.3;
+  background-color: #aaa;
+}
+
+ #tools_left .tool_button { background: #2f2f2c; position: relative;}
+ #tools_left .tool_button.loaded { background: #ccc;}
+ #tools_left .tool_button.loaded:hover { background: #fff;}
+ #tools_left .tool_button:after,  #tools_left .tool_button_current:after {
+	position: absolute;
+	content: '';
+	border: solid #2f2f2c 2px;
+	top: -1px;
+	left: -1px;
+	width: 26px;
+	height: 26px;
+	z-index: 0;
+}
+
+ #tools_left .tool_button_current {
+	background-color: #0cf;
+}
+
+ #main_icon span {
+	position: absolute;
+	width: 100%;
+	height: 100%;
+	display: block;
+	z-index: 2;
+}
+
+ #tools_top {
+	position: absolute;
+	width: 160px;
+	height: 100%;
+	background: #2f2f2c;
+	right: 0;
+	top: 20px;
+	border-bottom: none;
+	overflow: visible;
+	padding: 0 0 0 15px;
+}
+
+.touch  #tools_top {
+	top: 30px;
+}
+
+ label {
+  display: block;
+  color: #999;
+}
+
+div#font-selector { 
+    width:140px; 
+    height:300px; 
+    overflow:auto;  
+    margin:0 auto; 
+    position:absolute; 
+    top:27px;
+    right:0;
+    border:1px solid black; 
+    padding:10px; 
+    display:none; 
+    background-color:white;
+    z-index: 10;
+    border-radius: 3px;
+    box-shadow: 0 5px 10px rgba(0,0,0,0.7);
+}
+
+div#font-selector img {
+  width: 100%;
+}
+
+div#font-selector .font-item {
+  border-bottom: solid #ddd 1px;
+  padding: 5px 10px;
+  margin: 0 -10px;
+}
+
+div#font-selector .font-item:hover {
+  background-color: #eee;
+}
+
+ #tools_top #marker_panel * {
+  float: left;
+}
+
+ #tools_top #marker_panel h4 {
+  float: none;
+}
+
+ #tools_top #marker_panel .dropdown .icon_label {
+  width: 36px;
+  height: 20px;
+  margin-top: 2px;
+  border: solid #3f3f3c 1px;
+  text-align: center;
+}
+
+ #tools_top #marker_panel .dropdown button {
+  margin-top: 2px;
+}
+
+ #tools_top #marker_panel #marker_panel_title {
+  float: none;
+  color: #fff;
+  margin-bottom: 3px;
+}
+
+ #tools_top #marker_panel .dropdown .icon_label img {
+  float: none;
+}
+
+
+ #color_picker input[type=text], #color_picker  input[type=number] {
+  width: 30px;
+  background: #fff;
+}
+
+ .dropdown_set input[type=text],  .dropdown_set input[type=number] {
+  width: 50px;
+}
+
+ input[type=text].wide,  input[type=number].wide {width: 110px;}
+ input[type=text].tuco,  input[type=number].tuco {width: 150px;}
+
+ input[type=submit],  input[type=button], button {
+  background: #4F80FF;
+  color: #fff;
+  border-radius: 3px;
+  padding: 7px 17px;
+  border: none;
+  line-height: 140%;
+	font-size: 14px;
+	font-weight: bold;
+	font-family: sans-serif;
+
+}
+
+ input[type=submit]:hover,  button:hover {
+box-shadow: inset 0 3px 10px rgba(255, 255, 255, 0.1),
+            inset 0 -3px 10px rgba(0, 0, 0, 0.2);
+}
+
+ input[type=submit]:hover,  button:hover {background: #2F84C1;}
+ input[type=submit]:active,  button:active { box-shadow: inset 0 2px 2px rgba(0,0,0,0.2); border-bottom: solid rgba(255,255,255,0.1) 1px;}
+
+
+ #tools_left {
+	position: absolute;
+	border-right: none;
+	width: 50px;
+	top: 30px;
+	bottom: 0;
+	left: 0;
+	background: #2F2F2C; /* Needed so flyout icons don't appear on the left */
+	z-index: 4;
+}
+
+#workarea.wireframe #svgcontent * {
+	fill: none;
+	stroke: #000;
+	stroke-width: 1px;
+	stroke-opacity: 1.0;
+	stroke-dasharray: 0;
+	opacity: 1;
+	pointer-events: stroke;
+	vector-effect: non-scaling-stroke;
+	filter: none;
+}
+
+#workarea.wireframe #svgcontent text {
+	fill: #000;
+	stroke: none;
+}
+
+#workarea.wireframe #canvasBackground > rect {
+	fill: #FFF !important;
+}
+
+#workarea #canvasBackground > rect {
+  stroke: transparent !important;
+}
+
+.context_panel {
+	display: none;
+}
+
+#canvas_panel {
+	display: block;
+}
+
+ #multiselected_panel .selected_tool {
+	vertical-align: 12px;
+}
+
+#cur_context_panel {
+	position: absolute;
+  top: 47px;
+  left: 68px;
+	line-height: 22px;
+	overflow: auto;
+	border-bottom: none;
+	border-right: none;
+	padding-left: 5px;
+	font-size: 12px;
+	background: black;
+  color: #999;
+  opacity: 0.5;
+  padding: 0 10px;
+  border-radius: 0 10px 10px 0;
+}
+
+ #cur_context_panel a {
+	float: none;
+	text-decoration: none;
+	color: #fff;
+}
+
+ #cur_context_panel a:hover {
+	text-decoration: underline;
+}
+
+
+ #tools_left .tool_button,
+ #tools_left .tool_button_current {
+	position: relative;
+	z-index: 11;
+}
+
+ .flyout_arrow_horiz {
+	position: absolute;
+	bottom: -1px;
+	right: 0;
+	z-index: 10;
+}
+
+.dropdown {
+	position: relative;
+	float: left;
+}
+
+ .dropdown button {
+  width: 21px;
+  height: 22px;
+  padding: 0 3px 0 3px;
+  border: none;
+  background-color: #555;
+  border-radius: 0 2px 2px 0;
+  margin-left: -1px;
+  position: relative;
+}
+
+ .dropdown button:hover {
+  background-color: #666;
+}
+
+ .dropdown button:after {
+  content: '';
+  position: absolute;
+  border: solid transparent 4px;
+  border-top-color: #999;
+  top: 9px;
+  left: 6px;
+}
+
+
+
+.dropdown button.down {
+	border-left: 1px solid #808080;
+	border-top: 1px solid #808080;
+	border-right: 1px solid #FFFFFF;
+	border-bottom: 1px solid #FFFFFF;
+	background-color: #B0B0B0;
+}
+
+.dropdown ul {
+	list-style: none;
+	position: absolute;
+	margin: 0;
+	padding: 0;
+	left: -80px;
+	top: 26px;
+	z-index: 4;
+	display: none;
+}
+
+.dropup ul {
+	top: auto;
+	bottom: 26px;
+	border-radius: 3px;
+	box-shadow: 0 5px 10px #000;
+}
+
+.dropup ul:after {
+  content: '';
+  display: block;
+  position: absolute;
+  bottom: -10px;
+  right: 50%;
+  top: auto;
+  width: 0;
+  height: 0;
+  border: solid transparent 5px;
+  border-top-color: #fff;
+}
+
+.dropdown li {
+	display: block;
+	width: 120px;
+	padding: 5px 10px;
+	color: #333;
+	background: #fff;
+	margin: 0;
+	line-height: 16px;
+}
+
+.dropdown li:first-child {border-radius: 3px 3px 0 0;}
+.dropdown li:last-child {border-radius: 0 0 3px 3px;}
+
+
+.dropdown li:hover {
+	background-color: #ddd;
+	color: #000;
+}
+
+.dropdown li.special {
+	padding: 10px;
+  background: white;
+  border: none;
+  box-shadow: 0 3px 10px black;
+  border-radius: 3px !important;
+}
+
+.dropdown li.special:after {
+  content: '';
+  display: block;
+  position: absolute;
+  top: -10px;
+  right: 50%;
+  border: solid transparent 5px;
+  border-bottom-color: #fff;
+  
+}
+
+.dropdown li.special.down:after {
+  bottom: -10px;
+  right: 50%;
+  top: auto;
+  border: solid transparent 5px;
+  border-top-color: #fff;
+  
+}
+
+ .tool_button, 
+ .push_button,
+ .tool_button_current,
+ .push_button_pressed 
+{
+	height: 27px;
+	width: 27px;
+	border: solid #2f2f2c 8px;
+	border-left-width: 13px;
+	margin: 0;
+	background-color: #ddd;
+	cursor: pointer;
+}
+
+ #main_menu li#tool_open,  #main_menu li#tool_import {
+	position: relative;
+	overflow: hidden;
+}
+
+#tool_image {
+	overflow: hidden;
+}
+
+#tool_open input, 
+#tool_import input,
+#tool_import_bitmap input {
+	position: absolute;
+	opacity: 0;
+	font-size: 10em;
+	top: -5px;
+	right: -5px;
+	margin: 0;
+	cursor: pointer; /* Sadly doesn't appear to have an effect */
+}
+
+ .disabled {
+	opacity: 0.5;
+	cursor: default;
+}
+
+ .width_label {
+	padding-right: 5px;
+}
+
+#text {
+	position: absolute;
+	left: -9999px;
+}
+
+ #tool_bold span,  #tool_italic span { 
+	position: absolute;
+	width: 100%;
+	height: 100%;
+	top: 0; left: 0;
+	background: #ccc;
+	opacity: 0;
+}
+
+
+
+#url_notice {
+	padding-top: 4px;
+	display: none;
+}
+
+ #color_picker {
+	position: absolute;
+	display: none;
+	background: #fff;
+	height: 350px;
+	border-radius: 3px;
+	z-index: 5;
+	box-shadow: 0 5px 10px #000;
+	width: 530px;
+}
+
+ .tools_flyout {
+	position: absolute;
+	display: none;
+	cursor: pointer;
+	width: 385px;
+	z-index: 10;
+	left: 47px !important;
+	height: 324px;
+	background: #fff;
+	border-radius: 5px;
+  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.5);
+}
+
+ .tools_flyout_v {
+	position: absolute;
+	display: none;
+	cursor: pointer;
+	width: 30px;
+}
+
+ .tools_flyout .tool_button {
+	float: left;
+	background-color: #fff;
+	height: 24px;
+	width: 24px;
+}
+
+ #tools_bottom {
+	position: absolute;
+	left: 50px;
+	right: 0;
+	bottom: 0;
+	height: 40px;
+	overflow: visible;
+	background: #2f2f2c;
+}
+
+ #tools_bottom_1 {
+	width: 115px;
+	float: left;
+}
+
+ #tools_bottom_2 {
+	position: relative;
+	float: left;
+	margin-top: 5px;
+}
+
+#tools_bottom input[type=text] {
+	width: 3.2em;
+}
+
+ #tools_top h4 {
+  color: #fff;
+  font-weight: normal;
+  margin: 0;
+  padding: 10px 0 5px 0;
+}
+
+#tools_top .dropdown .icon_label {
+	border: 1px solid transparent;
+/*	margin-top: 3px;*/
+	height: auto;
+}
+
+#tools_top.multiselected #align_tools {
+	display: none;
+}
+
+#tools_top.multiselected #multiselected_panel {
+	display: block !important;
+}
+
+#tools_top.multiselected #multiselected_panel .hidable {
+	display: none;
+}
+
+ .draginput_cell {
+	float: left;
+	height: 26px;
+	height: 26px;
+	border: solid #3f3f3c 10px;
+	outline: solid #2f2f2c 1px;
+	background: #ddd;
+	cursor: pointer;
+	position: relative;
+}
+
+ .draginput_cell:hover {
+	background: #fff;
+}
+
+ .draginput_cell:after {
+	content: '';
+	position: absolute;
+	top: 0;
+	left: 0;
+	border: solid #3f3f3c 1px;
+	height: 26px;
+	width: 26px;
+	z-index: 0;
+}
+
+
+ .align_buttons  .draginput_cell:nth-child(1) {border-radius: 3px 0 0 0;}
+ .align_buttons  .draginput_cell:nth-child(3) {border-radius: 0 3px 0 0;}
+ .align_buttons  .draginput_cell:nth-child(4) {border-radius: 0 0 0 3px;}
+ .align_buttons  .draginput_cell:nth-child(6) {border-radius: 0 0 3px 0;}
+
+
+.align_buttons .push_button {
+  display: block;
+  float: left;
+}
+
+#option_lists ul {
+	display: none;
+	position: absolute;
+	height: auto;
+	z-index: 3;
+	margin: 0;
+	list-style: none;
+	padding-left: 0;
+}
+
+#option_lists .optcols2 {
+	width: 70px;
+	margin-left: -15px;
+}
+
+#option_lists .optcols3 {
+	width: 192px;
+	margin-left: -105px;
+	margin-top: -25px;
+	background: #fff;
+	padding: 5px;
+	box-shadow: 0 5px 10px #000;
+	border-radius: 3px;
+}
+
+#option_lists .optcols3:after {
+  content: '';
+  display: block;
+  position: absolute;
+  top: -10px;
+  right: 70px;
+  border: solid transparent 5px;
+  border-bottom-color: #fff;
+}
+
+
+ #option_lists .tool_button,  #option_lists .push_button,  #option_lists .tool_button_current,  #option_lists .push_button_pressed {
+  border: none;
+  background: transparent;
+}
+
+ #option_lists .tool_button:hover {
+  background: #ddd;
+}
+
+ #option_lists ul li.current {
+	background-color: #F4E284;
+}
+
+#option_lists .optcols4 {
+	width: 130px;
+	margin-left: -44px;
+}
+
+#option_lists ul[class^=optcols] li {
+	float: left;
+}
+
+ ul li.current {
+	background-color: #F4E284;
+}
+
+ #option_lists ul li {
+	margin: 0;
+	border-radius: 0;
+	-moz-border-radius: 0;
+	-webkit-border-radius: 0;
+}
+
+ #copyright {
+	text-align: right;
+	padding-right: .3em;
+}
+
+#svg_source_editor {
+	display: none;
+}
+
+#svg_source_editor #svg_source_overlay {
+	position: absolute;
+	top: 0px;
+	right: 0px;
+	left: 0px;
+	bottom: 0px;
+	background-color: black;
+	opacity: 0.6;
+	z-index: 5;
+}
+
+#svg_source_editor #svg_source_container {
+	position: absolute;
+	top: 30px;
+	left: 100px;
+	right: 100px;
+	bottom: 30px;
+	background-color: #fff;
+	border-radius: 3px;
+	opacity: 1.0;
+	text-align: center;
+	z-index: 6;
+	padding: 15px 0;
+}
+
+#svg_source_editor form {
+	position: absolute;
+	display: block;
+	top: 15px;
+	bottom: 55px;
+	left: 15px;
+	right: 12px;
+	padding: 5px;
+	font-size: 12px;
+}
+
+#svg_source_textarea {
+  width: 100%;
+  height: 100%;
+  line-height: 140%;
+  font-family: 'Lucida Sans', 'Lucida Grande', 'Lucida Sans Unicode', sans-serif;
+  font-size: 12px;
+}
+
+#svg_source_editor #tool_source_back {
+  position: absolute;
+  bottom: 45px;
+  left: 15px;
+	right: 15px;
+}
+
+#svg_source_editor #tool_source_back #tool_source_save {
+	display: block;
+	position: absolute;
+	right: 0;
+}
+
+
+#svg_source_editor #tool_source_back #tool_source_cancel {
+	display: block;
+	position: absolute;
+	left: 0;
+}
+
+
+ button.cancel,  input.Cancel,  input.cancel,  input.jGraduate_Cancel, button.cancel {
+	-webkit-appearance: none;
+	background-color: #999;
+	box-shadow: 0 0 1px rgba(0,0,0,0.5);
+	margin: 0;
+}
+
+
+#shape_buttons {
+	overflow: auto;
+	top: 0;
+	bottom: 0;
+	left: 110px;
+	right: 0;
+	position: absolute;
+	vertical-align: top;
+}
+
+#shape_cats {
+	min-width: 110px;
+	display: block;
+	position: absolute;
+	left: 0;
+	top: 0;
+	height: 300px;
+	background: #eee;
+	border-radius: 3px 0 0 3px;
+	z-index: 2;
+}
+#shape_cats > div {
+	line-height: 1em;
+	padding: 0 .5em;
+	border-bottom: 1px solid #ddd;
+	background: #E8E8E8;
+	color: #444;
+	height: 26px;
+	line-height: 26px;
+}
+
+#shape_cats > div:first-child {
+  border-radius: 3px 0 0 0;
+}
+
+#shape_cats > div:last-child {
+  border-radius: 0 0 0 3px;
+}
+
+#shape_cats div:hover {
+	background: #efefef;
+	color: #000;
+}
+#shape_cats div.current {
+	font-weight: bold;
+	background: #3f3f3c;
+	color: #fff;
+	position: relative;
+}
+
+#shape_cats div.current:after {
+  content: '';
+  position: absolute;
+  right: -26px;
+  top: 0;
+  border: solid transparent 13px;
+  border-left-color: #3f3f3c;
+}
+
+.toolbar_button button .svg_icon {
+    display: none;
+}
+
+#dialog_box {
+	display: none;
+}
+
+#dialog_box_overlay {
+	background: black;
+	opacity: .5;
+	height:100%;
+	left:0;
+	position:absolute;
+	top:0;
+	width:100%;
+	z-index: 6;
+}
+
+#dialog_content {
+	height: 95px;
+	margin: 10px 10px 5px 10px;
+	overflow: auto;
+	text-align: left;
+	font-size: 13px;
+}
+
+#dialog_buttons input:last-child {
+	background: #999 !important;
+	position: absolute;
+	left: 10px;
+	bottom: 10px;
+}
+
+#dialog_buttons input:first-child {
+	position: absolute;
+	right: 10px;
+	bottom: 10px;
+}
+
+#dialog_content.prompt {
+	height: 75px;
+}
+
+#dialog_content p {
+	margin: 10px;
+	line-height: 1.3em;
+}
+
+#dialog_container {
+	position: absolute;
+	left: 50%;
+	top: 50%;
+	width: 300px;
+	margin-left: -150px;
+	height: 150px;
+	margin-top: -80px;
+	position:fixed;
+	z-index:50001;
+	background: #fff;
+}
+
+
+#dialog_container, #dialog_content {
+	border-radius: 3px;
+}
+
+#dialog_buttons input[type=text] {
+	width: 90%;
+	display: block;
+	margin: 0 0 5px 11px;
+}
+
+#dialog_buttons input[type=button] {
+	margin: 0 1em;
+}
+
+.invisible {
+  visibility: none;
+}
+
+
+/* Slider
+----------------------------------*/
+.ui-slider { position: relative; text-align: left; }
+.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; }
+
+.ui-slider-horizontal { height: .8em; }
+.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.ui-slider-vertical { width: .8em; height: 100px; }
+.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.ui-slider-vertical .ui-slider-range-max { top: 0; }
+
+.ui-slider {
+	background: #3F3F3C;
+  border-radius: 10px;
+}
+
+.ui-slider-handle {
+	box-shadow: 0 3px 3px rgba(0,0,0,0.3);
+	border-radius: 30px;
+	background: #fff;
+  background-image: -ms-linear-gradient(top, #ccc 0%, #fff 100%);
+  background-image: -moz-linear-gradient(top, #ccc 0%, #fff 100%);
+  background-image: -o-linear-gradient(top, #ccc 0%, #fff 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ccc), color-stop(1, #fff));
+  background-image: -webkit-linear-gradient(top, #ccc 0%, #fff 100%);
+  background-image: linear-gradient(top, #ccc 0%, #fff 100%);
+}
+
+.ui-slider-handle:focus {
+  outline: none;
+}
+
+/* Necessary to keep the flyouts sized properly */
+#shape_buttons {background: #fff; border-radius: 0 3px 3px 0; padding: 10px}
+
+ .tools_flyout .tool_button,
+ .tools_flyout .tool_flyout {
+  background: #fff;
+	width: 40px;
+	height: 40px;
+	margin: 5px;
+	border-radius: 0px;
+	-moz-border-radius: 0px;
+	-webkit-border-radius: 0px;	
+	border-width: 0;
+}
+
+/* Generic context menu styles */
+.contextMenu {
+	position: absolute;
+	z-index: 99999;
+	border: solid 1px rgba(0,0,0,.33);
+	background: rgba(255,255,255,.95);
+	padding: 5px 0;
+	margin: 0px;
+	display: none;
+	font: 12px/15px 'Lucida Sans', 'Lucida Grande', Helvetica, Verdana, sans-serif;
+	border-radius: 5px;
+	-moz-border-radius: 5px;
+	-moz-box-shadow: 2px 5px 10px rgba(0,0,0,.3);
+	-webkit-box-shadow: 2px 5px 10px rgba(0,0,0,.3);
+	box-shadow: 2px 5px 10px rgba(0,0,0,.3);
+}
+
+.touch .contextMenu {
+	border: solid 5px rgba(0,0,0,.7);
+	padding: 0;
+	margin: 0 0 0 20px;
+	font: 18px/24px sans-serif;
+	border-radius: 5px;
+	-webkit-box-shadow: 2px 5px 20px 3px #000;
+	box-shadow: 2px 5px 20px rgba(0,0,0,0.5);
+}
+
+.touch .contextMenu:after {
+	content: '';
+	width: 0;
+	height: 0;
+	border: solid transparent 10px;
+	border-right-color: rgba(0,0,0,.7);
+	position: absolute;
+	top: 50%;
+	left: -25px;
+	margin-top: -10px;
+	z-index: 1000;
+}
+
+.contextMenu LI {
+	list-style: none;
+	padding: 0px;
+	margin: 0px;
+}
+
+.contextMenu .shortcut {
+	width: 115px;           
+	text-align:right;
+	float:right;
+}
+
+.touch .contextMenu .shortcut {
+	display: none;
+}
+
+
+.touch .shortcut {
+	display: none;
+}
+
+
+.contextMenu A {
+	-moz-user-select: none;
+	-webkit-user-select: none;
+	color: #222;
+	text-decoration: none;
+	display: block;
+	line-height: 20px;
+	height: 20px;
+	background-position: 6px center;
+	background-repeat: no-repeat;
+	outline: none;
+	padding: 0px 15px 1px 20px;
+}
+
+.touch .contextMenu A {
+	padding: 0 15px;
+	border-bottom: #;
+	font-weight: bold;
+	border-top: solid 1px #E3E3E3;
+	height: 40px;
+	line-height: 40px;
+	min-width: 200px;
+}
+
+.contextMenu LI.hover A {
+	background-color: #2e5dea;
+	color: white;
+	cursor: default;
+}
+
+.contextMenu LI.disabled A {
+	color: #999;
+
+}
+
+.touch .contextMenu LI.disabled A {
+	display: none;
+}
+
+.contextMenu LI.hover.disabled A {
+	background-color: transparent;
+}
+
+.contextMenu LI.separator {
+	border-top: solid 1px #E3E3E3;
+	padding-top: 5px;
+	margin-top: 5px;
+}
+
+.touch .contextMenu LI.separator {
+	border-top: none;
+	margin: 0;
+	padding: 0;
+}
+
+#menu {
+  display: none;
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  height: 30px;
+  background: #000;
+  z-index: 10;
+  color: #fff;
+}
+
+#workarea.rect, #workarea.line, #workarea.ellipse, #workarea.path, #workarea.shapelib {
+  cursor: crosshair;
+}
+
+#workarea.text {
+  cursor: text;
+}
+
+#workarea.eyedropper {
+  cursor: url(../images/eyedropper.png) 0 16, crosshair;
+}
+
+#workarea.fhpath {
+  cursor: url(../images/pencil_cursor.png) 0 20, crosshair;
+}
+
+#workarea.rotate * {
+  cursor: url(../images/rotate.png) 12 12, auto;
+}
+
+#workarea.select text, #workarea.multiselect text {
+	cursor: default;
+}
+
+#workarea.n-resize * {cursor: n-resize !important;}
+#workarea.e-resize * {cursor: e-resize !important;}
+#workarea.w-resize * {cursor: w-resize !important;}
+#workarea.s-resize * {cursor: s-resize !important;}
+
+#workarea.ne-resize * {cursor: ne-resize !important;}
+#workarea.se-resize * {cursor: se-resize !important;}
+#workarea.nw-resize * {cursor: nw-resize !important;}
+#workarea.sw-resize * {cursor: sw-resize !important;}
+
+#workarea.copy {
+	cursor: copy;
+}
+
+#workarea.zoom {
+  cursor: crosshair;
+  cursor:-moz-zoom-in;
+  cursor:-webkit-zoom-in;
+}
+#workarea.zoom.out {
+  cursor: crosshair;
+  cursor:-moz-zoom-out;
+  cursor:-webkit-zoom-out;
+}
+
+#selectorRubberBand {
+	shape-rendering: crispEdges;
+}
+
+/* For modern browsers */
+.clearfix:before,
+.clearfix:after {
+    content:"";
+    display:table;
+}
+
+.clearfix:after {
+    clear:both;
+}
+
+/* For IE 6/7 (trigger hasLayout) */
+.clearfix {
+    *zoom:1;
+}
+
+
+ #group_title {display: none;}
+
+#base_unit_container {
+	display: none;
+	position: absolute;
+	z-index: 20;
+}
+
+ .draginput {
+  background: #3f3f3c;
+  border-radius: 3px;
+  -webkit-font-smoothing: antialiased;
+  width: 70px;
+  height: 70px;
+  display: block;
+  position: relative;
+  float: left;
+  margin: 0 5px 5px 0;
+}
+
+ .draginput .caret {
+  border: solid transparent 5px;
+  border-top-color: #999;
+  position: absolute;
+  width: 0;
+	height: 0;
+	right: 5px;
+	margin-top: -2px;
+	top: 50%;
+}
+
+ .draginput label {
+	margin: 28px 10px 0 5px;
+	font-size: 14px;
+	color: white;
+	font-weight: bold;
+	font-family: sans-serif;
+}
+
+ .draginput label#resolution_label,  .draginput label#seg_type_label {
+	font: bold 12px/110% sans-serif;
+	position: absolute;
+	left: auto;
+	right: 10px;
+	z-index: 0;
+	text-align: right;
+}
+
+  .draginput label#seg_type_label {
+	margin-top: 40px;
+}
+
+  .draginput label#seg_type_label .caret {
+	top: 66%;
+}
+
+ .draginput label#resolution_label .pull {
+	position: relative;
+	left: -15px;
+}
+
+ .draginput label#resolution_label span {
+	right: -13px;
+	left: auto;
+	font-size: 16px;
+	top: 2px;
+	font-weight: bold;
+	color: white;
+}
+
+.touch  .draginput.active:after {
+	content: attr(data-value);
+	display: block;
+	position: absolute;
+	background: #fff;
+	font-size: 16px;
+	top: 0;
+	width: 30px;
+	left: -50px;
+	padding: 0 5px;
+	color: #333;
+	z-index: 10;
+	font-family: sans-serif;
+	font-weight: bold;
+	text-align: right;
+	padding-right: 10px;
+	height: 20px;
+	line-height: 20px;
+	letter-spacing: -1px;
+}
+
+.touch  .draginput.active:before {
+	content: '';
+	height: 0;
+	width: 0;
+	position: absolute;
+	top: 5px;
+	left: -5px;
+	border: solid transparent 5px;
+	border-left-color: #fff;
+}
+
+ .draginput input {
+  border: none;
+  background: transparent;
+  font: 24px/normal sans-serif;
+  text-align: center;
+  color: #4F80FF;
+  padding: 30px 0 16px;
+  width: 100%;
+  height: 24px;
+	position: relative;
+	z-index: 2;
+}
+
+.draginput.twocol {
+	width: 145px;
+}
+
+#tool_font_family .caret {
+	right: 40px;
+	top: 55%;
+}
+
+#tool_font_family select {
+	width: 110px;
+}
+
+
+ #tool_bold,   #tool_italic { 
+	font: bold 20px/35px serif;
+	text-align: center;
+	position: absolute;
+	padding: 0 0 0 0;
+	color: #ccc;
+	background: transparent;
+	border: none;
+	width: 35px;
+	height: 35px;
+	margin: 0;
+	top: 0;
+	right: 0;
+}
+
+#tool_italic {
+	border-top: solid #2f2f2c 2px;
+	top: 35px;
+	font-weight: bold;
+	font-style: italic;
+	font-size: 24px;
+}
+
+
+ #tool_bold:hover,   #tool_italic:hover {
+  color: #fff;
+}
+
+ #tool_bold.active,   #tool_italic.active {
+  color: #50A0FF;
+}
+
+#preview_font {
+	font-size: 20px;
+	color: #fff;
+	height: 70px;
+	line-height: 75px;
+	padding: 0 0 0 10px;
+	white-space: nowrap;
+	width: 100px;
+	overflow: hidden;
+	border-right: solid #2f2f2c 2px;
+	position: relative;
+}
+
+#preview_font:after {
+	content: '';
+	position: absolute;
+	right: 0;
+	top: 3px;
+	bottom: 3px;
+	width: 15px;
+	border-right: solid #3f3f3c 10px;
+	background: transparent url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAxIDEiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxsaW5lYXJHcmFkaWVudCBpZD0iZzU4MCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIwJSIgeTE9IjAlIiB4Mj0iMTAwJSIgeTI9IjAlIj48c3RvcCBzdG9wLWNvbG9yPSIjM2YzZjNjIiBzdG9wLW9wYWNpdHk9IjAiIG9mZnNldD0iMCIvPjxzdG9wIHN0b3AtY29sb3I9IiMzZjNmM2MiIG9mZnNldD0iMC43Ii8+PC9saW5lYXJHcmFkaWVudD48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBmaWxsPSJ1cmwoI2c1ODApIiAvPjwvc3ZnPg==);
+}
+
+
+.draginput input, .draginput input:hover, .draginput input:active {  
+	  cursor: url(../images/drag.png), move;
+	  cursor: -webkit-grab;
+		cursor: -moz-grab;
+}
+
+.draginput input[type="checkbox"], .draginput input[type="checkbox"]:hover, .draginput input[type="checkbox"]:active {  
+	  cursor: pointer;
+}
+
+.draginput.checkbox {
+	cursor: pointer;
+}
+
+.draginput.active input, .draginput.active input:hover, .draginput.active input:active {  
+	  cursor: url(../images/dragging.png), move;
+	  cursor: -webkit-grabbing;
+		cursor: -moz-grabbing;
+}
+
+
+
+ .draginput span {
+  font: 11px/130% sans-serif;
+  color: #ccc;
+  display: block;
+  position: absolute;
+  top: 5px;
+  left: 5px;
+  text-align: left;
+}
+
+ .draginput.error {
+	background: #900;
+}
+
+ .draginput.error input {
+	color: #fff;
+}
+
+ .draginput.stroke_tool {
+	text-align: center;
+}
+
+ .draginput select {
+	-webkit-appearance: none;
+	opacity: 0;
+	display: block;
+	position: absolute;
+	height: 100%;
+	width: 100%;
+	margin: 0;
+	z-index: 1;
+	top: 0;
+	left: 0;	
+}
+
+
+.draginput_cursor{
+  position: absolute;
+  top: 50%;
+  width: 100%;
+  border-top: solid rgba(50,100,200,0.25) 3px;
+	margin-top: -2px;
+	z-index: 0;
+}
+
+ .draginput input[readonly=readonly] {
+  -webkit-appearance: none;
+  -webkit-touch-callout: none;
+  -webkit-user-select: none;
+  -khtml-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+
+
+ .draginput input:focus {
+	background: #50A0FF;
+	color: #fff;
+	outline: none;
+	box-shadow: 0 0 5px 2px #50A0FF;
+}
+
+ .draginput input:focus+span {
+	z-index: 10;
+	color:#fff;
+}
+
+.draginput .push_bottom {
+	bottom: 0;
+	position: absolute;
+}
+
+#zoom_label {
+	height: 20px;
+	background: transparent;
+	cursor: default !important;
+	width: auto;
+	padding: 0 10px;
+	margin: 0;
+}
+
+#zoom_panel {
+	padding: 9px 0;
+	right: 175px;
+  position: absolute;
+}
+
+#zoom_label img, #zoom_label svg {
+	width: 16px;
+	height: 16px;
+}
+
+#logo svg {
+	pointer-events: none;
+}
+
+#zoomLabel {
+	width: 16px;
+	height: 16px;
+	cursor: pointer;
+	background: #ccc;
+}
+
+#zoomLabel:after {
+	content: '';
+	position: absolute;
+	border-left: solid #2f2f2c 1px;
+	left: 0;
+	height: 16px;
+}
+
+#zoom_label input {
+	color: #ccc;
+	font-size: 13px;
+	height: auto;
+	width: auto;
+	padding: 0;
+	cursor: default;
+	position: static;
+}
+
+#zoom_label span {
+	top: 0;
+	left: 0;
+}
+
+body.dragging * {
+	cursor: url(../images/dragging.png), move;
+	cursor: -webkit-grabbing;
+	cursor: -moz-grabbing;
+}
+
+body.drag * {
+	cursor: url(../images/dragging.png), move;
+	cursor: -webkit-grabbing;
+	cursor: -moz-grabbing;
+}
+
+input[readonly=readonly]:focus {
+	box-shadow: none;
+}
+
+#color_canvas_tools, #fill_bg, #stroke_bg {
+	background: #fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMAQMAAABsu86kAAAAA3NCSVQICAjb4U/gAAAABlBMVEXu7u7///8o06qaAAAACXBIWXMAAAsSAAALEgHS3X78AAAAFXRFWHRDcmVhdGlvbiBUaW1lADcvMjIvMTL7FNdCAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M1cbXjNgAAABFJREFUCJljYP7AgIb+MKAhAM8/C5vWL6zSAAAAAElFTkSuQmCC) top left repeat;
+}
+
+#color_canvas_tools {
+	width: 60px;
+	height: 40px;
+	margin: 23px 5px 5px 5px;
+	position: relative;
+	overflow: hidden;
+}
+
+#color_canvas_tools  {
+	display: block;
+}
+
+
+#tool_angle_indicator {
+	width: 				 50px;
+	height: 			 50px;
+	border-radius: 50px;
+	background: rgba(255,255,255,0.05);
+	position: absolute;
+	bottom: 2px;
+	left: 10px;
+}
+
+#tool_angle_indicator_cursor {
+	width: 				 4px;
+	height: 			 25px;
+	border-top: solid #50A0FF 3px;
+	position: absolute;
+	margin: 0 0 0 23px;
+	-webkit-transform-origin: 50% 0;
+	-moz-transform-origin: 50% 0;
+	-o-transform-origin: 50% 0;
+	-ms-transform-origin: 50% 0;
+	transform-origin: 50% 0;
+}
+
+#stroke_style_label {
+	font-size: 30px;
+	margin-top: 33px;
+	letter-spacing: -1px;
+}
+
+.stroke_tool .caret {
+	top: 60%;
+}
+
+#tool_align_relative {
+	position: absolute;
+	top: -5px;
+	left: 0;
+	right: 20px;
+	display: block;
+}
+
+#tool_align_relative select {
+	width: 100%;
+	display: block;
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/embedapi.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/embedapi.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/embedapi.html	(revision 29468)
@@ -0,0 +1,56 @@
+﻿<!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>
+    <title></title>
+</head>
+<body>
+
+    <script type="text/javascript" src="embedapi.js"></script>
+    <script type="text/javascript">
+        var svgCanvas = null;
+
+        function init_embed() {
+            var frame = document.getElementById('svgedit');
+			svgCanvas = new embedded_svg_edit(frame);
+			
+			// Hide main button, as we will be controlling new/load/save etc from the host document
+			var doc;
+			doc = frame.contentDocument;
+			if (!doc)
+			{
+				doc = frame.contentWindow.document;
+			}
+			
+			var mainButton = doc.getElementById('main_button');
+			mainButton.style.display = 'none';            
+        }
+        
+        function handleSvgData(data, error) {
+			if (error)
+			{
+				alert('error ' + error);
+			}
+            else
+			{
+				alert('Congratulations. Your SVG string is back in the host page, do with it what you will\n\n' + data);
+			}			
+        }
+        
+        function loadSvg() {
+            var svgexample = '<svg width="640" height="480" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg"><g><title>Layer 1</title><rect stroke-width="5" stroke="#000000" fill="#FF0000" id="svg_1" height="35" width="51" y="35" x="32"/><ellipse ry="15" rx="24" stroke-width="5" stroke="#000000" fill="#0000ff" id="svg_2" cy="60" cx="66"/></g></svg>';
+            svgCanvas.setSvgString(svgexample);
+        }
+		
+		function saveSvg() {			
+			svgCanvas.getSvgString()(handleSvgData);
+		}
+    </script>
+
+
+    <button onclick="loadSvg();">Load example</button>
+    <button onclick="saveSvg();">Save data</button>
+    <br/>
+
+    <iframe src="index.html" width="900px" height="600px" id="svgedit" onload="init_embed()"></iframe>    
+</body>
+</html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/closepath_icons.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/closepath_icons.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/closepath_icons.svg	(revision 29468)
@@ -0,0 +1,41 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+<g id="tool_closepath">
+<svg viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <g>
+  <title>Layer 1</title>
+  <path stroke="#000" stroke-width="15" fill="#ffc8c8" d="m121.5,40l-84,106l27,115l166,2l29,-111"/>
+  <line x1="240" y1="136" x2="169.5" y2="74" stroke="#A00" stroke-width="25" fill="none"/>
+  <path stroke="none" fill ="#A00" d="m158,65l31,74l-3,-50l51,-3z"/>
+  <g stroke-width="15" stroke="#00f" fill="#0ff">
+  <circle r="30" cy="41" cx="123"/>
+  <circle r="30" cy="146" cx="40"/>
+  <circle r="30" cy="260" cx="69"/>
+  <circle r="30" cy="260" cx="228"/>
+  <circle r="30" cy="148" cx="260"/>
+  </g>
+ </g>
+</svg>
+</g>
+<g id="tool_openpath">
+<svg viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <g>
+  <title>Layer 1</title>
+  <path stroke="#000" stroke-width="15" fill="#ffc8c8" d="m123.5,38l-84,106l27,115l166,2l29,-111"/>
+  <line x1="276.5" y1="153" x2="108.5" y2="24" stroke="#000" stroke-width="10" fill="none"/>
+  <g stroke-width="15" stroke="#00f" fill="#0ff">
+   <circle r="30" cy="41" cx="123"/>
+   <circle r="30" cy="146" cx="40"/>
+   <circle r="30" cy="260" cx="69"/>
+   <circle r="30" cy="260" cx="228"/>
+   <circle r="30" cy="148" cx="260"/>
+  </g>
+  <g  stroke="#A00" stroke-width="15" fill="none">
+   <line x1="168" y1="24" x2="210" y2="150"/>
+   <line x1="210" y1="24" x2="168" y2="150"/>
+  </g>
+ </g>
+</svg>
+</g>
+
+<g id="svg_eof"/>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-arrows.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-arrows.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-arrows.js	(revision 29468)
@@ -0,0 +1,298 @@
+/*
+ * ext-arrows.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ *
+ */
+
+ 
+methodDraw.addExtension("Arrows", function(S) {
+		var svgcontent = S.svgcontent,
+			addElem = S.addSvgElementFromJson,
+			nonce = S.nonce,
+			randomize_ids = S.randomize_ids,
+			selElems;
+
+		svgCanvas.bind('setnonce', setArrowNonce);
+		svgCanvas.bind('unsetnonce', unsetArrowNonce);
+			
+		var lang_list = {
+			"en":[
+				{"id": "arrow_none", "textContent": "No arrow" }
+			],
+			"fr":[
+				{"id": "arrow_none", "textContent": "Sans flÃšche" }
+			]
+		};
+		
+		var prefix = 'se_arrow_';
+		if (randomize_ids) {
+		  var arrowprefix = prefix + nonce + '_';
+		} else {
+		  var arrowprefix = prefix;
+		}
+
+		var pathdata = {
+			fw: {d:"m0,0l10,5l-10,5l5,-5l-5,-5z", refx:8,  id: arrowprefix + 'fw'},
+			bk: {d:"m10,0l-10,5l10,5l-5,-5l5,-5z", refx:2, id: arrowprefix + 'bk'}
+		}
+		
+		function setArrowNonce(window, n) {
+		    randomize_ids = true;
+		    arrowprefix = prefix + n + '_';
+ 			pathdata.fw.id = arrowprefix + 'fw';
+			pathdata.bk.id = arrowprefix + 'bk';
+		}
+
+		function unsetArrowNonce(window) {
+		    randomize_ids = false;
+		    arrowprefix = prefix;
+ 			pathdata.fw.id = arrowprefix + 'fw';
+			pathdata.bk.id = arrowprefix + 'bk';
+		}
+
+		function getLinked(elem, attr) {
+			var str = elem.getAttribute(attr);
+			if(!str) return null;
+			var m = str.match(/\(\#(.*)\)/);
+			if(!m || m.length !== 2) {
+				return null;
+			}
+			return S.getElem(m[1]);
+		}
+		
+		function showPanel(on) {
+			$('#arrow_panel').toggle(on);
+			
+			if(on) {
+				var el = selElems[0];
+				var end = el.getAttribute("marker-end");
+				var start = el.getAttribute("marker-start");
+				var mid = el.getAttribute("marker-mid");
+				var val;
+				
+				if(end && start) {
+					val = "both";
+				} else if(end) {
+					val = "end";
+				} else if(start) {
+					val = "start";
+				} else if(mid) {
+					val = "mid";
+					if(mid.indexOf("bk") != -1) {
+						val = "mid_bk";
+					}
+				}
+				
+				if(!start && !mid && !end) {
+					val = "none";
+				}
+				
+				$("#arrow_list").val(val);
+			}
+		}
+		
+		function resetMarker() {
+			var el = selElems[0];
+			el.removeAttribute("marker-start");
+			el.removeAttribute("marker-mid");
+			el.removeAttribute("marker-end");
+		}
+		
+		function addMarker(dir, type, id) {
+			// TODO: Make marker (or use?) per arrow type, since refX can be different
+			id = id || arrowprefix + dir;
+			
+			var marker = S.getElem(id);
+
+			var data = pathdata[dir];
+			
+			if(type == "mid") {
+				data.refx = 5;
+			}
+
+			if(!marker) {
+				marker = addElem({
+					"element": "marker",
+					"attr": {
+						"viewBox": "0 0 10 10",
+						"id": id,
+						"refY": 5,
+						"markerUnits": "strokeWidth",
+						"markerWidth": 5,
+						"markerHeight": 5,
+						"orient": "auto",
+						"style": "pointer-events:none" // Currently needed for Opera
+					}
+				});
+				var arrow = addElem({
+					"element": "path",
+					"attr": {
+						"d": data.d,
+						"fill": "#000000"
+					}
+				});
+				marker.appendChild(arrow);
+				S.findDefs().appendChild(marker);
+			} 
+			
+			marker.setAttribute('refX', data.refx);
+			
+			return marker;
+		}
+		
+		function setArrow() {
+			var type = this.value;
+			resetMarker();
+		
+			if(type == "none") {
+				return;
+			}
+		
+			// Set marker on element
+			var dir = "fw";
+			if(type == "mid_bk") {
+				type = "mid";
+				dir = "bk";
+			} else if(type == "both") {
+				addMarker("bk", type);
+				svgCanvas.changeSelectedAttribute("marker-start", "url(#" + pathdata.bk.id + ")");
+				type = "end";
+				dir = "fw";
+			} else if (type == "start") {
+				dir = "bk";
+			}
+			
+			addMarker(dir, type);
+			svgCanvas.changeSelectedAttribute("marker-"+type, "url(#" + pathdata[dir].id + ")");
+			S.call("changed", selElems);
+		}
+		
+		function colorChanged(elem) {
+			var color = elem.getAttribute('stroke');
+			
+			var mtypes = ['start','mid','end'];
+			var defs = S.findDefs();
+			
+			$.each(mtypes, function(i, type) {
+				var marker = getLinked(elem, 'marker-'+type);
+				if(!marker) return;
+				
+				var cur_color = $(marker).children().attr('fill');
+				var cur_d = $(marker).children().attr('d');
+				var new_marker = null;
+				if(cur_color === color) return;
+				
+				var all_markers = $(defs).find('marker');
+				// Different color, check if already made
+				all_markers.each(function() {
+					var attrs = $(this).children().attr(['fill', 'd']);
+					if(attrs.fill === color && attrs.d === cur_d) {
+						// Found another marker with this color and this path
+						new_marker = this;
+					}
+				});
+				
+				if(!new_marker) {
+					// Create a new marker with this color
+					var last_id = marker.id;
+					var dir = last_id.indexOf('_fw') !== -1?'fw':'bk';
+					
+					new_marker = addMarker(dir, type, arrowprefix + dir + all_markers.length);
+
+					$(new_marker).children().attr('fill', color);
+				}
+				
+				$(elem).attr('marker-'+type, "url(#" + new_marker.id + ")");
+				
+				// Check if last marker can be removed
+				var remove = true;
+				$(S.svgcontent).find('line, polyline, path, polygon').each(function() {
+					var elem = this;
+					$.each(mtypes, function(j, mtype) {
+						if($(elem).attr('marker-' + mtype) === "url(#" + marker.id + ")") {
+							return remove = false;
+						}
+					});
+					if(!remove) return false;
+				});
+				
+				// Not found, so can safely remove
+				if(remove) {
+					$(marker).remove();
+				}
+
+			});
+			
+		}
+		
+		return {
+			name: "Arrows",
+			context_tools: [{
+				type: "select",
+				panel: "arrow_panel",
+				title: "Select arrow type",
+				id: "arrow_list",
+				options: {
+					none: "No arrow",
+					end: "----&gt;",
+					start: "&lt;----",
+					both: "&lt;---&gt;",
+					mid: "--&gt;--",
+					mid_bk: "--&lt;--"
+				},
+				defval: "none",
+				events: {
+					change: setArrow
+				}
+			}],
+			callback: function() {
+				$('#arrow_panel').hide();
+				// Set ID so it can be translated in locale file
+				$('#arrow_list option')[0].id = 'connector_no_arrow';
+			},
+			addLangData: function(lang) {
+				return {
+					data: lang_list[lang]
+				};
+			},
+			selectedChanged: function(opts) {
+				
+				// Use this to update the current selected elements
+				selElems = opts.elems;
+				
+				var i = selElems.length;
+				var marker_elems = ['line','path','polyline','polygon'];
+				
+				while(i--) {
+					var elem = selElems[i];
+					if(elem && $.inArray(elem.tagName, marker_elems) != -1) {
+						if(opts.selectedElement && !opts.multiselected) {
+							showPanel(true);
+						} else {
+							showPanel(false);
+						}
+					} else {
+						showPanel(false);
+					}
+				}
+			},
+			elementChanged: function(opts) {
+				var elem = opts.elems[0];
+				if(elem && (
+					elem.getAttribute("marker-start") ||
+					elem.getAttribute("marker-mid") ||
+					elem.getAttribute("marker-end")
+				)) {
+	// 								var start = elem.getAttribute("marker-start");
+	// 								var mid = elem.getAttribute("marker-mid");
+	// 								var end = elem.getAttribute("marker-end");
+					// Has marker, so see if it should match color
+					colorChanged(elem);
+				}
+				
+			}
+		};
+});
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-closepath.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-closepath.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-closepath.js	(revision 29468)
@@ -0,0 +1,92 @@
+/*
+ * ext-closepath.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Jeff Schiller
+ *
+ */
+
+// This extension adds a simple button to the contextual panel for paths
+// The button toggles whether the path is open or closed
+methodDraw.addExtension("ClosePath", function(S) {
+		var selElems,
+			updateButton = function(path) {
+				var seglist = path.pathSegList,
+					closed = seglist.getItem(seglist.numberOfItems - 1).pathSegType==1,
+					showbutton = closed ? '#tool_openpath' : '#tool_closepath',
+					hidebutton = closed ? '#tool_closepath' : '#tool_openpath';
+					$(hidebutton).hide();
+					$(showbutton).show();
+			},
+			showPanel = function(on) {
+				$('#closepath_panel').toggle(on);
+				if (on) {
+					var path = selElems[0];
+					if (path) updateButton(path);
+				}
+			},
+		
+			toggleClosed = function() {
+				var path = selElems[0];
+				if (path) {
+					var seglist = path.pathSegList,
+						last = seglist.numberOfItems - 1;					
+					// is closed
+					if(seglist.getItem(last).pathSegType == 1) {
+						seglist.removeItem(last);
+					}
+					else {
+						seglist.appendItem(path.createSVGPathSegClosePath());
+					}
+					updateButton(path);
+				}
+			};
+		
+		return {
+			name: "ClosePath",
+			svgicons: "extensions/closepath_icons.svg",
+			buttons: [{
+				id: "tool_openpath",
+				type: "context",
+				panel: "closepath_panel",
+				title: "Open path",
+				events: {
+					'click': function() {
+						toggleClosed();
+					}
+				}
+			},
+			{
+				id: "tool_closepath",
+				type: "context",
+				panel: "closepath_panel",
+				title: "Close path",
+				events: {
+					'click': function() {
+						toggleClosed();
+					}
+				}
+			}],
+			callback: function() {
+				$('#closepath_panel').hide();
+			},
+			selectedChanged: function(opts) {
+				selElems = opts.elems;
+				var i = selElems.length;
+				
+				while(i--) {
+					var elem = selElems[i];
+					if(elem && elem.tagName == 'path') {
+						if(opts.selectedElement && !opts.multiselected) {
+							showPanel(true);
+						} else {
+							showPanel(false);
+						}
+					} else {
+						showPanel(false);
+					}
+				}
+			}
+		};
+});
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-connector.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-connector.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-connector.js	(revision 29468)
@@ -0,0 +1,587 @@
+/*
+ * ext-connector.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ *
+ */
+ 
+methodDraw.addExtension("Connector", function(S) {
+	var svgcontent = S.svgcontent,
+		svgroot = S.svgroot,
+		getNextId = S.getNextId,
+		getElem = S.getElem,
+		addElem = S.addSvgElementFromJson,
+		selManager = S.selectorManager,
+		curConfig = methodDraw.curConfig,
+		started = false,
+		start_x,
+		start_y,
+		cur_line,
+		start_elem,
+		end_elem,
+		connections = [],
+		conn_sel = ".se_connector",
+		se_ns,
+// 			connect_str = "-SE_CONNECT-",
+		selElems = [];
+		
+	elData = $.data;
+		
+	var lang_list = {
+		"en":[
+			{"id": "mode_connect", "title": "Connect two objects" }
+		],
+		"fr":[
+			{"id": "mode_connect", "title": "Connecter deux objets"}
+		]
+	};
+	
+	function getOffset(side, line) {
+		var give_offset = !!line.getAttribute('marker-' + side);
+// 		var give_offset = $(line).data(side+'_off');
+
+		// TODO: Make this number (5) be based on marker width/height
+		var size = line.getAttribute('stroke-width') * 5;
+		return give_offset ? size : 0;
+	}
+	
+	function showPanel(on) {
+		var conn_rules = $('#connector_rules');
+		if(!conn_rules.length) {
+			conn_rules = $('<style id="connector_rules"><\/style>').appendTo('head');
+		} 
+		conn_rules.text(!on?"":"#tool_clone, #tool_topath, #tool_angle, #xy_panel { display: none !important; }");
+		$('#connector_panel').toggle(on);
+	}
+	
+	function setPoint(elem, pos, x, y, setMid) {
+		var pts = elem.points;
+		var pt = svgroot.createSVGPoint();
+		pt.x = x;
+		pt.y = y;
+		if(pos === 'end') pos = pts.numberOfItems-1;
+		// TODO: Test for this on init, then use alt only if needed
+		try {
+			pts.replaceItem(pt, pos);
+		} catch(err) {
+			// Should only occur in FF which formats points attr as "n,n n,n", so just split
+			var pt_arr = elem.getAttribute("points").split(" ");
+			for(var i=0; i< pt_arr.length; i++) {
+				if(i == pos) {
+					pt_arr[i] = x + ',' + y;
+				}
+			}
+			elem.setAttribute("points",pt_arr.join(" ")); 
+		}
+		
+		if(setMid) {
+			// Add center point
+			var pt_start = pts.getItem(0);
+			var pt_end = pts.getItem(pts.numberOfItems-1);
+			setPoint(elem, 1, (pt_end.x + pt_start.x)/2, (pt_end.y + pt_start.y)/2);
+		}
+	}
+	
+	function updateLine(diff_x, diff_y) {
+		// Update line with element
+		var i = connections.length;
+		while(i--) {
+			var conn = connections[i];
+			var line = conn.connector;
+			var elem = conn.elem;
+			
+			var pre = conn.is_start?'start':'end';
+// 						var sw = line.getAttribute('stroke-width') * 5;
+			
+			// Update bbox for this element
+			var bb = elData(line, pre+'_bb');
+			bb.x = conn.start_x + diff_x;
+			bb.y = conn.start_y + diff_y;
+			elData(line, pre+'_bb', bb);
+			
+			var alt_pre = conn.is_start?'end':'start';
+			
+			// Get center pt of connected element
+			var bb2 = elData(line, alt_pre+'_bb');
+			var src_x = bb2.x + bb2.width/2;
+			var src_y = bb2.y + bb2.height/2;
+			
+			// Set point of element being moved
+			var pt = getBBintersect(src_x, src_y, bb, getOffset(pre, line)); // $(line).data(pre+'_off')?sw:0
+			setPoint(line, conn.is_start?0:'end', pt.x, pt.y, true);
+			
+			// Set point of connected element
+			var pt2 = getBBintersect(pt.x, pt.y, elData(line, alt_pre + '_bb'), getOffset(alt_pre, line));
+			setPoint(line, conn.is_start?'end':0, pt2.x, pt2.y, true);
+
+		}
+	}
+	
+	function findConnectors(elems) {
+		if(!elems) elems = selElems;
+		var connectors = $(svgcontent).find(conn_sel);
+		connections = [];
+
+		// Loop through connectors to see if one is connected to the element
+		connectors.each(function() {
+			var start = elData(this, "c_start");
+			var end = elData(this, "c_end");
+			
+			var parts = [getElem(start), getElem(end)];
+			for(var i=0; i<2; i++) {
+				var c_elem = parts[i];
+				var add_this = false;
+				// The connected element might be part of a selected group
+				$(c_elem).parents().each(function() {
+					if($.inArray(this, elems) !== -1) {
+						// Pretend this element is selected
+						add_this = true;
+					}
+				});
+				
+				if(!c_elem || !c_elem.parentNode) {
+					$(this).remove();
+					continue;
+				}
+				if($.inArray(c_elem, elems) !== -1 || add_this) {
+					var bb = svgCanvas.getStrokedBBox([c_elem]);
+					connections.push({
+						elem: c_elem,
+						connector: this,
+						is_start: (i === 0),
+						start_x: bb.x,
+						start_y: bb.y
+					});	
+				}
+			}
+		});
+	}
+	
+	function updateConnectors(elems) {
+		// Updates connector lines based on selected elements
+		// Is not used on mousemove, as it runs getStrokedBBox every time,
+		// which isn't necessary there.
+		findConnectors(elems);
+		if(connections.length) {
+			// Update line with element
+			var i = connections.length;
+			while(i--) {
+				var conn = connections[i];
+				var line = conn.connector;
+				var elem = conn.elem;
+
+				var sw = line.getAttribute('stroke-width') * 5;
+				var pre = conn.is_start?'start':'end';
+				
+				// Update bbox for this element
+				var bb = svgCanvas.getStrokedBBox([elem]);
+				bb.x = conn.start_x;
+				bb.y = conn.start_y;
+				elData(line, pre+'_bb', bb);
+				var add_offset = elData(line, pre+'_off');
+			
+				var alt_pre = conn.is_start?'end':'start';
+				
+				// Get center pt of connected element
+				var bb2 = elData(line, alt_pre+'_bb');
+				var src_x = bb2.x + bb2.width/2;
+				var src_y = bb2.y + bb2.height/2;
+				
+				// Set point of element being moved
+				var pt = getBBintersect(src_x, src_y, bb, getOffset(pre, line));
+				setPoint(line, conn.is_start?0:'end', pt.x, pt.y, true);
+				
+				// Set point of connected element
+				var pt2 = getBBintersect(pt.x, pt.y, elData(line, alt_pre + '_bb'), getOffset(alt_pre, line));
+				setPoint(line, conn.is_start?'end':0, pt2.x, pt2.y, true);
+				
+				// Update points attribute manually for webkit
+				if(navigator.userAgent.indexOf('AppleWebKit') != -1) {
+					var pts = line.points;
+					var len = pts.numberOfItems;
+					var pt_arr = Array(len);
+					for(var j=0; j< len; j++) {
+						var pt = pts.getItem(j);
+						pt_arr[j] = pt.x + ',' + pt.y;
+					}	
+					line.setAttribute("points",pt_arr.join(" ")); 
+				}
+
+			}
+		}
+	}
+	
+	function getBBintersect(x, y, bb, offset) {
+		if(offset) {
+			offset -= 0;
+			bb = $.extend({}, bb);
+			bb.width += offset;
+			bb.height += offset;
+			bb.x -= offset/2;
+			bb.y -= offset/2;
+		}
+	
+		var mid_x = bb.x + bb.width/2;
+		var mid_y = bb.y + bb.height/2;
+		var len_x = x - mid_x;
+		var len_y = y - mid_y;
+		
+		var slope = Math.abs(len_y/len_x);
+		
+		var ratio;
+		
+		if(slope < bb.height/bb.width) {
+			ratio = (bb.width/2) / Math.abs(len_x);
+		} else {
+			ratio = (bb.height/2) / Math.abs(len_y);
+		}
+		
+		
+		return {
+			x: mid_x + len_x * ratio,
+			y: mid_y + len_y * ratio
+		}
+	}
+	
+	// Do once
+	(function() {
+		var gse = svgCanvas.groupSelectedElements;
+		
+		svgCanvas.groupSelectedElements = function() {
+			svgCanvas.removeFromSelection($(conn_sel).toArray());
+			return gse.apply(this, arguments);
+		}
+		
+		var mse = svgCanvas.moveSelectedElements;
+		
+		svgCanvas.moveSelectedElements = function() {
+			svgCanvas.removeFromSelection($(conn_sel).toArray());
+			var cmd = mse.apply(this, arguments);
+			updateConnectors();
+			return cmd;
+		}
+		
+		se_ns = svgCanvas.getEditorNS();
+	}());
+	
+	// Do on reset
+	function init() {
+		// Make sure all connectors have data set
+		$(svgcontent).find('*').each(function() { 
+			var conn = this.getAttributeNS(se_ns, "connector");
+			if(conn) {
+				this.setAttribute('class', conn_sel.substr(1));
+				var conn_data = conn.split(' ');
+				var sbb = svgCanvas.getStrokedBBox([getElem(conn_data[0])]);
+				var ebb = svgCanvas.getStrokedBBox([getElem(conn_data[1])]);
+				$(this).data('c_start',conn_data[0])
+					.data('c_end',conn_data[1])
+					.data('start_bb', sbb)
+					.data('end_bb', ebb);
+				svgCanvas.getEditorNS(true);
+			}
+		});
+// 			updateConnectors();
+	}
+	
+// 		$(svgroot).parent().mousemove(function(e) {
+// // 			if(started 
+// // 				|| svgCanvas.getMode() != "connector"
+// // 				|| e.target.parentNode.parentNode != svgcontent) return;
+// 			
+// 			console.log('y')
+// // 			if(e.target.parentNode.parentNode === svgcontent) {
+// // 					
+// // 			}
+// 		});
+	
+	return {
+		name: "Connector",
+		svgicons: "images/conn.svg",
+		buttons: [{
+			id: "mode_connect",
+			type: "mode",
+			icon: "images/cut.png",
+			title: "Connect two objects",
+			includeWith: {
+				button: '#tool_line',
+				isDefault: false,
+				position: 1
+			},
+			events: {
+				'click': function() {
+					svgCanvas.setMode("connector");
+				}
+			}
+		}],
+		addLangData: function(lang) {
+			return {
+				data: lang_list[lang]
+			};
+		},
+		mouseDown: function(opts) {
+			var e = opts.event;
+			start_x = opts.start_x,
+			start_y = opts.start_y;
+			var mode = svgCanvas.getMode();
+			
+			if(mode == "connector") {
+				
+				if(started) return;
+				
+				var mouse_target = e.target;
+				
+				var parents = $(mouse_target).parents();
+				
+				if($.inArray(svgcontent, parents) != -1) {
+					// Connectable element
+					
+					// If child of foreignObject, use parent
+					var fo = $(mouse_target).closest("foreignObject");
+					start_elem = fo.length ? fo[0] : mouse_target;
+					
+					// Get center of source element
+					var bb = svgCanvas.getStrokedBBox([start_elem]);
+					var x = bb.x + bb.width/2;
+					var y = bb.y + bb.height/2;
+					
+					started = true;
+					cur_line = addElem({
+						"element": "polyline",
+						"attr": {
+							"id": getNextId(),
+							"points": (x+','+y+' '+x+','+y+' '+start_x+','+start_y),
+							"stroke": '#' + curConfig.initStroke.color,
+							"stroke-width": (!start_elem.stroke_width || start_elem.stroke_width == 0) ? curConfig.initStroke.width : start_elem.stroke_width,
+							"fill": "none",
+							"opacity": curConfig.initStroke.opacity,
+							"style": "pointer-events:none"
+						}
+					});
+					elData(cur_line, 'start_bb', bb);
+				}
+				return {
+					started: true
+				};
+			} else if(mode == "select") {
+				findConnectors();
+			}
+		},
+		mouseMove: function(opts) {
+			var zoom = svgCanvas.getZoom();
+			var e = opts.event;
+			var x = opts.mouse_x/zoom;
+			var y = opts.mouse_y/zoom;
+			
+			var	diff_x = x - start_x,
+				diff_y = y - start_y;
+								
+			var mode = svgCanvas.getMode();
+			
+			if(mode == "connector" && started) {
+				
+				var sw = cur_line.getAttribute('stroke-width') * 3;
+				// Set start point (adjusts based on bb)
+				var pt = getBBintersect(x, y, elData(cur_line, 'start_bb'), getOffset('start', cur_line));
+				start_x = pt.x;
+				start_y = pt.y;
+				
+				setPoint(cur_line, 0, pt.x, pt.y, true);
+				
+				// Set end point
+				setPoint(cur_line, 'end', x, y, true);
+			} else if(mode == "select") {
+				var slen = selElems.length;
+				
+				while(slen--) {
+					var elem = selElems[slen];
+					// Look for selected connector elements
+					if(elem && elData(elem, 'c_start')) {
+						// Remove the "translate" transform given to move
+						svgCanvas.removeFromSelection([elem]);
+						svgCanvas.getTransformList(elem).clear();
+
+					}
+				}
+				if(connections.length) {
+					updateLine(diff_x, diff_y);
+
+					
+				}
+			} 
+		},
+		mouseUp: function(opts) {
+			var zoom = svgCanvas.getZoom();
+			var e = opts.event,
+				x = opts.mouse_x/zoom,
+				y = opts.mouse_y/zoom,
+				mouse_target = e.target;
+			
+			if(svgCanvas.getMode() == "connector") {
+				var fo = $(mouse_target).closest("foreignObject");
+				if(fo.length) mouse_target = fo[0];
+				
+				var parents = $(mouse_target).parents();
+
+				if(mouse_target == start_elem) {
+					// Start line through click
+					started = true;
+					return {
+						keep: true,
+						element: null,
+						started: started
+					}						
+				} else if($.inArray(svgcontent, parents) === -1) {
+					// Not a valid target element, so remove line
+					$(cur_line).remove();
+					started = false;
+					return {
+						keep: false,
+						element: null,
+						started: started
+					}
+				} else {
+					// Valid end element
+					end_elem = mouse_target;
+					
+					var start_id = start_elem.id, end_id = end_elem.id;
+					var conn_str = start_id + " " + end_id;
+					var alt_str = end_id + " " + start_id;
+					// Don't create connector if one already exists
+					var dupe = $(svgcontent).find(conn_sel).filter(function() {
+						var conn = this.getAttributeNS(se_ns, "connector");
+						if(conn == conn_str || conn == alt_str) return true;
+					});
+					if(dupe.length) {
+						$(cur_line).remove();
+						return {
+							keep: false,
+							element: null,
+							started: false
+						}
+					}
+					
+					var bb = svgCanvas.getStrokedBBox([end_elem]);
+					
+					var pt = getBBintersect(start_x, start_y, bb, getOffset('start', cur_line));
+					setPoint(cur_line, 'end', pt.x, pt.y, true);
+					$(cur_line)
+						.data("c_start", start_id)
+						.data("c_end", end_id)
+						.data("end_bb", bb);
+					se_ns = svgCanvas.getEditorNS(true);
+					cur_line.setAttributeNS(se_ns, "se:connector", conn_str);
+					cur_line.setAttribute('class', conn_sel.substr(1));
+					cur_line.setAttribute('opacity', 1);
+					svgCanvas.addToSelection([cur_line]);
+					svgCanvas.moveToBottomSelectedElement();
+					selManager.requestSelector(cur_line).showGrips(false);
+					started = false;
+					return {
+						keep: true,
+						element: cur_line,
+						started: started
+					}
+				}
+			}
+		},
+		selectedChanged: function(opts) {
+			// TODO: Find better way to skip operations if no connectors are in use
+			if(!$(svgcontent).find(conn_sel).length) return;
+			
+			if(svgCanvas.getMode() == 'connector') {
+				svgCanvas.setMode('select');
+			}
+			
+			// Use this to update the current selected elements
+			selElems = opts.elems;
+			
+			var i = selElems.length;
+			
+			while(i--) {
+				var elem = selElems[i];
+				if(elem && elData(elem, 'c_start')) {
+					selManager.requestSelector(elem).showGrips(false);
+					if(opts.selectedElement && !opts.multiselected) {
+						// TODO: Set up context tools and hide most regular line tools
+						showPanel(true);
+					} else {
+						showPanel(false);
+					}
+				} else {
+					showPanel(false);
+				}
+			}
+			updateConnectors();
+		},
+		elementChanged: function(opts) {
+			var elem = opts.elems[0];
+			if (elem && elem.tagName == 'svg' && elem.id == "svgcontent") {
+				// Update svgcontent (can change on import)
+				svgcontent = elem;
+				init();
+			}
+			
+			// Has marker, so change offset
+			if(elem && (
+				elem.getAttribute("marker-start") ||
+				elem.getAttribute("marker-mid") ||
+				elem.getAttribute("marker-end")
+			)) {
+				var start = elem.getAttribute("marker-start");
+				var mid = elem.getAttribute("marker-mid");
+				var end = elem.getAttribute("marker-end");
+				cur_line = elem;
+				$(elem)
+					.data("start_off", !!start)
+					.data("end_off", !!end);
+				
+				if(elem.tagName == "line" && mid) {
+					// Convert to polyline to accept mid-arrow
+					
+					var x1 = elem.getAttribute('x1')-0;
+					var x2 = elem.getAttribute('x2')-0;
+					var y1 = elem.getAttribute('y1')-0;
+					var y2 = elem.getAttribute('y2')-0;
+					var id = elem.id;
+					
+					var mid_pt = (' '+((x1+x2)/2)+','+((y1+y2)/2) + ' ');
+					var pline = addElem({
+						"element": "polyline",
+						"attr": {
+							"points": (x1+','+y1+ mid_pt +x2+','+y2),
+							"stroke": elem.getAttribute('stroke'),
+							"stroke-width": elem.getAttribute('stroke-width'),
+							"marker-mid": mid,
+							"fill": "none",
+							"opacity": elem.getAttribute('opacity') || 1
+						}
+					});
+					$(elem).after(pline).remove();
+					svgCanvas.clearSelection();
+					pline.id = id;
+					svgCanvas.addToSelection([pline]);
+					elem = pline;
+				}
+			}
+			// Update line if it's a connector
+			if(elem.getAttribute('class') == conn_sel.substr(1)) {
+				var start = getElem(elData(elem, 'c_start'));
+				updateConnectors([start]);
+			} else {
+				updateConnectors();
+			}
+		},
+		toolButtonStateUpdate: function(opts) {
+			if(opts.nostroke) {
+				if ($('#mode_connect').hasClass('tool_button_current')) {
+					clickSelect();
+				}
+			}
+			$('#mode_connect')
+				.toggleClass('disabled',opts.nostroke);
+		}
+	};
+});
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-eyedropper.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-eyedropper.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-eyedropper.js	(revision 29468)
@@ -0,0 +1,135 @@
+/*
+ * ext-eyedropper.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Jeff Schiller
+ *
+ */
+
+// Dependencies:
+// 1) jQuery
+// 2) history.js
+// 3) svg_editor.js
+// 4) svgcanvas.js
+
+methodDraw.addExtension("eyedropper", function(S) {
+		var svgcontent = S.svgcontent,
+			svgns = "http://www.w3.org/2000/svg",
+			svgdoc = S.svgroot.parentNode.ownerDocument,
+			svgCanvas = methodDraw.canvas,
+			ChangeElementCommand = svgedit.history.ChangeElementCommand,
+			addToHistory = function(cmd) { svgCanvas.undoMgr.addCommandToHistory(cmd); },
+			currentStyle = {fillPaint: "red", fillOpacity: 1.0,
+							strokePaint: "black", strokeOpacity: 1.0, 
+							strokeWidth: 5, strokeDashArray: null,
+							opacity: 1.0,
+							strokeLinecap: 'butt',
+							strokeLinejoin: 'miter'
+							};
+		function getStyle(opts) {
+			// if we are in eyedropper mode, we don't want to disable the eye-dropper tool
+			var mode = svgCanvas.getMode();
+			if (mode == "eyedropper") return;
+			var tool = $('#tool_eyedropper');
+
+		}
+		
+		var getPaint = function(color, opac, type) {
+			// update the editor's fill paint
+			var opts = null;
+			if (color.indexOf("url(#") === 0) {
+				var refElem = svgCanvas.getRefElem(color);
+				if(refElem) {
+					refElem = refElem.cloneNode(true);
+				} else {
+					refElem =  $("#" + type + "_color defs *")[0];
+				}
+
+				opts = { alpha: opac };
+				opts[refElem.tagName] = refElem;
+			} 
+			else if (color.indexOf("#") === 0) {
+				opts = {
+					alpha: opac,
+					solidColor: color.substr(1)
+				};
+			}
+			else {
+				opts = {
+					alpha: opac,
+					solidColor: 'none'
+				};
+			}
+			return new $.jGraduate.Paint(opts);
+		};
+		
+		return {
+			name: "eyedropper",
+			svgicons: "extensions/eyedropper-icon.xml",
+			buttons: [{
+				id: "tool_eyedropper",
+				type: "mode",
+				title: "Eye Dropper Tool",
+				position: 8,
+				key: "I",
+				icon: "extensions/eyedropper.png",
+				events: {
+					"click": function() {
+						svgCanvas.setMode("eyedropper");
+					}
+				}
+			}],
+			
+			mouseDown: function(opts) {
+				var mode = svgCanvas.getMode();
+				var e = opts.event;
+				var target = (e.target.id === "svgroot") ? document.getElementById('canvas_background') : e.target;
+				if (mode == "eyedropper" && target) {
+					currentStyle.fillPaint = target.getAttribute("fill") || "white";
+  				currentStyle.fillOpacity = target.getAttribute("fill-opacity") || 1.0;
+  				currentStyle.strokePaint = target.getAttribute("stroke") || 'none';
+  				currentStyle.strokeOpacity = target.getAttribute("stroke-opacity") || 1.0;
+  				currentStyle.strokeWidth = target.getAttribute("stroke-width");
+  				currentStyle.strokeDashArray = target.getAttribute("stroke-dasharray");
+  				currentStyle.strokeLinecap = target.getAttribute("stroke-linecap");
+  				currentStyle.strokeLinejoin = target.getAttribute("stroke-linejoin");
+  				currentStyle.opacity = target.getAttribute("opacity") || 1.0;
+  				opts.selectedElements = opts.selectedElements.filter(Boolean)
+				  if (!opts.selectedElements.length) { //nothing selected, just update colors
+  			    var fill = getPaint(currentStyle.fillPaint, currentStyle.fillOpacity*100, "fill");
+  					var stroke = getPaint(currentStyle.strokePaint, currentStyle.strokeOpacity*100, "stroke");
+  					methodDraw.paintBox.fill.setPaint(fill)
+  					methodDraw.paintBox.stroke.setPaint(stroke)
+  			    return;
+  			  }
+					if ($.inArray(opts.selectedElements.nodeName, ['g', 'use']) == -1) {
+						var changes = {};
+						var change = function(elem, attrname, newvalue) {
+							changes[attrname] = elem.getAttribute(attrname);
+							elem.setAttribute(attrname, newvalue);
+						};
+						var batchCmd = new S.BatchCommand();
+						opts.selectedElements.forEach(function(element){
+						  if (currentStyle.fillPaint) 		  change(element, "fill", currentStyle.fillPaint);
+  						if (currentStyle.fillOpacity) 		change(element, "fill-opacity", currentStyle.fillOpacity);
+  						if (currentStyle.strokePaint) 		change(element, "stroke", currentStyle.strokePaint);
+  						if (currentStyle.strokeOpacity) 	change(element, "stroke-opacity", currentStyle.strokeOpacity);
+  						if (currentStyle.strokeWidth) 		change(element, "stroke-width", currentStyle.strokeWidth);
+  						if (currentStyle.strokeDashArray) change(element, "stroke-dasharray", currentStyle.strokeDashArray);
+  						if (currentStyle.opacity) 			  change(element, "opacity", currentStyle.opacity);
+  						if (currentStyle.strokeLinecap) 	change(element, "stroke-linecap", currentStyle.strokeLinecap);
+  						if (currentStyle.strokeLinejoin) 	change(element, "stroke-linejoin", currentStyle.strokeLinejoin);
+  						batchCmd.addSubCommand(new ChangeElementCommand(element, changes));
+  						changes = {};
+						});
+						var fill = getPaint(currentStyle.fillPaint, currentStyle.fillOpacity*100, "fill")
+						var stroke = getPaint(currentStyle.strokePaint, currentStyle.strokeOpacity*100, "stroke")
+						methodDraw.paintBox.fill.update(true)
+						methodDraw.paintBox.stroke.update(true)
+						addToHistory(batchCmd);
+					}
+				}
+			}
+		};
+});
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-foreignobject.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-foreignobject.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-foreignobject.js	(revision 29468)
@@ -0,0 +1,277 @@
+/*
+ * ext-foreignobject.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Jacques Distler 
+ * Copyright(c) 2010 Alexis Deveria 
+ *
+ */
+
+methodDraw.addExtension("foreignObject", function(S) {
+		var svgcontent = S.svgcontent,
+			addElem = S.addSvgElementFromJson,
+			selElems,
+			svgns = "http://www.w3.org/2000/svg",
+			xlinkns = "http://www.w3.org/1999/xlink",
+			xmlns = "http://www.w3.org/XML/1998/namespace",
+			xmlnsns = "http://www.w3.org/2000/xmlns/",
+			se_ns = "http://svg-edit.googlecode.com",
+			htmlns = "http://www.w3.org/1999/xhtml",
+			mathns = "http://www.w3.org/1998/Math/MathML",
+			editingforeign = false,
+			svgdoc = S.svgroot.parentNode.ownerDocument,
+			started,
+			newFO;
+			
+			
+		var properlySourceSizeTextArea = function(){
+			// TODO: remove magic numbers here and get values from CSS
+			var height = $('#svg_source_container').height() - 80;
+			$('#svg_source_textarea').css('height', height);
+		};
+
+		function showPanel(on) {
+			var fc_rules = $('#fc_rules');
+			if(!fc_rules.length) {
+				fc_rules = $('<style id="fc_rules"><\/style>').appendTo('head');
+			} 
+			fc_rules.text(!on?"":" #tool_topath { display: none !important; }");
+			$('#foreignObject_panel').toggle(on);
+		}
+
+		function toggleSourceButtons(on) {
+			$('#tool_source_save, #tool_source_cancel').toggle(!on);
+			$('#foreign_save, #foreign_cancel').toggle(on);
+		}
+		
+			
+		// Function: setForeignString(xmlString, elt)
+		// This function sets the content of element elt to the input XML.
+		//
+		// Parameters:
+		// xmlString - The XML text.
+		// elt - the parent element to append to
+		//
+		// Returns:
+		// This function returns false if the set was unsuccessful, true otherwise.
+		function setForeignString(xmlString) {
+			var elt = selElems[0];
+			try {
+				// convert string into XML document
+				var newDoc = Utils.text2xml('<svg xmlns="'+svgns+'" xmlns:xlink="'+xlinkns+'">'+xmlString+'</svg>');
+				// run it through our sanitizer to remove anything we do not support
+				S.sanitizeSvg(newDoc.documentElement);
+				elt.parentNode.replaceChild(svgdoc.importNode(newDoc.documentElement.firstChild, true), elt);
+				S.call("changed", [elt]);
+				svgCanvas.clearSelection();
+			} catch(e) {
+				console.log(e);
+				return false;
+			}
+	
+			return true;
+		};
+
+		function showForeignEditor() {
+			var elt = selElems[0];
+			if (!elt || editingforeign) return;
+			editingforeign = true;
+			toggleSourceButtons(true);
+			elt.removeAttribute('fill');
+
+			var str = S.svgToString(elt, 0);
+			$('#svg_source_textarea').val(str);
+			$('#svg_source_editor').fadeIn();
+			properlySourceSizeTextArea();
+			$('#svg_source_textarea').focus();
+		}
+		
+		function setAttr(attr, val) {
+			svgCanvas.changeSelectedAttribute(attr, val);
+			S.call("changed", selElems);
+		}
+		
+		
+		return {
+			name: "foreignObject",
+			svgicons: "extensions/foreignobject-icons.xml",
+			buttons: [{
+				id: "tool_foreign",
+				type: "mode",
+				title: "Foreign Object Tool",
+				events: {
+					'click': function() {
+						svgCanvas.setMode('foreign')
+					}
+				}
+			},{
+				id: "edit_foreign",
+				type: "context",
+				panel: "foreignObject_panel",
+				title: "Edit ForeignObject Content",
+				events: {
+					'click': function() {
+						showForeignEditor();
+					}
+				}
+			}],
+			
+			context_tools: [{
+				type: "input",
+				panel: "foreignObject_panel",
+				title: "Change foreignObject's width",
+				id: "foreign_width",
+				label: "w",
+				size: 3,
+				events: {
+					change: function() {
+						setAttr('width', this.value);
+					}
+				}
+			},{
+				type: "input",
+				panel: "foreignObject_panel",
+				title: "Change foreignObject's height",
+				id: "foreign_height",
+				label: "h",
+				events: {
+					change: function() {
+						setAttr('height', this.value);
+					}
+				}
+			}, {
+				type: "input",
+				panel: "foreignObject_panel",
+				title: "Change foreignObject's font size",
+				id: "foreign_font_size",
+				label: "font-size",
+				size: 2,
+				defval: 16,
+				events: {
+					change: function() {
+						setAttr('font-size', this.value);
+					}
+				}
+			}
+			
+			
+			],
+			callback: function() {
+				$('#foreignObject_panel').hide();
+
+				var endChanges = function() {
+					$('#svg_source_editor').hide();
+					editingforeign = false;
+					$('#svg_source_textarea').blur();
+					toggleSourceButtons(false);
+				}
+
+				// TODO: Needs to be done after orig icon loads
+				setTimeout(function() {				
+					// Create source save/cancel buttons
+					var save = $('#tool_source_save').clone()
+						.hide().attr('id', 'foreign_save').unbind()
+						.appendTo("#tool_source_back").click(function() {
+							
+							if (!editingforeign) return;
+
+							if (!setForeignString($('#svg_source_textarea').val())) {
+								$.confirm("Errors found. Revert to original?", function(ok) {
+									if(!ok) return false;
+									endChanges();
+								});
+							} else {
+								endChanges();
+							}
+							// setSelectMode();	
+						});
+						
+					var cancel = $('#tool_source_cancel').clone()
+						.hide().attr('id', 'foreign_cancel').unbind()
+						.appendTo("#tool_source_back").click(function() {
+							endChanges();
+						});
+					
+				}, 3000);
+			},
+			mouseDown: function(opts) {
+				var e = opts.event;
+				
+				if(svgCanvas.getMode() == "foreign") {
+
+					started = true;
+					newFO = S.addSvgElementFromJson({
+						"element": "foreignObject",
+						"attr": {
+							"x": opts.start_x,
+							"y": opts.start_y,
+							"id": S.getNextId(),
+							"font-size": 16, //cur_text.font_size,
+							"width": "48",
+							"height": "20",
+							"style": "pointer-events:inherit"
+						}
+					});
+					var m = svgdoc.createElementNS(mathns, 'math');
+					m.setAttributeNS(xmlnsns, 'xmlns', mathns);
+					m.setAttribute('display', 'inline');
+					var mi = svgdoc.createElementNS(mathns, 'mi');
+					mi.setAttribute('mathvariant', 'normal');
+					mi.textContent = "\u03A6";
+					var mo = svgdoc.createElementNS(mathns, 'mo');
+					mo.textContent = "\u222A";
+					var mi2 = svgdoc.createElementNS(mathns, 'mi');
+					mi2.textContent = "\u2133";
+					m.appendChild(mi);
+					m.appendChild(mo);
+					m.appendChild(mi2);
+					newFO.appendChild(m);
+					return {
+						started: true
+					}
+				}
+			},
+			mouseUp: function(opts) {
+				var e = opts.event;
+				if(svgCanvas.getMode() == "foreign" && started) {
+					var attrs = $(newFO).attr(["width", "height"]);
+					keep = (attrs.width != 0 || attrs.height != 0);
+					svgCanvas.addToSelection([newFO], true);
+
+					return {
+						keep: keep,
+						element: newFO
+					}
+
+				}
+				
+			},
+			selectedChanged: function(opts) {
+				// Use this to update the current selected elements
+				selElems = opts.elems;
+				
+				var i = selElems.length;
+				
+				while(i--) {
+					var elem = selElems[i];
+					if(elem && elem.tagName == "foreignObject") {
+						if(opts.selectedElement && !opts.multiselected) {
+							$('#foreign_font_size').val(elem.getAttribute("font-size"));
+							$('#foreign_width').val(elem.getAttribute("width"));
+							$('#foreign_height').val(elem.getAttribute("height"));
+						
+							showPanel(true);
+						} else {
+							showPanel(false);
+						}
+					} else {
+						showPanel(false);
+					}
+				}
+			},
+			elementChanged: function(opts) {
+				var elem = opts.elems[0];
+			}
+		};
+});
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-grid.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-grid.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-grid.js	(revision 29468)
@@ -0,0 +1,186 @@
+/*
+ * ext-grid.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Redou Mine
+ * Copyright(c) 2010 Alexis Deveria
+ *
+ */
+
+// Dependencies:
+// 1) units.js
+// 2) everything else
+
+methodDraw.addExtension("view_grid", function(s) {
+    if (!document.getElementById("canvasGrid")){
+    var svgdoc = document.getElementById("svgcanvas").ownerDocument,
+			svgns = "http://www.w3.org/2000/svg",
+			dims = methodDraw.curConfig.dimensions,
+			svgroot = s.svgroot;
+    var svgCanvas = methodDraw.canvas;
+	var showGrid = false;
+    var assignAttributes = s.assignAttributes;
+    
+    var hcanvas = document.createElement('canvas');
+    $(hcanvas).hide().appendTo('body');
+
+    var canvasgrid = svgdoc.createElementNS(svgns, "g");
+    assignAttributes(canvasgrid, {
+        'id': 'canvasGrid',
+        'width': '100%',
+        'height': '100%',
+        'x': 0,
+        'y': 0,
+        'overflow': 'visible',
+        'display': 'none'
+    });
+    
+    var canvBG = $('#canvas_background');
+    canvBG.after(canvasgrid);
+    
+    
+
+        // grid-pattern
+        var gridPattern = svgdoc.createElementNS(svgns, "pattern");
+        assignAttributes(gridPattern, {
+            'id': 'gridpattern',
+            'patternUnits': 'userSpaceOnUse',
+            'x': 0, //-(value.strokeWidth / 2), // position for strokewidth
+            'y': 0, //-(value.strokeWidth / 2), // position for strokewidth
+            'width': 100,
+            'height': 100
+        });
+        
+        var gridimg = svgdoc.createElementNS(svgns, "image");
+        assignAttributes(gridimg, {
+            'x': 0,
+            'y': 0,
+            'width': 100,
+            'height': 100
+        });
+        
+        gridPattern.appendChild(gridimg);
+        $('#svgroot defs').append(gridPattern);
+
+        // grid-box
+        var gridBox = svgdoc.createElementNS(svgns, "rect");
+        assignAttributes(gridBox, {
+            'width': '100%',
+            'height': '100%',
+            'x': 0,
+            'y': 0,
+            'stroke-width': 0,
+            'stroke': 'none',
+            'fill': 'url(#gridpattern)',
+            'style': 'pointer-events: none; display:visible;'
+        });
+        $('#canvasGrid').append(gridBox);
+        }
+//     });
+
+	function updateGrid(zoom) {
+		// TODO: Try this with <line> elements, then compare performance difference
+	
+		var bgwidth = +canvBG.attr('width');
+		var bgheight = +canvBG.attr('height');
+		
+		var units = svgedit.units.getTypeMap();
+		var unit = units[methodDraw.curConfig.baseUnit]; // 1 = 1px
+		var r_intervals = [.01, .1, 1, 10, 100, 1000];
+	
+		var d = 0;
+		var is_x = (d === 0);
+		var dim = is_x ? 'x' : 'y';
+		var lentype = is_x?'width':'height';
+		var c_elem = svgCanvas.getContentElem();
+		var content_d = c_elem.getAttribute(dim)-0;
+		
+		var hcanv = hcanvas;
+		
+		var u_multi = unit * zoom;
+		
+		// Calculate the main number interval
+		var raw_m = 100 / u_multi;
+		var multi = 1;
+		for(var i = 0; i < r_intervals.length; i++) {
+			var num = r_intervals[i];
+			multi = num;
+			if(raw_m <= num) {
+				break;
+			}
+		}
+		
+		var big_int = multi * u_multi;
+
+		// Set the canvas size to the width of the container
+		hcanv.width = big_int;
+		hcanv.height = big_int;
+		var ctx = hcanv.getContext("2d");
+
+		var ruler_d = 0; 
+		var cur_d = .5;
+		
+		var part = big_int / 10;
+
+		ctx.globalAlpha = 0.2;
+		ctx.strokeStyle = "#000";
+		for(var i = 1; i < 10; i++) {
+			var sub_d = Math.round(part * i) + .5;
+// 					var line_num = (i % 2)?12:10;
+			var line_num = 0;
+			ctx.moveTo(sub_d, big_int);
+			ctx.lineTo(sub_d, line_num);
+			ctx.moveTo(big_int, sub_d);
+			ctx.lineTo(line_num ,sub_d);
+		}
+		ctx.stroke();
+		ctx.beginPath();  
+		ctx.globalAlpha = 0.5;
+		ctx.moveTo(cur_d, big_int);
+		ctx.lineTo(cur_d, 0);
+
+		ctx.moveTo(big_int, cur_d);
+		ctx.lineTo(0, cur_d);
+		ctx.stroke();
+
+		var datauri = hcanv.toDataURL('image/png');
+		gridimg.setAttribute('width', big_int);
+		gridimg.setAttribute('height', big_int);
+		gridimg.parentNode.setAttribute('width', big_int);
+		gridimg.parentNode.setAttribute('height', big_int);
+		svgCanvas.setHref(gridimg, datauri);
+	}
+
+    return {
+        name: "view_grid",
+        zoomChanged: function(zoom) {
+            // update size
+            if(showGrid) updateGrid(zoom);
+        },
+
+        buttons: [{
+            id: "view_grid",
+            type: "menu",
+            after: "tool_wireframe",
+            panel: "view_menu",
+            title: "View Grid",
+            events: {
+                'click': function() {
+                    var gr = !$('#view_grid').hasClass('push_button_pressed');
+                    if (gr) {
+                        methodDraw.curConfig.showGrid = showGrid = true;
+                        $('#view_grid').addClass('push_button_pressed');
+                        $('#canvasGrid').attr('display', 'inline');
+                        updateGrid(svgCanvas.getZoom());
+                    }
+                    else {
+                        methodDraw.curConfig.showGrid = showGrid = false;
+                        $('#view_grid').removeClass('push_button_pressed');
+                        $('#canvasGrid').attr('display', 'none');
+                    }
+                }
+            }
+}]
+        };
+    });
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-helloworld.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-helloworld.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-helloworld.js	(revision 29468)
@@ -0,0 +1,78 @@
+/*
+ * ext-helloworld.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ *
+ */
+ 
+/* 
+	This is a very basic SVG-Edit extension. It adds a "Hello World" button in
+	the left panel. Clicking on the button, and then the canvas will show the
+ 	user the point on the canvas that was clicked on.
+*/
+ 
+methodDraw.addExtension("Hello World", function() {
+
+		return {
+			name: "Hello World",
+			// For more notes on how to make an icon file, see the source of
+			// the hellorworld-icon.xml
+			svgicons: "extensions/helloworld-icon.xml",
+			
+			// Multiple buttons can be added in this array
+			buttons: [{
+				// Must match the icon ID in helloworld-icon.xml
+				id: "hello_world", 
+				
+				// This indicates that the button will be added to the "mode"
+				// button panel on the left side
+				type: "mode", 
+				
+				// Tooltip text
+				title: "Say 'Hello World'", 
+				
+				// Events
+				events: {
+					'click': function() {
+						// The action taken when the button is clicked on.
+						// For "mode" buttons, any other button will 
+						// automatically be de-pressed.
+						svgCanvas.setMode("hello_world");
+					}
+				}
+			}],
+			// This is triggered when the main mouse button is pressed down 
+			// on the editor canvas (not the tool panels)
+			mouseDown: function() {
+				// Check the mode on mousedown
+				if(svgCanvas.getMode() == "hello_world") {
+				
+					// The returned object must include "started" with 
+					// a value of true in order for mouseUp to be triggered
+					return {started: true};
+				}
+			},
+			
+			// This is triggered from anywhere, but "started" must have been set
+			// to true (see above). Note that "opts" is an object with event info
+			mouseUp: function(opts) {
+				// Check the mode on mouseup
+				if(svgCanvas.getMode() == "hello_world") {
+					var zoom = svgCanvas.getZoom();
+					
+					// Get the actual coordinate by dividing by the zoom value
+					var x = opts.mouse_x / zoom;
+					var y = opts.mouse_y / zoom;
+					
+					var text = "Hello World!\n\nYou clicked here: " 
+						+ x + ", " + y;
+						
+					// Show the text using the custom alert function
+					$.alert(text);
+				}
+			}
+		};
+});
+
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-imagelib.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-imagelib.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-imagelib.js	(revision 29468)
@@ -0,0 +1,444 @@
+/*
+ * ext-imagelib.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ *
+ */
+
+methodDraw.addExtension("imagelib", function() {
+
+	var uiStrings = methodDraw.uiStrings;
+	
+	$.extend(uiStrings, {
+		imagelib: {
+			select_lib: 'Select an image library',
+			show_list: 'Show library list',
+			import_single: 'Import single',
+			import_multi: 'Import multiple',
+			open: 'Open as new document'
+		}
+	});
+
+	var img_libs = [{
+			name: 'Demo library (local)',
+			url: 'extensions/imagelib/index.html',
+			description: 'Demonstration library for SVG-edit on this server'
+		}, 
+		{
+			name: 'IAN Symbol Libraries',
+			url: 'http://ian.umces.edu/symbols/catalog/svgedit/album_chooser.php',
+			description: 'Free library of illustrations'
+		}
+	];
+	
+	var xlinkns = "http://www.w3.org/1999/xlink";
+
+	function closeBrowser() {
+		$('#imgbrowse_holder').hide();
+	}
+	
+	function importImage(url) {
+		var newImage = svgCanvas.addSvgElementFromJson({
+			"element": "image",
+			"attr": {
+				"x": 0,
+				"y": 0,
+				"width": 0,
+				"height": 0,
+				"id": svgCanvas.getNextId(),
+				"style": "pointer-events:inherit"
+			}
+		});
+		svgCanvas.clearSelection();
+		svgCanvas.addToSelection([newImage]);
+		svgCanvas.setImageURL(url);
+	}
+
+	var mode = 's';
+	var multi_arr = [];
+	var cur_meta;
+	var tranfer_stopped = false;
+	var pending = {};
+	
+	 window.addEventListener("message", function(evt) {
+		// Receive postMessage data
+		var response = evt.data;
+		
+		if(!response) {
+			// Do nothing
+			return;
+		}
+		
+		var char1 = response.charAt(0);
+		
+		var svg_str;
+		var img_str;
+		
+		if(char1 != "{" && tranfer_stopped) {
+			tranfer_stopped = false;
+			return;
+		}
+		
+		if(char1 == '|') {
+			var secondpos = response.indexOf('|', 1);
+			var id = response.substr(1, secondpos-1);
+			response = response.substr(secondpos+1);
+			char1 = response.charAt(0);
+
+		}
+		
+		
+		// Hide possible transfer dialog box
+		$('#dialog_box').hide();
+		
+		switch (char1) {
+			case '{':
+				// Metadata
+				tranfer_stopped = false;
+				var cur_meta = JSON.parse(response);
+				
+				pending[cur_meta.id] = cur_meta;
+				
+				var name = (cur_meta.name || 'file');
+				
+				var message = uiStrings.notification.retrieving.replace('%s', name);
+				
+				if(mode != 'm') {
+					$.process_cancel(message, function() {
+						tranfer_stopped = true;
+						// Should a message be sent back to the frame?
+						
+						$('#dialog_box').hide();
+					});
+				} else {
+					var entry = $('<div>' + message + '</div>').data('id', cur_meta.id);
+					preview.append(entry);
+					cur_meta.entry = entry;
+				}
+				
+				return;
+			case '<':
+				svg_str = true;
+				break;
+			case 'd':
+				if(response.indexOf('data:image/svg+xml') === 0) {
+					var pre = 'data:image/svg+xml;base64,';
+					var src = response.substring(pre.length);
+					response = svgCanvas.Utils.decode64(src);
+					svg_str = true;
+					break;
+				} else if(response.indexOf('data:image/') === 0) {
+					img_str = true;
+					break;
+				}
+				// Else fall through
+			default:
+				// TODO: See if there's a way to base64 encode the binary data stream
+// 				var str = 'data:;base64,' + svgCanvas.Utils.encode64(response, true);
+			
+				// Assume it's raw image data
+// 				importImage(str);
+			
+				// Don't give warning as postMessage may have been used by something else
+				if(mode !== 'm') {
+					closeBrowser();
+				} else {
+					pending[id].entry.remove();
+				}
+// 				$.alert('Unexpected data was returned: ' + response, function() {
+// 					if(mode !== 'm') {
+// 						closeBrowser();
+// 					} else {
+// 						pending[id].entry.remove();
+// 					}
+// 				});
+				return;
+		}
+		
+		switch (mode) {
+			case 's':
+				// Import one
+				if(svg_str) {
+					svgCanvas.importSvgString(response);
+				} else if(img_str) {
+					importImage(response);
+				}
+				closeBrowser();
+				break;
+			case 'm':
+				// Import multiple
+				multi_arr.push([(svg_str ? 'svg' : 'img'), response]);
+				var cur_meta = pending[id];
+				if(svg_str) {
+					if(cur_meta && cur_meta.name) {
+						var title = cur_meta.name;
+					}  else {
+						// Try to find a title
+						var xml = new DOMParser().parseFromString(response, 'text/xml').documentElement;
+						var title = $(xml).children('title').first().text() || '(SVG #' + response.length + ')';
+					}
+					if(cur_meta) {
+						preview.children().each(function() {
+							if($(this).data('id') == id) {
+								if(cur_meta.preview_url) {
+									$(this).html('<img src="' + cur_meta.preview_url + '">' + title);
+								} else {
+									$(this).text(title);
+								}
+								submit.removeAttr('disabled');
+							}
+						});
+					} else {
+						preview.append('<div>'+title+'</div>');
+						submit.removeAttr('disabled');
+					}
+				} else {
+					if(cur_meta && cur_meta.preview_url) {
+						var title = cur_meta.name || '';
+					}
+					if(cur_meta && cur_meta.preview_url) {
+						var entry = '<img src="' + cur_meta.preview_url + '">' + title;
+					} else {
+						var entry = '<img src="' + response + '">';
+					}
+				
+					if(cur_meta) {
+						preview.children().each(function() {
+							if($(this).data('id') == id) {
+								$(this).html(entry);
+								submit.removeAttr('disabled');
+							}
+						});
+					} else {
+						preview.append($('<div>').append(entry));
+						submit.removeAttr('disabled');
+					}
+
+				}
+				break;
+			case 'o':
+				// Open
+				if(!svg_str) break;
+				methodDraw.openPrep(function(ok) {
+					if(!ok) return;
+					svgCanvas.clear();
+					svgCanvas.setSvgString(response);
+					// updateCanvas();
+				});
+				closeBrowser();
+				break;
+		}
+	}, true);
+	
+	var preview, submit;
+
+	function toggleMulti(show) {
+	
+		$('#lib_framewrap, #imglib_opts').css({right: (show ? 200 : 10)});
+		if(!preview) {
+			preview = $('<div id=imglib_preview>').css({
+				position: 'absolute',
+				top: 45,
+				right: 10,
+				width: 180,
+				bottom: 45,
+				background: '#fff',
+				overflow: 'auto'
+			}).insertAfter('#lib_framewrap');
+			
+			submit = $('<button disabled>Import selected</button>').appendTo('#imgbrowse').click(function() {
+				$.each(multi_arr, function(i) {
+					var type = this[0];
+					var data = this[1];
+					if(type == 'svg') {
+						svgCanvas.importSvgString(data);
+					} else {
+						importImage(data);
+					}
+					svgCanvas.moveSelectedElements(i*20, i*20, false);
+				});
+				preview.empty();
+				multi_arr = [];
+				$('#imgbrowse_holder').hide();
+			}).css({
+				position: 'absolute',
+				bottom: 10,
+				right: -10
+			});
+
+		}
+		
+		preview.toggle(show);
+		submit.toggle(show);
+	}
+
+	function showBrowser() {
+
+		var browser = $('#imgbrowse');
+		if(!browser.length) {
+			$('<div id=imgbrowse_holder><div id=imgbrowse class=toolbar_button>\
+			</div></div>').insertAfter('#svg_docprops');
+			browser = $('#imgbrowse');
+
+			var all_libs = uiStrings.imagelib.select_lib;
+
+			var lib_opts = $('<ul id=imglib_opts>').appendTo(browser);
+			var frame = $('<iframe/>').prependTo(browser).hide().wrap('<div id=lib_framewrap>');
+			
+			var header = $('<h1>').prependTo(browser).text(all_libs).css({
+				position: 'absolute',
+				top: 0,
+				left: 0,
+				width: '100%'
+			});
+			
+			var cancel = $('<button>' + uiStrings.common.cancel + '</button>').appendTo(browser).click(function() {
+				$('#imgbrowse_holder').hide();
+			}).css({
+				position: 'absolute',
+				top: 5,
+				right: -10
+			});
+			
+			var leftBlock = $('<span>').css({position:'absolute',top:5,left:10}).appendTo(browser);
+			
+			var back = $('<button hidden>' + uiStrings.imagelib.show_list + '</button>').appendTo(leftBlock).click(function() {
+				frame.attr('src', 'about:blank').hide();
+				lib_opts.show();
+				header.text(all_libs);
+				back.hide();
+			}).css({
+				'margin-right': 5
+			}).hide();
+			
+			var type = $('<select><option value=s>' + 
+			uiStrings.imagelib.import_single + '</option><option value=m>' +
+			uiStrings.imagelib.import_multi + '</option><option value=o>' +
+			uiStrings.imagelib.open + '</option></select>').appendTo(leftBlock).change(function() {
+				mode = $(this).val();
+				switch (mode) {
+					case 's':
+					case 'o':
+						toggleMulti(false);
+						break;
+					
+					case 'm':
+						// Import multiple
+						toggleMulti(true);
+				}
+			}).css({
+				'margin-top': 10
+			});
+			
+			cancel.prepend($.getSvgIcon('cancel', true));
+			back.prepend($.getSvgIcon('tool_imagelib', true));
+			
+			$.each(img_libs, function(i, opts) {
+				$('<li>').appendTo(lib_opts).text(opts.name).click(function() {
+					frame.attr('src', opts.url).show();
+					header.text(opts.name);
+					lib_opts.hide();
+					back.show();
+				}).append('<span>' + opts.description + '</span>');
+			});
+			
+		} else {
+			$('#imgbrowse_holder').show();
+		}
+	}
+	
+	return {
+		buttons: [{
+			id: "tool_imagelib",
+			type: "menu", // _flyout
+			position: 4,
+			panel: "file_menu",
+			title: "Image library",
+			events: {
+				"mouseup": showBrowser
+			}
+		}],
+		callback: function() {
+		
+			$('<style>').text('\
+				#imgbrowse_holder {\
+					position: absolute;\
+					top: 0;\
+					left: 0;\
+					width: 100%;\
+					height: 100%;\
+					background-color: rgba(0, 0, 0, .5);\
+					z-index: 5;\
+				}\
+				\
+				#imgbrowse {\
+					position: absolute;\
+					top: 25px;\
+					left: 25px;\
+					right: 25px;\
+					bottom: 25px;\
+					min-width: 300px;\
+					min-height: 200px;\
+					background: #B0B0B0;\
+					border: 1px outset #777;\
+				}\
+				#imgbrowse h1 {\
+					font-size: 20px;\
+					margin: .4em;\
+					text-align: center;\
+				}\
+				#lib_framewrap,\
+				#imgbrowse > ul {\
+					position: absolute;\
+					top: 45px;\
+					left: 10px;\
+					right: 10px;\
+					bottom: 10px;\
+					background: white;\
+					margin: 0;\
+					padding: 0;\
+				}\
+				#imgbrowse > ul {\
+					overflow: auto;\
+				}\
+				#imgbrowse > div {\
+					border: 1px solid #666;\
+				}\
+				#imglib_preview > div {\
+					padding: 5px;\
+					font-size: 12px;\
+				}\
+				#imglib_preview img {\
+					display: block;\
+					margin: 0 auto;\
+					max-height: 100px;\
+				}\
+				#imgbrowse li {\
+					list-style: none;\
+					padding: .5em;\
+					background: #E8E8E8;\
+					border-bottom: 1px solid #B0B0B0;\
+					line-height: 1.2em;\
+					font-style: sans-serif;\
+					}\
+				#imgbrowse li > span {\
+					color: #666;\
+					font-size: 15px;\
+					display: block;\
+					}\
+				#imgbrowse li:hover {\
+					background: #FFC;\
+					cursor: pointer;\
+					}\
+				#imgbrowse iframe {\
+					width: 100%;\
+					height: 100%;\
+					border: 0;\
+				}\
+			').appendTo('head');
+		}
+	}
+});
+
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-imagelib.xml
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-imagelib.xml	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-imagelib.xml	(revision 29468)
@@ -0,0 +1,14 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+	<g id="tool_imagelib">
+<svg width="201" height="211" xmlns="http://www.w3.org/2000/svg">
+ <g>
+  <path fill="#efe8b8" stroke="#d6c47c" stroke-linecap="round" d="m2.75,49.51761l56.56,-46.26761c12.73,8.25 25.71001,7 46.44,0.75l-56.03999,47.23944l-22.72002,25.01056l-24.23999,-26.73239z" id="svg_2" stroke-width="7"/>
+  <path fill="#a03333" stroke="#3f3f3f" d="m3.75,203.25002c14.33301,7 30.66699,7 46,0l0,-152.00002c-14.66699,8 -32.33301,8 -47,0l1,152.00002zm45.75,-152.25002l56.25,-46.75l0,151l-56,48.00002m-47.25,-154.25002l57.25,-46.5" id="svg_1" stroke-width="7" stroke-linecap="round"/>
+  <path fill="#efe8b8" stroke="#d6c47c" stroke-linecap="round" d="m49.75,49.51801l56.56,-46.26801c12.72998,8.25 25.71002,7 46.44,0.75l-56.03998,47.239l-22.72003,25.011l-24.23999,-26.73199z" stroke-width="7" id="svg_5"/>
+  <path fill="#2f8e2f" stroke="#3f3f3f" d="m50.75,202.25c14.33301,7 30.66699,7.04253 46,0.04253l0,-151.04253c-14.66699,8 -32.33301,8 -47,0l1,151zm45.75,-151.25l56.25,-46.75l0,144.01219l-56,51.98782m-47.25,-151.25002l57.25,-46.5" stroke-width="7" stroke-linecap="round" id="svg_6"/>
+  <path fill="#efe8b8" stroke="#d6c47c" stroke-linecap="round" d="m95.75,49.51801l56.56,-46.26801c12.72998,8.25 25.71002,7 46.44,0.75l-56.03998,47.239l-22.72003,25.011l-24.23999,-26.73199z" stroke-width="7" id="svg_10"/>
+  <path fill="#336393" stroke="#3f3f3f" d="m96.75,200.29445c14.33301,7 30.66699,7 46,0l0,-149.04445c-14.66699,8 -32.33301,8 -47,0l1,149.04445zm45.75,-149.29445l56.25,-46.75l0,148.04445l-56,48m-47.25,-151.29445l57.25,-46.5" stroke-width="7" stroke-linecap="round" id="svg_11"/>
+ </g>
+</svg>
+	</g>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-markers.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-markers.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-markers.js	(revision 29468)
@@ -0,0 +1,576 @@
+/*
+ * ext-markers.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Will Schleter 
+ *   based on ext-arrows.js by Copyright(c) 2010 Alexis Deveria
+ *
+ * This extension provides for the addition of markers to the either end
+ * or the middle of a line, polyline, path, polygon. 
+ * 
+ * Markers may be either a graphic or arbitary text
+ * 
+ * to simplify the coding and make the implementation as robust as possible,
+ * markers are not shared - every object has its own set of markers.
+ * this relationship is maintained by a naming convention between the
+ * ids of the markers and the ids of the object
+ * 
+ * The following restrictions exist for simplicty of use and programming
+ *    objects and their markers to have the same color
+ *    marker size is fixed
+ *    text marker font, size, and attributes are fixed
+ *    an application specific attribute - se_type - is added to each marker element
+ *        to store the type of marker
+ *        
+ * TODO:
+ *    remove some of the restrictions above
+ *    add option for keeping text aligned to horizontal
+ *    add support for dimension extension lines
+ *
+ */
+
+methodDraw.addExtension("Markers", function(S) {
+	var svgcontent = S.svgcontent,
+	addElem = S.addSvgElementFromJson,
+	selElems;
+
+	var mtypes = ['start','mid','end'];
+
+	var marker_prefix = 'se_marker_';
+	var id_prefix = 'mkr_';
+		
+	// note - to add additional marker types add them below with a unique id
+	// and add the associated icon(s) to marker-icons.svg
+	// the geometry is normallized to a 100x100 box with the origin at lower left
+	// Safari did not like negative values for low left of viewBox
+	// remember that the coordinate system has +y downward
+	var marker_types = {
+		nomarker: {},  
+		leftarrow:  
+			{element:'path', attr:{d:'M0,50 L100,90 L70,50 L100,10 Z'}},
+		rightarrow:
+			{element:'path', attr:{d:'M100,50 L0,90 L30,50 L0,10 Z'}},
+		textmarker:
+			{element:'text', attr: {x:0, y:0,'stroke-width':0,'stroke':'none','font-size':75,'font-family':'serif','text-anchor':'left',
+				'xml:space': 'preserve'}},
+		forwardslash:
+			{element:'path', attr:{d:'M30,100 L70,0'}},
+		reverseslash:
+			{element:'path', attr:{d:'M30,0 L70,100'}},
+		verticalslash:
+			{element:'path', attr:{d:'M50,0 L50,100'}},
+		box:
+			{element:'path', attr:{d:'M20,20 L20,80 L80,80 L80,20 Z'}},
+		star:
+			{element:'path', attr:{d:'M10,30 L90,30 L20,90 L50,10 L80,90 Z'}},
+		xmark:
+			{element:'path', attr:{d:'M20,80 L80,20 M80,80 L20,20'}},
+		triangle:
+			{element:'path', attr:{d:'M10,80 L50,20 L80,80 Z'}},
+		mcircle:
+			{element:'circle', attr:{r:30, cx:50, cy:50}}
+	}
+	
+	
+	var lang_list = {
+		"en":[
+			{id: "start_marker_list", title: "Select start marker type" },
+			{id: "mid_marker_list", title: "Select mid marker type" },
+			{id: "end_marker_list", title: "Select end marker type" },
+			{id: "nomarker", title: "No Marker" },
+			{id: "leftarrow", title: "Left Arrow" },
+			{id: "rightarrow", title: "Right Arrow" },
+			{id: "textmarker", title: "Text Marker" },
+			{id: "forwardslash", title: "Forward Slash" },
+			{id: "reverseslash", title: "Reverse Slash" },
+			{id: "verticalslash", title: "Vertical Slash" },
+			{id: "box", title: "Box" },
+			{id: "star", title: "Star" },
+			{id: "xmark", title: "X" },
+			{id: "triangle", title: "Triangle" },
+			{id: "mcircle", title: "Circle" },
+			{id: "leftarrow_o", title: "Open Left Arrow" },
+			{id: "rightarrow_o", title: "Open Right Arrow" },
+			{id: "box_o", title: "Open Box" },
+			{id: "star_o", title: "Open Star" },
+			{id: "triangle_o", title: "Open Triangle" },
+			{id: "mcircle_o", title: "Open Circle" }
+		]
+	};
+
+
+	// duplicate shapes to support unfilled (open) marker types with an _o suffix
+	$.each(['leftarrow','rightarrow','box','star','mcircle','triangle'],function(i,v) {
+		marker_types[v+'_o'] = marker_types[v];
+	});
+	
+	// elem = a graphic element will have an attribute like marker-start
+	// attr - marker-start, marker-mid, or marker-end
+	// returns the marker element that is linked to the graphic element
+	function getLinked(elem, attr) {
+		var str = elem.getAttribute(attr);
+		if(!str) return null;
+		var m = str.match(/\(\#(.*)\)/);
+		if(!m || m.length !== 2) {
+			return null;
+		}
+		return S.getElem(m[1]);
+	}
+
+	//toggles context tool panel off/on
+	//sets the controls with the selected element's settings
+	function showPanel(on) {
+		$('#marker_panel').toggle(on);
+		if ($('#marker_panel_title').length < 1) {
+		  $('#marker_panel').prepend("<h4 id='marker_panel_title'>Arrows</h4>")
+		}
+
+		if(on) {
+			var el = selElems[0];
+			var val;
+			var ci;
+
+			$.each(mtypes, function(i, pos) {
+				var m=getLinked(el,"marker-"+pos);
+				var txtbox = $('#'+pos+'_marker');
+				if (!m) {
+					val='\\nomarker';
+					ci=val;
+					txtbox.hide() // hide text box
+				} else {
+					if (!m.attributes.se_type) return; // not created by this extension
+					val='\\'+m.attributes.se_type.textContent;
+					ci=val;
+					if (val=='\\textmarker') {
+						val=m.lastChild.textContent;
+						//txtbox.show(); // show text box
+					} else {
+						txtbox.hide() // hide text box
+					}
+				}
+				txtbox.val(val);				
+				setIcon(pos,ci);
+			})
+		}
+	}	
+
+	function addMarker(id, val) {
+		var txt_box_bg = '#ffffff';
+		var txt_box_border = 'none';
+		var txt_box_stroke_width = 0;
+		
+		var marker = S.getElem(id);
+
+		if (marker) return;
+
+		if (val=='' || val=='\\nomarker') return;
+
+		var el = selElems[0];		 
+		var color = el.getAttribute('stroke');
+		//NOTE: Safari didn't like a negative value in viewBox
+		//so we use a standardized 0 0 100 100
+		//with 50 50 being mapped to the marker position
+		var refX = 50;
+		var refY = 50;
+		var viewBox = "0 0 100 100";
+		var markerWidth = 5;
+		var markerHeight = 5;
+		var strokeWidth = 10;
+		if (val.substr(0,1)=='\\') se_type=val.substr(1);
+		else se_type='textmarker';
+
+		if (!marker_types[se_type]) return; // an unknown type!
+		
+ 		// create a generic marker
+		marker = addElem({
+			"element": "marker",
+			"attr": {
+			"id": id,
+			"markerUnits": "strokeWidth",
+			"orient": "auto",
+			"style": "pointer-events:none",
+			"se_type": se_type
+		}
+		});
+
+		if (se_type!='textmarker') {
+			var mel = addElem(marker_types[se_type]);
+			var fillcolor = color;
+			if (se_type.substr(-2)=='_o') fillcolor='none';
+			mel.setAttribute('fill',fillcolor);
+			mel.setAttribute('stroke',color);
+			mel.setAttribute('stroke-width',strokeWidth);
+			marker.appendChild(mel);
+		} else {
+			var text = addElem(marker_types[se_type]);
+			// have to add text to get bounding box
+			text.textContent = val;
+			var tb=text.getBBox();
+			//alert( tb.x + " " + tb.y + " " + tb.width + " " + tb.height);
+			var pad=1;
+			var bb = tb;
+			bb.x = 0;
+			bb.y = 0;
+			bb.width += pad*2;
+			bb.height += pad*2;
+			// shift text according to its size
+			text.setAttribute('x', pad);
+			text.setAttribute('y', bb.height - pad - tb.height/4); // kludge?
+			text.setAttribute('fill',color);
+			refX = bb.width/2+pad;
+			refY = bb.height/2+pad;
+			viewBox = bb.x + " " + bb.y + " " + bb.width + " " + bb.height;
+			markerWidth =bb.width/10;
+			markerHeight = bb.height/10;
+
+			var box = addElem({
+				"element": "rect",
+				"attr": {
+				"x": bb.x,
+				"y": bb.y,
+				"width": bb.width,
+				"height": bb.height,
+				"fill": txt_box_bg,
+				"stroke": txt_box_border,
+				"stroke-width": txt_box_stroke_width
+			}
+			});
+			marker.setAttribute("orient",0);
+			marker.appendChild(box);
+			marker.appendChild(text);
+		} 
+
+		marker.setAttribute("viewBox",viewBox);
+		marker.setAttribute("markerWidth", markerWidth);
+		marker.setAttribute("markerHeight", markerHeight);
+		marker.setAttribute("refX", refX);
+		marker.setAttribute("refY", refY);
+		S.findDefs().appendChild(marker);
+
+		return marker;
+	}
+
+
+	function setMarker() {
+		var poslist={'start_marker':'start','mid_marker':'mid','end_marker':'end'};
+		var pos = poslist[this.id];
+		var marker_name = 'marker-'+pos;
+		var val = this.value;
+		var el = selElems[0];
+		var marker = getLinked(el, marker_name);
+		if (marker) $(marker).remove();
+		el.removeAttribute(marker_name);
+		if (val=='') val='\\nomarker';
+		if (val=='\\nomarker') {
+			setIcon(pos,val);
+			S.call("changed", selElems);
+			return;
+		}
+		// Set marker on element
+		var id = marker_prefix + pos + '_' + el.id;
+		addMarker(id, val);
+		svgCanvas.changeSelectedAttribute(marker_name, "url(#" + id + ")");
+		if (el.tagName == "line" && pos=='mid') el=convertline(el);
+		S.call("changed", selElems);
+		setIcon(pos,val);
+	}
+
+	function convertline(elem) {
+		// this routine came from the connectors extension
+		// it is needed because midpoint markers don't work with line elements
+		if (!(elem.tagName == "line")) return elem;
+
+		// Convert to polyline to accept mid-arrow
+
+		var x1 = elem.getAttribute('x1')-0;
+		var x2 = elem.getAttribute('x2')-0;
+		var y1 = elem.getAttribute('y1')-0;
+		var y2 = elem.getAttribute('y2')-0;
+		var id = elem.id;
+
+		var mid_pt = (' '+((x1+x2)/2)+','+((y1+y2)/2) + ' ');
+		var pline = addElem({
+			"element": "polyline",
+			"attr": {
+			"points": (x1+','+y1+ mid_pt +x2+','+y2),
+			"stroke": elem.getAttribute('stroke'),
+			"stroke-width": elem.getAttribute('stroke-width'),
+			"fill": "none",
+			"opacity": elem.getAttribute('opacity') || 1
+		}
+		});
+		$.each(mtypes, function(i, pos) { // get any existing marker definitions
+			var nam = 'marker-'+pos;
+			var m = elem.getAttribute(nam);
+			if (m) pline.setAttribute(nam,elem.getAttribute(nam));
+		});
+		
+		var batchCmd = new S.BatchCommand();
+		batchCmd.addSubCommand(new S.RemoveElementCommand(elem, elem.parentNode));
+		batchCmd.addSubCommand(new S.InsertElementCommand(pline));
+		
+		$(elem).after(pline).remove();
+		svgCanvas.clearSelection();
+		pline.id = id;
+		svgCanvas.addToSelection([pline]);
+		S.addCommandToHistory(batchCmd);
+		return pline;
+	}
+
+	// called when the main system modifies an object
+	// this routine changes the associated markers to be the same color
+	function colorChanged(elem) {
+		var color = elem.getAttribute('stroke');
+
+		$.each(mtypes, function(i, pos) {
+			var marker = getLinked(elem, 'marker-'+pos);
+			if (!marker) return;
+			if (!marker.attributes.se_type) return; //not created by this extension
+			var ch = marker.lastElementChild;
+			if (!ch) return;
+			var curfill = ch.getAttribute("fill");
+			var curstroke = ch.getAttribute("stroke")
+			if (curfill && curfill!='none') ch.setAttribute("fill",color);
+			if (curstroke && curstroke!='none') ch.setAttribute("stroke",color);
+		});
+	}
+
+	// called when the main system creates or modifies an object
+	// primary purpose is create new markers for cloned objects
+	function updateReferences(el) {
+		$.each(mtypes, function (i,pos) {
+			var id = marker_prefix + pos + '_' + el.id;
+			var marker_name = 'marker-'+pos;
+			var marker = getLinked(el, marker_name);
+			if (!marker || !marker.attributes.se_type) return; //not created by this extension
+			var url = el.getAttribute(marker_name);
+			if (url) {
+				var len = el.id.length;
+				var linkid = url.substr(-len-1,len);
+				if (el.id != linkid) {
+					var val = $('#'+pos+'_marker').attr('value');
+					addMarker(id, val);
+					svgCanvas.changeSelectedAttribute(marker_name, "url(#" + id + ")");
+					if (el.tagName == "line" && pos=='mid') el=convertline(el);
+					S.call("changed", selElems);
+				}
+			}
+		});
+	}
+
+	// simulate a change event a text box that stores the current element's marker type
+	function triggerTextEntry(pos,val) {
+		$('#'+pos+'_marker').val(val);
+		$('#'+pos+'_marker').change();
+		var txtbox = $('#'+pos+'_marker');
+		//if (val.substr(0,1)=='\\') txtbox.hide();
+		//else txtbox.show();
+	}
+	
+	function setIcon(pos,id) {
+		if (id.substr(0,1)!='\\') id='\\textmarker'
+		var ci = '#'+id_prefix+pos+'_'+id.substr(1);
+		methodDraw.setIcon('#cur_' + pos +'_marker_list', $(ci).children());
+		$(ci).addClass('current').siblings().removeClass('current');
+	}
+		
+	function setMarkerSet(obj) {
+		var parts = this.id.split('_');
+		var set = parts[2];
+		switch (set) {
+		case 'off':
+			triggerTextEntry('start','\\nomarker');
+			triggerTextEntry('mid','\\nomarker');
+			triggerTextEntry('end','\\nomarker');
+			break;
+		case 'dimension':
+			triggerTextEntry('start','\\leftarrow');
+			triggerTextEntry('end','\\rightarrow');
+			showTextPrompt('mid');
+			break;
+		case 'label':
+			triggerTextEntry('mid','\\nomarker');
+			triggerTextEntry('end','\\rightarrow');
+			showTextPrompt('start');
+			break;
+		}
+	}
+		
+	function showTextPrompt(pos) {
+		var def = $('#'+pos+'_marker').val();
+		if (def.substr(0,1)=='\\') def='';
+		$.prompt('Enter text for ' + pos + ' marker', def , function(txt) { if (txt) triggerTextEntry(pos,txt); });
+	}
+	
+	// callback function for a toolbar button click
+	function setArrowFromButton(obj) {
+		
+		var parts = this.id.split('_');
+		var pos = parts[1];
+		var val = parts[2];
+		if (parts[3]) val+='_'+parts[3];
+		
+		if (val!='textmarker') {
+			triggerTextEntry(pos,'\\'+val);
+		} else {
+			showTextPrompt(pos);
+		}
+	}
+	
+	function getTitle(lang,id) {
+		var list = lang_list[lang];
+		for (var i in list) {
+			if (list[i].id==id) return list[i].title;
+		}
+		return id;
+	}
+	
+	
+	// build the toolbar button array from the marker definitions
+	// TODO: need to incorporate language specific titles
+	function buildButtonList() {
+		var buttons=[];
+		var i=0;
+/*
+		buttons.push({
+			id:id_prefix + 'markers_off',
+			title:'Turn off all markers',
+			type:'context',
+			events: { 'click': setMarkerSet },
+			panel: 'marker_panel'
+		});
+		buttons.push({
+			id:id_prefix + 'markers_dimension',
+			title:'Dimension',
+			type:'context',
+			events: { 'click': setMarkerSet },
+			panel: 'marker_panel'
+		});
+		buttons.push({
+			id:id_prefix + 'markers_label',
+			title:'Label',
+			type:'context',
+			events: { 'click': setMarkerSet },
+			panel: 'marker_panel'
+		});
+*/
+		$.each(mtypes,function(k,pos) {
+			var listname = pos + "_marker_list";
+			var def = true;
+		$.each(marker_types,function(id,v) {
+			var title = getTitle('en',id);
+			buttons.push({
+					id:id_prefix + pos + "_" + id,
+					svgicon:id,
+					title:title,
+					type:'context',
+					events: { 'click': setArrowFromButton },
+					panel:'marker_panel',
+					list: listname,
+					isDefault: def
+			});
+			def = false;
+		});
+		});
+		return buttons;
+	}
+
+	return {
+		name: "Markers",
+		svgicons: "extensions/markers-icons.xml",
+		buttons: buildButtonList(),
+		context_tools: [
+		   {
+			type: "input",
+			panel: "marker_panel",
+			title: "Start marker",
+			id: "start_marker",
+			label: "Start",
+			size: 3,
+			events: { change: setMarker }
+		},{
+			type: "button-select",
+			panel: "marker_panel",
+			title: getTitle('en','start_marker_list'),
+			id: "start_marker_list",
+			colnum: 3,
+			events: { change: setArrowFromButton }
+		},{
+			type: "input",
+			panel: "marker_panel",
+			title: "Middle marker",
+			id: "mid_marker",
+			label: "Middle",
+			defval: "",
+			size: 3,
+			events: { change: setMarker }
+		},{
+			type: "button-select",
+			panel: "marker_panel",
+			title: getTitle('en','mid_marker_list'),
+			id: "mid_marker_list",
+			colnum: 3,
+			events: { change: setArrowFromButton }
+		},{
+			type: "input",
+			panel: "marker_panel",
+			title: "End marker",
+			id: "end_marker",
+			label: "End",
+			size: 3,
+			events: { change: setMarker }
+		},{
+			type: "button-select",
+			panel: "marker_panel",
+			title: getTitle('en','end_marker_list'),
+			id: "end_marker_list",
+			colnum: 3,
+			events: { change: setArrowFromButton }
+		} ],
+		callback: function() {
+			$('#marker_panel').addClass('toolset').hide();
+			
+		},
+		addLangData: function(lang) {
+			return { data: lang_list[lang] };
+		},
+
+	selectedChanged: function(opts) {
+		// Use this to update the current selected elements
+		//console.log('selectChanged',opts);
+		selElems = opts.elems;
+
+		var i = selElems.length;
+		var marker_elems = ['line','path','polyline','polygon'];
+
+		while(i--) {
+			var elem = selElems[i];
+			if(elem && $.inArray(elem.tagName, marker_elems) != -1) {
+				if(opts.selectedElement && !opts.multiselected) {
+					showPanel(true);
+				} else {
+					showPanel(false);
+				}
+			} else {
+				showPanel(false);
+			}
+		}
+	},
+
+	elementChanged: function(opts) {		
+		//console.log('elementChanged',opts);
+		var elem = opts.elems[0];
+		if(elem && (
+				elem.getAttribute("marker-start") ||
+				elem.getAttribute("marker-mid") ||
+				elem.getAttribute("marker-end")
+		)) {
+			colorChanged(elem);
+			updateReferences(elem);
+		}
+		changing_flag = false;
+	}
+	};
+});
+
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-server_moinsave.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-server_moinsave.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-server_moinsave.js	(revision 29468)
@@ -0,0 +1,56 @@
+/*
+ * ext-server_moinsave.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ *              2011 MoinMoin:ReimarBauer
+ *                   adopted for moinmoins item storage. it sends in one post png and svg data
+ *                   (I agree to dual license my work to additional GPLv2 or later)
+ *
+ */
+
+methodDraw.addExtension("server_opensave", {
+	callback: function() {
+
+		var save_svg_action = '/+modify';
+		
+		// Create upload target (hidden iframe)
+		var target = $('<iframe name="output_frame" src="#"/>').hide().appendTo('body');
+	
+		methodDraw.setCustomHandlers({
+			save: function(win, data) {
+				var svg = "<?xml version=\"1.0\"?>\n" + data;
+				var qstr = $.param.querystring();
+				var name = qstr.substr(9).split('/+get/')[1];
+				var svg_data = svgedit.utilities.encode64(svg);
+				if(!$('#export_canvas').length) {
+					$('<canvas>', {id: 'export_canvas'}).hide().appendTo('body');
+				}
+				var c = $('#export_canvas')[0];
+				c.width = svgCanvas.contentW;
+				c.height = svgCanvas.contentH;
+				$.getScript('canvg/canvg.js', function() {
+				canvg(c, svg, {renderCallback: function() {
+					var datauri = c.toDataURL('image/png');
+					var uiStrings = methodDraw.uiStrings;
+					var png_data = svgedit.utilities.encode64(datauri);
+					var form = $('<form>').attr({
+					method: 'post',
+					action: save_svg_action + '/' + name,
+					target: 'output_frame'
+				})	.append('<input type="hidden" name="png_data" value="' + png_data + '">')
+					.append('<input type="hidden" name="filepath" value="' + svg_data + '">')
+					.append('<input type="hidden" name="filename" value="' + 'drawing.svg">')
+					.append('<input type="hidden" name="contenttype" value="application/x-svgdraw">')
+					.appendTo('body')
+					.submit().remove();
+					}})});
+				alert("Saved! Return to Item View!");
+				top.window.location = '/'+name;
+			},
+		});
+	
+	}
+});
+
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-server_opensave.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-server_opensave.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-server_opensave.js	(revision 29468)
@@ -0,0 +1,180 @@
+/*
+ * ext-server_opensave.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ *
+ */
+
+methodDraw.addExtension("server_opensave", {
+	callback: function() {
+
+		//var save_svg_action = 'extensions/filesave.php';
+		//var save_png_action = 'extensions/filesave.php';
+	
+		// Create upload target (hidden iframe)
+		var target = $('<iframe name="output_frame" />').hide().appendTo('body');
+	
+		//methodDraw.setCustomHandlers({
+		//	save: function(win, data) {
+		//		var svg = "<?xml version=\"1.0\"?>\n" + data;
+		//		
+		//		var title = svgCanvas.getDocumentTitle();
+		//		var filename = title.replace(/[^a-z0-9\.\_\-]+/gi, '_');
+		//		
+		//		var form = $('<form>').attr({
+		//			method: 'post',
+		//			action: save_svg_action,
+		//			target: 'output_frame'
+		//		})	.append('<input type="hidden" name="output_svg" value="' + encodeURI(svg) + '">')
+		//			.append('<input type="hidden" name="filename" value="' + filename + '">')
+		//			.appendTo('body')
+		//			.submit().remove();
+		//	},
+		//	pngsave: function(win, data) {
+		//		var issues = data.issues;
+		//		
+		//		if(!$('#export_canvas').length) {
+		//			$('<canvas>', {id: 'export_canvas'}).hide().appendTo('body');
+		//		}
+		//		var c = $('#export_canvas')[0];
+		//		
+		//		c.width = svgCanvas.contentW;
+		//		c.height = svgCanvas.contentH;
+		//		canvg(c, data.svg, {renderCallback: function() {
+		//			var datauri = c.toDataURL('image/png');
+		//			
+		//			var uiStrings = methodDraw.uiStrings;
+		//			var note = '';
+		//			
+		//			// Check if there's issues
+		//			if(issues.length) {
+		//				var pre = "\n \u2022 ";
+		//				note += ("\n\n" + pre + issues.join(pre));
+		//			} 
+		//			
+		//			if(note.length) {
+		//				alert(note);
+		//			}
+		//			
+		//			var title = svgCanvas.getDocumentTitle();
+		//			var filename = title.replace(/[^a-z0-9\.\_\-]+/gi, '_');
+		//			
+		//			var form = $('<form>').attr({
+		//				method: 'post',
+		//				action: save_png_action,
+		//				target: 'output_frame'
+		//			})	.append('<input type="hidden" name="output_png" value="' + datauri + '">')
+		//				.append('<input type="hidden" name="filename" value="' + filename + '">')
+		//				.appendTo('body')
+		//				.submit().remove();
+		//		}});
+	  //
+		//		
+		//	}
+		//});
+	
+		// Do nothing if client support is found
+		if(window.FileReader) return;
+		
+		var cancelled = false;
+	
+		// Change these to appropriate script file
+		var open_svg_action = 'extensions/fileopen.php?type=load_svg';
+		var import_svg_action = 'extensions/fileopen.php?type=import_svg';
+		var import_img_action = 'extensions/fileopen.php?type=import_img';
+		
+		// Set up function for PHP uploader to use
+		methodDraw.processFile = function(str64, type) {
+			if(cancelled) {
+				cancelled = false;
+				return;
+			}
+		
+			$('#dialog_box').hide();
+		
+			if(type != 'import_img') {
+				var xmlstr = svgCanvas.Utils.decode64(str64);
+			}
+			
+			switch ( type ) {
+				case 'load_svg':
+					svgCanvas.clear();
+					svgCanvas.setSvgString(xmlstr);
+					methodDraw.updateCanvas();
+					break;
+				case 'import_svg':
+					svgCanvas.importSvgString(xmlstr);
+					methodDraw.updateCanvas();					
+					break;
+				case 'import_img':
+					svgCanvas.setGoodImage(str64);
+					break;
+			}
+		}
+	
+		// Create upload form
+		var open_svg_form = $('<form>');
+		open_svg_form.attr({
+			enctype: 'multipart/form-data',
+			method: 'post',
+			action: open_svg_action,
+			target: 'output_frame'
+		});
+		
+		// Create import form
+		var import_svg_form = open_svg_form.clone().attr('action', import_svg_action);
+		
+		// Create image form
+		var import_img_form = open_svg_form.clone().attr('action', import_img_action);
+		
+		// It appears necessory to rebuild this input every time a file is 
+		// selected so the same file can be picked and the change event can fire.
+		function rebuildInput(form) {
+			form.empty();
+			var inp = $('<input type="file" name="svg_file">').appendTo(form);
+			
+			
+			function submit() {
+				// This submits the form, which returns the file data using methodDraw.uploadSVG
+				form.submit();
+				
+				rebuildInput(form);
+				$.process_cancel("Uploading...", function() {
+					cancelled = true;
+					$('#dialog_box').hide();
+				});
+			}
+			
+			if(form[0] == open_svg_form[0]) {
+				inp.change(function() {
+					// This takes care of the "are you sure" dialog box
+					methodDraw.openPrep(function(ok) {
+						if(!ok) {
+							rebuildInput(form);
+							return;
+						}
+						submit();
+					});
+				});
+			} else {
+				inp.change(function() {
+					// This submits the form, which returns the file data using methodDraw.uploadSVG
+					submit();
+				});
+			}
+		}
+		
+		// Create the input elements
+		rebuildInput(open_svg_form);
+		rebuildInput(import_svg_form);
+		rebuildInput(import_img_form);
+
+		// Add forms to buttons
+		$("#tool_open").show().prepend(open_svg_form);
+		$("#tool_import").show().prepend(import_svg_form);
+		$("#tool_image").prepend(import_img_form);
+	}
+});
+
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-shapes.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-shapes.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-shapes.js	(revision 29468)
@@ -0,0 +1,358 @@
+/*
+ * ext-shapes.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Christian Tzurcanu
+ * Copyright(c) 2010 Alexis Deveria
+ *
+ */
+
+methodDraw.addExtension("shapes", function() {
+	
+
+	var current_d, cur_shape_id;
+	var canv = methodDraw.canvas;
+	var cur_shape;
+	var start_x, start_y;
+	var svgroot = canv.getRootElem();
+	var lastBBox = {};
+	
+	// This populates the category list
+	var categories = {
+		basic: 'Basic',
+		object: 'Objects',
+		symbol: 'Symbols',
+		arrow: 'Arrows',
+		flowchart: 'Flowchart',
+		nature: 'Nature',
+		game: 'Cards & Chess',
+		dialog_balloon: 'Dialog balloons',
+		music: 'Music',
+		weather: 'Weather &amp; Time',
+		ui: 'User Interface',
+		social: 'Social Web'
+	};
+	
+	var library = {
+		'basic': {
+			data: {
+				"star_points_5": "m1,116.58409l113.82668,0l35.17332,-108.13487l35.17334,108.13487l113.82666,0l-92.08755,66.83026l35.17514,108.13487l-92.08759,-66.83208l-92.08757,66.83208l35.17515,-108.13487l-92.08758,-66.83026z",
+				'donut': 'm1,150l0,0c0,-82.29042 66.70958,-149 149,-149l0,0c39.51724,0 77.41599,15.69816 105.35889,43.64108c27.94293,27.94293 43.64111,65.84165 43.64111,105.35892l0,0c0,82.29041 -66.70958,149 -149,149l0,0c-82.29041,0 -149,-66.70959 -149,-149zm74.5,0l0,0c0,41.1452 33.35481,74.5 74.5,74.5c41.14522,0 74.5,-33.3548 74.5,-74.5c0,-41.1452 -33.3548,-74.5 -74.5,-74.5l0,0c-41.14519,0 -74.5,33.35481 -74.5,74.5z',
+				"triangle": "m1,280.375l149,-260.75l149,260.75z",
+				"right_triangle": "m1,299l0,-298l298,298z",
+				"diamond": "m1,150l149,-149l149,149l-149,149l-149,-149z",
+				"pentagon": "m1.00035,116.97758l148.99963,-108.4053l148.99998,108.4053l-56.91267,175.4042l-184.1741,0l-56.91284,-175.4042z",
+				"hexagon": "m1,149.99944l63.85715,-127.71428l170.28572,0l63.85713,127.71428l-63.85713,127.71428l-170.28572,0l-63.85715,-127.71428z",
+				"septagon1": "m0.99917,191.06511l29.51249,-127.7108l119.48833,-56.83673l119.48836,56.83673l29.51303,127.7108l-82.69087,102.41679l-132.62103,0l-82.69031,-102.41679z",
+				"heptagon": "m1,88.28171l87.28172,-87.28171l123.43653,0l87.28172,87.28171l0,123.43654l-87.28172,87.28172l-123.43653,0l-87.28172,-87.28172l0,-123.43654z",
+				"decagon": "m1,150.00093l28.45646,-88.40318l74.49956,-54.63682l92.08794,0l74.50002,54.63682l28.45599,88.40318l-28.45599,88.40318l-74.50002,54.63681l-92.08794,0l-74.49956,-54.63681l-28.45646,-88.40318z",
+				"dodecagon": "m1,110.07421l39.92579,-69.14842l69.14842,-39.92579l79.85159,0l69.14842,39.92579l39.92578,69.14842l0,79.85159l-39.92578,69.14842l-69.14842,39.92578l-79.85159,0l-69.14842,-39.92578l-39.92579,-69.14842l0,-79.85159z",
+				"trapezoid": "m1,299l55.875,-298l186.25001,0l55.87498,298z",
+				"dialog_balloon_1": "m0.99786,35.96579l0,0c0,-19.31077 15.28761,-34.96524 34.14583,-34.96524l15.52084,0l0,0l74.50001,0l139.68748,0c9.05606,0 17.74118,3.68382 24.14478,10.24108c6.40356,6.55726 10.00107,15.45081 10.00107,24.72416l0,87.41311l0,0l0,52.44785l0,0c0,19.31078 -15.2876,34.96524 -34.14584,34.96524l-139.68748,0l-97.32507,88.90848l22.82506,-88.90848l-15.52084,0c-18.85822,0 -34.14583,-15.65446 -34.14583,-34.96524l0,0l0,-52.44785l0,0z",
+				'heart': 'm150,73c61,-175 300,0 0,225c-300,-225 -61,-400 0,-225z',
+				"cylinder": "m299.0007,83.77844c0,18.28676 -66.70958,33.11111 -149.00002,33.11111m149.00002,-33.11111l0,0c0,18.28676 -66.70958,33.11111 -149.00002,33.11111c-82.29041,0 -148.99997,-14.82432 -148.99997,-33.11111m0,0l0,0c0,-18.28674 66.70956,-33.1111 148.99997,-33.1111c82.29044,0 149.00002,14.82436 149.00002,33.1111l0,132.44449c0,18.28674 -66.70958,33.11105 -149.00002,33.11105c-82.29041,0 -148.99997,-14.82431 -148.99997,-33.11105z",
+				"arrow_up": "m1.49805,149.64304l148.50121,-148.00241l148.50121,148.00241l-74.25061,0l0,148.71457l-148.5012,0l0,-148.71457z",
+				"arrow_u_turn": "m1.00059,299.00055l0,-167.62497l0,0c0,-72.00411 58.37087,-130.37499 130.375,-130.37499l0,0l0,0c34.57759,0 67.73898,13.7359 92.18906,38.18595c24.45006,24.45005 38.18593,57.61144 38.18593,92.18904l0,18.625l37.24997,0l-74.49995,74.50002l-74.50002,-74.50002l37.25,0l0,-18.625c0,-30.8589 -25.0161,-55.87498 -55.87498,-55.87498l0,0l0,0c-30.85892,0 -55.875,25.01608 -55.875,55.87498l0,167.62497z",
+				"arrow_left_up": "m0.99865,224.5l74.50004,-74.5l0,37.25l111.74991,0l0,-111.75l-37.25,0l74.5,-74.5l74.5,74.5l-37.25,0l0,186.25l-186.24989,0l0,37.25l-74.50005,-74.5z",
+				"plaque": "m-0.00197,49.94376l0,0c27.5829,0 49.94327,-22.36036 49.94327,-49.94327l199.76709,0l0,0c0,27.5829 22.36037,49.94327 49.94325,49.94327l0,199.7671l0,0c-27.58289,0 -49.94325,22.36034 -49.94325,49.94325l-199.76709,0c0,-27.58292 -22.36037,-49.94325 -49.94327,-49.94325z",
+				"page": "m249.3298,298.99744l9.9335,-39.73413l39.73413,-9.93355l-49.66763,49.66768l-248.33237,0l0,-298.00001l298.00001,0l0,248.33234",
+				"cross": "m0.99844,99.71339l98.71494,0l0,-98.71495l101.26279,0l0,98.71495l98.71495,0l0,101.2628l-98.71495,0l0,98.71494l-101.26279,0l0,-98.71494l-98.71494,0z",
+				"divide": "m150,0.99785l0,0c25.17819,0 45.58916,20.41097 45.58916,45.58916c0,25.17821 -20.41096,45.58916 -45.58916,45.58916c-25.17822,0 -45.58916,-20.41093 -45.58916,-45.58916c0,-25.1782 20.41093,-45.58916 45.58916,-45.58916zm0,296.25203c-25.17822,0 -45.58916,-20.41095 -45.58916,-45.58917c0,-25.17819 20.41093,-45.58916 45.58916,-45.58916c25.17819,0 45.58916,20.41096 45.58916,45.58916c0,25.17822 -20.41096,45.58917 -45.58916,45.58917zm-134.06754,-193.71518l268.13507,0l0,91.17833l-268.13507,0z",
+				"minus": "m0.99887,102.39503l297.49445,0l0,95.2112l-297.49445,0z",
+				"times": "m1.00089,73.36786l72.36697,-72.36697l76.87431,76.87368l76.87431,-76.87368l72.36765,72.36697l-76.87433,76.87431l76.87433,76.87431l-72.36765,72.36765l-76.87431,-76.87433l-76.87431,76.87433l-72.36697,-72.36765l76.87368,-76.87431l-76.87368,-76.87431z"
+				
+
+			},
+			buttons: []
+		}
+	};
+	
+	var cur_lib = library.basic;
+	
+	var mode_id = 'shapelib';
+	
+	function loadIcons() {
+		$('#shape_buttons').empty();
+		
+		// Show lib ones
+		$('#shape_buttons').append(cur_lib.buttons);
+	}
+	
+	function loadLibrary(cat_id) {
+	
+		var lib = library[cat_id];
+		
+		if(!lib) {
+			$('#shape_buttons').html('Loading...');
+			$.getJSON('extensions/shapelib/' + cat_id + '.json', function(result, textStatus) {
+				cur_lib = library[cat_id] = {
+					data: result.data,
+					size: result.size,
+					fill: result.fill
+				}
+				makeButtons(cat_id, result);
+				loadIcons();
+			});
+			return;
+		}
+		
+		cur_lib = lib;
+		if(!lib.buttons.length)	makeButtons(cat_id, lib);
+		loadIcons();
+	}
+	
+	function makeButtons(cat, shapes) {
+		var size = cur_lib.size || 300;
+		var fill = cur_lib.fill || false;
+		var off = size * .05;
+		var vb = [-off, -off, size + off*2, size + off*2].join(' ');
+		var stroke = fill ? 0: (size/30);
+		
+		var shape_icon = new DOMParser().parseFromString(
+			'<svg xmlns="http://www.w3.org/2000/svg"><svg viewBox="' + vb + '"><path fill="#333" stroke="transparent" stroke-width="' + stroke + '" /><\/svg><\/svg>',
+			'text/xml');
+
+		var width = 40;
+		var height = 40;
+		shape_icon.documentElement.setAttribute('width', width);
+		shape_icon.documentElement.setAttribute('height', height);
+		var svg_elem = $(document.importNode(shape_icon.documentElement,true));
+	
+		var data = shapes.data;
+		
+		cur_lib.buttons = [];
+	
+		for(var id in data) {
+			var path_d = data[id];
+			var icon = svg_elem.clone();
+			icon.find('path').attr('d', path_d);
+			
+			var icon_btn = icon.wrap('<div class="tool_button">').parent().attr({
+				id: mode_id + '_' + id,
+				title: id
+			});
+			
+			
+			// Store for later use
+			cur_lib.buttons.push(icon_btn[0]);
+		}
+		
+	}
+
+	
+	return {
+		svgicons: "extensions/ext-shapes.xml",
+		buttons: [{
+			id: "tool_shapelib",
+			type: "mode_flyout", // _flyout
+			position: 6,
+			title: "Shape library",
+			icon: "extensions/ext-shapes.png",
+			events: {
+				"click": function() {
+					canv.setMode(mode_id);
+				}
+			}
+		}],
+		callback: function() {
+
+		
+			var btn_div = $('<div id="shape_buttons">');
+			$('#tools_shapelib > *').wrapAll(btn_div);
+			
+			var shower = $('#tools_shapelib_show');
+
+			
+			loadLibrary('basic');
+			
+			// Do mouseup on parent element rather than each button
+			$('#shape_buttons').mouseup(function(evt) {
+				var btn = $(evt.target).closest('div.tool_button');
+				
+				if(!btn.length) return;
+				
+   			var copy = btn.children().clone().attr({width: 24, height: 24});
+   			shower.children(':not(.flyout_arrow_horiz)').remove();
+   			shower
+   				.append(copy)
+   				.attr('data-curopt', '#' + btn[0].id) // This sets the current mode
+   				.mouseup();
+   			canv.setMode(mode_id);
+				
+				cur_shape_id = btn[0].id.substr((mode_id+'_').length);
+				current_d = cur_lib.data[cur_shape_id];
+				
+				$('.tools_flyout').fadeOut();
+
+			});
+
+// 			
+			var shape_cats = $('<div id="shape_cats">');
+			var cat_str = '';
+			
+			$.each(categories, function(id, label) {
+				cat_str += '<div data-cat=' + id + '>' + label + '</div>';
+			});
+			
+			shape_cats.html(cat_str).children().bind('mouseup', function() {
+				var catlink = $(this);
+				catlink.siblings().removeClass('current');
+				catlink.addClass('current');
+				
+				loadLibrary(catlink.attr('data-cat'));
+				// Get stuff
+				
+				return false;
+			});
+			
+			shape_cats.children().eq(0).addClass('current');
+			
+			$('#tools_shapelib').prepend(shape_cats);
+
+			shower.mouseup(function() {
+				canv.setMode(current_d ? mode_id : 'select');
+			});
+
+			
+			$('#tool_shapelib').remove();
+			
+			var h = $('#tools_shapelib').height();
+			$('#tools_shapelib').css({
+				'margin-top': -(h/2),
+				'margin-left': 3
+			});
+
+	
+		},
+		mouseDown: function(opts) {
+			var mode = canv.getMode();
+			if(mode !== mode_id) return;
+			
+			var e = opts.event;
+			var x = start_x = opts.start_x;
+			var y = start_y = opts.start_y;
+			var cur_style = canv.getStyle();
+			cur_shape = canv.addSvgElementFromJson({
+				"element": "path",
+				"curStyles": true,
+				"attr": {
+					"d": current_d,
+					"id": canv.getNextId(),
+					"opacity": cur_style.opacity / 2,
+					"style": "pointer-events:none"
+				}
+			});
+      cur_shape.setAttribute("d", current_d);
+			// Make sure shape uses absolute values
+			if(/[a-z]/.test(current_d)) {
+				current_d = cur_lib.data[cur_shape_id] = canv.pathActions.convertPath(cur_shape);
+				cur_shape.setAttribute('d', current_d);
+				canv.pathActions.fixEnd(cur_shape);
+			}
+	    
+			cur_shape.setAttribute('transform', "translate(" + x + "," + y + ") scale(0.005) translate(" + -x + "," + -y + ")");			
+// 			console.time('b');
+			canv.recalculateDimensions(cur_shape);
+			var tlist = canv.getTransformList(cur_shape);
+			lastBBox = cur_shape.getBBox();
+			totalScale = {
+			  sx: 1,
+			  sy: 1
+			};
+			return {
+				started: true
+			}
+			// current_d
+		},
+		mouseMove: function(opts) {
+			var mode = canv.getMode();
+			if(mode !== mode_id) return;
+			
+			var zoom = canv.getZoom();
+			var evt = opts.event
+			
+			var x = opts.mouse_x/zoom;
+			var y = opts.mouse_y/zoom;
+			
+			var tlist = canv.getTransformList(cur_shape),
+				box = cur_shape.getBBox(), 
+				left = box.x, top = box.y, width = box.width,
+				height = box.height;
+			var dx = (x-start_x), dy = (y-start_y);
+
+			var newbox = {
+				'x': Math.min(start_x,x),
+				'y': Math.min(start_y,y),
+				'width': Math.abs(x-start_x),
+				'height': Math.abs(y-start_y)
+			};
+
+			var ts = null,
+				tx = 0, ty = 0,
+				sy = height ? (height+dy)/height : 1, 
+				sx = width ? (width+dx)/width : 1;
+
+			var sx = newbox.width / lastBBox.width;
+			var sy = newbox.height / lastBBox.height;
+			
+			sx = sx || 1;
+			sy = sy || 1;
+			
+			// Not perfect, but mostly works...
+			
+			if(x < start_x) {
+				tx = lastBBox.width;
+			}
+			if(y < start_y) ty = lastBBox.height;
+			
+			// update the transform list with translate,scale,translate
+			var translateOrigin = svgroot.createSVGTransform(),
+				scale = svgroot.createSVGTransform(),
+				translateBack = svgroot.createSVGTransform();
+				
+			translateOrigin.setTranslate(-(left+tx), -(top+ty));
+			if(evt.shiftKey) {
+			  replaced = true
+				var max = Math.min(Math.abs(sx), Math.abs(sy));
+				sx = max * (sx < 0 ? -1 : 1);
+				sy = max * (sy < 0 ? -1 : 1);
+				if (totalScale.sx != totalScale.sy) {
+  				var multiplierX = (totalScale.sx > totalScale.sy) ? 1 : totalScale.sx/totalScale.sy;
+  				var multiplierY = (totalScale.sy > totalScale.sx) ? 1 : totalScale.sy/totalScale.sx;
+  				sx *= multiplierY
+  				sy *= multiplierX
+				}
+			}
+			totalScale.sx *= sx;
+		  totalScale.sy *= sy;
+		  scale.setScale(sx,sy);
+			translateBack.setTranslate(left+tx, top+ty);
+			var N = tlist.numberOfItems;
+			tlist.appendItem(translateBack);
+			tlist.appendItem(scale);
+			tlist.appendItem(translateOrigin);
+
+			canv.recalculateDimensions(cur_shape);
+			lastBBox = cur_shape.getBBox();
+		},
+		mouseUp: function(opts) {
+			var mode = canv.getMode();
+			if(mode !== mode_id) return;
+			
+			if(opts.mouse_x == start_x && opts.mouse_y == start_y) {
+				return {
+					keep: false,
+					element: cur_shape,
+					started: false
+				}
+			}
+			canv.setMode("select")
+			return {
+				keep: true,
+				element: cur_shape,
+				started: false
+			}
+		}		
+	}
+});
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-shapes.xml
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-shapes.xml	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/ext-shapes.xml	(revision 29468)
@@ -0,0 +1,8 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+	<g id="tool_shapelib">
+	  <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+      	<path fill="#2F2F2C" d="M0,0v27h27V0H0z M20.328,24.166l-6.891-3.622l-6.891,3.622l1.316-7.672L2.289,11.06l7.704-1.121
+			l3.445-6.979l3.447,6.98l7.702,1.121l-5.573,5.434L20.328,24.166z"/>
+  	</svg>
+	</g>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/eyedropper-icon.xml
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/eyedropper-icon.xml	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/eyedropper-icon.xml	(revision 29468)
@@ -0,0 +1,17 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+
+<g id="tool_eyedropper">
+  	<svg id="Untitled-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+		xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+		x="0px" y="0px" width="27px" height="27px"
+	>
+		<path fill="#2F2F2C" d="M16.867,11.729l-1.5-1.49l-9.845,9.777c-0.198,0.919-0.653,1.838-1.104,2.585
+			c0.752-0.448,1.678-0.899,2.604-1.096L16.867,11.729z"/>
+		<path fill="#2F2F2C" d="M0,0v27h27V0H0z M2.702,24.801l-0.5-0.496l-0.46-0.457l0.421-0.493c0.016-0.02,1.711-2.031,2.008-3.799
+		l0.037-0.222L14.367,9.247l-0.333-0.331c-0.459-0.457-0.459-1.198,0-1.655l1.5-1.489c0.46-0.457,1.206-0.457,1.667,0L19.7,3.289c0,0,2.5-2.482,3.833-1.158L24.2,2.792l0.667,0.662c0.28,0.278,0.391,0.609,0.391,0.957c0,1.302-1.558,2.849-1.558,2.849
+	l-2.5,2.482l0.167,0.166c0.46,0.457,0.46,1.197,0,1.655l-1.5,1.489c-0.46,0.456-1.207,0.456-1.667,0l-0.333-0.332L7.708,22.809l-0.223,0.037c-1.787,0.296-3.805,1.978-3.826,1.995l-0.496,0.417L2.702,24.801z"/>
+	</svg>
+</g>
+	
+	<g id="svg_eof"/>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/eyedropper.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/eyedropper.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/eyedropper.svg	(revision 29468)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="27px" height="27px" viewBox="0 0 27 27" enable-background="new 0 0 27 27" xml:space="preserve">
+<g>
+	<path fill="#2F2F2C" d="M16.867,11.729l-1.5-1.49l-9.845,9.777c-0.198,0.919-0.653,1.838-1.104,2.585
+		c0.752-0.448,1.678-0.899,2.604-1.096L16.867,11.729z"/>
+	<path fill="#2F2F2C" d="M0,0v27h27V0H0z M2.702,24.801l-0.5-0.496l-0.46-0.457l0.421-0.493c0.016-0.02,1.711-2.031,2.008-3.799
+		l0.037-0.222L14.367,9.247l-0.333-0.331c-0.459-0.457-0.459-1.198,0-1.655l1.5-1.489c0.46-0.457,1.206-0.457,1.667,0L19.7,3.289
+		c0,0,2.5-2.482,3.833-1.158L24.2,2.792l0.667,0.662c0.28,0.278,0.391,0.609,0.391,0.957c0,1.302-1.558,2.849-1.558,2.849
+		l-2.5,2.482l0.167,0.166c0.46,0.457,0.46,1.197,0,1.655l-1.5,1.489c-0.46,0.456-1.207,0.456-1.667,0l-0.333-0.332L7.708,22.809
+		l-0.223,0.037c-1.787,0.296-3.805,1.978-3.826,1.995l-0.496,0.417L2.702,24.801z"/>
+</g>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/fileopen.php
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/fileopen.php	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/fileopen.php	(revision 29468)
@@ -0,0 +1,31 @@
+<!doctype html>
+<?php
+/*
+ * fileopen.php
+ * To be used with ext-server_opensave.js for SVG-edit
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ *
+ */
+	// Very minimal PHP file, all we do is Base64 encode the uploaded file and
+	// return it to the editor
+	
+	$file = $_FILES['svg_file']['tmp_name'];
+	
+	$output = file_get_contents($file);
+	
+	$type = $_REQUEST['type'];
+	
+	$prefix = '';
+	
+	// Make Data URL prefix for import image
+	if($type == 'import_img') {
+		$info = getimagesize($file);
+		$prefix = 'data:' . $info['mime'] . ';base64,';
+	}
+?>
+<script>
+window.top.window.methodDraw.processFile("<?php echo $prefix . base64_encode($output); ?>", "<?php echo htmlentities($type); ?>");
+</script>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/filesave.php
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/filesave.php	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/filesave.php	(revision 29468)
@@ -0,0 +1,44 @@
+<?php
+/*
+ * filesave.php
+ * To be used with ext-server_opensave.js for SVG-edit
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ *
+ */
+ 
+if(!isset($_POST['output_svg']) && !isset($_POST['output_png'])) {
+	die('post fail');
+}
+
+$file = '';
+
+$suffix = isset($_POST['output_svg'])?'.svg':'.png';
+
+if(isset($_POST['filename']) && strlen($_POST['filename']) > 0) {
+	$file = $_POST['filename'] . $suffix;
+} else {
+	$file = 'image' . $suffix;
+}
+
+if($suffix == '.svg') {
+	$mime = 'image/svg+xml';
+	$contents = rawurldecode($_POST['output_svg']);
+} else {
+	$mime = 'image/png';
+	$contents = $_POST['output_png'];
+	$pos = (strpos($contents, 'base64,') + 7);
+	$contents = base64_decode(substr($contents, $pos));
+}
+
+ header("Cache-Control: public");
+ header("Content-Description: File Transfer");
+ header("Content-Disposition: attachment; filename=" . $file);
+ header("Content-Type: " .  $mime);
+ header("Content-Transfer-Encoding: binary");
+ 
+ echo $contents;
+ 
+?>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/foreignobject-icons.xml
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/foreignobject-icons.xml	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/foreignobject-icons.xml	(revision 29468)
@@ -0,0 +1,96 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+	<g id="tool_foreign">
+		<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 84 84">
+		  <g fill="#444" opacity="0.2" transform="translate(6,6)">
+		  <path d="M42.8,74.3c0,4.3,0,5.9,11.8,5.9l4.1,0l0,3.8c-4.5-0.4-16.1-0.4-21.2-0.3c-5.1,0-16.6,0-21,0.4l0-3.8l4.1,0
+			c11.8,0,11.8-1.7,11.8-5.9l0-6.9C13.9,65.6,0,54.6,0,42c0-12.2,13.3-23.5,32.4-25.4l0-6.9c0-4.3,0-5.9-11.8-5.9l-4.1,0l0-3.8
+			c4.5,0.4,16.1,0.4,21.2,0.3c5.1,0,16.6,0,21-0.4l0,3.8l-4.1,0c-11.8,0-11.8,1.7-11.8,5.9l0,6.9C61.6,18.1,75.8,29.2,75.8,42
+			c0,12.4-13.8,23.9-33.1,25.4L42.8,74.3z M32.4,19.4c-18.7,2.5-19.9,16.2-19.9,22.6c0,7.6,2.3,20.2,20,22.5L32.4,19.4z M42.7,64.7
+			c18.8-2.2,20.7-15.4,20.6-22.8c0-9.3-3.5-20.6-20.7-22.6L42.7,64.7z"/>
+		  </g>
+		  <g fill="#444" opacity="0.3" transform="translate(4,4)">
+		  <path d="M42.8,74.3c0,4.3,0,5.9,11.8,5.9l4.1,0l0,3.8c-4.5-0.4-16.1-0.4-21.2-0.3c-5.1,0-16.6,0-21,0.4l0-3.8l4.1,0
+			c11.8,0,11.8-1.7,11.8-5.9l0-6.9C13.9,65.6,0,54.6,0,42c0-12.2,13.3-23.5,32.4-25.4l0-6.9c0-4.3,0-5.9-11.8-5.9l-4.1,0l0-3.8
+			c4.5,0.4,16.1,0.4,21.2,0.3c5.1,0,16.6,0,21-0.4l0,3.8l-4.1,0c-11.8,0-11.8,1.7-11.8,5.9l0,6.9C61.6,18.1,75.8,29.2,75.8,42
+			c0,12.4-13.8,23.9-33.1,25.4L42.8,74.3z M32.4,19.4c-18.7,2.5-19.9,16.2-19.9,22.6c0,7.6,2.3,20.2,20,22.5L32.4,19.4z M42.7,64.7
+			c18.8-2.2,20.7-15.4,20.6-22.8c0-9.3-3.5-20.6-20.7-22.6L42.7,64.7z"/>
+		  </g>
+		  <g fill="#444" opacity="0.5" transform="translate(2,2)">
+		  <path d="M42.8,74.3c0,4.3,0,5.9,11.8,5.9l4.1,0l0,3.8c-4.5-0.4-16.1-0.4-21.2-0.3c-5.1,0-16.6,0-21,0.4l0-3.8l4.1,0
+			c11.8,0,11.8-1.7,11.8-5.9l0-6.9C13.9,65.6,0,54.6,0,42c0-12.2,13.3-23.5,32.4-25.4l0-6.9c0-4.3,0-5.9-11.8-5.9l-4.1,0l0-3.8
+			c4.5,0.4,16.1,0.4,21.2,0.3c5.1,0,16.6,0,21-0.4l0,3.8l-4.1,0c-11.8,0-11.8,1.7-11.8,5.9l0,6.9C61.6,18.1,75.8,29.2,75.8,42
+			c0,12.4-13.8,23.9-33.1,25.4L42.8,74.3z M32.4,19.4c-18.7,2.5-19.9,16.2-19.9,22.6c0,7.6,2.3,20.2,20,22.5L32.4,19.4z M42.7,64.7
+			c18.8-2.2,20.7-15.4,20.6-22.8c0-9.3-3.5-20.6-20.7-22.6L42.7,64.7z"/>
+		  </g>
+		  <g fill="#0000CC">
+		  <path id="xyz321" d="M42.8,74.3c0,4.3,0,5.9,11.8,5.9l4.1,0l0,3.8c-4.5-0.4-16.1-0.4-21.2-0.3c-5.1,0-16.6,0-21,0.4l0-3.8l4.1,0
+			c11.8,0,11.8-1.7,11.8-5.9l0-6.9C13.9,65.6,0,54.6,0,42c0-12.2,13.3-23.5,32.4-25.4l0-6.9c0-4.3,0-5.9-11.8-5.9l-4.1,0l0-3.8
+			c4.5,0.4,16.1,0.4,21.2,0.3c5.1,0,16.6,0,21-0.4l0,3.8l-4.1,0c-11.8,0-11.8,1.7-11.8,5.9l0,6.9C61.6,18.1,75.8,29.2,75.8,42
+			c0,12.4-13.8,23.9-33.1,25.4L42.8,74.3z M32.4,19.4c-18.7,2.5-19.9,16.2-19.9,22.6c0,7.6,2.3,20.2,20,22.5L32.4,19.4z M42.7,64.7
+			c18.8-2.2,20.7-15.4,20.6-22.8c0-9.3-3.5-20.6-20.7-22.6L42.7,64.7z"/>
+		  </g>
+		</svg>
+	</g>
+	
+	<g id="edit_foreign">
+		<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="34 38 170 170" overflow="hidden">
+		<g fill="#000088">
+			<path d="M30.1,63.9v-4.3l30.2-14.9V50L36.5,61.7l23.8,11.7v5.3L30.1,63.9z"/>
+			<path d="M106.1,79.7v-1.1c4.2-0.5,4.8-1.1,4.8-5.2V58.2c0-6-1.3-7.9-5.4-7.9c-3.3,0-5.7,1.3-7.8,4.4v18.1
+				c0,4.5,1.1,5.7,5.2,5.8v1.1H86.8v-1.1c4.1-0.3,4.9-1.1,4.9-5.1V57.9c0-5-1.6-7.6-4.8-7.6c-2.5,0-5.6,1.2-7.4,2.9
+				c-0.5,0.5-1.1,1.4-1.1,1.4v20.3c0,2.8,1.1,3.6,4.9,3.7v1.1h-16v-1.1c4-0.1,5-1.2,5-5V55.4c0-3.5-0.6-4.6-2.5-4.6
+				c-0.8,0-1.4,0.1-2.3,0.3v-1.2c4-1.1,6.4-1.9,10.1-3.2l0.5,0.1v5.4c6-4.5,8-5.5,11.2-5.5c3.9,0,6.3,1.9,7.6,6c3.9-4.2,7.6-6,11.7-6
+				c5.5,0,8.4,4.3,8.4,12.8v14.8c0,2.8,0.9,4.1,3.1,4.2l1.9,0.1v1.1H106.1z"/>
+			<path d="M147.3,80.5c-3,0-4.2-1.4-4.6-5.3c-4.4,3.7-7.3,5.3-10.5,5.3c-4.5,0-7.6-3.2-7.6-7.7c0-2.4,1-4.8,2.6-6.3
+				c3.1-2.7,4.3-3.3,15.4-7.8v-4.4c0-3.9-1.9-6-5.5-6c-2.9,0-5.2,1.6-5.2,3.5c0,0.5,0.1,1.1,0.2,1.7c0.1,0.5,0.1,0.9,0.1,1.2
+				c0,1.6-1.5,3-3.2,3s-3.1-1.4-3.1-3.1c0-1.8,1.2-3.9,3-5.4c2-1.7,5.5-2.7,9.1-2.7c4.4,0,7.5,1.4,9,4.2c1,1.7,1.4,3.7,1.4,7.3v14
+				c0,3.2,0.5,4.2,2.2,4.2c1.1,0,1.9-0.4,3.2-1.4v1.9C151.3,79.6,149.8,80.5,147.3,80.5z M142.6,60.5c-8.7,3.2-11.7,5.8-11.7,10v0.3
+				c0,3.1,2,5.5,4.5,5.5c1.5,0,3.5-0.6,5.3-1.6c1.5-0.9,1.9-1.6,1.9-3.8V60.5z"/>
+			<path d="M165.3,80.5c-4.2,0-6.3-3.1-6.3-9.1V49.7h-3.8c-0.2-0.1-0.3-0.3-0.3-0.5c0-0.4,0.4-0.9,1.2-1.4
+				c1.9-1.1,4.3-3.7,7-7.7c0.5-0.6,1-1.3,1.4-2c0.4,0,0.5,0.2,0.5,0.9v8.4h7.3v2.3h-7.3v20.6c0,4.6,1.1,6.5,3.7,6.5
+				c1.6,0,2.7-0.6,4.3-2.5l0.9,0.8C171.8,78.7,169,80.5,165.3,80.5z"/>
+			<path d="M193.8,79.7v-1.1c4.1-0.4,4.9-1.3,4.9-6.2V58.1c0-5-1.8-7.6-5.4-7.6c-2.8,0-5,1.2-8,4.5v17.4
+				c0,5,0.7,5.8,4.9,6.3v1.1h-15.6v-1.1c4.2-0.6,4.6-1.2,4.6-6.3V38.5c0-3.1-0.6-3.7-3.7-3.7c-0.4,0-0.6,0-0.9,0.1v-1.2l1.9-0.6
+				c4-1.2,5.8-1.7,8.3-2.6l0.4,0.2v21.9c3.3-4.3,6.3-6,10.6-6c5.9,0,8.9,3.9,8.9,11.5v14.3c0,5,0.4,5.5,4.3,6.3v1.1h-15.2V79.7z"/>
+			<path d="M59.1,116.1v-4.3l30.2-14.9v5.3l-23.8,11.7l23.8,11.7v5.3L59.1,116.1z"/>
+			<path d="M135.1,131.9v-1.1c4.2-0.5,4.8-1.1,4.8-5.2v-15.1c0-6-1.3-7.9-5.4-7.9c-3.3,0-5.7,1.3-7.8,4.4v18.1
+				c0,4.5,1.1,5.7,5.2,5.8v1.1h-16.1v-1.1c4.1-0.3,4.9-1.1,4.9-5.1v-15.7c0-5-1.6-7.6-4.8-7.6c-2.5,0-5.6,1.2-7.4,2.9
+				c-0.5,0.5-1.1,1.4-1.1,1.4v20.3c0,2.8,1.1,3.6,4.9,3.7v1.1h-16v-1.1c4-0.1,5-1.2,5-5v-18.2c0-3.5-0.6-4.6-2.5-4.6
+				c-0.8,0-1.4,0.1-2.3,0.3v-1.2c4-1.1,6.4-1.9,10.1-3.2l0.5,0.1v5.4c6-4.5,8-5.5,11.2-5.5c3.9,0,6.3,1.9,7.6,6c3.9-4.2,7.6-6,11.7-6
+				c5.5,0,8.4,4.3,8.4,12.8v14.8c0,2.8,0.9,4.1,3.1,4.2l1.9,0.1v1.1H135.1z"/>
+			<path d="M152.1,131.9v-1.1c5-0.3,5.7-1.1,5.7-6.3v-16.6c0-3.2-0.6-4.3-2.4-4.3c-0.6,0-1.6,0.1-2.4,0.2l-0.6,0.1v-1.1
+				l11.2-4L164,99v25.6c0,5.2,0.6,5.9,5.3,6.3v1.1L152.1,131.9L152.1,131.9z M160.8,93.1c-2,0-3.7-1.6-3.7-3.7c0-2,1.7-3.7,3.7-3.7
+				c2.1,0,3.7,1.7,3.7,3.7C164.6,91.6,163,93.1,160.8,93.1z"/>
+			<path d="M175.8,131v-5.3l23.7-11.8l-23.7-11.7v-5.3l30.1,14.9v4.3L175.8,131z"/>
+			<path d="M31.1,169.5v-4.3l30.2-14.9v5.3l-23.8,11.7L61.3,179v5.3L31.1,169.5z"/>
+			<path d="M71.3,186.4h-4.9l16.5-49.7h4.8L71.3,186.4z"/>
+			<path d="M127.1,185.3v-1.1c4.2-0.5,4.8-1.1,4.8-5.2v-15.2c0-6-1.3-7.9-5.4-7.9c-3.3,0-5.7,1.3-7.8,4.4v18.1
+				c0,4.5,1.1,5.7,5.2,5.8v1.1h-16.1v-1.1c4.1-0.3,4.9-1.1,4.9-5.1v-15.6c0-5-1.6-7.6-4.8-7.6c-2.5,0-5.6,1.2-7.4,2.9
+				c-0.5,0.5-1.1,1.4-1.1,1.4v20.3c0,2.8,1.1,3.6,4.9,3.7v1.1h-16v-1.1c4-0.1,5-1.2,5-5V161c0-3.5-0.6-4.6-2.5-4.6
+				c-0.8,0-1.4,0.1-2.3,0.3v-1.2c4-1.1,6.4-1.9,10.1-3.2l0.5,0.1v5.4c6-4.5,8-5.5,11.2-5.5c3.9,0,6.3,1.9,7.6,6c3.9-4.2,7.6-6,11.7-6
+				c5.5,0,8.4,4.3,8.4,12.8v14.8c0,2.8,0.9,4.1,3.1,4.2l1.9,0.1v1.1H127.1L127.1,185.3z"/>
+			<path d="M168.3,186.1c-3,0-4.2-1.4-4.6-5.3c-4.4,3.7-7.3,5.3-10.5,5.3c-4.5,0-7.6-3.2-7.6-7.7c0-2.4,1-4.8,2.6-6.3
+				c3.1-2.7,4.3-3.3,15.4-7.8v-4.4c0-3.9-1.9-6-5.5-6c-2.9,0-5.2,1.6-5.2,3.5c0,0.5,0.1,1.1,0.2,1.7c0.1,0.5,0.1,0.9,0.1,1.2
+				c0,1.6-1.5,3-3.2,3s-3.1-1.4-3.1-3.1c0-1.8,1.2-3.9,3-5.4c2-1.7,5.5-2.7,9.1-2.7c4.4,0,7.5,1.4,9,4.2c1,1.7,1.4,3.7,1.4,7.3v14
+				c0,3.2,0.5,4.2,2.2,4.2c1.1,0,1.9-0.4,3.2-1.4v1.9C172.3,185.2,170.8,186.1,168.3,186.1z M163.8,166.1c-8.7,3.2-11.7,5.8-11.7,10
+				v0.3c0,3.1,2,5.5,4.5,5.5c1.5,0,3.5-0.6,5.3-1.6c1.5-0.9,1.9-1.6,1.9-3.8V166.1z"/>
+			<path d="M186.3,186.1c-4.2,0-6.3-3.1-6.3-9.1v-21.7h-3.8c-0.2-0.1-0.3-0.3-0.3-0.5c0-0.4,0.4-0.9,1.2-1.4
+				c1.9-1.1,4.3-3.7,7-7.7c0.5-0.6,1-1.3,1.4-2c0.4,0,0.5,0.2,0.5,0.9v8.4h7.3v2.3h-7.3v20.6c0,4.6,1.1,6.5,3.7,6.5
+				c1.6,0,2.7-0.6,4.3-2.5l0.9,0.8C192.8,184.3,190,186.1,186.3,186.1z"/>
+			<path d="M209.1,185.3h-13.4v-1.1c4.2-0.6,4.6-1.2,4.6-6.3V144c0-3.1-0.6-3.7-3.7-3.7c-0.4,0-0.6,0-0.9,0.1v-1.2
+				l1.9-0.6c4-1.2,5.8-1.7,8.3-2.6l0.4,0.2v21.9c0.9-1.2,1.9-2.2,2.8-3.1"/>
+			<path d="M209.1,157.9c-0.8,0.7-1.7,1.5-2.7,2.6v17.4c0,4,0.4,5.3,2.7,5.9"/>
+		  </g>
+		  <g>
+			<polyline opacity="0.2" fill="#231F20" points="209.1,76.4 118.7,186.5 139.1,186.4 209.1,121 209.1,76.4 "/>
+			<polyline opacity="0.4" fill="#231F20" points="209.1,76.2 118.5,186.5 129.7,186.4 200.2,120.3 209.1,100.8 209.1,76.4 "/>
+			<path fill="#FFD761" d="M121.6,88.7l0.8,87.5l62.3-56.7c0,0-15.3-25.8-24.8-30C151.1,85.6,121.6,88.7,121.6,88.7z"/>
+			<path fill="#FEA01E" d="M209.1,19.5h-54l-33.5,69.2c0,0,29.7-3.4,38.3,0.8c8.9,4.4,25,30.8,25,30.8l24.2-50V19.5z"/>
+			<path d="M120.4,153.7l-0.6,25l23.8-16.9c0,0-8-7-11.2-8.1C129.4,152.8,120.4,153.7,120.4,153.7z"/>
+			<polyline fill="none" stroke="#231F20" stroke-width="5" points="153.9,19.5 121.6,88.7 120.7,181.2 186.6,120.3 209.1,70.3 "/>
+		  </g>
+		</svg>
+	</g>
+	
+	<g id="svg_eof"/>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/grid-icon.xml
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/grid-icon.xml	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/grid-icon.xml	(revision 29468)
@@ -0,0 +1,30 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+<!-- 
+	Sample icons file. This file looks like an SVG file with groups as its
+	children. Each group element has an ID that must match the ID of the button given
+	in the extension. The SVG inside the group makes up the actual icon, and
+	needs use a viewBox instead of width/height for it to scale	properly.
+	
+	Multiple icons can be included, each within their own group.
+-->
+	<g id="view_grid">
+	  <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+		<g>
+		  <rect fill="#ffffff" stroke="#848484" x="2" y="2" width="20" height="20"/>
+		  <line fill="none" stroke="#848484" x1="11.84375" y1="-1.53125" x2="11.84375" y2="18.46875" transform="rotate(90, 11.8429, 8.46955)"/>
+		  <line fill="none" stroke="#848484" x1="11.90625" y1="5.21875" x2="11.90625" y2="25.21875" transform="rotate(90, 11.9054, 15.2196)"/>
+		  <line fill="none" stroke="#848484" x1="8.5" y1="2.03125" x2="8.5" y2="22.03125"/>
+		  <line fill="none" stroke="#848484" x1="15.5" y1="2.03125" x2="15.5" y2="22.03125"/>
+		  <rect fill="#d8d8d8" stroke="#000000" stroke-width="0" x="3.25" y="3.28125" width="4" height="4"/>
+		  <rect fill="#d8d8d8" stroke="#000000" stroke-width="0" x="10" y="3.28125" width="4" height="4"/>
+		  <rect fill="#d8d8d8" stroke="#000000" stroke-width="0" x="16.75" y="3.28125" width="4" height="4"/>
+		  <rect fill="#d8d8d8" stroke="#000000" stroke-width="0" x="3.28125" y="9.75" width="4" height="4"/>
+		  <rect fill="#d8d8d8" stroke="#000000" stroke-width="0" x="10.03125" y="9.75" width="4" height="4"/>
+		  <rect fill="#d8d8d8" stroke="#000000" stroke-width="0" x="16.78125" y="9.75" width="4" height="4"/>
+		  <rect fill="#d8d8d8" stroke="#000000" stroke-width="0" x="3.3125" y="16.59375" width="4" height="4"/>
+		  <rect fill="#d8d8d8" stroke="#000000" stroke-width="0" x="10.0625" y="16.59375" width="4" height="4"/>
+		  <rect fill="#d8d8d8" stroke="#000000" stroke-width="0" x="16.8125" y="16.59375" width="4" height="4"/>
+		</g>
+	  </svg>
+	</g>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/helloworld-icon.xml
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/helloworld-icon.xml	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/helloworld-icon.xml	(revision 29468)
@@ -0,0 +1,21 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+<!-- 
+	Sample icons file. This file looks like an SVG file with groups as its
+	children. Each group element has an ID that must match the ID of the button given
+	in the extension. The SVG inside the group makes up the actual icon, and
+	needs use a viewBox instead of width/height for it to scale	properly.
+	
+	Multiple icons can be included, each within their own group.
+-->
+	<g id="hello_world">
+		<svg width="102" height="102" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+		 <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
+		 <g>
+		  <title>Layer 1</title>
+		  <rect ry="30" rx="30" x="2.5" y="2.5" width="97" height="97" id="svg_3" fill="#008000" stroke="#000000" stroke-width="5"/>
+		  <text x="52.668" y="42.5" id="svg_1" fill="#ffffff" stroke="#000000" stroke-width="0" font-size="24" font-family="Monospace" text-anchor="middle" xml:space="preserve">Hello</text>
+		  <text x="52.668" y="71.5" fill="#ffffff" stroke="#000000" stroke-width="0" font-size="24" font-family="Monospace" text-anchor="middle" xml:space="preserve" id="svg_2">World!</text>
+		 </g>
+		</svg>
+	</g>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/imagelib/index.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/imagelib/index.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/imagelib/index.html	(revision 29468)
@@ -0,0 +1,64 @@
+<!doctype html>
+<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
+
+
+<body>
+
+<h1>Select an image:</h1>
+<a href="smiley.svg">smiley.svg</a>
+<br>
+<a href="../../images/logo.png">logo.png</a>
+</body>
+
+<script>
+
+$('a').click(function() {
+	var href = this.href;
+	var target = window.parent;
+	// Convert Non-SVG images to data URL first 
+	// (this could also have been done server-side by the library)
+	if(this.href.indexOf('.svg') === -1) {
+
+		var meta_str = JSON.stringify({
+			name: $(this).text(),
+			id: href
+		});
+		target.postMessage(meta_str, "*");
+	
+		var img = new Image();
+		img.onload = function() {
+			var canvas = document.createElement("canvas");
+			canvas.width = this.width;
+			canvas.height = this.height;
+			// load the raster image into the canvas
+			canvas.getContext("2d").drawImage(this,0,0);
+			// retrieve the data: URL
+			try {
+				var dataurl = canvas.toDataURL();
+			} catch(err) {
+				// This fails in Firefox with file:// URLs :(
+				alert("Data URL conversion failed: " + err);
+				var dataurl = "";
+			}
+			target.postMessage('|' + href + '|' + dataurl, "*");
+		}
+		img.src = href;
+	} else {
+		// Send metadata (also indicates file is about to be sent)
+		var meta_str = JSON.stringify({
+			name: $(this).text(),
+			id: href
+		});
+		target.postMessage(meta_str, "*");
+		// Do ajax request for image's href value
+		$.get(href, function(data) {
+			data = '|' + href + '|' + data;
+			// This is where the magic happens!
+			target.postMessage(data, "*");
+			
+		}, 'html'); // 'html' is necessary to keep returned data as a string
+	}
+	return false;
+});
+
+</script>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/imagelib/smiley.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/imagelib/smiley.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/imagelib/smiley.svg	(revision 29468)
@@ -0,0 +1,12 @@
+<svg width="137" height="137" xmlns="http://www.w3.org/2000/svg">
+ <title>Cool smiley</title>
+  <path fill="url(#svg_4)" stroke="#000000" stroke-width="3" d="m32.18682,97.71674q36.3159,24.94076 72.54585,0m-64.67542,-49.25576c0,-3.8554 3.12526,-6.98079 6.98068,-6.98079c3.85449,0 6.97872,3.12539 6.97872,6.98079c0,3.85346 -3.12423,6.97867 -6.97872,6.97867c-3.85542,0 -6.98068,-3.12521 -6.98068,-6.97867m42.93047,0c0,-3.8554 3.12529,-6.98079 6.97963,-6.98079c3.8544,0 6.97971,3.12539 6.97971,6.98079c0,3.85346 -3.12531,6.97867 -6.97971,6.97867c-3.85434,0 -6.97963,-3.12521 -6.97963,-6.97867m-81.48596,20.036l0,0c0,-37.00197 29.99679,-66.99892 67.00095,-66.99892c37.00303,0 66.99998,29.99695 66.99998,66.99892c0,37.00409 -29.99695,67.00101 -66.99998,67.00101c-37.00416,0 -67.00095,-29.99692 -67.00095,-67.00101zm0,0l0,0c0,-37.00197 29.99679,-66.99892 67.00095,-66.99892c37.00303,0 66.99998,29.99695 66.99998,66.99892c0,37.00409 -29.99695,67.00101 -66.99998,67.00101c-37.00416,0 -67.00095,-29.99692 -67.00095,-67.00101z" id="svg_1"/>
+  <path id="svg_5" d="m23.84005,41.03445l17.57052,0l5.42937,-19.67914l5.42941,19.67914l17.5706,0l-14.21488,12.16242l5.42982,19.67939l-14.21495,-12.16281l-14.21489,12.16281l5.42991,-19.67939l-14.21491,-12.16242l0,0z" stroke-width="3" fill="#000000"/>
+  <path id="svg_6" d="m65.84005,41.03445l17.57052,0l5.42937,-19.67914l5.42941,19.67914l17.5706,0l-14.21487,12.16242l5.42982,19.67939l-14.21496,-12.1628l-14.2149,12.1628l5.42992,-19.67939l-14.21491,-12.16242l0,0z" stroke-width="3" fill="#000000"/>
+ <defs>
+  <linearGradient y2="0.25391" x2="0.46484" y1="0.94922" x1="0.44531" id="svg_4">
+   <stop stop-color="#ff0000" offset="0"/>
+   <stop stop-color="#ffff00" offset="1"/>
+  </linearGradient>
+ </defs>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/markers-icons.xml
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/markers-icons.xml	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/markers-icons.xml	(revision 29468)
@@ -0,0 +1,115 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+    <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
+    <g id="nomarker">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+            <path stroke-width="10" stroke="#ff7f00" fill="#ff7f00" d="m-50,0l100,0"/>
+        </svg>
+    </g>
+    <g id="leftarrow">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+            <path stroke-width="10" stroke="#ff7f00" fill="#ff7f00" d="m-50,0l100,40l-30,-40l30,-40z"/>
+        </svg>
+    </g>
+    <g id="rightarrow">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+            <path stroke-width="10" stroke="#ff7f00" fill="#ff7f00" d="m50,0l-100,40l30,-40l-30,-40z"/>
+        </svg>
+    </g>
+    <g id="leftarrow_o">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+            <path stroke-width="10" stroke="#ff7f00" fill="none" d="m-50,0l100,40l-30,-40l30,-40z"/>
+        </svg>
+    </g>
+    <g id="rightarrow_o">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+            <path stroke-width="10" stroke="#ff7f00" fill="none" d="m50,0l-100,40l30,-40l-30,-40z"/>
+        </svg>
+    </g>
+    <g id="forwardslash">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+            <path stroke-width="10" stroke="#ff7f00" fill="none" d="m-20,50l40,-100"/>
+        </svg>
+    </g>
+    <g id="reverseslash">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+            <path stroke-width="10" stroke="#ff7f00" fill="none" d="m-20,-50l40,100"/>
+        </svg>
+    </g>
+    <g id="verticalslash">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+            <path stroke-width="10" stroke="#ff7f00" fill="none" d="m0,-50l0,100"/>
+        </svg>
+    </g>
+    <g id="mcircle">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+            <circle stroke-width="10" stroke="#ff7f00" fill="#ff7f00" cy="0" cx="0" r="30"/>
+        </svg>
+    </g>
+    <g id="mcircle_o">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+            <circle stroke-width="10" stroke="#ff7f00" fill="none" cy="0" cx="0" r="30"/>
+        </svg>
+    </g>
+    <g id="xmark">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+            <path stroke-width="10" stroke="#ff7f00" fill="#ff7f00" d="m-30,30l60,-60m0,60l-60,-60"/>
+        </svg>
+    </g>
+    <g id="box">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+            <path stroke-width="10" stroke="#ff7f00" fill="#ff7f00" d="m-30,-30l0,60l60,0l0,-60z"/>
+        </svg>
+    </g>
+    <g id="star">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+            <path stroke-width="10" stroke="#ff7f00" fill="#ff7f00" d="m-40,-20l80,0l-70,60l30,-80l30,80z"/>
+        </svg>
+    </g>
+    <g id="box_o">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+            <path stroke-width="10" stroke="#ff7f00" fill="none" d="m-30,-30l0,60l60,0l0,-60z"/>
+        </svg>
+    </g>
+    <g id="star_o">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+            <path stroke-width="10" stroke="#ff7f00" fill="none" d="m-40,-20l80,0l-70,60l30,-80l30,80z"/>
+        </svg>
+    </g>
+     <g id="triangle_o">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+            <path stroke-width="10" stroke="#ff7f00" fill="none" d="M-30,30 L0,-30 L30,30 Z"/>
+        </svg>
+    </g>
+     <g id="triangle">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+            <path stroke-width="10" stroke="#ff7f00" fill="#ff7f00" d="M-30,30 L0,-30 L30,30 Z"/>
+        </svg>
+    </g>
+   <g id="textmarker">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+			<text xml:space="preserve" text-anchor="middle" font-family="serif" font-size="120"  y="40" x="0" stroke-width="0" stroke="#ff7f00" fill="#ff7f00">T</text>	
+        </svg>
+    </g>
+	<g id="mkr_markers_off">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+		   <line y2="0" x2="50" y1="0" x1="-50" stroke-width="5" stroke="#ff7f00" fill="none"/>
+       </svg>
+    </g>
+	<g id="mkr_markers_dimension">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+ 		   <line y2="0" x2="40" y1="0" x1="20" stroke-width="5" stroke="#ff7f00" fill="none"/>
+		   <line y2="0" x2="-40" y1="0" x1="-20" stroke-width="5" stroke="#ff7f00" fill="none"/>
+		   <text text-anchor="middle" font-family="serif" font-size="80"  y="20" x="0" stroke-width="0" stroke="#ff7f00" fill="#ff7f00">T</text>
+           <path stroke-width="5" stroke="#ff7f00" fill="#ff7f00" d="M-50,0 L-30,-15 L-30,15 Z"/>
+           <path stroke-width="5" stroke="#ff7f00" fill="#ff7f00" d="M50,0 L30,-15 L30,15 Z"/>
+ 		</svg>
+    </g>
+   	<g id="mkr_markers_label">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+  		   <line y2="0" x2="40" y1="0" x1="-20" stroke-width="5" stroke="#ff7f00" fill="none"/>
+		   <text text-anchor="middle" font-family="serif" font-size="80"  y="20" x="-40" stroke-width="0" stroke="#ff7f00" fill="#ff7f00">T</text>
+           <path stroke-width="5" stroke="#ff7f00" fill="#ff7f00" d="M50,0 L30,-15 L30,15 Z"/>
+        </svg>
+    </g>
+	<g id="svg_eof"/>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib.svg	(revision 29468)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="27px" height="27px" viewBox="0 0 27 27" enable-background="new 0 0 27 27" xml:space="preserve">
+<g>
+	<path fill="#2F2F2C" d="M0,0v27h27V0H0z M20.328,24.166l-6.891-3.622l-6.891,3.622l1.316-7.672L2.289,11.06l7.704-1.121
+		l3.445-6.979l3.447,6.98l7.702,1.121l-5.573,5.434L20.328,24.166z"/>
+</g>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/arrow.json
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/arrow.json	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/arrow.json	(revision 29468)
@@ -0,0 +1,40 @@
+{"data": {
+
+"raph_arrowleftalt": "m148.85236,267.85736c62.96338,0 113.99997,-51.03978 113.99997,-114c0,-62.96035 -51.03659,-114.00003 -113.99997,-114.00003c-62.9603,0 -114.00003,51.03968 -114.00003,114.00003c0,62.96022 51.03973,114 114.00003,114zm18.3148,-190.27232l27.73683,27.75199l-48.5291,48.5263l48.5291,48.52924l-27.73683,27.74283l-76.26337,-76.27206l76.26337,-76.27829z",
+"raph_arrowalt": "m148.90228,39.83233c-62.96026,0 -113.99995,51.03969 -113.99995,114.00001c0,62.96008 51.0397,114 113.99995,114c62.96025,0 113.99988,-51.03992 113.99988,-114c0,-62.96032 -51.03963,-114.00001 -113.99988,-114.00001zm-18.31474,190.28132l-27.73705,-27.76117l48.52927,-48.5262l-48.52927,-48.52618l27.73705,-27.73716l76.27211,76.26334l-76.27211,76.28737z",
+"raph_code": "m97.65991,81.82553l-74.7733,74.80002l74.78024,74.7861l27.19928,-27.19878l-47.59419,-47.58733l47.5843,-47.58737l-27.19633,-27.21265zm109.43651,0l-27.17958,27.20575l47.58447,47.58731l-47.58447,47.58151l27.17958,27.19864l74.79021,-74.79295l-74.79021,-74.78026z",
+"raph_arrowleft": "m225.55086,67.20994l-84.74785,84.74276l84.74785,84.74268l-48.43251,48.45847l-133.18028,-133.20114l133.18028,-133.21132",
+"raph_arrow": "m78.90065,233.69882l83.51689,-83.51643l-83.51689,-83.51703l47.73413,-47.72898l131.26115,131.24601l-131.26115,131.28673",
+"raph_undo": "m126.96721,93.92608l0,-21.257l-114.02783,65.84013l114.02783,65.84071l0,-22.80913c30.94208,-0.01447 85.26308,2.62997 85.26308,21.37195c0,26.1869 -56.73189,40.15683 -56.73189,40.15683l0,20.07819c0,0 127.44096,4.35471 127.44096,-92.53024c0,-76.11671 -109.14841,-78.97697 -155.97215,-76.69144z",
+"raph_merge": "m258.90588,146.2108l-35.01118,-20.22446l0,22.50387l-62.83257,0c-11.00156,0.82205 -29.99611,-11.65927 -51.11536,-28.22105c-21.26684,-15.71002 -45.57171,-34.98518 -78.11465,-35.50087l-21.89459,0l0,35.87434l21.89459,0c15.93792,-0.46335 35.59039,12.07035 56.5134,28.24386c7.79893,5.64999 15.66515,11.88324 24.00037,17.51106c-8.33522,5.63521 -16.19209,11.87592 -24.00037,17.52603c-20.923,16.12849 -40.57548,28.69205 -56.49281,28.23607l-21.91517,0l0,35.92667l21.90392,0c32.4738,-0.45563 56.78807,-19.78302 78.12402,-35.47069c21.12115,-16.56209 40.10641,-29.05069 51.11726,-28.24356l62.81198,0l0,22.50366l35.01118,-20.20171l35.03165,-20.21658l-35.03165,-20.24663z",
+"raph_split": "m223.13887,262.39078l34.41331,-19.83861l34.39532,-19.84677l-34.41354,-19.86079l-34.3951,-19.84554l0,22.07059c-8.43063,0 -18.22723,0 -21.50928,0c-15.6481,0.44069 -34.96196,-11.87286 -55.50945,-27.74643c-7.65977,-5.56572 -15.38751,-11.68895 -23.57783,-17.21797c8.19032,-5.5358 15.90699,-11.65199 23.57783,-17.21753c20.54749,-15.85163 39.86134,-28.18731 55.48927,-27.73882l21.52945,-0.00742l0,22.10017l34.3951,-19.85346l34.41354,-19.86873l-34.41354,-19.89001l-34.3951,-19.86087l0,22.08605l-21.51839,0c-31.96097,0.44731 -55.84717,19.42773 -76.74889,34.85365c-20.74947,16.27773 -39.40058,28.53203 -50.21759,27.73907l-61.70647,0l0,35.25784l61.72672,0c10.80773,-0.80074 29.4682,11.46153 50.21568,27.7388c20.89257,15.43373 44.7696,34.39839 76.73968,34.85391l21.50928,0l0,22.09286l0,0z",
+"raph_fork": "m258.35388,215.7941l33.58908,-19.39804l-33.58908,-19.39061l-33.59627,-19.38332l0,21.56366c-8.81293,-0.01453 -23.41788,-0.01453 -27.55809,-0.01453c-12.23308,-0.29179 -20.2621,-4.12018 -28.61749,-10.97516c-12.45367,-10.23131 -23.08237,-28.64481 -35.90071,-46.38726c-6.51941,-8.82375 -13.7827,-17.57478 -23.45615,-24.61189c-9.57678,-7.06647 -22.08884,-11.967 -35.99734,-11.87218l-60.28487,0l0,34.44956l60.28487,0c8.38267,0.15314 13.68788,2.88773 20.92385,9.66982c10.70531,10.08549 21.14264,29.36664 35.53795,47.63431c14.10718,18.0925 35.81505,36.36014 67.30019,36.53516l27.76779,0l0,21.5636l33.59627,-19.38312zm-142.10248,-130.46932c0.38107,0.26987 0.78403,0.50312 1.15588,0.78036c11.48932,8.35705 19.78624,18.61034 26.3531,27.52899c1.50954,2.08552 2.84773,4.091 4.28069,6.14021l76.71654,0l0,21.57103l33.59627,-19.38342l33.58908,-19.3905l-33.58908,-19.39791l-33.59627,-19.40525l0,21.55649l-108.50621,0z",
+"raph_shuffle": "m94.12077,129.33299c3.30632,3.12013 6.59446,7.16655 9.96822,11.73782c0.4866,-0.69966 0.94586,-1.37793 1.43262,-2.09238c4.88302,-7.16682 10.41658,-15.28143 16.61735,-23.13344c0.98422,-1.27567 2.01776,-2.34757 3.02023,-3.55069c-4.65336,-5.46064 -9.78598,-10.70262 -15.97768,-15.20836c-9.57452,-7.05739 -22.08362,-11.96404 -35.98885,-11.86218l-60.25968,0l0,34.44167l60.27063,0c8.38065,0.16037 13.6938,2.87227 20.91718,9.66756zm130.57496,28.18616l0,21.55846c-8.81079,-0.02196 -23.41228,-0.02196 -27.5498,-0.02196c-12.2318,-0.28418 -20.25906,-4.1848 -28.61061,-10.9724c-3.61259,-2.96718 -7.07196,-6.68578 -10.48404,-10.82677c-2.56079,3.59421 -5.14177,7.30534 -7.76822,11.16187c-3.19156,4.66638 -6.47966,9.46375 -9.90996,14.18074c-0.85124,1.15926 -1.80627,2.35471 -2.7049,3.52884c13.90358,14.60304 33.18919,27.19391 59.26631,27.34717l27.76122,0l0,21.5585l33.59029,-19.35652l33.64694,-19.40054l-33.64694,-19.3786l-33.59029,-19.37878zm-56.16042,-26.87401c8.35155,-6.80222 16.37881,-10.68808 28.61061,-10.97253c4.13753,0 18.73901,0 27.5498,-0.01451l0,21.55887l33.59029,-19.36429l33.64694,-19.37878l-33.64694,-19.39363l-33.59029,-19.36394l0,21.53672l-27.76122,0c-31.46672,0.18983 -53.16029,18.44574 -67.28418,36.52649c-14.39021,18.27095 -24.82685,37.54041 -35.52956,47.60872c-7.23431,6.77303 -12.53652,9.51414 -20.91718,9.66739l-60.27063,0l0,34.44138l60.27063,0c13.90349,0.1021 26.41247,-4.79713 35.98701,-11.86911c9.67125,-7.02086 16.93459,-15.7771 23.45067,-24.59161c12.81526,-17.7531 23.45059,-36.16925 35.89404,-46.39116z",
+"raph_refresh": "m145.75569,48.42695c10.606,0.01341 20.73811,1.8498 30.33369,4.91769l-7.59421,13.13442l53.90657,0l-13.48009,-23.34555l-13.4698,-23.33857l-7.09061,12.29793c-13.28893,-4.85847 -27.6149,-7.57754 -42.59589,-7.57754c-68.95639,0 -124.84771,55.89483 -124.84771,124.85096c0,28.61906 9.73375,54.91371 25.93285,75.98108l18.98374,-14.57568c-13.10138,-17.02533 -20.97865,-38.27057 -21.02139,-61.39851c0.09542,-55.75012 45.19962,-100.86075 100.94284,-100.94623zm98.92802,24.98459l-18.9837,14.58266c13.09808,17.01885 20.97539,38.2507 21.01143,61.38551c-0.09543,55.74966 -45.19962,100.85384 -100.94608,100.94571c-9.8786,-0.01277 -19.32938,-1.61905 -28.339,-4.30534l7.1464,-12.35753l-53.90633,0l13.47012,23.33263l13.47984,23.36481l7.51521,-13.04187c12.74574,4.4371 26.38684,6.91254 40.63376,6.91898c68.96634,-0.01285 124.84807,-55.90773 124.86427,-124.86391c-0.0162,-28.619 -9.75687,-54.90723 -25.94592,-75.96164z",
+	"10": "m0.99679,148.19614c0.277,-34.75176 -0.17724,-69.54997 2.27791,-104.24061c60.32762,11.41171 119.94372,30.08407 179.25477,46.87597c3.18407,-17.04019 1.68541,-31.17523 4.4519,-46.93008c38.1039,33.15254 75.86421,66.77718 112.07695,102.003c-34.74261,39.95821 -74.59364,74.65916 -113.71667,110.1933c-1.26689,-16.54773 -2.53401,-33.09534 -3.80092,-49.64307c-57.66159,16.00916 -118.64064,32.56108 -176.67504,47.19652c-3.94662,-33.77068 -3.83062,-70.54794 -3.8689,-105.45503z",
+	"11": "m136.44681,226.75766l47.24773,-47.40907l-91.35118,0l-91.35098,0l0,-29.34846l0,-29.34849l90.303,0c49.66658,0 90.30293,-1.48752 90.30293,-3.30561c0,-1.81805 -19.77211,-23.15214 -43.93797,-47.40906l-43.93811,-44.1035l40.61224,0l40.61209,0l62.02386,62.14279l62.02383,62.14276l-62.14281,62.02386l-62.14279,62.02386l-42.75481,0l-42.75491,0l47.24786,-47.40909z",
+	"12": "m116.00724,294.49442c-8.01179,-8.01181 -6.96065,-12.86337 12.51841,-57.77466c9.83598,-22.67787 17.88353,-41.89153 17.88353,-42.69699c0,-0.8054 -27.16052,-1.46442 -60.3569,-1.46442l-60.3569,0l0,-42.47337l0,-42.47337l60.83526,0c46.90741,0 60.31158,-1.27951 58.54825,-5.58862c-1.25784,-3.07373 -9.83818,-23.47047 -19.06743,-45.32602c-17.39725,-41.19823 -17.39179,-52.24659 0.02688,-55.67119c8.66862,-1.70424 143.62872,129.24032 148.26757,143.85621c-44.95403,52.18671 -98.68933,106.81281 -148.18829,154.97751c-2.60997,0 -7.15958,-2.41428 -10.11037,-5.36508z",
+	"13": "m167.5984,129.81894c13.45454,0 26.90909,0 40.36363,0c0,13.45454 0,26.90909 0,40.36363c-13.45454,0 -26.90909,0 -40.36363,0c0,-13.45454 0,-26.90909 0,-40.36363zm-58.30304,0c14.9494,0 29.89909,0 44.8485,0c0,13.45454 0,26.90909 0,40.36363c-14.9494,0 -29.89909,0 -44.8485,0c0,-13.45454 0,-26.90909 0,-40.36363zm-53.81818,0c14.9494,0 29.89908,0 44.84848,0c0,13.45454 0,26.90909 0,40.36363c-14.9494,0 -29.89909,0 -44.84848,0c0,-13.45454 0,-26.90909 0,-40.36363zm-53.81818,0c14.9494,0 29.89908,0 44.84849,0c0,13.45454 0,26.90909 0,40.36363c-14.94941,0 -29.89908,0 -44.84849,0c0,-13.45454 0,-26.90909 0,-40.36363zm165.9394,83.23706c14.2021,-0.91132 28.40395,0.64389 42.60606,-0.26743c0.91125,-14.20201 0.48917,-28.40405 1.40042,-42.60606c13.29086,0 27.91505,0 41.20563,0c0,-13.45454 0,-26.9091 0,-40.36363c-13.45454,0 -26.90909,0 -40.36363,0c0,-14.94952 0,-29.899 0,-44.84848c-14.9494,0 -29.89908,0 -44.84848,0c0,-13.45454 0,-26.90909 0,-40.36363c14.9494,0 29.89908,0 44.84848,0c0,13.45454 0,26.90909 0,40.36363c13.29059,0 27.91478,-0.66666 41.20563,-0.66666c0.91125,14.20197 0.48918,29.0707 1.40044,43.27271c14.20209,0.91129 28.60425,-0.07731 42.80637,0.83398c0,13.29074 -0.20032,28.48132 -0.20032,41.77208c-14.9494,0 -29.89908,0 -44.84848,0c0,14.94951 0,29.89897 0,44.84848c-13.45454,0 -26.90909,0 -40.36363,0c0,13.45454 0,26.90909 0,40.36363c-14.9494,0 -29.89908,0 -44.84848,0c0,-13.29074 0,-29.0479 0,-42.33865z",
+	"14": "m158.38327,149.9911l-83.00266,-148.9972l149.24145,148.9972l-149.24145,148.99712l83.00266,-148.99712z",
+	"15": "m175.41861,150.04552l-148.89816,-149.05299l98.06119,0l148.89816,149.05299l-148.89816,149.05287l-98.06119,0l148.89816,-149.05287z",
+	"16": "m227.52928,183.22569c6.14276,-5.95375 12.01762,-12.81764 17.19296,-18.97911l-155.07133,-2.82724l-21.27044,24.3479l-67.38522,-2.09119c8.44345,-11.0853 17.69294,-24.10754 24.55062,-33.88853l-24.39403,-32.88164l71.89852,0l14.62907,20.54468l158.32403,0l-19.63887,-20.4987c6.06082,-6.45992 15.03049,-15.08081 19.89622,-19.60087l53.24701,52.24467l-53.36812,53.05513l-18.61044,-19.42511z",
+	"bent_up": "m1.00136,224.73827l204.13,0l0,-149.15997l-31.28999,0l62.57999,-74.57997l62.58002,74.57997l-31.29001,0l0,223.73997l-266.71,0z",
+	"chevron": "m0.99844,0.99688l223.49919,0l74.49986,149.00068l-74.49986,149.00134l-223.49919,0l74.49984,-149.00134l-74.49984,-149.00068z",
+	"corners": "m78.29672,150l-55.17469,-55.1747l0,27.58735l-22.12203,0l0,-121.41265l121.41265,0l0,22.12203l-27.58736,0l55.17471,55.17471l55.17471,-55.17471l-27.58736,0l0,-22.12203l121.41264,0l0,121.41265l-22.12204,0l0,-27.58735l-55.1747,55.1747l55.1747,55.17471l0,-27.58736l22.12204,0l0,121.41264l-121.41264,0l0,-22.12204l27.58736,0l-55.17471,-55.17468l-55.17471,55.17468l27.58736,0l0,22.12204l-121.41265,0l0,-121.41264l22.12203,0l0,27.58736l55.17469,-55.17471z",
+	"dotted": "m164.76302,54.29618c-12.89404,-14.08136 13.13254,-37.91006 24.83243,-21.67826c9.98653,14.06865 -12.21164,31.95572 -24.83243,21.67826zm34.52623,32.04741c-10.53665,-15.50334 18.2944,-32.06738 27.41472,-16.58083c10.82574,16.19412 -18.42853,34.68893 -27.41472,16.58083zm39.30569,38.77469c-13.16362,-8.91086 -0.08168,-29.46533 13.54875,-27.63215c18.93346,2.88981 13.87328,34.44158 -4.59297,32.89478c-3.58466,-0.41574 -6.77832,-2.45136 -8.95578,-5.26263zm32.87781,34.23642c-11.00845,-13.99648 14.37656,-32.37918 25.04797,-19.05171c11.60712,14.82527 -14.29718,34.39392 -25.04797,19.05171zm-63.84386,0.7675c-12.23796,-11.58463 5.72536,-30.30273 19.24007,-25.41679c19.63696,6.28566 5.03751,36.50668 -12.48737,29.64096c-2.41074,-1.14194 -4.56958,-2.71278 -6.7527,-4.22417zm-52.05359,0c-14.38365,-13.43323 11.89731,-35.50046 24.20743,-21.44815c12.48965,14.64734 -10.94827,35.43011 -24.20743,21.44815zm-51.41751,-0.7675c-11.01524,-13.99239 14.38364,-32.38554 25.04439,-19.04626c11.57417,14.84886 -14.25791,34.38168 -25.04439,19.04626zm-48.97159,0.7675c-14.38364,-13.43323 11.89733,-35.50046 24.20746,-21.44815c12.48962,14.64734 -10.94829,35.43011 -24.20746,21.44815zm-51.41319,-0.75569c-12.62148,-16.51503 21.51373,-34.53826 27.20482,-13.82039c4.20761,13.86485 -18.57945,25.93829 -27.20482,13.82039zm232.73729,36.71002c-12.26451,-12.7252 9.54947,-34.95583 22.63777,-23.37347c16.16324,11.53831 -5.25334,38.27226 -20.09267,25.93422c-0.83693,-0.86462 -1.69453,-1.70929 -2.5451,-2.56075zm-37.22105,31.5554c-10.33875,-14.74719 16.53384,-30.93315 26.24101,-17.10368c12.66234,14.69044 -12.76988,34.70573 -24.48114,20.0298l-1.75987,-2.92612zm-33.2933,39.2449c-11.17,-10.21844 4.17313,-26.31229 16.33257,-23.575c18.50797,4.77472 6.84483,34.45702 -10.13109,28.82402c-2.6304,-0.90369 -4.76476,-2.91159 -6.20148,-5.24902z",
+	"hand_2": "m166.23018,238.662c7.92778,-2.90976 14.43034,-5.61938 2.1153,-5.69868c-10.87593,1.46172 -39.01099,-9.28242 -16.4619,-14.56342c14.10701,-5.508 46.21144,7.21423 46.38257,-14.54736c-2.55197,-13.63786 -43.96396,-2.98952 -30.34076,-21.27969c15.00345,-6.1348 44.75407,8.31958 49.78708,-10.66391c-4.61371,-18.40675 -33.47118,-6.65964 -47.97568,-11.74664c-14.06097,2.90031 -17.76392,-15.58949 -1.98296,-12.79868c36.48125,-1.96817 73.21696,0.92035 109.57253,-3.09619c5.87265,-3.2529 10.21371,-23.26295 2.80267,-24.61046c-52.95885,-1.09735 -106.01129,-0.08873 -158.88631,-3.36192c-18.99625,-0.19729 -4.48207,-20.48157 9.55508,-15.71787c13.37119,-4.37856 18.67023,-15.85947 28.4838,-27.19597c5.01488,-24.77942 -19.08717,-15.58241 -28.93028,-8.33138c-10.99126,7.20572 -29.89664,22.16276 -39.92577,30.01463c-8.79154,6.3571 -29.0466,13.41131 -41.36795,21.93291c-10.53185,3.7428 -22.05687,1.87943 -32.40108,2.55152c0,33.57336 0,67.14623 0,100.71958c29.2655,12.743 60.06093,23.93646 92.50566,22.65599c19.00592,-0.07739 38.55775,0.63341 57.06799,-4.26245zm-120.57521,10.76822c-14.93961,-5.74022 -29.85212,-11.55359 -44.65637,-17.63553c0.70846,-41.92598 1.41691,-83.85243 2.12533,-125.77841c11.81984,-0.44887 29.35853,5.41407 37.78343,-3.21891c22.65079,-7.26991 37.35686,-23.34933 57.21348,-35.41785c13.97373,-10.98014 25.13529,-14.72766 39.56827,-23.05481c10.96249,-5.06954 16.89815,-2.48073 29.24257,-0.27045c5.38396,8.81045 12.06773,13.36412 8.59946,30.1482c-7.23705,3.64039 -16.6288,28.10783 -2.4068,28.30228c39.59416,3.79424 79.82585,-1.53866 119.10855,5.09266c9.78171,13.24281 11.64719,42.99407 -6.25568,51.39202c-17.13269,4.95341 -35.19667,2.49629 -52.7989,3.09193c-0.00107,12.52824 2.07022,28.51608 -11.83537,34.80946c-10.26779,13.39197 -10.98985,33.06551 -27.53502,42.86476c-13.91499,14.25851 -33.72333,18.66306 -53.04445,18.19296c-31.68189,0.4295 -65.02994,3.46667 -95.10849,-8.51738l0,-0.00095z",
+	"hand": "m136.98543,214.15889c-14.70618,-5.74251 -4.62521,-24.05643 -14.3905,-33.27538c-12.96347,-7.75244 -2.12349,-24.16507 -12.57821,-33.28812c-7.48801,-6.64952 -5.24203,-16.62421 -3.67915,-25.18983c-29.75101,-0.23549 -59.53337,0.62366 -89.25697,-0.78464c-15.11522,1.28053 -20.03182,-18.26941 -12.80666,-28.85114c7.00419,-11.24166 21.87759,-8.31262 33.12609,-9.4029c64.97946,-0.76864 129.97618,-0.61134 194.95673,0.02921c17.26189,0.80067 37.01695,-1.19489 50.6566,11.68779c16.24808,15.16693 16.0166,39.34441 16.04852,59.94771c-0.42267,19.21857 -2.90109,42.02173 -20.4863,53.46951c-16.36914,10.95175 -36.93741,7.66907 -55.55533,8.62302c-27.94264,-0.30014 -56.07063,1.04456 -83.86891,-2.2673l-2.16592,-0.69792l0,0zm69.33224,-10.55814c9.631,-11.23128 -3.5211,-20.50227 -14.65393,-17.55965c-16.14473,-0.10535 -32.65453,-1.7021 -48.52592,1.75482c-13.67432,5.19589 -4.85582,21.54512 7.46478,18.25877c18.04872,1.02443 36.47603,1.82143 54.28616,-1.68709l1.42891,-0.76686zm65.93199,-2.17656c15.66348,-8.69865 15.78064,-28.60548 16.25079,-44.24881c-0.34195,-16.50655 1.70639,-34.58434 -7.04581,-49.36581c-7.23798,-10.84158 -20.71933,-14.52557 -33.13705,-14.12024c-23.36646,0.0377 -47.0793,-1.82723 -70.16504,2.52512c-15.66467,3.36275 -22.23152,20.93031 -23.45795,35.19015c-0.48341,13.80043 -1.82124,28.00842 1.22505,41.56039c7.24641,5.02983 15.89499,-9.13847 19.17191,-15.4227c4.31766,-11.67575 -0.61995,-26.25061 8.10953,-36.19362c8.72269,-9.46424 24.96402,-8.53419 32.52521,1.88722c8.3812,9.23244 -0.48325,21.69592 1.82307,32.51563c4.15211,9.93069 -0.70021,19.45959 -0.85791,28.5067c4.13835,6.87068 2.87872,15.02933 1.61143,22.50597c16.21062,-0.57724 32.86133,1.70529 48.65034,-2.71872c1.84845,-0.69202 3.61401,-1.59238 5.29642,-2.62128zm-126.53741,-35.9437c2.18771,-13.69858 -18.65493,-12.59653 -20.49308,-1.57007c-4.38604,12.23279 17.61123,15.56906 20.78048,7.03215c0.03699,-1.82657 -0.14053,-3.64476 -0.2874,-5.46208zm62.45076,0.42249c1.41585,-11.79691 -20.5592,-11.91444 -24.75133,-3.63126c-2.34377,5.03215 -10.03961,15.25429 1.13329,12.59268c7.54675,-1.70357 25.12254,3.75204 23.61804,-8.96143zm-62.44263,-31.11197c-0.75351,-2.94205 3.03209,-10.28735 -1.13232,-9.92064c-9.20967,1.01493 -19.08115,-0.45296 -27.70964,3.18962c-7.77171,10.63712 5.24397,21.0274 15.9218,17.53934c7.79146,0.11475 13.91219,-1.24452 12.92017,-10.80832zm61.0041,7.53122c8.85812,-9.53879 -4.95708,-21.9593 -14.94496,-15.6684c-10.39732,5.40628 -7.29182,25.10663 6.58635,19.17703c2.96956,-0.54494 6.1384,-1.30057 8.35861,-3.50864zm-53.18405,-38.39041c2.00339,-3.50816 4.00681,-7.01634 6.01019,-10.52453c-44.99024,0.24061 -90.00227,-0.61648 -134.97418,0.73022c-12.21447,-3.32573 -22.07768,15.22181 -6.82234,18.35822c24.02138,3.10667 48.39057,1.52395 72.56345,1.97845c19.07089,-0.00607 38.14179,-0.01187 57.21268,-0.01793c2.0034,-3.50815 4.00681,-7.01634 6.01019,-10.52452z",
+	"inner": "m197.26169,150.29735l-74.64867,-74.64867l0,37.32433l-80.12502,0l0,-111.97301l215.02399,0l0,298.5947l-215.02399,0l0,-111.97301l80.12502,0l0,37.32433l74.64867,-74.64867z",
+	"left_right": "m0.99835,150.00092l86.49609,-86.49651l0,43.24814l125.35546,0l0,-43.24814l86.49605,86.49651l-86.49605,86.49605l0,-43.24803l-125.35546,0l0,43.24803l-86.49609,-86.49605z",
+	"left_up": "m0.99865,224.5l74.50004,-74.5l0,37.25l111.74991,0l0,-111.75l-37.25,0l74.5,-74.5l74.5,74.5l-37.25,0l0,186.25l-186.24989,0l0,37.25l-74.50005,-74.5z",
+	"pentagon": "m0.99791,0.9981l162.54547,0l135.45454,149.40899l-135.45454,149.40898l-162.54547,0z",
+	"recycle_3": "m28.22058,93.28644c0.00678,-2.58051 2.31667,-18.40222 5.13495,-35.15953c8.78786,-52.25238 8.91713,-52.48297 20.07468,-35.82898l6.60126,9.85321l19.30534,-9.74535c25.53492,-12.88995 56.00401,-17.65838 84.01221,-13.14781c11.88918,1.91477 24.50447,5.02692 28.034,6.91587c7.00751,3.7502 6.55832,6.97083 -4.61034,33.05528c-6.12129,14.29643 -6.70886,14.70388 -17.2827,11.98577c-17.99704,-4.62608 -47.30141,-3.16897 -61.44969,3.05553l-13.26538,5.83627l9.31132,9.7189c5.12125,5.34554 8.02238,10.51565 6.44702,11.48924c-1.57542,0.97362 -20.7427,2.87124 -42.59392,4.21677c-32.78424,2.01891 -39.72768,1.62653 -39.71874,-2.24516zm168.81314,144.07051l-14.20186,-18.81009l12.93088,-12.50398c13.30882,-12.86928 22.90733,-30.93761 27.13603,-51.08145l2.41319,-11.49524l-13.91847,2.22554c-7.65517,1.22421 -13.96558,1.06514 -14.02313,-0.35333c-0.26878,-6.62247 36.12752,-71.90508 39.66528,-71.14616c5.56261,1.19325 61.9985,50.07314 61.9985,53.6975c0,1.61765 -5.93121,3.88967 -13.18036,5.04884l-13.18039,2.10753l-1.30084,22.476c-1.66846,28.82635 -16.85831,62.09589 -38.00682,83.24434c-8.4704,8.47049 -16.91487,15.4008 -18.76544,15.4008c-1.85062,0 -9.75555,-8.46469 -17.56657,-18.81029zm-128.20031,52.72328c0,-2.07986 2.23119,-8.0961 4.95819,-13.36954c4.94765,-9.56766 4.91901,-9.61411 -13.52617,-21.86105c-28.85884,-19.16116 -50.30965,-53.17105 -57.05687,-90.46291l-2.21202,-12.22588l15.77176,-2.16168c32.51166,-4.45622 32.80855,-4.32152 39.31982,17.83711c4.39381,14.95265 9.79779,23.91347 21.44681,35.56244c8.5651,8.56514 16.76965,14.83324 18.23236,13.92926c1.46265,-0.90396 3.57973,-6.24536 4.70464,-11.86984c1.1249,-5.62448 3.47056,-10.22638 5.21256,-10.22638c3.99942,0 41.66188,59.38374 42.2598,66.63249c0.39931,4.84137 -19.96001,13.22382 -73.01952,30.06421c-3.38333,1.07379 -6.09135,0.25229 -6.09135,-1.84824z",
+	"turn_reverse": "m298.99997,168.62498c0,-51.43148 -133.41916,-93.12499 -297.99997,-93.12499l0,-74.49999l0,0c164.58081,0 297.99997,41.69347 297.99997,93.12499l0,74.49999c0,42.46484 -91.92749,79.55168 -223.49998,90.16789l0,37.25l-74.49999,-71.54289l74.49999,-77.45709l0,37.25l0,0c88.72033,-7.15858 161.96952,-26.67409 198.62153,-52.91789",
+	"u_turn": "m1.00059,299.00055l0,-167.62497l0,0c0,-72.00411 58.37087,-130.37499 130.375,-130.37499l0,0l0,0c34.57759,0 67.73898,13.7359 92.18906,38.18595c24.45006,24.45005 38.18593,57.61144 38.18593,92.18904l0,18.625l37.24997,0l-74.49995,74.50002l-74.50002,-74.50002l37.25,0l0,-18.625c0,-30.8589 -25.0161,-55.87498 -55.87498,-55.87498l0,0l0,0c-30.85892,0 -55.875,25.01608 -55.875,55.87498l0,167.62497z",
+	"up": "m1.49805,149.64304l148.50121,-148.00241l148.50121,148.00241l-74.25061,0l0,148.71457l-148.5012,0l0,-148.71457z",
+	"3_ways": "m1,159.61292l52.87097,-52.87097l0,26.43549l69.69355,0l0,-79.30646l-26.43549,0l52.87096,-52.87097l52.87097,52.87097l-26.43549,0l0,79.30646l69.69356,0l0,-26.43549l52.87096,52.87097l-52.87096,52.87097l0,-26.43549l-192.25807,0l0,26.43549l-52.87097,-52.87097z",
+	
+	"maximize_2": "m1,149.99998l67.05,-67.05l0,33.52501l48.425,0l0,-48.425l-33.52501,0l67.05,-67.05l67.04999,67.05l-33.52499,0l0,48.425l48.42502,0l0,-33.52501l67.04997,67.05l-67.04997,67.04999l0,-33.52499l-48.42502,0l0,48.42502l33.52499,0l-67.04999,67.04997l-67.05,-67.04997l33.52501,0l0,-48.42502l-48.425,0l0,33.52499l-67.05,-67.04999z",
+	"raph_download": "m149.92238,36.82233c-65.72484,0 -119.00005,53.27818 -119.00005,119c0,65.72183 53.27521,119 119.00005,119c65.7218,0 118.99995,-53.27817 118.99995,-119c0,-65.72182 -53.27815,-119 -118.99995,-119zm0,223.73889c-12.68407,0 -22.97548,-10.28841 -22.97548,-22.97537s10.28215,-22.97583 22.97548,-22.97583c12.69009,0 22.97223,10.28247 22.97223,22.97583s-10.28214,22.97537 -22.97223,22.97537zm0,-63.08578l-64.34113,-53.72815l28.40379,0l0,-71.87465l71.88103,0l0,71.87465l28.39413,0l-64.33783,53.72815z"
+	}
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/dialog_balloon.json
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/dialog_balloon.json	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/dialog_balloon.json	(revision 29468)
@@ -0,0 +1,14 @@
+{"data": {
+	"1": "m0.99786,35.96579l0,0c0,-19.31077 15.28761,-34.96524 34.14583,-34.96524l15.52084,0l0,0l74.50001,0l139.68748,0c9.05606,0 17.74118,3.68382 24.14478,10.24108c6.40356,6.55726 10.00107,15.45081 10.00107,24.72416l0,87.41311l0,0l0,52.44785l0,0c0,19.31078 -15.2876,34.96524 -34.14584,34.96524l-139.68748,0l-97.32507,88.90848l22.82506,-88.90848l-15.52084,0c-18.85822,0 -34.14583,-15.65446 -34.14583,-34.96524l0,0l0,-52.44785l0,0z",
+	"4": "m1,1l49.66667,0l0,0l74.5,0l173.83334,0l0,115.8889l0,0l0,49.66666l0,33.11111l-173.83334,0l-123.68433,97.37498l49.18433,-97.37498l-49.66667,0l0,-33.11111l0,-49.66666l0,0z",
+	"5": "m3.88165,296.34811l58.64952,-105.30074l0,0c-62.13446,-31.76456 -79.86445,-91.6022 -40.96117,-138.24044c38.90255,-46.63797 121.70818,-64.81269 191.29914,-41.98796c69.59094,22.8246 103.19446,79.17835 77.63046,130.19172c-25.56265,51.01335 -101.92546,79.99094 -176.41714,66.94487l-110.20081,88.39255z",
+	"6": "m4.33333,266.6662c0,-1.854 2.23757,-3.35571 5,-3.35571c2.76243,0 5,1.50171 5,3.35571c0,1.85394 -2.23757,3.35565 -5,3.35565c-2.76243,0 -5,-1.50171 -5,-3.35565zm10.25,-24.11072c0,-4.6351 5.59392,-8.38943 12.50001,-8.38943c6.90608,0 12.5,3.75433 12.5,8.38943c0,4.63489 -5.59392,8.38928 -12.5,8.38928c-6.90609,0 -12.50001,-3.75433 -12.50001,-8.38928zm23.75001,-36.55524c0,-12.81482 19.46685,-23.19473 43.50002,-23.19473c24.0331,0 43.49996,10.37991 43.49996,23.19473c0,12.81473 -19.46686,23.19455 -43.49996,23.19455c-24.03317,0 -43.50002,-10.37982 -43.50002,-23.19455zm-37.33334,-104.99994c0,-55.2486 66.67956,-100 149,-100c82.32047,0 149,44.7514 149,100c0,55.24866 -66.67953,100 -149,100c-82.32044,0 -149,-44.75134 -149,-100z",
+	"scream": "m299.67374,132.67729l-35.72574,1.97192l-9.55817,48.04506l-31.60561,-11.61551l-45.83566,36.86661l-17.45096,-21.51509l-146.98414,92.00807l81.6677,-102.60858l-67.83573,-13.33963l21.22697,-19.84731l-46.57336,-36.42733l33.47025,-8.80944l-10.52427,-47.94958l35.08694,5.02536l28.86619,-44.2482l25.5638,17.26465l59.09183,-26.49832l7.92432,24.02253l70.55626,-0.33542l-12.23108,23.15343l59.61954,25.93398l-28.50317,14.93327l29.75409,43.96953z",
+	"thought": "m12,1c-6.094,0 -11,4.906 -11,11l0,147c0,6.09399 4.906,11 11,11l49.15625,0c-2.03143,2.32526 -3.15625,4.84886 -3.15625,7.5c0,11.32597 20.36188,20.5 45.5,20.5c25.13812,0 45.5,-9.17403 45.5,-20.5c0,-2.65114 -1.12482,-5.17474 -3.15625,-7.5l142.15625,0c6.09399,0 11,-4.90601 11,-11l0,-147c0,-6.094 -4.90601,-11 -11,-11l-276,0zm54,199c-13.81215,0 -25,5.37016 -25,12c0,6.62984 11.18785,12 25,12c13.81216,0 25,-5.37016 25,-12c0,-6.62984 -11.18784,-12 -25,-12zm-25,30c-7.73481,0 -14,4.02762 -14,9c0,4.97238 6.26519,9 14,9c7.73481,0 14,-4.02762 14,-9c0,-4.97238 -6.26519,-9 -14,-9zm-24,22c-4.97238,0 -9,2.23756 -9,5c0,2.76242 4.02762,5 9,5c4.97238,0 9,-2.23758 9,-5c0,-2.76244 -4.02762,-5 -9,-5z",
+	  "raph_chat": "m149.40149,33.90986c-80.3511,0 -145.50004,43.31243 -145.50004,96.74474c0,30.56227 21.38675,57.79297 54.68462,75.51593c-4.73782,15.71271 -14.19292,33.11575 -32.46717,48.50804c0,0 42.65602,-2.82466 72.78463,-33.39108c1.7345,0.42561 3.52987,0.74596 5.28078,1.13896c-1.64549,-4.91217 -2.61422,-10.01866 -2.61422,-15.33182c0,-36.04973 40.11905,-64.27756 91.35863,-64.27756c36.80342,0 67.77124,14.61842 82.34897,36.18755c12.40991,-14.23764 19.62378,-30.72852 19.62378,-48.3623c0,-53.42003 -65.14893,-96.73246 -145.49997,-96.73246zm124.25104,173.19301c0,-29.63838 -36.13483,-53.68361 -80.73599,-53.68361c-44.57683,0 -80.73203,24.04523 -80.73203,53.68361c0,29.65428 36.1552,53.68753 80.73203,53.68753c9.87251,0 19.27516,-1.23618 28.01714,-3.39209c16.71373,16.96906 40.38206,18.52942 40.38206,18.52942c-10.13583,-8.54349 -15.3721,-18.19742 -18.00662,-26.92308c18.46475,-9.82388 30.34341,-24.93292 30.34341,-41.90178z",
+	  "raph_bubble": "m151.46498,38.88166c-77.59646,0 -140.49998,47.18048 -140.49998,105.37873c0,19.88803 7.43651,38.46727 20.23268,54.33186l-20.23268,44.35922l56.33016,-14.46355c23.47343,13.21898 52.55724,21.14758 84.16982,21.14758c77.59654,0 140.50002,-47.18053 140.50002,-105.37512c0,-58.19824 -62.90347,-105.37873 -140.50002,-105.37873z",
+    "raph_codetalk": "m151.43494,41.81969c-77.0443,0 -139.49994,46.84459 -139.49994,104.6212c0,19.74286 7.38358,38.19347 20.08679,53.95245l-20.08679,44.03983l55.92923,-14.34583c23.30623,13.10641 52.18307,20.98224 83.5707,20.98224c77.04425,0 139.50006,-46.84476 139.50006,-104.62869s-62.45581,-104.6212 -139.50006,-104.6212zm-22.87875,144.79852l-23.29687,23.27774l-64.06922,-64.0787l64.05966,-64.09371l23.30643,23.33098l-40.76296,40.76273l40.76296,40.80096zm70.45883,23.24741l-23.28729,-23.30817l40.77419,-40.75514l-40.77419,-40.77059l23.28729,-23.30818l64.06931,64.03304l-64.06931,64.10904z",
+    "raph_talkq": "m151.95413,37.83469c-77.87229,0 -140.99913,47.34782 -140.99913,105.75328c0,19.94707 7.46298,38.60376 20.30468,54.52449l-20.30468,44.51276l56.5302,-14.49918c23.55888,13.25453 52.74399,21.2072 84.46893,21.2072c77.87204,0 141.00085,-47.3481 141.00085,-105.74527s-63.12881,-105.75328 -141.00085,-105.75328zm8.74214,165.54159l-19.83006,0l0,-19.02583l19.83006,0l0,19.02583zm-0.96628,-33.04105l-17.89746,0l-1.77126,-81.41087l21.28053,0l-1.61182,81.41087z",
+    "raph_talke": "m151.46997,37.82469c-78.14881,0 -141.49997,47.50852 -141.49997,106.12126c0,20.02579 7.4895,38.74088 20.37584,54.71835l-20.37584,44.67868l56.73113,-14.55873c23.6405,13.30168 52.9314,21.29042 84.76884,21.29042c78.149,0 141.50003,-47.51628 141.50003,-106.12872s-63.35103,-106.12126 -141.50003,-106.12126zm9.92621,166.12944l-19.90253,0l0,-19.09268l19.90253,0l0,19.09268zm0,-39.48112l0,6.31543l-19.90253,0l0,-7.77286c0,-23.45735 26.69424,-27.17406 26.69424,-43.83023c0,-7.60336 -6.79172,-13.43297 -15.69612,-13.43297c-9.21872,0 -17.31352,6.79367 -17.31352,6.79367l-11.32195,-14.0807c0,0 11.15999,-11.65153 30.41292,-11.65153c18.29469,0 35.27467,11.32766 35.27467,30.41285c0.0097,26.71156 -28.14772,29.78053 -28.14772,47.24634z"
+	}
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/flowchart.json
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/flowchart.json	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/flowchart.json	(revision 29468)
@@ -0,0 +1,20 @@
+{"data": {
+	"manual_input": "m1,103.64394l298,-30.9037l0,154.51852l-298,0z",
+	"callout_left_right": "m1,150.0006l58.10869,-58.1087l0,29.05434l46.81141,0l0,-87.16304l87.1598,0l0,87.16304l46.8114,0l0,-29.05434l58.1087,58.1087l-58.1087,58.10869l0,-29.05435l-46.8114,0l0,87.16306l-87.1598,0l0,-87.16306l-46.81141,0l0,29.05435l-58.10869,-58.10869z",
+	"card": "m1,60.5l59.5,-59.5l238.5,0l0,298l-298,0l0,-238.5z",
+	"collate": "m0,1l299,0l-149.5,149l149.5,149l-299.00031,0l149.50031,-149l-149.5,-149z",
+		"terminal": "m48.94167,99.12235l202.11729,0l0,0c26.47794,0 47.9425,22.7794 47.9425,50.8792c0,28.09979 -21.46457,50.87918 -47.9425,50.87918l-202.11729,0l0,0c-26.47791,0 -47.9425,-22.77939 -47.9425,-50.87918c0,-28.09981 21.46459,-50.8792 47.9425,-50.8792z",
+	"connector_offpage": "m0.99775,0.99775l297.99984,0l0,238.39982l-149.00002,59.60002l-148.99999,-59.60002l0.00017,-238.39982z",
+	"data_stored": "m50.83397,0.99813l249.16667,0c-27.52219,0 -49.83333,66.78392 -49.83333,149.16604c0,82.38213 22.31114,149.16603 49.83333,149.16603l-249.16667,0l0,0c-27.52219,0 -49.83333,-66.78391 -49.83333,-149.16603c0,-82.38212 22.31114,-149.16604 49.83333,-149.16604z",
+	"data": "m1.00038,249.33351l59.60001,-198.66668l238.40001,0l-59.60001,198.66668z",
+	"decision": "m0.99837,149.99953l148.79352,-102.86476l148.79387,102.86476l-148.79387,102.86476l-148.79352,-102.86476z",
+	"delay": "m1,1l149,0l0,0c82.29044,0 149,66.70957 149,149c0,82.29044 -66.70956,149 -149,149l-149,0z",
+	"display": "m1,149.99924l49.66672,-97.42307l198.66612,0c27.43034,0 49.66716,43.61774 49.66716,97.42307c0,53.80476 -22.23682,97.42308 -49.66716,97.42308l-198.66612,0l-49.66672,-97.42308z",
+	"document": "m1.00064,1.00098l298,0l0,242.19891c-149,0 -149,92.28223 -298,39.84915z",
+	"or_junction": "m0.99865,149.9991l0,0c0,-82.29043 66.70957,-149 149.00001,-149l0,0c39.51724,0 77.41597,15.69817 105.3589,43.64109c27.94292,27.94292 43.64107,65.84166 43.64107,105.35891l0,0c0,82.29041 -66.70956,148.99998 -148.99997,148.99998l0,0c-82.29044,0 -149.00001,-66.70958 -149.00001,-148.99998zm149.00001,-149l0,297.99998m-149.00001,-148.99998l297.99998,0",
+	"preparation": "m1.00063,150.00006l59.58485,-82.24058l178.75446,0l59.58505,82.24058l-59.58505,82.24086l-178.75446,0l-59.58485,-82.24086z",	"sequential_data_storage": "m150,299l0,0c-82.29043,0 -149,-66.70955 -149,-149l0,0c0,-82.29043 66.70957,-149 149,-149l0,0c39.51726,0 77.41599,15.69817 105.3589,43.64108c27.94292,27.94293 43.6411,65.84165 43.6411,105.35892l0,0c0,39.51726 -15.69818,77.41599 -43.6411,105.3589l43.6411,0l0,43.6411z",
+	"sort": "m-0.0038,150.00102l299.00334,0m-299.00334,-0.00002l149.50209,-150.00059l149.50131,150.00059l-149.50131,150.00018l-149.50209,-150.00018z",
+	"punched_tape": "m1.00047,30.80047l0,0c0,16.45808 33.35479,29.8 74.50001,29.8c41.1452,0 74.49998,-13.34192 74.49998,-29.8l0,0c0,-16.45809 33.3548,-29.8 74.50002,-29.8c41.14522,0 74.49998,13.34192 74.49998,29.8l0,238.4c0,-16.45808 -33.35477,-29.80002 -74.49998,-29.80002c-41.14522,0 -74.50002,13.34193 -74.50002,29.80002c0,16.45807 -33.35478,29.79999 -74.49998,29.79999c-41.14522,0 -74.50001,-13.34192 -74.50001,-29.79999z",
+	"wave": "m1,37.20809c99.33355,-125.42461 198.66708,125.4246 298.00061,0l0,225.76426c-99.33353,125.42462 -198.66706,-125.42459 -298.00061,0z"
+	}
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/game.json
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/game.json	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/game.json	(revision 29468)
@@ -0,0 +1,13 @@
+{"data": {
+	"cards_clubs": "m107.57338,275.50809c15.10838,-15.77673 27.93053,-34.56763 33.34637,-55.90254c-16.19595,12.31328 -31.05006,32.11845 -53.64258,31.36813c-17.05595,0.97891 -37.37346,0.99548 -49.37947,-13.26945c-26.83,-21.5751 -34.03729,-64.69673 -12.00568,-92.15404c15.07669,-19.82526 41.4039,-28.23172 65.56467,-25.25816c15.22319,-6.45935 -2.97749,-22.81502 -4.80785,-33.02267c-11.33012,-37.02704 15.36169,-81.44029 54.60988,-85.70572c28.15103,-4.0415 55.67099,14.18231 69.44571,37.83293c7.4856,16.54877 3.58533,35.33045 1.83887,52.49866c-5.88113,8.62766 -20.94342,29.50022 0.55099,27.85616c21.2518,-0.33633 43.69397,5.90277 57.70761,22.8026c20.49747,22.76067 22.37766,60.37286 1.7551,83.63007c-10.90869,14.16582 -27.2782,25.50356 -45.80551,24.87234c-18.13391,1.83067 -37.77023,-2.10338 -50.62924,-15.92061c-5.48438,-3.84309 -18.92297,-18.36311 -18.91833,-15.17883c13.43222,27.98354 28.62112,57.04413 55.49167,74.38477c9.60062,7.71954 -14.62323,2.41226 -20.4874,3.98563c-35.53012,0.0314 -71.06009,0.06342 -106.59021,0.09497c7.31842,-7.63818 14.6373,-15.27603 21.9554,-22.91422z",
+	"cards_diamonds": "m34.92883,153.9321c25.56111,-56.62673 71.64644,-104.95768 110.85236,-152.92286c45.60773,30.78102 85.01025,98.49872 119.29071,145.66264c-30.57587,54.55344 -74.58923,104.23671 -114.23947,153.1615c-42.74368,-44.7616 -79.29648,-95.90262 -115.90359,-145.90128z",
+	"cards_hearts": "m106.76112,245.09012c-77.74644,-57.80281 -105.54389,-94.36783 -105.76917,-139.13003c-0.20544,-40.80623 34.10907,-80.19025 69.67002,-79.96313c17.75755,0.11364 55.84863,15.13257 69.33681,27.33919c6.79614,6.1504 10.01512,5.54391 25.146,-4.73779c41.17987,-27.98239 81.39243,-28.56973 107.43585,-1.56907c41.62292,43.15273 34.04501,94.68497 -21.78392,148.13782c-29.68187,28.41864 -94.50056,78.8349 -101.35565,78.8349c-2.08591,0 -21.29187,-13.01038 -42.67994,-28.9119z",
+	"cards_spades": "m92.84135,287.13989c18.3756,-17.73279 31.81261,-40.18849 43.07161,-62.94162c6.87787,-9.075 0.36623,-17.01425 -9.00183,-9.3188c-24.07579,16.07495 -56.84848,21.58751 -82.91551,6.92194c-29.46779,-15.23779 -42.75618,-51.47162 -36.07021,-83.04361c4.23415,-31.99545 27.52112,-57.07481 52.80524,-75.08997c29.04437,-20.7771 60.40868,-38.61331 86.95355,-62.67224c11.08365,0.22219 19.42508,17.61496 31.35349,22.21747c31.67316,23.59131 69.20874,40.95643 94.15042,72.50237c12.60098,17.9752 19.78281,40.10946 20.58459,61.98948c-3.83926,29.67093 -21.5314,60.96272 -52.04169,69.41241c-26.37521,7.98038 -53.51129,-2.14038 -76.49545,-15.01619c-2.80743,-0.60251 -13.10471,-8.7151 -9.02362,-2.41039c13.74066,28.19803 28.79581,56.19804 50.59952,79.09325c1.28156,2.89285 11.33243,9.75613 5.98334,9.64709c-44.76935,0 -89.53856,0 -134.30794,0c4.78471,-3.7637 9.5696,-7.5275 14.35449,-11.2912z",
+	"chess_bishop": "m61.92021,296.91153c0.43627,-9.82327 20.22808,-4.98053 9.33225,-14.55078c3.63447,-11.80536 14.91982,-19.66748 21.741,-29.79436c5.22913,-8.62125 17.00826,-19.01086 11.31252,-29.67047c-10.46021,-5.58662 -7.49181,-18.00824 5.30239,-15.28014c8.2272,-7.58801 8.79371,-20.26302 11.57766,-30.59467c2.52694,-12.36574 4.07327,-24.95554 3.66998,-37.5896c-14.99698,0.03661 -30.27584,-0.68196 -44.73978,-4.74928c2.8019,-11.20453 20.86148,-8.79659 28.26084,-15.67982c-6.87532,-6.18329 13.89957,-5.56496 8.46355,-15.34472c-0.37302,-11.20033 -9.19685,-14.44135 -16.26585,-22.60765c-9.44371,-12.76132 5.36173,-25.51221 13.58463,-34.13964c9.16566,-9.37672 19.64847,-19.36716 22.45389,-32.62941c-3.77451,-3.10155 -12.3967,-7.54239 -3.59866,-11.78228c12.01596,-2.03703 24.83499,-2.28521 36.61118,1.05654c7.81644,7.61585 -11.93045,8.03119 -3.43417,17.63365c10.07373,12.07176 -3.50795,18.30174 -11.52704,25.27969c-4.66763,5.89621 -18.59915,13.67189 -16.20224,19.78346c13.63968,-0.47554 21.5871,-13.67976 31.31615,-21.49704c10.67101,-13.68708 20.99446,8.43092 27.81822,15.94714c8.40642,11.39094 2.60674,26.70086 -10.05556,31.59287c-6.28001,6.46729 -10.44972,24.88914 4.57674,22.14657c8.72636,3.17196 -8.52979,3.51371 1.37608,6.446c6.58298,2.52787 32.25821,8.30554 18.1142,16.0547c-12.00471,2.71368 -24.40523,2.6017 -36.6002,1.50584c-0.75204,18.52477 1.89484,36.97644 7.35446,54.6958c1.35513,5.04123 2.71027,10.08244 4.06541,15.12361c6.52129,-0.129 19.98573,-1.55484 13.76321,9.18311c-13.08994,7.21928 -5.0789,22.41203 2.17738,31.05447c8.99446,11.37192 22.40833,22.01788 22.98288,37.58719c3.59734,2.14404 15.56946,8.03415 12.10645,12.64545c-57.30759,-0.2937 -114.6481,0.84897 -171.9265,-1.25046l-1.98901,-0.18246l-1.62205,-0.39337l0,0z",
+	"chess_king": "m75.6993,294.60599c-8.08068,-9.43317 12.65705,-9.68567 9.39906,-20.14252c5.95673,-13.85672 21.44485,-22.24414 23.72572,-37.99019c-6.28166,-4.37628 -9.89445,-14.96013 2.0899,-13.70361c8.78859,-6.61539 7.6902,-20.15297 10.33321,-30.0876c2.47588,-16.03471 3.03656,-32.26408 4.10001,-48.43053c-10.16894,-0.78108 -20.58942,-0.23701 -30.49778,-2.84268c0.28501,-10.75136 20.44619,-6.62604 21.3638,-16.77121c14.65907,-0.2649 0.81196,-22.15992 -5.15776,-27.38371c-7.64118,-8.81222 -12.7306,-22.72323 -6.92168,-33.60618c8.30865,-5.52043 27.09519,-2.1601 26.24604,-16.66769c-5.65058,-3.22095 -12.82484,-1.17552 -19.15805,-1.74514c0.38948,-6.7649 0.77895,-13.52979 1.16843,-20.29469c8.37558,-0.64424 16.75118,-1.28853 25.12676,-1.93283c-4.25133,-4.41846 -10.61392,-7.6702 -12.20608,-13.92034c5.41558,-8.90246 18.46751,-8.1166 27.81776,-8.03243c9.09207,-0.62713 25.66919,5.43749 13.27614,15.20592c-1.00447,2.39887 -10.78024,8.36352 -4.73895,7.71326c7.73515,0 15.47028,0 23.20541,0c-0.02223,6.6133 -0.20001,13.29232 1.35312,19.76423c-5.90448,4.39723 -25.05112,-3.75612 -19.59946,9.81149c6.13853,5.67249 15.53992,5.52279 23.32581,8.02098c4.54138,0.45371 8.15405,1.63713 6.5175,6.94557c0.85359,9.85596 -1.63307,19.77049 -8.40776,27.25217c-4.79567,7.80693 -15.56667,17.58031 -12.3781,26.61691c6.03265,-0.98199 10.87871,2.97905 6.06032,7.43356c4.94479,3.66121 22.35728,2.82278 18.59119,11.98875c-8.82205,2.92029 -18.29916,1.70366 -27.45192,2.00166c2.43703,25.01987 5.80666,50.04211 11.43709,74.54305c3.28979,5.43672 16.35808,9.61523 5.63309,16.70296c-4.00256,13.19919 8.78183,23.08223 16.81097,31.55379c8.82797,6.61176 4.54482,19.91519 17.0338,22.03693c9.83562,9.52774 -13.5036,9.27408 -19.49568,9.29486c-39.66827,0.42773 -79.37933,1.02615 -119.03208,-0.25211c-3.24605,-0.40967 -7.25645,-0.31595 -9.56982,-3.08264z",
+	"chess_knight": "m100.17753,299.2356c-10.0382,0.34137 -24.72987,-4.84531 -14.46609,-16.41525c11.17445,-4.40472 -1.98608,-19.00409 9.21265,-25.88123c8.98889,-12.79953 21.20518,-24.48807 24.89179,-40.11865c-0.57252,-10.60066 -13.22608,-16.87427 -7.18922,-28.60765c-5.92265,-18.77635 -4.55389,-40.38806 6.25748,-57.26643c9.18032,-15.67659 20.32635,-32.28713 19.15084,-51.25797c-11.5139,4.80804 -23.70148,9.0206 -36.37307,6.83708c-11.91311,-1.1064 -22.59742,8.54017 -34.74928,3.29494c-12.31807,-2.55921 -19.64501,-19.02957 -10.4606,-28.65753c10.03679,-8.57325 24.78339,-8.84916 34.35549,-18.41713c12.62932,-10.46186 24.31081,-24.61204 41.71716,-26.46155c7.69322,-1.76131 10.99294,-9.49197 15.25148,-15.2854c3.53894,9.18849 9.69408,17.31353 18.95801,21.387c18.83824,10.9118 23.5276,33.98066 30.47462,52.94444c5.13654,14.85179 9.41592,30.35814 18.01733,43.6171c0.09145,6.36343 -9.56343,9.05308 -3.04225,16.51302c3.39153,20.2325 3.53752,40.95071 3.23686,61.41966c-5.72005,10.01691 -10.93028,21.19722 -3.29993,32.69295c5.09689,14.05096 17.7905,23.26645 24.03563,36.52565c3.53024,6.8656 -6.88226,16.83319 6.09091,15.10654c11.84755,6.2681 2.28101,21.56821 -9.50232,17.11713c-44.15834,1.12289 -88.41394,2.24417 -132.5675,0.9133z",
+	"chess_pawn": "m76.17518,297.98557c-10.50418,1.59836 -25.59558,-8.37918 -12.29734,-17.44669c11.25366,-5.8967 0.45475,-21.25174 12.35514,-28.71019c12.10069,-16.52 24.98341,-33.40712 31.01369,-53.22789c-0.84142,-9.49573 -19.64921,-25.21422 -0.595,-28.29408c15.7114,1.82648 9.96503,-21.69583 15.39529,-31.88779c3.26528,-15.46995 5.63882,-31.19783 5.05293,-47.04268c-10.94164,-0.30554 -22.10724,0.96841 -32.83411,-1.63306c-6.84238,-8.98132 15.45903,-13.45317 19.13895,-21.55999c7.72121,-11.65172 -11.3031,-24.52544 -3.15941,-38.29919c5.20168,-20.85055 29.26575,-34.36854 49.62741,-26.73076c21.08499,5.46792 36.67119,30.37529 26.64961,51.09357c-0.80009,3.99703 -7.062,9.17959 -4.97066,12.36269c9.12987,6.33601 19.70087,11.85771 25.48528,21.64108c-8.18987,5.93826 -21.89375,1.4159 -32.1122,4.23674c-9.29645,8.24593 -0.11353,25.10609 0.36266,36.41936c2.90009,12.9261 5.46037,25.96617 8.78381,38.77452c6.98657,2.72525 21.33679,5.88095 13.4649,17.20207c-11.22217,9.11032 -5.7289,23.62137 0.60231,33.84465c7.87996,15.78793 21.40668,27.84862 29.69345,43.27188c3.07736,7.12057 -7.92374,19.7316 5.78708,16.78259c14.86404,3.15744 5.96938,23.76761 -7.3875,18.8981c-49.21407,1.73288 -98.52922,2.43631 -147.74446,0.51953l-2.31185,-0.21448l0,0z",
+	"chess_queen": "m59.54884,298.46313c-11.18457,2.51251 -19.80814,-14.30008 -5.94004,-16.129c12.20336,0.23074 -3.0349,-11.94995 7.98012,-16.05304c12.67021,-12.36537 25.23749,-25.26018 33.3575,-41.17609c-4.09126,-5.42482 -10.84344,-10.60782 -9.96117,-18.03085c7.964,-2.71161 19.82806,-0.87375 20.29981,-13.44502c7.24239,-22.68985 9.1741,-46.67986 10.76167,-70.3136c-7.99255,-6.33596 -24.45116,-0.33371 -35.62089,-3.56097c-16.94488,-4.5746 6.31873,-13.33291 13.78075,-12.6113c6.70493,0.01006 16.63324,-4.12222 5.41084,-7.2804c9.46686,-0.43687 23.08297,-12.44518 7.51486,-16.77373c11.54188,-8.28655 2.64816,-26.31929 -2.17102,-36.68976c-7.265,-12.52285 -19.21146,-21.59242 -32.71435,-26.42871c-2.18616,-12.77 18.63421,-8.99565 27.07909,-9.65835c12.78728,0.48775 25.82639,-0.15282 36.96732,-7.11507c15.05278,-6.96464 27.8495,4.65901 41.61934,7.11611c13.92807,0.89699 28.41634,-2.50577 41.97807,1.44028c4.20209,2.98911 11.18788,7.71034 2.77457,9.97613c-16.06789,8.94404 -31.07338,22.15693 -35.10127,40.92605c-6.0766,10.44077 4.6955,19.50048 -5.15381,26.98807c-0.10249,8.80961 22.85634,10.04067 10.00395,14.37878c8.80815,4.77542 27.69864,1.76332 29.62625,12.3696c-7.99612,6.2903 -19.2092,3.80788 -28.79007,4.39512c-3.2489,1.10706 -11.41316,-2.70125 -10.17032,2.89742c-0.6366,25.08775 5.87923,49.75521 12.1806,73.83221c0.00804,11.79608 29.09497,5.10777 12.92737,18.49597c-11.94247,10.28146 5.56685,24.68452 11.63272,33.82986c8.25099,10.03221 22.89711,15.11021 21.67468,29.8362c8.40468,0.60507 18.40166,13.69095 6.78131,16.95151c-62.8902,1.31946 -125.82766,2.22778 -188.72791,1.83258z",
+	"chess_rock": "m70.40736,299.11804c-15.60727,2.87628 -15.90823,-19.81082 -1.8931,-20.53482c-4.2011,-9.73361 -0.98556,-21.67557 5.22356,-30.68398c8.90442,-15.05035 22.29623,-30.00999 19.52936,-48.8515c-0.95786,-9.8022 -13.10349,-27.37677 5.72565,-24.85997c5.09087,-9.77498 2.13017,-24.16621 5.9483,-35.39389c3.33424,-21.28385 10.75552,-43.9948 2.86147,-65.09612c-4.97705,-11.23243 -17.62387,-18.62589 -16.26645,-32.35733c-1.42947,-13.39034 -0.95647,-26.88279 0.60455,-40.23392c6.07738,0.50975 12.84039,-1.27954 18.38155,1.475c-0.04153,12.96106 12.26991,10.08973 10.7935,-0.92486c3.23881,-1.28251 8.60017,-0.18413 12.6562,-0.55014c18.03256,0 36.06522,0 54.09778,0c-2.06311,7.51434 3.5195,17.19948 10.5887,8.35272c-1.93379,-11.75267 14.25911,-7.86334 10.37854,2.24694c0.22855,13.39515 1.87041,27.25403 -1.89201,40.29753c-6.12787,5.2086 -6.22449,15.45995 -13.90137,21.60233c-6.16908,11.51656 -3.45045,25.43306 -2.7644,37.9428c2.61279,18.51363 6.92676,36.79671 8.00221,55.52328c-0.76923,10.18126 20.18948,7.18474 11.15244,19.71645c-9.87662,8.41151 -4.0954,22.61668 -0.18413,32.66171c7.71916,17.36203 23.99019,32.95758 21.5343,53.32025c-1.94743,8.89606 14.16618,5.88821 9.97758,17.34372c-0.12151,14.11871 -21.10172,5.04239 -30.39526,8.00793c-46.7146,0.56656 -93.44374,1.44144 -140.159,0.99585z"
+	}
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/math.json
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/math.json	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/math.json	(revision 29468)
@@ -0,0 +1,8 @@
+{"data": {
+	"divide": "m150,0.99785l0,0c25.17819,0 45.58916,20.41097 45.58916,45.58916c0,25.17821 -20.41096,45.58916 -45.58916,45.58916c-25.17822,0 -45.58916,-20.41093 -45.58916,-45.58916c0,-25.1782 20.41093,-45.58916 45.58916,-45.58916zm0,296.25203c-25.17822,0 -45.58916,-20.41095 -45.58916,-45.58917c0,-25.17819 20.41093,-45.58916 45.58916,-45.58916c25.17819,0 45.58916,20.41096 45.58916,45.58916c0,25.17822 -20.41096,45.58917 -45.58916,45.58917zm-134.06754,-193.71518l268.13507,0l0,91.17833l-268.13507,0z",
+	"minus": "m0.99887,102.39503l297.49445,0l0,95.2112l-297.49445,0z",
+	"not_equal": "m40.81188,62.2131l103.7978,0l22.27972,-61.2131l65.67503,23.90375l-13.5795,37.30935l40.20317,0l0,69.88993l-65.64099,0l-12.71893,34.94495l78.35992,0l0,69.88991l-103.79779,0l-22.27972,61.21309l-65.67503,-23.90378l13.57949,-37.30933l-40.20319,0l0,-69.88991l65.64102,0l12.71894,-34.94498l-78.35995,0z",
+	"times": "m1.00089,73.36786l72.36697,-72.36697l76.87431,76.87368l76.87431,-76.87368l72.36765,72.36697l-76.87433,76.87431l76.87433,76.87431l-72.36765,72.36765l-76.87431,-76.87433l-76.87431,76.87433l-72.36697,-72.36765l76.87368,-76.87431l-76.87368,-76.87431z",
+	"plus": "m1.00211,102.40185l101.39974,0l0,-101.39975l95.45412,0l0,101.39975l101.3997,0l0,95.45412l-101.3997,0l0,101.3997l-95.45412,0l0,-101.3997l-101.39974,0z"
+	}
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/misc.json
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/misc.json	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/misc.json	(revision 29468)
@@ -0,0 +1,6 @@
+{"data": {
+	
+
+
+	}
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/music.json
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/music.json	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/music.json	(revision 29468)
@@ -0,0 +1,21 @@
+{"data": {
+	"clef_alto": "m51.25065,150.28749c0,-49.53207 0,-99.06413 0,-148.5962c11.59261,0 23.18523,0 34.77784,0c0,99.06413 0,198.12827 0,297.1924c-11.59261,0 -23.18522,0 -34.77784,0c0,-49.53209 0,-99.06413 0,-148.59621zm51.37634,0c0,-49.53207 0,-99.06413 0,-148.5962c8.48285,-2.46703 12.93837,1.84261 11.08508,10.0007c0.12527,45.40251 0.25053,90.80502 0.37581,136.20751c21.44767,-15.32626 29.57346,-41.86327 36.21976,-66.10667c3.81448,15.78812 9.88112,35.01518 27.29865,40.16045c16.60112,4.98381 31.30354,-10.63891 31.13045,-26.64445c2.89955,-20.45341 3.30077,-41.70258 -1.14742,-61.93042c-4.16455,-12.79745 -16.64639,-23.36595 -30.52771,-22.52039c-11.42384,-5.25948 -24.23628,10.96936 -9.59547,16.90924c12.31264,13.08186 -1.99968,35.47687 -19.11742,30.23324c-16.59583,-3.55596 -21.00951,-25.43777 -11.40723,-37.80838c13.77419,-17.97563 39.16574,-20.24264 60.03438,-17.62625c27.15413,3.08944 47.80745,27.56302 50.7352,54.02297c3.73869,23.61245 -2.35521,50.29027 -22.12251,65.37829c-16.57411,13.95533 -40.93645,15.69794 -60.41183,7.1722c-4.73631,7.1261 -9.47264,14.25217 -14.20895,21.37825c4.65338,6.95274 9.30673,13.90549 13.96008,20.8582c23.58311,-10.57065 54.40877,-5.07518 69.99907,16.43117c21.95821,28.96715 17.67499,75.52599 -10.84692,98.64314c-17.91376,14.62869 -43.09233,14.67899 -64.38158,8.83109c-16.11131,-4.2995 -31.82996,-19.966 -26.84735,-37.82117c2.51375,-15.55998 23.9128,-21.41389 34.33803,-9.83356c14.19543,12.82462 -6.37968,25.74036 -5.32516,38.10141c15.79561,11.97195 41.38054,0.70062 45.05746,-18.39487c5.84576,-20.96526 4.47285,-43.25116 1.61388,-64.56879c-1.53316,-14.33195 -14.00139,-28.78069 -29.45882,-24.78352c-16.25957,3.69221 -24.37509,20.62003 -27.1602,35.64745c-3.41434,11.00523 -4.50349,-10.5222 -7.16806,-14.04636c-5.53896,-17.66304 -15.20212,-35.01096 -30.07851,-46.1468c-1.53252,4.76282 -0.13866,10.70403 -0.62897,15.96893c-0.11874,43.15994 -0.2375,86.31984 -0.35623,129.47978c-8.48793,2.46848 -12.93407,-1.8443 -11.0575,-10.00076c0,-46.19846 0,-92.39696 0,-138.59544z",
+	"clef_bass": "m21.53929,297.24106c0.11552,-13.50244 21.89277,-17.95071 30.83244,-27.31851c34.50853,-23.15955 68.13189,-49.8976 89.28437,-86.39645c22.47179,-37.29227 34.65842,-82.97259 25.51732,-126.22972c-4.84746,-26.84145 -30.93637,-48.32386 -58.5412,-44.96438c-18.18078,2.48732 -39.18159,6.6724 -49.70108,23.45858c-11.41858,8.57642 -5.13639,28.67733 10.08619,21.04295c19.47556,-7.4344 43.93666,7.72539 43.16644,29.21231c0.02258,20.3737 -20.60109,34.74615 -39.82058,32.83379c-21.40677,-0.21405 -42.59771,-17.48695 -42.15028,-39.87929c-1.48358,-36.0903 29.74187,-65.56665 63.16554,-73.13066c29.88613,-9.31284 64.6309,-5.56545 89.8325,13.80772c18.75227,12.81883 33.51952,32.25211 36.60045,55.18989c6.65193,29.82199 -1.94455,60.59844 -16.85703,86.54317c-19.16537,34.9521 -48.44911,63.56561 -82.44233,84.09172c-31.5721,20.13449 -64.41224,38.31845 -98.38529,54.07944c-0.19582,-0.78018 -0.39163,-1.56039 -0.58745,-2.34058zm226.81013,-147.1503c-16.25441,-7.36092 -12.66826,-37.2715 6.2514,-37.94421c14.1568,-3.30239 27.38025,11.49424 23.01007,25.17739c-2.75677,12.80446 -18.12839,18.35408 -29.26147,12.76682zm0,-81.82211c-16.25441,-7.36089 -12.66826,-37.2715 6.2514,-37.9442c14.1568,-3.30238 27.38025,11.49425 23.01007,25.17739c-2.82837,12.84788 -18.04926,18.33069 -29.26147,12.76681z",
+	"clef_treble": "m142.57787,298.08936c-19.93291,-3.16858 -30.69543,-32.78793 -10.77837,-43.63799c20.76305,-10.6983 33.11169,27.38725 10.4319,31.10985c-12.41878,4.65247 16.12379,12.44363 21.44362,4.62054c16.62259,-8.04572 14.05481,-28.98639 10.0555,-43.73428c-1.38792,-11.29834 -3.1236,-23.3942 -17.37872,-16.97299c-34.39165,2.76706 -61.61951,-32.12309 -58.88461,-64.7627c0.92851,-30.78641 26.14601,-51.87253 44.81895,-73.25146c-6.13037,-27.96899 -7.98138,-60.28084 9.78998,-84.65368c16.36949,-19.81244 24.67825,16.44271 27.44722,28.74505c6.15059,28.7567 -6.11317,58.97542 -26.51985,79.24646c1.94853,9.61536 3.86572,19.23715 5.85146,28.84491c21.56471,-4.16351 42.14922,14.0585 43.32542,35.40215c3.33209,19.27364 -9.02991,37.47516 -25.91515,45.75842c-0.27765,16.55051 8.86742,33.71834 5.58147,50.80913c-3.15567,17.67035 -22.97263,26.33539 -39.26881,22.47659zm22.51283,-75.40413c6.10963,-11.46864 -4.97238,-31.72308 -5.58083,-46.4445c0.2393,-25.67101 -26.99069,4.97273 -18.89308,17.57916c2.40038,7.45953 23.23523,21.13914 4.09677,12.70238c-19.98106,-11.95877 -19.06588,-42.72807 -0.80893,-55.71979c15.31693,-3.39279 5.96193,-23.83228 3.07584,-30.54592c-18.81245,17.14481 -40.13555,38.73356 -36.89114,66.48257c2.4439,26.00902 30.79729,41.78694 55.00137,35.94611zm12.65782,-4.96449c17.94263,-11.51868 17.35378,-41.74863 -2.27676,-51.12454c-20.94589,-11.06784 -6.59929,17.92804 -6.2155,28.9649c2.90686,4.22505 1.26024,28.84393 8.49226,22.15964zm-22.11331,-138.56764c11.03699,-13.35171 23.65346,-32.62746 15.90224,-50.28019c-16.69221,-11.01859 -25.9682,18.77171 -26.37872,31.81623c-0.15186,8.45836 -1.39836,37.61288 10.47649,18.46396l0,0z",
+	"note_16th": "m88.44206,298.30295c-13.87988,-2.82538 -24.35809,-16.50861 -20.88289,-30.73529c4.91499,-19.9595 23.53616,-33.76636 42.17206,-40.32825c12.41348,-4.12247 26.50006,-3.4993 38.15588,2.63036c1.0408,-76.23686 0.44647,-152.49294 0.60452,-228.73842c4.20728,-0.00103 9.6062,-1.35928 8.46304,4.73352c0.58707,13.69153 7.31578,26.22541 17.65646,35.05743c23.06891,21.49232 49.01909,44.8303 54.31831,77.58647c1.50432,13.81924 -0.10796,27.74641 -3.17799,41.24139c9.09166,16.96843 8.54382,37.52667 4.8522,55.93042c-2.39383,9.71803 -6.29839,19.07953 -11.26178,27.74855c-11.71941,5.45538 1.38908,-8.91675 1.22467,-14.09427c6.33897,-15.55397 7.06616,-32.87975 4.18297,-49.26376c-6.28082,-23.96758 -30.02579,-35.67821 -49.12051,-48.20921c-6.90894,-2.70374 -21.67717,-19.0106 -18.74876,-3.03152c-0.64005,43.31421 -0.53076,86.63467 -0.73126,129.95221c-8.01517,20.08276 -26.40254,35.40967 -47.75954,39.25299c-6.54287,1.13068 -13.39496,1.54416 -19.94739,0.2674zm133.16364,-163.77284c0.19041,-24.65028 -18.17068,-44.59457 -36.16211,-59.2127c-9.00275,-6.78731 -18.53905,-13.97798 -28.66229,-18.37087c0.62265,14.17498 7.10901,27.98635 14.87303,39.75766c14.63148,19.60416 36.7207,32.71725 48.97745,54.30224c1.46973,-5.35919 1.02641,-10.98389 0.97392,-16.47633z",
+	"note_2_16th": "m49.3958,299.54056c-16.81947,-3.04166 -22.61933,-24.29047 -12.59162,-37.02081c13.30804,-19.68834 41.77522,-32.96074 64.07959,-20.53789c0.44453,-69.33055 0.18797,-138.66488 0.25596,-207.99711c55.61466,-11.21983 111.34956,-21.8626 166.98527,-32.98482c-0.12048,77.7042 -0.24097,155.40843 -0.36145,233.1126c-8.71588,23.50243 -36.87907,39.79991 -61.40202,32.51219c-14.59976,-4.3703 -18.09988,-23.21532 -9.97012,-34.76195c11.13289,-17.22395 31.85399,-29.0497 52.68539,-25.82347c5.94469,-0.60136 14.69865,9.02304 12.18605,-1.86462c0,-54.46642 0,-108.93282 0,-163.39921c-51.0519,10.27703 -102.20471,20.06591 -153.28023,30.23172c-0.17435,63.38239 0.43399,126.77441 -0.45506,190.14903c-1.62524,19.24988 -20.10281,32.38318 -37.35132,37.51443c-6.81397,1.14908 -13.90893,1.86209 -20.78043,0.8699zm133.17406,-258.40903c26.23065,-5.16204 52.47366,-10.26209 78.69298,-15.48133c3.33676,-13.29303 -11.59628,-4.66015 -18.89926,-4.33564c-44.78732,8.84114 -89.60051,17.55139 -134.38097,26.42687c-3.33676,13.29303 11.59627,4.66015 18.89925,4.33564c18.56081,-3.65804 37.12405,-7.30357 55.688,-10.94555z",
+	"note_2_32nd": "m49.39585,299.53995c-16.81947,-3.04169 -22.61932,-24.29047 -12.59161,-37.02081c13.30804,-19.68835 41.77521,-32.96077 64.07959,-20.53792c0.44453,-69.33055 0.18797,-138.66488 0.25596,-207.9971c55.61465,-11.21984 111.34956,-21.86261 166.98528,-32.98483c-0.12048,77.70421 -0.24097,155.40842 -0.36145,233.11262c-8.71591,23.50241 -36.8791,39.7999 -61.40204,32.51218c-14.59978,-4.3703 -18.09987,-23.21533 -9.97015,-34.76193c11.13292,-17.22395 31.854,-29.0497 52.68541,-25.82347c5.9447,-0.60136 14.69868,9.02304 12.18605,-1.86462c0,-46.71117 0,-93.42232 0,-140.13348c-51.05188,10.27702 -102.20473,20.0659 -153.28023,30.23172c-0.22871,56.35212 0.56696,112.72466 -0.58765,169.06043c-3.51923,18.91183 -22.11423,32.00891 -40.05743,35.8262c-5.92716,0.70624 -12.00983,1.31848 -17.94172,0.38101zm133.17405,-235.14331c26.23065,-5.16204 52.47366,-10.26208 78.69298,-15.48132c3.33676,-13.29303 -11.59628,-4.66015 -18.89923,-4.33564c-44.78734,8.84113 -89.60054,17.55138 -134.381,26.42687c-3.33677,13.29303 11.59627,4.66015 18.89925,4.33564c18.56078,-3.65805 37.12405,-7.30357 55.688,-10.94555zm0,-23.26575c26.23065,-5.16204 52.47366,-10.26209 78.69298,-15.48133c3.33676,-13.29302 -11.59628,-4.66015 -18.89923,-4.33563c-44.78734,8.84113 -89.60054,17.55139 -134.381,26.42687c-3.33677,13.29303 11.59627,4.66016 18.89925,4.33564c18.56078,-3.65804 37.12405,-7.30358 55.688,-10.94555z",
+	"note_2_64th": "m49.39639,299.53995c-16.81947,-3.04169 -22.61932,-24.29047 -12.59161,-37.02081c13.30804,-19.68835 41.77522,-32.9608 64.07959,-20.53792c0.44453,-69.33055 0.18797,-138.66488 0.25596,-207.99711c55.61465,-11.21983 111.34957,-21.86261 166.98528,-32.98482c-0.12048,77.70421 -0.24097,155.40842 -0.36145,233.11262c-8.71591,23.50241 -36.8791,39.7999 -61.40205,32.51218c-14.59976,-4.3703 -18.09987,-23.21533 -9.97012,-34.76193c11.1329,-17.22395 31.85399,-29.0497 52.68539,-25.8235c5.94467,-0.60133 14.69868,9.02307 12.18605,-1.86459c0,-38.95592 0,-77.91182 0,-116.86773c-51.0519,10.27703 -102.20474,20.06591 -153.28024,30.23172c-0.23563,48.66071 0.58183,97.34513 -0.58977,145.98728c-3.69252,18.80173 -22.14742,31.83179 -40.05531,35.63361c-5.92716,0.70627 -12.00984,1.31848 -17.94173,0.38101zm133.17406,-211.87756c26.23067,-5.16204 52.47368,-10.26209 78.69298,-15.48133c3.33676,-13.29303 -11.59627,-4.66015 -18.89925,-4.33564c-44.78732,8.84113 -89.60051,17.55138 -134.38099,26.42688c-3.33676,13.29302 11.59627,4.66015 18.89925,4.33562c18.56079,-3.65804 37.12405,-7.30356 55.688,-10.94553zm0,-23.26575c26.23067,-5.16204 52.47368,-10.26208 78.69298,-15.48132c3.33676,-13.29303 -11.59627,-4.66015 -18.89925,-4.33564c-44.78732,8.84113 -89.60051,17.55138 -134.38099,26.42687c-3.33676,13.29303 11.59627,4.66015 18.89925,4.33564c18.56079,-3.65805 37.12405,-7.30357 55.688,-10.94555zm0,-23.26575c26.23067,-5.16204 52.47368,-10.26209 78.69298,-15.48133c3.33676,-13.29302 -11.59627,-4.66015 -18.89925,-4.33563c-44.78732,8.84113 -89.60051,17.55139 -134.38099,26.42687c-3.33676,13.29303 11.59627,4.66016 18.89925,4.33564c18.56079,-3.65804 37.12405,-7.30357 55.688,-10.94554z",
+	"note_2_8th": "m49.39571,299.54196c-16.81947,-3.04169 -22.61933,-24.29047 -12.59162,-37.02081c13.30804,-19.68834 41.77522,-32.96077 64.07959,-20.53792c0.44447,-69.55862 0.18803,-139.12106 0.25597,-208.68139c55.61337,-11.00192 111.35248,-21.38966 166.98529,-32.30051c-0.12051,77.70421 -0.24097,155.40842 -0.36145,233.11263c-8.71594,23.50241 -36.8791,39.7999 -61.40207,32.51218c-14.59976,-4.3703 -18.09987,-23.21533 -9.97012,-34.76193c11.1329,-17.22395 31.854,-29.0497 52.68538,-25.82347c5.9447,-0.60136 14.69872,9.02304 12.18608,-1.86462c-0.20636,-61.46065 0.51324,-122.93768 -0.53098,-184.38539c-9.07608,-3.36956 -25.21706,4.38308 -36.83795,5.01031c-38.86079,7.56314 -77.80466,14.7255 -116.5762,22.73074c1.16985,68.10055 0.62434,136.24279 0.45018,204.35774c2.05843,15.54877 -6.51154,30.19547 -19.54225,38.30072c-11.24453,8.17932 -25.1371,11.12784 -38.82984,9.35175z",
+	"note_3_16th": "m15.05685,274.22351c-14.31707,-1.91919 -18.42601,-20.36026 -8.93697,-29.99135c10.38879,-13.67648 30.27091,-22.30884 46.50806,-13.88651c0.66153,-52.11798 0.28726,-104.24728 0.38611,-156.37085c81.97754,-16.40272 164.06679,-32.26359 246.07988,-48.4937c-0.2363,57.62228 0.57657,115.26416 -0.57095,172.87157c-1.96915,14.86053 -17.13602,24.73001 -30.79037,27.8163c-11.96523,3.66803 -28.81345,-4.27913 -25.97942,-18.60889c3.50381,-15.4984 19.49126,-26.6657 34.85991,-28.02376c8.59586,-2.14986 20.61923,9.25734 16.69226,-5.91415c0.09525,-39.33675 -0.07153,-78.67297 -0.13177,-118.00977c-38.18202,7.50178 -76.35632,15.04294 -114.54555,22.50813c-0.23268,48.18274 0.55394,96.38557 -0.57504,144.55286c-2.30531,15.49788 -18.60167,25.74417 -33.19453,27.71848c-14.44766,3.90948 -29.61349,-11.1328 -21.45115,-25.13463c9.01589,-16.79831 32.00478,-28.23689 49.88007,-18.48071c0.13591,-41.88866 0.57454,-83.7979 -0.20747,-125.67833c-9.66763,-2.10095 -24.53024,4.47319 -35.97192,5.4189c-26.23273,5.15636 -52.45877,10.34411 -78.68841,15.51694c-0.35831,49.24326 0.12716,98.5107 -1.08934,147.73389c-6.17624,16.23714 -25.20985,26.82423 -42.27338,24.45558l0,0zm101.53641,-195.02805c18.87659,-3.72421 37.75267,-7.44825 56.62927,-11.17233c3.17946,-13.298 -14.34059,-1.80056 -21.35852,-2.54169c-31.16307,6.26984 -62.32049,12.56754 -93.49695,18.76997c-1.80596,13.61728 18.79422,-0.36912 26.46645,1.18459c10.58865,-2.07109 21.17471,-4.15247 31.75974,-6.24054zm119.43625,-23.77348c18.94301,-3.80857 37.98227,-7.27608 56.8645,-11.31118c2.82892,-13.23786 -18.20215,0.42724 -25.56601,-1.09475c-29.37257,5.74051 -58.85892,11.05022 -88.16765,17.02801c-3.13623,14.00632 18.26294,0.04643 25.92744,1.45249c10.31323,-2.02774 20.62746,-4.05219 30.94171,-6.07457z",
+	"note_3_32th": "m15.05685,274.22333c-14.31707,-1.91882 -18.42601,-20.36018 -8.93697,-29.99106c10.3888,-13.67676 30.27089,-22.30908 46.50806,-13.88647c0.66166,-52.11824 0.28732,-104.24765 0.38611,-156.37099c81.97754,-16.40273 164.06694,-32.2636 246.07988,-48.4937c-0.2363,57.6225 0.57663,115.26395 -0.57123,172.87143c-1.96881,14.86089 -17.13586,24.73018 -30.79025,27.81644c-11.96498,3.66806 -28.81322,-4.27921 -25.97935,-18.60878c3.50368,-15.49834 19.49123,-26.6657 34.86018,-28.02408c8.67697,-2.20874 20.51364,9.40097 16.68222,-5.83759c-0.09845,-33.39989 0.78769,-66.86396 -0.50803,-100.22556c-37.99194,7.33447 -75.93604,14.91556 -113.90202,22.38341c-0.40428,43.27432 0.22905,86.58281 -1.10269,129.83c-6.66052,18.05263 -29.74564,30.16772 -47.98743,22.50237c-14.38366,-7.43967 -7.95995,-27.06667 2.9687,-34.4792c10.34322,-10.82147 29.63336,-12.35156 40.562,-8.05225c0.25528,-36.18434 0.11931,-72.37016 0.15388,-108.55522c-38.40674,7.73776 -76.89246,15.09384 -115.31775,22.74432c-0.2578,42.95952 0.63174,85.96188 -0.70086,128.88727c-5.20541,16.91916 -25.24538,27.88303 -42.40446,25.48965zm99.21976,-176.85336c19.73389,-3.88507 39.47778,-7.71994 59.20331,-11.64712c1.63908,-13.07382 -17.1093,-0.27914 -24.42491,-1.54683c-30.21908,5.91451 -60.4242,11.89998 -90.63543,17.85444c-2.77443,12.63378 14.55762,1.2752 21.41661,2.10594c11.47932,-2.25961 22.95964,-4.51424 34.44042,-6.76643zm2.31665,-18.17461c18.87643,-3.72409 37.75285,-7.44817 56.62927,-11.17224c3.17953,-13.298 -14.34081,-1.80056 -21.35843,-2.5417c-31.16306,6.26989 -62.32067,12.56752 -93.49722,18.77c-1.80564,13.61723 18.7942,-0.36929 26.46687,1.1845c10.58833,-2.07081 21.17455,-4.15248 31.7595,-6.24056zm119.82236,-6.10279c19.00511,-3.73167 38.01025,-7.46333 57.01538,-11.195c2.25488,-12.51775 -14.43167,-1.31337 -21.22391,-2.14778c-31.1899,6.14801 -62.39635,12.21269 -93.57906,18.3969c-0.48149,12.89743 19.70058,-0.51178 28.22481,0.73691c9.85522,-1.92534 19.70935,-3.85638 29.56277,-5.79102zm-0.38611,-17.67059c18.94318,-3.80859 37.98227,-7.27608 56.86438,-11.31118c2.82913,-13.23785 -18.20197,0.42724 -25.56577,-1.09474c-29.37247,5.74053 -58.85913,11.0502 -88.1676,17.028c-3.13618,14.00631 18.26254,0.04646 25.92732,1.45247c10.31334,-2.02773 20.6273,-4.05214 30.94167,-6.07454z",
+	"note_3_64th": "m15.05833,274.22296c-14.317,-1.9187 -18.42625,-20.3604 -8.93719,-29.99104c10.38896,-13.67708 30.27131,-22.30949 46.50857,-13.88661c0.66169,-52.1188 0.28732,-104.24842 0.38611,-156.37186c81.97786,-16.40303 164.06815,-32.26401 246.08122,-48.49419c-0.23633,57.62288 0.57712,115.26462 -0.57092,172.87238c-1.96869,14.86116 -17.13614,24.73065 -30.79056,27.81697c-11.96483,3.66806 -28.81317,-4.27963 -25.97963,-18.60901c3.50381,-15.49847 19.49141,-26.66583 34.8607,-28.02443c7.61099,-2.92159 20.18073,9.65431 16.68201,-4.30438c0.21829,-27.96678 0.10867,-55.9346 0.13544,-83.90191c-38.27235,7.48128 -76.53494,15.0156 -114.80267,22.52314c-0.22958,36.48441 0.55602,72.99504 -0.58997,109.45938c-3.18001,15.89902 -20.29759,26.40845 -35.74976,27.23267c-14.89929,2.89737 -27.08599,-14.42255 -17.93506,-27.04372c9.64191,-15.67046 31.65898,-26.22467 48.93309,-16.72427c0.33206,-30.58104 0.14311,-61.16617 0.19254,-91.74873c-38.39642,7.82673 -76.92161,15.04803 -115.31823,22.87476c-0.25736,36.94054 0.62957,73.92738 -0.70087,110.83084c-5.2055,16.9194 -25.24553,27.88339 -42.40482,25.49002l0,0zm101.38524,-159.31403c18.83891,-3.75145 37.70946,-7.35722 56.50069,-11.3393c2.95145,-13.53962 -17.91554,0.08701 -25.35307,-1.30814c-29.80621,5.87558 -59.6283,11.67136 -89.42722,17.5835c-2.26596,13.04952 15.28052,1.23864 22.46973,2.11949c11.93564,-2.35683 23.87244,-4.70798 35.80987,-7.05554zm-2.1648,-17.54025c19.73418,-3.88531 39.47784,-7.72015 59.20348,-11.64717c1.63916,-13.07402 -17.10936,-0.27902 -24.42487,-1.54701c-30.21927,5.9147 -60.42458,11.89994 -90.63596,17.8548c-2.77449,12.63354 14.55767,1.27519 21.41672,2.10558c11.47937,-2.25951 22.95979,-4.51389 34.44062,-6.7662zm123.16869,-6.50159c18.66148,-3.66445 37.32301,-7.3289 55.98506,-10.99284c1.75296,-13.03485 -16.50751,-0.89732 -23.95999,-1.87753c-30.19955,5.92758 -60.38982,11.90097 -90.58421,17.8548c-3.55789,11.04535 8.5943,3.94657 14.87352,3.58826c14.56204,-2.85567 29.12408,-5.71393 43.68562,-8.57269zm-120.85203,-11.67342c18.8765,-3.72417 37.75323,-7.44803 56.62942,-11.17215c3.18001,-13.29807 -14.34068,-1.80056 -21.35812,-2.54169c-31.16348,6.26993 -62.3213,12.56734 -93.49802,18.77035c-1.80566,13.61685 18.79432,-0.36964 26.46704,1.18407c10.58839,-2.07059 21.17467,-4.1525 31.75968,-6.24059zm119.82291,-6.10266c19.0054,-3.73169 38.01082,-7.46337 57.01573,-11.19506c2.25491,-12.51782 -14.4313,-1.3134 -21.22379,-2.14781c-31.19003,6.14807 -62.39655,12.21279 -93.5799,18.39685c-0.48135,12.89765 19.70091,-0.51173 28.22522,0.73721c9.8551,-1.92541 19.70967,-3.85648 29.56273,-5.7912zm-0.38611,-17.67071c18.94363,-3.8086 37.9825,-7.27608 56.86485,-11.31125c2.82944,-13.23789 -18.20175,0.42725 -25.56567,-1.09475c-29.37276,5.7406 -58.85979,11.05029 -88.16818,17.02811c-3.13626,14.0062 18.26253,0.04649 25.9276,1.4525c10.31329,-2.02775 20.62709,-4.05215 30.94141,-6.07461z",
+	"note_3_8th": "m15.02169,274.2272c-14.31707,-1.91879 -18.42601,-20.36015 -8.93697,-29.99103c10.3888,-13.67676 30.27088,-22.3091 46.50806,-13.88649c0.66166,-52.11824 0.28732,-104.24764 0.38611,-156.37097c81.97754,-16.40273 164.06694,-32.2636 246.07985,-48.4937c-0.2363,57.6225 0.57663,115.26395 -0.5712,172.87141c-1.96884,14.86089 -17.13589,24.73018 -30.79025,27.81644c-11.965,3.66806 -28.81323,-4.27919 -25.97937,-18.60878c3.50368,-15.49834 19.49124,-26.66568 34.8602,-28.02408c8.2316,-2.53128 20.41348,9.51646 16.65692,-5.23953c-0.07721,-45.31436 0.85016,-90.69309 -0.45593,-135.96806c-37.90379,6.83744 -76.18053,14.4211 -114.18623,21.74638c-0.22679,54.0925 0.53969,108.20272 -0.57019,162.28107c-1.77496,14.91302 -17.02997,24.75598 -30.69292,27.71687c-13.90182,4.60379 -31.50981,-7.66069 -24.80507,-22.93971c8.1866,-17.99985 32.25569,-30.36769 50.72748,-20.3566c0.32813,-48.569 0.14423,-97.14091 0.19258,-145.71125c-38.34256,7.86306 -76.73341,15.50194 -115.11303,23.18613c-0.70871,54.82025 0.60002,109.69145 -0.90556,164.48224c-5.27564,16.97054 -25.17379,27.85027 -42.40448,25.48964z",
+	"note_32nd": "m96.7115,298.78342c-12.19044,-1.97687 -21.5796,-13.65018 -18.87752,-26.14322c3.19898,-16.4884 18.16196,-28.11014 32.8273,-34.56326c11.8622,-4.83313 26.35187,-5.63437 37.63535,1.13913c0.44954,-79.35593 0.19681,-158.71518 0.26346,-238.07262c3.98198,-0.1698 8.54333,-0.99947 7.45644,4.60387c0.32353,13.2127 8.16176,24.35488 17.90031,32.62089c20.68701,19.0793 43.62003,41.1507 45.44289,71.03391c1.94933,11.70761 -4.32771,23.23071 -1.67,34.59584c2.53688,11.20206 1.78056,22.8308 0.17831,34.09036c7.53368,20.20854 5.71452,43.47615 -2.49284,63.20886c0.75815,6.16689 -13.8391,16.22797 -7.44476,5.95023c8.63434,-18.74539 13.17647,-41.8004 3.81317,-61.08943c-11.33986,-18.69514 -31.97612,-28.28085 -48.89772,-41.04474c-11.778,-11.86667 -5.42902,11.18993 -7.18364,18.06325c-0.26184,33.71661 -0.28255,67.43445 -0.41075,101.15173c-5.27325,12.84436 -14.94577,23.71875 -27.82796,29.29456c-9.44402,4.40988 -20.29373,7.32529 -30.71203,5.16064zm114.86545,-145.34879c-7.29857,-26.18551 -30.51866,-43.93251 -53.18727,-56.72259c-6.20538,-0.86809 1.83978,14.15399 3.5831,18.80585c8.11926,15.92772 24.10783,25.32948 35.63724,38.48439c5.02966,4.16844 10.75517,12.77017 14.6803,15.07132c0.57034,-5.18866 0.22502,-10.51091 -0.71336,-15.63898zm0.91826,-35.72012c-0.11551,-22.00919 -16.64085,-39.55235 -32.65781,-52.65142c-7.46819,-4.94457 -16.49954,-13.27054 -24.16978,-14.26883c1.45969,12.25124 6.9503,24.24821 17.03656,31.76259c14.34996,13.93145 29.52126,27.82796 39.47783,45.32379c1.14618,-3.04146 0.13112,-6.92123 0.3132,-10.16613z",
+	"note_4th": "m126.58881,297.40149c-11.87886,-2.65546 -23.26585,-13.54025 -21.01448,-26.56512c0.1731,-16.24911 13.85612,-27.71617 25.94878,-36.50977c15.62231,-10.78831 37.15717,-14.20154 54.34061,-5.04248c1.02979,-75.90828 0.44815,-151.83525 0.60191,-227.75206c3.00182,0.70564 9.53603,-2.12083 8.02534,3.09698c-0.14726,78.93155 0.33716,157.8673 -0.38513,236.79541c-0.07584,10.70851 -0.22026,22.31233 -7.75522,30.804c-13.91748,17.52454 -37.15509,29.1525 -59.76181,25.17303z",
+	"note_64th": "m104.92412,299.31976c-12.00094,-1.27536 -20.94641,-13.79388 -17.06551,-25.49271c6.43043,-17.60776 24.98182,-29.7767 43.42287,-30.74879c7.6006,-2.50558 20.88075,10.01114 17.93382,-3.27145c0.48503,-79.47305 0.24155,-158.94821 0.30153,-238.42232c5.75809,-1.70799 6.23006,2.55972 6.32732,7.33913c1.78415,17.85563 19.14293,26.89136 29.82072,39.25721c15.39714,15.12255 27.5349,36.04512 24.51741,58.34038c-3.08612,10.64033 -0.83701,20.84729 0.30066,31.5748c0.06851,11.58006 -4.18433,22.62605 -0.40593,34.00638c1.68036,11.01886 -3.23894,22.12428 2.03442,32.51251c2.40002,18.25101 0.69795,38.47595 -10.52008,53.59502c-7.11406,1.93207 2.97337,-8.35378 2.33067,-11.88858c6.3118,-18.25085 7.27405,-41.79056 -8.5262,-55.64728c-12.36734,-10.82431 -26.50575,-19.43405 -39.98901,-28.77931c-0.71652,35.81755 -0.4848,71.65158 -0.68907,107.47679c-5.08496,13.03387 -16.00215,23.09641 -29.22493,27.57315c-6.53331,2.3526 -13.63996,3.72845 -20.5687,2.57507zm98.72386,-126.48091c-6.34319,-22.74789 -26.51086,-38.16362 -46.20412,-49.27464c-5.25957,0.57732 2.32552,14.64314 4.87614,19.57021c8.86444,13.06609 22.37558,21.98311 32.7415,33.78232c3.44377,1.45969 10.43367,15.90742 9.37975,5.93784c0.13239,-3.35165 -0.09975,-6.73082 -0.79327,-10.01572zm0.7843,-31.02991c0.01227,-19.15482 -14.53879,-34.37045 -28.41721,-45.78492c-6.00691,-3.41928 -16.78343,-14.40513 -20.81033,-10.93629c1.48004,11.20951 7.52783,21.1048 16.47551,27.9065c11.85971,11.75211 24.67769,23.13779 32.59132,38.04211c0.77432,-2.77734 0.04828,-6.25352 0.16071,-9.2274zm0.01279,-39.15976c-0.40309,-21.71703 -17.74644,-38.41104 -34.56728,-49.83583c-4.69977,-2.50358 -18.46306,-14.73891 -13.78862,-1.7836c3.12802,17.13914 19.8609,25.3779 30.46255,37.43516c7.16287,5.47251 13.39691,18.87303 18.00247,22.03555c0.14136,-2.61625 -0.03749,-5.23595 -0.10913,-7.85128z",
+	"note_8th": "m92.11929,299.44888c-12.88673,-2.17523 -24.85642,-14.0065 -22.42534,-27.8176c1.23042,-15.16177 13.28207,-27.36446 25.40788,-35.40434c16.13786,-10.9864 38.20284,-15.06764 55.98708,-5.59207c1.04205,-76.42476 0.44817,-152.86866 0.60602,-229.30206c11.21484,-2.71548 7.58873,11.96767 10.1358,18.75797c2.43044,19.96716 15.82285,35.63469 29.15343,49.62502c16.53877,17.58521 34.10059,36.23084 39.47629,60.59399c5.87012,28.26657 -3.51422,57.18356 -15.69261,82.51581c-0.88187,8.11874 -15.77403,19.86469 -8.67888,5.1937c11.94699,-25.09727 21.81674,-54.00095 13.66216,-81.79225c-7.76553,-27.73048 -31.97011,-50.88958 -60.78398,-55.04219c-0.18622,58.55498 0.45346,117.12103 -0.68288,175.66663c-2.83272,17.24548 -17.81155,30.04147 -32.83268,37.34811c-10.35778,4.50974 -22.04797,7.23831 -33.33228,5.2493z",
+	"note_half": "m126.15042,298.46863c-16.82465,-2.00256 -23.94094,-21.72537 -20.50175,-36.48892c5.91676,-23.32147 29.06407,-39.43811 52.28738,-42.05833c8.81128,-0.72736 18.52644,-0.60411 25.78337,4.94891c5.95566,-2.36537 1.76544,-11.69408 2.85246,-17.2854c0,-68.81003 0,-137.6201 0,-206.43012c14.97716,-2.18183 5.30603,19.02521 7.94768,27.71113c-0.09924,75.95386 0.62134,151.91534 -0.76007,227.86198c-7.30341,28.38443 -39.39244,46.36703 -67.60907,41.74075zm2.8452,-12.40747c22.98492,-7.3089 44.37535,-22.56259 55.31068,-44.49013c0.95541,-13.55527 -16.00528,-10.73553 -23.6718,-6.15868c-13.5024,6.76553 -26.21068,15.65268 -36.74068,26.51123c-6.99238,6.4256 -15.89267,26.17618 0.78696,25.05563l2.30408,-0.3252l2.01074,-0.59286l0,0z",
+	"note_whole": "m130.51953,195.65829c-18.47874,-2.9818 -38.13104,-9.41365 -49.81914,-24.96915c-4.87284,-6.5025 -6.85786,-14.78229 -6.23731,-22.81049c-0.81288,-10.41815 5.23877,-19.78279 13.11027,-26.04227c15.71593,-12.69998 36.4436,-17.12403 56.18739,-18.21444c21.01479,-0.84168 42.85126,2.6237 61.20964,13.32044c11.19275,6.86285 21.10484,18.66567 20.54733,32.45548c0.612,8.09668 -0.91914,16.68852 -6.59294,22.84065c-11.24144,13.63681 -28.92738,19.59387 -45.72455,22.87505c-14.06622,2.54445 -28.55254,2.69426 -42.68069,0.54472zm34.33258,-7.95905c9.06644,-1.9348 15.01314,-11.03741 14.88672,-20.03276c1.54852,-18.89767 -4.73529,-39.56404 -20.09192,-51.52234c-8.61502,-6.06224 -20.8895,-6.65757 -30.00668,-1.42353c-6.79661,4.10276 -9.33514,12.23845 -9.31819,19.7824c-0.73656,16.04378 3.97748,32.8201 14.66045,45.0217c7.49542,7.87076 19.3475,12.08484 29.86963,8.17453z"
+	}
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/nature.json
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/nature.json	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/nature.json	(revision 29468)
@@ -0,0 +1,36 @@
+{"data": {
+
+"monkey": "M 226.606 20.4163 C 226.606 20.4163 226.606 11.9751 230.0494 6.5107 C 232.0226 3.4236 238.3242 1.8546 238.3242 1.8546 C 238.3242 1.8546 245.0913 -0.415 253.2918 0.0671 C 259.645 0.439 267.8598 3.5767 267.8598 3.5767 C 267.8598 3.5767 276.9368 3.7842 280.052 8.0256 C 283.8553 13.2407 277.8506 19.3237 277.8506 19.3237 C 277.8506 19.3237 278.6472 22.8733 281.7109 25.8553 C 284.235 28.3068 289.1462 30.3352 289.1462 30.3352 C 289.1462 30.3352 290.077 30.9513 290.7738 32.1232 C 291.3905 33.1926 291.7502 34.8667 291.7502 34.8667 C 291.7502 34.8667 294.7769 36.8839 294.9854 39.3837 C 295.2166 42.0562 292.624 45.2313 292.624 45.2313 C 292.624 45.2313 291.442 50.1711 289.2947 53.7374 C 287.9099 56.0527 285.2258 57.5337 285.2258 57.5337 C 285.2258 57.5337 279.0755 62.2408 271.5631 63.3278 C 265.881 64.1473 258.2943 61.4208 258.2943 61.4208 C 258.2943 61.4208 262.1919 72.5344 261.7522 83.8555 C 262.375 101.625 247.5 116.625 241.1367 136.6377 C 238.8895 142.6671 240.2744 149.6752 240.2744 149.6752 C 240.2744 149.6752 239.6291 167.2637 237.2535 182.9253 C 235.3175 195.7954 231.5999 207.2979 231.5999 207.2979 C 231.5999 207.2979 233.875 214.25 233.3217 218.7324 C 235.25 219.875 243.5 224.875 242.4502 228.8728 C 240.875 229.125 237.9587 227.5789 237.9587 227.5789 C 237.9587 227.5789 236.6225 228.9976 234.972 229.2134 C 233.7586 229.3833 232.625 229.625 232.0938 228.3845 C 229.25 229 224.2074 226.7275 224.2074 226.7275 C 224.2074 226.7275 220.3271 223.9128 218.4968 220.917 C 217.506 219.3108 215.9429 220.7988 217.9714 216.5869 C 220 212.375 217.763 211.5425 217.763 211.5425 C 217.763 211.5425 213.2287 213.7043 210.2078 213.574 C 208.7231 213.5002 207.6038 211.0774 207.6038 211.0774 C 207.6038 211.0774 208.1491 206.021 207.7893 201.5894 C 207.2583 195.2849 205.7506 188.9578 205.7506 188.9578 C 205.7506 188.9578 202.1187 185.0703 199.2862 173.9282 C 197.3274 166.2366 197.119 155.4518 195.7484 147.5103 C 194.3778 139.4326 191.625 134.125 191.8509 134.2487 C 185.25 142.625 176.9746 144.6133 176.9746 144.6133 C 176.9746 144.6133 178.3252 157.3417 177.1888 167.7202 C 176.098 177.7273 172.526 185.3938 172.526 185.3938 C 172.526 185.3938 168.75 194.625 167.6177 200.8745 C 166.8118 205.3229 167.7786 206.4136 168.5143 207.5193 C 173 212.75 193 203.25 197.75 210.0898 C 198.2383 210.3623 199.2719 211.6445 200.4683 212.3708 C 201.7389 213.1428 204.2573 216.9563 203.4978 217.3875 C 202.8668 217.762 201.5105 217.3364 201.5105 217.3364 C 201.5105 217.3364 201.8759 219.6685 201.0365 220.5198 C 200.1399 221.3879 198.0498 220.7976 198.0498 220.7976 C 198.0498 220.7976 196.6878 219.7195 194.1323 219.4133 C 191.6996 219.1238 188.0476 219.606 188.0476 219.606 C 188.0476 219.606 178.125 216 169.368 221.9668 C 164.75 224.375 161.2218 224.3899 156.5447 224.9685 C 153.9407 225.292 152.7614 223.272 152.7614 223.272 C 152.7614 223.272 151.9019 224.4126 150.1802 225.3999 C 148.2186 226.5007 146.1256 228.1235 146.1256 228.1235 C 146.1256 228.1235 147.1078 229.3325 148.6869 230.189 C 149.6834 230.7114 151.565 231.0405 151.565 231.0405 C 151.565 231.0405 158.8333 232.1667 165.7018 229.9795 C 166.8411 229.9114 175.1672 234.377 176.2494 235.3303 C 177.0746 236.0454 175.445 238.2518 174.0622 238.8259 C 167 243 162 236.8333 150.6885 241.113 C 140.25 242.375 135.935 240.9539 132.4543 238.4346 C 130.1444 236.7661 129.9559 233.2024 129.9559 233.2024 C 129.9559 233.2024 126.6123 228.7363 126.3468 224.5825 C 126.2325 222.7498 130.7611 216.2295 132.6542 212.9043 C 134.2132 210.1919 136.0435 206.8723 136.0435 206.8723 C 136.0435 206.8723 137.5054 203.7854 138.4962 199.8472 C 139.2357 196.9868 139.3728 193.6108 140.2837 190.8699 C 141.3744 187.5103 143.3103 184.855 143.3103 184.855 C 143.3103 184.855 138.0736 180.7068 134.0619 175.5144 C 129.0965 169.0652 125.1761 161.3308 125.1761 161.3308 C 125.1761 161.3308 112.2529 151.7861 102.6019 140.3037 C 96.4944 133.0541 91.9515 121.8441 91.9515 121.8441 C 91.9515 121.8441 89.6882 124.1978 86.4778 127.1755 C 63.6667 148.3333 61.8409 191.3676 54.6667 238 C 50 268.3333 38.8624 287.6958 31.6355 293.9775 C 25.0568 299.7031 16.8021 299.9983 16.8021 299.9983 C 16.8021 299.9983 11.6425 300.0833 11.0544 299.0222 C 10.489 298.0403 14.5207 295.8896 14.5207 295.8896 C 14.5207 295.8896 21.9196 292.1024 26.5616 286.1067 C 46 261 47.9588 188.2004 56.6667 157.3333 C 61.0673 141.7342 67 100 108.3982 77.2219 C 138.481 60.6697 203.5 49.5 219.7874 28.8517 C 223.0597 24.7032 226.606 20.4163 226.606 20.4163 Z",
+"dog": "M 54.8434 43.0135 L 41.1471 43.0135 C 41.1471 43.0135 30.4944 42.2533 27.4508 52.1357 C 22.0293 59.2623 11.8998 56.1266 9.1891 58.9773 C 6.193 58.9773 -0.7027 60.3076 0.0582 63.5383 C 0.8191 66.7691 3.1019 67.3392 2.3409 68.0994 C 1.58 68.8596 -0.5125 84.4433 19.4613 84.0632 C 19.4613 84.0632 21.5538 88.6242 30.8749 84.0632 C 30.8749 84.0632 32.9673 82.3528 36.5816 85.2034 C 40.196 88.0541 47.4245 90.1446 49.1366 89.7645 C 50.8486 89.3844 61.6915 107.8187 61.6915 134.2349 C 61.6915 160.6512 76.339 178.8954 81.0946 179.8457 C 81.0946 179.8457 92.6508 216.6193 93.0788 249.402 C 93.0788 249.402 95.9322 263.2753 83.3773 263.0852 C 76.6005 268.7153 73.6044 272.5637 77.6705 272.2074 C 77.6705 272.2074 79.2399 274.7729 82.2359 274.4879 C 83.5333 274.025 71.7497 282.8974 76.5291 282.4698 C 76.5291 282.4698 78.6217 288.5512 86.8013 284.7503 C 86.8013 284.7503 99.3563 285.8906 100.4976 277.9087 C 101.639 269.9268 102.2097 256.9563 107.3458 258.5241 C 107.3458 258.5241 108.1066 194.8592 114.1939 190.1081 C 114.1939 190.1081 144.4318 192.6018 179.2513 171.8638 C 189.1431 165.9724 199.225 157.2303 200.937 177.5651 C 202.6491 197.8999 233.2755 214.8139 237.4605 226.5966 C 241.6455 238.3794 243.9282 234.1984 243.1672 261.9449 C 243.1672 261.9449 235.9387 260.2345 230.6123 266.506 C 227.1882 269.9268 231.7537 269.9268 231.7537 269.9268 C 231.7537 269.9268 229.0905 272.5874 237.4605 272.2074 C 237.4605 272.2074 238.6018 273.4901 244.3086 272.2074 C 244.3086 272.2074 253.8199 272.7775 252.2981 265.3658 C 252.2981 265.3658 252.8688 223.1758 255.7222 225.4564 C 258.5756 227.7369 273.223 241.04 272.8425 269.9268 C 272.8425 269.9268 266.3748 270.877 265.9944 277.9087 C 265.9944 277.9087 262.7606 281.5195 267.1357 282.4698 C 267.1357 282.4698 273.2705 284.0376 275.1252 282.4698 C 275.1252 282.4698 282.9246 285.1304 283.1147 275.6281 C 283.3049 266.1259 276.8373 233.1532 279.6907 225.4564 C 279.6907 225.4564 255.1515 211.203 251.1567 167.3027 C 251.1567 167.3027 262.5703 204.5515 299.0938 198.0899 C 299.0938 198.0899 301.757 196.9497 297.9524 195.8094 C 294.1478 194.6691 264.0921 198.6601 256.8635 161.6014 C 251.5847 135.0901 255.5795 132.2395 238.6018 121.692 C 215.7747 99.8844 158.897 121.882 141.5865 114.8504 C 125.6075 106.8685 125.0368 106.726 107.3458 101.1672 C 89.2267 91.6174 92.318 80.6424 78.8119 65.8189 C 68.4683 51.9219 68.3495 53.466 67.3983 52.1357 C 66.4471 50.8053 67.2081 44.5339 54.8434 43.0135 Z",
+"cat": "M 35.5991 87.5267 C 37.1576 87.2151 48.4773 99.9253 48.6908 102.4865 C 49.0025 106.2264 56.1718 106.2264 58.042 106.2264 C 59.9123 106.2264 73.3157 114.3296 82.3552 123.0562 C 91.3948 131.7827 117.8899 123.6795 119.7601 123.0562 C 121.6304 122.4328 207.0383 105.9148 230.1046 117.4463 C 241.1827 122.9845 263.0187 103.418 265.8731 62.7496 C 264.7042 35.6351 240.317 34.6175 235.2478 42.8812 C 231.5073 46.5432 225.1173 45.4524 226.6759 38.7517 C 228.0931 34.2646 237.5856 20.4416 255.1192 26.519 C 269.9835 31.6712 278.581 44.0633 281.7702 62.2821 C 283.8742 101.5515 254.4178 130.536 254.4178 130.536 C 254.4178 130.536 256.7556 140.8209 260.0286 147.3658 C 263.3015 153.9107 264.2366 176.3503 263.769 179.1552 C 263.3015 181.9602 277.7959 197.3875 282.4715 197.8549 C 286.5237 199.7249 297.9011 234.3194 298.3686 241.7992 C 302.5767 243.9029 297.9011 254.4215 292.7579 255.824 C 287.6147 257.2265 286.212 247.4091 286.212 242.7342 C 286.212 238.0593 281.0688 216.0871 266.5744 213.7497 C 252.08 211.4122 239.4559 203.4648 239.4559 203.4648 C 239.4559 203.4648 238.5207 208.1398 236.6505 210.0098 C 236.6505 210.0098 241.3261 217.9571 241.3261 229.6444 C 240.8586 234.7868 233.3776 250.6816 228.2344 252.0841 C 228.2344 252.0841 219.8183 265.1739 216.0778 265.1739 C 212.3373 265.1739 205.7914 269.8488 195.5051 264.2389 C 195.5051 264.2389 197.3753 252.5516 206.7266 255.824 C 206.7266 255.824 228.702 238.9943 217.948 231.5144 C 217.948 231.5144 211.4022 222.1646 207.6617 218.4246 C 203.9212 214.6847 200.1807 208.6073 199.2456 201.5949 C 199.2456 201.5949 167.919 199.7249 159.9704 197.8549 C 152.0219 195.985 137.5275 200.6599 137.5275 203.4648 C 137.5275 206.2698 139.8653 232.9169 144.0733 238.0593 C 144.0733 238.0593 145.476 244.6042 144.0733 246.4742 C 142.6706 248.3441 149.2165 263.7714 136.5923 262.3689 C 124.6695 264.4726 118.825 255.1228 132.8519 252.0841 C 133.5532 242.033 115.0845 199.4912 102.9279 205.3348 C 87.0308 207.6723 92.4078 193.8813 76.7445 215.6197 C 60.3798 234.7868 32.3261 248.3441 30.9235 256.759 C 30.9235 256.759 22.5074 254.889 20.6371 261.4339 C 20.6371 261.4339 -1.3383 264.2389 0.0644 260.4989 C 1.4671 256.759 2.636 249.0454 11.2859 252.0841 C 11.2859 252.0841 30.9235 244.3704 49.6259 204.3998 C 49.6259 204.3998 47.2881 194.115 50.561 185.7001 C 53.834 177.2853 48.6908 142.6908 25.3127 144.5608 C 25.3127 144.5608 16.5849 147.6774 11.2859 133.341 C 11.2859 133.341 9.1039 130.536 11.2859 127.7311 C 13.4678 124.9261 18.7669 120.5629 19.702 117.4463 C 20.6371 114.3296 22.8191 109.6547 34.6639 105.2914 C 40.2747 99.4478 34.0406 87.8384 35.5991 87.5267 Z",
+	"mouse": "M 1.667 140.5536 C 1.667 140.5536 -3.1506 133.1432 3.594 129.9213 C 10.3386 126.6995 32.4993 97.5413 49.8424 97.058 C 49.8424 97.058 50.8059 68.061 63.3315 72.8938 C 75.8572 77.7267 70.0761 81.5929 70.0761 81.5929 C 70.0761 81.5929 91.2733 56.4622 97.0544 84.4926 C 97.0544 84.4926 102.8354 91.7419 124.9961 70.9607 C 147.1568 50.1795 223.2195 45.2403 259.8874 83.5261 C 283.4933 108.1736 316.2526 144.9032 290.7196 178.2498 C 290.7196 178.2498 305.5 251.5 182 240.5 C 182 240.5 134.1494 231.411 109.58 232.3776 C 85.0105 233.3441 64.7768 241.56 76.8207 230.4444 C 88.8645 219.3289 121.1421 219.3289 164.5 227.5447 C 207.8579 235.7606 277.2305 234.3107 277.2305 185.0157 C 277.2305 185.0157 266.6319 188.882 261.8144 185.9823 C 261.8144 185.9823 264.2231 196.6145 250.2523 195.648 C 236.2814 194.6814 223.274 190.3319 208.8214 196.6145 C 208.8214 196.6145 204.4856 199.5143 203.0403 196.6145 C 203.0403 196.6145 195.814 196.6145 198.2228 193.7148 C 198.2228 193.7148 194.1279 192.0233 198.2228 188.882 C 202.3177 185.7407 230.9821 186.2239 230.0186 185.9823 C 229.0551 185.7407 230.5003 182.841 228.0916 183.0826 C 225.6828 183.3242 154.3831 187.6738 135.5947 182.116 C 135.5947 182.116 134.6312 188.6404 130.7772 185.9823 C 130.7772 185.9823 95.1273 189.6069 87.4193 193.7148 C 79.7112 197.8228 82.3608 194.6814 79.7112 195.648 C 77.0615 196.6145 74.171 201.2057 71.0396 198.5477 C 71.0396 198.5477 60.441 201.2057 63.3315 196.6145 C 63.3315 196.6145 59.9593 197.8228 58.514 194.6814 C 58.514 194.6814 53.9373 193.2316 60.441 187.9154 C 66.9447 182.5993 93.2003 182.841 95.1273 180.1829 C 97.0544 177.5248 96.3317 175.5917 90.3098 176.3166 C 84.2879 177.0415 72.0031 174.8668 62.368 168.5841 C 52.7329 162.3014 55.8509 159.1773 35.3898 156.9852 C 18.8496 155.2132 15.4773 152.7968 11.3021 151.1858 C 7.1268 149.5749 1.667 140.5536 1.667 140.5536 Z",
+	"bat": "M 159.4097 112.4418 C 159.4097 112.4418 165.2836 114.8177 165.871 116.5996 C 166.4583 118.3814 193.4784 111.254 199.3523 107.0962 C 205.2262 102.9384 218.7362 103.3991 218.7362 95.8108 C 218.7362 93.4349 216.0563 87.2725 221.0858 89.2771 C 222.0639 89.6671 222.2607 92.841 222.2607 92.841 C 222.2607 92.841 221.2328 89.9082 219.7275 90.7249 C 218.9925 91.1238 220.7934 96.0402 221.6732 97.5927 C 221.6732 97.5927 270.8466 89.8789 281.5872 92.841 C 285.8948 94.0288 300.3839 95.8108 299.9922 102.1464 C 299.9922 102.1464 280.0218 109.0692 276.8881 134.4187 C 276.4966 137.5864 251.2713 130.3858 234.5959 162.335 C 230.8757 169.4625 229.8967 166.8886 228.7219 166.4928 C 227.5471 166.0968 204.0514 151.2475 184.6675 179.5599 C 184.6675 179.5599 185.6465 179.362 185.8423 180.1539 C 186.0381 180.9459 195.4364 177.9761 195.828 183.1239 C 195.828 183.1239 191.4489 181.1155 192.4279 183.0956 C 193.4068 185.0754 192.9103 187.3455 192.3037 186.0935 C 192.1875 185.8537 189.7583 183.7177 190.5414 185.4997 C 191.3246 187.2815 186.7788 191.3699 186.5384 190.7703 C 185.5817 188.3839 188.7793 185.6976 182.9054 183.1239 C 177.0314 180.55 160.7802 186.6876 152.361 205.6945 C 152.361 205.6945 151.7736 206.6844 150.5988 205.1005 C 149.424 203.5166 141.2005 182.3318 124.1661 181.3419 C 124.1661 181.3419 123.3829 184.3117 120.6418 184.9057 C 117.9006 185.4997 118.4881 194.607 117.1174 191.4393 C 115.7468 188.2715 116.03 192.0517 115.9426 191.4393 C 115.625 189.2114 116.9471 185.7338 113.0056 187.2815 C 112.4893 187.4842 112.2224 190.6474 111.2435 189.0635 C 110.2645 187.4796 112.4516 184.6432 113.8221 183.4553 C 115.1927 182.2674 109.2548 182.1362 111.8309 180.7479 C 114.4384 179.3427 121.8165 183.9158 118.8796 178.9661 C 115.9426 174.0163 99.0597 150.8982 74.8252 166.4928 C 70.5176 169.2646 71.8882 165.8987 69.5386 162.9288 C 67.1891 159.9591 50.7251 131.6712 28.4212 135.0125 C 23.1346 135.8046 25.4842 130.8548 23.7221 129.0729 C 21.9598 127.291 11.3214 96.1243 0.8138 98.7807 C -1.5358 99.3745 0.1497 88.6039 20.1977 89.8712 C 23.3305 90.0691 21.3725 87.4953 24.8969 88.0892 C 28.4212 88.6833 71.8882 94.8209 76.5873 96.4048 C 81.2865 97.9887 86.573 99.4947 86.573 89.8712 C 86.573 89.6855 85.802 89.203 84.2234 90.4651 C 83.5259 89.834 89.3142 86.5053 88.3352 92.841 C 87.3562 99.1766 85.2163 97.4736 88.9226 99.3745 C 94.1706 102.0661 98.3286 106.7349 106.5443 107.0962 C 111.0477 107.2942 133.7569 118.5671 138.8509 117.1936 C 141.7879 116.4016 145.7038 114.6197 144.1374 113.6297 C 142.5711 112.6399 137.2845 106.3042 137.6761 102.9384 C 138.0677 99.5726 139.2425 96.9988 137.6761 95.8108 C 136.1097 94.6229 139.4383 91.2571 142.3753 95.2168 C 145.3122 99.1766 145.3122 102.1464 147.6618 102.3444 C 150.0114 102.5425 154.319 101.3546 155.8853 102.3444 C 155.8853 102.3444 162.7383 92.4451 166.4583 94.0288 C 170.1785 95.6128 167.2415 97.7906 167.6331 99.3745 C 168.0247 100.9584 163.7172 112.8379 159.4097 112.4418 Z",
+	"bull": "m247.95622,28.12305c-12.19972,2.23394 -21.61887,16.95667 -20.74588,29.01591c1.44209,13.7284 17.93463,5.12075 22.80087,1.23941c-2.90906,11.49207 -26.14024,13.85409 -24.83565,-0.12387c-17.69467,13.05878 -30.95056,33.52913 -52.86781,40.14553c-19.77757,4.59067 -40.50726,3.0742 -60.45068,0.39017c-12.12445,-1.13604 -23.69794,-7.26224 -35.91985,-5.97962c-13.09134,3.59118 -23.59412,13.16467 -36.65408,16.93906c-13.77014,6.03062 -8.51065,22.6805 -9.70401,34.47604c0.36829,17.55977 -2.85913,36.16287 -15.09811,49.55722c-7.11563,10.54993 -7.76443,24.43282 -13.48046,35.44298c18.99679,-0.19772 7.54522,-25.59486 17.99728,-35.91756c14.58305,-6.75189 14.16003,-25.2986 16.19452,-38.95529c1.4834,-5.51941 0.74519,-25.08188 6.61763,-22.44334c7.21924,16.22275 11.33028,34.35388 9.69645,52.12326c-9.5553,8.96404 -24.74576,15.34862 -22.54872,31.87126c0.72458,14.96526 -8.38036,25.74033 -15.4907,37.48604c4.56749,6.89259 1.00608,20.69472 14.11573,16.65324c8.77115,1.68887 13.10825,-2.37698 4.45589,-8.42346c-13.07829,-12.56499 5.13552,-29.16821 12.20585,-40.168c7.30689,-12.28131 22.16195,-12.86801 33.02653,-20.13979c15.00671,-8.95824 25.97935,-22.79263 35.92999,-36.78595c8.71432,9.26259 -13.75776,17.74474 -17.07076,27.20334c-7.22755,7.75058 -20.15694,21.85651 -2.99889,26.65347c13.26358,4.53796 25.75887,13.79143 25.35975,28.30255c0.22051,9.84615 24.38135,18.76527 19.43611,2.77341c-8.3609,-14.92882 -28.34064,-20.79163 -33.65835,-37.70844c-3.6715,-12.98383 11.61318,-19.27325 18.93525,-8.74269c12.96419,-1.41862 26.57983,-10.04028 40.80356,-11.3647c14.66299,-5.4577 18.06927,14.52957 29.8145,19.76668c9.79047,9.67969 18.77974,21.93582 17.54285,36.4783c1.1926,12.30893 9.52699,25.16873 23.92239,23.90201c16.80026,-2.80963 -5.10118,-20.70317 -12.79568,-24.81631c-11.14896,-13.29695 -9.30676,-32.20113 -16.24597,-47.51259c-5.00217,-4.52083 0.22685,-26.45532 0.40694,-10.76334c-0.90044,17.98242 24.73294,7.66248 22.97939,-6.09152c4.36166,-10.95654 -11.58513,-4.19417 -9.47617,-15.24252c-1.73091,-13.74937 -0.74355,-30.75096 -12.6731,-40.17292c-6.8737,-6.7591 -4.7831,-7.41829 2.70201,-2.07212c14.59439,7.55807 11.75914,24.79303 12.78276,38.37691c4.22589,17.80225 21.30753,-5.24332 20.80711,-14.89757c2.92691,-20.96336 12.92174,-42.46973 32.42046,-52.68139c-5.2402,-2.56694 -30.94765,6.73531 -28.79092,-4.9679c10.59921,9.00244 25.18661,-0.80075 37.71524,1.85265c16.62164,0.68233 20.74963,-22.79317 2.53195,-23.94116c-11.78333,-6.98062 -21.92947,-19.31897 -37.15829,-18.35906c-22.07759,7.39931 -8.43927,-13.11165 -2.53694,-22.37832zm21.60802,9.50184c-1.66193,5.79599 -12.61478,17.62506 0.56973,12.83867c1.89221,-3.91013 1.1131,-8.97168 -0.56973,-12.83867zm-3.4996,26.34877c5.90985,9.81916 -11.80539,1.02993 0,0zm24.39551,10.15293c-2.05029,4.18517 5.51468,4.9676 -0.32553,4.96455c-3.08926,4.10121 -4.4324,-5.29953 0.32553,-4.96455z",
+		"cow": "m28.0749,243.56958c-11.25466,-1.13762 -0.26117,-18.72878 -4.5063,-26.87576c-0.04291,-11.99254 -4.49496,-23.80263 -3.04635,-35.73141c8.85702,-21.03091 1.47632,-43.99974 -0.46577,-65.6628c-0.878,-4.78294 -0.85219,-17.06834 -3.03475,-6.14601c-6.04425,18.41563 -0.13999,41.17824 -5.30961,59.82921c-8.64015,10.38419 -15.16653,-6.09071 -6.91858,-12.40807c9.63606,-15.16887 7.3071,-35.6004 7.63113,-54.51396c-0.41477,-11.95865 4.38277,-26.97649 18.58104,-27.31744c12.14677,-0.91866 23.64877,4.86966 35.90276,4.15359c35.73927,0.55689 71.83095,0.86755 107.11801,-5.64501c17.61354,-4.0591 35.14902,3.10693 52.79015,0.20057c9.91351,1.07068 15.15811,-3.56471 10.78886,-12.26689c7.38425,-5.09429 13.06598,9.66071 16.34573,-3.48148c11.89191,-8.19559 13.54935,15.99933 26.71921,9.16614c15.88589,2.05862 -6.90274,16.26875 6.39813,23.38159c8.04169,6.20473 20.35629,21.57409 4.35831,26.00379c-13.75446,-0.96602 -27.54028,-0.06377 -41.30312,0.60226c-6.36993,10.6367 -19.62016,18.61491 -18.16837,32.55296c-1.1003,16.62756 -12.74783,33.02081 -28.69196,38.18489c-6.81386,-1.34894 -9.78644,0.85432 -8.9351,7.83342c-3.52046,9.11967 -4.14098,18.73875 -3.72333,28.43974c-1.04204,5.34808 1.17265,9.50755 4.32187,13.62691c-3.70361,6.41692 -24.92326,2.61598 -16.88379,-9.5238c2.05592,-15.92261 -0.36317,-31.91132 -2.16568,-47.74242c-8.4565,-6.01532 -18.70856,-3.81294 -27.26753,1.0208c-18.88187,6.9252 -40.73763,13.48228 -60.10471,4.59438c-10.79734,-3.01547 -27.0833,-5.25847 -35.10848,3.84904c-3.611,13.73518 -2.64567,28.48619 -5.7238,42.42607c-0.05178,7.28806 6.88112,13.54532 -4.86428,11.51134c-4.90851,0.11278 -9.83028,0.26732 -14.73372,-0.06165zm10.02217,-15.5108c1.93175,-6.52728 -2.78621,-23.11049 -3.1906,-7.64299c-1.60691,4.90746 0.4367,28.47777 2.83738,12.83046c0.15187,-1.72662 0.25968,-3.45683 0.35322,-5.18747z",
+	"camel": "m105.23692,274.01276c10.42601,-6.85904 -13.23158,-12.66162 -16.74452,-19.13904c-10.34003,-12.71768 -13.56136,-29.62202 -16.44211,-45.3219c4.95107,-8.43617 2.94567,-17.1517 4.73958,-25.91959c8.77055,-13.01825 13.62244,-28.29056 22.43666,-41.26205c9.81532,2.07159 20.42883,10.03517 30.26162,13.06094c8.8764,15.9576 -7.35719,29.2457 -5.44854,44.69498c3.72314,14.40366 -6.25101,26.40735 -8.25558,39.83173c0.06986,12.69931 11.61848,25.55493 24.23922,16.82416c-0.64038,-9.26088 -18.64324,-12.13185 -10.58395,-25.1562c2.65187,-13.46596 11.34413,-24.24693 17.91676,-35.55937c-3.71349,-13.26427 1.2287,-30.0778 9.59569,-40.02118c8.49532,8.2068 14.36288,22.63718 15.66277,34.12883c0.16464,13.17332 17.70532,21.98904 17.37173,37.50392c1.31061,13.71669 7.73416,26.77841 16.64259,34.21387c4.65822,9.68192 33.56361,4.63116 18.16859,-6.87111c-12.71291,-11.47281 -27.33986,-23.63953 -29.27029,-41.92267c-5.27388,-10.85303 6.84843,-26.2316 -8.03899,-30.76501c0.92262,-14.70679 -2.97293,-31.40077 5.40811,-44.51862c12.07202,-10.31686 29.7518,-11.08165 41.29709,-22.49498c14.0099,-9.28757 21.96306,-24.50421 26.44456,-40.2729c6.78918,-7.60537 17.33322,-24.04447 29.06323,-15.49826c11.50851,7.1165 3.01477,-10.78561 9.62354,-14.73589c-5.45358,-19.67866 -27.58679,-10.231 -41.40082,-15.14074c-12.54193,-8.39989 -25.52765,-3.55679 -34.67496,6.0378c-6.85069,3.08698 -3.14447,11.16754 3.57637,8.12783c-4.82072,16.0155 -11.46542,33.6401 -26.07742,43.1243c-16.7653,7.33572 -26.11705,-14.39821 -36.07204,-23.83146c-10.86565,-10.63506 -17.60231,-26.15123 -31.2878,-33.45204c-19.0355,-4.82 -33.49794,11.89507 -47.87449,21.30644c-14.26775,7.14342 -31.39994,10.67369 -41.13367,24.60683c-16.15372,19.41527 -5.91326,48.70807 -22.89915,67.80049c-6.99636,10.58755 -22.39972,18.21231 -20.28306,32.7636c7.50211,15.58318 0.92728,34.18239 5.02367,50.94881c3.02735,12.11708 7.50982,27.68176 22.18437,29.48123c11.54434,7.31882 17.83198,-8.01192 5.60827,-12.45197c-14.75563,-6.55614 -16.77197,-25.01053 -17.95741,-39.18628c-3.25454,-14.0275 7.86033,-23.30806 12.45064,-34.31837c-3.87635,-10.75487 9.79252,-25.37375 18.46243,-23.19664c-6.47958,9.9541 -15.94005,22.87103 -0.60315,31.06966c-0.20134,0.50305 2.25023,-9.18846 6.19941,-12.10042c-0.58951,-7.59273 -8.29086,-14.05685 -0.12206,-21.73929c14.33151,-9.55606 11.17263,18.16365 8.19696,26.02383c-0.15744,12.07039 -16.33567,21.65707 -8.0749,33.75336c9.04985,14.91904 13.29631,32.04613 16.76897,48.94904c4.98299,14.02148 17.57185,24.27618 33.31381,20.65268l2.58825,-0.02829z",
+	"hare": "m95.22337,299.53546c-10.68459,-4.81824 3.25798,-14.45154 8.53654,-18.71286c3.55556,-3.28177 -20.37717,0.46036 -10.27298,-10.93198c11.08577,-9.30692 6.89815,-25.05217 -4.18282,-32.37115c-15.24973,-10.2968 -34.81611,-19.10942 -40.44992,-38.33635c-5.69662,-11.9756 7.81301,-24.58835 -0.87631,-35.40263c-6.99412,-14.0412 1.177,-28.68323 6.25594,-41.69022c2.33568,-17.99253 -11.97227,-32.2212 -19.84076,-47.00306c-9.74298,-14.12588 -15.35928,-30.58578 -16.16633,-47.73895c-2.11884,-7.3217 0.22601,-18.6921 8.68694,-8.82097c17.71845,14.18765 37.17033,27.65002 49.57116,47.06949c2.34735,7.01447 11.74658,27.34441 12.27144,8.93449c0.24582,-25.30315 7.97399,-52.90002 27.77682,-69.85634c13.46954,-12.2734 20.73361,9.21683 21.36209,20.13735c3.50587,21.487 -2.30553,42.79486 -8.78146,63.09225c-2.37738,9.43285 -8.56868,35.2823 9.08899,25.75117c40.67693,-15.70451 89.96005,0.78945 116.45525,34.52606c12.17961,16.33485 17.5135,37.32133 17.39308,57.47189c-6.27155,11.83836 17.03061,-0.22177 8.58704,13.43613c-4.97064,15.1297 -19.01465,23.33925 -28.85207,34.75906c-10.01038,9.15085 -2.58298,28.71576 -19.13725,31.59863c-24.15469,7.44629 -49.5191,10.70804 -74.66498,12.6066c-14.07156,2.88287 -20.90056,-13.20758 -7.41347,-19.89679c6.46608,-9.96799 24.96535,-10.66653 30.46185,-12.24564c-13.13484,1.28516 -29.33337,-4.0759 -40.40141,4.05872c-6.70294,10.88138 -12.07141,25.20364 -26.12755,28.30951c-6.3168,1.75439 -12.8116,3.16129 -19.27982,1.25558z",
+	"chick": "m76.6114,300.49948c-0.94218,-11.68399 1.80264,-23.81186 -2.78349,-35.22473c-7.45612,-25.10127 -23.93798,-47.16536 -31.36633,-72.21014c-3.21228,-16.80365 -8.65163,-34.79272 -2.2363,-51.43718c9.2771,-20.44891 24.58445,-39.1077 45.00853,-51.46853c11.45798,-6.87112 33.39433,1.8131 33.44485,-16.51133c3.62297,-20.89642 15.43811,-40.3082 30.48538,-56.28489c17.86485,-17.49571 47.98021,-20.77926 71.28149,-10.72216c13.19823,4.36545 26.92773,11.92505 29.85556,25.342c-2.0408,13.23198 13.36339,22.40786 12.41484,34.53756c-13.98409,-0.03379 -27.4267,2.25514 -39.10866,9.99602c-8.20006,3.8867 -26.4511,6.08187 -12.88864,15.86904c12.71146,21.22634 12.39029,48.02362 0.02443,69.35255c-8.24092,16.61523 -18.78058,33.14909 -36.37866,43.00504c-13.36313,9.14961 -27.77914,16.93257 -42.68192,23.79149c-11.62872,11.1774 5.32764,27.26614 9.71201,38.8335c3.36447,3.54044 4.524,10.84882 11.15869,9.08932c15.28535,0.25418 32.76015,-1.9313 44.98404,7.81229c-8.94319,8.25949 -25.89421,-1.41025 -38.02573,4.80051c-8.78024,5.75812 -19.06332,7.43823 -31.36371,7.58014c-13.23612,4.30203 -27.23189,-3.61423 -39.08569,1.66962c-4.11388,0.41238 -8.38321,3.40195 -12.45068,2.1799zm58.28394,-16.2124c-4.84233,-9.87674 -20.53861,1.56897 -6.10292,2.32874c2.30783,-0.47092 12.8125,3.03821 6.10292,-2.32874zm-17.85122,-4.32443c14.82944,-9.3367 7.74453,-25.48042 -1.79045,-35.63309c-3.24258,-2.97528 -4.73457,-8.94336 -9.13439,-9.94019c-6.73362,0 -13.46722,0 -20.20084,0c-4.65086,8.49229 -2.48404,17.86589 0.89217,26.43201c3.51066,10.88467 6.16319,28.60654 23.56189,23.00385c2.6806,-0.4599 4.89924,-2.07458 6.67162,-3.86258z",
+	"eagle": "M 239.0984 143.2141 C 239.0984 143.2141 268.4178 149.6291 275.3813 171.8064 C 275.3813 171.8064 281.6116 180.4208 279.7792 185.0029 C 277.9468 189.5849 275.0147 191.0512 274.2818 191.6011 C 274.2818 191.6011 277.9468 187.3855 265.486 180.604 C 265.486 180.604 259.0723 179.5043 257.7896 178.4046 C 256.5069 177.3049 237.6325 173.6392 233.601 182.8034 C 229.5696 191.9677 228.6534 207.3635 229.2031 208.0966 C 229.7528 208.8297 248.444 222.7594 250.0932 226.7916 C 251.7424 230.8238 260.5383 239.0715 264.3865 238.8883 C 268.2346 238.7051 277.397 238.7051 279.7792 235.5892 C 282.1613 232.4733 289.1248 232.1068 290.774 235.5892 C 292.4232 239.0715 291.8735 238.8883 291.8735 238.8883 C 291.8735 238.8883 297.7374 237.6054 299.5699 242.1874 C 301.4023 246.7695 296.8211 248.7856 296.2714 248.7856 C 295.7217 248.7856 299.7531 241.8208 294.0724 243.2871 C 294.0724 243.2871 290.774 243.4246 290.774 242.1874 C 290.774 240.9502 292.6981 248.6482 290.774 248.7856 C 290.774 248.7856 284.3145 241.6376 283.0776 245.4865 C 283.0776 245.4865 278.9546 246.3113 277.5802 246.5862 C 276.2059 246.8611 276.4807 247.6859 276.4807 247.6859 C 276.4807 247.6859 272.9074 249.0605 275.3813 253.1844 C 275.3813 253.1844 275.3813 254.6965 274.2818 255.3839 C 273.1823 256.0712 274.969 259.3703 279.7792 256.4836 C 279.7792 256.4836 281.0161 255.3839 280.8787 256.4836 C 280.7412 257.5833 275.931 263.4942 269.8839 255.3839 C 269.8839 255.3839 267.6849 249.198 270.9834 247.6859 C 274.2818 246.1738 269.8839 243.1496 265.486 245.4865 C 265.486 245.4865 265.2111 249.8853 266.5854 250.985 C 267.9598 252.0847 264.249 251.1225 263.287 249.8853 C 262.325 248.6482 261.088 252.4971 261.088 253.1844 C 261.088 253.8717 259.8511 256.2086 258.8891 255.3839 C 257.927 254.5591 248.8563 253.5968 248.9937 254.2841 C 249.1312 254.9715 244.7333 257.8582 243.4963 256.4836 C 242.2594 255.1089 235.3877 248.0983 234.7005 248.7856 C 234.0133 249.4729 239.3733 257.1709 242.3969 258.683 C 245.4204 260.195 258.0645 261.1573 262.1875 257.5833 C 262.1875 257.5833 268.5095 256.3461 268.7844 257.5833 C 268.7844 257.5833 275.931 260.47 275.3813 261.9821 C 274.8315 263.4942 274.8315 262.6694 274.2818 261.9821 C 273.7321 261.2947 269.1967 258.8204 268.7844 259.7827 C 268.3721 260.7449 268.7844 260.8824 268.7844 260.8824 C 268.7844 260.8824 274.5567 262.5319 274.2818 263.0818 C 274.2818 263.0818 281.0161 265.831 279.7792 271.8794 C 279.7792 271.8794 277.7177 273.3915 277.5802 271.8794 C 277.4428 270.3673 278.4048 266.2434 274.2818 266.3809 C 274.2818 266.3809 273.5946 268.5803 270.9834 267.4806 C 268.3721 266.3809 272.4951 264.044 258.8891 265.2812 C 258.8891 265.2812 259.4388 267.893 261.088 268.5803 C 262.7372 269.2676 265.486 269.2676 265.486 271.8794 C 265.486 271.8794 267.2726 274.0788 265.486 276.2782 C 265.486 276.2782 264.3865 276.9655 264.3865 276.2782 C 264.3865 275.5909 265.486 272.2918 259.9886 270.7797 C 254.4911 269.2676 255.5906 269.68 255.5906 269.68 C 255.5906 269.68 256.5527 276.2782 254.4911 276.2782 C 252.4296 276.2782 255.8655 280.4021 259.9886 278.4776 C 259.9886 278.4776 260.4008 276.8281 261.088 277.3779 C 261.7752 277.9278 257.6522 285.9006 250.0932 276.2782 C 250.0932 276.2782 247.6194 271.1921 250.0932 269.68 C 250.0932 269.68 251.7424 264.5939 243.4963 266.3809 C 243.4963 266.3809 240.0605 266.9307 240.1979 266.3809 C 240.3353 265.831 239.6482 268.9927 240.1979 269.68 C 240.7476 270.3673 233.7384 268.1679 233.601 267.4806 L 231.4021 267.4806 C 231.4021 267.4806 232.6848 273.8956 233.601 274.0788 C 234.5172 274.262 229.3864 270.9629 228.1036 268.5803 C 228.1036 268.5803 228.1036 273.1623 229.2031 274.0788 C 230.3026 274.9953 224.2554 269.1301 224.8052 268.5803 C 224.8052 268.5803 224.9884 274.4454 227.0041 277.3779 C 229.0198 280.3104 222.6062 274.6287 221.5067 272.9791 C 221.5067 272.9791 220.4073 273.7122 221.5067 275.1785 C 222.6062 276.6448 217.8418 273.7122 217.1088 269.68 C 217.1088 269.68 213.9936 267.114 212.7109 266.3809 C 212.7109 266.3809 212.8941 272.6125 213.8104 272.9791 C 213.8104 272.9791 211.2449 270.9629 210.5119 268.5803 C 210.5119 268.5803 209.046 270.7797 209.4124 271.8794 C 209.4124 271.8794 205.1978 267.114 203.915 263.0818 C 202.6323 259.0496 202.8156 264.1815 202.8156 264.1815 C 202.8156 264.1815 200.2501 263.8148 198.4176 256.4836 C 198.4176 256.4836 187.7893 267.6638 184.1244 268.5803 C 180.4595 269.4967 188.5223 264.1815 188.5223 264.1815 C 188.5223 264.1815 182.4752 266.0143 181.9254 267.4806 C 181.9254 267.4806 182.4752 265.4644 185.2239 263.0818 C 187.9726 260.6991 181.9254 261.9821 181.9254 261.9821 C 181.9254 261.9821 180.6427 261.6154 180.826 249.8853 C 180.826 249.8853 172.5798 258.683 167.6322 258.683 C 162.6845 258.683 172.2134 255.0172 173.1296 252.0847 C 174.0458 249.1522 171.1139 250.0686 169.8311 250.985 C 168.5484 251.9015 159.0196 257.4 158.8363 258.683 C 158.6531 259.9659 157.7369 256.4836 157.7369 256.4836 C 157.7369 256.4836 155.5379 257.5833 153.3389 257.5833 C 151.14 257.5833 159.7525 253.5511 161.0353 250.985 C 162.3181 248.419 149.1243 255.5671 144.5431 258.683 C 144.5431 258.683 140.6949 259.9659 140.1452 258.683 C 139.5954 257.4 146.7421 252.4514 146.7421 252.0847 C 146.7421 251.7181 149.3075 248.6024 144.5431 250.985 C 139.7787 253.3677 133.5483 251.5349 129.1504 253.1844 C 124.7524 254.834 119.9881 259.9659 113.7576 259.7827 C 107.5272 259.5994 107.5287 267.4806 96.166 267.4806 C 89.5691 267.4806 92.3178 270.0466 89.5691 269.68 C 86.8204 269.3134 92.8675 266.3809 92.8675 266.3809 C 92.8675 266.3809 86.2706 268.5803 85.1712 268.5803 C 84.0717 268.5803 79.124 268.7635 90.6685 264.1815 C 90.6685 264.1815 82.2392 264.1815 85.1712 263.0818 C 88.1031 261.9821 95.433 259.7827 95.0665 258.683 C 94.6999 257.5833 87.1869 257.7665 89.5691 256.4836 C 91.9512 255.2006 104.9618 250.4352 101.6634 249.8853 C 98.3649 249.3355 93.6005 249.1522 96.166 247.6859 C 98.7315 246.2196 130.2498 242.7373 134.6478 238.8883 C 139.0457 235.0393 150.407 223.8591 153.3389 223.4925 C 156.2709 223.1258 153.3389 220.3766 151.14 221.293 C 148.941 222.2095 146.9253 220.7432 147.8415 214.6948 C 148.7578 208.6465 138.4111 227.9581 132.4488 221.293 C 129.3336 217.8107 131.7158 215.2447 128.0509 215.7945 C 124.386 216.3444 124.5692 211.7623 123.653 213.5951 C 122.7368 215.4279 115.0404 226.7916 111.5587 225.6919 C 108.077 224.5922 110.6425 223.8591 108.2602 223.4925 C 105.878 223.1258 104.2288 222.3928 103.8623 220.1933 C 103.4958 217.9939 101.2969 221.6597 100.5639 217.9939 C 99.8309 214.3282 99.2812 209.7462 96.166 213.5951 C 93.0507 217.4441 91.9512 214.8781 91.768 213.5951 C 91.5848 212.3122 84.9879 214.3282 85.1712 210.296 C 85.3543 206.2638 78.7575 211.579 79.6737 206.9969 C 80.59 202.4149 74.1008 206.3759 75.2758 202.5981 C 77.8413 194.3503 66.48 201.865 67.5795 198.1993 C 68.6789 194.5336 62.2653 197.4662 63.1815 193.8005 C 64.0978 190.1348 57.0803 191.408 57.6841 188.302 C 58.9668 181.7037 51.0873 186.2858 52.1867 180.604 C 53.2862 174.9223 47.1832 180.5659 47.7888 176.2052 C 48.7051 169.607 39.9352 172.0031 42.2914 167.4076 C 45.9564 160.2595 38.5229 163.3323 40.0924 159.7097 C 42.4746 154.2112 24.7867 160.3197 29.0976 150.912 C 31.1134 146.5132 17.126 143.5845 23.6002 139.915 C 34.595 133.6834 6.7416 136.7991 20.3018 126.7186 C 32.9458 120.8535 33.7206 120.3011 18.1028 121.2201 C 11.8724 121.5867 2.5268 112.9723 11.506 112.4224 C 20.4851 111.8726 38.8097 107.4738 18.1028 105.8242 C -2.604 104.1747 -3.337 96.66 4.9091 97.0266 C 13.1552 97.3932 45.4066 97.3932 36.794 94.8272 C 28.1814 92.2612 -11.234 85.9902 3.8096 79.4314 C 10.9562 76.3155 61.3141 92.8826 46.6893 81.6308 C 44.3072 79.798 21.0348 73.1997 12.6054 64.0355 C 4.1761 54.8713 5.8253 53.5883 10.4065 55.2379 C 14.9877 56.8874 68.1289 81.0809 59.8831 72.8331 C 58.4171 71.3668 27.9982 56.8874 23.6002 44.2409 C 19.2023 31.5943 23.417 34.8934 26.8987 38.7423 C 30.3803 42.5913 80.384 79.3466 71.9774 67.3346 C 69.4119 63.6689 47.0559 49.0063 42.2914 34.3435 C 37.5269 19.6808 41.1919 23.7131 44.4904 27.7453 C 47.7888 31.7775 98.7414 86.7135 90.6685 67.3346 C 88.8361 62.9358 72.7103 49.1895 70.8779 36.5429 C 69.0455 23.8963 73.8098 28.6618 76.3753 33.2438 C 78.9408 37.8259 115.0404 94.8272 115.9566 84.9299 C 115.9566 84.9299 116.1399 85.1131 117.0561 84.9299 C 117.9723 84.7466 116.3231 79.6146 118.1556 80.5311 C 118.1556 80.5311 118.8886 76.4989 120.3545 77.2319 C 121.8205 77.965 123.2865 77.4152 123.653 72.8331 C 124.0194 68.2511 134.831 73.5662 137.9462 97.0266 C 137.9462 97.0266 140.1452 99.4063 140.1452 104.7245 C 140.1452 107.4738 153.3389 120.8535 161.0353 120.1204 C 168.7317 119.3873 179.7265 135.5162 183.0249 136.6159 C 186.3233 137.7156 193.6532 144.3138 205.0145 137.7156 C 216.3758 131.1174 227.5539 128.918 218.2083 127.8183 C 208.8627 126.7186 210.6952 123.0529 214.9099 122.3198 C 219.1245 121.5867 237.4492 121.2201 231.4021 117.921 C 225.3549 114.6218 220.1312 96.9955 228.1036 101.4254 C 231.4021 103.2582 243.1161 119.5447 241.2974 108.0236 C 240.7476 104.5413 233.601 100.3257 235.8 88.229 C 237.9989 76.1322 241.0477 85.756 241.2974 87.1293 C 241.6639 89.1454 250.5537 114.1767 252.2922 101.4254 C 252.8419 97.3932 248.2608 92.0779 250.0932 77.2319 C 251.9256 62.386 254.4911 77.2319 254.4911 77.2319 C 254.4911 77.2319 259.7195 92.4352 258.8891 100.3257 C 258.5225 103.8081 263.6535 102.5251 263.287 95.9269 C 262.9204 89.3287 260.1718 74.8493 262.1875 75.0325 C 264.2033 75.2158 270.2428 84.8483 268.7844 92.6278 C 268.2346 95.5603 276.664 98.4929 267.6849 104.7245 C 258.7059 110.9561 248.9937 123.4195 248.9937 123.4195 C 248.9937 123.4195 251.1661 131.4743 240.1979 135.5162 C 233.2345 138.0822 239.0984 143.2141 239.0984 143.2141 Z",
+	"cormorant": "m143.5415,0.99936c-4.24326,11.41716 -19.29625,4.15632 -24.74561,12.50427c0.52748,6.07653 -8.29025,7.80436 -13.00653,8.43892c-8.50133,3.84879 -22.80692,-4.79845 -26.45377,4.01417c10.96676,1.70561 23.50823,0.97173 33.37776,7.63992c6.81084,8.30698 18.80501,9.32233 23.86815,19.00227c5.01492,11.90637 0.21405,24.79235 -6.1066,35.16777c-5.40714,11.63457 -14.24293,22.0266 -17.15868,34.6068c0.20795,13.02319 4.72718,25.69211 3.20084,38.80902c0.9605,10.14279 6.64024,19.14648 10.04536,28.64983c5.00912,10.57565 9.93535,21.70013 17.62276,30.53665c7.02892,8.87558 29.89705,11.67009 23.64502,24.91443c-4.01926,11.10844 -7.40147,24.48637 -19.39478,29.5565c-9.50977,5.9848 -21.3932,8.93677 -29.06369,17.37073c3.84956,0.36453 28.16327,-14.36331 23.8996,1.69739c-9.52658,11.2518 16.95053,-0.69223 23.42963,-2.18207c4.74442,-0.99915 4.29691,14.62488 8.52766,3.80228c5.95903,-10.08762 6.23502,-21.34366 11.26126,-30.51312c2.4781,-10.25645 3.82962,7.94009 9.64467,10.12222c7.07556,9.50238 7.79694,-14.07236 11.23129,-19.70615c2.62747,-8.54028 4.63826,-23.31885 8.02322,-27.91885c0.19868,-2.83281 6.58795,3.93147 5.0274,-3.78851c0.90347,-23.48584 -1.83659,-48.86755 -15.67365,-68.59196c-9.60602,-8.62669 -13.22336,-21.57266 -21.36568,-31.47811c-10.01912,-4.8186 -8.05391,-19.66993 -20.19205,-21.12443c-2.75856,-10.2361 2.62035,-22.86311 4.63016,-33.73514c2.78795,-10.12834 8.4742,-20.66132 3.52232,-31.15684c-3.76698,-10.86702 -11.83783,-21.03737 -23.57631,-23.51091c-5.21049,-2.63619 -9.89668,-4.17218 -2.89241,-7.84742c4.71588,-7.73713 -7.28709,7.39913 -1.58588,-2.982l0.25854,-2.29765l-0.00003,0zm-57.08003,24.11987c12.78673,0.33177 -8.83535,0.35227 0,0zm92.46721,218.72338c11.05893,4.6954 0.80228,21.55537 -5.46918,26.98338c-13.1071,-3.20859 2.39713,-19.21964 5.46918,-26.98338l0,0zm-10.64413,31.82323c-5.88483,2.41168 -15.44353,4.13849 -3.83093,0.46683l1.97208,-0.34274l1.85886,-0.12408z",
+	"crow_2": "m299.86716,62.24508c-8.36279,-13.35279 -25.79254,-10.94299 -38.7652,-13.97612c-10.77151,-4.46517 -27.26852,-8.74568 -34.93257,4.02601c-10.22766,11.92024 -19.30536,24.77381 -27.38379,38.20519c-16.9417,18.56395 -37.51366,33.44937 -58.19264,47.49408c-17.41919,8.55826 -36.48907,15.23247 -50.59015,29.17691c-26.77713,17.17799 -59.39612,20.30975 -89.00278,30.37996c5.24787,1.82477 28.48156,-4.80739 12.86404,2.45506c-11.61908,3.82678 4.57293,7.38318 9.74338,4.83008c-4.08242,4.36552 -5.2054,4.72249 -0.18473,4.65681c-9.12115,5.09712 20.25491,-1.58305 4.07883,5.5506c-7.04263,2.05971 -24.35976,21.06046 -8.48079,12.5005c14.76321,-6.14401 30.50038,-9.23448 45.85791,-13.45705c-11.48634,11.80891 -27.85513,19.19374 -35.74965,34.16698c0.17943,3.86479 12.21982,-7.85281 17.31087,-9.77229c28.95095,-17.49719 59.28473,-33.71347 91.89844,-43.16046c4.45381,1.07288 5.32478,12.99994 14.00563,6.90237c0.76199,7.59987 19.82927,-11.92125 14.84979,3.30377c8.25793,-13.03635 -0.01482,14.1528 7.62892,18.26904c3.90089,5.15268 19.92041,12.26512 6.86195,14.03082c-5.77165,8.63597 8.09146,-3.46425 11.11865,4.62627c11.3129,4.10901 3.07231,8.32173 -5.11652,5.83363c-6.27592,-0.83809 -7.57079,7.40965 -1.22719,2.29182c7.57507,5.19347 19.60568,3.32813 29.26515,5.56088c9.65308,0.80066 21.35422,-9.88435 25.01279,-7.29437c-8.89755,-6.38512 -21.77765,1.41119 -31.54323,-3.51736c-2.05963,-6.62599 22.89082,2.37143 22.94131,-8.82851c11.68727,-1.08766 -9.82895,-2.59717 -14.00406,0.04509c-14.38026,0.76889 -21.75813,-12.59969 -31.88164,-20.19017c0.30659,-15.75429 11.86186,-29.28856 23.95569,-38.18524c15.77855,-9.50124 31.96706,-21.73888 36.43575,-40.70174c4.63271,-16.88809 7.21239,-34.29048 9.31848,-51.60873c2.84918,-11.17406 11.03882,-21.49306 23.60089,-20.65947c6.77469,-0.94415 13.57404,-1.72816 20.30646,-2.95438z",
+	"crow": "m65.63132,15.69366c7.23991,-11.19251 23.71874,-13.17996 36.20271,-14.69413c13.92134,1.25098 24.65079,12.10254 32.81262,22.59631c9.49452,8.5772 21.08662,15.85565 25.83853,28.41352c12.01437,5.95259 26.19815,9.13653 33.55229,21.87244c11.11548,14.36729 17.52112,31.75739 23.31628,48.60368c0.92021,12.5585 6.47,24.01521 8.36046,36.46043c3.24197,12.33818 5.82637,24.53572 9.31963,36.76498c3.88237,12.71416 9.39792,24.81319 13.2628,37.54517c7.05891,11.17328 13.48564,22.96204 17.86821,35.4054c-10.48648,-0.88873 0.96857,15.8573 2.93524,22.45895c2.86746,13.58783 -12.84537,5.80856 -15.59308,-0.46634c-9.70456,9.1796 -29.57259,11.24072 -38.3669,-0.80743c-9.26392,-12.20752 -14.38051,-27.69696 -27.16855,-36.53391c-5.02811,-4.18506 -9.90665,-22.45958 -11.7061,-6.32031c6.38489,16.05743 -18.74254,6.90547 -27.66772,9.78912c-15.99664,-3.21661 6.07263,-12.35889 12.86923,-11.27576c6.38602,-6.35408 17.01372,-16.99594 1.7589,-20.33147c-10.44731,-4.15326 -23.84068,-14.68553 -29.71439,0.99188c-7.37552,3.90117 -20.59412,22.40862 -5.95329,23.77255c5.91614,12.10878 -17.0737,3.35048 -23.49316,6.21452c-6.05255,1.90814 -21.13758,-1.4375 -7.08788,-4.49867c12.08796,-1.9845 17.85132,-16.8317 25.44044,-25.82515c-0.25166,-11.53856 -9.48829,-20.69617 -16.41167,-29.40816c-7.36517,-12.27962 -17.64172,-22.79747 -22.75925,-36.23717c-3.35689,-13.95544 -9.74807,-26.85826 -12.98938,-40.84583c-3.65936,-14.01762 -7.85575,-29.82359 0.01893,-43.25633c3.58914,-11.78534 5.08364,-22.78083 -2.44828,-32.4814c-10.40722,-8.4583 -25.19866,-5.06594 -37.19873,-10.67507c-1.4463,-9.05923 17.76661,-12.5158 26.11695,-14.53937c3.17027,-0.11009 5.59681,-2.76167 8.88516,-2.69248z",
+	"duck": "m185.95239,299.43112c-13.71118,-7.29123 11.45862,-7.3541 17.23322,-7.85522c14.99724,-0.2811 17.02971,-18.28448 15.48773,-29.74414c-2.1938,-4.69699 -0.04752,-14.89349 -7.7746,-13.37029c-15.43901,-0.71622 -30.7112,-4.55923 -44.14467,-12.22302c-0.82443,12.88171 -7.29927,24.66777 -11.6053,36.85115c-5.66316,6.16721 14.39644,28.18469 0.43378,18.34869c-9.04433,-8.40845 0.06526,8.74658 -11.16418,3.91656c-15.23827,-0.31436 -31.02578,2.40784 -45.91216,-1.24551c-5.00268,-2.09833 -20.66561,0.51883 -9.25531,-6.49301c6.4804,-1.18185 12.15667,4.48007 17.05421,-2.03778c11.5948,4.79346 30.04866,4.82639 34.25867,-10.28015c7.00595,-11.43338 11.29851,-24.25136 11.56012,-37.68254c-8.2043,-6.31854 -14.70296,-14.48831 -18.43434,-24.21049c-8.62861,-14.22275 -24.3753,-22.02206 -37.28508,-31.87471c-17.12926,-11.15475 -36.8522,-23.99915 -40.20823,-46.00098c-4.08031,-16.32172 0.02216,-34.19492 11.59384,-46.57394c7.80417,-11.16946 22.31328,-21.55052 18.99293,-36.88489c-8.43674,-15.00933 -26.68094,1.9423 -34.96601,9.23433c-9.98,7.06196 -20.71845,24.17017 -34.34288,16.49594c-1.7172,-11.61691 13.7034,-18.90693 17.498,-29.74388c7.8585,-12.19844 12.51045,-26.37627 18.95516,-38.92993c11.65712,-10.85135 30.93148,-10.91782 42.45155,0.28526c14.7008,11.44654 23.86826,29.5425 22.42876,48.35335c1.4173,12.98959 -4.14301,29.91504 8.25453,38.93287c17.92052,9.9613 39.04935,12.35098 57.26444,21.89838c22.77972,10.51788 39.86913,29.49796 59.04057,45.11781c11.7964,10.71736 23.92368,21.11819 35.13879,32.44618c-7.49713,-2.24278 -14.43054,-6.05879 -21.60767,-9.15805c9.28815,12.08043 13.46152,26.94177 15.66077,41.78857c3.61584,15.73579 13.73315,31.11919 8.65729,47.77711c-4.42633,13.85214 -18.52838,-8.55096 -25.42393,-12.47198c-7.88147,-7.42908 -15.67812,-16.62666 -27.10399,-17.90884c-2.06194,13.35767 -4.18094,27.25305 -1.83514,40.63339c1.37479,11.84998 25.0215,4.73886 21.59566,13.51175c-19.80942,-2.16162 -39.69846,-0.3399 -59.55595,-0.59872l-2.94055,-0.30328l0,0z",
+	"fish": "m127.20683,242.3436c1.50244,-15.94504 5.02446,-32.41927 12.88557,-46.10178c7.51215,-8.98547 19.63693,-8.71681 29.76314,-11.79086c-14.18819,-3.80443 -27.43222,-10.54059 -40.42705,-17.66788c-21.27006,-9.23157 -42.92073,4.06975 -62.09324,13.40138c-14.23518,6.80144 -28.31641,14.82532 -43.64474,18.1933c-10.05519,-6.98578 -1.65744,-26.80461 5.41335,-35.17271c8.9525,-11.55655 22.2043,-17.52696 31.90982,-28.07993c4.26963,-14.90575 -15.40321,-18.57297 -24.24153,-24.42971c-13.70577,-6.20512 -25.35116,-16.36843 -35.77064,-27.71589c24.19748,-1.40994 45.60231,13.61476 67.43612,22.73716c11.80957,4.27464 22.94788,10.28683 33.98999,16.23396c5.06265,-0.02556 22.24189,3.73252 20.52978,-2.03984c-12.8773,-0.57095 -11.58655,-17.22836 -2.92075,-23.83247c12.73701,-10.02242 28.26479,-15.93932 38.86842,-29.21478c4.65193,-3.7341 7.09996,-12.86792 11.03157,-15.74994c16.95282,13.24852 26.87143,34.14735 36.22475,53.96581c15.23062,3.44089 30.61246,6.23184 46.13637,7.07419c15.15991,6.93107 28.10406,19.01068 39.97369,31.27808c8.99451,6.78525 11.39157,25.24843 -0.83481,28.95241c-30.16479,16.24658 -63.84666,21.21309 -97.06413,22.77441c-4.67992,-0.32996 -8.75485,0.18372 -8.78621,6.33609c-2.92581,8.76227 -4.12184,18.94467 -9.62984,26.07907c-6.07878,-1.55455 -0.31998,-19.45975 -6.56294,-10.95245c-12.27982,13.32922 -27.04962,23.32567 -42.18671,32.26515c0,-2.18091 -0.00002,-4.36198 0.00002,-6.54276z",
+	"shark": "M 0.0576 184.3533 C -1 180.6667 16.109 171.9119 28.5757 164.4365 C 38.4736 158.5251 49.2812 151.3596 59.5749 145.0374 C 68.1791 139.7532 87.1667 130.8333 89.3069 125.0559 C 91.8073 118.3062 96.2785 105.8677 101.081 96.5857 C 104.7343 89.4927 111.6667 80.1667 115.4351 80.0032 C 116.8965 79.9398 118.1484 83.3223 118.1484 83.3223 C 118.1484 83.3223 122.1099 105.8601 130.8815 116.7246 C 134.3825 121.0713 144.5294 120.8968 148.261 120.6279 C 173.1667 118.8333 205.8755 122.4387 205.8755 122.4387 C 205.8755 122.4387 216.5042 115.1404 218.2813 114.3643 C 222.787 112.4434 218.2767 117.0532 229.4009 125.4153 C 235.5 130 238.8499 128.6677 243.6637 127.1807 C 245.6044 126.5642 246.7613 124.552 248.3672 123.3879 C 250.4222 121.9041 291.7726 94.0098 295.9696 92.7549 C 300.1667 91.5 299.9836 99.5272 299.2917 101.4797 C 291.6667 123 270.9678 137.8057 270.9678 137.8057 C 270.9678 137.8057 269.3696 140.9553 270.0887 144.2822 C 270.7395 147.3027 281.8333 169.5 276.0176 168.1533 C 273.6004 168.4127 267.6419 165.6692 267.6419 165.6692 C 267.6419 165.6692 261.6635 162.3462 257.3862 157.6331 C 254.3608 154.2813 252.5989 149.0752 252.5989 149.0752 C 252.5989 149.0752 251.2239 144.8431 247.1571 143.6204 C 237.3333 140.6667 229.9983 144.0425 227.4753 146.9565 C 225.3138 149.4482 226.6418 153.6443 226.6418 153.6443 C 226.6418 153.6443 229.6977 156.9539 227.8292 157.125 C 219.7236 157.823 215.9372 151.9265 210.3013 148.6626 C 208.3377 147.5349 205.3333 145.6667 200.2473 149.5073 C 197.6903 151.4382 195.8333 161.3333 191.8562 164.625 C 189.1771 166.8424 184.8923 164.2864 184.8923 164.2864 C 184.8923 164.2864 178.3735 162.0303 173.7651 161.9048 C 152.75 172.25 114.5828 181.7512 114.5828 181.7512 C 114.5828 181.7512 119.6706 187.7639 122.3383 191.9104 C 123.6625 193.978 123.6093 195.7603 123.6093 195.7603 C 123.6093 195.7603 124.9374 198.5923 122.1708 198.9861 C 120.5306 199.2144 104.5744 196.5801 96.0502 193.2532 C 88.873 190.4495 83.203 186.3447 83.203 186.3447 C 83.203 186.3447 57.0849 188.4819 40.3333 189.1667 C 30.5761 189.551 1.5102 189.4165 0.0576 184.3533 Z",
+		"dolphin": "M151.054, 51.526c-5.487, 2.029-10.494, 4.734-15.541, 7.145c-1.72, 0.821-3.674, 2.126-5.268, 2.525c-4.062, 1.013-10.418-0.759-15.596-0.944c-12.942-0.459-21.321, 0.493-31.96, 2.097c-4.979, 0.749-10.134, 1.451-14.504, 2.732c-3.733, 1.095-8.013, 3.542-12.19, 5.6c-6.601, 3.253-11.097, 6.316-16.244, 10.238 c-8.603, 6.551-14.019,  14.798-20.314, 23.859c-2.749, 3.955-6.708, 9.848-6.905,  14.528c-3.639, 5.515-9.168, 8.882-10.555, 16.955c1.939, 4.721,  6.964, 0.523, 9.992-1.049c2.504-1.304, 5.198-2.862, 7.417-3.487c11.533-3.251, 27.605,  1.396,  38.834-1.583c3.98-1.055, 7.428-3.185, 11.382-4.087c3.755-0.859, 6.627,  0.662,  9.304, 1.818c1.422, 0.616, 2.92, 1.45, 4.212, 2.113 c8.366, 4.323, 16.728, 8.906, 27.96, 10.632c9.015, 1.383, 16.847-1.256, 24.175-2.682c1.86-0.363,  4.263-0.231, 5.674-1.819 c-5.849-1.321-10.703-3.574-16.811-5.979c-8.023-3.156-14.255-5.291-17.287-11.627c3.591-0.94, 7.75-0.243, 11.488, 0.412 c4.082, 0.712, 8.133, 1.381, 12.05, 2.025c16.539, 2.723, 28.995, 7.294, 41.585, 13.224c6.116, 2.877, 11.752, 6.886, 16.936, 10.251 c10.617, 6.9, 19.68, 15.468, 28.228, 24.802c3.869, 4.226, 7.325, 9.518, 11.521, 14.562c1.834, 2.205, 3.678, 4.665, 5.638, 7.388 c1.873, 2.587, 4.731, 5.758, 5.127, 8.021c0.446, 2.499-0.881, 5.239-1.549, 7.97c-1.155, 4.744-2.007, 9.833-1.62, 14.704 c0.506, 6.3, 1.914, 12.436, 4.866, 17.209c1.281-1.139, 1.804-3.144, 2.464-4.98c3.236-4.136, 7.541-8.267, 7.648-15.15 c8.839, 4.568, 26.008, 4.185, 36.316, 4.066c3.099-0.036, 6.256, 0.292, 8.823-0.913c-5.414-3.138-9.388-7.109-14.094-11.163c-7.12-6.125-13.009-11.285-23.505-14.562c-3.402-1.062-7.297-1.637-9.161-3.605c-1.433-1.506-1.869-4.842-2.596-8.055 c-1.955-8.687-4.497-17.904-6.765-25.215c-6.806-21.976-17.194-41.507-31.015-56.675c-7.004-7.692-15.368-13.956-24.386-20.921 c-1.541-2.416-4.428-5.675-5.024-9.359c-0.61-3.793, 0.49-7.122, 2.834-9.67c5.128-3.742, 13.185-4.156, 16.669-9.757 c-4.555-3.279-10.207-4.24-15.753-4.776C171.573, 47.185, 160.348, 48.085, 151.054, 51.526z",
+	"he_hen": "m176.04681,296.29803c-8.82596,-3.77927 -18.43298,1.74493 -27.86224,-3.75964c7.62581,-0.4744 19.08463,-0.03574 17.06104,-11.34488c3.33665,-13.20654 -3.43475,-27.06163 2.20258,-38.55534c-8.82878,-8.42361 -18.09561,-18.39673 -22.80272,-30.16238c-0.9447,4.74663 -1.81537,8.52257 -3.158,0.33916c-0.76965,-4.00471 -0.30261,9.89931 -3.24527,0.14346c-3.10373,-8.67493 -11.4597,-31.29446 -14.05236,-10.31462c-1.0768,10.8262 -4.45592,3.14465 -6.0004,-3.72562c-1.56924,-13.22943 -7.23737,-25.48523 -8.72193,-38.68883c5.80227,-8.36407 -0.82715,-9.5029 -3.91098,-1.15848c-3.39584,13.23767 -6.30494,26.33923 -2.7624,39.9769c-4.70789,3.85124 -13.79493,-17.92216 -9.61541,-26.27414c3.62592,-9.45018 2.81974,-19.09607 3.42313,-25.48878c3.31529,-7.21146 -3.22571,-15.04807 0.25123,-22.73853c-8.88477,9.68631 -16.83011,16.38615 -14.33428,31.58234c-1.10283,3.79079 3.703,25.58844 0.64231,17.56184c-5.77861,-15.66916 -5.78305,-33.02271 -1.43442,-49.01125c0.00535,-12.20366 -9.89253,21.0744 -9.16187,4.76299c-0.93676,-12.30159 4.13303,-25.82869 8.93452,-35.55499c-5.46675,-6.50523 -23.17289,-1.89566 -14.79648,-15.70558c8.24343,-7.01884 7.35999,-16.67057 -3.85936,-8.18394c-17.3246,12.72424 -31.69814,29.07174 -47.58007,43.52234c15.25898,-19.61487 32.46107,-38.59572 53.7519,-51.75492c20.64337,-12.99951 50.5769,-14.34346 68.38963,4.28573c4.53072,7.97979 15.06177,13.26968 17.57275,20.45337c-1.84586,10.76744 5.10652,16.10654 5.85289,25.57021c4.38731,7.30244 -3.95828,20.43125 8.52597,16.64671c14.20137,-0.01996 33.63664,-3.16645 34.74754,-20.87874c5.66772,-25.50935 8.27689,-54.0092 26.4256,-74.31131c10.08655,-5.89642 3.82147,-4.32716 -3.54926,-5.29837c-6.51613,-7.58361 6.57724,-19.75743 13.02319,-21.14511c-1.112,-17.9227 10.53479,10.74471 13.86426,-2.41437c4.99586,0.09501 7.43144,12.08141 10.46855,2.29789c9.05719,7.66376 18.6297,19.25661 6.66562,29.92943c13.61102,6.52517 -13.86911,2.29947 -2.14532,12.29652c9.6759,9.35194 2.83621,26.62759 -5.10654,34.15639c-0.3085,5.66077 9.31277,13.88494 11.24728,20.75249c9.99454,19.34809 11.9986,42.36646 8.16797,63.56847c-5.39346,19.98318 -25.46588,28.67906 -39.65833,41.37386c-12.12337,9.93893 -7.85776,27.37115 -13.59781,40.42342c0.57072,7.5369 4.77751,16.1196 10.7547,20.66925c8.66214,4.84064 18.81006,7.96561 25.81393,15.05286c-6.39667,3.34055 -19.43893,-10.21753 -19.56508,0.39017c-9.50252,-12.34393 -23.7677,-4.06104 -34.21234,-13.55405c8.69193,1.65643 19.99033,0.8027 10.47188,-9.61145c-3.75841,-8.80696 -15.07852,-11.84618 -15.37883,-22.49022c-10.66643,6.69647 -17.92447,15.81358 -25.66988,24.90395c-12.85808,-0.80322 -13.41248,25.11618 0.47165,24.73163c5.7019,1.45825 27.10161,9.40335 10.25006,7.35107c-5.02289,-0.89746 -10.47203,-4.04099 -10.31842,1.85727c-2.30338,-0.41431 -4.35982,-1.56003 -6.48019,-2.47418z",
+	"hen": "m131.70792,299.20142c-2.65045,-8.04401 -50.59061,2.01245 -25.50379,-8.40613c9.71836,-2.24731 29.67359,0.57056 9.8335,-5.50568c22.5928,7.62228 32.60569,-19.08859 34.06422,-37.09636c-21.02885,-6.55212 -24.67069,-31.02429 -46.83106,-37.61485c-16.88445,-13.23645 -41.63732,-12.83168 -52.35418,-33.24014c-10.17476,-18.17259 -4.4284,-40.29292 -2.74405,-59.92338c4.00956,-20.72375 12.14967,-41.69897 10.53991,-62.75727c-16.41068,9.44812 -22.4106,-11.67328 -22.78485,-18.27062c-12.07958,3.08904 -19.7317,3.22594 -6.59584,-7.5194c5.87008,-8.14037 8.78346,-25.92081 18.16113,-23.25189c2.47408,-10.763 9.04029,4.89351 16.30021,-4.61621c4.44867,3.35889 13.85731,7.10325 3.42817,13.02555c18.83147,9.50194 34.07959,23.95835 41.92437,42.43233c7.86127,18.77559 23.52317,39.06593 48.8149,33.98585c22.90038,3.93186 49.73083,-9.80992 48.68822,-32.86776c0.44391,-16.33654 16.52325,-54.48924 38.19395,-35.09801c16.24046,6.22802 34.92778,21.65468 31.09642,39.16159c-2.21887,18.0508 -0.50452,36.25767 1.60162,54.45551c-13.60181,10.0825 -11.15982,27.59631 -20.65894,40.7838c7.8804,18.56862 0.29095,38.62871 -12.60841,53.70848c-12.90314,13.89935 -31.76248,26.24356 -52.66508,24.4381c-7.98578,13.29396 9.42929,24.99069 15.57339,25.73553c-16.01053,-5.1321 -13.75549,4.70874 -8.47672,15.2244c4.94576,19.6875 -10.58037,-17.53909 -20.60904,0.27255c-7.77597,7.68976 -38.86531,10.29276 -13.69539,1.07587c21.48048,-7.96875 -24.12099,-12.95142 -13.99879,5.00586c3.34996,7.49203 22.77361,10.79092 2.32814,7.93628c-9.02753,-4.74515 -13.85625,12.10397 -21.02202,8.92599zm43.09088,-34.62769c7.8596,-9.56569 10.12141,-37.24054 -6.87671,-17.06372c-13.43553,10.88889 -18.29311,29.6301 6.87671,17.06372z",	
+		"mythic_unicorn_2": "m182.0204,297.85391c-5.77818,-7.90314 -14.7635,-8.80438 -16.9241,-20.05347c-1.69348,-6.11859 -17.65829,-14.32483 -8.20955,-3.3428c7.2961,6.61768 15.96432,31.02682 -1.98563,23.31473c-13.65228,-5.01041 -14.2377,-20.48209 -17.89716,-32.06519c-11.90031,-8.25644 3.07674,-25.71408 -9.73651,-36.29276c-10.87482,-11.04288 -3.30119,-31.72456 -18.8404,-39.55457c-7.79965,-3.16566 -11.1757,18.69177 -12.48895,2.70163c-4.27309,-16.17242 -19.36451,7.86156 -29.42789,5.31358c-8.12057,-0.70595 13.58361,-6.35143 3.22626,-7.87068c-6.08933,3.33348 -11.72343,9.09727 -12.68681,-0.44351c-7.3251,-4.35046 -22.68599,-11.29797 -22.28696,-18.20909c6.3611,-1.99829 27.83545,3.78387 24.11403,-4.25029c-6.38573,-2.42343 -7.54573,-9.04803 0.27553,-4.60205c15.41352,0.48352 33.48255,-5.66917 46.30758,6.09853c6.68958,4.11612 13.26701,18.87857 16.84827,4.53223c11.5443,-13.92389 34.83883,-15.10329 41.95536,-33.13124c1.72211,-8.72215 -5.28903,-13.69839 -11.24521,-15.46512c-1.15878,-2.86641 -3.13139,-15.03612 -8.05675,-8.8949c0.22449,-5.37502 4.84473,-18.22859 -5.38927,-12.53831c-1.03801,-11.44846 8.74879,-22.87025 -4.19783,-31.20716c12.13029,2.25027 9.73825,-11.57887 7.09616,-13.77212c7.19073,-1.02106 15.62939,-7.49186 11.66467,-15.50808c7.80894,14.17675 8.07971,-17.19902 14.50877,-3.67512c11.83272,1.93988 -3.67599,-10.57163 7.20721,-7.77902c6.21443,0.21264 4.83423,-6.80917 10.41692,-1.50957c7.3886,-4.03149 -5.66409,-16.21531 6.26559,-7.74985c4.01033,3.484 16.77809,12.60911 14.48726,0.56772c11.33586,12.0923 20.25659,-11.23169 29.67625,-16.06186c3.73633,-4.47003 11.8613,-9.20071 4.36795,-0.66791c-4.97461,10.87669 -21.85179,22.64296 -17.31131,33.45053c-4.10985,3.74163 8.29224,8.44421 -1.58034,7.02768c-5.8488,6.31351 7.84134,18.1257 8.93388,28.06219c-3.13588,6.80826 -15.07657,14.53744 -19.90688,14.29315c1.76543,-8.76564 -2.06178,-20.19066 -13.24036,-15.23595c6.26202,11.45789 14.72818,22.40379 20.03253,34.86404c5.18462,12.24902 13.59059,26.39416 24.64981,10.62966c7.04883,-10.04763 27.18559,-9.90218 21.65419,6.41521c-2.82767,16.0232 4.74286,37.1706 -9.80374,48.20794c-8.77531,16.90973 -18.50392,-6.2874 -11.60965,-15.06308c-1.75673,-2.50781 -3.11575,-4.27809 2.02489,-7.7061c-1.06146,-2.57137 14.7939,-12.24554 6.80286,-18.18176c-9.0885,10.30594 -22.38708,22.23511 -18.69125,37.55475c2.99957,10.26601 -21.73944,27.86615 -19.76117,10.82875c0.44312,-6.62131 9.89648,-19.45415 7.72044,-21.10741c-6.90181,12.95006 -16.71997,25.39136 -31.55621,29.23625c-12.34084,0.73132 -18.80547,10.66779 -12.94504,21.69241c1.11998,15.62238 -7.12646,29.76141 -9.02499,44.972c3.52914,16.13283 25.01552,19.39287 27.93198,35.84959c5.01138,11.05234 -7.52405,9.41898 -13.36446,6.32639zm-30.55545,-48.12944c-1.80891,-7.29253 -5.53151,18.95699 -0.94273,5.02481l0.68695,-2.46143l0.25578,-2.56339z",
+		
+	"rhino":"M 31.2973 189.1916 C 30.374 186.1509 30.2876 182.8892 30.2876 182.8892 C 30.2876 182.8892 18.6488 172.7592 12.9338 167.0182 C 8.1162 162.1747 0.1206 148.2926 0.1206 148.2926 C 0.1206 148.2926 -0.3045 144.7842 0.4415 144.6859 C 1.6515 144.5302 7.9245 150.0048 14.0462 153.201 C 20.3518 156.4936 27.5875 158.6592 27.5875 158.6592 L 35.5018 158.6592 C 35.5018 158.6592 29.0012 141.5758 37.34 143.8147 C 40.3528 144.0688 42.0178 150.5315 46.6067 151.2422 C 51.9836 149.9209 54.6313 134.4272 54.6313 134.4272 C 54.6313 134.4272 52.9961 131.5424 53.0697 128.803 C 53.129 126.9918 54.9114 124.9244 54.9114 124.9244 C 54.9114 124.9244 51.1096 125.5576 48.5035 124.7196 C 46.155 123.9635 42.5672 121.0233 41.6173 118.8496 C 40.4416 116.1589 40.7466 113.1821 39.4977 111.4715 C 39.3738 110.1291 41.1021 109.6715 42.02 110.3015 C 45.4753 112.6733 50.0547 112.9256 51.043 113.4111 C 55.1783 115.443 62.1528 115.7264 63.1698 115.3193 C 54.0175 103.9211 65.6289 101.5547 67.2467 101.3131 C 69.2713 103.514 72.3221 106.16 73.1967 108.5642 C 74.3559 110.0273 74.2616 107.9475 74.2616 107.9475 C 74.2616 107.9475 74.3209 101.8131 76.9637 97.2195 C 77.5729 96.1479 80.9405 92.7265 83.1856 92.4271 C 83.9995 92.3186 85.7254 92.0741 87.5618 90.4255 C 92.2537 86.2132 105.0561 86.9177 105.0561 86.9177 C 105.0561 86.9177 106.0924 87.3971 108.0301 87.3889 C 109.7409 87.3788 139.8456 85.6026 152.1574 90.03 C 160.433 93.0059 175.2345 92.1159 193.0635 87.0243 C 198.6909 85.4173 214.9442 85 214.9442 85 C 214.9442 85 221.0913 85.3409 226.0806 87.0274 C 233.8591 89.6567 248.6718 88.6388 257.7491 89.6018 C 261.2524 89.9747 267.9599 93.2576 273.5101 96.3221 C 290.9601 105.9565 301.1294 127.5316 299.8999 134.8799 C 297.5037 149.2014 283.2316 173.735 276.9266 184.5226 C 274.3758 188.8869 273.0623 195.5137 273.6205 200.5527 C 273.7831 202.0202 271.6895 205.6906 267.7195 208.1928 C 262.1246 211.7193 266.3419 216.8904 266.8591 219.2671 C 267.3741 221.6376 267.2024 224.6782 265.6837 225.3544 C 264.1713 226.0263 242.5547 229.81 241.9206 224.7663 C 238.7548 219.072 254.3001 210.4229 252.5226 200.3702 C 247.4359 193.6818 246.2545 178.7816 245.4402 176.4947 C 244.5885 166.2041 227.9237 182.3253 219.5206 185.6245 C 195.3696 195.1066 168.116 190.8322 165.9726 190.0358 C 163.0314 198.9738 166.1362 203.3924 166.3365 204.4804 C 165.6754 210.5755 172.1837 220.3454 173.6375 226.3336 C 174.8277 231.1329 154.4893 231.1329 148.9116 230.9416 C 144.3201 229.7082 151.2226 220.7226 152.3475 219.7199 C 153.8791 212.0003 145.337 205.08 145.337 205.08 C 145.337 205.08 144.7269 212.0003 143.029 217.8104 C 143.0998 220.549 145.8231 222.5392 146.2197 224.9814 C 146.6408 227.5896 144.6581 227.9297 144.6581 227.9297 C 144.6581 227.9297 129.0663 230.7259 125.1382 227.4769 C 123.1681 226.8586 121.4508 227.8662 120.0711 226.7946 C 119.1125 226.0447 120.6945 221.7545 121.8821 220.5681 C 122.8979 219.5479 129.6764 219.3277 129.7289 211.1167 C 128.0493 196.5313 114.2192 190.4252 113.1891 184.7516 C 106.4906 187.3721 99.4475 182.4468 99.4475 182.4468 C 99.4475 182.4468 97.6059 184.5796 95.5782 184.9831 C 93.9512 185.3028 87.9826 181.4695 85.9838 179.2361 C 85.3387 187.9827 78.1289 185.6491 78.1289 185.6491 C 78.1289 185.6491 75.58 189.9465 71.5288 192.0231 C 61.5427 197.142 59.7122 196.7349 55.59 200.6408 C 53.2684 202.8405 49.1881 199.5904 46.4922 200.6021 C 36.7298 204.2658 30.8317 199.5844 31.2973 189.1916 Z",
+	
+	"tree": "M 27.2254 74.2515 C 25.9396 74.2515 25.2787 72.9597 25.2787 71.4106 C 25.2787 70.1191 25.6091 68.8652 26.5645 68.8652 C 27.2254 68.8652 28.2203 70.1191 28.5507 71.4106 C 29.2116 73.291 28.5507 74.2515 27.2254 74.2515 ZM 247.0194 147.96 C 249.9611 147.96 250.6219 148.2913 248.9661 150.5051 C 248.0107 152.0542 246.0245 153.3457 245.0691 153.3457 C 244.0743 153.3457 243.0829 152.0542 243.0829 150.5051 C 243.0829 148.918 244.4083 147.96 247.0194 147.96 ZM 41.6425 57.7979 C 38.7009 57.1711 38.3704 53.9971 41.6425 53.0388 C 43.2982 52.7437 44.2537 53.6655 44.2537 55.5842 C 44.2537 57.1711 43.2982 58.0933 41.6425 57.7979 ZM 4.9748 158.0671 C 8.9113 157.1448 8.9113 156.4819 7.586 154.3042 C 6.5946 152.719 6.2642 150.8005 6.9251 150.1736 C 7.2555 149.2136 8.9113 150.1736 9.8667 152.0542 C 11.192 154.5996 12.1833 154.9329 14.7945 153.3457 C 16.4144 152.3875 17.7361 151.759 17.7361 152.719 C 17.7361 153.3457 18.731 152.719 20.0168 151.4275 C 22.0031 149.5469 22.3335 145.4146 20.3473 143.2007 C 18.731 141.3201 10.5276 141.947 8.2469 144.1589 C 6.9251 145.7461 5.9302 145.4146 4.6444 142.574 C 2.6582 137.8508 2.6582 137.1877 7.2555 136.8926 C 11.192 136.8926 11.192 136.8926 7.9164 134.9741 C 6.2642 134.0518 4.6444 132.1335 4.6444 130.8796 C 4.6444 127.7058 9.2058 125.8252 11.192 128.0391 C 11.8529 128.9612 13.1388 129.9197 14.4641 129.9197 C 17.0753 129.9197 29.542 119.1853 29.542 116.9714 C 29.542 116.0115 30.8314 115.3848 32.1532 116.0115 C 33.773 116.3447 36.7147 115.3848 39.6958 113.7976 C 43.9232 111.2524 43.9232 110.957 41.6425 106.8264 C 40.0262 103.9858 38.04 103.0256 33.4426 103.0256 C 28.2203 103.0256 26.895 103.6526 25.2787 107.4534 C 24.6142 109.9985 22.6281 111.8792 21.3422 111.8792 C 19.0615 111.8792 18.4006 109.0403 20.6813 107.4534 C 21.6726 106.8264 22.3335 104.6128 22.3335 102.3989 C 22.3335 98.9312 21.6726 98.3044 17.4057 99.2268 C 13.1388 99.8535 13.1388 99.5581 14.1336 94.7988 C 14.7945 91.9583 15.7499 89.4131 16.4144 89.1177 C 17.0753 88.7864 17.7361 85.9456 17.7361 83.105 C 17.7361 77.4233 19.6864 76.4651 23.2925 80.5596 C 24.9446 82.7734 25.9396 83.105 26.5645 81.1863 C 27.2254 79.9326 29.542 79.6372 33.1481 80.2639 C 38.04 81.5178 38.3704 81.1863 37.7095 77.4233 C 37.3791 75.2097 37.0451 72.6643 36.7147 72.0376 C 36.7147 71.0791 35.0984 69.8237 33.1481 68.8652 C 29.2116 67.2786 28.2203 63.4795 31.8228 63.4795 C 32.8177 63.4795 33.773 62.8525 33.773 61.5969 C 33.773 60.6384 35.7593 60.0117 38.3704 60.3052 C 41.9765 60.6384 43.9232 59.3833 48.851 52.7437 C 52.4571 47.9844 55.0682 45.4392 55.3987 46.7307 C 55.7291 48.3159 57.3849 49.238 59.0047 49.238 C 61.6159 49.238 61.9464 48.3159 60.991 44.1853 C 60.657 41.3445 59.0047 37.8772 58.0099 36.29 C 55.0682 32.7849 55.0682 28.6904 58.0099 29.9438 C 60.3265 31.1995 67.535 27.7319 67.535 25.5181 C 67.535 24.5581 68.494 23.9312 69.8157 23.9312 C 71.1411 23.9312 71.766 25.8496 71.766 28.3589 C 71.766 31.531 72.4269 32.7849 74.0827 31.8625 C 75.3685 31.1995 76.3635 29.3171 76.3635 28.0635 C 76.3635 24.2625 86.844 17.6228 89.4551 19.5051 C 90.4501 20.1323 91.4413 19.5051 91.7755 17.2915 C 92.7308 12.8638 98.6499 9.3962 101.261 11.6101 C 102.5864 12.5322 103.8723 12.2371 104.2063 11.2788 C 104.8671 10.0232 107.4783 9.0649 110.4199 8.7693 C 113.3615 8.438 117.298 7.1824 118.9538 5.8909 C 125.1674 1.7964 131.3847 2.0918 133.9958 6.5198 C 135.6516 9.6917 136.3124 9.6917 136.3124 7.4778 C 136.3124 4.637 137.6019 4.3057 145.4713 5.2642 C 157.9381 6.5198 159.8884 6.5198 164.4858 4.9326 C 167.4274 4.0103 168.4222 4.3057 168.4222 6.8508 C 168.4222 8.438 169.3777 9.6917 170.703 9.6917 C 171.6943 9.6917 172.6497 8.7693 172.6497 7.8093 C 172.6497 5.2642 177.9116 4.0103 182.5089 5.2642 C 186.0755 6.5198 186.4059 6.8508 185.4505 15.373 C 185.1201 20.4636 185.4505 23.9312 186.0755 23.9312 C 186.7363 23.9312 187.4008 21.7173 187.4008 18.5452 C 187.4008 13.1953 191.0033 10.9832 192.3286 15.373 C 192.6591 16.9583 193.6144 16.3313 194.2753 13.824 C 195.9312 7.1824 199.5372 10.6499 198.5422 17.9185 C 197.551 23.9312 197.551 23.9312 200.4926 21.7173 C 202.1483 20.759 203.4341 18.25 203.4341 16.6646 C 203.4341 15.0776 204.4291 13.1953 205.7509 12.5322 C 208.3619 11.2788 211.3072 16.0361 210.3482 19.5051 C 210.0178 21.0906 210.0178 22.3459 210.9731 22.3459 C 211.6376 22.3459 212.2985 21.4238 212.2985 20.759 C 212.2985 19.8367 213.9183 19.5051 215.9045 20.1323 C 220.1679 21.0906 220.7928 23.6357 217.1904 25.1848 C 216.235 25.8496 215.2401 27.3987 215.2401 28.6904 C 215.2401 30.9043 215.9045 30.9043 219.507 28.6904 C 225.3902 24.8914 228.0013 25.1848 228.9963 29.3171 C 229.6571 31.531 230.9465 32.491 232.2683 31.531 C 233.5936 31.1995 236.5352 32.491 238.816 34.7031 C 240.8022 36.5854 243.7438 38.1707 245.0691 38.1707 C 247.0194 38.1707 247.0194 39.7578 246.3549 44.1853 C 245.6941 48.9446 245.6941 49.5713 247.6803 47.6531 C 250.2914 44.5168 251.2828 44.812 252.2418 49.238 C 252.5722 51.4519 254.8888 53.0388 257.5 53.9971 C 260.4416 54.626 262.0615 56.2109 262.0615 58.0933 C 262.0615 60.0117 263.0527 62.2239 264.0477 63.4795 C 266.6589 65.6931 265.9944 72.3328 263.0527 74.5466 C 262.0615 75.2097 260.7721 74.8782 260.4416 73.9199 C 259.7808 72.9597 257.5 72.9597 253.233 73.9199 C 246.3549 76.1318 245.0691 76.7605 246.6854 79.6372 C 247.6803 81.5178 259.1198 80.8911 265.3694 78.6772 C 267.3197 77.7188 267.9806 78.6772 267.9806 83.105 C 267.9806 86.2769 267.3197 88.7864 266.3284 88.7864 C 265.6639 88.7864 265.039 89.7446 265.039 91.3315 C 265.039 95.1321 266.6589 94.7988 270.9258 90.373 C 273.2029 87.8279 274.5282 87.1992 276.1481 88.7864 C 277.8003 90.373 278.1343 90.373 278.1343 87.8279 C 278.1343 86.2769 277.4698 84.9873 276.4786 84.9873 C 275.8536 84.9873 275.1891 83.7317 275.1891 82.4778 C 275.1891 80.8911 276.1481 79.6372 277.4698 79.6372 C 278.4647 79.6372 279.7865 80.2639 279.7865 81.1863 C 279.7865 82.1467 281.0759 83.4001 282.7317 83.7317 C 285.0089 84.6919 285.6733 85.9456 285.3428 89.7446 C 284.6784 97.0127 286.0038 99.2268 290.8956 97.9731 C 293.2123 97.3442 294.498 97.9731 293.5068 99.2268 C 293.2123 99.8535 293.5068 101.4407 294.1677 102.1033 C 296.8183 103.9858 295.8234 108.4119 292.8818 108.4119 C 289.2758 108.4119 288.2844 109.9985 290.2348 112.8394 C 291.5565 114.4263 292.5514 114.72 293.8372 113.4663 C 296.8183 110.2942 297.4433 112.8394 297.7737 125.4939 C 297.7737 131.8379 298.4346 136.8926 299.0955 136.8926 C 300.7153 136.8926 300.0904 143.8655 297.7737 146.7061 C 296.4843 148.2913 296.4843 149.8403 297.4433 151.1318 C 299.7599 153.9727 297.4433 162.1995 294.498 162.1995 C 291.887 162.1995 286.9591 168.2122 286.9591 171.053 C 286.9591 174.5225 282.7317 171.053 281.7368 167.2539 C 280.7455 163.7864 280.7455 163.7864 280.081 166.2939 C 279.4561 169.1724 283.0262 178.0259 286.0038 180.5349 C 287.954 182.4536 284.348 185.6255 281.7368 184.334 C 280.4114 183.7073 279.7865 181.8267 279.7865 179.9082 C 279.7865 174.5225 271.5866 160.9456 265.3694 155.8552 C 262.0615 153.3457 259.1198 150.5051 259.1198 149.5469 C 259.1198 147.6284 248.6357 141.6516 242.7525 139.7332 C 239.4768 138.7732 238.4855 139.1064 238.4855 141.6516 C 238.4855 143.5322 237.8606 144.1589 236.5352 143.5322 C 233.5936 142.2783 232.2683 145.1194 234.8795 147.96 C 238.4855 151.4275 237.8606 155.5596 233.9241 153.9727 C 231.277 153.0144 230.9465 153.3457 231.9379 158.7319 C 232.2683 161.8679 232.9328 166 232.9328 167.8806 C 232.9328 169.7991 233.5936 171.053 234.2545 171.053 C 235.2136 171.053 235.5439 170.426 234.8795 169.4678 C 234.5491 168.5076 235.2136 167.5854 236.5352 167.5854 C 237.5302 167.5854 238.4855 168.8408 238.4855 170.0945 C 238.4855 171.3862 237.1962 172.6396 234.8795 172.3086 C 232.9328 172.3086 231.277 171.3862 231.277 170.7593 C 231.277 167.8806 222.4486 148.2913 219.8375 145.4146 C 216.8958 142.2783 218.8461 141.3201 195.6006 156.1865 C 191.9982 158.4004 188.0617 163.1594 186.0755 166.6272 C 184.4556 170.0945 181.8445 173.6001 180.5227 174.2268 C 179.1974 174.8538 174.3055 179.9082 170.0385 185.2942 C 151.6849 209.0139 154.666 211.8547 155.9519 260.2944 C 161.5082 297 161.5082 297 161.5082 297 C 148.4129 297 148.4129 297 148.4129 297 C 137.6019 297 137.6019 297 137.6019 297 C 138.5932 263.1331 138.5932 263.1331 138.5932 263.1331 C 139.254 260.2944 139.5881 254.5752 139.9186 251.4028 C 140.249 249.5205 130.7238 241.2937 131.0543 239.4133 C 131.0543 237.8264 140.9099 242.2542 140.9099 240.667 C 142.5297 217.574 140.9099 199.2021 136.6429 189.4246 C 135.6516 183.4116 127.4482 164.0818 126.1624 164.0818 C 125.8319 164.0818 123.5153 162.1995 121.2346 159.9856 C 117.298 155.8552 115.6818 155.5596 93.7221 154.3042 C 70.1462 153.0144 70.1462 153.0144 70.1462 153.0144 C 64.5575 157.4404 64.5575 157.4404 64.5575 157.4404 C 61.2855 160.3188 58.0099 162.1995 57.0544 162.1995 C 55.0682 162.1995 46.8648 168.8408 43.2982 172.6396 C 42.9678 172.6396 42.6374 172.3086 42.6374 172.0129 C 42.3069 172.0129 42.3069 172.0129 42.3069 171.6814 C 41.9765 170.7593 41.6425 169.7991 40.9816 168.8408 C 42.9678 167.2539 44.5876 166.2939 45.2485 166.6272 C 46.2398 167.2539 47.1988 166.6272 47.1988 165.04 C 47.1988 163.4548 45.2485 162.8262 40.0262 163.4548 C 33.773 164.4133 32.1532 164.7446 31.1619 168.5076 C 29.542 170.426 29.2116 173.2668 30.1706 175.4807 C 29.8365 178.3213 29.8365 180.2397 30.1706 180.2397 C 30.501 180.2397 30.8314 179.613 31.8228 178.9482 C 31.8228 179.2798 32.1532 179.613 32.4872 179.9082 C 29.2116 180.8665 27.5558 183.7073 27.8898 186.5479 C 26.2341 187.8394 24.6142 188.4663 22.6281 189.4246 C 22.6281 189.4246 22.6281 189.0933 22.3335 189.0933 C 23.6229 186.2527 24.2838 183.0803 24.6142 178.3213 C 25.2787 172.9712 24.9446 169.4678 23.9534 169.4678 C 23.2925 169.4678 22.6281 170.7593 22.6281 172.6396 C 22.9584 174.2268 22.3335 175.812 21.0117 176.1074 C 20.0168 176.4387 19.356 175.812 19.356 174.2268 C 19.356 170.426 18.0701 170.426 15.1249 173.8936 C 13.8032 175.1851 11.192 176.7344 8.9113 177.3992 C 5.9302 178.3213 4.9748 177.6943 3.6495 174.2268 C 2.6582 171.3862 1.9973 168.2122 2.6582 166.9585 C 2.9886 165.3716 2.9886 164.0818 1.7028 164.0818 C -1.9033 164.0818 0.7079 159.0271 4.9748 158.0671 ZM 33.1481 85.3186 C 31.1619 84.9873 29.542 84.0649 28.8812 82.7734 C 28.5507 80.8911 28.2203 80.8911 28.2203 82.7734 C 28.2203 84.0649 26.895 84.9873 25.6091 85.3186 C 23.2925 85.3186 23.2925 85.6501 25.9396 86.9058 C 27.5558 87.5325 29.2116 88.4907 29.542 88.4907 C 29.8365 88.4907 31.4923 87.5325 33.1481 86.9058 C 36.0897 85.3186 36.0897 85.3186 33.1481 85.3186 ZM 292.8818 136.2656 C 293.5068 136.8926 294.1677 135.9324 294.1677 134.3472 C 294.1677 133.0918 293.5068 131.8379 292.8818 131.8379 C 291.887 131.8379 291.2261 132.4648 291.2261 133.387 C 291.2261 134.3472 291.887 135.6387 292.8818 136.2656 ZM 290.5652 139.1064 C 290.2348 138.1462 288.6149 136.8926 287.2896 136.8926 C 286.3342 136.8926 285.6733 138.1462 286.3342 139.1064 C 286.6287 140.0647 287.954 140.6917 289.2758 140.6917 C 290.5652 140.6917 290.8956 140.0647 290.5652 139.1064 ZM 287.6236 153.3457 C 288.6149 153.3457 289.9402 153.0144 289.9402 152.719 C 289.9402 152.0542 288.6149 151.4275 287.6236 150.8005 C 286.3342 150.1736 285.3428 150.5051 285.3428 151.4275 C 285.3428 152.3875 286.3342 153.3457 287.6236 153.3457 ZM 290.2348 123.28 C 291.5565 122.6528 292.2209 121.6929 291.887 120.7705 C 290.8956 118.5208 285.3428 118.5208 285.3428 120.7705 C 285.3428 123.28 287.2896 124.2383 290.2348 123.28 ZM 272.2476 99.5581 C 270.5918 100.5183 269.6005 102.3989 269.9308 103.3589 C 271.5866 105.8665 273.537 105.2395 275.1891 101.145 C 276.809 97.3442 276.1481 96.7175 272.2476 99.5581 ZM 265.9944 148.2913 C 274.5282 156.8132 274.8587 157.1448 274.8587 154.3042 C 274.8587 152.719 274.1978 151.4275 273.2029 151.4275 C 272.2476 151.4275 270.5918 149.8403 269.6005 147.96 C 268.645 146.0774 266.6589 144.1589 265.039 144.1589 C 262.0615 144.1589 262.0615 144.4922 265.9944 148.2913 ZM 259.1198 133.387 C 261.1025 133.387 262.0615 132.7603 260.7721 132.4648 C 259.7808 131.8379 258.1609 131.8379 257.1696 132.4648 C 256.1746 132.7603 257.1696 133.387 259.1198 133.387 ZM 249.6306 90.373 C 250.6219 91.3315 253.5635 92.5852 256.1746 93.2139 C 260.7721 94.1721 261.1025 94.1721 258.4913 91.627 C 255.5138 88.4907 247.3499 87.5325 249.6306 90.373 ZM 229.6571 37.8772 C 228.6658 38.7993 228.3354 40.7178 228.6658 41.9714 C 229.3267 44.5168 231.277 42.303 231.277 38.5039 C 231.277 36.5854 230.9465 36.29 229.6571 37.8772 ZM 239.4768 106.1997 C 242.088 107.7847 243.0829 107.7847 244.4083 105.571 C 247.0194 102.1033 245.3636 100.5183 240.4717 102.7305 C 236.5352 104.2813 236.5352 104.2813 239.4768 106.1997 ZM 232.9328 90.373 C 237.8606 86.9058 237.8606 86.9058 233.9241 86.9058 C 231.277 86.9058 229.3267 88.1592 228.3354 90.373 C 227.7104 92.5852 227.046 93.8408 227.3764 93.8408 C 227.3764 93.8408 229.9876 91.9583 232.9328 90.373 ZM 225.7242 141.6516 C 228.0013 145.1194 231.9379 145.1194 230.652 141.3201 C 230.3216 140.0647 229.9876 138.4795 229.9876 138.1462 C 229.9876 137.8508 228.6658 137.8508 227.046 138.4795 C 224.3989 139.1064 224.3989 140.0647 225.7242 141.6516 ZM 215.5705 128.6658 C 218.1816 132.1335 219.507 132.4648 222.4486 129.9197 C 224.3989 128.3345 224.3989 128.3345 222.4486 128.0391 C 221.4573 128.0391 218.8461 127.7058 216.5654 127.0789 C 213.2898 125.8252 213.2898 125.8252 215.5705 128.6658 ZM 215.2401 94.1721 C 216.8958 94.1721 218.8461 89.1177 217.8513 87.5325 C 216.5654 85.9456 213.9183 88.4907 213.9183 91.3315 C 213.9183 92.9185 214.5792 94.1721 215.2401 94.1721 ZM 199.2067 115.6799 C 197.2205 116.9714 197.551 117.2671 200.1622 117.2671 C 201.8179 117.2671 203.7646 116.6382 204.4291 115.6799 C 205.4203 113.1709 202.1483 113.1709 199.2067 115.6799 ZM 199.5372 143.5322 C 199.8317 143.8655 200.823 143.2007 201.8179 141.6516 C 202.8091 140.3601 205.7509 138.7732 208.0315 138.1462 C 210.9731 137.1877 212.2985 135.6387 212.2985 133.387 C 212.2985 128.0391 207.7011 129.624 202.8091 136.561 C 200.823 140.0647 199.2067 142.9055 199.5372 143.5322 ZM 195.9312 128.9612 C 198.8727 125.4939 198.8727 124.865 196.556 123.9067 C 193.9449 122.6528 191.9982 125.4939 191.9982 130.5464 C 191.6642 134.3472 191.6642 134.3472 195.9312 128.9612 ZM 190.6729 91.627 C 191.0033 94.1721 191.6642 93.8408 193.6144 89.1177 C 195.9312 84.0649 195.9312 83.4001 193.9449 83.4001 C 192.6591 83.4001 191.3337 84.3586 191.0033 85.9456 C 190.3424 87.1992 190.3424 90.0779 190.6729 91.627 ZM 189.053 65.6931 C 189.053 66.9829 189.6779 70.1191 190.3424 72.3328 C 191.3337 76.7605 191.3337 76.7605 192.3286 72.9597 C 193.6144 69.1609 192.3286 63.4795 190.3424 63.4795 C 189.3834 63.4795 189.053 64.4375 189.053 65.6931 ZM 166.1056 76.1318 C 164.4858 78.3457 164.4858 80.5596 165.7716 87.1992 C 166.4361 91.9583 168.0919 96.7175 169.0472 97.6399 C 170.703 99.2268 171.0334 97.6399 171.3638 87.8279 C 171.3638 75.8381 169.7081 72.0376 166.1056 76.1318 ZM 169.0472 109.6672 C 169.3777 110.2942 170.0385 109.0403 169.7081 107.158 C 169.7081 105.2395 169.3777 104.9441 168.7168 106.1997 C 168.4222 107.4534 168.4222 109.0403 169.0472 109.6672 ZM 180.8531 79.9326 C 180.5227 80.5596 180.5227 84.9873 181.514 89.7446 C 182.5089 97.9731 182.8034 98.3044 183.1339 92.2915 C 183.4643 82.4778 182.8034 77.7188 180.8531 79.9326 ZM 169.7081 169.1724 C 171.6943 165.3716 174.9664 159.0271 177.2471 155.2266 C 179.8582 151.1318 181.514 145.7461 182.1749 140.3601 C 183.1339 131.8379 183.1339 131.8379 183.1339 131.8379 C 179.1974 136.561 179.1974 136.561 179.1974 136.561 C 177.2471 139.1064 175.9253 141.947 175.9253 142.9055 C 175.9253 145.4146 169.7081 161.241 167.7578 164.0818 C 166.7665 165.6667 165.1107 169.1724 164.8162 171.6814 C 163.1604 178.9482 166.1056 177.6943 169.7081 169.1724 ZM 146.4626 201.7476 C 147.4575 208.0557 147.4575 208.0557 150.7296 194.4792 C 152.6799 187.1746 155.6215 175.4807 157.6077 168.2122 C 160.2188 159.0271 161.2137 151.4275 161.2137 140.6917 C 161.2137 126.7473 160.8797 126.4519 158.2686 128.0391 C 152.3494 132.1335 149.0738 143.5322 147.752 165.6667 C 147.1271 177.0676 146.4626 188.4663 145.8018 190.9756 C 145.4713 193.5208 145.8018 198.28 146.4626 201.7476 ZM 147.1271 120.7705 C 148.4129 123.9067 149.7383 126.4519 149.7383 126.4519 C 150.0687 126.4519 151.6849 124.5334 153.0103 122.0244 C 154.666 119.8123 157.2772 117.2671 158.2686 116.3447 C 162.1691 113.4663 163.1604 104.6128 159.8884 98.5999 C 157.2772 93.2139 150.0687 87.1992 148.7433 89.1177 C 148.0825 89.7446 147.1271 95.7593 146.4626 102.7305 C 145.1409 113.1709 145.1409 116.3447 147.1271 120.7705 ZM 145.1409 48.3159 C 145.8018 48.9446 146.4626 48.6113 146.4626 47.6531 C 146.4626 46.3975 145.8018 45.1436 145.1409 44.5168 C 144.146 43.8521 143.521 44.1853 143.521 45.4392 C 143.521 46.3975 144.146 47.6531 145.1409 48.3159 ZM 39.0313 133.387 C 43.5927 133.7202 43.5927 133.7202 43.5927 133.7202 C 48.1901 133.7202 52.7875 129.624 52.7875 126.1206 C 52.7875 123.9067 52.4571 123.9067 39.0313 133.387 ZM 40.9816 124.5334 C 40.9816 125.4939 41.6425 126.4519 42.6374 126.4519 C 44.2537 126.4519 48.851 120.7705 47.8597 119.8123 C 46.8648 118.5208 40.9816 122.6528 40.9816 124.5334 ZM 44.5876 102.7305 C 49.5155 109.0403 51.7962 109.6672 54.4073 105.571 C 57.0544 101.7722 54.7378 99.2268 46.8648 98.3044 C 40.3207 97.3442 40.3207 97.3442 44.5876 102.7305 ZM 40.9816 84.9873 C 40.9816 85.6501 43.2982 87.1992 45.9094 88.4907 C 58.0099 94.5037 60.3265 94.5037 59.996 88.7864 C 59.996 85.3186 55.0682 77.7188 53.1179 77.7188 C 50.8013 77.7188 40.9816 83.7317 40.9816 84.9873 ZM 58.6743 129.9197 C 62.2768 129.9197 62.6072 128.9612 59.6656 127.4121 C 58.3403 127.0789 57.0544 127.4121 56.724 128.3345 C 56.0595 129.2925 57.0544 129.9197 58.6743 129.9197 ZM 61.2855 55.5842 C 59.0047 53.9971 56.0595 53.3704 54.7378 53.9971 C 52.4571 55.2527 52.7875 55.5842 56.0595 56.5422 C 57.6794 57.1711 60.991 57.7979 62.6072 58.0933 C 64.5575 58.0933 64.5575 57.4646 61.2855 55.5842 ZM 60.991 66.9829 C 62.9376 66.9829 63.2717 66.6514 61.9464 65.6931 C 60.991 65.3979 59.6656 65.3979 59.0047 66.0247 C 58.6743 66.6514 59.6656 67.2786 60.991 66.9829 ZM 62.9376 74.2515 C 58.3403 74.2515 58.3403 74.5466 60.991 77.092 C 64.263 79.9326 65.2184 80.2639 66.5438 78.3457 C 68.8244 75.8381 67.2046 74.2515 62.9376 74.2515 ZM 69.4854 38.5039 C 68.16 36.917 67.8296 39.7578 68.494 43.2253 C 68.8244 45.4392 70.1462 47.3574 70.8107 47.3574 C 72.0965 47.3574 71.1411 40.3845 69.4854 38.5039 ZM 79.9659 80.2639 C 79.3051 80.5596 80.9608 82.4778 82.9111 84.0649 C 84.8973 85.6501 86.5135 86.2769 86.5135 85.3186 C 86.5135 83.105 80.9608 78.9727 79.9659 80.2639 ZM 71.766 82.4778 C 68.8244 84.6919 70.4802 90.373 74.7436 91.3315 C 77.0243 91.9583 80.6304 94.5037 82.9111 97.0127 C 84.8973 99.5581 86.5135 100.5183 86.5135 99.5581 C 86.5135 96.386 73.4218 81.1863 71.766 82.4778 ZM 85.1918 108.7451 C 83.2416 103.6526 80.9608 101.145 76.6938 99.5581 C 73.4218 98.3044 70.1462 97.6399 69.1549 97.9731 C 68.16 98.3044 72.0965 102.3989 77.6888 107.158 C 88.1693 115.3848 88.1693 115.3848 85.1918 108.7451 ZM 102.5864 60.0117 C 101.9255 60.0117 101.261 61.2656 101.261 62.5193 C 101.261 64.1062 101.9255 65.0647 102.5864 65.0647 C 103.5418 65.0647 104.2063 64.1062 104.2063 62.5193 C 104.2063 61.2656 103.5418 60.0117 102.5864 60.0117 ZM 99.6089 85.9456 C 99.6089 88.1592 105.1976 86.5725 107.4783 83.7317 C 110.7504 78.9727 110.4199 77.7188 106.153 77.7188 C 103.2114 77.7188 99.6089 82.1467 99.6089 85.9456 ZM 109.1341 17.6228 C 108.1392 21.7173 107.4783 25.1848 107.8088 25.5181 C 108.8036 26.772 111.4149 17.2915 111.4149 13.4907 C 111.4149 11.9055 110.4199 13.824 109.1341 17.6228 ZM 126.1624 81.5178 C 124.5066 81.5178 123.2207 82.1467 123.2207 83.4001 C 123.2207 84.3586 124.1761 84.9873 125.1674 84.9873 C 126.4927 84.9873 127.7786 84.3586 128.1126 83.4001 C 128.7735 82.1467 127.7786 81.5178 126.1624 81.5178 ZM 122.2258 140.9868 C 124.1761 146.7061 127.1177 152.0542 128.7735 153.3457 C 130.4293 154.3042 133.7013 158.7319 135.6516 163.1594 C 137.6019 167.5854 139.5881 171.053 139.9186 171.053 C 141.5348 171.053 138.2628 141.947 135.9821 133.0918 C 133.9958 125.4939 133.3708 118.5208 133.7013 107.4534 C 133.9958 99.2268 133.7013 91.9583 133.0405 91.3315 C 132.71 90.7046 130.4293 90.7046 128.4431 91.3315 C 124.837 92.5852 124.5066 93.5454 124.5066 100.5183 C 124.5066 105.8665 123.8456 108.7451 122.2258 109.9985 C 117.6285 112.8394 117.9589 128.9612 122.2258 140.9868 ZM 112.7366 98.5999 C 112.0757 93.8408 111.4149 93.2139 107.8088 93.2139 C 103.5418 93.2139 103.5418 93.5454 103.8723 100.1851 C 103.8723 104.2813 104.5367 109.0403 104.8671 111.2524 C 105.1976 113.4663 106.487 115.6799 107.8088 116.0115 C 110.4199 117.5986 113.3615 106.5313 112.7366 98.5999 ZM 107.8088 130.5464 C 104.8671 126.7473 102.881 122.6528 102.5864 121.6929 C 102.5864 120.4392 100.9307 117.2671 98.9839 114.4263 C 96.9977 111.5857 94.717 108.0803 93.7221 106.8264 C 90.4501 102.3989 91.1109 106.1997 94.717 116.0115 C 96.9977 122.6528 100.9307 128.6658 105.528 133.7202 C 114.0259 142.2783 115.0173 140.6917 107.8088 130.5464 ZM 102.5864 146.0774 C 106.153 146.0774 105.8585 145.7461 100.9307 140.6917 C 97.6586 137.5193 95.3779 134.0518 95.3779 132.4648 C 95.3779 131.2112 91.1109 126.7473 86.1832 122.6528 C 81.2912 118.5208 76.6938 114.4263 76.033 113.1709 C 75.3685 111.5857 75.0381 111.5857 75.0381 113.4663 C 75.0381 115.3848 73.4218 115.6799 68.16 114.72 C 64.5575 114.093 61.6159 114.093 61.6159 114.4263 C 61.6159 115.0532 62.9376 118.8523 64.263 122.6528 C 66.5438 128.9612 67.535 130.2529 74.7436 132.7603 C 79.3051 134.3472 86.5135 138.1462 91.1109 140.9868 C 95.3779 143.8655 100.6002 146.0774 102.5864 146.0774 ZM 51.4622 156.8132 C 52.7875 156.8132 54.7378 156.1865 56.0595 155.2266 C 58.3403 153.0144 56.3936 153.0144 52.1266 155.2266 C 50.1763 156.1865 49.8459 156.4819 51.4622 156.8132 ZM 47.8597 148.918 C 51.1318 147.6284 61.6159 146.3728 71.1411 146.3728 C 89.1248 146.0774 92.7308 145.1194 85.5222 143.2007 C 83.2416 142.574 78.0192 140.9868 73.7523 139.4016 C 66.2133 136.561 50.8013 137.5193 49.185 140.6917 C 48.851 141.3201 47.1988 141.6516 45.579 141.3201 C 42.3069 140.3601 39.0313 142.9055 38.04 147.96 C 36.7147 152.0542 39.0313 152.3875 47.8597 148.918 ZM 21.6726 156.1865 C 22.3335 158.7319 25.6091 159.0271 28.2203 156.8132 C 29.8365 155.5596 29.8365 154.9329 28.2203 153.0144 C 26.895 151.1318 25.9396 151.1318 23.9534 152.719 C 22.6281 153.6414 21.6726 155.2266 21.6726 156.1865 ZM 11.192 178.3213 C 12.4779 178.3213 13.1388 179.2798 12.4779 181.1621 C 12.1833 182.4536 11.192 183.7073 10.5276 183.7073 C 9.5363 183.7073 8.9113 182.4536 8.9113 181.1621 C 8.9113 179.613 9.8667 178.3213 11.192 178.3213 Z",
+
+	"maple-leaf": "M 82.7949 242.2583 C 77.6862 252.9512 74.1093 258.564 56.7309 264.1697 C 53.66 265.6975 57.7499 269.2642 59.8018 268.7527 C 75.1283 262.6421 78.7051 257.541 85.8658 246.3296 C 89.4427 260.6033 97.6154 269.7756 111.4169 275.3813 L 112.4428 272.3191 C 131.3531 282.5146 145.6606 284.554 157.9232 282.0032 C 169.6797 279.4526 183.4743 277.4204 194.7248 278.9482 C 187.571 273.342 183.4743 266.7134 181.9492 258.564 C 193.6989 246.3296 216.699 250.9192 227.9426 243.7856 L 225.3847 238.1729 C 249.9168 230.0234 270.872 216.7727 300 220.8511 L 251.9617 186.1934 L 252.9807 181.6035 C 238.6732 170.9036 222.3208 168.3528 203.9166 175.4932 C 210.0513 157.6528 203.9166 138.2915 220.7888 124.5298 C 216.699 116.8848 220.7888 106.1848 227.9426 96.5007 C 228.9686 78.1558 234.0704 61.8464 243.2691 47.0679 C 228.4487 56.752 213.6351 65.4128 198.3017 73.0613 L 195.7438 67.4521 C 189.616 77.1394 180.9233 84.2729 169.1668 88.3442 L 167.1219 82.7385 C 151.2755 98.5398 132.3721 106.6892 120.6155 129.6306 C 124.1924 107.2007 117.5447 85.2891 108.3461 67.4521 L 104.7692 71.0222 C 98.1284 49.1072 74.6222 34.8369 59.8018 17 C 65.9296 65.9243 48.0383 72.0383 48.5581 99.0513 L 42.4165 99.5557 C 51.1091 127.0801 39.3525 139.8193 44.9744 158.6758 C 30.6669 151.5422 12.2626 156.6365 0 145.425 C 14.8204 168.8713 19.9362 197.4048 44.9744 216.7727 L 41.3975 218.3005 C 50.5961 228.489 62.3527 237.157 82.7949 242.2583 Z",
+	
+	"butterfly": "M 132.1899 141.4731 C 133.2701 142.188 135.5561 140.834 136.6667 140.6667 C 135.4167 139.0417 140.125 131.125 138.5 128.25 C 138 121.75 125.3439 107.0776 123.75 105.375 C 124.358 104.2332 131.1718 105.2957 130.9684 105.4595 C 128.125 107.75 140.5635 120.8953 142 128.5 C 144.6469 128.3535 148.1237 127.3618 149.6667 129 C 151.1076 127.4255 162.2255 115.3953 162.8333 105 C 162.9204 103.5103 168.9546 104.4531 167.8195 105.3611 C 166 111.8333 153.1691 130.0051 152.1667 130.6667 C 153.3333 136.3333 152.861 136.7217 160.3125 141.1279 C 163.666 133.2534 170.8113 126.5691 177.3557 119.9163 C 184.7454 112.4465 189.7048 105.2905 197.845 97.5144 C 208.5609 87.6365 222.2463 78.6233 234.7805 73.2429 C 243.5 69.5 258.1094 66.2913 260.349 66.0813 C 264.498 65.6785 268.25 65.75 273.1679 66.4807 C 280.4244 67.5588 287.5098 68.1609 295.1284 71.7371 C 302.2921 76.3269 299.8157 82.0793 298.48 87.4675 C 287.4467 99.6348 276.1462 114.2068 272.5872 129.1147 C 271.3906 134.6348 269.2391 144.147 264.1613 150.1221 C 255.9979 159.313 246.0071 158.9731 236.6201 160.219 C 242.3398 161.8567 248.5434 167.2041 254.1089 172.5776 C 262.7908 181.0295 267.0212 189.697 264.7792 199.1331 C 264.3019 201.1123 256.0239 216.1243 251.975 220.8347 C 236.6072 238.771 215.6852 250.9351 198.8225 248.9609 C 192.75 248.25 176 235.5 172.9885 231.7378 C 165.5126 222.3984 159.372 211.1333 159.1196 201.2981 C 158.1903 200.3696 157.0538 200.301 157.5549 199.0588 C 156.6237 201.9033 153.6667 211.1667 149.289 217.0229 C 142.9601 225.4893 137.1667 212.8333 134.8217 202.5698 C 134.0178 199.0515 134.6078 198.4424 133.6702 196.3386 C 129.2367 198.0208 131.5711 202.8984 129.8312 206.8386 C 128.3561 210.2698 121.75 220.75 119.9257 223.1392 C 114.0942 230.7764 101 242.3333 91.5037 245.1064 C 82.69 247.6802 75.22 247.3191 68.1365 243.686 C 59 239 46.124 228.1169 38.2026 219.2678 C 28.1746 208.3184 19.4099 191.8674 27.7518 180.2795 C 33.0762 173.0493 43.0985 162.2744 52.8922 159.6267 C 45.9788 158.78 30.683 154.2236 24.9946 141.5679 C 23.1688 137.5554 22.4915 131.3167 22.0271 126.853 C 21.2715 119.4836 17.9091 111.0168 15.1179 103.7605 C 12.8741 97.1265 8.9083 88.6335 4.7579 81.3755 C 0.4083 73.759 -3.1577 61.1648 4.4119 54.9631 C 7.0561 52.7964 15.2436 50.2693 16.9547 50.0891 C 22.936 49.4504 31.085 52.3877 37.1343 54.1499 C 41.0975 55.314 58.487 61.5269 63.2961 64.9478 C 95 87.5 117.5438 115.5918 132.1899 141.4731 Z",
+	"leaf_1": "m35.63904,285.5213c9.77121,-31.99348 23.14531,-59.08864 35.83149,-72.59245c13.5912,-14.46718 7.56125,-20.74258 -6.45918,-6.72212c-5.89857,5.89853 -7.58387,1.61555 -7.58387,-19.2735c0,-49.83961 25.83589,-80.67891 87.99842,-105.04016c52.59872,-20.61333 91.37741,-43.79435 107.45589,-64.23479l13.10197,-16.65652l0,28.9807c0,35.83507 -11.11781,89.97318 -23.42422,114.0641c-13.0549,25.55626 -57.80217,72.72934 -79.76038,84.08435c-19.67261,10.17316 -61.687,13.16808 -84.14172,5.99792c-11.19011,-3.57314 -14.7415,-0.84308 -20.53963,15.78944c-3.8556,11.06018 -7.0102,26.79501 -7.0102,34.96616c0,9.27652 -3.72057,14.8566 -9.90572,14.8566c-7.3461,0 -8.78352,-3.67429 -5.56284,-14.21973z",
+	"drop": "m115.15536,295.759c-42.01334,-15.78687 -72.12711,-65.94934 -65.28346,-108.74701c4.3154,-26.98718 95.35947,-190.81818 103.3105,-185.90417c2.59511,1.60386 25.68835,39.79974 51.31831,84.87975c41.0565,72.21342 46.5999,85.67899 46.5999,113.19665c0,55.77716 -44.6394,101.46498 -98.23825,100.54555c-15.6409,-0.26834 -32.60906,-2.05518 -37.707,-3.97076zm42.09262,-28.05386c1.39066,-7.22116 -1.85785,-10.74289 -9.90955,-10.74289c-18.35065,0 -43.80598,-23.24161 -49.49309,-45.18889c-6.0666,-23.41179 -22.15186,-26.19615 -24.52774,-4.24574c-4.57746,42.29059 76.21872,100.22086 83.93037,60.17752z",
+	"feather":"M 188.7044 276.8495 C 188.7044 276.8495 159.7298 274.7077 144.3849 266.5197 C 129.04 258.3316 121.8791 247.8918 121.8791 247.8918 C 121.8791 247.8918 129.932 256.8966 141.2327 263.7194 C 148.1224 267.879 156.2198 271.2277 164.4356 271.2277 C 164.4356 271.2277 151.7511 264.0633 142.2365 269.1805 C 142.2365 269.1805 149.0907 264.4724 160.9574 268.0547 C 172.8248 271.6369 178.7574 269.5897 178.7574 269.5897 C 178.7574 269.5897 158.7075 269.4874 150.0116 263.7557 C 141.3156 258.024 139.1672 254.7494 139.1672 254.7494 C 139.1672 254.7494 148.1699 264.0633 155.1263 265.1892 C 162.0827 266.3151 174.0517 264.9839 174.0517 264.9839 C 174.0517 264.9839 161.6738 265.2915 157.7859 263.5511 C 153.8987 261.8116 138.5538 258.3316 135.792 265.5983 C 135.792 265.5983 138.8605 257.9217 152.8756 260.1735 C 166.8907 262.4253 168.2213 261.7093 168.2213 261.7093 C 168.2213 261.7093 143.3618 252.0877 129.449 257.5126 C 115.5361 262.9374 116.4569 267.5432 116.4569 267.5432 C 116.4569 267.5432 117.3778 251.5763 151.3414 254.4418 C 151.3414 254.4418 135.4853 252.0877 129.6534 247.3797 C 123.8231 242.6716 123.4134 239.6015 123.4134 239.6015 C 123.4134 239.6015 130.0624 249.7337 138.2471 249.836 C 146.4311 249.939 148.784 249.2223 148.784 249.2223 C 148.784 249.2223 132.825 245.5378 125.2544 246.356 C 117.6845 247.1751 105.4089 249.836 98.9636 238.168 C 98.9636 238.168 104.9992 249.3246 121.4702 245.4355 C 137.9404 241.5457 148.2721 245.8446 148.2721 245.8446 C 148.2721 245.8446 123.3111 241.0342 118.1957 236.2239 C 113.081 231.4135 112.4676 223.1224 112.4676 223.1224 C 112.4676 223.1224 114.616 237.0421 125.1521 238.3734 C 135.6898 239.7038 151.6481 239.3962 155.8427 244.2073 C 155.8427 244.2073 145.3058 236.4284 134.3592 237.452 C 123.4134 238.4756 106.5335 252.5999 97.9405 248.9154 C 89.3476 245.2309 85.4597 248.301 85.4597 248.301 C 85.4597 248.301 89.0409 244.7188 95.1779 246.356 C 101.3165 247.9941 102.6463 250.4504 113.1832 243.1837 C 123.7201 235.917 141.6224 226.91 152.9779 234.6881 C 152.9779 234.6881 99.9193 219.9849 94.1912 190.099 C 94.1912 190.099 99.2355 210.0254 125.1521 218.8946 C 151.0695 227.7638 152.5689 227.0827 152.5689 227.0827 C 152.5689 227.0827 112.6046 222.8512 93.9171 186.8237 C 93.9171 186.8237 110.148 214.8002 135.3831 218.4847 C 135.3831 218.4847 114.1041 211.1158 97.599 188.5989 C 81.0962 166.0812 80.4116 158.5744 80.4116 158.5744 C 80.4116 158.5744 100.4645 194.6018 138.3849 201.0169 C 138.3849 201.0169 108.6819 192.5198 87.4036 165.3971 C 66.1254 138.2744 72.7751 132.9519 72.7751 132.9519 C 72.7751 132.9519 68.1716 123.2288 71.649 121.0793 C 71.649 121.0793 64.7948 113.3004 66.7388 106.955 C 66.7388 106.955 71.649 131.0069 96.713 146.7693 C 121.7769 162.5309 123.9253 164.4758 123.9253 164.4758 C 123.9253 164.4758 97.9405 146.667 89.7565 138.0691 C 81.5725 129.4719 72.3654 122.8189 67.0455 104.3964 C 67.0455 104.3964 72.161 122.6143 88.3245 135.1013 C 104.4873 147.5883 107.6595 147.383 107.6595 147.383 C 107.6595 147.383 74.5138 130.3932 66.6366 102.2469 C 66.6366 102.2469 71.2401 123.0242 107.7618 142.8802 C 107.7618 142.8802 71.1379 121.2839 66.6366 98.2548 C 66.6366 98.2548 65.8187 94.8772 67.3529 93.2399 C 67.3529 93.2399 65.5112 88.8386 66.1254 83.3115 C 66.7388 77.7851 67.4552 71.8489 67.4552 71.8489 C 67.4552 71.8489 65.8187 95.1848 88.529 113.1982 C 88.529 113.1982 61.7263 81.0583 71.2757 54.5849 C 71.2757 54.5849 69.228 69.1872 75.6392 75.8736 C 75.6392 75.8736 70.1822 64.1389 72.7751 50.3548 C 72.7751 50.3548 72.0921 64.9572 78.9129 78.1943 C 85.7338 91.4314 107.5573 117.0872 107.5573 117.0872 C 107.5573 117.0872 81.9148 87.0635 77.8224 70.1419 C 73.7308 53.2203 76.0481 42.1668 76.0481 42.1668 C 76.0481 42.1668 73.7308 57.9959 83.6876 73.8271 C 93.6444 89.6577 97.0552 91.4314 97.0552 91.4314 C 97.0552 91.4314 69.6369 62.9085 80.0027 31.249 C 80.0027 31.249 79.3219 63.3184 90.6426 77.1018 C 101.9655 90.8858 105.3733 91.295 105.3733 91.295 C 105.3733 91.295 82.0489 72.8717 82.8668 47.0795 C 83.6861 21.2872 88.0526 19.9227 88.0526 19.9227 C 88.0526 19.9227 78.3662 41.7555 93.9156 62.7729 C 109.4657 83.7903 106.329 79.8316 106.329 79.8316 C 106.329 79.8316 84.2329 51.1739 88.5979 28.7926 C 92.9629 6.4114 101.2824 6.6849 101.2824 6.6849 C 101.2824 6.6849 92.145 12.6886 92.5539 26.4719 C 92.9629 40.2553 106.0578 67.0029 106.0578 67.0029 C 106.0578 67.0029 91.4619 30.2943 95.418 18.9665 C 99.3726 7.6395 107.6944 4.2285 107.6944 4.2285 C 107.6944 4.2285 91.4604 13.5084 100.872 38.3459 C 100.872 38.3459 95.0076 14.7387 110.6925 3.6845 C 110.6925 3.6845 99.5089 14.3296 104.1458 34.1167 C 104.1458 34.1167 102.7819 9.8239 117.6489 1.5002 C 117.6489 1.5002 108.1033 9.0071 107.9662 24.1549 C 107.9662 24.1549 110.0124 8.8692 121.3324 0.272 C 121.3324 0.272 112.7387 13.3727 113.2854 32.2051 C 113.2854 32.2051 119.6966 13.6477 122.8348 0 C 122.8348 0 123.3786 7.3697 121.0605 16.5117 C 118.7424 25.6551 117.6512 26.4734 117.6512 26.4734 C 117.6512 26.4734 125.9707 14.1917 126.3804 2.1828 C 126.3804 2.1828 126.7894 13.9197 123.2437 23.7458 C 123.2437 23.7458 129.9972 18.3128 130.8477 6.2743 C 130.861 6.0949 130.8714 5.914 130.8817 5.7317 C 130.8817 5.7317 132.7901 23.3344 125.8337 38.2103 C 118.8773 53.0869 115.6035 54.4507 115.6035 54.4507 C 115.6035 54.4507 131.0188 39.8476 133.3369 19.6514 C 133.3369 19.6514 133.6095 30.9769 129.5179 40.8023 C 125.4262 50.6283 121.0605 58.1352 121.0605 58.1352 C 121.0605 58.1352 141.6564 39.437 138.2471 5.8681 C 138.2471 5.8681 142.2017 24.5626 138.6561 38.7558 C 135.1104 52.949 117.6489 74.7833 117.6489 74.7833 C 117.6489 74.7833 144.7946 50.764 146.0214 12.6901 C 146.0214 12.6901 149.2952 35.207 136.8143 55.6767 C 136.8143 55.6767 155.2285 34.7978 154.8196 14.9418 C 154.8196 14.9418 158.912 24.9717 155.433 38.6869 C 151.9555 52.402 135.3831 84.5397 118.1957 92.3186 C 118.1957 92.3186 164.8446 67.14 161.776 23.9489 C 161.776 23.9489 166.8907 43.5996 160.5485 62.6373 C 154.2062 81.6742 130.0624 110.7418 130.0624 110.7418 C 130.0624 110.7418 164.6401 78.8087 169.7556 44.0087 C 169.7556 44.0087 171.3921 33.3651 169.3459 27.0189 C 169.3459 27.0189 177.7351 30.7034 178.3485 46.4658 C 178.9619 62.2274 170.7787 83.5168 165.0498 98.4594 C 159.3209 113.4027 147.0453 133.2587 147.0453 133.2587 C 147.0453 133.2587 186.9422 72.258 181.2126 42.3714 C 181.2126 42.3714 191.4435 55.2675 190.2152 72.0535 C 188.9884 88.8386 180.3947 135.5105 156.4568 156.5946 C 156.4568 156.5946 182.2364 136.1249 189.3973 98.8693 C 189.3973 98.8693 193.08 79.0133 192.4659 68.1636 C 192.4659 68.1636 197.5806 91.0904 195.7396 108.2855 C 193.8986 125.4806 174.6658 163.9644 174.6658 163.9644 C 174.6658 163.9644 195.7396 131.826 197.1716 111.7654 C 197.1716 111.7654 199.4223 123.8425 197.7858 134.8968 C 196.1493 145.9503 186.7377 166.6253 178.7574 178.7024 C 178.7574 178.7024 195.5351 154.5482 199.0133 143.9031 C 202.4916 133.2587 201.8774 127.1179 201.8774 127.1179 C 201.8774 127.1179 205.9698 160.2799 199.4223 175.8369 C 192.8748 191.3939 172.2107 214.5253 170.7787 225.3742 C 170.7787 225.3742 180.3947 200.1964 201.264 196.3066 C 222.1333 192.4175 234 198.3538 234 198.3538 C 234 198.3538 202.2871 188.1186 185.3049 207.3608 C 185.3049 207.3608 176.712 217.8006 176.5068 227.2168 C 176.5068 227.2168 198.6044 211.6598 202.0819 190.3703 C 205.5608 169.0816 221.7244 165.8062 221.7244 165.8062 C 221.7244 165.8062 203.7191 172.5615 203.9236 190.9848 C 204.1281 209.408 183.4632 231.1059 178.553 230.4922 C 178.553 230.4922 195.3307 225.7841 201.264 211.6598 C 201.264 211.6598 197.3761 225.9886 188.9884 234.279 C 180.5992 242.5693 183.361 246.1515 183.361 246.1515 C 183.361 246.1515 186.2258 237.2475 194.6143 229.7754 C 203.0035 222.3041 214.0515 209.408 214.1538 200.7078 C 214.256 192.0084 223.3609 183.3082 223.3609 183.3082 C 223.3609 183.3082 216.2 192.4175 215.8925 198.9682 C 215.5858 205.5182 216.6089 215.7534 204.64 224.3513 C 192.6703 232.9485 187.6578 248.4033 187.8623 255.1585 C 187.8623 255.1585 196.2174 231.0377 220.7702 226.2621 C 220.7702 226.2621 197.3079 230.9013 188.9884 257.377 C 188.9884 257.377 204.537 230.9028 225.2707 223.9429 C 225.2707 223.9429 203.1739 233.3591 192.5347 256.4223 C 192.5347 256.4223 198.8089 240.044 218.4499 239.3629 C 218.4499 239.3629 202.0819 241.5457 195.3996 256.9671 C 195.3996 256.9671 198.3999 250.4186 209.5851 248.0979 C 220.7702 245.7772 230.1803 237.7255 227.8622 230.0823 C 227.8622 230.0823 230.7263 240.7252 216.1326 247.8229 C 201.5374 254.9206 195.4055 271.9161 195.4055 271.9161 C 195.4055 271.9161 207.2904 283.1744 216.8995 292.6617 C 216.1409 297.9746 213.5212 299.4365 211.0835 299.9987 C 210.2119 300.1997 189.8638 277.3056 188.7044 276.8495 Z"
+	}
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/object.json
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/object.json	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/object.json	(revision 29468)
@@ -0,0 +1,30 @@
+{"data": {
+
+"raph_pencil": "m231.40605,33.93906l-31.55731,-19.83467c-7.96201,-4.99944 -18.45334,-2.59321 -23.47023,5.37046l-12.43852,19.79766l60.37047,37.91735l12.44833,-19.78847c4.99785,-7.97315 2.61256,-18.47403 -5.35274,-23.46233l0,0zm-174.89552,176.37623l60.37376,37.91696l98.39922,-156.64365l-60.4025,-37.92686l-98.37049,156.65354zm-9.22208,48.17491l-1.33344,35.61475l31.5089,-16.66608l29.28072,-15.46014l-58.2445,-36.60284l-1.21167,33.11432l0,0z",
+  "raph_boy": "m210.33144,143.89894c-6.95941,-12.57172 -15.47375,-22.74984 -24.01424,-29.86983c-9.96541,7.29803 -22.10274,11.74199 -35.33479,11.74199c-13.25803,0 -25.41282,-4.45262 -35.36066,-11.74199c-8.54047,7.11999 -17.06351,17.29811 -24.04,29.86983c-16.19487,29.18793 -17.97591,59.1273 -3.98808,66.89018c6.26434,3.49693 12.83241,0.89052 19.61797,-5.6474c-1.19028,6.62904 -1.88538,13.81406 -1.88538,21.32939c0,33.38869 12.97153,60.43492 28.95753,60.43492c9.6353,0 14.40506,-9.84814 16.69862,-24.92639c2.2851,15.07825 7.05482,24.92639 16.6552,24.92639c16.01227,0 28.98392,-27.04623 28.98392,-60.43492c0,-7.51534 -0.69533,-14.70035 -1.91148,-21.32939c6.80278,6.53792 13.36221,9.14433 19.64394,5.6474c13.97922,-7.76288 12.17188,-37.70226 -4.02254,-66.89018zm-59.36613,-29.51799c26.89833,0 48.71428,-21.8159 48.71428,-48.72745s-21.81595,-48.72751 -48.71428,-48.72751c-26.90748,0 -48.74066,21.82024 -48.74066,48.72751s21.83318,48.72745 48.74066,48.72745z",
+  "raph_girl": "m210.47775,159.31802c-6.5556,-11.85419 -14.5853,-21.4483 -22.63556,-28.15549c-9.39328,6.87933 -20.83389,11.06407 -33.31883,11.06407c-12.49292,0 -23.95,-4.19719 -33.33109,-11.06407c-8.05025,6.70718 -16.07988,16.3013 -22.66017,28.15549c-15.26108,27.50842 -16.94806,55.72913 -3.76718,63.05058c5.9046,3.29617 12.09998,0.83537 18.49591,-5.32317c-1.12607,6.24446 -1.79353,13.01715 -1.79353,20.10512c0,31.47218 12.22685,56.96574 27.29962,56.96574c9.078,0 13.57817,-9.28665 15.73595,-23.49945c2.15787,14.2128 6.65384,23.49945 15.71159,23.49945c15.09309,0 27.3199,-25.49356 27.3199,-56.96574c0,-7.08797 -0.65509,-13.86066 -1.80157,-20.10512c6.41638,6.15854 12.59937,8.61934 18.5162,5.32317c13.20151,-7.32146 11.4939,-35.54216 -3.77124,-63.05058zm-55.96663,-27.82361c25.36684,0 45.93047,-20.56793 45.93047,-45.93063s-20.56363,-45.93048 -45.93047,-45.93048c-25.36276,0 -45.94283,20.56364 -45.94283,45.93048s20.58006,45.93063 45.94283,45.93063zm31.37788,-94.27703c13.25461,4.88095 5.27805,-7.78414 5.27805,-16.43626s8.1813,-19.23294 -5.27805,-14.92929c-14.12682,4.52865 -25.57977,7.01829 -25.57977,15.68267s11.45296,10.47439 25.57977,15.68288zm-31.29187,-6.16252c8.39418,0 3.70572,-4.25034 3.70572,-9.48752c0,-5.24121 4.70074,-9.47933 -3.70572,-9.47933s-4.01289,4.25037 -4.01289,9.47933c0,5.24941 -4.38142,9.48752 4.01289,9.48752zm-31.47208,6.16252c14.12683,-5.1963 25.57968,-7.02252 25.57968,-15.68288s-11.45285,-11.15402 -25.57968,-15.68267c-13.45937,-4.31592 -5.28221,6.26888 -5.28221,14.92929s-7.98471,21.30898 5.28221,16.43626z",
+    "raph_pen": "m146.83684,115.71881c-0.45042,-0.67755 -1.00925,-1.34163 -1.72177,-1.85109c-3.04871,-2.2215 -7.351,-1.54391 -9.58611,1.52216c-2.23131,3.07336 -1.52603,7.36902 1.52969,9.59677c2.77647,2.01186 6.48155,1.52948 8.8457,-0.83739l-64.87093,89.42747l-20.16745,73.20351l63.32053,-41.89926l144.20293,-198.7902l-43.17049,-31.31054l-13.91629,19.18622c-0.79611,-3.19165 -2.57372,-6.18823 -5.45471,-8.29767c-6.68427,-4.84662 -16.02917,-3.38049 -20.87282,3.3172c-27.75597,38.28942 -12.36926,48.48591 -38.13829,86.73282zm-31.75805,119.69107l-32.57163,21.55399l10.37183,-37.68758l22.19981,16.13359zm38.36887,-121.63963c19.98219,-29.52283 18.07886,-37.52791 35.18015,-63.73244c2.82889,1.94135 6.07655,2.62617 9.2648,2.45808l-44.44495,61.27437z",
+    "raph_clip": "m254.98035,21.30912c-21.11665,-15.11687 -50.51465,-10.26612 -65.65204,10.86102l-118.72278,165.76295c-10.80711,15.07626 -7.34069,36.07983 7.75584,46.88922c15.09648,10.78922 36.07957,7.32249 46.88668,-7.77365l83.82764,-117.02809l-10.92749,-7.83544l-83.81487,117.03815l0,0c-6.49191,9.03548 -19.08845,11.1275 -28.12135,4.6667c-9.04539,-6.47157 -11.11713,-19.07556 -4.63807,-28.13162l0,0l118.70741,-165.75288l0.01529,-0.01052l-0.02554,-0.01006c10.79433,-15.04511 31.84402,-18.52175 46.89943,-7.74307c15.05548,10.78889 18.53748,31.84415 7.75841,46.89928l0,-0.01001l-130.12462,181.67987l0.01277,0.02063c-15.10905,21.08588 -44.57393,25.95731 -65.66481,10.86099c-21.09067,-15.12738 -25.94428,-44.56136 -10.84798,-65.66789l94.56806,-132.03191l-10.93002,-7.82487l-94.56529,132.03193c-19.45266,27.15742 -13.20177,64.92889 13.96575,84.37384c27.16738,19.46548 64.93915,13.20953 84.39181,-13.93738l130.12166,-181.69052c15.09668,-21.11655 10.25589,-50.49928 -10.87589,-65.63668z",	
+    "raph_tshirt": "m191.01682,41.7402c-6.65135,16.37186 -22.65103,27.93963 -41.39505,27.93963c-18.75568,0 -34.7588,-11.56777 -41.3954,-27.93963l-101.36017,42.98543l28.51685,67.20866l31.32125,-13.28813l0,137.02332l166.93693,0l0,-136.53912l30.19667,12.81158l28.52783,-67.2086l-101.34891,-42.99313z",	
+	"ball": "m1.36762,144.54343c-0.61252,-24.33647 11.43968,-48.24649 31.71385,-61.85355c33.0555,-25.12355 76.68359,-36.57172 117.69406,-29.65477c20.30775,-3.13354 29.29549,17.94864 22.15137,34.18353c-11.04268,10.79923 -30.25032,0.52836 -44.5518,6.11385c-46.3661,5.97041 -92.1348,26.12911 -123.47163,61.54787c-0.19116,-3.78908 -5.04203,-6.31387 -3.53584,-10.33693zm0.56006,21.59657c2.46893,-17.16783 19.59014,-26.10648 31.49495,-36.53964c40.07716,-28.36518 90.31613,-39.61352 138.89854,-37.70576c1.20387,19.56051 -8.00084,38.23036 -19.07559,53.7263c-15.20721,8.47826 -34.11861,-1.17561 -50.23914,6.54221c-28.27367,6.8441 -59.74523,15.46761 -77.84163,40.11734c-6.57559,19.79451 -20.47401,-0.35286 -21.54921,-12.00313c-1.52846,-4.62877 -1.3158,-9.384 -1.6879,-14.13731zm7.76269,-58.70418c2.42006,-21.53997 16.61662,-39.35048 29.64042,-55.76294c14.68114,-17.49181 34.66698,-30.31521 57.12629,-35.01287c17.80165,-4.64955 36.14864,-6.58389 54.39959,-8.53692c13.84103,10.63111 22.64574,29.11792 20.32661,46.60463c-10.75017,2.72292 -29.7578,-6.48294 -44.25362,-4.23798c-41.11142,0.38721 -83.13954,16.86419 -110.9226,47.60359c-2.31326,2.96635 -4.3931,6.11006 -6.31669,9.34248zm-2.20363,84.97105c15.37329,12.3277 15.8773,33.69405 25.32488,49.77684c-11.32475,-14.57886 -21.29314,-31.61081 -25.32488,-49.77684zm12.17333,11.7446c4.82258,-13.28815 19.94093,-31.96367 32.55468,-30.57486c5.04242,12.98813 7.22698,27.06129 15.42273,38.77007c22.00548,40.39473 62.27551,75.33984 110.15025,76.43997c7.82913,1.58691 28.58411,-3.6853 27.74063,-1.50394c-20.00963,9.82742 -43.17618,11.98239 -65.22374,11.19174c-40.94611,-2.71915 -81.7309,-22.38535 -106.34646,-55.65858c-6.96676,-11.95032 -10.92698,-25.33659 -14.29809,-38.66251zm33.70255,-33.88084c11.04849,-5.13829 31.74819,-20.7682 40.05036,-8.17067c20.26116,39.90601 54.51507,73.83781 96.68548,89.7942c21.8947,7.30453 46.52556,7.18939 67.87685,-1.92662c-8.90472,13.82597 -23.64018,22.69292 -37.52655,30.83714c-35.49046,15.14874 -78.39111,6.93469 -108.29421,-16.68286c-28.94243,-22.9118 -51.66176,-55.70389 -58.71476,-92.285l-0.04169,-0.84726l-0.03548,-0.71893l0,0l0,0zm14.80587,-143.69432c26.85995,-18.47492 60.14433,-27.13922 92.60995,-24.83766c-16.61871,10.60714 -37.47179,6.57748 -55.695,12.32051c-12.71339,2.76803 -25.33243,6.4903 -36.91495,12.51714zm23.19239,130.17215c17.68391,-8.37067 37.80864,-8.2348 56.92004,-7.08942c11.52194,17.94525 19.73788,38.80402 37.6284,51.74121c20.84937,18.617 51.18832,23.87227 77.45898,15.12419c9.02167,-6.09496 19.03778,-2.20023 14.1109,9.88971c-5.93085,20.07378 -26.98962,28.88977 -46.28781,29.86346c-39.48146,3.94382 -75.60028,-18.48682 -102.27098,-45.57831c-15.55914,-15.57706 -28.70033,-33.74123 -37.55954,-53.95085zm59.9713,-149.25921c14.39017,-11.41684 33.98842,-1.08634 48.71259,4.37706c14.6449,12.52997 16.60739,33.37817 20.47758,51.17717c6.47049,41.78263 3.85324,86.6684 -15.69031,124.8082c-4.67027,13.36929 -18.09242,20.61154 -26.69522,6.15724c-9.99724,-11.02568 -17.64142,-23.85532 -24.85538,-36.77173c-4.26648,-12.35977 9.69913,-21.07201 12.62395,-32.37317c5.6987,-11.2672 7.1479,-23.94022 7.7876,-36.27168c2.68518,-18.44756 0.04341,-37.58501 -4.80806,-55.44724c-3.40224,-9.88385 -8.92734,-19.45691 -17.55275,-25.65586zm41.36089,197.33399c28.32747,-32.0033 32.81847,-77.44762 30.6862,-118.36129c-1.29825,-24.12249 -4.96657,-49.05092 -17.68674,-70.0582c13.14473,0.40704 27.28206,12.75397 37.58124,21.8466c29.18982,37.11403 37.77368,91.40852 15.58273,134.05255c-8.72922,17.24329 -20.55305,32.80717 -34.43375,46.22929c-11.62009,-0.9548 -23.39864,-5.3515 -31.72969,-13.70895zm32.30334,13.89389c30.50691,-29.40305 52.59978,-71.66214 46.00664,-114.99303c-2.62479,-20.29454 -10.03497,-39.89902 -21.13239,-57.06778c20.32477,12.66527 31.62595,35.09759 41.79111,55.93748c14.61285,36.42265 6.66864,80.8159 -19.44537,109.92648c-13.41086,7.60643 -32.33356,8.77071 -47.21999,6.19685zm50.22404,-6.80072c10.46527,-18.28113 22.34006,-36.81323 23.43076,-58.50224c1.62656,-7.25171 -0.89633,14.22787 -1.77191,18.74721c-2.78329,15.96013 -6.41766,32.99399 -16.3092,46.01608c-2.27573,-1.26239 -1.2605,-7.4102 -5.34964,-6.26105z",
+	"bolt": "m178.14388,74.00616l-108.49727,68.79685l107.15599,23.63498l-99.04335,73.85934l-39.98779,-12.47227l28.36194,71.19228l112.7131,-31.06076l-47.58928,-12.98325l129.22581,-106.08589l-118.12698,-19.22734l114.07071,-71.6874l-65.0681,-10.76349l70.86891,-45.56109l-26.03423,-0.65478l-109.97452,62.50492l51.92505,10.50792z",
+	"car_smart": "m28.92024,238.37814c-20.54175,-8.15092 -27.36674,-32.3504 -27.6178,-52.52942c-2.7836,-14.94118 14.71887,-25.93048 8.95686,-41.2937c-2.18657,-22.71175 4.68564,-45.20703 14.9548,-65.22043c0.32475,-12.85873 10.87969,-17.84956 22.37955,-17.11762c37.15603,-4.71741 74.98359,-4.84966 112.15372,-0.39277c22.18198,4.11681 39.85953,19.32546 58.61859,30.81274c11.63586,8.63808 25.21985,14.32888 36.92355,22.63131c12.64026,10.62529 24.51556,22.47708 33.27448,36.57193c3.15143,14.09033 7.38165,28.09947 9.54742,42.2829c4.39661,13.27223 -4.6037,21.62047 -11.41214,30.84103c-10.34,12.57306 -29.90723,17.53416 -44.71561,10.78313c-10.28528,-3.75465 -14.07077,-19.70746 -25.7968,-18.60466c-44.20906,-0.65964 -88.41812,-1.31926 -132.62719,-1.97884c-10.24168,13.44736 -24.40165,28.14365 -42.91705,26.05086c-4.02312,-0.33679 -7.97831,-1.33774 -11.7224,-2.83646z",
+	"car": "m26.77284,183.48201c-8.08779,-6.80998 -23.25337,0.56996 -25.08215,-11.86069c-3.52016,-11.04616 7.23365,-19.6761 14.38957,-26.36473c12.51913,-6.23676 26.95447,-6.99092 40.49323,-9.84883c16.2238,-2.35439 33.11552,-4.36668 47.10119,-13.71207c15.9294,-9.9651 33.67083,-18.25834 52.86141,-18.11141c26.44141,-0.91634 53.7986,-0.02856 78.2453,11.26058c15.36688,6.93465 31.87709,10.4591 48.27711,13.85143c13.95395,1.83385 10.70889,16.88237 15.35007,26.15973c3.54291,10.65329 -4.11594,21.25732 -15.32654,21.59605c-11.85318,2.69405 -25.72552,2.95921 -34.00009,13.30453c-8.47623,9.38277 -23.69647,9.05888 -32.32811,0.09547c-3.56866,-2.21568 -5.9512,-7.58008 -10.70335,-6.65411c-44.31184,0.24008 -88.64653,-0.63266 -132.93902,0.78894c-11.57394,-0.92139 -16.38131,13.44077 -28.69251,12.44249c-6.30352,0.19554 -12.27285,-9.98318 -17.64611,-12.94739z",
+	"cloud": "m193.50864,67.27344c-28.56444,0 -53.08249,14.81322 -65.08365,36.1982c-4.7932,-2.67596 -10.08009,-4.29625 -15.72245,-4.29625c-17.06268,0 -31.26126,13.72618 -35.64974,32.35901c-7.49058,-2.96072 -16.20005,-4.7533 -25.50328,-4.7533c-27.90971,0 -50.54951,15.27039 -50.54951,34.09579c0,16.99312 18.56764,30.96303 42.68829,33.54732c-1.08106,1.83421 -1.91961,3.65059 -1.91961,5.57599c0,18.02431 49.38134,32.72462 110.23999,32.72462c60.85864,0 110.24005,-14.70032 110.23999,-32.72462c0,-1.21274 -0.75272,-2.29501 -1.18832,-3.47357c2.66562,0.6629 5.30496,1.37115 8.22687,1.37115c16.28061,0.00005 29.5253,-11.06223 29.5253,-24.6806c0,-13.61838 -13.24469,-24.68059 -29.5253,-24.68059c-1.99515,0 -3.69165,0.68915 -5.57599,1.00551c1.64767,-5.44531 2.74228,-11.00153 2.74228,-16.91078c0,-36.04859 -32.63087,-65.35786 -72.94485,-65.35786z",
+	"drop": "m115.15536,295.759c-42.01334,-15.78687 -72.12711,-65.94934 -65.28346,-108.74701c4.3154,-26.98718 95.35947,-190.81818 103.3105,-185.90417c2.59511,1.60386 25.68835,39.79974 51.31831,84.87975c41.0565,72.21342 46.5999,85.67899 46.5999,113.19665c0,55.77716 -44.6394,101.46498 -98.23825,100.54555c-15.6409,-0.26834 -32.60906,-2.05518 -37.707,-3.97076zm42.09262,-28.05386c1.39066,-7.22116 -1.85785,-10.74289 -9.90955,-10.74289c-18.35065,0 -43.80598,-23.24161 -49.49309,-45.18889c-6.0666,-23.41179 -22.15186,-26.19615 -24.52774,-4.24574c-4.57746,42.29059 76.21872,100.22086 83.93037,60.17752z",
+	"electric_guitar": "m168.96899,1.09303c-2.62799,0.19977 -5.017,2.04496 -6.96899,4.55579c0.009,13.46278 -11.116,25.03858 -14.875,34.35928c2.30499,1.8475 1.13,2.9332 -1.03101,4.4286c-0.17,2.5165 0.468,4.9685 2.468,7.3554c-2.591,41.8755 -6.024,92.17889 -8.718,134.4599c6.14801,0.138 12.354,1.117 18.81201,0.687c-0.007,-32.55499 2.539,-84.562 3.282,-116.00749c-0.101,-10.2094 -0.504,-24.029 13.12399,-28.8618c-6.94499,-14.7833 5.922,-35.70095 -5.562,-40.97666c-0.146,-0.00122 -0.293,-0.00885 -0.438,0c-0.03099,0.00187 -0.062,-0.00236 -0.093,0l0,-0.00001zm11.692,171.76396c-4.715,6.66701 -11.79199,10.17 -14.146,13.60501c-5.37599,8.46799 -14.379,-3.16701 -26.89,2.99599c0.065,-1.02399 0.153,-2.172 0.21899,-3.20599c-0.07199,-0.002 -0.14699,0.00101 -0.21899,0c-6.659,1.013 -12.157,-7.713 -12.594,-15.44901c5.55199,-11.89 -14.242,-18.006 -19.5,-5.82899c-3.943,13.605 -0.41,27.51199 4.78201,40.672c5.933,16.162 -8.871,30.179 -13.2192,45.17601c-4.1375,9.502 -4.2709,20.46999 2.68719,29.192c9.486,13.58398 29.413,18.62799 47.563,18.758c3.23401,0.224 6.44801,0.414 9.68701,0.58499c57.61699,3.284 34.35399,-35.13699 25.282,-68.41299c-5.82201,-21.66299 1.48199,-36.38 6.269,-42.614c2.659,-7.35001 6.02899,-23 -9.92101,-15.472l0,-0.00101zm-34.567,-128.4203c2.43501,-11.918 -8.10399,0.709 0,0z",
+	"guitar": "m158.45264,1.00012c-0.96039,0.00612 -1.8884,0.06411 -2.73161,0.18457c-4.49716,0.64245 -8.99768,2.5655 -8.99768,2.5655c0,0 0.00569,8.99612 -0.63676,15.42064c-0.64244,6.42453 -3.21147,17.34015 -3.21147,17.34015l3.15611,6.32144l0.05536,-1.172l10.62189,1.86414l0.94128,0.05537c0,0 1.28059,-1.28413 2.56551,-3.21148c1.2849,-1.92736 3.85747,-3.21148 3.85747,-3.21148c0,0 0.63675,-9.63641 0.63675,-16.70339c0,-7.06698 2.57472,-18.63212 2.57472,-18.63212c0,0 -4.66991,-0.84783 -8.83156,-0.82133zm-1.74417,42.52442l-10.62189,-0.58139l-0.05536,-0.11074l-5.5278,113.65688c0.19376,0.03734 0.44296,0.08304 0.44296,0.08304c0.14801,2.18161 0.8121,3.84209 1.8549,5.14021l11.84926,5.41707c0.3562,0.09476 0.71249,0.18806 1.07048,0.28609l1.28276,-123.83578l-0.29532,-0.05537zm-0.98744,123.89115l0,0.20302l-1.07048,-0.48911c-4.80661,-1.27875 -9.3821,-2.34575 -11.84926,-5.41707l-2.5009,-1.14432l0.20303,-4.07893c-2.16553,-0.41753 -15.40038,-2.83867 -20.1179,-0.47989c-5.13962,2.56979 -8.99552,6.42279 -10.28043,14.77466c-1.2849,8.3519 2.57119,23.77351 1.92873,34.05275c-0.64246,10.27924 -7.71416,19.91469 -10.92641,28.26657c-3.21227,8.35188 -6.4202,17.99007 -2.5655,32.12404c3.85472,14.13391 17.99164,23.77151 25.70107,26.9838c7.70942,3.21225 23.7631,5.14023 23.7631,5.14023c0,0 15.42752,2.58041 25.06432,1.93796c20.23672,-3.64624 28.72404,-15.65756 29.98303,-30.66595c1.259,-15.00839 -4.71521,-33.01251 -13.40884,-48.65207c-9.50552,-17.10013 8.59656,-39.76326 -0.76596,-52.52802c-9.74182,-13.28188 -16.9409,8.64334 -23.78156,3.87593c-2.77655,-1.93504 -6.09895,-3.00655 -9.37605,-3.90359z",
+	"helicopter": "m145.07504,214.22588c7.36339,2.46503 20.68225,-9.04681 7.26401,-9.72079c-9.08205,-5.71648 20.13416,-1.63675 8.22827,-13.70961c-12.73747,-2.77332 -22.69479,-12.46857 -27.12979,-24.871c-5.18111,-13.36012 -22.04633,-9.68964 -33.09622,-13.54991c-22.05075,-3.93678 -44.07657,-8.59007 -66.50366,-9.73877c-7.45861,8.40495 -10.97594,26.46114 -24.24853,25.75703c-13.26779,-6.6758 0.56035,-23.43509 -3.41489,-33.00934c-7.79329,-2.62592 -6.3066,-7.72096 1.2938,-8.36586c11.59587,-8.00312 1.94812,-23.47349 -0.57486,-34.01581c-6.13778,-10.01295 7.00565,-18.8414 12.01386,-7.02641c6.38165,12.3224 10.0863,25.85204 15.15507,38.7706c1.5816,8.28716 13.30507,3.58878 19.44516,6.06101c25.89155,2.78554 51.80775,5.58556 77.83869,6.66318c13.03992,-5.6261 26.8783,-10.34038 41.29993,-8.34114c10.08574,3.05644 15.78185,-0.7104 15.3338,-11.13895c5.72609,-15.02095 -14.03151,-8.3312 -22.93935,-10.54208c-35.53757,-1.72837 -71.18015,-2.25171 -106.70476,-0.12757c-7.88696,-1.96813 10.41693,-1.78943 13.19444,-2.24187c37.48436,-1.98021 75.04819,-1.00611 112.54227,-2.69012c10.81163,-3.98792 21.54251,3.11311 32.56555,1.91049c27.80304,1.13907 55.63103,1.5356 83.45552,1.62198c-7.86588,5.84674 -22.53885,0.05771 -32.94354,1.5061c-20.90826,-0.64194 -41.94905,-1.24406 -62.73434,1.6021c-8.09567,7.82163 -3.84563,24.5245 6.28453,28.41502c10.32359,5.55025 20.91692,10.41565 30.31529,17.0117c5.93991,11.31316 22.72864,20.80537 17.77679,35.05132c-5.67494,11.7886 -26.25294,4.37625 -31.4632,7.69153c3.85466,6.8309 17.16597,7.52176 19.55997,10.01913c-13.12518,3.78056 -0.61014,11.85339 6.85498,9.29091c9.21201,2.18106 -9.36668,3.71298 -12.4339,2.99583c-14.92371,0.12004 -29.83833,-0.52202 -44.7583,-0.72722c14.41679,-0.6433 28.87468,-0.63033 43.24721,-2.05975c-3.35245,-13.78374 -21.0649,-7.04161 -31.27078,-9.43388c-4.97525,-2.55072 -21.3748,0.68501 -13.06122,5.71829c4.63876,-2.08994 15.97667,-0.09111 5.65021,2.25237c-18.67735,0.60303 -37.42494,0.87289 -56.04201,-1.0285zm45.45972,-5.72816c-5.69293,-8.23618 -25.36656,-6.65369 -28.94688,0.84814c6.97417,5.6115 21.3663,3.65866 28.78714,0.2599l0.15974,-1.10805l0,0zm41.15115,-4.79669c-8.39107,-5.92067 -23.748,-6.57408 -31.28664,-1.76099c9.46599,4.52687 21.07687,2.68456 31.28664,1.76099zm-41.46053,-2.71213c8.91602,-7.60876 -15.73071,-6.19264 -21.17932,-5.80487c-13.47525,6.12955 5.46666,7.82239 11.1256,6.8177c3.37151,-0.02223 6.75697,-0.27522 10.05373,-1.01283z",
+	"katana": "m127.28507,65.14041c-7.0962,-0.54353 -19.86895,7.61395 -17.02093,-6.32892c4.93732,-8.55679 18.30521,-4.48845 16.78561,5.48313l0.17354,0.62374l0.06178,0.22205l0,0zm17.16403,-18.49577c-6.77293,11.60114 -22.03173,12.43076 -33.48896,16.75148c-5.30647,3.04373 -26.81981,5.02184 -18.62814,-4.27034c11.69819,-7.75446 26.08649,-9.62626 39.25734,-13.85468c4.24069,-0.99664 9.15976,-1.38791 12.85976,1.37354zm-35.03055,12.26915c-5.16663,-17.73298 -10.33324,-35.46593 -15.49986,-53.19891c6.32053,-8.5978 20.25586,-4.8693 18.32531,6.59137c4.01678,13.78642 8.03355,27.57289 12.05032,41.35935m-5.56697,9.33072c22.56753,79.08354 48.81091,157.2375 81.6054,232.70842m-75.6467,-234.76585c22.79797,74.42342 46.12929,148.92492 77.59851,220.23124c0.43317,5.52475 14.80417,22.08911 1.77542,17.81497c-4.05151,-1.9415 -10.97104,-0.62137 -11.72156,-6.31741c-30.74268,-74.29929 -57.39734,-150.28568 -79.92033,-227.47363",
+	"dagger": "m1.57422,47.21264c-2.775,14.24454 5.08469,27.79975 11.2199,40.10517c13.07098,21.70464 28.2358,42.59465 47.26681,59.46329c12.98537,10.6889 24.68548,22.99878 39.38902,31.4678c19.22253,12.95224 39.86254,23.55869 61.26455,32.3793c15.9138,6.93546 32.60274,11.85577 49.65401,15.08282c4.95967,1.28564 18.82625,4.91663 10.19991,-3.60251c-7.15544,-3.02133 -14.76756,-5.22583 -21.96236,-8.37695c-34.92769,-14.34082 -72.04247,-26.94104 -100.21951,-53.10463c-4.66899,-6.20064 8.95855,3.3492 11.3067,5.96803c23.50703,16.73581 50.36192,27.95749 76.84653,39.04178c13.47301,4.46384 28.20039,13.97903 42.51408,7.22675c12.36502,-4.72467 -2.95702,-5.44891 -8.42033,-7.24844c-24.28337,-6.90491 -48.85286,-13.54227 -71.13893,-25.76019c-12.72568,-4.65573 -23.42126,-13.22678 -34.85331,-20.29132c-12.35065,-8.53128 -23.65424,-18.49934 -35.67798,-27.49634c-7.86864,-5.96642 -15.68669,-11.98865 -22.20108,-19.46664c-11.01625,-11.02383 -21.70009,-22.36108 -31.68482,-34.33246c-6.52307,-7.36439 -13.86146,-14.10685 -18.44664,-22.93894l-5.05655,-8.11652zm256.45175,139.13108c-1.50562,-0.04745 -3.06,0.28214 -4.36211,1.15021c-9.72246,4.86124 -7.63908,13.88922 -13.19478,20.83386c-4.16678,5.55569 -9.028,8.33356 -15.97261,10.41693c1.38892,2.77783 4.16675,6.94461 4.16675,10.41693c0,7.63907 -9.02798,14.58368 -15.97261,13.88922c-2.77786,-0.69446 -9.028,-4.16678 -11.11139,0c-0.69446,1.38895 -0.69446,2.77786 0,3.47232c0,2.77786 3.47231,4.16678 6.25015,5.55569c7.63908,2.08337 15.97263,-0.69446 22.22279,-4.86124c4.86122,-2.77783 8.33353,-7.63907 9.72246,-13.19479l1.38892,-9.02798c0.69446,-2.77783 3.47232,-3.47232 6.94463,-8.33353c4.16676,-5.55569 8.33354,-15.2782 13.88924,-19.44495c2.08337,-1.38892 4.16675,-2.0834 6.94461,-2.77786c-1.38892,-2.08337 -2.77786,-3.47229 -4.16678,-5.55566c-1.38892,-0.69449 -2.77783,-2.0834 -4.16675,-2.0834c-0.78128,-0.26041 -1.6792,-0.42728 -2.58252,-0.45575zm29.4061,26.21594c-2.61084,-0.02899 -5.33868,0.54254 -8.07312,1.32382l5.55569,3.47232c-1.38895,2.77783 -4.86121,8.33353 -4.16678,11.80585c0.69449,6.94461 10.41693,6.94461 14.58371,2.77783c4.86124,-5.55569 4.86124,-13.88922 -2.08337,-18.056c-1.82297,-0.91147 -3.78549,-1.30127 -5.81613,-1.32382zm-13.39011,3.40723c-0.54364,0.00192 -1.07498,0.00705 -1.60593,0.0217c-3.8486,0.21091 -7.69568,0.50116 -11.54541,0.67276c-2.41867,0.03116 -4.88754,-0.00473 -7.22676,0.69446c-3.17285,2.02515 -5.29396,5.38272 -6.53229,8.87607c-0.16666,0.50345 -0.30807,1.02072 -0.41234,1.54083c3.86218,1.74924 8.17189,1.5618 12.30499,1.41064c2.50439,-0.06696 5.00949,0.24561 7.50888,0.36893c1.7876,0.07916 3.57104,0.32327 5.36038,0.26044c2.19412,-0.07278 4.22598,-1.3168 5.38205,-3.16849c0.99927,-1.58255 1.9447,-3.21933 2.56085,-4.99146c0.49768,-1.59048 0.5896,-3.80087 -1.06339,-4.75272c-1.43857,-0.79446 -3.10013,-0.93906 -4.73105,-0.93317zm2.53915,15.9726c-0.69449,0.69446 -1.38892,0.69446 -2.0834,1.38892c-0.69446,3.47232 8.33356,11.80588 9.72247,4.16678c-3.47232,-1.38892 -5.55573,-2.77786 -7.63907,-5.55569z",
+	"menorah": "m86.17095,270.72717c9.02267,-23.09398 33.59461,-36.70894 57.45916,-38.45409c0,-4.91623 0,-9.83244 0,-14.74866c-38.305,-2.75075 -76.20534,-18.86525 -101.66333,-48.29793c-23.2569,-24.97108 -35.58256,-58.55817 -37.27682,-92.42073c-13.45491,-9.58464 12.56556,-16.55834 15.7355,-5.95607c-7.24909,8.79617 -0.22592,22.59306 0.80432,33.36646c11.47956,50.91395 56.38975,91.60496 107.78628,98.82449c13.14264,5.82442 16.6395,-2.00252 14.39308,-13.99509c2.81267,-9.48175 -7.44086,-6.60333 -13.57417,-8.37358c-40.52152,-7.1041 -75.7263,-38.65041 -86.11595,-78.75394c-2.97659,-11.47399 -3.94458,-24.11363 -7.5694,-33.51495c7.70256,-6.02401 26.19639,-1.60448 15.97076,9.15671c1.09565,45.56244 38.91488,85.76277 83.65269,91.48959c9.24995,4.52249 8.18915,-3.21457 7.85701,-9.40932c4.90146,-15.06035 -9.71606,-12.79654 -19.53952,-16.50067c-27.62657,-9.39215 -47.87568,-36.35101 -49.79039,-65.51331c-13.2153,-11.51691 15.74928,-17.53994 15.95383,-5.55531c-7.59098,8.84892 0.96818,23.21689 5.54156,32.6564c10.3335,16.84724 28.24842,28.22102 47.83452,30.47823c0,-7.52246 0,-15.04491 0,-22.56738c-18.20905,-2.81535 -32.7534,-18.72141 -34.8131,-36.97318c-12.40635,-10.10166 14.58986,-14.97282 16.53119,-5.29626c-6.736,5.28018 -1.66743,13.75206 2.28733,19.47478c2.82583,3.38407 16.81124,15.16281 15.99458,6.28913c0,-10.03232 0,-20.06463 0,-30.09695c-8.52963,-5.41637 3.21713,-9.02356 -1.91258,-15.41792c2.95047,-6.63559 4.28693,-23.79965 6.49635,-24.00391c7.40089,10.5439 4.63795,25.17949 11.62167,34.34932c-3.85376,4.14688 -4.52328,8.74758 -3.86568,14.89357c0,8.05796 0,16.11592 0,24.17388c11.03737,-3.24367 21.02812,-12.42406 21.72646,-24.48188c-12.61211,-14.80839 30.69243,-11.52931 12.71999,1.59949c-1.87195,17.85434 -17.0993,32.57059 -34.44644,35.57887c0,7.49281 0,14.98562 0,22.47842c29.68999,-2.98224 55.87296,-29.1582 56.39926,-59.47436c-12.36238,-13.6567 27.91393,-12.75137 14.12813,-0.52898c-3.16423,14.80594 -6.23018,30.54218 -16.29872,42.63571c-12.70108,17.1765 -33.04718,27.37456 -53.98901,29.78134c0.16994,9.14496 -4.65584,28.46082 11.13493,20.75519c39.31322,-6.69104 72.74197,-39.63307 78.74797,-79.43351c5.73982,-8.84732 -8.70837,-25.00382 8.28397,-22.77648c10.50046,-2.44997 11.98193,6.34405 5.8692,11.72792c-2.04736,35.89314 -21.91298,70.45303 -53.09749,88.60141c-15.52945,9.13074 -33.16388,14.88533 -51.17824,15.85547c0.17836,7.53169 -0.4761,15.16116 0.61618,22.6142c35.31798,-2.81911 70.08339,-18.10321 93.11932,-45.67516c20.51892,-23.04272 31.08511,-53.43816 32.84753,-84.00375c-10.43478,-10.04525 11.39471,-11.61442 16.59445,-7.04305c-5.883,11.66189 -5.21661,27.04671 -9.11984,40.52295c-12.68921,53.08224 -58.41412,95.84925 -111.85593,105.51876c-7.32545,1.56883 -14.77785,2.36348 -22.20172,3.29227c-0.71042,9.09981 -0.50818,18.35449 11.59822,16.61531c20.59241,4.32626 40.36211,18.55411 46.94081,39.19469c-43.09088,0 -86.18179,0 -129.2727,0c0.31159,-0.88608 0.62314,-1.77219 0.93477,-2.65823zm-82.88959,-208.5947c-0.54892,-8.1144 4.33617,-25.42208 5.66115,-27.43132c2.27143,7.42761 12.58555,23.78434 4.72879,28.60384c-3.29131,-0.38358 -8.04816,1.57556 -10.38994,-1.17252zm34.52483,0.55147c-1.7146,-10.01769 5.4567,-19.41309 4.51432,-29.75311c3.2196,8.43034 16.36395,29.47998 1.96646,30.42084c-2.16732,-0.0773 -4.38702,0.03559 -6.48078,-0.66772zm35.62526,-0.17229c-1.52428,-9.82734 5.20364,-19.12723 4.61758,-29.264c3.98769,8.50923 17.39558,32.7104 -0.82941,30.07944l-1.91212,-0.12625l-1.87605,-0.68919l0,0zm34.60818,0.26421c-1.9521,-10.01891 5.40411,-19.48301 4.43661,-29.84504c3.27068,8.4848 16.29427,29.36411 1.98981,30.63179c-2.15335,-0.08198 -4.37302,0.0215 -6.42642,-0.78675zm69.2087,-0.38279c-1.5544,-10.07727 5.31645,-19.6095 4.34973,-30.05398c2.70531,5.08463 6.32187,13.73424 7.91895,20.50951c4.77353,11.03205 -3.95122,12.51878 -12.26868,9.54446zm35.71176,0.44493c-2.89404,-9.75608 5.30412,-19.55815 4.07715,-29.90718c3.42241,8.32418 12.40758,23.15913 6.53528,30.337c-3.53609,0.01955 -7.13571,0.41735 -10.61243,-0.42982zm34.8703,-0.20629c-2.23303,-8.13288 4.34842,-24.82986 5.07388,-28.23849c3.49849,8.39077 16.5291,33.58521 -2.7937,28.93562l-2.28018,-0.69713l0,0zm35.10023,-0.15336c-1.90784,-8.93159 5.20419,-21.786 4.83258,-28.71239c3.47043,8.02287 16.97986,32.30244 -0.94669,29.60343l-1.89111,-0.14957l-1.99478,-0.74147l0,0z",
+	"chair": "m118.11539,289.55515c-7.47328,-14.4328 15.76004,-21.83389 9.75156,-35.26642c-9.58212,-8.59285 -23.93785,-6.58557 -35.88018,-5.92961c-12.89955,-1.58955 -16.67669,11.62587 -24.11323,17.11729c-14.66394,-4.57965 -9.41961,-23.5907 3.95336,-25.69879c17.48831,-7.56879 36.79559,-3.21786 54.96046,-6.57193c13.14571,-7.65541 -3.09947,-24.09541 -13.42245,-25.84244c-17.08451,-6.9008 -38.18468,-7.0844 -51.24073,-21.62146c-5.1916,-11.32457 -3.84497,-32.04767 10.15321,-36.01445c6.34414,-10.73523 5.01785,-24.55999 3.35027,-36.47948c1.42348,-12.67513 -26.70474,-5.25126 -14.90233,-18.24577c10.64336,-8.15804 24.36629,-13.15867 37.81105,-12.959c10.96933,0.36309 11.71716,12.99065 -0.37628,9.89848c-12.30081,6.18077 -7.72121,23.86169 -7.25122,35.16668c5.93514,11.39347 22.04794,5.36764 32.49831,7.07384c14.8665,0.39955 21.73593,0.44463 35.83476,5.23605c14.25958,-1.05464 8.64325,-20.61657 0.17079,-21.97119c-13.03212,-2.87206 -25.91483,-10.25501 -33.20317,-21.62909c-4.07215,-13.26593 1.69855,-27.24597 4.77583,-40.18096c9.18196,-28.0861 34.13237,-54.57027 65.33606,-54.63913c19.15414,0.28833 38.85675,14.48402 42.13089,33.82922c2.48616,20.34066 -5.57245,41.0622 -0.32005,61.11538c12.75343,7.04288 -8.70227,17.78406 -9.16336,27.50478c-5.43883,14.13736 6.97403,30.55498 -3.65417,43.29654c-6.64983,9.38159 -22.16026,14.5639 -22.43275,27.04953c-3.81845,11.24202 -21.47061,10.39703 -30.28923,17.71931c-9.74564,2.86838 -15.08257,19.17726 -0.15649,15.9317c14.55153,-0.35892 29.03516,-5.81784 43.55118,-3.3181c10.39314,7.10063 -0.45073,21.22018 -10.9113,14.54475c-5.46445,0.08383 -25.63857,2.80356 -18.76688,8.69054c17.18895,4.015 35.8273,9.2104 46.95854,24.0352c10.43184,13.90863 -12.73763,17.22995 -17.34935,5.0022c-19.29245,-15.75378 -48.30531,-24.24933 -70.97163,-10.48508c-13.71143,5.73386 -10.53542,20.53958 -11.98199,31.56015c-5.57972,6.09451 -13.26627,-2.5275 -14.84946,-7.91876zm100.26077,-153.99353c-4.62421,-8.64436 -27.69229,-17.16811 -30.82967,-4.71919c1.76141,12.68575 19.62196,15.68971 29.15408,10.51048c1.73547,-1.32053 2.45361,-3.74493 1.67558,-5.79129z",
+	
+	"bone": "m273.3559,119.27242c-11.58661,5.90293 -23.89537,9.95385 -36.67676,12.27164c-53.42084,0.2984 -105.13121,0.41397 -158.74251,2.97562c-14.28426,-2.65407 -30.58815,0.18161 -42.82426,-9.13783c-9.06827,-7.25944 -28.17529,-2.4415 -25.05096,11.36483c6.17649,14.08824 -14.61965,21.70474 -7.59176,36.00003c6.11589,14.67987 24.54805,9.02721 35.59484,4.1729c20.29636,-4.79665 40.55842,-9.8537 60.92737,-14.38416c42.52868,-4.82219 82.54949,-1.83121 124.59118,1.02063c11.68694,2.54654 23.55803,4.03351 35.45654,5.38187c10.1839,0.16006 18.34979,7.46698 27.92017,8.65919c12.6539,-1.22533 16.41983,-19.19981 7.59747,-27.17406c-13.18918,-8.72406 6.75436,-24.14882 -8.14166,-31.38885c-4.25287,-2.31086 -8.733,-0.75754 -13.05966,0.23817z",
+	"raph_gear2": "m162.95016,254.38129c-2.80937,0.26439 -5.68164,0.44717 -8.63573,0.44717l0,0c-2.64238,0 -5.20918,-0.14467 -7.71307,-0.35916l0,0l-21.68047,27.86606l-5.33187,-1.51157c-6.25791,-1.75732 -12.33638,-3.96201 -18.18163,-6.60748l0,0l-5.06733,-2.29276l1.30382,-35.00255c-4.60764,-3.22517 -8.90648,-6.81548 -12.88757,-10.75204l0,0l-34.27816,7.36342l-3.13052,-4.59854c-3.67223,-5.39792 -6.80273,-11.05444 -9.57725,-16.77345l0,0l-2.40936,-4.99521l23.2742,-25.7621c-1.45512,-5.4549 -2.41877,-11.08614 -2.91638,-16.82405l0,0l-30.84222,-16.30753l0.56056,-5.52432c0.66148,-6.60759 1.94003,-12.93144 3.46751,-19.00977l0,0l1.36378,-5.39204l34.401,-4.76184c2.45332,-5.17765 5.34148,-10.08439 8.59473,-14.69526l0,0l-13.12671,-32.31919l3.96201,-3.8801c4.65784,-4.53519 9.64348,-8.64822 14.84618,-12.40874l0,0l4.50686,-3.24997l29.69582,18.65062c5.00454,-2.30524 10.23878,-4.20122 15.66204,-5.65638l0,0l10.76474,-33.40262l5.54927,-0.4219c2.98885,-0.22039 6.20128,-0.47875 9.69389,-0.47875l0,0c3.48323,0 6.68608,0.25836 9.67506,0.47875l0,0l5.54912,0.4219l10.88121,33.74931c5.21544,1.45478 10.27031,3.31305 15.11414,5.56818l0,0l30.11157,-18.91571l4.52254,3.25032c5.20284,3.75422 10.19766,7.8798 14.84639,12.39616l0,0l3.97758,3.8801l-13.52985,33.27679c2.94791,4.28308 5.60591,8.81837 7.87672,13.58657l0,0l35.47502,4.91299l1.37939,5.39169c1.54953,6.07229 2.82196,12.39613 3.46741,19.01633l0,0l0.56073,5.52397l-31.91942,16.87434c-0.47862,5.23462 -1.32898,10.3871 -2.59824,15.40709l0,0l24.04893,26.56871l-2.41867,5.01361c-2.76517,5.73837 -5.88004,11.41356 -9.56799,16.79272l0,0l-3.13049,4.58539l-35.12848,-7.52676c-3.72264,3.72243 -7.75381,7.14909 -12.06235,10.24184l0,0l1.33846,35.68912l-5.07996,2.29913c-5.85167,2.6329 -11.92058,4.84381 -18.17828,6.6012l0,0l-5.351,1.51169l-21.72769,-27.93539l0,0zm27.87856,8.93823c1.87401,-0.62378 3.71637,-1.29791 5.53973,-2.01599l0,0l-1.25342,-33.70486l3.95258,-2.53862c5.92082,-3.84203 11.31258,-8.453 16.09976,-13.68709l0,0l3.18718,-3.48941l33.239,7.11739c0.99838,-1.66928 1.96515,-3.37619 2.89732,-5.12077l0,0l-22.73553,-25.13866l1.41093,-4.49123c2.00607,-6.46886 3.14622,-13.40402 3.48315,-20.64091l0,0l0.20787,-4.71185l30.19965,-15.961c-0.31488,-1.93385 -0.67691,-3.85492 -1.0896,-5.78259l0,0l-33.60109,-4.64815l-1.80759,-4.34639c-2.7023,-6.50063 -6.27693,-12.58513 -10.54437,-18.19731l0,0l-2.82191,-3.74155l12.78032,-31.43731c-1.48026,-1.29786 -2.99829,-2.5574 -4.55721,-3.77935l0,0l-28.5273,17.90761l-4.2014,-2.2175c-6.22311,-3.27536 -12.95352,-5.76342 -20.05234,-7.37577l0,0l-4.59178,-1.0518l-10.30167,-31.94773c-1.00163,-0.05022 -1.97475,-0.07566 -2.92271,-0.07566l0,0c-0.96696,0 -1.94005,0.02544 -2.94794,0.07566l0,0l-10.22914,31.73996l-4.65805,0.99522c-7.22169,1.54925 -14.10935,4.07524 -20.52469,7.39468l0,0l-4.19198,2.17928l-28.06441,-17.62396c-1.54948,1.22195 -3.07073,2.48149 -4.53823,3.77935l0,0l12.44003,30.61225l-2.9225,3.74755c-4.55724,5.8516 -8.34605,12.26398 -11.18684,19.14856l0,0l-1.79825,4.3651l-32.5209,4.49724c-0.41253,1.92767 -0.77778,3.84874 -1.08328,5.78259l0,0l29.15414,15.41315l0.17944,4.74907c0.30542,7.66602 1.58731,15.02303 3.79182,21.90135l0,0l1.44259,4.52234l-22.01771,24.35774c0.92602,1.75093 1.88968,3.45782 2.89761,5.127l0,0l32.33173,-6.96017l3.21879,3.48952c4.96029,5.42989 10.62607,10.14755 16.86828,14.06561l0,0l4.02816,2.51289l-1.23148,33.18852c1.82667,0.71808 3.67535,1.39221 5.54923,2.01599l0,0l20.46497,-26.31657l4.67366,0.57292c3.52736,0.4473 6.96019,0.73706 10.37738,0.73706l0,0c3.67532,0 7.3821,-0.32111 11.17093,-0.85657l0,0l4.71475,-0.66118l20.62231,26.52434l0,0zm9.32855,-68.34235l4.50986,6.92841l-28.59032,18.60074l-10.14731,-15.61513l0,0c-3.69124,0.90065 -7.5713,1.43016 -11.60878,1.43016l0,0c-27.93851,0 -50.57646,-22.64441 -50.57646,-50.55453l0,0c0,-27.93514 22.63795,-50.5733 50.57646,-50.5733l0,0c27.90698,0 50.55104,22.63816 50.55104,50.5733l0,0c0,11.46997 -3.85472,22.09612 -10.31726,30.58083l0,0l5.60277,8.62953m-19.23358,2.66414l0.89128,-0.56667l-8.15065,-12.54086l4.72406,-4.72429c6.17615,-6.1917 9.96483,-14.63838 9.96483,-24.04268l0,0c-0.03468,-18.80183 -15.2589,-34.02641 -34.03877,-34.064l0,0c-18.8241,0.0376 -34.03256,15.24316 -34.06407,34.064l0,0c0.03151,18.78311 15.25571,34.00732 34.06407,34.04527l0,0c4.20117,0 8.24515,-0.86304 12.15982,-2.36212l0,0l6.24211,-2.39357l8.20732,12.58492l0,0z",
+  	"raph_gear": "m245.88898,160.48737l33.405,-17.66776c-0.65668,-6.5461 -1.92581,-12.89622 -3.51349,-19.1387l-37.10818,-5.13857c-3.21184,-7.73717 -7.45319,-14.91318 -12.43881,-21.50042l14.14514,-34.78872c-4.65118,-4.53608 -9.67427,-8.67167 -14.96115,-12.47703l-31.50966,19.78136c-7.38905,-3.88574 -15.35004,-6.83701 -23.70718,-8.73246l-11.3871,-35.2773c-3.22949,-0.24387 -6.45805,-0.50152 -9.75151,-0.50152s-6.51289,0.2517 -9.75209,0.50152l-11.27429,34.96482c-8.58116,1.83471 -16.71793,4.82026 -24.29691,8.75396l-31.01895,-19.49038c-5.28019,3.80536 -10.30307,7.94096 -14.95388,12.47703l13.75587,33.82779c-5.36137,6.87132 -9.85005,14.45284 -13.22145,22.62391l-35.93671,4.97007c-1.58098,6.23371 -2.85675,12.5771 -3.50667,19.13792l32.25408,17.06512c0.36542,8.98315 1.85477,17.68929 4.49208,25.88777l-24.33074,26.9024c2.83031,5.87039 5.9814,11.56342 9.6267,16.90457l35.82153,-7.69016c5.87321,6.39034 12.56474,11.98932 19.94749,16.61948l-1.35777,36.65076c5.88309,2.65335 11.99571,4.87399 18.29496,6.64899l22.66223,-29.13004c4.02098,0.51334 8.09276,0.85909 12.24583,0.85909c4.49908,0 8.89894,-0.40645 13.22795,-1.00122l22.78024,29.29164c6.30914,-1.77295 12.41245,-3.99347 18.29494,-6.64697l-1.38397,-37.30896c7.03673,-4.55559 13.41745,-10.00571 19.04277,-16.15907l36.75313,7.88618c3.64532,-5.34033 6.79684,-11.0273 9.62613,-16.9026l-25.11879,-27.78322c2.41295,-7.76558 3.76083,-15.96324 4.15324,-24.41928zm-55.52159,42.4395l-15.83789,10.31044l-9.74136,-14.9669c-5.0676,1.94922 -10.52345,3.13446 -16.2748,3.13446c-25.11868,0 -45.47503,-20.36435 -45.47503,-45.47913c0,-25.1158 20.35635,-45.47227 45.47503,-45.47227c25.11212,0 45.47591,20.35647 45.47591,45.47227c0,12.5506 -5.08424,23.89621 -13.30255,32.12807l9.68069,14.87306z",
+  	"raph_wrench": "m255.53572,137.11592c19.86284,-22.83699 23.85539,-54.00162 13.05003,-80.21085l-39.87633,46.5013l-39.30826,-7.64247l-13.02475,-37.8651l39.77548,-46.3933c-27.35991,-6.88337 -57.5022,1.42669 -77.27754,24.17331c-20.85557,23.98049 -24.26861,57.1888 -11.36009,84.13174l-103.94124,119.52798c-11.05987,12.70792 -9.7125,31.98199 2.99551,43.03754c12.708,11.04776 31.97822,9.71249 43.03425,-2.99557l103.81947,-119.41006c28.5784,9.21129 61.16141,1.23503 82.11348,-22.85451z",
+  	"raph_hammer": "m63.36809,285.67313c6.96776,3.59244 16.47661,11.9801 23.84013,8.91132c4.83001,-1.9863 7.65633,-13.23322 10.6572,-19.15341c22.58896,-44.50285 47.13901,-95.11987 65.00839,-138.42389c0,-1.93199 1.02618,-3.42567 -0.49857,-6.05217c9.99582,-16.27104 16.78117,-34.14814 27.70221,-52.25417c3.45876,-5.75348 6.97752,-13.7377 11.82889,-16.03837l8.95993,-3.73985c11.39044,-2.92912 19.71024,-2.82827 27.65184,4.81071c4.0269,3.89508 5.87952,10.31972 9.77467,14.18769c2.63412,2.64196 12.67062,9.14025 16.40283,8.13548c2.89996,-0.78365 5.28986,-3.70498 7.32275,-7.40622l7.07837,-13.07806c1.98428,-3.72042 3.11331,-7.30138 2.18805,-10.16062c-1.19101,-3.68168 -12.12384,-8.54287 -15.78421,-9.30328c-5.37122,-1.15219 -11.73761,0.82254 -17.20779,-0.41896c-10.75037,-2.47131 -15.38852,-9.37697 -19.15163,-20.54245c-26.52289,-15.59208 -62.23056,-25.72946 -103.80629,-12.65136c-11.27793,3.54983 -22.08852,6.24227 -29.50239,13.45449c-1.48589,4.18987 1.45297,5.02407 4.53523,4.97355c-2.41113,2.19592 -6.30618,3.46841 -4.05797,8.62437c25.3744,-11.6543 74.64912,-15.68129 77.99525,8.17434c0.73132,5.31115 -4.01729,12.62416 -6.93675,18.66467c-9.2043,19.05656 -20.45122,34.51673 -28.60803,51.77705c-3.03192,0.17072 -3.72249,1.82726 -5.34029,2.91743c-26.48211,38.64464 -55.43742,86.86412 -80.34243,130.11772c-3.31706,5.75339 -11.16743,14.25751 -10.19173,19.38232c1.46458,7.8407 13.51648,11.49146 20.48232,15.09167z",
+  	"raph_lock": "m222.74843,140.97418l0,-31.60164l-0.00876,0c-0.01239,-39.003 -31.62297,-70.60465 -70.62114,-70.60465s-70.62597,31.6186 -70.62597,70.62157l0,0l0,31.58472l-25.54068,0l0,135.66266l192.32891,0l0,-135.66266l-25.53236,0zm-118.94279,-31.58472c0,0 0,0 0,0c0,-26.65088 21.67455,-48.3259 48.3129,-48.3259c26.65535,0 48.32988,21.67502 48.32988,48.30898c0,0 0,0 0,0l0,31.60164l-96.64278,0l0,-31.58472z"
+	}
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/raphael.txt
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/raphael.txt	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/raphael.txt	(revision 29468)
@@ -0,0 +1,12 @@
+All RaphaÃ«l icons were retrieved from here:
+http://raphaeljs.com/icons/
+
+And fall under the MIT license:
+
+Copyright Â© 2008 Dmitry Baranovskiy
+
+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.
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/raphael_1.json
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/raphael_1.json	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/raphael_1.json	(revision 29468)
@@ -0,0 +1,7 @@
+{"size": 32,
+"fill": true,
+"data": {
+    "raph_quote": "M14.505,5.873c-3.937,2.52-5.904,5.556-5.904,9.108c0,1.104,0.192,1.656,0.576,1.656l0.396-0.107c0.312-0.12,0.563-0.18,0.756-0.18c1.128,0,2.07,0.411,2.826,1.229c0.756,0.82,1.134,1.832,1.134,3.037c0,1.157-0.408,2.14-1.224,2.947c-0.816,0.807-1.801,1.211-2.952,1.211c-1.608,0-2.935-0.661-3.979-1.984c-1.044-1.321-1.565-2.98-1.565-4.977c0-2.259,0.443-4.327,1.332-6.203c0.888-1.875,2.243-3.57,4.067-5.085c1.824-1.514,2.988-2.272,3.492-2.272c0.336,0,0.612,0.162,0.828,0.486c0.216,0.324,0.324,0.606,0.324,0.846L14.505,5.873zM27.465,5.873c-3.937,2.52-5.904,5.556-5.904,9.108c0,1.104,0.192,1.656,0.576,1.656l0.396-0.107c0.312-0.12,0.563-0.18,0.756-0.18c1.104,0,2.04,0.411,2.808,1.229c0.769,0.82,1.152,1.832,1.152,3.037c0,1.157-0.408,2.14-1.224,2.947c-0.816,0.807-1.801,1.211-2.952,1.211c-1.608,0-2.935-0.661-3.979-1.984c-1.044-1.321-1.565-2.98-1.565-4.977c0-2.284,0.449-4.369,1.35-6.256c0.9-1.887,2.256-3.577,4.068-5.067c1.812-1.49,2.97-2.236,3.474-2.236c0.336,0,0.612,0.162,0.828,0.486c0.216,0.324,0.324,0.606,0.324,0.846L27.465,5.873z",
+
+	}
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/social.json
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/social.json	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/social.json	(revision 29468)
@@ -0,0 +1,21 @@
+{"size": 32,
+"fill": true,
+"data": {
+    "raph_twitter": "M23.295,22.567h-7.213c-2.125,0-4.103-2.215-4.103-4.736v-1.829h11.232c1.817,0,3.291-1.469,3.291-3.281c0-1.813-1.474-3.282-3.291-3.282H11.979V6.198c0-1.835-1.375-3.323-3.192-3.323c-1.816,0-3.29,1.488-3.29,3.323v11.633c0,6.23,4.685,11.274,10.476,11.274h7.211c1.818,0,3.318-1.463,3.318-3.298S25.112,22.567,23.295,22.567z",
+    
+     "raph_firefox": "M28.4,22.469c0.479-0.964,0.851-1.991,1.095-3.066c0.953-3.661,0.666-6.854,0.666-6.854l-0.327,2.104c0,0-0.469-3.896-1.044-5.353c-0.881-2.231-1.273-2.214-1.274-2.21c0.542,1.379,0.494,2.169,0.483,2.288c-0.01-0.016-0.019-0.032-0.027-0.047c-0.131-0.324-0.797-1.819-2.225-2.878c-2.502-2.481-5.943-4.014-9.745-4.015c-4.056,0-7.705,1.745-10.238,4.525C5.444,6.5,5.183,5.938,5.159,5.317c0,0-0.002,0.002-0.006,0.005c0-0.011-0.003-0.021-0.003-0.031c0,0-1.61,1.247-1.436,4.612c-0.299,0.574-0.56,1.172-0.777,1.791c-0.375,0.817-0.75,2.004-1.059,3.746c0,0,0.133-0.422,0.399-0.988c-0.064,0.482-0.103,0.971-0.116,1.467c-0.09,0.845-0.118,1.865-0.039,3.088c0,0,0.032-0.406,0.136-1.021c0.834,6.854,6.667,12.165,13.743,12.165l0,0c1.86,0,3.636-0.37,5.256-1.036C24.938,27.771,27.116,25.196,28.4,22.469zM16.002,3.356c2.446,0,4.73,0.68,6.68,1.86c-2.274-0.528-3.433-0.261-3.423-0.248c0.013,0.015,3.384,0.589,3.981,1.411c0,0-1.431,0-2.856,0.41c-0.065,0.019,5.242,0.663,6.327,5.966c0,0-0.582-1.213-1.301-1.42c0.473,1.439,0.351,4.17-0.1,5.528c-0.058,0.174-0.118-0.755-1.004-1.155c0.284,2.037-0.018,5.268-1.432,6.158c-0.109,0.07,0.887-3.189,0.201-1.93c-4.093,6.276-8.959,2.539-10.934,1.208c1.585,0.388,3.267,0.108,4.242-0.559c0.982-0.672,1.564-1.162,2.087-1.047c0.522,0.117,0.87-0.407,0.464-0.872c-0.405-0.466-1.392-1.105-2.725-0.757c-0.94,0.247-2.107,1.287-3.886,0.233c-1.518-0.899-1.507-1.63-1.507-2.095c0-0.366,0.257-0.88,0.734-1.028c0.58,0.062,1.044,0.214,1.537,0.466c0.005-0.135,0.006-0.315-0.001-0.519c0.039-0.077,0.015-0.311-0.047-0.596c-0.036-0.287-0.097-0.582-0.19-0.851c0.01-0.002,0.017-0.007,0.021-0.021c0.076-0.344,2.147-1.544,2.299-1.659c0.153-0.114,0.55-0.378,0.506-1.183c-0.015-0.265-0.058-0.294-2.232-0.286c-0.917,0.003-1.425-0.894-1.589-1.245c0.222-1.231,0.863-2.11,1.919-2.704c0.02-0.011,0.015-0.021-0.008-0.027c0.219-0.127-2.524-0.006-3.76,1.604C9.674,8.045,9.219,7.95,8.71,7.95c-0.638,0-1.139,0.07-1.603,0.187c-0.05,0.013-0.122,0.011-0.208-0.001C6.769,8.04,6.575,7.88,6.365,7.672c0.161-0.18,0.324-0.356,0.495-0.526C9.201,4.804,12.43,3.357,16.002,3.356z",
+      "raph_ie": "M27.998,2.266c-2.12-1.91-6.925,0.382-9.575,1.93c-0.76-0.12-1.557-0.185-2.388-0.185c-3.349,0-6.052,0.985-8.106,2.843c-2.336,2.139-3.631,4.94-3.631,8.177c0,0.028,0.001,0.056,0.001,0.084c3.287-5.15,8.342-7.79,9.682-8.487c0.212-0.099,0.338,0.155,0.141,0.253c-0.015,0.042-0.015,0,0,0c-2.254,1.35-6.434,5.259-9.146,10.886l-0.003-0.007c-1.717,3.547-3.167,8.529-0.267,10.358c2.197,1.382,6.13-0.248,9.295-2.318c0.764,0.108,1.567,0.165,2.415,0.165c5.84,0,9.937-3.223,11.399-7.924l-8.022-0.014c-0.337,1.661-1.464,2.548-3.223,2.548c-2.21,0-3.729-1.211-3.828-4.012l15.228-0.014c0.028-0.578-0.042-0.985-0.042-1.436c0-5.251-3.143-9.355-8.255-10.663c2.081-1.294,5.974-3.209,7.848-1.681c1.407,1.14,0.633,3.533,0.295,4.518c-0.056,0.254,0.24,0.296,0.296,0.057C28.814,5.573,29.026,3.194,27.998,2.266zM13.272,25.676c-2.469,1.475-5.873,2.539-7.539,1.289c-1.243-0.935-0.696-3.468,0.398-5.938c0.664,0.992,1.495,1.886,2.473,2.63C9.926,24.651,11.479,25.324,13.272,25.676zM12.714,13.046c0.042-2.435,1.787-3.49,3.617-3.49c1.928,0,3.49,1.112,3.49,3.49H12.714z",
+      "raph_opera": "M15.954,2.046c-7.489,0-12.872,5.432-12.872,13.581c0,7.25,5.234,13.835,12.873,13.835c7.712,0,12.974-6.583,12.974-13.835C28.929,7.413,23.375,2.046,15.954,2.046zM15.952,26.548L15.952,26.548c-2.289,0-3.49-1.611-4.121-3.796c-0.284-1.037-0.458-2.185-0.563-3.341c-0.114-1.374-0.129-2.773-0.129-4.028c0-0.993,0.018-1.979,0.074-2.926c0.124-1.728,0.386-3.431,0.89-4.833c0.694-1.718,1.871-2.822,3.849-2.822c2.5,0,3.763,1.782,4.385,4.322c0.429,1.894,0.56,4.124,0.56,6.274c0,2.299-0.103,5.153-0.763,7.442C19.473,24.979,18.242,26.548,15.952,26.548z",
+      "raph_chrome": "M16.277,8.655c-2.879,0-5.227,2.181-5.227,4.854s2.348,4.854,5.227,4.854c2.879,0,5.227-2.181,5.227-4.854S19.156,8.655,16.277,8.655zM29.535,13.486c-0.369-1.819-1.068-3.052-1.727-3.995c0.05,0.129,0.09,0.259,0.138,0.388c-2.34-6.355-11.704-9.8-18.937-5.43c-0.056,0.27-0.073,0.538-0.073,0.804c0-0.051-0.006-0.098-0.004-0.15c-1.743-0.134-3.854,2.061-5.731,6.083c-0.953,2.277-1.298,4.77-0.414,7.693c0.516,1.706,1.328,3.456,2.499,4.814c3.471,4.027,8.788,5.67,11.884,4.835c0.004,0.001,0.009,0.003,0.014,0.004c5.969-0.125,10.494-4.228,12.125-9.569C29.896,17.035,29.934,15.457,29.535,13.486zM6.043,23.04c-0.96-1.112-1.755-2.651-2.299-4.452c-0.733-2.42-0.612-4.65,0.379-7.015C5.129,9.42,6.111,8.005,6.956,7.154c0.15,0.742,0.521,1.628,1.113,2.649c0.218,0.379,0.459,0.701,0.692,1.012c0.179,0.237,0.356,0.474,0.513,0.729c0.124,0.202,0.239,0.445,0.354,0.737c-0.239,2.754,0.892,5.138,3.148,6.679l-2.546,2.25l-0.202,0.171c-0.208,0.171-0.447,0.373-0.651,0.589c-1.36,1.444-0.25,2.831,0.286,3.498l0.068,0.087c0.237,0.297,0.513,0.62,0.815,0.938C8.963,25.725,7.375,24.585,6.043,23.04zM28.354,18.67c-1.6,5.232-5.937,8.7-11.07,8.859c-2.485-0.583-4.362-1.78-5.586-3.557c0.004-0.004,0.01-0.008,0.015-0.013l4.944-3.836c2.226-0.124,3.854-0.888,4.847-2.278c1.222-1.412,1.792-3.025,1.693-4.861c1.817,0.377,3.389,0.903,4.855,1.883l0.116,0.078l0.134,0.043c0.156,0.049,0.311,0.076,0.459,0.081C28.87,16.309,28.74,17.402,28.354,18.67zM28.609,14.037c-1.951-1.306-4.062-1.867-6.594-2.285c0.531,2.358-0.084,4.072-1.326,5.512c-0.882,1.235-2.382,1.822-4.394,1.875l-5.22,4.052c-0.497,0.409-0.591,0.819-0.282,1.229c0.849,1.277,1.929,2.202,3.122,2.878c-0.013,0-0.026,0.002-0.039,0.003c-0.001-0.001-0.004-0.002-0.006-0.004c-0.02,0.003-0.041,0.004-0.062,0.005c-0.08,0.001-0.16-0.001-0.239-0.01c-0.156-0.021-0.314-0.064-0.459-0.118c-0.898-0.333-1.89-1.352-2.597-2.239c-0.581-0.73-1.206-1.433-0.411-2.275c0.258-0.273,0.582-0.514,0.789-0.698l2.521-2.229c0.172-0.137,0.35-0.277,0.535-0.423c0.053-0.042,0.107-0.084,0.162-0.127c0.564-0.442,0.483-0.32-0.108-0.642c-2.419-1.32-3.677-3.614-3.354-6.389c-0.149-0.41-0.317-0.792-0.518-1.124c-0.363-0.6-0.834-1.102-1.194-1.723c-0.9-1.556-1.847-3.902,0.013-3.682c-0.005-0.053-0.002-0.11-0.005-0.164c0.094,2.001,1.526,3.823,1.742,4.888c0.078,0.382,0.294,0.705,0.612,0.28c2.538-3.395,6.069-3.053,8.328-1.312c0.443,0.34,0.684,0.755,1.084,1.11c0.154,0.138,0.328,0.259,0.535,0.351c0.743,0.332,1.807,0.312,2.607,0.434c1.371,0.208,2.707,0.464,3.971,0.812c0.25,0.03,0.424-0.004,0.521-0.101c0.211-0.208-0.002-0.887-0.121-1.263c0.277,0.805,0.536,1.609,0.773,2.415C29.176,13.701,29.133,14.208,28.609,14.037z",
+      "raph_safari": "M16.154,5.135c-0.504,0-1,0.031-1.488,0.089l-0.036-0.18c-0.021-0.104-0.06-0.198-0.112-0.283c0.381-0.308,0.625-0.778,0.625-1.306c0-0.927-0.751-1.678-1.678-1.678s-1.678,0.751-1.678,1.678c0,0.745,0.485,1.376,1.157,1.595c-0.021,0.105-0.021,0.216,0,0.328l0.033,0.167C7.645,6.95,3.712,11.804,3.712,17.578c0,6.871,5.571,12.441,12.442,12.441c6.871,0,12.441-5.57,12.441-12.441C28.596,10.706,23.025,5.135,16.154,5.135zM16.369,8.1c4.455,0,8.183,3.116,9.123,7.287l-0.576,0.234c-0.148-0.681-0.755-1.191-1.48-1.191c-0.837,0-1.516,0.679-1.516,1.516c0,0.075,0.008,0.148,0.018,0.221l-2.771-0.028c-0.054-0.115-0.114-0.226-0.182-0.333l3.399-5.11l0.055-0.083l-4.766,4.059c-0.352-0.157-0.74-0.248-1.148-0.256l0.086-0.018l-1.177-2.585c0.64-0.177,1.111-0.763,1.111-1.459c0-0.837-0.678-1.515-1.516-1.515c-0.075,0-0.147,0.007-0.219,0.018l0.058-0.634C15.357,8.141,15.858,8.1,16.369,8.1zM12.146,3.455c0-0.727,0.591-1.318,1.318-1.318c0.727,0,1.318,0.591,1.318,1.318c0,0.425-0.203,0.802-0.516,1.043c-0.183-0.123-0.413-0.176-0.647-0.13c-0.226,0.045-0.413,0.174-0.535,0.349C12.542,4.553,12.146,4.049,12.146,3.455zM7.017,17.452c0-4.443,3.098-8.163,7.252-9.116l0.297,0.573c-0.61,0.196-1.051,0.768-1.051,1.442c0,0.837,0.678,1.516,1.515,1.516c0.068,0,0.135-0.006,0.2-0.015l-0.058,2.845l0.052-0.011c-0.442,0.204-0.824,0.513-1.116,0.895l0.093-0.147l-1.574-0.603l1.172,1.239l0.026-0.042c-0.19,0.371-0.306,0.788-0.324,1.229l-0.003-0.016l-2.623,1.209c-0.199-0.604-0.767-1.041-1.438-1.041c-0.837,0-1.516,0.678-1.516,1.516c0,0.064,0.005,0.128,0.013,0.191l-0.783-0.076C7.063,18.524,7.017,17.994,7.017,17.452zM16.369,26.805c-4.429,0-8.138-3.078-9.106-7.211l0.691-0.353c0.146,0.686,0.753,1.2,1.482,1.2c0.837,0,1.515-0.679,1.515-1.516c0-0.105-0.011-0.207-0.031-0.307l2.858,0.03c0.045,0.095,0.096,0.187,0.15,0.276l-3.45,5.277l0.227-0.195l4.529-3.92c0.336,0.153,0.705,0.248,1.094,0.266l-0.019,0.004l1.226,2.627c-0.655,0.166-1.142,0.76-1.142,1.468c0,0.837,0.678,1.515,1.516,1.515c0.076,0,0.151-0.007,0.225-0.018l0.004,0.688C17.566,26.746,16.975,26.805,16.369,26.805zM18.662,26.521l-0.389-0.6c0.661-0.164,1.152-0.759,1.152-1.47c0-0.837-0.68-1.516-1.516-1.516c-0.066,0-0.13,0.005-0.193,0.014v-2.86l-0.025,0.004c0.409-0.185,0.77-0.459,1.055-0.798l1.516,0.659l-1.104-1.304c0.158-0.335,0.256-0.704,0.278-1.095l2.552-1.164c0.19,0.618,0.766,1.068,1.447,1.068c0.838,0,1.516-0.679,1.516-1.516c0-0.069-0.006-0.137-0.016-0.204l0.65,0.12c0.089,0.517,0.136,1.049,0.136,1.591C25.722,21.826,22.719,25.499,18.662,26.521z",
+
+"raph_linkedin": "M27.25,3.125h-22c-1.104,0-2,0.896-2,2v22c0,1.104,0.896,2,2,2h22c1.104,0,2-0.896,2-2v-22C29.25,4.021,28.354,3.125,27.25,3.125zM11.219,26.781h-4v-14h4V26.781zM9.219,11.281c-1.383,0-2.5-1.119-2.5-2.5s1.117-2.5,2.5-2.5s2.5,1.119,2.5,2.5S10.602,11.281,9.219,11.281zM25.219,26.781h-4v-8.5c0-0.4-0.403-1.055-0.687-1.213c-0.375-0.211-1.261-0.229-1.665-0.034l-1.648,0.793v8.954h-4v-14h4v0.614c1.583-0.723,3.78-0.652,5.27,0.184c1.582,0.886,2.73,2.864,2.73,4.702V26.781z",
+"raph_github": "M28.436,15.099c-1.201-0.202-2.451-0.335-3.466-0.371l-0.179-0.006c0.041-0.09,0.072-0.151,0.082-0.16c0.022-0.018,0.04-0.094,0.042-0.168c0-0.041,0.018-0.174,0.046-0.35c0.275,0.01,0.64,0.018,1.038,0.021c1.537,0.012,3.145,0.136,4.248,0.331c0.657,0.116,0.874,0.112,0.389-0.006c-0.491-0.119-1.947-0.294-3.107-0.37c-0.779-0.053-1.896-0.073-2.554-0.062c0.019-0.114,0.041-0.241,0.064-0.371c0.093-0.503,0.124-1.009,0.126-2.016c0.002-1.562-0.082-1.992-0.591-3.025c-0.207-0.422-0.441-0.78-0.724-1.104c0.247-0.729,0.241-1.858-0.015-2.848c-0.211-0.812-0.285-0.864-1.021-0.708C22.19,4.019,21.69,4.2,21.049,4.523c-0.303,0.153-0.721,0.391-1.024,0.578c-0.79-0.278-1.607-0.462-2.479-0.561c-0.884-0.1-3.051-0.044-3.82,0.098c-0.752,0.139-1.429,0.309-2.042,0.511c-0.306-0.189-0.75-0.444-1.067-0.604C9.973,4.221,9.473,4.041,8.847,3.908c-0.734-0.157-0.81-0.104-1.02,0.708c-0.26,1.003-0.262,2.151-0.005,2.878C7.852,7.577,7.87,7.636,7.877,7.682c-1.042,1.312-1.382,2.78-1.156,4.829c0.059,0.534,0.15,1.024,0.277,1.473c-0.665-0.004-1.611,0.02-2.294,0.064c-1.162,0.077-2.618,0.25-3.109,0.369c-0.484,0.118-0.269,0.122,0.389,0.007c1.103-0.194,2.712-0.32,4.248-0.331c0.29-0.001,0.561-0.007,0.794-0.013c0.07,0.237,0.15,0.463,0.241,0.678L7.26,14.759c-1.015,0.035-2.264,0.168-3.465,0.37c-0.901,0.151-2.231,0.453-2.386,0.54c-0.163,0.091-0.03,0.071,0.668-0.106c1.273-0.322,2.928-0.569,4.978-0.741l0.229-0.02c0.44,1.022,1.118,1.802,2.076,2.41c0.586,0.373,1.525,0.756,1.998,0.816c0.13,0.016,0.508,0.094,0.84,0.172c0.333,0.078,0.984,0.195,1.446,0.262h0.011c-0.009,0.006-0.017,0.01-0.025,0.016c-0.56,0.291-0.924,0.744-1.169,1.457c-0.11,0.033-0.247,0.078-0.395,0.129c-0.529,0.18-0.735,0.217-1.271,0.221c-0.556,0.004-0.688-0.02-1.02-0.176c-0.483-0.225-0.933-0.639-1.233-1.133c-0.501-0.826-1.367-1.41-2.089-1.41c-0.617,0-0.734,0.25-0.288,0.615c0.672,0.549,1.174,1.109,1.38,1.537c0.116,0.24,0.294,0.611,0.397,0.824c0.109,0.227,0.342,0.535,0.564,0.748c0.522,0.498,1.026,0.736,1.778,0.848c0.504,0.074,0.628,0.074,1.223-0.002c0.287-0.035,0.529-0.076,0.746-0.127c0,0.244,0,0.525,0,0.855c0,1.766-0.021,2.334-0.091,2.5c-0.132,0.316-0.428,0.641-0.716,0.787c-0.287,0.146-0.376,0.307-0.255,0.455c0.067,0.08,0.196,0.094,0.629,0.066c0.822-0.051,1.403-0.355,1.699-0.891c0.095-0.172,0.117-0.518,0.147-2.318c0.032-1.953,0.046-2.141,0.173-2.42c0.077-0.166,0.188-0.346,0.25-0.395c0.104-0.086,0.111,0.084,0.111,2.42c-0.001,2.578-0.027,2.889-0.285,3.385c-0.058,0.113-0.168,0.26-0.245,0.33c-0.135,0.123-0.192,0.438-0.098,0.533c0.155,0.154,0.932-0.088,1.356-0.422c0.722-0.572,0.808-1.045,0.814-4.461l0.003-2.004l0.219,0.021l0.219,0.02l0.036,2.621c0.041,2.951,0.047,2.994,0.549,3.564c0.285,0.322,0.572,0.5,1.039,0.639c0.625,0.188,0.813-0.102,0.393-0.605c-0.457-0.547-0.479-0.756-0.454-3.994c0.017-2.076,0.017-2.076,0.151-1.955c0.282,0.256,0.336,0.676,0.336,2.623c0,2.418,0.069,2.648,0.923,3.07c0.399,0.195,0.511,0.219,1.022,0.221c0.544,0.002,0.577-0.006,0.597-0.148c0.017-0.115-0.05-0.193-0.304-0.348c-0.333-0.205-0.564-0.467-0.709-0.797c-0.055-0.127-0.092-0.959-0.117-2.672c-0.036-2.393-0.044-2.502-0.193-2.877c-0.201-0.504-0.508-0.902-0.897-1.166c-0.101-0.066-0.202-0.121-0.333-0.162c0.161-0.016,0.317-0.033,0.468-0.055c1.572-0.209,2.403-0.383,3.07-0.641c1.411-0.543,2.365-1.445,2.882-2.724c0.046-0.114,0.092-0.222,0.131-0.309l0.398,0.033c2.051,0.173,3.706,0.42,4.979,0.743c0.698,0.177,0.831,0.198,0.668,0.105C30.666,15.551,29.336,15.25,28.436,15.099zM22.422,15.068c-0.233,0.512-0.883,1.17-1.408,1.428c-0.518,0.256-1.33,0.451-2.25,0.544c-0.629,0.064-4.137,0.083-4.716,0.026c-1.917-0.188-2.991-0.557-3.783-1.296c-0.75-0.702-1.1-1.655-1.039-2.828c0.039-0.734,0.216-1.195,0.679-1.755c0.421-0.51,0.864-0.825,1.386-0.985c0.437-0.134,1.778-0.146,3.581-0.03c0.797,0.051,1.456,0.051,2.252,0c1.886-0.119,3.145-0.106,3.61,0.038c0.731,0.226,1.397,0.834,1.797,1.644c0.18,0.362,0.215,0.516,0.241,1.075C22.808,13.699,22.675,14.517,22.422,15.068zM12.912,11.762c-1.073-0.188-1.686,1.649-0.863,2.587c0.391,0.445,0.738,0.518,1.172,0.248c0.402-0.251,0.62-0.72,0.62-1.328C13.841,12.458,13.472,11.862,12.912,11.762zM19.425,11.872c-1.073-0.188-1.687,1.647-0.864,2.586c0.392,0.445,0.738,0.519,1.173,0.247c0.401-0.25,0.62-0.72,0.62-1.328C20.354,12.569,19.985,11.971,19.425,11.872zM16.539,15.484c-0.023,0.074-0.135,0.184-0.248,0.243c-0.286,0.147-0.492,0.096-0.794-0.179c-0.187-0.169-0.272-0.258-0.329-0.081c-0.053,0.164,0.28,0.493,0.537,0.594c0.236,0.094,0.405,0.097,0.661-0.01c0.254-0.106,0.476-0.391,0.476-0.576C16.842,15.303,16.595,15.311,16.539,15.484zM16.222,14.909c0.163-0.144,0.2-0.44,0.044-0.597s-0.473-0.133-0.597,0.043c-0.144,0.206-0.067,0.363,0.036,0.53C15.865,15.009,16.08,15.034,16.222,14.909z",
+"raph_flickr": "M21.77,8.895c-2.379,0-4.479,1.174-5.77,2.969c-1.289-1.795-3.39-2.969-5.77-2.969c-3.924,0-7.105,3.181-7.105,7.105c0,3.924,3.181,7.105,7.105,7.105c2.379,0,4.48-1.175,5.77-2.97c1.29,1.795,3.391,2.97,5.77,2.97c3.925,0,7.105-3.182,7.105-7.105C28.875,12.075,25.694,8.895,21.77,8.895zM21.769,21.822c-3.211,0-5.821-2.61-5.821-5.821c0-3.213,2.61-5.824,5.821-5.824c3.213,0,5.824,2.611,5.824,5.824C27.593,19.212,24.981,21.822,21.769,21.822z",
+    "raph_slideshare": "M28.952,12.795c-0.956,1.062-5.073,2.409-5.604,2.409h-4.513c-0.749,0-1.877,0.147-2.408,0.484c0.061,0.054,0.122,0.108,0.181,0.163c0.408,0.379,1.362,0.913,2.206,0.913c0.397,0,0.723-0.115,1-0.354c1.178-1.007,1.79-1.125,2.145-1.125c0.421,0,0.783,0.193,0.996,0.531c0.4,0.626,0.106,1.445-0.194,2.087c-0.718,1.524-3.058,3.171-5.595,3.171c-0.002,0-0.002,0-0.004,0c-0.354,0-0.701-0.033-1.033-0.099v3.251c0,0.742,1.033,2.533,4.167,2.533s3.955-3.701,3.955-4.338v-4.512c2.23-1.169,4.512-1.805,5.604-3.895C30.882,12.05,29.907,11.733,28.952,12.795zM21.942,17.521c0.796-1.699-0.053-1.699-1.54-0.425s-3.665,0.105-4.408-0.585c-0.743-0.689-1.486-1.22-2.814-1.167c-1.328,0.053-4.46-0.161-6.267-0.585c-1.805-0.425-4.895-3-5.15-2.335c-0.266,0.69,0.211,1.168,1.168,2.335c0.955,1.169,5.075,2.778,5.075,2.778s0,3.453,0,4.886c0,1.435,2.973,3.61,4.512,3.61s2.708-1.062,2.708-1.806v-4.512C17.775,21.045,21.146,19.221,21.942,17.521zM20.342,13.73c1.744,0,3.159-1.414,3.159-3.158c0-1.745-1.415-3.159-3.159-3.159s-3.158,1.414-3.158,3.159C17.184,12.316,18.598,13.73,20.342,13.73zM12.019,13.73c1.744,0,3.158-1.414,3.158-3.158c0-1.745-1.414-3.159-3.158-3.159c-1.745,0-3.159,1.414-3.159,3.159C8.86,12.316,10.273,13.73,12.019,13.73z",
+	
+	"logo_apple": "M21.367,4.494c-3.318,0.611-4.42,3.39-4.463,4.979c1.824,0.132,2.967-0.899,3.432-1.502 C21.097,7.115,21.281,5.91,21.367,4.494z M21.775,9.983c-2.399,0-3.739,0.98-4.398,0.991c-0.759-0.059-2.967-0.947-4.255-0.961 c-4.51,0.134-5.8,5.035-5.744,7.142c0.367,8.065,5.289,10.148,6.093,10.343c0.646,0.127,2.821-0.995,4.42-0.943 c1.747,0.182,2.969,0.905,3.669,0.855c0.889-0.062,3.783-2.4,4.656-6.007c-1.758-1.487-2.844-2.836-2.941-4.114 c-0.046-0.579,0.825-3.85,2.212-4.769c0.2-1.13-1.86-2.564-3.476-2.532C21.931,9.985,21.853,9.983,21.775,9.983z",
+	    
+	"raph_feed": "M4.135,16.762c3.078,0,5.972,1.205,8.146,3.391c2.179,2.187,3.377,5.101,3.377,8.202h4.745c0-9.008-7.299-16.335-16.269-16.335V16.762zM4.141,8.354c10.973,0,19.898,8.975,19.898,20.006h4.743c0-13.646-11.054-24.749-24.642-24.749V8.354zM10.701,25.045c0,1.815-1.471,3.287-3.285,3.287s-3.285-1.472-3.285-3.287c0-1.813,1.471-3.285,3.285-3.285S10.701,23.231,10.701,25.045z"
+}
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/symbol.json
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/symbol.json	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/symbol.json	(revision 29468)
@@ -0,0 +1,35 @@
+{"data": {
+"raph_?": "m149.41231,22.85233c-69.86728,0 -126.49998,56.63604 -126.49998,126.50003c0,69.86758 56.6327,126.49997 126.49998,126.49997c69.86401,0 126.50002,-56.63239 126.50002,-126.49997c0,-69.86399 -56.636,-126.50003 -126.50002,-126.50003zm11.55783,199.35891l-23.56044,0l0,-22.59398l23.56044,0l0,22.59398zm0,-46.71869l0,7.46713l-23.56044,0l0,-9.20049c0,-27.7635 31.59505,-32.1693 31.59505,-51.90179c0,-8.99762 -8.04478,-15.89004 -18.57663,-15.89004c-10.91353,0 -20.4856,8.04137 -20.4856,8.04137l-13.41364,-16.66759c0,0 13.22113,-13.78867 36.00754,-13.78867c21.64479,0 41.74193,13.40363 41.74193,36.00092c0.0101,31.61177 -33.30821,35.25735 -33.30821,55.93915z",
+"raph_i": "m150.95732,24.95233c-69.0355,0 -124.99999,55.96458 -124.99999,124.99999c0,69.03694 55.96449,125.00002 124.99999,125.00002c69.03699,0 125.00002,-55.96307 125.00002,-125.00002c0,-69.03541 -55.96303,-124.99999 -125.00002,-124.99999zm-10.69066,56.19589l20.81367,0l0,22.13908l-20.81367,0l0,-22.13908zm34.44556,134.35851l-22.89369,0c-8.89432,0 -12.68703,-3.78441 -12.68703,-12.86745l0,-59.04195c0,-2.83797 -1.51247,-4.16339 -4.16177,-4.16339l-7.56882,0l0,-20.44292l22.8953,0c8.90092,0 12.67717,3.97305 12.67717,12.8658l0,59.23219c0,2.65759 1.51248,4.16347 4.16177,4.16347l7.56891,0l0,20.25424l0.00816,0z",
+"raph_$": "m150.98233,24.94733c-69.03625,0 -125,55.96302 -125,124.99998c0,69.03551 55.96375,125.00002 125,125.00002c69.03705,0 125,-55.96451 125,-125.00002c0,-69.03696 -55.96295,-124.99998 -125,-124.99998zm10.79396,192.7707l0,17.60657l-16.83977,0l0,-17.4082c-27.6337,-3.78439 -39.74321,-26.4895 -39.74321,-26.4895l17.21859,-14.38808c0,0 10.97442,19.11906 30.84165,19.11906c10.97354,0 19.29941,-5.87416 19.29941,-15.90373c0,-23.46941 -63.20531,-20.62346 -63.20531,-64.15035c0,-18.92229 14.94751,-32.55412 35.57991,-35.76946l0,-17.60481l16.84047,0l0,17.59507c14.37999,1.89301 31.40912,9.46187 31.40912,25.74152l0,12.48836l-22.32774,0l0,-6.05457c0,-6.24354 -7.95525,-10.40699 -16.84787,-10.40699c-11.35251,0 -19.67842,5.67601 -19.67842,13.62369c0,24.02905 63.20529,18.16442 63.20529,63.77314c0.00903,18.74001 -13.99272,35.01302 -35.75212,38.22829z",
+"raph_warning": "m273.73639,223.86958l-33.28442,-57.6366c-10.03513,-17.37152 -26.44896,-45.81008 -36.48415,-63.18496l-33.28131,-57.6331c-10.04509,-17.38171 -26.45891,-17.38171 -36.49071,0l-33.27457,57.6331c-10.03513,17.37488 -26.45896,45.82006 -36.49078,63.18496l-33.27796,57.6366c-10.03511,17.38828 -1.82147,31.60081 18.24543,31.60081l206.07314,0c20.08694,0 28.29041,-14.21254 18.26532,-31.60081zm-111.79109,8.92259l-19.74089,0l0,-18.951l19.74089,0l0,18.951zm-0.95107,-32.91483l-17.8219,0l-1.77113,-81.08434l21.20612,0l-1.61308,81.08434z",
+	"airplane": "m150.70285,1c-3.11894,0 -5.89383,1.28033 -8.23512,3.60274c-2.33931,2.3205 -4.27426,5.64559 -5.8844,9.79826c-3.21983,8.30419 -5.20047,19.96969 -6.28387,33.94021c-1.08127,13.94364 -1.26349,30.17972 -0.81427,47.56012c-38.52657,15.80524 -116.66563,48.43882 -122.94262,55.72521c-8.35709,9.701 -5.65693,20.81889 -2.28924,28.1994l128.45827,-26.14551c2.71532,34.07207 6.57611,67.81866 9.94048,94.2617c-12.56244,3.67662 -36.01244,10.93625 -40.85281,15.43805c-6.66802,6.2016 -6.66797,26.22952 -6.66797,26.22952l52.57557,-4.27612c1.23827,8.63303 2.01266,13.67035 2.01266,13.67035l0.07683,0.45456l0.41484,0l0.96791,0l0.41483,0l0.07683,-0.45456c0,0 0.77292,-5.03741 2.01265,-13.67035l52.59094,4.27612c0,0 0.00006,-20.02792 -6.66798,-26.22952c-4.84218,-4.50354 -28.3093,-11.77963 -40.86818,-15.45499c3.35742,-26.36189 7.2114,-59.97935 9.92513,-93.94165l126.95265,25.84239c3.36765,-7.38051 6.08325,-18.4984 -2.27386,-28.1994c-6.19934,-7.19621 -82.45026,-39.10397 -121.45232,-55.11919c0.466,-17.60567 0.29471,-34.06301 -0.79893,-48.16614l0,-0.03367c-1.08395,-13.95511 -3.0667,-25.60925 -6.28384,-33.90654c-1.60968,-4.15152 -3.52888,-7.47695 -5.86903,-9.79826c-2.34131,-2.32241 -5.11617,-3.60274 -8.23509,-3.60274z",
+	"arrows_recycle": "m184.80963,97.86072l-33.85641,-5.99613l12.47342,-6.51318c6.86035,-3.58231 13.08063,-7.05022 13.8228,-7.70647c1.84358,-1.63009 -21.11545,-37.10833 -23.99486,-37.07896c-1.26575,0.01435 -10.08571,13.75221 -19.59988,30.53185c-9.58302,16.90081 -19.12026,29.77207 -21.38301,28.85762c-26.78106,-10.82179 -48.63238,-21.77106 -48.63238,-24.36867c0,-1.7743 8.40277,-17.60187 18.67293,-35.17241l18.67294,-31.94638l50.91241,0l50.91241,0l13.28955,21.01844l13.28966,21.01844l13.86403,-7.11266c9.61084,-4.93073 13.27039,-5.63875 11.92874,-2.30832c-11.81259,29.32658 -29.43884,63.52189 -32.57199,63.19018c-2.16919,-0.22948 -19.17931,-3.11553 -37.80035,-6.41334zm-157.90158,130.83841c-12.88431,-22.18782 -24.43164,-42.96199 -25.66062,-46.16496c-1.26128,-3.28671 2.41348,-15.03122 8.43637,-26.96236l10.67094,-21.13916l-10.90837,-6.44379c-14.51679,-8.57526 -9.12079,-11.21638 29.38814,-14.38432l30.43462,-2.50365l11.93788,31.54266c6.56593,17.34845 12.77805,33.78311 13.80486,36.52168c1.07085,2.85602 -4.05412,0.95576 -12.01902,-4.45653l-13.88588,-9.43578l-9.69341,18.71187c-5.33128,10.2917 -9.769,19.85884 -9.86144,21.26031c-0.09266,1.40147 16.26999,3.00525 36.36115,3.56384l36.52929,1.01558l2.3839,26.7207c1.3112,14.69647 2.11298,26.91713 1.78191,27.15706c-0.33105,0.23969 -17.62818,1.53915 -38.43802,2.88736l-37.83614,2.4512l-23.42616,-40.34174zm144.19484,39.20346c-22.11887,-33.38463 -22.50333,-30.90141 10.37228,-66.98763l21.10391,-23.16492l-2.24142,16.92821l-2.24152,16.92822l23.64932,0c13.0071,0 23.64944,-1.04019 23.64944,-2.31137c0,-1.27139 -7.21684,-15.55066 -16.03735,-31.73212c-8.82051,-16.18146 -16.00386,-30.77765 -15.96307,-32.436c0.09158,-3.71849 46.32753,-34.42394 48.52559,-32.22591c0.87094,0.87095 9.45139,16.38289 19.06769,34.47134l17.48441,32.8876l-23.52576,37.94727c-12.93936,20.87074 -25.37122,39.98283 -27.62622,42.47105c-2.25526,2.48822 -14.86537,5.52936 -28.02258,6.75787c-25.11388,2.34528 -24.43022,1.7804 -28.11249,23.22583c-0.64439,3.75308 -8.1586,-4.76279 -20.08223,-22.75946z",
+	"beverage": "m55.65598,297.84982c-28.13961,-15.0867 0.71402,-44.87836 24.17752,-35.2438c17.46051,-0.03983 34.92112,-0.01355 52.38168,-0.02121c0,-34.34088 0,-68.68181 0,-103.02271c-43.73869,-52.76227 -87.47738,-105.52454 -131.21606,-158.28681c98.99732,-0.36748 197.99556,-0.36708 296.99286,0c-42.95236,53.02298 -85.90472,106.04595 -128.85707,159.06893c0,34.08022 0,68.1604 0,102.24059c25.78079,0.22986 51.60571,-0.625 77.34869,0.87012c20.26866,5.44482 12.15504,38.73355 -7.54306,35.2244c-61.09291,-0.21259 -122.20532,0.38715 -183.28456,-0.8295zm127.03334,-186.51904c19.68919,-7.503 16.9212,-39.96898 -4.19951,-43.27924c-31.86026,-8.77637 -38.74004,46.49459 -5.25272,45.19753c3.23363,0.02124 6.51921,-0.43665 9.45222,-1.91829z",
+	"coffee": "M99.944,199.666h93.74c13.512-0.025,22.73-11.389,22.685-23.08v-7.861 c26.752-0.021,46.161-20.105,46.151-43.524c0.01-23.836-19.018-43.419-41.166-43.402H76.865v94.789 C76.886,189.46,87.973,199.643,99.944,199.666z M216.366,99.629L216.366,99.629h4.985c18.328-0.029,24.207,17.304,24.119,25.702 c0.018,13.56-10.025,26.565-29.104,25.303V99.629z M25.211,205.438c0.017,17.521,13.374,25.646,24.125,25.696h193.91c12.824-0.05,24.064-10.133,24.121-25.696 H25.211z",
+	"man": "m125.90131,25.2503c0,-13.33112 10.79823,-24.12934 24.12934,-24.12934c13.33113,0 24.12932,10.79822 24.12932,24.12934c0,13.33112 -10.79819,24.12934 -24.12932,24.12934c-13.33113,0 -24.12934,-10.79822 -24.12934,-24.12934zm81.12696,68.30144v-12.18601c0,-12.82147 -10.38806,-23.21696 -23.21696,-23.21696h-67.63607c-12.82147,0 -23.21695,10.39549 -23.21695,23.21696v12.18601c-0.02242,0.2766 -0.03739,0.56071 -0.03739,0.84853v70.18918c0,5.4538 4.41839,9.87215 9.87218,9.87215c5.44633,0 9.87589,-4.41837 9.87589,-9.87215v-69.14999h6.62006v79.02961h0.04859v111.66646c0,7.25925 5.89491,13.15787 13.16164,13.15787c7.27048,0 13.16164,-5.89114 13.16164,-13.15787v-111.66646h8.68347v111.66646c0,7.25925 5.89856,13.15787 13.16162,13.15787c7.27045,0 13.16161,-5.89114 13.16161,-13.15787v-111.66646h0.04112v-79.02961h6.62007v69.14623c0,5.45381 4.42955,9.8759 9.8759,9.8759c5.45386,0 9.87218,-4.42209 9.87218,-9.8759v-70.18916c-0.00371,-0.29156 -0.02617,-0.56819 -0.0486,-0.8448z",
+	"woman": "m150.04984,49.03255c13.33249,0 24.15346,-10.81348 24.15346,-24.15346c0,-13.34748 -10.82097,-24.16844 -24.15346,-24.16844c-13.34375,0 -24.16843,10.82096 -24.16843,24.16844c0,13.33998 10.82095,24.15346 24.16843,24.15346zm67.74049,104.1672l-21.67561,-80.39177c-0.20212,-0.72988 -0.48662,-1.42607 -0.83093,-2.06987c-2.46291,-7.53088 -9.53339,-12.9844 -17.88399,-12.9844h-54.86088c-8.70618,0 -16.01627,5.9214 -18.16845,13.95758c-0.14598,0.35184 -0.26575,0.7224 -0.37429,1.10417l-21.2901,80.38803c-1.41861,5.2701 1.71053,10.6862 6.98811,12.1048c5.27014,1.4111 10.68626,-1.71803 12.10487,-6.98813l16.71989,-63.14786h6.96569l-30.34438,114.25453h28.5927v78.87959c0,6.06738 4.91077,10.9819 10.98564,10.9819c6.05989,0 10.9819,-4.9108 10.9819,-10.9819v-78.87959h8.73613v78.87959c0,6.06738 4.91826,10.9819 10.99315,10.9819c6.05988,0 10.9819,-4.9108 10.9819,-10.9819v-78.87959h28.57767l-30.45665,-114.25453h7.14911l17.02679,63.14786c1.41859,5.2701 6.83472,8.39923 12.10481,6.98813c5.2589,-1.41859 8.38803,-6.83842 6.97693,-12.10854z",
+	"bicycle": "m69.04492,242.61508c10.78542,-0.13551 -10.27161,-0.62888 -14.0067,-0.90082c-31.20993,-0.75682 -57.11145,-31.7867 -53.74048,-62.58058c0.6826,-30.81444 30.36186,-57.88344 61.25282,-54.78261c8.04092,-3.41573 19.45538,7.85678 24.44781,2.47261c12.82323,-22.6207 25.24759,-45.47771 38.58752,-67.7975c11.3629,-1.62186 24.90015,-2.8755 35.9539,0.19863c5.11031,8.04987 -4.18097,10.24141 -9.97878,8.99869c-6.4711,0 -12.9422,0 -19.41331,0c-4.68463,8.54676 -9.49177,17.02541 -14.27853,25.51514c27.18877,0 54.37757,0 81.56634,0c0.60545,-2.89218 7.47321,-9.12369 1.38461,-8.44633c-11.06171,-1.39418 -4.14218,-14.17861 4.04941,-10.54169c11.49847,0.42252 23.4034,-1.13349 34.55679,1.17167c5.95799,11.9574 -11.26917,9.39215 -18.65384,9.51889c-5.46606,-1.78406 -6.59882,3.68022 -8.76302,7.4192c-8.77467,8.98817 -3.32066,18.46121 2.57677,27.22322c2.16318,3.98602 3.70422,9.51816 8.96812,5.7937c10.73436,-2.35877 22.43681,-2.44432 33.11809,0.31375c22.31958,6.63104 40.2153,27.32498 41.71356,50.76672c1.35196,14.39882 -1.7262,29.2406 -10.68872,40.85638c-10.3952,14.88928 -27.26529,23.04211 -45.01289,24.69595m-13.91446,0.14534c-16.17995,-4.15208 -31.09747,-13.81174 -39.74602,-28.39511c-5.65977,-7.28935 -6.39555,-18.57542 -9.40382,-25.8875c-7.93416,-0.10381 -15.86833,-0.20763 -23.80251,-0.31143c-16.06972,-25.85139 -30.2338,-52.8877 -45.73496,-79.09947c-3.0216,8.9735 -20.19933,21.18202 -10.71458,29.44228c23.80356,19.97299 26.97348,58.9857 6.61392,82.50262c-9.33031,10.45926 -22.27345,17.66695 -35.57853,21.74126m1.02195,-14.22214c25.6753,-5.59119 42.08234,-35.19554 33.20155,-59.88542c-2.74454,-8.04132 -10.29613,-20.88658 -16.96593,-21.01822c-7.10979,12.27542 -13.50588,24.99036 -21.29804,36.85445c-17.11086,3.00977 -1.43426,-17.82442 2.18629,-24.90399c3.88173,-8.63774 17.97784,-22.6107 0.22043,-22.40381c-12.4663,-1.24055 -25.71457,-0.04088 -35.79932,8.23351c-21.64245,14.32193 -25.73868,47.07928 -9.34899,66.82591c11.09536,14.38573 30.25585,20.50179 47.804,16.29758zm179.64028,-0.00356c21.91476,-5.14897 37.68491,-27.67265 34.8483,-50.02701c-1.50024,-24.84305 -26.27582,-44.93475 -50.90707,-41.59564c-18.45729,-1.74684 -0.78658,15.19781 1.85167,23.43547c2.5099,8.7469 16.33638,19.49011 8.6171,28.02017c-17.31352,0.72531 -35.05154,-0.50934 -52.31752,1.23642c3.1011,22.89496 24.76817,41.83401 48.14848,40.08203c3.28111,-0.02676 6.57803,-0.30434 9.75905,-1.15144zm-70.7294,-51.16617c2.08536,-17.91364 12.23944,-34.20847 27.04826,-44.4043c0.87492,-4.39421 -8.09195,-24.63332 -11.37527,-10.5231c-10.13445,18.42084 -20.32248,36.81699 -30.14639,55.40483c4.70622,0.11383 9.98186,0.93559 14.4734,-0.47743zm52.9005,-0.88846c-5.84201,-10.98254 -11.81374,-21.89917 -17.91992,-32.73703c-12.24919,6.45949 -20.3076,20.12949 -22.21249,33.77383c13.37456,-0.2851 26.97348,0.69884 40.16722,-0.71251l-0.03476,-0.3243l0,0zm-57.29515,-39.61388c5.7617,-10.63408 11.63275,-21.21213 17.21649,-31.94065c-24.2798,-0.5443 -48.61469,-0.66353 -72.88629,0.11504c12.46696,21.42642 23.73018,43.6828 37.36159,64.35614c6.59126,-10.13849 12.18927,-21.81091 18.30821,-32.53052z",
+	"bulb": "m145.62592,297.06863c-17.67376,-4.68848 -27.91267,-23.96384 -26.70493,-41.44981c-0.45245,-22.83995 1.65483,-46.8734 -9.26703,-67.87447c-6.22532,-15.68024 -16.83022,-29.52451 -21.2558,-45.86502c-5.50718,-25.3512 1.29536,-54.08422 21.79177,-71.10346c23.11512,-19.80671 60.02821,-22.38829 85.47337,-5.55379c17.94666,12.36192 30.89558,32.75098 30.41452,55.00024c2.10583,16.62513 -4.45561,32.2625 -12.17442,46.55451c-5.53021,11.50751 -11.98869,22.76817 -17.00821,34.40399c-1.32327,23.85774 -0.56435,47.93431 -4.15358,71.58684c-5.97899,18.328 -28.51152,30.78922 -47.11569,24.30096zm46.67903,-42.65804c-10.48888,-5.65382 -25.56134,-1.97798 -37.75313,-3.19516c-9.95908,1.99197 -27.6553,-4.08569 -32.94975,5.03105c12.10807,4.73648 26.33759,1.18594 39.22778,1.96957c10.31409,-0.9906 22.18068,0.93939 31.4751,-3.80547zm-0.78554,-10.63885c1.54361,-14.36404 -21.1709,-7.03433 -30.39838,-9.17262c-12.21318,2.47205 -31.64935,-5.2915 -39.33047,5.74487c4.5516,11.09071 24.85052,3.29074 35.50985,5.75148c11.3671,-0.4028 23.15991,0.40741 34.21899,-2.32373zm0.14142,-25.16705c2.9986,-27.98152 20.10725,-51.27968 30.01392,-76.87566c8.14517,-30.64574 -7.9861,-65.65708 -37.19159,-78.52086c-29.06958,-14.40719 -67.79967,-3.52343 -84.22785,24.70715c-15.82867,23.31919 -12.80788,55.00346 2.66266,77.68118c11.03862,19.81914 19.84574,42.09169 18.41109,65.15663c22.91359,0 45.82719,0 68.7408,0c0.53035,-4.04942 1.06052,-8.09911 1.59097,-12.14844zm-50.72687,-39.64223c-9.07846,-15.78525 -18.39817,-31.69214 -24.71996,-48.79948c5.68369,-7.35728 7.33711,-15.55251 9.10273,-24.19695c15.95243,-3.13345 -2.03056,18.17914 13.0308,18.65942c13.36925,5.81685 7.50436,-28.2252 18.61179,-15.95465c-7.9733,13.46684 15.66168,26.8638 16.5291,7.59886c-1.14578,-14.54594 14.28561,-11.82063 8.26923,1.37553c0.49657,6.78834 11.54893,8.73447 11.73816,14.19425c-7.9566,17.25854 -14.87259,35.07664 -24.29411,51.59875c-2.12068,-6.39691 8.34081,-22.42969 11.68367,-31.84341c6.45049,-8.13736 11.99347,-30.06687 -4.82256,-27.07765c-9.75478,15.21495 -22.87704,-9.5907 -32.42833,4.99055c-8.10805,2.41856 -20.86024,-14.04196 -23.2123,1.78514c6.10664,18.79854 18.8132,34.81967 25.46149,53.42416c-2.25594,-1.33008 -3.54053,-3.66359 -4.94971,-5.75453zm-12.74261,-68.89435c-4.41462,-2.15457 1.86072,11.45412 -0.00009,0l0.00009,0zm26.38611,1.60738c-5.73064,-9.69846 -2.6572,11.76727 0,0zm25.57564,0c-5.73064,-9.69846 -2.65724,11.76727 0,0zm-119.06653,-71.66327c-10.12879,-10.27977 -21.32492,-19.92564 -30.13364,-31.25677c22.0061,18.21614 42.14793,38.73141 61.97966,59.29806c5.2662,7.2365 -9.18723,-6.75771 -11.87724,-9.10345c-6.7307,-6.23349 -13.37324,-12.56173 -19.96879,-18.93784zm156.40887,29.39093c17.12013,-21.33164 33.0936,-43.69485 51.55162,-63.89019c-3.09076,8.6951 -13.04016,19.09942 -19.29597,28.05458c-10.44716,12.99739 -20.21251,26.73974 -32.1591,38.39317c-1.49106,1.57605 -3.71758,-2.15694 -0.09639,-2.55756l-0.00015,0zm-37.0826,-20.23703c5.91515,-16.91904 14.49518,-33.02397 24.06741,-48.16613c-0.22247,8.40011 -10.37453,24.32112 -15.25424,34.73693c-2.76042,4.19142 -5.08876,10.87586 -8.81317,13.4292zm-75.7492,-21.69804c-4.12045,-6.01025 -16.5241,-20.00493 -14.20815,-21.91343c11.95872,13.25933 24.12167,26.94502 32.71223,42.62532c-7.31573,-5.61084 -12.5797,-13.71475 -18.50409,-20.71189zm47.35616,-4.73013c-0.83392,-5.64444 1.75482,-32.58975 3.19298,-14.29333c0.00511,11.46356 1.20168,24.36872 -1.98915,34.80271c-1.36639,-6.70823 -1.03488,-13.69191 -1.20383,-20.50938z",
+	"cart_2": "M0,68.018v36.551h57.865l28.284,82.416h159.24L297.6,61.677H50.043v6.34H0z M132.217,227.488c0,12.975-10.518,23.493-23.492,23.493s-23.493-10.519-23.493-23.493s10.518-23.492,23.493-23.492S132.217,214.514,132.217,227.488zM241.018,227.488c0,12.975-10.518,23.493-23.492,23.493s-23.493-10.519-23.493-23.493s10.519-23.492,23.493-23.492S241.018,214.514,241.018,227.488z",
+	"coat_hanger": "m24.72351,255.83636c-16.41191,-2.33228 -27.73119,-20.33411 -22.38228,-36.1741c3.30628,-15.35616 20.22842,-19.55692 31.44893,-27.66121c35.64961,-21.14748 71.50229,-41.94997 107.26245,-62.9095c1.87845,-10.22399 -5.70195,-16.59309 -13.7997,-21.39916c-16.20296,-12.86633 -15.31998,-38.50921 -1.59858,-52.83282c16.08138,-18.88601 49.91904,-12.94907 59.95362,9.38958c9.73412,9.92804 -0.18503,34.24562 -13.8385,22.54042c-1.42418,-13.2976 -12.78993,-28.89017 -27.7881,-20.44456c-15.64833,8.98737 -6.40202,29.9363 8.0513,34.15588c9.75604,6.53233 8.45554,18.64742 8.97318,28.8608c42.85536,25.5808 86.25137,50.28574 128.51941,76.82744c16.8277,13.06401 9.90717,44.50819 -11.28448,48.76941c-16.06598,2.31227 -32.54915,0.68361 -48.77617,1.31593c-68.2437,0.05267 -136.50528,0.51715 -204.74109,-0.43811zm248.30083,-21.61086c12.28671,-12.24121 -10.69217,-18.82494 -18.26138,-24.82121c-34.85875,-20.46407 -69.60597,-41.14412 -104.87569,-60.89026c-41.32713,23.46544 -82.56062,47.16515 -123.11867,71.93832c-8.58788,3.43668 -2.61073,17.17589 5.37386,15.06004c78.53457,-0.16875 157.07672,0.41405 235.60527,-0.42499c1.73874,-0.22235 3.69772,0.07922 5.27661,-0.86191z",
+	"document": "m58.5474,213.36578c-0.05885,-70.73299 -0.11767,-141.466 -0.17652,-212.19898c53.12881,0.81297 106.48294,-1.9259 159.43185,2.08758c25.82027,9.16723 22.09921,66.23434 21.6799,108.85904c-1.13266,32.14426 15.08594,95.86641 -27.03937,105.4444c-21.00172,0.00113 -21.08437,8.97424 -18.9407,25.20605c2.4877,24.31731 -4.73431,78.79115 -39.2352,44.26363l-95.71997,-73.66171zm162.59977,-23.1226c0.08537,-63.57991 -0.62674,-117.82272 -4.15146,-159.71279c-31.317,-14.24883 -73.63496,-7.31453 -109.06839,-7.53106c-13.9288,6.77649 33.0414,29.27771 43.00333,38.00857c37.81908,18.77271 49.10266,52.9127 42.57201,91.49594c0,15.00871 0,30.01746 0,45.02617c6.97418,-0.00844 21.40269,-3.46487 27.64452,-7.28687z",
+	"gift": "m160.05605,46.22016c5.12212,-9.27578 14.49356,-21.35899 -1.60765,-24.27403c-4.48517,-2.30248 -8.9718,-6.3767 -13.45119,-1.83809c-9.96648,3.93713 -18.60622,9.44305 -8.12337,19.74747c4.64861,6.65461 8.87668,21.1743 14.1424,22.77341c3.14276,-5.39672 6.08684,-10.9068 9.03981,-16.40877zm-22.01753,25.61161c-9.14935,-16.32981 -16.51206,-33.84869 -27.71044,-48.91321c-13.62003,-14.54198 -40.45641,-8.05964 -46.55505,10.6975c-8.10131,18.54466 9.37865,40.68638 29.16686,38.36525c15.01618,0.2515 30.1178,0.92769 45.09863,-0.14954zm76.02873,0.55127c19.45964,-2.60851 30.65027,-27.10658 19.57069,-43.3727c-9.81836,-17.35883 -38.06532,-17.96398 -47.9265,-0.32358c-8.53876,14.26143 -15.94994,29.16402 -23.78549,43.81643c17.32285,0.99046 34.80862,0.75943 52.1413,-0.12016zm32.22711,20.88692c6.6339,-5.83724 32.32317,-12.71885 12.86739,-18.26252c-4.81963,-1.36767 -10.43866,-7.64191 -14.77026,-5.92492c-9.40594,11.6946 -23.86844,18.55521 -38.9686,17.83661c-2.95601,0.97167 -18.03316,-1.47781 -13.95946,1.30438c10.65262,6.07415 21.03697,12.6707 32.05554,18.0621c7.71764,-4.11029 15.20781,-8.63805 22.77539,-13.01566zm-151.5623,3.30481c5.67309,-3.30481 11.34617,-6.60963 17.01924,-9.91444c-17.34076,-0.86164 -37.18572,1.63783 -50.29088,-12.30952c-3.69488,-4.13725 -7.23799,-8.87396 -12.35892,-3.66532c-6.13381,4.22582 -25.00066,8.5563 -10.4742,13.71487c12.64928,7.47227 25.20959,15.12685 38.17151,22.0463c6.1765,-2.89648 11.99872,-6.5165 17.93326,-9.87188zm83.14041,36.87479c7.35168,-5.90694 25.15858,-11.53461 25.75348,-17.87329c-16.62141,-9.56481 -32.75868,-20.2142 -50.14796,-28.29874c-5.98431,-2.2704 -10.83618,1.22306 -15.65312,4.25735c-14.24385,8.47255 -28.83041,16.41927 -42.61077,25.63122c18.02219,11.14435 36.26101,21.95917 54.67725,32.43958c9.39328,-5.26857 18.66512,-10.75249 27.98112,-16.15611zm73.75499,18.43738c7.62694,-4.81227 15.25389,-9.62453 22.88087,-14.43683c-0.06244,-16.11785 0.19498,-32.24243 -0.24597,-48.35465c-15.39334,8.58929 -30.56776,17.60745 -45.48607,26.99785c-1.63162,16.62392 -0.80414,33.52276 -0.44952,50.23046c7.87193,-4.6378 15.55261,-9.59819 23.30069,-14.43683zm-178.87355,-10.1545c0.77462,-13.73913 2.44441,-29.40098 -14.12444,-33.4709c-10.46331,-4.88007 -24.96637,-17.38377 -33.02728,-17.25835c-0.25115,15.4809 -0.11823,30.96465 -0.14541,46.44691c15.45605,9.64543 30.63783,19.75522 46.42746,28.8476c1.53102,-7.98021 0.53017,-16.43968 0.86967,-24.56526zm110.68056,53.19621c9.14198,-5.77156 18.28395,-11.54312 27.42593,-17.31468c-0.04233,-16.63979 0.64572,-33.30351 -0.10625,-49.92543c-10.04709,2.88116 -21.5385,11.78691 -32.12366,17.31859c-7.92599,4.64276 -15.85202,9.28555 -23.77802,13.92833c0.1563,17.76723 -0.42728,35.56691 0.57802,53.30783c9.47523,-5.53633 18.69861,-11.49898 28.00397,-17.31464zm-38.32249,-9.33929c0,-8.88464 0,-17.76929 0,-26.6539c-18.35233,-10.72505 -36.64592,-21.55176 -55.0698,-32.1535c-1.01884,16.98993 -0.43661,34.04375 -0.59025,51.06303c18.34824,11.48767 36.50635,23.28906 55.08669,34.3983c0.72301,-8.85316 0.45901,-17.77696 0.57336,-26.65393zm106.97165,35.71599c7.47931,-4.98045 14.95862,-9.96091 22.43796,-14.94136c-0.31207,-15.79037 0.77045,-31.79442 -0.80399,-47.41055c-15.55414,8.87424 -30.56544,18.97736 -45.84236,28.4509c0.367,16.33781 -0.75356,32.86267 0.93411,49.06088c7.89078,-4.84329 15.54118,-10.07089 23.27428,-15.15987zm-179.49486,-8.85234c-0.06088,-8.2791 -0.12183,-16.55821 -0.18272,-24.8373c-15.452,-9.6673 -30.70933,-19.65799 -46.39347,-28.94519c-0.98154,15.8615 -0.42208,31.78482 -0.5697,47.67464c15.58812,10.31845 31.00088,20.91034 46.79801,30.90671c0.60526,-8.24165 0.30488,-16.53903 0.34788,-24.79886zm111.24078,54.40674c9.07924,-6.02985 18.15848,-12.05969 27.23772,-18.08952c-0.02109,-16.81348 0.32051,-33.6342 -0.13127,-50.44193c-18.48172,11.39566 -36.8398,23.00107 -55.0625,34.8063c-2.05943,16.23506 -0.72412,32.97392 -0.72713,49.38643c5.65578,3.44495 20.11658,-11.82266 28.68318,-15.66129zm-38.71758,-7.19754c-1.09789,-11.59346 4.72185,-27.9119 -10.01297,-32.40633c-14.85952,-9.4117 -29.65931,-18.92612 -44.71436,-28.02278c-2.19433,15.91664 0.10065,32.49809 -1.58499,48.60945c18.05386,13.0511 36.5795,25.52769 55.44263,37.37666c1.51289,-8.30347 0.57193,-17.09903 0.86969,-25.55701zm-63.13967,-3.06479c-21.97403,-14.66875 -43.94805,-29.33749 -65.92206,-44.00621c0.02491,-45.26978 -0.60055,-90.55044 0.20291,-135.81172c11.00354,-6.78941 22.71307,-12.35508 34.0373,-18.58421c-7.3143,-20.93821 3.23879,-46.38257 24.44761,-54.21996c17.77897,-7.29492 39.21008,-0.71179 50.54502,14.64528c8.23304,-4.22243 16.4661,-8.44486 24.69915,-12.66729c8.27725,4.26063 16.55455,8.52126 24.83179,12.78188c11.86055,-14.06895 32.18082,-22.09776 49.79013,-14.21312c21.13718,7.42951 32.65843,32.817 25.07826,53.72234c11.40756,6.44052 23.81024,11.47337 34.26968,19.33245c0.46368,45.00166 0.00415,90.00995 -0.0379,135.01437c-43.72298,28.93527 -86.73743,58.97507 -131.17026,86.81018c-12.92032,-0.00348 -24.07242,-14.03217 -36.06157,-19.72c-11.59096,-7.66315 -23.15266,-15.37048 -34.71011,-23.08398z",
+	"globe": "m33.11721,223.16701l233.44794,0.08913l-7.57544,11.19618l-218.20762,-0.26738l-7.66489,-11.01793zm1.60428,-148.93458l230.3285,-0.26738l6.68439,11.48557l-243.78651,0.08913l6.77362,-11.30732zm-22.73061,74.62911l275.61135,-0.26738l-0.35626,11.48558l-275.07684,-0.17825l-0.17825,-11.03995zm275.8395,1.06528c0,76.03723 -61.86858,137.89429 -137.92784,137.89429c-76.0264,0 -137.88345,-61.86824 -137.88345,-137.89429c0,-76.02642 61.86823,-137.88347 137.88345,-137.88347c76.05927,-0.01117 137.92784,61.85705 137.92784,137.88347zm-137.91701,-148.93459c-82.09525,0 -148.90104,66.8058 -148.90104,148.92339c0,82.12878 66.8058,148.93457 148.90104,148.93457c82.13995,0 148.93459,-66.80579 148.93459,-148.93457c0,-82.11759 -66.79463,-148.92339 -148.93459,-148.92339zm41.78581,148.93459c0,81.25211 -22.01353,137.89429 -41.78581,137.89429c-19.74991,0 -41.76309,-56.64218 -41.76309,-137.89429c0,-81.27448 22.00233,-137.88347 41.76309,-137.88347c19.76112,-0.01117 41.78581,56.60899 41.78581,137.88347zm-41.78581,-148.93459c-34.29579,0 -52.80304,76.73613 -52.80304,148.92339c0,72.2093 18.50725,148.93457 52.80304,148.93457c34.29614,0 52.83693,-76.73643 52.83693,-148.93457c-0.01118,-72.18726 -18.54079,-148.92339 -52.83693,-148.92339zm97.86217,148.93459c0,76.03723 -43.91597,137.89429 -97.86217,137.89429c-53.93499,0 -97.82862,-61.86824 -97.82862,-137.89429c0,-76.02642 43.89363,-137.88347 97.82862,-137.88347c53.9462,-0.01117 97.86217,61.85705 97.86217,137.88347zm-97.86217,-148.93459c-60.01537,0 -108.86856,66.8058 -108.86856,148.92339c0,82.12878 48.85319,148.93457 108.86856,148.93457c60.03773,0 108.88008,-66.80579 108.88008,-148.93457c0,-82.11759 -48.84235,-148.92339 -108.88008,-148.92339z",
+	"headphones": "m262.24301,276.32291c0,3.88873 -3.15054,7.03928 -7.03929,7.03928h-45.07771c-3.88873,0 -7.03928,-3.15054 -7.03928,-7.03928v-95.76917c0,-3.88843 3.15054,-7.03928 7.03928,-7.03928h45.07771c3.88875,0 7.03929,3.15085 7.03929,7.03928v95.76917zm-166.89014,0c0,3.88873 -3.15116,7.03928 -7.03929,7.03928h-45.07832c-3.88813,0 -7.03928,-3.15054 -7.03928,-7.03928v-95.76917c0,-3.88843 3.15115,-7.03928 7.03928,-7.03928h45.07832c3.88813,0 7.03929,3.15085 7.03929,7.03928v95.76917zm54.45998,-259.68797c-81.57039,0 -147.78664,65.61743 -148.80356,146.9389h25.82451c0.83739,-67.21309 55.56696,-121.44394 122.97905,-121.44394c67.41208,0 122.14168,54.23085 122.96928,121.44394h25.82391c-1.00656,-81.32147 -67.24229,-146.9389 -148.7932,-146.9389zm-148.59421,221.43015h25.35591v-74.64095h-25.35591v74.64095zm271.35417,-74.651v74.64127h26.29248v-74.64127h-26.29248z",
+	"hippie": "m126.57668,297.48117c-48.56062,-7.34268 -92.01251,-39.97321 -112.69057,-84.50511c-24.94552,-52.66977 -15.84542,-119.75688 23.8283,-162.85019c38.79855,-45.4432 106.09586,-61.79809 161.96931,-41.65034c58.35461,19.93039 100.52045,79.22475 99.29117,141.02438c1.2113,60.65196 -39.29578,118.84778 -96.0322,139.80408c-24.24886,9.49326 -50.68127,11.39462 -76.36598,8.17719zm8.7399,-92.17508c-0.08942,-7.31126 -0.17882,-14.62254 -0.26825,-21.93381c-20.52584,20.53458 -41.05166,41.06917 -61.57751,61.60378c17.64819,14.10371 39.22342,22.83827 61.57751,25.75548c0.29533,-21.80725 0.53749,-43.61626 0.26825,-65.42545zm48.5128,61.24323c14.52351,-4.28751 28.46933,-11.11562 40.24649,-20.66127c-9.32077,-13.4882 -22.68102,-24.26074 -33.95442,-36.33005c-8.88936,-8.88591 -17.77875,-17.77179 -26.66811,-26.6577c0,29.29706 0,58.59412 0,87.89117c6.88846,-0.91629 13.69307,-2.3291 20.37604,-4.24216zm-48.28273,-180.43147c0,-19.30317 0,-38.60634 0,-57.90951c-51.85052,5.59066 -97.82003,47.52976 -105.87597,99.4242c-5.92087,34.10992 2.2166,70.93011 24.35439,97.89821c27.17386,-27.16779 54.34772,-54.33559 81.52158,-81.50337c0,-19.30317 0,-38.60635 0,-57.90952zm116.00552,130.27736c29.94273,-44.68748 25.57903,-109.31516 -11.64191,-148.59046c-19.65836,-21.7875 -47.20416,-36.42821 -76.45694,-39.59642c0,38.6003 0,77.20061 0,115.80091c26.61343,26.23764 52.37032,53.38443 79.88922,78.67319c3.85712,4.56624 5.79269,-4.75352 8.20963,-6.28722z",
+	"keep_up": "m79,1l-21.3,35.5l-21.3,35.5l19.88,0l0,184.60001l45.44,0l0,-184.60001l19.88,0l-21.3,-35.5l-21.3,-35.5zm142.00002,0l-21.30002,35.5l-21.29999,35.5l19.88,0l0,184.60001l45.43999,0l0,-184.60001l19.88,0l-21.3,-35.5l-21.29999,-35.5zm-213.00002,269.80002l0,28.39999l284,0l0,-28.39999l-284,0z",
+	"officer_2": "m144.87212,278.09424c0,-7.03476 0,-14.06952 0,-21.10431c34.12148,-0.13669 68.24295,-0.27335 102.36444,-0.41003c0,-6.63841 0,-13.27682 0,-19.91524c-26.94872,-0.26555 -53.89742,-0.53107 -80.84613,-0.79662c30.82893,-41.42374 61.65785,-82.8475 92.48683,-124.27124c13.28885,-1.73074 25.24835,9.13577 26.16702,22.30508c1.37796,55.08076 0.61356,110.19873 0.82785,165.29666c-46.99997,0 -94,0 -141.00003,0c0.00002,-7.03473 0,-14.06952 0.00002,-21.10431zm-0.19199,-87.83214c-0.06876,-13.74153 -0.13754,-27.48306 -0.20631,-41.22459c-14.64618,18.8075 -27.62093,39.06267 -43.91019,56.48129c-14.42976,9.56055 -27.65941,-6.01018 -38.58159,-13.69254c-15.26907,-12.11603 -30.9411,-23.83286 -45.24117,-37.08727c-8.74276,-13.13181 5.83314,-31.80238 20.70509,-26.84245c13.32168,6.5739 23.96796,17.78835 36.01906,26.44797c7.16664,7.87663 15.75377,12.89487 20.74445,-0.10861c10.61151,-12.96709 19.11472,-28.05023 32.18712,-38.75249c13.16731,-7.35264 29.1156,-2.93422 43.48628,-4.27982c21.93321,0.06611 43.87927,-0.19524 65.80286,0.42785c-29.83961,40.18141 -59.99303,80.13989 -90.45013,119.85524c-0.51442,-13.73006 -0.41658,-27.48491 -0.55545,-41.22459zm49.58183,-93.47518c-17.8813,-2.9394 -31.59131,-19.77306 -31.46613,-37.7664c-6.28482,-0.26553 -12.56969,-0.53107 -18.85452,-0.79661c5.37549,-6.77119 10.75095,-13.54238 16.12643,-20.31357c26.79919,0 53.59842,0 80.39761,0c-0.07553,16.83184 2.11966,36.40314 -12.31944,48.47567c-8.59595,8.79105 -21.9399,12.10719 -33.88396,10.40091zm-44.65282,-80.96436c-3.48923,-6.17941 -15.89734,-17.4112 -0.91945,-14.28427c30.58981,-0.43799 61.18378,-0.21775 91.77567,-0.27203c0,9.29378 0,18.58757 0,27.88137c-27.24594,0 -54.49188,0 -81.73782,0c-3.03946,-4.44169 -6.07892,-8.88338 -9.11839,-13.32506z",
+	"officer": "m127.65893,298.12302c-11.91827,-4.4541 -8.85096,-18.47458 -9.45842,-28.44775c-0.14007,-38.77051 -0.03694,-77.54163 -0.06789,-116.31239c21.30015,-0.31718 42.6003,-0.76093 63.90377,-0.70047c-0.02318,44.52536 0.58119,89.061 -0.14537,133.57832c-0.57059,11.93384 -13.89935,13.46393 -23.22325,12.30963c-10.33765,0.00372 -20.67488,-0.15573 -31.00884,-0.42734zm-30.7055,-116.03563c-6.74483,-0.72377 -12.32703,-17.61749 -4.40458,-17.57693c6.23801,-0.08125 12.47601,-0.16251 18.71403,-0.24377c1.007,8.20691 -1.59957,19.89343 -12.37878,18.21895l-1.93067,-0.39824l0,0zm99.85623,-0.00661c-6.98207,-0.87273 -10.75342,-15.40816 -5.67188,-17.55357c6.66685,-0.08684 13.33371,-0.17369 20.00055,-0.26053c1.00876,8.20958 -1.60458,19.90276 -12.38809,18.21675l-1.94055,-0.40263c0,0 -0.00003,0 -0.00003,0zm-107.61794,-56.49044c0.54922,-13.57674 -1.08583,-27.43726 1.69075,-40.79832c4.06557,-10.40357 13.92722,-19.77089 25.33163,-20.63995c23.60493,0.19927 47.27207,-1.00478 70.82676,0.54259c14.04367,3.09693 25.24931,16.9698 23.91605,31.57756c0.32544,21.70094 0.15948,43.40639 0.24002,65.10946c-7.41772,0.09508 -14.83545,0.19016 -22.25314,0.28525c0,-19.53377 0,-39.06755 0,-58.60133c-4.34856,-5.08821 -8.05232,1.74921 -6.5546,6.09985c-0.01697,13.17788 -0.03394,26.35577 -0.05093,39.53365c-21.48996,0 -42.97992,0 -64.46988,0c-0.17615,-15.26811 -0.35229,-30.53623 -0.52844,-45.80434c-4.21338,-4.81828 -7.17517,1.78474 -5.83627,5.79053c-0.07101,17.56546 -0.14203,35.13091 -0.21304,52.69639c-7.42339,0.09512 -14.84679,0.19028 -22.27019,0.28539c0.0571,-12.02556 0.11414,-24.05119 0.17128,-36.07671zm56.41985,-70.72921c-11.43472,-2.06434 -20.27027,-12.69278 -20.54277,-24.26873c16.53569,0 33.07137,0 49.60706,0c0.58516,15.06838 -14.48488,27.02206 -29.06429,24.26873zm-25.62941,-33.78068c2.8164,-2.81977 5.23412,-6.59949 9.76779,-5.28442c14.97531,0 29.95061,0 44.9259,0c-0.48174,3.25565 0.91423,8.389 -0.64331,10.56883c-19.77167,0 -39.54332,0 -59.31499,0c1.75487,-1.76147 3.50974,-3.52295 5.26459,-5.28442zm18.8918,-9.34585c-4.62387,-0.06122 -9.24773,-0.12243 -13.8716,-0.18365c0.48279,-3.24875 -0.91532,-8.37839 0.64332,-10.55128c16.34338,0 32.6868,0 49.0302,0c-0.48172,3.25588 0.91423,8.38858 -0.64331,10.56913c-11.722,-0.07703 -23.43608,0.45157 -35.1586,0.1658zm24.67688,286.6952c-6.54985,-2.25 -11.37944,-9.11417 -10.08943,-16.07803c-0.23178,-33.13365 0.30627,-66.28789 -0.62375,-99.40492c-7.52885,-8.41364 -5.32481,11.97667 -5.61325,16.63527c-0.40672,29.85049 0.65932,59.77377 -0.79054,89.57779c-1.03221,6.81601 -14.93086,10.39682 -2.36958,9.16388c6.49333,0.08212 12.9946,0.3678 19.48656,0.10602z",
+	"recycle_2": "m70.51852,115.61727c18.49814,35.46731 22.10944,46.23824 15.99329,47.70097c-11.94749,2.85741 -9.54662,19.19937 7.17589,48.84396c20.97182,37.17758 62.04919,60.008 100.6335,55.93118c14.9762,-1.5824 31.90746,-4.84808 37.62502,-7.25717c5.71753,-2.40912 2.20903,2.0788 -7.79668,9.97308c-50.05432,39.49167 -111.87362,36.74075 -161.19199,-7.17288c-19.66416,-17.50925 -46.71899,-68.66641 -46.71899,-88.33963c0,-5.57329 -4.46041,-10.97359 -9.91201,-12.0006c-8.91546,-1.67957 -7.71816,-6.10193 11.90882,-43.98632c12.00147,-23.16548 23.29887,-43.78072 25.10535,-45.81163c1.80651,-2.03091 14.03651,16.92264 27.17781,42.11903zm159.00744,68.37661c-18.49815,-35.4673 -22.10944,-46.23827 -15.99332,-47.70097c11.94749,-2.85736 9.54663,-19.19936 -7.17586,-48.84396c-20.97183,-37.17759 -62.04924,-60.00801 -100.63353,-55.9312c-14.9762,1.58238 -31.90743,4.84812 -37.62498,7.25722c-5.71756,2.40907 -2.20905,-2.07883 7.79666,-9.9731c50.05433,-39.49169 111.87363,-36.74079 161.192,7.1729c19.66417,17.50919 46.71898,68.66639 46.71898,88.33957c0,5.57333 4.46045,10.97359 9.91199,12.0006c8.9155,1.6796 7.71817,6.10193 -11.90878,43.98634c-12.00146,23.16545 -23.29889,43.7807 -25.10535,45.81163c-1.80652,2.03091 -14.03651,-16.92262 -27.17781,-42.11902z",
+	"shield_1": "m235.43118,0.99993c-25.8405,20.89055 -61.5569,21.09333 -87.59367,0.62283c-25.04173,19.6952 -59.05148,20.25899 -84.60652,1.69064l-45.9514,49.35802c28.26655,30.91131 28.10226,80.57548 -0.48303,111.27486c-3.79379,10.48137 -5.78214,9.97594 -6.19602,20.53111c-0.97335,25.41245 4.72666,49.11902 22.58091,66.97356c15.9491,15.9491 37.5927,22.71344 58.38308,20.29993c34.71738,1.92664 51.36115,18.07672 58.34494,27.73621c9.4303,-10.32108 24.09528,-26.91339 68.66653,-28.98181c26.60716,-4.12497 36.22241,-10.78885 48.70973,-23.10918c16.80759,-16.80759 22.6846,-38.091 22.18927,-61.73892c-0.20569,-9.81746 -1.32416,-13.23065 -6.84674,-25.76584c-28.71786,-30.84172 -28.73875,-80.82797 -0.07623,-111.70699l-47.12085,-47.18442z",
+	"smoking": "m1.00013,234.70761c0,-6.75858 0,-13.51718 0,-20.27576c85.15819,0 170.31638,0 255.47457,0c0,13.51718 0,27.03435 0,40.55151c-85.15819,0 -170.31638,0 -255.47457,0c0,-6.75858 0,-13.51717 0,-20.27576zm262.90899,-0.33792c0,-6.87125 0,-13.74248 0,-20.61369c4.50577,0 9.01147,0 13.51718,0c0,13.74245 0,27.48491 0,41.22737c-4.50571,0 -9.01141,0 -13.51718,0c0,-6.87125 0,-13.74246 0,-20.61368zm21.62747,0c0,-6.87125 0,-13.74248 0,-20.61369c4.50574,0 9.01147,0 13.51718,0c0,13.74245 0,27.48491 0,41.22737c-4.50571,0 -9.01144,0 -13.51718,0c0,-6.87125 0,-13.74246 0,-20.61368zm-21.62747,-38.40129c2.33044,-12.44823 -4.64667,-27.35672 -18.89619,-26.91631c-16.51076,-0.91339 -33.27669,-0.16469 -49.68698,-1.22891c-15.92004,-5.44565 -24.6412,-22.87308 -22.39098,-39.09009c-2.60393,-4.6821 -13.75305,-3.34301 -18.33653,-8.47466c-22.34129,-12.77989 -25.34413,-47.04951 -6.6355,-64.35941c6.55362,-6.74706 19.10332,-12.28213 27.40872,-10.56472c0,4.27357 0,8.54715 0,12.82071c-17.16693,0.19163 -30.20795,18.71787 -25.17886,34.95034c3.93155,16.28817 21.44681,21.17548 36.06943,21.4035c9.34369,7.54165 -5.73552,20.54516 2.38481,30.40595c5.4973,13.38734 21.79352,9.01994 33.15524,10.07909c16.32292,0.98282 36.22006,-2.88133 48.06549,11.43753c10.15674,11.08647 7.03754,26.81902 7.55853,40.56599c-4.50571,0 -9.01141,0 -13.51718,0c0,-3.67633 0,-7.35268 0,-11.02902zm21.44409,-5.02264c1.06424,-17.34164 -3.94,-36.41237 -18.82684,-46.85637c-14.2328,-10.82034 -32.68178,-7.49533 -49.35545,-8.05716c-10.44089,-9.26265 6.69904,-19.729 4.85689,-30.88184c1.16321,-14.61189 -8.86084,-28.86267 -23.32887,-32.0012c-8.26547,0.48857 -11.4507,-1.71243 -9.8101,-9.54141c-2.56769,-10.66179 12.99852,-3.08173 18.15088,-2.147c18.80948,6.74871 31.28568,27.05275 28.30017,46.93802c-0.48553,7.00495 -7.28169,16.99163 4.77028,14.2243c23.42943,-1.23563 45.83046,13.98601 54.11491,35.81352c6.09546,15.43478 4.5502,32.30844 4.8287,48.56076c-4.44968,0 -8.89935,0 -13.34903,0c-0.11716,-5.35051 -0.23438,-10.70122 -0.35153,-16.05162z",
+	"stairs": "m2.18934,245.58681c17.86729,-0.11601 35.73457,-0.23204 53.60186,-0.34804c0.11764,-18.34987 0.23526,-36.69974 0.35289,-55.04959c17.78193,0 35.56387,0 53.34581,0c0,-18.46245 0,-36.9249 0,-55.38734c18.2373,0 36.47458,0 54.71188,0c0,-18.01214 0,-36.02428 0,-54.03642c18.01213,0 36.02426,0 54.03641,0c0,-18.01213 0,-36.02428 0,-54.03642c26.79306,0 53.58612,0 80.37918,0c0,9.00607 0,18.01214 0,27.01821c-17.78702,0 -35.57397,0 -53.36099,0c0,18.23729 0,36.47458 0,54.71188c-18.01212,0 -36.02425,0 -54.03641,0c0,18.2373 0,36.47459 0,54.71188c-18.01215,0 -36.02426,0 -54.03641,0c0,18.23729 0,36.47459 0,54.71185c-18.2373,0 -36.47459,0 -54.71187,0c0,18.46246 0,36.9249 0,55.38733c-27.01822,0 -54.03642,0 -81.05463,0c1.20448,-8.94977 -2.05336,-19.04163 0.77228,-27.68333z",
+	"umbrella": "m138.31999,1l0,29.565c-75.13835,4.16908 -134.31995,48.17229 -134.31999,101.835c0,-9.67107 16.35202,-17.51999 36.5,-17.51999c20.14798,0 36.5,7.84892 36.5,17.51999c0,-9.67107 16.35202,-17.51999 36.5,-17.51999c9.59525,0 18.30284,1.83565 24.81999,4.745l0,144.17499c0,6.44742 -5.23262,11.68002 -11.67999,11.68002c-6.44734,0 -11.68,-5.2326 -11.68,-11.68002l0,-5.84l-23.36,0l0,5.84c0,19.34207 15.6979,35.04001 35.04,35.04001c19.34206,0 35.04001,-15.69794 35.04001,-35.04001l0,-144.17499c6.51714,-2.90935 15.22475,-4.745 24.81999,-4.745c20.14798,0 36.5,7.84892 36.5,17.51999c0,-9.67107 16.35202,-17.51999 36.5,-17.51999c20.14798,0 36.5,7.84892 36.5,17.51999c0,-53.66274 -59.18159,-97.66592 -134.31999,-101.835l0,-29.565l-23.36002,0z",
+	"yin_yang": "m152.3828,1.00127c40.96666,0 74.20116,33.2665 74.20116,74.23316c0,40.96668 -33.2345,74.20117 -74.20116,74.20117c-40.96668,0 -74.20118,33.26653 -74.20118,74.23318c0,40.96667 33.2345,74.20117 74.20118,74.20117c81.93332,0 148.43431,-66.50104 148.43431,-148.43436c0,-81.93333 -66.50099,-148.43433 -148.43431,-148.43433zm0,51.0353c-12.80867,0 -23.19788,10.38917 -23.19788,23.19786c0,12.80871 10.38918,23.19786 23.19788,23.19786c12.80869,0 23.19785,-10.38917 23.19785,-23.19786c0,-12.80869 -10.38916,-23.19786 -23.19785,-23.19786zm0,148.43436c12.80206,0 23.19785,10.39577 23.19785,23.19786c0,12.80206 -10.39578,23.19788 -23.19785,23.19788c-12.80208,0 -23.19788,-10.39581 -23.19788,-23.19788c0,-12.80206 10.3958,-23.19786 23.19788,-23.19786zm145.10503,-50.94075c0,81.87245 -66.37071,148.24319 -148.24321,148.24319c-81.87246,0 -148.24321,-66.37074 -148.24321,-148.24319c0,-81.87248 66.37075,-148.24324 148.24321,-148.24324c81.8725,0 148.24321,66.37076 148.24321,148.24324z",
+	"hand_stop": "m136.25574,297.49808c-29.33714,-5.08954 -54.45634,-27.86633 -62.06976,-56.71431c-3.62096,-14.72525 -1.50079,-30.17319 -2.21442,-45.21799c-0.13461,-38.62221 -0.20337,-77.24464 -0.30453,-115.86696c3.44471,-11.98872 17.98409,-18.29414 29.04424,-12.36688c0.96214,-3.14931 0.25692,-8.79729 0.59418,-12.8885c-1.96137,-11.24498 6.05913,-22.68389 17.70836,-23.44487c6.68523,-0.04347 14.68906,5.03699 11.64235,-6.21321c-2.06573,-11.58701 7.02885,-24.78486 19.46753,-23.71677c11.8866,-1.10308 20.91313,10.99307 19.47894,22.20545c0.55293,6.69356 15.04739,-4.38583 20.11427,3.0555c6.46245,3.83537 10.88301,11.15349 9.66263,18.71955c0.37462,20.72639 -0.50464,41.58417 0.94255,62.21075c10.62856,-5.38028 25.7729,1.23052 27.94981,13.06696c-0.24077,36.77421 0.61372,73.57438 -0.64664,110.32743c-4.27835,37.80429 -40.23309,69.77301 -78.61711,67.50256c-4.25351,0.01132 -8.54422,0.05313 -12.75241,-0.65872zm26.24695,-10.04156c32.22029,-5.44516 57.56776,-36.59567 55.75252,-69.35173c0.24638,-31.65953 1.24834,-63.36566 0.07516,-95.00381c-0.74966,-11.56753 -19.92574,-8.76712 -18.68594,1.90652c-0.00584,23.46449 -0.01172,46.92897 -0.01762,70.39346c-5.97046,6.15695 -16.65688,2.44864 -23.81619,7.45261c-15.91585,6.94403 -26.02902,23.94809 -26.37592,41.0688c-8.5842,13.31046 -12.47054,-8.35147 -7.54663,-15.48785c5.69263,-21.52615 25.72418,-37.58736 47.72688,-39.6965c-0.18001,-49.52237 0.46608,-99.06258 -0.57811,-148.57061c-6.22968,-14.02401 -23.68619,-1.72364 -19.04016,10.55674c-0.45773,37.44105 -0.04761,74.89084 -0.68825,112.32923c-4.16106,6.65674 -12.04573,0.3437 -9.47389,-5.79948c-0.17776,-46.90031 -0.35556,-93.80062 -0.53333,-140.70093c-3.33864,-8.28292 -18.12991,-6.98883 -18.3627,2.10197c-0.18286,48.40011 -0.36572,96.80021 -0.5486,145.20032c-3.89212,5.48285 -11.88664,0.71593 -9.73376,-5.26897c-0.14377,-36.45805 0.40013,-72.93186 -0.55034,-109.37686c-0.24316,-10.84745 -18.40633,-10.5788 -18.64873,-0.51889c-0.36327,37.37112 0.09734,74.76224 -0.99649,112.11712c1.02982,9.51479 -12.37218,4.97615 -9.28424,-2.22137c-0.16375,-25.39479 0.44627,-50.81747 -0.58949,-76.18918c-6.1088,-15.65501 -24.37704,-2.73073 -19.28278,10.2811c0.06127,45.03139 -0.41048,90.08521 0.72834,135.10263c2.79378,34.58762 36.09247,63.06729 70.73276,60.79437c3.26721,-0.13614 6.52469,-0.50925 9.73752,-1.11868z",
+    "sign_no": "m0.99794,149.99951l0,0c0,-82.29002 66.70967,-148.99969 148.99992,-148.99969l0,0c39.51779,0 77.41692,15.69819 105.35898,43.64116c27.94318,27.94297 43.64124,65.84185 43.64124,105.35853l0,0c0,82.29103 -66.7092,149.00024 -149.00021,149.00024l0,0c-82.29025,0 -148.99992,-66.70921 -148.99992,-149.00024zm240.6012,66.65504l0,0c32.80489,-45.08388 27.92851,-107.33437 -11.49672,-146.75905c-39.42525,-39.42501 -101.67574,-44.30139 -146.75847,-11.49616l158.25519,158.25521zm-183.20167,-133.30872c-32.80512,45.08364 -27.92886,107.33413 11.49615,146.75825c39.4249,39.42525 101.67541,44.30159 146.75814,11.49672l-158.2543,-158.25497z",
+    "skull": "m74.9404,81.44109c-2.88919,16.35929 -10.26919,31.99403 -10.76614,48.86361c0.66122,9.76746 -5.89156,15.01402 -14.86213,14.8293c-9.64813,10.00099 1.19087,25.80647 12.10749,29.84357c11.14103,7.47832 24.96226,-0.87791 35.99846,5.83044c14.65424,11.4554 20.77205,31.76607 15.71635,49.57211c-5.02672,14.69893 20.70476,9.35306 11.02628,-2.39693c-7.47506,-11.48471 14.09103,-7.68764 8.56998,3.21603c-1.04326,8.75262 6.45616,11.58562 3.11867,20.06531c8.69472,4.98558 -0.72885,7.77708 -6.02475,8.71843c-12.40178,6.18225 2.24324,-11.07452 -7.58144,-16.17874c-8.99694,1.95532 -2.90059,17.02136 -5.98875,15.28125c-6.3575,-4.97824 -6.35281,-23.59047 -17.02285,-11.44621c-3.54128,-14.96387 2.92009,-30.54814 -2.05737,-45.42514c2.03897,-11.11034 -15.50281,-14.9426 -13.28409,-2.05647c0.88449,19.66696 -5.0876,39.29475 -1.66005,58.86481c4.72071,12.07065 17.92378,17.50833 26.2104,26.82291c6.80557,7.18207 15.6284,14.86087 26.22089,12.5997c12.0141,-0.52078 24.05035,-1.63034 36.01024,0.2771c15.04311,0.47446 26.52666,-11.41623 39.36443,-17.5242c15.0918,-11.98355 12.71564,-33.38867 11.21118,-50.43889c-1.84476,-10.52664 2.20334,-21.05807 1.44894,-31.48618c-10.88037,-13.31276 -19.80722,10.08708 -16.70779,20.14043c-0.00076,12.64635 2.42783,28.93701 -9.63577,37.17496c-9.95572,-0.25104 -19.43069,3.36517 -29.4632,1.4744c-8.14081,4.83435 -21.32692,4.71021 -24.01404,-6.79811c-1.07281,-10.22015 3.55807,-20.93494 -2.73401,-30.47318c5.52835,4.7614 15.17361,-4.11226 9.79822,6.56248c-6.55643,8.68922 5.55173,22.07874 10.10989,9.25331c1.51227,-8.60512 -6.54141,-20.02596 6.69714,-18.18237c2.6998,3.03528 -9.21959,24.26701 7.07346,18.90152c11.61606,-2.54445 -2.06659,-20.76607 13.66382,-20.82939c7.61295,-8.9626 5.56317,-25.76184 17.20825,-32.56114c12.98419,-8.78706 33.2569,-2.44315 42.52423,-17.32399c7.89911,-7.61507 4.18182,-28.72154 -9.44128,-21.72794c-17.02448,1.65962 -3.51318,-23.0582 -3.98819,-32.32024c4.01126,-8.06691 -4.87137,-25.04774 -1.81268,-26.84933c5.77948,8.84253 7.84946,19.18484 6.60651,29.51878c-0.10681,8.76352 -3.8233,32.51385 8.36014,17.87288c4.12442,-10.20347 2.92487,-21.76073 5.86331,-32.37626c5.66748,-22.91865 -4.48026,-45.85004 -15.79309,-65.262c-9.63495,-10.45038 -21.86679,-18.78104 -33.35342,-26.98327c-19.32092,-7.26658 -40.65421,-8.56836 -61.06006,-6.74718c-18.04979,3.12863 -37.13738,6.42709 -51.51633,18.73374c-14.01352,8.25707 -27.43441,19.22373 -32.97453,35.08961c-4.82798,12.78156 -13.28239,25.798 -9.43994,39.99647c3.67479,11.83601 1.72576,24.12813 2.32075,36.22574c6.26442,13.82637 12.1788,-7.07504 11.59255,-13.98853c0.3468,-13.11021 7.26362,-24.71465 12.36033,-36.35318zm115.06042,28.12622c12.88235,0.92311 29.19336,8.09689 29.54492,23.0528c1.95883,15.00865 -10.16846,29.55684 -25.7099,28.08501c-14.11661,-1.15955 -23.14499,-13.35332 -22.20761,-27.06258c-4.7262,-9.82969 2.6286,-20.35741 12.49942,-22.61709c1.91415,-0.64365 3.88168,-1.12543 5.87317,-1.45815zm-86.93419,1.27835c14.94448,-2.65778 31.94749,6.61306 31.99739,23.15527c1.40359,15.99194 -15.57494,19.12508 -27.15695,23.1313c-8.01422,5.17467 -16.3391,0.35667 -22.99829,-4.85698c-8.63997,-9.0434 -6.10048,-27.26721 3.02245,-35.52229c4.42388,-3.27404 9.90028,-4.56108 15.1354,-5.9073zm51.1378,42.18812c7.2348,9.94383 15.92023,25.10751 6.56407,36.39339c-8.30571,6.66107 -9.35284,-9.47466 -18.07048,-1.8754c-8.17816,-7.1624 -0.63536,-21.73717 5.10291,-29.01329c1.8913,-2.09525 4.05559,-3.93987 6.4035,-5.5047z",
+    "raph_flag": "m240.17992,78.9644c1.22598,-4.74799 1.33473,-12.52493 0.24789,-17.29984l-3.59653,-15.765c-1.08669,-4.77488 -5.91939,-9.3663 -10.74547,-10.20189l-33.14604,-5.72574c-4.82259,-0.83558 -12.72205,-0.80831 -17.53783,0.06101l-35.90382,6.46623c-4.82602,0.8693 -12.72192,0.95758 -17.56489,0.20381l-35.12959,-5.47475c0.04414,0.16981 0.12224,0.31943 0.15971,0.48924l24.04452,114.23236l11.00362,1.90157c4.82584,0.83569 12.71503,0.80153 17.54104,-0.06088l35.89362,-6.47302c4.81578,-0.86253 12.72198,-0.95078 17.56494,-0.19707l38.54257,6.01137c4.84297,0.75369 8.06601,-2.56096 7.18282,-7.38327l-4.31631,-23.36539c-0.88985,-4.81586 -0.61493,-12.63371 0.60435,-17.38171l5.1554,-20.03702zm-172.47275,-52.27992c-4.81902,1.01868 -7.89938,5.72567 -6.88394,10.53465l51.30882,243.74065l18.18635,0l-52.06276,-247.38807c-1.03241,-4.82942 -5.7429,-7.90624 -10.54846,-6.88723z"
+	}
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/ui.json
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/ui.json	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/ui.json	(revision 29468)
@@ -0,0 +1,57 @@
+{"size": 32,
+"fill": true,
+"data": {
+  "raph_star": "M15.999,22.77l-8.884,6.454l3.396-10.44l-8.882-6.454l10.979,0.002l2.918-8.977l0.476-1.458l3.39,10.433h10.982l-8.886,6.454l3.397,10.443L15.999,22.77L15.999,22.77z",
+  "raph_star2": "M30.373,12.329H19.391l-3.39-10.433l-0.476,1.458l-2.918,8.977L1.628,12.329l8.882,6.454l-3.396,10.44l8.884-6.454l8.886,6.457l-3.397-10.443L30.373,12.329z M17.175,21.151L16,20.298l-1.175,0.854l-3.902,2.834l1.49-4.584l0.45-1.382l-1.177-0.855l-3.9-2.834h6.275l0.45-1.381L16,8.366l1.489,4.581l0.449,1.381h6.281l-3.906,2.836l-1.178,0.854l0.449,1.384l1.493,4.584L17.175,21.151z",
+
+  "raph_page": "M23.024,5.673c-1.744-1.694-3.625-3.051-5.168-3.236c-0.084-0.012-0.171-0.019-0.263-0.021H7.438c-0.162,0-0.322,0.063-0.436,0.18C6.889,2.71,6.822,2.87,6.822,3.033v25.75c0,0.162,0.063,0.317,0.18,0.435c0.117,0.116,0.271,0.179,0.436,0.179h18.364c0.162,0,0.317-0.062,0.434-0.179c0.117-0.117,0.182-0.272,0.182-0.435V11.648C26.382,9.659,24.824,7.49,23.024,5.673zM25.184,28.164H8.052V3.646h9.542v0.002c0.416-0.025,0.775,0.386,1.05,1.326c0.25,0.895,0.313,2.062,0.312,2.871c0.002,0.593-0.027,0.991-0.027,0.991l-0.049,0.652l0.656,0.007c0.003,0,1.516,0.018,3,0.355c1.426,0.308,2.541,0.922,2.645,1.617c0.004,0.062,0.005,0.124,0.004,0.182V28.164z",
+  "raph_page2": "M23.024,5.673c-1.744-1.694-3.625-3.051-5.168-3.236c-0.084-0.012-0.171-0.019-0.263-0.021H7.438c-0.162,0-0.322,0.063-0.436,0.18C6.889,2.71,6.822,2.87,6.822,3.033v25.75c0,0.162,0.063,0.317,0.18,0.435c0.117,0.116,0.271,0.179,0.436,0.179h18.364c0.162,0,0.317-0.062,0.434-0.179c0.117-0.117,0.182-0.272,0.182-0.435V11.648C26.382,9.659,24.824,7.49,23.024,5.673zM22.157,6.545c0.805,0.786,1.529,1.676,2.069,2.534c-0.468-0.185-0.959-0.322-1.42-0.431c-1.015-0.228-2.008-0.32-2.625-0.357c0.003-0.133,0.004-0.283,0.004-0.446c0-0.869-0.055-2.108-0.356-3.2c-0.003-0.01-0.005-0.02-0.009-0.03C20.584,5.119,21.416,5.788,22.157,6.545zM25.184,28.164H8.052V3.646h9.542v0.002c0.416-0.025,0.775,0.386,1.05,1.326c0.25,0.895,0.313,2.062,0.312,2.871c0.002,0.593-0.027,0.991-0.027,0.991l-0.049,0.652l0.656,0.007c0.003,0,1.516,0.018,3,0.355c1.426,0.308,2.541,0.922,2.645,1.617c0.004,0.062,0.005,0.124,0.004,0.182V28.164z",
+	 "raph_printer": "M24.569,12.125h-2.12c-0.207-1.34-1.247-2.759-2.444-3.967c-1.277-1.24-2.654-2.234-3.784-2.37c-0.062-0.008-0.124-0.014-0.198-0.015H8.594c-0.119,0-0.235,0.047-0.319,0.132c-0.083,0.083-0.132,0.2-0.132,0.32v5.9H6.069c-1.104,0-2,0.896-2,2V23h4.074v2.079c0,0.118,0.046,0.23,0.132,0.318c0.086,0.085,0.199,0.131,0.319,0.131h13.445c0.118,0,0.232-0.046,0.318-0.131s0.138-0.199,0.138-0.318V23h4.074v-8.875C26.569,13.021,25.674,12.125,24.569,12.125zM21.589,24.626H9.043V21.5h12.546V24.626zM21.589,13.921c0-0.03,0-0.063-0.003-0.096c-0.015-0.068-0.062-0.135-0.124-0.2H9.043v-6.95h6.987v0.001c0.305-0.019,0.567,0.282,0.769,0.971c0.183,0.655,0.229,1.509,0.229,2.102c0.001,0.433-0.019,0.725-0.019,0.725l-0.037,0.478l0.48,0.005c0.002,0,1.109,0.014,2.196,0.26c1.044,0.226,1.86,0.675,1.938,1.184c0.003,0.045,0.003,0.091,0.003,0.133V13.921z",
+  "raph_users": "M21.053,20.8c-1.132-0.453-1.584-1.698-1.584-1.698s-0.51,0.282-0.51-0.51s0.51,0.51,1.02-2.548c0,0,1.414-0.397,1.132-3.68h-0.34c0,0,0.849-3.51,0-4.699c-0.85-1.189-1.189-1.981-3.058-2.548s-1.188-0.454-2.547-0.396c-1.359,0.057-2.492,0.792-2.492,1.188c0,0-0.849,0.057-1.188,0.397c-0.34,0.34-0.906,1.924-0.906,2.321s0.283,3.058,0.566,3.624l-0.337,0.113c-0.283,3.283,1.132,3.68,1.132,3.68c0.509,3.058,1.019,1.756,1.019,2.548s-0.51,0.51-0.51,0.51s-0.452,1.245-1.584,1.698c-1.132,0.452-7.416,2.886-7.927,3.396c-0.511,0.511-0.453,2.888-0.453,2.888h26.947c0,0,0.059-2.377-0.452-2.888C28.469,23.686,22.185,21.252,21.053,20.8zM8.583,20.628c-0.099-0.18-0.148-0.31-0.148-0.31s-0.432,0.239-0.432-0.432s0.432,0.432,0.864-2.159c0,0,1.199-0.336,0.959-3.119H9.538c0,0,0.143-0.591,0.237-1.334c-0.004-0.308,0.006-0.636,0.037-0.996l0.038-0.426c-0.021-0.492-0.107-0.939-0.312-1.226C8.818,9.619,8.53,8.947,6.947,8.467c-1.583-0.48-1.008-0.385-2.159-0.336C3.636,8.179,2.676,8.802,2.676,9.139c0,0-0.72,0.048-1.008,0.336c-0.271,0.271-0.705,1.462-0.757,1.885v0.281c0.047,0.653,0.258,2.449,0.469,2.872l-0.286,0.096c-0.239,2.783,0.959,3.119,0.959,3.119c0.432,2.591,0.864,1.488,0.864,2.159s-0.432,0.432-0.432,0.432s-0.383,1.057-1.343,1.439c-0.061,0.024-0.139,0.056-0.232,0.092v5.234h0.575c-0.029-1.278,0.077-2.927,0.746-3.594C2.587,23.135,3.754,22.551,8.583,20.628zM30.913,11.572c-0.04-0.378-0.127-0.715-0.292-0.946c-0.719-1.008-1.008-1.679-2.59-2.159c-1.584-0.48-1.008-0.385-2.16-0.336C24.72,8.179,23.76,8.802,23.76,9.139c0,0-0.719,0.048-1.008,0.336c-0.271,0.272-0.709,1.472-0.758,1.891h0.033l0.08,0.913c0.02,0.231,0.022,0.436,0.027,0.645c0.09,0.666,0.21,1.35,0.33,1.589l-0.286,0.096c-0.239,2.783,0.96,3.119,0.96,3.119c0.432,2.591,0.863,1.488,0.863,2.159s-0.432,0.432-0.432,0.432s-0.053,0.142-0.163,0.338c4.77,1.9,5.927,2.48,6.279,2.834c0.67,0.667,0.775,2.315,0.746,3.594h0.48v-5.306c-0.016-0.006-0.038-0.015-0.052-0.021c-0.959-0.383-1.343-1.439-1.343-1.439s-0.433,0.239-0.433-0.432s0.433,0.432,0.864-2.159c0,0,0.804-0.229,0.963-1.841v-1.227c-0.001-0.018-0.001-0.033-0.003-0.051h-0.289c0,0,0.215-0.89,0.292-1.861V11.572z",
+  "raph_user": "M20.771,12.364c0,0,0.849-3.51,0-4.699c-0.85-1.189-1.189-1.981-3.058-2.548s-1.188-0.454-2.547-0.396c-1.359,0.057-2.492,0.792-2.492,1.188c0,0-0.849,0.057-1.188,0.397c-0.34,0.34-0.906,1.924-0.906,2.321s0.283,3.058,0.566,3.624l-0.337,0.113c-0.283,3.283,1.132,3.68,1.132,3.68c0.509,3.058,1.019,1.756,1.019,2.548s-0.51,0.51-0.51,0.51s-0.452,1.245-1.584,1.698c-1.132,0.452-7.416,2.886-7.927,3.396c-0.511,0.511-0.453,2.888-0.453,2.888h26.947c0,0,0.059-2.377-0.452-2.888c-0.512-0.511-6.796-2.944-7.928-3.396c-1.132-0.453-1.584-1.698-1.584-1.698s-0.51,0.282-0.51-0.51s0.51,0.51,1.02-2.548c0,0,1.414-0.397,1.132-3.68H20.771z",
+  "raph_mail": "M28.516,7.167H3.482l12.517,7.108L28.516,7.167zM16.74,17.303C16.51,17.434,16.255,17.5,16,17.5s-0.51-0.066-0.741-0.197L2.5,10.06v14.773h27V10.06L16.74,17.303z",
+  "raph_picture": "M2.5,4.833v22.334h27V4.833H2.5zM25.25,25.25H6.75V6.75h18.5V25.25zM11.25,14c1.426,0,2.583-1.157,2.583-2.583c0-1.427-1.157-2.583-2.583-2.583c-1.427,0-2.583,1.157-2.583,2.583C8.667,12.843,9.823,14,11.25,14zM24.251,16.25l-4.917-4.917l-6.917,6.917L10.5,16.333l-2.752,2.752v5.165h16.503V16.25z",
+  "raph_home": "M27.812,16l-3.062-3.062V5.625h-2.625v4.688L16,4.188L4.188,16L7,15.933v11.942h17.875V16H27.812zM16,26.167h-5.833v-7H16V26.167zM21.667,23.167h-3.833v-4.042h3.833V23.167z",
+  
+    "raph_view": "M16,8.286C8.454,8.286,2.5,16,2.5,16s5.954,7.715,13.5,7.715c5.771,0,13.5-7.715,13.5-7.715S21.771,8.286,16,8.286zM16,20.807c-2.649,0-4.807-2.157-4.807-4.807s2.158-4.807,4.807-4.807s4.807,2.158,4.807,4.807S18.649,20.807,16,20.807zM16,13.194c-1.549,0-2.806,1.256-2.806,2.806c0,1.55,1.256,2.806,2.806,2.806c1.55,0,2.806-1.256,2.806-2.806C18.806,14.451,17.55,13.194,16,13.194z",
+    "raph_cloud": "M24.345,13.904c0.019-0.195,0.03-0.392,0.03-0.591c0-3.452-2.798-6.25-6.25-6.25c-2.679,0-4.958,1.689-5.847,4.059c-0.589-0.646-1.429-1.059-2.372-1.059c-1.778,0-3.219,1.441-3.219,3.219c0,0.21,0.023,0.415,0.062,0.613c-2.372,0.391-4.187,2.436-4.187,4.918c0,2.762,2.239,5,5,5h15.875c2.762,0,5-2.238,5-5C28.438,16.362,26.672,14.332,24.345,13.904z",
+    "raph_cloud2": "M7.562,24.812c-3.313,0-6-2.687-6-6l0,0c0.002-2.659,1.734-4.899,4.127-5.684l0,0c0.083-2.26,1.937-4.064,4.216-4.066l0,0c0.73,0,1.415,0.19,2.01,0.517l0,0c1.266-2.105,3.57-3.516,6.208-3.517l0,0c3.947,0.002,7.157,3.155,7.248,7.079l0,0c2.362,0.804,4.062,3.034,4.064,5.671l0,0c0,3.313-2.687,6-6,6l0,0H7.562L7.562,24.812zM24.163,14.887c-0.511-0.095-0.864-0.562-0.815-1.079l0,0c0.017-0.171,0.027-0.336,0.027-0.497l0,0c-0.007-2.899-2.352-5.245-5.251-5.249l0,0c-2.249-0.002-4.162,1.418-4.911,3.41l0,0c-0.122,0.323-0.406,0.564-0.748,0.63l0,0c-0.34,0.066-0.694-0.052-0.927-0.309l0,0c-0.416-0.453-0.986-0.731-1.633-0.731l0,0c-1.225,0.002-2.216,0.993-2.22,2.218l0,0c0,0.136,0.017,0.276,0.045,0.424l0,0c0.049,0.266-0.008,0.54-0.163,0.762l0,0c-0.155,0.223-0.392,0.371-0.657,0.414l0,0c-1.9,0.313-3.352,1.949-3.35,3.931l0,0c0.004,2.209,1.792,3.995,4.001,4.001l0,0h15.874c2.209-0.006,3.994-1.792,3.999-4.001l0,0C27.438,16.854,26.024,15.231,24.163,14.887L24.163,14.887",
+    "raph_cloudDown": "M24.345,13.904c0.019-0.195,0.03-0.392,0.03-0.591c0-3.452-2.798-6.25-6.25-6.25c-2.679,0-4.958,1.689-5.847,4.059c-0.589-0.646-1.429-1.059-2.372-1.059c-1.778,0-3.219,1.441-3.219,3.219c0,0.21,0.023,0.415,0.062,0.613c-2.372,0.391-4.187,2.436-4.187,4.918c0,2.762,2.239,5,5,5h3.404l-0.707-0.707c-0.377-0.377-0.585-0.879-0.585-1.413c0-0.533,0.208-1.035,0.585-1.412l0.556-0.557c0.4-0.399,0.937-0.628,1.471-0.628c0.027,0,0.054,0,0.08,0.002v-0.472c0-1.104,0.898-2.002,2-2.002h3.266c1.103,0,2,0.898,2,2.002v0.472c0.027-0.002,0.054-0.002,0.081-0.002c0.533,0,1.07,0.229,1.47,0.63l0.557,0.552c0.78,0.781,0.78,2.05,0,2.828l-0.706,0.707h2.403c2.762,0,5-2.238,5-5C28.438,16.362,26.672,14.332,24.345,13.904z M21.033,20.986l-0.556-0.555c-0.39-0.389-0.964-0.45-1.276-0.137c-0.312,0.312-0.568,0.118-0.568-0.432v-1.238c0-0.55-0.451-1-1-1h-3.265c-0.55,0-1,0.45-1,1v1.238c0,0.55-0.256,0.744-0.569,0.432c-0.312-0.313-0.887-0.252-1.276,0.137l-0.556,0.555c-0.39,0.389-0.39,1.024-0.001,1.413l4.328,4.331c0.194,0.194,0.451,0.291,0.707,0.291s0.512-0.097,0.707-0.291l4.327-4.331C21.424,22.011,21.423,21.375,21.033,20.986z",
+    "raph_cloudUp": "M24.345,13.904c0.019-0.195,0.03-0.392,0.03-0.591c0-3.452-2.798-6.25-6.25-6.25c-2.679,0-4.958,1.689-5.847,4.059c-0.589-0.646-1.429-1.059-2.372-1.059c-1.778,0-3.219,1.441-3.219,3.219c0,0.21,0.023,0.415,0.062,0.613c-2.372,0.391-4.187,2.436-4.187,4.918c0,2.762,2.239,5,5,5h2.312c-0.126-0.266-0.2-0.556-0.2-0.859c0-0.535,0.208-1.04,0.587-1.415l4.325-4.329c0.375-0.377,0.877-0.585,1.413-0.585c0.54,0,1.042,0.21,1.417,0.587l4.323,4.329c0.377,0.373,0.585,0.878,0.585,1.413c0,0.304-0.073,0.594-0.2,0.859h1.312c2.762,0,5-2.238,5-5C28.438,16.362,26.672,14.332,24.345,13.904z M16.706,17.916c-0.193-0.195-0.45-0.291-0.706-0.291s-0.512,0.096-0.707,0.291l-4.327,4.33c-0.39,0.389-0.389,1.025,0.001,1.414l0.556,0.555c0.39,0.389,0.964,0.449,1.276,0.137s0.568-0.119,0.568,0.432v1.238c0,0.549,0.451,1,1,1h3.265c0.551,0,1-0.451,1-1v-1.238c0-0.551,0.256-0.744,0.569-0.432c0.312,0.312,0.887,0.252,1.276-0.137l0.556-0.555c0.39-0.389,0.39-1.025,0.001-1.414L16.706,17.916z",
+    "raph_location": "M16,3.5c-4.142,0-7.5,3.358-7.5,7.5c0,4.143,7.5,18.121,7.5,18.121S23.5,15.143,23.5,11C23.5,6.858,20.143,3.5,16,3.5z M16,14.584c-1.979,0-3.584-1.604-3.584-3.584S14.021,7.416,16,7.416S19.584,9.021,19.584,11S17.979,14.584,16,14.584z",
+    "raph_volume0": "M4.998,12.127v7.896h4.495l6.729,5.526l0.004-18.948l-6.73,5.526H4.998z",
+    "raph_volume1": "M4.998,12.127v7.896h4.495l6.729,5.526l0.004-18.948l-6.73,5.526H4.998z M18.806,11.219c-0.393-0.389-1.024-0.389-1.415,0.002c-0.39,0.391-0.39,1.024,0.002,1.416v-0.002c0.863,0.864,1.395,2.049,1.395,3.366c0,1.316-0.531,2.497-1.393,3.361c-0.394,0.389-0.394,1.022-0.002,1.415c0.195,0.195,0.451,0.293,0.707,0.293c0.257,0,0.513-0.098,0.708-0.293c1.222-1.22,1.98-2.915,1.979-4.776C20.788,14.136,20.027,12.439,18.806,11.219z",
+    "raph_volume2": "M4.998,12.127v7.896h4.495l6.729,5.526l0.004-18.948l-6.73,5.526H4.998z M18.806,11.219c-0.393-0.389-1.024-0.389-1.415,0.002c-0.39,0.391-0.39,1.024,0.002,1.416v-0.002c0.863,0.864,1.395,2.049,1.395,3.366c0,1.316-0.531,2.497-1.393,3.361c-0.394,0.389-0.394,1.022-0.002,1.415c0.195,0.195,0.451,0.293,0.707,0.293c0.257,0,0.513-0.098,0.708-0.293c1.222-1.22,1.98-2.915,1.979-4.776C20.788,14.136,20.027,12.439,18.806,11.219z M21.101,8.925c-0.393-0.391-1.024-0.391-1.413,0c-0.392,0.391-0.392,1.025,0,1.414c1.45,1.451,2.344,3.447,2.344,5.661c0,2.212-0.894,4.207-2.342,5.659c-0.392,0.39-0.392,1.023,0,1.414c0.195,0.195,0.451,0.293,0.708,0.293c0.256,0,0.512-0.098,0.707-0.293c1.808-1.809,2.929-4.315,2.927-7.073C24.033,13.24,22.912,10.732,21.101,8.925z",
+    "raph_volume3": "M4.998,12.127v7.896h4.495l6.729,5.526l0.004-18.948l-6.73,5.526H4.998z M18.806,11.219c-0.393-0.389-1.024-0.389-1.415,0.002c-0.39,0.391-0.39,1.024,0.002,1.416v-0.002c0.863,0.864,1.395,2.049,1.395,3.366c0,1.316-0.531,2.497-1.393,3.361c-0.394,0.389-0.394,1.022-0.002,1.415c0.195,0.195,0.451,0.293,0.707,0.293c0.257,0,0.513-0.098,0.708-0.293c1.222-1.22,1.98-2.915,1.979-4.776C20.788,14.136,20.027,12.439,18.806,11.219z M21.101,8.925c-0.393-0.391-1.024-0.391-1.413,0c-0.392,0.391-0.392,1.025,0,1.414c1.45,1.451,2.344,3.447,2.344,5.661c0,2.212-0.894,4.207-2.342,5.659c-0.392,0.39-0.392,1.023,0,1.414c0.195,0.195,0.451,0.293,0.708,0.293c0.256,0,0.512-0.098,0.707-0.293c1.808-1.809,2.929-4.315,2.927-7.073C24.033,13.24,22.912,10.732,21.101,8.925z M23.28,6.746c-0.393-0.391-1.025-0.389-1.414,0.002c-0.391,0.389-0.391,1.023,0.002,1.413h-0.002c2.009,2.009,3.248,4.773,3.248,7.839c0,3.063-1.239,5.828-3.246,7.838c-0.391,0.39-0.391,1.023,0.002,1.415c0.194,0.194,0.45,0.291,0.706,0.291s0.513-0.098,0.708-0.293c2.363-2.366,3.831-5.643,3.829-9.251C27.115,12.389,25.647,9.111,23.28,6.746z",
+    "raph_key": "M18.386,16.009l0.009-0.006l-0.58-0.912c1.654-2.226,1.876-5.319,0.3-7.8c-2.043-3.213-6.303-4.161-9.516-2.118c-3.212,2.042-4.163,6.302-2.12,9.517c1.528,2.402,4.3,3.537,6.944,3.102l0.424,0.669l0.206,0.045l0.779-0.447l-0.305,1.377l2.483,0.552l-0.296,1.325l1.903,0.424l-0.68,3.06l1.406,0.313l-0.424,1.906l4.135,0.918l0.758-3.392L18.386,16.009z M10.996,8.944c-0.685,0.436-1.593,0.233-2.029-0.452C8.532,7.807,8.733,6.898,9.418,6.463s1.594-0.233,2.028,0.452C11.883,7.6,11.68,8.509,10.996,8.944z",
+    "raph_ruler": "M6.63,21.796l-5.122,5.121h25.743V1.175L6.63,21.796zM18.702,10.48c0.186-0.183,0.48-0.183,0.664,0l1.16,1.159c0.184,0.183,0.186,0.48,0.002,0.663c-0.092,0.091-0.213,0.137-0.332,0.137c-0.121,0-0.24-0.046-0.33-0.137l-1.164-1.159C18.519,10.96,18.519,10.664,18.702,10.48zM17.101,12.084c0.184-0.183,0.48-0.183,0.662,0l2.156,2.154c0.184,0.183,0.184,0.48,0.002,0.661c-0.092,0.092-0.213,0.139-0.334,0.139s-0.24-0.046-0.33-0.137l-2.156-2.154C16.917,12.564,16.917,12.267,17.101,12.084zM15.497,13.685c0.184-0.183,0.48-0.183,0.664,0l1.16,1.161c0.184,0.183,0.182,0.48-0.002,0.663c-0.092,0.092-0.211,0.138-0.33,0.138c-0.121,0-0.24-0.046-0.332-0.138l-1.16-1.16C15.314,14.166,15.314,13.868,15.497,13.685zM13.896,15.288c0.184-0.183,0.48-0.181,0.664,0.002l1.158,1.159c0.183,0.184,0.183,0.48,0,0.663c-0.092,0.092-0.212,0.138-0.332,0.138c-0.119,0-0.24-0.046-0.332-0.138l-1.158-1.161C13.713,15.767,13.713,15.471,13.896,15.288zM12.293,16.892c0.183-0.184,0.479-0.184,0.663,0l2.154,2.153c0.184,0.184,0.184,0.481,0,0.665c-0.092,0.092-0.211,0.138-0.33,0.138c-0.121,0-0.242-0.046-0.334-0.138l-2.153-2.155C12.11,17.371,12.11,17.075,12.293,16.892zM10.302,24.515c-0.091,0.093-0.212,0.139-0.332,0.139c-0.119,0-0.238-0.045-0.33-0.137l-2.154-2.153c-0.184-0.183-0.184-0.479,0-0.663s0.479-0.184,0.662,0l2.154,2.153C10.485,24.036,10.485,24.332,10.302,24.515zM10.912,21.918c-0.093,0.093-0.214,0.139-0.333,0.139c-0.12,0-0.24-0.045-0.33-0.137l-1.162-1.161c-0.184-0.183-0.184-0.479,0-0.66c0.184-0.185,0.48-0.187,0.664-0.003l1.161,1.162C11.095,21.438,11.095,21.735,10.912,21.918zM12.513,20.316c-0.092,0.092-0.211,0.138-0.332,0.138c-0.119,0-0.239-0.046-0.331-0.138l-1.159-1.16c-0.184-0.184-0.184-0.48,0-0.664s0.48-0.182,0.663,0.002l1.159,1.161C12.696,19.838,12.696,20.135,12.513,20.316zM22.25,21.917h-8.67l8.67-8.67V21.917zM22.13,10.7c-0.09,0.092-0.211,0.138-0.33,0.138c-0.121,0-0.242-0.046-0.334-0.138l-1.16-1.159c-0.184-0.183-0.184-0.479,0-0.663c0.182-0.183,0.479-0.183,0.662,0l1.16,1.159C22.312,10.221,22.313,10.517,22.13,10.7zM24.726,10.092c-0.092,0.092-0.213,0.137-0.332,0.137s-0.24-0.045-0.33-0.137l-2.154-2.154c-0.184-0.183-0.184-0.481,0-0.664s0.482-0.181,0.664,0.002l2.154,2.154C24.911,9.613,24.909,9.91,24.726,10.092z",
+    "raph_power": "M21.816,3.999c-0.993-0.481-2.189-0.068-2.673,0.927c-0.482,0.995-0.066,2.191,0.927,2.673c3.115,1.516,5.265,4.705,5.263,8.401c-0.01,5.154-4.18,9.324-9.333,9.333c-5.154-0.01-9.324-4.18-9.334-9.333c-0.002-3.698,2.149-6.89,5.267-8.403c0.995-0.482,1.408-1.678,0.927-2.673c-0.482-0.993-1.676-1.409-2.671-0.927C5.737,6.152,2.667,10.72,2.665,16C2.667,23.364,8.634,29.332,16,29.334c7.365-0.002,13.333-5.97,13.334-13.334C29.332,10.722,26.266,6.157,21.816,3.999z M16,13.833c1.104,0,1.999-0.894,1.999-2V2.499C17.999,1.394,17.104,0.5,16,0.5c-1.106,0-2,0.895-2,1.999v9.333C14,12.938,14.894,13.833,16,13.833z",
+	"raph_lock": "M22.335,12.833V9.999h-0.001C22.333,6.501,19.498,3.666,16,3.666S9.666,6.502,9.666,10h0v2.833H7.375V25h17.25V12.833H22.335zM11.667,10C11.667,10,11.667,10,11.667,10c0-2.39,1.944-4.334,4.333-4.334c2.391,0,4.335,1.944,4.335,4.333c0,0,0,0,0,0v2.834h-8.668V10zx",
+    "raph_unlock": "M20.375,12.833h-2.209V10c0,0,0,0,0-0.001c0-2.389,1.945-4.333,4.334-4.333c2.391,0,4.335,1.944,4.335,4.333c0,0,0,0,0,0v2.834h2V9.999h-0.001c-0.001-3.498-2.836-6.333-6.334-6.333S16.166,6.502,16.166,10v2.833H3.125V25h17.25V12.833z",
+	 "raph_bookmark": "M17.396,1.841L6.076,25.986l7.341-4.566l1.186,8.564l11.32-24.146L17.396,1.841zM19.131,9.234c-0.562-0.264-0.805-0.933-0.541-1.495c0.265-0.562,0.934-0.805,1.496-0.541s0.805,0.934,0.541,1.496S19.694,9.498,19.131,9.234z",
+    "raph_tag": "M14.263,2.826H7.904L2.702,8.028v6.359L18.405,30.09l11.561-11.562L14.263,2.826zM6.495,8.859c-0.619-0.619-0.619-1.622,0-2.24C7.114,6,8.117,6,8.736,6.619c0.62,0.62,0.619,1.621,0,2.241C8.117,9.479,7.114,9.479,6.495,8.859z",
+    "raph_search": "M29.772,26.433l-7.126-7.126c0.96-1.583,1.523-3.435,1.524-5.421C24.169,8.093,19.478,3.401,13.688,3.399C7.897,3.401,3.204,8.093,3.204,13.885c0,5.789,4.693,10.481,10.484,10.481c1.987,0,3.839-0.563,5.422-1.523l7.128,7.127L29.772,26.433zM7.203,13.885c0.006-3.582,2.903-6.478,6.484-6.486c3.579,0.008,6.478,2.904,6.484,6.486c-0.007,3.58-2.905,6.476-6.484,6.484C10.106,20.361,7.209,17.465,7.203,13.885z",
+    "raph_zoomout": "M22.646,19.307c0.96-1.583,1.523-3.435,1.524-5.421C24.169,8.093,19.478,3.401,13.688,3.399C7.897,3.401,3.204,8.093,3.204,13.885c0,5.789,4.693,10.481,10.484,10.481c1.987,0,3.839-0.563,5.422-1.523l7.128,7.127l3.535-3.537L22.646,19.307zM13.688,20.369c-3.582-0.008-6.478-2.904-6.484-6.484c0.006-3.582,2.903-6.478,6.484-6.486c3.579,0.008,6.478,2.904,6.484,6.486C20.165,17.465,17.267,20.361,13.688,20.369zM8.854,11.884v4.001l9.665-0.001v-3.999L8.854,11.884z",
+    "raph_zoomin": "M22.646,19.307c0.96-1.583,1.523-3.435,1.524-5.421C24.169,8.093,19.478,3.401,13.688,3.399C7.897,3.401,3.204,8.093,3.204,13.885c0,5.789,4.693,10.481,10.484,10.481c1.987,0,3.839-0.563,5.422-1.523l7.128,7.127l3.535-3.537L22.646,19.307zM13.688,20.369c-3.582-0.008-6.478-2.904-6.484-6.484c0.006-3.582,2.903-6.478,6.484-6.486c3.579,0.008,6.478,2.904,6.484,6.486C20.165,17.465,17.267,20.361,13.688,20.369zM15.687,9.051h-4v2.833H8.854v4.001h2.833v2.833h4v-2.834h2.832v-3.999h-2.833V9.051z",
+    "raph_cross": "M24.778,21.419 19.276,15.917 24.777,10.415 21.949,7.585 16.447,13.087 10.945,7.585 8.117,10.415 13.618,15.917 8.116,21.419 10.946,24.248 16.447,18.746 21.948,24.248",
+    "raph_check": "M2.379,14.729 5.208,11.899 12.958,19.648 25.877,6.733 28.707,9.561 12.958,25.308",
+	"raph_clip": "M23.898,6.135c-1.571-1.125-3.758-0.764-4.884,0.808l-8.832,12.331c-0.804,1.122-0.546,2.684,0.577,3.488c1.123,0.803,2.684,0.545,3.488-0.578l6.236-8.706l-0.813-0.583l-6.235,8.707h0c-0.483,0.672-1.42,0.828-2.092,0.347c-0.673-0.481-0.827-1.419-0.345-2.093h0l8.831-12.33l0.001-0.001l-0.002-0.001c0.803-1.119,2.369-1.378,3.489-0.576c1.12,0.803,1.379,2.369,0.577,3.489v-0.001l-9.68,13.516l0.001,0.001c-1.124,1.569-3.316,1.931-4.885,0.808c-1.569-1.125-1.93-3.315-0.807-4.885l7.035-9.822l-0.813-0.582l-7.035,9.822c-1.447,2.02-0.982,4.83,1.039,6.277c2.021,1.448,4.831,0.982,6.278-1.037l9.68-13.516C25.83,9.447,25.47,7.261,23.898,6.135zx",
+    "raph_settings": "M16.015,12.03c-2.156,0-3.903,1.747-3.903,3.903c0,2.155,1.747,3.903,3.903,3.903c0.494,0,0.962-0.102,1.397-0.27l0.836,1.285l1.359-0.885l-0.831-1.276c0.705-0.706,1.142-1.681,1.142-2.757C19.918,13.777,18.171,12.03,16.015,12.03zM16,1.466C7.973,1.466,1.466,7.973,1.466,16c0,8.027,6.507,14.534,14.534,14.534c8.027,0,14.534-6.507,14.534-14.534C30.534,7.973,24.027,1.466,16,1.466zM26.174,20.809c-0.241,0.504-0.513,0.99-0.826,1.45L22.19,21.58c-0.481,0.526-1.029,0.994-1.634,1.385l0.119,3.202c-0.507,0.23-1.028,0.421-1.569,0.57l-1.955-2.514c-0.372,0.051-0.75,0.086-1.136,0.086c-0.356,0-0.706-0.029-1.051-0.074l-1.945,2.5c-0.541-0.151-1.065-0.342-1.57-0.569l0.117-3.146c-0.634-0.398-1.208-0.88-1.712-1.427L6.78,22.251c-0.313-0.456-0.583-0.944-0.826-1.448l2.088-2.309c-0.226-0.703-0.354-1.451-0.385-2.223l-2.768-1.464c0.055-0.563,0.165-1.107,0.301-1.643l3.084-0.427c0.29-0.702,0.675-1.352,1.135-1.942L8.227,7.894c0.399-0.389,0.83-0.744,1.283-1.07l2.663,1.672c0.65-0.337,1.349-0.593,2.085-0.75l0.968-3.001c0.278-0.021,0.555-0.042,0.837-0.042c0.282,0,0.56,0.022,0.837,0.042l0.976,3.028c0.72,0.163,1.401,0.416,2.036,0.75l2.704-1.697c0.455,0.326,0.887,0.681,1.285,1.07l-1.216,2.986c0.428,0.564,0.793,1.181,1.068,1.845l3.185,0.441c0.135,0.535,0.247,1.081,0.302,1.643l-2.867,1.516c-0.034,0.726-0.15,1.43-0.355,2.1L26.174,20.809z",
+    "raph_settingsalt": "M16,1.466C7.973,1.466,1.466,7.973,1.466,16c0,8.027,6.507,14.534,14.534,14.534c8.027,0,14.534-6.507,14.534-14.534C30.534,7.973,24.027,1.466,16,1.466zM24.386,14.968c-1.451,1.669-3.706,2.221-5.685,1.586l-7.188,8.266c-0.766,0.88-2.099,0.97-2.979,0.205s-0.973-2.099-0.208-2.979l7.198-8.275c-0.893-1.865-0.657-4.164,0.787-5.824c1.367-1.575,3.453-2.151,5.348-1.674l-2.754,3.212l0.901,2.621l2.722,0.529l2.761-3.22C26.037,11.229,25.762,13.387,24.386,14.968z",
+    "raph_bug": "M28.589,10.903l-5.828,1.612c-0.534-1.419-1.338-2.649-2.311-3.628l3.082-5.44c0.271-0.48,0.104-1.092-0.38-1.365c-0.479-0.271-1.09-0.102-1.36,0.377l-2.924,5.162c-0.604-0.383-1.24-0.689-1.9-0.896c-0.416-1.437-1.652-2.411-3.058-2.562c-0.001-0.004-0.002-0.008-0.003-0.012c-0.061-0.242-0.093-0.46-0.098-0.65c-0.005-0.189,0.012-0.351,0.046-0.479c0.037-0.13,0.079-0.235,0.125-0.317c0.146-0.26,0.34-0.43,0.577-0.509c0.023,0.281,0.142,0.482,0.352,0.601c0.155,0.088,0.336,0.115,0.546,0.086c0.211-0.031,0.376-0.152,0.496-0.363c0.105-0.186,0.127-0.389,0.064-0.607c-0.064-0.219-0.203-0.388-0.414-0.507c-0.154-0.087-0.314-0.131-0.482-0.129c-0.167,0.001-0.327,0.034-0.481,0.097c-0.153,0.063-0.296,0.16-0.429,0.289c-0.132,0.129-0.241,0.271-0.33,0.426c-0.132,0.234-0.216,0.496-0.25,0.783c-0.033,0.286-0.037,0.565-0.009,0.84c0.017,0.16,0.061,0.301,0.094,0.449c-0.375-0.021-0.758,0.002-1.14,0.108c-0.482,0.133-0.913,0.36-1.28,0.653c-0.052-0.172-0.098-0.344-0.18-0.518c-0.116-0.249-0.263-0.486-0.438-0.716c-0.178-0.229-0.384-0.41-0.618-0.543C9.904,3.059,9.737,2.994,9.557,2.951c-0.18-0.043-0.352-0.052-0.516-0.027s-0.318,0.08-0.463,0.164C8.432,3.172,8.318,3.293,8.23,3.445C8.111,3.656,8.08,3.873,8.136,4.092c0.058,0.221,0.181,0.384,0.367,0.49c0.21,0.119,0.415,0.138,0.611,0.056C9.31,4.556,9.451,4.439,9.539,4.283c0.119-0.21,0.118-0.443-0.007-0.695c0.244-0.055,0.497-0.008,0.757,0.141c0.081,0.045,0.171,0.115,0.27,0.208c0.097,0.092,0.193,0.222,0.286,0.388c0.094,0.166,0.179,0.368,0.251,0.608c0.013,0.044,0.023,0.098,0.035,0.146c-0.911,0.828-1.357,2.088-1.098,3.357c-0.582,0.584-1.072,1.27-1.457,2.035l-5.16-2.926c-0.48-0.271-1.092-0.102-1.364,0.377C1.781,8.404,1.95,9.016,2.43,9.289l5.441,3.082c-0.331,1.34-0.387,2.807-0.117,4.297l-5.828,1.613c-0.534,0.147-0.846,0.699-0.698,1.231c0.147,0.53,0.697,0.843,1.231,0.694l5.879-1.627c0.503,1.057,1.363,2.28,2.371,3.443l-3.194,5.639c-0.272,0.481-0.104,1.092,0.378,1.363c0.239,0.137,0.512,0.162,0.758,0.094c0.248-0.068,0.469-0.229,0.604-0.471l2.895-5.109c2.7,2.594,5.684,4.123,5.778,1.053c1.598,2.56,3.451-0.338,4.502-3.976l5.203,2.947c0.24,0.138,0.514,0.162,0.762,0.094c0.246-0.067,0.467-0.229,0.603-0.471c0.272-0.479,0.104-1.091-0.377-1.362l-5.701-3.229c0.291-1.505,0.422-2.983,0.319-4.138l5.886-1.627c0.53-0.147,0.847-0.697,0.696-1.229C29.673,11.068,29.121,10.756,28.589,10.903z",
+    "raph_link": "M15.667,4.601c-1.684,1.685-2.34,3.985-2.025,6.173l3.122-3.122c0.004-0.005,0.014-0.008,0.016-0.012c0.21-0.403,0.464-0.789,0.802-1.126c1.774-1.776,4.651-1.775,6.428,0c1.775,1.773,1.777,4.652,0.002,6.429c-0.34,0.34-0.727,0.593-1.131,0.804c-0.004,0.002-0.006,0.006-0.01,0.01l-3.123,3.123c2.188,0.316,4.492-0.34,6.176-2.023c2.832-2.832,2.83-7.423,0-10.255C23.09,1.77,18.499,1.77,15.667,4.601zM14.557,22.067c-0.209,0.405-0.462,0.791-0.801,1.131c-1.775,1.774-4.656,1.774-6.431,0c-1.775-1.774-1.775-4.653,0-6.43c0.339-0.338,0.725-0.591,1.128-0.8c0.004-0.006,0.005-0.012,0.011-0.016l3.121-3.123c-2.187-0.316-4.489,0.342-6.172,2.024c-2.831,2.831-2.83,7.423,0,10.255c2.833,2.831,7.424,2.831,10.257,0c1.684-1.684,2.342-3.986,2.023-6.175l-3.125,3.123C14.565,22.063,14.561,22.065,14.557,22.067zM9.441,18.885l2.197,2.197c0.537,0.537,1.417,0.537,1.953,0l8.302-8.302c0.539-0.536,0.539-1.417,0.002-1.952l-2.199-2.197c-0.536-0.539-1.416-0.539-1.952-0.002l-8.302,8.303C8.904,17.469,8.904,18.349,9.441,18.885z",
+    "raph_calendar": "M11.758,15.318c0.312-0.3,0.408-0.492,0.408-0.492h0.024c0,0-0.012,0.264-0.012,0.528v5.469h-1.871v1.031h4.87v-1.031H13.33v-7.436h-1.055l-2.027,1.967l0.719,0.744L11.758,15.318zM16.163,21.207c0,0.205,0.024,0.42,0.06,0.647h5.457v-1.031h-4.197c0.023-1.931,4.065-2.362,4.065-5.146c0-1.463-1.114-2.436-2.674-2.436c-1.907,0-2.675,1.607-2.675,1.607l0.875,0.587c0,0,0.6-1.08,1.716-1.08c0.887,0,1.522,0.563,1.522,1.403C20.312,17.754,16.163,18.186,16.163,21.207zM12,3.604h-2v3.335h2V3.604zM23,4.77v3.17h-4V4.77h-6v3.168H9.002V4.77H6.583v21.669h18.833V4.77H23zM24.417,25.438H7.584V10.522h16.833V25.438zM22,3.604h-2v3.335h2V3.604z",
+    "raph_picker": "M22.221,10.853c-0.111-0.414-0.261-0.412,0.221-1.539l1.66-3.519c0.021-0.051,0.2-0.412,0.192-0.946c0.015-0.529-0.313-1.289-1.119-1.642c-1.172-0.555-1.17-0.557-2.344-1.107c-0.784-0.396-1.581-0.171-1.979,0.179c-0.42,0.333-0.584,0.7-0.609,0.75L16.58,6.545c-0.564,1.084-0.655,0.97-1.048,1.147c-0.469,0.129-1.244,0.558-1.785,1.815c-1.108,2.346-1.108,2.346-1.108,2.346l-0.276,0.586l1.17,0.553l-3.599,7.623c-0.38,0.828-0.166,1.436-0.166,2.032c0.01,0.627-0.077,1.509-0.876,3.21l-0.276,0.586l3.517,1.661l0.276-0.585c0.808-1.699,1.431-2.326,1.922-2.717c0.46-0.381,1.066-0.6,1.465-1.42l3.599-7.618l1.172,0.554l0.279-0.589c0,0,0,0,1.105-2.345C22.578,12.166,22.419,11.301,22.221,10.853zM14.623,22.83c-0.156,0.353-0.413,0.439-1.091,0.955c-0.577,0.448-1.264,1.172-2.009,2.6l-1.191-0.562c0.628-1.48,0.75-2.474,0.73-3.203c-0.031-0.851-0.128-1.104,0.045-1.449l3.599-7.621l3.517,1.662L14.623,22.83z",
+    "raph_no": "M16,2.939C9.006,2.942,3.338,8.61,3.335,15.605C3.335,22.6,9.005,28.268,16,28.27c6.994-0.002,12.662-5.67,12.664-12.664C28.663,8.61,22.995,2.939,16,2.939zM25.663,15.605c-0.003,1.943-0.583,3.748-1.569,5.264L10.736,7.513c1.515-0.988,3.32-1.569,5.265-1.573C21.337,5.951,25.654,10.269,25.663,15.605zM6.335,15.605c0.004-1.943,0.584-3.75,1.573-5.266l13.355,13.357c-1.516,0.986-3.32,1.566-5.264,1.569C10.664,25.26,6.346,20.941,6.335,15.605z",
+    "raph_commandline": "M2.021,9.748L2.021,9.748V9.746V9.748zM2.022,9.746l5.771,5.773l-5.772,5.771l2.122,2.123l7.894-7.895L4.143,7.623L2.022,9.746zM12.248,23.269h14.419V20.27H12.248V23.269zM16.583,17.019h10.084V14.02H16.583V17.019zM12.248,7.769v3.001h14.419V7.769H12.248z",
+    "raph_photo": "M24.25,10.25H20.5v-1.5h-9.375v1.5h-3.75c-1.104,0-2,0.896-2,2v10.375c0,1.104,0.896,2,2,2H24.25c1.104,0,2-0.896,2-2V12.25C26.25,11.146,25.354,10.25,24.25,10.25zM15.812,23.499c-3.342,0-6.06-2.719-6.06-6.061c0-3.342,2.718-6.062,6.06-6.062s6.062,2.72,6.062,6.062C21.874,20.78,19.153,23.499,15.812,23.499zM15.812,13.375c-2.244,0-4.062,1.819-4.062,4.062c0,2.244,1.819,4.062,4.062,4.062c2.244,0,4.062-1.818,4.062-4.062C19.875,15.194,18.057,13.375,15.812,13.375z",
+    "export": "M24.086,20.904c-1.805,3.113-5.163,5.212-9.023,5.219c-5.766-0.01-10.427-4.672-10.438-10.435C4.636,9.922,9.297,5.261,15.063,5.25c3.859,0.007,7.216,2.105,9.022,5.218l3.962,2.284l0.143,0.082C26.879,6.784,21.504,2.25,15.063,2.248C7.64,2.25,1.625,8.265,1.624,15.688c0.002,7.42,6.017,13.435,13.439,13.437c6.442-0.002,11.819-4.538,13.127-10.589l-0.141,0.081L24.086,20.904zM28.4,15.688l-7.15-4.129v2.297H10.275v3.661H21.25v2.297L28.4,15.688z",
+    "import": "M15.067,2.25c-5.979,0-11.035,3.91-12.778,9.309h3.213c1.602-3.705,5.271-6.301,9.565-6.309c5.764,0.01,10.428,4.674,10.437,10.437c-0.009,5.764-4.673,10.428-10.437,10.438c-4.294-0.007-7.964-2.605-9.566-6.311H2.289c1.744,5.399,6.799,9.31,12.779,9.312c7.419-0.002,13.437-6.016,13.438-13.438C28.504,8.265,22.486,2.252,15.067,2.25zM10.918,19.813l7.15-4.126l-7.15-4.129v2.297H-0.057v3.661h10.975V19.813z",
+    "raph_run": "M17.41,20.395l-0.778-2.723c0.228-0.2,0.442-0.414,0.644-0.643l2.721,0.778c0.287-0.418,0.534-0.862,0.755-1.323l-2.025-1.96c0.097-0.288,0.181-0.581,0.241-0.883l2.729-0.684c0.02-0.252,0.039-0.505,0.039-0.763s-0.02-0.51-0.039-0.762l-2.729-0.684c-0.061-0.302-0.145-0.595-0.241-0.883l2.026-1.96c-0.222-0.46-0.469-0.905-0.756-1.323l-2.721,0.777c-0.201-0.228-0.416-0.442-0.644-0.643l0.778-2.722c-0.418-0.286-0.863-0.534-1.324-0.755l-1.96,2.026c-0.287-0.097-0.581-0.18-0.883-0.241l-0.683-2.73c-0.253-0.019-0.505-0.039-0.763-0.039s-0.51,0.02-0.762,0.039l-0.684,2.73c-0.302,0.061-0.595,0.144-0.883,0.241l-1.96-2.026C7.048,3.463,6.604,3.71,6.186,3.997l0.778,2.722C6.736,6.919,6.521,7.134,6.321,7.361L3.599,6.583C3.312,7.001,3.065,7.446,2.844,7.907l2.026,1.96c-0.096,0.288-0.18,0.581-0.241,0.883l-2.73,0.684c-0.019,0.252-0.039,0.505-0.039,0.762s0.02,0.51,0.039,0.763l2.73,0.684c0.061,0.302,0.145,0.595,0.241,0.883l-2.026,1.96c0.221,0.46,0.468,0.905,0.755,1.323l2.722-0.778c0.2,0.229,0.415,0.442,0.643,0.643l-0.778,2.723c0.418,0.286,0.863,0.533,1.323,0.755l1.96-2.026c0.288,0.097,0.581,0.181,0.883,0.241l0.684,2.729c0.252,0.02,0.505,0.039,0.763,0.039s0.51-0.02,0.763-0.039l0.683-2.729c0.302-0.061,0.596-0.145,0.883-0.241l1.96,2.026C16.547,20.928,16.992,20.681,17.41,20.395zM11.798,15.594c-1.877,0-3.399-1.522-3.399-3.399s1.522-3.398,3.399-3.398s3.398,1.521,3.398,3.398S13.675,15.594,11.798,15.594zM27.29,22.699c0.019-0.547-0.06-1.104-0.23-1.654l1.244-1.773c-0.188-0.35-0.4-0.682-0.641-0.984l-2.122,0.445c-0.428-0.364-0.915-0.648-1.436-0.851l-0.611-2.079c-0.386-0.068-0.777-0.105-1.173-0.106l-0.974,1.936c-0.279,0.054-0.558,0.128-0.832,0.233c-0.257,0.098-0.497,0.22-0.727,0.353L17.782,17.4c-0.297,0.262-0.568,0.545-0.813,0.852l0.907,1.968c-0.259,0.495-0.437,1.028-0.519,1.585l-1.891,1.06c0.019,0.388,0.076,0.776,0.164,1.165l2.104,0.519c0.231,0.524,0.541,0.993,0.916,1.393l-0.352,2.138c0.32,0.23,0.66,0.428,1.013,0.6l1.715-1.32c0.536,0.141,1.097,0.195,1.662,0.15l1.452,1.607c0.2-0.057,0.399-0.118,0.596-0.193c0.175-0.066,0.34-0.144,0.505-0.223l0.037-2.165c0.455-0.339,0.843-0.747,1.152-1.206l2.161-0.134c0.152-0.359,0.279-0.732,0.368-1.115L27.29,22.699zM23.127,24.706c-1.201,0.458-2.545-0.144-3.004-1.345s0.143-2.546,1.344-3.005c1.201-0.458,2.547,0.144,3.006,1.345C24.931,22.902,24.328,24.247,23.127,24.706z",
+    "raph_magnet": "M20.812,19.5h5.002v-6.867c-0.028-1.706-0.61-3.807-2.172-5.841c-1.539-2.014-4.315-3.72-7.939-3.687C12.076,3.073,9.3,4.779,7.762,6.792C6.2,8.826,5.617,10.928,5.588,12.634V19.5h5v-6.866c-0.027-0.377,0.303-1.789,1.099-2.748c0.819-0.979,1.848-1.747,4.014-1.778c2.165,0.032,3.195,0.799,4.013,1.778c0.798,0.959,1.126,2.372,1.099,2.748V19.5L20.812,19.5zM25.814,25.579c0,0,0-2.354,0-5.079h-5.002c0,2.727,0,5.08,0,5.08l5.004-0.001H25.814zM5.588,25.58h5c0,0,0-2.354,0-5.08h-5C5.588,23.227,5.588,25.58,5.588,25.58z",
+    "raph_connect": "M25.06,13.719c-0.944-5.172-5.461-9.094-10.903-9.094v4c3.917,0.006,7.085,3.176,7.094,7.094c-0.009,3.917-3.177,7.085-7.094,7.093v4.002c5.442-0.004,9.959-3.926,10.903-9.096h4.69v-3.999H25.06zM20.375,15.719c0-3.435-2.784-6.219-6.219-6.219c-2.733,0-5.05,1.766-5.884,4.218H1.438v4.001h6.834c0.833,2.452,3.15,4.219,5.884,4.219C17.591,21.938,20.375,19.153,20.375,15.719z",
+    "raph_disconnect": "M9.219,9.5c-2.733,0-5.05,1.766-5.884,4.218H1.438v4.001h1.897c0.833,2.452,3.15,4.219,5.884,4.219c3.435,0,6.219-2.784,6.219-6.219S12.653,9.5,9.219,9.5zM27.685,13.719c-0.944-5.172-5.461-9.094-10.903-9.094v4c3.917,0.006,7.085,3.176,7.094,7.094c-0.009,3.917-3.177,7.085-7.094,7.093v4.002c5.442-0.004,9.959-3.926,10.903-9.096h2.065v-3.999H27.685z",
+	"raph_plugin": "M26.33,15.836l-3.893-1.545l3.136-7.9c0.28-0.705-0.064-1.505-0.771-1.785c-0.707-0.28-1.506,0.065-1.785,0.771l-3.136,7.9l-4.88-1.937l3.135-7.9c0.281-0.706-0.064-1.506-0.77-1.786c-0.706-0.279-1.506,0.065-1.785,0.771l-3.136,7.9L8.554,8.781l-1.614,4.066l2.15,0.854l-2.537,6.391c-0.61,1.54,0.143,3.283,1.683,3.895l1.626,0.646L8.985,26.84c-0.407,1.025,0.095,2.188,1.122,2.596l0.93,0.369c1.026,0.408,2.188-0.095,2.596-1.121l0.877-2.207l1.858,0.737c1.54,0.611,3.284-0.142,3.896-1.682l2.535-6.391l1.918,0.761L26.33,15.836z",
+    "raph_folder": "M29.124,12.75c-0.004-2.208-1.792-3.997-3.999-4V8.749H12.868c-0.505-1.622-2.011-2.808-3.805-2.811H6.188c-2.208,0.002-3.997,1.792-4.001,4v14.188c0.004,2.206,1.793,3.995,4.001,3.999h18.938c2.205-0.004,3.995-1.793,3.999-3.999V12.75zM6.188,7.937h2.875c1.046-0.004,1.917,0.834,1.983,1.876l0.058,0.937h14.022c1.093,0.002,1.997,0.906,1.999,2v0.495c-0.591-0.345-1.268-0.557-2-0.558H6.187c-0.732,0.001-1.41,0.214-2,0.559V9.937C4.19,8.843,5.094,7.939,6.188,7.937zM25.125,26.125H6.188c-1.093-0.002-1.997-0.908-2.001-2v-7.438h0.001c0.002-1.095,0.906-1.999,2-2.001h18.938c1.093,0.002,1.991,0.901,2,1.991v7.447C27.122,25.219,26.218,26.123,25.125,26.125z"
+}
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/weather.json
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/weather.json	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/extensions/shapelib/weather.json	(revision 29468)
@@ -0,0 +1,26 @@
+{"size": 32,
+"fill": true,
+"data": {
+"raph_sun": "M15.502,7.504c-4.35,0-7.873,3.523-7.873,7.873c0,4.347,3.523,7.872,7.873,7.872c4.346,0,7.871-3.525,7.871-7.872C23.374,11.027,19.85,7.504,15.502,7.504zM15.502,21.25c-3.244-0.008-5.866-2.63-5.874-5.872c0.007-3.243,2.63-5.866,5.874-5.874c3.242,0.008,5.864,2.631,5.871,5.874C21.366,18.62,18.744,21.242,15.502,21.25zM15.502,6.977c0.553,0,1-0.448,1-1.001V1.125c-0.002-0.553-0.448-1-1-1c-0.553,0-1.001,0.449-1,1.002v4.85C14.502,6.528,14.949,6.977,15.502,6.977zM18.715,7.615c0.125,0.053,0.255,0.076,0.382,0.077c0.394,0,0.765-0.233,0.925-0.618l1.856-4.483c0.21-0.511-0.031-1.095-0.541-1.306c-0.511-0.211-1.096,0.031-1.308,0.541L18.174,6.31C17.963,6.82,18.205,7.405,18.715,7.615zM21.44,9.436c0.195,0.194,0.451,0.293,0.707,0.293s0.512-0.098,0.707-0.293l3.43-3.433c0.391-0.39,0.39-1.023,0-1.415c-0.392-0.39-1.025-0.39-1.415,0.002L21.44,8.021C21.049,8.412,21.049,9.045,21.44,9.436zM23.263,12.16c0.158,0.385,0.531,0.617,0.923,0.617c0.127,0,0.257-0.025,0.383-0.078l4.48-1.857c0.511-0.211,0.753-0.797,0.541-1.307s-0.796-0.752-1.307-0.54l-4.481,1.857C23.292,11.064,23.051,11.65,23.263,12.16zM29.752,14.371l-4.851,0.001c-0.552,0-1,0.448-0.998,1.001c0,0.553,0.447,0.999,0.998,0.999l4.852-0.002c0.553,0,0.999-0.449,0.999-1C30.752,14.817,30.304,14.369,29.752,14.371zM29.054,19.899l-4.482-1.854c-0.512-0.212-1.097,0.03-1.307,0.541c-0.211,0.511,0.031,1.096,0.541,1.308l4.482,1.854c0.126,0.051,0.256,0.075,0.383,0.075c0.393,0,0.765-0.232,0.925-0.617C29.806,20.695,29.563,20.109,29.054,19.899zM22.86,21.312c-0.391-0.391-1.023-0.391-1.414,0.001c-0.391,0.39-0.39,1.022,0,1.413l3.434,3.429c0.195,0.195,0.45,0.293,0.706,0.293s0.513-0.098,0.708-0.293c0.391-0.392,0.389-1.025,0-1.415L22.86,21.312zM20.029,23.675c-0.211-0.511-0.796-0.752-1.307-0.541c-0.51,0.212-0.752,0.797-0.54,1.308l1.86,4.48c0.159,0.385,0.531,0.617,0.925,0.617c0.128,0,0.258-0.024,0.383-0.076c0.511-0.211,0.752-0.797,0.54-1.309L20.029,23.675zM15.512,23.778c-0.553,0-1,0.448-1,1l0.004,4.851c0,0.553,0.449,0.999,1,0.999c0.553,0,1-0.448,0.998-1l-0.003-4.852C16.511,24.226,16.062,23.777,15.512,23.778zM12.296,23.142c-0.51-0.21-1.094,0.031-1.306,0.543l-1.852,4.483c-0.21,0.511,0.033,1.096,0.543,1.307c0.125,0.052,0.254,0.076,0.382,0.076c0.392,0,0.765-0.234,0.924-0.619l1.853-4.485C13.051,23.937,12.807,23.353,12.296,23.142zM9.57,21.325c-0.392-0.391-1.025-0.389-1.415,0.002L4.729,24.76c-0.391,0.392-0.389,1.023,0.002,1.415c0.195,0.194,0.45,0.292,0.706,0.292c0.257,0,0.513-0.098,0.708-0.293l3.427-3.434C9.961,22.349,9.961,21.716,9.57,21.325zM7.746,18.604c-0.213-0.509-0.797-0.751-1.307-0.54L1.96,19.925c-0.511,0.212-0.752,0.798-0.54,1.308c0.16,0.385,0.531,0.616,0.924,0.616c0.127,0,0.258-0.024,0.383-0.076l4.479-1.861C7.715,19.698,7.957,19.113,7.746,18.604zM7.1,15.392c0-0.553-0.447-0.999-1-0.999l-4.851,0.006c-0.553,0-1.001,0.448-0.999,1.001c0.001,0.551,0.449,1,1,0.998l4.852-0.006C6.654,16.392,7.102,15.942,7.1,15.392zM1.944,10.869l4.485,1.85c0.125,0.053,0.254,0.076,0.381,0.076c0.393,0,0.766-0.232,0.925-0.618c0.212-0.511-0.032-1.097-0.544-1.306L2.708,9.021c-0.511-0.21-1.095,0.032-1.306,0.542C1.19,10.074,1.435,10.657,1.944,10.869zM8.137,9.451c0.195,0.193,0.449,0.291,0.705,0.291s0.513-0.098,0.709-0.295c0.391-0.389,0.389-1.023-0.004-1.414L6.113,4.609C5.723,4.219,5.088,4.221,4.699,4.612c-0.391,0.39-0.389,1.024,0.002,1.414L8.137,9.451zM10.964,7.084c0.16,0.384,0.532,0.615,0.923,0.615c0.128,0,0.258-0.025,0.384-0.077c0.51-0.212,0.753-0.798,0.54-1.307l-1.864-4.479c-0.212-0.51-0.798-0.751-1.308-0.539C9.129,1.51,8.888,2.096,9.1,2.605L10.964,7.084z",    
+    "raph_thunder": "M25.371,7.306c-0.092-3.924-3.301-7.077-7.248-7.079c-2.638,0.001-4.942,1.412-6.208,3.517c-0.595-0.327-1.28-0.517-2.01-0.517C7.626,3.229,5.772,5.033,5.689,7.293c-2.393,0.786-4.125,3.025-4.127,5.686c0,3.312,2.687,6,6,6v-0.002h5.271l-2.166,3.398l1.977-0.411L10,30.875l9.138-10.102L17,21l2.167-2.023h4.269c3.312,0,6-2.688,6-6C29.434,10.34,27.732,8.11,25.371,7.306zM23.436,16.979H7.561c-2.209-0.006-3.997-1.792-4.001-4.001c-0.002-1.982,1.45-3.618,3.35-3.931c0.265-0.043,0.502-0.191,0.657-0.414C7.722,8.41,7.779,8.136,7.73,7.87C7.702,7.722,7.685,7.582,7.685,7.446C7.689,6.221,8.68,5.23,9.905,5.228c0.647,0,1.217,0.278,1.633,0.731c0.233,0.257,0.587,0.375,0.927,0.309c0.342-0.066,0.626-0.307,0.748-0.63c0.749-1.992,2.662-3.412,4.911-3.41c2.899,0.004,5.244,2.35,5.251,5.249c0,0.161-0.009,0.326-0.027,0.497c-0.049,0.517,0.305,0.984,0.815,1.079c1.86,0.344,3.274,1.966,3.271,3.923C27.43,15.186,25.645,16.973,23.436,16.979z",
+    "raph_snow": "M25.372,6.912c-0.093-3.925-3.302-7.078-7.248-7.08c-2.638,0.002-4.942,1.412-6.208,3.518c-0.595-0.327-1.28-0.518-2.01-0.518C7.627,2.834,5.773,4.639,5.69,6.898c-2.393,0.786-4.125,3.025-4.127,5.686c0,3.312,2.687,6,6,6v-0.002h15.875c3.312,0,6-2.688,6-6C29.434,9.944,27.732,7.715,25.372,6.912zM23.436,16.584H7.562c-2.209-0.006-3.997-1.793-4.001-4c-0.002-1.983,1.45-3.619,3.35-3.933c0.265-0.043,0.502-0.19,0.657-0.414C7.723,8.015,7.78,7.74,7.731,7.475C7.703,7.326,7.686,7.187,7.686,7.051c0.004-1.225,0.995-2.217,2.22-2.219c0.647,0,1.217,0.278,1.633,0.731c0.233,0.257,0.587,0.375,0.927,0.31c0.342-0.066,0.626-0.308,0.748-0.631c0.749-1.992,2.662-3.412,4.911-3.41c2.898,0.004,5.244,2.351,5.251,5.25c0,0.16-0.009,0.325-0.026,0.496c-0.05,0.518,0.305,0.984,0.814,1.079c1.859,0.345,3.273,1.966,3.271,3.923C27.43,14.791,25.645,16.578,23.436,16.584zM16.667,24.09l1.119-1.119c0.389-0.391,0.389-1.025,0-1.416c-0.392-0.391-1.025-0.391-1.415,0l-1.119,1.119l-1.119-1.119c-0.391-0.391-1.025-0.391-1.415,0c-0.391,0.391-0.391,1.025,0,1.416l1.118,1.117l-1.12,1.121c-0.389,0.393-0.389,1.021,0,1.414c0.195,0.188,0.451,0.293,0.707,0.293c0.256,0,0.512-0.104,0.708-0.293l1.12-1.119l1.12,1.119c0.195,0.188,0.451,0.293,0.708,0.293c0.256,0,0.512-0.104,0.707-0.293c0.391-0.396,0.391-1.021,0-1.414L16.667,24.09zM25.119,21.817c-0.393-0.392-1.025-0.392-1.415,0l-1.12,1.121l-1.12-1.121c-0.391-0.392-1.022-0.392-1.414,0c-0.39,0.392-0.39,1.022,0,1.416l1.119,1.119l-1.119,1.119c-0.39,0.391-0.39,1.022,0,1.413c0.195,0.195,0.451,0.294,0.707,0.294c0.257,0,0.513-0.099,0.707-0.294l1.12-1.118l1.12,1.118c0.194,0.195,0.45,0.294,0.707,0.294c0.256,0,0.513-0.099,0.708-0.294c0.389-0.391,0.389-1.022,0-1.413l-1.12-1.119l1.12-1.119C25.507,22.842,25.507,22.209,25.119,21.817zM9.334,23.953l1.119-1.119c0.389-0.394,0.389-1.021,0-1.414c-0.391-0.394-1.025-0.394-1.415,0l-1.119,1.119l-1.12-1.121c-0.391-0.39-1.023-0.39-1.415,0c-0.391,0.396-0.391,1.024,0,1.418l1.119,1.117l-1.12,1.118c-0.391,0.394-0.391,1.025,0,1.414c0.196,0.195,0.452,0.293,0.708,0.293c0.256,0,0.511-0.098,0.707-0.293l1.12-1.119l1.121,1.121c0.195,0.195,0.451,0.293,0.707,0.293s0.513-0.098,0.708-0.293c0.389-0.391,0.389-1.022,0-1.416L9.334,23.953z",
+    "raph_hail": "M25.372,6.912c-0.093-3.925-3.302-7.078-7.248-7.08c-2.638,0.002-4.942,1.412-6.208,3.518c-0.595-0.327-1.28-0.518-2.01-0.518C7.627,2.834,5.773,4.639,5.69,6.898c-2.393,0.786-4.125,3.025-4.127,5.686c0,3.312,2.687,6,6,6v-0.002h15.875c3.312,0,6-2.688,6-6C29.434,9.944,27.732,7.715,25.372,6.912zM23.436,16.584H7.562c-2.209-0.006-3.997-1.793-4.001-4c-0.002-1.983,1.45-3.619,3.35-3.933c0.265-0.043,0.502-0.19,0.657-0.414C7.723,8.015,7.78,7.74,7.731,7.475C7.703,7.326,7.686,7.187,7.686,7.051c0.004-1.225,0.995-2.217,2.22-2.219c0.647,0,1.217,0.278,1.633,0.731c0.233,0.257,0.587,0.375,0.927,0.31c0.342-0.066,0.626-0.308,0.748-0.631c0.749-1.992,2.662-3.412,4.911-3.41c2.898,0.004,5.244,2.351,5.251,5.25c0,0.16-0.009,0.325-0.026,0.496c-0.05,0.518,0.305,0.984,0.814,1.079c1.859,0.345,3.273,1.966,3.271,3.923C27.43,14.791,25.645,16.578,23.436,16.584zM11.503,23.709c-0.784-0.002-1.418-0.636-1.418-1.416c0-0.785,0.634-1.416,1.418-1.418c0.78,0.002,1.413,0.633,1.416,1.418C12.917,23.073,12.284,23.707,11.503,23.709zM19.002,23.709c-0.783-0.002-1.418-0.636-1.418-1.416c0-0.785,0.635-1.416,1.418-1.418c0.779,0.002,1.414,0.633,1.414,1.418C20.417,23.073,19.784,23.707,19.002,23.709zM7.503,28.771c-0.783-0.002-1.417-0.637-1.417-1.418s0.634-1.414,1.417-1.416c0.78,0.002,1.415,0.635,1.415,1.416C8.917,28.135,8.284,28.77,7.503,28.771zM15.001,28.771c-0.782-0.002-1.417-0.637-1.417-1.418s0.634-1.414,1.417-1.416c0.78,0.002,1.413,0.635,1.415,1.416C16.415,28.135,15.784,28.77,15.001,28.771zM22.5,28.771c-0.782-0.002-1.416-0.634-1.416-1.416c0-0.785,0.634-1.418,1.416-1.42c0.781,0.002,1.414,0.635,1.418,1.42C23.915,28.138,23.282,28.77,22.5,28.771z",
+    "raph_rain": "M25.371,7.306c-0.092-3.924-3.301-7.077-7.248-7.079c-2.638,0.001-4.942,1.412-6.208,3.517c-0.595-0.327-1.28-0.517-2.01-0.517C7.626,3.229,5.772,5.033,5.689,7.293c-2.393,0.786-4.125,3.025-4.127,5.686c0,3.312,2.687,6,6,6v-0.002h15.874c3.312,0,6-2.688,6-6C29.434,10.34,27.732,8.11,25.371,7.306zM23.436,16.979H7.561c-2.209-0.006-3.997-1.792-4.001-4.001c-0.002-1.982,1.45-3.618,3.35-3.931c0.265-0.043,0.502-0.191,0.657-0.414C7.722,8.41,7.779,8.136,7.73,7.87C7.702,7.722,7.685,7.582,7.685,7.446C7.689,6.221,8.68,5.23,9.905,5.228c0.647,0,1.217,0.278,1.633,0.731c0.233,0.257,0.587,0.375,0.927,0.309c0.342-0.066,0.626-0.307,0.748-0.63c0.749-1.992,2.662-3.412,4.911-3.41c2.899,0.004,5.244,2.35,5.251,5.249c0,0.161-0.009,0.326-0.027,0.497c-0.049,0.517,0.305,0.984,0.815,1.079c1.86,0.344,3.274,1.966,3.271,3.923C27.43,15.186,25.645,16.973,23.436,16.979zM9.029,26.682c0-1.115,0.021-5.425,0.021-5.432c0.002-0.409-0.247-0.779-0.628-0.932c-0.38-0.152-0.815-0.059-1.099,0.24c-0.006,0.008-1.037,1.098-2.081,2.342c-0.523,0.627-1.048,1.287-1.463,1.896c-0.399,0.648-0.753,1.066-0.811,1.885C2.971,28.355,4.324,29.711,6,29.714C7.672,29.71,9.029,28.354,9.029,26.682zM4.971,26.727c0.091-0.349,1.081-1.719,1.993-2.764c0.025-0.029,0.051-0.061,0.076-0.089c-0.005,1.124-0.01,2.294-0.01,2.808c0,0.567-0.461,1.028-1.029,1.03C5.447,27.71,4.997,27.273,4.971,26.727zM16.425,26.682c0-1.115,0.021-5.424,0.021-5.43c0.002-0.41-0.247-0.779-0.628-0.934c-0.381-0.152-0.814-0.058-1.1,0.242c-0.006,0.008-1.035,1.094-2.08,2.342c-0.522,0.623-1.047,1.285-1.463,1.894c-0.399,0.649-0.753,1.068-0.809,1.888c0,1.672,1.354,3.028,3.029,3.028C15.068,29.711,16.425,28.354,16.425,26.682zM12.365,26.729c0.092-0.349,1.081-1.72,1.993-2.765c0.025-0.03,0.05-0.06,0.075-0.089c-0.005,1.123-0.011,2.294-0.011,2.807c-0.002,0.568-0.461,1.027-1.028,1.029C12.84,27.709,12.392,27.273,12.365,26.729zM23.271,20.317c-0.38-0.153-0.816-0.06-1.099,0.24c-0.009,0.008-1.037,1.097-2.08,2.342c-0.523,0.625-1.049,1.285-1.462,1.896c-0.402,0.649-0.754,1.067-0.812,1.886c0,1.672,1.354,3.029,3.03,3.029c1.673,0,3.027-1.357,3.027-3.029c0-1.115,0.022-5.425,0.022-5.431C23.9,20.84,23.651,20.47,23.271,20.317zM21.879,26.681c-0.004,0.568-0.463,1.027-1.031,1.029c-0.553-0.002-1.002-0.438-1.028-0.982c0.092-0.349,1.081-1.72,1.993-2.765c0.025-0.028,0.05-0.059,0.074-0.088C21.883,24.998,21.879,26.167,21.879,26.681z",
+    
+    "raph_alarm": "M15.499,5.125c-0.553,0-0.999,0.448-0.999,1v9.221L8.454,17.99c-0.506,0.222-0.736,0.812-0.514,1.318c0.164,0.375,0.53,0.599,0.915,0.599c0.134,0,0.271-0.027,0.401-0.085l6.626-2.898c0.005-0.002,0.009-0.004,0.013-0.006l0.004-0.002c0.015-0.006,0.023-0.02,0.037-0.025c0.104-0.052,0.201-0.113,0.279-0.195c0.034-0.034,0.053-0.078,0.079-0.117c0.048-0.064,0.101-0.127,0.13-0.204c0.024-0.06,0.026-0.125,0.038-0.189c0.013-0.064,0.038-0.121,0.038-0.186V6.124C16.5,5.573,16.052,5.125,15.499,5.125zM31.125,6.832c0-3.832-3.105-6.938-6.938-6.938c-1.938,0-3.686,0.796-4.94,2.077C18.05,1.652,16.798,1.466,15.5,1.466c-1.334,0-2.62,0.195-3.847,0.531c-1.259-1.295-3.016-2.103-4.965-2.103C2.856-0.106-0.25,3-0.25,6.832c0,1.845,0.726,3.517,1.901,4.76c-0.443,1.39-0.685,2.87-0.685,4.408c0,8.027,6.507,14.534,14.534,14.534c8.027,0,14.534-6.507,14.534-14.534c0-1.575-0.259-3.087-0.722-4.508C30.436,10.261,31.125,8.629,31.125,6.832zM15.5,27.533C9.139,27.533,3.966,22.359,3.966,16c0-6.36,5.173-11.534,11.534-11.534c6.361,0,11.533,5.173,11.533,11.534C27.033,22.361,21.859,27.533,15.5,27.533z",
+    "raph_clock": "M16,1.466C7.973,1.466,1.466,7.973,1.466,16c0,8.027,6.507,14.534,14.534,14.534c8.027,0,14.534-6.507,14.534-14.534C30.534,7.973,24.027,1.466,16,1.466zM16,27.533C9.639,27.533,4.466,22.359,4.466,16C4.466,9.64,9.639,4.466,16,4.466c6.361,0,11.533,5.173,11.533,11.534C27.533,22.361,22.359,27.533,16,27.533zM15.999,5.125c-0.553,0-0.999,0.448-0.999,1v9.221L8.954,17.99c-0.506,0.222-0.736,0.812-0.514,1.318c0.164,0.375,0.53,0.599,0.915,0.599c0.134,0,0.271-0.027,0.401-0.085l6.626-2.898c0.005-0.002,0.009-0.004,0.013-0.006l0.004-0.002c0.015-0.006,0.023-0.02,0.037-0.025c0.104-0.052,0.201-0.113,0.279-0.195c0.034-0.034,0.053-0.078,0.079-0.117c0.048-0.064,0.101-0.127,0.13-0.204c0.024-0.06,0.026-0.125,0.038-0.189C16.975,16.121,17,16.064,17,15.999V6.124C17,5.573,16.552,5.125,15.999,5.125z",
+    "raph_globeAlt2": "M16,1.466C7.973,1.466,1.466,7.973,1.466,16c0,8.027,6.507,14.534,14.534,14.534c8.027,0,14.534-6.507,14.534-14.534C30.534,7.973,24.027,1.466,16,1.466zM8.251,7.48c0.122,0.055,0.255,0.104,0.28,0.137C8.57,7.668,8.621,7.823,8.557,7.861C8.492,7.9,8.39,7.887,8.376,7.771c-0.013-0.115-0.026-0.128-0.18-0.18c-0.022-0.007-0.035-0.01-0.051-0.015C8.18,7.544,8.216,7.512,8.251,7.48zM7.733,7.974c0.031,0.087,0.113,0.125,0,0.17C7.673,8.168,7.611,8.172,7.559,8.165C7.617,8.102,7.672,8.035,7.733,7.974zM16,27.533C9.639,27.533,4.466,22.36,4.466,16c0-0.085,0.011-0.168,0.013-0.254c0.004-0.003,0.008-0.006,0.012-0.009c0.129-0.102,0.283-0.359,0.334-0.45c0.052-0.089,0.181-0.154,0.116-0.256c-0.059-0.096-0.292-0.23-0.407-0.261c0.01-0.099,0.032-0.195,0.045-0.294c0.063,0.077,0.137,0.17,0.208,0.194c0.115,0.038,0.501,0.052,0.566,0.052c0.063,0,0.334,0.014,0.386-0.064c0.051-0.077,0.09-0.077,0.154-0.077c0.064,0,0.18,0.231,0.271,0.257c0.089,0.026,0.257,0.013,0.244,0.181c-0.012,0.166,0.077,0.309,0.167,0.321c0.09,0.013,0.296-0.194,0.296-0.194s0,0.322-0.012,0.438C6.846,15.698,7,16.124,7,16.124s0.193,0.397,0.244,0.488c0.052,0.09,0.27,0.36,0.27,0.476c0,0.117,0.026,0.297,0.104,0.297s0.155-0.206,0.244-0.335c0.091-0.128,0.117-0.31,0.155-0.438c0.039-0.129,0.039-0.36,0.039-0.45c0-0.091,0.076-0.168,0.257-0.245c0.181-0.077,0.309-0.296,0.463-0.412c0.155-0.116,0.142-0.309,0.452-0.309c0.308,0,0.282,0,0.36-0.078c0.077-0.077,0.154-0.128,0.192,0.013c0.039,0.142,0.257,0.347,0.296,0.399c0.039,0.052,0.116,0.193,0.104,0.348c-0.013,0.153,0.012,0.334,0.077,0.334c0.064,0,0.193-0.219,0.193-0.219s0.283-0.192,0.27,0.014c-0.014,0.205,0.025,0.425,0.025,0.552c0,0.13,0.232,0.438,0.232,0.362c0-0.079,0.103-0.296,0.103-0.413c0-0.114,0.064-0.063,0.231,0.051c0.167,0.116,0.283,0.349,0.283,0.349s0.168,0.154,0.193,0.219c0.026,0.064,0.206-0.025,0.244-0.104c0.039-0.076,0.065-0.115,0.167-0.141c0.104-0.026,0.231-0.026,0.271-0.168c0.039-0.142,0.154-0.308,0-0.502c-0.154-0.193-0.232-0.321-0.347-0.412c-0.117-0.09-0.206-0.322-0.206-0.322s0.244-0.218,0.321-0.296c0.079-0.077,0.193-0.025,0.207,0.064c0.013,0.091-0.115,0.168-0.141,0.361c-0.026,0.192,0.154,0.257,0.206,0.192c0.051-0.065,0.18-0.219,0.18-0.257c0-0.039-0.089-0.026-0.102-0.167c-0.013-0.142,0.166-0.245,0.23-0.207c0.066,0.039,0.477-0.051,0.67-0.154s0.308-0.322,0.425-0.412c0.116-0.089,0.515-0.386,0.489-0.527c-0.026-0.142,0.012-0.334-0.09-0.515c-0.103-0.18-0.232-0.295-0.283-0.373c-0.051-0.077,0.219-0.09,0.347-0.206c0.129-0.116,0-0.219-0.064-0.206c-0.064,0.013-0.232,0.052-0.296,0.039c-0.064-0.013-0.103-0.077-0.206-0.155c-0.102-0.077,0.026-0.192,0.091-0.179c0.064,0.013,0.23-0.129,0.308-0.193c0.077-0.064,0.193-0.115,0.154-0.051c-0.038,0.064-0.128,0.296-0.026,0.309c0.104,0.013,0.348-0.193,0.388-0.18c0.038,0.013,0.102,0.18,0.064,0.257c-0.039,0.077-0.039,0.206,0.013,0.193c0.051-0.013,0.154-0.129,0.18-0.09c0.027,0.039,0.154,0.116,0.09,0.257c-0.063,0.142-0.193,0.193-0.039,0.284c0.154,0.089,0.206,0.012,0.322-0.052c0.115-0.064,0.193-0.347,0.128-0.438c-0.064-0.09-0.218-0.27-0.218-0.334c0-0.064,0.257-0.064,0.257-0.167s0.09-0.18,0.18-0.219c0.091-0.039,0.206-0.206,0.244-0.154c0.039,0.052,0.271,0.116,0.334,0.039c0.064-0.077,0.4-0.36,0.605-0.515c0.206-0.154,0.283-0.334,0.336-0.515c0.051-0.18,0.128-0.296,0.102-0.437v0c0.077,0.18,0.09,0.309,0.077,0.45c-0.013,0.142,0,0.438,0.026,0.476c0.025,0.039,0.129,0.128,0.192,0.103c0.064-0.025-0.025-0.283-0.025-0.334c0-0.052,0.09-0.129,0.142-0.142c0.052-0.013,0-0.231-0.065-0.322c-0.063-0.09-0.154-0.142-0.102-0.154c0.051-0.013,0.115-0.116,0.077-0.142c-0.039-0.025-0.014-0.116-0.103-0.09c-0.065,0.019-0.241-0.015-0.235,0.095c-0.037-0.11-0.116-0.183-0.216-0.172c-0.116,0.013-0.181,0.077-0.296,0.077s-0.025-0.18-0.077-0.18c-0.051,0-0.168,0.167-0.231,0.077c-0.064-0.09,0.18-0.206,0.373-0.27c0.192-0.064,0.514-0.438,0.644-0.451c0.128-0.013,0.45,0.026,0.733,0.013c0.283-0.013,0.373-0.129,0.463-0.064s0.283,0.142,0.399,0.129c0.116-0.014,0.064,0,0.244-0.129c0.18-0.129,0.348-0.193,0.438-0.296c0.09-0.103,0.335-0.18,0.348-0.077c0.014,0.103-0.026,0.206,0.077,0.206s0.258-0.103,0.386-0.154c0.129-0.051,0.231-0.116,0.231-0.116s-0.527,0.36-0.655,0.438c-0.129,0.077-0.438,0.129-0.567,0.283c-0.128,0.155-0.205,0.206-0.192,0.374c0.014,0.167,0.231,0.386,0.128,0.54c-0.103,0.154-0.141,0.373-0.141,0.373s0.154-0.219,0.373-0.36s0.348-0.334,0.425-0.412s0.309-0.091,0.309-0.181s0.064-0.206,0.104-0.309c0.038-0.103-0.077-0.078,0-0.206c0.076-0.129,0.064-0.232,0.45-0.232s0.257,0.026,0.566,0.013c0.309-0.013,0.424-0.167,0.72-0.245c0.296-0.077,0.527-0.128,0.618-0.089c0.09,0.038,0.232,0.012,0.141-0.078c-0.089-0.09-0.295-0.219-0.193-0.245c0.104-0.026,0.207-0.039,0.246-0.142c0.039-0.103-0.142-0.283-0.039-0.386c0.104-0.103-0.077-0.231-0.207-0.257c-0.128-0.025-0.63,0.026-0.731-0.025c-0.104-0.052-0.271-0.116-0.322-0.078c-0.052,0.039-0.168,0.245-0.168,0.245s-0.09,0.025-0.168-0.09c-0.076-0.116-0.5-0.103-0.629-0.103s-0.271,0.025-0.413,0.039c-0.141,0.013-0.219,0.052-0.322-0.039c-0.102-0.09-0.243-0.129-0.296-0.167c-0.051-0.039-0.334-0.039-0.553-0.012c-0.218,0.025-0.438,0.025-0.438,0.025s-0.104-0.039-0.257-0.129c-0.154-0.09-0.309-0.154-0.361-0.154c-0.051,0-0.449,0.064-0.539,0c-0.091-0.064-0.181-0.103-0.245-0.103s-0.115-0.103-0.038-0.103s0.437-0.103,0.437-0.103s-0.103-0.142-0.231-0.142c-0.128,0-0.359-0.064-0.424-0.064s-0.014,0.064-0.142,0.039c-0.13-0.026-0.258-0.078-0.335-0.026c-0.076,0.051-0.258,0.128-0.064,0.18c0.193,0.052,0.373,0,0.425,0.078c0.052,0.077,0,0.115,0,0.167s-0.103,0.193-0.167,0.219c-0.064,0.025-0.143-0.039-0.27,0.025c-0.129,0.064-0.451,0.013-0.49,0.052c-0.038,0.039-0.115-0.103-0.18-0.077c-0.064,0.025-0.232,0.193-0.322,0.18c-0.089-0.013-0.206-0.103-0.206-0.206s-0.038-0.232-0.077-0.258c-0.038-0.025-0.322-0.039-0.425-0.025c-0.103,0.013-0.424,0.038-0.477,0.09c-0.052,0.052-0.193,0.09-0.283,0.09s-0.167-0.09-0.36-0.116c-0.192-0.026-0.617-0.039-0.669-0.026s-0.218-0.025-0.155-0.077c0.065-0.051,0.257-0.219,0.143-0.295c-0.117-0.078-0.375-0.078-0.489-0.09c-0.117-0.013-0.232-0.039-0.413-0.013c-0.181,0.026-0.219,0.116-0.296,0.039c-0.077-0.077,0.193,0.039-0.077-0.077c-0.27-0.116-0.399-0.103-0.477-0.064c-0.077,0.039,0.013,0.025-0.192,0.103c-0.206,0.078-0.322,0.116-0.374,0.129c-0.051,0.012-0.372-0.065-0.411-0.091c-0.038-0.025-0.181,0.013-0.309,0.064S9.895,7.025,9.767,7C9.638,6.973,9.432,6.973,9.303,7.025C9.174,7.076,9.084,7.076,8.956,7.166c-0.13,0.09-0.373,0.142-0.373,0.142S8.522,7.305,8.448,7.301C10.474,5.541,13.111,4.466,16,4.466c6.361,0,11.534,5.173,11.534,11.534S22.36,27.533,16,27.533zM14.888,19.92c0,0,0.207-0.026,0.207-0.117c0-0.089-0.207-0.205-0.282-0.102c-0.078,0.102-0.219,0.205-0.207,0.296C14.625,20.138,14.888,19.92,14.888,19.92zM14.875,17.023c-0.181,0.233-0.167,0.182-0.296,0.128c-0.128-0.05-0.334,0.116-0.296,0.182c0.039,0.064,0.322-0.014,0.386,0.102c0.065,0.116,0.065,0.129,0.193,0.104c0.128-0.026,0.257-0.205,0.219-0.295C15.043,17.151,14.875,17.023,14.875,17.023zM14.837,18.245c-0.051,0-0.412,0.064-0.451,0.079c-0.039,0.013-0.27-0.025-0.27-0.025c-0.09,0.089-0.026,0.179,0.116,0.166s0.438-0.052,0.502-0.052C14.799,18.413,14.888,18.245,14.837,18.245zM14.284,14.668c-0.19,0.03-0.308,0.438-0.155,0.425C14.284,15.081,14.451,14.643,14.284,14.668zM14.734,16.959c-0.052-0.064-0.181-0.271-0.323-0.219c-0.042,0.017-0.153,0.245-0.012,0.245C14.541,16.985,14.786,17.023,14.734,16.959zM14.85,16.805c0.232-0.013,0.167-0.245-0.013-0.257C14.786,16.544,14.618,16.818,14.85,16.805zM17.591,18.928c-0.193-0.039-0.244-0.102-0.45-0.205c-0.207-0.103-0.67-0.103-0.682-0.039c-0.014,0.064,0,0-0.155-0.05c-0.153-0.054-0.271,0-0.309-0.091c-0.038-0.091-0.128-0.117-0.244-0.002c-0.097,0.097-0.142,0.104,0.078,0.143c0.218,0.039,0.283,0.039,0.192,0.141c-0.09,0.104-0.154,0.233-0.077,0.244c0.077,0.015,0.309-0.05,0.334,0c0.026,0.054-0.051,0.064,0.207,0.105c0.258,0.037,0.309,0.128,0.359,0.178c0.051,0.052,0.206,0.22,0.104,0.22c-0.104,0-0.219,0.128-0.142,0.143c0.077,0.013,0.309-0.039,0.321,0c0.014,0.037,0.143,0.283,0.271,0.271c0.129-0.013,0.206-0.244,0.27-0.31c0.065-0.064,0.322-0.104,0.349,0.012c0.026,0.116,0.104,0.233,0.257,0.311c0.154,0.076,0.335,0.154,0.348,0.089c0.013-0.064-0.077-0.309-0.181-0.346c-0.103-0.041-0.282-0.259-0.282-0.348c0-0.091-0.155-0.117-0.232-0.182C17.849,19.147,17.784,18.967,17.591,18.928zM8.042,17.023c-0.084,0.037-0.155,0.476,0,0.527c0.154,0.052,0.244-0.205,0.193-0.271C8.183,17.218,8.158,16.973,8.042,17.023zM15.429,18.117c-0.118-0.05-0.335,0.424-0.181,0.463C15.403,18.62,15.518,18.156,15.429,18.117zM15.687,13.703c0.077,0,0.18-0.051,0.18-0.193c0-0.142,0.18,0,0.27-0.013s0.141-0.103,0.18-0.206c0.005-0.013,0.008-0.021,0.009-0.027c-0.003,0.024-0.001,0.093,0.095,0.117c0.154,0.038,0.205-0.064,0.205-0.103s0.283-0.103,0.336-0.142c0.051-0.038,0.258-0.103,0.27-0.154c0.013-0.051,0-0.348,0.064-0.373c0.064-0.026,0.154-0.026,0.052-0.206c-0.104-0.181-0.104-0.348-0.232-0.271c-0.095,0.057-0.038,0.284-0.115,0.438s-0.142,0.296-0.193,0.296s-0.321,0.103-0.399,0.18c-0.076,0.077-0.45-0.064-0.501,0c-0.052,0.064-0.154,0.141-0.219,0.193c-0.065,0.051-0.245,0.013-0.207,0.167C15.518,13.562,15.609,13.703,15.687,13.703zM17.449,12.056c0.18-0.013,0.348-0.064,0.348-0.064s0.271,0.013,0.232-0.116c-0.04-0.128-0.322-0.141-0.375-0.128c-0.051,0.013-0.142-0.142-0.244-0.116c-0.096,0.023-0.128,0.155-0.128,0.193c0,0.039-0.36,0.115-0.245,0.219C17.153,12.146,17.27,12.069,17.449,12.056zM13.91,19.058c0.104,0.064,0.296-0.219,0.349-0.13c0.051,0.091-0.013,0.13,0.076,0.246c0.091,0.114,0.258,0.102,0.258,0.102s-0.013-0.309-0.155-0.387c-0.142-0.077-0.232-0.166-0.064-0.141c0.167,0.026,0.257-0.039,0.219-0.114c-0.039-0.078-0.283-0.039-0.361-0.026s-0.193-0.052-0.193-0.052c-0.077,0.024-0.063,0.089-0.09,0.219C13.923,18.902,13.807,18.992,13.91,19.058zM20.924,21.618c-0.231-0.052-0.077,0.039,0,0.154c0.077,0.116,0.232,0.176,0.258,0.05C21.193,21.759,21.155,21.67,20.924,21.618zM21.915,24.744c-0.077,0.064,0,0.091-0.219,0.22c-0.22,0.13-0.49,0.271-0.541,0.386c-0.052,0.116,0.051,0.181,0.258,0.192c0.206,0.013,0.154,0.053,0.296-0.103s0.271-0.244,0.438-0.373c0.168-0.128,0.168-0.322,0.168-0.322s-0.181-0.178-0.193-0.141C22.1,24.665,21.992,24.681,21.915,24.744zM18.504,21.618c0.014-0.116-0.219-0.116-0.334-0.207c-0.116-0.089-0.128-0.359-0.193-0.515c-0.064-0.153-0.192-0.257-0.322-0.397c-0.128-0.143-0.192-0.465-0.23-0.438c-0.039,0.025-0.154,0.399-0.064,0.515c0.09,0.116-0.039,0.348-0.103,0.503c-0.065,0.153-0.22-0.026-0.349-0.104c-0.129-0.078-0.308-0.128-0.398-0.219c-0.09-0.091,0.155-0.335,0.091-0.426c-0.065-0.09-0.412-0.013-0.45-0.013c-0.039,0-0.116-0.128-0.194-0.128c-0.077,0-0.064,0.258-0.064,0.258s-0.078-0.091-0.193-0.207c-0.117-0.115,0.012,0.077-0.103,0.193c-0.117,0.117-0.079,0.078-0.129,0.206c-0.051,0.129-0.167,0.077-0.283-0.052c-0.116-0.128-0.179-0.037-0.258,0c-0.077,0.039-0.141,0.259-0.18,0.309c-0.039,0.052-0.309,0.117-0.374,0.182c-0.064,0.062-0.09,0.27-0.09,0.322c0,0.05-0.271,0.023-0.361,0.089c-0.09,0.064-0.23,0.025-0.321,0.025c-0.09,0-0.399,0.244-0.502,0.308c-0.103,0.066-0.103,0.298-0.051,0.362c0.051,0.063,0.154,0.219,0.09,0.244c-0.064,0.026-0.104,0.206,0.051,0.359c0.154,0.155,0.103,0.194,0.115,0.271c0.014,0.077,0.078,0.104,0.181,0.232c0.102,0.128-0.181,0.231-0.219,0.31c-0.039,0.076,0.091,0.192,0.167,0.257c0.077,0.063,0.271,0.026,0.386-0.013c0.117-0.039,0.245-0.143,0.321-0.155c0.079-0.013,0.438-0.026,0.438-0.026s0.129-0.192,0.219-0.296c0.089-0.102,0.372-0.013,0.372-0.013s0.117-0.076,0.426-0.141c0.309-0.065,0.179,0.064,0.296,0.104c0.115,0.037,0.27,0.062,0.359,0.128c0.09,0.064,0,0.218-0.012,0.283c-0.014,0.064,0.219,0.038,0.23-0.026c0.014-0.064,0.077-0.128,0.207-0.205c0.128-0.078,0.025,0.114,0.076,0.231c0.052,0.116,0.129-0.157,0.129-0.026c0,0.039,0.039,0.078,0.051,0.116c0.014,0.039,0.181,0.052,0.181,0.18c0,0.13,0,0.207,0.039,0.231c0.038,0.026,0.244,0,0.335,0.155c0.089,0.154,0.154,0.013,0.205-0.052c0.052-0.064,0.231,0.026,0.283,0.078c0.052,0.05,0.193-0.104,0.387-0.155c0.192-0.051,0.167-0.039,0.219-0.115c0.051-0.078,0.09-0.283,0.205-0.438c0.115-0.153,0.271-0.424,0.271-0.631c0-0.206-0.014-0.682-0.155-0.899C18.761,21.953,18.492,21.733,18.504,21.618zM18.029,24.77c-0.065-0.013-0.207-0.062-0.207-0.062c-0.142,0.141,0.142,0.141,0.104,0.283c-0.039,0.141,0.193,0.089,0.257,0.064c0.063-0.027,0.22-0.323,0.193-0.399C18.351,24.577,18.093,24.783,18.029,24.77zM22.803,24.178c-0.052,0-0.077,0.064-0.192,0c-0.117-0.063-0.091-0.037-0.168-0.167c-0.077-0.127-0.091-0.296-0.219-0.23c-0.051,0.025,0,0.168,0.051,0.218c0.053,0.052,0.077,0.231,0.064,0.283c-0.012,0.052-0.231,0.116-0.129,0.18c0.104,0.064,0.297,0,0.271,0.078c-0.025,0.077-0.129,0.179-0.013,0.205c0.115,0.025,0.154-0.089,0.207-0.178c0.051-0.093,0.089-0.169,0.179-0.221C22.944,24.294,22.854,24.178,22.803,24.178zM22.815,21.18c0.168,0.064,0.464-0.231,0.347-0.27C23.047,20.871,22.815,21.18,22.815,21.18zM13.923,19.906c-0.029,0.115,0.193,0.167,0.206,0.039C14.141,19.816,13.949,19.803,13.923,19.906zM14.27,16.47c-0.064,0.065-0.257,0.193-0.283,0.31c-0.025,0.115,0.309-0.182,0.399-0.296c0.091-0.117,0.27-0.052,0.308-0.117c0.04-0.063,0.04-0.063,0.04-0.063s-0.142-0.025-0.257-0.063c-0.117-0.039-0.258,0.102-0.193-0.104c0.064-0.206,0.257-0.167,0.219-0.322c-0.039-0.154-0.168-0.193-0.207-0.193c-0.09,0,0.013,0.141-0.116,0.231c-0.128,0.09-0.271,0.128-0.193,0.283C14.064,16.29,14.334,16.405,14.27,16.47zM13.254,19.751c0.013-0.076-0.142-0.192-0.206-0.192c-0.065,0-0.386-0.077-0.386-0.077c-0.058,0.023-0.135,0.045-0.158,0.077c-0.007-0.011-0.022-0.024-0.049-0.039c-0.142-0.075-0.309,0-0.361-0.102c-0.05-0.104-0.127-0.104-0.179-0.039c-0.094,0.117,0.025,0.206,0.063,0.231c0.038,0.024,0.181,0.052,0.309,0.039c0.08-0.008,0.181-0.027,0.21-0.059c0.004,0.014,0.016,0.027,0.035,0.044c0.103,0.092,0.167,0.13,0.321,0.116C13.009,19.74,13.241,19.829,13.254,19.751zM12.881,18.992c0.065,0,0.193,0,0.283,0.026c0.09,0.025,0.386,0.05,0.373-0.064c-0.013-0.115-0.038-0.297,0.089-0.411c0.13-0.117,0.257-0.18,0.193-0.348c-0.063-0.167-0.193-0.271-0.103-0.349c0.09-0.076,0.192-0.102,0.192-0.166c0-0.065-0.217,0.18-0.244-0.246c-0.005-0.091-0.206,0.025-0.219,0.116c-0.012,0.091,0.142,0.167-0.103,0.167c-0.245,0-0.257,0.194-0.309,0.232c-0.052,0.039-0.103,0.051-0.207,0.076c-0.102,0.026-0.127,0.13-0.153,0.194c-0.025,0.063-0.206-0.116-0.257-0.064c-0.051,0.052-0.013,0.296,0.077,0.501C12.585,18.863,12.816,18.992,12.881,18.992zM11.979,18.928c0.065-0.077,0.038-0.192-0.063-0.18c-0.103,0.013-0.193-0.168-0.36-0.283c-0.168-0.114-0.296-0.194-0.451-0.36c-0.154-0.167-0.347-0.271-0.45-0.359c-0.104-0.091-0.257-0.13-0.322-0.116c-0.159,0.032,0.231,0.309,0.271,0.346c0.039,0.041,0.387,0.335,0.387,0.478s0.231,0.476,0.296,0.527c0.064,0.052,0.385,0.244,0.437,0.348c0.052,0.103,0.167,0.13,0.167-0.013C11.89,19.174,11.916,19.006,11.979,18.928zM11.002,17.474c0.064,0.232,0.193,0.464,0.244,0.555c0.052,0.089,0.271,0.217,0.348,0.281c0.077,0.064,0.192-0.024,0.143-0.102c-0.052-0.078-0.155-0.192-0.167-0.283c-0.013-0.091-0.078-0.233-0.181-0.387c-0.102-0.153-0.192-0.192-0.257-0.295c-0.064-0.104-0.296-0.297-0.296-0.297c-0.102,0.013-0.102,0.205-0.051,0.271C10.834,17.28,10.938,17.243,11.002,17.474z",
+    "raph_globeAlt": "M16,1.466C7.973,1.466,1.466,7.973,1.466,16c0,8.027,6.507,14.534,14.534,14.534c8.027,0,14.534-6.507,14.534-14.534C30.534,7.973,24.027,1.466,16,1.466zM27.436,17.39c0.001,0.002,0.004,0.002,0.005,0.004c-0.022,0.187-0.054,0.37-0.085,0.554c-0.015-0.012-0.034-0.025-0.047-0.036c-0.103-0.09-0.254-0.128-0.318-0.115c-0.157,0.032,0.229,0.305,0.267,0.342c0.009,0.009,0.031,0.03,0.062,0.058c-1.029,5.312-5.709,9.338-11.319,9.338c-4.123,0-7.736-2.18-9.776-5.441c0.123-0.016,0.24-0.016,0.28-0.076c0.051-0.077,0.102-0.241,0.178-0.331c0.077-0.089,0.165-0.229,0.127-0.292c-0.039-0.064,0.101-0.344,0.088-0.419c-0.013-0.076-0.127-0.256,0.064-0.407s0.394-0.382,0.407-0.444c0.012-0.063,0.166-0.331,0.152-0.458c-0.012-0.127-0.152-0.28-0.24-0.318c-0.09-0.037-0.28-0.05-0.356-0.151c-0.077-0.103-0.292-0.203-0.368-0.178c-0.076,0.025-0.204,0.05-0.305-0.015c-0.102-0.062-0.267-0.139-0.33-0.189c-0.065-0.05-0.229-0.088-0.305-0.088c-0.077,0-0.065-0.052-0.178,0.101c-0.114,0.153,0,0.204-0.204,0.177c-0.204-0.023,0.025-0.036,0.141-0.189c0.113-0.152-0.013-0.242-0.141-0.203c-0.126,0.038-0.038,0.115-0.241,0.153c-0.203,0.036-0.203-0.09-0.076-0.115s0.355-0.139,0.355-0.19c0-0.051-0.025-0.191-0.127-0.191s-0.077-0.126-0.229-0.291c-0.092-0.101-0.196-0.164-0.299-0.204c-0.09-0.579-0.15-1.167-0.15-1.771c0-2.844,1.039-5.446,2.751-7.458c0.024-0.02,0.048-0.034,0.069-0.036c0.084-0.009,0.31-0.025,0.51-0.059c0.202-0.034,0.418-0.161,0.489-0.153c0.069,0.008,0.241,0.008,0.186-0.042C8.417,8.2,8.339,8.082,8.223,8.082S8.215,7.896,8.246,7.896c0.03,0,0.186,0.025,0.178,0.11C8.417,8.091,8.471,8.2,8.625,8.167c0.156-0.034,0.132-0.162,0.102-0.195C8.695,7.938,8.672,7.853,8.642,7.794c-0.031-0.06-0.023-0.136,0.14-0.153C8.944,7.625,9.168,7.708,9.16,7.573s0-0.28,0.046-0.356C9.253,7.142,9.354,7.09,9.299,7.065C9.246,7.04,9.176,7.099,9.121,6.972c-0.054-0.127,0.047-0.22,0.108-0.271c0.02-0.015,0.067-0.06,0.124-0.112C11.234,5.257,13.524,4.466,16,4.466c3.213,0,6.122,1.323,8.214,3.45c-0.008,0.022-0.01,0.052-0.031,0.056c-0.077,0.013-0.166,0.063-0.179-0.051c-0.013-0.114-0.013-0.331-0.102-0.203c-0.089,0.127-0.127,0.127-0.127,0.191c0,0.063,0.076,0.127,0.051,0.241C23.8,8.264,23.8,8.341,23.84,8.341c0.036,0,0.126-0.115,0.239-0.141c0.116-0.025,0.319-0.088,0.332,0.026c0.013,0.115,0.139,0.152,0.013,0.203c-0.128,0.051-0.267,0.026-0.293-0.051c-0.025-0.077-0.114-0.077-0.203-0.013c-0.088,0.063-0.279,0.292-0.279,0.292s-0.306,0.139-0.343,0.114c-0.04-0.025,0.101-0.165,0.203-0.228c0.102-0.064,0.178-0.204,0.14-0.242c-0.038-0.038-0.088-0.279-0.063-0.343c0.025-0.063,0.139-0.152,0.013-0.216c-0.127-0.063-0.217-0.14-0.318-0.178s-0.216,0.152-0.305,0.204c-0.089,0.051-0.076,0.114-0.191,0.127c-0.114,0.013-0.189,0.165,0,0.254c0.191,0.089,0.255,0.152,0.204,0.204c-0.051,0.051-0.267-0.025-0.267-0.025s-0.165-0.076-0.268-0.076c-0.101,0-0.229-0.063-0.33-0.076c-0.102-0.013-0.306-0.013-0.355,0.038c-0.051,0.051-0.179,0.203-0.28,0.152c-0.101-0.051-0.101-0.102-0.241-0.051c-0.14,0.051-0.279-0.038-0.355,0.038c-0.077,0.076-0.013,0.076-0.255,0c-0.241-0.076-0.189,0.051-0.419,0.089s-0.368-0.038-0.432,0.038c-0.064,0.077-0.153,0.217-0.19,0.127c-0.038-0.088,0.126-0.241,0.062-0.292c-0.062-0.051-0.33-0.025-0.367,0.013c-0.039,0.038-0.014,0.178,0.011,0.229c0.026,0.05,0.064,0.254-0.011,0.216c-0.077-0.038-0.064-0.166-0.141-0.152c-0.076,0.013-0.165,0.051-0.203,0.077c-0.038,0.025-0.191,0.025-0.229,0.076c-0.037,0.051,0.014,0.191-0.051,0.203c-0.063,0.013-0.114,0.064-0.254-0.025c-0.14-0.089-0.14-0.038-0.178-0.012c-0.038,0.025-0.216,0.127-0.229,0.012c-0.013-0.114,0.025-0.152-0.089-0.229c-0.115-0.076-0.026-0.076,0.127-0.025c0.152,0.05,0.343,0.075,0.622-0.013c0.28-0.089,0.395-0.127,0.28-0.178c-0.115-0.05-0.229-0.101-0.406-0.127c-0.179-0.025-0.42-0.025-0.7-0.127c-0.279-0.102-0.343-0.14-0.457-0.165c-0.115-0.026-0.813-0.14-1.132-0.089c-0.317,0.051-1.193,0.28-1.245,0.318s-0.128,0.19-0.292,0.318c-0.165,0.127-0.47,0.419-0.712,0.47c-0.241,0.051-0.521,0.254-0.521,0.305c0,0.051,0.101,0.242,0.076,0.28c-0.025,0.038,0.05,0.229,0.191,0.28c0.139,0.05,0.381,0.038,0.393-0.039c0.014-0.076,0.204-0.241,0.217-0.127c0.013,0.115,0.14,0.292,0.114,0.368c-0.025,0.077,0,0.153,0.09,0.14c0.088-0.012,0.559-0.114,0.559-0.114s0.153-0.064,0.127-0.166c-0.026-0.101,0.166-0.241,0.203-0.279c0.038-0.038,0.178-0.191,0.014-0.241c-0.167-0.051-0.293-0.064-0.115-0.216s0.292,0,0.521-0.229c0.229-0.229-0.051-0.292,0.191-0.305c0.241-0.013,0.496-0.025,0.444,0.051c-0.05,0.076-0.342,0.242-0.508,0.318c-0.166,0.077-0.14,0.216-0.076,0.292c0.063,0.076,0.09,0.254,0.204,0.229c0.113-0.025,0.254-0.114,0.38-0.101c0.128,0.012,0.383-0.013,0.42-0.013c0.039,0,0.216,0.178,0.114,0.203c-0.101,0.025-0.229,0.013-0.445,0.025c-0.215,0.013-0.456,0.013-0.456,0.051c0,0.039,0.292,0.127,0.19,0.191c-0.102,0.063-0.203-0.013-0.331-0.026c-0.127-0.012-0.203,0.166-0.241,0.267c-0.039,0.102,0.063,0.28-0.127,0.216c-0.191-0.063-0.331-0.063-0.381-0.038c-0.051,0.025-0.203,0.076-0.331,0.114c-0.126,0.038-0.076-0.063-0.242-0.063c-0.164,0-0.164,0-0.164,0l-0.103,0.013c0,0-0.101-0.063-0.114-0.165c-0.013-0.102,0.05-0.216-0.013-0.241c-0.064-0.026-0.292,0.012-0.33,0.088c-0.038,0.076-0.077,0.216-0.026,0.28c0.052,0.063,0.204,0.19,0.064,0.152c-0.14-0.038-0.317-0.051-0.419,0.026c-0.101,0.076-0.279,0.241-0.279,0.241s-0.318,0.025-0.318,0.102c0,0.077,0,0.178-0.114,0.191c-0.115,0.013-0.268,0.05-0.42,0.076c-0.153,0.025-0.139,0.088-0.317,0.102s-0.204,0.089-0.038,0.114c0.165,0.025,0.418,0.127,0.431,0.241c0.014,0.114-0.013,0.242-0.076,0.356c-0.043,0.079-0.305,0.026-0.458,0.026c-0.152,0-0.456-0.051-0.584,0c-0.127,0.051-0.102,0.305-0.064,0.419c0.039,0.114-0.012,0.178-0.063,0.216c-0.051,0.038-0.065,0.152,0,0.204c0.063,0.051,0.114,0.165,0.166,0.178c0.051,0.013,0.215-0.038,0.279,0.025c0.064,0.064,0.127,0.216,0.165,0.178c0.039-0.038,0.089-0.203,0.153-0.166c0.064,0.039,0.216-0.012,0.331-0.025s0.177-0.14,0.292-0.204c0.114-0.063,0.05-0.063,0.013-0.14c-0.038-0.076,0.114-0.165,0.204-0.254c0.088-0.089,0.253-0.013,0.292-0.115c0.038-0.102,0.051-0.279,0.151-0.267c0.103,0.013,0.243,0.076,0.331,0.076c0.089,0,0.279-0.14,0.332-0.165c0.05-0.025,0.241-0.013,0.267,0.102c0.025,0.114,0.241,0.254,0.292,0.279c0.051,0.025,0.381,0.127,0.433,0.165c0.05,0.038,0.126,0.153,0.152,0.254c0.025,0.102,0.114,0.102,0.128,0.013c0.012-0.089-0.065-0.254,0.025-0.242c0.088,0.013,0.191-0.026,0.191-0.026s-0.243-0.165-0.331-0.203c-0.088-0.038-0.255-0.114-0.331-0.241c-0.076-0.127-0.267-0.153-0.254-0.279c0.013-0.127,0.191-0.051,0.292,0.051c0.102,0.102,0.356,0.241,0.445,0.33c0.088,0.089,0.229,0.127,0.267,0.242c0.039,0.114,0.152,0.241,0.19,0.292c0.038,0.051,0.165,0.331,0.204,0.394c0.038,0.063,0.165-0.012,0.229-0.063c0.063-0.051,0.179-0.076,0.191-0.178c0.013-0.102-0.153-0.178-0.203-0.216c-0.051-0.038,0.127-0.076,0.191-0.127c0.063-0.05,0.177-0.14,0.228-0.063c0.051,0.077,0.026,0.381,0.051,0.432c0.025,0.051,0.279,0.127,0.331,0.191c0.05,0.063,0.267,0.089,0.304,0.051c0.039-0.038,0.242,0.026,0.294,0.038c0.049,0.013,0.202-0.025,0.304-0.05c0.103-0.025,0.204-0.102,0.191,0.063c-0.013,0.165-0.051,0.419-0.179,0.546c-0.127,0.127-0.076,0.191-0.202,0.191c-0.06,0-0.113,0-0.156,0.021c-0.041-0.065-0.098-0.117-0.175-0.097c-0.152,0.038-0.344,0.038-0.47,0.19c-0.128,0.153-0.178,0.165-0.204,0.114c-0.025-0.051,0.369-0.267,0.317-0.331c-0.05-0.063-0.355-0.038-0.521-0.038c-0.166,0-0.305-0.102-0.433-0.127c-0.126-0.025-0.292,0.127-0.418,0.254c-0.128,0.127-0.216,0.038-0.331,0.038c-0.115,0-0.331-0.165-0.331-0.165s-0.216-0.089-0.305-0.089c-0.088,0-0.267-0.165-0.318-0.165c-0.05,0-0.19-0.115-0.088-0.166c0.101-0.05,0.202,0.051,0.101-0.229c-0.101-0.279-0.33-0.216-0.419-0.178c-0.088,0.039-0.724,0.025-0.775,0.025c-0.051,0-0.419,0.127-0.533,0.178c-0.116,0.051-0.318,0.115-0.369,0.14c-0.051,0.025-0.318-0.051-0.433,0.013c-0.151,0.084-0.291,0.216-0.33,0.216c-0.038,0-0.153,0.089-0.229,0.28c-0.077,0.19,0.013,0.355-0.128,0.419c-0.139,0.063-0.394,0.204-0.495,0.305c-0.102,0.101-0.229,0.458-0.355,0.623c-0.127,0.165,0,0.317,0.025,0.419c0.025,0.101,0.114,0.292-0.025,0.471c-0.14,0.178-0.127,0.266-0.191,0.279c-0.063,0.013,0.063,0.063,0.088,0.19c0.025,0.128-0.114,0.255,0.128,0.369c0.241,0.113,0.355,0.217,0.418,0.367c0.064,0.153,0.382,0.407,0.382,0.407s0.229,0.205,0.344,0.293c0.114,0.089,0.152,0.038,0.177-0.05c0.025-0.09,0.178-0.104,0.355-0.104c0.178,0,0.305,0.04,0.483,0.014c0.178-0.025,0.356-0.141,0.42-0.166c0.063-0.025,0.279-0.164,0.443-0.063c0.166,0.103,0.141,0.241,0.23,0.332c0.088,0.088,0.24,0.037,0.355-0.051c0.114-0.09,0.064-0.052,0.203,0.025c0.14,0.075,0.204,0.151,0.077,0.267c-0.128,0.113-0.051,0.293-0.128,0.47c-0.076,0.178-0.063,0.203,0.077,0.278c0.14,0.076,0.394,0.548,0.47,0.638c0.077,0.088-0.025,0.342,0.064,0.495c0.089,0.151,0.178,0.254,0.077,0.331c-0.103,0.075-0.28,0.216-0.292,0.47s0.051,0.431,0.102,0.521s0.177,0.331,0.241,0.419c0.064,0.089,0.14,0.305,0.152,0.445c0.013,0.14-0.024,0.306,0.039,0.381c0.064,0.076,0.102,0.191,0.216,0.292c0.115,0.103,0.152,0.318,0.152,0.318s0.039,0.089,0.051,0.229c0.012,0.14,0.025,0.228,0.152,0.292c0.126,0.063,0.215,0.076,0.28,0.013c0.063-0.063,0.381-0.077,0.546-0.063c0.165,0.013,0.355-0.075,0.521-0.19s0.407-0.419,0.496-0.508c0.089-0.09,0.292-0.255,0.268-0.356c-0.025-0.101-0.077-0.203,0.024-0.254c0.102-0.052,0.344-0.152,0.356-0.229c0.013-0.077-0.09-0.395-0.115-0.457c-0.024-0.064,0.064-0.18,0.165-0.306c0.103-0.128,0.421-0.216,0.471-0.267c0.051-0.053,0.191-0.267,0.217-0.433c0.024-0.167-0.051-0.369,0-0.457c0.05-0.09,0.013-0.165-0.103-0.268c-0.114-0.102-0.089-0.407-0.127-0.457c-0.037-0.051-0.013-0.319,0.063-0.345c0.076-0.023,0.242-0.279,0.344-0.393c0.102-0.114,0.394-0.47,0.534-0.496c0.139-0.025,0.355-0.229,0.368-0.343c0.013-0.115,0.38-0.547,0.394-0.635c0.013-0.09,0.166-0.42,0.102-0.497c-0.062-0.076-0.559,0.115-0.622,0.141c-0.064,0.025-0.241,0.127-0.446,0.113c-0.202-0.013-0.114-0.177-0.127-0.254c-0.012-0.076-0.228-0.368-0.279-0.381c-0.051-0.012-0.203-0.166-0.267-0.317c-0.063-0.153-0.152-0.343-0.254-0.458c-0.102-0.114-0.165-0.38-0.268-0.559c-0.101-0.178-0.189-0.407-0.279-0.572c-0.021-0.041-0.045-0.079-0.067-0.117c0.118-0.029,0.289-0.082,0.31-0.009c0.024,0.088,0.165,0.279,0.19,0.419s0.165,0.089,0.178,0.216c0.014,0.128,0.14,0.433,0.19,0.47c0.052,0.038,0.28,0.242,0.318,0.318c0.038,0.076,0.089,0.178,0.127,0.369c0.038,0.19,0.076,0.444,0.179,0.482c0.102,0.038,0.444-0.064,0.508-0.102s0.482-0.242,0.635-0.255c0.153-0.012,0.179-0.115,0.368-0.152c0.191-0.038,0.331-0.177,0.458-0.28c0.127-0.101,0.28-0.355,0.33-0.444c0.052-0.088,0.179-0.152,0.115-0.253c-0.063-0.103-0.331-0.254-0.433-0.268c-0.102-0.012-0.089-0.178-0.152-0.178s-0.051,0.088-0.178,0.153c-0.127,0.063-0.255,0.19-0.344,0.165s0.026-0.089-0.113-0.203s-0.192-0.14-0.192-0.228c0-0.089-0.278-0.255-0.304-0.382c-0.026-0.127,0.19-0.305,0.254-0.19c0.063,0.114,0.115,0.292,0.279,0.368c0.165,0.076,0.318,0.204,0.395,0.229c0.076,0.025,0.267-0.14,0.33-0.114c0.063,0.024,0.191,0.253,0.306,0.292c0.113,0.038,0.495,0.051,0.559,0.051s0.33,0.013,0.381-0.063c0.051-0.076,0.089-0.076,0.153-0.076c0.062,0,0.177,0.229,0.267,0.254c0.089,0.025,0.254,0.013,0.241,0.179c-0.012,0.164,0.076,0.305,0.165,0.317c0.09,0.012,0.293-0.191,0.293-0.191s0,0.318-0.012,0.433c-0.014,0.113,0.139,0.534,0.139,0.534s0.19,0.393,0.241,0.482s0.267,0.355,0.267,0.47c0,0.115,0.025,0.293,0.103,0.293c0.076,0,0.152-0.203,0.24-0.331c0.091-0.126,0.116-0.305,0.153-0.432c0.038-0.127,0.038-0.356,0.038-0.444c0-0.09,0.075-0.166,0.255-0.242c0.178-0.076,0.304-0.292,0.456-0.407c0.153-0.115,0.141-0.305,0.446-0.305c0.305,0,0.278,0,0.355-0.077c0.076-0.076,0.151-0.127,0.19,0.013c0.038,0.14,0.254,0.343,0.292,0.394c0.038,0.052,0.114,0.191,0.103,0.344c-0.013,0.152,0.012,0.33,0.075,0.33s0.191-0.216,0.191-0.216s0.279-0.189,0.267,0.013c-0.014,0.203,0.025,0.419,0.025,0.545c0,0.053,0.042,0.135,0.088,0.21c-0.005,0.059-0.004,0.119-0.009,0.178C27.388,17.153,27.387,17.327,27.436,17.39zM20.382,12.064c0.076,0.05,0.102,0.127,0.152,0.203c0.052,0.076,0.14,0.05,0.203,0.114c0.063,0.064-0.178,0.14-0.075,0.216c0.101,0.077,0.151,0.381,0.165,0.458c0.013,0.076-0.279,0.114-0.369,0.102c-0.089-0.013-0.354-0.102-0.445-0.127c-0.089-0.026-0.139-0.343-0.025-0.331c0.116,0.013,0.141-0.025,0.267-0.139c0.128-0.115-0.189-0.166-0.278-0.191c-0.089-0.025-0.268-0.305-0.331-0.394c-0.062-0.089-0.014-0.228,0.141-0.331c0.076-0.051,0.279,0.063,0.381,0c0.101-0.063,0.203-0.14,0.241-0.165c0.039-0.025,0.293,0.038,0.33,0.114c0.039,0.076,0.191,0.191,0.141,0.229c-0.052,0.038-0.281,0.076-0.356,0c-0.075-0.077-0.255,0.012-0.268,0.152C20.242,12.115,20.307,12.013,20.382,12.064zM16.875,12.28c-0.077-0.025,0.025-0.178,0.102-0.229c0.075-0.051,0.164-0.178,0.241-0.305c0.076-0.127,0.178-0.14,0.241-0.127c0.063,0.013,0.203,0.241,0.241,0.318c0.038,0.076,0.165-0.026,0.217-0.051c0.05-0.025,0.127-0.102,0.14-0.165s0.127-0.102,0.254-0.102s0.013,0.102-0.076,0.127c-0.09,0.025-0.038,0.077,0.113,0.127c0.153,0.051,0.293,0.191,0.459,0.279c0.165,0.089,0.19,0.267,0.088,0.292c-0.101,0.025-0.406,0.051-0.521,0.038c-0.114-0.013-0.254-0.127-0.419-0.153c-0.165-0.025-0.369-0.013-0.433,0.077s-0.292,0.05-0.395,0.05c-0.102,0-0.228,0.127-0.253,0.077C16.875,12.534,16.951,12.306,16.875,12.28zM17.307,9.458c0.063-0.178,0.419,0.038,0.355,0.127C17.599,9.675,17.264,9.579,17.307,9.458zM17.802,18.584c0.063,0.102-0.14,0.431-0.254,0.407c-0.113-0.027-0.076-0.318-0.038-0.382C17.548,18.545,17.769,18.529,17.802,18.584zM13.189,12.674c0.025-0.051-0.039-0.153-0.127-0.013C13.032,12.71,13.164,12.725,13.189,12.674zM20.813,8.035c0.141,0.076,0.339,0.107,0.433,0.013c0.076-0.076,0.013-0.204-0.05-0.216c-0.064-0.013-0.104-0.115,0.062-0.203c0.165-0.089,0.343-0.204,0.534-0.229c0.19-0.025,0.622-0.038,0.774,0c0.152,0.039,0.382-0.166,0.445-0.254s-0.203-0.152-0.279-0.051c-0.077,0.102-0.444,0.076-0.521,0.051c-0.076-0.025-0.686,0.102-0.812,0.102c-0.128,0-0.179,0.152-0.356,0.229c-0.179,0.076-0.42,0.191-0.509,0.229c-0.088,0.038-0.177,0.19-0.101,0.216C20.509,7.947,20.674,7.959,20.813,8.035zM14.142,12.674c0.064-0.089-0.051-0.217-0.114-0.217c-0.12,0-0.178,0.191-0.103,0.254C14.002,12.776,14.078,12.763,14.142,12.674zM14.714,13.017c0.064,0.025,0.114,0.102,0.165,0.114c0.052,0.013,0.217,0,0.167-0.127s-0.167-0.127-0.204-0.127c-0.038,0-0.203-0.038-0.267,0C14.528,12.905,14.65,12.992,14.714,13.017zM11.308,10.958c0.101,0.013,0.217-0.063,0.305-0.101c0.088-0.038,0.216-0.114,0.216-0.229c0-0.114-0.025-0.216-0.077-0.267c-0.051-0.051-0.14-0.064-0.216-0.051c-0.115,0.02-0.127,0.14-0.203,0.14c-0.076,0-0.165,0.025-0.14,0.114s0.077,0.152,0,0.19C11.117,10.793,11.205,10.946,11.308,10.958zM11.931,10.412c0.127,0.051,0.394,0.102,0.292,0.153c-0.102,0.051-0.28,0.19-0.305,0.267s0.216,0.153,0.216,0.153s-0.077,0.089-0.013,0.114c0.063,0.025,0.102-0.089,0.203-0.089c0.101,0,0.304,0.063,0.406,0.063c0.103,0,0.267-0.14,0.254-0.229c-0.013-0.089-0.14-0.229-0.254-0.28c-0.113-0.051-0.241-0.28-0.317-0.331c-0.076-0.051,0.076-0.178-0.013-0.267c-0.09-0.089-0.153-0.076-0.255-0.14c-0.102-0.063-0.191,0.013-0.254,0.089c-0.063,0.076-0.14-0.013-0.217,0.012c-0.102,0.035-0.063,0.166-0.012,0.229C11.714,10.221,11.804,10.361,11.931,10.412zM24.729,17.198c-0.083,0.037-0.153,0.47,0,0.521c0.152,0.052,0.241-0.202,0.191-0.267C24.868,17.39,24.843,17.147,24.729,17.198zM20.114,20.464c-0.159-0.045-0.177,0.166-0.304,0.306c-0.128,0.141-0.267,0.254-0.317,0.241c-0.052-0.013-0.331,0.089-0.242,0.279c0.089,0.191,0.076,0.382-0.013,0.472c-0.089,0.088,0.076,0.342,0.052,0.482c-0.026,0.139,0.037,0.229,0.215,0.229s0.242-0.064,0.318-0.229c0.076-0.166,0.088-0.331,0.164-0.47c0.077-0.141,0.141-0.434,0.179-0.51c0.038-0.075,0.114-0.316,0.102-0.457C20.254,20.669,20.204,20.489,20.114,20.464zM10.391,8.802c-0.069-0.06-0.229-0.102-0.306-0.11c-0.076-0.008-0.152,0.06-0.321,0.06c-0.168,0-0.279,0.067-0.347,0C9.349,8.684,9.068,8.65,9.042,8.692C9.008,8.749,8.941,8.751,9.008,8.87c0.069,0.118,0.12,0.186,0.179,0.178s0.262-0.017,0.288,0.051C9.5,9.167,9.569,9.226,9.712,9.184c0.145-0.042,0.263-0.068,0.296-0.119c0.033-0.051,0.263-0.059,0.263-0.059S10.458,8.861,10.391,8.802z",
+    "raph_globe": "M16,1.466C7.973,1.466,1.466,7.973,1.466,16c0,8.027,6.507,14.534,14.534,14.534c8.027,0,14.534-6.507,14.534-14.534C30.534,7.973,24.027,1.466,16,1.466zM19.158,23.269c-0.079,0.064-0.183,0.13-0.105,0.207c0.078,0.078-0.09,0.131-0.09,0.17s0.104,0.246,0.052,0.336c-0.052,0.092-0.091,0.223-0.13,0.301c-0.039,0.077-0.131,0.155-0.104,0.272c0.025,0.116-0.104,0.077-0.104,0.194c0,0.116,0.116,0.065,0.09,0.208c-0.025,0.144-0.09,0.183-0.09,0.285c0,0.104,0.064,0.247,0.064,0.286s-0.064,0.17-0.155,0.272c-0.092,0.104-0.155,0.17-0.144,0.233c0.014,0.065,0.104,0.144,0.091,0.184c-0.013,0.037-0.129,0.168-0.116,0.259c0.014,0.09,0.129,0.053,0.155,0.116c0.026,0.065-0.155,0.118-0.078,0.183c0.078,0.064,0.183,0.051,0.156,0.208c-0.019,0.112,0.064,0.163,0.126,0.198c-0.891,0.221-1.818,0.352-2.777,0.352C9.639,27.533,4.466,22.36,4.466,16c0-2.073,0.557-4.015,1.518-5.697c0.079-0.042,0.137-0.069,0.171-0.062c0.065,0.013,0.079,0.104,0.183,0.13c0.104,0.026,0.195-0.078,0.26-0.117c0.064-0.039,0.116-0.195,0.051-0.182c-0.065,0.013-0.234,0-0.234,0s0.183-0.104,0.183-0.169s0.025-0.169,0.129-0.208C6.83,9.655,6.83,9.681,6.765,9.837C6.7,9.993,6.896,9.928,6.973,9.863s0.13-0.013,0.272-0.104c0.143-0.091,0.143-0.143,0.221-0.143c0.078,0,0.221,0.143,0.299,0.091c0.077-0.052,0.299,0.065,0.429,0.065c0.129,0,0.545,0.169,0.624,0.169c0.078,0,0.312,0.09,0.325,0.259c0.013,0.169,0.09,0.156,0.168,0.156s0.26,0.065,0.26,0.13c0,0.065-0.052,0.325,0.078,0.39c0.129,0.064,0.247,0.169,0.299,0.143c0.052-0.026,0-0.233-0.064-0.26c-0.065-0.026-0.027-0.117-0.052-0.169c-0.026-0.051,0.078-0.051,0.117,0.039c0.039,0.091,0.143,0.26,0.208,0.26c0.064,0,0.208,0.156,0.168,0.247c-0.039,0.091,0.039,0.221,0.156,0.221c0.116,0,0.26,0.182,0.312,0.195c0.052,0.013,0.117,0.078,0.117,0.117c0,0.04,0.065,0.26,0.065,0.351c0,0.09-0.04,0.454-0.053,0.597s0.104,0.39,0.234,0.52c0.129,0.13,0.246,0.377,0.324,0.429c0.079,0.052,0.13,0.195,0.247,0.182c0.117-0.013,0.195,0.078,0.299,0.26c0.104,0.182,0.208,0.48,0.286,0.506c0.078,0.026,0.208,0.117,0.142,0.182c-0.064,0.064-0.168,0.208-0.051,0.208c0.117,0,0.156-0.065,0.247,0.053c0.09,0.116,0.208,0.181,0.194,0.26c-0.013,0.077,0.104,0.103,0.156,0.116c0.052,0.013,0.169,0.247,0.286,0.143c0.117-0.104-0.155-0.259-0.234-0.326c-0.078-0.064,0-0.207-0.182-0.35c-0.182-0.143-0.156-0.247-0.286-0.351c-0.13-0.104-0.233-0.195-0.104-0.286c0.13-0.091,0.143,0.091,0.195,0.208c0.052,0.116,0.324,0.351,0.441,0.454c0.117,0.104,0.326,0.468,0.39,0.468s0.247,0.208,0.247,0.208s0.103,0.168,0.064,0.22c-0.039,0.052,0.053,0.247,0.144,0.299c0.09,0.052,0.455,0.22,0.507,0.247c0.052,0.027,0.155,0.221,0.299,0.221c0.142,0,0.247,0.014,0.286,0.053c0.039,0.038,0.155,0.194,0.234,0.104c0.078-0.092,0.09-0.131,0.208-0.131c0.117,0,0.168,0.091,0.233,0.156c0.065,0.065,0.247,0.235,0.338,0.222c0.091-0.013,0.208,0.104,0.273,0.064s0.169,0.025,0.22,0.052c0.054,0.026,0.234,0.118,0.222,0.272c-0.013,0.157,0.103,0.195,0.182,0.234c0.078,0.039,0.182,0.13,0.248,0.195c0.064,0.063,0.206,0.077,0.246,0.116c0.039,0.039,0.065,0.117,0.182,0.052c0.116-0.064,0.092-0.181,0.092-0.181s0.129-0.026,0.194,0.026c0.064,0.05,0.104,0.22,0.144,0.246c0.038,0.026,0.115,0.221,0.063,0.362c-0.051,0.145-0.038,0.286-0.091,0.286c-0.052,0-0.116,0.17-0.195,0.209c-0.076,0.039-0.285,0.221-0.272,0.286c0.013,0.063,0.131,0.258,0.104,0.35c-0.025,0.091-0.194,0.195-0.154,0.338c0.038,0.144,0.312,0.183,0.323,0.312c0.014,0.131,0.209,0.417,0.235,0.546c0.025,0.13,0.246,0.272,0.246,0.453c0,0.184,0.312,0.3,0.377,0.312c0.063,0.013,0.182,0.131,0.272,0.17s0.169,0.116,0.233,0.221s0.053,0.261,0.053,0.299c0,0.039-0.039,0.44-0.078,0.674C19.145,23.021,19.235,23.203,19.158,23.269zM10.766,11.188c0.039,0.013,0.117,0.091,0.156,0.091c0.04,0,0.234,0.156,0.286,0.208c0.053,0.052,0.053,0.195-0.013,0.208s-0.104-0.143-0.117-0.208c-0.013-0.065-0.143-0.065-0.208-0.104C10.805,11.344,10.66,11.152,10.766,11.188zM27.51,16.41c-0.144,0.182-0.13,0.272-0.195,0.286c-0.064,0.013,0.065,0.065,0.09,0.194c0.022,0.112-0.065,0.224,0.063,0.327c-0.486,4.619-3.71,8.434-8.016,9.787c-0.007-0.011-0.019-0.025-0.021-0.034c-0.027-0.078-0.027-0.233,0.064-0.285c0.091-0.053,0.312-0.233,0.363-0.272c0.052-0.04,0.13-0.221,0.091-0.247c-0.038-0.026-0.232,0-0.26-0.039c-0.026-0.039-0.026-0.092,0.104-0.182c0.13-0.091,0.195-0.222,0.247-0.26c0.052-0.039,0.155-0.117,0.195-0.209c0.038-0.09-0.041-0.039-0.118-0.039s-0.117-0.142-0.117-0.207s0.195,0.026,0.339,0.052c0.143,0.024,0.077-0.065,0.064-0.142c-0.013-0.078,0.026-0.209,0.105-0.17c0.076,0.039,0.479-0.013,0.531-0.026c0.052-0.013,0.194-0.246,0.246-0.312c0.053-0.065,0.064-0.129,0-0.168c-0.065-0.04-0.143-0.184-0.168-0.221c-0.026-0.041-0.039-0.274-0.013-0.34c0.025-0.063,0,0.377,0.181,0.43c0.183,0.052,0.286,0.078,0.455-0.078c0.169-0.155,0.298-0.26,0.312-0.363c0.013-0.104,0.052-0.209,0.117-0.246c0.065-0.039,0.104,0.103,0.182-0.065c0.078-0.17,0.156-0.157,0.234-0.299c0.077-0.144-0.13-0.325,0.024-0.43c0.157-0.103,0.43-0.233,0.43-0.233s0.078-0.039,0.234-0.078c0.155-0.038,0.324-0.014,0.376-0.09c0.052-0.079,0.104-0.247,0.182-0.338c0.079-0.092,0.169-0.234,0.13-0.299c-0.039-0.065,0.104-0.352,0.091-0.429c-0.013-0.078-0.13-0.261,0.065-0.416s0.402-0.391,0.416-0.454c0.012-0.065,0.169-0.338,0.154-0.469c-0.012-0.129-0.154-0.285-0.245-0.325c-0.092-0.037-0.286-0.05-0.364-0.154s-0.299-0.208-0.377-0.182c-0.077,0.026-0.208,0.051-0.312-0.015c-0.104-0.063-0.272-0.143-0.337-0.194c-0.066-0.051-0.234-0.09-0.312-0.09s-0.065-0.053-0.182,0.103c-0.117,0.157,0,0.209-0.208,0.182c-0.209-0.024,0.025-0.038,0.144-0.194c0.115-0.155-0.014-0.247-0.144-0.207c-0.13,0.039-0.039,0.117-0.247,0.156c-0.207,0.038-0.207-0.092-0.077-0.117c0.13-0.026,0.363-0.143,0.363-0.194c0-0.053-0.026-0.196-0.13-0.196s-0.078-0.129-0.233-0.297c-0.156-0.17-0.351-0.274-0.508-0.249c-0.154,0.026-0.272,0.065-0.35-0.076c-0.078-0.144-0.169-0.17-0.222-0.247c-0.051-0.078-0.182,0-0.221-0.039s-0.039-0.039-0.039-0.039s-0.169,0.039-0.077-0.078c0.09-0.117,0.129-0.338,0.09-0.325c-0.038,0.013-0.104,0.196-0.168,0.183c-0.064-0.013-0.014-0.04-0.144-0.117c-0.13-0.078-0.337-0.013-0.337,0.052c0,0.065-0.065,0.117-0.065,0.117s-0.039-0.038-0.078-0.117c-0.039-0.078-0.221-0.091-0.312-0.013c-0.09,0.078-0.142-0.196-0.207-0.196s-0.194,0.065-0.26,0.184c-0.064,0.116-0.038,0.285-0.092,0.272c-0.05-0.013-0.063-0.233-0.05-0.312c0.012-0.079,0.155-0.208,0.05-0.234c-0.103-0.026-0.259,0.13-0.323,0.143c-0.065,0.013-0.195,0.104-0.273,0.209c-0.077,0.103-0.116,0.168-0.195,0.207c-0.077,0.039-0.193,0-0.167-0.039c0.025-0.039-0.222-0.181-0.261-0.13c-0.04,0.052-0.155,0.091-0.272,0.144c-0.117,0.052-0.222-0.065-0.247-0.117s-0.079-0.064-0.091-0.234c-0.013-0.168,0.027-0.351,0.065-0.454c0.038-0.104-0.195-0.312-0.286-0.3c-0.091,0.015-0.182,0.105-0.272,0.091c-0.092-0.012-0.052-0.038-0.195-0.038c-0.143,0-0.026-0.025,0-0.143c0.025-0.116-0.052-0.273,0.092-0.377c0.142-0.104,0.091-0.351,0-0.363c-0.092-0.014-0.261,0.039-0.377,0.026c-0.116-0.014-0.208,0.091-0.169,0.207c0.039,0.117-0.065,0.195-0.104,0.183c-0.039-0.013-0.09-0.078-0.234,0.026c-0.142,0.103-0.194,0.064-0.337-0.052c-0.143-0.118-0.299-0.234-0.325-0.416c-0.026-0.182-0.04-0.364,0.013-0.468c0.051-0.104,0.051-0.285-0.026-0.312c-0.078-0.025,0.09-0.155,0.181-0.181c0.092-0.026,0.234-0.143,0.26-0.195c0.026-0.052,0.156-0.04,0.298-0.04c0.143,0,0.169,0,0.312,0.078c0.143,0.078,0.169-0.039,0.169-0.078c0-0.039,0.052-0.117,0.208-0.104c0.156,0.013,0.376-0.052,0.416-0.013s0.116,0.195,0.194,0.143c0.079-0.051,0.104-0.143,0.131,0.014c0.025,0.155,0.09,0.39,0.208,0.429c0.116,0.039,0.052,0.194,0.168,0.207c0.115,0.013,0.17-0.246,0.131-0.337c-0.04-0.09-0.118-0.363-0.183-0.428c-0.064-0.065-0.064-0.234,0.064-0.286c0.13-0.052,0.442-0.312,0.532-0.389c0.092-0.079,0.338-0.144,0.261-0.248c-0.078-0.104-0.104-0.168-0.104-0.247s0.078-0.052,0.117,0s0.194-0.078,0.155-0.143c-0.038-0.064-0.026-0.155,0.065-0.143c0.091,0.013,0.116-0.065,0.078-0.117c-0.039-0.052,0.091-0.117,0.182-0.091c0.092,0.026,0.325-0.013,0.364-0.065c0.038-0.052-0.078-0.104-0.078-0.208c0-0.104,0.155-0.195,0.247-0.208c0.091-0.013,0.207,0,0.221-0.039c0.012-0.039,0.143-0.143,0.155-0.052c0.014,0.091,0,0.247,0.104,0.247c0.104,0,0.232-0.117,0.272-0.129c0.038-0.013,0.286-0.065,0.338-0.078c0.052-0.013,0.363-0.039,0.325-0.13c-0.039-0.09-0.078-0.181-0.118-0.22c-0.039-0.039-0.077,0.013-0.13,0.078c-0.051,0.065-0.143,0.065-0.168,0.013c-0.026-0.051,0.012-0.207-0.078-0.156c-0.092,0.052-0.104,0.104-0.157,0.078c-0.052-0.026-0.103-0.117-0.103-0.117s0.129-0.064,0.038-0.182c-0.09-0.117-0.221-0.091-0.35-0.025c-0.13,0.064-0.118,0.051-0.273,0.09s-0.234,0.078-0.234,0.078s0.209-0.129,0.299-0.208c0.091-0.078,0.209-0.117,0.286-0.195c0.078-0.078,0.285,0.039,0.285,0.039s0.105-0.104,0.105-0.039s-0.027,0.234,0.051,0.234c0.079,0,0.299-0.104,0.21-0.131c-0.093-0.026,0.129,0,0.219-0.065c0.092-0.065,0.194-0.065,0.247-0.09c0.052-0.026,0.092-0.143,0.182-0.143c0.092,0,0.13,0.117,0,0.195s-0.143,0.273-0.208,0.325c-0.064,0.052-0.026,0.117,0.078,0.104c0.104-0.013,0.194,0.013,0.286-0.013s0.143,0.026,0.168,0.065c0.026,0.039,0.104-0.039,0.104-0.039s0.169-0.039,0.221,0.026c0.053,0.064,0.092-0.039,0.053-0.104c-0.039-0.064-0.092-0.129-0.13-0.208c-0.039-0.078-0.091-0.104-0.194-0.078c-0.104,0.026-0.13-0.026-0.195-0.064c-0.065-0.04-0.118,0.052-0.065-0.04c0.053-0.09,0.078-0.117,0.117-0.195c0.039-0.078,0.209-0.221,0.039-0.259c-0.169-0.04-0.222-0.065-0.247-0.143c-0.026-0.078-0.221-0.221-0.272-0.221c-0.053,0-0.233,0-0.247-0.065c-0.013-0.065-0.143-0.208-0.208-0.273c-0.064-0.065-0.312-0.351-0.351-0.377c-0.039-0.026-0.091-0.013-0.208,0.143c-0.116,0.157-0.22,0.183-0.312,0.144c-0.091-0.039-0.104-0.026-0.193-0.13c-0.093-0.104,0.09-0.117,0.051-0.182c-0.04-0.064-0.247-0.091-0.377-0.104c-0.13-0.013-0.221-0.156-0.416-0.169c-0.194-0.013-0.428,0.026-0.493,0.026c-0.064,0-0.064,0.091-0.09,0.234c-0.027,0.143,0.09,0.182-0.027,0.208c-0.116,0.026-0.169,0.039-0.052,0.091c0.117,0.052,0.273,0.26,0.273,0.26s0,0.117-0.092,0.182c-0.09,0.065-0.182,0.13-0.233,0.053c-0.053-0.079-0.195-0.065-0.155,0.013c0.038,0.078,0.116,0.117,0.116,0.195c0,0.077,0.117,0.272,0.039,0.337c-0.078,0.065-0.168,0.014-0.233,0.026s-0.131-0.104-0.078-0.13c0.051-0.026-0.014-0.221-0.014-0.221s-0.155,0.221-0.143,0.104c0.014-0.117-0.064-0.13-0.064-0.221c0-0.091-0.079-0.13-0.194-0.104c-0.118,0.026-0.26-0.04-0.482-0.079c-0.22-0.039-0.311-0.064-0.493-0.156c-0.182-0.091-0.247-0.026-0.338-0.013c-0.091,0.013-0.052-0.182-0.169-0.207c-0.116-0.027-0.181,0.025-0.207-0.144c-0.026-0.168,0.039-0.208,0.324-0.39c0.286-0.182,0.247-0.26,0.468-0.286c0.22-0.026,0.325,0.026,0.325-0.039s0.052-0.325,0.052-0.195S16.95,9.109,16.832,9.2c-0.116,0.091-0.052,0.104,0.04,0.104c0.091,0,0.259-0.091,0.259-0.091s0.208-0.091,0.26-0.013c0.053,0.078,0.053,0.156,0.144,0.156s0.285-0.104,0.116-0.195c-0.168-0.091-0.272-0.078-0.376-0.182s-0.078-0.065-0.195-0.039c-0.116,0.026-0.116-0.039-0.156-0.039s-0.104,0.026-0.13-0.026c-0.025-0.052,0.014-0.065,0.145-0.065c0.129,0,0.285,0.039,0.285,0.039s0.155-0.052,0.194-0.065c0.039-0.013,0.247-0.039,0.208-0.155c-0.04-0.117-0.169-0.117-0.208-0.156s0.078-0.09,0.143-0.117c0.065-0.026,0.247,0,0.247,0s0.117,0.013,0.117-0.039S17.897,8.2,17.976,8.239s0,0.156,0.117,0.13c0.116-0.026,0.143,0,0.207,0.039c0.065,0.039-0.013,0.195-0.077,0.221c-0.065,0.025-0.169,0.077-0.026,0.09c0.144,0.014,0.246,0.014,0.246,0.014s0.092-0.091,0.131-0.169c0.038-0.078,0.104-0.026,0.155,0c0.052,0.025,0.247,0.065,0.065,0.117c-0.183,0.052-0.221,0.117-0.26,0.182c-0.038,0.065-0.053,0.104-0.221,0.065c-0.17-0.039-0.26-0.026-0.299,0.039c-0.039,0.064-0.013,0.273,0.053,0.247c0.063-0.026,0.129-0.026,0.207-0.052c0.078-0.026,0.39,0.026,0.467,0.013c0.078-0.013,0.209,0.13,0.248,0.104c0.039-0.026,0.117,0.052,0.194,0.104c0.078,0.052,0.052-0.117,0.194-0.013c0.144,0.104,0.065,0.104,0.144,0.104c0.076,0,0.246,0.013,0.246,0.013s0.014-0.129,0.144-0.104c0.13,0.026,0.245,0.169,0.232,0.064c-0.012-0.103,0.013-0.181-0.09-0.259c-0.104-0.078-0.272-0.13-0.299-0.169c-0.026-0.039-0.052-0.091-0.013-0.117c0.039-0.025,0.221,0.013,0.324,0.079c0.104,0.065,0.195,0.13,0.273,0.078c0.077-0.052,0.17-0.078,0.208-0.117c0.038-0.04,0.13-0.156,0.13-0.156s-0.391-0.051-0.441-0.117c-0.053-0.065-0.235-0.156-0.287-0.156s-0.194,0.091-0.246-0.039s-0.052-0.286-0.105-0.299c-0.05-0.013-0.597-0.091-0.674-0.13c-0.078-0.039-0.39-0.13-0.507-0.195s-0.286-0.156-0.389-0.156c-0.104,0-0.533,0.052-0.611,0.039c-0.078-0.013-0.312,0.026-0.403,0.039c-0.091,0.013,0.117,0.182-0.077,0.221c-0.195,0.039-0.169,0.065-0.13-0.13c0.038-0.195-0.131-0.247-0.299-0.169c-0.169,0.078-0.442,0.13-0.377,0.221c0.065,0.091-0.012,0.157,0.117,0.247c0.13,0.091,0.183,0.117,0.35,0.104c0.17-0.013,0.339,0.025,0.339,0.025s0,0.157-0.064,0.182c-0.065,0.026-0.169,0.026-0.196,0.104c-0.025,0.078-0.155,0.117-0.155,0.078s0.065-0.169-0.026-0.234c-0.09-0.065-0.117-0.078-0.221-0.013c-0.104,0.065-0.116,0.091-0.169-0.013C16.053,8.291,15.897,8.2,15.897,8.2s-0.104-0.129-0.182-0.194c-0.077-0.065-0.22-0.052-0.234,0.013c-0.013,0.064,0.026,0.129,0.078,0.247c0.052,0.117,0.104,0.337,0.013,0.351c-0.091,0.013-0.104,0.026-0.195,0.052c-0.091,0.026-0.13-0.039-0.13-0.143s-0.04-0.195-0.013-0.234c0.026-0.039-0.104,0.027-0.234,0c-0.13-0.025-0.233,0.052-0.104,0.092c0.13,0.039,0.157,0.194,0.039,0.233c-0.117,0.039-0.559,0-0.702,0s-0.35,0.039-0.39-0.039c-0.039-0.078,0.118-0.129,0.208-0.129c0.091,0,0.363,0.012,0.467-0.13c0.104-0.143-0.13-0.169-0.233-0.169c-0.104,0-0.183-0.039-0.299-0.155c-0.118-0.117,0.078-0.195,0.052-0.247c-0.026-0.052-0.156-0.014-0.272-0.014c-0.117,0-0.299-0.09-0.299,0.014c0,0.104,0.143,0.402,0.052,0.337c-0.091-0.064-0.078-0.156-0.143-0.234c-0.065-0.078-0.168-0.065-0.299-0.052c-0.129,0.013-0.35,0.052-0.415,0.039c-0.064-0.013-0.013-0.013-0.156-0.078c-0.142-0.065-0.208-0.052-0.312-0.117C12.091,7.576,12.182,7.551,12,7.538c-0.181-0.013-0.168,0.09-0.35,0.065c-0.182-0.026-0.234,0.013-0.416,0c-0.182-0.013-0.272-0.026-0.299,0.065c-0.025,0.091-0.078,0.247-0.156,0.247c-0.077,0-0.169,0.091,0.078,0.104c0.247,0.013,0.105,0.129,0.325,0.117c0.221-0.013,0.416-0.013,0.468-0.117c0.052-0.104,0.091-0.104,0.117-0.065c0.025,0.039,0.22,0.272,0.22,0.272s0.131,0.104,0.183,0.13c0.051,0.026-0.052,0.143-0.156,0.078c-0.104-0.065-0.299-0.051-0.377-0.116c-0.078-0.065-0.429-0.065-0.52-0.052c-0.09,0.013-0.247-0.039-0.299-0.039c-0.051,0-0.221,0.13-0.221,0.13S10.532,8.252,10.494,8.2c-0.039-0.052-0.104,0.052-0.156,0.065c-0.052,0.013-0.208-0.104-0.364-0.052C9.818,8.265,9.87,8.317,9.649,8.304s-0.272-0.052-0.35-0.039C9.22,8.278,9.22,8.278,9.22,8.278S9.233,8.33,9.143,8.382C9.052,8.434,8.986,8.499,8.921,8.421C8.857,8.343,8.818,8.343,8.779,8.33c-0.04-0.013-0.118-0.078-0.286-0.04C8.324,8.33,8.064,8.239,8.013,8.239c-0.04,0-0.313-0.015-0.491-0.033c2.109-2.292,5.124-3.74,8.478-3.74c2.128,0,4.117,0.589,5.83,1.598c-0.117,0.072-0.319,0.06-0.388,0.023c-0.078-0.043-0.158-0.078-0.475-0.061c-0.317,0.018-0.665,0.122-0.595,0.226c0.072,0.104-0.142,0.165-0.197,0.113c-0.055-0.052-0.309,0.06-0.293,0.165c0.016,0.104-0.039,0.225-0.175,0.199c-0.134-0.027-0.229,0.06-0.237,0.146c-0.007,0.087-0.309,0.147-0.332,0.147c-0.024,0-0.412-0.008-0.27,0.095c0.097,0.069,0.15,0.027,0.27,0.052c0.119,0.026,0.214,0.217,0.277,0.243c0.062,0.026,0.15,0,0.189-0.052c0.04-0.052,0.095-0.234,0.095-0.234s0,0.173,0.097,0.208c0.095,0.035,0.331-0.026,0.395-0.017c0.064,0.008,0.437,0.061,0.538,0.112c0.104,0.052,0.356,0.087,0.428,0.199c0.071,0.113,0.08,0.503,0.119,0.546c0.04,0.043,0.174-0.139,0.205-0.182c0.031-0.044,0.198-0.018,0.254,0.042c0.056,0.061,0.182,0.208,0.175,0.269C21.9,8.365,21.877,8.459,21.83,8.425c-0.048-0.034-0.127-0.025-0.096-0.095c0.032-0.069,0.048-0.217-0.015-0.217c-0.064,0-0.119,0-0.119,0s-0.12-0.035-0.199,0.095s-0.015,0.26,0.04,0.26s0.184,0,0.184,0.034c0,0.035-0.136,0.139-0.128,0.2c0.009,0.061,0.11,0.268,0.144,0.312c0.031,0.043,0.197,0.086,0.244,0.096c0.049,0.008-0.111,0.017-0.07,0.077c0.04,0.061,0.102,0.208,0.189,0.243c0.087,0.035,0.333,0.19,0.363,0.26c0.032,0.069,0.222-0.052,0.262-0.061c0.04-0.008,0.032,0.182,0.143,0.191c0.11,0.008,0.15-0.018,0.245-0.096s0.072-0.182,0.079-0.26c0.009-0.078,0-0.138,0.104-0.113c0.104,0.026,0.158-0.018,0.15-0.104c-0.008-0.087-0.095-0.191,0.07-0.217c0.167-0.026,0.254-0.138,0.357-0.138c0.103,0,0.389,0.043,0.419,0c0.032-0.043,0.167-0.243,0.254-0.251c0.067-0.007,0.224-0.021,0.385-0.042c1.582,1.885,2.561,4.284,2.673,6.905c-0.118,0.159-0.012,0.305,0.021,0.408c0.001,0.03,0.005,0.058,0.005,0.088c0,0.136-0.016,0.269-0.021,0.404C27.512,16.406,27.512,16.408,27.51,16.41zM17.794,12.084c-0.064,0.013-0.169-0.052-0.169-0.143s-0.091,0.169-0.04,0.247c0.053,0.078-0.104,0.169-0.155,0.169s-0.091-0.116-0.078-0.233c0.014-0.117-0.077-0.221-0.221-0.208c-0.143,0.014-0.208,0.13-0.259,0.169c-0.053,0.039-0.053,0.259-0.04,0.312s0.013,0.235-0.116,0.221c-0.118-0.013-0.092-0.233-0.079-0.312c0.014-0.078-0.039-0.273,0.014-0.376c0.053-0.104,0.207-0.143,0.312-0.156s0.324,0.065,0.363,0.052c0.04-0.014,0.222-0.014,0.312,0C17.729,11.837,17.858,12.071,17.794,12.084zM18.027,12.123c0.04,0.026,0.311-0.039,0.364,0.026c0.051,0.065-0.054,0.078-0.183,0.13c-0.129,0.052-0.169,0.039-0.221,0.104s-0.221,0.09-0.299,0.168c-0.078,0.079-0.217,0.125-0.246,0.065c-0.04-0.078,0.013-0.039,0.025-0.078c0.013-0.039,0.245-0.129,0.245-0.129S17.988,12.097,18.027,12.123zM16.988,11.668c-0.038,0.013-0.182-0.026-0.3-0.026c-0.116,0-0.091-0.078-0.143-0.064c-0.051,0.013-0.168,0.039-0.247,0.078c-0.078,0.039-0.208,0.03-0.208-0.04c0-0.104,0.052-0.078,0.221-0.143c0.169-0.065,0.352-0.247,0.429-0.169c0.078,0.078,0.221,0.169,0.312,0.182C17.144,11.5,17.026,11.655,16.988,11.668zM15.659,7.637c-0.079,0.026-0.347,0.139-0.321,0.199c0.01,0.023,0.078,0.069,0.19,0.052c0.113-0.018,0.276-0.035,0.355-0.043c0.078-0.009,0.095-0.139,0.009-0.147C15.805,7.689,15.736,7.611,15.659,7.637zM14.698,7.741c-0.061,0.026-0.243-0.043-0.338,0.018c-0.061,0.038-0.026,0.164,0.07,0.172c0.095,0.009,0.259-0.06,0.276-0.008c0.018,0.052,0.078,0.286,0.234,0.208c0.156-0.078,0.147-0.147,0.19-0.156c0.043-0.009-0.008-0.199-0.078-0.243C14.983,7.689,14.758,7.715,14.698,7.741zM14.385,7.005c0.017,0.044-0.008,0.078,0.113,0.095c0.121,0.018,0.173,0.035,0.243,0.035c0.069,0,0.042-0.113-0.018-0.19c-0.061-0.078-0.043-0.069-0.199-0.113c-0.156-0.043-0.312-0.043-0.416-0.035c-0.104,0.009-0.217-0.017-0.243,0.104c-0.013,0.062,0.07,0.112,0.174,0.112S14.368,6.962,14.385,7.005zM14.611,7.481c0.043,0.095,0.043,0.051,0.165,0.061C14.896,7.551,14.991,7.421,15,7.378c0.009-0.044-0.061-0.13-0.225-0.113c-0.165,0.017-0.667-0.026-0.736,0.034c-0.066,0.058,0,0.233-0.026,0.251c-0.026,0.017,0.009,0.095,0.077,0.078c0.069-0.017,0.104-0.182,0.157-0.182C14.299,7.447,14.568,7.386,14.611,7.481zM12.982,7.126c0.052,0.043,0.183,0.008,0.173-0.035c-0.008-0.043,0.053-0.217-0.051-0.225C13,6.858,12.854,6.962,12.697,7.014c-0.101,0.033-0.078,0.13-0.009,0.13S12.931,7.083,12.982,7.126zM13.72,7.282c-0.087,0.043-0.114,0.069-0.191,0.052c-0.078-0.017-0.078-0.156-0.217-0.13c-0.138,0.026-0.164,0.104-0.207,0.139s-0.139,0.061-0.173,0.043c-0.034-0.017-0.234-0.129-0.234-0.129s-0.416-0.018-0.433-0.07c-0.017-0.052-0.086-0.138-0.277-0.121s-0.52,0.13-0.572,0.13c-0.052,0,0.062,0.104-0.009,0.104c-0.069,0-0.155-0.008-0.181,0.069c-0.018,0.053,0.078,0.052,0.189,0.052c0.112,0,0.295,0,0.347-0.026c0.052-0.026,0.312-0.087,0.303-0.009c-0.009,0.079,0.104,0.199,0.164,0.182c0.061-0.017,0.183-0.13,0.243-0.086c0.061,0.043,0.07,0.146,0.13,0.173c0.061,0.025,0.226,0.025,0.304,0c0.077-0.027,0.294-0.027,0.389-0.009c0.095,0.018,0.373,0.069,0.399,0.018c0.026-0.053,0.104-0.061,0.112-0.113s0.051-0.216,0.051-0.216S13.806,7.239,13.72,7.282zM18.105,16.239c-0.119,0.021-0.091,0.252,0.052,0.21C18.3,16.407,18.223,16.217,18.105,16.239zM19.235,15.929c-0.104-0.026-0.221,0-0.299,0.013c-0.078,0.013-0.299,0.208-0.299,0.208s0.143,0.026,0.233,0.026c0.092,0,0.144,0.051,0.221,0.09c0.078,0.04,0.221-0.052,0.272-0.052c0.053,0,0.118,0.156,0.131-0.013C19.508,16.032,19.339,15.955,19.235,15.929zM15.616,7.507c-0.043-0.104-0.259-0.139-0.304-0.035C15.274,7.563,15.659,7.611,15.616,7.507zM18.093,15.292c0.143-0.026,0.064-0.144-0.053-0.13C17.922,15.175,17.949,15.318,18.093,15.292zM19.82,16.095c-0.119,0.022-0.092,0.253,0.051,0.211C20.015,16.264,19.937,16.074,19.82,16.095zM18.247,15.708c-0.09,0.013-0.285-0.09-0.389-0.182c-0.104-0.091-0.299-0.091-0.377-0.091c-0.077,0-0.39,0.091-0.39,0.091c-0.013,0.13,0.117,0.091,0.273,0.091s0.429-0.026,0.479,0.039c0.053,0.064,0.286,0.168,0.352,0.221c0.064,0.052,0.272,0.065,0.285,0.013S18.338,15.695,18.247,15.708zM16.698,7.412c-0.13-0.009-0.295-0.009-0.399,0c-0.104,0.008-0.182-0.069-0.26-0.113c-0.077-0.043-0.251-0.182-0.354-0.199c-0.104-0.017-0.086-0.017-0.303-0.069c-0.11-0.027-0.294-0.061-0.294-0.086c0-0.026-0.052,0.121,0.043,0.165c0.095,0.043,0.251,0.121,0.363,0.164c0.114,0.043,0.329,0.052,0.399,0.139c0.069,0.086,0.303,0.156,0.303,0.156l0.277,0.026c0,0,0.191-0.043,0.39-0.026c0.199,0.017,0.493,0.043,0.659,0.035c0.163-0.008,0.189-0.061,0.208-0.095c0.016-0.035-0.304-0.104-0.383-0.095C17.271,7.42,16.827,7.42,16.698,7.412zM17.182,9.404c-0.034,0.039,0.157,0.095,0.191,0.043C17.407,9.396,17.271,9.309,17.182,9.404zM17.764,9.585c0.086-0.035,0.043-0.139-0.079-0.104C17.547,9.521,17.676,9.62,17.764,9.585z",
+    "raph_temp": "M19.361,17.744V3.438c0-1.85-1.504-3.348-3.352-3.348c-1.852,0-3.35,1.498-3.35,3.348v14.193c-2.106,1.154-3.536,3.391-3.536,5.961c0,3.752,3.042,6.793,6.793,6.793c3.753,0,6.793-3.041,6.793-6.793C22.71,21.099,21.363,18.924,19.361,17.744zM15.917,29.27c-3.129,0-5.676-2.548-5.676-5.68c0-2.072,1.132-3.98,2.954-4.979l0.581-0.316V3.437c0-1.231,1.003-2.231,2.236-2.231c1.231,0,2.232,1,2.232,2.231v14.942l0.548,0.324c1.756,1.036,2.806,2.861,2.806,4.887C21.596,26.722,19.048,29.27,15.917,29.27zM18.225,19.666l-1.099-0.647V9.26h-2.233v9.695l-1.161,0.635c-1.464,0.805-2.375,2.334-2.375,4c0,2.514,2.047,4.561,4.56,4.561c2.515,0,4.56-2.047,4.56-4.561C20.479,21.988,19.616,20.485,18.225,19.666z",
+  	"lightning_bolt": "M13.222,3.359l5.413,7.499l-2.232,0.885l6.816,6.425l-2.231,1.073L29.414,30l-14.292-8.245l2.726-1.145 l-8.88-5.281l3.182-1.632l-9.376-5.54L13.222,3.359z",
+	
+	"moon": "M23.893,29.75L23.893,29.75c-8.04,0-14.559-6.326-14.559-14.132c0-7.805,6.519-14.132,14.559-14.132l0,0 c-4.582,3.336-7.279,8.572-7.279,14.132S19.311,26.413,23.893,29.75z",
+
+		"star_32": "M4,15.834l3.086-0.895L4.234,13.46l3.201-0.274l-2.508-2.008l3.193,0.355L6.051,9.074l3.063,0.971 L7.564,7.23l2.814,1.549L9.408,5.718l2.458,2.069l-0.354-3.194l2.007,2.509l0.275-3.201l1.48,2.852l0.895-3.086l0.894,3.086 l1.479-2.852l0.275,3.201l2.008-2.509l-0.355,3.194l2.459-2.069L21.957,8.78l2.814-1.549l-1.549,2.814l3.062-0.971l-2.07,2.458 l3.193-0.355L24.9,13.186L28.1,13.46l-2.852,1.479l3.086,0.895l-3.086,0.895l2.852,1.479L24.9,18.482l2.508,2.008l-3.193-0.355 l2.07,2.459l-3.062-0.971l1.549,2.814l-2.814-1.549l0.971,3.062l-2.459-2.068l0.355,3.193l-2.008-2.509l-0.275,3.2l-1.479-2.852 l-0.894,3.086l-0.895-3.086l-1.48,2.852l-0.275-3.2l-2.007,2.509l0.354-3.193L9.408,25.95l0.971-3.062l-2.814,1.549l1.55-2.814 l-3.063,0.971l2.069-2.459L4.927,20.49l2.508-2.008l-3.201-0.274l2.853-1.479L4,15.834z",
+
+			"sun": "M29.166,15.999l-5.279,1.878v-3.754L29.166,15.999z M25.333,6.748l-2.405,5.062l-2.654-2.656L25.333,6.748z M16.083,2.917l1.877,5.28h-3.755L16.083,2.917z M6.832,6.748l5.061,2.406l-2.655,2.656L6.832,6.748z M3,15.999l5.28-1.876v3.754 L3,15.999z M6.832,25.25l2.406-5.06l2.655,2.655L6.832,25.25L6.832,25.25z M16.083,29.084l-1.878-5.281h3.755L16.083,29.084z M25.333,25.25l-5.06-2.404l2.654-2.655L25.333,25.25z M9.542,15.999L9.542,15.999c0-3.612,2.929-6.541,6.542-6.541 c3.612,0,6.542,2.929,6.542,6.541c0,3.613-2.93,6.542-6.542,6.542C12.47,22.541,9.542,19.612,9.542,15.999L9.542,15.999z",
+			
+			"umbrella": "M15.009,3.37v2.508C8.637,6.23,3.618,9.962,3.618,14.514c0-0.82,1.387-1.486,3.095-1.486 c1.709,0,3.096,0.666,3.096,1.486c0-0.82,1.386-1.486,3.095-1.486c0.813,0,1.552,0.156,2.105,0.402v12.228 c0,0.547-0.444,0.99-0.99,0.99c-0.547,0-0.991-0.443-0.991-0.99v-0.496h-1.981v0.496c0,1.641,1.332,2.973,2.972,2.973 s2.971-1.332,2.971-2.973V13.43c0.553-0.247,1.293-0.402,2.106-0.402c1.707,0,3.096,0.666,3.096,1.486 c0-0.82,1.387-1.486,3.094-1.486c1.711,0,3.098,0.666,3.098,1.486c0-4.551-5.02-8.283-11.393-8.636V3.37H15.009z"
+    }
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/icons/jquery.svgicons.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/icons/jquery.svgicons.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/icons/jquery.svgicons.js	(revision 29468)
@@ -0,0 +1,471 @@
+﻿/*
+ * SVG Icon Loader 2.0
+ *
+ * jQuery Plugin for loading SVG icons from a single file
+ *
+ * Copyright (c) 2009 Alexis Deveria
+ * http://a.deveria.com
+ *
+ * Apache 2 License
+
+How to use:
+
+1. Create the SVG master file that includes all icons:
+
+The master SVG icon-containing file is an SVG file that contains 
+<g> elements. Each <g> element should contain the markup of an SVG
+icon. The <g> element has an ID that should 
+correspond with the ID of the HTML element used on the page that should contain 
+or optionally be replaced by the icon. Additionally, one empty element should be
+added at the end with id "svg_eof".
+
+2. Optionally create fallback raster images for each SVG icon.
+
+3. Include the jQuery and the SVG Icon Loader scripts on your page.
+
+4. Run $.svgIcons() when the document is ready:
+
+$.svgIcons( file [string], options [object literal]);
+
+File is the location of a local SVG or SVGz file.
+
+All options are optional and can include:
+
+- 'w (number)': The icon widths
+
+- 'h (number)': The icon heights
+
+- 'fallback (object literal)': List of raster images with each
+	key being the SVG icon ID to replace, and the value the image file name.
+	
+- 'fallback_path (string)': The path to use for all images
+	listed under "fallback"
+	
+- 'replace (boolean)': If set to true, HTML elements will be replaced by,
+	rather than include the SVG icon.
+
+- 'placement (object literal)': List with selectors for keys and SVG icon ids
+	as values. This provides a custom method of adding icons.
+
+- 'resize (object literal)': List with selectors for keys and numbers
+	as values. This allows an easy way to resize specific icons.
+	
+- 'callback (function)': A function to call when all icons have been loaded. 
+	Includes an object literal as its argument with as keys all icon IDs and the 
+	icon as a jQuery object as its value.
+
+- 'id_match (boolean)': Automatically attempt to match SVG icon ids with
+	corresponding HTML id (default: true)
+	
+- 'no_img (boolean)': Prevent attempting to convert the icon into an <img>
+	element (may be faster, help for browser consistency)
+
+- 'svgz (boolean)': Indicate that the file is an SVGZ file, and thus not to
+	parse as XML. SVGZ files add compression benefits, but getting data from
+	them fails in Firefox 2 and older.
+
+5. To access an icon at a later point without using the callback, use this:
+	$.getSvgIcon(id (string));
+
+This will return the icon (as jQuery object) with a given ID.
+	
+6. To resize icons at a later point without using the callback, use this:
+	$.resizeSvgIcons(resizeOptions) (use the same way as the "resize" parameter)
+
+
+Example usage #1:
+
+$(function() {
+	$.svgIcons('my_icon_set.svg'); // The SVG file that contains all icons
+	// No options have been set, so all icons will automatically be inserted 
+	// into HTML elements that match the same IDs. 
+});
+
+Example usage #2:
+
+$(function() {
+	$.svgIcons('my_icon_set.svg', { // The SVG file that contains all icons
+		callback: function(icons) { // Custom callback function that sets click
+									// events for each icon
+			$.each(icons, function(id, icon) {
+				icon.click(function() {
+					alert('You clicked on the icon with id ' + id);
+				});
+			});
+		}
+	}); //The SVG file that contains all icons
+});
+
+Example usage #3:
+
+$(function() {
+	$.svgIcons('my_icon_set.svgz', { // The SVGZ file that contains all icons
+		w: 32,	// All icons will be 32px wide
+		h: 32,  // All icons will be 32px high
+		fallback_path: 'icons/',  // All fallback files can be found here
+		fallback: {
+			'#open_icon': 'open.png',  // The "open.png" will be appended to the
+									   // HTML element with ID "open_icon"
+			'#close_icon': 'close.png',
+			'#save_icon': 'save.png'
+		},
+		placement: {'.open_icon','open'}, // The "open" icon will be added
+										  // to all elements with class "open_icon"
+		resize: function() {
+			'#save_icon .svg_icon': 64  // The "save" icon will be resized to 64 x 64px
+		},
+		
+		callback: function(icons) { // Sets background color for "close" icon 
+			icons['close'].css('background','red');
+		},
+		
+		svgz: true // Indicates that an SVGZ file is being used
+		
+	})
+});
+
+*/
+
+
+(function($) {
+	var svg_icons = {}, fixIDs;
+
+	$.svgIcons = function(file, opts) {
+		var svgns = "http://www.w3.org/2000/svg",
+			xlinkns = "http://www.w3.org/1999/xlink",
+			icon_w = opts.w?opts.w : 24,
+			icon_h = opts.h?opts.h : 24,
+			elems, svgdoc, testImg,
+			icons_made = false, data_loaded = false, load_attempts = 0,
+			ua = navigator.userAgent, isOpera = !!window.opera, isSafari = (ua.indexOf('Safari/') > -1 && ua.indexOf('Chrome/')==-1),
+			data_pre = 'data:image/svg+xml;charset=utf-8;base64,';
+			
+			if(opts.svgz) {
+				var data_el = $('<object data="' + file + '" type=image/svg+xml>').appendTo('body').hide();
+				try {
+					svgdoc = data_el[0].contentDocument;
+					data_el.load(getIcons);
+					getIcons(0, true); // Opera will not run "load" event if file is already cached
+				} catch(err1) {
+					useFallback();
+				}
+			} else {
+				var parser = new DOMParser();
+				$.ajax({
+					url: file,
+					dataType: 'string',
+					success: function(data) {
+						if(!data) {
+							$(useFallback);
+							return;
+						}
+						svgdoc = parser.parseFromString(data, "text/xml");
+						$(function() {
+							getIcons('ajax');
+						});
+					},
+					error: function(err) {
+						// TODO: Fix Opera widget icon bug
+						if(window.opera) {
+							$(function() {
+								useFallback();
+							});
+						} else {
+							if(err.responseText) {
+								svgdoc = parser.parseFromString(err.responseText, "text/xml");
+								if(!svgdoc.childNodes.length) {
+									$(useFallback);									
+								}
+								$(function() {
+									getIcons('ajax');
+								});							
+							} else {
+								$(useFallback);
+							}
+						}
+					}
+				});
+			}
+			
+		function getIcons(evt, no_wait) {
+			if(evt !== 'ajax') {
+				if(data_loaded) return;
+				// Webkit sometimes says svgdoc is undefined, other times
+				// it fails to load all nodes. Thus we must make sure the "eof" 
+				// element is loaded.
+				svgdoc = data_el[0].contentDocument; // Needed again for Webkit
+				var isReady = (svgdoc && svgdoc.getElementById('svg_eof'));
+				if(!isReady && !(no_wait && isReady)) {
+					load_attempts++;
+					if(load_attempts < 50) {
+						setTimeout(getIcons, 20);
+					} else {
+						useFallback();
+						data_loaded = true;
+					}
+					return;
+				}
+				data_loaded = true;
+			}
+			
+			elems = $(svgdoc.firstChild).children(); //.getElementsByTagName('foreignContent');
+			
+			if(!opts.no_img) {
+				var testSrc = data_pre + 'PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNzUiIGhlaWdodD0iMjc1Ij48L3N2Zz4%3D';
+				
+				testImg = $(new Image()).attr({
+					src: testSrc,
+					width: 0,
+					height: 0
+				}).appendTo('body')
+				.load(function () {
+					// Safari 4 crashes, Opera and Chrome don't
+					makeIcons(true);
+				}).error(function () {
+					makeIcons();
+				});
+			} else {
+				setTimeout(function() {
+					if(!icons_made) makeIcons();
+				},500);
+			}
+		}
+		
+		var setIcon = function(target, icon, id, setID) {
+			if(isOpera) icon.css('visibility','hidden');
+			if(opts.replace) {
+				if(setID) icon.attr('id',id);
+				var cl = target.attr('class');
+				if(cl) icon.attr('class','svg_icon '+cl);
+				target.replaceWith(icon);
+			} else {
+				
+				target.append(icon);
+			}
+			if(isOpera) {
+				setTimeout(function() {
+					icon.removeAttr('style');
+				},1);
+			}
+		}
+		
+		var addIcon = function(icon, id) {
+			if(opts.id_match === undefined || opts.id_match !== false) {
+				setIcon(holder, icon, id, true);
+			}
+			svg_icons[id] = icon;
+		}
+		
+		function makeIcons(toImage, fallback) {
+			if(icons_made) return;
+			if(opts.no_img) toImage = false;
+			var holder;
+			
+			if(toImage) {
+				var temp_holder = $(document.createElement('div'));
+				temp_holder.hide().appendTo('body');
+			} 
+			if(fallback) {
+				var path = opts.fallback_path?opts.fallback_path:'';
+				$.each(fallback, function(id, imgsrc) {
+					holder = $('#' + id);
+					var icon = $(new Image())
+						.attr({
+							'class':'svg_icon',
+							src: path + imgsrc,
+							'width': icon_w,
+							'height': icon_h,
+							'alt': 'icon'
+						});
+					
+					addIcon(icon, id);
+				});
+			} else {
+				var len = elems.length;
+				for(var i = 0; i < len; i++) {
+					var elem = elems[i];
+					var id = elem.id;
+					if(id === 'svg_eof') break;
+					holder = $('#' + id);
+					var svg = elem.getElementsByTagNameNS(svgns, 'svg')[0];
+					var svgroot = document.createElementNS(svgns, "svg");
+					svgroot.setAttributeNS(svgns, 'viewBox', [0,0,icon_w,icon_h].join(' '));
+					// Make flexible by converting width/height to viewBox
+					var w = svg.getAttribute('width');
+					var h = svg.getAttribute('height');
+					svg.removeAttribute('width');
+					svg.removeAttribute('height');
+					
+					var vb = svg.getAttribute('viewBox');
+					if(!vb) {
+						svg.setAttribute('viewBox', [0,0,w,h].join(' '));
+					}
+					
+					// Not using jQuery to be a bit faster
+					svgroot.setAttribute('xmlns', svgns);
+					svgroot.setAttribute('width', icon_w);
+					svgroot.setAttribute('height', icon_h);
+					svgroot.setAttribute("xmlns:xlink", xlinkns);
+					svgroot.setAttribute("class", 'svg_icon');
+
+					// Without cloning, Firefox will make another GET request.
+					// With cloning, causes issue in Opera/Win/Non-EN
+					if(!isOpera) svg = svg.cloneNode(true);
+					
+					svgroot.appendChild(svg);
+			
+					if(toImage) {
+						// Without cloning, Safari will crash
+						// With cloning, causes issue in Opera/Win/Non-EN
+						var svgcontent = isOpera?svgroot:svgroot.cloneNode(true);
+						temp_holder.empty().append(svgroot);
+						var str = data_pre + encode64(temp_holder.html());
+						var icon = $(new Image())
+							.attr({'class':'svg_icon', src:str});
+					} else {
+						var icon = fixIDs($(svgroot), i);
+					}
+					addIcon(icon, id);
+				}
+
+			}
+			
+			if(opts.placement) {
+				$.each(opts.placement, function(sel, id) {
+					if(!svg_icons[id]) return;
+					$(sel).each(function(i) {
+						var copy = svg_icons[id].clone();
+						if(i > 0 && !toImage) copy = fixIDs(copy, i, true);
+						setIcon($(this), copy, id);
+					})
+				});
+			}
+			if(!fallback) {
+				if(toImage) temp_holder.remove();
+				if(data_el) data_el.remove();
+				if(testImg) testImg.remove();
+			}
+			if(opts.resize) $.resizeSvgIcons(opts.resize);
+			icons_made = true;
+
+			if(opts.callback) opts.callback(svg_icons);
+		}
+		
+		fixIDs = function(svg_el, svg_num, force) {
+			var defs = svg_el.find('defs');
+			if(!defs.length) return svg_el;
+			
+			if(isOpera) {
+				var id_elems = defs.find('*').filter(function() {
+					return !!this.id;
+				});
+			} else {
+				var id_elems = defs.find('[id]');
+			}
+			
+			var all_elems = svg_el[0].getElementsByTagName('*'), len = all_elems.length;
+			
+			id_elems.each(function(i) {
+				var id = this.id;
+				var no_dupes = ($(svgdoc).find('#' + id).length <= 1);
+				if(isOpera) no_dupes = false; // Opera didn't clone svg_el, so not reliable
+				// if(!force && no_dupes) return;
+				var new_id = 'x' + id + svg_num + i;
+				this.id = new_id;
+				
+				var old_val = 'url(#' + id + ')';
+				var new_val = 'url(#' + new_id + ')';
+
+				for(var i = 0; i < len; i++) {
+					var elem = all_elems[i];
+					if(elem.getAttribute('fill') === old_val) {
+						elem.setAttribute('fill', new_val);
+					}
+					if(elem.getAttribute('stroke') === old_val) {
+						elem.setAttribute('stroke', new_val);
+					}
+					if(elem.getAttribute('filter') === old_val) {
+						elem.setAttribute('filter', new_val);
+					}
+				}
+			});
+			return svg_el;
+		}
+		
+		function useFallback() {
+			if(file.indexOf('.svgz') != -1) {
+				var reg_file = file.replace('.svgz','.svg');
+				if(window.console) {
+					console.log('.svgz failed, trying with .svg');
+				}
+				$.svgIcons(reg_file, opts);
+			} else if(opts.fallback) {
+				makeIcons(false, opts.fallback);
+			}
+		}
+				
+		function encode64(input) {
+			// base64 strings are 4/3 larger than the original string
+			if(window.btoa) return window.btoa(input);
+			var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
+			var output = new Array( Math.floor( (input.length + 2) / 3 ) * 4 );
+			var chr1, chr2, chr3;
+			var enc1, enc2, enc3, enc4;
+			var i = 0, p = 0;
+		
+			do {
+				chr1 = input.charCodeAt(i++);
+				chr2 = input.charCodeAt(i++);
+				chr3 = input.charCodeAt(i++);
+		
+				enc1 = chr1 >> 2;
+				enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
+				enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
+				enc4 = chr3 & 63;
+		
+				if (isNaN(chr2)) {
+					enc3 = enc4 = 64;
+				} else if (isNaN(chr3)) {
+					enc4 = 64;
+				}
+		
+				output[p++] = _keyStr.charAt(enc1);
+				output[p++] = _keyStr.charAt(enc2);
+				output[p++] = _keyStr.charAt(enc3);
+				output[p++] = _keyStr.charAt(enc4);
+			} while (i < input.length);
+		
+			return output.join('');
+		}
+	}
+	
+	$.getSvgIcon = function(id, uniqueClone) { 
+		var icon = svg_icons[id];
+		if(uniqueClone && icon) {
+			icon = fixIDs(icon, 0, true).clone(true);
+		}
+		return icon; 
+	}
+	
+	$.resizeSvgIcons = function(obj) {
+		// FF2 and older don't detect .svg_icon, so we change it detect svg elems instead
+		var change_sel = !$('.svg_icon:first').length;
+		$.each(obj, function(sel, size) {
+			var arr = $.isArray(size);
+			var w = arr?size[0]:size,
+				h = arr?size[1]:size;
+			if(change_sel) {
+				sel = sel.replace(/\.svg_icon/g,'svg');
+			}
+			$(sel).each(function() {
+				this.setAttribute('width', w);
+				this.setAttribute('height', h);
+				if(window.opera && window.widget) {
+					this.parentNode.style.width = w + 'px';
+					this.parentNode.style.height = h + 'px';
+				}
+			});
+		});
+	}
+	
+})(jQuery);
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/README.txt
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/README.txt	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/README.txt	(revision 29468)
@@ -0,0 +1,61 @@
+filename                        origin
+
+align-bottom.png                http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-vertical-bottom.png
+align-bottom.svg                http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-vertical-bottom.svg
+align-center.png                http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-horizontal-center.png
+align-center.svg                http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-horizontal-center.svg
+align-left.png                  http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-horizontal-left.png
+align-left.svg                  http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-horizontal-left.svg
+align-middle.png                http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-vertical-center.png
+align-middle.svg                http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-vertical-center.svg
+align-right.png                 http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-horizontal-right.png
+align-right.svg                 http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-horizontal-right.svg
+align-top.png                   http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-vertical-top.png
+align-top.svg                   http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-vertical-top.svg
+bold.png
+cancel.png
+circle.png
+clear.png
+clone.png
+copy.png
+cut.png
+delete.png
+document-properties.png
+dropdown.gif
+ellipse.png
+eye.png
+flyouth.png
+flyup.gif
+freehand-circle.png
+freehand-square.png
+go-down.png
+go-up.png
+image.png
+italic.png
+line.png
+logo.png
+logo.svg
+move_bottom.png
+move_top.png
+none.png
+open.png
+paste.png
+path.png
+polygon.png                     http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/tools/draw-polygon.png
+polygon.svg                     http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/tools/draw-polygon.svg
+rect.png
+redo.png
+rotate.png
+save.png
+select.png
+sep.png
+shape_group.png
+shape_ungroup.png
+source.png
+square.png
+text.png                        http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/tools/draw-text.png
+text.svg                        http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/tools/draw-text.svg
+undo.png
+view-refresh.png
+wave.png
+zoom.png                        http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/tools/page-magnifier.png
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/align-bottom.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/align-bottom.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/align-bottom.svg	(revision 29468)
@@ -0,0 +1,9 @@
+<?xml version="1.0" standalone="no"?>
+<!-- Generator: Adobe Fireworks CS5, Export SVG Extension by Aaron Beall (http://fireworks.abeall.com) . Version: 0.6.1  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg id="Untitled-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+	x="0px" y="0px" width="27px" height="27px"
+>
+	<path d="M 1 25 L 5 25 L 5 13 L 11 13 L 11 25 L 16 25 L 16 7 L 22 7 L 22 25 L 26 25 L 26 26 L 1 26 L 1 25 ZM 0 0 L 0 27 L 27 27 L 27 0 L 0 0 Z" fill="#000000"/>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/align-center.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/align-center.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/align-center.svg	(revision 29468)
@@ -0,0 +1,11 @@
+<?xml version="1.0" standalone="no"?>
+<!-- Generator: Adobe Fireworks CS5, Export SVG Extension by Aaron Beall (http://fireworks.abeall.com) . Version: 0.6.1  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg id="Untitled-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+	x="0px" y="0px" width="27px" height="27px"
+>
+	<g id="Layer%201">
+		<path d="M 13 1 L 14 1 L 14 6 L 22 6 L 22 12 L 14 12 L 14 15 L 19 15 L 19 21 L 14 21 L 14 26 L 13 26 L 13 21 L 8 21 L 8 15 L 13 15 L 13 12 L 5 12 L 5 6 L 13 6 L 13 1 ZM 0 0 L 0 27 L 27 27 L 27 0 L 0 0 Z" fill="#000000"/>
+	</g>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/align-left.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/align-left.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/align-left.svg	(revision 29468)
@@ -0,0 +1,9 @@
+<?xml version="1.0" standalone="no"?>
+<!-- Generator: Adobe Fireworks CS5, Export SVG Extension by Aaron Beall (http://fireworks.abeall.com) . Version: 0.6.1  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg id="Untitled-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+	x="0px" y="0px" width="27px" height="27px"
+>
+	<path d="M 2 1 L 2 5 L 14 5 L 14 11 L 2 11 L 2 16 L 20 16 L 20 22 L 2 22 L 2 26 L 1 26 L 1 1 L 2 1 ZM 27 0 L 0 0 L 0 27 L 27 27 L 27 0 Z" fill="#000000"/>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/align-middle.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/align-middle.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/align-middle.svg	(revision 29468)
@@ -0,0 +1,9 @@
+<?xml version="1.0" standalone="no"?>
+<!-- Generator: Adobe Fireworks CS5, Export SVG Extension by Aaron Beall (http://fireworks.abeall.com) . Version: 0.6.1  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg id="Untitled-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+	x="0px" y="0px" width="27px" height="27px"
+>
+	<path d="M 26 13 L 26 14 L 21 14 L 21 22 L 15 22 L 15 14 L 12 14 L 12 19 L 6 19 L 6 14 L 1 14 L 1 13 L 6 13 L 6 8 L 12 8 L 12 13 L 15 13 L 15 5 L 21 5 L 21 13 L 26 13 ZM 27 0 L 0 0 L 0 27 L 27 27 L 27 0 Z" fill="#000000"/>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/align-right.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/align-right.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/align-right.svg	(revision 29468)
@@ -0,0 +1,9 @@
+<?xml version="1.0" standalone="no"?>
+<!-- Generator: Adobe Fireworks CS5, Export SVG Extension by Aaron Beall (http://fireworks.abeall.com) . Version: 0.6.1  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg id="Untitled-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+	x="0px" y="0px" width="27px" height="27px"
+>
+	<path d="M 25 1 L 25 5 L 13 5 L 13 11 L 25 11 L 25 16 L 7 16 L 7 22 L 25 22 L 25 26 L 26 26 L 26 1 L 25 1 ZM 0 0 L 27 0 L 27 27 L 0 27 L 0 0 Z" fill="#000000"/>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/align-top.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/align-top.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/align-top.svg	(revision 29468)
@@ -0,0 +1,9 @@
+<?xml version="1.0" standalone="no"?>
+<!-- Generator: Adobe Fireworks CS5, Export SVG Extension by Aaron Beall (http://fireworks.abeall.com) . Version: 0.6.1  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg id="Untitled-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+	x="0px" y="0px" width="27px" height="27px"
+>
+	<path d="M 1 2 L 5 2 L 5 14 L 11 14 L 11 2 L 16 2 L 16 20 L 22 20 L 22 2 L 26 2 L 26 1 L 1 1 L 1 2 ZM 0 27 L 0 0 L 27 0 L 27 27 L 0 27 Z" fill="#000000"/>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/conn.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/conn.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/conn.svg	(revision 29468)
@@ -0,0 +1,29 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+	<g id="mode_connect">
+		<svg viewBox="0 0 24 24" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg">
+		 <defs>
+
+		  <line stroke-width="5" fill="none" stroke="#000000" id="svg_2" y2="121" x2="136" y1="7" x1="136">
+		   <stop stop-opacity="1" stop-color="#4687a0"/>
+		   <stop stop-opacity="1" stop-color="#ffffff"/>
+		  </line>
+		  <linearGradient y2="0.18359" x2="0.29688" y1="0.92188" x1="0.62109" id="svg_3">
+		   <stop stop-opacity="1" stop-color="#417dad" offset="0"/>
+		   <stop stop-opacity="1" stop-color="#ffffff" offset="1"/>
+		  </linearGradient>
+		 </defs>
+		 <g>
+		  <title>Layer 1</title>
+		  <line x1="5.64676" y1="5.60056" x2="18.50037" y2="18.62557" id="svg_5" stroke="#000000" fill="none"/>
+		  <rect opacity="0.75" stroke-width="0.5" x="0.5" y="0.5" width="9.625" height="5.125" id="svg_1" fill="url(#svg_3)" stroke="#000000"/>
+		  <rect opacity="0.75" id="svg_4" stroke-width="0.5" x="13.75" y="18.25" width="9.625" height="5.125" fill="url(#svg_3)" stroke="#000000"/>
+		  <g id="svg_9">
+		   <path d="m14.57119,9.12143l-0.98244,5.18852l2.70861,-4.36084" id="svg_6" fill="#a0a0a0" stroke="#000000"/>
+		   <path d="m14.27564,6.76258c-0.25872,0.72562 -0.40735,1.65632 -0.33812,2.15432l2.90784,1.2509c0.30961,-0.21212 1.08198,-1.1814 1.08198,-1.73736" id="svg_7" fill="url(#svg_3)" stroke="#000000"/>
+		   <path d="m16.28893,0.37519l-2.46413,5.9304l4.76481,2.39435l2.13178,-4.96735" id="svg_8" fill="url(#svg_3)" stroke="#000000"/>
+		  </g>
+		 </g>
+		</svg>
+	</g>
+	<g id="svg_eof"/>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/ellipse.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/ellipse.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/ellipse.svg	(revision 29468)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="27px" height="27px" viewBox="0 0 27 27" enable-background="new 0 0 27 27" xml:space="preserve">
+<path fill="#2F2F2C" d="M27,0H0v27h27 M13.25,7.617c6.742,0,12.207,3.846,12.207,8.59c0,4.745-5.465,8.591-12.207,8.591
+	S1.042,20.952,1.042,16.207C1.042,11.463,6.508,7.617,13.25,7.617z"/>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/eye.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/eye.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/eye.svg	(revision 29468)
@@ -0,0 +1,9 @@
+<?xml version="1.0" standalone="no"?>
+<!-- Generator: Adobe Fireworks CS5, Export SVG Extension by Aaron Beall (http://fireworks.abeall.com) . Version: 0.6.1  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg id="eye-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+	x="0px" y="0px" width="27px" height="27px"
+>
+	<path d="M 26.575 14.5 C 25.0764 18.8131 19.7906 22 13.5 22 C 7.2094 22 1.9236 18.8131 0.425 14.5 C 1.9236 10.1869 7.2094 7 13.5 7 C 19.7906 7 25.0764 10.1869 26.575 14.5 ZM 0 0 L 0 27 L 27 27 L 27 0 L 0 0 ZM 20.5226 14.5 C 20.5226 10.9101 16.5538 8.0625 14.0226 8 C 13.8544 7.9958 14.6876 9.0074 14.5226 9.02 C 16.6163 9 18.5226 11.0783 18.5226 14.5 C 18.5226 17.9217 16.7413 19.625 14.5226 19.98 C 14.6876 19.9926 13.8543 21 14.0226 21 C 16.5851 21 20.5226 18.0899 20.5226 14.5 ZM 6 14.5 C 6 18.0899 9.9375 21 12.5 21 C 12.6682 21 11.835 19.9926 12 19.98 C 9.7813 19.625 8 17.9217 8 14.5 C 8 11.0783 9.9063 9 12 9.02 C 11.835 9.0074 12.6682 7.9958 12.5 8 C 9.9688 8.0625 6 10.9101 6 14.5 Z" fill="#000000"/>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/image.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/image.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/image.svg	(revision 29468)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="27px" height="27px" viewBox="0 0 27 27" enable-background="new 0 0 27 27" xml:space="preserve">
+<g>
+	<path fill="#2F2F2C" d="M23.377,8.006H3.624v13.602h19.753V8.006z M19.849,9.676c0.91,0,1.646,0.748,1.646,1.67
+		s-0.736,1.671-1.646,1.671c-0.908,0-1.646-0.749-1.646-1.671S18.94,9.676,19.849,9.676z M5.034,20.175L9.972,9.438l5.173,7.158
+		l2.587-2.147l4.233,5.727H5.034z"/>
+	<path fill="#2F2F2C" d="M0,0v27h27V0H0z M25.258,23.517H1.742V6.097h23.516V23.517z"/>
+</g>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/italic.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/italic.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/italic.svg	(revision 29468)
@@ -0,0 +1,11 @@
+<?xml version="1.0" standalone="no"?>
+<!-- Generator: Adobe Fireworks CS5, Export SVG Extension by Aaron Beall (http://fireworks.abeall.com) . Version: 0.6.1  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg id="eye-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+	x="0px" y="0px" width="27px" height="27px"
+>
+	<g id="Layer%201">
+		<path d="M 16.6855 8.9536 L 12.8818 22.146 C 12.6714 22.9009 12.5664 23.396 12.5664 23.6304 C 12.5664 23.7671 12.6221 23.8931 12.7334 24.0112 C 12.8447 24.1284 12.9619 24.187 13.0859 24.187 C 13.2959 24.187 13.5063 24.0942 13.7168 23.9087 C 14.2734 23.4517 14.9414 22.6226 15.7207 21.4224 L 16.3516 21.7935 C 14.4834 25.0474 12.498 26.6733 10.3955 26.6733 C 9.5913 26.6733 8.9512 26.4478 8.4751 25.9956 C 7.9985 25.5444 7.7607 24.9731 7.7607 24.2798 C 7.7607 23.8228 7.8657 23.2407 8.0762 22.5356 L 10.6553 13.6665 C 10.9023 12.813 11.0264 12.1704 11.0264 11.7368 C 11.0264 11.4653 10.9087 11.2241 10.6738 11.0132 C 10.4385 10.8032 10.1172 10.6978 9.709 10.6978 C 9.5234 10.6978 9.3008 10.7046 9.041 10.7163 L 9.2822 9.9741 L 15.5723 8.9536 L 16.6855 8.9536 ZM 15.5352 0.4185 C 16.3018 0.4185 16.9482 0.6851 17.4741 1.2163 C 17.9995 1.7485 18.2627 2.3921 18.2627 3.146 C 18.2627 3.9009 17.9966 4.5444 17.4648 5.0757 C 16.9326 5.6079 16.2896 5.8735 15.5352 5.8735 C 14.793 5.8735 14.1558 5.6079 13.624 5.0757 C 13.0918 4.5444 12.8262 3.9009 12.8262 3.146 C 12.8262 2.3921 13.0889 1.7485 13.6147 1.2163 C 14.1401 0.6851 14.7803 0.4185 15.5352 0.4185 ZM 0 0 L 0 27 L 27 27 L 27 0 L 0 0 Z" fill="#000000"/>
+	</g>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/path.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/path.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/path.svg	(revision 29468)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="27px" height="27px" viewBox="0 0 27 27" enable-background="new 0 0 27 27" xml:space="preserve">
+<path fill="#2F2F2C" d="M0,0v27h27V0H0z M12.193,1.904c0-0.365,0.871,0,0.871,0v12.105c-0.509,0.18-0.871,0.664-0.871,1.233
+	c0,0.722,0.585,1.305,1.307,1.305c0.722,0,1.307-0.583,1.307-1.305c0-0.569-0.362-1.054-0.871-1.233V1.904c0,0,0.871-0.365,0.871,0
+	c0,6.811,5.226,11.677,5.226,11.677l-3.256,8.193h-6.552l-3.256-8.193C6.968,13.581,12.193,8.714,12.193,1.904z M7.839,25.258
+	v-2.612h11.322v2.612H7.839z"/>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/pencil.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/pencil.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/pencil.svg	(revision 29468)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="27px" height="27px" viewBox="-1.5 -1.5 27 27" enable-background="new -1.5 -1.5 27 27" xml:space="preserve">
+<path fill="#2F2F2C" d="M-1.5-1.5v27h27v-27 M19.616,9.216L6.647,21.567l-5.531,1.285l-0.1-0.094l1.449-5.269L15.438,5.204
+	c0.231-0.062,0.788-0.219,1.579-0.062L3.255,18.243l-0.394,1.381l1.58,1.504l1.481-0.375l0.66-0.598l0.065-1.408l-1.053-1.004
+	L18.203,5.736c0.196,0.157,0.196,0.157,0.396,0.376C20.476,7.869,19.616,9.216,19.616,9.216z M22.87,4.9
+	c-0.002,0.774-0.358,1.561-1.013,2.185l-1.217,1.16c0,0,0.921-1.348-0.989-3.103c-1.679-1.599-3.259-0.91-3.259-0.91l1.284-1.223
+	c1.154-1.126,3.161-1.126,4.278-0.062c0.622,0.549,0.913,1.239,0.915,1.938V4.9z"/>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/placeholder.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/placeholder.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/placeholder.svg	(revision 29468)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="100px" height="100px" viewbox="0 0 100 100" preserveAspectRatio="none"
+	 xml:space="preserve">
+   <rect width="100" height="100" fill="#ddd" stroke-width="1" stroke="#aaa" vector-effect="non-scaling-stroke" />
+     <path d="M 0 0 L 100 100 Z" stroke-width="1" stroke="#aaa" vector-effect="non-scaling-stroke" />
+       <path d="M 100 0 L 0 100 Z" stroke-width="1" stroke="#aaa" vector-effect="non-scaling-stroke" />
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/polygon.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/polygon.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/polygon.svg	(revision 29468)
@@ -0,0 +1,11 @@
+<?xml version="1.0" standalone="no"?>
+<!-- Generator: Adobe Fireworks CS5, Export SVG Extension by Aaron Beall (http://fireworks.abeall.com) . Version: 0.6.1  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg id="eye-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+	x="0px" y="0px" width="27px" height="27px"
+>
+	<g id="Layer%201">
+		<path d="M 13.6027 0.5027 L 26.844 10.2723 L 21.6443 25.8845 L 5.1894 25.7637 L 0.2195 10.0769 L 13.6027 0.5027 ZM 0 0 L 0 27 L 27 27 L 27 0 L 0 0 Z" fill="#000000"/>
+	</g>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/select.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/select.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/select.svg	(revision 29468)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="24px" height="24px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve">
+<g>
+	<path fill="#2F2F2C" d="M0,0v24h24V0H0z M17.147,20.757l-2.941,1.501l-3.677-6.005l-4.411,3.003V1.241l12.5,12.01l-4.412,1.501
+		L17.147,20.757z"/>
+</g>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/svg_edit_icons.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/svg_edit_icons.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/svg_edit_icons.svg	(revision 29468)
@@ -0,0 +1,455 @@
+﻿<svg xmlns="http://www.w3.org/2000/svg">
+<!-- All images created with SVG-edit - http://svg-edit.googlecode.com/ -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<g id="logo">
+<svg viewBox="0 0 16 16" version="1.1">
+  <path id="svg_7" d="m-0.0965,16.1043l16.10001,-16.06917l-0.00001,16.06917l-16.1,0z" stroke-linecap="null" stroke-linejoin="null" stroke-dasharray="null" stroke-width="1.5" fill="#cccccc"/>
+  <path id="svg_6" d="m0.0035,16.10449l0,-15.99999l16,15.99999l-16,0z" stroke-linecap="null" stroke-linejoin="null" stroke-dasharray="null" stroke-width="1.5" fill="#666666"/>
+ </svg>
+</g>
+
+
+<g id="select">
+<svg viewBox="0 0 24 24" version="1.1">
+	<g>
+	<path fill="#2F2F2C" d="M0,0v24h24V0H0z M17.147,20.757l-2.941,1.501l-3.677-6.005l-4.411,3.003V1.241l12.5,12.01l-4.412,1.501
+		L17.147,20.757z"/>
+	</g>
+</svg>
+</g>
+
+
+<g id="select_node">
+<svg viewBox="0 0 24 24" version="1.1">
+	<g>
+	<path fill="none" d="M6.67,5.202l8.314,7.482l-4.158,0.831L6.67,16.841V5.202z"/>
+	<polygon fill="#302F2C" points="14.984,12.684 6.67,5.202 6.67,16.841 10.827,13.515 	"/>
+	<path fill="#302F2C" d="M0,24h24V0H0V24z M5.008,0.213L20.14,13.515l-4.987,1.663l3.325,6.651l-3.325,1.663l-4.157-6.651
+		l-5.988,3.325V0.213z"/>
+	</g>
+</svg>
+</g>
+
+
+<g id="rect">
+<svg id="eye-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+	x="0px" y="0px" width="27px" height="27px"
+>
+	<path d="M 0 25 L 0 27 L 27 27 L 27 25 L 0 25 ZM 0 0 L 0 8 L 27 8 L 27 0 L 0 0 Z" fill="#2f2f2c"/>
+</svg>
+</g>
+
+<g id="fh_rect">
+<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 52 52">
+ <defs>
+  <linearGradient y2="1" x2="1" y1="0.10156" x1="0.36328" id="svg_2">
+
+   <stop stop-opacity="1" stop-color="#ffffff" offset="0"/>
+   <stop stop-opacity="1" stop-color="#3b7e9b" offset="1"/>
+  </linearGradient>
+  <linearGradient y2="0.3945" x2="0.6132" y1="0.1093" x1="0.3046" id="svg_9">
+   <stop stop-opacity="1" stop-color="#f9d225" offset="0"/>
+   <stop stop-opacity="1" stop-color="#bf5f00" offset="1"/>
+  </linearGradient>
+ </defs>
+  <rect stroke="#2f2f2c" stroke-width="2" fill="url(#svg_2)" id="svg_1" height="50" width="50" y="0.75" x="1.25"/>
+  <path stroke-width="2" stroke="#2f2f2c" fill="url(#svg_9)" id="svg_2" d="m31.5,0l-8.75,20.25l0.75,24l16.5,-16.5l6,-12.5"/>
+  <path stroke-width="2" stroke="#2f2f2c" fill="#fce0a9" id="svg_10" d="m39.5,28.5c-2,-9.25 -10.25,-11.75 -17,-7.4375l0.4843,24.4414z"/>
+  <path id="svg_11" stroke-width="2" stroke="#2f2f2c" fill="#2f2f2c" d="m26.9318,41.1745c-0.4491,-2.3511 -2.3021,-2.9866 -3.8181,-1.8905l0.1087,6.2126z"/>
+</svg>
+</g>
+
+
+<g id="circle">
+<svg id="Untitled-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+	x="0px" y="0px" width="27px" height="27px"
+>
+	<path d="M 27 0 L 13.5 0 C 20.9559 0 27 6.0441 27 13.5 L 27 0 ZM 27 27 L 27 13.5 C 27 20.9559 20.9559 27 13.5 27 L 27 27 ZM 0 27 L 13.5 27 C 6.0441 27 0 20.9559 0 13.5 L 0 27 ZM 0 0 L 0 13.5 C 0 6.0441 6.0441 0 13.5 0 L 0 0 Z" fill="#2f2f2c"/>
+</svg>
+</g>
+
+<g id="ellipse">
+<svg id="eye-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+	x="0px" y="0px" width="27px" height="27px"
+>
+	<path fill="#2F2F2C" d="M27,0H0v27h27 M13.25,7.617c6.742,0,12.207,3.846,12.207,8.59c0,4.745-5.465,8.591-12.207,8.591
+		S1.042,20.952,1.042,16.207C1.042,11.463,6.508,7.617,13.25,7.617z"/>
+</svg>
+</g>
+
+<g id="fh_ellipse">
+<svg viewBox="0 0 52 52" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+  <linearGradient id="svg_9" x1="0.3046" y1="0.1093" x2="0.6132" y2="0.3945">
+   <stop offset="0" stop-color="#f9d225" stop-opacity="1"/>
+   <stop offset="1" stop-color="#bf5f00" stop-opacity="1"/>
+  </linearGradient>
+  <linearGradient id="svg_4" x1="0.17188" y1="0.1875" x2="1" y2="1">
+   <stop offset="0" stop-color="#ffffff" stop-opacity="1"/>
+   <stop offset="1" stop-color="#ff6666" stop-opacity="1"/>
+  </linearGradient>
+ </defs>
+  <ellipse stroke-width="2" stroke="#2f2f2c" fill="url(#svg_4)" id="svg_1" rx="23" ry="12" cy="37" cx="27"/>
+  <path d="m31.5,0l-8.75,20.25l0.75,24l16.5,-16.5l6,-12.5" id="svg_2" fill="url(#svg_9)" stroke="#2f2f2c" stroke-width="2"/>
+  <path d="m39.5,28.5c-2,-9.25 -10.25,-11.75 -17,-7.4375l0.4843,24.4414z" id="svg_10" fill="#fce0a9" stroke="#2f2f2c" stroke-width="2"/>
+  <path d="m26.9318,41.1745c-0.4491,-2.3511 -2.3021,-2.9866 -3.8181,-1.8905l0.1087,6.2126z" fill="#2f2f2c" stroke="#2f2f2c" stroke-width="2" id="svg_11"/>
+ </svg>
+</g>
+
+<g id="pencil">
+<svg viewBox="0 0 24 24" version="1.1">
+	<path fill="#2F2F2C" d="M-1.5-1.5v27h27v-27 M19.616,9.216L6.647,21.567l-5.531,1.285l-0.1-0.094l1.449-5.269L15.438,5.204
+		c0.231-0.062,0.788-0.219,1.579-0.062L3.255,18.243l-0.394,1.381l1.58,1.504l1.481-0.375l0.66-0.598l0.065-1.408l-1.053-1.004
+		L18.203,5.736c0.196,0.157,0.196,0.157,0.396,0.376C20.476,7.869,19.616,9.216,19.616,9.216z M22.87,4.9
+		c-0.002,0.774-0.358,1.561-1.013,2.185l-1.217,1.16c0,0,0.921-1.348-0.989-3.103c-1.679-1.599-3.259-0.91-3.259-0.91l1.284-1.223
+		c1.154-1.126,3.161-1.126,4.278-0.062c0.622,0.549,0.913,1.239,0.915,1.938V4.9z"/>
+</svg>
+</g>
+
+<g id="pen">
+<svg id="eye-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+	x="0px" y="0px" width="27px" height="27px"
+>
+	<path d="M 3 1 L 26 24 L 24 26 L 1 3 L 3 1 ZM 0 0 L 0 27 L 27 27 L 27 0 L 0 0 Z" fill="#2f2f2c"/>
+</svg>
+</g>
+
+<g id="path">
+<svg id="eye-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" x="0px" y="0px" width="27px" height="27px">
+	<g id="Layer%201">
+		<path fill="#2F2F2C" d="M0,0v27h27V0H0z M12.193,1.904c0-0.365,0.871,0,0.871,0v12.105c-0.509,0.18-0.871,0.664-0.871,1.233c0,0.722,0.585,1.305,1.307,1.305c0.722,0,1.307-0.583,1.307-1.305c0-0.569-0.362-1.054-0.871-1.233V1.904c0,0,0.871-0.365,0.871,0c0,6.811,5.226,11.677,5.226,11.677l-3.256,8.193h-6.552l-3.256-8.193C6.968,13.581,12.193,8.714,12.193,1.904z M7.839,25.258v-2.612h11.322v2.612H7.839z"/>
+	</g>
+</svg>
+</g>
+
+
+<g id="text">
+<svg id="eye-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+	x="0px" y="0px" width="27px" height="27px"
+>
+	<path fill="#2F2F2C" d="M0,0v27h27V0H0z M7.283,25.258v-1.741h0.539c1.133,0,1.879-0.204,2.224-0.64c0.345-0.422,0.525-1.157,0.525-2.191V4.355H8.733c-1.105,0-1.906,0.123-2.417,0.367C5.791,4.967,5.362,5.443,5.017,6.151C4.658,6.873,4.451,7.73,4.381,8.709H2.613V2.613h21.774v6.097H22.48c-0.359-1.701-0.87-2.858-1.52-3.457s-1.686-0.898-3.108-0.898h-1.976v16.331c0,1.062,0.165,1.81,0.525,2.218c0.358,0.409,1.104,0.613,2.236,0.613h0.595v1.741H7.283z"/>
+</svg>
+</g>
+
+
+
+<g id="add_subpath">
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 124 124" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+  <linearGradient id="svg_4" x1="0.33594" y1="0.28125" x2="1" y2="1">
+   <stop offset="0" stop-color="#ffffff" stop-opacity="1"/>
+   <stop offset="1" stop-color="#33a533" stop-opacity="1"/>
+  </linearGradient>
+ </defs>
+ <g>
+  <path d="m6,103l55,-87c85,33.64 -26,37.12 55,87l-110,0z" id="svg_1" fill="url(#svg_4)" stroke="#2f2f2c" stroke-width="4" stroke-dasharray="null"/>
+  <g id="svg_7">
+   <circle stroke-dasharray="null" stroke-width="5" stroke="#2f2f2c" fill="#ffffff" id="svg_6" r="22.63281" cy="88.5" cx="45.5"/>
+   <line stroke-dasharray="null" stroke-width="7" stroke="#2f2f2c" id="svg_2" y2="104.03768" x2="45.5" y1="72.96232" x1="45.5"/>
+   <line stroke-dasharray="null" stroke-width="7" stroke="#2f2f2c" id="svg_3" y2="88.5" x2="61.03768" y1="88.5" x1="29.96232"/>
+  </g>
+ </g>
+ </svg>
+</g>
+
+<g id="close_path">
+<svg viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <g>
+  <path stroke="#000" stroke-width="15" fill="#ffc8c8" d="m121.5,40l-84,106l27,115l166,2l29,-111"/>
+  <line x1="240" y1="136" x2="169.5" y2="74" stroke="#A00" stroke-width="25" fill="none"/>
+  <path stroke="none" fill ="#A00" d="m158,65l31,74l-3,-50l51,-3z"/>
+  <g stroke-width="15" stroke="#00f" fill="#0ff">
+  <circle r="30" cy="41" cx="123"/>
+  <circle r="30" cy="146" cx="40"/>
+  <circle r="30" cy="260" cx="69"/>
+  <circle r="30" cy="260" cx="228"/>
+  <circle r="30" cy="148" cx="260"/>
+  </g>
+ </g>
+</svg>
+</g>
+
+<g id="open_path">
+<svg viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <g>
+  <path stroke="#000" stroke-width="15" fill="#ffc8c8" d="m123.5,38l-84,106l27,115l166,2l29,-111"/>
+  <line x1="276.5" y1="153" x2="108.5" y2="24" stroke="#000" stroke-width="10" fill="none"/>
+  <g stroke-width="15" stroke="#00f" fill="#0ff">
+   <circle r="30" cy="41" cx="123"/>
+   <circle r="30" cy="146" cx="40"/>
+   <circle r="30" cy="260" cx="69"/>
+   <circle r="30" cy="260" cx="228"/>
+   <circle r="30" cy="148" cx="260"/>
+  </g>
+  <g  stroke="#A00" stroke-width="15" fill="none">
+   <line x1="168" y1="24" x2="210" y2="150"/>
+   <line x1="210" y1="24" x2="168" y2="150"/>
+  </g>
+ </g>
+</svg>
+</g>
+
+
+<g id="image">
+<svg id="eye-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+	x="0px" y="0px" width="27px" height="27px"
+>
+	<g id="Layer%201">
+			<path fill="#2F2F2C" d="M23.377,8.006H3.624v13.602h19.753V8.006z M19.849,9.676c0.91,0,1.646,0.748,1.646,1.67s-0.736,1.671-1.646,1.671c-0.908,0-1.646-0.749-1.646-1.671S18.94,9.676,19.849,9.676z M5.034,20.175L9.972,9.438l5.173,7.158l2.587-2.147l4.233,5.727H5.034z"/>
+			<path fill="#2F2F2C" d="M0,0v27h27V0H0z M25.258,23.517H1.742V6.097h23.516V23.517z"/>
+	</g>
+</svg>
+</g>
+
+<g id="zoom">
+<svg id="eye-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+	x="0px" y="0px" width="27px" height="27px"
+>
+	<circle fill="#2F2F2C" cx="10.887" cy="10.887" r="6.532"/>
+	<path fill="#2F2F2C" d="M0,0v27h27V0H0z M15.373,18.856c-1.326,0.747-2.855,1.176-4.486,1.176c-5.051,0-9.145-4.095-9.145-9.145
+		c0-5.051,4.094-9.145,9.145-9.145c5.05,0,9.145,4.094,9.145,9.145c0,2.081-0.697,3.999-1.868,5.536l6.223,6.223l-2.612,2.612
+		L15.373,18.856z"/>
+</svg>
+</g>
+
+<g id="arrow_right">
+	<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 25 50">
+	  <path stroke="none" fill="#ccc" d="m0,0l0,50l25,-25l-25,-25z"/>
+	</svg>
+</g>
+
+<g id="arrow_right_big">
+	<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 50">
+	  <path stroke="none" fill="#ccc" d="m0,0l0,50l25,-25l-25,-25z"/>
+	</svg>
+</g>
+
+<g id="arrow_down">
+	<svg viewBox="0 0 50 40" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+	  <path transform="rotate(90, 26, 13)" d="m14,-12l0,50l25,-25l-25,-25z" fill="#ccc" stroke="none"/>
+	</svg>
+</g>
+
+<g id="align_left">
+	<svg viewBox="0 0 27 27"  version="1.1"
+		xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+		x="0px" y="0px" width="27px" height="27px"
+	>
+		<path d="M 2 1 L 2 5 L 14 5 L 14 11 L 2 11 L 2 16 L 20 16 L 20 22 L 2 22 L 2 26 L 1 26 L 1 1 L 2 1 ZM 27 0 L 0 0 L 0 27 L 27 27 L 27 0 Z" fill="#3f3f3c"/>
+	</svg>
+</g>
+
+<g id="align_center">
+	<svg viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+		xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+		x="0px" y="0px" width="27px" height="27px">
+			<path d="M 13 1 L 14 1 L 14 6 L 22 6 L 22 12 L 14 12 L 14 15 L 19 15 L 19 21 L 14 21 L 14 26 L 13 26 L 13 21 L 8 21 L 8 15 L 13 15 L 13 12 L 5 12 L 5 6 L 13 6 L 13 1 ZM 0 0 L 0 27 L 27 27 L 27 0 L 0 0 Z" fill="#3f3f3c"/>
+
+	</svg>
+</g>
+
+<g id="align_right">
+	<svg viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+		xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+		x="0px" y="0px" width="27px" height="27px"
+	>
+		<path d="M 25 1 L 25 5 L 13 5 L 13 11 L 25 11 L 25 16 L 7 16 L 7 22 L 25 22 L 25 26 L 26 26 L 26 1 L 25 1 ZM 0 0 L 27 0 L 27 27 L 0 27 L 0 0 Z" fill="#3f3f3c"/>
+	</svg>
+</g>
+
+<g id="align_top">
+	<svg id="Untitled-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+		xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+		x="0px" y="0px" width="27px" height="27px"
+	>
+		<path d="M 1 2 L 5 2 L 5 14 L 11 14 L 11 2 L 16 2 L 16 20 L 22 20 L 22 2 L 26 2 L 26 1 L 1 1 L 1 2 ZM 0 27 L 0 0 L 27 0 L 27 27 L 0 27 Z" fill="#3f3f3c"/>
+	</svg>
+</g>
+
+<g id="align_middle">
+<svg id="Untitled-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+	x="0px" y="0px" width="27px" height="27px"
+>
+	<path d="M 26 13 L 26 14 L 21 14 L 21 22 L 15 22 L 15 14 L 12 14 L 12 19 L 6 19 L 6 14 L 1 14 L 1 13 L 6 13 L 6 8 L 12 8 L 12 13 L 15 13 L 15 5 L 21 5 L 21 13 L 26 13 ZM 27 0 L 0 0 L 0 27 L 27 27 L 27 0 Z" fill="#3f3f3c"/>
+</svg>
+</g>
+
+<g id="align_bottom">
+<svg id="Untitled-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+	x="0px" y="0px" width="27px" height="27px"
+>
+	<path d="M 1 25 L 5 25 L 5 13 L 11 13 L 11 25 L 16 25 L 16 7 L 22 7 L 22 25 L 26 25 L 26 26 L 1 26 L 1 25 ZM 0 0 L 0 27 L 27 27 L 27 0 L 0 0 Z" fill="#3f3f3c"/>
+</svg>
+</g>
+
+<g id="linecap_butt">
+<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg" xmlns:se="http://svg-edit.googlecode.com" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
+ <defs>
+  <linearGradient id="svg_8" x1="0.8" y1="1" x2="0.2" y2="1">
+   <stop offset="0" stop-color="#2f2f2c" stop-opacity="1"/>
+   <stop offset="1" stop-color="#2f2f2c" stop-opacity="0"/>
+  </linearGradient>
+ </defs>
+ <g>
+  <rect fill="url(#svg_8)" stroke="#a0a0a0" stroke-width="2" x="-15.20196" y="43.5974" width="94.8373" height="50.3728" id="svg_3" transform="rotate(-45, 32.2148, 68.7832)"/>
+  <path id="svg_1" d="m6.63133,95.07755l59.17514,-59.17514" stroke-width="3" stroke="#00ffff" fill="none"/>
+  <path id="svg_2" d="m51.62893,36.10742l13.05662,-13.05662l13.05661,13.05662l-13.05661,13.05662l-13.05662,-13.05662z" stroke="none" fill="#00ffff"/>
+ </g>
+</svg>
+</g>
+
+<g id="linecap_square">
+<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg" xmlns:se="http://svg-edit.googlecode.com" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
+ <defs>
+  <linearGradient id="svg_8" x1="0.8" y1="1" x2="0.2" y2="1">
+   <stop offset="0" stop-color="#2f2f2c" stop-opacity="1"/>
+   <stop offset="1" stop-color="#2f2f2c" stop-opacity="0"/>
+  </linearGradient>
+ </defs>
+ <g>
+  <rect fill="url(#svg_8)" stroke="none" x="-18.51568" y="35.5974" width="117.46469" height="50.3728" id="svg_3" transform="rotate(-45, 40.2168, 60.7832)"/>
+  <path id="svg_1" d="m6.63133,95.07755l59.17514,-59.17514" stroke-width="3" stroke="#00ffff" fill="none"/>
+  <path id="svg_2" d="m51.62893,36.10742l13.05662,-13.05662l13.05661,13.05662l-13.05661,13.05662l-13.05662,-13.05662z" stroke="none" fill="#00ffff"/>
+ </g>
+</svg>
+</g>
+
+<g id="linecap_round">
+<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:se="http://svg-edit.googlecode.com">
+ <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
+ <defs>
+  <linearGradient y2="1" x2="0.2" y1="1" x1="0.8" id="svg_8">
+   <stop stop-opacity="1" stop-color="#2f2f2c" offset="0"/>
+   <stop stop-opacity="0" stop-color="#2f2f2c" offset="1"/>
+  </linearGradient>
+ </defs>
+ <g>
+  <path transform="rotate(-45, 41.5117, 59.4648)" id="svg_3" d="m-19.0679,34.2946l94.8359,0c36.499,-1.4142 33.67101,48.9569 0,50.3711l-94.8359,0l0,-50.3711z" stroke-width="2" stroke="#a0a0a0" fill="url(#svg_8)"/>
+  <path id="svg_1" d="m6.63133,95.07755l59.17515,-59.17515" stroke-width="3" stroke="#00ffff" fill="none"/>
+  <path id="svg_2" d="m51.62893,36.10742l13.05662,-13.05662l13.05661,13.05662l-13.05661,13.05662l-13.05662,-13.05662z" stroke="none" fill="#00ffff"/>
+ </g>
+</svg>
+</g>
+
+<g id="linejoin_miter">
+<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:se="http://svg-edit.googlecode.com">
+ <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
+ <defs>
+  <linearGradient y2="1" x2="0.2" y1="1" x1="0.8" id="svg_8">
+   <stop stop-opacity="1" stop-color="#2f2f2c" offset="0"/>
+   <stop stop-opacity="0" stop-color="#2f2f2c" offset="1"/>
+  </linearGradient>
+ </defs>
+ <g>
+  <path fill="none" stroke="url(#svg_8)" stroke-width="49" d="m-15,-35l75,85l-75,75" id="svg_6"/>
+  <path transform="rotate(90, 57.8925, 50.2519)" fill="#00ffff" stroke="none" d="m44.83592,50.25187l13.05661,-13.05663l13.05661,13.05663l-13.05661,13.05662l-13.05661,-13.05662z" id="svg_2"/>
+  <path id="svg_4" d="m-15,-35l75,85l-75,75" stroke-width="3" stroke="#00ffff" fill="none"/>
+ </g>
+</svg>
+</g>
+
+<g id="linejoin_bevel">
+<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:se="http://svg-edit.googlecode.com">
+ <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
+ <defs>
+  <linearGradient y2="1" x2="0.2" y1="1" x1="0.8" id="svg_8">
+   <stop stop-opacity="1" stop-color="#2f2f2c" offset="0"/>
+   <stop stop-opacity="0" stop-color="#2f2f2c" offset="1"/>
+  </linearGradient>
+ </defs>
+ <g>
+  <path stroke-linejoin="bevel" fill="none" stroke="url(#svg_8)" stroke-width="49" d="m-15,-35l75,85l-75,75" id="svg_6"/>
+  <path transform="rotate(90, 57.8925, 50.2519)" fill="#00ffff" stroke="none" d="m44.83592,50.25187l13.05661,-13.05663l13.05661,13.05663l-13.05661,13.05662l-13.05661,-13.05662z" id="svg_2"/>
+  <path id="svg_4" d="m-15,-35l75,85l-75,75" stroke-width="3" stroke="#00ffff" fill="none"/>
+ </g>
+</svg>
+</g>
+
+<g id="linejoin_round">
+<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:se="http://svg-edit.googlecode.com">
+ <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
+ <defs>
+  <linearGradient y2="1" x2="0.2" y1="1" x1="0.8" id="svg_8">
+   <stop stop-opacity="1" stop-color="#2f2f2c" offset="0"/>
+   <stop stop-opacity="0" stop-color="#2f2f2c" offset="1"/>
+  </linearGradient>
+ </defs>
+ <g>
+  <path stroke-linejoin="round" fill="none" stroke="url(#svg_8)" stroke-width="49" d="m-15,-35l75,85l-75,75" id="svg_6"/>
+  <path transform="rotate(90, 57.8925, 50.2519)" fill="#00ffff" stroke="none" d="m44.83592,50.25187l13.05661,-13.05663l13.05661,13.05663l-13.05661,13.05662l-13.05661,-13.05662z" id="svg_2"/>
+  <path id="svg_4" d="m-15,-35l75,85l-75,75" stroke-width="3" stroke="#00ffff" fill="none"/>
+ </g>
+</svg>
+</g>
+
+
+<g id="no_color">
+	<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+	  <line fill="none" stroke="#d40000" id="svg_90" y2="24" x2="24" y1="0" x1="0"/>
+	  <line id="svg_92" fill="none" stroke="#d40000" y2="24" x2="0" y1="0" x1="24"/>
+	</svg>
+</g>
+
+
+<g id="node_delete">
+<svg width="24" height="24" xmlns="http://www.w3.org/2000/svg">
+  <path stroke-width="2" id="svg_102" d="m4.1953,19.42128c15.49391,-15.53349 -0.21065,0.1581 15.61084,-15.57944" stroke="#8dd35f" fill="none"/>
+  <circle stroke-width="0.5" id="svg_121" stroke="#0000ff" fill="#00ffff" r="2.26172" cy="4" cx="19.75"/>
+  <circle id="svg_123" stroke-width="0.5" stroke="#0000ff" fill="#00ffff" r="2.26172" cy="19.40299" cx="4.0653"/>
+  <circle id="svg_7" stroke-width="0.5" stroke="#0000ff" fill="#00ffff" r="2.26172" cy="11.625" cx="11.9375"/>
+  <g transform="rotate(-45.291072845458984 9.81157112121582,9.244086265563965) " id="svg_6">
+   <line stroke-linecap="round" id="svg_4" y2="9.45264" x2="15.14996" y1="9.3943" x1="4.47318" stroke-dasharray="null" stroke-width="2" stroke="#ff0000" fill="none"/>
+   <line stroke-linecap="round" id="svg_5" y2="14.46579" x2="9.66571" y1="4.02238" x1="9.7824" stroke-dasharray="null" stroke-width="2" stroke="#ff0000" fill="none"/>
+  </g>
+</svg>
+</g>
+
+<g id="node_clone">
+<svg width="24" height="24" xmlns="http://www.w3.org/2000/svg">
+  <path stroke-width="2" id="svg_102" d="m4.1953,19.42128c15.49391,-15.53349 -0.21065,0.1581 15.61084,-15.57944" stroke="#8dd35f" fill="none"/>
+  <circle stroke-width="0.5" id="svg_121" stroke="#0000ff" fill="#00ffff" r="2.26172" cy="4" cx="19.75"/>
+  <circle id="svg_123" stroke-width="0.5" stroke="#0000ff" fill="#00ffff" r="2.26172" cy="19.40299" cx="4.0653"/>
+  <circle id="svg_7" stroke-width="0.5" stroke="#0000ff" fill="#00ffff" r="2.26172" cy="11.625" cx="11.9375"/>
+  <line stroke-linecap="round" id="svg_5" y2="14.46579" x2="9.66571" y1="4.02238" x1="9.7824" stroke-dasharray="null" stroke-width="2" stroke="#0000ff" fill="#0000ff"/>
+  <line stroke-linecap="round" id="svg_4" y2="9.45264" x2="15.14996" y1="9.3943" x1="4.47318" stroke-dasharray="null" stroke-width="2" stroke="#0000ff" fill="#0000ff"/>
+</svg>
+</g>
+
+
+
+<g id="svg_eof"/>
+
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/text.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/text.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/text.svg	(revision 29468)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="27px" height="27px" viewBox="0 0 27 27" enable-background="new 0 0 27 27" xml:space="preserve">
+<path fill="#2F2F2C" d="M0,0v27h27V0H0z M7.283,25.258v-1.741h0.539c1.133,0,1.879-0.204,2.224-0.64
+	c0.345-0.422,0.525-1.157,0.525-2.191V4.355H8.733c-1.105,0-1.906,0.123-2.417,0.367C5.791,4.967,5.362,5.443,5.017,6.151
+	C4.658,6.873,4.451,7.73,4.381,8.709H2.613V2.613h21.774v6.097H22.48c-0.359-1.701-0.87-2.858-1.52-3.457s-1.686-0.898-3.108-0.898
+	h-1.976v16.331c0,1.062,0.165,1.81,0.525,2.218c0.358,0.409,1.104,0.613,2.236,0.613h0.595v1.741H7.283z"/>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/zoom.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/zoom.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/images/zoom.svg	(revision 29468)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="27px" height="27px" viewBox="0 0 27 27" enable-background="new 0 0 27 27" xml:space="preserve">
+<g>
+	<circle fill="#2F2F2C" cx="10.887" cy="10.887" r="6.532"/>
+	<path fill="#2F2F2C" d="M0,0v27h27V0H0z M15.373,18.856c-1.326,0.747-2.855,1.176-4.486,1.176c-5.051,0-9.145-4.095-9.145-9.145
+		c0-5.051,4.094-9.145,9.145-9.145c5.05,0,9.145,4.094,9.145,9.145c0,2.081-0.697,3.999-1.868,5.536l6.223,6.223l-2.612,2.612
+		L15.373,18.856z"/>
+</g>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/index.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/index.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/index.html	(revision 29468)
@@ -0,0 +1,630 @@
+<!DOCTYPE html>
+<html>
+<!-- removed for now, causes problems in Firefox: manifest="svg-editor.manifest" -->
+<head>
+<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
+<meta http-equiv="X-UA-Compatible" content="chrome=1"/>
+<link rel="icon" type="image/png" href="images/logo.png"/>
+
+<!--{if svg_edit_release}>
+  <link rel="stylesheet" href="css/method-draw.compiled.css" type="text/css"/>
+<!{else}-->
+  <link rel="stylesheet" href="lib/jgraduate/css/jPicker.css" type="text/css"/>
+  <link rel="stylesheet" href="lib/jgraduate/css/jgraduate.css" type="text/css"/>
+  <link rel="stylesheet" href="css/method-draw.css" type="text/css"/>
+  <link rel="stylesheet" href="css/fonts.css" type="text/css"/>
+<!--{endif}-->
+  <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=no;"/>
+  <meta name="apple-mobile-web-app-capable" content="yes"/>
+
+
+  <script type="text/javascript" src="lib/jquery.js"></script>
+
+
+<!--{if svg_edit_release}>
+  <script type="text/javascript" src="method-draw.compiled.js"></script>
+<!{else}-->
+  <script type="text/javascript" src="lib/touch.js"></script>
+  <script type="text/javascript" src="lib/js-hotkeys/jquery.hotkeys.min.js"></script>
+  <script type="text/javascript" src="lib/jquerybbq/jquery.bbq.min.js"></script>
+  <script type="text/javascript" src="icons/jquery.svgicons.js"></script>
+  <script type="text/javascript" src="lib/jgraduate/jquery.jgraduate.js"></script>
+  <script type="text/javascript" src="lib/contextmenu/jquery.contextMenu.js"></script>
+  <script type="text/javascript" src="lib/jquery-ui/jquery-ui-1.8.17.custom.min.js"></script>
+  <script type="text/javascript" src="src/browser.js"></script>
+  <script type="text/javascript" src="src/svgtransformlist.js"></script>
+  <script type="text/javascript" src="src/math.js"></script>
+  <script type="text/javascript" src="src/units.js"></script>
+  <script type="text/javascript" src="src/svgutils.js"></script>
+  <script type="text/javascript" src="src/sanitize.js"></script>
+  <script type="text/javascript" src="src/history.js"></script>
+  <script type="text/javascript" src="src/select.js"></script>
+  <script type="text/javascript" src="src/draw.js"></script>
+  <script type="text/javascript" src="src/path.js"></script>
+  <script type="text/javascript" src="src/dialog.js"></script>
+  <script type="text/javascript" src="src/svgcanvas.js"></script>
+  <script type="text/javascript" src="src/method-draw.js"></script>
+  <script type="text/javascript" src="lib/jquery-draginput.js"></script>
+  <script type="text/javascript" src="lib/contextmenu.js"></script>
+  <script type="text/javascript" src="lib/jgraduate/jpicker.min.js"></script>
+  <script type="text/javascript" src="lib/mousewheel.js"></script>
+  <script type="text/javascript" src="extensions/ext-eyedropper.js"></script>
+  <script type="text/javascript" src="extensions/ext-shapes.js"></script>
+  <script type="text/javascript" src="extensions/ext-grid.js"></script>
+  <script type="text/javascript" src="lib/requestanimationframe.js"></script>
+  <script type="text/javascript" src="lib/taphold.js"></script>
+<!--{endif}-->
+
+
+<title>Method Draw</title>
+</head>
+<body>
+<div id="svg_editor">
+
+<div id="rulers">
+	<div id="ruler_corner"></div>
+	<div id="ruler_x">
+	  <div id="ruler_x_cursor"></div>
+		<div>
+			<canvas height="15"></canvas>
+		</div>
+	</div>
+	<div id="ruler_y">
+	  <div id="ruler_y_cursor"></div>
+		<div>
+			<canvas width="15"></canvas>
+		</div>
+	</div>
+</div>
+
+<div id="workarea">
+<div id="svgcanvas" style="position:relative">
+
+</div>
+</div>
+
+<div id="menu_bar">
+  <a class="menu">
+    <div class="menu_title" id="logo"></div>
+    <div class="menu_list">
+      <div id="tool_about" class="menu_item">About this Editor...</div>
+      <div class="separator"></div>
+      <div id="tool_about" class="menu_item">Keyboard Shortcus...</div>
+    </div>
+  </a>
+  
+  <div class="menu">
+  	<div class="menu_title">File</div>
+  	<div class="menu_list" id="file_menu"> 
+  		<div id="tool_clear" class="menu_item">New Document</div>
+  		<div id="tool_open" class="menu_item" style="display: none;"><div id="fileinputs"></div>Open SVG...</div>
+  		<div id="tool_import" class="menu_item" style="display: none;"><div id="fileinputs_import"></div>Import Image...</div>
+  		<div id="tool_save" class="menu_item">Save Image... <span class="shortcut">âS</span></div>
+  		<div id="tool_export" class="menu_item">Export as PNG</div>
+  	</div>
+  </div>
+
+  <div class="menu">
+    <div class="menu_title">Edit</div>
+  	<div class="menu_list" id="edit_menu">
+  		<div class="menu_item" id="tool_undo">Undo <span class="shortcut">âZ</span></div>
+  		<div class="menu_item" id="tool_redo">Redo <span class="shortcut">âY</span></div>
+  		<div class="separator"></div>
+  		<div class="menu_item action_selected disabled" id="tool_cut">Cut <span class="shortcut">âX</span></div>
+  		<div class="menu_item action_selected disabled" id="tool_copy">Copy <span class="shortcut">âC</span></div>
+			<div class="menu_item action_selected disabled" id="tool_paste">Paste <span class="shortcut">âV</span></div>
+  		<div class="menu_item action_selected disabled" id="tool_clone">Duplicate <span class="shortcut">âD</span></div>
+			<div class="menu_item action_selected disabled" id="tool_delete">Delete <span>â«</span></div>
+    </div>
+  </div>
+  
+  <div class="menu">
+    <div class="menu_title">Object</div>
+  	<div class="menu_list"  id="object_menu">
+			<div class="menu_item action_selected disabled" id="tool_move_top">Bring to Front <span class="shortcut">ââ§â</span></div>
+			<div class="menu_item action_selected disabled" id="tool_move_up">Bring Forward <span class="shortcut">ââ</span></div>
+			<div class="menu_item action_selected disabled" id="tool_move_down">Send Backward <span class="shortcut">ââ</span></div>
+			<div class="menu_item action_selected disabled" id="tool_move_bottom">Send to Back <span class="shortcut">ââ§â</span></div>
+			<div class="separator"></div>
+			<div class="menu_item action_multi_selected disabled" id="tool_group">Group Elements <span class="shortcut">âG</span></div>
+			<div class="menu_item action_group_selected disabled" id="tool_ungroup">Ungroup Elements <span class="shortcut">ââ§G</span></div>
+			<div class="separator"></div>
+			<div class="menu_item action_path_convert_selected disabled" id="tool_topath">Convert to Path</div>
+			<div class="menu_item action_path_selected disabled" id="tool_reorient">Reorient path</div>
+    </div>
+  </div>
+
+  <div class="menu">
+    <div class="menu_title">View</div>
+  	<div class="menu_list" id="view_menu">
+  	    <div class="menu_item push_button_pressed" id="tool_rulers">View Rulers</div>
+  	    <div class="menu_item" id="tool_wireframe">View Wireframe</div>
+  	    <div class="menu_item" id="tool_snap">Snap to Grid</div>
+  	    <div class="separator"></div>
+    		<div class="menu_item" id="tool_source">Source... <span class="shortcut">âU</span></div>
+    </div>
+  </div>
+  
+
+  
+</div>
+
+<div id="tools_top" class="tools_panel">
+
+	<div id="canvas_panel" class="context_panel">
+	  
+	  <h4 class="clearfix">Canvas</h4>
+	  
+		<label data-title="Change canvas width">
+			<input size="3" id="canvas_width" type="text" pattern="[0-9]*" />
+			<span class="icon_label">Width</span>
+		</label>
+		<label data-title="Change canvas height">
+			<input id="canvas_height" size="3" type="text" pattern="[0-9]*" />
+			<span class="icon_label">Height</span>
+		</label>
+		  	
+  	
+  	<label data-title="Change canvas color" class="draginput">
+    	<span>Color</span>
+  		<div id="color_canvas_tools">
+  		  <div class="color_tool active" id="tool_canvas">
+    		  <div class="color_block">
+    			  <div id="canvas_bg"></div>
+    			  <div id="canvas_color"></div>
+    		  </div>
+    		</div>
+    	</div>
+  	</label>
+
+	  <div class="draginput">
+	    <span>Sizes</span>
+  		<select id="resolution">
+  			<option id="selectedPredefined" selected="selected">Custom</option>
+  			<option>640x480</option>
+  			<option>800x600</option>
+  			<option>1024x768</option>
+  			<option>1280x960</option>
+  			<option>1600x1200</option>
+  			<option id="fitToContent" value="content">Fit to Content</option>
+  		</select>
+  		<div class="caret"></div>
+  		<label id="resolution_label">Custom</label>
+		</div>
+
+	</div>
+	
+	<div id="rect_panel" class="context_panel">
+	  <h4 class="clearfix">Rectangle</h4>
+	  <label>
+			<input id="rect_x" class="attr_changer" data-title="Change X coordinate" size="3" data-attr="x" pattern="[0-9]*" />
+			<span>X</span> 
+		</label>
+		<label>
+		  <input id="rect_y" class="attr_changer" data-title="Change Y coordinate" size="3" data-attr="y" pattern="[0-9]*" />
+			<span>Y</span> 
+		</label>
+		<label id="rect_width_tool attr_changer" data-title="Change rectangle width">
+			<input id="rect_width" class="attr_changer" size="3" data-attr="width" type="text" pattern="[0-9]*" />
+			<span class="icon_label">Width</span>
+		</label>
+		<label id="rect_height_tool" data-title="Change rectangle height">
+			<input id="rect_height" class="attr_changer" size="3" data-attr="height" type="text" pattern="[0-9]*" />
+			<span class="icon_label">Height</span>
+		</label>
+	</div>
+	
+	<div id="path_panel" class="context_panel clearfix">
+	  <h4 class="clearfix">Path</h4>
+	  <label>
+		  <input id="path_x" class="attr_changer" data-title="Change ellipse's cx coordinate" size="3" data-attr="x" pattern="[0-9]*" />
+		  <span>X</span>
+		</label>
+		<label>
+		  <input id="path_y" class="attr_changer" data-title="Change ellipse's cy coordinate" size="3" data-attr="y" pattern="[0-9]*" />
+		  <span>Y</span>
+		</label>
+	</div>
+
+	<div id="image_panel" class="context_panel clearfix">
+	<h4>Image</h4>
+		<label>
+			<input id="image_x" class="attr_changer" data-title="Change X coordinate" size="3" data-attr="x"  pattern="[0-9]*"/>
+		  <span>X</span> 
+		</label>
+		<label>
+		  <input id="image_y" class="attr_changer" data-title="Change Y coordinate" size="3" data-attr="y"  pattern="[0-9]*"/>
+		  <span>Y</span> 
+		</label>
+		<label>
+		  <input id="image_width" class="attr_changer" data-title="Change image width" size="3" data-attr="width" pattern="[0-9]*" />
+		  <span class="icon_label">Width</span>
+		</label>
+		<label>
+		  <input id="image_height" class="attr_changer" data-title="Change image height" size="3" data-attr="height" pattern="[0-9]*" />
+		  <span class="icon_label">Height</span>
+		</label>
+  </div>
+  
+  <div id="circle_panel" class="context_panel">
+    <h4>Circle</h4>
+		<label id="tool_circle_cx">
+		  <span>Center X</span>
+		  <input id="circle_cx" class="attr_changer" title="Change circle's cx coordinate" size="3" data-attr="cx"/>
+		</label>
+		<label id="tool_circle_cy">
+		  <span>Center Y</span>
+		  <input id="circle_cy" class="attr_changer" title="Change circle's cy coordinate" size="3" data-attr="cy"/>
+		</label>
+		<label id="tool_circle_r">
+		  <span>Radius</span>
+		  <input id="circle_r" class="attr_changer" title="Change circle's radius" size="3" data-attr="r"/>
+		</label>
+	</div>
+
+	<div id="ellipse_panel" class="context_panel clearfix">
+	  <h4>Ellipse</h4>
+		<label id="tool_ellipse_cx">
+		  <input id="ellipse_cx" class="attr_changer" data-title="Change ellipse's cx coordinate" size="3" data-attr="cx" pattern="[0-9]*" />
+		  <span>X</span>
+		</label>
+		<label id="tool_ellipse_cy">
+		  <input id="ellipse_cy" class="attr_changer" data-title="Change ellipse's cy coordinate" size="3" data-attr="cy" pattern="[0-9]*" />
+		  <span>Y</span>
+		</label>
+		<label id="tool_ellipse_rx">
+		  <input id="ellipse_rx" class="attr_changer" data-title="Change ellipse's x radius" size="3" data-attr="rx" pattern="[0-9]*" />
+	    <span>Radius X</span>
+		</label>
+		<label id="tool_ellipse_ry">
+		  <input id="ellipse_ry" class="attr_changer" data-title="Change ellipse's y radius" size="3" data-attr="ry" pattern="[0-9]*" />
+		  <span>Radius Y</span>
+		</label>
+	</div>
+
+	<div id="line_panel" class="context_panel clearfix">
+	  <h4>Line</h4>
+		<label id="tool_line_x1">
+		  <input id="line_x1" class="attr_changer" data-title="Change line's starting x coordinate" size="3" data-attr="x1" pattern="[0-9]*" />
+		  <span>Start X</span>
+		</label>
+		<label id="tool_line_y1">
+		  <input id="line_y1" class="attr_changer" data-title="Change line's starting y coordinate" size="3" data-attr="y1" pattern="[0-9]*" />
+		  <span>Start Y</span>
+		</label>
+		<label id="tool_line_x2">
+		  <input id="line_x2" class="attr_changer" data-title="Change line's ending x coordinate" size="3" data-attr="x2"   pattern="[0-9]*" />
+		  <span>End X</span>
+		</label>
+		<label id="tool_line_y2">
+		  <input id="line_y2" class="attr_changer" data-title="Change line's ending y coordinate" size="3" data-attr="y2"   pattern="[0-9]*" />
+		  <span>End Y</span>
+		</label>
+	</div>
+
+	<div id="text_panel" class="context_panel">
+	  <h4>Text</h4>
+		<label>
+		  <input id="text_x" class="attr_changer" data-title="Change text x coordinate" size="3" data-attr="x" pattern="[0-9]*" />
+		  <span>X</span>
+		</label>
+		<label>
+		  <input id="text_y" class="attr_changer" data-title="Change text y coordinate" size="3" data-attr="y" pattern="[0-9]*" />
+		  <span>Y</span>
+		</label>
+		
+		<div class="toolset draginput select twocol" id="tool_font_family">
+				<!-- Font family -->
+			<span>Font</span>
+		  <div id="preview_font" style="font-family: Helvetica, Arial, sans-serif;">Helvetica</div>
+		  <div class="caret"></div>
+			<input id="font_family" data-title="Change Font Family" size="12" type="hidden" />
+			<select id="font_family_dropdown">
+				  <option value="Helvetica, Arial, sans-serif" selected="selected">Helvetica</option>
+					<!--<option value="Arvo, sans-serif">Arvo</option>
+					<option value="Euphoria, sans-serif">Euphoria</option>
+					<option value="Oswald, sans-serif">Oswald</option>
+					<option value="'Shadows Into Light', serif">Shadows Into Light</option>
+					<option value="'Simonetta', serif">Simonetta</option>-->
+					<option value="'Trebuchet MS', Gadget, sans-serif">Trebuchet</option>
+					<option value="Georgia, Times, 'Times New Roman', serif">Georgia</option>
+					<option value="'Palatino Linotype', 'Book Antiqua', Palatino, serif">Palatino</option>
+					<option value="'Times New Roman', Times, serif">Times</option>
+					<option value="'Courier New', Courier, monospace">Courier</option>
+			</select>
+      <div class="tool_button" id="tool_bold" data-title="Bold Text [B]">B</div>
+      <div class="tool_button" id="tool_italic" data-title="Italic Text [I]">i</div>
+		</div>
+
+		<label id="tool_font_size" data-title="Change Font Size">
+			<input id="font_size" size="3" value="0" />
+			<span id="font_sizeLabel" class="icon_label">Font Size</span>
+		</label>
+		<!-- Not visible, but still used -->
+		<input id="text" type="text" size="35"/>
+	</div>
+
+	<!-- formerly gsvg_panel -->
+	<div id="container_panel" class="context_panel clearfix">
+	</div>
+	
+	<div id="use_panel" class="context_panel clearfix">
+		<div class="tool_button clearfix" id="tool_unlink_use" data-title="Break link to reference element (make unique)">Break link reference</div>
+	</div>
+	
+	<div id="g_panel" class="context_panel clearfix">
+		<h4>Group</h4>
+		<label>
+		  <input id="g_x" class="attr_changer" data-title="Change groups's x coordinate" size="3" data-attr="x" pattern="[0-9]*" />
+		  <span>X</span>
+		</label>
+		<label>
+		  <input id="g_y" class="attr_changer" data-title="Change groups's y coordinate" size="3" data-attr="y" pattern="[0-9]*" />
+		  <span>Y</span>
+		</label>
+	</div>
+	
+	<div id="path_node_panel" class="context_panel clearfix">
+	  <h4>Edit Path</h4>
+
+		<label id="tool_node_x">
+			<input id="path_node_x" class="attr_changer" data-title="Change node's x coordinate" size="3" data-attr="x" />
+		  <span>X</span>
+		</label>
+		<label id="tool_node_y">
+			<input id="path_node_y" class="attr_changer" data-title="Change node's y coordinate" size="3" data-attr="y" />
+		  <span>Y</span>
+		</label>
+		
+		<div id="segment_type" class="draginput label">
+		  <span>Segment Type</span>
+  		<select id="seg_type" data-title="Change Segment type">
+  			<option id="straight_segments" selected="selected" value="4">Straight</option>
+  			<option id="curve_segments" value="6">Curve</option>
+  		</select>
+  		<div class="caret"></div>
+  		<label id="seg_type_label">Straight</label>
+		</div>
+		
+		<!--
+		<label class="draginput checkbox" data-title="Link Control Points">
+		  <span>Linked Control Points</span>
+		  <div class="push_bottom"><input type="checkbox" id="tool_node_link" checked="checked" /></div>
+		</label>
+	-->
+		
+		<div class="clearfix"></div>
+		<div class="tool_button" id="tool_node_clone" title="Adds a node">Add Node</div>
+		<div class="tool_button" id="tool_node_delete" title="Delete Node">Delete Node</div>
+		<div class="tool_button" id="tool_openclose_path" title="Open/close sub-path">Open Path</div>
+		<!--<div class="tool_button" id="tool_add_subpath" title="Add sub-path"></div>-->
+	</div>
+	
+	<!-- Buttons when a single element is selected -->
+	<div id="selected_panel" class="context_panel">
+
+		<label id="tool_angle" data-title="Change rotation angle" class="draginput">
+			<input id="angle" class="attr_changer" size="2" value="0" data-attr="transform" data-min="-180" data-max="180" type="text"/>
+			<span class="icon_label">Rotation</span>
+			<div id="tool_angle_indicator">
+			  <div id="tool_angle_indicator_cursor"></div>
+			</div>
+		</label>
+		
+			<label class="toolset" id="tool_opacity" data-title="Change selected item opacity">
+  			<input id="group_opacity" class="attr_changer" data-attr="opacity" data-multiplier="0.01" size="3" value="100" step="5" min="0" max="100" />
+  		  <span id="group_opacityLabel" class="icon_label">Opacity</span>
+  		</label>
+		
+		<div class="toolset" id="tool_blur" data-title="Change gaussian blur value">
+			<label>
+				<input id="blur" size="2" value="0" step=".1"  min="0" max="10" />
+			  <span class="icon_label">Blur</span>
+			</label>
+		</div>
+		
+		<label id="cornerRadiusLabel" data-title="Change Rectangle Corner Radius">
+			<input id="rect_rx" size="3" value="0" data-attr="rx" class="attr_changer" type="text" pattern="[0-9]*" />
+		  <span class="icon_label">Roundness</span>
+		</label>
+		
+		<div class="clearfix"></div>
+		<div id="align_tools">
+  		<h4>Align</h4>
+  		<div class="toolset align_buttons" id="tool_position">
+  				<label>
+  				  <div class="col last clear" id="position_opts">
+    				  <div class="draginput_cell" id="tool_posleft" title="Align Left"></div>
+          		<div class="draginput_cell" id="tool_poscenter" title="Align Center"></div>
+          		<div class="draginput_cell" id="tool_posright" title="Align Right"></div>
+          		<div class="draginput_cell" id="tool_postop" title="Align Top"></div>
+          		<div class="draginput_cell" id="tool_posmiddle" title="Align Middle"></div>
+          		<div class="draginput_cell" id="tool_posbottom" title="Align Bottom"></div>
+    				</div>
+  				</label>
+  		</div>		
+  	</div>
+	</div>
+	
+	<!-- Buttons when multiple elements are selected -->
+	<div id="multiselected_panel" class="context_panel clearfix">
+	  <h4 class="hidable">Multiple Elements</h4>
+	  
+		<div class="toolset align_buttons" style="position: relative">
+		  <label id="tool_align_relative" style="margin-top: 10px;"> 
+  			<select id="align_relative_to" title="Align relative to ...">
+  			<option id="selected_objects" value="selected">Align to objects</option>
+  			<option id="page" value="page">Align to page</option>
+  			</select>
+  		</label>
+		  <h4>.</h4>
+    		<div class="col last clear">
+      		<div class="draginput_cell" id="tool_alignleft" title="Align Left"></div>
+      		<div class="draginput_cell" id="tool_aligncenter" title="Align Center"></div>
+      		<div class="draginput_cell" id="tool_alignright" title="Align Right"></div>
+      		<div class="draginput_cell" id="tool_aligntop" title="Align Top"></div>
+      		<div class="draginput_cell" id="tool_alignmiddle" title="Align Middle"></div>
+      		<div class="draginput_cell" id="tool_alignbottom" title="Align Bottom"></div>
+    		</div>
+		</div>
+		<div class="clearfix"></div>
+
+	</div>
+	
+	<div id="stroke_panel" class="context_panel clearfix">
+  	<div class="clearfix"></div>
+  	<h4>Stroke</h4>
+  	<div class="toolset" data-title="Change stroke">
+  		<label>
+  			<input id="stroke_width" size="2" value="5" data-attr="stroke-width" min="0" max="99" step="1" />
+  		  <span class="icon_label">Stroke Width</span>
+  		</label>
+  	</div>
+  	<div class="stroke_tool draginput"> 
+  	  <span>Stroke Dash</span>
+  		<select id="stroke_style" data-title="Change stroke dash style">
+  			<option selected="selected" value="none">â</option>
+  			<option value="2,2">Â·Â·Â·</option>
+  			<option value="5,5">- -</option>
+  			<option value="5,2,2,2">-Â·-</option>
+  			<option value="5,2,2,2,2,2">-Â·Â·-</option>
+  		</select>
+  		<div class="caret"></div>
+  		<label id="stroke_style_label">â</label>
+  	</div>
+		
+    <label style="display: none;">
+      <span class="icon_label">Stroke Join</span>
+    </label>
+    
+    <label  style="display: none;">
+      <span class="icon_label">Stroke Cap</span>
+  	</label>
+	</div>
+
+</div> <!-- tools_top -->
+	<div id="cur_context_panel">
+		
+	</div>
+
+
+<div id="tools_left" class="tools_panel">
+	<div class="tool_button" id="tool_select" title="Select Tool [V]"></div>
+	<div class="tool_button" id="tool_fhpath" title="Pencil Tool [P]"></div>
+	<div class="tool_button" id="tool_line" title="Line Tool [L]"></div>
+	<div class="tool_button" id="tool_rect" title="Square/Rect Tool [R]"></div>
+	<div class="tool_button" id="tool_ellipse" title="Ellipse/Circle Tool [C]"></div>
+	<div class="tool_button" id="tool_path" title="Path Tool [P]"></div>
+	<div class="tool_button" id="tool_text" title="Text Tool [T]"></div>
+	<div class="tool_button" id="tool_zoom" title="Zoom Tool [Z]"></div>
+	
+  <div id="color_tools">
+        <div id="tool_switch" title="Switch stroke and fill colors [X]"></div>
+  			<div class="color_tool active" id="tool_fill">
+  				<label class="icon_label" title="Change fill color"></label>
+				  <div class="color_block">
+					  <div id="fill_bg"></div>
+					  <div id="fill_color" class="color_block"></div>
+				  </div>
+  			</div>
+
+  			<div class="color_tool" id="tool_stroke">
+  					<label class="icon_label" title="Change stroke color"></label>
+  				<div class="color_block">
+  					<div id="stroke_bg"></div>
+  					<div id="stroke_color" class="color_block" title="Change stroke color"></div>
+  				</div>
+  			</div>
+	</div>
+</div> <!-- tools_left -->
+
+<div id="tools_bottom" class="tools_panel">
+
+    <!-- Zoom buttons -->
+	<div id="zoom_panel" class="toolset" title="Change zoom level">
+		<div class="draginput select" id="zoom_label">
+  		<span  id="zoomLabel" class="zoom_tool icon_label"></span>
+  		<select id="zoom_select">
+  		  <option value="6">6%</option>
+  		  <option value="12">12%</option>
+  		  <option value="16">16%</option>
+  		  <option value="25">25%</option>
+  		  <option value="50">50%</option>
+  		  <option value="75">75%</option>
+  		  <option value="100"  selected="selected">100%</option>
+  		  <option value="150">150%</option>
+  		  <option value="200">200%</option>
+  		  <option value="300">300%</option>
+  		  <option value="400">400%</option>
+  		  <option value="600">600%</option>
+  		  <option value="800">800%</option>
+  		  <option value="1600">1600%</option>
+  		</select>
+  		<div class="caret"></div>
+  		<input id="zoom" size="3" value="100%" type="text" readonly="readonly" />
+		</div>
+	</div>
+
+	<div id="tools_bottom_3">
+		<div id="palette" title="Click to change fill color, shift-click to change stroke color"></div>
+	</div>
+</div>
+
+<!-- hidden divs -->
+<div id="color_picker"></div>
+
+</div> <!-- svg_editor -->
+
+<div id="svg_source_editor">
+	<div id="svg_source_overlay"></div>
+	<div id="svg_source_container">
+		<div id="save_output_btns">
+			<p id="copy_save_note">Copy the contents of this box into a text editor, then save the file with a .svg extension.</p>
+			<button id="copy_save_done">Done</button>
+		</div>
+		<form>
+			<textarea id="svg_source_textarea" spellcheck="false"></textarea>
+		</form>
+		<div id="tool_source_back" class="toolbar_button">
+			<button id="tool_source_cancel" class="cancel">Cancel</button>
+			<button id="tool_source_save" class="ok">Apply Changes</button>
+		</div>
+	</div>
+</div>
+
+<div id="base_unit_container">
+  <select id="base_unit">
+  	<option value="px">Pixels</option>
+  	<option value="cm">Centimeters</option>
+  	<option value="mm">Millimeters</option>
+  	<option value="in">Inches</option>
+  	<option value="pt">Points</option>
+  	<option value="pc">Picas</option>
+  	<option value="em">Ems</option>
+  	<option value="ex">Exs</option>
+  </select>
+</div>
+
+<div id="dialog_box">
+	<div id="dialog_box_overlay"></div>
+	<div id="dialog_container">
+		<div id="dialog_content"></div>
+		<div id="dialog_buttons"></div>
+	</div>
+</div>
+
+<ul id="cmenu_canvas" class="contextMenu">
+	<li><a href="#cut">Cut <span class="shortcut">âX;</span></a></li>
+	<li><a href="#copy">Copy<span class="shortcut">âC</span></a></li>
+	<li><a href="#paste">Paste<span class="shortcut">âV</span></a></li>
+	<li class="separator"><a href="#delete">Delete<span class="shortcut">â«</span></a></li>
+	<li class="separator"><a href="#group">Group<span class="shortcut">âG</span></a></li>
+	<li><a href="#ungroup">Ungroup<span class="shortcut">ââ§G</span></a></li>
+  <li class="separator"><a href="#move_front">Bring to Front<span class="shortcut">ââ§â</span></a></li>
+	<li><a href="#move_up">Bring Forward<span class="shortcut">ââ</span></a></li>
+	<li><a href="#move_down">Send Backward<span class="shortcut">ââ</span></a></li>
+  <li><a href="#move_back">Send to Back<span class="shortcut">ââ§â</span></a></li>
+</ul>
+
+</body>
+</html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/canvg/canvg.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/canvg/canvg.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/canvg/canvg.js	(revision 29468)
@@ -0,0 +1,2620 @@
+/*
+ * canvg.js - Javascript SVG parser and renderer on Canvas
+ * MIT Licensed 
+ * Gabe Lerner (gabelerner@gmail.com)
+ * http://code.google.com/p/canvg/
+ *
+ * Requires: rgbcolor.js - http://www.phpied.com/rgb-color-parser-in-javascript/
+ */
+if(!window.console) {
+	window.console = {};
+	window.console.log = function(str) {};
+	window.console.dir = function(str) {};
+}
+
+if(!Array.prototype.indexOf){
+	Array.prototype.indexOf = function(obj){
+		for(var i=0; i<this.length; i++){
+			if(this[i]==obj){
+				return i;
+			}
+		}
+		return -1;
+	}
+}
+
+(function(){
+	// canvg(target, s)
+	// empty parameters: replace all 'svg' elements on page with 'canvas' elements
+	// target: canvas element or the id of a canvas element
+	// s: svg string, url to svg file, or xml document
+	// opts: optional hash of options
+	//		 ignoreMouse: true => ignore mouse events
+	//		 ignoreAnimation: true => ignore animations
+	//		 ignoreDimensions: true => does not try to resize canvas
+	//		 ignoreClear: true => does not clear canvas
+	//		 offsetX: int => draws at a x offset
+	//		 offsetY: int => draws at a y offset
+	//		 scaleWidth: int => scales horizontally to width
+	//		 scaleHeight: int => scales vertically to height
+	//		 renderCallback: function => will call the function after the first render is completed
+	//		 forceRedraw: function => will call the function on every frame, if it returns true, will redraw
+	this.canvg = function (target, s, opts) {
+		// no parameters
+		if (target == null && s == null && opts == null) {
+			var svgTags = document.getElementsByTagName('svg');
+			for (var i=0; i<svgTags.length; i++) {
+				var svgTag = svgTags[i];
+				var c = document.createElement('canvas');
+				c.width = svgTag.clientWidth;
+				c.height = svgTag.clientHeight;
+				svgTag.parentNode.insertBefore(c, svgTag);
+				svgTag.parentNode.removeChild(svgTag);
+				var div = document.createElement('div');
+				div.appendChild(svgTag);
+				canvg(c, div.innerHTML);
+			}
+			return;
+		}	
+		opts = opts || {};
+	
+		if (typeof target == 'string') {
+			target = document.getElementById(target);
+		}
+		
+		// reuse class per canvas
+		var svg;
+		if (target.svg == null) {
+			svg = build();
+			target.svg = svg;
+		}
+		else {
+			svg = target.svg;
+			svg.stop();
+		}
+		svg.opts = opts;
+		
+		var ctx = target.getContext('2d');
+		if (typeof(s.documentElement) != 'undefined') {
+			// load from xml doc
+			svg.loadXmlDoc(ctx, s);
+		}
+		else if (s.substr(0,1) == '<') {
+			// load from xml string
+			svg.loadXml(ctx, s);
+		}
+		else {
+			// load from url
+			svg.load(ctx, s);
+		}
+	}
+
+	function build() {
+		var svg = { };
+		
+		svg.FRAMERATE = 30;
+		svg.MAX_VIRTUAL_PIXELS = 30000;
+		
+		// globals
+		svg.init = function(ctx) {
+			svg.Definitions = {};
+			svg.Styles = {};
+			svg.Animations = [];
+			svg.Images = [];
+			svg.ctx = ctx;
+			svg.ViewPort = new (function () {
+				this.viewPorts = [];
+				this.Clear = function() { this.viewPorts = []; }
+				this.SetCurrent = function(width, height) { this.viewPorts.push({ width: width, height: height }); }
+				this.RemoveCurrent = function() { this.viewPorts.pop(); }
+				this.Current = function() { return this.viewPorts[this.viewPorts.length - 1]; }
+				this.width = function() { return this.Current().width; }
+				this.height = function() { return this.Current().height; }
+				this.ComputeSize = function(d) {
+					if (d != null && typeof(d) == 'number') return d;
+					if (d == 'x') return this.width();
+					if (d == 'y') return this.height();
+					return Math.sqrt(Math.pow(this.width(), 2) + Math.pow(this.height(), 2)) / Math.sqrt(2);			
+				}
+			});
+		}
+		svg.init();
+		
+		// images loaded
+		svg.ImagesLoaded = function() { 
+			for (var i=0; i<svg.Images.length; i++) {
+				if (!svg.Images[i].loaded) return false;
+			}
+			return true;
+		}
+
+		// trim
+		svg.trim = function(s) { return s.replace(/^\s+|\s+$/g, ''); }
+		
+		// compress spaces
+		svg.compressSpaces = function(s) { return s.replace(/[\s\r\t\n]+/gm,' '); }
+		
+		// ajax
+		svg.ajax = function(url) {
+			var AJAX;
+			if(window.XMLHttpRequest){AJAX=new XMLHttpRequest();}
+			else{AJAX=new ActiveXObject('Microsoft.XMLHTTP');}
+			if(AJAX){
+			   AJAX.open('GET',url,false);
+			   AJAX.send(null);
+			   return AJAX.responseText;
+			}
+			return null;
+		} 
+		
+		// parse xml
+		svg.parseXml = function(xml) {
+			if (window.DOMParser)
+			{
+				var parser = new DOMParser();
+				return parser.parseFromString(xml, 'text/xml');
+			}
+			else 
+			{
+				xml = xml.replace(/<!DOCTYPE svg[^>]*>/, '');
+				var xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
+				xmlDoc.async = 'false';
+				xmlDoc.loadXML(xml); 
+				return xmlDoc;
+			}		
+		}
+		
+		svg.Property = function(name, value) {
+			this.name = name;
+			this.value = value;
+			
+			this.hasValue = function() {
+				return (this.value != null && this.value !== '');
+			}
+							
+			// return the numerical value of the property
+			this.numValue = function() {
+				if (!this.hasValue()) return 0;
+				
+				var n = parseFloat(this.value);
+				if ((this.value + '').match(/%$/)) {
+					n = n / 100.0;
+				}
+				return n;
+			}
+			
+			this.valueOrDefault = function(def) {
+				if (this.hasValue()) return this.value;
+				return def;
+			}
+			
+			this.numValueOrDefault = function(def) {
+				if (this.hasValue()) return this.numValue();
+				return def;
+			}
+			
+			/* EXTENSIONS */
+			var that = this;
+			
+			// color extensions
+			this.Color = {
+				// augment the current color value with the opacity
+				addOpacity: function(opacity) {
+					var newValue = that.value;
+					if (opacity != null && opacity != '') {
+						var color = new RGBColor(that.value);
+						if (color.ok) {
+							newValue = 'rgba(' + color.r + ', ' + color.g + ', ' + color.b + ', ' + opacity + ')';
+						}
+					}
+					return new svg.Property(that.name, newValue);
+				}
+			}
+			
+			// definition extensions
+			this.Definition = {
+				// get the definition from the definitions table
+				getDefinition: function() {
+					var name = that.value.replace(/^(url\()?#([^\)]+)\)?$/, '$2');
+					return svg.Definitions[name];
+				},
+				
+				isUrl: function() {
+					return that.value.indexOf('url(') == 0
+				},
+				
+				getFillStyle: function(e) {
+					var def = this.getDefinition();
+					
+					// gradient
+					if (def != null && def.createGradient) {
+						return def.createGradient(svg.ctx, e);
+					}
+					
+					// pattern
+					if (def != null && def.createPattern) {
+						return def.createPattern(svg.ctx, e);
+					}
+					
+					return null;
+				}
+			}
+			
+			// length extensions
+			this.Length = {
+				DPI: function(viewPort) {
+					return 96.0; // TODO: compute?
+				},
+				
+				EM: function(viewPort) {
+					var em = 12;
+					
+					var fontSize = new svg.Property('fontSize', svg.Font.Parse(svg.ctx.font).fontSize);
+					if (fontSize.hasValue()) em = fontSize.Length.toPixels(viewPort);
+					
+					return em;
+				},
+			
+				// get the length as pixels
+				toPixels: function(viewPort) {
+					if (!that.hasValue()) return 0;
+					var s = that.value+'';
+					if (s.match(/em$/)) return that.numValue() * this.EM(viewPort);
+					if (s.match(/ex$/)) return that.numValue() * this.EM(viewPort) / 2.0;
+					if (s.match(/px$/)) return that.numValue();
+					if (s.match(/pt$/)) return that.numValue() * 1.25;
+					if (s.match(/pc$/)) return that.numValue() * 15;
+					if (s.match(/cm$/)) return that.numValue() * this.DPI(viewPort) / 2.54;
+					if (s.match(/mm$/)) return that.numValue() * this.DPI(viewPort) / 25.4;
+					if (s.match(/in$/)) return that.numValue() * this.DPI(viewPort);
+					if (s.match(/%$/)) return that.numValue() * svg.ViewPort.ComputeSize(viewPort);
+					return that.numValue();
+				}
+			}
+			
+			// time extensions
+			this.Time = {
+				// get the time as milliseconds
+				toMilliseconds: function() {
+					if (!that.hasValue()) return 0;
+					var s = that.value+'';
+					if (s.match(/s$/)) return that.numValue() * 1000;
+					if (s.match(/ms$/)) return that.numValue();
+					return that.numValue();
+				}
+			}
+			
+			// angle extensions
+			this.Angle = {
+				// get the angle as radians
+				toRadians: function() {
+					if (!that.hasValue()) return 0;
+					var s = that.value+'';
+					if (s.match(/deg$/)) return that.numValue() * (Math.PI / 180.0);
+					if (s.match(/grad$/)) return that.numValue() * (Math.PI / 200.0);
+					if (s.match(/rad$/)) return that.numValue();
+					return that.numValue() * (Math.PI / 180.0);
+				}
+			}
+		}
+		
+		// fonts
+		svg.Font = new (function() {
+			this.Styles = ['normal','italic','oblique','inherit'];
+			this.Variants = ['normal','small-caps','inherit'];
+			this.Weights = ['normal','bold','bolder','lighter','100','200','300','400','500','600','700','800','900','inherit'];
+			
+			this.CreateFont = function(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit) { 
+				var f = inherit != null ? this.Parse(inherit) : this.CreateFont('', '', '', '', '', svg.ctx.font);
+				return { 
+					fontFamily: fontFamily || f.fontFamily, 
+					fontSize: fontSize || f.fontSize, 
+					fontStyle: fontStyle || f.fontStyle, 
+					fontWeight: fontWeight || f.fontWeight, 
+					fontVariant: fontVariant || f.fontVariant,
+					toString: function () { return [this.fontStyle, this.fontVariant, this.fontWeight, this.fontSize, this.fontFamily].join(' ') } 
+				} 
+			}
+			
+			var that = this;
+			this.Parse = function(s) {
+				var f = {};
+				var d = svg.trim(svg.compressSpaces(s || '')).split(' ');
+				var set = { fontSize: false, fontStyle: false, fontWeight: false, fontVariant: false }
+				var ff = '';
+				for (var i=0; i<d.length; i++) {
+					if (!set.fontStyle && that.Styles.indexOf(d[i]) != -1) { if (d[i] != 'inherit') f.fontStyle = d[i]; set.fontStyle = true; }
+					else if (!set.fontVariant && that.Variants.indexOf(d[i]) != -1) { if (d[i] != 'inherit') f.fontVariant = d[i]; set.fontStyle = set.fontVariant = true;	}
+					else if (!set.fontWeight && that.Weights.indexOf(d[i]) != -1) {	if (d[i] != 'inherit') f.fontWeight = d[i]; set.fontStyle = set.fontVariant = set.fontWeight = true; }
+					else if (!set.fontSize) { if (d[i] != 'inherit') f.fontSize = d[i].split('/')[0]; set.fontStyle = set.fontVariant = set.fontWeight = set.fontSize = true; }
+					else { if (d[i] != 'inherit') ff += d[i]; }
+				} if (ff != '') f.fontFamily = ff;
+				return f;
+			}
+		});
+		
+		// points and paths
+		svg.ToNumberArray = function(s) {
+			var a = svg.trim(svg.compressSpaces((s || '').replace(/,/g, ' '))).split(' ');
+			for (var i=0; i<a.length; i++) {
+				a[i] = parseFloat(a[i]);
+			}
+			return a;
+		}		
+		svg.Point = function(x, y) {
+			this.x = x;
+			this.y = y;
+			
+			this.angleTo = function(p) {
+				return Math.atan2(p.y - this.y, p.x - this.x);
+			}
+			
+			this.applyTransform = function(v) {
+				var xp = this.x * v[0] + this.y * v[2] + v[4];
+				var yp = this.x * v[1] + this.y * v[3] + v[5];
+				this.x = xp;
+				this.y = yp;
+			}
+		}
+		svg.CreatePoint = function(s) {
+			var a = svg.ToNumberArray(s);
+			return new svg.Point(a[0], a[1]);
+		}
+		svg.CreatePath = function(s) {
+			var a = svg.ToNumberArray(s);
+			var path = [];
+			for (var i=0; i<a.length; i+=2) {
+				path.push(new svg.Point(a[i], a[i+1]));
+			}
+			return path;
+		}
+		
+		// bounding box
+		svg.BoundingBox = function(x1, y1, x2, y2) { // pass in initial points if you want
+			this.x1 = Number.NaN;
+			this.y1 = Number.NaN;
+			this.x2 = Number.NaN;
+			this.y2 = Number.NaN;
+			
+			this.x = function() { return this.x1; }
+			this.y = function() { return this.y1; }
+			this.width = function() { return this.x2 - this.x1; }
+			this.height = function() { return this.y2 - this.y1; }
+			
+			this.addPoint = function(x, y) {	
+				if (x != null) {
+					if (isNaN(this.x1) || isNaN(this.x2)) {
+						this.x1 = x;
+						this.x2 = x;
+					}
+					if (x < this.x1) this.x1 = x;
+					if (x > this.x2) this.x2 = x;
+				}
+			
+				if (y != null) {
+					if (isNaN(this.y1) || isNaN(this.y2)) {
+						this.y1 = y;
+						this.y2 = y;
+					}
+					if (y < this.y1) this.y1 = y;
+					if (y > this.y2) this.y2 = y;
+				}
+			}			
+			this.addX = function(x) { this.addPoint(x, null); }
+			this.addY = function(y) { this.addPoint(null, y); }
+			
+			this.addBoundingBox = function(bb) {
+				this.addPoint(bb.x1, bb.y1);
+				this.addPoint(bb.x2, bb.y2);
+			}
+			
+			this.addQuadraticCurve = function(p0x, p0y, p1x, p1y, p2x, p2y) {
+				var cp1x = p0x + 2/3 * (p1x - p0x); // CP1 = QP0 + 2/3 *(QP1-QP0)
+				var cp1y = p0y + 2/3 * (p1y - p0y); // CP1 = QP0 + 2/3 *(QP1-QP0)
+				var cp2x = cp1x + 1/3 * (p2x - p0x); // CP2 = CP1 + 1/3 *(QP2-QP0)
+				var cp2y = cp1y + 1/3 * (p2y - p0y); // CP2 = CP1 + 1/3 *(QP2-QP0)
+				this.addBezierCurve(p0x, p0y, cp1x, cp2x, cp1y,	cp2y, p2x, p2y);
+			}
+			
+			this.addBezierCurve = function(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {
+				// from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html
+				var p0 = [p0x, p0y], p1 = [p1x, p1y], p2 = [p2x, p2y], p3 = [p3x, p3y];
+				this.addPoint(p0[0], p0[1]);
+				this.addPoint(p3[0], p3[1]);
+				
+				for (i=0; i<=1; i++) {
+					var f = function(t) { 
+						return Math.pow(1-t, 3) * p0[i]
+						+ 3 * Math.pow(1-t, 2) * t * p1[i]
+						+ 3 * (1-t) * Math.pow(t, 2) * p2[i]
+						+ Math.pow(t, 3) * p3[i];
+					}
+					
+					var b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];
+					var a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];
+					var c = 3 * p1[i] - 3 * p0[i];
+					
+					if (a == 0) {
+						if (b == 0) continue;
+						var t = -c / b;
+						if (0 < t && t < 1) {
+							if (i == 0) this.addX(f(t));
+							if (i == 1) this.addY(f(t));
+						}
+						continue;
+					}
+					
+					var b2ac = Math.pow(b, 2) - 4 * c * a;
+					if (b2ac < 0) continue;
+					var t1 = (-b + Math.sqrt(b2ac)) / (2 * a);
+					if (0 < t1 && t1 < 1) {
+						if (i == 0) this.addX(f(t1));
+						if (i == 1) this.addY(f(t1));
+					}
+					var t2 = (-b - Math.sqrt(b2ac)) / (2 * a);
+					if (0 < t2 && t2 < 1) {
+						if (i == 0) this.addX(f(t2));
+						if (i == 1) this.addY(f(t2));
+					}
+				}
+			}
+			
+			this.isPointInBox = function(x, y) {
+				return (this.x1 <= x && x <= this.x2 && this.y1 <= y && y <= this.y2);
+			}
+			
+			this.addPoint(x1, y1);
+			this.addPoint(x2, y2);
+		}
+		
+		// transforms
+		svg.Transform = function(v) {	
+			var that = this;
+			this.Type = {}
+		
+			// translate
+			this.Type.translate = function(s) {
+				this.p = svg.CreatePoint(s);			
+				this.apply = function(ctx) {
+					ctx.translate(this.p.x || 0.0, this.p.y || 0.0);
+				}
+				this.applyToPoint = function(p) {
+					p.applyTransform([1, 0, 0, 1, this.p.x || 0.0, this.p.y || 0.0]);
+				}
+			}
+			
+			// rotate
+			this.Type.rotate = function(s) {
+				var a = svg.ToNumberArray(s);
+				this.angle = new svg.Property('angle', a[0]);
+				this.cx = a[1] || 0;
+				this.cy = a[2] || 0;
+				this.apply = function(ctx) {
+					ctx.translate(this.cx, this.cy);
+					ctx.rotate(this.angle.Angle.toRadians());
+					ctx.translate(-this.cx, -this.cy);
+				}
+				this.applyToPoint = function(p) {
+					var a = this.angle.Angle.toRadians();
+					p.applyTransform([1, 0, 0, 1, this.p.x || 0.0, this.p.y || 0.0]);
+					p.applyTransform([Math.cos(a), Math.sin(a), -Math.sin(a), Math.cos(a), 0, 0]);
+					p.applyTransform([1, 0, 0, 1, -this.p.x || 0.0, -this.p.y || 0.0]);
+				}			
+			}
+			
+			this.Type.scale = function(s) {
+				this.p = svg.CreatePoint(s);
+				this.apply = function(ctx) {
+					ctx.scale(this.p.x || 1.0, this.p.y || this.p.x || 1.0);
+				}
+				this.applyToPoint = function(p) {
+					p.applyTransform([this.p.x || 0.0, 0, 0, this.p.y || 0.0, 0, 0]);
+				}				
+			}
+			
+			this.Type.matrix = function(s) {
+				this.m = svg.ToNumberArray(s);
+				this.apply = function(ctx) {
+					ctx.transform(this.m[0], this.m[1], this.m[2], this.m[3], this.m[4], this.m[5]);
+				}
+				this.applyToPoint = function(p) {
+					p.applyTransform(this.m);
+				}					
+			}
+			
+			this.Type.SkewBase = function(s) {
+				this.base = that.Type.matrix;
+				this.base(s);
+				this.angle = new svg.Property('angle', s);
+			}
+			this.Type.SkewBase.prototype = new this.Type.matrix;
+			
+			this.Type.skewX = function(s) {
+				this.base = that.Type.SkewBase;
+				this.base(s);
+				this.m = [1, 0, Math.tan(this.angle.Angle.toRadians()), 1, 0, 0];
+			}
+			this.Type.skewX.prototype = new this.Type.SkewBase;
+			
+			this.Type.skewY = function(s) {
+				this.base = that.Type.SkewBase;
+				this.base(s);
+				this.m = [1, Math.tan(this.angle.Angle.toRadians()), 0, 1, 0, 0];
+			}
+			this.Type.skewY.prototype = new this.Type.SkewBase;
+		
+			this.transforms = [];
+			
+			this.apply = function(ctx) {
+				for (var i=0; i<this.transforms.length; i++) {
+					this.transforms[i].apply(ctx);
+				}
+			}
+			
+			this.applyToPoint = function(p) {
+				for (var i=0; i<this.transforms.length; i++) {
+					this.transforms[i].applyToPoint(p);
+				}
+			}
+			
+			var data = svg.trim(svg.compressSpaces(v)).split(/\s(?=[a-z])/);
+			for (var i=0; i<data.length; i++) {
+				var type = data[i].split('(')[0];
+				var s = data[i].split('(')[1].replace(')','');
+				var transform = new this.Type[type](s);
+				this.transforms.push(transform);
+			}
+		}
+		
+		// aspect ratio
+		svg.AspectRatio = function(ctx, aspectRatio, width, desiredWidth, height, desiredHeight, minX, minY, refX, refY) {
+			// aspect ratio - http://www.w3.org/TR/SVG/coords.html#PreserveAspectRatioAttribute
+			aspectRatio = svg.compressSpaces(aspectRatio);
+			aspectRatio = aspectRatio.replace(/^defer\s/,''); // ignore defer
+			var align = aspectRatio.split(' ')[0] || 'xMidYMid';
+			var meetOrSlice = aspectRatio.split(' ')[1] || 'meet';					
+	
+			// calculate scale
+			var scaleX = width / desiredWidth;
+			var scaleY = height / desiredHeight;
+			var scaleMin = Math.min(scaleX, scaleY);
+			var scaleMax = Math.max(scaleX, scaleY);
+			if (meetOrSlice == 'meet') { desiredWidth *= scaleMin; desiredHeight *= scaleMin; }
+			if (meetOrSlice == 'slice') { desiredWidth *= scaleMax; desiredHeight *= scaleMax; }	
+			
+			refX = new svg.Property('refX', refX);
+			refY = new svg.Property('refY', refY);
+			if (refX.hasValue() && refY.hasValue()) {				
+				ctx.translate(-scaleMin * refX.Length.toPixels('x'), -scaleMin * refY.Length.toPixels('y'));
+			} 
+			else {					
+				// align
+				if (align.match(/^xMid/) && ((meetOrSlice == 'meet' && scaleMin == scaleY) || (meetOrSlice == 'slice' && scaleMax == scaleY))) ctx.translate(width / 2.0 - desiredWidth / 2.0, 0); 
+				if (align.match(/YMid$/) && ((meetOrSlice == 'meet' && scaleMin == scaleX) || (meetOrSlice == 'slice' && scaleMax == scaleX))) ctx.translate(0, height / 2.0 - desiredHeight / 2.0); 
+				if (align.match(/^xMax/) && ((meetOrSlice == 'meet' && scaleMin == scaleY) || (meetOrSlice == 'slice' && scaleMax == scaleY))) ctx.translate(width - desiredWidth, 0); 
+				if (align.match(/YMax$/) && ((meetOrSlice == 'meet' && scaleMin == scaleX) || (meetOrSlice == 'slice' && scaleMax == scaleX))) ctx.translate(0, height - desiredHeight); 
+			}
+			
+			// scale
+			if (align == 'none') ctx.scale(scaleX, scaleY);
+			else if (meetOrSlice == 'meet') ctx.scale(scaleMin, scaleMin); 
+			else if (meetOrSlice == 'slice') ctx.scale(scaleMax, scaleMax); 	
+			
+			// translate
+			ctx.translate(minX == null ? 0 : -minX, minY == null ? 0 : -minY);			
+		}
+		
+		// elements
+		svg.Element = {}
+		
+		svg.Element.ElementBase = function(node) {	
+			this.attributes = {};
+			this.styles = {};
+			this.children = [];
+			
+			// get or create attribute
+			this.attribute = function(name, createIfNotExists) {
+				var a = this.attributes[name];
+				if (a != null) return a;
+							
+				a = new svg.Property(name, '');
+				if (createIfNotExists == true) this.attributes[name] = a;
+				return a;
+			}
+			
+			// get or create style, crawls up node tree
+			this.style = function(name, createIfNotExists) {
+				var s = this.styles[name];
+				if (s != null) return s;
+				
+				var a = this.attribute(name);
+				if (a != null && a.hasValue()) {
+					return a;
+				}
+				
+				var p = this.parent;
+				if (p != null) {
+					var ps = p.style(name);
+					if (ps != null && ps.hasValue()) {
+						return ps;
+					}
+				}
+					
+				s = new svg.Property(name, '');
+				if (createIfNotExists == true) this.styles[name] = s;
+				return s;
+			}
+			
+			// base render
+			this.render = function(ctx) {
+				// don't render display=none
+				if (this.style('display').value == 'none') return;
+				
+				// don't render visibility=hidden
+				if (this.attribute('visibility').value == 'hidden') return;
+			
+				ctx.save();
+					this.setContext(ctx);
+						// mask
+						if (this.attribute('mask').hasValue()) {
+							var mask = this.attribute('mask').Definition.getDefinition();
+							if (mask != null) mask.apply(ctx, this);
+						}
+						else if (this.style('filter').hasValue()) {
+							var filter = this.style('filter').Definition.getDefinition();
+							if (filter != null) filter.apply(ctx, this);
+						}
+						else this.renderChildren(ctx);				
+					this.clearContext(ctx);
+				ctx.restore();
+			}
+			
+			// base set context
+			this.setContext = function(ctx) {
+				// OVERRIDE ME!
+			}
+			
+			// base clear context
+			this.clearContext = function(ctx) {
+				// OVERRIDE ME!
+			}			
+			
+			// base render children
+			this.renderChildren = function(ctx) {
+				for (var i=0; i<this.children.length; i++) {
+					this.children[i].render(ctx);
+				}
+			}
+			
+			this.addChild = function(childNode, create) {
+				var child = childNode;
+				if (create) child = svg.CreateElement(childNode);
+				child.parent = this;
+				this.children.push(child);			
+			}
+				
+			if (node != null && node.nodeType == 1) { //ELEMENT_NODE
+				// add children
+				for (var i=0; i<node.childNodes.length; i++) {
+					var childNode = node.childNodes[i];
+					if (childNode.nodeType == 1) this.addChild(childNode, true); //ELEMENT_NODE
+				}
+				
+				// add attributes
+				for (var i=0; i<node.attributes.length; i++) {
+					var attribute = node.attributes[i];
+					this.attributes[attribute.nodeName] = new svg.Property(attribute.nodeName, attribute.nodeValue);
+				}
+										
+				// add tag styles
+				var styles = svg.Styles[node.nodeName];
+				if (styles != null) {
+					for (var name in styles) {
+						this.styles[name] = styles[name];
+					}
+				}					
+				
+				// add class styles
+				if (this.attribute('class').hasValue()) {
+					var classes = svg.compressSpaces(this.attribute('class').value).split(' ');
+					for (var j=0; j<classes.length; j++) {
+						styles = svg.Styles['.'+classes[j]];
+						if (styles != null) {
+							for (var name in styles) {
+								this.styles[name] = styles[name];
+							}
+						}
+						styles = svg.Styles[node.nodeName+'.'+classes[j]];
+						if (styles != null) {
+							for (var name in styles) {
+								this.styles[name] = styles[name];
+							}
+						}
+					}
+				}
+				
+				// add inline styles
+				if (this.attribute('style').hasValue()) {
+					var styles = this.attribute('style').value.split(';');
+					for (var i=0; i<styles.length; i++) {
+						if (svg.trim(styles[i]) != '') {
+							var style = styles[i].split(':');
+							var name = svg.trim(style[0]);
+							var value = svg.trim(style[1]);
+							this.styles[name] = new svg.Property(name, value);
+						}
+					}
+				}	
+
+				// add id
+				if (this.attribute('id').hasValue()) {
+					if (svg.Definitions[this.attribute('id').value] == null) {
+						svg.Definitions[this.attribute('id').value] = this;
+					}
+				}
+			}
+		}
+		
+		svg.Element.RenderedElementBase = function(node) {
+			this.base = svg.Element.ElementBase;
+			this.base(node);
+			
+			this.setContext = function(ctx) {
+				// fill
+				if (this.style('fill').Definition.isUrl()) {
+					var fs = this.style('fill').Definition.getFillStyle(this);
+					if (fs != null) ctx.fillStyle = fs;
+				}
+				else if (this.style('fill').hasValue()) {
+					var fillStyle = this.style('fill');
+					if (this.style('fill-opacity').hasValue()) fillStyle = fillStyle.Color.addOpacity(this.style('fill-opacity').value);
+					ctx.fillStyle = (fillStyle.value == 'none' ? 'rgba(0,0,0,0)' : fillStyle.value);
+				}
+									
+				// stroke
+				if (this.style('stroke').Definition.isUrl()) {
+					var fs = this.style('stroke').Definition.getFillStyle(this);
+					if (fs != null) ctx.strokeStyle = fs;
+				}
+				else if (this.style('stroke').hasValue()) {
+					var strokeStyle = this.style('stroke');
+					if (this.style('stroke-opacity').hasValue()) strokeStyle = strokeStyle.Color.addOpacity(this.style('stroke-opacity').value);
+					ctx.strokeStyle = (strokeStyle.value == 'none' ? 'rgba(0,0,0,0)' : strokeStyle.value);
+				}
+				if (this.style('stroke-width').hasValue()) ctx.lineWidth = this.style('stroke-width').Length.toPixels();
+				if (this.style('stroke-linecap').hasValue()) ctx.lineCap = this.style('stroke-linecap').value;
+				if (this.style('stroke-linejoin').hasValue()) ctx.lineJoin = this.style('stroke-linejoin').value;
+				if (this.style('stroke-miterlimit').hasValue()) ctx.miterLimit = this.style('stroke-miterlimit').value;
+
+				// font
+				if (typeof(ctx.font) != 'undefined') {
+					ctx.font = svg.Font.CreateFont( 
+						this.style('font-style').value, 
+						this.style('font-variant').value, 
+						this.style('font-weight').value, 
+						this.style('font-size').hasValue() ? this.style('font-size').Length.toPixels() + 'px' : '', 
+						this.style('font-family').value).toString();
+				}
+				
+				// transform
+				if (this.attribute('transform').hasValue()) { 
+					var transform = new svg.Transform(this.attribute('transform').value);
+					transform.apply(ctx);
+				}
+				
+				// clip
+				if (this.attribute('clip-path').hasValue()) {
+					var clip = this.attribute('clip-path').Definition.getDefinition();
+					if (clip != null) clip.apply(ctx);
+				}
+				
+				// opacity
+				if (this.style('opacity').hasValue()) {
+					ctx.globalAlpha = this.style('opacity').numValue();
+				}
+			}		
+		}
+		svg.Element.RenderedElementBase.prototype = new svg.Element.ElementBase;
+		
+		svg.Element.PathElementBase = function(node) {
+			this.base = svg.Element.RenderedElementBase;
+			this.base(node);
+			
+			this.path = function(ctx) {
+				if (ctx != null) ctx.beginPath();
+				return new svg.BoundingBox();
+			}
+			
+			this.renderChildren = function(ctx) {
+				this.path(ctx);
+				svg.Mouse.checkPath(this, ctx);
+				if (ctx.fillStyle != '') ctx.fill();
+				if (ctx.strokeStyle != '') ctx.stroke();
+				
+				var markers = this.getMarkers();
+				if (markers != null) {
+					if (this.style('marker-start').Definition.isUrl()) {
+						var marker = this.style('marker-start').Definition.getDefinition();
+						marker.render(ctx, markers[0][0], markers[0][1]);
+					}
+					if (this.style('marker-mid').Definition.isUrl()) {
+						var marker = this.style('marker-mid').Definition.getDefinition();
+						for (var i=1;i<markers.length-1;i++) {
+							marker.render(ctx, markers[i][0], markers[i][1]);
+						}
+					}
+					if (this.style('marker-end').Definition.isUrl()) {
+						var marker = this.style('marker-end').Definition.getDefinition();
+						marker.render(ctx, markers[markers.length-1][0], markers[markers.length-1][1]);
+					}
+				}					
+			}
+			
+			this.getBoundingBox = function() {
+				return this.path();
+			}
+			
+			this.getMarkers = function() {
+				return null;
+			}
+		}
+		svg.Element.PathElementBase.prototype = new svg.Element.RenderedElementBase;
+		
+		// svg element
+		svg.Element.svg = function(node) {
+			this.base = svg.Element.RenderedElementBase;
+			this.base(node);
+			
+			this.baseClearContext = this.clearContext;
+			this.clearContext = function(ctx) {
+				this.baseClearContext(ctx);
+				svg.ViewPort.RemoveCurrent();
+			}
+			
+			this.baseSetContext = this.setContext;
+			this.setContext = function(ctx) {
+				// initial values
+				ctx.strokeStyle = 'rgba(0,0,0,0)';
+				ctx.lineCap = 'butt';
+				ctx.lineJoin = 'miter';
+				ctx.miterLimit = 4;			
+			
+				this.baseSetContext(ctx);
+				
+				// create new view port
+				if (this.attribute('x').hasValue() && this.attribute('y').hasValue()) {
+					ctx.translate(this.attribute('x').Length.toPixels('x'), this.attribute('y').Length.toPixels('y'));
+				}
+				
+				var width = svg.ViewPort.width();
+				var height = svg.ViewPort.height();
+				if (typeof(this.root) == 'undefined' && this.attribute('width').hasValue() && this.attribute('height').hasValue()) {
+					width = this.attribute('width').Length.toPixels('x');
+					height = this.attribute('height').Length.toPixels('y');
+					
+					var x = 0;
+					var y = 0;
+					if (this.attribute('refX').hasValue() && this.attribute('refY').hasValue()) {
+						x = -this.attribute('refX').Length.toPixels('x');
+						y = -this.attribute('refY').Length.toPixels('y');
+					}
+					
+					ctx.beginPath();
+					ctx.moveTo(x, y);
+					ctx.lineTo(width, y);
+					ctx.lineTo(width, height);
+					ctx.lineTo(x, height);
+					ctx.closePath();
+					ctx.clip();
+				}
+				svg.ViewPort.SetCurrent(width, height);	
+						
+				// viewbox
+				if (this.attribute('viewBox').hasValue()) {				
+					var viewBox = svg.ToNumberArray(this.attribute('viewBox').value);
+					var minX = viewBox[0];
+					var minY = viewBox[1];
+					width = viewBox[2];
+					height = viewBox[3];
+					
+					svg.AspectRatio(ctx,
+									this.attribute('preserveAspectRatio').value, 
+									svg.ViewPort.width(), 
+									width,
+									svg.ViewPort.height(),
+									height,
+									minX,
+									minY,
+									this.attribute('refX').value,
+									this.attribute('refY').value);
+										
+					svg.ViewPort.RemoveCurrent();	
+					svg.ViewPort.SetCurrent(viewBox[2], viewBox[3]);						
+				}				
+			}
+		}
+		svg.Element.svg.prototype = new svg.Element.RenderedElementBase;
+
+		// rect element
+		svg.Element.rect = function(node) {
+			this.base = svg.Element.PathElementBase;
+			this.base(node);
+			
+			this.path = function(ctx) {
+				var x = this.attribute('x').Length.toPixels('x');
+				var y = this.attribute('y').Length.toPixels('y');
+				var width = this.attribute('width').Length.toPixels('x');
+				var height = this.attribute('height').Length.toPixels('y');
+				var rx = this.attribute('rx').Length.toPixels('x');
+				var ry = this.attribute('ry').Length.toPixels('y');
+				if (this.attribute('rx').hasValue() && !this.attribute('ry').hasValue()) ry = rx;
+				if (this.attribute('ry').hasValue() && !this.attribute('rx').hasValue()) rx = ry;
+				
+				if (ctx != null) {
+					ctx.beginPath();
+					ctx.moveTo(x + rx, y);
+					ctx.lineTo(x + width - rx, y);
+					ctx.quadraticCurveTo(x + width, y, x + width, y + ry)
+					ctx.lineTo(x + width, y + height - ry);
+					ctx.quadraticCurveTo(x + width, y + height, x + width - rx, y + height)
+					ctx.lineTo(x + rx, y + height);
+					ctx.quadraticCurveTo(x, y + height, x, y + height - ry)
+					ctx.lineTo(x, y + ry);
+					ctx.quadraticCurveTo(x, y, x + rx, y)
+					ctx.closePath();
+				}
+				
+				return new svg.BoundingBox(x, y, x + width, y + height);
+			}
+		}
+		svg.Element.rect.prototype = new svg.Element.PathElementBase;
+		
+		// circle element
+		svg.Element.circle = function(node) {
+			this.base = svg.Element.PathElementBase;
+			this.base(node);
+			
+			this.path = function(ctx) {
+				var cx = this.attribute('cx').Length.toPixels('x');
+				var cy = this.attribute('cy').Length.toPixels('y');
+				var r = this.attribute('r').Length.toPixels();
+			
+				if (ctx != null) {
+					ctx.beginPath();
+					ctx.arc(cx, cy, r, 0, Math.PI * 2, true); 
+					ctx.closePath();
+				}
+				
+				return new svg.BoundingBox(cx - r, cy - r, cx + r, cy + r);
+			}
+		}
+		svg.Element.circle.prototype = new svg.Element.PathElementBase;	
+
+		// ellipse element
+		svg.Element.ellipse = function(node) {
+			this.base = svg.Element.PathElementBase;
+			this.base(node);
+			
+			this.path = function(ctx) {
+				var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);
+				var rx = this.attribute('rx').Length.toPixels('x');
+				var ry = this.attribute('ry').Length.toPixels('y');
+				var cx = this.attribute('cx').Length.toPixels('x');
+				var cy = this.attribute('cy').Length.toPixels('y');
+				
+				if (ctx != null) {
+					ctx.beginPath();
+					ctx.moveTo(cx, cy - ry);
+					ctx.bezierCurveTo(cx + (KAPPA * rx), cy - ry,  cx + rx, cy - (KAPPA * ry), cx + rx, cy);
+					ctx.bezierCurveTo(cx + rx, cy + (KAPPA * ry), cx + (KAPPA * rx), cy + ry, cx, cy + ry);
+					ctx.bezierCurveTo(cx - (KAPPA * rx), cy + ry, cx - rx, cy + (KAPPA * ry), cx - rx, cy);
+					ctx.bezierCurveTo(cx - rx, cy - (KAPPA * ry), cx - (KAPPA * rx), cy - ry, cx, cy - ry);
+					ctx.closePath();
+				}
+				
+				return new svg.BoundingBox(cx - rx, cy - ry, cx + rx, cy + ry);
+			}
+		}
+		svg.Element.ellipse.prototype = new svg.Element.PathElementBase;			
+		
+		// line element
+		svg.Element.line = function(node) {
+			this.base = svg.Element.PathElementBase;
+			this.base(node);
+			
+			this.getPoints = function() {
+				return [
+					new svg.Point(this.attribute('x1').Length.toPixels('x'), this.attribute('y1').Length.toPixels('y')),
+					new svg.Point(this.attribute('x2').Length.toPixels('x'), this.attribute('y2').Length.toPixels('y'))];
+			}
+								
+			this.path = function(ctx) {
+				var points = this.getPoints();
+				
+				if (ctx != null) {
+					ctx.beginPath();
+					ctx.moveTo(points[0].x, points[0].y);
+					ctx.lineTo(points[1].x, points[1].y);
+				}
+				
+				return new svg.BoundingBox(points[0].x, points[0].y, points[1].x, points[1].y);
+			}
+			
+			this.getMarkers = function() {
+				var points = this.getPoints();	
+				var a = points[0].angleTo(points[1]);
+				return [[points[0], a], [points[1], a]];
+			}
+		}
+		svg.Element.line.prototype = new svg.Element.PathElementBase;		
+				
+		// polyline element
+		svg.Element.polyline = function(node) {
+			this.base = svg.Element.PathElementBase;
+			this.base(node);
+			
+			this.points = svg.CreatePath(this.attribute('points').value);
+			this.path = function(ctx) {
+				var bb = new svg.BoundingBox(this.points[0].x, this.points[0].y);
+				if (ctx != null) {
+					ctx.beginPath();
+					ctx.moveTo(this.points[0].x, this.points[0].y);
+				}
+				for (var i=1; i<this.points.length; i++) {
+					bb.addPoint(this.points[i].x, this.points[i].y);
+					if (ctx != null) ctx.lineTo(this.points[i].x, this.points[i].y);
+				}
+				return bb;
+			}
+			
+			this.getMarkers = function() {
+				var markers = [];
+				for (var i=0; i<this.points.length - 1; i++) {
+					markers.push([this.points[i], this.points[i].angleTo(this.points[i+1])]);
+				}
+				markers.push([this.points[this.points.length-1], markers[markers.length-1][1]]);
+				return markers;
+			}			
+		}
+		svg.Element.polyline.prototype = new svg.Element.PathElementBase;				
+				
+		// polygon element
+		svg.Element.polygon = function(node) {
+			this.base = svg.Element.polyline;
+			this.base(node);
+			
+			this.basePath = this.path;
+			this.path = function(ctx) {
+				var bb = this.basePath(ctx);
+				if (ctx != null) {
+					ctx.lineTo(this.points[0].x, this.points[0].y);
+					ctx.closePath();
+				}
+				return bb;
+			}
+		}
+		svg.Element.polygon.prototype = new svg.Element.polyline;
+
+		// path element
+		svg.Element.path = function(node) {
+			this.base = svg.Element.PathElementBase;
+			this.base(node);
+					
+			var d = this.attribute('d').value;
+			// TODO: convert to real lexer based on http://www.w3.org/TR/SVG11/paths.html#PathDataBNF
+			d = d.replace(/,/gm,' '); // get rid of all commas
+			d = d.replace(/([MmZzLlHhVvCcSsQqTtAa])([MmZzLlHhVvCcSsQqTtAa])/gm,'$1 $2'); // separate commands from commands
+			d = d.replace(/([MmZzLlHhVvCcSsQqTtAa])([MmZzLlHhVvCcSsQqTtAa])/gm,'$1 $2'); // separate commands from commands
+			d = d.replace(/([MmZzLlHhVvCcSsQqTtAa])([^\s])/gm,'$1 $2'); // separate commands from points
+			d = d.replace(/([^\s])([MmZzLlHhVvCcSsQqTtAa])/gm,'$1 $2'); // separate commands from points
+			d = d.replace(/([0-9])([+\-])/gm,'$1 $2'); // separate digits when no comma
+			d = d.replace(/(\.[0-9]*)(\.)/gm,'$1 $2'); // separate digits when no comma
+			d = d.replace(/([Aa](\s+[0-9]+){3})\s+([01])\s*([01])/gm,'$1 $3 $4 '); // shorthand elliptical arc path syntax
+			d = svg.compressSpaces(d); // compress multiple spaces
+			d = svg.trim(d);
+			this.PathParser = new (function(d) {
+				this.tokens = d.split(' ');
+				
+				this.reset = function() {
+					this.i = -1;
+					this.command = '';
+					this.previousCommand = '';
+					this.start = new svg.Point(0, 0);
+					this.control = new svg.Point(0, 0);
+					this.current = new svg.Point(0, 0);
+					this.points = [];
+					this.angles = [];
+				}
+								
+				this.isEnd = function() {
+					return this.i >= this.tokens.length - 1;
+				}
+				
+				this.isCommandOrEnd = function() {
+					if (this.isEnd()) return true;
+					return this.tokens[this.i + 1].match(/^[A-Za-z]$/) != null;
+				}
+				
+				this.isRelativeCommand = function() {
+					return this.command == this.command.toLowerCase();
+				}
+							
+				this.getToken = function() {
+					this.i = this.i + 1;
+					return this.tokens[this.i];
+				}
+				
+				this.getScalar = function() {
+					return parseFloat(this.getToken());
+				}
+				
+				this.nextCommand = function() {
+					this.previousCommand = this.command;
+					this.command = this.getToken();
+				}				
+				
+				this.getPoint = function() {
+					var p = new svg.Point(this.getScalar(), this.getScalar());
+					return this.makeAbsolute(p);
+				}
+				
+				this.getAsControlPoint = function() {
+					var p = this.getPoint();
+					this.control = p;
+					return p;
+				}
+				
+				this.getAsCurrentPoint = function() {
+					var p = this.getPoint();
+					this.current = p;
+					return p;	
+				}
+				
+				this.getReflectedControlPoint = function() {
+					if (this.previousCommand.toLowerCase() != 'c' && this.previousCommand.toLowerCase() != 's') {
+						return this.current;
+					}
+					
+					// reflect point
+					var p = new svg.Point(2 * this.current.x - this.control.x, 2 * this.current.y - this.control.y);					
+					return p;
+				}
+				
+				this.makeAbsolute = function(p) {
+					if (this.isRelativeCommand()) {
+						p.x = this.current.x + p.x;
+						p.y = this.current.y + p.y;
+					}
+					return p;
+				}
+				
+				this.addMarker = function(p, from, priorTo) {
+					// if the last angle isn't filled in because we didn't have this point yet ...
+					if (priorTo != null && this.angles.length > 0 && this.angles[this.angles.length-1] == null) {
+						this.angles[this.angles.length-1] = this.points[this.points.length-1].angleTo(priorTo);
+					}
+					this.addMarkerAngle(p, from == null ? null : from.angleTo(p));
+				}
+				
+				this.addMarkerAngle = function(p, a) {
+					this.points.push(p);
+					this.angles.push(a);
+				}				
+				
+				this.getMarkerPoints = function() { return this.points; }
+				this.getMarkerAngles = function() {
+					for (var i=0; i<this.angles.length; i++) {
+						if (this.angles[i] == null) {
+							for (var j=i+1; j<this.angles.length; j++) {
+								if (this.angles[j] != null) {
+									this.angles[i] = this.angles[j];
+									break;
+								}
+							}
+						}
+					}
+					return this.angles;
+				}
+			})(d);
+
+			this.path = function(ctx) {
+				var pp = this.PathParser;
+				pp.reset();
+
+				var bb = new svg.BoundingBox();
+				if (ctx != null) ctx.beginPath();
+				while (!pp.isEnd()) {
+					pp.nextCommand();
+					switch (pp.command.toUpperCase()) {
+					case 'M':
+						var p = pp.getAsCurrentPoint();
+						pp.addMarker(p);
+						bb.addPoint(p.x, p.y);
+						if (ctx != null) ctx.moveTo(p.x, p.y);
+						pp.start = pp.current;
+						while (!pp.isCommandOrEnd()) {
+							var p = pp.getAsCurrentPoint();
+							pp.addMarker(p, pp.start);
+							bb.addPoint(p.x, p.y);
+							if (ctx != null) ctx.lineTo(p.x, p.y);
+						}
+						break;
+					case 'L':
+						while (!pp.isCommandOrEnd()) {
+							var c = pp.current;
+							var p = pp.getAsCurrentPoint();
+							pp.addMarker(p, c);
+							bb.addPoint(p.x, p.y);
+							if (ctx != null) ctx.lineTo(p.x, p.y);
+						}
+						break;
+					case 'H':
+						while (!pp.isCommandOrEnd()) {
+							var newP = new svg.Point((pp.isRelativeCommand() ? pp.current.x : 0) + pp.getScalar(), pp.current.y);
+							pp.addMarker(newP, pp.current);
+							pp.current = newP;
+							bb.addPoint(pp.current.x, pp.current.y);
+							if (ctx != null) ctx.lineTo(pp.current.x, pp.current.y);
+						}
+						break;
+					case 'V':
+						while (!pp.isCommandOrEnd()) {
+							var newP = new svg.Point(pp.current.x, (pp.isRelativeCommand() ? pp.current.y : 0) + pp.getScalar());
+							pp.addMarker(newP, pp.current);
+							pp.current = newP;
+							bb.addPoint(pp.current.x, pp.current.y);
+							if (ctx != null) ctx.lineTo(pp.current.x, pp.current.y);
+						}
+						break;
+					case 'C':
+						while (!pp.isCommandOrEnd()) {
+							var curr = pp.current;
+							var p1 = pp.getPoint();
+							var cntrl = pp.getAsControlPoint();
+							var cp = pp.getAsCurrentPoint();
+							pp.addMarker(cp, cntrl, p1);
+							bb.addBezierCurve(curr.x, curr.y, p1.x, p1.y, cntrl.x, cntrl.y, cp.x, cp.y);
+							if (ctx != null) ctx.bezierCurveTo(p1.x, p1.y, cntrl.x, cntrl.y, cp.x, cp.y);
+						}
+						break;
+					case 'S':
+						while (!pp.isCommandOrEnd()) {
+							var curr = pp.current;
+							var p1 = pp.getReflectedControlPoint();
+							var cntrl = pp.getAsControlPoint();
+							var cp = pp.getAsCurrentPoint();
+							pp.addMarker(cp, cntrl, p1);
+							bb.addBezierCurve(curr.x, curr.y, p1.x, p1.y, cntrl.x, cntrl.y, cp.x, cp.y);
+							if (ctx != null) ctx.bezierCurveTo(p1.x, p1.y, cntrl.x, cntrl.y, cp.x, cp.y);
+						}
+						break;
+					case 'Q':
+						while (!pp.isCommandOrEnd()) {
+							var curr = pp.current;
+							var cntrl = pp.getAsControlPoint();
+							var cp = pp.getAsCurrentPoint();
+							pp.addMarker(cp, cntrl, cntrl);
+							bb.addQuadraticCurve(curr.x, curr.y, cntrl.x, cntrl.y, cp.x, cp.y);
+							if (ctx != null) ctx.quadraticCurveTo(cntrl.x, cntrl.y, cp.x, cp.y);
+						}
+						break;
+					case 'T':
+						while (!pp.isCommandOrEnd()) {
+							var curr = pp.current;
+							var cntrl = pp.getReflectedControlPoint();
+							pp.control = cntrl;
+							var cp = pp.getAsCurrentPoint();
+							pp.addMarker(cp, cntrl, cntrl);
+							bb.addQuadraticCurve(curr.x, curr.y, cntrl.x, cntrl.y, cp.x, cp.y);
+							if (ctx != null) ctx.quadraticCurveTo(cntrl.x, cntrl.y, cp.x, cp.y);
+						}
+						break;
+					case 'A':
+						while (!pp.isCommandOrEnd()) {
+						    var curr = pp.current;
+							var rx = pp.getScalar();
+							var ry = pp.getScalar();
+							var xAxisRotation = pp.getScalar() * (Math.PI / 180.0);
+							var largeArcFlag = pp.getScalar();
+							var sweepFlag = pp.getScalar();
+							var cp = pp.getAsCurrentPoint();
+
+							// Conversion from endpoint to center parameterization
+							// http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes
+							// x1', y1'
+							var currp = new svg.Point(
+								Math.cos(xAxisRotation) * (curr.x - cp.x) / 2.0 + Math.sin(xAxisRotation) * (curr.y - cp.y) / 2.0,
+								-Math.sin(xAxisRotation) * (curr.x - cp.x) / 2.0 + Math.cos(xAxisRotation) * (curr.y - cp.y) / 2.0
+							);
+							// adjust radii
+							var l = Math.pow(currp.x,2)/Math.pow(rx,2)+Math.pow(currp.y,2)/Math.pow(ry,2);
+							if (l > 1) {
+								rx *= Math.sqrt(l);
+								ry *= Math.sqrt(l);
+							}
+							// cx', cy'
+							var s = (largeArcFlag == sweepFlag ? -1 : 1) * Math.sqrt(
+								((Math.pow(rx,2)*Math.pow(ry,2))-(Math.pow(rx,2)*Math.pow(currp.y,2))-(Math.pow(ry,2)*Math.pow(currp.x,2))) /
+								(Math.pow(rx,2)*Math.pow(currp.y,2)+Math.pow(ry,2)*Math.pow(currp.x,2))
+							);
+							if (isNaN(s)) s = 0;
+							var cpp = new svg.Point(s * rx * currp.y / ry, s * -ry * currp.x / rx);
+							// cx, cy
+							var centp = new svg.Point(
+								(curr.x + cp.x) / 2.0 + Math.cos(xAxisRotation) * cpp.x - Math.sin(xAxisRotation) * cpp.y,
+								(curr.y + cp.y) / 2.0 + Math.sin(xAxisRotation) * cpp.x + Math.cos(xAxisRotation) * cpp.y
+							);
+							// vector magnitude
+							var m = function(v) { return Math.sqrt(Math.pow(v[0],2) + Math.pow(v[1],2)); }
+							// ratio between two vectors
+							var r = function(u, v) { return (u[0]*v[0]+u[1]*v[1]) / (m(u)*m(v)) }
+							// angle between two vectors
+							var a = function(u, v) { return (u[0]*v[1] < u[1]*v[0] ? -1 : 1) * Math.acos(r(u,v)); }
+							// initial angle
+							var a1 = a([1,0], [(currp.x-cpp.x)/rx,(currp.y-cpp.y)/ry]);
+							// angle delta
+							var u = [(currp.x-cpp.x)/rx,(currp.y-cpp.y)/ry];
+							var v = [(-currp.x-cpp.x)/rx,(-currp.y-cpp.y)/ry];
+							var ad = a(u, v);
+							if (r(u,v) <= -1) ad = Math.PI;
+							if (r(u,v) >= 1) ad = 0;
+
+							if (sweepFlag == 0 && ad > 0) ad = ad - 2 * Math.PI;
+							if (sweepFlag == 1 && ad < 0) ad = ad + 2 * Math.PI;
+
+							// for markers
+							var halfWay = new svg.Point(
+								centp.x - rx * Math.cos((a1 + ad) / 2),
+								centp.y - ry * Math.sin((a1 + ad) / 2)
+							);
+							pp.addMarkerAngle(halfWay, (a1 + ad) / 2 + (sweepFlag == 0 ? 1 : -1) * Math.PI / 2);
+							pp.addMarkerAngle(cp, ad + (sweepFlag == 0 ? 1 : -1) * Math.PI / 2);
+
+							bb.addPoint(cp.x, cp.y); // TODO: this is too naive, make it better
+							if (ctx != null) {
+								var r = rx > ry ? rx : ry;
+								var sx = rx > ry ? 1 : rx / ry;
+								var sy = rx > ry ? ry / rx : 1;
+
+								ctx.translate(centp.x, centp.y);
+								ctx.rotate(xAxisRotation);
+								ctx.scale(sx, sy);
+								ctx.arc(0, 0, r, a1, a1 + ad, 1 - sweepFlag);
+								ctx.scale(1/sx, 1/sy);
+								ctx.rotate(-xAxisRotation);
+								ctx.translate(-centp.x, -centp.y);
+							}
+						}
+						break;
+					case 'Z':
+						if (ctx != null) ctx.closePath();
+						pp.current = pp.start;
+					}
+				}
+
+				return bb;
+			}
+
+			this.getMarkers = function() {
+				var points = this.PathParser.getMarkerPoints();
+				var angles = this.PathParser.getMarkerAngles();
+				
+				var markers = [];
+				for (var i=0; i<points.length; i++) {
+					markers.push([points[i], angles[i]]);
+				}
+				return markers;
+			}
+		}
+		svg.Element.path.prototype = new svg.Element.PathElementBase;
+		
+		// pattern element
+		svg.Element.pattern = function(node) {
+			this.base = svg.Element.ElementBase;
+			this.base(node);
+			
+			this.createPattern = function(ctx, element) {
+				// render me using a temporary svg element
+				var tempSvg = new svg.Element.svg();
+				tempSvg.attributes['viewBox'] = new svg.Property('viewBox', this.attribute('viewBox').value);
+				tempSvg.attributes['x'] = new svg.Property('x', this.attribute('x').value);
+				tempSvg.attributes['y'] = new svg.Property('y', this.attribute('y').value);
+				tempSvg.attributes['width'] = new svg.Property('width', this.attribute('width').value);
+				tempSvg.attributes['height'] = new svg.Property('height', this.attribute('height').value);
+				tempSvg.children = this.children;
+				
+				var c = document.createElement('canvas');
+				c.width = this.attribute('width').Length.toPixels('x');
+				c.height = this.attribute('height').Length.toPixels('y');
+				tempSvg.render(c.getContext('2d'));		
+				return ctx.createPattern(c, 'repeat');
+			}
+		}
+		svg.Element.pattern.prototype = new svg.Element.ElementBase;
+		
+		// marker element
+		svg.Element.marker = function(node) {
+			this.base = svg.Element.ElementBase;
+			this.base(node);
+			
+			this.baseRender = this.render;
+			this.render = function(ctx, point, angle) {
+				ctx.translate(point.x, point.y);
+				if (this.attribute('orient').valueOrDefault('auto') == 'auto') ctx.rotate(angle);
+				if (this.attribute('markerUnits').valueOrDefault('strokeWidth') == 'strokeWidth') ctx.scale(ctx.lineWidth, ctx.lineWidth);
+				ctx.save();
+							
+				// render me using a temporary svg element
+				var tempSvg = new svg.Element.svg();
+				tempSvg.attributes['viewBox'] = new svg.Property('viewBox', this.attribute('viewBox').value);
+				tempSvg.attributes['refX'] = new svg.Property('refX', this.attribute('refX').value);
+				tempSvg.attributes['refY'] = new svg.Property('refY', this.attribute('refY').value);
+				tempSvg.attributes['width'] = new svg.Property('width', this.attribute('markerWidth').value);
+				tempSvg.attributes['height'] = new svg.Property('height', this.attribute('markerHeight').value);
+				tempSvg.attributes['fill'] = new svg.Property('fill', this.attribute('fill').valueOrDefault('black'));
+				tempSvg.attributes['stroke'] = new svg.Property('stroke', this.attribute('stroke').valueOrDefault('none'));
+				tempSvg.children = this.children;
+				tempSvg.render(ctx);
+				
+				ctx.restore();
+				if (this.attribute('markerUnits').valueOrDefault('strokeWidth') == 'strokeWidth') ctx.scale(1/ctx.lineWidth, 1/ctx.lineWidth);
+				if (this.attribute('orient').valueOrDefault('auto') == 'auto') ctx.rotate(-angle);
+				ctx.translate(-point.x, -point.y);
+			}
+		}
+		svg.Element.marker.prototype = new svg.Element.ElementBase;
+		
+		// definitions element
+		svg.Element.defs = function(node) {
+			this.base = svg.Element.ElementBase;
+			this.base(node);	
+			
+			this.render = function(ctx) {
+				// NOOP
+			}
+		}
+		svg.Element.defs.prototype = new svg.Element.ElementBase;
+		
+		// base for gradients
+		svg.Element.GradientBase = function(node) {
+			this.base = svg.Element.ElementBase;
+			this.base(node);
+			
+			this.gradientUnits = this.attribute('gradientUnits').valueOrDefault('objectBoundingBox');
+			
+			this.stops = [];			
+			for (var i=0; i<this.children.length; i++) {
+				var child = this.children[i];
+				this.stops.push(child);
+			}	
+			
+			this.getGradient = function() {
+				// OVERRIDE ME!
+			}			
+
+			this.createGradient = function(ctx, element) {
+				var stopsContainer = this;
+				if (this.attribute('xlink:href').hasValue()) {
+					stopsContainer = this.attribute('xlink:href').Definition.getDefinition();
+				}
+			
+				var g = this.getGradient(ctx, element);
+				for (var i=0; i<stopsContainer.stops.length; i++) {
+					g.addColorStop(stopsContainer.stops[i].offset, stopsContainer.stops[i].color);
+				}
+				
+				if (this.attribute('gradientTransform').hasValue()) {
+					// render as transformed pattern on temporary canvas
+					var rootView = svg.ViewPort.viewPorts[0];
+					
+					var rect = new svg.Element.rect();
+					rect.attributes['x'] = new svg.Property('x', -svg.MAX_VIRTUAL_PIXELS/3.0);
+					rect.attributes['y'] = new svg.Property('y', -svg.MAX_VIRTUAL_PIXELS/3.0);
+					rect.attributes['width'] = new svg.Property('width', svg.MAX_VIRTUAL_PIXELS);
+					rect.attributes['height'] = new svg.Property('height', svg.MAX_VIRTUAL_PIXELS);
+					
+					var group = new svg.Element.g();
+					group.attributes['transform'] = new svg.Property('transform', this.attribute('gradientTransform').value);
+					group.children = [ rect ];
+					
+					var tempSvg = new svg.Element.svg();
+					tempSvg.attributes['x'] = new svg.Property('x', 0);
+					tempSvg.attributes['y'] = new svg.Property('y', 0);
+					tempSvg.attributes['width'] = new svg.Property('width', rootView.width);
+					tempSvg.attributes['height'] = new svg.Property('height', rootView.height);
+					tempSvg.children = [ group ];
+					
+					var c = document.createElement('canvas');
+					c.width = rootView.width;
+					c.height = rootView.height;
+					var tempCtx = c.getContext('2d');
+					tempCtx.fillStyle = g;
+					tempSvg.render(tempCtx);		
+					return tempCtx.createPattern(c, 'no-repeat');
+				}
+				
+				return g;				
+			}
+		}
+		svg.Element.GradientBase.prototype = new svg.Element.ElementBase;
+		
+		// linear gradient element
+		svg.Element.linearGradient = function(node) {
+			this.base = svg.Element.GradientBase;
+			this.base(node);
+			
+			this.getGradient = function(ctx, element) {
+				var bb = element.getBoundingBox();
+				
+				var x1 = (this.gradientUnits == 'objectBoundingBox' 
+					? bb.x() + bb.width() * this.attribute('x1').numValue() 
+					: this.attribute('x1').Length.toPixels('x'));
+				var y1 = (this.gradientUnits == 'objectBoundingBox' 
+					? bb.y() + bb.height() * this.attribute('y1').numValue()
+					: this.attribute('y1').Length.toPixels('y'));
+				var x2 = (this.gradientUnits == 'objectBoundingBox' 
+					? bb.x() + bb.width() * this.attribute('x2').numValue()
+					: this.attribute('x2').Length.toPixels('x'));
+				var y2 = (this.gradientUnits == 'objectBoundingBox' 
+					? bb.y() + bb.height() * this.attribute('y2').numValue()
+					: this.attribute('y2').Length.toPixels('y'));
+
+				return ctx.createLinearGradient(x1, y1, x2, y2);
+			}
+		}
+		svg.Element.linearGradient.prototype = new svg.Element.GradientBase;
+		
+		// radial gradient element
+		svg.Element.radialGradient = function(node) {
+			this.base = svg.Element.GradientBase;
+			this.base(node);
+			
+			this.getGradient = function(ctx, element) {
+				var bb = element.getBoundingBox();
+				
+				var cx = (this.gradientUnits == 'objectBoundingBox' 
+					? bb.x() + bb.width() * this.attribute('cx').numValue() 
+					: this.attribute('cx').Length.toPixels('x'));
+				var cy = (this.gradientUnits == 'objectBoundingBox' 
+					? bb.y() + bb.height() * this.attribute('cy').numValue() 
+					: this.attribute('cy').Length.toPixels('y'));
+				
+				var fx = cx;
+				var fy = cy;
+				if (this.attribute('fx').hasValue()) {
+					fx = (this.gradientUnits == 'objectBoundingBox' 
+					? bb.x() + bb.width() * this.attribute('fx').numValue() 
+					: this.attribute('fx').Length.toPixels('x'));
+				}
+				if (this.attribute('fy').hasValue()) {
+					fy = (this.gradientUnits == 'objectBoundingBox' 
+					? bb.y() + bb.height() * this.attribute('fy').numValue() 
+					: this.attribute('fy').Length.toPixels('y'));
+				}
+				
+				var r = (this.gradientUnits == 'objectBoundingBox' 
+					? (bb.width() + bb.height()) / 2.0 * this.attribute('r').numValue()
+					: this.attribute('r').Length.toPixels());
+				
+				return ctx.createRadialGradient(fx, fy, 0, cx, cy, r);
+			}
+		}
+		svg.Element.radialGradient.prototype = new svg.Element.GradientBase;
+		
+		// gradient stop element
+		svg.Element.stop = function(node) {
+			this.base = svg.Element.ElementBase;
+			this.base(node);
+			
+			this.offset = this.attribute('offset').numValue();
+			
+			var stopColor = this.style('stop-color');
+			if (this.style('stop-opacity').hasValue()) stopColor = stopColor.Color.addOpacity(this.style('stop-opacity').value);
+			this.color = stopColor.value;
+		}
+		svg.Element.stop.prototype = new svg.Element.ElementBase;
+		
+		// animation base element
+		svg.Element.AnimateBase = function(node) {
+			this.base = svg.Element.ElementBase;
+			this.base(node);
+			
+			svg.Animations.push(this);
+			
+			this.duration = 0.0;
+			this.begin = this.attribute('begin').Time.toMilliseconds();
+			this.maxDuration = this.begin + this.attribute('dur').Time.toMilliseconds();
+			
+			this.getProperty = function() {
+				var attributeType = this.attribute('attributeType').value;
+				var attributeName = this.attribute('attributeName').value;
+				
+				if (attributeType == 'CSS') {
+					return this.parent.style(attributeName, true);
+				}
+				return this.parent.attribute(attributeName, true);			
+			};
+			
+			this.initialValue = null;
+			this.removed = false;			
+
+			this.calcValue = function() {
+				// OVERRIDE ME!
+				return '';
+			}
+			
+			this.update = function(delta) {	
+				// set initial value
+				if (this.initialValue == null) {
+					this.initialValue = this.getProperty().value;
+				}
+			
+				// if we're past the end time
+				if (this.duration > this.maxDuration) {
+					// loop for indefinitely repeating animations
+					if (this.attribute('repeatCount').value == 'indefinite') {
+						this.duration = 0.0
+					}
+					else if (this.attribute('fill').valueOrDefault('remove') == 'remove' && !this.removed) {
+						this.removed = true;
+						this.getProperty().value = this.initialValue;
+						return true;
+					}
+					else {
+						return false; // no updates made
+					}
+				}			
+				this.duration = this.duration + delta;
+			
+				// if we're past the begin time
+				var updated = false;
+				if (this.begin < this.duration) {
+					var newValue = this.calcValue(); // tween
+					
+					if (this.attribute('type').hasValue()) {
+						// for transform, etc.
+						var type = this.attribute('type').value;
+						newValue = type + '(' + newValue + ')';
+					}
+					
+					this.getProperty().value = newValue;
+					updated = true;
+				}
+				
+				return updated;
+			}
+			
+			// fraction of duration we've covered
+			this.progress = function() {
+				return ((this.duration - this.begin) / (this.maxDuration - this.begin));
+			}			
+		}
+		svg.Element.AnimateBase.prototype = new svg.Element.ElementBase;
+		
+		// animate element
+		svg.Element.animate = function(node) {
+			this.base = svg.Element.AnimateBase;
+			this.base(node);
+			
+			this.calcValue = function() {
+				var from = this.attribute('from').numValue();
+				var to = this.attribute('to').numValue();
+				
+				// tween value linearly
+				return from + (to - from) * this.progress(); 
+			};
+		}
+		svg.Element.animate.prototype = new svg.Element.AnimateBase;
+			
+		// animate color element
+		svg.Element.animateColor = function(node) {
+			this.base = svg.Element.AnimateBase;
+			this.base(node);
+
+			this.calcValue = function() {
+				var from = new RGBColor(this.attribute('from').value);
+				var to = new RGBColor(this.attribute('to').value);
+				
+				if (from.ok && to.ok) {
+					// tween color linearly
+					var r = from.r + (to.r - from.r) * this.progress();
+					var g = from.g + (to.g - from.g) * this.progress();
+					var b = from.b + (to.b - from.b) * this.progress();
+					return 'rgb('+parseInt(r,10)+','+parseInt(g,10)+','+parseInt(b,10)+')';
+				}
+				return this.attribute('from').value;
+			};
+		}
+		svg.Element.animateColor.prototype = new svg.Element.AnimateBase;
+		
+		// animate transform element
+		svg.Element.animateTransform = function(node) {
+			this.base = svg.Element.animate;
+			this.base(node);
+		}
+		svg.Element.animateTransform.prototype = new svg.Element.animate;
+		
+		// font element
+		svg.Element.font = function(node) {
+			this.base = svg.Element.ElementBase;
+			this.base(node);
+
+			this.horizAdvX = this.attribute('horiz-adv-x').numValue();			
+			
+			this.isRTL = false;
+			this.isArabic = false;
+			this.fontFace = null;
+			this.missingGlyph = null;
+			this.glyphs = [];			
+			for (var i=0; i<this.children.length; i++) {
+				var child = this.children[i];
+				if (child.type == 'font-face') {
+					this.fontFace = child;
+					if (child.style('font-family').hasValue()) {
+						svg.Definitions[child.style('font-family').value] = this;
+					}
+				}
+				else if (child.type == 'missing-glyph') this.missingGlyph = child;
+				else if (child.type == 'glyph') {
+					if (child.arabicForm != '') {
+						this.isRTL = true;
+						this.isArabic = true;
+						if (typeof(this.glyphs[child.unicode]) == 'undefined') this.glyphs[child.unicode] = [];
+						this.glyphs[child.unicode][child.arabicForm] = child;
+					}
+					else {
+						this.glyphs[child.unicode] = child;
+					}
+				}
+			}	
+		}
+		svg.Element.font.prototype = new svg.Element.ElementBase;
+		
+		// font-face element
+		svg.Element.fontface = function(node) {
+			this.base = svg.Element.ElementBase;
+			this.base(node);	
+			
+			this.ascent = this.attribute('ascent').value;
+			this.descent = this.attribute('descent').value;
+			this.unitsPerEm = this.attribute('units-per-em').numValue();				
+		}
+		svg.Element.fontface.prototype = new svg.Element.ElementBase;
+		
+		// missing-glyph element
+		svg.Element.missingglyph = function(node) {
+			this.base = svg.Element.path;
+			this.base(node);	
+			
+			this.horizAdvX = 0;
+		}
+		svg.Element.missingglyph.prototype = new svg.Element.path;
+		
+		// glyph element
+		svg.Element.glyph = function(node) {
+			this.base = svg.Element.path;
+			this.base(node);	
+			
+			this.horizAdvX = this.attribute('horiz-adv-x').numValue();
+			this.unicode = this.attribute('unicode').value;
+			this.arabicForm = this.attribute('arabic-form').value;
+		}
+		svg.Element.glyph.prototype = new svg.Element.path;
+		
+		// text element
+		svg.Element.text = function(node) {
+			this.base = svg.Element.RenderedElementBase;
+			this.base(node);
+			
+			if (node != null) {
+				// add children
+				this.children = [];
+				for (var i=0; i<node.childNodes.length; i++) {
+					var childNode = node.childNodes[i];
+					if (childNode.nodeType == 1) { // capture tspan and tref nodes
+						this.addChild(childNode, true);
+					}
+					else if (childNode.nodeType == 3) { // capture text
+						this.addChild(new svg.Element.tspan(childNode), false);
+					}
+				}
+			}
+			
+			this.baseSetContext = this.setContext;
+			this.setContext = function(ctx) {
+				this.baseSetContext(ctx);
+				if (this.style('dominant-baseline').hasValue()) ctx.textBaseline = this.style('dominant-baseline').value;
+				if (this.style('alignment-baseline').hasValue()) ctx.textBaseline = this.style('alignment-baseline').value;
+			}
+			
+			this.renderChildren = function(ctx) {
+				var textAnchor = this.style('text-anchor').valueOrDefault('start');
+				var x = this.attribute('x').Length.toPixels('x');
+				var y = this.attribute('y').Length.toPixels('y');
+				for (var i=0; i<this.children.length; i++) {
+					var child = this.children[i];
+				
+					if (child.attribute('x').hasValue()) {
+						child.x = child.attribute('x').Length.toPixels('x');
+					}
+					else {
+						if (child.attribute('dx').hasValue()) x += child.attribute('dx').Length.toPixels('x');
+						child.x = x;
+					}
+					
+					var childLength = child.measureText(ctx);
+					if (textAnchor != 'start' && (i==0 || child.attribute('x').hasValue())) { // new group?
+						// loop through rest of children
+						var groupLength = childLength;
+						for (var j=i+1; j<this.children.length; j++) {
+							var childInGroup = this.children[j];
+							if (childInGroup.attribute('x').hasValue()) break; // new group
+							groupLength += childInGroup.measureText(ctx);
+						}
+						child.x -= (textAnchor == 'end' ? groupLength : groupLength / 2.0);
+					}
+					x = child.x + childLength;
+					
+					if (child.attribute('y').hasValue()) {
+						child.y = child.attribute('y').Length.toPixels('y');
+					}
+					else {
+						if (child.attribute('dy').hasValue()) y += child.attribute('dy').Length.toPixels('y');
+						child.y = y;
+					}	
+					y = child.y;
+					
+					child.render(ctx);
+				}
+			}
+		}
+		svg.Element.text.prototype = new svg.Element.RenderedElementBase;
+		
+		// text base
+		svg.Element.TextElementBase = function(node) {
+			this.base = svg.Element.RenderedElementBase;
+			this.base(node);
+			
+			this.getGlyph = function(font, text, i) {
+				var c = text[i];
+				var glyph = null;
+				if (font.isArabic) {
+					var arabicForm = 'isolated';
+					if ((i==0 || text[i-1]==' ') && i<text.length-2 && text[i+1]!=' ') arabicForm = 'terminal'; 
+					if (i>0 && text[i-1]!=' ' && i<text.length-2 && text[i+1]!=' ') arabicForm = 'medial';
+					if (i>0 && text[i-1]!=' ' && (i == text.length-1 || text[i+1]==' ')) arabicForm = 'initial';
+					if (typeof(font.glyphs[c]) != 'undefined') {
+						glyph = font.glyphs[c][arabicForm];
+						if (glyph == null && font.glyphs[c].type == 'glyph') glyph = font.glyphs[c];
+					}
+				}
+				else {
+					glyph = font.glyphs[c];
+				}
+				if (glyph == null) glyph = font.missingGlyph;
+				return glyph;
+			}
+			
+			this.renderChildren = function(ctx) {
+				var customFont = this.parent.style('font-family').Definition.getDefinition();
+				if (customFont != null) {
+					var fontSize = this.parent.style('font-size').numValueOrDefault(svg.Font.Parse(svg.ctx.font).fontSize);
+					var fontStyle = this.parent.style('font-style').valueOrDefault(svg.Font.Parse(svg.ctx.font).fontStyle);
+					var text = this.getText();
+					if (customFont.isRTL) text = text.split("").reverse().join("");
+					
+					var dx = svg.ToNumberArray(this.parent.attribute('dx').value);
+					for (var i=0; i<text.length; i++) {
+						var glyph = this.getGlyph(customFont, text, i);
+						var scale = fontSize / customFont.fontFace.unitsPerEm;
+						ctx.translate(this.x, this.y);
+						ctx.scale(scale, -scale);
+						var lw = ctx.lineWidth;
+						ctx.lineWidth = ctx.lineWidth * customFont.fontFace.unitsPerEm / fontSize;
+						if (fontStyle == 'italic') ctx.transform(1, 0, .4, 1, 0, 0);
+						glyph.render(ctx);
+						if (fontStyle == 'italic') ctx.transform(1, 0, -.4, 1, 0, 0);
+						ctx.lineWidth = lw;
+						ctx.scale(1/scale, -1/scale);
+						ctx.translate(-this.x, -this.y);	
+						
+						this.x += fontSize * (glyph.horizAdvX || customFont.horizAdvX) / customFont.fontFace.unitsPerEm;
+						if (typeof(dx[i]) != 'undefined' && !isNaN(dx[i])) {
+							this.x += dx[i];
+						}
+					}
+					return;
+				}
+			
+				if (ctx.strokeStyle != '') ctx.strokeText(svg.compressSpaces(this.getText()), this.x, this.y);
+				if (ctx.fillStyle != '') ctx.fillText(svg.compressSpaces(this.getText()), this.x, this.y);
+			}
+			
+			this.getText = function() {
+				// OVERRIDE ME
+			}
+			
+			this.measureText = function(ctx) {
+				var customFont = this.parent.style('font-family').Definition.getDefinition();
+				if (customFont != null) {
+					var fontSize = this.parent.style('font-size').numValueOrDefault(svg.Font.Parse(svg.ctx.font).fontSize);
+					var measure = 0;
+					var text = this.getText();
+					if (customFont.isRTL) text = text.split("").reverse().join("");
+					var dx = svg.ToNumberArray(this.parent.attribute('dx').value);
+					for (var i=0; i<text.length; i++) {
+						var glyph = this.getGlyph(customFont, text, i);
+						measure += (glyph.horizAdvX || customFont.horizAdvX) * fontSize / customFont.fontFace.unitsPerEm;
+						if (typeof(dx[i]) != 'undefined' && !isNaN(dx[i])) {
+							measure += dx[i];
+						}
+					}
+					return measure;
+				}
+			
+				var textToMeasure = svg.compressSpaces(this.getText());
+				if (!ctx.measureText) return textToMeasure.length * 10;
+				
+				ctx.save();
+				this.setContext(ctx);
+				var width = ctx.measureText(textToMeasure).width;
+				ctx.restore();
+				return width;
+			}
+		}
+		svg.Element.TextElementBase.prototype = new svg.Element.RenderedElementBase;
+		
+		// tspan 
+		svg.Element.tspan = function(node) {
+			this.base = svg.Element.TextElementBase;
+			this.base(node);
+			
+			this.text = node.nodeType == 3 ? node.nodeValue : // text
+						node.childNodes.length > 0 ? node.childNodes[0].nodeValue : // element
+						node.text;
+			this.getText = function() {
+				return this.text;
+			}
+		}
+		svg.Element.tspan.prototype = new svg.Element.TextElementBase;
+		
+		// tref
+		svg.Element.tref = function(node) {
+			this.base = svg.Element.TextElementBase;
+			this.base(node);
+			
+			this.getText = function() {
+				var element = this.attribute('xlink:href').Definition.getDefinition();
+				if (element != null) return element.children[0].getText();
+			}
+		}
+		svg.Element.tref.prototype = new svg.Element.TextElementBase;		
+		
+		// a element
+		svg.Element.a = function(node) {
+			this.base = svg.Element.TextElementBase;
+			this.base(node);
+			
+			this.hasText = true;
+			for (var i=0; i<node.childNodes.length; i++) {
+				if (node.childNodes[i].nodeType != 3) this.hasText = false;
+			}
+			
+			// this might contain text
+			this.text = this.hasText ? node.childNodes[0].nodeValue : '';
+			this.getText = function() {
+				return this.text;
+			}		
+
+			this.baseRenderChildren = this.renderChildren;
+			this.renderChildren = function(ctx) {
+				if (this.hasText) {
+					// render as text element
+					this.baseRenderChildren(ctx);
+					var fontSize = new svg.Property('fontSize', svg.Font.Parse(svg.ctx.font).fontSize);
+					svg.Mouse.checkBoundingBox(this, new svg.BoundingBox(this.x, this.y - fontSize.Length.toPixels('y'), this.x + this.measureText(ctx), this.y));					
+				}
+				else {
+					// render as temporary group
+					var g = new svg.Element.g();
+					g.children = this.children;
+					g.parent = this;
+					g.render(ctx);
+				}
+			}
+			
+			this.onclick = function() {
+				window.open(this.attribute('xlink:href').value);
+			}
+			
+			this.onmousemove = function() {
+				svg.ctx.canvas.style.cursor = 'pointer';
+			}
+		}
+		svg.Element.a.prototype = new svg.Element.TextElementBase;		
+		
+		// image element
+		svg.Element.image = function(node) {
+			this.base = svg.Element.RenderedElementBase;
+			this.base(node);
+			
+			svg.Images.push(this);
+			this.img = document.createElement('img');
+			this.loaded = false;
+			var that = this;
+			this.img.onload = function() { that.loaded = true; }
+			this.img.src = this.attribute('xlink:href').value;
+			
+			this.renderChildren = function(ctx) {
+				var x = this.attribute('x').Length.toPixels('x');
+				var y = this.attribute('y').Length.toPixels('y');
+				
+				var width = this.attribute('width').Length.toPixels('x');
+				var height = this.attribute('height').Length.toPixels('y');			
+				if (width == 0 || height == 0) return;
+			
+				ctx.save();
+				ctx.translate(x, y);
+				svg.AspectRatio(ctx,
+								this.attribute('preserveAspectRatio').value,
+								width,
+								this.img.width,
+								height,
+								this.img.height,
+								0,
+								0);	
+				ctx.drawImage(this.img, 0, 0);			
+				ctx.restore();
+			}
+		}
+		svg.Element.image.prototype = new svg.Element.RenderedElementBase;
+		
+		// group element
+		svg.Element.g = function(node) {
+			this.base = svg.Element.RenderedElementBase;
+			this.base(node);
+			
+			this.getBoundingBox = function() {
+				var bb = new svg.BoundingBox();
+				for (var i=0; i<this.children.length; i++) {
+					bb.addBoundingBox(this.children[i].getBoundingBox());
+				}
+				return bb;
+			};
+		}
+		svg.Element.g.prototype = new svg.Element.RenderedElementBase;
+
+		// symbol element
+		svg.Element.symbol = function(node) {
+			this.base = svg.Element.RenderedElementBase;
+			this.base(node);
+			
+			this.baseSetContext = this.setContext;
+			this.setContext = function(ctx) {		
+				this.baseSetContext(ctx);
+				
+				// viewbox
+				if (this.attribute('viewBox').hasValue()) {				
+					var viewBox = svg.ToNumberArray(this.attribute('viewBox').value);
+					var minX = viewBox[0];
+					var minY = viewBox[1];
+					width = viewBox[2];
+					height = viewBox[3];
+					
+					svg.AspectRatio(ctx,
+									this.attribute('preserveAspectRatio').value, 
+									this.attribute('width').Length.toPixels('x'),
+									width,
+									this.attribute('height').Length.toPixels('y'),
+									height,
+									minX,
+									minY);
+
+					svg.ViewPort.SetCurrent(viewBox[2], viewBox[3]);						
+				}
+			}			
+		}
+		svg.Element.symbol.prototype = new svg.Element.RenderedElementBase;		
+			
+		// style element
+		svg.Element.style = function(node) { 
+			this.base = svg.Element.ElementBase;
+			this.base(node);
+			
+			// text, or spaces then CDATA
+			var css = node.childNodes[0].nodeValue + (node.childNodes.length > 1 ? node.childNodes[1].nodeValue : '');
+			css = css.replace(/(\/\*([^*]|[\r\n]|(\*+([^*\/]|[\r\n])))*\*+\/)|(^[\s]*\/\/.*)/gm, ''); // remove comments
+			css = svg.compressSpaces(css); // replace whitespace
+			var cssDefs = css.split('}');
+			for (var i=0; i<cssDefs.length; i++) {
+				if (svg.trim(cssDefs[i]) != '') {
+					var cssDef = cssDefs[i].split('{');
+					var cssClasses = cssDef[0].split(',');
+					var cssProps = cssDef[1].split(';');
+					for (var j=0; j<cssClasses.length; j++) {
+						var cssClass = svg.trim(cssClasses[j]);
+						if (cssClass != '') {
+							var props = {};
+							for (var k=0; k<cssProps.length; k++) {
+								var prop = cssProps[k].indexOf(':');
+								var name = cssProps[k].substr(0, prop);
+								var value = cssProps[k].substr(prop + 1, cssProps[k].length - prop);
+								if (name != null && value != null) {
+									props[svg.trim(name)] = new svg.Property(svg.trim(name), svg.trim(value));
+								}
+							}
+							svg.Styles[cssClass] = props;
+							if (cssClass == '@font-face') {
+								var fontFamily = props['font-family'].value.replace(/"/g,'');
+								var srcs = props['src'].value.split(',');
+								for (var s=0; s<srcs.length; s++) {
+									if (srcs[s].indexOf('format("svg")') > 0) {
+										var urlStart = srcs[s].indexOf('url');
+										var urlEnd = srcs[s].indexOf(')', urlStart);
+										var url = srcs[s].substr(urlStart + 5, urlEnd - urlStart - 6);
+										var doc = svg.parseXml(svg.ajax(url));
+										var fonts = doc.getElementsByTagName('font');
+										for (var f=0; f<fonts.length; f++) {
+											var font = svg.CreateElement(fonts[f]);
+											svg.Definitions[fontFamily] = font;
+										}
+									}
+								}
+							}
+						}
+					}
+				}
+			}
+		}
+		svg.Element.style.prototype = new svg.Element.ElementBase;
+		
+		// use element 
+		svg.Element.use = function(node) {
+			this.base = svg.Element.RenderedElementBase;
+			this.base(node);
+			
+			this.baseSetContext = this.setContext;
+			this.setContext = function(ctx) {
+				this.baseSetContext(ctx);
+				if (this.attribute('x').hasValue()) ctx.translate(this.attribute('x').Length.toPixels('x'), 0);
+				if (this.attribute('y').hasValue()) ctx.translate(0, this.attribute('y').Length.toPixels('y'));
+			}
+			
+			this.getDefinition = function() {
+				var element = this.attribute('xlink:href').Definition.getDefinition();
+				if (this.attribute('width').hasValue()) element.attribute('width', true).value = this.attribute('width').value;
+				if (this.attribute('height').hasValue()) element.attribute('height', true).value = this.attribute('height').value;
+				return element;
+			}
+			
+			this.path = function(ctx) {
+				var element = this.getDefinition();
+				if (element != null) element.path(ctx);
+			}
+			
+			this.renderChildren = function(ctx) {
+				var element = this.getDefinition();
+				if (element != null) element.render(ctx);
+			}
+		}
+		svg.Element.use.prototype = new svg.Element.RenderedElementBase;
+		
+		// mask element
+		svg.Element.mask = function(node) {
+			this.base = svg.Element.ElementBase;
+			this.base(node);
+						
+			this.apply = function(ctx, element) {
+				// render as temp svg	
+				var x = this.attribute('x').Length.toPixels('x');
+				var y = this.attribute('y').Length.toPixels('y');
+				var width = this.attribute('width').Length.toPixels('x');
+				var height = this.attribute('height').Length.toPixels('y');
+				
+				// temporarily remove mask to avoid recursion
+				var mask = element.attribute('mask').value;
+				element.attribute('mask').value = '';
+				
+					var cMask = document.createElement('canvas');
+					cMask.width = x + width;
+					cMask.height = y + height;
+					var maskCtx = cMask.getContext('2d');
+					this.renderChildren(maskCtx);
+				
+					var c = document.createElement('canvas');
+					c.width = x + width;
+					c.height = y + height;
+					var tempCtx = c.getContext('2d');
+					element.render(tempCtx);
+					tempCtx.globalCompositeOperation = 'destination-in';
+					tempCtx.fillStyle = maskCtx.createPattern(cMask, 'no-repeat');
+					tempCtx.fillRect(0, 0, x + width, y + height);
+					
+					ctx.fillStyle = tempCtx.createPattern(c, 'no-repeat');
+					ctx.fillRect(0, 0, x + width, y + height);
+					
+				// reassign mask
+				element.attribute('mask').value = mask;	
+			}
+			
+			this.render = function(ctx) {
+				// NO RENDER
+			}
+		}
+		svg.Element.mask.prototype = new svg.Element.ElementBase;
+		
+		// clip element
+		svg.Element.clipPath = function(node) {
+			this.base = svg.Element.ElementBase;
+			this.base(node);
+			
+			this.apply = function(ctx) {
+				for (var i=0; i<this.children.length; i++) {
+					if (this.children[i].path) {
+						this.children[i].path(ctx);
+						ctx.clip();
+					}
+				}
+			}
+			
+			this.render = function(ctx) {
+				// NO RENDER
+			}
+		}
+		svg.Element.clipPath.prototype = new svg.Element.ElementBase;
+
+		// filters
+		svg.Element.filter = function(node) {
+			this.base = svg.Element.ElementBase;
+			this.base(node);
+						
+			this.apply = function(ctx, element) {
+				// render as temp svg	
+				var bb = element.getBoundingBox();
+				var x = this.attribute('x').Length.toPixels('x');
+				var y = this.attribute('y').Length.toPixels('y');
+				if (x == 0 || y == 0) {
+					x = bb.x1;
+					y = bb.y1;
+				}
+				var width = this.attribute('width').Length.toPixels('x');
+				var height = this.attribute('height').Length.toPixels('y');
+				if (width == 0 || height == 0) {
+					width = bb.width();
+					height = bb.height();
+				}
+				
+				// temporarily remove filter to avoid recursion
+				var filter = element.style('filter').value;
+				element.style('filter').value = '';
+				
+				// max filter distance
+				var extraPercent = .20;
+				var px = extraPercent * width;
+				var py = extraPercent * height;
+				
+				var c = document.createElement('canvas');
+				c.width = width + 2*px;
+				c.height = height + 2*py;
+				var tempCtx = c.getContext('2d');
+				tempCtx.translate(-x + px, -y + py);
+				element.render(tempCtx);
+			
+				// apply filters
+				for (var i=0; i<this.children.length; i++) {
+					this.children[i].apply(tempCtx, 0, 0, width + 2*px, height + 2*py);
+				}
+				
+				// render on me
+				ctx.drawImage(c, 0, 0, width + 2*px, height + 2*py, x - px, y - py, width + 2*px, height + 2*py);
+				
+				// reassign filter
+				element.style('filter', true).value = filter;	
+			}
+			
+			this.render = function(ctx) {
+				// NO RENDER
+			}		
+		}
+		svg.Element.filter.prototype = new svg.Element.ElementBase;
+		
+		svg.Element.feGaussianBlur = function(node) {
+			this.base = svg.Element.ElementBase;
+			this.base(node);	
+			
+			function make_fgauss(sigma) {
+				sigma = Math.max(sigma, 0.01);			      
+				var len = Math.ceil(sigma * 4.0) + 1;                     
+				mask = [];                               
+				for (var i = 0; i < len; i++) {                             
+					mask[i] = Math.exp(-0.5 * (i / sigma) * (i / sigma));                                           
+				}                                                           
+				return mask; 
+			}
+			
+			function normalize(mask) {
+				var sum = 0;
+				for (var i = 1; i < mask.length; i++) {
+					sum += Math.abs(mask[i]);
+				}
+				sum = 2 * sum + Math.abs(mask[0]);
+				for (var i = 0; i < mask.length; i++) {
+					mask[i] /= sum;
+				}
+				return mask;
+			}
+			
+			function convolve_even(src, dst, mask, width, height) {
+			  for (var y = 0; y < height; y++) {
+				for (var x = 0; x < width; x++) {
+				  var a = imGet(src, x, y, width, height, 3)/255;
+				  for (var rgba = 0; rgba < 4; rgba++) {					  
+					  var sum = mask[0] * (a==0?255:imGet(src, x, y, width, height, rgba)) * (a==0||rgba==3?1:a);
+					  for (var i = 1; i < mask.length; i++) {
+						var a1 = imGet(src, Math.max(x-i,0), y, width, height, 3)/255;
+					    var a2 = imGet(src, Math.min(x+i, width-1), y, width, height, 3)/255;
+						sum += mask[i] * 
+						  ((a1==0?255:imGet(src, Math.max(x-i,0), y, width, height, rgba)) * (a1==0||rgba==3?1:a1) + 
+						   (a2==0?255:imGet(src, Math.min(x+i, width-1), y, width, height, rgba)) * (a2==0||rgba==3?1:a2));
+					  }
+					  imSet(dst, y, x, height, width, rgba, sum);
+				  }			  
+				}
+			  }
+			}		
+
+			function imGet(img, x, y, width, height, rgba) {
+				return img[y*width*4 + x*4 + rgba];
+			}
+			
+			function imSet(img, x, y, width, height, rgba, val) {
+				img[y*width*4 + x*4 + rgba] = val;
+			}
+						
+			function blur(ctx, width, height, sigma)
+			{
+				var srcData = ctx.getImageData(0, 0, width, height);
+				var mask = make_fgauss(sigma);
+				mask = normalize(mask);
+				tmp = [];
+				convolve_even(srcData.data, tmp, mask, width, height);
+				convolve_even(tmp, srcData.data, mask, height, width);
+				ctx.clearRect(0, 0, width, height);
+				ctx.putImageData(srcData, 0, 0);
+			}			
+		
+			this.apply = function(ctx, x, y, width, height) {
+				// assuming x==0 && y==0 for now
+				blur(ctx, width, height, this.attribute('stdDeviation').numValue());
+			}
+		}
+		svg.Element.filter.prototype = new svg.Element.feGaussianBlur;
+		
+		// title element, do nothing
+		svg.Element.title = function(node) {
+		}
+		svg.Element.title.prototype = new svg.Element.ElementBase;
+
+		// desc element, do nothing
+		svg.Element.desc = function(node) {
+		}
+		svg.Element.desc.prototype = new svg.Element.ElementBase;		
+		
+		svg.Element.MISSING = function(node) {
+			console.log('ERROR: Element \'' + node.nodeName + '\' not yet implemented.');
+		}
+		svg.Element.MISSING.prototype = new svg.Element.ElementBase;
+		
+		// element factory
+		svg.CreateElement = function(node) {	
+			var className = node.nodeName.replace(/^[^:]+:/,''); // remove namespace
+			className = className.replace(/\-/g,''); // remove dashes
+			var e = null;
+			if (typeof(svg.Element[className]) != 'undefined') {
+				e = new svg.Element[className](node);
+			}
+			else {
+				e = new svg.Element.MISSING(node);
+			}
+
+			e.type = node.nodeName;
+			return e;
+		}
+				
+		// load from url
+		svg.load = function(ctx, url) {
+			svg.loadXml(ctx, svg.ajax(url));
+		}
+		
+		// load from xml
+		svg.loadXml = function(ctx, xml) {
+			svg.loadXmlDoc(ctx, svg.parseXml(xml));
+		}
+		
+		svg.loadXmlDoc = function(ctx, dom) {
+			svg.init(ctx);
+			
+			var mapXY = function(p) {
+				var e = ctx.canvas;
+				while (e) {
+					p.x -= e.offsetLeft;
+					p.y -= e.offsetTop;
+					e = e.offsetParent;
+				}
+				if (window.scrollX) p.x += window.scrollX;
+				if (window.scrollY) p.y += window.scrollY;
+				return p;
+			}
+			
+			// bind mouse
+			if (svg.opts['ignoreMouse'] != true) {
+				ctx.canvas.onclick = function(e) {
+					var p = mapXY(new svg.Point(e != null ? e.clientX : event.clientX, e != null ? e.clientY : event.clientY));
+					svg.Mouse.onclick(p.x, p.y);
+				};
+				ctx.canvas.onmousemove = function(e) {
+					var p = mapXY(new svg.Point(e != null ? e.clientX : event.clientX, e != null ? e.clientY : event.clientY));
+					svg.Mouse.onmousemove(p.x, p.y);
+				};
+			}
+		
+			var e = svg.CreateElement(dom.documentElement);
+			e.root = true;
+					
+			// render loop
+			var isFirstRender = true;
+			var draw = function() {
+				svg.ViewPort.Clear();
+				if (ctx.canvas.parentNode) svg.ViewPort.SetCurrent(ctx.canvas.parentNode.clientWidth, ctx.canvas.parentNode.clientHeight);
+			
+				if (svg.opts['ignoreDimensions'] != true) {
+					// set canvas size
+					if (e.style('width').hasValue()) {
+						ctx.canvas.width = e.style('width').Length.toPixels('x');
+						ctx.canvas.style.width = ctx.canvas.width + 'px';
+					}
+					if (e.style('height').hasValue()) {
+						ctx.canvas.height = e.style('height').Length.toPixels('y');
+						ctx.canvas.style.height = ctx.canvas.height + 'px';
+					}
+				}
+				var cWidth = ctx.canvas.clientWidth || ctx.canvas.width;
+				var cHeight = ctx.canvas.clientHeight || ctx.canvas.height;
+				svg.ViewPort.SetCurrent(cWidth, cHeight);		
+				
+				if (svg.opts != null && svg.opts['offsetX'] != null) e.attribute('x', true).value = svg.opts['offsetX'];
+				if (svg.opts != null && svg.opts['offsetY'] != null) e.attribute('y', true).value = svg.opts['offsetY'];
+				if (svg.opts != null && svg.opts['scaleWidth'] != null && svg.opts['scaleHeight'] != null) {
+					var xRatio = 1, yRatio = 1;
+					if (e.attribute('width').hasValue()) xRatio = e.attribute('width').Length.toPixels('x') / svg.opts['scaleWidth'];
+					if (e.attribute('height').hasValue()) yRatio = e.attribute('height').Length.toPixels('y') / svg.opts['scaleHeight'];
+				
+					e.attribute('width', true).value = svg.opts['scaleWidth'];
+					e.attribute('height', true).value = svg.opts['scaleHeight'];			
+					e.attribute('viewBox', true).value = '0 0 ' + (cWidth * xRatio) + ' ' + (cHeight * yRatio);
+					e.attribute('preserveAspectRatio', true).value = 'none';
+				}
+			
+				// clear and render
+				if (svg.opts['ignoreClear'] != true) {
+					ctx.clearRect(0, 0, cWidth, cHeight);
+				}
+				e.render(ctx);
+				if (isFirstRender) {
+					isFirstRender = false;
+					if (svg.opts != null && typeof(svg.opts['renderCallback']) == 'function') svg.opts['renderCallback']();
+				}			
+			}
+			
+			var waitingForImages = true;
+			if (svg.ImagesLoaded()) {
+				waitingForImages = false;
+				draw();
+			}
+			svg.intervalID = setInterval(function() { 
+				var needUpdate = false;
+				
+				if (waitingForImages && svg.ImagesLoaded()) {
+					waitingForImages = false;
+					needUpdate = true;
+				}
+			
+				// need update from mouse events?
+				if (svg.opts['ignoreMouse'] != true) {
+					needUpdate = needUpdate | svg.Mouse.hasEvents();
+				}
+			
+				// need update from animations?
+				if (svg.opts['ignoreAnimation'] != true) {
+					for (var i=0; i<svg.Animations.length; i++) {
+						needUpdate = needUpdate | svg.Animations[i].update(1000 / svg.FRAMERATE);
+					}
+				}
+				
+				// need update from redraw?
+				if (svg.opts != null && typeof(svg.opts['forceRedraw']) == 'function') {
+					if (svg.opts['forceRedraw']() == true) needUpdate = true;
+				}
+				
+				// render if needed
+				if (needUpdate) {
+					draw();				
+					svg.Mouse.runEvents(); // run and clear our events
+				}
+			}, 1000 / svg.FRAMERATE);
+		}
+		
+		svg.stop = function() {
+			if (svg.intervalID) {
+				clearInterval(svg.intervalID);
+			}
+		}
+		
+		svg.Mouse = new (function() {
+			this.events = [];
+			this.hasEvents = function() { return this.events.length != 0; }
+		
+			this.onclick = function(x, y) {
+				this.events.push({ type: 'onclick', x: x, y: y, 
+					run: function(e) { if (e.onclick) e.onclick(); }
+				});
+			}
+			
+			this.onmousemove = function(x, y) {
+				this.events.push({ type: 'onmousemove', x: x, y: y,
+					run: function(e) { if (e.onmousemove) e.onmousemove(); }
+				});
+			}			
+			
+			this.eventElements = [];
+			
+			this.checkPath = function(element, ctx) {
+				for (var i=0; i<this.events.length; i++) {
+					var e = this.events[i];
+					if (ctx.isPointInPath && ctx.isPointInPath(e.x, e.y)) this.eventElements[i] = element;
+				}
+			}
+			
+			this.checkBoundingBox = function(element, bb) {
+				for (var i=0; i<this.events.length; i++) {
+					var e = this.events[i];
+					if (bb.isPointInBox(e.x, e.y)) this.eventElements[i] = element;
+				}			
+			}
+			
+			this.runEvents = function() {
+				svg.ctx.canvas.style.cursor = '';
+				
+				for (var i=0; i<this.events.length; i++) {
+					var e = this.events[i];
+					var element = this.eventElements[i];
+					while (element) {
+						e.run(element);
+						element = element.parent;
+					}
+				}		
+			
+				// done running, clear
+				this.events = []; 
+				this.eventElements = [];
+			}
+		});
+		
+		return svg;
+	}
+})();
+
+if (CanvasRenderingContext2D) {
+	CanvasRenderingContext2D.prototype.drawSvg = function(s, dx, dy, dw, dh) {
+		canvg(this.canvas, s, { 
+			ignoreMouse: true, 
+			ignoreAnimation: true, 
+			ignoreDimensions: true, 
+			ignoreClear: true, 
+			offsetX: dx, 
+			offsetY: dy, 
+			scaleWidth: dw, 
+			scaleHeight: dh
+		});
+	}
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/canvg/rgbcolor.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/canvg/rgbcolor.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/canvg/rgbcolor.js	(revision 29468)
@@ -0,0 +1,287 @@
+/**
+ * A class to parse color values
+ * @author Stoyan Stefanov <sstoo@gmail.com>
+ * @link   http://www.phpied.com/rgb-color-parser-in-javascript/
+ * @license Use it if you like it
+ */
+function RGBColor(color_string)
+{
+    this.ok = false;
+
+    // strip any leading #
+    if (color_string.charAt(0) == '#') { // remove # if any
+        color_string = color_string.substr(1,6);
+    }
+
+    color_string = color_string.replace(/ /g,'');
+    color_string = color_string.toLowerCase();
+
+    // before getting into regexps, try simple matches
+    // and overwrite the input
+    var simple_colors = {
+        aliceblue: 'f0f8ff',
+        antiquewhite: 'faebd7',
+        aqua: '00ffff',
+        aquamarine: '7fffd4',
+        azure: 'f0ffff',
+        beige: 'f5f5dc',
+        bisque: 'ffe4c4',
+        black: '000000',
+        blanchedalmond: 'ffebcd',
+        blue: '0000ff',
+        blueviolet: '8a2be2',
+        brown: 'a52a2a',
+        burlywood: 'deb887',
+        cadetblue: '5f9ea0',
+        chartreuse: '7fff00',
+        chocolate: 'd2691e',
+        coral: 'ff7f50',
+        cornflowerblue: '6495ed',
+        cornsilk: 'fff8dc',
+        crimson: 'dc143c',
+        cyan: '00ffff',
+        darkblue: '00008b',
+        darkcyan: '008b8b',
+        darkgoldenrod: 'b8860b',
+        darkgray: 'a9a9a9',
+        darkgreen: '006400',
+        darkkhaki: 'bdb76b',
+        darkmagenta: '8b008b',
+        darkolivegreen: '556b2f',
+        darkorange: 'ff8c00',
+        darkorchid: '9932cc',
+        darkred: '8b0000',
+        darksalmon: 'e9967a',
+        darkseagreen: '8fbc8f',
+        darkslateblue: '483d8b',
+        darkslategray: '2f4f4f',
+        darkturquoise: '00ced1',
+        darkviolet: '9400d3',
+        deeppink: 'ff1493',
+        deepskyblue: '00bfff',
+        dimgray: '696969',
+        dodgerblue: '1e90ff',
+        feldspar: 'd19275',
+        firebrick: 'b22222',
+        floralwhite: 'fffaf0',
+        forestgreen: '228b22',
+        fuchsia: 'ff00ff',
+        gainsboro: 'dcdcdc',
+        ghostwhite: 'f8f8ff',
+        gold: 'ffd700',
+        goldenrod: 'daa520',
+        gray: '808080',
+        green: '008000',
+        greenyellow: 'adff2f',
+        honeydew: 'f0fff0',
+        hotpink: 'ff69b4',
+        indianred : 'cd5c5c',
+        indigo : '4b0082',
+        ivory: 'fffff0',
+        khaki: 'f0e68c',
+        lavender: 'e6e6fa',
+        lavenderblush: 'fff0f5',
+        lawngreen: '7cfc00',
+        lemonchiffon: 'fffacd',
+        lightblue: 'add8e6',
+        lightcoral: 'f08080',
+        lightcyan: 'e0ffff',
+        lightgoldenrodyellow: 'fafad2',
+        lightgrey: 'd3d3d3',
+        lightgreen: '90ee90',
+        lightpink: 'ffb6c1',
+        lightsalmon: 'ffa07a',
+        lightseagreen: '20b2aa',
+        lightskyblue: '87cefa',
+        lightslateblue: '8470ff',
+        lightslategray: '778899',
+        lightsteelblue: 'b0c4de',
+        lightyellow: 'ffffe0',
+        lime: '00ff00',
+        limegreen: '32cd32',
+        linen: 'faf0e6',
+        magenta: 'ff00ff',
+        maroon: '800000',
+        mediumaquamarine: '66cdaa',
+        mediumblue: '0000cd',
+        mediumorchid: 'ba55d3',
+        mediumpurple: '9370d8',
+        mediumseagreen: '3cb371',
+        mediumslateblue: '7b68ee',
+        mediumspringgreen: '00fa9a',
+        mediumturquoise: '48d1cc',
+        mediumvioletred: 'c71585',
+        midnightblue: '191970',
+        mintcream: 'f5fffa',
+        mistyrose: 'ffe4e1',
+        moccasin: 'ffe4b5',
+        navajowhite: 'ffdead',
+        navy: '000080',
+        oldlace: 'fdf5e6',
+        olive: '808000',
+        olivedrab: '6b8e23',
+        orange: 'ffa500',
+        orangered: 'ff4500',
+        orchid: 'da70d6',
+        palegoldenrod: 'eee8aa',
+        palegreen: '98fb98',
+        paleturquoise: 'afeeee',
+        palevioletred: 'd87093',
+        papayawhip: 'ffefd5',
+        peachpuff: 'ffdab9',
+        peru: 'cd853f',
+        pink: 'ffc0cb',
+        plum: 'dda0dd',
+        powderblue: 'b0e0e6',
+        purple: '800080',
+        red: 'ff0000',
+        rosybrown: 'bc8f8f',
+        royalblue: '4169e1',
+        saddlebrown: '8b4513',
+        salmon: 'fa8072',
+        sandybrown: 'f4a460',
+        seagreen: '2e8b57',
+        seashell: 'fff5ee',
+        sienna: 'a0522d',
+        silver: 'c0c0c0',
+        skyblue: '87ceeb',
+        slateblue: '6a5acd',
+        slategray: '708090',
+        snow: 'fffafa',
+        springgreen: '00ff7f',
+        steelblue: '4682b4',
+        tan: 'd2b48c',
+        teal: '008080',
+        thistle: 'd8bfd8',
+        tomato: 'ff6347',
+        turquoise: '40e0d0',
+        violet: 'ee82ee',
+        violetred: 'd02090',
+        wheat: 'f5deb3',
+        white: 'ffffff',
+        whitesmoke: 'f5f5f5',
+        yellow: 'ffff00',
+        yellowgreen: '9acd32'
+    };
+    for (var key in simple_colors) {
+        if (color_string == key) {
+            color_string = simple_colors[key];
+        }
+    }
+    // emd of simple type-in colors
+
+    // array of color definition objects
+    var color_defs = [
+        {
+            re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,
+            example: ['rgb(123, 234, 45)', 'rgb(255,234,245)'],
+            process: function (bits){
+                return [
+                    parseInt(bits[1]),
+                    parseInt(bits[2]),
+                    parseInt(bits[3])
+                ];
+            }
+        },
+        {
+            re: /^(\w{2})(\w{2})(\w{2})$/,
+            example: ['#00ff00', '336699'],
+            process: function (bits){
+                return [
+                    parseInt(bits[1], 16),
+                    parseInt(bits[2], 16),
+                    parseInt(bits[3], 16)
+                ];
+            }
+        },
+        {
+            re: /^(\w{1})(\w{1})(\w{1})$/,
+            example: ['#fb0', 'f0f'],
+            process: function (bits){
+                return [
+                    parseInt(bits[1] + bits[1], 16),
+                    parseInt(bits[2] + bits[2], 16),
+                    parseInt(bits[3] + bits[3], 16)
+                ];
+            }
+        }
+    ];
+
+    // search through the definitions to find a match
+    for (var i = 0; i < color_defs.length; i++) {
+        var re = color_defs[i].re;
+        var processor = color_defs[i].process;
+        var bits = re.exec(color_string);
+        if (bits) {
+            channels = processor(bits);
+            this.r = channels[0];
+            this.g = channels[1];
+            this.b = channels[2];
+            this.ok = true;
+        }
+
+    }
+
+    // validate/cleanup values
+    this.r = (this.r < 0 || isNaN(this.r)) ? 0 : ((this.r > 255) ? 255 : this.r);
+    this.g = (this.g < 0 || isNaN(this.g)) ? 0 : ((this.g > 255) ? 255 : this.g);
+    this.b = (this.b < 0 || isNaN(this.b)) ? 0 : ((this.b > 255) ? 255 : this.b);
+
+    // some getters
+    this.toRGB = function () {
+        return 'rgb(' + this.r + ', ' + this.g + ', ' + this.b + ')';
+    }
+    this.toHex = function () {
+        var r = this.r.toString(16);
+        var g = this.g.toString(16);
+        var b = this.b.toString(16);
+        if (r.length == 1) r = '0' + r;
+        if (g.length == 1) g = '0' + g;
+        if (b.length == 1) b = '0' + b;
+        return '#' + r + g + b;
+    }
+
+    // help
+    this.getHelpXML = function () {
+
+        var examples = new Array();
+        // add regexps
+        for (var i = 0; i < color_defs.length; i++) {
+            var example = color_defs[i].example;
+            for (var j = 0; j < example.length; j++) {
+                examples[examples.length] = example[j];
+            }
+        }
+        // add type-in colors
+        for (var sc in simple_colors) {
+            examples[examples.length] = sc;
+        }
+
+        var xml = document.createElement('ul');
+        xml.setAttribute('id', 'rgbcolor-examples');
+        for (var i = 0; i < examples.length; i++) {
+            try {
+                var list_item = document.createElement('li');
+                var list_color = new RGBColor(examples[i]);
+                var example_div = document.createElement('div');
+                example_div.style.cssText =
+                        'margin: 3px; '
+                        + 'border: 1px solid black; '
+                        + 'background:' + list_color.toHex() + '; '
+                        + 'color:' + list_color.toHex()
+                ;
+                example_div.appendChild(document.createTextNode('test'));
+                var list_item_value = document.createTextNode(
+                    ' ' + examples[i] + ' -> ' + list_color.toRGB() + ' -> ' + list_color.toHex()
+                );
+                list_item.appendChild(example_div);
+                list_item.appendChild(list_item_value);
+                xml.appendChild(list_item);
+
+            } catch(e){}
+        }
+        return xml;
+
+    }
+
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/contextmenu.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/contextmenu.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/contextmenu.js	(revision 29468)
@@ -0,0 +1,68 @@
+/**
+ * Package: svgedit.contextmenu
+ * 
+ * Licensed under the Apache License, Version 2
+ * 
+ * Author: Adam Bender
+ */
+// Dependencies:
+// 1) jQuery (for dom injection of context menus)\
+
+var svgedit = svgedit || {};
+(function() {
+	var self = this;
+	if (!svgedit.contextmenu) {
+		svgedit.contextmenu = {};
+	}
+	self.contextMenuExtensions = {}
+	var addContextMenuItem = function(menuItem) {
+		// menuItem: {id, label, shortcut, action}
+		if (!menuItemIsValid(menuItem)) {
+			console
+					.error("Menu items must be defined and have at least properties: id, label, action, where action must be a function");
+			return;
+		}
+		if (menuItem.id in self.contextMenuExtensions) {
+			console.error('Cannot add extension "' + menuItem.id
+					+ '", an extension by that name already exists"');
+			return;
+		}
+		// Register menuItem action, see below for deferred menu dom injection
+		console.log("Registed contextmenu item: {id:"+ menuItem.id+", label:"+menuItem.label+"}");
+		self.contextMenuExtensions[menuItem.id] = menuItem;
+		//TODO: Need to consider how to handle custom enable/disable behavior
+	}
+	var hasCustomHandler = function(handlerKey) {
+		return self.contextMenuExtensions[handlerKey] && true;
+	}
+	var getCustomHandler = function(handlerKey) {
+		return self.contextMenuExtensions[handlerKey].action;
+	}
+	var injectExtendedContextMenuItemIntoDom = function(menuItem) {
+		if (Object.keys(self.contextMenuExtensions).length == 0) {
+			// all menuItems appear at the bottom of the menu in their own container.
+			// if this is the first extension menu we need to add the separator.
+			$("#cmenu_canvas").append("<li class='separator'>");
+		}
+		var shortcut = menuItem.shortcut || "";
+		$("#cmenu_canvas").append("<li class='disabled'><a href='#" + menuItem.id + "'>"                   
+									+ menuItem.label + "<span class='shortcut'>"
+									+ shortcut + "</span></a></li>");
+	}
+
+	var menuItemIsValid = function(menuItem) {
+		return menuItem && menuItem.id && menuItem.label && menuItem.action && typeof menuItem.action == 'function';
+	}
+	
+	// Defer injection to wait out initial menu processing. This probably goes away once all context
+	// menu behavior is brought here.
+	methodDraw.ready(function() {
+		for (menuItem in contextMenuExtensions) {
+			injectExtendedContextMenuItemIntoDom(contextMenuExtensions[menuItem]);
+		}
+	});
+	svgedit.contextmenu.resetCustomMenus = function(){self.contextMenuExtensions = {}}
+	svgedit.contextmenu.add = addContextMenuItem;
+	svgedit.contextmenu.hasCustomHandler = hasCustomHandler;
+	svgedit.contextmenu.getCustomHandler = getCustomHandler;
+})();
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/contextmenu/jquery.contextMenu.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/contextmenu/jquery.contextMenu.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/contextmenu/jquery.contextMenu.js	(revision 29468)
@@ -0,0 +1,223 @@
+// jQuery Context Menu Plugin
+//
+// Version 1.01
+//
+// Cory S.N. LaViska
+// A Beautiful Site (http://abeautifulsite.net/)
+// Modified by Alexis Deveria
+//
+// More info: http://abeautifulsite.net/2008/09/jquery-context-menu-plugin/
+//
+// Terms of Use
+//
+// This plugin is dual-licensed under the GNU General Public License
+//   and the MIT License and is copyright A Beautiful Site, LLC.
+//
+if(jQuery)( function() {
+	var win = $(window);
+	var doc = $(document);
+
+	$.extend($.fn, {
+		
+		contextMenu: function(o, callback) {
+			// Defaults
+			if( o.menu == undefined ) return false;
+			if( o.inSpeed == undefined ) o.inSpeed = 150;
+			if( o.outSpeed == undefined ) o.outSpeed = 75;
+			// 0 needs to be -1 for expected results (no fade)
+			if( o.inSpeed == 0 ) o.inSpeed = -1;
+			if( o.outSpeed == 0 ) o.outSpeed = -1;
+			// Loop each context menu
+			$(this).each( function() {
+				var el = $(this);
+				var offset = $(el).offset();
+			
+				var menu = $('#' + o.menu);
+
+				// Add contextMenu class
+				menu.addClass('contextMenu');
+				// Simulate a true right click
+
+				$(this).bind( "mousedown", function(e) {
+					var evt = e;
+					$(this).on("mouseup", function(e) {
+						var srcElement = $(this);
+						srcElement.unbind('mouseup');
+						$(".contextMenu").hide();
+						if( evt.button === 2 || o.allowLeft || (evt.ctrlKey && svgedit.browser.isMac()) ) {
+                if (!svgedit.browser.isTouch()) open_context_menu(e, evt, srcElement);
+						}
+					});
+				});
+
+				if (svgedit.browser.isTouch()) {
+  				 $(this).bind("taphold", function(e){
+  				  var srcElement = $(this);
+  				  srcElement.unbind('mouseup');
+  				  open_context_menu(e,e, srcElement);
+  				})
+				}
+				
+				var open_context_menu = function(e, evt, srcElement) {
+				  if (typeof evt == 'undefined') evt = e;
+				  e.stopPropagation();
+        
+				  // Get this context menu
+			  
+				  if( el.hasClass('disabled') || evt.altKey ) return false;
+				
+				  // Detect mouse position
+				  var d = {}, x = e.pageX, y = e.pageY;
+				  if (svgedit.browser.isTouch()) var d = {}, x = e.originalEvent.touches[0].pageX, y = e.originalEvent.touches[0].pageY;
+				
+				  var x_off = win.width() - menu.width(), 
+				  	y_off = win.height() - menu.height();
+        
+				  if(x > x_off - 15) x = x_off-15;
+				  if(y > y_off - 30) y = y_off-30; // 30 is needed to prevent scrollbars in FF
+				
+				  if(svgedit.browser.isTouch()) 
+				    y = y - (menu.height()/2)
+				
+				  // Show the menu
+				  doc.unbind('click');
+				  menu.css({ top: y, left: x }).fadeIn(o.inSpeed);
+				  // Hover events
+				  menu.find('A').mouseover( function() {
+				  	menu.find('LI.hover').removeClass('hover');
+				  	$(this).parent().addClass('hover');
+				  }).mouseout( function() {
+				  	menu.find('LI.hover').removeClass('hover');
+				  });
+				
+				  // Keyboard
+				  doc.keypress( function(e) {
+				  	switch( e.keyCode ) {
+				  		case 38: // up
+				  			if( !menu.find('LI.hover').length ) {
+				  				menu.find('LI:last').addClass('hover');
+				  			} else {
+				  				menu.find('LI.hover').removeClass('hover').prevAll('LI:not(.disabled)').eq(0).addClass('hover');
+				  				if( !menu.find('LI.hover').length ) menu.find('LI:last').addClass('hover');
+				  			}
+				  		break;
+				  		case 40: // down
+				  			if( menu.find('LI.hover').length == 0 ) {
+				  				menu.find('LI:first').addClass('hover');
+				  			} else {
+				  				menu.find('LI.hover').removeClass('hover').nextAll('LI:not(.disabled)').eq(0).addClass('hover');
+				  				if( !menu.find('LI.hover').length ) menu.find('LI:first').addClass('hover');
+				  			}
+				  		break;
+				  		case 13: // enter
+				  			menu.find('LI.hover A').trigger('click');
+				  		break;
+				  		case 27: // esc
+				  			doc.trigger('click');
+				  		break
+				  	}
+				  });
+				
+				  // When items are selected
+				  menu.find('A').unbind('mouseup');
+				  menu.find('LI:not(.disabled) A').mouseup( function() {
+				  	doc.unbind('click').unbind('keypress');
+				  	$(".contextMenu").hide();
+				  	// Callback
+				  	if( callback ) callback( $(this).attr('href').substr(1), $(srcElement), {x: x - offset.left, y: y - offset.top, docX: x, docY: y} );
+				  	return false;
+				  });
+				
+				  // Hide bindings
+				  setTimeout( function() { // Delay for Mozilla
+				  	doc.click( function() {
+				  		doc.unbind('click').unbind('keypress');
+				  		menu.fadeOut(o.outSpeed);
+				  		return false;
+				  	});
+				  }, 0);
+				}
+				
+				
+				
+				// Disable text selection
+				if( $.browser.mozilla ) {
+					$('#' + o.menu).each( function() { $(this).css({ 'MozUserSelect' : 'none' }); });
+				} else if( $.browser.msie ) {
+					$('#' + o.menu).each( function() { $(this).bind('selectstart.disableTextSelect', function() { return false; }); });
+				} else {
+					$('#' + o.menu).each(function() { $(this).bind('mousedown.disableTextSelect', function() { return false; }); });
+				}
+				// Disable browser context menu (requires both selectors to work in IE/Safari + FF/Chrome)
+				$(el).add($('UL.contextMenu')).bind('contextmenu', function() { return false; });
+				
+			});
+			return $(this);
+		},
+		
+		// Disable context menu items on the fly
+		disableContextMenuItems: function(o) {
+			if( o == undefined ) {
+				// Disable all
+				$(this).find('LI').addClass('disabled');
+				return( $(this) );
+			}
+			$(this).each( function() {
+				if( o != undefined ) {
+					var d = o.split(',');
+					for( var i = 0; i < d.length; i++ ) {
+						$(this).find('A[href="' + d[i] + '"]').parent().addClass('disabled');
+						
+					}
+				}
+			});
+			return( $(this) );
+		},
+		
+		// Enable context menu items on the fly
+		enableContextMenuItems: function(o) {
+			if( o == undefined ) {
+				// Enable all
+				$(this).find('LI.disabled').removeClass('disabled');
+				return( $(this) );
+			}
+			$(this).each( function() {
+				if( o != undefined ) {
+					var d = o.split(',');
+					for( var i = 0; i < d.length; i++ ) {
+						$(this).find('A[href="' + d[i] + '"]').parent().removeClass('disabled');
+						
+					}
+				}
+			});
+			return( $(this) );
+		},
+		
+		// Disable context menu(s)
+		disableContextMenu: function() {
+			$(this).each( function() {
+				$(this).addClass('disabled');
+			});
+			return( $(this) );
+		},
+		
+		// Enable context menu(s)
+		enableContextMenu: function() {
+			$(this).each( function() {
+				$(this).removeClass('disabled');
+			});
+			return( $(this) );
+		},
+		
+		// Destroy context menu(s)
+		destroyContextMenu: function() {
+			// Destroy specified context menus
+			$(this).each( function() {
+				// Disable action
+				$(this).unbind('mousedown').unbind('mouseup');
+			});
+			return( $(this) );
+		}
+		
+	});
+})(jQuery);
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/jgraduate/LICENSE
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/jgraduate/LICENSE	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/jgraduate/LICENSE	(revision 29468)
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/jgraduate/README
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/jgraduate/README	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/jgraduate/README	(revision 29468)
@@ -0,0 +1,3 @@
+jGraduate - A jQuery plugin for picking gradients
+
+Licensed under the Apache License 2.  See LICENSE for more information.
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/jgraduate/css/jPicker.css
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/jgraduate/css/jPicker.css	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/jgraduate/css/jPicker.css	(revision 29468)
@@ -0,0 +1,250 @@
+#svg_editor .jPicker .Icon {
+    display: inline-block;
+    height: 24px;
+    position: relative;
+    text-align: left;
+    width: 25px;
+}
+#svg_editor .jPicker .Icon span.Color, #svg_editor .jPicker .Icon span.Alpha {
+    background-position: 2px 2px;
+    display: block;
+    height: 100%;
+    left: 0;
+    position: absolute;
+    top: 0;
+    width: 100%}
+#svg_editor .jPicker .Icon span.Image {
+    background-repeat: no-repeat;
+    cursor: pointer;
+    display: block;
+    height: 100%;
+    left: 0;
+    position: absolute;
+    top: 0;
+    width: 100%}
+#svg_editor .jPicker.Container {
+    z-index: 10;
+}
+
+table#svg_editor .jPicker {
+    width: 545px;
+     z-index: 20;
+}
+
+#svg_editor .jPicker .Move {
+    background-color: #ddd;
+    border-color: #fff #666 #666 #fff;
+    border-style: solid;
+    border-width: 1px;
+    cursor: move;
+    height: 12px;
+    padding: 0;
+}
+#svg_editor .jPicker .Title {
+    display:  none;
+}
+
+#svg_editor .jPicker div.Map {
+    
+  border:  solid #000 1px;
+     
+  cursor: crosshair;
+    
+  height: 260px;
+    
+  margin: 0;
+    
+  overflow: hidden;
+    
+  padding: 0;
+    
+  position: relative;
+    
+  width: 260px;
+    
+}
+#svg_editor .jPicker div[class="Map"] {
+    height: 256px;
+    width: 256px;
+}
+#svg_editor .jPicker div.Bar {
+    border:  solid #000 1px;
+     cursor: n-resize;
+    height: 260px;
+    margin: 0 15px;
+    overflow: hidden;
+    padding: 0;
+    position: relative;
+    width: 24px;
+}
+#svg_editor .jPicker div[class="Bar"] {
+    height: 256px;
+    width: 20px;
+}
+#svg_editor .jPicker .Map .Map1, #svg_editor .jPicker .Map .Map2, #svg_editor .jPicker .Map .Map3, #svg_editor .jPicker .Bar .Map1, #svg_editor .jPicker .Bar .Map2, #svg_editor .jPicker .Bar .Map3, #svg_editor .jPicker .Bar .Map4, #svg_editor .jPicker .Bar .Map5, #svg_editor .jPicker .Bar .Map6 {
+    background-color: transparent;
+    background-image: none;
+    display: block;
+    left: 0;
+    position: absolute;
+    top: 0;
+}
+#svg_editor .jPicker .Map .Map1, #svg_editor .jPicker .Map .Map2, #svg_editor .jPicker .Map .Map3 {
+    height: 2596px;
+    width: 256px;
+}
+#svg_editor .jPicker .Bar .Map1, #svg_editor .jPicker .Bar .Map2, #svg_editor .jPicker .Bar .Map3, #svg_editor .jPicker .Bar .Map4 {
+    height: 3896px;
+    width: 20px;
+}
+#svg_editor .jPicker .Bar .Map5, #svg_editor .jPicker .Bar .Map6 {
+    height: 256px;
+    width: 20px;
+}
+#svg_editor .jPicker .Map .Map1, #svg_editor .jPicker .Map .Map2, #svg_editor .jPicker .Bar .Map6 {
+    background-repeat: no-repeat;
+}
+#svg_editor .jPicker .Map .Map3, #svg_editor .jPicker .Bar .Map5 {
+    background-repeat: repeat;
+}
+#svg_editor .jPicker .Bar .Map1, #svg_editor .jPicker .Bar .Map2, #svg_editor .jPicker .Bar .Map3, #svg_editor .jPicker .Bar .Map4 {
+    background-repeat: repeat-x;
+}
+#svg_editor .jPicker .Map .Arrow {
+    display: block;
+    position: absolute;
+}
+#svg_editor .jPicker .Bar .Arrow {
+    display: block;
+    left: 0;
+    position: absolute;
+}
+#svg_editor .jPicker .Preview {
+    font-size: 9px;
+    text-align: center;
+}
+#svg_editor .jPicker .Preview div.bgt  {
+    height: 62px;
+    margin: 0 auto;
+    padding: 0;
+    width: 62px;
+}
+
+
+#svg_editor .jPicker .Preview div span {
+    border: 1px solid #000;
+    display: block;
+    height: 30px;
+    margin: 0 auto;
+    padding: 0;
+    width: 60px;
+}
+#svg_editor .jPicker .Preview .Active {
+    border-bottom-width: 0;
+}
+#svg_editor .jPicker .Preview .Current {
+    border-top-width: 0;
+    cursor: pointer;
+}
+#svg_editor .jPicker .Button {
+    text-align: center;
+    width: 115px;
+}
+#svg_editor .jPicker .Button input {
+    width: 100px;
+}
+
+#svg_editor .jPicker td.Radio {
+    margin: 0;
+    padding: 0;
+    width: 31px;
+}
+#svg_editor .jPicker td.Radio input {
+    margin: 0 5px 0 0;
+    padding: 0;
+}
+#svg_editor .jPicker td.Text {
+    font-size: 12px!important;
+    height: 22px;
+    margin: 0;
+    padding: 0;
+    text-align: left;
+    width: 70px;
+}
+#svg_editor .jPicker tr.Hex td.Text {
+    width: 100px;
+    color: #666;
+}
+
+#svg_editor .jPicker tr.Hex td.Text span {
+    width: 100px;
+    color: #333;
+}
+#svg_editor .jPicker td.Text input {
+    background-color: #fff;
+    border: 1px inset #aaa;
+    height: 15px;
+    margin: 0 0 0 5px;
+    text-align: left;
+    width: 30px;
+    color: #333;
+}
+
+#svg_editor #color_picker .jPicker tr.Hex td.Text input.Hex {
+    width: 50px;
+    display: inline-block;
+    float: none;
+}
+
+#svg_editor .jPicker tr.Hex td.Text input.AHex {
+    width: 20px;
+    display: none;
+}
+#svg_editor .jPicker .Grid {
+    text-align: center;
+    float: right;
+    width: 108px;
+}
+#svg_editor .jPicker .Grid span.QuickColor {
+    cursor: pointer;
+    display: inline-block;
+    height: 15px;
+    line-height: 15px;
+    margin: 0;
+    padding: 0;
+    width: 18px;
+}
+#svg_editor .jPicker td  {
+  vertical-align:  top;
+}
+#svg_editor .jPicker td.colorsquare  {
+  width:  275px;
+}
+
+#svg_editor .jPicker .prev_div  {
+  margin-top:  -15px;
+}
+
+#svg_editor .jPicker .actions {
+  position: absolute;
+  bottom: 20px;
+  left: 20px;
+  right: 20px;
+}
+
+#svg_editor .jPicker .actions .Ok{
+  position: absolute;
+  top: 0;
+  right: 0px;
+}
+
+#svg_editor .jPicker .actions .Cancel{
+  position: absolute;
+  top: 0;
+  left: 0px;
+}
+
+#svg_editor .jPicker .color_preview {
+  width: 62px;
+  margin: 0 auto;
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/jgraduate/css/jgraduate.css
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/jgraduate/css/jgraduate.css	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/jgraduate/css/jgraduate.css	(revision 29468)
@@ -0,0 +1,332 @@
+/* 
+ * jGraduate Default CSS
+ * 
+ * Copyright (c) 2010 Jeff Schiller
+ * http://blog.codedread.com/
+ *
+ * Copyright (c) 2010 Alexis Deveria
+ * http://a.deveria.com/
+ *
+ * Licensed under the Apache License Version 2
+ */
+
+h2.jGraduate_Title {
+  display: none;
+}
+
+.jGraduate_Picker {
+	position: absolute;
+	padding: 20px;
+}
+
+.jGraduate_tabs li {
+	display: inline-block;
+	padding: 5px 10px;
+	margin-right: 5px;
+	cursor: pointer;
+}
+
+li.jGraduate_tab_current {
+  background: #fff;
+  border-radius: 3px 3px 0 0;
+}
+
+.jGraduate_colPick {
+	display: none;
+}
+
+.jGraduate_gradPick {	
+	display: none;
+	overflow: visible;
+/*	position: relative;*/
+}
+
+.jGraduate_tabs {
+	position: relative;
+	background-color: #ddd;
+	padding: 10px 10px 0 10px;
+	margin: -20px -20px 20px -20px;
+	border-radius: 3px 3px 0 0;
+}
+
+div.jGraduate_Swatch {
+	float: left;
+	margin: 0 15px 0 0;
+}
+div.jGraduate_GradContainer {
+	border: solid #000 1px;
+	background-image: url(../images/map-opacity.png); 
+	background-position: 0px 0px;
+	height: 256px;
+	width: 256px;
+	position: relative;
+}
+
+div.jGraduate_GradContainer div.grad_coord {
+  background: rgba(0,0,0,0.8);
+  border: 2px solid white;
+  border-radius: 15px;
+  -moz-border-radius: 5px;
+  width: 14px;
+  height: 14px;
+  position: absolute;
+  margin: -7px -7px;
+  top: 0;
+  left: 0;
+  text-align: center;
+  font-size: 8px;
+  line-height: 14px;
+  color: white;
+  text-decoration: none;
+  cursor: pointer;
+  -moz-user-select: none;
+  -webkit-user-select: none;
+}
+
+.jGraduate_AlphaArrows {
+	position: absolute;
+	margin-top: -10px;
+	margin-left: 250.5px;
+}
+
+div.jGraduate_Opacity {
+	border: 2px inset #eee;
+	margin-top: 14px;
+	background-color: black;
+	background-image: url(../images/Maps.png);
+	background-position: 0px -2816px;
+	height: 20px;
+	cursor: ew-resize;
+}
+
+div.jGraduate_StopSlider {
+	margin: -10px 0 0 -10px;
+	width: 276px;
+	overflow: visible;
+	background: white;
+	height: 45px;
+	cursor: pointer;
+}
+
+div.jGraduate_StopSection {
+	width: 120px;
+	float: left;
+}
+
+div.jGraduate_StopSection.jGraduate_SpreadMethod {
+  display: none;
+}
+
+input.jGraduate_Ok, input.jGraduate_Cancel {
+	display: block;
+	width: 100px;
+}
+input.jGraduate_Ok {
+	margin: 0 0 5px 0;
+}
+
+.colorBox {
+	float: left;
+	height: 16px;
+	width: 16px;
+	border: 1px solid #808080;
+	cursor: pointer;
+	margin: 4px 4px 4px 30px;
+}
+
+.colorBox + label {
+	float: left;
+	margin-top: 7px;
+}
+
+label.jGraduate_Form_Heading {
+
+  color: #333;
+	padding: 2px;
+	font-weight: bold;
+	font-size: 13px;
+}
+
+div.jGraduate_Form_Section {
+	-moz-border-radius: 5px;
+	-webkit-border-radius: 5px;
+	padding: 15px 5px 5px 5px;
+	margin: 5px 2px;
+	width: 100px;
+	text-align: center;
+	overflow: auto;
+	background: #eee;
+}
+
+div.jGraduate_Form label {
+	padding: 0 2px;
+	color: #333;
+}
+
+div.jGraduate_StopSection input[type=text],
+div.jGraduate_Slider input[type=text] {
+	width: 33px;
+	color: #333;
+}
+
+div.jGraduate_LightBox {
+	position: fixed;
+	top: 0px;
+	left: 0px;
+	right: 0px;
+	bottom: 0px;
+	background-color: #000;
+	opacity: 0.5;
+	display: none;
+}
+
+div.jGraduate_stopPicker {
+  position: absolute;
+  display: none;
+  background: 
+  white;
+  padding: 20px;
+  border-radius: 3px;
+  width: 530px;
+  height: 300px;
+  box-shadow: 0 5px 25px 
+  black;
+}
+
+
+.jGraduate_gradPick {
+	width: 526px;
+}
+
+.jGraduate_gradPick div.jGraduate_Slider {
+	line-height: 160%
+}
+
+.jGraduate_gradPick div.jGraduate_Slider label:last-child {
+	position: absolute;
+	right: 10px;
+	top: 0;
+	color: #999;
+	font-weight: bold;
+}
+
+.jGraduate_gradPick div.jGraduate_Slider label:last-child input {
+  margin: 0 3px 0 0;
+  color: #333;
+}
+
+.jGraduate_gradPick .jGraduate_Form {
+	float: left;
+	width: 270px;
+	position: absolute;
+	left: 284px;
+	width: 266px;
+	height: 200px;
+	top: 195px;
+	margin: -3px 3px 0px 10px;
+	line-height: 200%;
+}
+
+.jGraduate_gradPick .jGraduate_Form label,
+.jGraduate_gradPick .jGraduate_Form input {
+  width: auto;
+  float: left;
+}
+
+.jGraduate_gradPick .jGraduate_Form.jGraduate_rg_field label, .jGraduate_gradPick .jGraduate_Form.jGraduate_rg_field input {
+width: auto;
+float: left;
+font-size: 11px;
+}
+
+.jGraduate_gradPick .jGraduate_Form.jGraduate_rg_field #color_picker_jGraduate_match_ctr {
+  float: none;
+}
+
+.jGraduate_gradPick .jGraduate_Form label {
+  clear: left;
+}
+
+.jGraduate_gradPick .jGraduate_Points {
+	position: static;
+	float: left;
+  margin: 0;
+  width: auto;
+	}
+
+.jGraduate_Colorblocks {
+	display: table;
+	border-spacing: 0 5px;
+}
+
+.jGraduate_colorblock {
+	display: table-row;
+}
+
+.jGraduate_Colorblocks .jGraduate_colorblock > * {
+	display: table-cell;
+	vertical-align: middle;
+	margin: 0;
+	float: none;
+}
+
+.jGraduate_gradPick .jGraduate_Form_Section {
+	padding-top: 9px;
+}
+
+
+.jGraduate_Slider {
+	text-align: center;
+	float: left;
+	width: 100%;
+  position: relative;
+  margin: 5px 0;
+}
+
+.jGraduate_Slider .jGraduate_Form_Section {
+	border: none;
+	width: 250px;
+	padding: 0 2px;
+	overflow: visible;
+}
+
+
+.jGraduate_Slider label.prelabel {
+	width: 40px;
+	text-align: left;
+}
+
+.jGraduate_SliderBar {
+	width: 140px;
+	float: left;
+	margin: 0 5px;
+	border:1px solid #BBB;
+	height:20px;
+	position: relative;
+}
+
+div.jGraduate_Slider input {
+	margin-top: 5px;
+}
+
+div.jGraduate_Slider img {
+	top: 0;
+	left: 0;
+	position: absolute;
+	cursor:ew-resize;
+}
+
+.jPicker .Button .Ok, .jGraduate_Picker .jGraduate_OkCancel .jGraduate_Ok  {
+  -webkit-appearance: none;
+	margin: 0;
+  position: absolute;
+  bottom: 5px;
+  right: 5px;
+}
+
+.jPicker .Button .Cancel, .jGraduate_Picker .jGraduate_OkCancel .jGraduate_Cancel {
+  margin: 0;
+  position: absolute;
+	bottom: 5px;
+	left: 5px;
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/jgraduate/jpicker.min.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/jgraduate/jpicker.min.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/jgraduate/jpicker.min.js	(revision 29468)
@@ -0,0 +1,2087 @@
+﻿/*
+ * jPicker 1.1.6
+ *
+ * jQuery Plugin for Photoshop style color picker
+ *
+ * Copyright (c) 2010 Christopher T. Tillman
+ * Digital Magic Productions, Inc. (http://www.digitalmagicpro.com/)
+ * MIT style license, FREE to use, alter, copy, sell, and especially ENHANCE
+ *
+ * Painstakingly ported from John Dyers' excellent work on his own color picker based on the Prototype framework.
+ *
+ * John Dyers' website: (http://johndyer.name)
+ * Color Picker page:   (http://johndyer.name/post/2007/09/PhotoShop-like-JavaScript-Color-Picker.aspx)
+ *
+ */
+(function($, version)
+{
+  Math.precision = function(value, precision)
+    {
+      if (precision === undefined) precision = 0;
+      return Math.round(value * Math.pow(10, precision)) / Math.pow(10, precision);
+    };
+  var Slider = // encapsulate slider functionality for the ColorMap and ColorBar - could be useful to use a jQuery UI draggable for this with certain extensions
+      function(bar, options)
+      {
+        var $this = this, // private properties, methods, and events - keep these variables and classes invisible to outside code
+          arrow = bar.find('img:first'), // the arrow image to drag
+          minX = 0,
+          maxX = 100,
+          rangeX = 100,
+          minY = 0,
+          maxY = 100,
+          rangeY = 100,
+          x = 0,
+          y = 0,
+          offset,
+          timeout,
+          changeEvents = new Array(),
+          fireChangeEvents =
+            function(context)
+            {
+              for (var i = 0; i < changeEvents.length; i++) changeEvents[i].call($this, $this, context);
+            },
+          mouseDown = // bind the mousedown to the bar not the arrow for quick snapping to the clicked location
+            function(e)
+            {
+              var off = bar.offset();
+              offset = { l: off.left | 0, t: off.top | 0 };
+              clearTimeout(timeout);
+              timeout = setTimeout( // using setTimeout for visual updates - once the style is updated the browser will re-render internally allowing the next Javascript to run
+                function()
+                {
+                  setValuesFromMousePosition.call($this, e);
+                }, 0);
+              // Bind mousemove and mouseup event to the document so it responds when dragged of of the bar - we will unbind these when on mouseup to save processing
+              $(document).bind('mousemove', mouseMove).bind('mouseup', mouseUp);
+              e.preventDefault(); // don't try to select anything or drag the image to the desktop
+            },
+          mouseMove = // set the values as the mouse moves
+            function(e)
+            {
+              clearTimeout(timeout);
+              timeout = setTimeout(
+                function()
+                {
+                  setValuesFromMousePosition.call($this, e);
+                }, 0);
+              e.stopPropagation();
+              e.preventDefault();
+              return false;
+            },
+          mouseUp = // unbind the document events - they aren't needed when not dragging
+            function(e)
+            {
+              $(document).unbind('mouseup', mouseUp).unbind('mousemove', mouseMove);
+              e.stopPropagation();
+              e.preventDefault();
+              return false;
+            },
+          setValuesFromMousePosition = // calculate mouse position and set value within the current range
+            function(e)
+            {
+              var locX = e.pageX - offset.l,
+                  locY = e.pageY - offset.t,
+                  barW = bar.w, // local copies for YUI compressor
+                  barH = bar.h;
+              // keep the arrow within the bounds of the bar
+              if (locX < 0) locX = 0;
+              else if (locX > barW) locX = barW;
+              if (locY < 0) locY = 0;
+              else if (locY > barH) locY = barH;
+              val.call($this, 'xy', { x: ((locX / barW) * rangeX) + minX, y: ((locY / barH) * rangeY) + minY });
+            },
+          draw =
+            function()
+            {
+              var arrowOffsetX = 0,
+                arrowOffsetY = 0,
+                barW = bar.w,
+                barH = bar.h,
+                arrowW = arrow.w,
+                arrowH = arrow.h;
+              setTimeout(
+                function()
+                {
+                  if (rangeX > 0) // range is greater than zero
+                  {
+                    // constrain to bounds
+                    if (x == maxX) arrowOffsetX = barW;
+                    else arrowOffsetX = ((x / rangeX) * barW) | 0;
+                  }
+                  if (rangeY > 0) // range is greater than zero
+                  {
+                    // constrain to bounds
+                    if (y == maxY) arrowOffsetY = barH;
+                    else arrowOffsetY = ((y / rangeY) * barH) | 0;
+                  }
+                  // if arrow width is greater than bar width, center arrow and prevent horizontal dragging
+                  if (arrowW >= barW) arrowOffsetX = (barW >> 1) - (arrowW >> 1); // number >> 1 - superfast bitwise divide by two and truncate (move bits over one bit discarding lowest)
+                  else arrowOffsetX -= arrowW >> 1;
+                  // if arrow height is greater than bar height, center arrow and prevent vertical dragging
+                  if (arrowH >= barH) arrowOffsetY = (barH >> 1) - (arrowH >> 1);
+                  else arrowOffsetY -= arrowH >> 1;
+                  // set the arrow position based on these offsets
+                  arrow.css({ left: arrowOffsetX + 'px', top: arrowOffsetY + 'px' });
+                }, 0);
+            },
+          val =
+            function(name, value, context)
+            {
+              var set = value !== undefined;
+              if (!set)
+              {
+                if (name === undefined || name == null) name = 'xy';
+                switch (name.toLowerCase())
+                {
+                  case 'x': return x;
+                  case 'y': return y;
+                  case 'xy':
+                  default: return { x: x, y: y };
+                }
+              }
+              if (context != null && context == $this) return;
+              var changed = false,
+                  newX,
+                  newY;
+              if (name == null) name = 'xy';
+              switch (name.toLowerCase())
+              {
+                case 'x':
+                  newX = value && (value.x && value.x | 0 || value | 0) || 0;
+                  break;
+                case 'y':
+                  newY = value && (value.y && value.y | 0 || value | 0) || 0;
+                  break;
+                case 'xy':
+                default:
+                  newX = value && value.x && value.x | 0 || 0;
+                  newY = value && value.y && value.y | 0 || 0;
+                  break;
+              }
+              if (newX != null)
+              {
+                if (newX < minX) newX = minX;
+                else if (newX > maxX) newX = maxX;
+                if (x != newX)
+                {
+                  x = newX;
+                  changed = true;
+                }
+              }
+              if (newY != null)
+              {
+                if (newY < minY) newY = minY;
+                else if (newY > maxY) newY = maxY;
+                if (y != newY)
+                {
+                  y = newY;
+                  changed = true;
+                }
+              }
+              changed && fireChangeEvents.call($this, context || $this);
+            },
+          range =
+            function (name, value)
+            {
+              var set = value !== undefined;
+              if (!set)
+              {
+                if (name === undefined || name == null) name = 'all';
+                switch (name.toLowerCase())
+                {
+                  case 'minx': return minX;
+                  case 'maxx': return maxX;
+                  case 'rangex': return { minX: minX, maxX: maxX, rangeX: rangeX };
+                  case 'miny': return minY;
+                  case 'maxy': return maxY;
+                  case 'rangey': return { minY: minY, maxY: maxY, rangeY: rangeY };
+                  case 'all':
+                  default: return { minX: minX, maxX: maxX, rangeX: rangeX, minY: minY, maxY: maxY, rangeY: rangeY };
+                }
+              }
+              var changed = false,
+                  newMinX,
+                  newMaxX,
+                  newMinY,
+                  newMaxY;
+              if (name == null) name = 'all';
+              switch (name.toLowerCase())
+              {
+                case 'minx':
+                  newMinX = value && (value.minX && value.minX | 0 || value | 0) || 0;
+                  break;
+                case 'maxx':
+                  newMaxX = value && (value.maxX && value.maxX | 0 || value | 0) || 0;
+                  break;
+                case 'rangex':
+                  newMinX = value && value.minX && value.minX | 0 || 0;
+                  newMaxX = value && value.maxX && value.maxX | 0 || 0;
+                  break;
+                case 'miny':
+                  newMinY = value && (value.minY && value.minY | 0 || value | 0) || 0;
+                  break;
+                case 'maxy':
+                  newMaxY = value && (value.maxY && value.maxY | 0 || value | 0) || 0;
+                  break;
+                case 'rangey':
+                  newMinY = value && value.minY && value.minY | 0 || 0;
+                  newMaxY = value && value.maxY && value.maxY | 0 || 0;
+                  break;
+                case 'all':
+                default:
+                  newMinX = value && value.minX && value.minX | 0 || 0;
+                  newMaxX = value && value.maxX && value.maxX | 0 || 0;
+                  newMinY = value && value.minY && value.minY | 0 || 0;
+                  newMaxY = value && value.maxY && value.maxY | 0 || 0;
+                  break;
+              }
+              if (newMinX != null && minX != newMinX)
+              {
+                minX = newMinX;
+                rangeX = maxX - minX;
+              }
+              if (newMaxX != null && maxX != newMaxX)
+              {
+                maxX = newMaxX;
+                rangeX = maxX - minX;
+              }
+              if (newMinY != null && minY != newMinY)
+              {
+                minY = newMinY;
+                rangeY = maxY - minY;
+              }
+              if (newMaxY != null && maxY != newMaxY)
+              {
+                maxY = newMaxY;
+                rangeY = maxY - minY;
+              }
+            },
+          bind =
+            function (callback)
+            {
+              if ($.isFunction(callback)) changeEvents.push(callback);
+            },
+          unbind =
+            function (callback)
+            {
+              if (!$.isFunction(callback)) return;
+              var i;
+              while ((i = $.inArray(callback, changeEvents)) != -1) changeEvents.splice(i, 1);
+            },
+          destroy =
+            function()
+            {
+              // unbind all possible events and null objects
+              $(document).unbind('mouseup', mouseUp).unbind('mousemove', mouseMove);
+              bar.unbind('mousedown', mouseDown);
+              bar = null;
+              arrow = null;
+              changeEvents = null;
+            };
+        $.extend(true, $this, // public properties, methods, and event bindings - these we need to access from other controls
+          {
+            val: val,
+            range: range,
+            bind: bind,
+            unbind: unbind,
+            destroy: destroy
+          });
+        // initialize this control
+        arrow.src = options.arrow && options.arrow.image;
+        arrow.w = options.arrow && options.arrow.width || arrow.width();
+        arrow.h = options.arrow && options.arrow.height || arrow.height();
+        bar.w = options.map && options.map.width || bar.width();
+        bar.h = options.map && options.map.height || bar.height();
+        // bind mousedown event
+        bar.bind('mousedown', mouseDown);
+        bind.call($this, draw);
+      },
+    ColorValuePicker = // controls for all the input elements for the typing in color values
+      function(picker, color, bindedHex, alphaPrecision)
+      {
+        var $this = this, // private properties and methods
+          inputs = picker.find('td.Text input'),
+          red = inputs.eq(3),
+          green = inputs.eq(4),
+          blue = inputs.eq(5),
+          alpha = inputs.length > 7 ? inputs.eq(6) : null,
+          hue = inputs.eq(0),
+          saturation = inputs.eq(1),
+          value = inputs.eq(2),
+          hex = inputs.eq(inputs.length > 7 ? 7 : 6),
+          ahex = inputs.length > 7 ? inputs.eq(8) : null,
+          keyDown = // input box key down - use arrows to alter color
+            function(e)
+            {
+              if (e.target.value == '' && e.target != hex.get(0) && (bindedHex != null && e.target != bindedHex.get(0) || bindedHex == null)) return;
+              if (!validateKey(e)) return e;
+              switch (e.target)
+              {
+                case red.get(0):
+                  switch (e.keyCode)
+                  {
+                    case 38:
+                      red.val(setValueInRange.call($this, (red.val() << 0) + 1, 0, 255));
+                      color.val('r', red.val(), e.target);
+                      return false;
+                    case 40:
+                      red.val(setValueInRange.call($this, (red.val() << 0) - 1, 0, 255));
+                      color.val('r', red.val(), e.target);
+                      return false;
+                  }
+                  break;
+                case green.get(0):
+                  switch (e.keyCode)
+                  {
+                    case 38:
+                      green.val(setValueInRange.call($this, (green.val() << 0) + 1, 0, 255));
+                      color.val('g', green.val(), e.target);
+                      return false;
+                    case 40:
+                      green.val(setValueInRange.call($this, (green.val() << 0) - 1, 0, 255));
+                      color.val('g', green.val(), e.target);
+                      return false;
+                  }
+                  break;
+                case blue.get(0):
+                  switch (e.keyCode)
+                  {
+                    case 38:
+                      blue.val(setValueInRange.call($this, (blue.val() << 0) + 1, 0, 255));
+                      color.val('b', blue.val(), e.target);
+                      return false;
+                    case 40:
+                      blue.val(setValueInRange.call($this, (blue.val() << 0) - 1, 0, 255));
+                      color.val('b', blue.val(), e.target);
+                      return false;
+                  }
+                  break;
+                case alpha && alpha.get(0):
+                  switch (e.keyCode)
+                  {
+                    case 38:
+                      alpha.val(setValueInRange.call($this, parseFloat(alpha.val()) + 1, 0, 100));
+                      color.val('a', Math.precision((alpha.val() * 255) / 100, alphaPrecision), e.target);
+                      return false;
+                    case 40:
+                      alpha.val(setValueInRange.call($this, parseFloat(alpha.val()) - 1, 0, 100));
+                      color.val('a', Math.precision((alpha.val() * 255) / 100, alphaPrecision), e.target);
+                      return false;
+                  }
+                  break;
+                case hue.get(0):
+                  switch (e.keyCode)
+                  {
+                    case 38:
+                      hue.val(setValueInRange.call($this, (hue.val() << 0) + 1, 0, 360));
+                      color.val('h', hue.val(), e.target);
+                      return false;
+                    case 40:
+                      hue.val(setValueInRange.call($this, (hue.val() << 0) - 1, 0, 360));
+                      color.val('h', hue.val(), e.target);
+                      return false;
+                  }
+                  break;
+                case saturation.get(0):
+                  switch (e.keyCode)
+                  {
+                    case 38:
+                      saturation.val(setValueInRange.call($this, (saturation.val() << 0) + 1, 0, 100));
+                      color.val('s', saturation.val(), e.target);
+                      return false;
+                    case 40:
+                      saturation.val(setValueInRange.call($this, (saturation.val() << 0) - 1, 0, 100));
+                      color.val('s', saturation.val(), e.target);
+                      return false;
+                  }
+                  break;
+                case value.get(0):
+                  switch (e.keyCode)
+                  {
+                    case 38:
+                      value.val(setValueInRange.call($this, (value.val() << 0) + 1, 0, 100));
+                      color.val('v', value.val(), e.target);
+                      return false;
+                    case 40:
+                      value.val(setValueInRange.call($this, (value.val() << 0) - 1, 0, 100));
+                      color.val('v', value.val(), e.target);
+                      return false;
+                  }
+                  break;
+              }
+            },
+          keyUp = // input box key up - validate value and set color
+            function(e)
+            {
+              if (e.target.value == '' && e.target != hex.get(0) && (bindedHex != null && e.target != bindedHex.get(0) || bindedHex == null)) return;
+              if (!validateKey(e)) return e;
+              switch (e.target)
+              {
+                case red.get(0):
+                  red.val(setValueInRange.call($this, red.val(), 0, 255));
+                  color.val('r', red.val(), e.target);
+                  break;
+                case green.get(0):
+                  green.val(setValueInRange.call($this, green.val(), 0, 255));
+                  color.val('g', green.val(), e.target);
+                  break;
+                case blue.get(0):
+                  blue.val(setValueInRange.call($this, blue.val(), 0, 255));
+                  color.val('b', blue.val(), e.target);
+                  break;
+                case alpha && alpha.get(0):
+                  alpha.val(setValueInRange.call($this, alpha.val(), 0, 100));
+                  color.val('a', Math.precision((alpha.val() * 255) / 100, alphaPrecision), e.target);
+                  break;
+                case hue.get(0):
+                  hue.val(setValueInRange.call($this, hue.val(), 0, 360));
+                  color.val('h', hue.val(), e.target);
+                  break;
+                case saturation.get(0):
+                  saturation.val(setValueInRange.call($this, saturation.val(), 0, 100));
+                  color.val('s', saturation.val(), e.target);
+                  break;
+                case value.get(0):
+                  value.val(setValueInRange.call($this, value.val(), 0, 100));
+                  color.val('v', value.val(), e.target);
+                  break;
+                case hex.get(0):
+                  hex.val(hex.val().replace(/[^a-fA-F0-9]/g, '').toLowerCase().substring(0, 6));
+                  bindedHex && bindedHex.val(hex.val());
+                  color.val('hex', hex.val() != '' ? hex.val() : null, e.target);
+                  break;
+                case bindedHex && bindedHex.get(0):
+                  bindedHex.val(bindedHex.val().replace(/[^a-fA-F0-9]/g, '').toLowerCase().substring(0, 6));
+                  hex.val(bindedHex.val());
+                  color.val('hex', bindedHex.val() != '' ? bindedHex.val() : null, e.target);
+                  break;
+                case ahex && ahex.get(0):
+                  ahex.val(ahex.val().replace(/[^a-fA-F0-9]/g, '').toLowerCase().substring(0, 2));
+                  color.val('a', ahex.val() != null ? parseInt(ahex.val(), 16) : null, e.target);
+                  break;
+              }
+            },
+          blur = // input box blur - reset to original if value empty
+            function(e)
+            {
+              if (color.val() != null)
+              {
+                switch (e.target)
+                {
+                  case red.get(0): red.val(color.val('r')); break;
+                  case green.get(0): green.val(color.val('g')); break;
+                  case blue.get(0): blue.val(color.val('b')); break;
+                  case alpha && alpha.get(0): alpha.val(Math.precision((color.val('a') * 100) / 255, alphaPrecision)); break;
+                  case hue.get(0): hue.val(color.val('h')); break;
+                  case saturation.get(0): saturation.val(color.val('s')); break;
+                  case value.get(0): value.val(color.val('v')); break;
+                  case hex.get(0):
+                  case bindedHex && bindedHex.get(0):
+                    hex.val(color.val('hex'));
+                    bindedHex && bindedHex.val(color.val('hex'));
+                    break;
+                  case ahex && ahex.get(0): ahex.val(color.val('ahex').substring(6)); break;
+                }
+              }
+            },
+          validateKey = // validate key
+            function(e)
+            {
+              switch(e.keyCode)
+              {
+                case 9:
+                case 16:
+                case 29:
+                case 37:
+                case 39:
+                  return false;
+                case 'c'.charCodeAt():
+                case 'v'.charCodeAt():
+                  if (e.ctrlKey) return false;
+              }
+              return true;
+            },
+          setValueInRange = // constrain value within range
+            function(value, min, max)
+            {
+              if (value == '' || isNaN(value)) return min;
+              if (value > max) return max;
+              if (value < min) return min;
+              return value;
+            },
+          colorChanged =
+            function(ui, context)
+            {
+              var all = ui.val('all');
+              if (context != red.get(0)) red.val(all != null ? all.r : '');
+              if (context != green.get(0)) green.val(all != null ? all.g : '');
+              if (context != blue.get(0)) blue.val(all != null ? all.b : '');
+              if (alpha && context != alpha.get(0)) alpha.val(all != null ? Math.precision((all.a * 100) / 255, alphaPrecision) : '');
+              if (context != hue.get(0)) hue.val(all != null ? all.h : '');
+              if (context != saturation.get(0)) saturation.val(all != null ? all.s : '');
+              if (context != value.get(0)) value.val(all != null ? all.v : '');
+              if (context != hex.get(0) && (bindedHex && context != bindedHex.get(0) || !bindedHex)) hex.val(all != null ? all.hex : '');
+              if (bindedHex && context != bindedHex.get(0) && context != hex.get(0)) bindedHex.val(all != null ? all.hex : '');
+              if (ahex && context != ahex.get(0)) ahex.val(all != null ? all.ahex.substring(6) : '');
+            },
+          destroy =
+            function()
+            {
+              // unbind all events and null objects
+              red.add(green).add(blue).add(alpha).add(hue).add(saturation).add(value).add(hex).add(bindedHex).add(ahex).unbind('keyup', keyUp).unbind('blur', blur);
+              red.add(green).add(blue).add(alpha).add(hue).add(saturation).add(value).unbind('keydown', keyDown);
+              color.unbind(colorChanged);
+              red = null;
+              green = null;
+              blue = null;
+              alpha = null;
+              hue = null;
+              saturation = null;
+              value = null;
+              hex = null;
+              ahex = null;
+            };
+        $.extend(true, $this, // public properties and methods
+          {
+            destroy: destroy
+          });
+        red.add(green).add(blue).add(alpha).add(hue).add(saturation).add(value).add(hex).add(bindedHex).add(ahex).bind('keyup', keyUp).bind('blur', blur);
+        red.add(green).add(blue).add(alpha).add(hue).add(saturation).add(value).bind('keydown', keyDown);
+        color.bind(colorChanged);
+      };
+  $.jPicker =
+    {
+      List: [], // array holding references to each active instance of the control
+      Color: // color object - we will be able to assign by any color space type or retrieve any color space info
+             // we want this public so we can optionally assign new color objects to initial values using inputs other than a string hex value (also supported)
+        function(init)
+        {
+          var $this = this,
+            r,
+            g,
+            b,
+            a,
+            h,
+            s,
+            v,
+            changeEvents = new Array(),
+            fireChangeEvents = 
+              function(context)
+              {
+                for (var i = 0; i < changeEvents.length; i++) changeEvents[i].call($this, $this, context);
+              },
+            val =
+              function(name, value, context)
+              {
+                var set = value !== undefined;
+                if (!set)
+                {
+                  if (name === undefined || name == null || name == '') name = 'all';
+                  if (r == null) return null;
+                  switch (name.toLowerCase())
+                  {
+                    case 'ahex': return ColorMethods.rgbaToHex({ r: r, g: g, b: b, a: a });
+                    case 'hex': return val('ahex').substring(0, 6);
+                    case 'all': return { r: r, g: g, b: b, a: a, h: h, s: s, v: v, hex: val.call($this, 'hex'), ahex: val.call($this, 'ahex') };
+                    default:
+                      var ret={};
+                      for (var i = 0; i < name.length; i++)
+                      {
+                        switch (name.charAt(i))
+                        {
+                          case 'r':
+                            if (name.length == 1) ret = r;
+                            else ret.r = r;
+                            break;
+                          case 'g':
+                            if (name.length == 1) ret = g;
+                            else ret.g = g;
+                            break;
+                          case 'b':
+                            if (name.length == 1) ret = b;
+                            else ret.b = b;
+                            break;
+                          case 'a':
+                            if (name.length == 1) ret = a;
+                            else ret.a = a;
+                            break;
+                          case 'h':
+                            if (name.length == 1) ret = h;
+                            else ret.h = h;
+                            break;
+                          case 's':
+                            if (name.length == 1) ret = s;
+                            else ret.s = s;
+                            break;
+                          case 'v':
+                            if (name.length == 1) ret = v;
+                            else ret.v = v;
+                            break;
+                        }
+                      }
+                      return ret == {} ? val.call($this, 'all') : ret;
+                      break;
+                  }
+                }
+                if (context != null && context == $this) return;
+                var changed = false;
+                if (name == null) name = '';
+                if (value == null)
+                {
+                  if (r != null)
+                  {
+                    r = null;
+                    changed = true;
+                  }
+                  if (g != null)
+                  {
+                    g = null;
+                    changed = true;
+                  }
+                  if (b != null)
+                  {
+                    b = null;
+                    changed = true;
+                  }
+                  if (a != null)
+                  {
+                    a = null;
+                    changed = true;
+                  }
+                  if (h != null)
+                  {
+                    h = null;
+                    changed = true;
+                  }
+                  if (s != null)
+                  {
+                    s = null;
+                    changed = true;
+                  }
+                  if (v != null)
+                  {
+                    v = null;
+                    changed = true;
+                  }
+                  changed && fireChangeEvents.call($this, context || $this);
+                  return;
+                }
+                switch (name.toLowerCase())
+                {
+                  case 'ahex':
+                  case 'hex':
+                    var ret = ColorMethods.hexToRgba(value && (value.ahex || value.hex) || value || '00000000');
+                    val.call($this, 'rgba', { r: ret.r, g: ret.g, b: ret.b, a: name == 'ahex' ? ret.a : a != null ? a : 255 }, context);
+                    break;
+                  default:
+                    if (value && (value.ahex != null || value.hex != null))
+                    {
+                      val.call($this, 'ahex', value.ahex || value.hex || '00000000', context);
+                      return;
+                    }
+                    var newV = {}, rgb = false, hsv = false;
+                    if (value.r !== undefined && !name.indexOf('r') == -1) name += 'r';
+                    if (value.g !== undefined && !name.indexOf('g') == -1) name += 'g';
+                    if (value.b !== undefined && !name.indexOf('b') == -1) name += 'b';
+                    if (value.a !== undefined && !name.indexOf('a') == -1) name += 'a';
+                    if (value.h !== undefined && !name.indexOf('h') == -1) name += 'h';
+                    if (value.s !== undefined && !name.indexOf('s') == -1) name += 's';
+                    if (value.v !== undefined && !name.indexOf('v') == -1) name += 'v';
+                    for (var i = 0; i < name.length; i++)
+                    {
+                      switch (name.charAt(i))
+                      {
+                        case 'r':
+                          if (hsv) continue;
+                          rgb = true;
+                          newV.r = value && value.r && value.r | 0 || value && value | 0 || 0;
+                          if (newV.r < 0) newV.r = 0;
+                          else if (newV.r > 255) newV.r = 255;
+                          if (r != newV.r)
+                          {
+                            r = newV.r;
+                            changed = true;
+                          }
+                          break;
+                        case 'g':
+                          if (hsv) continue;
+                          rgb = true;
+                          newV.g = value && value.g && value.g | 0 || value && value | 0 || 0;
+                          if (newV.g < 0) newV.g = 0;
+                          else if (newV.g > 255) newV.g = 255;
+                          if (g != newV.g)
+                          {
+                            g = newV.g;
+                            changed = true;
+                          }
+                          break;
+                        case 'b':
+                          if (hsv) continue;
+                          rgb = true;
+                          newV.b = value && value.b && value.b | 0 || value && value | 0 || 0;
+                          if (newV.b < 0) newV.b = 0;
+                          else if (newV.b > 255) newV.b = 255;
+                          if (b != newV.b)
+                          {
+                            b = newV.b;
+                            changed = true;
+                          }
+                          break;
+                        case 'a':
+                          newV.a = value && value.a != null ? value.a | 0 : value != null ? value | 0 : 255;
+                          if (newV.a < 0) newV.a = 0;
+                          else if (newV.a > 255) newV.a = 255;
+                          if (a != newV.a)
+                          {
+                            a = newV.a;
+                            changed = true;
+                          }
+                          break;
+                        case 'h':
+                          if (rgb) continue;
+                          hsv = true;
+                          newV.h = value && value.h && value.h | 0 || value && value | 0 || 0;
+                          if (newV.h < 0) newV.h = 0;
+                          else if (newV.h > 360) newV.h = 360;
+                          if (h != newV.h)
+                          {
+                            h = newV.h;
+                            changed = true;
+                          }
+                          break;
+                        case 's':
+                          if (rgb) continue;
+                          hsv = true;
+                          newV.s = value && value.s != null ? value.s | 0 : value != null ? value | 0 : 100;
+                          if (newV.s < 0) newV.s = 0;
+                          else if (newV.s > 100) newV.s = 100;
+                          if (s != newV.s)
+                          {
+                            s = newV.s;
+                            changed = true;
+                          }
+                          break;
+                        case 'v':
+                          if (rgb) continue;
+                          hsv = true;
+                          newV.v = value && value.v != null ? value.v | 0 : value != null ? value | 0 : 100;
+                          if (newV.v < 0) newV.v = 0;
+                          else if (newV.v > 100) newV.v = 100;
+                          if (v != newV.v)
+                          {
+                            v = newV.v;
+                            changed = true;
+                          }
+                          break;
+                      }
+                    }
+                    if (changed)
+                    {
+                      if (rgb)
+                      {
+                        r = r || 0;
+                        g = g || 0;
+                        b = b || 0;
+                        var ret = ColorMethods.rgbToHsv({ r: r, g: g, b: b });
+                        h = ret.h;
+                        s = ret.s;
+                        v = ret.v;
+                      }
+                      else if (hsv)
+                      {
+                        h = h || 0;
+                        s = s != null ? s : 100;
+                        v = v != null ? v : 100;
+                        var ret = ColorMethods.hsvToRgb({ h: h, s: s, v: v });
+                        r = ret.r;
+                        g = ret.g;
+                        b = ret.b;
+                      }
+                      a = a != null ? a : 255;
+                      fireChangeEvents.call($this, context || $this);
+                    }
+                    break;
+                }
+              },
+            bind =
+              function(callback)
+              {
+                if ($.isFunction(callback)) changeEvents.push(callback);
+              },
+            unbind =
+              function(callback)
+              {
+                if (!$.isFunction(callback)) return;
+                var i;
+                while ((i = $.inArray(callback, changeEvents)) != -1) changeEvents.splice(i, 1);
+              },
+            destroy =
+              function()
+              {
+                changeEvents = null;
+              }
+          $.extend(true, $this, // public properties and methods
+            {
+              val: val,
+              bind: bind,
+              unbind: unbind,
+              destroy: destroy
+            });
+          if (init)
+          {
+            if (init.ahex != null) val('ahex', init);
+            else if (init.hex != null) val((init.a != null ? 'a' : '') + 'hex', init.a != null ? { ahex: init.hex + ColorMethods.intToHex(init.a) } : init);
+            else if (init.r != null && init.g != null && init.b != null) val('rgb' + (init.a != null ? 'a' : ''), init);
+            else if (init.h != null && init.s != null && init.v != null) val('hsv' + (init.a != null ? 'a' : ''), init);
+          }
+        },
+      ColorMethods: // color conversion methods  - make public to give use to external scripts
+        {
+          hexToRgba:
+            function(hex)
+            {
+              hex = this.validateHex(hex);
+              if (hex == '') return { r: null, g: null, b: null, a: null };
+              var r = '00', g = '00', b = '00', a = '255';
+              if (hex.length == 6) hex += 'ff';
+              if (hex.length > 6)
+              {
+                r = hex.substring(0, 2);
+                g = hex.substring(2, 4);
+                b = hex.substring(4, 6);
+                a = hex.substring(6, hex.length);
+              }
+              else
+              {
+                if (hex.length > 4)
+                {
+                  r = hex.substring(4, hex.length);
+                  hex = hex.substring(0, 4);
+                }
+                if (hex.length > 2)
+                {
+                  g = hex.substring(2, hex.length);
+                  hex = hex.substring(0, 2);
+                }
+                if (hex.length > 0) b = hex.substring(0, hex.length);
+              }
+              return { r: this.hexToInt(r), g: this.hexToInt(g), b: this.hexToInt(b), a: this.hexToInt(a) };
+            },
+          validateHex:
+            function(hex)
+            {
+              if (typeof hex == "object") return '';
+              hex = hex.toLowerCase().replace(/[^a-f0-9]/g, '');
+              if (hex.length > 8) hex = hex.substring(0, 8);
+              return hex;
+            },
+          rgbaToHex:
+            function(rgba)
+            {
+              return this.intToHex(rgba.r) + this.intToHex(rgba.g) + this.intToHex(rgba.b) + this.intToHex(rgba.a);
+            },
+          intToHex:
+            function(dec)
+            {
+              var result = (dec | 0).toString(16);
+              if (result.length == 1) result = ('0' + result);
+              return result.toLowerCase();
+            },
+          hexToInt:
+            function(hex)
+            {
+              return parseInt(hex, 16);
+            },
+          rgbToHsv:
+            function(rgb)
+            {
+              var r = rgb.r / 255, g = rgb.g / 255, b = rgb.b / 255, hsv = { h: 0, s: 0, v: 0 }, min = 0, max = 0, delta;
+              if (r >= g && r >= b)
+              {
+                max = r;
+                min = g > b ? b : g;
+              }
+              else if (g >= b && g >= r)
+              {
+                max = g;
+                min = r > b ? b : r;
+              }
+              else
+              {
+                max = b;
+                min = g > r ? r : g;
+              }
+              hsv.v = max;
+              hsv.s = max ? (max - min) / max : 0;
+              if (!hsv.s) hsv.h = 0;
+              else
+              {
+                delta = max - min;
+                if (r == max) hsv.h = (g - b) / delta;
+                else if (g == max) hsv.h = 2 + (b - r) / delta;
+                else hsv.h = 4 + (r - g) / delta;
+                hsv.h = parseInt(hsv.h * 60);
+                if (hsv.h < 0) hsv.h += 360;
+              }
+              hsv.s = (hsv.s * 100) | 0;
+              hsv.v = (hsv.v * 100) | 0;
+              return hsv;
+            },
+          hsvToRgb:
+            function(hsv)
+            {
+              var rgb = { r: 0, g: 0, b: 0, a: 100 }, h = hsv.h, s = hsv.s, v = hsv.v;
+              if (s == 0)
+              {
+                if (v == 0) rgb.r = rgb.g = rgb.b = 0;
+                else rgb.r = rgb.g = rgb.b = (v * 255 / 100) | 0;
+              }
+              else
+              {
+                if (h == 360) h = 0;
+                h /= 60;
+                s = s / 100;
+                v = v / 100;
+                var i = h | 0,
+                    f = h - i,
+                    p = v * (1 - s),
+                    q = v * (1 - (s * f)),
+                    t = v * (1 - (s * (1 - f)));
+                switch (i)
+                {
+                  case 0:
+                    rgb.r = v;
+                    rgb.g = t;
+                    rgb.b = p;
+                    break;
+                  case 1:
+                    rgb.r = q;
+                    rgb.g = v;
+                    rgb.b = p;
+                    break;
+                  case 2:
+                    rgb.r = p;
+                    rgb.g = v;
+                    rgb.b = t;
+                    break;
+                  case 3:
+                    rgb.r = p;
+                    rgb.g = q;
+                    rgb.b = v;
+                    break;
+                  case 4:
+                    rgb.r = t;
+                    rgb.g = p;
+                    rgb.b = v;
+                    break;
+                  case 5:
+                    rgb.r = v;
+                    rgb.g = p;
+                    rgb.b = q;
+                    break;
+                }
+                rgb.r = (rgb.r * 255) | 0;
+                rgb.g = (rgb.g * 255) | 0;
+                rgb.b = (rgb.b * 255) | 0;
+              }
+              return rgb;
+            }
+        }
+    };
+  var Color = $.jPicker.Color, List = $.jPicker.List, ColorMethods = $.jPicker.ColorMethods; // local copies for YUI compressor
+  $.fn.jPicker =
+    function(options)
+    {
+      var $arguments = arguments;
+      return this.each(
+        function()
+        {
+          var $this = this, settings = $.extend(true, {}, $.fn.jPicker.defaults, options); // local copies for YUI compressor
+          if ($($this).get(0).nodeName.toLowerCase() == 'input') // Add color picker icon if binding to an input element and bind the events to the input
+          {
+            $.extend(true, settings,
+              {
+                window:
+                {
+                  bindToInput: true,
+                  expandable: true,
+                  input: $($this)
+                }
+              });
+            if($($this).val()=='')
+            {
+              settings.color.active = new Color({ hex: null });
+              settings.color.current = new Color({ hex: null });
+            }
+            else if (ColorMethods.validateHex($($this).val()))
+            {
+              settings.color.active = new Color({ hex: $($this).val(), a: settings.color.active.val('a') });
+              settings.color.current = new Color({ hex: $($this).val(), a: settings.color.active.val('a') });
+            }
+          }
+          if (settings.window.expandable)
+            $($this).after('<span class="jPicker"><span class="Icon"><span class="Color">&nbsp;</span><span class="Alpha">&nbsp;</span><span class="Image" title="Click To Open Color Picker">&nbsp;</span><span class="Container">&nbsp;</span></span></span>');
+          else settings.window.liveUpdate = false; // Basic control binding for inline use - You will need to override the liveCallback or commitCallback function to retrieve results
+          var isLessThanIE7 = parseFloat(navigator.appVersion.split('MSIE')[1]) < 7 && document.body.filters, // needed to run the AlphaImageLoader function for IE6
+            container = null,
+            colorMapDiv = null,
+            colorBarDiv = null,
+            colorMapL1 = null, // different layers of colorMap and colorBar
+            colorMapL2 = null,
+            colorMapL3 = null,
+            colorBarL1 = null,
+            colorBarL2 = null,
+            colorBarL3 = null,
+            colorBarL4 = null,
+            colorBarL5 = null,
+            colorBarL6 = null,
+            colorMap = null, // color maps
+            colorBar = null,
+            colorPicker = null,
+            elementStartX = null, // Used to record the starting css positions for dragging the control
+            elementStartY = null,
+            pageStartX = null, // Used to record the mousedown coordinates for dragging the control
+            pageStartY = null,
+            activePreview = null, // color boxes above the radio buttons
+            currentPreview = null,
+            okButton = null,
+            cancelButton = null,
+            grid = null, // preset colors grid
+            iconColor = null, // iconColor for popup icon
+            iconAlpha = null, // iconAlpha for popup icon
+            iconImage = null, // iconImage popup icon
+            moveBar = null, // drag bar
+            setColorMode = // set color mode and update visuals for the new color mode
+              function(colorMode)
+              {
+                var active = color.active, // local copies for YUI compressor
+                  clientPath = images.clientPath,
+                  hex = active.val('hex'),
+                  rgbMap,
+                  rgbBar;
+                settings.color.mode = colorMode;
+                switch (colorMode)
+                {
+                  case 'h':
+                    setTimeout(
+                      function()
+                      {
+                        setBG.call($this, colorMapDiv, 'transparent');
+                        setImgLoc.call($this, colorMapL1, 0);
+                        setAlpha.call($this, colorMapL1, 100);
+                        setImgLoc.call($this, colorMapL2, 260);
+                        setAlpha.call($this, colorMapL2, 100);
+                        setBG.call($this, colorBarDiv, 'transparent');
+                        setImgLoc.call($this, colorBarL1, 0);
+                        setAlpha.call($this, colorBarL1, 100);
+                        setImgLoc.call($this, colorBarL2, 260);
+                        setAlpha.call($this, colorBarL2, 100);
+                        setImgLoc.call($this, colorBarL3, 260);
+                        setAlpha.call($this, colorBarL3, 100);
+                        setImgLoc.call($this, colorBarL4, 260);
+                        setAlpha.call($this, colorBarL4, 100);
+                        setImgLoc.call($this, colorBarL6, 260);
+                        setAlpha.call($this, colorBarL6, 100);
+                      }, 0);
+                    colorMap.range('all', { minX: 0, maxX: 100, minY: 0, maxY: 100 });
+                    colorBar.range('rangeY', { minY: 0, maxY: 360 });
+                    if (active.val('ahex') == null) break;
+                    colorMap.val('xy', { x: active.val('s'), y: 100 - active.val('v') }, colorMap);
+                    colorBar.val('y', 360 - active.val('h'), colorBar);
+                    break;
+                  case 's':
+                    setTimeout(
+                      function()
+                      {
+                        setBG.call($this, colorMapDiv, 'transparent');
+                        setImgLoc.call($this, colorMapL1, -260);
+                        setImgLoc.call($this, colorMapL2, -520);
+                        setImgLoc.call($this, colorBarL1, -260);
+                        setImgLoc.call($this, colorBarL2, -520);
+                        setImgLoc.call($this, colorBarL6, 260);
+                        setAlpha.call($this, colorBarL6, 100);
+                      }, 0);
+                    colorMap.range('all', { minX: 0, maxX: 360, minY: 0, maxY: 100 });
+                    colorBar.range('rangeY', { minY: 0, maxY: 100 });
+                    if (active.val('ahex') == null) break;
+                    colorMap.val('xy', { x: active.val('h'), y: 100 - active.val('v') }, colorMap);
+                    colorBar.val('y', 100 - active.val('s'), colorBar);
+                    break;
+                  case 'v':
+                    setTimeout(
+                      function()
+                      {
+                        setBG.call($this, colorMapDiv, '000000');
+                        setImgLoc.call($this, colorMapL1, -780);
+                        setImgLoc.call($this, colorMapL2, 260);
+                        setBG.call($this, colorBarDiv, hex);
+                        setImgLoc.call($this, colorBarL1, -520);
+                        setImgLoc.call($this, colorBarL2, 260);
+                        setAlpha.call($this, colorBarL2, 100);
+                        setImgLoc.call($this, colorBarL6, 260);
+                        setAlpha.call($this, colorBarL6, 100);
+                      }, 0);
+                    colorMap.range('all', { minX: 0, maxX: 360, minY: 0, maxY: 100 });
+                    colorBar.range('rangeY', { minY: 0, maxY: 100 });
+                    if (active.val('ahex') == null) break;
+                    colorMap.val('xy', { x: active.val('h'), y: 100 - active.val('s') }, colorMap);
+                    colorBar.val('y', 100 - active.val('v'), colorBar);
+                    break;
+                  case 'r':
+                    rgbMap = -1040;
+                    rgbBar = -780;
+                    colorMap.range('all', { minX: 0, maxX: 255, minY: 0, maxY: 255 });
+                    colorBar.range('rangeY', { minY: 0, maxY: 255 });
+                    if (active.val('ahex') == null) break;
+                    colorMap.val('xy', { x: active.val('b'), y: 255 - active.val('g') }, colorMap);
+                    colorBar.val('y', 255 - active.val('r'), colorBar);
+                    break;
+                  case 'g':
+                    rgbMap = -1560;
+                    rgbBar = -1820;
+                    colorMap.range('all', { minX: 0, maxX: 255, minY: 0, maxY: 255 });
+                    colorBar.range('rangeY', { minY: 0, maxY: 255 });
+                    if (active.val('ahex') == null) break;
+                    colorMap.val('xy', { x: active.val('b'), y: 255 - active.val('r') }, colorMap);
+                    colorBar.val('y', 255 - active.val('g'), colorBar);
+                    break;
+                  case 'b':
+                    rgbMap = -2080;
+                    rgbBar = -2860;
+                    colorMap.range('all', { minX: 0, maxX: 255, minY: 0, maxY: 255 });
+                    colorBar.range('rangeY', { minY: 0, maxY: 255 });
+                    if (active.val('ahex') == null) break;
+                    colorMap.val('xy', { x: active.val('r'), y: 255 - active.val('g') }, colorMap);
+                    colorBar.val('y', 255 - active.val('b'), colorBar);
+                    break;
+                  case 'a':
+                    setTimeout(
+                      function()
+                      {
+                        setBG.call($this, colorMapDiv, 'transparent');
+                        setImgLoc.call($this, colorMapL1, -260);
+                        setImgLoc.call($this, colorMapL2, -520);
+                        setImgLoc.call($this, colorBarL1, 260);
+                        setImgLoc.call($this, colorBarL2, 260);
+                        setAlpha.call($this, colorBarL2, 100);
+                        setImgLoc.call($this, colorBarL6, 0);
+                        setAlpha.call($this, colorBarL6, 100);
+                      }, 0);
+                    colorMap.range('all', { minX: 0, maxX: 360, minY: 0, maxY: 100 });
+                    colorBar.range('rangeY', { minY: 0, maxY: 255 });
+                    if (active.val('ahex') == null) break;
+                    colorMap.val('xy', { x: active.val('h'), y: 100 - active.val('v') }, colorMap);
+                    colorBar.val('y', 255 - active.val('a'), colorBar);
+                    break;
+                  default:
+                    throw ('Invalid Mode');
+                    break;
+                }
+                switch (colorMode)
+                {
+                  case 'h':
+                    break;
+                  case 's':
+                  case 'v':
+                  case 'a':
+                    setTimeout(
+                      function()
+                      {
+                        setAlpha.call($this, colorMapL1, 100);
+                        setAlpha.call($this, colorBarL1, 100);
+                        setImgLoc.call($this, colorBarL3, 260);
+                        setAlpha.call($this, colorBarL3, 100);
+                        setImgLoc.call($this, colorBarL4, 260);
+                        setAlpha.call($this, colorBarL4, 100);
+                      }, 0);
+                    break;
+                  case 'r':
+                  case 'g':
+                  case 'b':
+                    setTimeout(
+                      function()
+                      {
+                        setBG.call($this, colorMapDiv, 'transparent');
+                        setBG.call($this, colorBarDiv, 'transparent');
+                        setAlpha.call($this, colorBarL1, 100);
+                        setAlpha.call($this, colorMapL1, 100);
+                        setImgLoc.call($this, colorMapL1, rgbMap);
+                        setImgLoc.call($this, colorMapL2, rgbMap - 260);
+                        setImgLoc.call($this, colorBarL1, rgbBar - 780);
+                        setImgLoc.call($this, colorBarL2, rgbBar - 520);
+                        setImgLoc.call($this, colorBarL3, rgbBar);
+                        setImgLoc.call($this, colorBarL4, rgbBar - 260);
+                        setImgLoc.call($this, colorBarL6, 260);
+                        setAlpha.call($this, colorBarL6, 100);
+                      }, 0);
+                    break;
+                }
+                if (active.val('ahex') == null) return;
+                activeColorChanged.call($this, active);
+              },
+            activeColorChanged = // Update color when user changes text values
+              function(ui, context)
+              {
+                if (context == null || (context != colorBar && context != colorMap)) positionMapAndBarArrows.call($this, ui, context);
+                setTimeout(
+                  function()
+                  {
+                    updatePreview.call($this, ui);
+                    updateMapVisuals.call($this, ui);
+                    updateBarVisuals.call($this, ui);
+                  }, 0);
+              },
+            mapValueChanged = // user has dragged the ColorMap pointer
+              function(ui, context)
+              {
+                var active = color.active;
+                if (context != colorMap && active.val() == null) return;
+                var xy = ui.val('all');
+                switch (settings.color.mode)
+                {
+                  case 'h':
+                    active.val('sv', { s: xy.x, v: 100 - xy.y }, context);
+                    break;
+                  case 's':
+                  case 'a':
+                    active.val('hv', { h: xy.x, v: 100 - xy.y }, context);
+                    break;
+                  case 'v':
+                    active.val('hs', { h: xy.x, s: 100 - xy.y }, context);
+                    break;
+                  case 'r':
+                    active.val('gb', { g: 255 - xy.y, b: xy.x }, context);
+                    break;
+                  case 'g':
+                    active.val('rb', { r: 255 - xy.y, b: xy.x }, context);
+                    break;
+                  case 'b':
+                    active.val('rg', { r: xy.x, g: 255 - xy.y }, context);
+                    break;
+                }
+              },
+            colorBarValueChanged = // user has dragged the ColorBar slider
+              function(ui, context)
+              {
+                var active = color.active;
+                if (context != colorBar && active.val() == null) return;
+                switch (settings.color.mode)
+                {
+                  case 'h':
+                    active.val('h', { h: 360 - ui.val('y') }, context);
+                    break;
+                  case 's':
+                    active.val('s', { s: 100 - ui.val('y') }, context);
+                    break;
+                  case 'v':
+                    active.val('v', { v: 100 - ui.val('y') }, context);
+                    break;
+                  case 'r':
+                    active.val('r', { r: 255 - ui.val('y') }, context);
+                    break;
+                  case 'g':
+                    active.val('g', { g: 255 - ui.val('y') }, context);
+                    break;
+                  case 'b':
+                    active.val('b', { b: 255 - ui.val('y') }, context);
+                    break;
+                  case 'a':
+                    active.val('a', 255 - ui.val('y'), context);
+                    break;
+                }
+              },
+            positionMapAndBarArrows = // position map and bar arrows to match current color
+              function(ui, context)
+              {
+                if (context != colorMap)
+                {
+                  switch (settings.color.mode)
+                  {
+                    case 'h':
+                      var sv = ui.val('sv');
+                      colorMap.val('xy', { x: sv != null ? sv.s : 100, y: 100 - (sv != null ? sv.v : 100) }, context);
+                      break;
+                    case 's':
+                    case 'a':
+                      var hv = ui.val('hv');
+                      colorMap.val('xy', { x: hv && hv.h || 0, y: 100 - (hv != null ? hv.v : 100) }, context);
+                      break;
+                    case 'v':
+                      var hs = ui.val('hs');
+                      colorMap.val('xy', { x: hs && hs.h || 0, y: 100 - (hs != null ? hs.s : 100) }, context);
+                      break;
+                    case 'r':
+                      var bg = ui.val('bg');
+                      colorMap.val('xy', { x: bg && bg.b || 0, y: 255 - (bg && bg.g || 0) }, context);
+                      break;
+                    case 'g':
+                      var br = ui.val('br');
+                      colorMap.val('xy', { x: br && br.b || 0, y: 255 - (br && br.r || 0) }, context);
+                      break;
+                    case 'b':
+                      var rg = ui.val('rg');
+                      colorMap.val('xy', { x: rg && rg.r || 0, y: 255 - (rg && rg.g || 0) }, context);
+                      break;
+                  }
+                }
+                if (context != colorBar)
+                {
+                  switch (settings.color.mode)
+                  {
+                    case 'h':
+                      colorBar.val('y', 360 - (ui.val('h') || 0), context);
+                      break;
+                    case 's':
+                      var s = ui.val('s');
+                      colorBar.val('y', 100 - (s != null ? s : 100), context);
+                      break;
+                    case 'v':
+                      var v = ui.val('v');
+                      colorBar.val('y', 100 - (v != null ? v : 100), context);
+                      break;
+                    case 'r':
+                      colorBar.val('y', 255 - (ui.val('r') || 0), context);
+                      break;
+                    case 'g':
+                      colorBar.val('y', 255 - (ui.val('g') || 0), context);
+                      break;
+                    case 'b':
+                      colorBar.val('y', 255 - (ui.val('b') || 0), context);
+                      break;
+                    case 'a':
+                      var a = ui.val('a');
+                      colorBar.val('y', 255 - (a != null ? a : 255), context);
+                      break;
+                  }
+                }
+              },
+            updatePreview =
+              function(ui)
+              {
+                try
+                {
+                  var all = ui.val('all');
+                  activePreview.css({ backgroundColor: all && '#' + all.hex || 'transparent' });
+                  setAlpha.call($this, activePreview, all && Math.precision((all.a * 100) / 255, 4) || 0);
+                }
+                catch (e) { }
+              },
+            updateMapVisuals =
+              function(ui)
+              {
+                switch (settings.color.mode)
+                {
+                  case 'h':
+                    setBG.call($this, colorMapDiv, new Color({ h: ui.val('h') || 0, s: 100, v: 100 }).val('hex'));
+                    break;
+                  case 's':
+                  case 'a':
+                    var s = ui.val('s');
+                    setAlpha.call($this, colorMapL2, 100 - (s != null ? s : 100));
+                    break;
+                  case 'v':
+                    var v = ui.val('v');
+                    setAlpha.call($this, colorMapL1, v != null ? v : 100);
+                    break;
+                  case 'r':
+                    setAlpha.call($this, colorMapL2, Math.precision((ui.val('r') || 0) / 255 * 100, 4));
+                    break;
+                  case 'g':
+                    setAlpha.call($this, colorMapL2, Math.precision((ui.val('g') || 0) / 255 * 100, 4));
+                    break;
+                  case 'b':
+                    setAlpha.call($this, colorMapL2, Math.precision((ui.val('b') || 0) / 255 * 100));
+                    break;
+                }
+                var a = ui.val('a');
+                setAlpha.call($this, colorMapL3, Math.precision(((255 - (a || 0)) * 100) / 255, 4));
+              },
+            updateBarVisuals =
+              function(ui)
+              {
+                switch (settings.color.mode)
+                {
+                  case 'h':
+                    var a = ui.val('a');
+                    setAlpha.call($this, colorBarL5, Math.precision(((255 - (a || 0)) * 100) / 255, 4));
+                    break;
+                  case 's':
+                    var hva = ui.val('hva'),
+                        saturatedColor = new Color({ h: hva && hva.h || 0, s: 100, v: hva != null ? hva.v : 100 });
+                    setBG.call($this, colorBarDiv, saturatedColor.val('hex'));
+                    setAlpha.call($this, colorBarL2, 100 - (hva != null ? hva.v : 100));
+                    setAlpha.call($this, colorBarL5, Math.precision(((255 - (hva && hva.a || 0)) * 100) / 255, 4));
+                    break;
+                  case 'v':
+                    var hsa = ui.val('hsa'),
+                        valueColor = new Color({ h: hsa && hsa.h || 0, s: hsa != null ? hsa.s : 100, v: 100 });
+                    setBG.call($this, colorBarDiv, valueColor.val('hex'));
+                    setAlpha.call($this, colorBarL5, Math.precision(((255 - (hsa && hsa.a || 0)) * 100) / 255, 4));
+                    break;
+                  case 'r':
+                  case 'g':
+                  case 'b':
+                    var hValue = 0, vValue = 0, rgba = ui.val('rgba');
+                    if (settings.color.mode == 'r')
+                    {
+                      hValue = rgba && rgba.b || 0;
+                      vValue = rgba && rgba.g || 0;
+                    }
+                    else if (settings.color.mode == 'g')
+                    {
+                      hValue = rgba && rgba.b || 0;
+                      vValue = rgba && rgba.r || 0;
+                    }
+                    else if (settings.color.mode == 'b')
+                    {
+                      hValue = rgba && rgba.r || 0;
+                      vValue = rgba && rgba.g || 0;
+                    }
+                    var middle = vValue > hValue ? hValue : vValue;
+                    setAlpha.call($this, colorBarL2, hValue > vValue ? Math.precision(((hValue - vValue) / (255 - vValue)) * 100, 4) : 0);
+                    setAlpha.call($this, colorBarL3, vValue > hValue ? Math.precision(((vValue - hValue) / (255 - hValue)) * 100, 4) : 0);
+                    setAlpha.call($this, colorBarL4, Math.precision((middle / 255) * 100, 4));
+                    setAlpha.call($this, colorBarL5, Math.precision(((255 - (rgba && rgba.a || 0)) * 100) / 255, 4));
+                    break;
+                  case 'a':
+                    var a = ui.val('a');
+                    setBG.call($this, colorBarDiv, ui.val('hex') || '000000');
+                    setAlpha.call($this, colorBarL5, a != null ? 0 : 100);
+                    setAlpha.call($this, colorBarL6, a != null ? 100 : 0);
+                    break;
+                }
+              },
+            setBG =
+              function(el, c)
+              {
+                el.css({ backgroundColor: c && c.length == 6 && '#' + c || 'transparent' });
+              },
+            setImg =
+              function(img, src)
+              {
+                if (isLessThanIE7 && (src.indexOf('AlphaBar.png') != -1 || src.indexOf('Bars.png') != -1 || src.indexOf('Maps.png') != -1))
+                {
+                  img.attr('pngSrc', src);
+                  img.css({ backgroundImage: 'none', filter: 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + src + '\', sizingMethod=\'scale\')' });
+                }
+                else img.css({ backgroundImage: 'url(\'' + src + '\')' });
+              },
+            setImgLoc =
+              function(img, y)
+              {
+                img.css({ top: y + 'px' });
+              },
+            setAlpha =
+              function(obj, alpha)
+              {
+                obj.css({ visibility: alpha > 0 ? 'visible' : 'hidden' });
+                if (alpha > 0 && alpha < 100)
+                {
+                  if (isLessThanIE7)
+                  {
+                    var src = obj.attr('pngSrc');
+                    if (src != null && (src.indexOf('AlphaBar.png') != -1 || src.indexOf('Bars.png') != -1 || src.indexOf('Maps.png') != -1))
+                      obj.css({ filter: 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + src + '\', sizingMethod=\'scale\') progid:DXImageTransform.Microsoft.Alpha(opacity=' + alpha + ')' });
+                    else obj.css({ opacity: Math.precision(alpha / 100, 4) });
+                  }
+                  else obj.css({ opacity: Math.precision(alpha / 100, 4) });
+                }
+                else if (alpha == 0 || alpha == 100)
+                {
+                  if (isLessThanIE7)
+                  {
+                    var src = obj.attr('pngSrc');
+                    if (src != null && (src.indexOf('AlphaBar.png') != -1 || src.indexOf('Bars.png') != -1 || src.indexOf('Maps.png') != -1))
+                      obj.css({ filter: 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + src + '\', sizingMethod=\'scale\')' });
+                    else obj.css({ opacity: '' });
+                  }
+                  else obj.css({ opacity: '' });
+                }
+              },
+            revertColor = // revert color to original color when opened
+              function()
+              {
+                color.active.val('ahex', color.current.val('ahex'));
+              },
+            commitColor = // commit the color changes
+              function()
+              {
+                color.current.val('ahex', color.active.val('ahex'));
+              },
+            radioClicked =
+              function(e)
+              {
+                $(this).parents('tbody:first').find('input:radio[value!="'+e.target.value+'"]').removeAttr('checked');
+                setColorMode.call($this, e.target.value);
+              },
+            currentClicked =
+              function()
+              {
+                revertColor.call($this);
+              },
+            cancelClicked =
+              function()
+              {
+                revertColor.call($this);
+                settings.window.expandable && hide.call($this);
+                $.isFunction(cancelCallback) && cancelCallback.call($this, color.active, cancelButton);
+              },
+            okClicked =
+              function()
+              {
+                commitColor.call($this);
+                settings.window.expandable && hide.call($this);
+                $.isFunction(commitCallback) && commitCallback.call($this, color.active, okButton);
+              },
+            iconImageClicked =
+              function()
+              {
+                show.call($this);
+              },
+            currentColorChanged =
+              function(ui, context)
+              {
+                var hex = ui.val('hex');
+                currentPreview.css({ backgroundColor: hex && '#' + hex || 'transparent' });
+                setAlpha.call($this, currentPreview, Math.precision(((ui.val('a') || 0) * 100) / 255, 4));
+              },
+            expandableColorChanged =
+              function(ui, context)
+              {
+                var hex = ui.val('hex');
+                var va = ui.val('va');
+                iconColor.css({ backgroundColor: hex && '#' + hex || 'transparent' });
+                setAlpha.call($this, iconAlpha, Math.precision(((255 - (va && va.a || 0)) * 100) / 255, 4));
+                if (settings.window.bindToInput&&settings.window.updateInputColor)
+                  settings.window.input.css(
+                    {
+                      backgroundColor: hex && '#' + hex || 'transparent',
+                      color: va == null || va.v > 75 ? '#000000' : '#ffffff'
+                    });
+              },
+            moveBarMouseDown =
+              function(e)
+              {
+                var element = settings.window.element, // local copies for YUI compressor
+                  page = settings.window.page;
+                elementStartX = parseInt(container.css('left'));
+                elementStartY = parseInt(container.css('top'));
+                pageStartX = e.pageX;
+                pageStartY = e.pageY;
+                // bind events to document to move window - we will unbind these on mouseup
+                $(document).bind('mousemove', documentMouseMove).bind('mouseup', documentMouseUp);
+                e.preventDefault(); // prevent attempted dragging of the column
+              },
+            documentMouseMove =
+              function(e)
+              {
+                container.css({ left: elementStartX - (pageStartX - e.pageX) + 'px', top: elementStartY - (pageStartY - e.pageY) + 'px' });
+                if (settings.window.expandable && !$.support.boxModel) container.prev().css({ left: container.css("left"), top: container.css("top") });
+                e.stopPropagation();
+                e.preventDefault();
+                return false;
+              },
+            documentMouseUp =
+              function(e)
+              {
+                $(document).unbind('mousemove', documentMouseMove).unbind('mouseup', documentMouseUp);
+                e.stopPropagation();
+                e.preventDefault();
+                return false;
+              },
+            quickPickClicked =
+              function(e)
+              {
+                e.preventDefault();
+                e.stopPropagation();
+                color.active.val('ahex', $(this).attr('title') || null, e.target);
+                return false;
+              },
+            commitCallback = $.isFunction($arguments[1]) && $arguments[1] || null,
+            liveCallback = $.isFunction($arguments[2]) && $arguments[2] || null,
+            cancelCallback = $.isFunction($arguments[3]) && $arguments[3] || null,
+            show =
+              function()
+              {
+                color.current.val('ahex', color.active.val('ahex'));
+                var attachIFrame = function()
+                  {
+                    if (!settings.window.expandable || $.support.boxModel) return;
+                    var table = container.find('table:first');
+                    container.before('<iframe/>');
+                    container.prev().css({ width: table.width(), height: container.height(), opacity: 0, position: 'absolute', left: container.css("left"), top: container.css("top") });
+                  };
+                if (settings.window.expandable)
+                {
+                  $(document.body).children('div.jPicker.Container').css({zIndex:10});
+                  container.css({zIndex:20});
+                }
+                switch (settings.window.effects.type)
+                {
+                  case 'fade':
+                    container.fadeIn(settings.window.effects.speed.show, attachIFrame);
+                    break;
+                  case 'slide':
+                    container.slideDown(settings.window.effects.speed.show, attachIFrame);
+                    break;
+                  case 'show':
+                  default:
+                    container.show(settings.window.effects.speed.show, attachIFrame);
+                    break;
+                }
+              },
+            hide =
+              function()
+              {
+                var removeIFrame = function()
+                  {
+                    if (settings.window.expandable) container.css({ zIndex: 10 });
+                    if (!settings.window.expandable || $.support.boxModel) return;
+                    container.prev().remove();
+                  };
+                switch (settings.window.effects.type)
+                {
+                  case 'fade':
+                    container.fadeOut(settings.window.effects.speed.hide, removeIFrame);
+                    break;
+                  case 'slide':
+                    container.slideUp(settings.window.effects.speed.hide, removeIFrame);
+                    break;
+                  case 'show':
+                  default:
+                    container.hide(settings.window.effects.speed.hide, removeIFrame);
+                    break;
+                }
+              },
+            initialize =
+              function()
+              {
+                var win = settings.window,
+                    popup = win.expandable ? $($this).next().find('.Container:first') : null;
+                container = win.expandable ? $('<div/>') : $($this);
+                container.addClass('jPicker Container');
+                if (win.expandable) container.hide();
+                container.get(0).onselectstart = function(event){ if (event.target.nodeName.toLowerCase() !== 'input') return false; };
+                // inject html source code - we are using a single table for this control - I know tables are considered bad, but it takes care of equal height columns and
+                // this control really is tabular data, so I believe it is the right move
+                var all = color.active.val('all');
+                if (win.alphaPrecision < 0) win.alphaPrecision = 0;
+                else if (win.alphaPrecision > 2) win.alphaPrecision = 2;
+                var controlHtml='<table class="jPicker" cellpadding="0" cellspacing="0"><tbody>' + (win.expandable ? '<tr><td class="Move" colspan="5">&nbsp;</td></tr>' : '') + '<tr><td rowspan="9"><h2 class="Title">' + (win.title || localization.text.title) + '</h2><div class="Map"><span class="Map1">&nbsp;</span><span class="Map2">&nbsp;</span><span class="Map3">&nbsp;</span><img src="' + images.clientPath + images.colorMap.arrow.file + '" class="Arrow"/></div></td><td rowspan="9"><div class="Bar"><span class="Map1">&nbsp;</span><span class="Map2">&nbsp;</span><span class="Map3">&nbsp;</span><span class="Map4">&nbsp;</span><span class="Map5">&nbsp;</span><span class="Map6">&nbsp;</span><img src="' + images.clientPath + images.colorBar.arrow.file + '" class="Arrow"/></div></td><td colspan="2" class="Preview"><div class="prev_div">' + localization.text.newColor + '<div class="color_preview"><span class="Active" title="' + localization.tooltips.colors.newColor + '">&nbsp;</span><span class="Current" title="' + localization.tooltips.colors.currentColor + '">&nbsp;</span></div></div>' + localization.text.currentColor + '</td><td rowspan="9" class="Button"><input type="button" class="Ok" value="' + localization.text.ok + '" title="' + localization.tooltips.buttons.ok + '"/><input type="button" class="Cancel" value="' + localization.text.cancel + '" title="' + localization.tooltips.buttons.cancel + '"/><div class="Grid">&nbsp;</div></td></tr><tr class="Hue"><td class="Radio"><label title="' + localization.tooltips.hue.radio + '"><input type="radio" value="h"' + (settings.color.mode == 'h' ? ' checked="checked"' : '') + '/>H:</label></td><td class="Text"><input type="text" maxlength="3" value="' + (all != null ? all.h : '') + '" title="' + localization.tooltips.hue.textbox + '"/>&nbsp;º</td></tr><tr class="Saturation"><td class="Radio"><label title="' + localization.tooltips.saturation.radio + '"><input type="radio" value="s"' + (settings.color.mode == 's' ? ' checked="checked"' : '') + '/>S:</label></td><td class="Text"><input type="text" maxlength="3" value="' + (all != null ? all.s : '') + '" title="' + localization.tooltips.saturation.textbox + '"/>&nbsp;%</td></tr><tr class="Value"><td class="Radio"><label title="' + localization.tooltips.value.radio + '"><input type="radio" value="v"' + (settings.color.mode == 'v' ? ' checked="checked"' : '') + '/>V:</label></td><td class="Text"><input type="text" maxlength="3" value="' + (all != null ? all.v : '') + '" title="' + localization.tooltips.value.textbox + '"/>&nbsp;%<br/><br/></td></tr><tr class="Red"><td class="Radio"><label title="' + localization.tooltips.red.radio + '"><input type="radio" value="r"' + (settings.color.mode == 'r' ? ' checked="checked"' : '') + '/>R:</label></td><td class="Text"><input type="text" maxlength="3" value="' + (all != null ? all.r : '') + '" title="' + localization.tooltips.red.textbox + '"/></td></tr><tr class="Green"><td class="Radio"><label title="' + localization.tooltips.green.radio + '"><input type="radio" value="g"' + (settings.color.mode == 'g' ? ' checked="checked"' : '') + '/>G:</label></td><td class="Text"><input type="text" maxlength="3" value="' + (all != null ? all.g : '') + '" title="' + localization.tooltips.green.textbox + '"/></td></tr><tr class="Blue"><td class="Radio"><label title="' + localization.tooltips.blue.radio + '"><input type="radio" value="b"' + (settings.color.mode == 'b' ? ' checked="checked"' : '') + '/>B:</label></td><td class="Text"><input type="text" maxlength="3" value="' + (all != null ? all.b : '') + '" title="' + localization.tooltips.blue.textbox + '"/></td></tr><tr class="Alpha"><td class="Radio">' + (win.alphaSupport ? '<label title="' + localization.tooltips.alpha.radio + '"><input type="radio" value="a"' + (settings.color.mode == 'a' ? ' checked="checked"' : '') + '/>A:</label>' : '&nbsp;') + '</td><td class="Text">' + (win.alphaSupport ? '<input type="text" maxlength="' + (3 + win.alphaPrecision) + '" value="' + (all != null ? Math.precision((all.a * 100) / 255, win.alphaPrecision) : '') + '" title="' + localization.tooltips.alpha.textbox + '"/>&nbsp;%' : '&nbsp;') + '</td></tr><tr class="Hex"><td colspan="2" class="Text"><label title="' + localization.tooltips.hex.textbox + '">#:<input type="text" maxlength="6" class="Hex" value="' + (all != null ? all.hex : '') + '"/></label>' + (win.alphaSupport ? '<input type="text" maxlength="2" class="AHex" value="' + (all != null ? all.ahex.substring(6) : '') + '" title="' + localization.tooltips.hex.alpha + '"/></td>' : '&nbsp;') + '</tr></tbody></table>';
+                if (win.expandable)
+                {
+                  container.html(controlHtml);
+                  if($(document.body).children('div.jPicker.Container').length==0)$(document.body).prepend(container);
+                  else $(document.body).children('div.jPicker.Container:last').after(container);
+                  container.mousedown(
+                    function()
+                    {
+                      $(document.body).children('div.jPicker.Container').css({zIndex:10});
+                      container.css({zIndex:20});
+                    });
+                  container.css( // positions must be set and display set to absolute before source code injection or IE will size the container to fit the window
+                    {
+                      left:
+                        win.position.x == 'left' ? (popup.offset().left - 530 - (win.position.y == 'center' ? 25 : 0)) + 'px' :
+                        win.position.x == 'center' ? (popup.offset().left - 260) + 'px' :
+                        win.position.x == 'right' ? (popup.offset().left - 10 + (win.position.y == 'center' ? 25 : 0)) + 'px' :
+                        win.position.x == 'screenCenter' ? (($(document).width() >> 1) - 260) + 'px' : (popup.offset().left + parseInt(win.position.x)) + 'px',
+                      position: 'absolute',
+                      top: win.position.y == 'top' ? (popup.offset().top - 312) + 'px' :
+                           win.position.y == 'center' ? (popup.offset().top - 156) + 'px' :
+                           win.position.y == 'bottom' ? (popup.offset().top + 25) + 'px' : (popup.offset().top + parseInt(win.position.y)) + 'px'
+                    });
+                }
+                else
+                {
+                  container = $($this);
+                  container.html(controlHtml);
+                }
+                // initialize the objects to the source code just injected
+                var tbody = container.find('tbody:first');
+                colorMapDiv = tbody.find('div.Map:first');
+                colorBarDiv = tbody.find('div.Bar:first');
+                var MapMaps = colorMapDiv.find('span'),
+                    BarMaps = colorBarDiv.find('span');
+                colorMapL1 = MapMaps.filter('.Map1:first');
+                colorMapL2 = MapMaps.filter('.Map2:first');
+                colorMapL3 = MapMaps.filter('.Map3:first');
+                colorBarL1 = BarMaps.filter('.Map1:first');
+                colorBarL2 = BarMaps.filter('.Map2:first');
+                colorBarL3 = BarMaps.filter('.Map3:first');
+                colorBarL4 = BarMaps.filter('.Map4:first');
+                colorBarL5 = BarMaps.filter('.Map5:first');
+                colorBarL6 = BarMaps.filter('.Map6:first');
+                // create color pickers and maps
+                colorMap = new Slider(colorMapDiv,
+                  {
+                    map:
+                    {
+                      width: images.colorMap.width,
+                      height: images.colorMap.height
+                    },
+                    arrow:
+                    {
+                      image: images.clientPath + images.colorMap.arrow.file,
+                      width: images.colorMap.arrow.width,
+                      height: images.colorMap.arrow.height
+                    }
+                  });
+                colorMap.bind(mapValueChanged);
+                colorBar = new Slider(colorBarDiv,
+                  {
+                    map:
+                    {
+                      width: images.colorBar.width,
+                      height: images.colorBar.height
+                    },
+                    arrow:
+                    {
+                      image: images.clientPath + images.colorBar.arrow.file,
+                      width: images.colorBar.arrow.width,
+                      height: images.colorBar.arrow.height
+                    }
+                  });
+                colorBar.bind(colorBarValueChanged);
+                colorPicker = new ColorValuePicker(tbody, color.active, win.expandable && win.bindToInput ? win.input : null, win.alphaPrecision);
+                var hex = all != null ? all.hex : null,
+                    preview = tbody.find('.Preview'),
+                    button = tbody.find('.Button');
+                activePreview = preview.find('.Active:first').css({ backgroundColor: hex && '#' + hex || 'transparent' });
+                currentPreview = preview.find('.Current:first').css({ backgroundColor: hex && '#' + hex || 'transparent' }).bind('click', currentClicked);
+                setAlpha.call($this, currentPreview, Math.precision(color.current.val('a') * 100) / 255, 4);
+                okButton = button.find('.Ok:first').bind('click touchstart', okClicked);
+                cancelButton = button.find('.Cancel:first').bind('click touchstart', cancelClicked);
+                grid = button.find('.Grid:first');
+                setTimeout(
+                  function()
+                  {
+                    setImg.call($this, colorMapL1, images.clientPath + 'Maps.png');
+                    setImg.call($this, colorMapL2, images.clientPath + 'Maps.png');
+                    setImg.call($this, colorMapL3, images.clientPath + 'map-opacity.png');
+                    setImg.call($this, colorBarL1, images.clientPath + 'Bars.png');
+                    setImg.call($this, colorBarL2, images.clientPath + 'Bars.png');
+                    setImg.call($this, colorBarL3, images.clientPath + 'Bars.png');
+                    setImg.call($this, colorBarL4, images.clientPath + 'Bars.png');
+                    setImg.call($this, colorBarL5, images.clientPath + 'bar-opacity.png');
+                    setImg.call($this, colorBarL6, images.clientPath + 'AlphaBar.png');
+                    setImg.call($this, preview.find('div:last'), images.clientPath + 'preview-opacity.png');
+                  }, 0);
+                tbody.find('td.Radio input').bind('click  touchstart', radioClicked);
+                // initialize quick list
+                if (color.quickList && color.quickList.length > 0)
+                {
+                  var html = '';
+                  for (i = 0; i < color.quickList.length; i++)
+                  {
+                    /* if default colors are hex strings, change them to color objects */
+                    if ((typeof (color.quickList[i])).toString().toLowerCase() == 'string') color.quickList[i] = new Color({ hex: color.quickList[i] });
+                    var alpha = color.quickList[i].val('a');
+                    var ahex = color.quickList[i].val('ahex');
+                    if (!win.alphaSupport && ahex) ahex = ahex.substring(0, 6) + 'ff';
+                    var quickHex = color.quickList[i].val('hex');
+                    html+='<span class="QuickColor"' + (ahex && ' title="#' + ahex + '"' || '') + ' style="background-color:' + (quickHex && '#' + quickHex || '') + ';' + (quickHex ? '' : 'background-image:url(' + images.clientPath + 'NoColor.png)') + (win.alphaSupport && alpha && alpha < 255 ? ';opacity:' + Math.precision(alpha / 255, 4) + ';filter:Alpha(opacity=' + Math.precision(alpha / 2.55, 4) + ')' : '') + '">&nbsp;</span>';
+                  }
+                  setImg.call($this, grid, images.clientPath + 'bar-opacity.png');
+                  grid.html(html);
+                  grid.find('.QuickColor').click(quickPickClicked);
+                }
+                setColorMode.call($this, settings.color.mode);
+                color.active.bind(activeColorChanged);
+                $.isFunction(liveCallback) && color.active.bind(liveCallback);
+                color.current.bind(currentColorChanged);
+                // bind to input
+                if (win.expandable)
+                {
+                  $this.icon = popup.parents('.Icon:first');
+                  iconColor = $this.icon.find('.Color:first').css({ backgroundColor: hex && '#' + hex || 'transparent' });
+                  iconAlpha = $this.icon.find('.Alpha:first');
+                  setImg.call($this, iconAlpha, images.clientPath + 'bar-opacity.png');
+                  setAlpha.call($this, iconAlpha, Math.precision(((255 - (all != null ? all.a : 0)) * 100) / 255, 4));
+                  iconImage = $this.icon.find('.Image:first').css(
+                    {
+                      backgroundImage: 'url(\'' + images.clientPath + images.picker.file + '\')'
+                    }).bind('click', iconImageClicked);
+                  if (win.bindToInput&&win.updateInputColor)
+                    win.input.css(
+                      {
+                        backgroundColor: hex && '#' + hex || 'transparent',
+                        color: all == null || all.v > 75 ? '#000000' : '#ffffff'
+                      });
+                  moveBar = tbody.find('.Move:first').bind('mousedown', moveBarMouseDown);
+                  color.active.bind(expandableColorChanged);
+                }
+                else show.call($this);
+              },
+            destroy =
+              function()
+              {
+                container.find('td.Radio input  touchstart').unbind('click', radioClicked);
+                currentPreview.unbind('click  touchstart', currentClicked);
+                cancelButton.unbind('click  touchstart', cancelClicked);
+                okButton.unbind('click  touchstart', okClicked);
+                if (settings.window.expandable)
+                {
+                  iconImage.unbind('click', iconImageClicked);
+                  moveBar.unbind('mousedown', moveBarMouseDown);
+                  $this.icon = null;
+                }
+                container.find('.QuickColor').unbind('click', quickPickClicked);
+                colorMapDiv = null;
+                colorBarDiv = null;
+                colorMapL1 = null;
+                colorMapL2 = null;
+                colorMapL3 = null;
+                colorBarL1 = null;
+                colorBarL2 = null;
+                colorBarL3 = null;
+                colorBarL4 = null;
+                colorBarL5 = null;
+                colorBarL6 = null;
+                colorMap.destroy();
+                colorMap = null;
+                colorBar.destroy();
+                colorBar = null;
+                colorPicker.destroy();
+                colorPicker = null;
+                activePreview = null;
+                currentPreview = null;
+                okButton = null;
+                cancelButton = null;
+                grid = null;
+                commitCallback = null;
+                cancelCallback = null;
+                liveCallback = null;
+                container.html('');
+                for (i = 0; i < List.length; i++) if (List[i] == $this) List.splice(i, 1);
+              },
+            images = settings.images, // local copies for YUI compressor
+            localization = settings.localization,
+            color =
+              {
+                active: (typeof(settings.color.active)).toString().toLowerCase() == 'string' ? new Color({ ahex: !settings.window.alphaSupport && settings.color.active ? settings.color.active.substring(0, 6) + 'ff' : settings.color.active }) : new Color({ ahex: !settings.window.alphaSupport && settings.color.active.val('ahex') ? settings.color.active.val('ahex').substring(0, 6) + 'ff' : settings.color.active.val('ahex') }),
+                current: (typeof(settings.color.active)).toString().toLowerCase() == 'string' ? new Color({ ahex: !settings.window.alphaSupport && settings.color.active ? settings.color.active.substring(0, 6) + 'ff' : settings.color.active }) : new Color({ ahex: !settings.window.alphaSupport && settings.color.active.val('ahex') ? settings.color.active.val('ahex').substring(0, 6) + 'ff' : settings.color.active.val('ahex') }),
+                quickList: settings.color.quickList
+              };
+          $.extend(true, $this, // public properties, methods, and callbacks
+            {
+              commitCallback: commitCallback, // commitCallback function can be overridden to return the selected color to a method you specify when the user clicks "OK"
+              liveCallback: liveCallback, // liveCallback function can be overridden to return the selected color to a method you specify in live mode (continuous update)
+              cancelCallback: cancelCallback, // cancelCallback function can be overridden to a method you specify when the user clicks "Cancel"
+              color: color,
+              show: show,
+              hide: hide,
+              destroy: destroy // destroys this control entirely, removing all events and objects, and removing itself from the List
+            });
+          List.push($this);
+          setTimeout(
+            function()
+            {
+              initialize.call($this);
+            }, 0);
+        });
+    };
+  $.fn.jPicker.defaults = /* jPicker defaults - you can change anything in this section (such as the clientPath to your images) without fear of breaking the program */
+      {
+      window:
+        {
+          title: null, /* any title for the jPicker window itself - displays "Drag Markers To Pick A Color" if left null */
+          effects:
+          {
+            type: 'slide', /* effect used to show/hide an expandable picker. Acceptable values "slide", "show", "fade" */
+            speed:
+            {
+              show: 'slow', /* duration of "show" effect. Acceptable values are "fast", "slow", or time in ms */
+              hide: 'fast' /* duration of "hide" effect. Acceptable values are "fast", "slow", or time in ms */
+            }
+          },
+          position:
+          {
+            x: 'screenCenter', /* acceptable values "left", "center", "right", "screenCenter", or relative px value */
+            y: 'top' /* acceptable values "top", "bottom", "center", or relative px value */
+          },
+          expandable: false, /* default to large static picker - set to true to make an expandable picker (small icon with popup) - set automatically when binded to input element */
+          liveUpdate: true, /* set false if you want the user to have to click "OK" before the binded input box updates values (always "true" for expandable picker) */
+          alphaSupport: false, /* set to true to enable alpha picking */
+          alphaPrecision: 0, /* set decimal precision for alpha percentage display - hex codes do not map directly to percentage integers - range 0-2 */
+          updateInputColor: true /* set to false to prevent binded input colors from changing */
+        },
+      color:
+        {
+          mode: 'h', /* acceptabled values "h" (hue), "s" (saturation), "v" (value), "r" (red), "g" (green), "b" (blue), "a" (alpha) */
+          active: new Color({ ahex: '#ffcc00ff' }), /* acceptable values are any declared $.jPicker.Color object or string HEX value (e.g. #ffc000) WITH OR WITHOUT the "#" prefix */
+          quickList: /* the quick pick color list */
+            [
+              new Color({ h: 360, s: 33, v: 100 }), /* acceptable values are any declared $.jPicker.Color object or string HEX value (e.g. #ffc000) WITH OR WITHOUT the "#" prefix */
+              new Color({ h: 360, s: 66, v: 100 }),
+              new Color({ h: 360, s: 100, v: 100 }),
+              new Color({ h: 360, s: 100, v: 75 }),
+              new Color({ h: 360, s: 100, v: 50 }),
+              new Color({ h: 180, s: 0, v: 100 }),
+              new Color({ h: 30, s: 33, v: 100 }),
+              new Color({ h: 30, s: 66, v: 100 }),
+              new Color({ h: 30, s: 100, v: 100 }),
+              new Color({ h: 30, s: 100, v: 75 }),
+              new Color({ h: 30, s: 100, v: 50 }),
+              new Color({ h: 180, s: 0, v: 90 }),
+              new Color({ h: 60, s: 33, v: 100 }),
+              new Color({ h: 60, s: 66, v: 100 }),
+              new Color({ h: 60, s: 100, v: 100 }),
+              new Color({ h: 60, s: 100, v: 75 }),
+              new Color({ h: 60, s: 100, v: 50 }),
+              new Color({ h: 180, s: 0, v: 80 }),
+              new Color({ h: 90, s: 33, v: 100 }),
+              new Color({ h: 90, s: 66, v: 100 }),
+              new Color({ h: 90, s: 100, v: 100 }),
+              new Color({ h: 90, s: 100, v: 75 }),
+              new Color({ h: 90, s: 100, v: 50 }),
+              new Color({ h: 180, s: 0, v: 70 }),
+              new Color({ h: 120, s: 33, v: 100 }),
+              new Color({ h: 120, s: 66, v: 100 }),
+              new Color({ h: 120, s: 100, v: 100 }),
+              new Color({ h: 120, s: 100, v: 75 }),
+              new Color({ h: 120, s: 100, v: 50 }),
+              new Color({ h: 180, s: 0, v: 60 }),
+              new Color({ h: 150, s: 33, v: 100 }),
+              new Color({ h: 150, s: 66, v: 100 }),
+              new Color({ h: 150, s: 100, v: 100 }),
+              new Color({ h: 150, s: 100, v: 75 }),
+              new Color({ h: 150, s: 100, v: 50 }),
+              new Color({ h: 180, s: 0, v: 50 }),
+              new Color({ h: 180, s: 33, v: 100 }),
+              new Color({ h: 180, s: 66, v: 100 }),
+              new Color({ h: 180, s: 100, v: 100 }),
+              new Color({ h: 180, s: 100, v: 75 }),
+              new Color({ h: 180, s: 100, v: 50 }),
+              new Color({ h: 180, s: 0, v: 40 }),
+              new Color({ h: 210, s: 33, v: 100 }),
+              new Color({ h: 210, s: 66, v: 100 }),
+              new Color({ h: 210, s: 100, v: 100 }),
+              new Color({ h: 210, s: 100, v: 75 }),
+              new Color({ h: 210, s: 100, v: 50 }),
+              new Color({ h: 180, s: 0, v: 30 }),
+              new Color({ h: 240, s: 33, v: 100 }),
+              new Color({ h: 240, s: 66, v: 100 }),
+              new Color({ h: 240, s: 100, v: 100 }),
+              new Color({ h: 240, s: 100, v: 75 }),
+              new Color({ h: 240, s: 100, v: 50 }),
+              new Color({ h: 180, s: 0, v: 20 }),
+              new Color({ h: 270, s: 33, v: 100 }),
+              new Color({ h: 270, s: 66, v: 100 }),
+              new Color({ h: 270, s: 100, v: 100 }),
+              new Color({ h: 270, s: 100, v: 75 }),
+              new Color({ h: 270, s: 100, v: 50 }),
+              new Color({ h: 180, s: 0, v: 10 }),
+              new Color({ h: 300, s: 33, v: 100 }),
+              new Color({ h: 300, s: 66, v: 100 }),
+              new Color({ h: 300, s: 100, v: 100 }),
+              new Color({ h: 300, s: 100, v: 75 }),
+              new Color({ h: 300, s: 100, v: 50 }),
+              new Color({ h: 180, s: 0, v: 0 }),
+              new Color({ h: 330, s: 33, v: 100 }),
+              new Color({ h: 330, s: 66, v: 100 }),
+              new Color({ h: 330, s: 100, v: 100 }),
+              new Color({ h: 330, s: 100, v: 75 }),
+              new Color({ h: 330, s: 100, v: 50 }),
+              new Color()
+            ]
+        },
+      images:
+        {
+          clientPath: '/jPicker/images/', /* Path to image files */
+          colorMap:
+          {
+            width: 256,
+            height: 256,
+            arrow:
+            {
+              file: 'mappoint.gif', /* ColorMap arrow icon */
+              width: 15,
+              height: 15
+            }
+          },
+          colorBar:
+          {
+            width: 20,
+            height: 256,
+            arrow:
+            {
+              file: 'rangearrows.gif', /* ColorBar arrow icon */
+              width: 20,
+              height: 7
+            }
+          },
+          picker:
+          {
+            file: 'picker.gif', /* Color Picker icon */
+            width: 25,
+            height: 24
+          }
+        },
+      localization: /* alter these to change the text presented by the picker (e.g. different language) */
+        {
+          text:
+          {
+            title: 'Drag Markers To Pick A Color',
+            newColor: 'new',
+            currentColor: 'current',
+            ok: 'OK',
+            cancel: 'Cancel'
+          },
+          tooltips:
+          {
+            colors:
+            {
+              newColor: 'New Color - Press &ldquo;OK&rdquo; To Commit',
+              currentColor: 'Click To Revert To Original Color'
+            },
+            buttons:
+            {
+              ok: 'Commit To This Color Selection',
+              cancel: 'Cancel And Revert To Original Color'
+            },
+            hue:
+            {
+              radio: 'Set To &ldquo;Hue&rdquo; Color Mode',
+              textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)'
+            },
+            saturation:
+            {
+              radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',
+              textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)'
+            },
+            value:
+            {
+              radio: 'Set To &ldquo;Value&rdquo; Color Mode',
+              textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)'
+            },
+            red:
+            {
+              radio: 'Set To &ldquo;Red&rdquo; Color Mode',
+              textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)'
+            },
+            green:
+            {
+              radio: 'Set To &ldquo;Green&rdquo; Color Mode',
+              textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)'
+            },
+            blue:
+            {
+              radio: 'Set To &ldquo;Blue&rdquo; Color Mode',
+              textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)'
+            },
+            alpha:
+            {
+              radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',
+              textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)'
+            },
+            hex:
+            {
+              textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',
+              alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)'
+            }
+          }
+        }
+    };
+})(jQuery, '1.1.6');
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/jgraduate/jquery.jgraduate.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/jgraduate/jquery.jgraduate.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/jgraduate/jquery.jgraduate.js	(revision 29468)
@@ -0,0 +1,1175 @@
+﻿/*
+ * jGraduate 0.4
+ *
+ * jQuery Plugin for a gradient picker
+ *
+ * Copyright (c) 2010 Jeff Schiller
+ * http://blog.codedread.com/
+ * Copyright (c) 2010 Alexis Deveria
+ * http://a.deveria.com/
+ *
+ * Apache 2 License
+
+jGraduate( options, okCallback, cancelCallback )
+
+where options is an object literal:
+	{
+		window: { title: "Pick the start color and opacity for the gradient" },
+		images: { clientPath: "images/" },
+		paint: a Paint object,
+		newstop: String of value "same", "inverse", "black" or "white" 
+				 OR object with one or both values {color: #Hex color, opac: number 0-1}
+	}
+ 
+- the Paint object is:
+	Paint {
+		type: String, // one of "none", "solidColor", "linearGradient", "radialGradient"
+		alpha: Number representing opacity (0-100),
+		solidColor: String representing #RRGGBB hex of color,
+		linearGradient: object of interface SVGLinearGradientElement,
+		radialGradient: object of interface SVGRadialGradientElement,
+	}
+
+$.jGraduate.Paint() -> constructs a 'none' color
+$.jGraduate.Paint({copy: o}) -> creates a copy of the paint o
+$.jGraduate.Paint({hex: "#rrggbb"}) -> creates a solid color paint with hex = "#rrggbb"
+$.jGraduate.Paint({linearGradient: o, a: 50}) -> creates a linear gradient paint with opacity=0.5
+$.jGraduate.Paint({radialGradient: o, a: 7}) -> creates a radial gradient paint with opacity=0.07
+$.jGraduate.Paint({hex: "#rrggbb", linearGradient: o}) -> throws an exception?
+
+- picker accepts the following object as input:
+	{
+		okCallback: function to call when Ok is pressed
+		cancelCallback: function to call when Cancel is pressed
+		paint: object describing the paint to display initially, if not set, then default to opaque white
+	}
+
+- okCallback receives a Paint object
+
+ *
+ */
+ 
+(function() {
+ 
+var ns = { svg: 'http://www.w3.org/2000/svg', xlink: 'http://www.w3.org/1999/xlink' };
+if(!window.console) {
+  window.console = new function() {
+    this.log = function(str) {};
+    this.dir = function(str) {};
+  };
+}
+
+$.jGraduate = { 
+	Paint:
+		function(opt) {
+			var options = opt || {};
+			this.alpha = isNaN(options.alpha) ? 100 : options.alpha;
+			// copy paint object
+    		if (options.copy) {
+    			this.type = options.copy.type;
+    			this.alpha = options.copy.alpha;
+				this.solidColor = null;
+				this.linearGradient = null;
+				this.radialGradient = null;
+
+    			switch(this.type) {
+    				case "none":
+    					break;
+    				case "solidColor":
+    					this.solidColor = options.copy.solidColor;
+    					break;
+    				case "linearGradient":
+    					this.linearGradient = options.copy.linearGradient.cloneNode(true);
+    					break;
+    				case "radialGradient":
+    					this.radialGradient = options.copy.radialGradient.cloneNode(true);
+    					break;
+    			}
+    		}
+    		// create linear gradient paint
+    		else if (options.linearGradient) {
+    			this.type = "linearGradient";
+    			this.solidColor = null;
+    			this.radialGradient = null;
+    			this.linearGradient = options.linearGradient.cloneNode(true);
+    		}
+    		// create linear gradient paint
+    		else if (options.radialGradient) {
+    			this.type = "radialGradient";
+    			this.solidColor = null;
+    			this.linearGradient = null;
+    			this.radialGradient = options.radialGradient.cloneNode(true);
+    		}
+    		// create solid color paint
+    		else if (options.solidColor) {
+    			this.type = "solidColor";
+    			this.solidColor = options.solidColor;
+    		}
+    		// create empty paint
+	    	else {
+	    		this.type = "none";
+    			this.solidColor = null;
+    			this.linearGradient = null;
+    			this.radialGradient = null;
+	    	}
+		}
+};
+
+jQuery.fn.jGraduateDefaults = {
+	paint: new $.jGraduate.Paint(),
+	window: {
+		pickerTitle: "Drag markers to pick a paint"
+	},
+	images: {
+		clientPath: "images/"
+	},
+	newstop: 'inverse' // same, inverse, black, white
+};
+
+var isGecko = navigator.userAgent.indexOf('Gecko/') >= 0;
+
+function setAttrs(elem, attrs) {
+	if(isGecko) {
+		for (var aname in attrs) elem.setAttribute(aname, attrs[aname]);
+	} else {
+		for (var aname in attrs) {
+			var val = attrs[aname], prop = elem[aname];
+			if(prop && prop.constructor === 'SVGLength') {
+				prop.baseVal.value = val;
+			} else {
+				elem.setAttribute(aname, val);
+			}
+		}
+	}
+}
+
+function mkElem(name, attrs, newparent) {
+	var elem = document.createElementNS(ns.svg, name);
+	setAttrs(elem, attrs);
+	if(newparent) newparent.appendChild(elem);
+	return elem;
+}
+
+jQuery.fn.jGraduate =
+	function(options) {
+	 	var $arguments = arguments;
+		return this.each( function() {
+			var $this = $(this), $settings = $.extend(true, {}, jQuery.fn.jGraduateDefaults, options),
+				id = $this.attr('id'),
+				idref = '#'+$this.attr('id')+' ';
+			
+            if (!idref)
+            {
+              alert('Container element must have an id attribute to maintain unique id strings for sub-elements.');
+              return;
+            }
+            
+            var okClicked = function() {
+	            switch ( $this.paint.type ) {
+	            	case "radialGradient":
+	            		$this.paint.linearGradient = null;
+	            		break;
+	            	case "linearGradient":
+	            		$this.paint.radialGradient = null;
+	            		break;
+	            	case "solidColor":
+	            		$this.paint.radialGradient = $this.paint.linearGradient = null;
+	            		break;
+	            }
+            	$.isFunction($this.okCallback) && $this.okCallback($this.paint);
+            	$this.hide();
+            },
+            cancelClicked = function() {
+            	$.isFunction($this.cancelCallback) && $this.cancelCallback();
+            	$this.hide();
+            };
+
+            $.extend(true, $this, // public properties, methods, and callbacks
+              {
+              	// make a copy of the incoming paint
+                paint: new $.jGraduate.Paint({copy: $settings.paint}),
+                okCallback: $.isFunction($arguments[1]) && $arguments[1] || null,
+                cancelCallback: $.isFunction($arguments[2]) && $arguments[2] || null
+              });
+
+			var pos = $this.position(),
+				color = null;
+			var $win = $(window);
+
+			if ($this.paint.type == "none") {
+				$this.paint = $.jGraduate.Paint({solidColor: 'ffffff'});
+			}
+			
+            $this.addClass('jGraduate_Picker');
+            $this.html('<ul class="jGraduate_tabs">' +
+            				'<li class="jGraduate_tab_color jGraduate_tab_current" data-type="col">Solid Color</li>' +
+            				'<li class="jGraduate_tab_lingrad" data-type="lg">Linear Gradient</li>' +
+            				'<li class="jGraduate_tab_radgrad" data-type="rg">Radial Gradient</li>' +
+            			'</ul>' +
+            			'<div class="jGraduate_colPick"></div>' +
+            			'<div class="jGraduate_gradPick"></div>' +
+						'<div class="jGraduate_LightBox"></div>' +
+						'<div id="' + id + '_jGraduate_stopPicker" class="jGraduate_stopPicker"></div>'
+            			
+            			
+            			);
+			var colPicker = $(idref + '> .jGraduate_colPick');
+			var gradPicker = $(idref + '> .jGraduate_gradPick');
+			
+            gradPicker.html(
+            	'<div id="' + id + '_jGraduate_Swatch" class="jGraduate_Swatch">' +
+            		'<h2 class="jGraduate_Title">' + $settings.window.pickerTitle + '</h2>' +
+            		'<div id="' + id + '_jGraduate_GradContainer" class="jGraduate_GradContainer"></div>' +
+            		'<div id="' + id + '_jGraduate_StopSlider" class="jGraduate_StopSlider"></div>' +
+            	'</div>' + 
+            	'<div class="jGraduate_Form jGraduate_Points jGraduate_lg_field">' +
+            		'<div class="jGraduate_StopSection">' +
+	            		'<label class="jGraduate_Form_Heading">Begin Point</label>' +
+    	        		'<div class="jGraduate_Form_Section">' +
+        	    			'<label>x:</label>' +
+            				'<input type="text" id="' + id + '_jGraduate_x1" size="3" title="Enter starting x value between 0.0 and 1.0"/>' +
+            				'<label> y:</label>' +
+            				'<input type="text" id="' + id + '_jGraduate_y1" size="3" title="Enter starting y value between 0.0 and 1.0"/>' +
+        	   			'</div>' +
+        	   		'</div>' +
+        	   		'<div class="jGraduate_StopSection">' +
+	            		'<label class="jGraduate_Form_Heading">End Point</label>' +
+    	        		'<div class="jGraduate_Form_Section">' +
+	    	        		'<label>x:</label>' +
+		    	        	'<input type="text" id="' + id + '_jGraduate_x2" size="3" title="Enter ending x value between 0.0 and 1.0"/>' +
+    		    	    	'<label> y:</label>' +
+        		    		'<input type="text" id="' + id + '_jGraduate_y2" size="3" title="Enter ending y value between 0.0 and 1.0"/>' +
+    	    	    	'</div>' +
+    	    	    '</div>' +
+    	       	'</div>' +
+            	'<div class="jGraduate_Form jGraduate_Points jGraduate_rg_field">' +
+					'<div class="jGraduate_StopSection">' +
+						'<label class="jGraduate_Form_Heading">Center Point</label>' +
+						'<div class="jGraduate_Form_Section">' +
+							'<label>x:</label>' +
+							'<input type="text" id="' + id + '_jGraduate_cx" size="3" title="Enter x value between 0.0 and 1.0"/>' +
+							'<label> y:</label>' +
+							'<input type="text" id="' + id + '_jGraduate_cy" size="3" title="Enter y value between 0.0 and 1.0"/>' +
+						'</div>' +
+					'</div>' +
+					'<div class="jGraduate_StopSection">' +
+						'<label class="jGraduate_Form_Heading">Focal Point</label>' +
+						'<div class="jGraduate_Form_Section">' +
+							'<label>Match center: <input type="checkbox" checked="checked" id="' + id + '_jGraduate_match_ctr"/></label><br/>' +
+							'<label>x:</label>' +
+							'<input type="text" id="' + id + '_jGraduate_fx" size="3" title="Enter x value between 0.0 and 1.0"/>' +
+							'<label> y:</label>' +
+							'<input type="text" id="' + id + '_jGraduate_fy" size="3" title="Enter y value between 0.0 and 1.0"/>' +
+						'</div>' +
+					'</div>' +
+    	       	'</div>' +
+				'<div class="jGraduate_StopSection jGraduate_SpreadMethod">' +
+					'<label class="jGraduate_Form_Heading">Spread method</label>' +
+					'<div class="jGraduate_Form_Section">' +
+						'<select class="jGraduate_spreadMethod">' +
+							'<option value=pad selected>Pad</option>' +
+							'<option value=reflect>Reflect</option>' +
+							'<option value=repeat>Repeat</option>' +
+						'</select>' + 
+					'</div>' +
+				'</div>' +
+            	'<div class="jGraduate_Form">' +
+        	   		'<div class="jGraduate_Slider jGraduate_RadiusField jGraduate_rg_field">' +
+						'<label class="prelabel">Radius:</label>' +
+						'<div id="' + id + '_jGraduate_Radius" class="jGraduate_SliderBar jGraduate_Radius" title="Click to set radius">' +
+							'<img id="' + id + '_jGraduate_RadiusArrows" class="jGraduate_RadiusArrows" src="' + $settings.images.clientPath + 'rangearrows2.gif">' +
+						'</div>' +
+						'<label><input type="text" id="' + id + '_jGraduate_RadiusInput" size="3" value="100"/>%</label>' + 
+    	    	    '</div>' +
+        	   		'<div class="jGraduate_Slider jGraduate_EllipField jGraduate_rg_field">' +
+						'<label class="prelabel">Ellip:</label>' +
+						'<div id="' + id + '_jGraduate_Ellip" class="jGraduate_SliderBar jGraduate_Ellip" title="Click to set Ellip">' +
+							'<img id="' + id + '_jGraduate_EllipArrows" class="jGraduate_EllipArrows" src="' + $settings.images.clientPath + 'rangearrows2.gif">' +
+						'</div>' +
+						'<label><input type="text" id="' + id + '_jGraduate_EllipInput" size="3" value="0"/>%</label>' + 
+    	    	    '</div>' +
+        	   		'<div class="jGraduate_Slider jGraduate_AngleField jGraduate_rg_field">' +
+						'<label class="prelabel">Angle:</label>' +
+						'<div id="' + id + '_jGraduate_Angle" class="jGraduate_SliderBar jGraduate_Angle" title="Click to set Angle">' +
+							'<img id="' + id + '_jGraduate_AngleArrows" class="jGraduate_AngleArrows" src="' + $settings.images.clientPath + 'rangearrows2.gif">' +
+						'</div>' +
+						'<label><input type="text" id="' + id + '_jGraduate_AngleInput" size="3" value="0"/>º&nbsp;</label>' + 
+    	    	    '</div>' +
+        	   		'<div class="jGraduate_Slider jGraduate_OpacField">' +
+						'<label class="prelabel">Opac:</label>' +
+						'<div id="' + id + '_jGraduate_Opac" class="jGraduate_SliderBar jGraduate_Opac" title="Click to set Opac">' +
+							'<img id="' + id + '_jGraduate_OpacArrows" class="jGraduate_OpacArrows" src="' + $settings.images.clientPath + 'rangearrows2.gif">' +
+						'</div>' +
+						'<label><input type="text" id="' + id + '_jGraduate_OpacInput" size="3" value="100"/>%</label>' + 
+    	    	    '</div>' +
+    	       	'</div>' +
+        	    '<div class="jGraduate_OkCancel">' +
+            		'<input type="button" id="' + id + '_jGraduate_Ok" class="jGraduate_Ok" value="OK"/>' +
+            		'<input type="button" id="' + id + '_jGraduate_Cancel" class="jGraduate_Cancel" value="Cancel"/>' +
+            	'</div>');
+            	
+			// --------------
+            // Set up all the SVG elements (the gradient, stops and rectangle)
+            var MAX = 256, MARGINX = 0, MARGINY = 0, STOP_RADIUS = 15/2,
+            	SIZEX = MAX - 2*MARGINX, SIZEY = MAX - 2*MARGINY;
+            	
+            var curType, curGradient, previewRect;	
+            
+			var attr_input = {};
+            
+            var SLIDERW = 145;
+            $('.jGraduate_SliderBar').width(SLIDERW);
+			
+			var container = $('#' + id+'_jGraduate_GradContainer')[0];
+			
+			var svg = mkElem('svg', {
+				id: id + '_jgraduate_svg',
+				width: MAX,
+				height: MAX,
+				xmlns: ns.svg
+			}, container);
+			
+			// if we are sent a gradient, import it 
+			
+			curType = curType || $this.paint.type;
+			
+			var grad = curGradient = $this.paint[curType];
+			
+			var gradalpha = $this.paint.alpha;
+			
+			var isSolid = curType === 'solidColor';
+			
+			// Make any missing gradients
+			switch ( curType ) {
+				case "solidColor":
+					// fall through
+				case "linearGradient":
+					if(!isSolid) {
+						curGradient.id = id+'_lg_jgraduate_grad';
+						grad = curGradient = svg.appendChild(curGradient);//.cloneNode(true));
+					}
+					mkElem('radialGradient', {
+						id: id + '_rg_jgraduate_grad'
+					}, svg);
+					if(curType === "linearGradient") break;
+				case "radialGradient":
+					if(!isSolid) {
+						curGradient.id = id+'_rg_jgraduate_grad';
+						grad = curGradient = svg.appendChild(curGradient);//.cloneNode(true));
+					}
+					mkElem('linearGradient', {
+						id: id + '_lg_jgraduate_grad'
+					}, svg);
+			}
+			
+			if(isSolid) {
+				grad = curGradient = $('#' + id + '_lg_jgraduate_grad')[0];
+				var color = $this.paint[curType];
+				mkStop(0, '#' + color, 1);
+				
+				var type = typeof $settings.newstop;
+				
+				if(type === 'string') {
+					switch ( $settings.newstop ) {
+						case 'same':
+							mkStop(1, '#' + color, 1);				
+							break;
+
+						case 'inverse':
+							// Invert current color for second stop
+							var inverted = '';
+							
+							for(var i = 0; i < 6; i += 2) {
+								var ch = color.substr(i, 2);
+								var inv = (255 - parseInt(color.substr(i, 2), 16)).toString(16);
+								if(inv.length < 2) inv = 0 + inv;
+								inverted += inv;
+							}
+							mkStop(1, '#' + inverted, 1);
+							break;
+						
+						case 'white':
+							mkStop(1, '#ffffff', 1);
+							break;
+	
+						case 'black':
+							mkStop(1, '#000000', 1);
+							break;
+					}
+				} else if(type === 'object'){
+					var opac = ('opac' in $settings.newstop) ? $settings.newstop.opac : 1;
+					mkStop(1, ($settings.newstop.color || '#' + color), opac);
+				}
+			}
+
+			
+			var x1 = parseFloat(grad.getAttribute('x1')||0.0),
+				y1 = parseFloat(grad.getAttribute('y1')||0.0),
+				x2 = parseFloat(grad.getAttribute('x2')||1.0),
+				y2 = parseFloat(grad.getAttribute('y2')||0.0);
+				
+			var cx = parseFloat(grad.getAttribute('cx')||0.5),
+				cy = parseFloat(grad.getAttribute('cy')||0.5),
+				fx = parseFloat(grad.getAttribute('fx')|| cx),
+				fy = parseFloat(grad.getAttribute('fy')|| cy);
+
+			
+			var previewRect = mkElem('rect', {
+				id: id + '_jgraduate_rect',
+				x: MARGINX,
+				y: MARGINY,
+				width: SIZEX,
+				height: SIZEY,
+				fill: 'url(#'+id+'_jgraduate_grad)',
+				'fill-opacity': gradalpha/100
+			}, svg);
+			
+			// stop visuals created here
+			var beginCoord = $('<div/>').attr({
+				'class': 'grad_coord jGraduate_lg_field',
+				title: 'Begin Stop'
+			}).text(1).css({
+				top: y1 * MAX,
+				left: x1 * MAX
+			}).data('coord', 'start').appendTo(container);
+			
+			var endCoord = beginCoord.clone().text(2).css({
+				top: y2 * MAX,
+				left: x2 * MAX
+			}).attr('title', 'End stop').data('coord', 'end').appendTo(container);
+		
+			var centerCoord = $('<div/>').attr({
+				'class': 'grad_coord jGraduate_rg_field',
+				title: 'Center stop'
+			}).text('C').css({
+				top: cy * MAX,
+				left: cx * MAX
+			}).data('coord', 'center').appendTo(container);
+			
+			var focusCoord = centerCoord.clone().text('F').css({
+				top: fy * MAX,
+				left: fx * MAX,
+				display: 'none'
+			}).attr('title', 'Focus point').data('coord', 'focus').appendTo(container);
+			
+			focusCoord[0].id = id + '_jGraduate_focusCoord';
+			
+			var coords = $(idref + ' .grad_coord');
+			
+// 			$(container).hover(function() {
+// 				coords.animate({
+// 					opacity: 1
+// 				}, 500);
+// 			}, function() {
+// 				coords.animate({
+// 					opacity: .2
+// 				}, 500);				
+// 			});
+			
+			$.each(['x1', 'y1', 'x2', 'y2', 'cx', 'cy', 'fx', 'fy'], function(i, attr) {
+				var attrval = curGradient.getAttribute(attr);
+				
+				var isRadial = isNaN(attr[1]);
+				
+				if(!attrval) {
+					// Set defaults
+					if(isRadial) {
+						// For radial points
+						attrval = "0.5";
+					} else {
+						// Only x2 is 1
+						attrval = attr === 'x2' ? "1.0" : "0.0";
+					}
+				}
+
+				attr_input[attr] = $('#'+id+'_jGraduate_' + attr)
+					.val(attrval)
+					.change(function() {
+						// TODO: Support values < 0 and > 1 (zoomable preview?)
+						if (isNaN(parseFloat(this.value)) || this.value < 0) {
+							this.value = 0.0; 
+						} else if(this.value > 1) {
+							this.value = 1.0;
+						}
+						
+						if(!(attr[0] === 'f' && !showFocus)) {
+							if(isRadial && curType === 'radialGradient' || !isRadial && curType === 'linearGradient') {
+								curGradient.setAttribute(attr, this.value);
+							}
+						}
+						
+						if(isRadial) {
+							var $elem = attr[0] === "c" ? centerCoord : focusCoord;
+						} else {
+							var $elem = attr[1] === "1" ? beginCoord : endCoord;						
+						}
+						
+						var cssName = attr.indexOf('x') >= 0 ? 'left' : 'top';
+						
+						$elem.css(cssName, this.value * MAX);
+				}).change();
+			});
+
+
+			
+			function mkStop(n, color, opac, sel, stop_elem) {
+				var stop = stop_elem || mkElem('stop',{'stop-color':color,'stop-opacity':opac,offset:n}, curGradient);
+				if(stop_elem) {
+					color = stop_elem.getAttribute('stop-color');
+					opac = stop_elem.getAttribute('stop-opacity');
+					n = stop_elem.getAttribute('offset');
+				} else {
+					curGradient.appendChild(stop);
+				}
+				if(opac === null) opac = 1;
+				
+				var picker_d = 'M-6.2,0.9c3.6-4,6.7-4.3,6.7-12.4c-0.2,7.9,3.1,8.8,6.5,12.4c3.5,3.8,2.9,9.6,0,12.3c-3.1,2.8-10.4,2.7-13.2,0C-9.6,9.9-9.4,4.4-6.2,0.9z';
+				
+				var pathbg = mkElem('path',{
+					d: picker_d,
+					fill: 'url(#jGraduate_trans)',
+					transform: 'translate(' + (10 + n * MAX) + ', 26)'
+				}, stopGroup);
+				
+				var path = mkElem('path',{
+					d: picker_d,
+					fill: color,
+					'fill-opacity': opac,
+					transform: 'translate(' + (10 + n * MAX) + ', 26)',
+					stroke: '#000',
+					'stroke-width': 1.5
+				}, stopGroup);
+
+				$(path).mousedown(function(e) {
+					selectStop(this);
+					drag = cur_stop;
+					$win.mousemove(dragColor).mouseup(remDrags);
+					stop_offset = stopMakerDiv.offset();
+					e.preventDefault();
+					return false;
+				}).data('stop', stop).data('bg', pathbg).dblclick(function() {
+					$('div.jGraduate_LightBox').show();			
+					var colorhandle = this;
+					var stopOpacity = +stop.getAttribute('stop-opacity') || 1;
+					var stopColor = stop.getAttribute('stop-color') || 1;
+					var thisAlpha = (parseFloat(stopOpacity)*255).toString(16);
+					while (thisAlpha.length < 2) { thisAlpha = "0" + thisAlpha; }
+					color = stopColor.substr(1) + thisAlpha;
+					$('#'+id+'_jGraduate_stopPicker').css({'left': 100, 'bottom': 15}).jPicker({
+							window: { title: "Pick the start color and opacity for the gradient" },
+							images: { clientPath: $settings.images.clientPath },
+							color: { active: color, alphaSupport: true }
+						}, function(color, arg2){
+							stopColor = color.val('hex') ? ('#'+color.val('hex')) : "none";
+							stopOpacity = color.val('a') !== null ? color.val('a')/256 : 1;
+							colorhandle.setAttribute('fill', stopColor);
+							colorhandle.setAttribute('fill-opacity', stopOpacity);
+							stop.setAttribute('stop-color', stopColor);
+							stop.setAttribute('stop-opacity', stopOpacity);
+							$('div.jGraduate_LightBox').hide();
+							$('#'+id+'_jGraduate_stopPicker').hide();
+						}, null, function() {
+							$('div.jGraduate_LightBox').hide();
+							$('#'+id+'_jGraduate_stopPicker').hide();
+						});
+				});
+				
+				$(curGradient).find('stop').each(function() {
+					var cur_s = $(this);
+					if(+this.getAttribute('offset') > n) {
+						if(!color) {
+							var newcolor = this.getAttribute('stop-color');
+							var newopac = this.getAttribute('stop-opacity');
+							stop.setAttribute('stop-color', newcolor);
+							path.setAttribute('fill', newcolor);
+							stop.setAttribute('stop-opacity', newopac === null ? 1 : newopac);
+							path.setAttribute('fill-opacity', newopac === null ? 1 : newopac);
+						}
+						cur_s.before(stop);
+						return false;
+					}
+				});
+				if(sel) selectStop(path);
+				return stop;
+			}
+			
+			function remStop() {
+				delStop.setAttribute('display', 'none');
+				var path = $(cur_stop);
+				var stop = path.data('stop');
+				var bg = path.data('bg');
+				$([cur_stop, stop, bg]).remove();
+			}
+			
+				
+			var stops, stopGroup;
+			
+			var stopMakerDiv = $('#' + id + '_jGraduate_StopSlider');
+
+			var cur_stop, stopGroup, stopMakerSVG, drag;
+			
+			var delStop = mkElem('path',{
+				d:'m9.75,-6l-19.5,19.5m0,-19.5l19.5,19.5',
+				fill:'none',
+				stroke:'#D00',
+				'stroke-width':5,
+				display:'none'
+			}, stopMakerSVG);
+
+			
+			function selectStop(item) {
+				if(cur_stop) cur_stop.setAttribute('stroke', '#000');
+				item.setAttribute('stroke', 'blue');
+				cur_stop = item;
+				cur_stop.parentNode.appendChild(cur_stop);
+			// 	stops = $('stop');
+			// 	opac_select.val(cur_stop.attr('fill-opacity') || 1);
+			// 	root.append(delStop);
+			}
+			
+			var stop_offset;
+			
+			function remDrags() {
+				$win.unbind('mousemove', dragColor);
+				if(delStop.getAttribute('display') !== 'none') {
+					remStop();
+				}
+				drag = null;
+			}
+			
+			var scale_x = 1, scale_y = 1, angle = 0;
+			var c_x = cx;
+			var c_y = cy;
+			
+			function xform() {
+				var rot = angle?'rotate(' + angle + ',' + c_x + ',' + c_y + ') ':'';
+				if(scale_x === 1 && scale_y === 1) {
+					curGradient.removeAttribute('gradientTransform');
+// 					$('#ang').addClass('dis');
+				} else {
+					var x = -c_x * (scale_x-1);
+					var y = -c_y * (scale_y-1);
+					curGradient.setAttribute('gradientTransform', rot + 'translate(' + x + ',' + y + ') scale(' + scale_x + ',' + scale_y + ')');
+// 					$('#ang').removeClass('dis');
+				}
+			}
+			
+			function dragColor(evt) {
+
+				var x = evt.pageX - stop_offset.left;
+				var y = evt.pageY - stop_offset.top;
+				x = x < 10 ? 10 : x > MAX + 10 ? MAX + 10: x;
+
+				var xf_str = 'translate(' + x + ', 26)';
+					if(y < -60 || y > 130) {
+						delStop.setAttribute('display', 'block');
+						delStop.setAttribute('transform', xf_str);
+					} else {
+						delStop.setAttribute('display', 'none');
+					}
+				
+				drag.setAttribute('transform', xf_str);
+				$.data(drag, 'bg').setAttribute('transform', xf_str);
+				var stop = $.data(drag, 'stop');
+				var s_x = (x - 10) / MAX;
+				
+				stop.setAttribute('offset', s_x);
+				var last = 0;
+				
+				$(curGradient).find('stop').each(function(i) {
+					var cur = this.getAttribute('offset');
+					var t = $(this);
+					if(cur < last) {
+						t.prev().before(t);
+						stops = $(curGradient).find('stop');
+					}
+					last = cur;
+				});
+				
+			}
+			
+			stopMakerSVG = mkElem('svg', {
+				width: '100%',
+				height: 45
+			}, stopMakerDiv[0]);
+			
+			var trans_pattern = mkElem('pattern', {
+				width: 16,
+				height: 16,
+				patternUnits: 'userSpaceOnUse',
+				id: 'jGraduate_trans'
+			}, stopMakerSVG);
+			
+			var trans_img = mkElem('image', {
+				width: 16,
+				height: 16
+			}, trans_pattern);
+			
+			var bg_image = $settings.images.clientPath + 'map-opacity.png';
+
+			trans_img.setAttributeNS(ns.xlink, 'xlink:href', bg_image);
+			
+			$(stopMakerSVG).on("click touchstart", function(evt) {
+				stop_offset = stopMakerDiv.offset();
+				var target = evt.target;
+				if(target.tagName === 'path') return;
+				var x = evt.pageX - stop_offset.left - 8;
+				x = x < 10 ? 10 : x > MAX + 10 ? MAX + 10: x;
+				mkStop(x / MAX, 0, 0, true);
+				evt.stopPropagation();
+			});
+			
+			$(stopMakerSVG).mouseover(function() {
+				stopMakerSVG.appendChild(delStop);
+			});
+			
+			stopGroup = mkElem('g', {}, stopMakerSVG);
+			
+			mkElem('line', {
+				x1: 10,
+				y1: 15,
+				x2: MAX + 10,
+				y2: 15,
+				'stroke-width': 2,
+				stroke: '#000'
+			}, stopMakerSVG);
+			
+			
+			var spreadMethodOpt = gradPicker.find('.jGraduate_spreadMethod').change(function() {
+				curGradient.setAttribute('spreadMethod', $(this).val());
+			});
+			
+		
+			// handle dragging the stop around the swatch
+			var draggingCoord = null;
+			
+			var onCoordDrag = function(evt) {
+				var x = evt.pageX - offset.left;
+				var y = evt.pageY - offset.top;
+
+				// clamp stop to the swatch
+				x = x < 0 ? 0 : x > MAX ? MAX : x;
+				y = y < 0 ? 0 : y > MAX ? MAX : y;
+				
+				draggingCoord.css('left', x).css('top', y);
+
+				// calculate stop offset            		
+				var fracx = x / SIZEX;
+				var fracy = y / SIZEY;
+				
+				var type = draggingCoord.data('coord');
+				var grad = curGradient;
+				
+				switch ( type ) {
+					case 'start':
+						attr_input.x1.val(fracx);
+						attr_input.y1.val(fracy);
+						grad.setAttribute('x1', fracx);
+						grad.setAttribute('y1', fracy);
+						break;
+					case 'end':
+						attr_input.x2.val(fracx);
+						attr_input.y2.val(fracy);
+						grad.setAttribute('x2', fracx);
+						grad.setAttribute('y2', fracy);
+						break;
+					case 'center':
+						attr_input.cx.val(fracx);
+						attr_input.cy.val(fracy);
+						grad.setAttribute('cx', fracx);
+						grad.setAttribute('cy', fracy);
+						c_x = fracx;
+						c_y = fracy;
+						xform();
+						break;
+					case 'focus':
+						attr_input.fx.val(fracx);
+						attr_input.fy.val(fracy);
+						grad.setAttribute('fx', fracx);
+						grad.setAttribute('fy', fracy);
+						xform();
+				}
+				
+				evt.preventDefault();
+			}
+			
+			var onCoordUp = function() {
+				draggingCoord = null;
+				$win.unbind('mousemove', onCoordDrag).unbind('mouseup', onCoordUp);
+			}
+			
+			// Linear gradient
+// 			(function() {
+
+			
+			stops = curGradient.getElementsByTagNameNS(ns.svg, 'stop');
+
+			// if there are not at least two stops, then 
+			if (numstops < 2) {
+				while (numstops < 2) {
+					curGradient.appendChild( document.createElementNS(ns.svg, 'stop') );
+					++numstops;
+				}
+				stops = curGradient.getElementsByTagNameNS(ns.svg, 'stop');
+			}
+			
+			var numstops = stops.length;				
+			for(var i = 0; i < numstops; i++) {
+				mkStop(0, 0, 0, 0, stops[i]);
+			}
+			
+			spreadMethodOpt.val(curGradient.getAttribute('spreadMethod') || 'pad');
+
+			var offset;
+			
+			// No match, so show focus point
+			var showFocus = false; 
+			
+			previewRect.setAttribute('fill-opacity', gradalpha/100);
+
+			
+			$('#' + id + ' div.grad_coord').mousedown(function(evt) {
+				evt.preventDefault();
+				draggingCoord = $(this);
+				var s_pos = draggingCoord.offset();
+				offset = draggingCoord.parent().offset();
+				$win.mousemove(onCoordDrag).mouseup(onCoordUp);
+			});
+			
+			// bind GUI elements
+			$('#'+id+'_jGraduate_Ok').bind('click touchstart', function() {
+				$this.paint.type = curType;
+				$this.paint[curType] = curGradient.cloneNode(true);;
+				$this.paint.solidColor = null;
+				okClicked();
+			});
+			$('#'+id+'_jGraduate_Cancel').bind('click touchstart', function(paint) {
+				cancelClicked();
+			});
+
+			if(curType === 'radialGradient') {
+				if(showFocus) {
+					focusCoord.show();				
+				} else {
+					focusCoord.hide();
+					attr_input.fx.val("");
+					attr_input.fy.val("");
+				}
+			}
+
+			$("#" + id + "_jGraduate_match_ctr")[0].checked = !showFocus;
+			
+			var lastfx, lastfy;
+			
+			$("#" + id + "_jGraduate_match_ctr").change(function() {
+				showFocus = !this.checked;
+				focusCoord.toggle(showFocus);
+				attr_input.fx.val('');
+				attr_input.fy.val('');
+				var grad = curGradient;
+				if(!showFocus) {
+					lastfx = grad.getAttribute('fx');
+					lastfy = grad.getAttribute('fy');
+					grad.removeAttribute('fx');
+					grad.removeAttribute('fy');
+				} else {
+					var fx = lastfx || .5;
+					var fy = lastfy || .5;
+					grad.setAttribute('fx', fx);
+					grad.setAttribute('fy', fy);
+					attr_input.fx.val(fx);
+					attr_input.fy.val(fy);
+				}
+			});
+			
+			var stops = curGradient.getElementsByTagNameNS(ns.svg, 'stop');
+			var numstops = stops.length;
+			// if there are not at least two stops, then 
+			if (numstops < 2) {
+				while (numstops < 2) {
+					curGradient.appendChild( document.createElementNS(ns.svg, 'stop') );
+					++numstops;
+				}
+				stops = curGradient.getElementsByTagNameNS(ns.svg, 'stop');
+			}
+			
+			var slider;
+			
+			var setSlider = function(e) {
+				var offset = slider.offset;
+				var div = slider.parent;
+				var x = (e.pageX - offset.left - parseInt(div.css('border-left-width')));
+				if (x > SLIDERW) x = SLIDERW;
+				if (x <= 0) x = 0;
+				var posx = x - 5;
+				x /= SLIDERW;
+				
+				switch ( slider.type ) {
+					case 'radius':
+						x = Math.pow(x * 2, 2.5);
+						if(x > .98 && x < 1.02) x = 1;
+						if (x <= .01) x = .01;
+						curGradient.setAttribute('r', x);
+						break;
+					case 'opacity':
+						$this.paint.alpha = parseInt(x*100);
+						previewRect.setAttribute('fill-opacity', x);
+						break;
+					case 'ellip':
+						scale_x = 1, scale_y = 1;
+						if(x < .5) {
+							x /= .5; // 0.001
+							scale_x = x <= 0 ? .01 : x;
+						} else if(x > .5) {
+							x /= .5; // 2
+							x = 2 - x;
+							scale_y = x <= 0 ? .01 : x;
+						} 
+						xform();
+						x -= 1;
+						if(scale_y === x + 1) {
+							x = Math.abs(x);
+						}
+						break;
+					case 'angle':
+						x = x - .5;
+						angle = x *= 180;
+						xform();
+						x /= 100;
+						break;
+				}
+				slider.elem.css({'margin-left':posx});
+				x = Math.round(x*100);
+				slider.input.val(x);
+			};
+			
+			var ellip_val = 0, angle_val = 0;
+			
+			if(curType === 'radialGradient') {
+				var tlist = curGradient.gradientTransform.baseVal;
+				if(tlist.numberOfItems === 2) {
+					var t = tlist.getItem(0);
+					var s = tlist.getItem(1);
+					if(t.type === 2 && s.type === 3) {
+						var m = s.matrix;
+						if(m.a !== 1) {
+							ellip_val = Math.round(-(1 - m.a) * 100);	
+						} else if(m.d !== 1) {
+							ellip_val = Math.round((1 - m.d) * 100);
+						} 
+					}
+				} else if(tlist.numberOfItems === 3) {
+					// Assume [R][T][S]
+					var r = tlist.getItem(0);
+					var t = tlist.getItem(1);
+					var s = tlist.getItem(2);
+					
+					if(r.type === 4 
+						&& t.type === 2 
+						&& s.type === 3) {
+
+						angle_val = Math.round(r.angle);
+						var m = s.matrix;
+						if(m.a !== 1) {
+							ellip_val = Math.round(-(1 - m.a) * 100);	
+						} else if(m.d !== 1) {
+							ellip_val = Math.round((1 - m.d) * 100);
+						} 
+						
+					}
+				}
+			}
+			
+			var sliders = {
+				radius: {
+					handle: '#' + id + '_jGraduate_RadiusArrows',
+					input: '#' + id + '_jGraduate_RadiusInput',
+					val: (curGradient.getAttribute('r') || .5) * 100
+				},
+				opacity: {
+					handle: '#' + id + '_jGraduate_OpacArrows',
+					input: '#' + id + '_jGraduate_OpacInput',
+					val: $this.paint.alpha || 100
+				},
+				ellip: {
+					handle: '#' + id + '_jGraduate_EllipArrows',
+					input: '#' + id + '_jGraduate_EllipInput',
+					val: ellip_val
+				},
+				angle: {
+					handle: '#' + id + '_jGraduate_AngleArrows',
+					input: '#' + id + '_jGraduate_AngleInput',
+					val: angle_val
+				}
+			}
+			
+			$.each(sliders, function(type, data) {
+				var handle = $(data.handle);
+				handle.mousedown(function(evt) {
+					var parent = handle.parent();
+					slider = {
+						type: type,
+						elem: handle,
+						input: $(data.input),
+						parent: parent,
+						offset: parent.offset()
+					};
+					$win.mousemove(dragSlider).mouseup(stopSlider);
+					evt.preventDefault();
+				});
+				
+				$(data.input).val(data.val).change(function() {
+					var val = +this.value;
+					var xpos = 0;
+					var isRad = curType === 'radialGradient';
+					switch ( type ) {
+						case 'radius':
+							if(isRad) curGradient.setAttribute('r', val / 100);
+							xpos = (Math.pow(val / 100, 1 / 2.5) / 2) * SLIDERW;
+							break;
+						
+						case 'opacity':
+							$this.paint.alpha = val;
+							previewRect.setAttribute('fill-opacity', val / 100);
+							xpos = val * (SLIDERW / 100);
+							break;
+							
+						case 'ellip':
+							scale_x = scale_y = 1;
+							if(val === 0) {
+								xpos = SLIDERW * .5;
+								break;
+							}
+							if(val > 99.5) val = 99.5;
+							if(val > 0) {
+								scale_y = 1 - (val / 100);
+							} else {
+								scale_x = - (val / 100) - 1;
+							}
+
+							xpos = SLIDERW * ((val + 100) / 2) / 100;
+							if(isRad) xform();
+							break;
+						
+						case 'angle':
+							angle = val;
+							xpos = angle / 180;
+							xpos += .5;
+							xpos *= SLIDERW;
+							if(isRad) xform();
+					}
+					if(xpos > SLIDERW) {
+						xpos = SLIDERW;
+					} else if(xpos < 0) {
+						xpos = 0;
+					}
+					handle.css({'margin-left': xpos - 5});
+				}).change();
+			});
+			
+			var dragSlider = function(evt) {
+				setSlider(evt);
+				evt.preventDefault();
+			};
+			
+			var stopSlider = function(evt) {
+				$win.unbind('mousemove', dragSlider).unbind('mouseup', stopSlider);
+				slider = null;
+			};
+			
+			
+			// --------------
+			var thisAlpha = ($this.paint.alpha*255/100).toString(16);
+			while (thisAlpha.length < 2) { thisAlpha = "0" + thisAlpha; }
+			thisAlpha = thisAlpha.split(".")[0];
+			color = $this.paint.solidColor == "none" ? "" : $this.paint.solidColor + thisAlpha;
+			
+			if(!isSolid) {
+				color = stops[0].getAttribute('stop-color');
+			}
+			
+			// This should be done somewhere else, probably
+			$.extend($.fn.jPicker.defaults.window, {
+				alphaSupport: true, effects: {type: 'show',speed: 0}
+			});
+			
+			colPicker.jPicker(
+				{
+					window: { title: $settings.window.pickerTitle },
+					images: { clientPath: $settings.images.clientPath },
+					color: { active: color, alphaSupport: true }
+				},
+				function(color) {
+					$this.paint.type = "solidColor";
+					$this.paint.alpha = color.val('ahex') ? Math.round((color.val('a') / 255) * 100) : 100;
+					$this.paint.solidColor = color.val('hex') ? color.val('hex') : "none";
+					$this.paint.radialGradient = null;
+					okClicked(); 
+				},
+				null,
+				function(){ cancelClicked(); }
+				);
+
+			
+			var tabs = $(idref + ' .jGraduate_tabs li');
+			tabs.on("click touchstart", function() {
+				tabs.removeClass('jGraduate_tab_current');
+				$(this).addClass('jGraduate_tab_current');
+				$(idref + " > div").hide();
+				var type = $(this).attr('data-type');
+				var container = $(idref + ' .jGraduate_gradPick').show();
+				if(type === 'rg' || type === 'lg') {
+					// Show/hide appropriate fields
+					$('.jGraduate_' + type + '_field').show();
+					$('.jGraduate_' + (type === 'lg' ? 'rg' : 'lg') + '_field').hide();
+					
+					$('#' + id + '_jgraduate_rect')[0].setAttribute('fill', 'url(#' + id + '_' + type + '_jgraduate_grad)');
+					
+					// Copy stops
+					
+					curType = type === 'lg' ? 'linearGradient' : 'radialGradient';
+					
+					$('#' + id + '_jGraduate_OpacInput').val($this.paint.alpha).change();
+					
+					var newGrad = $('#' + id + '_' + type + '_jgraduate_grad')[0];
+					
+					if(curGradient !== newGrad) {
+						var cur_stops = $(curGradient).find('stop');	
+						$(newGrad).empty().append(cur_stops);
+						curGradient = newGrad;
+						var sm = spreadMethodOpt.val();
+						curGradient.setAttribute('spreadMethod', sm);
+					}
+					showFocus = type === 'rg' && curGradient.getAttribute('fx') != null && !(cx == fx && cy == fy);
+					$('#' + id + '_jGraduate_focusCoord').toggle(showFocus);
+					if(showFocus) {
+						$('#' + id + '_jGraduate_match_ctr')[0].checked = false;
+					}
+				} else {
+					$(idref + ' .jGraduate_gradPick').hide();
+					$(idref + ' .jGraduate_colPick').show();
+				}
+			});
+			$(idref + " > div").hide();
+			tabs.removeClass('jGraduate_tab_current');
+			var tab;
+			switch ( $this.paint.type ) {
+				case 'linearGradient':
+					tab = $(idref + ' .jGraduate_tab_lingrad');
+					break;
+				case 'radialGradient':
+					tab = $(idref + ' .jGraduate_tab_radgrad');
+					break;
+				default:
+					tab = $(idref + ' .jGraduate_tab_color');
+					break;
+			}
+			$this.show();
+			
+			// jPicker will try to show after a 0ms timeout, so need to fire this after that
+			setTimeout(function() {
+				tab.addClass('jGraduate_tab_current').click();	
+			}, 10);
+		});
+	};
+})();
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/jgraduate/jquery.jgraduate.min.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/jgraduate/jquery.jgraduate.min.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/jgraduate/jquery.jgraduate.min.js	(revision 29468)
@@ -0,0 +1,37 @@
+﻿(function(){function r(i,z,t){i=document.createElementNS(A.svg,i);if(Ba)for(var B in z)i.setAttribute(B,z[B]);else for(B in z){var W=z[B],w=i[B];if(w&&w.constructor==="SVGLength")w.baseVal.value=W;else i.setAttribute(B,W)}t&&t.appendChild(i);return i}var A={svg:"http://www.w3.org/2000/svg",xlink:"http://www.w3.org/1999/xlink"};if(!window.console)window.console=new function(){this.log=function(){};this.dir=function(){}};$.jGraduate={Paint:function(i){i=i||{};this.alpha=isNaN(i.alpha)?100:i.alpha;if(i.copy){this.type=
+i.copy.type;this.alpha=i.copy.alpha;this.radialGradient=this.linearGradient=this.solidColor=null;switch(this.type){case "solidColor":this.solidColor=i.copy.solidColor;break;case "linearGradient":this.linearGradient=i.copy.linearGradient.cloneNode(true);break;case "radialGradient":this.radialGradient=i.copy.radialGradient.cloneNode(true)}}else if(i.linearGradient){this.type="linearGradient";this.radialGradient=this.solidColor=null;this.linearGradient=i.linearGradient.cloneNode(true)}else if(i.radialGradient){this.type=
+"radialGradient";this.linearGradient=this.solidColor=null;this.radialGradient=i.radialGradient.cloneNode(true)}else if(i.solidColor){this.type="solidColor";this.solidColor=i.solidColor}else{this.type="none";this.radialGradient=this.linearGradient=this.solidColor=null}}};jQuery.fn.jGraduateDefaults={paint:new $.jGraduate.Paint,window:{pickerTitle:"Drag markers to pick a paint"},images:{clientPath:"images/"},newstop:"inverse"};var Ba=navigator.userAgent.indexOf("Gecko/")>=0;jQuery.fn.jGraduate=function(i){var z=
+arguments;return this.each(function(){function t(c,a,d,h,f){var l=f||r("stop",{"stop-color":a,"stop-opacity":d,offset:c},g);if(f){a=f.getAttribute("stop-color");d=f.getAttribute("stop-opacity");c=f.getAttribute("offset")}else g.appendChild(l);if(d===null)d=1;f=r("path",{d:"M-6.2,0.9c3.6-4,6.7-4.3,6.7-12.4c-0.2,7.9,3.1,8.8,6.5,12.4c3.5,3.8,2.9,9.6,0,12.3c-3.1,2.8-10.4,2.7-13.2,0C-9.6,9.9-9.4,4.4-6.2,0.9z",fill:"url(#jGraduate_trans)",transform:"translate("+(10+c*j)+", 26)"},fa);var X=r("path",{d:"M-6.2,0.9c3.6-4,6.7-4.3,6.7-12.4c-0.2,7.9,3.1,8.8,6.5,12.4c3.5,3.8,2.9,9.6,0,12.3c-3.1,2.8-10.4,2.7-13.2,0C-9.6,9.9-9.4,4.4-6.2,0.9z",
+fill:a,"fill-opacity":d,transform:"translate("+(10+c*j)+", 26)",stroke:"#000","stroke-width":1.5},fa);$(X).mousedown(function(M){B(this);R=F;N.mousemove(la).mouseup(W);S=ga.offset();M.preventDefault();return false}).data("stop",l).data("bg",f).dblclick(function(){$("div.jGraduate_LightBox").show();for(var M=this,I=+l.getAttribute("stop-opacity")||1,C=l.getAttribute("stop-color")||1,Y=(parseFloat(I)*255).toString(16);Y.length<2;)Y="0"+Y;a=C.substr(1)+Y;$("#"+b+"_jGraduate_stopPicker").css({left:100,
+bottom:15}).jPicker({window:{title:"Pick the start color and opacity for the gradient"},images:{clientPath:o.images.clientPath},color:{active:a,alphaSupport:true}},function(Z){C=Z.val("hex")?"#"+Z.val("hex"):"none";I=Z.val("a")!==null?Z.val("a")/256:1;M.setAttribute("fill",C);M.setAttribute("fill-opacity",I);l.setAttribute("stop-color",C);l.setAttribute("stop-opacity",I);$("div.jGraduate_LightBox").hide();$("#"+b+"_jGraduate_stopPicker").hide()},null,function(){$("div.jGraduate_LightBox").hide();
+$("#"+b+"_jGraduate_stopPicker").hide()})});$(g).find("stop").each(function(){var M=$(this);if(+this.getAttribute("offset")>c){if(!a){var I=this.getAttribute("stop-color"),C=this.getAttribute("stop-opacity");l.setAttribute("stop-color",I);X.setAttribute("fill",I);l.setAttribute("stop-opacity",C===null?1:C);X.setAttribute("fill-opacity",C===null?1:C)}M.before(l);return false}});h&&B(X);return l}function B(c){F&&F.setAttribute("stroke","#000");c.setAttribute("stroke","blue");F=c;F.parentNode.appendChild(F)}
+function W(){N.unbind("mousemove",la);if(O.getAttribute("display")!=="none"){O.setAttribute("display","none");var c=$(F),a=c.data("stop");c=c.data("bg");$([F,a,c]).remove()}R=null}function w(){var c=T?"rotate("+T+","+ha+","+ia+") ":"";J===1&&G===1?g.removeAttribute("gradientTransform"):g.setAttribute("gradientTransform",c+"translate("+-ha*(J-1)+","+-ia*(G-1)+") scale("+J+","+G+")")}function la(c){var a=c.pageX-S.left;c=c.pageY-S.top;a=a<10?10:a>j+10?j+10:a;var d="translate("+a+", 26)";if(c<-60||c>
+130){O.setAttribute("display","block");O.setAttribute("transform",d)}else O.setAttribute("display","none");R.setAttribute("transform",d);$.data(R,"bg").setAttribute("transform",d);$.data(R,"stop").setAttribute("offset",(a-10)/j);var h=0;$(g).find("stop").each(function(){var f=this.getAttribute("offset"),l=$(this);if(f<h){l.prev().before(l);D=$(g).find("stop")}h=f})}var e=$(this),o=$.extend(true,{},jQuery.fn.jGraduateDefaults,i),b=e.attr("id"),s="#"+e.attr("id")+" ";if(s){var ma=function(){switch(e.paint.type){case "radialGradient":e.paint.linearGradient=
+null;break;case "linearGradient":e.paint.radialGradient=null;break;case "solidColor":e.paint.radialGradient=e.paint.linearGradient=null}$.isFunction(e.okCallback)&&e.okCallback(e.paint);e.hide()},na=function(){$.isFunction(e.cancelCallback)&&e.cancelCallback();e.hide()};$.extend(true,e,{paint:new $.jGraduate.Paint({copy:o.paint}),okCallback:$.isFunction(z[1])&&z[1]||null,cancelCallback:$.isFunction(z[2])&&z[2]||null});e.position();var u=null,N=$(window);if(e.paint.type=="none")e.paint=$.jGraduate.Paint({solidColor:"ffffff"});
+e.addClass("jGraduate_Picker");e.html('<ul class="jGraduate_tabs"><li class="jGraduate_tab_color jGraduate_tab_current" data-type="col">Solid Color</li><li class="jGraduate_tab_lingrad" data-type="lg">Linear Gradient</li><li class="jGraduate_tab_radgrad" data-type="rg">Radial Gradient</li></ul><div class="jGraduate_colPick"></div><div class="jGraduate_gradPick"></div><div class="jGraduate_LightBox"></div><div id="'+b+'_jGraduate_stopPicker" class="jGraduate_stopPicker"></div>');var Ca=$(s+"> .jGraduate_colPick"),
+n=$(s+"> .jGraduate_gradPick");n.html('<div id="'+b+'_jGraduate_Swatch" class="jGraduate_Swatch"><h2 class="jGraduate_Title">'+o.window.pickerTitle+'</h2><div id="'+b+'_jGraduate_GradContainer" class="jGraduate_GradContainer"></div><div id="'+b+'_jGraduate_StopSlider" class="jGraduate_StopSlider"></div></div><div class="jGraduate_Form jGraduate_Points jGraduate_lg_field"><div class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">Begin Point</label><div class="jGraduate_Form_Section"><label>x:</label><input type="text" id="'+
+b+'_jGraduate_x1" size="3" title="Enter starting x value between 0.0 and 1.0"/><label> y:</label><input type="text" id="'+b+'_jGraduate_y1" size="3" title="Enter starting y value between 0.0 and 1.0"/></div></div><div class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">End Point</label><div class="jGraduate_Form_Section"><label>x:</label><input type="text" id="'+b+'_jGraduate_x2" size="3" title="Enter ending x value between 0.0 and 1.0"/><label> y:</label><input type="text" id="'+
+b+'_jGraduate_y2" size="3" title="Enter ending y value between 0.0 and 1.0"/></div></div></div><div class="jGraduate_Form jGraduate_Points jGraduate_rg_field"><div class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">Center Point</label><div class="jGraduate_Form_Section"><label>x:</label><input type="text" id="'+b+'_jGraduate_cx" size="3" title="Enter x value between 0.0 and 1.0"/><label> y:</label><input type="text" id="'+b+'_jGraduate_cy" size="3" title="Enter y value between 0.0 and 1.0"/></div></div><div class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">Focal Point</label><div class="jGraduate_Form_Section"><label>Match center: <input type="checkbox" checked="checked" id="'+
+b+'_jGraduate_match_ctr"/></label><br/><label>x:</label><input type="text" id="'+b+'_jGraduate_fx" size="3" title="Enter x value between 0.0 and 1.0"/><label> y:</label><input type="text" id="'+b+'_jGraduate_fy" size="3" title="Enter y value between 0.0 and 1.0"/></div></div></div><div class="jGraduate_StopSection jGraduate_SpreadMethod"><label class="jGraduate_Form_Heading">Spread method</label><div class="jGraduate_Form_Section"><select class="jGraduate_spreadMethod"><option value=pad selected>Pad</option><option value=reflect>Reflect</option><option value=repeat>Repeat</option></select></div></div><div class="jGraduate_Form"><div class="jGraduate_Slider jGraduate_RadiusField jGraduate_rg_field"><label class="prelabel">Radius:</label><div id="'+
+b+'_jGraduate_Radius" class="jGraduate_SliderBar jGraduate_Radius" title="Click to set radius"><img id="'+b+'_jGraduate_RadiusArrows" class="jGraduate_RadiusArrows" src="'+o.images.clientPath+'rangearrows2.gif"></div><label><input type="text" id="'+b+'_jGraduate_RadiusInput" size="3" value="100"/>%</label></div><div class="jGraduate_Slider jGraduate_EllipField jGraduate_rg_field"><label class="prelabel">Ellip:</label><div id="'+b+'_jGraduate_Ellip" class="jGraduate_SliderBar jGraduate_Ellip" title="Click to set Ellip"><img id="'+
+b+'_jGraduate_EllipArrows" class="jGraduate_EllipArrows" src="'+o.images.clientPath+'rangearrows2.gif"></div><label><input type="text" id="'+b+'_jGraduate_EllipInput" size="3" value="0"/>%</label></div><div class="jGraduate_Slider jGraduate_AngleField jGraduate_rg_field"><label class="prelabel">Angle:</label><div id="'+b+'_jGraduate_Angle" class="jGraduate_SliderBar jGraduate_Angle" title="Click to set Angle"><img id="'+b+'_jGraduate_AngleArrows" class="jGraduate_AngleArrows" src="'+o.images.clientPath+
+'rangearrows2.gif"></div><label><input type="text" id="'+b+'_jGraduate_AngleInput" size="3" value="0"/>º&nbsp;</label></div><div class="jGraduate_Slider jGraduate_OpacField"><label class="prelabel">Opac:</label><div id="'+b+'_jGraduate_Opac" class="jGraduate_SliderBar jGraduate_Opac" title="Click to set Opac"><img id="'+b+'_jGraduate_OpacArrows" class="jGraduate_OpacArrows" src="'+o.images.clientPath+'rangearrows2.gif"></div><label><input type="text" id="'+b+'_jGraduate_OpacInput" size="3" value="100"/>%</label></div></div><div class="jGraduate_OkCancel"><input type="button" id="'+
+b+'_jGraduate_Ok" class="jGraduate_Ok" value="OK"/><input type="button" id="'+b+'_jGraduate_Cancel" class="jGraduate_Cancel" value="Cancel"/></div>');var j=256,oa=j-0,pa=j-0,p,g,aa,q={};$(".jGraduate_SliderBar").width(145);var x=$("#"+b+"_jGraduate_GradContainer")[0],m=r("svg",{id:b+"_jgraduate_svg",width:j,height:j,xmlns:A.svg},x);p=p||e.paint.type;var v=g=e.paint[p],U=e.paint.alpha,ba=p==="solidColor";switch(p){case "solidColor":case "linearGradient":if(!ba){g.id=b+"_lg_jgraduate_grad";v=g=m.appendChild(g)}r("radialGradient",
+{id:b+"_rg_jgraduate_grad"},m);if(p==="linearGradient")break;case "radialGradient":if(!ba){g.id=b+"_rg_jgraduate_grad";v=g=m.appendChild(g)}r("linearGradient",{id:b+"_lg_jgraduate_grad"},m)}if(ba){v=g=$("#"+b+"_lg_jgraduate_grad")[0];u=e.paint[p];t(0,"#"+u,1);var K=typeof o.newstop;if(K==="string")switch(o.newstop){case "same":t(1,"#"+u,1);break;case "inverse":K="";for(var y=0;y<6;y+=2){u.substr(y,2);var P=(255-parseInt(u.substr(y,2),16)).toString(16);if(P.length<2)P=0+P;K+=P}t(1,"#"+K,1);break;case "white":t(1,
+"#ffffff",1);break;case "black":t(1,"#000000",1)}else if(K==="object")t(1,o.newstop.color||"#"+u,"opac"in o.newstop?o.newstop.opac:1)}u=parseFloat(v.getAttribute("x1")||0);K=parseFloat(v.getAttribute("y1")||0);y=parseFloat(v.getAttribute("x2")||1);P=parseFloat(v.getAttribute("y2")||0);var ca=parseFloat(v.getAttribute("cx")||0.5),da=parseFloat(v.getAttribute("cy")||0.5),qa=parseFloat(v.getAttribute("fx")||ca),ra=parseFloat(v.getAttribute("fy")||da);aa=r("rect",{id:b+"_jgraduate_rect",x:0,y:0,width:oa,
+height:pa,fill:"url(#"+b+"_jgraduate_grad)","fill-opacity":U/100},m);var sa=$("<div/>").attr({"class":"grad_coord jGraduate_lg_field",title:"Begin Stop"}).text(1).css({top:K*j,left:u*j}).data("coord","start").appendTo(x),Da=sa.clone().text(2).css({top:P*j,left:y*j}).attr("title","End stop").data("coord","end").appendTo(x),ta=$("<div/>").attr({"class":"grad_coord jGraduate_rg_field",title:"Center stop"}).text("C").css({top:da*j,left:ca*j}).data("coord","center").appendTo(x),V=ta.clone().text("F").css({top:ra*
+j,left:qa*j,display:"none"}).attr("title","Focus point").data("coord","focus").appendTo(x);V[0].id=b+"_jGraduate_focusCoord";$(s+" .grad_coord");$.each(["x1","y1","x2","y2","cx","cy","fx","fy"],function(c,a){var d=g.getAttribute(a),h=isNaN(a[1]);d||(d=h?"0.5":a==="x2"?"1.0":"0.0");q[a]=$("#"+b+"_jGraduate_"+a).val(d).change(function(){if(isNaN(parseFloat(this.value))||this.value<0)this.value=0;else if(this.value>1)this.value=1;if(!(a[0]==="f"&&!E))if(h&&p==="radialGradient"||!h&&p==="linearGradient")g.setAttribute(a,
+this.value);var f=h?a[0]==="c"?ta:V:a[1]==="1"?sa:Da,l=a.indexOf("x")>=0?"left":"top";f.css(l,this.value*j)}).change()});var D,fa,ga=$("#"+b+"_jGraduate_StopSlider"),F,H,R,O=r("path",{d:"m9.75,-6l-19.5,19.5m0,-19.5l19.5,19.5",fill:"none",stroke:"#D00","stroke-width":5,display:"none"},H),S,J=1,G=1,T=0,ha=ca,ia=da;H=r("svg",{width:"100%",height:45},ga[0]);x=r("pattern",{width:16,height:16,patternUnits:"userSpaceOnUse",id:"jGraduate_trans"},H);r("image",{width:16,height:16},x).setAttributeNS(A.xlink,
+"xlink:href",o.images.clientPath+"map-opacity.png");$(H).click(function(c){S=ga.offset();if(c.target.tagName!=="path"){var a=c.pageX-S.left-8;a=a<10?10:a>j+10?j+10:a;t(a/j,0,0,true);c.stopPropagation()}});$(H).mouseover(function(){H.appendChild(O)});fa=r("g",{},H);r("line",{x1:10,y1:15,x2:j+10,y2:15,"stroke-width":2,stroke:"#000"},H);var ua=n.find(".jGraduate_spreadMethod").change(function(){g.setAttribute("spreadMethod",$(this).val())}),Q=null,va=function(c){var a=c.pageX-ja.left,d=c.pageY-ja.top;
+a=a<0?0:a>j?j:a;d=d<0?0:d>j?j:d;Q.css("left",a).css("top",d);a=a/oa;d=d/pa;var h=Q.data("coord"),f=g;switch(h){case "start":q.x1.val(a);q.y1.val(d);f.setAttribute("x1",a);f.setAttribute("y1",d);break;case "end":q.x2.val(a);q.y2.val(d);f.setAttribute("x2",a);f.setAttribute("y2",d);break;case "center":q.cx.val(a);q.cy.val(d);f.setAttribute("cx",a);f.setAttribute("cy",d);ha=a;ia=d;w();break;case "focus":q.fx.val(a);q.fy.val(d);f.setAttribute("fx",a);f.setAttribute("fy",d);w()}c.preventDefault()},wa=
+function(){Q=null;N.unbind("mousemove",va).unbind("mouseup",wa)};D=g.getElementsByTagNameNS(A.svg,"stop");if(k<2){for(;k<2;){g.appendChild(document.createElementNS(A.svg,"stop"));++k}D=g.getElementsByTagNameNS(A.svg,"stop")}var k=D.length;for(y=0;y<k;y++)t(0,0,0,0,D[y]);ua.val(g.getAttribute("spreadMethod")||"pad");var ja,E=false;aa.setAttribute("fill-opacity",U/100);$("#"+b+" div.grad_coord").mousedown(function(c){c.preventDefault();Q=$(this);Q.offset();ja=Q.parent().offset();N.mousemove(va).mouseup(wa)});
+$("#"+b+"_jGraduate_Ok").bind("click",function(){e.paint.type=p;e.paint[p]=g.cloneNode(true);e.paint.solidColor=null;ma()});$("#"+b+"_jGraduate_Cancel").bind("click",function(){na()});if(p==="radialGradient")if(E)V.show();else{V.hide();q.fx.val("");q.fy.val("")}$("#"+b+"_jGraduate_match_ctr")[0].checked=!E;var xa,ya;$("#"+b+"_jGraduate_match_ctr").change(function(){E=!this.checked;V.toggle(E);q.fx.val("");q.fy.val("");var c=g;if(E){var a=xa||0.5,d=ya||0.5;c.setAttribute("fx",a);c.setAttribute("fy",
+d);q.fx.val(a);q.fy.val(d)}else{xa=c.getAttribute("fx");ya=c.getAttribute("fy");c.removeAttribute("fx");c.removeAttribute("fy")}});D=g.getElementsByTagNameNS(A.svg,"stop");k=D.length;if(k<2){for(;k<2;){g.appendChild(document.createElementNS(A.svg,"stop"));++k}D=g.getElementsByTagNameNS(A.svg,"stop")}var L;U=n=0;if(p==="radialGradient"){m=g.gradientTransform.baseVal;if(m.numberOfItems===2){k=m.getItem(0);m=m.getItem(1);if(k.type===2&&m.type===3){k=m.matrix;if(k.a!==1)n=Math.round(-(1-k.a)*100);else if(k.d!==
+1)n=Math.round((1-k.d)*100)}}else if(m.numberOfItems===3){x=m.getItem(0);k=m.getItem(1);m=m.getItem(2);if(x.type===4&&k.type===2&&m.type===3){U=Math.round(x.angle);k=m.matrix;if(k.a!==1)n=Math.round(-(1-k.a)*100);else if(k.d!==1)n=Math.round((1-k.d)*100)}}}n={radius:{handle:"#"+b+"_jGraduate_RadiusArrows",input:"#"+b+"_jGraduate_RadiusInput",val:(g.getAttribute("r")||0.5)*100},opacity:{handle:"#"+b+"_jGraduate_OpacArrows",input:"#"+b+"_jGraduate_OpacInput",val:e.paint.alpha||100},ellip:{handle:"#"+
+b+"_jGraduate_EllipArrows",input:"#"+b+"_jGraduate_EllipInput",val:n},angle:{handle:"#"+b+"_jGraduate_AngleArrows",input:"#"+b+"_jGraduate_AngleInput",val:U}};$.each(n,function(c,a){var d=$(a.handle);d.mousedown(function(h){var f=d.parent();L={type:c,elem:d,input:$(a.input),parent:f,offset:f.offset()};N.mousemove(za).mouseup(Aa);h.preventDefault()});$(a.input).val(a.val).change(function(){var h=+this.value,f=0,l=p==="radialGradient";switch(c){case "radius":l&&g.setAttribute("r",h/100);f=Math.pow(h/
+100,0.4)/2*145;break;case "opacity":e.paint.alpha=h;aa.setAttribute("fill-opacity",h/100);f=h*1.45;break;case "ellip":J=G=1;if(h===0){f=72.5;break}if(h>99.5)h=99.5;if(h>0)G=1-h/100;else J=-(h/100)-1;f=145*((h+100)/2)/100;l&&w();break;case "angle":T=h;f=T/180;f+=0.5;f*=145;l&&w()}if(f>145)f=145;else if(f<0)f=0;d.css({"margin-left":f-5})}).change()});var za=function(c){var a=c.pageX-L.offset.left-parseInt(L.parent.css("border-left-width"));if(a>145)a=145;if(a<=0)a=0;var d=a-5;a/=145;switch(L.type){case "radius":a=
+Math.pow(a*2,2.5);if(a>0.98&&a<1.02)a=1;if(a<=0.01)a=0.01;g.setAttribute("r",a);break;case "opacity":e.paint.alpha=parseInt(a*100);aa.setAttribute("fill-opacity",a);break;case "ellip":G=J=1;if(a<0.5){a/=0.5;J=a<=0?0.01:a}else if(a>0.5){a/=0.5;a=2-a;G=a<=0?0.01:a}w();a-=1;if(G===a+1)a=Math.abs(a);break;case "angle":a-=0.5;T=a*=180;w();a/=100}L.elem.css({"margin-left":d});a=Math.round(a*100);L.input.val(a);c.preventDefault()},Aa=function(){N.unbind("mousemove",za).unbind("mouseup",Aa);L=null};for(n=
+(e.paint.alpha*255/100).toString(16);n.length<2;)n="0"+n;n=n.split(".")[0];u=e.paint.solidColor=="none"?"":e.paint.solidColor+n;ba||(u=D[0].getAttribute("stop-color"));$.extend($.fn.jPicker.defaults.window,{alphaSupport:true,effects:{type:"show",speed:0}});Ca.jPicker({window:{title:o.window.pickerTitle},images:{clientPath:o.images.clientPath},color:{active:u,alphaSupport:true}},function(c){e.paint.type="solidColor";e.paint.alpha=c.val("ahex")?Math.round(c.val("a")/255*100):100;e.paint.solidColor=
+c.val("hex")?c.val("hex"):"none";e.paint.radialGradient=null;ma()},null,function(){na()});var ka=$(s+" .jGraduate_tabs li");ka.click(function(){ka.removeClass("jGraduate_tab_current");$(this).addClass("jGraduate_tab_current");$(s+" > div").hide();var c=$(this).attr("data-type");$(s+" .jGraduate_gradPick").show();if(c==="rg"||c==="lg"){$(".jGraduate_"+c+"_field").show();$(".jGraduate_"+(c==="lg"?"rg":"lg")+"_field").hide();$("#"+b+"_jgraduate_rect")[0].setAttribute("fill","url(#"+b+"_"+c+"_jgraduate_grad)");
+p=c==="lg"?"linearGradient":"radialGradient";$("#"+b+"_jGraduate_OpacInput").val(e.paint.alpha).change();var a=$("#"+b+"_"+c+"_jgraduate_grad")[0];if(g!==a){var d=$(g).find("stop");$(a).empty().append(d);g=a;a=ua.val();g.setAttribute("spreadMethod",a)}E=c==="rg"&&g.getAttribute("fx")!=null&&!(ca==qa&&da==ra);$("#"+b+"_jGraduate_focusCoord").toggle(E);if(E)$("#"+b+"_jGraduate_match_ctr")[0].checked=false}else{$(s+" .jGraduate_gradPick").hide();$(s+" .jGraduate_colPick").show()}});$(s+" > div").hide();
+ka.removeClass("jGraduate_tab_current");var ea;switch(e.paint.type){case "linearGradient":ea=$(s+" .jGraduate_tab_lingrad");break;case "radialGradient":ea=$(s+" .jGraduate_tab_radgrad");break;default:ea=$(s+" .jGraduate_tab_color")}e.show();setTimeout(function(){ea.addClass("jGraduate_tab_current").click()},10)}else alert("Container element must have an id attribute to maintain unique id strings for sub-elements.")})}})();
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/jquery-draginput.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/jquery-draginput.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/jquery-draginput.js	(revision 29468)
@@ -0,0 +1,181 @@
+﻿// Mark MacKay http://method.ac MIT License
+
+
+$.fn.dragInput = function(cfg){
+	return this.each(function(){
+
+		this.repeating = false;
+		// Apply specified options or defaults:
+		// (Ought to refactor this some day to use $.extend() instead)
+		this.dragCfg = {
+			min: cfg && !isNaN(parseFloat(cfg.min)) ? Number(cfg.min) : null,	// Fixes bug with min:0
+			max: cfg && !isNaN(parseFloat(cfg.max)) ? Number(cfg.max) : null,
+			step: cfg && Number(cfg.step) ? cfg.step : 1,
+			stepfunc: cfg && cfg.stepfunc ? cfg.stepfunc : false,
+			dragAdjust: cfg && cfg.dragAdjust ? cfg.dragAdjust : 1,
+			height: 70,
+			cursor: cfg && cfg.cursor ? Boolean(cfg.cursor) : false,
+			start: cfg && cfg.start ? Number(cfg.start) : 0,
+			_btn_width: 20,
+			_direction: null,
+			_delay: null,
+			_repeat: null,
+			callback: cfg && cfg.callback ? cfg.callback : null
+		};
+		// if a smallStep isn't supplied, use half the regular step
+		this.dragCfg.smallStep = cfg && cfg.smallStep ? cfg.smallStep : this.dragCfg.step/2;
+		var dragAdjust = this.dragCfg.dragAdjust;
+		var $label = $(this).parent();
+		var $input = $(this);
+		var cursorHeight = this.dragCfg.height;
+		var min = this.dragCfg.min;
+		var max = this.dragCfg.max
+		var step = this.dragCfg.step
+    var area = (max - min > 0) ?  (max - min) / step : 200;
+    var scale = area/cursorHeight * step;
+    var lastY = 0;
+    var attr = this.getAttribute("data-attr");
+    var canvas = methodDraw.canvas
+    var isTouch = svgedit.browser.isTouch();
+    var completed = true //for mousewheel
+    var $cursor = (area && this.dragCfg.cursor)
+      ? $("<div class='draginput_cursor' />").appendTo($label) 
+      : false
+    $input.attr("readonly", "readonly")
+    if ($cursor && !isNaN(this.dragCfg.start)) $cursor.css("top", (this.dragCfg.start*-1)/scale+cursorHeight)
+   
+    //this is where all the magic happens  
+		this.adjustValue = function(i, completed){
+			var v;
+			i = parseFloat(i);
+			if(isNaN(this.value)) {
+				v = this.dragCfg.reset;
+			} else if($.isFunction(this.dragCfg.stepfunc)) {
+				v = this.dragCfg.stepfunc(this, i);
+			} else {
+				v = Number((Number(this.value) + Number(i)).toFixed(5));
+			}
+			if (max !== null) v = Math.min(v, max);
+			if (min !== null) v = Math.max(v, min);
+			if ($cursor) this.updateCursor(v);
+			this.value = v;
+			$label.attr("data-value", v)
+			if ($.isFunction(this.dragCfg.callback)) this.dragCfg.callback(this, completed)
+		};
+          
+		$label.toggleClass("draginput", $label.is("label"))
+    
+    // when the mouse is down and moving
+    this.move = function(e, oy, val) {
+      if (isTouch) {
+        e = e.originalEvent.touches[0]
+      }
+      // just got started let's save for undo purposes
+      if (lastY === 0) {
+        lastY = oy;
+      }
+      var deltaY = (e.pageY - lastY) *-1
+      lastY = e.pageY;
+      val = (deltaY * scale) * dragAdjust
+      var fixed = (step < 1) ? 1 : 0
+      this.adjustValue(val.toFixed(fixed))  //no undo true
+    };
+  	
+  	//when the mouse is released
+  	this.stop = function() {
+  	  var selectedElems = canvas.getSelectedElems();
+  	  $('body').removeClass('dragging');
+  	  $label.removeClass("active");
+  	  completed = true;
+  	  $(window).unbind("mousemove.draginput touchmove.draginput mouseup.draginput touchend.draginput");
+  	  lastY = 0;
+  	  if (selectedElems[0]) {
+    	  var batchCmd = canvas.undoMgr.finishUndoableChange();
+      	if (!batchCmd.isEmpty()) canvas.undoMgr.addCommandToHistory(batchCmd);
+    	}
+  	  this.adjustValue(0, completed)
+  	}
+  	
+  	this.updateCursor = function(){
+  	  var value = parseFloat(this.value);
+  		var pos = (value*-1)/scale+cursorHeight;
+  		$cursor.css("top", pos);
+  	}
+  	
+  	this.launch = function(e) {
+  	  var selectedElems = canvas.getSelectedElems();
+  	  if (isTouch) e = e.originalEvent.touches[0];
+		  var oy = e.pageY;
+		  var val = this.value;
+		  var el = this;
+		  canvas.undoMgr.beginUndoableChange(attr, selectedElems)
+		  $('body').addClass('dragging');
+		  $label.addClass('active');
+			$(window).bind("mousemove.draginput touchmove.draginput", function(e){el.move(e, oy, parseFloat(val))})
+			$(window).bind("mouseup.draginput touchend.draginput", function(e){el.stop()})
+  	}
+  	
+  	$(this)
+		  .attr("readonly", "readonly")
+		  .attr("data-scale", scale)
+		  .attr("data-domain", cursorHeight)
+		  .attr("data-cursor", ($cursor != false))
+		  		
+		.bind("mousedown touchstart", function(e){
+		  this.blur();
+		  this.launch(e);
+		})
+		
+		.bind("dblclick taphold", function(e) {
+			this.removeAttribute("readonly", "readonly");
+			this.focus();
+			this.select();
+		})
+		
+		.keydown(function(e){
+		  // Respond to up/down arrow keys.
+		  switch(e.keyCode){
+		  	case 13: this.adjustValue(0); this.blur();  break; // Enter
+		  }
+		})
+		
+		.focus(function(e){
+		  if (this.getAttribute("readonly") === "readonly") this.blur()
+		})
+		
+		.blur(function(e){
+		  this.setAttribute("readonly", "readonly")
+		})
+		
+		.bind("mousewheel", function(e, delta, deltaX, deltaY){
+		  var selectedElems = canvas.getSelectedElems();
+      if (completed) canvas.undoMgr.beginUndoableChange(attr, selectedElems)
+		  completed = false
+      clearTimeout(window.undoTimeout)
+  	  window.undoTimeout = setTimeout(function(){
+  	    wheel_input.stop()
+  	  },200)
+  	  
+		  var wheel_input = this;
+			if (deltaY > 0)
+				this.adjustValue(this.dragCfg.step);
+			else if (deltaY < 0)
+				this.adjustValue(-this.dragCfg.step);
+			e.preventDefault();
+	    
+		})
+
+	});
+	
+};
+
+// public function
+$.fn.dragInput.updateCursor = function(el){
+  var value = parseFloat(el.value);
+  var scale = parseFloat(el.getAttribute("data-scale"));
+  var domain = parseFloat(el.getAttribute("data-domain"));
+	var pos = ((value*-1)/scale+domain) + "px";
+	var cursor = el.parentNode.lastChild
+	if (cursor.className == "draginput_cursor") cursor.style.top = pos;
+}
+
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/jquery-ui/jquery-ui-1.8.17.custom.min.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/jquery-ui/jquery-ui-1.8.17.custom.min.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/jquery-ui/jquery-ui-1.8.17.custom.min.js	(revision 29468)
@@ -0,0 +1,54 @@
+/*!
+ * jQuery UI 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI
+ */(function(a,b){function d(b){return!a(b).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}function c(b,c){var e=b.nodeName.toLowerCase();if("area"===e){var f=b.parentNode,g=f.name,h;if(!b.href||!g||f.nodeName.toLowerCase()!=="map")return!1;h=a("img[usemap=#"+g+"]")[0];return!!h&&d(h)}return(/input|select|textarea|button|object/.test(e)?!b.disabled:"a"==e?b.href||c:c)&&d(b)}a.ui=a.ui||{};a.ui.version||(a.extend(a.ui,{version:"1.8.17",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,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,WINDOWS:91}}),a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(b,c){return typeof b=="number"?this.each(function(){var d=this;setTimeout(function(){a(d).focus(),c&&c.call(d)},b)}):this._focus.apply(this,arguments)},scrollParent:function(){var b;a.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?b=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(a.curCSS(this,"position",1))&&/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0):b=this.parents().filter(function(){return/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!b.length?a(document):b},zIndex:function(c){if(c!==b)return this.css("zIndex",c);if(this.length){var d=a(this[0]),e,f;while(d.length&&d[0]!==document){e=d.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){f=parseInt(d.css("zIndex"),10);if(!isNaN(f)&&f!==0)return f}d=d.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),a.each(["Width","Height"],function(c,d){function h(b,c,d,f){a.each(e,function(){c-=parseFloat(a.curCSS(b,"padding"+this,!0))||0,d&&(c-=parseFloat(a.curCSS(b,"border"+this+"Width",!0))||0),f&&(c-=parseFloat(a.curCSS(b,"margin"+this,!0))||0)});return c}var e=d==="Width"?["Left","Right"]:["Top","Bottom"],f=d.toLowerCase(),g={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};a.fn["inner"+d]=function(c){if(c===b)return g["inner"+d].call(this);return this.each(function(){a(this).css(f,h(this,c)+"px")})},a.fn["outer"+d]=function(b,c){if(typeof b!="number")return g["outer"+d].call(this,b);return this.each(function(){a(this).css(f,h(this,b,!0,c)+"px")})}}),a.extend(a.expr[":"],{data:function(b,c,d){return!!a.data(b,d[3])},focusable:function(b){return c(b,!isNaN(a.attr(b,"tabindex")))},tabbable:function(b){var d=a.attr(b,"tabindex"),e=isNaN(d);return(e||d>=0)&&c(b,!e)}}),a(function(){var b=document.body,c=b.appendChild(c=document.createElement("div"));a.extend(c.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),a.support.minHeight=c.offsetHeight===100,a.support.selectstart="onselectstart"in c,b.removeChild(c).style.display="none"}),a.extend(a.ui,{plugin:{add:function(b,c,d){var e=a.ui[b].prototype;for(var f in d)e.plugins[f]=e.plugins[f]||[],e.plugins[f].push([c,d[f]])},call:function(a,b,c){var d=a.plugins[b];if(!!d&&!!a.element[0].parentNode)for(var e=0;e<d.length;e++)a.options[d[e][0]]&&d[e][1].apply(a.element,c)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(b,c){if(a(b).css("overflow")==="hidden")return!1;var d=c&&c==="left"?"scrollLeft":"scrollTop",e=!1;if(b[d]>0)return!0;b[d]=1,e=b[d]>0,b[d]=0;return e},isOverAxis:function(a,b,c){return a>b&&a<b+c},isOver:function(b,c,d,e,f,g){return a.ui.isOverAxis(b,d,f)&&a.ui.isOverAxis(c,e,g)}}))})(jQuery);/*!
+ * jQuery UI Widget 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Widget
+ */(function(a,b){if(a.cleanData){var c=a.cleanData;a.cleanData=function(b){for(var d=0,e;(e=b[d])!=null;d++)try{a(e).triggerHandler("remove")}catch(f){}c(b)}}else{var d=a.fn.remove;a.fn.remove=function(b,c){return this.each(function(){c||(!b||a.filter(b,[this]).length)&&a("*",this).add([this]).each(function(){try{a(this).triggerHandler("remove")}catch(b){}});return d.call(a(this),b,c)})}}a.widget=function(b,c,d){var e=b.split(".")[0],f;b=b.split(".")[1],f=e+"-"+b,d||(d=c,c=a.Widget),a.expr[":"][f]=function(c){return!!a.data(c,b)},a[e]=a[e]||{},a[e][b]=function(a,b){arguments.length&&this._createWidget(a,b)};var g=new c;g.options=a.extend(!0,{},g.options),a[e][b].prototype=a.extend(!0,g,{namespace:e,widgetName:b,widgetEventPrefix:a[e][b].prototype.widgetEventPrefix||b,widgetBaseClass:f},d),a.widget.bridge(b,a[e][b])},a.widget.bridge=function(c,d){a.fn[c]=function(e){var f=typeof e=="string",g=Array.prototype.slice.call(arguments,1),h=this;e=!f&&g.length?a.extend.apply(null,[!0,e].concat(g)):e;if(f&&e.charAt(0)==="_")return h;f?this.each(function(){var d=a.data(this,c),f=d&&a.isFunction(d[e])?d[e].apply(d,g):d;if(f!==d&&f!==b){h=f;return!1}}):this.each(function(){var b=a.data(this,c);b?b.option(e||{})._init():a.data(this,c,new d(e,this))});return h}},a.Widget=function(a,b){arguments.length&&this._createWidget(a,b)},a.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:!1},_createWidget:function(b,c){a.data(c,this.widgetName,this),this.element=a(c),this.options=a.extend(!0,{},this.options,this._getCreateOptions(),b);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()}),this._create(),this._trigger("create"),this._init()},_getCreateOptions:function(){return a.metadata&&a.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName),this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled "+"ui-state-disabled")},widget:function(){return this.element},option:function(c,d){var e=c;if(arguments.length===0)return a.extend({},this.options);if(typeof c=="string"){if(d===b)return this.options[c];e={},e[c]=d}this._setOptions(e);return this},_setOptions:function(b){var c=this;a.each(b,function(a,b){c._setOption(a,b)});return this},_setOption:function(a,b){this.options[a]=b,a==="disabled"&&this.widget()[b?"addClass":"removeClass"](this.widgetBaseClass+"-disabled"+" "+"ui-state-disabled").attr("aria-disabled",b);return this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_trigger:function(b,c,d){var e,f,g=this.options[b];d=d||{},c=a.Event(c),c.type=(b===this.widgetEventPrefix?b:this.widgetEventPrefix+b).toLowerCase(),c.target=this.element[0],f=c.originalEvent;if(f)for(e in f)e in c||(c[e]=f[e]);this.element.trigger(c,d);return!(a.isFunction(g)&&g.call(this.element[0],c,d)===!1||c.isDefaultPrevented())}}})(jQuery);/*!
+ * jQuery UI Mouse 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Mouse
+ *
+ * Depends:
+ *	jquery.ui.widget.js
+ */(function(a,b){var c=!1;a(document).mouseup(function(a){c=!1}),a.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var b=this;this.element.bind("mousedown."+this.widgetName,function(a){return b._mouseDown(a)}).bind("click."+this.widgetName,function(c){if(!0===a.data(c.target,b.widgetName+".preventClickEvent")){a.removeData(c.target,b.widgetName+".preventClickEvent"),c.stopImmediatePropagation();return!1}}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(b){if(!c){this._mouseStarted&&this._mouseUp(b),this._mouseDownEvent=b;var d=this,e=b.which==1,f=typeof this.options.cancel=="string"&&b.target.nodeName?a(b.target).closest(this.options.cancel).length:!1;if(!e||f||!this._mouseCapture(b))return!0;this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){d.mouseDelayMet=!0},this.options.delay));if(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)){this._mouseStarted=this._mouseStart(b)!==!1;if(!this._mouseStarted){b.preventDefault();return!0}}!0===a.data(b.target,this.widgetName+".preventClickEvent")&&a.removeData(b.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(a){return d._mouseMove(a)},this._mouseUpDelegate=function(a){return d._mouseUp(a)},a(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),b.preventDefault(),c=!0;return!0}},_mouseMove:function(b){if(a.browser.msie&&!(document.documentMode>=9)&&!b.button)return this._mouseUp(b);if(this._mouseStarted){this._mouseDrag(b);return b.preventDefault()}this._mouseDistanceMet(b)&&this._mouseDelayMet(b)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,b)!==!1,this._mouseStarted?this._mouseDrag(b):this._mouseUp(b));return!this._mouseStarted},_mouseUp:function(b){a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,b.target==this._mouseDownEvent.target&&a.data(b.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(b));return!1},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(a){return this.mouseDelayMet},_mouseStart:function(a){},_mouseDrag:function(a){},_mouseStop:function(a){},_mouseCapture:function(a){return!0}})})(jQuery);/*
+ * jQuery UI Draggable 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Draggables
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.widget.js
+ */(function(a,b){a.widget("ui.draggable",a.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1},_create:function(){this.options.helper=="original"&&!/^(?:r|a|f)/.test(this.element.css("position"))&&(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._mouseInit()},destroy:function(){if(!!this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy();return this}},_mouseCapture:function(b){var c=this.options;if(this.helper||c.disabled||a(b.target).is(".ui-resizable-handle"))return!1;this.handle=this._getHandle(b);if(!this.handle)return!1;c.iframeFix&&a(c.iframeFix===!0?"iframe":c.iframeFix).each(function(){a('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(a(this).offset()).appendTo("body")});return!0},_mouseStart:function(b){var c=this.options;this.helper=this._createHelper(b),this._cacheHelperProportions(),a.ui.ddmanager&&(a.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(b),this.originalPageX=b.pageX,this.originalPageY=b.pageY,c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt),c.containment&&this._setContainment();if(this._trigger("start",b)===!1){this._clear();return!1}this._cacheHelperProportions(),a.ui.ddmanager&&!c.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b),this.helper.addClass("ui-draggable-dragging"),this._mouseDrag(b,!0),a.ui.ddmanager&&a.ui.ddmanager.dragStart(this,b);return!0},_mouseDrag:function(b,c){this.position=this._generatePosition(b),this.positionAbs=this._convertPositionTo("absolute");if(!c){var d=this._uiHash();if(this._trigger("drag",b,d)===!1){this._mouseUp({});return!1}this.position=d.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";a.ui.ddmanager&&a.ui.ddmanager.drag(this,b);return!1},_mouseStop:function(b){var c=!1;a.ui.ddmanager&&!this.options.dropBehaviour&&(c=a.ui.ddmanager.drop(this,b)),this.dropped&&(c=this.dropped,this.dropped=!1);if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper=="original")return!1;if(this.options.revert=="invalid"&&!c||this.options.revert=="valid"&&c||this.options.revert===!0||a.isFunction(this.options.revert)&&this.options.revert.call(this.element,c)){var d=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){d._trigger("stop",b)!==!1&&d._clear()})}else this._trigger("stop",b)!==!1&&this._clear();return!1},_mouseUp:function(b){this.options.iframeFix===!0&&a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),a.ui.ddmanager&&a.ui.ddmanager.dragStop(this,b);return a.ui.mouse.prototype._mouseUp.call(this,b)},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(b){var c=!this.options.handle||!a(this.options.handle,this.element).length?!0:!1;a(this.options.handle,this.element).find("*").andSelf().each(function(){this==b.target&&(c=!0)});return c},_createHelper:function(b){var c=this.options,d=a.isFunction(c.helper)?a(c.helper.apply(this.element[0],[b])):c.helper=="clone"?this.element.clone().removeAttr("id"):this.element;d.parents("body").length||d.appendTo(c.appendTo=="parent"?this.element[0].parentNode:c.appendTo),d[0]!=this.element[0]&&!/(fixed|absolute)/.test(d.css("position"))&&d.css("position","absolute");return d},_adjustOffsetFromHelper:function(b){typeof b=="string"&&(b=b.split(" ")),a.isArray(b)&&(b={left:+b[0],top:+b[1]||0}),"left"in b&&(this.offset.click.left=b.left+this.margins.left),"right"in b&&(this.offset.click.left=this.helperProportions.width-b.right+this.margins.left),"top"in b&&(this.offset.click.top=b.top+this.margins.top),"bottom"in b&&(this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])&&(b.left+=this.scrollParent.scrollLeft(),b.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)b={top:0,left:0};return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var b=this.options;b.containment=="parent"&&(b.containment=this.helper[0].parentNode);if(b.containment=="document"||b.containment=="window")this.containment=[b.containment=="document"?0:a(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,b.containment=="document"?0:a(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,(b.containment=="document"?0:a(window).scrollLeft())+a(b.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(b.containment=="document"?0:a(window).scrollTop())+(a(b.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(b.containment)&&b.containment.constructor!=Array){var c=a(b.containment),d=c[0];if(!d)return;var e=c.offset(),f=a(d).css("overflow")!="hidden";this.containment=[(parseInt(a(d).css("borderLeftWidth"),10)||0)+(parseInt(a(d).css("paddingLeft"),10)||0),(parseInt(a(d).css("borderTopWidth"),10)||0)+(parseInt(a(d).css("paddingTop"),10)||0),(f?Math.max(d.scrollWidth,d.offsetWidth):d.offsetWidth)-(parseInt(a(d).css("borderLeftWidth"),10)||0)-(parseInt(a(d).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(f?Math.max(d.scrollHeight,d.offsetHeight):d.offsetHeight)-(parseInt(a(d).css("borderTopWidth"),10)||0)-(parseInt(a(d).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=c}else b.containment.constructor==Array&&(this.containment=b.containment)},_convertPositionTo:function(b,c){c||(c=this.position);var d=b=="absolute"?1:-1,e=this.options,f=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=/(html|body)/i.test(f[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():g?0:f.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:f.scrollLeft())*d)}},_generatePosition:function(b){var c=this.options,d=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(d[0].tagName),f=b.pageX,g=b.pageY;if(this.originalPosition){var h;if(this.containment){if(this.relative_container){var i=this.relative_container.offset();h=[this.containment[0]+i.left,this.containment[1]+i.top,this.containment[2]+i.left,this.containment[3]+i.top]}else h=this.containment;b.pageX-this.offset.click.left<h[0]&&(f=h[0]+this.offset.click.left),b.pageY-this.offset.click.top<h[1]&&(g=h[1]+this.offset.click.top),b.pageX-this.offset.click.left>h[2]&&(f=h[2]+this.offset.click.left),b.pageY-this.offset.click.top>h[3]&&(g=h[3]+this.offset.click.top)}if(c.grid){var j=c.grid[1]?this.originalPageY+Math.round((g-this.originalPageY)/c.grid[1])*c.grid[1]:this.originalPageY;g=h?j-this.offset.click.top<h[1]||j-this.offset.click.top>h[3]?j-this.offset.click.top<h[1]?j+c.grid[1]:j-c.grid[1]:j:j;var k=c.grid[0]?this.originalPageX+Math.round((f-this.originalPageX)/c.grid[0])*c.grid[0]:this.originalPageX;f=h?k-this.offset.click.left<h[0]||k-this.offset.click.left>h[2]?k-this.offset.click.left<h[0]?k+c.grid[0]:k-c.grid[0]:k:k}}return{top:g-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:d.scrollTop()),left:f-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:d.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1},_trigger:function(b,c,d){d=d||this._uiHash(),a.ui.plugin.call(this,b,[c,d]),b=="drag"&&(this.positionAbs=this._convertPositionTo("absolute"));return a.Widget.prototype._trigger.call(this,b,c,d)},plugins:{},_uiHash:function(a){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),a.extend(a.ui.draggable,{version:"1.8.17"}),a.ui.plugin.add("draggable","connectToSortable",{start:function(b,c){var d=a(this).data("draggable"),e=d.options,f=a.extend({},c,{item:d.element});d.sortables=[],a(e.connectToSortable).each(function(){var c=a.data(this,"sortable");c&&!c.options.disabled&&(d.sortables.push({instance:c,shouldRevert:c.options.revert}),c.refreshPositions(),c._trigger("activate",b,f))})},stop:function(b,c){var d=a(this).data("draggable"),e=a.extend({},c,{item:d.element});a.each(d.sortables,function(){this.instance.isOver?(this.instance.isOver=0,d.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=!0),this.instance._mouseStop(b),this.instance.options.helper=this.instance.options._helper,d.options.helper=="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",b,e))})},drag:function(b,c){var d=a(this).data("draggable"),e=this,f=function(b){var c=this.offset.click.top,d=this.offset.click.left,e=this.positionAbs.top,f=this.positionAbs.left,g=b.height,h=b.width,i=b.top,j=b.left;return a.ui.isOver(e+c,f+d,i,j,g,h)};a.each(d.sortables,function(f){this.instance.positionAbs=d.positionAbs,this.instance.helperProportions=d.helperProportions,this.instance.offset.click=d.offset.click,this.instance._intersectsWith(this.instance.containerCache)?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=a(e).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return c.helper[0]},b.target=this.instance.currentItem[0],this.instance._mouseCapture(b,!0),this.instance._mouseStart(b,!0,!0),this.instance.offset.click.top=d.offset.click.top,this.instance.offset.click.left=d.offset.click.left,this.instance.offset.parent.left-=d.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=d.offset.parent.top-this.instance.offset.parent.top,d._trigger("toSortable",b),d.dropped=this.instance.element,d.currentItem=d.element,this.instance.fromOutside=d),this.instance.currentItem&&this.instance._mouseDrag(b)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",b,this.instance._uiHash(this.instance)),this.instance._mouseStop(b,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),d._trigger("fromSortable",b),d.dropped=!1)})}}),a.ui.plugin.add("draggable","cursor",{start:function(b,c){var d=a("body"),e=a(this).data("draggable").options;d.css("cursor")&&(e._cursor=d.css("cursor")),d.css("cursor",e.cursor)},stop:function(b,c){var d=a(this).data("draggable").options;d._cursor&&a("body").css("cursor",d._cursor)}}),a.ui.plugin.add("draggable","opacity",{start:function(b,c){var d=a(c.helper),e=a(this).data("draggable").options;d.css("opacity")&&(e._opacity=d.css("opacity")),d.css("opacity",e.opacity)},stop:function(b,c){var d=a(this).data("draggable").options;d._opacity&&a(c.helper).css("opacity",d._opacity)}}),a.ui.plugin.add("draggable","scroll",{start:function(b,c){var d=a(this).data("draggable");d.scrollParent[0]!=document&&d.scrollParent[0].tagName!="HTML"&&(d.overflowOffset=d.scrollParent.offset())},drag:function(b,c){var d=a(this).data("draggable"),e=d.options,f=!1;if(d.scrollParent[0]!=document&&d.scrollParent[0].tagName!="HTML"){if(!e.axis||e.axis!="x")d.overflowOffset.top+d.scrollParent[0].offsetHeight-b.pageY<e.scrollSensitivity?d.scrollParent[0].scrollTop=f=d.scrollParent[0].scrollTop+e.scrollSpeed:b.pageY-d.overflowOffset.top<e.scrollSensitivity&&(d.scrollParent[0].scrollTop=f=d.scrollParent[0].scrollTop-e.scrollSpeed);if(!e.axis||e.axis!="y")d.overflowOffset.left+d.scrollParent[0].offsetWidth-b.pageX<e.scrollSensitivity?d.scrollParent[0].scrollLeft=f=d.scrollParent[0].scrollLeft+e.scrollSpeed:b.pageX-d.overflowOffset.left<e.scrollSensitivity&&(d.scrollParent[0].scrollLeft=f=d.scrollParent[0].scrollLeft-e.scrollSpeed)}else{if(!e.axis||e.axis!="x")b.pageY-a(document).scrollTop()<e.scrollSensitivity?f=a(document).scrollTop(a(document).scrollTop()-e.scrollSpeed):a(window).height()-(b.pageY-a(document).scrollTop())<e.scrollSensitivity&&(f=a(document).scrollTop(a(document).scrollTop()+e.scrollSpeed));if(!e.axis||e.axis!="y")b.pageX-a(document).scrollLeft()<e.scrollSensitivity?f=a(document).scrollLeft(a(document).scrollLeft()-e.scrollSpeed):a(window).width()-(b.pageX-a(document).scrollLeft())<e.scrollSensitivity&&(f=a(document).scrollLeft(a(document).scrollLeft()+e.scrollSpeed))}f!==!1&&a.ui.ddmanager&&!e.dropBehaviour&&a.ui.ddmanager.prepareOffsets(d,b)}}),a.ui.plugin.add("draggable","snap",{start:function(b,c){var d=a(this).data("draggable"),e=d.options;d.snapElements=[],a(e.snap.constructor!=String?e.snap.items||":data(draggable)":e.snap).each(function(){var b=a(this),c=b.offset();this!=d.element[0]&&d.snapElements.push({item:this,width:b.outerWidth(),height:b.outerHeight(),top:c.top,left:c.left})})},drag:function(b,c){var d=a(this).data("draggable"),e=d.options,f=e.snapTolerance,g=c.offset.left,h=g+d.helperProportions.width,i=c.offset.top,j=i+d.helperProportions.height;for(var k=d.snapElements.length-1;k>=0;k--){var l=d.snapElements[k].left,m=l+d.snapElements[k].width,n=d.snapElements[k].top,o=n+d.snapElements[k].height;if(!(l-f<g&&g<m+f&&n-f<i&&i<o+f||l-f<g&&g<m+f&&n-f<j&&j<o+f||l-f<h&&h<m+f&&n-f<i&&i<o+f||l-f<h&&h<m+f&&n-f<j&&j<o+f)){d.snapElements[k].snapping&&d.options.snap.release&&d.options.snap.release.call(d.element,b,a.extend(d._uiHash(),{snapItem:d.snapElements[k].item})),d.snapElements[k].snapping=!1;continue}if(e.snapMode!="inner"){var p=Math.abs(n-j)<=f,q=Math.abs(o-i)<=f,r=Math.abs(l-h)<=f,s=Math.abs(m-g)<=f;p&&(c.position.top=d._convertPositionTo("relative",{top:n-d.helperProportions.height,left:0}).top-d.margins.top),q&&(c.position.top=d._convertPositionTo("relative",{top:o,left:0}).top-d.margins.top),r&&(c.position.left=d._convertPositionTo("relative",{top:0,left:l-d.helperProportions.width}).left-d.margins.left),s&&(c.position.left=d._convertPositionTo("relative",{top:0,left:m}).left-d.margins.left)}var t=p||q||r||s;if(e.snapMode!="outer"){var p=Math.abs(n-i)<=f,q=Math.abs(o-j)<=f,r=Math.abs(l-g)<=f,s=Math.abs(m-h)<=f;p&&(c.position.top=d._convertPositionTo("relative",{top:n,left:0}).top-d.margins.top),q&&(c.position.top=d._convertPositionTo("relative",{top:o-d.helperProportions.height,left:0}).top-d.margins.top),r&&(c.position.left=d._convertPositionTo("relative",{top:0,left:l}).left-d.margins.left),s&&(c.position.left=d._convertPositionTo("relative",{top:0,left:m-d.helperProportions.width}).left-d.margins.left)}!d.snapElements[k].snapping&&(p||q||r||s||t)&&d.options.snap.snap&&d.options.snap.snap.call(d.element,b,a.extend(d._uiHash(),{snapItem:d.snapElements[k].item})),d.snapElements[k].snapping=p||q||r||s||t}}}),a.ui.plugin.add("draggable","stack",{start:function(b,c){var d=a(this).data("draggable").options,e=a.makeArray(a(d.stack)).sort(function(b,c){return(parseInt(a(b).css("zIndex"),10)||0)-(parseInt(a(c).css("zIndex"),10)||0)});if(!!e.length){var f=parseInt(e[0].style.zIndex)||0;a(e).each(function(a){this.style.zIndex=f+a}),this[0].style.zIndex=f+e.length}}}),a.ui.plugin.add("draggable","zIndex",{start:function(b,c){var d=a(c.helper),e=a(this).data("draggable").options;d.css("zIndex")&&(e._zIndex=d.css("zIndex")),d.css("zIndex",e.zIndex)},stop:function(b,c){var d=a(this).data("draggable").options;d._zIndex&&a(c.helper).css("zIndex",d._zIndex)}})})(jQuery);/*
+ * jQuery UI Slider 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.widget.js
+ */(function(a,b){var c=5;a.widget("ui.slider",a.ui.mouse,{widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null},_create:function(){var b=this,d=this.options,e=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),f="<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>",g=d.values&&d.values.length||1,h=[];this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"+(d.disabled?" ui-slider-disabled ui-disabled":"")),this.range=a([]),d.range&&(d.range===!0&&(d.values||(d.values=[this._valueMin(),this._valueMin()]),d.values.length&&d.values.length!==2&&(d.values=[d.values[0],d.values[0]])),this.range=a("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(d.range==="min"||d.range==="max"?" ui-slider-range-"+d.range:"")));for(var i=e.length;i<g;i+=1)h.push(f);this.handles=e.add(a(h.join("")).appendTo(b.element)),this.handle=this.handles.eq(0),this.handles.add(this.range).filter("a").click(function(a){a.preventDefault()}).hover(function(){d.disabled||a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")}).focus(function(){d.disabled?a(this).blur():(a(".ui-slider .ui-state-focus").removeClass("ui-state-focus"),a(this).addClass("ui-state-focus"))}).blur(function(){a(this).removeClass("ui-state-focus")}),this.handles.each(function(b){a(this).data("index.ui-slider-handle",b)}),this.handles.keydown(function(d){var e=!0,f=a(this).data("index.ui-slider-handle"),g,h,i,j;if(!b.options.disabled){switch(d.keyCode){case a.ui.keyCode.HOME:case a.ui.keyCode.END:case a.ui.keyCode.PAGE_UP:case a.ui.keyCode.PAGE_DOWN:case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:e=!1;if(!b._keySliding){b._keySliding=!0,a(this).addClass("ui-state-active"),g=b._start(d,f);if(g===!1)return}}j=b.options.step,b.options.values&&b.options.values.length?h=i=b.values(f):h=i=b.value();switch(d.keyCode){case a.ui.keyCode.HOME:i=b._valueMin();break;case a.ui.keyCode.END:i=b._valueMax();break;case a.ui.keyCode.PAGE_UP:i=b._trimAlignValue(h+(b._valueMax()-b._valueMin())/c);break;case a.ui.keyCode.PAGE_DOWN:i=b._trimAlignValue(h-(b._valueMax()-b._valueMin())/c);break;case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:if(h===b._valueMax())return;i=b._trimAlignValue(h+j);break;case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:if(h===b._valueMin())return;i=b._trimAlignValue(h-j)}b._slide(d,f,i);return e}}).keyup(function(c){var d=a(this).data("index.ui-slider-handle");b._keySliding&&(b._keySliding=!1,b._stop(c,d),b._change(c,d),a(this).removeClass("ui-state-active"))}),this._refreshValue(),this._animateOff=!1},destroy:function(){this.handles.remove(),this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider"),this._mouseDestroy();return this},_mouseCapture:function(b){var c=this.options,d,e,f,g,h,i,j,k,l;if(c.disabled)return!1;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),d={x:b.pageX,y:b.pageY},e=this._normValueFromMouse(d),f=this._valueMax()-this._valueMin()+1,h=this,this.handles.each(function(b){var c=Math.abs(e-h.values(b));f>c&&(f=c,g=a(this),i=b)}),c.range===!0&&this.values(1)===c.min&&(i+=1,g=a(this.handles[i])),j=this._start(b,i);if(j===!1)return!1;this._mouseSliding=!0,h._handleIndex=i,g.addClass("ui-state-active").focus(),k=g.offset(),l=!a(b.target).parents().andSelf().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:b.pageX-k.left-g.width()/2,top:b.pageY-k.top-g.height()/2-(parseInt(g.css("borderTopWidth"),10)||0)-(parseInt(g.css("borderBottomWidth"),10)||0)+(parseInt(g.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(b,i,e),this._animateOff=!0;return!0},_mouseStart:function(a){return!0},_mouseDrag:function(a){var b={x:a.pageX,y:a.pageY},c=this._normValueFromMouse(b);this._slide(a,this._handleIndex,c);return!1},_mouseStop:function(a){this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(a,this._handleIndex),this._change(a,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1;return!1},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(a){var b,c,d,e,f;this.orientation==="horizontal"?(b=this.elementSize.width,c=a.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(b=this.elementSize.height,c=a.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),d=c/b,d>1&&(d=1),d<0&&(d=0),this.orientation==="vertical"&&(d=1-d),e=this._valueMax()-this._valueMin(),f=this._valueMin()+d*e;return this._trimAlignValue(f)},_start:function(a,b){var c={handle:this.handles[b],value:this.value()};this.options.values&&this.options.values.length&&(c.value=this.values(b),c.values=this.values());return this._trigger("start",a,c)},_slide:function(a,b,c){var d,e,f;this.options.values&&this.options.values.length?(d=this.values(b?0:1),this.options.values.length===2&&this.options.range===!0&&(b===0&&c>d||b===1&&c<d)&&(c=d),c!==this.values(b)&&(e=this.values(),e[b]=c,f=this._trigger("slide",a,{handle:this.handles[b],value:c,values:e}),d=this.values(b?0:1),f!==!1&&this.values(b,c,!0))):c!==this.value()&&(f=this._trigger("slide",a,{handle:this.handles[b],value:c}),f!==!1&&this.value(c))},_stop:function(a,b){var c={handle:this.handles[b],value:this.value()};this.options.values&&this.options.values.length&&(c.value=this.values(b),c.values=this.values()),this._trigger("stop",a,c)},_change:function(a,b){if(!this._keySliding&&!this._mouseSliding){var c={handle:this.handles[b],value:this.value()};this.options.values&&this.options.values.length&&(c.value=this.values(b),c.values=this.values()),this._trigger("change",a,c)}},value:function(a){if(arguments.length)this.options.value=this._trimAlignValue(a),this._refreshValue(),this._change(null,0);else return this._value()},values:function(b,c){var d,e,f;if(arguments.length>1)this.options.values[b]=this._trimAlignValue(c),this._refreshValue(),this._change(null,b);else{if(!arguments.length)return this._values();if(!a.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(b):this.value();d=this.options.values,e=arguments[0];for(f=0;f<d.length;f+=1)d[f]=this._trimAlignValue(e[f]),this._change(null,f);this._refreshValue()}},_setOption:function(b,c){var d,e=0;a.isArray(this.options.values)&&(e=this.options.values.length),a.Widget.prototype._setOption.apply(this,arguments);switch(b){case"disabled":c?(this.handles.filter(".ui-state-focus").blur(),this.handles.removeClass("ui-state-hover"),this.handles.propAttr("disabled",!0),this.element.addClass("ui-disabled")):(this.handles.propAttr("disabled",!1),this.element.removeClass("ui-disabled"));break;case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue();break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":this._animateOff=!0,this._refreshValue();for(d=0;d<e;d+=1)this._change(null,d);this._animateOff=!1}},_value:function(){var a=this.options.value;a=this._trimAlignValue(a);return a},_values:function(a){var b,c,d;if(arguments.length){b=this.options.values[a],b=this._trimAlignValue(b);return b}c=this.options.values.slice();for(d=0;d<c.length;d+=1)c[d]=this._trimAlignValue(c[d]);return c},_trimAlignValue:function(a){if(a<=this._valueMin())return this._valueMin();if(a>=this._valueMax())return this._valueMax();var b=this.options.step>0?this.options.step:1,c=(a-this._valueMin())%b,d=a-c;Math.abs(c)*2>=b&&(d+=c>0?b:-b);return parseFloat(d.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var b=this.options.range,c=this.options,d=this,e=this._animateOff?!1:c.animate,f,g={},h,i,j,k;this.options.values&&this.options.values.length?this.handles.each(function(b,i){f=(d.values(b)-d._valueMin())/(d._valueMax()-d._valueMin())*100,g[d.orientation==="horizontal"?"left":"bottom"]=f+"%",a(this).stop(1,1)[e?"animate":"css"](g,c.animate),d.options.range===!0&&(d.orientation==="horizontal"?(b===0&&d.range.stop(1,1)[e?"animate":"css"]({left:f+"%"},c.animate),b===1&&d.range[e?"animate":"css"]({width:f-h+"%"},{queue:!1,duration:c.animate})):(b===0&&d.range.stop(1,1)[e?"animate":"css"]({bottom:f+"%"},c.animate),b===1&&d.range[e?"animate":"css"]({height:f-h+"%"},{queue:!1,duration:c.animate}))),h=f}):(i=this.value(),j=this._valueMin(),k=this._valueMax(),f=k!==j?(i-j)/(k-j)*100:0,g[d.orientation==="horizontal"?"left":"bottom"]=f+"%",this.handle.stop(1,1)[e?"animate":"css"](g,c.animate),b==="min"&&this.orientation==="horizontal"&&this.range.stop(1,1)[e?"animate":"css"]({width:f+"%"},c.animate),b==="max"&&this.orientation==="horizontal"&&this.range[e?"animate":"css"]({width:100-f+"%"},{queue:!1,duration:c.animate}),b==="min"&&this.orientation==="vertical"&&this.range.stop(1,1)[e?"animate":"css"]({height:f+"%"},c.animate),b==="max"&&this.orientation==="vertical"&&this.range[e?"animate":"css"]({height:100-f+"%"},{queue:!1,duration:c.animate}))}}),a.extend(a.ui.slider,{version:"1.8.17"})})(jQuery);
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/jquery-ui/jquery-ui-1.8.custom.min.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/jquery-ui/jquery-ui-1.8.custom.min.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/jquery-ui/jquery-ui-1.8.custom.min.js	(revision 29468)
@@ -0,0 +1,84 @@
+/*!
+ * jQuery UI 1.8
+ *
+ * Copyright (c) 2010 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 1.8
+ *
+ * Copyright (c) 2010 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(a){a.ui={version:"1.8",plugin:{add:function(c,d,f){var e=a.ui[c].prototype;for(var b in f){e.plugins[b]=e.plugins[b]||[];e.plugins[b].push([d,f[b]])}},call:function(b,d,c){var f=b.plugins[d];if(!f||!b.element[0].parentNode){return}for(var e=0;e<f.length;e++){if(b.options[f[e][0]]){f[e][1].apply(b.element,c)}}}},contains:function(d,c){return document.compareDocumentPosition?d.compareDocumentPosition(c)&16:d!==c&&d.contains(c)},hasScroll:function(e,c){if(a(e).css("overflow")=="hidden"){return false}var b=(c&&c=="left")?"scrollLeft":"scrollTop",d=false;if(e[b]>0){return true}e[b]=1;d=(e[b]>0);e[b]=0;return d},isOverAxis:function(c,b,d){return(c>b)&&(c<(b+d))},isOver:function(g,c,f,e,b,d){return a.ui.isOverAxis(g,f,b)&&a.ui.isOverAxis(c,e,d)},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}};a.fn.extend({_focus:a.fn.focus,focus:function(b,c){return typeof b==="number"?this.each(function(){var d=this;setTimeout(function(){a(d).focus();(c&&c.call(d))},b)}):this._focus.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 b;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){b=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{b=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!b.length?a(document):b},zIndex:function(e){if(e!==undefined){return this.css("zIndex",e)}if(this.length){var c=a(this[0]),b,d;while(c.length&&c[0]!==document){b=c.css("position");if(b=="absolute"||b=="relative"||b=="fixed"){d=parseInt(c.css("zIndex"));if(!isNaN(d)&&d!=0){return d}}c=c.parent()}}return 0}});a.extend(a.expr[":"],{data:function(d,c,b){return !!a.data(d,b[3])},focusable:function(c){var d=c.nodeName.toLowerCase(),b=a.attr(c,"tabindex");return(/input|select|textarea|button|object/.test(d)?!c.disabled:"a"==d||"area"==d?c.href||!isNaN(b):!isNaN(b))&&!a(c)["area"==d?"parents":"closest"](":hidden").length},tabbable:function(c){var b=a.attr(c,"tabindex");return(isNaN(b)||b>=0)&&a(c).is(":focusable")}})})(jQuery);;/*!
+ * jQuery UI Widget 1.8
+ *
+ * Copyright (c) 2010 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/Widget
+ *//*
+ * jQuery UI Widget 1.8
+ *
+ * Copyright (c) 2010 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/Widget
+ */
+(function(b){var a=b.fn.remove;b.fn.remove=function(c,d){return this.each(function(){if(!d){if(!c||b.filter(c,[this]).length){b("*",this).add(this).each(function(){b(this).triggerHandler("remove")})}}return a.call(b(this),c,d)})};b.widget=function(d,f,c){var e=d.split(".")[0],h;d=d.split(".")[1];h=e+"-"+d;if(!c){c=f;f=b.Widget}b.expr[":"][h]=function(i){return !!b.data(i,d)};b[e]=b[e]||{};b[e][d]=function(i,j){if(arguments.length){this._createWidget(i,j)}};var g=new f();g.options=b.extend({},g.options);b[e][d].prototype=b.extend(true,g,{namespace:e,widgetName:d,widgetEventPrefix:b[e][d].prototype.widgetEventPrefix||d,widgetBaseClass:h},c);b.widget.bridge(d,b[e][d])};b.widget.bridge=function(d,c){b.fn[d]=function(g){var e=typeof g==="string",f=Array.prototype.slice.call(arguments,1),h=this;g=!e&&f.length?b.extend.apply(null,[true,g].concat(f)):g;if(e&&g.substring(0,1)==="_"){return h}if(e){this.each(function(){var i=b.data(this,d),j=i&&b.isFunction(i[g])?i[g].apply(i,f):i;if(j!==i&&j!==undefined){h=j;return false}})}else{this.each(function(){var i=b.data(this,d);if(i){if(g){i.option(g)}i._init()}else{b.data(this,d,new c(g,this))}})}return h}};b.Widget=function(c,d){if(arguments.length){this._createWidget(c,d)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(d,e){this.element=b(e).data(this.widgetName,this);this.options=b.extend(true,{},this.options,b.metadata&&b.metadata.get(e)[this.widgetName],d);var c=this;this.element.bind("remove."+this.widgetName,function(){c.destroy()});this._create();this._init()},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled")},widget:function(){return this.element},option:function(e,f){var d=e,c=this;if(arguments.length===0){return b.extend({},c.options)}if(typeof e==="string"){if(f===undefined){return this.options[e]}d={};d[e]=f}b.each(d,function(g,h){c._setOption(g,h)});return c},_setOption:function(c,d){this.options[c]=d;if(c==="disabled"){this.widget()[d?"addClass":"removeClass"](this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").attr("aria-disabled",d)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(d,e,f){var h=this.options[d];e=b.Event(e);e.type=(d===this.widgetEventPrefix?d:this.widgetEventPrefix+d).toLowerCase();f=f||{};if(e.originalEvent){for(var c=b.event.props.length,g;c;){g=b.event.props[--c];e[g]=e.originalEvent[g]}}this.element.trigger(e,f);return !(b.isFunction(h)&&h.call(this.element[0],e,f)===false||e.isDefaultPrevented())}}})(jQuery);;/*!
+ * jQuery UI Mouse 1.8
+ *
+ * Copyright (c) 2010 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/Mouse
+ *
+ * Depends:
+ *	jquery.ui.widget.js
+ *//*
+ * jQuery UI Mouse 1.8
+ *
+ * Copyright (c) 2010 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/Mouse
+ *
+ * Depends:
+ *	jquery.ui.widget.js
+ */
+(function(a){a.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var b=this;this.element.bind("mousedown."+this.widgetName,function(c){return b._mouseDown(c)}).bind("click."+this.widgetName,function(c){if(b._preventClickEvent){b._preventClickEvent=false;c.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(d){d.originalEvent=d.originalEvent||{};if(d.originalEvent.mouseHandled){return}(this._mouseStarted&&this._mouseUp(d));this._mouseDownEvent=d;var c=this,e=(d.which==1),b=(typeof this.options.cancel=="string"?a(d.target).parents().add(d.target).filter(this.options.cancel).length:false);if(!e||b||!this._mouseCapture(d)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){c.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(d)!==false);if(!this._mouseStarted){d.preventDefault();return true}}this._mouseMoveDelegate=function(f){return c._mouseMove(f)};this._mouseUpDelegate=function(f){return c._mouseUp(f)};a(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);(a.browser.safari||d.preventDefault());d.originalEvent.mouseHandled=true;return true},_mouseMove:function(b){if(a.browser.msie&&!b.button){return this._mouseUp(b)}if(this._mouseStarted){this._mouseDrag(b);return b.preventDefault()}if(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,b)!==false);(this._mouseStarted?this._mouseDrag(b):this._mouseUp(b))}return !this._mouseStarted},_mouseUp:function(b){a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=(b.target==this._mouseDownEvent.target);this._mouseStop(b)}return false},_mouseDistanceMet:function(b){return(Math.max(Math.abs(this._mouseDownEvent.pageX-b.pageX),Math.abs(this._mouseDownEvent.pageY-b.pageY))>=this.options.distance)},_mouseDelayMet:function(b){return this.mouseDelayMet},_mouseStart:function(b){},_mouseDrag:function(b){},_mouseStop:function(b){},_mouseCapture:function(b){return true}})})(jQuery);;/*
+ * jQuery UI Draggable 1.8
+ *
+ * Copyright (c) 2010 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/Draggables
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.widget.js
+ */(function(a){a.widget("ui.draggable",a.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){if(this.options.helper=="original"&&!(/^(?:r|a|f)/).test(this.element.css("position"))){this.element[0].style.position="relative"}(this.options.addClasses&&this.element.addClass("ui-draggable"));(this.options.disabled&&this.element.addClass("ui-draggable-disabled"));this._mouseInit()},destroy:function(){if(!this.element.data("draggable")){return}this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this},_mouseCapture:function(b){var c=this.options;if(this.helper||c.disabled||a(b.target).is(".ui-resizable-handle")){return false}this.handle=this._getHandle(b);if(!this.handle){return false}return true},_mouseStart:function(b){var c=this.options;this.helper=this._createHelper(b);this._cacheHelperProportions();if(a.ui.ddmanager){a.ui.ddmanager.current=this}this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this.position=this._generatePosition(b);this.originalPageX=b.pageX;this.originalPageY=b.pageY;(c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt));if(c.containment){this._setContainment()}if(this._trigger("start",b)===false){this._clear();return false}this._cacheHelperProportions();if(a.ui.ddmanager&&!c.dropBehaviour){a.ui.ddmanager.prepareOffsets(this,b)}this.helper.addClass("ui-draggable-dragging");this._mouseDrag(b,true);return true},_mouseDrag:function(b,d){this.position=this._generatePosition(b);this.positionAbs=this._convertPositionTo("absolute");if(!d){var c=this._uiHash();if(this._trigger("drag",b,c)===false){this._mouseUp({});return false}this.position=c.position}if(!this.options.axis||this.options.axis!="y"){this.helper[0].style.left=this.position.left+"px"}if(!this.options.axis||this.options.axis!="x"){this.helper[0].style.top=this.position.top+"px"}if(a.ui.ddmanager){a.ui.ddmanager.drag(this,b)}return false},_mouseStop:function(c){var d=false;if(a.ui.ddmanager&&!this.options.dropBehaviour){d=a.ui.ddmanager.drop(this,c)}if(this.dropped){d=this.dropped;this.dropped=false}if(!this.element[0]||!this.element[0].parentNode){return false}if((this.options.revert=="invalid"&&!d)||(this.options.revert=="valid"&&d)||this.options.revert===true||(a.isFunction(this.options.revert)&&this.options.revert.call(this.element,d))){var b=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){if(b._trigger("stop",c)!==false){b._clear()}})}else{if(this._trigger("stop",c)!==false){this._clear()}}return false},cancel:function(){if(this.helper.is(".ui-draggable-dragging")){this._mouseUp({})}else{this._clear()}return this},_getHandle:function(b){var c=!this.options.handle||!a(this.options.handle,this.element).length?true:false;a(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==b.target){c=true}});return c},_createHelper:function(c){var d=this.options;var b=a.isFunction(d.helper)?a(d.helper.apply(this.element[0],[c])):(d.helper=="clone"?this.element.clone():this.element);if(!b.parents("body").length){b.appendTo((d.appendTo=="parent"?this.element[0].parentNode:d.appendTo))}if(b[0]!=this.element[0]&&!(/(fixed|absolute)/).test(b.css("position"))){b.css("position","absolute")}return b},_adjustOffsetFromHelper:function(b){if(typeof b=="string"){b=b.split(" ")}if(a.isArray(b)){b={left:+b[0],top:+b[1]||0}}if("left" in b){this.offset.click.left=b.left+this.margins.left}if("right" in b){this.offset.click.left=this.helperProportions.width-b.right+this.margins.left}if("top" in b){this.offset.click.top=b.top+this.margins.top}if("bottom" in b){this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top}},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])){b.left+=this.scrollParent.scrollLeft();b.top+=this.scrollParent.scrollTop()}if((this.offsetParent[0]==document.body)||(this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)){b={top:0,left:0}}return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var b=this.element.position();return{top:b.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:b.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else{return{top:0,left:0}}},_cacheMargins:function(){this.margins={left:(parseInt(this.element.css("marginLeft"),10)||0),top:(parseInt(this.element.css("marginTop"),10)||0)}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e=this.options;if(e.containment=="parent"){e.containment=this.helper[0].parentNode}if(e.containment=="document"||e.containment=="window"){this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,a(e.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a(e.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]}if(!(/^(document|window|parent)$/).test(e.containment)&&e.containment.constructor!=Array){var c=a(e.containment)[0];if(!c){return}var d=a(e.containment).offset();var b=(a(c).css("overflow")!="hidden");this.containment=[d.left+(parseInt(a(c).css("borderLeftWidth"),10)||0)+(parseInt(a(c).css("paddingLeft"),10)||0)-this.margins.left,d.top+(parseInt(a(c).css("borderTopWidth"),10)||0)+(parseInt(a(c).css("paddingTop"),10)||0)-this.margins.top,d.left+(b?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(a(c).css("borderLeftWidth"),10)||0)-(parseInt(a(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,d.top+(b?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(a(c).css("borderTopWidth"),10)||0)-(parseInt(a(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}else{if(e.containment.constructor==Array){this.containment=e.containment}}},_convertPositionTo:function(f,h){if(!h){h=this.position}var c=f=="absolute"?1:-1;var e=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=(/(html|body)/i).test(b[0].tagName);return{top:(h.top+this.offset.relative.top*c+this.offset.parent.top*c-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(g?0:b.scrollTop()))*c)),left:(h.left+this.offset.relative.left*c+this.offset.parent.left*c-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:b.scrollLeft())*c))}},_generatePosition:function(e){var h=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,i=(/(html|body)/i).test(b[0].tagName);var d=e.pageX;var c=e.pageY;if(this.originalPosition){if(this.containment){if(e.pageX-this.offset.click.left<this.containment[0]){d=this.containment[0]+this.offset.click.left}if(e.pageY-this.offset.click.top<this.containment[1]){c=this.containment[1]+this.offset.click.top}if(e.pageX-this.offset.click.left>this.containment[2]){d=this.containment[2]+this.offset.click.left}if(e.pageY-this.offset.click.top>this.containment[3]){c=this.containment[3]+this.offset.click.top}}if(h.grid){var g=this.originalPageY+Math.round((c-this.originalPageY)/h.grid[1])*h.grid[1];c=this.containment?(!(g-this.offset.click.top<this.containment[1]||g-this.offset.click.top>this.containment[3])?g:(!(g-this.offset.click.top<this.containment[1])?g-h.grid[1]:g+h.grid[1])):g;var f=this.originalPageX+Math.round((d-this.originalPageX)/h.grid[0])*h.grid[0];d=this.containment?(!(f-this.offset.click.left<this.containment[0]||f-this.offset.click.left>this.containment[2])?f:(!(f-this.offset.click.left<this.containment[0])?f-h.grid[0]:f+h.grid[0])):f}}return{top:(c-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(i?0:b.scrollTop())))),left:(d-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():i?0:b.scrollLeft())))}},_clear:function(){this.helper.removeClass("ui-draggable-dragging");if(this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval){this.helper.remove()}this.helper=null;this.cancelHelperRemoval=false},_trigger:function(b,c,d){d=d||this._uiHash();a.ui.plugin.call(this,b,[c,d]);if(b=="drag"){this.positionAbs=this._convertPositionTo("absolute")}return a.Widget.prototype._trigger.call(this,b,c,d)},plugins:{},_uiHash:function(b){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}});a.extend(a.ui.draggable,{version:"1.8"});a.ui.plugin.add("draggable","connectToSortable",{start:function(c,e){var d=a(this).data("draggable"),f=d.options,b=a.extend({},e,{item:d.element});d.sortables=[];a(f.connectToSortable).each(function(){var g=a.data(this,"sortable");if(g&&!g.options.disabled){d.sortables.push({instance:g,shouldRevert:g.options.revert});g._refreshItems();g._trigger("activate",c,b)}})},stop:function(c,e){var d=a(this).data("draggable"),b=a.extend({},e,{item:d.element});a.each(d.sortables,function(){if(this.instance.isOver){this.instance.isOver=0;d.cancelHelperRemoval=true;this.instance.cancelHelperRemoval=false;if(this.shouldRevert){this.instance.options.revert=true}this.instance._mouseStop(c);this.instance.options.helper=this.instance.options._helper;if(d.options.helper=="original"){this.instance.currentItem.css({top:"auto",left:"auto"})}}else{this.instance.cancelHelperRemoval=false;this.instance._trigger("deactivate",c,b)}})},drag:function(c,f){var e=a(this).data("draggable"),b=this;var d=function(i){var n=this.offset.click.top,m=this.offset.click.left;var g=this.positionAbs.top,k=this.positionAbs.left;var j=i.height,l=i.width;var p=i.top,h=i.left;return a.ui.isOver(g+n,k+m,p,h,j,l)};a.each(e.sortables,function(g){this.instance.positionAbs=e.positionAbs;this.instance.helperProportions=e.helperProportions;this.instance.offset.click=e.offset.click;if(this.instance._intersectsWith(this.instance.containerCache)){if(!this.instance.isOver){this.instance.isOver=1;this.instance.currentItem=a(b).clone().appendTo(this.instance.element).data("sortable-item",true);this.instance.options._helper=this.instance.options.helper;this.instance.options.helper=function(){return f.helper[0]};c.target=this.instance.currentItem[0];this.instance._mouseCapture(c,true);this.instance._mouseStart(c,true,true);this.instance.offset.click.top=e.offset.click.top;this.instance.offset.click.left=e.offset.click.left;this.instance.offset.parent.left-=e.offset.parent.left-this.instance.offset.parent.left;this.instance.offset.parent.top-=e.offset.parent.top-this.instance.offset.parent.top;e._trigger("toSortable",c);e.dropped=this.instance.element;e.currentItem=e.element;this.instance.fromOutside=e}if(this.instance.currentItem){this.instance._mouseDrag(c)}}else{if(this.instance.isOver){this.instance.isOver=0;this.instance.cancelHelperRemoval=true;this.instance.options.revert=false;this.instance._trigger("out",c,this.instance._uiHash(this.instance));this.instance._mouseStop(c,true);this.instance.options.helper=this.instance.options._helper;this.instance.currentItem.remove();if(this.instance.placeholder){this.instance.placeholder.remove()}e._trigger("fromSortable",c);e.dropped=false}}})}});a.ui.plugin.add("draggable","cursor",{start:function(c,d){var b=a("body"),e=a(this).data("draggable").options;if(b.css("cursor")){e._cursor=b.css("cursor")}b.css("cursor",e.cursor)},stop:function(b,c){var d=a(this).data("draggable").options;if(d._cursor){a("body").css("cursor",d._cursor)}}});a.ui.plugin.add("draggable","iframeFix",{start:function(b,c){var d=a(this).data("draggable").options;a(d.iframeFix===true?"iframe":d.iframeFix).each(function(){a('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1000}).css(a(this).offset()).appendTo("body")})},stop:function(b,c){a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)})}});a.ui.plugin.add("draggable","opacity",{start:function(c,d){var b=a(d.helper),e=a(this).data("draggable").options;if(b.css("opacity")){e._opacity=b.css("opacity")}b.css("opacity",e.opacity)},stop:function(b,c){var d=a(this).data("draggable").options;if(d._opacity){a(c.helper).css("opacity",d._opacity)}}});a.ui.plugin.add("draggable","scroll",{start:function(c,d){var b=a(this).data("draggable");if(b.scrollParent[0]!=document&&b.scrollParent[0].tagName!="HTML"){b.overflowOffset=b.scrollParent.offset()}},drag:function(d,e){var c=a(this).data("draggable"),f=c.options,b=false;if(c.scrollParent[0]!=document&&c.scrollParent[0].tagName!="HTML"){if(!f.axis||f.axis!="x"){if((c.overflowOffset.top+c.scrollParent[0].offsetHeight)-d.pageY<f.scrollSensitivity){c.scrollParent[0].scrollTop=b=c.scrollParent[0].scrollTop+f.scrollSpeed}else{if(d.pageY-c.overflowOffset.top<f.scrollSensitivity){c.scrollParent[0].scrollTop=b=c.scrollParent[0].scrollTop-f.scrollSpeed}}}if(!f.axis||f.axis!="y"){if((c.overflowOffset.left+c.scrollParent[0].offsetWidth)-d.pageX<f.scrollSensitivity){c.scrollParent[0].scrollLeft=b=c.scrollParent[0].scrollLeft+f.scrollSpeed}else{if(d.pageX-c.overflowOffset.left<f.scrollSensitivity){c.scrollParent[0].scrollLeft=b=c.scrollParent[0].scrollLeft-f.scrollSpeed}}}}else{if(!f.axis||f.axis!="x"){if(d.pageY-a(document).scrollTop()<f.scrollSensitivity){b=a(document).scrollTop(a(document).scrollTop()-f.scrollSpeed)}else{if(a(window).height()-(d.pageY-a(document).scrollTop())<f.scrollSensitivity){b=a(document).scrollTop(a(document).scrollTop()+f.scrollSpeed)}}}if(!f.axis||f.axis!="y"){if(d.pageX-a(document).scrollLeft()<f.scrollSensitivity){b=a(document).scrollLeft(a(document).scrollLeft()-f.scrollSpeed)}else{if(a(window).width()-(d.pageX-a(document).scrollLeft())<f.scrollSensitivity){b=a(document).scrollLeft(a(document).scrollLeft()+f.scrollSpeed)}}}}if(b!==false&&a.ui.ddmanager&&!f.dropBehaviour){a.ui.ddmanager.prepareOffsets(c,d)}}});a.ui.plugin.add("draggable","snap",{start:function(c,d){var b=a(this).data("draggable"),e=b.options;b.snapElements=[];a(e.snap.constructor!=String?(e.snap.items||":data(draggable)"):e.snap).each(function(){var g=a(this);var f=g.offset();if(this!=b.element[0]){b.snapElements.push({item:this,width:g.outerWidth(),height:g.outerHeight(),top:f.top,left:f.left})}})},drag:function(u,p){var g=a(this).data("draggable"),q=g.options;var y=q.snapTolerance;var x=p.offset.left,w=x+g.helperProportions.width,f=p.offset.top,e=f+g.helperProportions.height;for(var v=g.snapElements.length-1;v>=0;v--){var s=g.snapElements[v].left,n=s+g.snapElements[v].width,m=g.snapElements[v].top,A=m+g.snapElements[v].height;if(!((s-y<x&&x<n+y&&m-y<f&&f<A+y)||(s-y<x&&x<n+y&&m-y<e&&e<A+y)||(s-y<w&&w<n+y&&m-y<f&&f<A+y)||(s-y<w&&w<n+y&&m-y<e&&e<A+y))){if(g.snapElements[v].snapping){(g.options.snap.release&&g.options.snap.release.call(g.element,u,a.extend(g._uiHash(),{snapItem:g.snapElements[v].item})))}g.snapElements[v].snapping=false;continue}if(q.snapMode!="inner"){var c=Math.abs(m-e)<=y;var z=Math.abs(A-f)<=y;var j=Math.abs(s-w)<=y;var k=Math.abs(n-x)<=y;if(c){p.position.top=g._convertPositionTo("relative",{top:m-g.helperProportions.height,left:0}).top-g.margins.top}if(z){p.position.top=g._convertPositionTo("relative",{top:A,left:0}).top-g.margins.top}if(j){p.position.left=g._convertPositionTo("relative",{top:0,left:s-g.helperProportions.width}).left-g.margins.left}if(k){p.position.left=g._convertPositionTo("relative",{top:0,left:n}).left-g.margins.left}}var h=(c||z||j||k);if(q.snapMode!="outer"){var c=Math.abs(m-f)<=y;var z=Math.abs(A-e)<=y;var j=Math.abs(s-x)<=y;var k=Math.abs(n-w)<=y;if(c){p.position.top=g._convertPositionTo("relative",{top:m,left:0}).top-g.margins.top}if(z){p.position.top=g._convertPositionTo("relative",{top:A-g.helperProportions.height,left:0}).top-g.margins.top}if(j){p.position.left=g._convertPositionTo("relative",{top:0,left:s}).left-g.margins.left}if(k){p.position.left=g._convertPositionTo("relative",{top:0,left:n-g.helperProportions.width}).left-g.margins.left}}if(!g.snapElements[v].snapping&&(c||z||j||k||h)){(g.options.snap.snap&&g.options.snap.snap.call(g.element,u,a.extend(g._uiHash(),{snapItem:g.snapElements[v].item})))}g.snapElements[v].snapping=(c||z||j||k||h)}}});a.ui.plugin.add("draggable","stack",{start:function(c,d){var f=a(this).data("draggable").options;var e=a.makeArray(a(f.stack)).sort(function(h,g){return(parseInt(a(h).css("zIndex"),10)||0)-(parseInt(a(g).css("zIndex"),10)||0)});if(!e.length){return}var b=parseInt(e[0].style.zIndex)||0;a(e).each(function(g){this.style.zIndex=b+g});this[0].style.zIndex=b+e.length}});a.ui.plugin.add("draggable","zIndex",{start:function(c,d){var b=a(d.helper),e=a(this).data("draggable").options;if(b.css("zIndex")){e._zIndex=b.css("zIndex")}b.css("zIndex",e.zIndex)},stop:function(b,c){var d=a(this).data("draggable").options;if(d._zIndex){a(c.helper).css("zIndex",d._zIndex)}}})})(jQuery);;/*
+ * jQuery UI Slider 1.8
+ *
+ * Copyright (c) 2010 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/Slider
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.widget.js
+ */(function(b){var a=5;b.widget("ui.slider",b.ui.mouse,{widgetEventPrefix:"slide",options:{animate:false,distance:0,max:100,min:0,orientation:"horizontal",range:false,step:1,value:0,values:null},_create:function(){var c=this,d=this.options;this._keySliding=false;this._mouseSliding=false;this._animateOff=true;this._handleIndex=null;this._detectOrientation();this._mouseInit();this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget ui-widget-content ui-corner-all");if(d.disabled){this.element.addClass("ui-slider-disabled ui-disabled")}this.range=b([]);if(d.range){if(d.range===true){this.range=b("<div></div>");if(!d.values){d.values=[this._valueMin(),this._valueMin()]}if(d.values.length&&d.values.length!=2){d.values=[d.values[0],d.values[0]]}}else{this.range=b("<div></div>")}this.range.appendTo(this.element).addClass("ui-slider-range");if(d.range=="min"||d.range=="max"){this.range.addClass("ui-slider-range-"+d.range)}this.range.addClass("ui-widget-header")}if(b(".ui-slider-handle",this.element).length==0){b('<a href="#"></a>').appendTo(this.element).addClass("ui-slider-handle")}if(d.values&&d.values.length){while(b(".ui-slider-handle",this.element).length<d.values.length){b('<a href="#"></a>').appendTo(this.element).addClass("ui-slider-handle")}}this.handles=b(".ui-slider-handle",this.element).addClass("ui-state-default ui-corner-all");this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(e){e.preventDefault()}).hover(function(){if(!d.disabled){b(this).addClass("ui-state-hover")}},function(){b(this).removeClass("ui-state-hover")}).focus(function(){if(!d.disabled){b(".ui-slider .ui-state-focus").removeClass("ui-state-focus");b(this).addClass("ui-state-focus")}else{b(this).blur()}}).blur(function(){b(this).removeClass("ui-state-focus")});this.handles.each(function(e){b(this).data("index.ui-slider-handle",e)});this.handles.keydown(function(j){var g=true;var f=b(this).data("index.ui-slider-handle");if(c.options.disabled){return}switch(j.keyCode){case b.ui.keyCode.HOME:case b.ui.keyCode.END:case b.ui.keyCode.PAGE_UP:case b.ui.keyCode.PAGE_DOWN:case b.ui.keyCode.UP:case b.ui.keyCode.RIGHT:case b.ui.keyCode.DOWN:case b.ui.keyCode.LEFT:g=false;if(!c._keySliding){c._keySliding=true;b(this).addClass("ui-state-active");c._start(j,f)}break}var h,e,i=c._step();if(c.options.values&&c.options.values.length){h=e=c.values(f)}else{h=e=c.value()}switch(j.keyCode){case b.ui.keyCode.HOME:e=c._valueMin();break;case b.ui.keyCode.END:e=c._valueMax();break;case b.ui.keyCode.PAGE_UP:e=h+((c._valueMax()-c._valueMin())/a);break;case b.ui.keyCode.PAGE_DOWN:e=h-((c._valueMax()-c._valueMin())/a);break;case b.ui.keyCode.UP:case b.ui.keyCode.RIGHT:if(h==c._valueMax()){return}e=h+i;break;case b.ui.keyCode.DOWN:case b.ui.keyCode.LEFT:if(h==c._valueMin()){return}e=h-i;break}c._slide(j,f,e);return g}).keyup(function(f){var e=b(this).data("index.ui-slider-handle");if(c._keySliding){c._keySliding=false;c._stop(f,e);c._change(f,e);b(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");this._mouseDestroy();return this},_mouseCapture:function(e){var f=this.options;if(f.disabled){return false}this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();var i={x:e.pageX,y:e.pageY};var k=this._normValueFromMouse(i);var d=this._valueMax()-this._valueMin()+1,g;var l=this,j;this.handles.each(function(m){var n=Math.abs(k-l.values(m));if(d>n){d=n;g=b(this);j=m}});if(f.range==true&&this.values(1)==f.min){g=b(this.handles[++j])}this._start(e,j);this._mouseSliding=true;l._handleIndex=j;g.addClass("ui-state-active").focus();var h=g.offset();var c=!b(e.target).parents().andSelf().is(".ui-slider-handle");this._clickOffset=c?{left:0,top:0}:{left:e.pageX-h.left-(g.width()/2),top:e.pageY-h.top-(g.height()/2)-(parseInt(g.css("borderTopWidth"),10)||0)-(parseInt(g.css("borderBottomWidth"),10)||0)+(parseInt(g.css("marginTop"),10)||0)};k=this._normValueFromMouse(i);this._slide(e,j,k);this._animateOff=true;return true},_mouseStart:function(c){return true},_mouseDrag:function(e){var c={x:e.pageX,y:e.pageY};var d=this._normValueFromMouse(c);this._slide(e,this._handleIndex,d);return false},_mouseStop:function(c){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(c,this._handleIndex);this._change(c,this._handleIndex);this._handleIndex=null;this._clickOffset=null;this._animateOff=false;return false},_detectOrientation:function(){this.orientation=this.options.orientation=="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(e){var d,i;if("horizontal"==this.orientation){d=this.elementSize.width;i=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{d=this.elementSize.height;i=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}var g=(i/d);if(g>1){g=1}if(g<0){g=0}if("vertical"==this.orientation){g=1-g}var f=this._valueMax()-this._valueMin(),j=g*f,c=j%this.options.step,h=this._valueMin()+j-c;if(c>(this.options.step/2)){h+=this.options.step}return parseFloat(h.toFixed(5))},_start:function(e,d){var c={handle:this.handles[d],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(d);c.values=this.values()}this._trigger("start",e,c)},_slide:function(g,f,e){var h=this.handles[f];if(this.options.values&&this.options.values.length){var c=this.values(f?0:1);if((this.options.values.length==2&&this.options.range===true)&&((f==0&&e>c)||(f==1&&e<c))){e=c}if(e!=this.values(f)){var d=this.values();d[f]=e;var i=this._trigger("slide",g,{handle:this.handles[f],value:e,values:d});var c=this.values(f?0:1);if(i!==false){this.values(f,e,true)}}}else{if(e!=this.value()){var i=this._trigger("slide",g,{handle:this.handles[f],value:e});if(i!==false){this.value(e)}}}},_stop:function(e,d){var c={handle:this.handles[d],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(d);c.values=this.values()}this._trigger("stop",e,c)},_change:function(e,d){if(!this._keySliding&&!this._mouseSliding){var c={handle:this.handles[d],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(d);c.values=this.values()}this._trigger("change",e,c)}},value:function(c){if(arguments.length){this.options.value=this._trimValue(c);this._refreshValue();this._change(null,0)}return this._value()},values:function(e,h){if(arguments.length>1){this.options.values[e]=this._trimValue(h);this._refreshValue();this._change(null,e)}if(arguments.length){if(b.isArray(arguments[0])){var g=this.options.values,d=arguments[0];for(var f=0,c=g.length;f<c;f++){g[f]=this._trimValue(d[f]);this._change(null,f)}this._refreshValue()}else{if(this.options.values&&this.options.values.length){return this._values(e)}else{return this.value()}}}else{return this._values()}},_setOption:function(d,e){var c,f=0;if(jQuery.isArray(this.options.values)){f=this.options.values.length}b.Widget.prototype._setOption.apply(this,arguments);switch(d){case"disabled":if(e){this.handles.filter(".ui-state-focus").blur();this.handles.removeClass("ui-state-hover");this.handles.attr("disabled","disabled");this.element.addClass("ui-disabled")}else{this.handles.removeAttr("disabled");this.element.removeClass("ui-disabled")}case"orientation":this._detectOrientation();this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation);this._refreshValue();break;case"value":this._animateOff=true;this._refreshValue();this._change(null,0);this._animateOff=false;break;case"values":this._animateOff=true;this._refreshValue();for(c=0;c<f;c++){this._change(null,c)}this._animateOff=false;break}},_step:function(){var c=this.options.step;return c},_value:function(){var c=this.options.value;c=this._trimValue(c);return c},_values:function(d){if(arguments.length){var g=this.options.values[d];g=this._trimValue(g);return g}else{var f=this.options.values.slice();for(var e=0,c=f.length;e<c;e++){f[e]=this._trimValue(f[e])}return f}},_trimValue:function(c){if(c<this._valueMin()){c=this._valueMin()}if(c>this._valueMax()){c=this._valueMax()}return c},_valueMin:function(){var c=this.options.min;return c},_valueMax:function(){var c=this.options.max;return c},_refreshValue:function(){var g=this.options.range,e=this.options,m=this;var d=(!this._animateOff)?e.animate:false;if(this.options.values&&this.options.values.length){var j,i;this.handles.each(function(q,o){var p=(m.values(q)-m._valueMin())/(m._valueMax()-m._valueMin())*100;var n={};n[m.orientation=="horizontal"?"left":"bottom"]=p+"%";b(this).stop(1,1)[d?"animate":"css"](n,e.animate);if(m.options.range===true){if(m.orientation=="horizontal"){(q==0)&&m.range.stop(1,1)[d?"animate":"css"]({left:p+"%"},e.animate);(q==1)&&m.range[d?"animate":"css"]({width:(p-lastValPercent)+"%"},{queue:false,duration:e.animate})}else{(q==0)&&m.range.stop(1,1)[d?"animate":"css"]({bottom:(p)+"%"},e.animate);(q==1)&&m.range[d?"animate":"css"]({height:(p-lastValPercent)+"%"},{queue:false,duration:e.animate})}}lastValPercent=p})}else{var k=this.value(),h=this._valueMin(),l=this._valueMax(),f=l!=h?(k-h)/(l-h)*100:0;var c={};c[m.orientation=="horizontal"?"left":"bottom"]=f+"%";this.handle.stop(1,1)[d?"animate":"css"](c,e.animate);(g=="min")&&(this.orientation=="horizontal")&&this.range.stop(1,1)[d?"animate":"css"]({width:f+"%"},e.animate);(g=="max")&&(this.orientation=="horizontal")&&this.range[d?"animate":"css"]({width:(100-f)+"%"},{queue:false,duration:e.animate});(g=="min")&&(this.orientation=="vertical")&&this.range.stop(1,1)[d?"animate":"css"]({height:f+"%"},e.animate);(g=="max")&&(this.orientation=="vertical")&&this.range[d?"animate":"css"]({height:(100-f)+"%"},{queue:false,duration:e.animate})}}});b.extend(b.ui.slider,{version:"1.8"})})(jQuery);;
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/jquery.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/jquery.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/jquery.js	(revision 29468)
@@ -0,0 +1,2 @@
+/*! jQuery v1.8.3 jquery.com | jquery.org/license */
+(function(e,t){function _(e){var t=M[e]={};return v.each(e.split(y),function(e,n){t[n]=!0}),t}function H(e,n,r){if(r===t&&e.nodeType===1){var i="data-"+n.replace(P,"-$1").toLowerCase();r=e.getAttribute(i);if(typeof r=="string"){try{r=r==="true"?!0:r==="false"?!1:r==="null"?null:+r+""===r?+r:D.test(r)?v.parseJSON(r):r}catch(s){}v.data(e,n,r)}else r=t}return r}function B(e){var t;for(t in e){if(t==="data"&&v.isEmptyObject(e[t]))continue;if(t!=="toJSON")return!1}return!0}function et(){return!1}function tt(){return!0}function ut(e){return!e||!e.parentNode||e.parentNode.nodeType===11}function at(e,t){do e=e[t];while(e&&e.nodeType!==1);return e}function ft(e,t,n){t=t||0;if(v.isFunction(t))return v.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return v.grep(e,function(e,r){return e===t===n});if(typeof t=="string"){var r=v.grep(e,function(e){return e.nodeType===1});if(it.test(t))return v.filter(t,r,!n);t=v.filter(t,r)}return v.grep(e,function(e,r){return v.inArray(e,t)>=0===n})}function lt(e){var t=ct.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function At(e,t){if(t.nodeType!==1||!v.hasData(e))return;var n,r,i,s=v._data(e),o=v._data(t,s),u=s.events;if(u){delete o.handle,o.events={};for(n in u)for(r=0,i=u[n].length;r<i;r++)v.event.add(t,n,u[n][r])}o.data&&(o.data=v.extend({},o.data))}function Ot(e,t){var n;if(t.nodeType!==1)return;t.clearAttributes&&t.clearAttributes(),t.mergeAttributes&&t.mergeAttributes(e),n=t.nodeName.toLowerCase(),n==="object"?(t.parentNode&&(t.outerHTML=e.outerHTML),v.support.html5Clone&&e.innerHTML&&!v.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):n==="input"&&Et.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):n==="option"?t.selected=e.defaultSelected:n==="input"||n==="textarea"?t.defaultValue=e.defaultValue:n==="script"&&t.text!==e.text&&(t.text=e.text),t.removeAttribute(v.expando)}function Mt(e){return typeof e.getElementsByTagName!="undefined"?e.getElementsByTagName("*"):typeof e.querySelectorAll!="undefined"?e.querySelectorAll("*"):[]}function _t(e){Et.test(e.type)&&(e.defaultChecked=e.checked)}function Qt(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Jt.length;while(i--){t=Jt[i]+n;if(t in e)return t}return r}function Gt(e,t){return e=t||e,v.css(e,"display")==="none"||!v.contains(e.ownerDocument,e)}function Yt(e,t){var n,r,i=[],s=0,o=e.length;for(;s<o;s++){n=e[s];if(!n.style)continue;i[s]=v._data(n,"olddisplay"),t?(!i[s]&&n.style.display==="none"&&(n.style.display=""),n.style.display===""&&Gt(n)&&(i[s]=v._data(n,"olddisplay",nn(n.nodeName)))):(r=Dt(n,"display"),!i[s]&&r!=="none"&&v._data(n,"olddisplay",r))}for(s=0;s<o;s++){n=e[s];if(!n.style)continue;if(!t||n.style.display==="none"||n.style.display==="")n.style.display=t?i[s]||"":"none"}return e}function Zt(e,t,n){var r=Rt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function en(e,t,n,r){var i=n===(r?"border":"content")?4:t==="width"?1:0,s=0;for(;i<4;i+=2)n==="margin"&&(s+=v.css(e,n+$t[i],!0)),r?(n==="content"&&(s-=parseFloat(Dt(e,"padding"+$t[i]))||0),n!=="margin"&&(s-=parseFloat(Dt(e,"border"+$t[i]+"Width"))||0)):(s+=parseFloat(Dt(e,"padding"+$t[i]))||0,n!=="padding"&&(s+=parseFloat(Dt(e,"border"+$t[i]+"Width"))||0));return s}function tn(e,t,n){var r=t==="width"?e.offsetWidth:e.offsetHeight,i=!0,s=v.support.boxSizing&&v.css(e,"boxSizing")==="border-box";if(r<=0||r==null){r=Dt(e,t);if(r<0||r==null)r=e.style[t];if(Ut.test(r))return r;i=s&&(v.support.boxSizingReliable||r===e.style[t]),r=parseFloat(r)||0}return r+en(e,t,n||(s?"border":"content"),i)+"px"}function nn(e){if(Wt[e])return Wt[e];var t=v("<"+e+">").appendTo(i.body),n=t.css("display");t.remove();if(n==="none"||n===""){Pt=i.body.appendChild(Pt||v.extend(i.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!Ht||!Pt.createElement)Ht=(Pt.contentWindow||Pt.contentDocument).document,Ht.write("<!doctype html><html><body>"),Ht.close();t=Ht.body.appendChild(Ht.createElement(e)),n=Dt(t,"display"),i.body.removeChild(Pt)}return Wt[e]=n,n}function fn(e,t,n,r){var i;if(v.isArray(t))v.each(t,function(t,i){n||sn.test(e)?r(e,i):fn(e+"["+(typeof i=="object"?t:"")+"]",i,n,r)});else if(!n&&v.type(t)==="object")for(i in t)fn(e+"["+i+"]",t[i],n,r);else r(e,t)}function Cn(e){return function(t,n){typeof t!="string"&&(n=t,t="*");var r,i,s,o=t.toLowerCase().split(y),u=0,a=o.length;if(v.isFunction(n))for(;u<a;u++)r=o[u],s=/^\+/.test(r),s&&(r=r.substr(1)||"*"),i=e[r]=e[r]||[],i[s?"unshift":"push"](n)}}function kn(e,n,r,i,s,o){s=s||n.dataTypes[0],o=o||{},o[s]=!0;var u,a=e[s],f=0,l=a?a.length:0,c=e===Sn;for(;f<l&&(c||!u);f++)u=a[f](n,r,i),typeof u=="string"&&(!c||o[u]?u=t:(n.dataTypes.unshift(u),u=kn(e,n,r,i,u,o)));return(c||!u)&&!o["*"]&&(u=kn(e,n,r,i,"*",o)),u}function Ln(e,n){var r,i,s=v.ajaxSettings.flatOptions||{};for(r in n)n[r]!==t&&((s[r]?e:i||(i={}))[r]=n[r]);i&&v.extend(!0,e,i)}function An(e,n,r){var i,s,o,u,a=e.contents,f=e.dataTypes,l=e.responseFields;for(s in l)s in r&&(n[l[s]]=r[s]);while(f[0]==="*")f.shift(),i===t&&(i=e.mimeType||n.getResponseHeader("content-type"));if(i)for(s in a)if(a[s]&&a[s].test(i)){f.unshift(s);break}if(f[0]in r)o=f[0];else{for(s in r){if(!f[0]||e.converters[s+" "+f[0]]){o=s;break}u||(u=s)}o=o||u}if(o)return o!==f[0]&&f.unshift(o),r[o]}function On(e,t){var n,r,i,s,o=e.dataTypes.slice(),u=o[0],a={},f=0;e.dataFilter&&(t=e.dataFilter(t,e.dataType));if(o[1])for(n in e.converters)a[n.toLowerCase()]=e.converters[n];for(;i=o[++f];)if(i!=="*"){if(u!=="*"&&u!==i){n=a[u+" "+i]||a["* "+i];if(!n)for(r in a){s=r.split(" ");if(s[1]===i){n=a[u+" "+s[0]]||a["* "+s[0]];if(n){n===!0?n=a[r]:a[r]!==!0&&(i=s[0],o.splice(f--,0,i));break}}}if(n!==!0)if(n&&e["throws"])t=n(t);else try{t=n(t)}catch(l){return{state:"parsererror",error:n?l:"No conversion from "+u+" to "+i}}}u=i}return{state:"success",data:t}}function Fn(){try{return new e.XMLHttpRequest}catch(t){}}function In(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}function $n(){return setTimeout(function(){qn=t},0),qn=v.now()}function Jn(e,t){v.each(t,function(t,n){var r=(Vn[t]||[]).concat(Vn["*"]),i=0,s=r.length;for(;i<s;i++)if(r[i].call(e,t,n))return})}function Kn(e,t,n){var r,i=0,s=0,o=Xn.length,u=v.Deferred().always(function(){delete a.elem}),a=function(){var t=qn||$n(),n=Math.max(0,f.startTime+f.duration-t),r=n/f.duration||0,i=1-r,s=0,o=f.tweens.length;for(;s<o;s++)f.tweens[s].run(i);return u.notifyWith(e,[f,i,n]),i<1&&o?n:(u.resolveWith(e,[f]),!1)},f=u.promise({elem:e,props:v.extend({},t),opts:v.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:qn||$n(),duration:n.duration,tweens:[],createTween:function(t,n,r){var i=v.Tween(e,f.opts,t,n,f.opts.specialEasing[t]||f.opts.easing);return f.tweens.push(i),i},stop:function(t){var n=0,r=t?f.tweens.length:0;for(;n<r;n++)f.tweens[n].run(1);return t?u.resolveWith(e,[f,t]):u.rejectWith(e,[f,t]),this}}),l=f.props;Qn(l,f.opts.specialEasing);for(;i<o;i++){r=Xn[i].call(f,e,l,f.opts);if(r)return r}return Jn(f,l),v.isFunction(f.opts.start)&&f.opts.start.call(e,f),v.fx.timer(v.extend(a,{anim:f,queue:f.opts.queue,elem:e})),f.progress(f.opts.progress).done(f.opts.done,f.opts.complete).fail(f.opts.fail).always(f.opts.always)}function Qn(e,t){var n,r,i,s,o;for(n in e){r=v.camelCase(n),i=t[r],s=e[n],v.isArray(s)&&(i=s[1],s=e[n]=s[0]),n!==r&&(e[r]=s,delete e[n]),o=v.cssHooks[r];if(o&&"expand"in o){s=o.expand(s),delete e[r];for(n in s)n in e||(e[n]=s[n],t[n]=i)}else t[r]=i}}function Gn(e,t,n){var r,i,s,o,u,a,f,l,c,h=this,p=e.style,d={},m=[],g=e.nodeType&&Gt(e);n.queue||(l=v._queueHooks(e,"fx"),l.unqueued==null&&(l.unqueued=0,c=l.empty.fire,l.empty.fire=function(){l.unqueued||c()}),l.unqueued++,h.always(function(){h.always(function(){l.unqueued--,v.queue(e,"fx").length||l.empty.fire()})})),e.nodeType===1&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],v.css(e,"display")==="inline"&&v.css(e,"float")==="none"&&(!v.support.inlineBlockNeedsLayout||nn(e.nodeName)==="inline"?p.display="inline-block":p.zoom=1)),n.overflow&&(p.overflow="hidden",v.support.shrinkWrapBlocks||h.done(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t){s=t[r];if(Un.exec(s)){delete t[r],a=a||s==="toggle";if(s===(g?"hide":"show"))continue;m.push(r)}}o=m.length;if(o){u=v._data(e,"fxshow")||v._data(e,"fxshow",{}),"hidden"in u&&(g=u.hidden),a&&(u.hidden=!g),g?v(e).show():h.done(function(){v(e).hide()}),h.done(function(){var t;v.removeData(e,"fxshow",!0);for(t in d)v.style(e,t,d[t])});for(r=0;r<o;r++)i=m[r],f=h.createTween(i,g?u[i]:0),d[i]=u[i]||v.style(e,i),i in u||(u[i]=f.start,g&&(f.end=f.start,f.start=i==="width"||i==="height"?1:0))}}function Yn(e,t,n,r,i){return new Yn.prototype.init(e,t,n,r,i)}function Zn(e,t){var n,r={height:e},i=0;t=t?1:0;for(;i<4;i+=2-t)n=$t[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}function tr(e){return v.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:!1}var n,r,i=e.document,s=e.location,o=e.navigator,u=e.jQuery,a=e.$,f=Array.prototype.push,l=Array.prototype.slice,c=Array.prototype.indexOf,h=Object.prototype.toString,p=Object.prototype.hasOwnProperty,d=String.prototype.trim,v=function(e,t){return new v.fn.init(e,t,n)},m=/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,g=/\S/,y=/\s+/,b=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,w=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,E=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,S=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,T=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,N=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,C=/^-ms-/,k=/-([\da-z])/gi,L=function(e,t){return(t+"").toUpperCase()},A=function(){i.addEventListener?(i.removeEventListener("DOMContentLoaded",A,!1),v.ready()):i.readyState==="complete"&&(i.detachEvent("onreadystatechange",A),v.ready())},O={};v.fn=v.prototype={constructor:v,init:function(e,n,r){var s,o,u,a;if(!e)return this;if(e.nodeType)return this.context=this[0]=e,this.length=1,this;if(typeof e=="string"){e.charAt(0)==="<"&&e.charAt(e.length-1)===">"&&e.length>=3?s=[null,e,null]:s=w.exec(e);if(s&&(s[1]||!n)){if(s[1])return n=n instanceof v?n[0]:n,a=n&&n.nodeType?n.ownerDocument||n:i,e=v.parseHTML(s[1],a,!0),E.test(s[1])&&v.isPlainObject(n)&&this.attr.call(e,n,!0),v.merge(this,e);o=i.getElementById(s[2]);if(o&&o.parentNode){if(o.id!==s[2])return r.find(e);this.length=1,this[0]=o}return this.context=i,this.selector=e,this}return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e)}return v.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),v.makeArray(e,this))},selector:"",jquery:"1.8.3",length:0,size:function(){return this.length},toArray:function(){return l.call(this)},get:function(e){return e==null?this.toArray():e<0?this[this.length+e]:this[e]},pushStack:function(e,t,n){var r=v.merge(this.constructor(),e);return r.prevObject=this,r.context=this.context,t==="find"?r.selector=this.selector+(this.selector?" ":"")+n:t&&(r.selector=this.selector+"."+t+"("+n+")"),r},each:function(e,t){return v.each(this,e,t)},ready:function(e){return v.ready.promise().done(e),this},eq:function(e){return e=+e,e===-1?this.slice(e):this.slice(e,e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(l.apply(this,arguments),"slice",l.call(arguments).join(","))},map:function(e){return this.pushStack(v.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:[].sort,splice:[].splice},v.fn.init.prototype=v.fn,v.extend=v.fn.extend=function(){var e,n,r,i,s,o,u=arguments[0]||{},a=1,f=arguments.length,l=!1;typeof u=="boolean"&&(l=u,u=arguments[1]||{},a=2),typeof u!="object"&&!v.isFunction(u)&&(u={}),f===a&&(u=this,--a);for(;a<f;a++)if((e=arguments[a])!=null)for(n in e){r=u[n],i=e[n];if(u===i)continue;l&&i&&(v.isPlainObject(i)||(s=v.isArray(i)))?(s?(s=!1,o=r&&v.isArray(r)?r:[]):o=r&&v.isPlainObject(r)?r:{},u[n]=v.extend(l,o,i)):i!==t&&(u[n]=i)}return u},v.extend({noConflict:function(t){return e.$===v&&(e.$=a),t&&e.jQuery===v&&(e.jQuery=u),v},isReady:!1,readyWait:1,holdReady:function(e){e?v.readyWait++:v.ready(!0)},ready:function(e){if(e===!0?--v.readyWait:v.isReady)return;if(!i.body)return setTimeout(v.ready,1);v.isReady=!0;if(e!==!0&&--v.readyWait>0)return;r.resolveWith(i,[v]),v.fn.trigger&&v(i).trigger("ready").off("ready")},isFunction:function(e){return v.type(e)==="function"},isArray:Array.isArray||function(e){return v.type(e)==="array"},isWindow:function(e){return e!=null&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return e==null?String(e):O[h.call(e)]||"object"},isPlainObject:function(e){if(!e||v.type(e)!=="object"||e.nodeType||v.isWindow(e))return!1;try{if(e.constructor&&!p.call(e,"constructor")&&!p.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||p.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw new Error(e)},parseHTML:function(e,t,n){var r;return!e||typeof e!="string"?null:(typeof t=="boolean"&&(n=t,t=0),t=t||i,(r=E.exec(e))?[t.createElement(r[1])]:(r=v.buildFragment([e],t,n?null:[]),v.merge([],(r.cacheable?v.clone(r.fragment):r.fragment).childNodes)))},parseJSON:function(t){if(!t||typeof t!="string")return null;t=v.trim(t);if(e.JSON&&e.JSON.parse)return e.JSON.parse(t);if(S.test(t.replace(T,"@").replace(N,"]").replace(x,"")))return(new Function("return "+t))();v.error("Invalid JSON: "+t)},parseXML:function(n){var r,i;if(!n||typeof n!="string")return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(s){r=t}return(!r||!r.documentElement||r.getElementsByTagName("parsererror").length)&&v.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&g.test(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(C,"ms-").replace(k,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,n,r){var i,s=0,o=e.length,u=o===t||v.isFunction(e);if(r){if(u){for(i in e)if(n.apply(e[i],r)===!1)break}else for(;s<o;)if(n.apply(e[s++],r)===!1)break}else if(u){for(i in e)if(n.call(e[i],i,e[i])===!1)break}else for(;s<o;)if(n.call(e[s],s,e[s++])===!1)break;return e},trim:d&&!d.call("\ufeff\u00a0")?function(e){return e==null?"":d.call(e)}:function(e){return e==null?"":(e+"").replace(b,"")},makeArray:function(e,t){var n,r=t||[];return e!=null&&(n=v.type(e),e.length==null||n==="string"||n==="function"||n==="regexp"||v.isWindow(e)?f.call(r,e):v.merge(r,e)),r},inArray:function(e,t,n){var r;if(t){if(c)return c.call(t,e,n);r=t.length,n=n?n<0?Math.max(0,r+n):n:0;for(;n<r;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,s=0;if(typeof r=="number")for(;s<r;s++)e[i++]=n[s];else while(n[s]!==t)e[i++]=n[s++];return e.length=i,e},grep:function(e,t,n){var r,i=[],s=0,o=e.length;n=!!n;for(;s<o;s++)r=!!t(e[s],s),n!==r&&i.push(e[s]);return i},map:function(e,n,r){var i,s,o=[],u=0,a=e.length,f=e instanceof v||a!==t&&typeof a=="number"&&(a>0&&e[0]&&e[a-1]||a===0||v.isArray(e));if(f)for(;u<a;u++)i=n(e[u],u,r),i!=null&&(o[o.length]=i);else for(s in e)i=n(e[s],s,r),i!=null&&(o[o.length]=i);return o.concat.apply([],o)},guid:1,proxy:function(e,n){var r,i,s;return typeof n=="string"&&(r=e[n],n=e,e=r),v.isFunction(e)?(i=l.call(arguments,2),s=function(){return e.apply(n,i.concat(l.call(arguments)))},s.guid=e.guid=e.guid||v.guid++,s):t},access:function(e,n,r,i,s,o,u){var a,f=r==null,l=0,c=e.length;if(r&&typeof r=="object"){for(l in r)v.access(e,n,l,r[l],1,o,i);s=1}else if(i!==t){a=u===t&&v.isFunction(i),f&&(a?(a=n,n=function(e,t,n){return a.call(v(e),n)}):(n.call(e,i),n=null));if(n)for(;l<c;l++)n(e[l],r,a?i.call(e[l],l,n(e[l],r)):i,u);s=1}return s?e:f?n.call(e):c?n(e[0],r):o},now:function(){return(new Date).getTime()}}),v.ready.promise=function(t){if(!r){r=v.Deferred();if(i.readyState==="complete")setTimeout(v.ready,1);else if(i.addEventListener)i.addEventListener("DOMContentLoaded",A,!1),e.addEventListener("load",v.ready,!1);else{i.attachEvent("onreadystatechange",A),e.attachEvent("onload",v.ready);var n=!1;try{n=e.frameElement==null&&i.documentElement}catch(s){}n&&n.doScroll&&function o(){if(!v.isReady){try{n.doScroll("left")}catch(e){return setTimeout(o,50)}v.ready()}}()}}return r.promise(t)},v.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(e,t){O["[object "+t+"]"]=t.toLowerCase()}),n=v(i);var M={};v.Callbacks=function(e){e=typeof e=="string"?M[e]||_(e):v.extend({},e);var n,r,i,s,o,u,a=[],f=!e.once&&[],l=function(t){n=e.memory&&t,r=!0,u=s||0,s=0,o=a.length,i=!0;for(;a&&u<o;u++)if(a[u].apply(t[0],t[1])===!1&&e.stopOnFalse){n=!1;break}i=!1,a&&(f?f.length&&l(f.shift()):n?a=[]:c.disable())},c={add:function(){if(a){var t=a.length;(function r(t){v.each(t,function(t,n){var i=v.type(n);i==="function"?(!e.unique||!c.has(n))&&a.push(n):n&&n.length&&i!=="string"&&r(n)})})(arguments),i?o=a.length:n&&(s=t,l(n))}return this},remove:function(){return a&&v.each(arguments,function(e,t){var n;while((n=v.inArray(t,a,n))>-1)a.splice(n,1),i&&(n<=o&&o--,n<=u&&u--)}),this},has:function(e){return v.inArray(e,a)>-1},empty:function(){return a=[],this},disable:function(){return a=f=n=t,this},disabled:function(){return!a},lock:function(){return f=t,n||c.disable(),this},locked:function(){return!f},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],a&&(!r||f)&&(i?f.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},v.extend({Deferred:function(e){var t=[["resolve","done",v.Callbacks("once memory"),"resolved"],["reject","fail",v.Callbacks("once memory"),"rejected"],["notify","progress",v.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return v.Deferred(function(n){v.each(t,function(t,r){var s=r[0],o=e[t];i[r[1]](v.isFunction(o)?function(){var e=o.apply(this,arguments);e&&v.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===i?n:this,[e])}:n[s])}),e=null}).promise()},promise:function(e){return e!=null?v.extend(e,r):r}},i={};return r.pipe=r.then,v.each(t,function(e,s){var o=s[2],u=s[3];r[s[1]]=o.add,u&&o.add(function(){n=u},t[e^1][2].disable,t[2][2].lock),i[s[0]]=o.fire,i[s[0]+"With"]=o.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=l.call(arguments),r=n.length,i=r!==1||e&&v.isFunction(e.promise)?r:0,s=i===1?e:v.Deferred(),o=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?l.call(arguments):r,n===u?s.notifyWith(t,n):--i||s.resolveWith(t,n)}},u,a,f;if(r>1){u=new Array(r),a=new Array(r),f=new Array(r);for(;t<r;t++)n[t]&&v.isFunction(n[t].promise)?n[t].promise().done(o(t,f,n)).fail(s.reject).progress(o(t,a,u)):--i}return i||s.resolveWith(f,n),s.promise()}}),v.support=function(){var t,n,r,s,o,u,a,f,l,c,h,p=i.createElement("div");p.setAttribute("className","t"),p.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=p.getElementsByTagName("*"),r=p.getElementsByTagName("a")[0];if(!n||!r||!n.length)return{};s=i.createElement("select"),o=s.appendChild(i.createElement("option")),u=p.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:r.getAttribute("href")==="/a",opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:u.value==="on",optSelected:o.selected,getSetAttribute:p.className!=="t",enctype:!!i.createElement("form").enctype,html5Clone:i.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",boxModel:i.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},u.checked=!0,t.noCloneChecked=u.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!o.disabled;try{delete p.test}catch(d){t.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",h=function(){t.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick"),p.detachEvent("onclick",h)),u=i.createElement("input"),u.value="t",u.setAttribute("type","radio"),t.radioValue=u.value==="t",u.setAttribute("checked","checked"),u.setAttribute("name","t"),p.appendChild(u),a=i.createDocumentFragment(),a.appendChild(p.lastChild),t.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,t.appendChecked=u.checked,a.removeChild(u),a.appendChild(p);if(p.attachEvent)for(l in{submit:!0,change:!0,focusin:!0})f="on"+l,c=f in p,c||(p.setAttribute(f,"return;"),c=typeof p[f]=="function"),t[l+"Bubbles"]=c;return v(function(){var n,r,s,o,u="padding:0;margin:0;border:0;display:block;overflow:hidden;",a=i.getElementsByTagName("body")[0];if(!a)return;n=i.createElement("div"),n.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",a.insertBefore(n,a.firstChild),r=i.createElement("div"),n.appendChild(r),r.innerHTML="<table><tr><td></td><td>t</td></tr></table>",s=r.getElementsByTagName("td"),s[0].style.cssText="padding:0;margin:0;border:0;display:none",c=s[0].offsetHeight===0,s[0].style.display="",s[1].style.display="none",t.reliableHiddenOffsets=c&&s[0].offsetHeight===0,r.innerHTML="",r.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=r.offsetWidth===4,t.doesNotIncludeMarginInBodyOffset=a.offsetTop!==1,e.getComputedStyle&&(t.pixelPosition=(e.getComputedStyle(r,null)||{}).top!=="1%",t.boxSizingReliable=(e.getComputedStyle(r,null)||{width:"4px"}).width==="4px",o=i.createElement("div"),o.style.cssText=r.style.cssText=u,o.style.marginRight=o.style.width="0",r.style.width="1px",r.appendChild(o),t.reliableMarginRight=!parseFloat((e.getComputedStyle(o,null)||{}).marginRight)),typeof r.style.zoom!="undefined"&&(r.innerHTML="",r.style.cssText=u+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=r.offsetWidth===3,r.style.display="block",r.style.overflow="visible",r.innerHTML="<div></div>",r.firstChild.style.width="5px",t.shrinkWrapBlocks=r.offsetWidth!==3,n.style.zoom=1),a.removeChild(n),n=r=s=o=null}),a.removeChild(p),n=r=s=o=u=a=p=null,t}();var D=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;v.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(v.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?v.cache[e[v.expando]]:e[v.expando],!!e&&!B(e)},data:function(e,n,r,i){if(!v.acceptData(e))return;var s,o,u=v.expando,a=typeof n=="string",f=e.nodeType,l=f?v.cache:e,c=f?e[u]:e[u]&&u;if((!c||!l[c]||!i&&!l[c].data)&&a&&r===t)return;c||(f?e[u]=c=v.deletedIds.pop()||v.guid++:c=u),l[c]||(l[c]={},f||(l[c].toJSON=v.noop));if(typeof n=="object"||typeof n=="function")i?l[c]=v.extend(l[c],n):l[c].data=v.extend(l[c].data,n);return s=l[c],i||(s.data||(s.data={}),s=s.data),r!==t&&(s[v.camelCase(n)]=r),a?(o=s[n],o==null&&(o=s[v.camelCase(n)])):o=s,o},removeData:function(e,t,n){if(!v.acceptData(e))return;var r,i,s,o=e.nodeType,u=o?v.cache:e,a=o?e[v.expando]:v.expando;if(!u[a])return;if(t){r=n?u[a]:u[a].data;if(r){v.isArray(t)||(t in r?t=[t]:(t=v.camelCase(t),t in r?t=[t]:t=t.split(" ")));for(i=0,s=t.length;i<s;i++)delete r[t[i]];if(!(n?B:v.isEmptyObject)(r))return}}if(!n){delete u[a].data;if(!B(u[a]))return}o?v.cleanData([e],!0):v.support.deleteExpando||u!=u.window?delete u[a]:u[a]=null},_data:function(e,t,n){return v.data(e,t,n,!0)},acceptData:function(e){var t=e.nodeName&&v.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),v.fn.extend({data:function(e,n){var r,i,s,o,u,a=this[0],f=0,l=null;if(e===t){if(this.length){l=v.data(a);if(a.nodeType===1&&!v._data(a,"parsedAttrs")){s=a.attributes;for(u=s.length;f<u;f++)o=s[f].name,o.indexOf("data-")||(o=v.camelCase(o.substring(5)),H(a,o,l[o]));v._data(a,"parsedAttrs",!0)}}return l}return typeof e=="object"?this.each(function(){v.data(this,e)}):(r=e.split(".",2),r[1]=r[1]?"."+r[1]:"",i=r[1]+"!",v.access(this,function(n){if(n===t)return l=this.triggerHandler("getData"+i,[r[0]]),l===t&&a&&(l=v.data(a,e),l=H(a,e,l)),l===t&&r[1]?this.data(r[0]):l;r[1]=n,this.each(function(){var t=v(this);t.triggerHandler("setData"+i,r),v.data(this,e,n),t.triggerHandler("changeData"+i,r)})},null,n,arguments.length>1,null,!1))},removeData:function(e){return this.each(function(){v.removeData(this,e)})}}),v.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=v._data(e,t),n&&(!r||v.isArray(n)?r=v._data(e,t,v.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=v.queue(e,t),r=n.length,i=n.shift(),s=v._queueHooks(e,t),o=function(){v.dequeue(e,t)};i==="inprogress"&&(i=n.shift(),r--),i&&(t==="fx"&&n.unshift("inprogress"),delete s.stop,i.call(e,o,s)),!r&&s&&s.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return v._data(e,n)||v._data(e,n,{empty:v.Callbacks("once memory").add(function(){v.removeData(e,t+"queue",!0),v.removeData(e,n,!0)})})}}),v.fn.extend({queue:function(e,n){var r=2;return typeof e!="string"&&(n=e,e="fx",r--),arguments.length<r?v.queue(this[0],e):n===t?this:this.each(function(){var t=v.queue(this,e,n);v._queueHooks(this,e),e==="fx"&&t[0]!=="inprogress"&&v.dequeue(this,e)})},dequeue:function(e){return this.each(function(){v.dequeue(this,e)})},delay:function(e,t){return e=v.fx?v.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,s=v.Deferred(),o=this,u=this.length,a=function(){--i||s.resolveWith(o,[o])};typeof e!="string"&&(n=e,e=t),e=e||"fx";while(u--)r=v._data(o[u],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(a));return a(),s.promise(n)}});var j,F,I,q=/[\t\r\n]/g,R=/\r/g,U=/^(?:button|input)$/i,z=/^(?:button|input|object|select|textarea)$/i,W=/^a(?:rea|)$/i,X=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,V=v.support.getSetAttribute;v.fn.extend({attr:function(e,t){return v.access(this,v.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){v.removeAttr(this,e)})},prop:function(e,t){return v.access(this,v.prop,e,t,arguments.length>1)},removeProp:function(e){return e=v.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,s,o,u;if(v.isFunction(e))return this.each(function(t){v(this).addClass(e.call(this,t,this.className))});if(e&&typeof e=="string"){t=e.split(y);for(n=0,r=this.length;n<r;n++){i=this[n];if(i.nodeType===1)if(!i.className&&t.length===1)i.className=e;else{s=" "+i.className+" ";for(o=0,u=t.length;o<u;o++)s.indexOf(" "+t[o]+" ")<0&&(s+=t[o]+" ");i.className=v.trim(s)}}}return this},removeClass:function(e){var n,r,i,s,o,u,a;if(v.isFunction(e))return this.each(function(t){v(this).removeClass(e.call(this,t,this.className))});if(e&&typeof e=="string"||e===t){n=(e||"").split(y);for(u=0,a=this.length;u<a;u++){i=this[u];if(i.nodeType===1&&i.className){r=(" "+i.className+" ").replace(q," ");for(s=0,o=n.length;s<o;s++)while(r.indexOf(" "+n[s]+" ")>=0)r=r.replace(" "+n[s]+" "," ");i.className=e?v.trim(r):""}}}return this},toggleClass:function(e,t){var n=typeof e,r=typeof t=="boolean";return v.isFunction(e)?this.each(function(n){v(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if(n==="string"){var i,s=0,o=v(this),u=t,a=e.split(y);while(i=a[s++])u=r?u:!o.hasClass(i),o[u?"addClass":"removeClass"](i)}else if(n==="undefined"||n==="boolean")this.className&&v._data(this,"__className__",this.className),this.className=this.className||e===!1?"":v._data(this,"__className__")||""})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;n<r;n++)if(this[n].nodeType===1&&(" "+this[n].className+" ").replace(q," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,s=this[0];if(!arguments.length){if(s)return n=v.valHooks[s.type]||v.valHooks[s.nodeName.toLowerCase()],n&&"get"in n&&(r=n.get(s,"value"))!==t?r:(r=s.value,typeof r=="string"?r.replace(R,""):r==null?"":r);return}return i=v.isFunction(e),this.each(function(r){var s,o=v(this);if(this.nodeType!==1)return;i?s=e.call(this,r,o.val()):s=e,s==null?s="":typeof s=="number"?s+="":v.isArray(s)&&(s=v.map(s,function(e){return e==null?"":e+""})),n=v.valHooks[this.type]||v.valHooks[this.nodeName.toLowerCase()];if(!n||!("set"in n)||n.set(this,s,"value")===t)this.value=s})}}),v.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,s=e.type==="select-one"||i<0,o=s?null:[],u=s?i+1:r.length,a=i<0?u:s?i:0;for(;a<u;a++){n=r[a];if((n.selected||a===i)&&(v.support.optDisabled?!n.disabled:n.getAttribute("disabled")===null)&&(!n.parentNode.disabled||!v.nodeName(n.parentNode,"optgroup"))){t=v(n).val();if(s)return t;o.push(t)}}return o},set:function(e,t){var n=v.makeArray(t);return v(e).find("option").each(function(){this.selected=v.inArray(v(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attrFn:{},attr:function(e,n,r,i){var s,o,u,a=e.nodeType;if(!e||a===3||a===8||a===2)return;if(i&&v.isFunction(v.fn[n]))return v(e)[n](r);if(typeof e.getAttribute=="undefined")return v.prop(e,n,r);u=a!==1||!v.isXMLDoc(e),u&&(n=n.toLowerCase(),o=v.attrHooks[n]||(X.test(n)?F:j));if(r!==t){if(r===null){v.removeAttr(e,n);return}return o&&"set"in o&&u&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r)}return o&&"get"in o&&u&&(s=o.get(e,n))!==null?s:(s=e.getAttribute(n),s===null?t:s)},removeAttr:function(e,t){var n,r,i,s,o=0;if(t&&e.nodeType===1){r=t.split(y);for(;o<r.length;o++)i=r[o],i&&(n=v.propFix[i]||i,s=X.test(i),s||v.attr(e,i,""),e.removeAttribute(V?i:n),s&&n in e&&(e[n]=!1))}},attrHooks:{type:{set:function(e,t){if(U.test(e.nodeName)&&e.parentNode)v.error("type property can't be changed");else if(!v.support.radioValue&&t==="radio"&&v.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}},value:{get:function(e,t){return j&&v.nodeName(e,"button")?j.get(e,t):t in e?e.value:null},set:function(e,t,n){if(j&&v.nodeName(e,"button"))return j.set(e,t,n);e.value=t}}},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(e,n,r){var i,s,o,u=e.nodeType;if(!e||u===3||u===8||u===2)return;return o=u!==1||!v.isXMLDoc(e),o&&(n=v.propFix[n]||n,s=v.propHooks[n]),r!==t?s&&"set"in s&&(i=s.set(e,r,n))!==t?i:e[n]=r:s&&"get"in s&&(i=s.get(e,n))!==null?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):z.test(e.nodeName)||W.test(e.nodeName)&&e.href?0:t}}}}),F={get:function(e,n){var r,i=v.prop(e,n);return i===!0||typeof i!="boolean"&&(r=e.getAttributeNode(n))&&r.nodeValue!==!1?n.toLowerCase():t},set:function(e,t,n){var r;return t===!1?v.removeAttr(e,n):(r=v.propFix[n]||n,r in e&&(e[r]=!0),e.setAttribute(n,n.toLowerCase())),n}},V||(I={name:!0,id:!0,coords:!0},j=v.valHooks.button={get:function(e,n){var r;return r=e.getAttributeNode(n),r&&(I[n]?r.value!=="":r.specified)?r.value:t},set:function(e,t,n){var r=e.getAttributeNode(n);return r||(r=i.createAttribute(n),e.setAttributeNode(r)),r.value=t+""}},v.each(["width","height"],function(e,t){v.attrHooks[t]=v.extend(v.attrHooks[t],{set:function(e,n){if(n==="")return e.setAttribute(t,"auto"),n}})}),v.attrHooks.contenteditable={get:j.get,set:function(e,t,n){t===""&&(t="false"),j.set(e,t,n)}}),v.support.hrefNormalized||v.each(["href","src","width","height"],function(e,n){v.attrHooks[n]=v.extend(v.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return r===null?t:r}})}),v.support.style||(v.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||t},set:function(e,t){return e.style.cssText=t+""}}),v.support.optSelected||(v.propHooks.selected=v.extend(v.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),v.support.enctype||(v.propFix.enctype="encoding"),v.support.checkOn||v.each(["radio","checkbox"],function(){v.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}}),v.each(["radio","checkbox"],function(){v.valHooks[this]=v.extend(v.valHooks[this],{set:function(e,t){if(v.isArray(t))return e.checked=v.inArray(v(e).val(),t)>=0}})});var $=/^(?:textarea|input|select)$/i,J=/^([^\.]*|)(?:\.(.+)|)$/,K=/(?:^|\s)hover(\.\S+|)\b/,Q=/^key/,G=/^(?:mouse|contextmenu)|click/,Y=/^(?:focusinfocus|focusoutblur)$/,Z=function(e){return v.event.special.hover?e:e.replace(K,"mouseenter$1 mouseleave$1")};v.event={add:function(e,n,r,i,s){var o,u,a,f,l,c,h,p,d,m,g;if(e.nodeType===3||e.nodeType===8||!n||!r||!(o=v._data(e)))return;r.handler&&(d=r,r=d.handler,s=d.selector),r.guid||(r.guid=v.guid++),a=o.events,a||(o.events=a={}),u=o.handle,u||(o.handle=u=function(e){return typeof v=="undefined"||!!e&&v.event.triggered===e.type?t:v.event.dispatch.apply(u.elem,arguments)},u.elem=e),n=v.trim(Z(n)).split(" ");for(f=0;f<n.length;f++){l=J.exec(n[f])||[],c=l[1],h=(l[2]||"").split(".").sort(),g=v.event.special[c]||{},c=(s?g.delegateType:g.bindType)||c,g=v.event.special[c]||{},p=v.extend({type:c,origType:l[1],data:i,handler:r,guid:r.guid,selector:s,needsContext:s&&v.expr.match.needsContext.test(s),namespace:h.join(".")},d),m=a[c];if(!m){m=a[c]=[],m.delegateCount=0;if(!g.setup||g.setup.call(e,i,h,u)===!1)e.addEventListener?e.addEventListener(c,u,!1):e.attachEvent&&e.attachEvent("on"+c,u)}g.add&&(g.add.call(e,p),p.handler.guid||(p.handler.guid=r.guid)),s?m.splice(m.delegateCount++,0,p):m.push(p),v.event.global[c]=!0}e=null},global:{},remove:function(e,t,n,r,i){var s,o,u,a,f,l,c,h,p,d,m,g=v.hasData(e)&&v._data(e);if(!g||!(h=g.events))return;t=v.trim(Z(t||"")).split(" ");for(s=0;s<t.length;s++){o=J.exec(t[s])||[],u=a=o[1],f=o[2];if(!u){for(u in h)v.event.remove(e,u+t[s],n,r,!0);continue}p=v.event.special[u]||{},u=(r?p.delegateType:p.bindType)||u,d=h[u]||[],l=d.length,f=f?new RegExp("(^|\\.)"+f.split(".").sort().join("\\.(?:.*\\.|)")+"(\\.|$)"):null;for(c=0;c<d.length;c++)m=d[c],(i||a===m.origType)&&(!n||n.guid===m.guid)&&(!f||f.test(m.namespace))&&(!r||r===m.selector||r==="**"&&m.selector)&&(d.splice(c--,1),m.selector&&d.delegateCount--,p.remove&&p.remove.call(e,m));d.length===0&&l!==d.length&&((!p.teardown||p.teardown.call(e,f,g.handle)===!1)&&v.removeEvent(e,u,g.handle),delete h[u])}v.isEmptyObject(h)&&(delete g.handle,v.removeData(e,"events",!0))},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(n,r,s,o){if(!s||s.nodeType!==3&&s.nodeType!==8){var u,a,f,l,c,h,p,d,m,g,y=n.type||n,b=[];if(Y.test(y+v.event.triggered))return;y.indexOf("!")>=0&&(y=y.slice(0,-1),a=!0),y.indexOf(".")>=0&&(b=y.split("."),y=b.shift(),b.sort());if((!s||v.event.customEvent[y])&&!v.event.global[y])return;n=typeof n=="object"?n[v.expando]?n:new v.Event(y,n):new v.Event(y),n.type=y,n.isTrigger=!0,n.exclusive=a,n.namespace=b.join("."),n.namespace_re=n.namespace?new RegExp("(^|\\.)"+b.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,h=y.indexOf(":")<0?"on"+y:"";if(!s){u=v.cache;for(f in u)u[f].events&&u[f].events[y]&&v.event.trigger(n,r,u[f].handle.elem,!0);return}n.result=t,n.target||(n.target=s),r=r!=null?v.makeArray(r):[],r.unshift(n),p=v.event.special[y]||{};if(p.trigger&&p.trigger.apply(s,r)===!1)return;m=[[s,p.bindType||y]];if(!o&&!p.noBubble&&!v.isWindow(s)){g=p.delegateType||y,l=Y.test(g+y)?s:s.parentNode;for(c=s;l;l=l.parentNode)m.push([l,g]),c=l;c===(s.ownerDocument||i)&&m.push([c.defaultView||c.parentWindow||e,g])}for(f=0;f<m.length&&!n.isPropagationStopped();f++)l=m[f][0],n.type=m[f][1],d=(v._data(l,"events")||{})[n.type]&&v._data(l,"handle"),d&&d.apply(l,r),d=h&&l[h],d&&v.acceptData(l)&&d.apply&&d.apply(l,r)===!1&&n.preventDefault();return n.type=y,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(s.ownerDocument,r)===!1)&&(y!=="click"||!v.nodeName(s,"a"))&&v.acceptData(s)&&h&&s[y]&&(y!=="focus"&&y!=="blur"||n.target.offsetWidth!==0)&&!v.isWindow(s)&&(c=s[h],c&&(s[h]=null),v.event.triggered=y,s[y](),v.event.triggered=t,c&&(s[h]=c)),n.result}return},dispatch:function(n){n=v.event.fix(n||e.event);var r,i,s,o,u,a,f,c,h,p,d=(v._data(this,"events")||{})[n.type]||[],m=d.delegateCount,g=l.call(arguments),y=!n.exclusive&&!n.namespace,b=v.event.special[n.type]||{},w=[];g[0]=n,n.delegateTarget=this;if(b.preDispatch&&b.preDispatch.call(this,n)===!1)return;if(m&&(!n.button||n.type!=="click"))for(s=n.target;s!=this;s=s.parentNode||this)if(s.disabled!==!0||n.type!=="click"){u={},f=[];for(r=0;r<m;r++)c=d[r],h=c.selector,u[h]===t&&(u[h]=c.needsContext?v(h,this).index(s)>=0:v.find(h,this,null,[s]).length),u[h]&&f.push(c);f.length&&w.push({elem:s,matches:f})}d.length>m&&w.push({elem:this,matches:d.slice(m)});for(r=0;r<w.length&&!n.isPropagationStopped();r++){a=w[r],n.currentTarget=a.elem;for(i=0;i<a.matches.length&&!n.isImmediatePropagationStopped();i++){c=a.matches[i];if(y||!n.namespace&&!c.namespace||n.namespace_re&&n.namespace_re.test(c.namespace))n.data=c.data,n.handleObj=c,o=((v.event.special[c.origType]||{}).handle||c.handler).apply(a.elem,g),o!==t&&(n.result=o,o===!1&&(n.preventDefault(),n.stopPropagation()))}}return b.postDispatch&&b.postDispatch.call(this,n),n.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return e.which==null&&(e.which=t.charCode!=null?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,s,o,u=n.button,a=n.fromElement;return e.pageX==null&&n.clientX!=null&&(r=e.target.ownerDocument||i,s=r.documentElement,o=r.body,e.pageX=n.clientX+(s&&s.scrollLeft||o&&o.scrollLeft||0)-(s&&s.clientLeft||o&&o.clientLeft||0),e.pageY=n.clientY+(s&&s.scrollTop||o&&o.scrollTop||0)-(s&&s.clientTop||o&&o.clientTop||0)),!e.relatedTarget&&a&&(e.relatedTarget=a===e.target?n.toElement:a),!e.which&&u!==t&&(e.which=u&1?1:u&2?3:u&4?2:0),e}},fix:function(e){if(e[v.expando])return e;var t,n,r=e,s=v.event.fixHooks[e.type]||{},o=s.props?this.props.concat(s.props):this.props;e=v.Event(r);for(t=o.length;t;)n=o[--t],e[n]=r[n];return e.target||(e.target=r.srcElement||i),e.target.nodeType===3&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,r):e},special:{load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(e,t,n){v.isWindow(this)&&(this.onbeforeunload=n)},teardown:function(e,t){this.onbeforeunload===t&&(this.onbeforeunload=null)}}},simulate:function(e,t,n,r){var i=v.extend(new v.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?v.event.trigger(i,null,t):v.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},v.event.handle=v.event.dispatch,v.removeEvent=i.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]=="undefined"&&(e[r]=null),e.detachEvent(r,n))},v.Event=function(e,t){if(!(this instanceof v.Event))return new v.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?tt:et):this.type=e,t&&v.extend(this,t),this.timeStamp=e&&e.timeStamp||v.now(),this[v.expando]=!0},v.Event.prototype={preventDefault:function(){this.isDefaultPrevented=tt;var e=this.originalEvent;if(!e)return;e.preventDefault?e.preventDefault():e.returnValue=!1},stopPropagation:function(){this.isPropagationStopped=tt;var e=this.originalEvent;if(!e)return;e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=tt,this.stopPropagation()},isDefaultPrevented:et,isPropagationStopped:et,isImmediatePropagationStopped:et},v.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){v.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,s=e.handleObj,o=s.selector;if(!i||i!==r&&!v.contains(r,i))e.type=s.origType,n=s.handler.apply(this,arguments),e.type=t;return n}}}),v.support.submitBubbles||(v.event.special.submit={setup:function(){if(v.nodeName(this,"form"))return!1;v.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=v.nodeName(n,"input")||v.nodeName(n,"button")?n.form:t;r&&!v._data(r,"_submit_attached")&&(v.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),v._data(r,"_submit_attached",!0))})},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&v.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){if(v.nodeName(this,"form"))return!1;v.event.remove(this,"._submit")}}),v.support.changeBubbles||(v.event.special.change={setup:function(){if($.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")v.event.add(this,"propertychange._change",function(e){e.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),v.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),v.event.simulate("change",this,e,!0)});return!1}v.event.add(this,"beforeactivate._change",function(e){var t=e.target;$.test(t.nodeName)&&!v._data(t,"_change_attached")&&(v.event.add(t,"change._change",function(e){this.parentNode&&!e.isSimulated&&!e.isTrigger&&v.event.simulate("change",this.parentNode,e,!0)}),v._data(t,"_change_attached",!0))})},handle:function(e){var t=e.target;if(this!==t||e.isSimulated||e.isTrigger||t.type!=="radio"&&t.type!=="checkbox")return e.handleObj.handler.apply(this,arguments)},teardown:function(){return v.event.remove(this,"._change"),!$.test(this.nodeName)}}),v.support.focusinBubbles||v.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){v.event.simulate(t,e.target,v.event.fix(e),!0)};v.event.special[t]={setup:function(){n++===0&&i.addEventListener(e,r,!0)},teardown:function(){--n===0&&i.removeEventListener(e,r,!0)}}}),v.fn.extend({on:function(e,n,r,i,s){var o,u;if(typeof e=="object"){typeof n!="string"&&(r=r||n,n=t);for(u in e)this.on(u,n,r,e[u],s);return this}r==null&&i==null?(i=n,r=n=t):i==null&&(typeof n=="string"?(i=r,r=t):(i=r,r=n,n=t));if(i===!1)i=et;else if(!i)return this;return s===1&&(o=i,i=function(e){return v().off(e),o.apply(this,arguments)},i.guid=o.guid||(o.guid=v.guid++)),this.each(function(){v.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,s;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,v(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if(typeof e=="object"){for(s in e)this.off(s,n,e[s]);return this}if(n===!1||typeof n=="function")r=n,n=t;return r===!1&&(r=et),this.each(function(){v.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},live:function(e,t,n){return v(this.context).on(e,this.selector,t,n),this},die:function(e,t){return v(this.context).off(e,this.selector||"**",t),this},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return arguments.length===1?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){v.event.trigger(e,t,this)})},triggerHandler:function(e,t){if(this[0])return v.event.trigger(e,t,this[0],!0)},toggle:function(e){var t=arguments,n=e.guid||v.guid++,r=0,i=function(n){var i=(v._data(this,"lastToggle"+e.guid)||0)%r;return v._data(this,"lastToggle"+e.guid,i+1),n.preventDefault(),t[i].apply(this,arguments)||!1};i.guid=n;while(r<t.length)t[r++].guid=n;return this.click(i)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),v.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 contextmenu".split(" "),function(e,t){v.fn[t]=function(e,n){return n==null&&(n=e,e=null),arguments.length>0?this.on(t,null,e,n):this.trigger(t)},Q.test(t)&&(v.event.fixHooks[t]=v.event.keyHooks),G.test(t)&&(v.event.fixHooks[t]=v.event.mouseHooks)}),function(e,t){function nt(e,t,n,r){n=n||[],t=t||g;var i,s,a,f,l=t.nodeType;if(!e||typeof e!="string")return n;if(l!==1&&l!==9)return[];a=o(t);if(!a&&!r)if(i=R.exec(e))if(f=i[1]){if(l===9){s=t.getElementById(f);if(!s||!s.parentNode)return n;if(s.id===f)return n.push(s),n}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(f))&&u(t,s)&&s.id===f)return n.push(s),n}else{if(i[2])return S.apply(n,x.call(t.getElementsByTagName(e),0)),n;if((f=i[3])&&Z&&t.getElementsByClassName)return S.apply(n,x.call(t.getElementsByClassName(f),0)),n}return vt(e.replace(j,"$1"),t,n,r,a)}function rt(e){return function(t){var n=t.nodeName.toLowerCase();return n==="input"&&t.type===e}}function it(e){return function(t){var n=t.nodeName.toLowerCase();return(n==="input"||n==="button")&&t.type===e}}function st(e){return N(function(t){return t=+t,N(function(n,r){var i,s=e([],n.length,t),o=s.length;while(o--)n[i=s[o]]&&(n[i]=!(r[i]=n[i]))})})}function ot(e,t,n){if(e===t)return n;var r=e.nextSibling;while(r){if(r===t)return-1;r=r.nextSibling}return 1}function ut(e,t){var n,r,s,o,u,a,f,l=L[d][e+" "];if(l)return t?0:l.slice(0);u=e,a=[],f=i.preFilter;while(u){if(!n||(r=F.exec(u)))r&&(u=u.slice(r[0].length)||u),a.push(s=[]);n=!1;if(r=I.exec(u))s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=r[0].replace(j," ");for(o in i.filter)(r=J[o].exec(u))&&(!f[o]||(r=f[o](r)))&&(s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=o,n.matches=r);if(!n)break}return t?u.length:u?nt.error(e):L(e,a).slice(0)}function at(e,t,r){var i=t.dir,s=r&&t.dir==="parentNode",o=w++;return t.first?function(t,n,r){while(t=t[i])if(s||t.nodeType===1)return e(t,n,r)}:function(t,r,u){if(!u){var a,f=b+" "+o+" ",l=f+n;while(t=t[i])if(s||t.nodeType===1){if((a=t[d])===l)return t.sizset;if(typeof a=="string"&&a.indexOf(f)===0){if(t.sizset)return t}else{t[d]=l;if(e(t,r,u))return t.sizset=!0,t;t.sizset=!1}}}else while(t=t[i])if(s||t.nodeType===1)if(e(t,r,u))return t}}function ft(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function lt(e,t,n,r,i){var s,o=[],u=0,a=e.length,f=t!=null;for(;u<a;u++)if(s=e[u])if(!n||n(s,r,i))o.push(s),f&&t.push(u);return o}function ct(e,t,n,r,i,s){return r&&!r[d]&&(r=ct(r)),i&&!i[d]&&(i=ct(i,s)),N(function(s,o,u,a){var f,l,c,h=[],p=[],d=o.length,v=s||dt(t||"*",u.nodeType?[u]:u,[]),m=e&&(s||!t)?lt(v,h,e,u,a):v,g=n?i||(s?e:d||r)?[]:o:m;n&&n(m,g,u,a);if(r){f=lt(g,p),r(f,[],u,a),l=f.length;while(l--)if(c=f[l])g[p[l]]=!(m[p[l]]=c)}if(s){if(i||e){if(i){f=[],l=g.length;while(l--)(c=g[l])&&f.push(m[l]=c);i(null,g=[],f,a)}l=g.length;while(l--)(c=g[l])&&(f=i?T.call(s,c):h[l])>-1&&(s[f]=!(o[f]=c))}}else g=lt(g===o?g.splice(d,g.length):g),i?i(null,o,g,a):S.apply(o,g)})}function ht(e){var t,n,r,s=e.length,o=i.relative[e[0].type],u=o||i.relative[" "],a=o?1:0,f=at(function(e){return e===t},u,!0),l=at(function(e){return T.call(t,e)>-1},u,!0),h=[function(e,n,r){return!o&&(r||n!==c)||((t=n).nodeType?f(e,n,r):l(e,n,r))}];for(;a<s;a++)if(n=i.relative[e[a].type])h=[at(ft(h),n)];else{n=i.filter[e[a].type].apply(null,e[a].matches);if(n[d]){r=++a;for(;r<s;r++)if(i.relative[e[r].type])break;return ct(a>1&&ft(h),a>1&&e.slice(0,a-1).join("").replace(j,"$1"),n,a<r&&ht(e.slice(a,r)),r<s&&ht(e=e.slice(r)),r<s&&e.join(""))}h.push(n)}return ft(h)}function pt(e,t){var r=t.length>0,s=e.length>0,o=function(u,a,f,l,h){var p,d,v,m=[],y=0,w="0",x=u&&[],T=h!=null,N=c,C=u||s&&i.find.TAG("*",h&&a.parentNode||a),k=b+=N==null?1:Math.E;T&&(c=a!==g&&a,n=o.el);for(;(p=C[w])!=null;w++){if(s&&p){for(d=0;v=e[d];d++)if(v(p,a,f)){l.push(p);break}T&&(b=k,n=++o.el)}r&&((p=!v&&p)&&y--,u&&x.push(p))}y+=w;if(r&&w!==y){for(d=0;v=t[d];d++)v(x,m,a,f);if(u){if(y>0)while(w--)!x[w]&&!m[w]&&(m[w]=E.call(l));m=lt(m)}S.apply(l,m),T&&!u&&m.length>0&&y+t.length>1&&nt.uniqueSort(l)}return T&&(b=k,c=N),x};return o.el=0,r?N(o):o}function dt(e,t,n){var r=0,i=t.length;for(;r<i;r++)nt(e,t[r],n);return n}function vt(e,t,n,r,s){var o,u,f,l,c,h=ut(e),p=h.length;if(!r&&h.length===1){u=h[0]=h[0].slice(0);if(u.length>2&&(f=u[0]).type==="ID"&&t.nodeType===9&&!s&&i.relative[u[1].type]){t=i.find.ID(f.matches[0].replace($,""),t,s)[0];if(!t)return n;e=e.slice(u.shift().length)}for(o=J.POS.test(e)?-1:u.length-1;o>=0;o--){f=u[o];if(i.relative[l=f.type])break;if(c=i.find[l])if(r=c(f.matches[0].replace($,""),z.test(u[0].type)&&t.parentNode||t,s)){u.splice(o,1),e=r.length&&u.join("");if(!e)return S.apply(n,x.call(r,0)),n;break}}}return a(e,h)(r,t,s,n,z.test(e)),n}function mt(){}var n,r,i,s,o,u,a,f,l,c,h=!0,p="undefined",d=("sizcache"+Math.random()).replace(".",""),m=String,g=e.document,y=g.documentElement,b=0,w=0,E=[].pop,S=[].push,x=[].slice,T=[].indexOf||function(e){var t=0,n=this.length;for(;t<n;t++)if(this[t]===e)return t;return-1},N=function(e,t){return e[d]=t==null||t,e},C=function(){var e={},t=[];return N(function(n,r){return t.push(n)>i.cacheLength&&delete e[t.shift()],e[n+" "]=r},e)},k=C(),L=C(),A=C(),O="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",_=M.replace("w","w#"),D="([*^$|!~]?=)",P="\\["+O+"*("+M+")"+O+"*(?:"+D+O+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+_+")|)|)"+O+"*\\]",H=":("+M+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+P+")|[^:]|\\\\.)*|.*))\\)|)",B=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+O+"*((?:-\\d)?\\d*)"+O+"*\\)|)(?=[^-]|$)",j=new RegExp("^"+O+"+|((?:^|[^\\\\])(?:\\\\.)*)"+O+"+$","g"),F=new RegExp("^"+O+"*,"+O+"*"),I=new RegExp("^"+O+"*([\\x20\\t\\r\\n\\f>+~])"+O+"*"),q=new RegExp(H),R=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,U=/^:not/,z=/[\x20\t\r\n\f]*[+~]/,W=/:not\($/,X=/h\d/i,V=/input|select|textarea|button/i,$=/\\(?!\\)/g,J={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),NAME:new RegExp("^\\[name=['\"]?("+M+")['\"]?\\]"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+H),POS:new RegExp(B,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+O+"*(even|odd|(([+-]|)(\\d*)n|)"+O+"*(?:([+-]|)"+O+"*(\\d+)|))"+O+"*\\)|)","i"),needsContext:new RegExp("^"+O+"*[>+~]|"+B,"i")},K=function(e){var t=g.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}},Q=K(function(e){return e.appendChild(g.createComment("")),!e.getElementsByTagName("*").length}),G=K(function(e){return e.innerHTML="<a href='#'></a>",e.firstChild&&typeof e.firstChild.getAttribute!==p&&e.firstChild.getAttribute("href")==="#"}),Y=K(function(e){e.innerHTML="<select></select>";var t=typeof e.lastChild.getAttribute("multiple");return t!=="boolean"&&t!=="string"}),Z=K(function(e){return e.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",!e.getElementsByClassName||!e.getElementsByClassName("e").length?!1:(e.lastChild.className="e",e.getElementsByClassName("e").length===2)}),et=K(function(e){e.id=d+0,e.innerHTML="<a name='"+d+"'></a><div name='"+d+"'></div>",y.insertBefore(e,y.firstChild);var t=g.getElementsByName&&g.getElementsByName(d).length===2+g.getElementsByName(d+0).length;return r=!g.getElementById(d),y.removeChild(e),t});try{x.call(y.childNodes,0)[0].nodeType}catch(tt){x=function(e){var t,n=[];for(;t=this[e];e++)n.push(t);return n}}nt.matches=function(e,t){return nt(e,null,null,t)},nt.matchesSelector=function(e,t){return nt(t,null,null,[e]).length>0},s=nt.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(i===1||i===9||i===11){if(typeof e.textContent=="string")return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=s(e)}else if(i===3||i===4)return e.nodeValue}else for(;t=e[r];r++)n+=s(t);return n},o=nt.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?t.nodeName!=="HTML":!1},u=nt.contains=y.contains?function(e,t){var n=e.nodeType===9?e.documentElement:e,r=t&&t.parentNode;return e===r||!!(r&&r.nodeType===1&&n.contains&&n.contains(r))}:y.compareDocumentPosition?function(e,t){return t&&!!(e.compareDocumentPosition(t)&16)}:function(e,t){while(t=t.parentNode)if(t===e)return!0;return!1},nt.attr=function(e,t){var n,r=o(e);return r||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):r||Y?e.getAttribute(t):(n=e.getAttributeNode(t),n?typeof e[t]=="boolean"?e[t]?t:null:n.specified?n.value:null:null)},i=nt.selectors={cacheLength:50,createPseudo:N,match:J,attrHandle:G?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},find:{ID:r?function(e,t,n){if(typeof t.getElementById!==p&&!n){var r=t.getElementById(e);return r&&r.parentNode?[r]:[]}}:function(e,n,r){if(typeof n.getElementById!==p&&!r){var i=n.getElementById(e);return i?i.id===e||typeof i.getAttributeNode!==p&&i.getAttributeNode("id").value===e?[i]:t:[]}},TAG:Q?function(e,t){if(typeof t.getElementsByTagName!==p)return t.getElementsByTagName(e)}:function(e,t){var n=t.getElementsByTagName(e);if(e==="*"){var r,i=[],s=0;for(;r=n[s];s++)r.nodeType===1&&i.push(r);return i}return n},NAME:et&&function(e,t){if(typeof t.getElementsByName!==p)return t.getElementsByName(name)},CLASS:Z&&function(e,t,n){if(typeof t.getElementsByClassName!==p&&!n)return t.getElementsByClassName(e)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace($,""),e[3]=(e[4]||e[5]||"").replace($,""),e[2]==="~="&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),e[1]==="nth"?(e[2]||nt.error(e[0]),e[3]=+(e[3]?e[4]+(e[5]||1):2*(e[2]==="even"||e[2]==="odd")),e[4]=+(e[6]+e[7]||e[2]==="odd")):e[2]&&nt.error(e[0]),e},PSEUDO:function(e){var t,n;if(J.CHILD.test(e[0]))return null;if(e[3])e[2]=e[3];else if(t=e[4])q.test(t)&&(n=ut(t,!0))&&(n=t.indexOf(")",t.length-n)-t.length)&&(t=t.slice(0,n),e[0]=e[0].slice(0,n)),e[2]=t;return e.slice(0,3)}},filter:{ID:r?function(e){return e=e.replace($,""),function(t){return t.getAttribute("id")===e}}:function(e){return e=e.replace($,""),function(t){var n=typeof t.getAttributeNode!==p&&t.getAttributeNode("id");return n&&n.value===e}},TAG:function(e){return e==="*"?function(){return!0}:(e=e.replace($,"").toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[d][e+" "];return t||(t=new RegExp("(^|"+O+")"+e+"("+O+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==p&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r,i){var s=nt.attr(r,e);return s==null?t==="!=":t?(s+="",t==="="?s===n:t==="!="?s!==n:t==="^="?n&&s.indexOf(n)===0:t==="*="?n&&s.indexOf(n)>-1:t==="$="?n&&s.substr(s.length-n.length)===n:t==="~="?(" "+s+" ").indexOf(n)>-1:t==="|="?s===n||s.substr(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r){return e==="nth"?function(e){var t,i,s=e.parentNode;if(n===1&&r===0)return!0;if(s){i=0;for(t=s.firstChild;t;t=t.nextSibling)if(t.nodeType===1){i++;if(e===t)break}}return i-=r,i===n||i%n===0&&i/n>=0}:function(t){var n=t;switch(e){case"only":case"first":while(n=n.previousSibling)if(n.nodeType===1)return!1;if(e==="first")return!0;n=t;case"last":while(n=n.nextSibling)if(n.nodeType===1)return!1;return!0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||nt.error("unsupported pseudo: "+e);return r[d]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?N(function(e,n){var i,s=r(e,t),o=s.length;while(o--)i=T.call(e,s[o]),e[i]=!(n[i]=s[o])}):function(e){return r(e,0,n)}):r}},pseudos:{not:N(function(e){var t=[],n=[],r=a(e.replace(j,"$1"));return r[d]?N(function(e,t,n,i){var s,o=r(e,null,i,[]),u=e.length;while(u--)if(s=o[u])e[u]=!(t[u]=s)}):function(e,i,s){return t[0]=e,r(t,null,s,n),!n.pop()}}),has:N(function(e){return function(t){return nt(e,t).length>0}}),contains:N(function(e){return function(t){return(t.textContent||t.innerText||s(t)).indexOf(e)>-1}}),enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&!!e.checked||t==="option"&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},parent:function(e){return!i.pseudos.empty(e)},empty:function(e){var t;e=e.firstChild;while(e){if(e.nodeName>"@"||(t=e.nodeType)===3||t===4)return!1;e=e.nextSibling}return!0},header:function(e){return X.test(e.nodeName)},text:function(e){var t,n;return e.nodeName.toLowerCase()==="input"&&(t=e.type)==="text"&&((n=e.getAttribute("type"))==null||n.toLowerCase()===t)},radio:rt("radio"),checkbox:rt("checkbox"),file:rt("file"),password:rt("password"),image:rt("image"),submit:it("submit"),reset:it("reset"),button:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&e.type==="button"||t==="button"},input:function(e){return V.test(e.nodeName)},focus:function(e){var t=e.ownerDocument;return e===t.activeElement&&(!t.hasFocus||t.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},active:function(e){return e===e.ownerDocument.activeElement},first:st(function(){return[0]}),last:st(function(e,t){return[t-1]}),eq:st(function(e,t,n){return[n<0?n+t:n]}),even:st(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:st(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:st(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:st(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}},f=y.compareDocumentPosition?function(e,t){return e===t?(l=!0,0):(!e.compareDocumentPosition||!t.compareDocumentPosition?e.compareDocumentPosition:e.compareDocumentPosition(t)&4)?-1:1}:function(e,t){if(e===t)return l=!0,0;if(e.sourceIndex&&t.sourceIndex)return e.sourceIndex-t.sourceIndex;var n,r,i=[],s=[],o=e.parentNode,u=t.parentNode,a=o;if(o===u)return ot(e,t);if(!o)return-1;if(!u)return 1;while(a)i.unshift(a),a=a.parentNode;a=u;while(a)s.unshift(a),a=a.parentNode;n=i.length,r=s.length;for(var f=0;f<n&&f<r;f++)if(i[f]!==s[f])return ot(i[f],s[f]);return f===n?ot(e,s[f],-1):ot(i[f],t,1)},[0,0].sort(f),h=!l,nt.uniqueSort=function(e){var t,n=[],r=1,i=0;l=h,e.sort(f);if(l){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e},nt.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},a=nt.compile=function(e,t){var n,r=[],i=[],s=A[d][e+" "];if(!s){t||(t=ut(e)),n=t.length;while(n--)s=ht(t[n]),s[d]?r.push(s):i.push(s);s=A(e,pt(i,r))}return s},g.querySelectorAll&&function(){var e,t=vt,n=/'|\\/g,r=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,i=[":focus"],s=[":active"],u=y.matchesSelector||y.mozMatchesSelector||y.webkitMatchesSelector||y.oMatchesSelector||y.msMatchesSelector;K(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||i.push("\\["+O+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||i.push(":checked")}),K(function(e){e.innerHTML="<p test=''></p>",e.querySelectorAll("[test^='']").length&&i.push("[*^$]="+O+"*(?:\"\"|'')"),e.innerHTML="<input type='hidden'/>",e.querySelectorAll(":enabled").length||i.push(":enabled",":disabled")}),i=new RegExp(i.join("|")),vt=function(e,r,s,o,u){if(!o&&!u&&!i.test(e)){var a,f,l=!0,c=d,h=r,p=r.nodeType===9&&e;if(r.nodeType===1&&r.nodeName.toLowerCase()!=="object"){a=ut(e),(l=r.getAttribute("id"))?c=l.replace(n,"\\$&"):r.setAttribute("id",c),c="[id='"+c+"'] ",f=a.length;while(f--)a[f]=c+a[f].join("");h=z.test(e)&&r.parentNode||r,p=a.join(",")}if(p)try{return S.apply(s,x.call(h.querySelectorAll(p),0)),s}catch(v){}finally{l||r.removeAttribute("id")}}return t(e,r,s,o,u)},u&&(K(function(t){e=u.call(t,"div");try{u.call(t,"[test!='']:sizzle"),s.push("!=",H)}catch(n){}}),s=new RegExp(s.join("|")),nt.matchesSelector=function(t,n){n=n.replace(r,"='$1']");if(!o(t)&&!s.test(n)&&!i.test(n))try{var a=u.call(t,n);if(a||e||t.document&&t.document.nodeType!==11)return a}catch(f){}return nt(n,null,null,[t]).length>0})}(),i.pseudos.nth=i.pseudos.eq,i.filters=mt.prototype=i.pseudos,i.setFilters=new mt,nt.attr=v.attr,v.find=nt,v.expr=nt.selectors,v.expr[":"]=v.expr.pseudos,v.unique=nt.uniqueSort,v.text=nt.getText,v.isXMLDoc=nt.isXML,v.contains=nt.contains}(e);var nt=/Until$/,rt=/^(?:parents|prev(?:Until|All))/,it=/^.[^:#\[\.,]*$/,st=v.expr.match.needsContext,ot={children:!0,contents:!0,next:!0,prev:!0};v.fn.extend({find:function(e){var t,n,r,i,s,o,u=this;if(typeof e!="string")return v(e).filter(function(){for(t=0,n=u.length;t<n;t++)if(v.contains(u[t],this))return!0});o=this.pushStack("","find",e);for(t=0,n=this.length;t<n;t++){r=o.length,v.find(e,this[t],o);if(t>0)for(i=r;i<o.length;i++)for(s=0;s<r;s++)if(o[s]===o[i]){o.splice(i--,1);break}}return o},has:function(e){var t,n=v(e,this),r=n.length;return this.filter(function(){for(t=0;t<r;t++)if(v.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1),"not",e)},filter:function(e){return this.pushStack(ft(this,e,!0),"filter",e)},is:function(e){return!!e&&(typeof e=="string"?st.test(e)?v(e,this.context).index(this[0])>=0:v.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,s=[],o=st.test(e)||typeof e!="string"?v(e,t||this.context):0;for(;r<i;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&n.nodeType!==11){if(o?o.index(n)>-1:v.find.matchesSelector(n,e)){s.push(n);break}n=n.parentNode}}return s=s.length>1?v.unique(s):s,this.pushStack(s,"closest",e)},index:function(e){return e?typeof e=="string"?v.inArray(this[0],v(e)):v.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(e,t){var n=typeof e=="string"?v(e,t):v.makeArray(e&&e.nodeType?[e]:e),r=v.merge(this.get(),n);return this.pushStack(ut(n[0])||ut(r[0])?r:v.unique(r))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}}),v.fn.andSelf=v.fn.addBack,v.each({parent:function(e){var t=e.parentNode;return t&&t.nodeType!==11?t:null},parents:function(e){return v.dir(e,"parentNode")},parentsUntil:function(e,t,n){return v.dir(e,"parentNode",n)},next:function(e){return at(e,"nextSibling")},prev:function(e){return at(e,"previousSibling")},nextAll:function(e){return v.dir(e,"nextSibling")},prevAll:function(e){return v.dir(e,"previousSibling")},nextUntil:function(e,t,n){return v.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return v.dir(e,"previousSibling",n)},siblings:function(e){return v.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return v.sibling(e.firstChild)},contents:function(e){return v.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:v.merge([],e.childNodes)}},function(e,t){v.fn[e]=function(n,r){var i=v.map(this,t,n);return nt.test(e)||(r=n),r&&typeof r=="string"&&(i=v.filter(r,i)),i=this.length>1&&!ot[e]?v.unique(i):i,this.length>1&&rt.test(e)&&(i=i.reverse()),this.pushStack(i,e,l.call(arguments).join(","))}}),v.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),t.length===1?v.find.matchesSelector(t[0],e)?[t[0]]:[]:v.find.matches(e,t)},dir:function(e,n,r){var i=[],s=e[n];while(s&&s.nodeType!==9&&(r===t||s.nodeType!==1||!v(s).is(r)))s.nodeType===1&&i.push(s),s=s[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)e.nodeType===1&&e!==t&&n.push(e);return n}});var ct="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ht=/ jQuery\d+="(?:null|\d+)"/g,pt=/^\s+/,dt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,vt=/<([\w:]+)/,mt=/<tbody/i,gt=/<|&#?\w+;/,yt=/<(?:script|style|link)/i,bt=/<(?:script|object|embed|option|style)/i,wt=new RegExp("<(?:"+ct+")[\\s/>]","i"),Et=/^(?:checkbox|radio)$/,St=/checked\s*(?:[^=]|=\s*.checked.)/i,xt=/\/(java|ecma)script/i,Tt=/^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,Nt={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,"",""]},Ct=lt(i),kt=Ct.appendChild(i.createElement("div"));Nt.optgroup=Nt.option,Nt.tbody=Nt.tfoot=Nt.colgroup=Nt.caption=Nt.thead,Nt.th=Nt.td,v.support.htmlSerialize||(Nt._default=[1,"X<div>","</div>"]),v.fn.extend({text:function(e){return v.access(this,function(e){return e===t?v.text(this):this.empty().append((this[0]&&this[0].ownerDocument||i).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(v.isFunction(e))return this.each(function(t){v(this).wrapAll(e.call(this,t))});if(this[0]){var t=v(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&e.firstChild.nodeType===1)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return v.isFunction(e)?this.each(function(t){v(this).wrapInner(e.call(this,t))}):this.each(function(){var t=v(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=v.isFunction(e);return this.each(function(n){v(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){v.nodeName(this,"body")||v(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(e,this.firstChild)})},before:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(e,this),"before",this.selector)}},after:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this.nextSibling)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(this,e),"after",this.selector)}},remove:function(e,t){var n,r=0;for(;(n=this[r])!=null;r++)if(!e||v.filter(e,[n]).length)!t&&n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),v.cleanData([n])),n.parentNode&&n.parentNode.removeChild(n);return this},empty:function(){var e,t=0;for(;(e=this[t])!=null;t++){e.nodeType===1&&v.cleanData(e.getElementsByTagName("*"));while(e.firstChild)e.removeChild(e.firstChild)}return this},clone:function(e,t){return e=e==null?!1:e,t=t==null?e:t,this.map(function(){return v.clone(this,e,t)})},html:function(e){return v.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return n.nodeType===1?n.innerHTML.replace(ht,""):t;if(typeof e=="string"&&!yt.test(e)&&(v.support.htmlSerialize||!wt.test(e))&&(v.support.leadingWhitespace||!pt.test(e))&&!Nt[(vt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(dt,"<$1></$2>");try{for(;r<i;r++)n=this[r]||{},n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),n.innerHTML=e);n=0}catch(s){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){return ut(this[0])?this.length?this.pushStack(v(v.isFunction(e)?e():e),"replaceWith",e):this:v.isFunction(e)?this.each(function(t){var n=v(this),r=n.html();n.replaceWith(e.call(this,t,r))}):(typeof e!="string"&&(e=v(e).detach()),this.each(function(){var t=this.nextSibling,n=this.parentNode;v(this).remove(),t?v(t).before(e):v(n).append(e)}))},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=[].concat.apply([],e);var i,s,o,u,a=0,f=e[0],l=[],c=this.length;if(!v.support.checkClone&&c>1&&typeof f=="string"&&St.test(f))return this.each(function(){v(this).domManip(e,n,r)});if(v.isFunction(f))return this.each(function(i){var s=v(this);e[0]=f.call(this,i,n?s.html():t),s.domManip(e,n,r)});if(this[0]){i=v.buildFragment(e,this,l),o=i.fragment,s=o.firstChild,o.childNodes.length===1&&(o=s);if(s){n=n&&v.nodeName(s,"tr");for(u=i.cacheable||c-1;a<c;a++)r.call(n&&v.nodeName(this[a],"table")?Lt(this[a],"tbody"):this[a],a===u?o:v.clone(o,!0,!0))}o=s=null,l.length&&v.each(l,function(e,t){t.src?v.ajax?v.ajax({url:t.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):v.error("no ajax"):v.globalEval((t.text||t.textContent||t.innerHTML||"").replace(Tt,"")),t.parentNode&&t.parentNode.removeChild(t)})}return this}}),v.buildFragment=function(e,n,r){var s,o,u,a=e[0];return n=n||i,n=!n.nodeType&&n[0]||n,n=n.ownerDocument||n,e.length===1&&typeof a=="string"&&a.length<512&&n===i&&a.charAt(0)==="<"&&!bt.test(a)&&(v.support.checkClone||!St.test(a))&&(v.support.html5Clone||!wt.test(a))&&(o=!0,s=v.fragments[a],u=s!==t),s||(s=n.createDocumentFragment(),v.clean(e,n,s,r),o&&(v.fragments[a]=u&&s)),{fragment:s,cacheable:o}},v.fragments={},v.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){v.fn[e]=function(n){var r,i=0,s=[],o=v(n),u=o.length,a=this.length===1&&this[0].parentNode;if((a==null||a&&a.nodeType===11&&a.childNodes.length===1)&&u===1)return o[t](this[0]),this;for(;i<u;i++)r=(i>0?this.clone(!0):this).get(),v(o[i])[t](r),s=s.concat(r);return this.pushStack(s,e,o.selector)}}),v.extend({clone:function(e,t,n){var r,i,s,o;v.support.html5Clone||v.isXMLDoc(e)||!wt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(kt.innerHTML=e.outerHTML,kt.removeChild(o=kt.firstChild));if((!v.support.noCloneEvent||!v.support.noCloneChecked)&&(e.nodeType===1||e.nodeType===11)&&!v.isXMLDoc(e)){Ot(e,o),r=Mt(e),i=Mt(o);for(s=0;r[s];++s)i[s]&&Ot(r[s],i[s])}if(t){At(e,o);if(n){r=Mt(e),i=Mt(o);for(s=0;r[s];++s)At(r[s],i[s])}}return r=i=null,o},clean:function(e,t,n,r){var s,o,u,a,f,l,c,h,p,d,m,g,y=t===i&&Ct,b=[];if(!t||typeof t.createDocumentFragment=="undefined")t=i;for(s=0;(u=e[s])!=null;s++){typeof u=="number"&&(u+="");if(!u)continue;if(typeof u=="string")if(!gt.test(u))u=t.createTextNode(u);else{y=y||lt(t),c=t.createElement("div"),y.appendChild(c),u=u.replace(dt,"<$1></$2>"),a=(vt.exec(u)||["",""])[1].toLowerCase(),f=Nt[a]||Nt._default,l=f[0],c.innerHTML=f[1]+u+f[2];while(l--)c=c.lastChild;if(!v.support.tbody){h=mt.test(u),p=a==="table"&&!h?c.firstChild&&c.firstChild.childNodes:f[1]==="<table>"&&!h?c.childNodes:[];for(o=p.length-1;o>=0;--o)v.nodeName(p[o],"tbody")&&!p[o].childNodes.length&&p[o].parentNode.removeChild(p[o])}!v.support.leadingWhitespace&&pt.test(u)&&c.insertBefore(t.createTextNode(pt.exec(u)[0]),c.firstChild),u=c.childNodes,c.parentNode.removeChild(c)}u.nodeType?b.push(u):v.merge(b,u)}c&&(u=c=y=null);if(!v.support.appendChecked)for(s=0;(u=b[s])!=null;s++)v.nodeName(u,"input")?_t(u):typeof u.getElementsByTagName!="undefined"&&v.grep(u.getElementsByTagName("input"),_t);if(n){m=function(e){if(!e.type||xt.test(e.type))return r?r.push(e.parentNode?e.parentNode.removeChild(e):e):n.appendChild(e)};for(s=0;(u=b[s])!=null;s++)if(!v.nodeName(u,"script")||!m(u))n.appendChild(u),typeof u.getElementsByTagName!="undefined"&&(g=v.grep(v.merge([],u.getElementsByTagName("script")),m),b.splice.apply(b,[s+1,0].concat(g)),s+=g.length)}return b},cleanData:function(e,t){var n,r,i,s,o=0,u=v.expando,a=v.cache,f=v.support.deleteExpando,l=v.event.special;for(;(i=e[o])!=null;o++)if(t||v.acceptData(i)){r=i[u],n=r&&a[r];if(n){if(n.events)for(s in n.events)l[s]?v.event.remove(i,s):v.removeEvent(i,s,n.handle);a[r]&&(delete a[r],f?delete i[u]:i.removeAttribute?i.removeAttribute(u):i[u]=null,v.deletedIds.push(r))}}}}),function(){var e,t;v.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}},e=v.uaMatch(o.userAgent),t={},e.browser&&(t[e.browser]=!0,t.version=e.version),t.chrome?t.webkit=!0:t.webkit&&(t.safari=!0),v.browser=t,v.sub=function(){function e(t,n){return new e.fn.init(t,n)}v.extend(!0,e,this),e.superclass=this,e.fn=e.prototype=this(),e.fn.constructor=e,e.sub=this.sub,e.fn.init=function(r,i){return i&&i instanceof v&&!(i instanceof e)&&(i=e(i)),v.fn.init.call(this,r,i,t)},e.fn.init.prototype=e.fn;var t=e(i);return e}}();var Dt,Pt,Ht,Bt=/alpha\([^)]*\)/i,jt=/opacity=([^)]*)/,Ft=/^(top|right|bottom|left)$/,It=/^(none|table(?!-c[ea]).+)/,qt=/^margin/,Rt=new RegExp("^("+m+")(.*)$","i"),Ut=new RegExp("^("+m+")(?!px)[a-z%]+$","i"),zt=new RegExp("^([-+])=("+m+")","i"),Wt={BODY:"block"},Xt={position:"absolute",visibility:"hidden",display:"block"},Vt={letterSpacing:0,fontWeight:400},$t=["Top","Right","Bottom","Left"],Jt=["Webkit","O","Moz","ms"],Kt=v.fn.toggle;v.fn.extend({css:function(e,n){return v.access(this,function(e,n,r){return r!==t?v.style(e,n,r):v.css(e,n)},e,n,arguments.length>1)},show:function(){return Yt(this,!0)},hide:function(){return Yt(this)},toggle:function(e,t){var n=typeof e=="boolean";return v.isFunction(e)&&v.isFunction(t)?Kt.apply(this,arguments):this.each(function(){(n?e:Gt(this))?v(this).show():v(this).hide()})}}),v.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Dt(e,"opacity");return n===""?"1":n}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":v.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(!e||e.nodeType===3||e.nodeType===8||!e.style)return;var s,o,u,a=v.camelCase(n),f=e.style;n=v.cssProps[a]||(v.cssProps[a]=Qt(f,a)),u=v.cssHooks[n]||v.cssHooks[a];if(r===t)return u&&"get"in u&&(s=u.get(e,!1,i))!==t?s:f[n];o=typeof r,o==="string"&&(s=zt.exec(r))&&(r=(s[1]+1)*s[2]+parseFloat(v.css(e,n)),o="number");if(r==null||o==="number"&&isNaN(r))return;o==="number"&&!v.cssNumber[a]&&(r+="px");if(!u||!("set"in u)||(r=u.set(e,r,i))!==t)try{f[n]=r}catch(l){}},css:function(e,n,r,i){var s,o,u,a=v.camelCase(n);return n=v.cssProps[a]||(v.cssProps[a]=Qt(e.style,a)),u=v.cssHooks[n]||v.cssHooks[a],u&&"get"in u&&(s=u.get(e,!0,i)),s===t&&(s=Dt(e,n)),s==="normal"&&n in Vt&&(s=Vt[n]),r||i!==t?(o=parseFloat(s),r||v.isNumeric(o)?o||0:s):s},swap:function(e,t,n){var r,i,s={};for(i in t)s[i]=e.style[i],e.style[i]=t[i];r=n.call(e);for(i in t)e.style[i]=s[i];return r}}),e.getComputedStyle?Dt=function(t,n){var r,i,s,o,u=e.getComputedStyle(t,null),a=t.style;return u&&(r=u.getPropertyValue(n)||u[n],r===""&&!v.contains(t.ownerDocument,t)&&(r=v.style(t,n)),Ut.test(r)&&qt.test(n)&&(i=a.width,s=a.minWidth,o=a.maxWidth,a.minWidth=a.maxWidth=a.width=r,r=u.width,a.width=i,a.minWidth=s,a.maxWidth=o)),r}:i.documentElement.currentStyle&&(Dt=function(e,t){var n,r,i=e.currentStyle&&e.currentStyle[t],s=e.style;return i==null&&s&&s[t]&&(i=s[t]),Ut.test(i)&&!Ft.test(t)&&(n=s.left,r=e.runtimeStyle&&e.runtimeStyle.left,r&&(e.runtimeStyle.left=e.currentStyle.left),s.left=t==="fontSize"?"1em":i,i=s.pixelLeft+"px",s.left=n,r&&(e.runtimeStyle.left=r)),i===""?"auto":i}),v.each(["height","width"],function(e,t){v.cssHooks[t]={get:function(e,n,r){if(n)return e.offsetWidth===0&&It.test(Dt(e,"display"))?v.swap(e,Xt,function(){return tn(e,t,r)}):tn(e,t,r)},set:function(e,n,r){return Zt(e,n,r?en(e,t,r,v.support.boxSizing&&v.css(e,"boxSizing")==="border-box"):0)}}}),v.support.opacity||(v.cssHooks.opacity={get:function(e,t){return jt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=v.isNumeric(t)?"alpha(opacity="+t*100+")":"",s=r&&r.filter||n.filter||"";n.zoom=1;if(t>=1&&v.trim(s.replace(Bt,""))===""&&n.removeAttribute){n.removeAttribute("filter");if(r&&!r.filter)return}n.filter=Bt.test(s)?s.replace(Bt,i):s+" "+i}}),v(function(){v.support.reliableMarginRight||(v.cssHooks.marginRight={get:function(e,t){return v.swap(e,{display:"inline-block"},function(){if(t)return Dt(e,"marginRight")})}}),!v.support.pixelPosition&&v.fn.position&&v.each(["top","left"],function(e,t){v.cssHooks[t]={get:function(e,n){if(n){var r=Dt(e,t);return Ut.test(r)?v(e).position()[t]+"px":r}}}})}),v.expr&&v.expr.filters&&(v.expr.filters.hidden=function(e){return e.offsetWidth===0&&e.offsetHeight===0||!v.support.reliableHiddenOffsets&&(e.style&&e.style.display||Dt(e,"display"))==="none"},v.expr.filters.visible=function(e){return!v.expr.filters.hidden(e)}),v.each({margin:"",padding:"",border:"Width"},function(e,t){v.cssHooks[e+t]={expand:function(n){var r,i=typeof n=="string"?n.split(" "):[n],s={};for(r=0;r<4;r++)s[e+$t[r]+t]=i[r]||i[r-2]||i[0];return s}},qt.test(e)||(v.cssHooks[e+t].set=Zt)});var rn=/%20/g,sn=/\[\]$/,on=/\r?\n/g,un=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,an=/^(?:select|textarea)/i;v.fn.extend({serialize:function(){return v.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?v.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||an.test(this.nodeName)||un.test(this.type))}).map(function(e,t){var n=v(this).val();return n==null?null:v.isArray(n)?v.map(n,function(e,n){return{name:t.name,value:e.replace(on,"\r\n")}}):{name:t.name,value:n.replace(on,"\r\n")}}).get()}}),v.param=function(e,n){var r,i=[],s=function(e,t){t=v.isFunction(t)?t():t==null?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};n===t&&(n=v.ajaxSettings&&v.ajaxSettings.traditional);if(v.isArray(e)||e.jquery&&!v.isPlainObject(e))v.each(e,function(){s(this.name,this.value)});else for(r in e)fn(r,e[r],n,s);return i.join("&").replace(rn,"+")};var ln,cn,hn=/#.*$/,pn=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,dn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,vn=/^(?:GET|HEAD)$/,mn=/^\/\//,gn=/\?/,yn=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bn=/([?&])_=[^&]*/,wn=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,En=v.fn.load,Sn={},xn={},Tn=["*/"]+["*"];try{cn=s.href}catch(Nn){cn=i.createElement("a"),cn.href="",cn=cn.href}ln=wn.exec(cn.toLowerCase())||[],v.fn.load=function(e,n,r){if(typeof e!="string"&&En)return En.apply(this,arguments);if(!this.length)return this;var i,s,o,u=this,a=e.indexOf(" ");return a>=0&&(i=e.slice(a,e.length),e=e.slice(0,a)),v.isFunction(n)?(r=n,n=t):n&&typeof n=="object"&&(s="POST"),v.ajax({url:e,type:s,dataType:"html",data:n,complete:function(e,t){r&&u.each(r,o||[e.responseText,t,e])}}).done(function(e){o=arguments,u.html(i?v("<div>").append(e.replace(yn,"")).find(i):e)}),this},v.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,t){v.fn[t]=function(e){return this.on(t,e)}}),v.each(["get","post"],function(e,n){v[n]=function(e,r,i,s){return v.isFunction(r)&&(s=s||i,i=r,r=t),v.ajax({type:n,url:e,data:r,success:i,dataType:s})}}),v.extend({getScript:function(e,n){return v.get(e,t,n,"script")},getJSON:function(e,t,n){return v.get(e,t,n,"json")},ajaxSetup:function(e,t){return t?Ln(e,v.ajaxSettings):(t=e,e=v.ajaxSettings),Ln(e,t),e},ajaxSettings:{url:cn,isLocal:dn.test(ln[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":Tn},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":v.parseJSON,"text xml":v.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:Cn(Sn),ajaxTransport:Cn(xn),ajax:function(e,n){function T(e,n,s,a){var l,y,b,w,S,T=n;if(E===2)return;E=2,u&&clearTimeout(u),o=t,i=a||"",x.readyState=e>0?4:0,s&&(w=An(c,x,s));if(e>=200&&e<300||e===304)c.ifModified&&(S=x.getResponseHeader("Last-Modified"),S&&(v.lastModified[r]=S),S=x.getResponseHeader("Etag"),S&&(v.etag[r]=S)),e===304?(T="notmodified",l=!0):(l=On(c,w),T=l.state,y=l.data,b=l.error,l=!b);else{b=T;if(!T||e)T="error",e<0&&(e=0)}x.status=e,x.statusText=(n||T)+"",l?d.resolveWith(h,[y,T,x]):d.rejectWith(h,[x,T,b]),x.statusCode(g),g=t,f&&p.trigger("ajax"+(l?"Success":"Error"),[x,c,l?y:b]),m.fireWith(h,[x,T]),f&&(p.trigger("ajaxComplete",[x,c]),--v.active||v.event.trigger("ajaxStop"))}typeof e=="object"&&(n=e,e=t),n=n||{};var r,i,s,o,u,a,f,l,c=v.ajaxSetup({},n),h=c.context||c,p=h!==c&&(h.nodeType||h instanceof v)?v(h):v.event,d=v.Deferred(),m=v.Callbacks("once memory"),g=c.statusCode||{},b={},w={},E=0,S="canceled",x={readyState:0,setRequestHeader:function(e,t){if(!E){var n=e.toLowerCase();e=w[n]=w[n]||e,b[e]=t}return this},getAllResponseHeaders:function(){return E===2?i:null},getResponseHeader:function(e){var n;if(E===2){if(!s){s={};while(n=pn.exec(i))s[n[1].toLowerCase()]=n[2]}n=s[e.toLowerCase()]}return n===t?null:n},overrideMimeType:function(e){return E||(c.mimeType=e),this},abort:function(e){return e=e||S,o&&o.abort(e),T(0,e),this}};d.promise(x),x.success=x.done,x.error=x.fail,x.complete=m.add,x.statusCode=function(e){if(e){var t;if(E<2)for(t in e)g[t]=[g[t],e[t]];else t=e[x.status],x.always(t)}return this},c.url=((e||c.url)+"").replace(hn,"").replace(mn,ln[1]+"//"),c.dataTypes=v.trim(c.dataType||"*").toLowerCase().split(y),c.crossDomain==null&&(a=wn.exec(c.url.toLowerCase()),c.crossDomain=!(!a||a[1]===ln[1]&&a[2]===ln[2]&&(a[3]||(a[1]==="http:"?80:443))==(ln[3]||(ln[1]==="http:"?80:443)))),c.data&&c.processData&&typeof c.data!="string"&&(c.data=v.param(c.data,c.traditional)),kn(Sn,c,n,x);if(E===2)return x;f=c.global,c.type=c.type.toUpperCase(),c.hasContent=!vn.test(c.type),f&&v.active++===0&&v.event.trigger("ajaxStart");if(!c.hasContent){c.data&&(c.url+=(gn.test(c.url)?"&":"?")+c.data,delete c.data),r=c.url;if(c.cache===!1){var N=v.now(),C=c.url.replace(bn,"$1_="+N);c.url=C+(C===c.url?(gn.test(c.url)?"&":"?")+"_="+N:"")}}(c.data&&c.hasContent&&c.contentType!==!1||n.contentType)&&x.setRequestHeader("Content-Type",c.contentType),c.ifModified&&(r=r||c.url,v.lastModified[r]&&x.setRequestHeader("If-Modified-Since",v.lastModified[r]),v.etag[r]&&x.setRequestHeader("If-None-Match",v.etag[r])),x.setRequestHeader("Accept",c.dataTypes[0]&&c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+(c.dataTypes[0]!=="*"?", "+Tn+"; q=0.01":""):c.accepts["*"]);for(l in c.headers)x.setRequestHeader(l,c.headers[l]);if(!c.beforeSend||c.beforeSend.call(h,x,c)!==!1&&E!==2){S="abort";for(l in{success:1,error:1,complete:1})x[l](c[l]);o=kn(xn,c,n,x);if(!o)T(-1,"No Transport");else{x.readyState=1,f&&p.trigger("ajaxSend",[x,c]),c.async&&c.timeout>0&&(u=setTimeout(function(){x.abort("timeout")},c.timeout));try{E=1,o.send(b,T)}catch(k){if(!(E<2))throw k;T(-1,k)}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var Mn=[],_n=/\?/,Dn=/(=)\?(?=&|$)|\?\?/,Pn=v.now();v.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Mn.pop()||v.expando+"_"+Pn++;return this[e]=!0,e}}),v.ajaxPrefilter("json jsonp",function(n,r,i){var s,o,u,a=n.data,f=n.url,l=n.jsonp!==!1,c=l&&Dn.test(f),h=l&&!c&&typeof a=="string"&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Dn.test(a);if(n.dataTypes[0]==="jsonp"||c||h)return s=n.jsonpCallback=v.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,o=e[s],c?n.url=f.replace(Dn,"$1"+s):h?n.data=a.replace(Dn,"$1"+s):l&&(n.url+=(_n.test(f)?"&":"?")+n.jsonp+"="+s),n.converters["script json"]=function(){return u||v.error(s+" was not called"),u[0]},n.dataTypes[0]="json",e[s]=function(){u=arguments},i.always(function(){e[s]=o,n[s]&&(n.jsonpCallback=r.jsonpCallback,Mn.push(s)),u&&v.isFunction(o)&&o(u[0]),u=o=t}),"script"}),v.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){return v.globalEval(e),e}}}),v.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),v.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=i.head||i.getElementsByTagName("head")[0]||i.documentElement;return{send:function(s,o){n=i.createElement("script"),n.async="async",e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,i){if(i||!n.readyState||/loaded|complete/.test(n.readyState))n.onload=n.onreadystatechange=null,r&&n.parentNode&&r.removeChild(n),n=t,i||o(200,"success")},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(0,1)}}}});var Hn,Bn=e.ActiveXObject?function(){for(var e in Hn)Hn[e](0,1)}:!1,jn=0;v.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&Fn()||In()}:Fn,function(e){v.extend(v.support,{ajax:!!e,cors:!!e&&"withCredentials"in e})}(v.ajaxSettings.xhr()),v.support.ajax&&v.ajaxTransport(function(n){if(!n.crossDomain||v.support.cors){var r;return{send:function(i,s){var o,u,a=n.xhr();n.username?a.open(n.type,n.url,n.async,n.username,n.password):a.open(n.type,n.url,n.async);if(n.xhrFields)for(u in n.xhrFields)a[u]=n.xhrFields[u];n.mimeType&&a.overrideMimeType&&a.overrideMimeType(n.mimeType),!n.crossDomain&&!i["X-Requested-With"]&&(i["X-Requested-With"]="XMLHttpRequest");try{for(u in i)a.setRequestHeader(u,i[u])}catch(f){}a.send(n.hasContent&&n.data||null),r=function(e,i){var u,f,l,c,h;try{if(r&&(i||a.readyState===4)){r=t,o&&(a.onreadystatechange=v.noop,Bn&&delete Hn[o]);if(i)a.readyState!==4&&a.abort();else{u=a.status,l=a.getAllResponseHeaders(),c={},h=a.responseXML,h&&h.documentElement&&(c.xml=h);try{c.text=a.responseText}catch(p){}try{f=a.statusText}catch(p){f=""}!u&&n.isLocal&&!n.crossDomain?u=c.text?200:404:u===1223&&(u=204)}}}catch(d){i||s(-1,d)}c&&s(u,f,c,l)},n.async?a.readyState===4?setTimeout(r,0):(o=++jn,Bn&&(Hn||(Hn={},v(e).unload(Bn)),Hn[o]=r),a.onreadystatechange=r):r()},abort:function(){r&&r(0,1)}}}});var qn,Rn,Un=/^(?:toggle|show|hide)$/,zn=new RegExp("^(?:([-+])=|)("+m+")([a-z%]*)$","i"),Wn=/queueHooks$/,Xn=[Gn],Vn={"*":[function(e,t){var n,r,i=this.createTween(e,t),s=zn.exec(t),o=i.cur(),u=+o||0,a=1,f=20;if(s){n=+s[2],r=s[3]||(v.cssNumber[e]?"":"px");if(r!=="px"&&u){u=v.css(i.elem,e,!0)||n||1;do a=a||".5",u/=a,v.style(i.elem,e,u+r);while(a!==(a=i.cur()/o)&&a!==1&&--f)}i.unit=r,i.start=u,i.end=s[1]?u+(s[1]+1)*n:n}return i}]};v.Animation=v.extend(Kn,{tweener:function(e,t){v.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;r<i;r++)n=e[r],Vn[n]=Vn[n]||[],Vn[n].unshift(t)},prefilter:function(e,t){t?Xn.unshift(e):Xn.push(e)}}),v.Tween=Yn,Yn.prototype={constructor:Yn,init:function(e,t,n,r,i,s){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=s||(v.cssNumber[n]?"":"px")},cur:function(){var e=Yn.propHooks[this.prop];return e&&e.get?e.get(this):Yn.propHooks._default.get(this)},run:function(e){var t,n=Yn.propHooks[this.prop];return this.options.duration?this.pos=t=v.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Yn.propHooks._default.set(this),this}},Yn.prototype.init.prototype=Yn.prototype,Yn.propHooks={_default:{get:function(e){var t;return e.elem[e.prop]==null||!!e.elem.style&&e.elem.style[e.prop]!=null?(t=v.css(e.elem,e.prop,!1,""),!t||t==="auto"?0:t):e.elem[e.prop]},set:function(e){v.fx.step[e.prop]?v.fx.step[e.prop](e):e.elem.style&&(e.elem.style[v.cssProps[e.prop]]!=null||v.cssHooks[e.prop])?v.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},Yn.propHooks.scrollTop=Yn.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},v.each(["toggle","show","hide"],function(e,t){var n=v.fn[t];v.fn[t]=function(r,i,s){return r==null||typeof r=="boolean"||!e&&v.isFunction(r)&&v.isFunction(i)?n.apply(this,arguments):this.animate(Zn(t,!0),r,i,s)}}),v.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Gt).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=v.isEmptyObject(e),s=v.speed(t,n,r),o=function(){var t=Kn(this,v.extend({},e),s);i&&t.stop(!0)};return i||s.queue===!1?this.each(o):this.queue(s.queue,o)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return typeof e!="string"&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=e!=null&&e+"queueHooks",s=v.timers,o=v._data(this);if(n)o[n]&&o[n].stop&&i(o[n]);else for(n in o)o[n]&&o[n].stop&&Wn.test(n)&&i(o[n]);for(n=s.length;n--;)s[n].elem===this&&(e==null||s[n].queue===e)&&(s[n].anim.stop(r),t=!1,s.splice(n,1));(t||!r)&&v.dequeue(this,e)})}}),v.each({slideDown:Zn("show"),slideUp:Zn("hide"),slideToggle:Zn("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){v.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),v.speed=function(e,t,n){var r=e&&typeof e=="object"?v.extend({},e):{complete:n||!n&&t||v.isFunction(e)&&e,duration:e,easing:n&&t||t&&!v.isFunction(t)&&t};r.duration=v.fx.off?0:typeof r.duration=="number"?r.duration:r.duration in v.fx.speeds?v.fx.speeds[r.duration]:v.fx.speeds._default;if(r.queue==null||r.queue===!0)r.queue="fx";return r.old=r.complete,r.complete=function(){v.isFunction(r.old)&&r.old.call(this),r.queue&&v.dequeue(this,r.queue)},r},v.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},v.timers=[],v.fx=Yn.prototype.init,v.fx.tick=function(){var e,n=v.timers,r=0;qn=v.now();for(;r<n.length;r++)e=n[r],!e()&&n[r]===e&&n.splice(r--,1);n.length||v.fx.stop(),qn=t},v.fx.timer=function(e){e()&&v.timers.push(e)&&!Rn&&(Rn=setInterval(v.fx.tick,v.fx.interval))},v.fx.interval=13,v.fx.stop=function(){clearInterval(Rn),Rn=null},v.fx.speeds={slow:600,fast:200,_default:400},v.fx.step={},v.expr&&v.expr.filters&&(v.expr.filters.animated=function(e){return v.grep(v.timers,function(t){return e===t.elem}).length});var er=/^(?:body|html)$/i;v.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){v.offset.setOffset(this,e,t)});var n,r,i,s,o,u,a,f={top:0,left:0},l=this[0],c=l&&l.ownerDocument;if(!c)return;return(r=c.body)===l?v.offset.bodyOffset(l):(n=c.documentElement,v.contains(n,l)?(typeof l.getBoundingClientRect!="undefined"&&(f=l.getBoundingClientRect()),i=tr(c),s=n.clientTop||r.clientTop||0,o=n.clientLeft||r.clientLeft||0,u=i.pageYOffset||n.scrollTop,a=i.pageXOffset||n.scrollLeft,{top:f.top+u-s,left:f.left+a-o}):f)},v.offset={bodyOffset:function(e){var t=e.offsetTop,n=e.offsetLeft;return v.support.doesNotIncludeMarginInBodyOffset&&(t+=parseFloat(v.css(e,"marginTop"))||0,n+=parseFloat(v.css(e,"marginLeft"))||0),{top:t,left:n}},setOffset:function(e,t,n){var r=v.css(e,"position");r==="static"&&(e.style.position="relative");var i=v(e),s=i.offset(),o=v.css(e,"top"),u=v.css(e,"left"),a=(r==="absolute"||r==="fixed")&&v.inArray("auto",[o,u])>-1,f={},l={},c,h;a?(l=i.position(),c=l.top,h=l.left):(c=parseFloat(o)||0,h=parseFloat(u)||0),v.isFunction(t)&&(t=t.call(e,n,s)),t.top!=null&&(f.top=t.top-s.top+c),t.left!=null&&(f.left=t.left-s.left+h),"using"in t?t.using.call(e,f):i.css(f)}},v.fn.extend({position:function(){if(!this[0])return;var e=this[0],t=this.offsetParent(),n=this.offset(),r=er.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(v.css(e,"marginTop"))||0,n.left-=parseFloat(v.css(e,"marginLeft"))||0,r.top+=parseFloat(v.css(t[0],"borderTopWidth"))||0,r.left+=parseFloat(v.css(t[0],"borderLeftWidth"))||0,{top:n.top-r.top,left:n.left-r.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||i.body;while(e&&!er.test(e.nodeName)&&v.css(e,"position")==="static")e=e.offsetParent;return e||i.body})}}),v.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);v.fn[e]=function(i){return v.access(this,function(e,i,s){var o=tr(e);if(s===t)return o?n in o?o[n]:o.document.documentElement[i]:e[i];o?o.scrollTo(r?v(o).scrollLeft():s,r?s:v(o).scrollTop()):e[i]=s},e,i,arguments.length,null)}}),v.each({Height:"height",Width:"width"},function(e,n){v.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){v.fn[i]=function(i,s){var o=arguments.length&&(r||typeof i!="boolean"),u=r||(i===!0||s===!0?"margin":"border");return v.access(this,function(n,r,i){var s;return v.isWindow(n)?n.document.documentElement["client"+e]:n.nodeType===9?(s=n.documentElement,Math.max(n.body["scroll"+e],s["scroll"+e],n.body["offset"+e],s["offset"+e],s["client"+e])):i===t?v.css(n,r,i,u):v.style(n,r,i,u)},n,o?i:t,o,null)}})}),e.jQuery=e.$=v,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return v})})(window);
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/jquerybbq/jquery.bbq.min.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/jquerybbq/jquery.bbq.min.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/jquerybbq/jquery.bbq.min.js	(revision 29468)
@@ -0,0 +1,18 @@
+﻿/*
+ * jQuery BBQ: Back Button & Query Library - v1.2.1 - 2/17/2010
+ * http://benalman.com/projects/jquery-bbq-plugin/
+ * 
+ * Copyright (c) 2010 "Cowboy" Ben Alman
+ * Dual licensed under the MIT and GPL licenses.
+ * http://benalman.com/about/license/
+ */
+(function($,p){var i,m=Array.prototype.slice,r=decodeURIComponent,a=$.param,c,l,v,b=$.bbq=$.bbq||{},q,u,j,e=$.event.special,d="hashchange",A="querystring",D="fragment",y="elemUrlAttr",g="location",k="href",t="src",x=/^.*\?|#.*$/g,w=/^.*\#/,h,C={};function E(F){return typeof F==="string"}function B(G){var F=m.call(arguments,1);return function(){return G.apply(this,F.concat(m.call(arguments)))}}function n(F){return F.replace(/^[^#]*#?(.*)$/,"$1")}function o(F){return F.replace(/(?:^[^?#]*\?([^#]*).*$)?.*/,"$1")}function f(H,M,F,I,G){var O,L,K,N,J;if(I!==i){K=F.match(H?/^([^#]*)\#?(.*)$/:/^([^#?]*)\??([^#]*)(#?.*)/);J=K[3]||"";if(G===2&&E(I)){L=I.replace(H?w:x,"")}else{N=l(K[2]);I=E(I)?l[H?D:A](I):I;L=G===2?I:G===1?$.extend({},I,N):$.extend({},N,I);L=a(L);if(H){L=L.replace(h,r)}}O=K[1]+(H?"#":L||!K[1]?"?":"")+L+J}else{O=M(F!==i?F:p[g][k])}return O}a[A]=B(f,0,o);a[D]=c=B(f,1,n);c.noEscape=function(G){G=G||"";var F=$.map(G.split(""),encodeURIComponent);h=new RegExp(F.join("|"),"g")};c.noEscape(",/");$.deparam=l=function(I,F){var H={},G={"true":!0,"false":!1,"null":null};$.each(I.replace(/\+/g," ").split("&"),function(L,Q){var K=Q.split("="),P=r(K[0]),J,O=H,M=0,R=P.split("]["),N=R.length-1;if(/\[/.test(R[0])&&/\]$/.test(R[N])){R[N]=R[N].replace(/\]$/,"");R=R.shift().split("[").concat(R);N=R.length-1}else{N=0}if(K.length===2){J=r(K[1]);if(F){J=J&&!isNaN(J)?+J:J==="undefined"?i:G[J]!==i?G[J]:J}if(N){for(;M<=N;M++){P=R[M]===""?O.length:R[M];O=O[P]=M<N?O[P]||(R[M+1]&&isNaN(R[M+1])?{}:[]):J}}else{if($.isArray(H[P])){H[P].push(J)}else{if(H[P]!==i){H[P]=[H[P],J]}else{H[P]=J}}}}else{if(P){H[P]=F?i:""}}});return H};function z(H,F,G){if(F===i||typeof F==="boolean"){G=F;F=a[H?D:A]()}else{F=E(F)?F.replace(H?w:x,""):F}return l(F,G)}l[A]=B(z,0);l[D]=v=B(z,1);$[y]||($[y]=function(F){return $.extend(C,F)})({a:k,base:k,iframe:t,img:t,input:t,form:"action",link:k,script:t});j=$[y];function s(I,G,H,F){if(!E(H)&&typeof H!=="object"){F=H;H=G;G=i}return this.each(function(){var L=$(this),J=G||j()[(this.nodeName||"").toLowerCase()]||"",K=J&&L.attr(J)||"";L.attr(J,a[I](K,H,F))})}$.fn[A]=B(s,A);$.fn[D]=B(s,D);b.pushState=q=function(I,F){if(E(I)&&/^#/.test(I)&&F===i){F=2}var H=I!==i,G=c(p[g][k],H?I:{},H?F:2);p[g][k]=G+(/#/.test(G)?"":"#")};b.getState=u=function(F,G){return F===i||typeof F==="boolean"?v(F):v(G)[F]};b.removeState=function(F){var G={};if(F!==i){G=u();$.each($.isArray(F)?F:arguments,function(I,H){delete G[H]})}q(G,2)};e[d]=$.extend(e[d],{add:function(F){var H;function G(J){var I=J[D]=c();J.getState=function(K,L){return K===i||typeof K==="boolean"?l(I,K):l(I,L)[K]};H.apply(this,arguments)}if($.isFunction(F)){H=F;return G}else{H=F.handler;F.handler=G}}})})(jQuery,this);
+/*
+ * jQuery hashchange event - v1.2 - 2/11/2010
+ * http://benalman.com/projects/jquery-hashchange-plugin/
+ * 
+ * Copyright (c) 2010 "Cowboy" Ben Alman
+ * Dual licensed under the MIT and GPL licenses.
+ * http://benalman.com/about/license/
+ */
+(function($,i,b){var j,k=$.event.special,c="location",d="hashchange",l="href",f=$.browser,g=document.documentMode,h=f.msie&&(g===b||g<8),e="on"+d in i&&!h;function a(m){m=m||i[c][l];return m.replace(/^[^#]*#?(.*)$/,"$1")}$[d+"Delay"]=100;k[d]=$.extend(k[d],{setup:function(){if(e){return false}$(j.start)},teardown:function(){if(e){return false}$(j.stop)}});j=(function(){var m={},r,n,o,q;function p(){o=q=function(s){return s};if(h){n=$('<iframe src="javascript:0"/>').hide().insertAfter("body")[0].contentWindow;q=function(){return a(n.document[c][l])};o=function(u,s){if(u!==s){var t=n.document;t.open().close();t[c].hash="#"+u}};o(a())}}m.start=function(){if(r){return}var t=a();o||p();(function s(){var v=a(),u=q(t);if(v!==t){o(t=v,u);$(i).trigger(d)}else{if(u!==t){i[c][l]=i[c][l].replace(/#.*/,"")+"#"+u}}r=setTimeout(s,$[d+"Delay"])})()};m.stop=function(){if(!n){r&&clearTimeout(r);r=0}};return m})()})(jQuery,this);
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/js-hotkeys/README.md
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/js-hotkeys/README.md	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/js-hotkeys/README.md	(revision 29468)
@@ -0,0 +1,45 @@
+#About
+**jQuery Hotkeys** is a plug-in that lets you easily add and remove handlers for keyboard events anywhere in your code supporting almost any key combination.  
+
+This plugin is based off of the plugin by Tzury Bar Yochay: [jQuery.hotkeys](http://github.com/tzuryby/hotkeys)
+
+The syntax is as follows:
+
+    $(expression).bind(types, keys, handler);
+    $(expression).unbind(types, handler);
+    
+    $(document).bind('keydown', 'ctrl+a', fn);
+    
+    // e.g. replace '$' sign with 'EUR'
+    $('input.foo').bind('keyup', '$', function(){
+      this.value = this.value.replace('$', 'EUR');
+    });
+
+## Types
+Supported types are `'keydown'`, `'keyup'` and `'keypress'`
+
+## Notes
+
+If you want to use more than one modifiers (e.g. alt+ctrl+z) you should define them by an alphabetical order e.g. alt+ctrl+shift
+
+Hotkeys aren't tracked if you're inside of an input element (unless you explicitly bind the hotkey directly to the input). This helps to avoid conflict with normal user typing.
+
+## jQuery Compatibility
+
+Works with jQuery 1.4.2 and newer.
+
+It known to be working with all the major browsers on all available platforms (Win/Mac/Linux)
+
+ * IE 6/7/8
+ * FF 1.5/2/3
+ * Opera-9
+ * Safari-3
+ * Chrome-0.2
+
+### Addendum
+
+Firefox is the most liberal one in the manner of letting you capture all short-cuts even those that are built-in in the browser such as `Ctrl-t` for new tab, or `Ctrl-a` for selecting all text. You can always bubble them up to the browser by returning `true` in your handler.
+
+Others, (IE) either let you handle built-in short-cuts, but will add their functionality after your code has executed. Or (Opera/Safari) will *not* pass those events to the DOM at all.
+
+*So, if you bind `Ctrl-Q` or `Alt-F4` and your Safari/Opera window is closed don't be surprised.*
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/js-hotkeys/jquery.hotkeys.min.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/js-hotkeys/jquery.hotkeys.min.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/js-hotkeys/jquery.hotkeys.min.js	(revision 29468)
@@ -0,0 +1,15 @@
+﻿/*
+ * jQuery Hotkeys Plugin
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ *
+ * http://github.com/jeresig/jquery.hotkeys
+ *
+ * Based upon the plugin by Tzury Bar Yochay:
+ * http://github.com/tzuryby/hotkeys
+ *
+ * Original idea by:
+ * Binny V A, http://www.openjs.com/scripts/events/keyboard_shortcuts/
+*/
+
+(function(b){b.hotkeys={version:"0.8",specialKeys:{8:"backspace",9:"tab",13:"return",16:"shift",17:"ctrl",18:"alt",19:"pause",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"insert",46:"del",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9",106:"*",107:"+",109:"-",110:".",111:"/",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12",144:"numlock",145:"scroll",191:"/",224:"meta",219:"[",221:"]"},shiftNums:{"`":"~","1":"!","2":"@","3":"#","4":"$","5":"%","6":"^","7":"&","8":"*","9":"(","0":")","-":"_","=":"+",";":": ","'":'"',",":"<",".":">","/":"?","\\":"|"}};function a(d){if(typeof d.data!=="string"){return}var c=d.handler,e=d.data.toLowerCase().split(" ");d.handler=function(n){if(this!==n.target&&(/textarea|select/i.test(n.target.nodeName)||n.target.type==="text")){return}var h=n.type!=="keypress"&&b.hotkeys.specialKeys[n.which],o=String.fromCharCode(n.which).toLowerCase(),k,m="",g={};if(n.altKey&&h!=="alt"){m+="alt+"}if(n.ctrlKey&&h!=="ctrl"){m+="ctrl+"}if(n.metaKey&&!n.ctrlKey&&h!=="meta"){m+="meta+"}if(n.shiftKey&&h!=="shift"){m+="shift+"}if(h){g[m+h]=true}else{g[m+o]=true;g[m+b.hotkeys.shiftNums[o]]=true;if(m==="shift+"){g[b.hotkeys.shiftNums[o]]=true}}for(var j=0,f=e.length;j<f;j++){if(g[e[j]]){return c.apply(this,arguments)}}}}b.each(["keydown","keyup","keypress"],function(){b.event.special[this]={add:a}})})(jQuery);
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/mousewheel.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/mousewheel.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/mousewheel.js	(revision 29468)
@@ -0,0 +1,84 @@
+/*! Copyright (c) 2011 Brandon Aaron (http://brandonaaron.net)
+ * Licensed under the MIT License (LICENSE.txt).
+ *
+ * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
+ * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
+ * Thanks to: Seamus Leahy for adding deltaX and deltaY
+ *
+ * Version: 3.0.6
+ * 
+ * Requires: 1.2.2+
+ */
+
+(function($) {
+
+var types = ['DOMMouseScroll', 'mousewheel'];
+
+if ($.event.fixHooks) {
+    for ( var i=types.length; i; ) {
+        $.event.fixHooks[ types[--i] ] = $.event.mouseHooks;
+    }
+}
+
+$.event.special.mousewheel = {
+    setup: function() {
+        if ( this.addEventListener ) {
+            for ( var i=types.length; i; ) {
+                this.addEventListener( types[--i], handler, false );
+            }
+        } else {
+            this.onmousewheel = handler;
+        }
+    },
+    
+    teardown: function() {
+        if ( this.removeEventListener ) {
+            for ( var i=types.length; i; ) {
+                this.removeEventListener( types[--i], handler, false );
+            }
+        } else {
+            this.onmousewheel = null;
+        }
+    }
+};
+
+$.fn.extend({
+    mousewheel: function(fn) {
+        return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel");
+    },
+    
+    unmousewheel: function(fn) {
+        return this.unbind("mousewheel", fn);
+    }
+});
+
+
+function handler(event) {
+    var orgEvent = event || window.event, args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true, deltaX = 0, deltaY = 0;
+    event = $.event.fix(orgEvent);
+    event.type = "mousewheel";
+    
+    // Old school scrollwheel delta
+    if ( orgEvent.wheelDelta ) { delta = orgEvent.wheelDelta/120; }
+    if ( orgEvent.detail     ) { delta = -orgEvent.detail/3; }
+    
+    // New school multidimensional scroll (touchpads) deltas
+    deltaY = delta;
+    
+    // Gecko
+    if ( orgEvent.axis !== undefined && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {
+        deltaY = 0;
+        deltaX = -1*delta;
+    }
+    
+    // Webkit
+    if ( orgEvent.wheelDeltaY !== undefined ) { deltaY = orgEvent.wheelDeltaY/120; }
+    if ( orgEvent.wheelDeltaX !== undefined ) { deltaX = -1*orgEvent.wheelDeltaX/120; }
+    
+    // Add event and delta to the front of the arguments
+    args.unshift(event, delta, deltaX, deltaY);
+    
+    return ($.event.dispatch || $.event.handle).apply(this, args);
+}
+
+})(jQuery);
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/requestanimationframe.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/requestanimationframe.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/requestanimationframe.js	(revision 29468)
@@ -0,0 +1,24 @@
+(function() {
+    var lastTime = 0;
+    var vendors = ['ms', 'moz', 'webkit', 'o'];
+    for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
+        window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame'];
+        window.cancelAnimationFrame = 
+          window[vendors[x]+'CancelAnimationFrame'] || window[vendors[x]+'CancelRequestAnimationFrame'];
+    }
+ 
+    if (!window.requestAnimationFrame)
+        window.requestAnimationFrame = function(callback, element) {
+            var currTime = new Date().getTime();
+            var timeToCall = Math.max(0, 16 - (currTime - lastTime));
+            var id = window.setTimeout(function() { callback(currTime + timeToCall); }, 
+              timeToCall);
+            lastTime = currTime + timeToCall;
+            return id;
+        };
+ 
+    if (!window.cancelAnimationFrame)
+        window.cancelAnimationFrame = function(id) {
+            clearTimeout(id);
+        };
+}());
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/taphold.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/taphold.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/taphold.js	(revision 29468)
@@ -0,0 +1,136 @@
+/**
+ *  Copyright (c) 2011 Zauber S.A. <http://www.zaubersoftware.com/>
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ * 
+ *  @author Guido Marucci Blas - guido@zaubersoftware.com
+ *  @description Adds a handler for a custom event 'taphold' that handles a
+ *  tap and hold on touch interfaces.
+ */
+(function($) {
+    var TAP_AND_HOLD_TRIGGER_TIMER = 1000;
+    var MAX_DISTANCE_ALLOWED_IN_TAP_AND_HOLD_EVENT = 5;
+    var TOUCHSTART = "touchstart";
+    var TOUCHEND = "touchend";
+    var TOUCHMOVE = "touchmove";
+
+    // For debugging only
+    // var TOUCHSTART = "mousedown";
+    // var TOUCHEND = "mouseup";
+    // var TOUCHMOVE = "mousemove";
+
+    var tapAndHoldTimer = null;
+
+    function calculateEuclideanDistance(x1, y1, x2, y2) {
+        var diffX = (x2 - x1);
+        var diffY = (y2 - y1);
+        return Math.sqrt((diffX * diffX) + (diffY * diffY));
+    };
+
+    function onTouchStart(event) {
+        var e = event.originalEvent;
+
+        // Only start detector if and only if one finger is over the widget
+        if (!e.touches || (e.targetTouches.length === 1 && e.touches.length === 1)) {
+            startTapAndHoldDetector.call(this, event)
+            var element = $(this);
+            element.bind(TOUCHMOVE, onTouchMove);
+            element.bind(TOUCHEND, onTouchEnd); 
+        } else {
+            stopTapAndHoldDetector.call(this);
+        }   
+    };
+
+    function onTouchMove(event) {
+        if (tapAndHoldTimer == null) {
+            return;
+        }
+
+        var e = event.originalEvent;
+        var x = (e.changedTouches) ? e.changedTouches[0].pageX: e.pageX;
+        var y = (e.changedTouches) ? e.changedTouches[0].pageY: e.pageY;
+        
+        var tapAndHoldPoint = $(this).data("taphold.point");
+        var euclideanDistance = calculateEuclideanDistance(tapAndHoldPoint.x, tapAndHoldPoint.y, x, y);
+                
+        if (euclideanDistance > MAX_DISTANCE_ALLOWED_IN_TAP_AND_HOLD_EVENT) {
+            stopTapAndHoldDetector.call(this);
+        }
+    };
+
+    function onTouchEnd(event) {
+        stopTapAndHoldDetector.call(this);
+    };
+
+    function onTapAndHold(event) {
+        clear.call(this);
+        $(this).data("taphold.handler").call(this, event);
+    };
+
+    function clear() {
+        tapAndHoldTimer = null;
+        $(this).unbind(TOUCHMOVE, onTouchMove);
+        $(this).unbind(TOUCHEND, onTouchEnd);   
+    };
+
+    function startTapAndHoldDetector(event) {
+        if (tapAndHoldTimer != null) {
+            return;
+        }
+        var self = this;
+        tapAndHoldTimer = setTimeout(function(){
+            onTapAndHold.call(self, event)
+        }, TAP_AND_HOLD_TRIGGER_TIMER);
+
+        // Stores tap x & y
+        var e = event.originalEvent;
+        var tapAndHoldPoint = {};
+        tapAndHoldPoint.x = (e.changedTouches) ? e.changedTouches[0].pageX: e.pageX;
+        tapAndHoldPoint.y = (e.changedTouches) ? e.changedTouches[0].pageY: e.pageY;
+        $(this).data("taphold.point", tapAndHoldPoint);
+    };
+
+    function stopTapAndHoldDetector() {
+        clearTimeout(tapAndHoldTimer);
+        clear.call(this);   
+    };
+
+    $.event.special["taphold"] = {
+        setup: function() {
+            
+        },
+
+        add: function(handleObj) {
+            $(this).data("taphold.handler", handleObj.handler);
+            if (handleObj.data) {
+                $(this).bind(TOUCHSTART, handleObj.data, onTouchStart);
+            } else {
+                $(this).bind(TOUCHSTART, onTouchStart);
+            }
+        },
+
+        remove: function(handleObj) {
+            stopTapAndHoldDetector.call(this);
+            if (handleObj.data) {
+                $(this).unbind(TOUCHSTART, handleObj.data, onTouchStart);
+            } else {
+                $(this).unbind(TOUCHSTART, onTouchStart);
+            }
+        },
+
+        teardown: function() {
+            
+        }
+    };
+
+})(jQuery);
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/touch.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/touch.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/lib/touch.js	(revision 29468)
@@ -0,0 +1,28 @@
+function touchHandler(event)
+{   
+    
+    var touches = event.changedTouches,
+        first = touches[0],
+        type = "";
+         switch(event.type)
+    {
+        case "touchstart": type="mousedown"; break;
+        case "touchmove":  type="mousemove"; break;        
+        case "touchend":   type="mouseup"; break;
+        default: return;
+    }
+
+             //initMouseEvent(type, canBubble, cancelable, view, clickCount, 
+    //           screenX, screenY, clientX, clientY, ctrlKey, 
+    //           altKey, shiftKey, metaKey, button, relatedTarget);
+    
+    var simulatedEvent = document.createEvent("MouseEvent");
+    simulatedEvent.initMouseEvent(type, true, true, window, 1, 
+                              first.screenX, first.screenY, 
+                              first.clientX, first.clientY, false, 
+                              false, false, false, 0/*left*/, null);
+    if(touches.length < 2) {
+      first.target.dispatchEvent(simulatedEvent);
+      event.preventDefault();
+    }
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/method-draw.compiled.css
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/method-draw.compiled.css	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/method-draw.compiled.css	(revision 29468)
@@ -0,0 +1,417 @@
+#svg_editor .jPicker .Icon{display:inline-block;height:24px;position:relative;text-align:left;width:25px}
+#svg_editor .jPicker .Icon span.Color,#svg_editor .jPicker .Icon span.Alpha{background-position:2px 2px;display:block;height:100%;left:0;position:absolute;top:0;width:100%}
+#svg_editor .jPicker .Icon span.Image{background-repeat:no-repeat;cursor:pointer;display:block;height:100%;left:0;position:absolute;top:0;width:100%}
+#svg_editor .jPicker.Container{z-index:10}
+table#svg_editor .jPicker{width:545px;z-index:20}
+#svg_editor .jPicker .Move{background-color:#ddd;border-color:#fff #666 #666 #fff;border-style:solid;border-width:1px;cursor:move;height:12px;padding:0}
+#svg_editor .jPicker .Title{display:none}
+#svg_editor .jPicker div.Map{border:solid #000 1px;cursor:crosshair;height:260px;margin:0;overflow:hidden;padding:0;position:relative;width:260px}
+#svg_editor .jPicker div[class="Map"]{height:256px;width:256px}
+#svg_editor .jPicker div.Bar{border:solid #000 1px;cursor:n-resize;height:260px;margin:0 15px;overflow:hidden;padding:0;position:relative;width:24px}
+#svg_editor .jPicker div[class="Bar"]{height:256px;width:20px}
+#svg_editor .jPicker .Map .Map1,#svg_editor .jPicker .Map .Map2,#svg_editor .jPicker .Map .Map3,#svg_editor .jPicker .Bar .Map1,#svg_editor .jPicker .Bar .Map2,#svg_editor .jPicker .Bar .Map3,#svg_editor .jPicker .Bar .Map4,#svg_editor .jPicker .Bar .Map5,#svg_editor .jPicker .Bar .Map6{background-color:transparent;background-image:none;display:block;left:0;position:absolute;top:0}
+#svg_editor .jPicker .Map .Map1,#svg_editor .jPicker .Map .Map2,#svg_editor .jPicker .Map .Map3{height:2596px;width:256px}
+#svg_editor .jPicker .Bar .Map1,#svg_editor .jPicker .Bar .Map2,#svg_editor .jPicker .Bar .Map3,#svg_editor .jPicker .Bar .Map4{height:3896px;width:20px}
+#svg_editor .jPicker .Bar .Map5,#svg_editor .jPicker .Bar .Map6{height:256px;width:20px}
+#svg_editor .jPicker .Map .Map1,#svg_editor .jPicker .Map .Map2,#svg_editor .jPicker .Bar .Map6{background-repeat:no-repeat}
+#svg_editor .jPicker .Map .Map3,#svg_editor .jPicker .Bar .Map5{background-repeat:repeat}
+#svg_editor .jPicker .Bar .Map1,#svg_editor .jPicker .Bar .Map2,#svg_editor .jPicker .Bar .Map3,#svg_editor .jPicker .Bar .Map4{background-repeat:repeat-x}
+#svg_editor .jPicker .Map .Arrow{display:block;position:absolute}
+#svg_editor .jPicker .Bar .Arrow{display:block;left:0;position:absolute}
+#svg_editor .jPicker .Preview{font-size:9px;text-align:center}
+#svg_editor .jPicker .Preview div.bgt{height:62px;margin:0 auto;padding:0;width:62px}
+#svg_editor .jPicker .Preview div span{border:1px solid #000;display:block;height:30px;margin:0 auto;padding:0;width:60px}
+#svg_editor .jPicker .Preview .Active{border-bottom-width:0}
+#svg_editor .jPicker .Preview .Current{border-top-width:0;cursor:pointer}
+#svg_editor .jPicker .Button{text-align:center;width:115px}
+#svg_editor .jPicker .Button input{width:100px}
+#svg_editor .jPicker td.Radio{margin:0;padding:0;width:31px}
+#svg_editor .jPicker td.Radio input{margin:0 5px 0 0;padding:0}
+#svg_editor .jPicker td.Text{font-size:12px!important;height:22px;margin:0;padding:0;text-align:left;width:70px}
+#svg_editor .jPicker tr.Hex td.Text{width:100px;color:#666}
+#svg_editor .jPicker tr.Hex td.Text span{width:100px;color:#333}
+#svg_editor .jPicker td.Text input{background-color:#fff;border:1px inset #aaa;height:15px;margin:0 0 0 5px;text-align:left;width:30px;color:#333}
+#svg_editor #color_picker .jPicker tr.Hex td.Text input.Hex{width:50px;display:inline-block;float:none}
+#svg_editor .jPicker tr.Hex td.Text input.AHex{width:20px;display:none}
+#svg_editor .jPicker .Grid{text-align:center;float:right;width:108px}
+#svg_editor .jPicker .Grid span.QuickColor{cursor:pointer;display:inline-block;height:15px;line-height:15px;margin:0;padding:0;width:18px}
+#svg_editor .jPicker td{vertical-align:top}
+#svg_editor .jPicker td.colorsquare{width:275px}
+#svg_editor .jPicker .prev_div{margin-top:-15px}
+#svg_editor .jPicker .actions{position:absolute;bottom:20px;left:20px;right:20px}
+#svg_editor .jPicker .actions .Ok{position:absolute;top:0;right:0}
+#svg_editor .jPicker .actions .Cancel{position:absolute;top:0;left:0}
+#svg_editor .jPicker .color_preview{width:62px;margin:0 auto}
+h2.jGraduate_Title{display:none}
+.jGraduate_Picker{position:absolute;padding:20px}
+.jGraduate_tabs li{display:inline-block;padding:5px 10px;margin-right:5px;cursor:pointer}
+li.jGraduate_tab_current{background:#fff;border-radius:3px 3px 0 0}
+.jGraduate_colPick{display:none}
+.jGraduate_gradPick{display:none;overflow:visible}
+.jGraduate_tabs{position:relative;background-color:#ddd;padding:10px 10px 0 10px;margin:-20px -20px 20px -20px;border-radius:3px 3px 0 0}
+div.jGraduate_Swatch{float:left;margin:0 15px 0 0}
+div.jGraduate_GradContainer{border:solid #000 1px;background-image:url(../images/map-opacity.png);background-position:0 0;height:256px;width:256px;position:relative}
+div.jGraduate_GradContainer div.grad_coord{background:rgba(0,0,0,0.8);border:2px solid white;border-radius:15px;-moz-border-radius:5px;width:14px;height:14px;position:absolute;margin:-7px -7px;top:0;left:0;text-align:center;font-size:8px;line-height:14px;color:white;text-decoration:none;cursor:pointer;-moz-user-select:none;-webkit-user-select:none}
+.jGraduate_AlphaArrows{position:absolute;margin-top:-10px;margin-left:250.5px}
+div.jGraduate_Opacity{border:2px inset #eee;margin-top:14px;background-color:black;background-image:url(../images/Maps.png);background-position:0 -2816px;height:20px;cursor:ew-resize}
+div.jGraduate_StopSlider{margin:-10px 0 0 -10px;width:276px;overflow:visible;background:white;height:45px;cursor:pointer}
+div.jGraduate_StopSection{width:120px;float:left}
+div.jGraduate_StopSection.jGraduate_SpreadMethod{display:none}
+input.jGraduate_Ok,input.jGraduate_Cancel{display:block;width:100px}
+input.jGraduate_Ok{margin:0 0 5px 0}
+.colorBox{float:left;height:16px;width:16px;border:1px solid #808080;cursor:pointer;margin:4px 4px 4px 30px}
+.colorBox+label{float:left;margin-top:7px}
+label.jGraduate_Form_Heading{color:#333;padding:2px;font-weight:bold;font-size:13px}
+div.jGraduate_Form_Section{-moz-border-radius:5px;-webkit-border-radius:5px;padding:15px 5px 5px 5px;margin:5px 2px;width:100px;text-align:center;overflow:auto;background:#eee}
+div.jGraduate_Form label{padding:0 2px;color:#333}
+div.jGraduate_StopSection input[type=text],div.jGraduate_Slider input[type=text]{width:33px;color:#333}
+div.jGraduate_LightBox{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#000;opacity:.5;display:none}
+div.jGraduate_stopPicker{position:absolute;display:none;background:white;padding:20px;border-radius:3px;width:530px;height:300px;box-shadow:0 5px 25px black}
+.jGraduate_gradPick{width:526px}
+.jGraduate_gradPick div.jGraduate_Slider{line-height:160%}
+.jGraduate_gradPick div.jGraduate_Slider label:last-child{position:absolute;right:10px;top:0;color:#999;font-weight:bold}
+.jGraduate_gradPick div.jGraduate_Slider label:last-child input{margin:0 3px 0 0;color:#333}
+.jGraduate_gradPick .jGraduate_Form{float:left;width:270px;position:absolute;left:284px;width:266px;height:200px;top:195px;margin:-3px 3px 0 10px;line-height:200%}
+.jGraduate_gradPick .jGraduate_Form label,.jGraduate_gradPick .jGraduate_Form input{width:auto;float:left}
+.jGraduate_gradPick .jGraduate_Form.jGraduate_rg_field label,.jGraduate_gradPick .jGraduate_Form.jGraduate_rg_field input{width:auto;float:left;font-size:11px}
+.jGraduate_gradPick .jGraduate_Form.jGraduate_rg_field #color_picker_jGraduate_match_ctr{float:none}
+.jGraduate_gradPick .jGraduate_Form label{clear:left}
+.jGraduate_gradPick .jGraduate_Points{position:static;float:left;margin:0;width:auto}
+.jGraduate_Colorblocks{display:table;border-spacing:0 5px}
+.jGraduate_colorblock{display:table-row}
+.jGraduate_Colorblocks .jGraduate_colorblock>*{display:table-cell;vertical-align:middle;margin:0;float:none}
+.jGraduate_gradPick .jGraduate_Form_Section{padding-top:9px}
+.jGraduate_Slider{text-align:center;float:left;width:100%;position:relative;margin:5px 0}
+.jGraduate_Slider .jGraduate_Form_Section{border:0;width:250px;padding:0 2px;overflow:visible}
+.jGraduate_Slider label.prelabel{width:40px;text-align:left}
+.jGraduate_SliderBar{width:140px;float:left;margin:0 5px;border:1px solid #BBB;height:20px;position:relative}
+div.jGraduate_Slider input{margin-top:5px}
+div.jGraduate_Slider img{top:0;left:0;position:absolute;cursor:ew-resize}
+.jPicker .Button .Ok,.jGraduate_Picker .jGraduate_OkCancel .jGraduate_Ok{-webkit-appearance:none;margin:0;position:absolute;bottom:5px;right:5px}
+.jPicker .Button .Cancel,.jGraduate_Picker .jGraduate_OkCancel .jGraduate_Cancel{margin:0;position:absolute;bottom:5px;left:5px}
+body{background:#3f3f3c;font:13px/120% 'Lucida Sans','Lucida Grande','Lucida Sans Unicode',sans-serif;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin:0;padding:0}
+::selection{background:#000;color:#fff}
+::-moz-selection{background:#000;color:#fff}
+html,body{overflow:hidden;width:100%;height:100%}
+::-webkit-scrollbar{width:5px;height:5px;background:#444}
+::-webkit-scrollbar-track{border-radius:10px;background:#444}
+::-webkit-scrollbar-thumb{border-radius:10px;background:#666}
+::-webkit-scrollbar-corner{background:#444}
+#browser-not-supported{font-size:.8em;font-family:Verdana,Helvetica,Arial;color:#000}
+#svgroot{-moz-user-select:none;-webkit-user-select:none;position:absolute;top:0;left:0}
+#svg_editor{background:#2f2f2c}
+#menu_bar{padding:0 0 0 50px;background:#2f2f2c;position:relative;z-index:2}
+#menu_bar.active .menu.open .menu_list{display:block}
+.menu{position:relative;z-index:5;color:#333;display:inline-block}
+.menu_title{cursor:pointer;display:inline-block;padding:7px 10px;z-index:10;color:#fff;position:relative;height:16px;vertical-align:top}
+.touch .menu_title{padding:7px 17px;height:26px;line-height:26px}
+.menu .menu_title:hover{background:rgba(255,255,255,0.1)}
+.menu_list .separator{margin:5px 0;border-top:solid #ddd 1px}
+.menu_list{display:none;position:absolute;top:28px;left:0;white-space:nowrap;background:white;padding:7px 0;border-radius:0 3px 3px 3px;box-shadow:0 0 20px rgba(0,0,0,0.8)}
+.touch .menu_list{top:38px}
+#menu_bar.active .menu.open .menu_title{background:white;color:#333}
+.menu_list .menu_item{position:relative;overflow:hidden;line-height:22px;padding:5px 69px 5px 25px;cursor:default;color:#333}
+.menu_list .menu_item.tool_button{background:transparent;border:0;margin:0;padding:5px 55px 5px 25px;height:auto;width:auto}
+.menu_list .menu_item.push_button_pressed:before{content:'â';position:absolute;display:block;left:7px;top:3px;width:20px;height:20px}
+.menu_list .menu_item:hover,.menu_list .menu_item.push_button_pressed:hover{background:rgba(0,0,0,0.1);color:#000}
+.menu_list .menu_item.disabled:hover,.menu_list .menu_item.push_button_pressed.disabled:hover{background:transparent;color:#333}
+.menu_list .menu_item.push_button_pressed{background:transparent;border:0;width:auto;height:auto;margin:0}
+.menu_list .menu_item span{display:block;position:absolute;right:10px;padding:5px;background:rgba(0,0,0,0.1);top:6px;height:10px;text-align:center;font-size:10px;line-height:120%}
+#svgcanvas{line-height:normal;display:inline-block;background-color:#a0a0a0;text-align:center;vertical-align:middle;width:640px;height:480px;position:relative;background:#3f3f3c}
+#rulers>div{position:absolute;background:#2f2f2c;z-index:1;overflow:hidden;-webkit-font-smoothing:none}
+#rulers #ruler_corner{top:30px;left:50px;width:15px;height:15px;border:solid #444 1px;z-index:2}
+#ruler_x{height:15px;top:30px;left:66px;right:175px;border-top:solid #444 1px;border-right:solid #444 1px}
+#ruler_x_cursor{height:15px;border-right:dotted #999 1px;position:absolute;background:#2f2f2c}
+#ruler_y_cursor{width:15px;border-top:dotted #999 1px;position:absolute;background:#2f2f2c}
+#rulers.moved #ruler_corner,#rulers.moved #ruler_x{top:101px}
+#ruler_y{width:15px;top:46px;left:50px;bottom:40px;border-left:solid #444 1px;border-bottom:solid #444 1px}
+#rulers.moved #ruler_y{top:116px}
+#ruler_x canvas:first-child{margin-left:-16px}
+#ruler_x canvas{float:left}
+#ruler_y canvas{margin-top:-16px}
+#ruler_x>div,#ruler_y>div{overflow:hidden}
+#palette{display:block;position:absolute;z-index:2;left:10px;bottom:5px;width:410px;right:145px;height:30px}
+.palette_item{height:20%;width:5.2%;float:left;cursor:url(../images/eyedropper.png) 0 16,crosshair}
+.palette_item.transparent,.palette_item.white,.palette_item.black{background:#fff;position:absolute;width:10px;height:10px;left:-10px;top:0}
+.palette_item.transparent{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNXG14zYAAAAVdEVYdENyZWF0aW9uIFRpbWUAOC8yMi8xMg1cp6sAAABESURBVBiVjdBBCgAgCETRr/e/87SJKFPLnfIcQRMIwMBIShIAvgZzoSrfkzrs8WyF1+kX9r3p8AE7nL7kSpSshN+JEQ8GixkF0mSevgAAAABJRU5ErkJggg==)}
+.palette_item.black{background:#000;top:10px}
+.palette_item.white{background:#fff;top:20px}
+#color_tools{position:relative;width:48px;height:48px;margin:6px 6px 0 6px}
+.touch #color_tools{width:auto;height:auto}
+#tool_fill{position:absolute;top:0;left:0;z-index:1}
+.touch #tool_fill{position:static;width:36px;height:36px;margin-bottom:10px}
+#tool_fill.active,#tool_stroke.active{z-index:2}
+#tool_stroke{top:14px;left:14px}
+.touch #tool_fill.active,.touch #tool_stroke.active{outline:4px solid #09f}
+#tool_fill,#tool_stroke,#tool_canvas{box-shadow:0 0 0 1px #2f2f2c;position:absolute}
+.touch #tool_fill,.touch #tool_stroke,.touch #tool_canvas{position:relative;top:0;left:0}
+#color_canvas_tools{float:left;cursor:pointer}
+#tool_fill .color_block{width:24px;height:24px;overflow:hidden;border:solid #ccc 1px}
+.touch #tool_eyedropper{margin-top:6px}
+.touch #tool_fill .color_block{width:36px;height:36px}
+.touch #tool_fill .color_block svg{width:36px!important;height:36px!important}
+.touch #tool_switch{display:none}
+#use_panel .tool_button,#path_node_panel .tool_button{color:#999;border:solid #3f3f3c 1px;border-radius:3px;padding:3px 10px 3px 40px;background:transparent;position:relative;margin-top:10px;width:90px;height:23px;line-height:24px}
+#use_panel .tool_button{padding-left:10px;margin-bottom:10px;width:124px}
+#path_node_panel .tool_button img,#path_node_panel .tool_button svg{position:absolute;left:5px;top:3px}
+#color_tools #tool_fill .color_block:hover,#color_tools #tool_stroke .color_block:hover{border-color:#fff}
+#color_tools #tool_fill .color_block>div{position:absolute;top:0;left:0}
+.touch #color_tools #tool_fill .color_block>div{position:relative}
+#color_tools #tool_fill .color_block #fill_bg,#color_tools #tool_stroke .color_block #stroke_bg{position:absolute;top:1px;left:1px;bottom:1px;right:1px}
+.touch #color_tools #tool_fill .color_block #fill_bg,.touch #color_tools #tool_stroke .color_block #stroke_bg{width:36px;height:36px;right:auto;bottom:auto}
+.touch #tool_stroke{position:relative;top:0;left:0;z-index:0}
+#stroke_color:after{content:'';position:absolute;display:block;width:8px;height:8px;left:8px;top:8px;background:#ccc;box-shadow:0 0 0 1px #000}
+.touch #stroke_color:after{height:14px;left:10px;position:absolute;top:10px;width:14px}
+#color_tools #tool_switch{cursor:pointer;opacity:.7;width:11px;height:11px;background:transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABV0RVh0Q3JlYXRpb24gVGltZQA2LzE0LzEyP6j5+gAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNXG14zYAAAB4SURBVBiVjZHRCYUwDEVvxIF0kZKN7EjiIrrReR/PSNSKXiikcE5JUtMeADMzXQIcdRfgFWqlyyB7ap1wL+0HAnIv1DqRJUBxTkLUWXIvh9AHkIeb58UkIUnDMH4ZR0otCfhv4ynbtp7ut722ZniFG8L9xx4Ek6QfN9huARmYwR0AAAAASUVORK5CYII=) top left no-repeat;position:absolute;top:-2px;left:28px}
+#color_tools #cross:hover{opacity:1}
+#color_tools #tool_stroke:hover #stroke_color:after{background:#fff}
+#color_tools #tool_stroke .color_block{width:24px;height:24px;overflow:hidden;border:solid #ccc 1px}
+.touch #color_tools #tool_stroke .color_block{width:36px;height:36px}
+#color_tools #tool_stroke .color_block>div{position:absolute;bottom:0;right:0}
+.touch #color_tools #tool_stroke .color_block>div{position:relative}
+#color_tools .icon_label{padding:0;width:24px;height:100%;cursor:pointer;position:absolute}
+#linkLabel>svg{height:20px;padding-top:4px}
+div#workarea{display:inline-table-cell;position:absolute;top:30px;left:50px;bottom:40px;right:175px;background-color:#444;overflow:auto;text-align:center;-webkit-transition:-webkit-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);-moz-transition:-moz-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);-o-transition:-o-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);-ms-transition:-ms-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);transition:transform 500ms cubic-bezier(0.13,0.66,0.24,0.92)}
+.touch div#workarea{top:40px}
+.menu .menu_list{display:none;position:absolute}
+.tool_button,.tool_button_current,.tool_button_pressed{cursor:pointer}
+.tool_button:hover,.push_button:hover,.buttonup:hover,.buttondown,.tool_button_current,.push_button_pressed{background-color:#fff}
+.tool_button.disabled,.tool_button.disabled:hover{opacity:.3;background-color:#aaa}
+#tools_left .tool_button{background:#2f2f2c;position:relative}
+#tools_left .tool_button.loaded{background:#ccc}
+#tools_left .tool_button.loaded:hover{background:#fff}
+#tools_left .tool_button:after,#tools_left .tool_button_current:after{position:absolute;content:'';border:solid #2f2f2c 2px;top:-1px;left:-1px;width:26px;height:26px;z-index:0}
+#tools_left .tool_button_current{background-color:#0cf}
+#main_icon span{position:absolute;width:100%;height:100%;display:block;z-index:2}
+#tools_top{position:absolute;width:160px;height:100%;background:#2f2f2c;right:0;top:20px;border-bottom:0;overflow:visible;padding:0 0 0 15px}
+.touch #tools_top{top:30px}
+label{display:block;color:#999}
+div#font-selector{width:140px;height:300px;overflow:auto;margin:0 auto;position:absolute;top:27px;right:0;border:1px solid black;padding:10px;display:none;background-color:white;z-index:10;border-radius:3px;box-shadow:0 5px 10px rgba(0,0,0,0.7)}
+div#font-selector img{width:100%}
+div#font-selector .font-item{border-bottom:solid #ddd 1px;padding:5px 10px;margin:0 -10px}
+div#font-selector .font-item:hover{background-color:#eee}
+#tools_top #marker_panel *{float:left}
+#tools_top #marker_panel h4{float:none}
+#tools_top #marker_panel .dropdown .icon_label{width:36px;height:20px;margin-top:2px;border:solid #3f3f3c 1px;text-align:center}
+#tools_top #marker_panel .dropdown button{margin-top:2px}
+#tools_top #marker_panel #marker_panel_title{float:none;color:#fff;margin-bottom:3px}
+#tools_top #marker_panel .dropdown .icon_label img{float:none}
+#color_picker input[type=text],#color_picker input[type=number]{width:30px;background:#fff}
+.dropdown_set input[type=text],.dropdown_set input[type=number]{width:50px}
+input[type=text].wide,input[type=number].wide{width:110px}
+input[type=text].tuco,input[type=number].tuco{width:150px}
+input[type=submit],input[type=button],button{background:#4f80ff;color:#fff;border-radius:3px;padding:7px 17px;border:0;line-height:140%;font-size:14px;font-weight:bold;font-family:sans-serif}
+input[type=submit]:hover,button:hover{box-shadow:inset 0 3px 10px rgba(255,255,255,0.1),inset 0 -3px 10px rgba(0,0,0,0.2)}
+input[type=submit]:hover,button:hover{background:#2f84c1}
+input[type=submit]:active,button:active{box-shadow:inset 0 2px 2px rgba(0,0,0,0.2);border-bottom:solid rgba(255,255,255,0.1) 1px}
+#tools_left{position:absolute;border-right:0;width:50px;top:30px;bottom:0;left:0;background:#2f2f2c;z-index:4}
+#workarea.wireframe #svgcontent *{fill:none;stroke:#000;stroke-width:1px;stroke-opacity:1.0;stroke-dasharray:0;opacity:1;pointer-events:stroke;vector-effect:non-scaling-stroke;filter:none}
+#workarea.wireframe #svgcontent text{fill:#000;stroke:none}
+#workarea.wireframe #canvasBackground>rect{fill:#FFF!important}
+#workarea #canvasBackground>rect{stroke:transparent!important}
+.context_panel{display:none}
+#canvas_panel{display:block}
+#multiselected_panel .selected_tool{vertical-align:12px}
+#cur_context_panel{position:absolute;top:47px;left:68px;line-height:22px;overflow:auto;border-bottom:0;border-right:0;padding-left:5px;font-size:12px;background:black;color:#999;opacity:.5;padding:0 10px;border-radius:0 10px 10px 0}
+#cur_context_panel a{float:none;text-decoration:none;color:#fff}
+#cur_context_panel a:hover{text-decoration:underline}
+#tools_left .tool_button,#tools_left .tool_button_current{position:relative;z-index:11}
+.flyout_arrow_horiz{position:absolute;bottom:-1px;right:0;z-index:10}
+.dropdown{position:relative;float:left}
+.dropdown button{width:21px;height:22px;padding:0 3px 0 3px;border:0;background-color:#555;border-radius:0 2px 2px 0;margin-left:-1px;position:relative}
+.dropdown button:hover{background-color:#666}
+.dropdown button:after{content:'';position:absolute;border:solid transparent 4px;border-top-color:#999;top:9px;left:6px}
+.dropdown button.down{border-left:1px solid #808080;border-top:1px solid #808080;border-right:1px solid #fff;border-bottom:1px solid #fff;background-color:#b0b0b0}
+.dropdown ul{list-style:none;position:absolute;margin:0;padding:0;left:-80px;top:26px;z-index:4;display:none}
+.dropup ul{top:auto;bottom:26px;border-radius:3px;box-shadow:0 5px 10px #000}
+.dropup ul:after{content:'';display:block;position:absolute;bottom:-10px;right:50%;top:auto;width:0;height:0;border:solid transparent 5px;border-top-color:#fff}
+.dropdown li{display:block;width:120px;padding:5px 10px;color:#333;background:#fff;margin:0;line-height:16px}
+.dropdown li:first-child{border-radius:3px 3px 0 0}
+.dropdown li:last-child{border-radius:0 0 3px 3px}
+.dropdown li:hover{background-color:#ddd;color:#000}
+.dropdown li.special{padding:10px;background:white;border:0;box-shadow:0 3px 10px black;border-radius:3px!important}
+.dropdown li.special:after{content:'';display:block;position:absolute;top:-10px;right:50%;border:solid transparent 5px;border-bottom-color:#fff}
+.dropdown li.special.down:after{bottom:-10px;right:50%;top:auto;border:solid transparent 5px;border-top-color:#fff}
+.tool_button,.push_button,.tool_button_current,.push_button_pressed{height:27px;width:27px;border:solid #2f2f2c 8px;border-left-width:13px;margin:0;background-color:#ddd;cursor:pointer}
+#main_menu li#tool_open,#main_menu li#tool_import{position:relative;overflow:hidden}
+#tool_image{overflow:hidden}
+#tool_open input,#tool_import input,#tool_import_bitmap input{position:absolute;opacity:0;font-size:10em;top:-5px;right:-5px;margin:0;cursor:pointer}
+.disabled{opacity:.5;cursor:default}
+.width_label{padding-right:5px}
+#text{position:absolute;left:-9999px}
+#tool_bold span,#tool_italic span{position:absolute;width:100%;height:100%;top:0;left:0;background:#ccc;opacity:0}
+#url_notice{padding-top:4px;display:none}
+#color_picker{position:absolute;display:none;background:#fff;height:350px;border-radius:3px;z-index:5;box-shadow:0 5px 10px #000;width:530px}
+.tools_flyout{position:absolute;display:none;cursor:pointer;width:385px;z-index:10;left:47px!important;height:324px;background:#fff;border-radius:5px;box-shadow:0 5px 10px rgba(0,0,0,0.5)}
+.tools_flyout_v{position:absolute;display:none;cursor:pointer;width:30px}
+.tools_flyout .tool_button{float:left;background-color:#fff;height:24px;width:24px}
+#tools_bottom{position:absolute;left:50px;right:0;bottom:0;height:40px;overflow:visible;background:#2f2f2c}
+#tools_bottom_1{width:115px;float:left}
+#tools_bottom_2{position:relative;float:left;margin-top:5px}
+#tools_bottom input[type=text]{width:3.2em}
+#tools_top h4{color:#fff;font-weight:normal;margin:0;padding:10px 0 5px 0}
+#tools_top .dropdown .icon_label{border:1px solid transparent;height:auto}
+#tools_top.multiselected #align_tools{display:none}
+#tools_top.multiselected #multiselected_panel{display:block!important}
+#tools_top.multiselected #multiselected_panel .hidable{display:none}
+.draginput_cell{float:left;height:26px;height:26px;border:solid #3f3f3c 10px;outline:solid #2f2f2c 1px;background:#ddd;cursor:pointer;position:relative}
+.draginput_cell:hover{background:#fff}
+.draginput_cell:after{content:'';position:absolute;top:0;left:0;border:solid #3f3f3c 1px;height:26px;width:26px;z-index:0}
+.align_buttons .draginput_cell:nth-child(1){border-radius:3px 0 0 0}
+.align_buttons .draginput_cell:nth-child(3){border-radius:0 3px 0 0}
+.align_buttons .draginput_cell:nth-child(4){border-radius:0 0 0 3px}
+.align_buttons .draginput_cell:nth-child(6){border-radius:0 0 3px 0}
+.align_buttons .push_button{display:block;float:left}
+#option_lists ul{display:none;position:absolute;height:auto;z-index:3;margin:0;list-style:none;padding-left:0}
+#option_lists .optcols2{width:70px;margin-left:-15px}
+#option_lists .optcols3{width:192px;margin-left:-105px;margin-top:-25px;background:#fff;padding:5px;box-shadow:0 5px 10px #000;border-radius:3px}
+#option_lists .optcols3:after{content:'';display:block;position:absolute;top:-10px;right:70px;border:solid transparent 5px;border-bottom-color:#fff}
+#option_lists .tool_button,#option_lists .push_button,#option_lists .tool_button_current,#option_lists .push_button_pressed{border:0;background:transparent}
+#option_lists .tool_button:hover{background:#ddd}
+#option_lists ul li.current{background-color:#f4e284}
+#option_lists .optcols4{width:130px;margin-left:-44px}
+#option_lists ul[class^=optcols] li{float:left}
+ul li.current{background-color:#f4e284}
+#option_lists ul li{margin:0;border-radius:0;-moz-border-radius:0;-webkit-border-radius:0}
+#copyright{text-align:right;padding-right:.3em}
+#svg_source_editor{display:none}
+#svg_source_editor #svg_source_overlay{position:absolute;top:0;right:0;left:0;bottom:0;background-color:black;opacity:.6;z-index:5}
+#svg_source_editor #svg_source_container{position:absolute;top:30px;left:100px;right:100px;bottom:30px;background-color:#fff;border-radius:3px;opacity:1.0;text-align:center;z-index:6;padding:15px 0}
+#svg_source_editor form{position:absolute;display:block;top:15px;bottom:55px;left:15px;right:12px;padding:5px;font-size:12px}
+#svg_source_textarea{width:100%;height:100%;line-height:140%;font-family:'Lucida Sans','Lucida Grande','Lucida Sans Unicode',sans-serif;font-size:12px}
+#svg_source_editor #tool_source_back{position:absolute;bottom:45px;left:15px;right:15px}
+#svg_source_editor #tool_source_back #tool_source_save{display:block;position:absolute;right:0}
+#svg_source_editor #tool_source_back #tool_source_cancel{display:block;position:absolute;left:0}
+button.cancel,input.Cancel,input.cancel,input.jGraduate_Cancel,button.cancel{-webkit-appearance:none;background-color:#999;box-shadow:0 0 1px rgba(0,0,0,0.5);margin:0}
+#shape_buttons{overflow:auto;top:0;bottom:0;left:110px;right:0;position:absolute;vertical-align:top}
+#shape_cats{min-width:110px;display:block;position:absolute;left:0;top:0;height:300px;background:#eee;border-radius:3px 0 0 3px;z-index:2}
+#shape_cats>div{line-height:1em;padding:0 .5em;border-bottom:1px solid #ddd;background:#e8e8e8;color:#444;height:26px;line-height:26px}
+#shape_cats>div:first-child{border-radius:3px 0 0 0}
+#shape_cats>div:last-child{border-radius:0 0 0 3px}
+#shape_cats div:hover{background:#efefef;color:#000}
+#shape_cats div.current{font-weight:bold;background:#3f3f3c;color:#fff;position:relative}
+#shape_cats div.current:after{content:'';position:absolute;right:-26px;top:0;border:solid transparent 13px;border-left-color:#3f3f3c}
+.toolbar_button button .svg_icon{display:none}
+#dialog_box{display:none}
+#dialog_box_overlay{background:black;opacity:.5;height:100%;left:0;position:absolute;top:0;width:100%;z-index:6}
+#dialog_content{height:95px;margin:10px 10px 5px 10px;overflow:auto;text-align:left;font-size:13px}
+#dialog_buttons input:last-child{background:#999!important;position:absolute;left:10px;bottom:10px}
+#dialog_buttons input:first-child{position:absolute;right:10px;bottom:10px}
+#dialog_content.prompt{height:75px}
+#dialog_content p{margin:10px;line-height:1.3em}
+#dialog_container{position:absolute;left:50%;top:50%;width:300px;margin-left:-150px;height:150px;margin-top:-80px;position:fixed;z-index:50001;background:#fff}
+#dialog_container,#dialog_content{border-radius:3px}
+#dialog_buttons input[type=text]{width:90%;display:block;margin:0 0 5px 11px}
+#dialog_buttons input[type=button]{margin:0 1em}
+.invisible{visibility:none}
+.ui-slider{position:relative;text-align:left}
+.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}
+.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0}
+.ui-slider-horizontal{height:.8em}
+.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}
+.ui-slider-horizontal .ui-slider-range{top:0;height:100%}
+.ui-slider-horizontal .ui-slider-range-min{left:0}
+.ui-slider-horizontal .ui-slider-range-max{right:0}
+.ui-slider-vertical{width:.8em;height:100px}
+.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}
+.ui-slider-vertical .ui-slider-range{left:0;width:100%}
+.ui-slider-vertical .ui-slider-range-min{bottom:0}
+.ui-slider-vertical .ui-slider-range-max{top:0}
+.ui-slider{background:#3f3f3c;border-radius:10px}
+.ui-slider-handle{box-shadow:0 3px 3px rgba(0,0,0,0.3);border-radius:30px;background:#fff;background-image:-ms-linear-gradient(top,#ccc 0,#fff 100%);background-image:-moz-linear-gradient(top,#ccc 0,#fff 100%);background-image:-o-linear-gradient(top,#ccc 0,#fff 100%);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#ccc),color-stop(1,#fff));background-image:-webkit-linear-gradient(top,#ccc 0,#fff 100%);background-image:linear-gradient(top,#ccc 0,#fff 100%)}
+.ui-slider-handle:focus{outline:0}
+#shape_buttons{background:#fff;border-radius:0 3px 3px 0;padding:10px}
+.tools_flyout .tool_button,.tools_flyout .tool_flyout{background:#fff;width:40px;height:40px;margin:5px;border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;border-width:0}
+.contextMenu{position:absolute;z-index:99999;border:solid 1px rgba(0,0,0,.33);background:rgba(255,255,255,.95);padding:5px 0;margin:0;display:none;font:12px/15px 'Lucida Sans','Lucida Grande',Helvetica,Verdana,sans-serif;border-radius:5px;-moz-border-radius:5px;-moz-box-shadow:2px 5px 10px rgba(0,0,0,.3);-webkit-box-shadow:2px 5px 10px rgba(0,0,0,.3);box-shadow:2px 5px 10px rgba(0,0,0,.3)}
+.touch .contextMenu{border:solid 5px rgba(0,0,0,.7);padding:0;margin:0 0 0 20px;font:18px/24px sans-serif;border-radius:5px;-webkit-box-shadow:2px 5px 20px 3px #000;box-shadow:2px 5px 20px rgba(0,0,0,0.5)}
+.touch .contextMenu:after{content:'';width:0;height:0;border:solid transparent 10px;border-right-color:rgba(0,0,0,.7);position:absolute;top:50%;left:-25px;margin-top:-10px;z-index:1000}
+.contextMenu LI{list-style:none;padding:0;margin:0}
+.contextMenu .shortcut{width:115px;text-align:right;float:right}
+.touch .contextMenu .shortcut{display:none}
+.touch .shortcut{display:none}
+.contextMenu A{-moz-user-select:none;-webkit-user-select:none;color:#222;text-decoration:none;display:block;line-height:20px;height:20px;background-position:6px center;background-repeat:no-repeat;outline:0;padding:0 15px 1px 20px}
+.touch .contextMenu A{padding:0 15px;border-bottom:#;font-weight:bold;border-top:solid 1px #e3e3e3;height:40px;line-height:40px;min-width:200px}
+.contextMenu LI.hover A{background-color:#2e5dea;color:white;cursor:default}
+.contextMenu LI.disabled A{color:#999}
+.touch .contextMenu LI.disabled A{display:none}
+.contextMenu LI.hover.disabled A{background-color:transparent}
+.contextMenu LI.separator{border-top:solid 1px #e3e3e3;padding-top:5px;margin-top:5px}
+.touch .contextMenu LI.separator{border-top:0;margin:0;padding:0}
+#menu{display:none;position:absolute;top:0;left:0;right:0;height:30px;background:#000;z-index:10;color:#fff}
+#workarea.rect,#workarea.line,#workarea.ellipse,#workarea.path,#workarea.shapelib{cursor:crosshair}
+#workarea.text{cursor:text}
+#workarea.eyedropper{cursor:url(../images/eyedropper.png) 0 16,crosshair}
+#workarea.fhpath{cursor:url(../images/pencil_cursor.png) 0 20,crosshair}
+#workarea.rotate *{cursor:url(../images/rotate.png) 12 12,auto}
+#workarea.select text,#workarea.multiselect text{cursor:default}
+#workarea.n-resize *{cursor:n-resize!important}
+#workarea.e-resize *{cursor:e-resize!important}
+#workarea.w-resize *{cursor:w-resize!important}
+#workarea.s-resize *{cursor:s-resize!important}
+#workarea.ne-resize *{cursor:ne-resize!important}
+#workarea.se-resize *{cursor:se-resize!important}
+#workarea.nw-resize *{cursor:nw-resize!important}
+#workarea.sw-resize *{cursor:sw-resize!important}
+#workarea.copy{cursor:copy}
+#workarea.zoom{cursor:crosshair;cursor:-moz-zoom-in;cursor:-webkit-zoom-in}
+#workarea.zoom.out{cursor:crosshair;cursor:-moz-zoom-out;cursor:-webkit-zoom-out}
+#selectorRubberBand{shape-rendering:crispEdges}
+.clearfix:before,.clearfix:after{content:"";display:table}
+.clearfix:after{clear:both}
+.clearfix{*zoom:1}
+#group_title{display:none}
+#base_unit_container{display:none;position:absolute;z-index:20}
+.draginput{background:#3f3f3c;border-radius:3px;-webkit-font-smoothing:antialiased;width:70px;height:70px;display:block;position:relative;float:left;margin:0 5px 5px 0}
+.draginput .caret{border:solid transparent 5px;border-top-color:#999;position:absolute;width:0;height:0;right:5px;margin-top:-2px;top:50%}
+.draginput label{margin:28px 10px 0 5px;font-size:14px;color:white;font-weight:bold;font-family:sans-serif}
+.draginput label#resolution_label,.draginput label#seg_type_label{font:bold 12px/110% sans-serif;position:absolute;left:auto;right:10px;z-index:0;text-align:right}
+.draginput label#seg_type_label{margin-top:40px}
+.draginput label#seg_type_label .caret{top:66%}
+.draginput label#resolution_label .pull{position:relative;left:-15px}
+.draginput label#resolution_label span{right:-13px;left:auto;font-size:16px;top:2px;font-weight:bold;color:white}
+.touch .draginput.active:after{content:attr(data-value);display:block;position:absolute;background:#fff;font-size:16px;top:0;width:30px;left:-50px;padding:0 5px;color:#333;z-index:10;font-family:sans-serif;font-weight:bold;text-align:right;padding-right:10px;height:20px;line-height:20px;letter-spacing:-1px}
+.touch .draginput.active:before{content:'';height:0;width:0;position:absolute;top:5px;left:-5px;border:solid transparent 5px;border-left-color:#fff}
+.draginput input{border:0;background:transparent;font:24px/normal sans-serif;text-align:center;color:#4f80ff;padding:30px 0 16px;width:100%;height:24px;position:relative;z-index:2}
+.draginput.twocol{width:145px}
+#tool_font_family .caret{right:40px;top:55%}
+#tool_font_family select{width:110px}
+#tool_bold,#tool_italic{font:bold 20px/35px serif;text-align:center;position:absolute;padding:0;color:#ccc;background:transparent;border:0;width:35px;height:35px;margin:0;top:0;right:0}
+#tool_italic{border-top:solid #2f2f2c 2px;top:35px;font-weight:bold;font-style:italic;font-size:24px}
+#tool_bold:hover,#tool_italic:hover{color:#fff}
+#tool_bold.active,#tool_italic.active{color:#50a0ff}
+#preview_font{font-size:20px;color:#fff;height:70px;line-height:75px;padding:0 0 0 10px;white-space:nowrap;width:100px;overflow:hidden;border-right:solid #2f2f2c 2px;position:relative}
+#preview_font:after{content:'';position:absolute;right:0;top:3px;bottom:3px;width:15px;border-right:solid #3f3f3c 10px;background:transparent url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAxIDEiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxsaW5lYXJHcmFkaWVudCBpZD0iZzU4MCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIwJSIgeTE9IjAlIiB4Mj0iMTAwJSIgeTI9IjAlIj48c3RvcCBzdG9wLWNvbG9yPSIjM2YzZjNjIiBzdG9wLW9wYWNpdHk9IjAiIG9mZnNldD0iMCIvPjxzdG9wIHN0b3AtY29sb3I9IiMzZjNmM2MiIG9mZnNldD0iMC43Ii8+PC9saW5lYXJHcmFkaWVudD48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBmaWxsPSJ1cmwoI2c1ODApIiAvPjwvc3ZnPg==)}
+.draginput input,.draginput input:hover,.draginput input:active{cursor:url(../images/drag.png),move;cursor:-webkit-grab;cursor:-moz-grab}
+.draginput input[type="checkbox"],.draginput input[type="checkbox"]:hover,.draginput input[type="checkbox"]:active{cursor:pointer}
+.draginput.checkbox{cursor:pointer}
+.draginput.active input,.draginput.active input:hover,.draginput.active input:active{cursor:url(../images/dragging.png),move;cursor:-webkit-grabbing;cursor:-moz-grabbing}
+.draginput span{font:11px/130% sans-serif;color:#ccc;display:block;position:absolute;top:5px;left:5px;text-align:left}
+.draginput.error{background:#900}
+.draginput.error input{color:#fff}
+.draginput.stroke_tool{text-align:center}
+.draginput select{-webkit-appearance:none;opacity:0;display:block;position:absolute;height:100%;width:100%;margin:0;z-index:1;top:0;left:0}
+.draginput_cursor{position:absolute;top:50%;width:100%;border-top:solid rgba(50,100,200,0.25) 3px;margin-top:-2px;z-index:0}
+.draginput input[readonly=readonly]{-webkit-appearance:none;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
+.draginput input:focus{background:#50a0ff;color:#fff;outline:0;box-shadow:0 0 5px 2px #50a0ff}
+.draginput input:focus+span{z-index:10;color:#fff}
+.draginput .push_bottom{bottom:0;position:absolute}
+#zoom_label{height:20px;background:transparent;cursor:default!important;width:auto;padding:0 10px;margin:0}
+#zoom_panel{padding:9px 0;right:175px;position:absolute}
+#zoom_label img,#zoom_label svg{width:16px;height:16px}
+#logo svg{pointer-events:none}
+#zoomLabel{width:16px;height:16px;cursor:pointer;background:#ccc}
+#zoomLabel:after{content:'';position:absolute;border-left:solid #2f2f2c 1px;left:0;height:16px}
+#zoom_label input{color:#ccc;font-size:13px;height:auto;width:auto;padding:0;cursor:default;position:static}
+#zoom_label span{top:0;left:0}
+body.dragging *{cursor:url(../images/dragging.png),move;cursor:-webkit-grabbing;cursor:-moz-grabbing}
+body.drag *{cursor:url(../images/dragging.png),move;cursor:-webkit-grabbing;cursor:-moz-grabbing}
+input[readonly=readonly]:focus{box-shadow:none}
+#color_canvas_tools,#fill_bg,#stroke_bg{background:#fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMAQMAAABsu86kAAAAA3NCSVQICAjb4U/gAAAABlBMVEXu7u7///8o06qaAAAACXBIWXMAAAsSAAALEgHS3X78AAAAFXRFWHRDcmVhdGlvbiBUaW1lADcvMjIvMTL7FNdCAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M1cbXjNgAAABFJREFUCJljYP7AgIb+MKAhAM8/C5vWL6zSAAAAAElFTkSuQmCC) top left repeat}
+#color_canvas_tools{width:60px;height:40px;margin:23px 5px 5px 5px;position:relative;overflow:hidden}
+#color_canvas_tools{display:block}
+#tool_angle_indicator{width:50px;height:50px;border-radius:50px;background:rgba(255,255,255,0.05);position:absolute;bottom:2px;left:10px}
+#tool_angle_indicator_cursor{width:4px;height:25px;border-top:solid #50a0ff 3px;position:absolute;margin:0 0 0 23px;-webkit-transform-origin:50% 0;-moz-transform-origin:50% 0;-o-transform-origin:50% 0;-ms-transform-origin:50% 0;transform-origin:50% 0}
+#stroke_style_label{font-size:30px;margin-top:33px;letter-spacing:-1px}
+.stroke_tool .caret{top:60%}
+#tool_align_relative{position:absolute;top:-5px;left:0;right:20px;display:block}
+#tool_align_relative select{width:100%;display:block}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/method-draw.compiled.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/method-draw.compiled.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/method-draw.compiled.js	(revision 29468)
@@ -0,0 +1,692 @@
+function touchHandler(a){var s=a.changedTouches,g=s[0],b="";switch(a.type){case "touchstart":b="mousedown";break;case "touchmove":b="mousemove";break;case "touchend":b="mouseup";break;default:return}var p=document.createEvent("MouseEvent");p.initMouseEvent(b,true,true,window,1,g.screenX,g.screenY,g.clientX,g.clientY,false,false,false,false,0,null);if(s.length<2){g.target.dispatchEvent(p);a.preventDefault()}};(function(a){function s(g){if(typeof g.data==="string"){var b=g.handler,p=g.data.toLowerCase().split(" ");g.handler=function(w){if(!(this!==w.target&&(/textarea|select/i.test(w.target.nodeName)||w.target.type==="text"))){var c=w.type!=="keypress"&&a.hotkeys.specialKeys[w.which],f=String.fromCharCode(w.which).toLowerCase(),d="",n={};if(w.altKey&&c!=="alt")d+="alt+";if(w.ctrlKey&&c!=="ctrl")d+="ctrl+";if(w.metaKey&&!w.ctrlKey&&c!=="meta")d+="meta+";if(w.shiftKey&&c!=="shift")d+="shift+";if(c)n[d+c]=
+true;else{n[d+f]=true;n[d+a.hotkeys.shiftNums[f]]=true;if(d==="shift+")n[a.hotkeys.shiftNums[f]]=true}c=0;for(f=p.length;c<f;c++)if(n[p[c]])return b.apply(this,arguments)}}}}a.hotkeys={version:"0.8",specialKeys:{8:"backspace",9:"tab",13:"return",16:"shift",17:"ctrl",18:"alt",19:"pause",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"insert",46:"del",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9",
+106:"*",107:"+",109:"-",110:".",111:"/",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12",144:"numlock",145:"scroll",191:"/",224:"meta",219:"[",221:"]"},shiftNums:{"`":"~","1":"!","2":"@","3":"#","4":"$","5":"%","6":"^","7":"&","8":"*","9":"(","0":")","-":"_","=":"+",";":": ","'":'"',",":"<",".":">","/":"?","\\":"|"}};a.each(["keydown","keyup","keypress"],function(){a.event.special[this]={add:s}})})(jQuery);(function(a,s){function g(ca){return typeof ca==="string"}function b(ca){var U=d.call(arguments,1);return function(){return ca.apply(this,U.concat(d.call(arguments)))}}function p(ca,U,Z,na,pa){var ma;if(na!==f){U=Z.match(ca?/^([^#]*)\#?(.*)$/:/^([^#?]*)\??([^#]*)(#?.*)/);Z=U[3]||"";if(pa===2&&g(na))na=na.replace(ca?ea:V,"");else{ma=q(U[2]);na=g(na)?q[ca?ga:N](na):na;na=pa===2?na:pa===1?a.extend({},na,ma):a.extend({},ma,na);na=v(na);if(ca)na=na.replace(Ba,n)}ca=U[1]+(ca?"#":na||!U[1]?"?":"")+na+Z}else ca=
+U(Z!==f?Z:s[oa][Y]);return ca}function w(ca,U,Z){if(U===f||typeof U==="boolean"){Z=U;U=v[ca?ga:N]()}else U=g(U)?U.replace(ca?ea:V,""):U;return q(U,Z)}function c(ca,U,Z,na){if(!g(Z)&&typeof Z!=="object"){na=Z;Z=U;U=f}return this.each(function(){var pa=a(this),ma=U||S()[(this.nodeName||"").toLowerCase()]||"",la=ma&&pa.attr(ma)||"";pa.attr(ma,v[ca](la,Z,na))})}var f,d=Array.prototype.slice,n=decodeURIComponent,v=a.param,B,q,L,Q=a.bbq=a.bbq||{},K,I,S,R=a.event.special,N="querystring",ga="fragment",oa=
+"location",Y="href",V=/^.*\?|#.*$/g,ea=/^.*\#/,Ba,ja={};v[N]=b(p,0,function(ca){return ca.replace(/(?:^[^?#]*\?([^#]*).*$)?.*/,"$1")});v[ga]=B=b(p,1,function(ca){return ca.replace(/^[^#]*#?(.*)$/,"$1")});B.noEscape=function(ca){ca=ca||"";ca=a.map(ca.split(""),encodeURIComponent);Ba=RegExp(ca.join("|"),"g")};B.noEscape(",/");a.deparam=q=function(ca,U){var Z={},na={"true":true,"false":false,"null":null};a.each(ca.replace(/\+/g," ").split("&"),function(pa,ma){var la=ma.split("="),ya=n(la[0]),za=Z,Ja=
+0,Ia=ya.split("]["),Fa=Ia.length-1;if(/\[/.test(Ia[0])&&/\]$/.test(Ia[Fa])){Ia[Fa]=Ia[Fa].replace(/\]$/,"");Ia=Ia.shift().split("[").concat(Ia);Fa=Ia.length-1}else Fa=0;if(la.length===2){la=n(la[1]);if(U)la=la&&!isNaN(la)?+la:la==="undefined"?f:na[la]!==f?na[la]:la;if(Fa)for(;Ja<=Fa;Ja++){ya=Ia[Ja]===""?za.length:Ia[Ja];za=za[ya]=Ja<Fa?za[ya]||(Ia[Ja+1]&&isNaN(Ia[Ja+1])?{}:[]):la}else if(a.isArray(Z[ya]))Z[ya].push(la);else Z[ya]=Z[ya]!==f?[Z[ya],la]:la}else if(ya)Z[ya]=U?f:""});return Z};q[N]=b(w,
+0);q[ga]=L=b(w,1);a.elemUrlAttr||(a.elemUrlAttr=function(ca){return a.extend(ja,ca)})({a:Y,base:Y,iframe:"src",img:"src",input:"src",form:"action",link:Y,script:"src"});S=a.elemUrlAttr;a.fn[N]=b(c,N);a.fn[ga]=b(c,ga);Q.pushState=K=function(ca,U){if(g(ca)&&/^#/.test(ca)&&U===f)U=2;var Z=ca!==f;Z=B(s[oa][Y],Z?ca:{},Z?U:2);s[oa][Y]=Z+(/#/.test(Z)?"":"#")};Q.getState=I=function(ca,U){return ca===f||typeof ca==="boolean"?L(ca):L(U)[ca]};Q.removeState=function(ca){var U={};if(ca!==f){U=I();a.each(a.isArray(ca)?
+ca:arguments,function(Z,na){delete U[na]})}K(U,2)};R.hashchange=a.extend(R.hashchange,{add:function(ca){function U(na){var pa=na[ga]=B();na.getState=function(ma,la){return ma===f||typeof ma==="boolean"?q(pa,ma):q(pa,la)[ma]};Z.apply(this,arguments)}var Z;if(a.isFunction(ca)){Z=ca;return U}else{Z=ca.handler;ca.handler=U}}})})(jQuery,this);
+(function(a,s,g){function b(B){B=B||s[c][f];return B.replace(/^[^#]*#?(.*)$/,"$1")}var p,w=a.event.special,c="location",f="href",d=document.documentMode,n=a.browser.msie&&(d===g||d<8),v="onhashchange"in s&&!n;a.hashchangeDelay=100;w.hashchange=a.extend(w.hashchange,{setup:function(){if(v)return false;a(p.start)},teardown:function(){if(v)return false;a(p.stop)}});p=function(){function B(){K=I=function(S){return S};if(n){Q=a('<iframe src="javascript:0"/>').hide().insertAfter("body")[0].contentWindow;
+I=function(){return b(Q.document[c][f])};K=function(S,R){if(S!==R){var N=Q.document;N.open().close();N[c].hash="#"+S}};K(b())}}var q={},L,Q,K,I;q.start=function(){if(!L){var S=b();K||B();(function R(){var N=b(),ga=I(S);if(N!==S){K(S=N,ga);a(s).trigger("hashchange")}else if(ga!==S)s[c][f]=s[c][f].replace(/#.*/,"")+"#"+ga;L=setTimeout(R,a.hashchangeDelay)})()}};q.stop=function(){if(!Q){L&&clearTimeout(L);L=0}};return q}()})(jQuery,this);(function(a){var s={},g;a.svgIcons=function(b,p){function w(ca,U){if(ca!=="ajax"){if(S)return;var Z=(Q=Y[0].contentDocument)&&Q.getElementById("svg_eof");if(!Z&&!(U&&Z)){R++;if(R<50)setTimeout(w,20);else{f();S=true}return}S=true}L=a(Q.firstChild).children();if(p.no_img)setTimeout(function(){I||c()},500);else{Z=oa+"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNzUiIGhlaWdodD0iMjc1Ij48L3N2Zz4%3D";K=a(new Image).attr({src:Z,width:0,height:0}).appendTo("body").load(function(){c(true)}).error(function(){c()})}}
+function c(ca,U){if(!I){if(p.no_img)ca=false;if(ca){var Z=a(document.createElement("div"));Z.hide().appendTo("body")}if(U){var na=p.fallback_path?p.fallback_path:"";a.each(U,function(Fa,Ma){a("#"+Fa);var Da=a(new Image).attr({"class":"svg_icon",src:na+Ma,width:B,height:q,alt:"icon"});ja(Da,Fa)})}else for(var pa=L.length,ma=0;ma<pa;ma++){var la=L[ma],ya=la.id;if(ya==="svg_eof")break;a("#"+ya);la=la.getElementsByTagNameNS(n,"svg")[0];var za=document.createElementNS(n,"svg");za.setAttributeNS(n,"viewBox",
+[0,0,B,q].join(" "));var Ja=la.getAttribute("width"),Ia=la.getAttribute("height");la.removeAttribute("width");la.removeAttribute("height");la.getAttribute("viewBox")||la.setAttribute("viewBox",[0,0,Ja,Ia].join(" "));za.setAttribute("xmlns",n);za.setAttribute("width",B);za.setAttribute("height",q);za.setAttribute("xmlns:xlink",v);za.setAttribute("class","svg_icon");ga||(la=la.cloneNode(true));za.appendChild(la);if(ca){ga||za.cloneNode(true);Z.empty().append(za);la=oa+d(Z.html());la=a(new Image).attr({"class":"svg_icon",
+src:la})}else la=g(a(za),ma);ja(la,ya)}p.placement&&a.each(p.placement,function(Fa,Ma){s[Ma]&&a(Fa).each(function(Da){var wa=s[Ma].clone();if(Da>0&&!ca)wa=g(wa,Da,true);Ba(a(this),wa,Ma)})});if(!U){ca&&Z.remove();Y&&Y.remove();K&&K.remove()}p.resize&&a.resizeSvgIcons(p.resize);I=true;p.callback&&p.callback(s)}}function f(){if(b.indexOf(".svgz")!=-1){var ca=b.replace(".svgz",".svg");window.console&&console.log(".svgz failed, trying with .svg");a.svgIcons(ca,p)}else p.fallback&&c(false,p.fallback)}
+function d(ca){if(window.btoa)return window.btoa(ca);var U=Array(Math.floor((ca.length+2)/3)*4),Z,na,pa,ma,la,ya,za=0,Ja=0;do{Z=ca.charCodeAt(za++);na=ca.charCodeAt(za++);pa=ca.charCodeAt(za++);ma=Z>>2;Z=(Z&3)<<4|na>>4;la=(na&15)<<2|pa>>6;ya=pa&63;if(isNaN(na))la=ya=64;else if(isNaN(pa))ya=64;U[Ja++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(ma);U[Ja++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(Z);U[Ja++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(la);
+U[Ja++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(ya)}while(za<ca.length);return U.join("")}var n="http://www.w3.org/2000/svg",v="http://www.w3.org/1999/xlink",B=p.w?p.w:24,q=p.h?p.h:24,L,Q,K,I=false,S=false,R=0,N=navigator.userAgent,ga=!!window.opera;N.indexOf("Safari/")>-1&&N.indexOf("Chrome/");var oa="data:image/svg+xml;charset=utf-8;base64,";if(p.svgz){var Y=a('<object data="'+b+'" type=image/svg+xml>').appendTo("body").hide();try{Q=Y[0].contentDocument;Y.load(w);
+w(0,true)}catch(V){f()}}else{var ea=new DOMParser;a.ajax({url:b,dataType:"string",success:function(ca){if(ca){Q=ea.parseFromString(ca,"text/xml");a(function(){w("ajax")})}else a(f)},error:function(ca){if(window.opera)a(function(){f()});else if(ca.responseText){Q=ea.parseFromString(ca.responseText,"text/xml");Q.childNodes.length||a(f);a(function(){w("ajax")})}else a(f)}})}var Ba=function(ca,U,Z,na){ga&&U.css("visibility","hidden");if(p.replace){na&&U.attr("id",Z);(Z=ca.attr("class"))&&U.attr("class",
+"svg_icon "+Z);ca.replaceWith(U)}else ca.append(U);ga&&setTimeout(function(){U.removeAttr("style")},1)},ja=function(ca,U){if(p.id_match===undefined||p.id_match!==false)Ba(holder,ca,U,true);s[U]=ca};g=function(ca,U){var Z=ca.find("defs");if(!Z.length)return ca;Z=ga?Z.find("*").filter(function(){return!!this.id}):Z.find("[id]");var na=ca[0].getElementsByTagName("*"),pa=na.length;Z.each(function(ma){var la=this.id;a(Q).find("#"+la);this.id=ma="x"+la+U+ma;la="url(#"+la+")";var ya="url(#"+ma+")";for(ma=
+0;ma<pa;ma++){var za=na[ma];za.getAttribute("fill")===la&&za.setAttribute("fill",ya);za.getAttribute("stroke")===la&&za.setAttribute("stroke",ya);za.getAttribute("filter")===la&&za.setAttribute("filter",ya)}});return ca}};a.getSvgIcon=function(b,p){var w=s[b];if(p&&w)w=g(w,0,true).clone(true);return w};a.resizeSvgIcons=function(b){var p=!a(".svg_icon:first").length;a.each(b,function(w,c){var f=a.isArray(c),d=f?c[0]:c,n=f?c[1]:c;if(p)w=w.replace(/\.svg_icon/g,"svg");a(w).each(function(){this.setAttribute("width",
+d);this.setAttribute("height",n);if(window.opera&&window.widget){this.parentNode.style.width=d+"px";this.parentNode.style.height=n+"px"}})})}})(jQuery);(function(){function a(b,p,w){b=document.createElementNS(s.svg,b);if(g)for(var c in p)b.setAttribute(c,p[c]);else for(c in p){var f=p[c],d=b[c];if(d&&d.constructor==="SVGLength")d.baseVal.value=f;else b.setAttribute(c,f)}w&&w.appendChild(b);return b}var s={svg:"http://www.w3.org/2000/svg",xlink:"http://www.w3.org/1999/xlink"};if(!window.console)window.console=new function(){this.log=function(){};this.dir=function(){}};$.jGraduate={Paint:function(b){b=b||{};this.alpha=isNaN(b.alpha)?100:b.alpha;if(b.copy){this.type=
+b.copy.type;this.alpha=b.copy.alpha;this.radialGradient=this.linearGradient=this.solidColor=null;switch(this.type){case "solidColor":this.solidColor=b.copy.solidColor;break;case "linearGradient":this.linearGradient=b.copy.linearGradient.cloneNode(true);break;case "radialGradient":this.radialGradient=b.copy.radialGradient.cloneNode(true)}}else if(b.linearGradient){this.type="linearGradient";this.radialGradient=this.solidColor=null;this.linearGradient=b.linearGradient.cloneNode(true)}else if(b.radialGradient){this.type=
+"radialGradient";this.linearGradient=this.solidColor=null;this.radialGradient=b.radialGradient.cloneNode(true)}else if(b.solidColor){this.type="solidColor";this.solidColor=b.solidColor}else{this.type="none";this.radialGradient=this.linearGradient=this.solidColor=null}}};jQuery.fn.jGraduateDefaults={paint:new $.jGraduate.Paint,window:{pickerTitle:"Drag markers to pick a paint"},images:{clientPath:"images/"},newstop:"inverse"};var g=navigator.userAgent.indexOf("Gecko/")>=0;jQuery.fn.jGraduate=function(b){var p=
+arguments;return this.each(function(){function w(ia,aa,ka,M,P){var da=P||a("stop",{"stop-color":aa,"stop-opacity":ka,offset:ia},ea);if(P){aa=P.getAttribute("stop-color");ka=P.getAttribute("stop-opacity");ia=P.getAttribute("offset")}else ea.appendChild(da);if(ka===null)ka=1;P=a("path",{d:"M-6.2,0.9c3.6-4,6.7-4.3,6.7-12.4c-0.2,7.9,3.1,8.8,6.5,12.4c3.5,3.8,2.9,9.6,0,12.3c-3.1,2.8-10.4,2.7-13.2,0C-9.6,9.9-9.4,4.4-6.2,0.9z",fill:"url(#jGraduate_trans)",transform:"translate("+(10+ia*ga)+", 26)"},kb);var Ea=
+a("path",{d:"M-6.2,0.9c3.6-4,6.7-4.3,6.7-12.4c-0.2,7.9,3.1,8.8,6.5,12.4c3.5,3.8,2.9,9.6,0,12.3c-3.1,2.8-10.4,2.7-13.2,0C-9.6,9.9-9.4,4.4-6.2,0.9z",fill:aa,"fill-opacity":ka,transform:"translate("+(10+ia*ga)+", 26)",stroke:"#000","stroke-width":1.5},kb);$(Ea).mousedown(function(Oa){c(this);Va=cb;S.mousemove(n).mouseup(f);ta=vb.offset();Oa.preventDefault();return false}).data("stop",da).data("bg",P).dblclick(function(){$("div.jGraduate_LightBox").show();for(var Oa=this,Wa=+da.getAttribute("stop-opacity")||
+1,Za=da.getAttribute("stop-color")||1,nb=(parseFloat(Wa)*255).toString(16);nb.length<2;)nb="0"+nb;aa=Za.substr(1)+nb;$("#"+q+"_jGraduate_stopPicker").css({left:100,bottom:15}).jPicker({window:{title:"Pick the start color and opacity for the gradient"},images:{clientPath:B.images.clientPath},color:{active:aa,alphaSupport:true}},function(Ra){Za=Ra.val("hex")?"#"+Ra.val("hex"):"none";Wa=Ra.val("a")!==null?Ra.val("a")/256:1;Oa.setAttribute("fill",Za);Oa.setAttribute("fill-opacity",Wa);da.setAttribute("stop-color",
+Za);da.setAttribute("stop-opacity",Wa);$("div.jGraduate_LightBox").hide();$("#"+q+"_jGraduate_stopPicker").hide()},null,function(){$("div.jGraduate_LightBox").hide();$("#"+q+"_jGraduate_stopPicker").hide()})});$(ea).find("stop").each(function(){var Oa=$(this);if(+this.getAttribute("offset")>ia){if(!aa){var Wa=this.getAttribute("stop-color"),Za=this.getAttribute("stop-opacity");da.setAttribute("stop-color",Wa);Ea.setAttribute("fill",Wa);da.setAttribute("stop-opacity",Za===null?1:Za);Ea.setAttribute("fill-opacity",
+Za===null?1:Za)}Oa.before(da);return false}});M&&c(Ea);return da}function c(ia){cb&&cb.setAttribute("stroke","#000");ia.setAttribute("stroke","blue");cb=ia;cb.parentNode.appendChild(cb)}function f(){S.unbind("mousemove",n);if(Ga.getAttribute("display")!=="none"){Ga.setAttribute("display","none");var ia=$(cb),aa=ia.data("stop");ia=ia.data("bg");$([cb,aa,ia]).remove()}Va=null}function d(){var ia=Sa?"rotate("+Sa+","+Ha+","+db+") ":"";$a===1&&Ka===1?ea.removeAttribute("gradientTransform"):ea.setAttribute("gradientTransform",
+ia+"translate("+-Ha*($a-1)+","+-db*(Ka-1)+") scale("+$a+","+Ka+")")}function n(ia){var aa=ia.pageX-ta.left;ia=ia.pageY-ta.top;aa=aa<10?10:aa>ga+10?ga+10:aa;var ka="translate("+aa+", 26)";if(ia<-60||ia>130){Ga.setAttribute("display","block");Ga.setAttribute("transform",ka)}else Ga.setAttribute("display","none");Va.setAttribute("transform",ka);$.data(Va,"bg").setAttribute("transform",ka);$.data(Va,"stop").setAttribute("offset",(aa-10)/ga);var M=0;$(ea).find("stop").each(function(){var P=this.getAttribute("offset"),
+da=$(this);if(P<M){da.prev().before(da);va=$(ea).find("stop")}M=P})}var v=$(this),B=$.extend(true,{},jQuery.fn.jGraduateDefaults,b),q=v.attr("id"),L="#"+v.attr("id")+" ";if(L){var Q=function(){switch(v.paint.type){case "radialGradient":v.paint.linearGradient=null;break;case "linearGradient":v.paint.radialGradient=null;break;case "solidColor":v.paint.radialGradient=v.paint.linearGradient=null}$.isFunction(v.okCallback)&&v.okCallback(v.paint);v.hide()},K=function(){$.isFunction(v.cancelCallback)&&v.cancelCallback();
+v.hide()};$.extend(true,v,{paint:new $.jGraduate.Paint({copy:B.paint}),okCallback:$.isFunction(p[1])&&p[1]||null,cancelCallback:$.isFunction(p[2])&&p[2]||null});v.position();var I=null,S=$(window);if(v.paint.type=="none")v.paint=$.jGraduate.Paint({solidColor:"ffffff"});v.addClass("jGraduate_Picker");v.html('<ul class="jGraduate_tabs"><li class="jGraduate_tab_color jGraduate_tab_current" data-type="col">Solid Color</li><li class="jGraduate_tab_lingrad" data-type="lg">Linear Gradient</li><li class="jGraduate_tab_radgrad" data-type="rg">Radial Gradient</li></ul><div class="jGraduate_colPick"></div><div class="jGraduate_gradPick"></div><div class="jGraduate_LightBox"></div><div id="'+
+q+'_jGraduate_stopPicker" class="jGraduate_stopPicker"></div>');var R=$(L+"> .jGraduate_colPick"),N=$(L+"> .jGraduate_gradPick");N.html('<div id="'+q+'_jGraduate_Swatch" class="jGraduate_Swatch"><h2 class="jGraduate_Title">'+B.window.pickerTitle+'</h2><div id="'+q+'_jGraduate_GradContainer" class="jGraduate_GradContainer"></div><div id="'+q+'_jGraduate_StopSlider" class="jGraduate_StopSlider"></div></div><div class="jGraduate_Form jGraduate_Points jGraduate_lg_field"><div class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">Begin Point</label><div class="jGraduate_Form_Section"><label>x:</label><input type="text" id="'+
+q+'_jGraduate_x1" size="3" title="Enter starting x value between 0.0 and 1.0"/><label> y:</label><input type="text" id="'+q+'_jGraduate_y1" size="3" title="Enter starting y value between 0.0 and 1.0"/></div></div><div class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">End Point</label><div class="jGraduate_Form_Section"><label>x:</label><input type="text" id="'+q+'_jGraduate_x2" size="3" title="Enter ending x value between 0.0 and 1.0"/><label> y:</label><input type="text" id="'+
+q+'_jGraduate_y2" size="3" title="Enter ending y value between 0.0 and 1.0"/></div></div></div><div class="jGraduate_Form jGraduate_Points jGraduate_rg_field"><div class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">Center Point</label><div class="jGraduate_Form_Section"><label>x:</label><input type="text" id="'+q+'_jGraduate_cx" size="3" title="Enter x value between 0.0 and 1.0"/><label> y:</label><input type="text" id="'+q+'_jGraduate_cy" size="3" title="Enter y value between 0.0 and 1.0"/></div></div><div class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">Focal Point</label><div class="jGraduate_Form_Section"><label>Match center: <input type="checkbox" checked="checked" id="'+
+q+'_jGraduate_match_ctr"/></label><br/><label>x:</label><input type="text" id="'+q+'_jGraduate_fx" size="3" title="Enter x value between 0.0 and 1.0"/><label> y:</label><input type="text" id="'+q+'_jGraduate_fy" size="3" title="Enter y value between 0.0 and 1.0"/></div></div></div><div class="jGraduate_StopSection jGraduate_SpreadMethod"><label class="jGraduate_Form_Heading">Spread method</label><div class="jGraduate_Form_Section"><select class="jGraduate_spreadMethod"><option value=pad selected>Pad</option><option value=reflect>Reflect</option><option value=repeat>Repeat</option></select></div></div><div class="jGraduate_Form"><div class="jGraduate_Slider jGraduate_RadiusField jGraduate_rg_field"><label class="prelabel">Radius:</label><div id="'+
+q+'_jGraduate_Radius" class="jGraduate_SliderBar jGraduate_Radius" title="Click to set radius"><img id="'+q+'_jGraduate_RadiusArrows" class="jGraduate_RadiusArrows" src="'+B.images.clientPath+'rangearrows2.gif"></div><label><input type="text" id="'+q+'_jGraduate_RadiusInput" size="3" value="100"/>%</label></div><div class="jGraduate_Slider jGraduate_EllipField jGraduate_rg_field"><label class="prelabel">Ellip:</label><div id="'+q+'_jGraduate_Ellip" class="jGraduate_SliderBar jGraduate_Ellip" title="Click to set Ellip"><img id="'+
+q+'_jGraduate_EllipArrows" class="jGraduate_EllipArrows" src="'+B.images.clientPath+'rangearrows2.gif"></div><label><input type="text" id="'+q+'_jGraduate_EllipInput" size="3" value="0"/>%</label></div><div class="jGraduate_Slider jGraduate_AngleField jGraduate_rg_field"><label class="prelabel">Angle:</label><div id="'+q+'_jGraduate_Angle" class="jGraduate_SliderBar jGraduate_Angle" title="Click to set Angle"><img id="'+q+'_jGraduate_AngleArrows" class="jGraduate_AngleArrows" src="'+B.images.clientPath+
+'rangearrows2.gif"></div><label><input type="text" id="'+q+'_jGraduate_AngleInput" size="3" value="0"/>\u00ba&nbsp;</label></div><div class="jGraduate_Slider jGraduate_OpacField"><label class="prelabel">Opac:</label><div id="'+q+'_jGraduate_Opac" class="jGraduate_SliderBar jGraduate_Opac" title="Click to set Opac"><img id="'+q+'_jGraduate_OpacArrows" class="jGraduate_OpacArrows" src="'+B.images.clientPath+'rangearrows2.gif"></div><label><input type="text" id="'+q+'_jGraduate_OpacInput" size="3" value="100"/>%</label></div></div><div class="jGraduate_OkCancel"><input type="button" id="'+
+q+'_jGraduate_Ok" class="jGraduate_Ok" value="OK"/><input type="button" id="'+q+'_jGraduate_Cancel" class="jGraduate_Cancel" value="Cancel"/></div>');var ga=256,oa=ga-0,Y=ga-0,V,ea,Ba,ja={};$(".jGraduate_SliderBar").width(145);var ca=$("#"+q+"_jGraduate_GradContainer")[0],U=a("svg",{id:q+"_jgraduate_svg",width:ga,height:ga,xmlns:s.svg},ca);V=V||v.paint.type;var Z=ea=v.paint[V],na=v.paint.alpha,pa=V==="solidColor";switch(V){case "solidColor":case "linearGradient":if(!pa){ea.id=q+"_lg_jgraduate_grad";
+Z=ea=U.appendChild(ea)}a("radialGradient",{id:q+"_rg_jgraduate_grad"},U);if(V==="linearGradient")break;case "radialGradient":if(!pa){ea.id=q+"_rg_jgraduate_grad";Z=ea=U.appendChild(ea)}a("linearGradient",{id:q+"_lg_jgraduate_grad"},U)}if(pa){Z=ea=$("#"+q+"_lg_jgraduate_grad")[0];I=v.paint[V];w(0,"#"+I,1);var ma=typeof B.newstop;if(ma==="string")switch(B.newstop){case "same":w(1,"#"+I,1);break;case "inverse":ma="";for(var la=0;la<6;la+=2){I.substr(la,2);var ya=(255-parseInt(I.substr(la,2),16)).toString(16);
+if(ya.length<2)ya=0+ya;ma+=ya}w(1,"#"+ma,1);break;case "white":w(1,"#ffffff",1);break;case "black":w(1,"#000000",1)}else if(ma==="object")w(1,B.newstop.color||"#"+I,"opac"in B.newstop?B.newstop.opac:1)}I=parseFloat(Z.getAttribute("x1")||0);ma=parseFloat(Z.getAttribute("y1")||0);la=parseFloat(Z.getAttribute("x2")||1);ya=parseFloat(Z.getAttribute("y2")||0);var za=parseFloat(Z.getAttribute("cx")||0.5),Ja=parseFloat(Z.getAttribute("cy")||0.5),Ia=parseFloat(Z.getAttribute("fx")||za),Fa=parseFloat(Z.getAttribute("fy")||
+Ja);Ba=a("rect",{id:q+"_jgraduate_rect",x:0,y:0,width:oa,height:Y,fill:"url(#"+q+"_jgraduate_grad)","fill-opacity":na/100},U);var Ma=$("<div/>").attr({"class":"grad_coord jGraduate_lg_field",title:"Begin Stop"}).text(1).css({top:ma*ga,left:I*ga}).data("coord","start").appendTo(ca),Da=Ma.clone().text(2).css({top:ya*ga,left:la*ga}).attr("title","End stop").data("coord","end").appendTo(ca),wa=$("<div/>").attr({"class":"grad_coord jGraduate_rg_field",title:"Center stop"}).text("C").css({top:Ja*ga,left:za*
+ga}).data("coord","center").appendTo(ca),ra=wa.clone().text("F").css({top:Fa*ga,left:Ia*ga,display:"none"}).attr("title","Focus point").data("coord","focus").appendTo(ca);ra[0].id=q+"_jGraduate_focusCoord";$(L+" .grad_coord");$.each(["x1","y1","x2","y2","cx","cy","fx","fy"],function(ia,aa){var ka=ea.getAttribute(aa),M=isNaN(aa[1]);ka||(ka=M?"0.5":aa==="x2"?"1.0":"0.0");ja[aa]=$("#"+q+"_jGraduate_"+aa).val(ka).change(function(){if(isNaN(parseFloat(this.value))||this.value<0)this.value=0;else if(this.value>
+1)this.value=1;if(!(aa[0]==="f"&&!eb))if(M&&V==="radialGradient"||!M&&V==="linearGradient")ea.setAttribute(aa,this.value);var P=M?aa[0]==="c"?wa:ra:aa[1]==="1"?Ma:Da,da=aa.indexOf("x")>=0?"left":"top";P.css(da,this.value*ga)}).change()});var va,kb,vb=$("#"+q+"_jGraduate_StopSlider"),cb,Ta,Va,Ga=a("path",{d:"m9.75,-6l-19.5,19.5m0,-19.5l19.5,19.5",fill:"none",stroke:"#D00","stroke-width":5,display:"none"},Ta),ta,$a=1,Ka=1,Sa=0,Ha=za,db=Ja;Ta=a("svg",{width:"100%",height:45},vb[0]);ca=a("pattern",{width:16,
+height:16,patternUnits:"userSpaceOnUse",id:"jGraduate_trans"},Ta);a("image",{width:16,height:16},ca).setAttributeNS(s.xlink,"xlink:href",B.images.clientPath+"map-opacity.png");$(Ta).on("click touchstart",function(ia){ta=vb.offset();if(ia.target.tagName!=="path"){var aa=ia.pageX-ta.left-8;aa=aa<10?10:aa>ga+10?ga+10:aa;w(aa/ga,0,0,true);ia.stopPropagation()}});$(Ta).mouseover(function(){Ta.appendChild(Ga)});kb=a("g",{},Ta);a("line",{x1:10,y1:15,x2:ga+10,y2:15,"stroke-width":2,stroke:"#000"},Ta);var lb=
+N.find(".jGraduate_spreadMethod").change(function(){ea.setAttribute("spreadMethod",$(this).val())}),Ua=null,Xa=function(ia){var aa=ia.pageX-hb.left,ka=ia.pageY-hb.top;aa=aa<0?0:aa>ga?ga:aa;ka=ka<0?0:ka>ga?ga:ka;Ua.css("left",aa).css("top",ka);aa=aa/oa;ka=ka/Y;var M=Ua.data("coord"),P=ea;switch(M){case "start":ja.x1.val(aa);ja.y1.val(ka);P.setAttribute("x1",aa);P.setAttribute("y1",ka);break;case "end":ja.x2.val(aa);ja.y2.val(ka);P.setAttribute("x2",aa);P.setAttribute("y2",ka);break;case "center":ja.cx.val(aa);
+ja.cy.val(ka);P.setAttribute("cx",aa);P.setAttribute("cy",ka);Ha=aa;db=ka;d();break;case "focus":ja.fx.val(aa);ja.fy.val(ka);P.setAttribute("fx",aa);P.setAttribute("fy",ka);d()}ia.preventDefault()},wb=function(){Ua=null;S.unbind("mousemove",Xa).unbind("mouseup",wb)};va=ea.getElementsByTagNameNS(s.svg,"stop");if(sa<2){for(;sa<2;){ea.appendChild(document.createElementNS(s.svg,"stop"));++sa}va=ea.getElementsByTagNameNS(s.svg,"stop")}var sa=va.length;for(la=0;la<sa;la++)w(0,0,0,0,va[la]);lb.val(ea.getAttribute("spreadMethod")||
+"pad");var hb,eb=false;Ba.setAttribute("fill-opacity",na/100);$("#"+q+" div.grad_coord").mousedown(function(ia){ia.preventDefault();Ua=$(this);Ua.offset();hb=Ua.parent().offset();S.mousemove(Xa).mouseup(wb)});$("#"+q+"_jGraduate_Ok").bind("click touchstart",function(){v.paint.type=V;v.paint[V]=ea.cloneNode(true);v.paint.solidColor=null;Q()});$("#"+q+"_jGraduate_Cancel").bind("click touchstart",function(){K()});if(V==="radialGradient")if(eb)ra.show();else{ra.hide();ja.fx.val("");ja.fy.val("")}$("#"+
+q+"_jGraduate_match_ctr")[0].checked=!eb;var sb,ib;$("#"+q+"_jGraduate_match_ctr").change(function(){eb=!this.checked;ra.toggle(eb);ja.fx.val("");ja.fy.val("");var ia=ea;if(eb){var aa=sb||0.5,ka=ib||0.5;ia.setAttribute("fx",aa);ia.setAttribute("fy",ka);ja.fx.val(aa);ja.fy.val(ka)}else{sb=ia.getAttribute("fx");ib=ia.getAttribute("fy");ia.removeAttribute("fx");ia.removeAttribute("fy")}});va=ea.getElementsByTagNameNS(s.svg,"stop");sa=va.length;if(sa<2){for(;sa<2;){ea.appendChild(document.createElementNS(s.svg,
+"stop"));++sa}va=ea.getElementsByTagNameNS(s.svg,"stop")}var ab;na=N=0;if(V==="radialGradient"){U=ea.gradientTransform.baseVal;if(U.numberOfItems===2){sa=U.getItem(0);U=U.getItem(1);if(sa.type===2&&U.type===3){sa=U.matrix;if(sa.a!==1)N=Math.round(-(1-sa.a)*100);else if(sa.d!==1)N=Math.round((1-sa.d)*100)}}else if(U.numberOfItems===3){ca=U.getItem(0);sa=U.getItem(1);U=U.getItem(2);if(ca.type===4&&sa.type===2&&U.type===3){na=Math.round(ca.angle);sa=U.matrix;if(sa.a!==1)N=Math.round(-(1-sa.a)*100);else if(sa.d!==
+1)N=Math.round((1-sa.d)*100)}}}N={radius:{handle:"#"+q+"_jGraduate_RadiusArrows",input:"#"+q+"_jGraduate_RadiusInput",val:(ea.getAttribute("r")||0.5)*100},opacity:{handle:"#"+q+"_jGraduate_OpacArrows",input:"#"+q+"_jGraduate_OpacInput",val:v.paint.alpha||100},ellip:{handle:"#"+q+"_jGraduate_EllipArrows",input:"#"+q+"_jGraduate_EllipInput",val:N},angle:{handle:"#"+q+"_jGraduate_AngleArrows",input:"#"+q+"_jGraduate_AngleInput",val:na}};$.each(N,function(ia,aa){var ka=$(aa.handle);ka.mousedown(function(M){var P=
+ka.parent();ab={type:ia,elem:ka,input:$(aa.input),parent:P,offset:P.offset()};S.mousemove(ob).mouseup(pb);M.preventDefault()});$(aa.input).val(aa.val).change(function(){var M=+this.value,P=0,da=V==="radialGradient";switch(ia){case "radius":da&&ea.setAttribute("r",M/100);P=Math.pow(M/100,0.4)/2*145;break;case "opacity":v.paint.alpha=M;Ba.setAttribute("fill-opacity",M/100);P=M*1.45;break;case "ellip":$a=Ka=1;if(M===0){P=72.5;break}if(M>99.5)M=99.5;if(M>0)Ka=1-M/100;else $a=-(M/100)-1;P=145*((M+100)/
+2)/100;da&&d();break;case "angle":Sa=M;P=Sa/180;P+=0.5;P*=145;da&&d()}if(P>145)P=145;else if(P<0)P=0;ka.css({"margin-left":P-5})}).change()});var ob=function(ia){var aa=ia.pageX-ab.offset.left-parseInt(ab.parent.css("border-left-width"));if(aa>145)aa=145;if(aa<=0)aa=0;var ka=aa-5;aa/=145;switch(ab.type){case "radius":aa=Math.pow(aa*2,2.5);if(aa>0.98&&aa<1.02)aa=1;if(aa<=0.01)aa=0.01;ea.setAttribute("r",aa);break;case "opacity":v.paint.alpha=parseInt(aa*100);Ba.setAttribute("fill-opacity",aa);break;
+case "ellip":Ka=$a=1;if(aa<0.5){aa/=0.5;$a=aa<=0?0.01:aa}else if(aa>0.5){aa/=0.5;aa=2-aa;Ka=aa<=0?0.01:aa}d();aa-=1;if(Ka===aa+1)aa=Math.abs(aa);break;case "angle":aa-=0.5;Sa=aa*=180;d();aa/=100}ab.elem.css({"margin-left":ka});aa=Math.round(aa*100);ab.input.val(aa);ia.preventDefault()},pb=function(){S.unbind("mousemove",ob).unbind("mouseup",pb);ab=null};for(N=(v.paint.alpha*255/100).toString(16);N.length<2;)N="0"+N;N=N.split(".")[0];I=v.paint.solidColor=="none"?"":v.paint.solidColor+N;pa||(I=va[0].getAttribute("stop-color"));
+$.extend($.fn.jPicker.defaults.window,{alphaSupport:true,effects:{type:"show",speed:0}});R.jPicker({window:{title:B.window.pickerTitle},images:{clientPath:B.images.clientPath},color:{active:I,alphaSupport:true}},function(ia){v.paint.type="solidColor";v.paint.alpha=ia.val("ahex")?Math.round(ia.val("a")/255*100):100;v.paint.solidColor=ia.val("hex")?ia.val("hex"):"none";v.paint.radialGradient=null;Q()},null,function(){K()});var fb=$(L+" .jGraduate_tabs li");fb.on("click touchstart",function(){fb.removeClass("jGraduate_tab_current");
+$(this).addClass("jGraduate_tab_current");$(L+" > div").hide();var ia=$(this).attr("data-type");$(L+" .jGraduate_gradPick").show();if(ia==="rg"||ia==="lg"){$(".jGraduate_"+ia+"_field").show();$(".jGraduate_"+(ia==="lg"?"rg":"lg")+"_field").hide();$("#"+q+"_jgraduate_rect")[0].setAttribute("fill","url(#"+q+"_"+ia+"_jgraduate_grad)");V=ia==="lg"?"linearGradient":"radialGradient";$("#"+q+"_jGraduate_OpacInput").val(v.paint.alpha).change();var aa=$("#"+q+"_"+ia+"_jgraduate_grad")[0];if(ea!==aa){var ka=
+$(ea).find("stop");$(aa).empty().append(ka);ea=aa;aa=lb.val();ea.setAttribute("spreadMethod",aa)}eb=ia==="rg"&&ea.getAttribute("fx")!=null&&!(za==Ia&&Ja==Fa);$("#"+q+"_jGraduate_focusCoord").toggle(eb);if(eb)$("#"+q+"_jGraduate_match_ctr")[0].checked=false}else{$(L+" .jGraduate_gradPick").hide();$(L+" .jGraduate_colPick").show()}});$(L+" > div").hide();fb.removeClass("jGraduate_tab_current");var tb;switch(v.paint.type){case "linearGradient":tb=$(L+" .jGraduate_tab_lingrad");break;case "radialGradient":tb=
+$(L+" .jGraduate_tab_radgrad");break;default:tb=$(L+" .jGraduate_tab_color")}v.show();setTimeout(function(){tb.addClass("jGraduate_tab_current").click()},10)}else alert("Container element must have an id attribute to maintain unique id strings for sub-elements.")})}})();jQuery&&function(){var a=$(window),s=$(document);$.extend($.fn,{contextMenu:function(g,b){if(g.menu==undefined)return false;if(g.inSpeed==undefined)g.inSpeed=150;if(g.outSpeed==undefined)g.outSpeed=75;if(g.inSpeed==0)g.inSpeed=-1;if(g.outSpeed==0)g.outSpeed=-1;$(this).each(function(){var p=$(this),w=$(p).offset(),c=$("#"+g.menu);c.addClass("contextMenu");$(this).bind("mousedown",function(d){$(this).on("mouseup",function(n){var v=$(this);v.unbind("mouseup");$(".contextMenu").hide();if(d.button===2||
+g.allowLeft||d.ctrlKey&&svgedit.browser.isMac())svgedit.browser.isTouch()||f(n,d,v)})});svgedit.browser.isTouch()&&$(this).bind("taphold",function(d){var n=$(this);n.unbind("mouseup");f(d,d,n)});var f=function(d,n,v){if(typeof n=="undefined")n=d;d.stopPropagation();if(p.hasClass("disabled")||n.altKey)return false;var B=d.pageX,q=d.pageY;if(svgedit.browser.isTouch()){B=d.originalEvent.touches[0].pageX;q=d.originalEvent.touches[0].pageY}d=a.width()-c.width();n=a.height()-c.height();if(B>d-15)B=d-15;
+if(q>n-30)q=n-30;if(svgedit.browser.isTouch())q-=c.height()/2;s.unbind("click");c.css({top:q,left:B}).fadeIn(g.inSpeed);c.find("A").mouseover(function(){c.find("LI.hover").removeClass("hover");$(this).parent().addClass("hover")}).mouseout(function(){c.find("LI.hover").removeClass("hover")});s.keypress(function(L){switch(L.keyCode){case 38:if(c.find("LI.hover").length){c.find("LI.hover").removeClass("hover").prevAll("LI:not(.disabled)").eq(0).addClass("hover");c.find("LI.hover").length||c.find("LI:last").addClass("hover")}else c.find("LI:last").addClass("hover");
+break;case 40:if(c.find("LI.hover").length==0)c.find("LI:first").addClass("hover");else{c.find("LI.hover").removeClass("hover").nextAll("LI:not(.disabled)").eq(0).addClass("hover");c.find("LI.hover").length||c.find("LI:first").addClass("hover")}break;case 13:c.find("LI.hover A").trigger("click");break;case 27:s.trigger("click")}});c.find("A").unbind("mouseup");c.find("LI:not(.disabled) A").mouseup(function(){s.unbind("click").unbind("keypress");$(".contextMenu").hide();b&&b($(this).attr("href").substr(1),
+$(v),{x:B-w.left,y:q-w.top,docX:B,docY:q});return false});setTimeout(function(){s.click(function(){s.unbind("click").unbind("keypress");c.fadeOut(g.outSpeed);return false})},0)};if($.browser.mozilla)$("#"+g.menu).each(function(){$(this).css({MozUserSelect:"none"})});else $.browser.msie?$("#"+g.menu).each(function(){$(this).bind("selectstart.disableTextSelect",function(){return false})}):$("#"+g.menu).each(function(){$(this).bind("mousedown.disableTextSelect",function(){return false})});$(p).add($("UL.contextMenu")).bind("contextmenu",
+function(){return false})});return $(this)},disableContextMenuItems:function(g){if(g==undefined){$(this).find("LI").addClass("disabled");return $(this)}$(this).each(function(){if(g!=undefined)for(var b=g.split(","),p=0;p<b.length;p++)$(this).find('A[href="'+b[p]+'"]').parent().addClass("disabled")});return $(this)},enableContextMenuItems:function(g){if(g==undefined){$(this).find("LI.disabled").removeClass("disabled");return $(this)}$(this).each(function(){if(g!=undefined)for(var b=g.split(","),p=
+0;p<b.length;p++)$(this).find('A[href="'+b[p]+'"]').parent().removeClass("disabled")});return $(this)},disableContextMenu:function(){$(this).each(function(){$(this).addClass("disabled")});return $(this)},enableContextMenu:function(){$(this).each(function(){$(this).removeClass("disabled")});return $(this)},destroyContextMenu:function(){$(this).each(function(){$(this).unbind("mousedown").unbind("mouseup")});return $(this)}})}(jQuery);var svgedit=svgedit||{};
+(function(){if(!svgedit.browser)svgedit.browser={};var a=!!document.createElementNS&&!!document.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect;svgedit.browser.supportsSvg=function(){return a};if(svgedit.browser.supportsSvg()){var s=navigator.userAgent,g=document.createElementNS("http://www.w3.org/2000/svg","svg"),b=!!window.opera,p=s.indexOf("AppleWebKit")>=0,w=s.indexOf("Gecko/")>=0,c=s.indexOf("MSIE")>=0,f=s.indexOf("Chrome/")>=0,d=s.indexOf("Windows")>=0,n=s.indexOf("Macintosh")>=
+0,v="ontouchstart"in window,B=!!g.querySelector,q=!!document.evaluate,L=function(){var oa=document.createElementNS("http://www.w3.org/2000/svg","path");oa.setAttribute("d","M0,0 10,10");var Y=oa.pathSegList;oa=oa.createSVGPathSegLinetoAbs(5,5);try{Y.replaceItem(oa,0);return true}catch(V){}return false}(),Q=function(){var oa=document.createElementNS("http://www.w3.org/2000/svg","path");oa.setAttribute("d","M0,0 10,10");var Y=oa.pathSegList;oa=oa.createSVGPathSegLinetoAbs(5,5);try{Y.insertItemBefore(oa,
+0);return true}catch(V){}return false}(),K=function(){var oa=document.createElementNS("http://www.w3.org/2000/svg","svg"),Y=document.createElementNS("http://www.w3.org/2000/svg","svg");document.documentElement.appendChild(oa);Y.setAttribute("x",5);oa.appendChild(Y);var V=document.createElementNS("http://www.w3.org/2000/svg","text");V.textContent="a";Y.appendChild(V);Y=V.getStartPositionOfChar(0);Y=Y.x;document.documentElement.removeChild(oa);return Y===0}(),I=function(){var oa=document.createElementNS("http://www.w3.org/2000/svg",
+"svg");document.documentElement.appendChild(oa);var Y=document.createElementNS("http://www.w3.org/2000/svg","path");Y.setAttribute("d","M0,0 C0,0 10,10 10,0");oa.appendChild(Y);Y=Y.getBBox();document.documentElement.removeChild(oa);return Y.height>4&&Y.height<5}(),S=function(){var oa=document.createElementNS("http://www.w3.org/2000/svg","svg");document.documentElement.appendChild(oa);var Y=document.createElementNS("http://www.w3.org/2000/svg","path");Y.setAttribute("d","M0,0 10,0");var V=document.createElementNS("http://www.w3.org/2000/svg",
+"path");V.setAttribute("d","M5,0 15,0");var ea=document.createElementNS("http://www.w3.org/2000/svg","g");ea.appendChild(Y);ea.appendChild(V);oa.appendChild(ea);Y=ea.getBBox();document.documentElement.removeChild(oa);return Y.width==15}(),R=function(){var oa=document.createElementNS("http://www.w3.org/2000/svg","rect");oa.setAttribute("x",0.1);(oa=oa.cloneNode(false).getAttribute("x").indexOf(",")==-1)||$.alert("NOTE: This version of Opera is known to contain bugs in SVG-edit.\n\t\tPlease upgrade to the <a href='http://opera.com'>latest version</a> in which the problems have been fixed.");
+return oa}(),N=function(){var oa=document.createElementNS("http://www.w3.org/2000/svg","rect");oa.setAttribute("style","vector-effect:non-scaling-stroke");return oa.style.vectorEffect==="non-scaling-stroke"}(),ga=function(){var oa=document.createElementNS("http://www.w3.org/2000/svg","rect").transform.baseVal,Y=g.createSVGTransform();oa.appendItem(Y);return oa.getItem(0)==Y}();svgedit.browser.isOpera=function(){return b};svgedit.browser.isWebkit=function(){return p};svgedit.browser.isGecko=function(){return w};
+svgedit.browser.isIE=function(){return c};svgedit.browser.isChrome=function(){return f};svgedit.browser.isWindows=function(){return d};svgedit.browser.isMac=function(){return n};svgedit.browser.isTouch=function(){return v};svgedit.browser.supportsSelectors=function(){return B};svgedit.browser.supportsXpath=function(){return q};svgedit.browser.supportsPathReplaceItem=function(){return L};svgedit.browser.supportsPathInsertItemBefore=function(){return Q};svgedit.browser.supportsPathBBox=function(){return I};
+svgedit.browser.supportsHVLineContainerBBox=function(){return S};svgedit.browser.supportsGoodTextCharPos=function(){return K};svgedit.browser.supportsEditableText=function(){return b};svgedit.browser.supportsGoodDecimals=function(){return R};svgedit.browser.supportsNonScalingStroke=function(){return N};svgedit.browser.supportsNativeTransformLists=function(){return ga}}else window.location="browser-not-supported.html"})();svgedit=svgedit||{};
+(function(){if(!svgedit.transformlist)svgedit.transformlist={};var a=document.createElementNS("http://www.w3.org/2000/svg","svg"),s={};svgedit.transformlist.SVGTransformList=function(g){this._elem=g||null;this._xforms=[];this._update=function(){var b="";a.createSVGMatrix();for(var p=0;p<this.numberOfItems;++p){var w=this._list.getItem(p);b=b;w=w;var c=w.matrix,f="";switch(w.type){case 1:f="matrix("+[c.a,c.b,c.c,c.d,c.e,c.f].join(",")+")";break;case 2:f="translate("+c.e+","+c.f+")";break;case 3:f=
+c.a==c.d?"scale("+c.a+")":"scale("+c.a+","+c.d+")";break;case 4:var d=0;f=0;if(w.angle!=0){d=1-c.a;f=(d*c.f+c.b*c.e)/(d*d+c.b*c.b);d=(c.e-c.b*f)/d}f="rotate("+w.angle+" "+d+","+f+")"}b=b+(f+" ")}this._elem.setAttribute("transform",b)};this._list=this;this._init=function(){var b=this._elem.getAttribute("transform");if(b)for(var p=/\s*((scale|matrix|rotate|translate)\s*\(.*?\))\s*,?\s*/,w=true;w;){w=b.match(p);b=b.replace(p,"");if(w&&w[1]){var c=w[1].split(/\s*\(/),f=c[0];c=c[1].match(/\s*(.*?)\s*\)/);
+c[1]=c[1].replace(/(\d)-/g,"$1 -");var d=c[1].split(/[, ]+/),n="abcdef".split(""),v=a.createSVGMatrix();$.each(d,function(L,Q){d[L]=parseFloat(Q);if(f=="matrix")v[n[L]]=d[L]});c=a.createSVGTransform();var B="set"+f.charAt(0).toUpperCase()+f.slice(1),q=f=="matrix"?[v]:d;if(f=="scale"&&q.length==1)q.push(q[0]);else if(f=="translate"&&q.length==1)q.push(0);else if(f=="rotate"&&q.length==1){q.push(0);q.push(0)}c[B].apply(c,q);this._list.appendItem(c)}}};this._removeFromOtherLists=function(b){if(b){var p=
+false,w;for(w in s){for(var c=s[w],f=0,d=c._xforms.length;f<d;++f)if(c._xforms[f]==b){p=true;c.removeItem(f);break}if(p)break}}};this.numberOfItems=0;this.clear=function(){this.numberOfItems=0;this._xforms=[]};this.initialize=function(b){this.numberOfItems=1;this._removeFromOtherLists(b);this._xforms=[b]};this.getItem=function(b){if(b<this.numberOfItems&&b>=0)return this._xforms[b];throw{code:1};};this.insertItemBefore=function(b,p){var w=null;if(p>=0)if(p<this.numberOfItems){this._removeFromOtherLists(b);
+w=Array(this.numberOfItems+1);for(var c=0;c<p;++c)w[c]=this._xforms[c];w[c]=b;for(var f=c+1;c<this.numberOfItems;++f,++c)w[f]=this._xforms[c];this.numberOfItems++;this._xforms=w;w=b;this._list._update()}else w=this._list.appendItem(b);return w};this.replaceItem=function(b,p){var w=null;if(p<this.numberOfItems&&p>=0){this._removeFromOtherLists(b);w=this._xforms[p]=b;this._list._update()}return w};this.removeItem=function(b){if(b<this.numberOfItems&&b>=0){for(var p=this._xforms[b],w=Array(this.numberOfItems-
+1),c=0;c<b;++c)w[c]=this._xforms[c];for(b=c;b<this.numberOfItems-1;++b,++c)w[b]=this._xforms[c+1];this.numberOfItems--;this._xforms=w;this._list._update();return p}else throw{code:1};};this.appendItem=function(b){this._removeFromOtherLists(b);this._xforms.push(b);this.numberOfItems++;this._list._update();return b}};svgedit.transformlist.resetListMap=function(){s={}};svgedit.transformlist.removeElementFromListMap=function(g){g.id&&s[g.id]&&delete s[g.id]};svgedit.transformlist.getTransformList=function(g){if(svgedit.browser.supportsNativeTransformLists())if(g.transform)return g.transform.baseVal;
+else if(g.gradientTransform)return g.gradientTransform.baseVal;else{if(g.patternTransform)return g.patternTransform.baseVal}else{var b=g.id;b||(b="temp");var p=s[b];if(!p||b=="temp"){s[b]=new svgedit.transformlist.SVGTransformList(g);s[b]._init();p=s[b]}return p}return null}})();svgedit=svgedit||{};
+(function(){if(!svgedit.math)svgedit.math={};var a=document.createElementNS("http://www.w3.org/2000/svg","svg");svgedit.math.transformPoint=function(s,g,b){return{x:b.a*s+b.c*g+b.e,y:b.b*s+b.d*g+b.f}};svgedit.math.isIdentity=function(s){return s.a===1&&s.b===0&&s.c===0&&s.d===1&&s.e===0&&s.f===0};svgedit.math.matrixMultiply=function(){for(var s=arguments,g=s.length,b=s[g-1];g-- >1;)b=s[g-1].multiply(b);if(Math.abs(b.a)<1.0E-14)b.a=0;if(Math.abs(b.b)<1.0E-14)b.b=0;if(Math.abs(b.c)<1.0E-14)b.c=0;if(Math.abs(b.d)<
+1.0E-14)b.d=0;if(Math.abs(b.e)<1.0E-14)b.e=0;if(Math.abs(b.f)<1.0E-14)b.f=0;return b};svgedit.math.hasMatrixTransform=function(s){if(!s)return false;for(var g=s.numberOfItems;g--;){var b=s.getItem(g);if(b.type==1&&!svgedit.math.isIdentity(b.matrix))return true}return false};svgedit.math.transformBox=function(s,g,b,p,w){var c={x:s,y:g},f={x:s+b,y:g};b={x:s+b,y:g+p};s={x:s,y:g+p};g=svgedit.math.transformPoint;c=g(c.x,c.y,w);var d=p=c.x,n=c.y,v=c.y;f=g(f.x,f.y,w);p=Math.min(p,f.x);d=Math.max(d,f.x);
+n=Math.min(n,f.y);v=Math.max(v,f.y);s=g(s.x,s.y,w);p=Math.min(p,s.x);d=Math.max(d,s.x);n=Math.min(n,s.y);v=Math.max(v,s.y);b=g(b.x,b.y,w);p=Math.min(p,b.x);d=Math.max(d,b.x);n=Math.min(n,b.y);v=Math.max(v,b.y);return{tl:c,tr:f,bl:s,br:b,aabox:{x:p,y:n,width:d-p,height:v-n}}};svgedit.math.transformListToTransform=function(s,g,b){if(s==null)return a.createSVGTransformFromMatrix(a.createSVGMatrix());g=g==undefined?0:g;b=b==undefined?s.numberOfItems-1:b;g=parseInt(g);b=parseInt(b);if(g>b){var p=b;b=g;
+g=p}p=a.createSVGMatrix();for(g=g;g<=b;++g){var w=g>=0&&g<s.numberOfItems?s.getItem(g).matrix:a.createSVGMatrix();p=svgedit.math.matrixMultiply(p,w)}return a.createSVGTransformFromMatrix(p)};svgedit.math.getMatrix=function(s){s=svgedit.transformlist.getTransformList(s);return svgedit.math.transformListToTransform(s).matrix};svgedit.math.snapToAngle=function(s,g,b,p){var w=Math.PI/4;b=b-s;var c=p-g;p=Math.sqrt(b*b+c*c);w=Math.round(Math.atan2(c,b)/w)*w;return{x:s+p*Math.cos(w),y:g+p*Math.sin(w),a:w}};
+svgedit.math.rectsIntersect=function(s,g){if(!s||!g)return false;return g.x<s.x+s.width&&g.x+g.width>s.x&&g.y<s.y+s.height&&g.y+g.height>s.y}})();svgedit=svgedit||{};
+(function(){if(!svgedit.units)svgedit.units={};var a=["x","x1","cx","rx","width"],s=["y","y1","cy","ry","height"],g=$.merge(["r","radius"],a);$.merge(g,s);var b,p={px:1};svgedit.units.init=function(c){b=c;c=document.createElementNS("http://www.w3.org/2000/svg","svg");document.body.appendChild(c);var f=document.createElementNS("http://www.w3.org/2000/svg","rect");f.setAttribute("width","1em");f.setAttribute("height","1ex");f.setAttribute("x","1in");c.appendChild(f);f=f.getBBox();document.body.removeChild(c);
+c=f.x;p.em=f.width;p.ex=f.height;p["in"]=c;p.cm=c/2.54;p.mm=c/25.4;p.pt=c/72;p.pc=c/6;p["%"]=0};svgedit.units.getTypeMap=function(){return p};svgedit.units.shortFloat=function(c){var f=b.getRoundDigits();if(isNaN(c)){if($.isArray(c))return svgedit.units.shortFloat(c[0])+","+svgedit.units.shortFloat(c[1])}else return+(+c).toFixed(f);return parseFloat(c).toFixed(f)-0};svgedit.units.convertUnit=function(c,f){f=f||b.getBaseUnit();return svgedit.unit.shortFloat(c/p[f])};svgedit.units.setUnitAttr=function(c,
+f,d){isNaN(d)||c.getAttribute(f);c.setAttribute(f,d)};var w={line:["x1","x2","y1","y2"],circle:["cx","cy","r"],ellipse:["cx","cy","rx","ry"],foreignObject:["x","y","width","height"],rect:["x","y","width","height"],image:["x","y","width","height"],use:["x","y","width","height"],text:["x","y"]};svgedit.units.convertAttrs=function(c){var f=c.tagName,d=b.getBaseUnit();if(f=w[f])for(var n=f.length,v=0;v<n;v++){var B=f[v],q=c.getAttribute(B);if(q)isNaN(q)||c.setAttribute(B,q/p[d]+d)}};svgedit.units.convertToNum=
+function(c,f){if(!isNaN(f))return f-0;if(f.substr(-1)==="%"){var d=f.substr(0,f.length-1)/100,n=b.getWidth(),v=b.getHeight();return a.indexOf(c)>=0?d*n:s.indexOf(c)>=0?d*v:d*Math.sqrt(n*n+v*v)/Math.sqrt(2)}else{n=f.substr(-2);d=f.substr(0,f.length-2);return d*p[n]}};svgedit.units.isValidUnit=function(c,f,d){var n=false;if(g.indexOf(c)>=0)if(isNaN(f)){f=f.toLowerCase();$.each(p,function(q){if(!n)if(RegExp("^-?[\\d\\.]+"+q+"$").test(f))n=true})}else n=true;else if(c=="id"){c=false;try{var v=b.getElement(f);
+c=v==null||v===d}catch(B){}return c}else n=true;return n}})();svgedit=svgedit||{};
+(function(){function a(c){if(svgedit.browser.supportsHVLineContainerBBox())try{return c.getBBox()}catch(f){}var d=$.data(c,"ref"),n=null;if(d){var v=$(d).children().clone().attr("visibility","hidden");$(w).append(v);n=v.filter("line, path")}else n=$(c).find("line, path");var B=false;if(n.length){n.each(function(){var q=this.getBBox();if(!q.width||!q.height)B=true});if(B){c=d?v:$(c).children();ret=getStrokedBBox(c)}else ret=c.getBBox()}else ret=c.getBBox();d&&v.remove();return ret}if(!svgedit.utilities)svgedit.utilities=
+{};var s="a,circle,ellipse,foreignObject,g,image,line,path,polygon,polyline,rect,svg,text,tspan,use".split(","),g=null,b=null,p=null,w=null;svgedit.utilities.init=function(c){g=c;b=c.getDOMDocument();p=c.getDOMContainer();w=c.getSVGRoot()};svgedit.utilities.toXml=function(c){return $("<p/>").text(c).html()};svgedit.utilities.fromXml=function(c){return $("<p/>").html(c).text()};svgedit.utilities.encode64=function(c){c=svgedit.utilities.convertToXMLReferences(c);if(window.btoa)return window.btoa(c);
+var f=Array(Math.floor((c.length+2)/3)*4),d,n,v,B,q,L,Q=0,K=0;do{d=c.charCodeAt(Q++);n=c.charCodeAt(Q++);v=c.charCodeAt(Q++);B=d>>2;d=(d&3)<<4|n>>4;q=(n&15)<<2|v>>6;L=v&63;if(isNaN(n))q=L=64;else if(isNaN(v))L=64;f[K++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(B);f[K++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(d);f[K++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(q);f[K++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(L)}while(Q<
+c.length);return f.join("")};svgedit.utilities.decode64=function(c){if(window.atob)return window.atob(c);var f="",d,n,v="",B,q="",L=0;c=c.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(c.charAt(L++));n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(c.charAt(L++));B="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(c.charAt(L++));q="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(c.charAt(L++));
+d=d<<2|n>>4;n=(n&15)<<4|B>>2;v=(B&3)<<6|q;f+=String.fromCharCode(d);if(B!=64)f+=String.fromCharCode(n);if(q!=64)f+=String.fromCharCode(v)}while(L<c.length);return unescape(f)};svgedit.utilities.convertToXMLReferences=function(c){for(var f="",d=0;d<c.length;d++){var n=c.charCodeAt(d);if(n<128)f+=c[d];else if(n>127)f+="&#"+n+";"}return f};svgedit.utilities.text2xml=function(c){if(c.indexOf("<svg:svg")>=0)c=c.replace(/<(\/?)svg:/g,"<$1").replace("xmlns:svg","xmlns");var f;try{var d=window.DOMParser?
+new DOMParser:new ActiveXObject("Microsoft.XMLDOM");d.async=false}catch(n){throw Error("XML Parser could not be instantiated");}try{f=d.loadXML?d.loadXML(c)?d:false:d.parseFromString(c,"text/xml")}catch(v){throw Error("Error parsing XML string");}return f};svgedit.utilities.bboxToObj=function(c){return{x:c.x,y:c.y,width:c.width,height:c.height}};svgedit.utilities.walkTree=function(c,f){if(c&&c.nodeType==1){f(c);for(var d=c.childNodes.length;d--;)svgedit.utilities.walkTree(c.childNodes.item(d),f)}};
+svgedit.utilities.walkTreePost=function(c,f){if(c&&c.nodeType==1){for(var d=c.childNodes.length;d--;)svgedit.utilities.walkTree(c.childNodes.item(d),f);f(c)}};svgedit.utilities.getUrlFromAttr=function(c){if(c)if(c.indexOf('url("')===0)return c.substring(5,c.indexOf('"',6));else if(c.indexOf("url('")===0)return c.substring(5,c.indexOf("'",6));else if(c.indexOf("url(")===0)return c.substring(4,c.indexOf(")"));return null};svgedit.utilities.getHref=function(c){if(c)return c.getAttributeNS("http://www.w3.org/1999/xlink",
+"href")};svgedit.utilities.setHref=function(c,f){c.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",f)};svgedit.utilities.findDefs=function(c){c=g.getSVGContent().documentElement;var f=c.getElementsByTagNameNS("http://www.w3.org/2000/svg","defs");return f=f.length>0?f[0]:c.insertBefore(c.ownerDocument.createElementNS("http://www.w3.org/2000/svg","defs"),c.firstChild.nextSibling)};svgedit.utilities.getPathBBox=function(c){var f=c.pathSegList,d=f.numberOfItems;c=[[],[]];var n=f.getItem(0),
+v=[n.x,n.y];for(n=0;n<d;n++){var B=f.getItem(n);if(typeof B.x!="undefined"){c[0].push(v[0]);c[1].push(v[1]);if(B.x1){for(var q=[B.x1,B.y1],L=[B.x2,B.y2],Q=[B.x,B.y],K=0;K<2;K++){B=function(ga){return Math.pow(1-ga,3)*v[K]+3*Math.pow(1-ga,2)*ga*q[K]+3*(1-ga)*Math.pow(ga,2)*L[K]+Math.pow(ga,3)*Q[K]};var I=6*v[K]-12*q[K]+6*L[K],S=-3*v[K]+9*q[K]-9*L[K]+3*Q[K],R=3*q[K]-3*v[K];if(S==0){if(I!=0){I=-R/I;0<I&&I<1&&c[K].push(B(I))}}else{R=Math.pow(I,2)-4*R*S;if(!(R<0)){var N=(-I+Math.sqrt(R))/(2*S);0<N&&N<
+1&&c[K].push(B(N));I=(-I-Math.sqrt(R))/(2*S);0<I&&I<1&&c[K].push(B(I))}}}v=Q}else{c[0].push(B.x);c[1].push(B.y)}}}f=Math.min.apply(null,c[0]);d=Math.max.apply(null,c[0])-f;n=Math.min.apply(null,c[1]);c=Math.max.apply(null,c[1])-n;return{x:f,y:n,width:d,height:c}};svgedit.utilities.getBBox=function(c){var f=c||g.getSelectedElements()[0];if(c.nodeType!=1)return null;c=null;var d=f.nodeName;switch(d){case "text":if(f.textContent===""){f.textContent="a";c=f.getBBox();f.textContent=""}else try{c=f.getBBox()}catch(n){}break;
+case "path":if(svgedit.browser.supportsPathBBox())try{c=f.getBBox()}catch(v){}else c=svgedit.utilities.getPathBBox(f);break;case "g":case "a":c=a(f);break;default:if(d==="use")c=a(f,true);if(d==="use")c||(c=f.getBBox());else if(~s.indexOf(d))try{c=f.getBBox()}catch(B){f=$(f).closest("foreignObject");if(f.length)try{c=f[0].getBBox()}catch(q){c=null}else c=null}}if(c)c=svgedit.utilities.bboxToObj(c);return c};svgedit.utilities.getRotationAngle=function(c,f){var d=c||g.getSelectedElements()[0];d=svgedit.transformlist.getTransformList(d);
+if(!d)return 0;for(var n=d.numberOfItems,v=0;v<n;++v){var B=d.getItem(v);if(B.type==4)return f?B.angle*Math.PI/180:B.angle}return 0};svgedit.utilities.getElem=svgedit.browser.supportsSelectors()?function(c){return w.querySelector("#"+c)}:svgedit.browser.supportsXpath()?function(c){return b.evaluate('svg:svg[@id="svgroot"]//svg:*[@id="'+c+'"]',p,function(){return"http://www.w3.org/2000/svg"},9,null).singleNodeValue}:function(c){return $(w).find("[id="+c+"]")[0]};svgedit.utilities.assignAttributes=
+function(c,f,d,n){d||(d=0);svgedit.browser.isOpera()||w.suspendRedraw(d);for(var v in f)if(d=v.substr(0,4)==="xml:"?"http://www.w3.org/XML/1998/namespace":v.substr(0,6)==="xlink:"?"http://www.w3.org/1999/xlink":null)c.setAttributeNS(d,v,f[v]);else n?svgedit.units.setUnitAttr(c,v,f[v]):c.setAttribute(v,f[v]);svgedit.browser.isOpera()||w.unsuspendRedraw(null)};svgedit.utilities.cleanupElement=function(c){var f=w.suspendRedraw(60),d={"fill-opacity":1,"stop-opacity":1,opacity:1,stroke:"none","stroke-dasharray":"none",
+"stroke-linejoin":"miter","stroke-linecap":"butt","stroke-opacity":1,"stroke-width":1,rx:0,ry:0},n;for(n in d){var v=d[n];c.getAttribute(n)==v&&c.removeAttribute(n)}w.unsuspendRedraw(f)}})();svgedit=svgedit||{};
+(function(){if(!svgedit.sanitize)svgedit.sanitize={};var a={};a["http://www.w3.org/1999/xlink"]="xlink";a["http://www.w3.org/XML/1998/namespace"]="xml";a["http://www.w3.org/2000/xmlns/"]="xmlns";a["http://svg-edit.googlecode.com"]="se";a["http://www.w3.org/1999/xhtml"]="xhtml";a["http://www.w3.org/1998/Math/MathML"]="mathml";var s={};$.each(a,function(p,w){s[w]=p});var g={a:["class","clip-path","clip-rule","fill","fill-opacity","fill-rule","filter","id","mask","opacity","stroke","stroke-dasharray",
+"stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform","xlink:href","xlink:title"],circle:["class","clip-path","clip-rule","cx","cy","fill","fill-opacity","fill-rule","filter","id","mask","opacity","r","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform"],clipPath:["class",
+"clipPathUnits","id"],defs:[],style:["type"],desc:[],ellipse:["class","clip-path","clip-rule","cx","cy","fill","fill-opacity","fill-rule","filter","id","mask","opacity","requiredFeatures","rx","ry","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform"],feGaussianBlur:["class","color-interpolation-filters","id","requiredFeatures","stdDeviation"],filter:["class","color-interpolation-filters",
+"filterRes","filterUnits","height","id","primitiveUnits","requiredFeatures","width","x","xlink:href","y"],foreignObject:["class","font-size","height","id","opacity","requiredFeatures","style","transform","width","x","y"],g:["class","clip-path","clip-rule","id","display","fill","fill-opacity","fill-rule","filter","mask","opacity","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage",
+"transform","font-family","font-size","font-style","font-weight","text-anchor","data-locked"],image:["class","clip-path","clip-rule","filter","height","id","mask","opacity","requiredFeatures","style","systemLanguage","transform","width","x","xlink:href","xlink:title","y"],line:["shape-rendering","class","clip-path","clip-rule","fill","fill-opacity","fill-rule","filter","id","marker-end","marker-mid","marker-start","mask","opacity","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset",
+"stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform","x1","x2","y1","y2"],linearGradient:["class","id","gradientTransform","gradientUnits","requiredFeatures","spreadMethod","systemLanguage","x1","x2","xlink:href","y1","y2"],marker:["id","class","markerHeight","markerUnits","markerWidth","orient","preserveAspectRatio","refX","refY","systemLanguage","viewBox"],mask:["class","height","id","maskContentUnits","maskUnits","width","x",
+"y"],metadata:["class","id"],path:["class","clip-path","clip-rule","d","fill","fill-opacity","fill-rule","filter","id","marker-end","marker-mid","marker-start","mask","opacity","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform"],pattern:["class","height","id","patternContentUnits","patternTransform","patternUnits","requiredFeatures","style","systemLanguage","viewBox",
+"width","x","xlink:href","y"],polygon:["class","clip-path","clip-rule","id","fill","fill-opacity","fill-rule","filter","id","class","marker-end","marker-mid","marker-start","mask","opacity","points","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform"],polyline:["class","clip-path","clip-rule","id","fill","fill-opacity","fill-rule","filter","marker-end","marker-mid",
+"marker-start","mask","opacity","points","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform"],radialGradient:["class","cx","cy","fx","fy","gradientTransform","gradientUnits","id","r","requiredFeatures","spreadMethod","systemLanguage","xlink:href"],rect:["shape-rendering","class","clip-path","clip-rule","fill","fill-opacity","fill-rule","filter","height","id","mask",
+"opacity","requiredFeatures","rx","ry","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform","width","x","y"],stop:["class","id","offset","requiredFeatures","stop-color","stop-opacity","style","systemLanguage"],svg:["class","clip-path","clip-rule","filter","id","height","mask","preserveAspectRatio","requiredFeatures","style","systemLanguage","viewBox","width","x","xmlns","xmlns:se",
+"xmlns:xlink","y"],"switch":["class","id","requiredFeatures","systemLanguage"],symbol:["class","fill","fill-opacity","fill-rule","filter","font-family","font-size","font-style","font-weight","id","opacity","preserveAspectRatio","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform","viewBox"],text:["class","clip-path","clip-rule","fill","fill-opacity","fill-rule",
+"filter","font-family","font-size","font-style","font-weight","id","mask","opacity","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","text-anchor","transform","x","xml:space","y"],textPath:["class","id","method","requiredFeatures","spacing","startOffset","style","systemLanguage","transform","xlink:href"],title:[],tspan:["class","clip-path","clip-rule","dx","dy","fill",
+"fill-opacity","fill-rule","filter","font-family","font-size","font-style","font-weight","id","mask","opacity","requiredFeatures","rotate","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","text-anchor","textLength","transform","x","xml:space","y"],use:["class","clip-path","clip-rule","fill","fill-opacity","fill-rule","filter","height","id","mask","stroke","stroke-dasharray","stroke-dashoffset",
+"stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","transform","width","x","xlink:href","y"],annotation:["encoding"],"annotation-xml":["encoding"],maction:["actiontype","other","selection"],math:["class","id","display","xmlns"],menclose:["notation"],merror:[],mfrac:["linethickness"],mi:["mathvariant"],mmultiscripts:[],mn:[],mo:["fence","lspace","maxsize","minsize","rspace","stretchy"],mover:[],mpadded:["lspace","width","height","depth","voffset"],mphantom:[],
+mprescripts:[],mroot:[],mrow:["xlink:href","xlink:type","xmlns:xlink"],mspace:["depth","height","width"],msqrt:[],mstyle:["displaystyle","mathbackground","mathcolor","mathvariant","scriptlevel"],msub:[],msubsup:[],msup:[],mtable:["align","columnalign","columnlines","columnspacing","displaystyle","equalcolumns","equalrows","frame","rowalign","rowlines","rowspacing","width"],mtd:["columnalign","columnspan","rowalign","rowspan"],mtext:[],mtr:["columnalign","rowalign"],munder:[],munderover:[],none:[],
+semantics:[]},b={};$.each(g,function(p,w){var c={};$.each(w,function(f,d){if(d.indexOf(":")>=0){var n=d.split(":");c[n[1]]=s[n[0]]}else c[d]=d=="xmlns"?"http://www.w3.org/2000/xmlns/":null});b[p]=c});svgedit.sanitize.getNSMap=function(){return a};svgedit.sanitize.sanitizeSvg=function(p){if(p.nodeType==3){p.nodeValue=p.nodeValue.replace(/^\s+|\s+$/g,"");p.nodeValue.length||p.parentNode.removeChild(p)}if(p.nodeType==1){var w=p.parentNode;if(p.ownerDocument&&w){var c=g[p.nodeName],f=b[p.nodeName];if(c!=
+undefined){for(var d=[],n=p.attributes.length;n--;){var v=p.attributes.item(n),B=v.nodeName,q=v.localName,L=v.namespaceURI;if(!(f.hasOwnProperty(q)&&L==f[q]&&L!="http://www.w3.org/2000/xmlns/")&&!(L=="http://www.w3.org/2000/xmlns/"&&a[v.nodeValue])){B.indexOf("se:")==0&&d.push([B,v.nodeValue]);p.removeAttributeNS(L,q)}if(svgedit.browser.isGecko())switch(B){case "transform":case "gradientTransform":case "patternTransform":q=v.nodeValue.replace(/(\d)-/g,"$1 -");p.setAttribute(B,q)}if(B=="style"){v=
+v.nodeValue.split(";");for(B=v.length;B--;){q=v[B].split(":");c.indexOf(q[0])>=0&&p.setAttribute(q[0],q[1])}p.removeAttribute("style")}}$.each(d,function(Q,K){p.setAttributeNS("http://svg-edit.googlecode.com",K[0],K[1])});if((n=svgedit.utilities.getHref(p))&&["filter","linearGradient","pattern","radialGradient","textPath","use"].indexOf(p.nodeName)>=0)if(n[0]!="#"){svgedit.utilities.setHref(p,"");p.removeAttributeNS("http://www.w3.org/1999/xlink","href")}if(p.nodeName=="use"&&!svgedit.utilities.getHref(p))w.removeChild(p);
+else{$.each(["clip-path","fill","filter","marker-end","marker-mid","marker-start","mask","stroke"],function(Q,K){var I=p.getAttribute(K);if(I)if((I=svgedit.utilities.getUrlFromAttr(I))&&I[0]!=="#"){p.setAttribute(K,"");p.removeAttribute(K)}});for(n=p.childNodes.length;n--;)svgedit.sanitize.sanitizeSvg(p.childNodes.item(n))}}else{for(c=[];p.hasChildNodes();)c.push(w.insertBefore(p.firstChild,p));w.removeChild(p);for(n=c.length;n--;)svgedit.sanitize.sanitizeSvg(c[n])}}}}})();svgedit=svgedit||{};
+(function(){if(!svgedit.history)svgedit.history={};svgedit.history.HistoryEventTypes={BEFORE_APPLY:"before_apply",AFTER_APPLY:"after_apply",BEFORE_UNAPPLY:"before_unapply",AFTER_UNAPPLY:"after_unapply"};svgedit.history.MoveElementCommand=function(a,s,g,b){this.elem=a;this.text=b?"Move "+a.tagName+" to "+b:"Move "+a.tagName;this.oldNextSibling=s;this.oldParent=g;this.newNextSibling=a.nextSibling;this.newParent=a.parentNode};svgedit.history.MoveElementCommand.type=function(){return"svgedit.history.MoveElementCommand"};svgedit.history.MoveElementCommand.prototype.type=
+svgedit.history.MoveElementCommand.type;svgedit.history.MoveElementCommand.prototype.getText=function(){return this.text};svgedit.history.MoveElementCommand.prototype.apply=function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_APPLY,this);this.elem=this.newParent.insertBefore(this.elem,this.newNextSibling);a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_APPLY,this)};svgedit.history.MoveElementCommand.prototype.unapply=function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_UNAPPLY,
+this);this.elem=this.oldParent.insertBefore(this.elem,this.oldNextSibling);a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_UNAPPLY,this)};svgedit.history.MoveElementCommand.prototype.elements=function(){return[this.elem]};svgedit.history.InsertElementCommand=function(a,s){this.elem=a;this.text=s||"Create "+a.tagName;this.parent=a.parentNode;this.nextSibling=this.elem.nextSibling};svgedit.history.InsertElementCommand.type=function(){return"svgedit.history.InsertElementCommand"};svgedit.history.InsertElementCommand.prototype.type=
+svgedit.history.InsertElementCommand.type;svgedit.history.InsertElementCommand.prototype.getText=function(){return this.text};svgedit.history.InsertElementCommand.prototype.apply=function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_APPLY,this);this.elem=this.parent.insertBefore(this.elem,this.nextSibling);a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_APPLY,this)};svgedit.history.InsertElementCommand.prototype.unapply=function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_UNAPPLY,
+this);this.parent=this.elem.parentNode;this.elem=this.elem.parentNode.removeChild(this.elem);a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_UNAPPLY,this)};svgedit.history.InsertElementCommand.prototype.elements=function(){return[this.elem]};svgedit.history.RemoveElementCommand=function(a,s,g,b){this.elem=a;this.text=b||"Delete "+a.tagName;this.nextSibling=s;this.parent=g;svgedit.transformlist.removeElementFromListMap(a)};svgedit.history.RemoveElementCommand.type=function(){return"svgedit.history.RemoveElementCommand"};
+svgedit.history.RemoveElementCommand.prototype.type=svgedit.history.RemoveElementCommand.type;svgedit.history.RemoveElementCommand.prototype.getText=function(){return this.text};svgedit.history.RemoveElementCommand.prototype.apply=function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_APPLY,this);svgedit.transformlist.removeElementFromListMap(this.elem);this.parent=this.elem.parentNode;this.elem=this.parent.removeChild(this.elem);a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_APPLY,
+this)};svgedit.history.RemoveElementCommand.prototype.unapply=function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_UNAPPLY,this);svgedit.transformlist.removeElementFromListMap(this.elem);this.nextSibling==null&&window.console&&console.log("Error: reference element was lost");this.parent.insertBefore(this.elem,this.nextSibling);a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_UNAPPLY,this)};svgedit.history.RemoveElementCommand.prototype.elements=function(){return[this.elem]};
+svgedit.history.ChangeElementCommand=function(a,s,g){this.elem=a;this.text=g?"Change "+a.tagName+" "+g:"Change "+a.tagName;this.newValues={};this.oldValues=s;for(var b in s)this.newValues[b]=b=="#text"?a.textContent:b=="#href"?svgedit.utilities.getHref(a):a.getAttribute(b)};svgedit.history.ChangeElementCommand.type=function(){return"svgedit.history.ChangeElementCommand"};svgedit.history.ChangeElementCommand.prototype.type=svgedit.history.ChangeElementCommand.type;svgedit.history.ChangeElementCommand.prototype.getText=
+function(){return this.text};svgedit.history.ChangeElementCommand.prototype.apply=function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_APPLY,this);var s=false,g;for(g in this.newValues){if(this.newValues[g])if(g=="#text")this.elem.textContent=this.newValues[g];else g=="#href"?svgedit.utilities.setHref(this.elem,this.newValues[g]):this.elem.setAttribute(g,this.newValues[g]);else if(g=="#text")this.elem.textContent="";else{this.elem.setAttribute(g,"");this.elem.removeAttribute(g)}if(g==
+"transform")s=true}if(!s)if(s=svgedit.utilities.getRotationAngle(this.elem)){g=elem.getBBox();s=["rotate(",s," ",g.x+g.width/2,",",g.y+g.height/2,")"].join("");s!=elem.getAttribute("transform")&&elem.setAttribute("transform",s)}a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_APPLY,this);return true};svgedit.history.ChangeElementCommand.prototype.unapply=function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_UNAPPLY,this);var s=false,g;for(g in this.oldValues){if(this.oldValues[g])if(g==
+"#text")this.elem.textContent=this.oldValues[g];else g=="#href"?svgedit.utilities.setHref(this.elem,this.oldValues[g]):this.elem.setAttribute(g,this.oldValues[g]);else if(g=="#text")this.elem.textContent="";else this.elem.removeAttribute(g);if(g=="transform")s=true}if(!s)if(s=svgedit.utilities.getRotationAngle(this.elem)){g=this.elem.getBBox();s=["rotate(",s," ",g.x+g.width/2,",",g.y+g.height/2,")"].join("");s!=this.elem.getAttribute("transform")&&this.elem.setAttribute("transform",s)}svgedit.transformlist.removeElementFromListMap(this.elem);
+a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_UNAPPLY,this);return true};svgedit.history.ChangeElementCommand.prototype.elements=function(){return[this.elem]};svgedit.history.BatchCommand=function(a){this.text=a||"Batch Command";this.stack=[]};svgedit.history.BatchCommand.type=function(){return"svgedit.history.BatchCommand"};svgedit.history.BatchCommand.prototype.type=svgedit.history.BatchCommand.type;svgedit.history.BatchCommand.prototype.getText=function(){return this.text};svgedit.history.BatchCommand.prototype.apply=
+function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_APPLY,this);for(var s=this.stack.length,g=0;g<s;++g)this.stack[g].apply(a);a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_APPLY,this)};svgedit.history.BatchCommand.prototype.unapply=function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_UNAPPLY,this);for(var s=this.stack.length-1;s>=0;s--)this.stack[s].unapply(a);a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_UNAPPLY,
+this)};svgedit.history.BatchCommand.prototype.elements=function(){for(var a=[],s=this.stack.length;s--;)for(var g=this.stack[s].elements(),b=g.length;b--;)a.indexOf(g[b])==-1&&a.push(g[b]);return a};svgedit.history.BatchCommand.prototype.addSubCommand=function(a){this.stack.push(a)};svgedit.history.BatchCommand.prototype.isEmpty=function(){return this.stack.length==0};svgedit.history.UndoManager=function(a){this.handler_=a||null;this.undoStackPointer=0;this.undoStack=[];this.undoChangeStackPointer=
+-1;this.undoableChangeStack=[]};svgedit.history.UndoManager.prototype.resetUndoStack=function(){this.undoStack=[];this.undoStackPointer=0};svgedit.history.UndoManager.prototype.getUndoStackSize=function(){return this.undoStackPointer};svgedit.history.UndoManager.prototype.getRedoStackSize=function(){return this.undoStack.length-this.undoStackPointer};svgedit.history.UndoManager.prototype.getNextUndoCommandText=function(){return this.undoStackPointer>0?this.undoStack[this.undoStackPointer-1].getText():
+""};svgedit.history.UndoManager.prototype.getNextRedoCommandText=function(){return this.undoStackPointer<this.undoStack.length?this.undoStack[this.undoStackPointer].getText():""};svgedit.history.UndoManager.prototype.undo=function(){this.undoStackPointer>0&&this.undoStack[--this.undoStackPointer].unapply(this.handler_)};svgedit.history.UndoManager.prototype.redo=function(){this.undoStackPointer<this.undoStack.length&&this.undoStack.length>0&&this.undoStack[this.undoStackPointer++].apply(this.handler_)};
+svgedit.history.UndoManager.prototype.addCommandToHistory=function(a){if(this.undoStackPointer<this.undoStack.length&&this.undoStack.length>0)this.undoStack=this.undoStack.splice(0,this.undoStackPointer);this.undoStack.push(a);this.undoStackPointer=this.undoStack.length};svgedit.history.UndoManager.prototype.beginUndoableChange=function(a,s){for(var g=++this.undoChangeStackPointer,b=s.length,p=Array(b),w=Array(b);b--;){var c=s[b];if(c!=null){w[b]=c;p[b]=c.getAttribute(a)}}this.undoableChangeStack[g]=
+{attrName:a,oldValues:p,elements:w}};svgedit.history.UndoManager.prototype.finishUndoableChange=function(){for(var a=this.undoChangeStackPointer--,s=this.undoableChangeStack[a],g=s.elements.length,b=s.attrName,p=new svgedit.history.BatchCommand("Change "+b);g--;){var w=s.elements[g];if(w!=null){var c={};c[b]=s.oldValues[g];c[b]!=w.getAttribute(b)&&p.addSubCommand(new svgedit.history.ChangeElementCommand(w,c,b))}}this.undoableChangeStack[a]=null;return p}})();svgedit=svgedit||{};
+(function(){if(!svgedit.select)svgedit.select={};var a,s,g;svgedit.select.Selector=function(b,p){this.id=b;this.selectedElement=p;this.locked=true;this.selectorGroup=a.createSVGElement({element:"g",attr:{id:"selectorGroup"+this.id}});this.selectorRect=this.selectorGroup.appendChild(a.createSVGElement({element:"path",attr:{id:"selectedBox"+this.id,fill:"none",stroke:"#4F80FF","stroke-width":"1","shape-rendering":"crispEdges",style:"pointer-events:none"}}));svgedit.browser.isTouch()&&this.selectorRect.setAttribute("stroke-opacity",
+0.3);this.gripCoords={nw:null,n:null,ne:null,e:null,se:null,s:null,sw:null,w:null};this.reset(this.selectedElement)};svgedit.select.Selector.prototype.reset=function(b){this.locked=true;this.selectedElement=b;this.resize();this.selectorGroup.setAttribute("display","inline")};svgedit.select.Selector.prototype.updateGripCursors=function(b){var p=[];b=Math.round(b/45);if(b<0)b+=8;for(var w in g.selectorGrips)p.push(w);for(;b>0;){p.push(p.shift());b--}b=0;for(w in g.selectorGrips){g.selectorGrips[w].setAttribute("style",
+"cursor:"+p[b]+"-resize");b++}};svgedit.select.Selector.prototype.showGrips=function(b){g.selectorGripsGroup.setAttribute("display",b?"inline":"none");var p=this.selectedElement;this.hasGrips=b;if(p&&b){this.selectorGroup.appendChild(g.selectorGripsGroup);this.updateGripCursors(svgedit.utilities.getRotationAngle(p))}};svgedit.select.Selector.prototype.resize=function(){var b=this.selectorRect,p=g,w=p.selectorGrips,c=this.selectedElement,f=c.getAttribute("stroke-width"),d=a.currentZoom(),n=1/d;if(c.getAttribute("stroke")!==
+"none"&&!isNaN(f))n+=f/2;var v=c.tagName;if(v==="text")n+=2/d;f=svgedit.transformlist.getTransformList(c);f=svgedit.math.transformListToTransform(f).matrix;f.e*=d;f.f*=d;var B=svgedit.utilities.getBBox(c);if(v==="g"&&!$.data(c,"gsvg"))if(v=a.getStrokedBBox(c.childNodes))B=v;v=B.x;var q=B.y,L=B.width;B=B.height;n*=d;d=svgedit.math.transformBox(v*d,q*d,L*d,B*d,f);f=d.aabox;v=f.x-n;q=f.y-n;L=f.width+n*2;var Q=f.height+n*2;f=v+L/2;B=q+Q/2;if(c=svgedit.utilities.getRotationAngle(c)){v=a.svgRoot().createSVGTransform();
+v.setRotate(-c,f,B);v=v.matrix;d.tl=svgedit.math.transformPoint(d.tl.x,d.tl.y,v);d.tr=svgedit.math.transformPoint(d.tr.x,d.tr.y,v);d.bl=svgedit.math.transformPoint(d.bl.x,d.bl.y,v);d.br=svgedit.math.transformPoint(d.br.x,d.br.y,v);v=d.tl;L=v.x;Q=v.y;var K=v.x,I=v.y;v=Math.min;q=Math.max;L=v(L,v(d.tr.x,v(d.bl.x,d.br.x)))-n;Q=v(Q,v(d.tr.y,v(d.bl.y,d.br.y)))-n;K=q(K,q(d.tr.x,q(d.bl.x,d.br.x)))+n;I=q(I,q(d.tr.y,q(d.bl.y,d.br.y)))+n;v=L;q=Q;L=K-L;Q=I-Q}n=a.svgRoot().suspendRedraw(100);b.setAttribute("d",
+"M"+v+","+q+" L"+(v+L)+","+q+" "+(v+L)+","+(q+Q)+" "+v+","+(q+Q)+"z");this.selectorGroup.setAttribute("transform",c?"rotate("+[c,f,B].join(",")+")":"");if(svgedit.browser.isTouch()){v-=15.75;q-=15.75}else{v-=4;q-=4}this.gripCoords={nw:[v,q].map(Math.round),ne:[v+L,q].map(Math.round),sw:[v,q+Q].map(Math.round),se:[v+L,q+Q].map(Math.round),n:[v+L/2,q].map(Math.round),w:[v,q+Q/2].map(Math.round),e:[v+L,q+Q/2].map(Math.round),s:[v+L/2,q+Q].map(Math.round)};for(var S in this.gripCoords){b=this.gripCoords[S];
+w[S].setAttribute("x",b[0]);w[S].setAttribute("y",b[1])}this.rotateCoords={nw:[v,q],ne:[v+L+8,q],sw:[v,q+Q+8],se:[v+L+8,q+Q+8]};for(S in this.rotateCoords){b=this.rotateCoords[S];p.rotateGrips[S].setAttribute("cx",b[0]);p.rotateGrips[S].setAttribute("cy",b[1])}a.svgRoot().unsuspendRedraw(n)};svgedit.select.SelectorManager=function(){this.rubberBandBox=this.selectorParentGroup=null;this.selectors=[];this.selectorMap={};this.selectorGrips={nw:null,n:null,ne:null,e:null,se:null,s:null,sw:null,w:null};
+this.selectorGripsGroup=null;this.rotateGrips={nw:null,ne:null,se:null,sw:null};this.initGroup()};svgedit.select.SelectorManager.prototype.initGroup=function(){this.selectorParentGroup&&this.selectorParentGroup.parentNode&&this.selectorParentGroup.parentNode.removeChild(this.selectorParentGroup);this.selectorParentGroup=a.createSVGElement({element:"g",attr:{id:"selectorParentGroup"}});this.selectorGripsGroup=a.createSVGElement({element:"g",attr:{display:"none"}});this.selectorParentGroup.appendChild(this.selectorGripsGroup);
+a.svgRoot().appendChild(this.selectorParentGroup);this.selectorMap={};this.selectors=[];this.rubberBandBox=null;for(var b in this.rotateGrips){var p=a.createSVGElement({element:"circle",attr:{id:"selectorGrip_rotate_"+b,fill:"#000",r:8,stroke:"#000","fill-opacity":0,"stroke-opacity":0,"stroke-width":0,style:"cursor:url("+s.imgPath+"rotate.png) 12 12, auto;"}});$.data(p,"dir",b);$.data(p,"type","rotate");this.rotateGrips[b]=this.selectorGripsGroup.appendChild(p)}for(b in this.selectorGrips){p=a.createSVGElement({element:"rect",
+attr:{id:"selectorGrip_resize_"+b,width:8,height:8,fill:"#4F80FF",stroke:"rgba(0,0,0,0)","stroke-width":1,style:"cursor:"+b+"-resize","pointer-events":"all"}});if(svgedit.browser.isTouch()){p.setAttribute("width",30.5);p.setAttribute("height",30.5);p.setAttribute("fill-opacity",0.3)}$.data(p,"dir",b);$.data(p,"type","resize");this.selectorGrips[b]=this.selectorGripsGroup.appendChild(p)}if(!$("#canvasBackground").length){b=s.dimensions;b=a.createSVGElement({element:"svg",attr:{id:"canvasBackground",
+width:b[0],height:b[1],x:0,y:0,overflow:svgedit.browser.isWebkit()?"none":"visible",style:"pointer-events:none"}});p=a.createSVGElement({element:"defs",attr:{id:"placeholder_defs"}});var w=a.createSVGElement({element:"pattern",attr:{id:"checkerPattern",patternUnits:"userSpaceOnUse",x:0,y:0,width:20,height:20,viewBox:"0 0 10 10"}}),c=a.createSVGElement({element:"rect",attr:{x:0,y:0,width:10,height:10,fill:"#fff"}}),f=a.createSVGElement({element:"rect",attr:{x:0,y:0,width:5,height:5,fill:"#eee"}}),
+d=a.createSVGElement({element:"rect",attr:{x:5,y:5,width:5,height:5,fill:"#eee"}}),n=a.createSVGElement({element:"rect",attr:{width:"100%",height:"100%",x:0,y:0,"stroke-width":1,stroke:"#000",fill:"url(#checkerPattern)",style:"pointer-events:none"}});b.appendChild(p);p.appendChild(w);w.appendChild(c);w.appendChild(f);w.appendChild(d);b.appendChild(n);a.svgRoot().insertBefore(b,a.svgContent())}};svgedit.select.SelectorManager.prototype.requestSelector=function(b){if(b==null)return null;var p=this.selectors.length;
+if(typeof this.selectorMap[b.id]=="object"){this.selectorMap[b.id].locked=true;return this.selectorMap[b.id]}for(var w=0;w<p;++w)if(this.selectors[w]&&!this.selectors[w].locked){this.selectors[w].locked=true;this.selectors[w].reset(b);this.selectorMap[b.id]=this.selectors[w];return this.selectors[w]}this.selectors[p]=new svgedit.select.Selector(p,b);this.selectorParentGroup.appendChild(this.selectors[p].selectorGroup);this.selectorMap[b.id]=this.selectors[p];return this.selectors[p]};svgedit.select.SelectorManager.prototype.releaseSelector=
+function(b){if(b!=null)for(var p=this.selectors.length,w=this.selectorMap[b.id],c=0;c<p;++c)if(this.selectors[c]&&this.selectors[c]==w){w.locked==false&&console.log("WARNING! selector was released but was already unlocked");delete this.selectorMap[b.id];w.locked=false;w.selectedElement=null;w.showGrips(false);try{w.selectorGroup.setAttribute("display","none")}catch(f){}break}};svgedit.select.SelectorManager.prototype.getRubberBandBox=function(){if(!this.rubberBandBox)this.rubberBandBox=this.selectorParentGroup.appendChild(a.createSVGElement({element:"rect",
+attr:{id:"selectorRubberBand",fill:"none",stroke:"#666","stroke-width":1,"stroke-dasharray":"3,2",display:"none",style:"pointer-events:none"}}));return this.rubberBandBox};svgedit.select.init=function(b,p){s=b;a=p;g=new svgedit.select.SelectorManager;a.createSVGElement({element:"g",attr:{id:"hover_group"}})};svgedit.select.getSelectorManager=function(){return g}})();svgedit=svgedit||{};
+(function(){if(!svgedit.draw)svgedit.draw={};var a="a,circle,ellipse,foreignObject,g,image,line,path,polygon,polyline,rect,svg,text,tspan,use".split(","),s={LET_DOCUMENT_DECIDE:0,ALWAYS_RANDOMIZE:1,NEVER_RANDOMIZE:2},g=s.LET_DOCUMENT_DECIDE;svgedit.draw.Layer=function(b,p){this.name_=b;this.group_=p};svgedit.draw.Layer.prototype.getName=function(){return this.name_};svgedit.draw.Layer.prototype.getGroup=function(){return this.group_};svgedit.draw.randomizeIds=function(b,p){g=b==false?s.NEVER_RANDOMIZE:
+s.ALWAYS_RANDOMIZE;if(g==s.ALWAYS_RANDOMIZE&&!p.getNonce())p.setNonce(Math.floor(Math.random()*100001));else g==s.NEVER_RANDOMIZE&&p.getNonce()&&p.clearNonce()};svgedit.draw.Drawing=function(b,p){if(!b||!b.tagName||!b.namespaceURI||b.tagName!="svg"||b.namespaceURI!="http://www.w3.org/2000/svg")throw"Error: svgedit.draw.Drawing instance initialized without a <svg> element";this.svgElem_=b;this.obj_num=0;this.idPrefix=p||"svg_";this.releasedNums=[];this.all_layers=[];this.current_layer=null;this.nonce_=
+"";var w=this.svgElem_.getAttributeNS("http://svg-edit.googlecode.com","nonce");if(w&&g!=s.NEVER_RANDOMIZE)this.nonce_=w;else g==s.ALWAYS_RANDOMIZE&&this.setNonce(Math.floor(Math.random()*100001))};svgedit.draw.Drawing.prototype.getElem_=function(b){return this.svgElem_.querySelector?this.svgElem_.querySelector("#"+b):$(this.svgElem_).find("[id="+b+"]")[0]};svgedit.draw.Drawing.prototype.getSvgElem=function(){return this.svgElem_};svgedit.draw.Drawing.prototype.getNonce=function(){return this.nonce_};
+svgedit.draw.Drawing.prototype.setNonce=function(b){this.svgElem_.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:se","http://svg-edit.googlecode.com");this.svgElem_.setAttributeNS("http://svg-edit.googlecode.com","se:nonce",b);this.nonce_=b};svgedit.draw.Drawing.prototype.clearNonce=function(){this.nonce_=""};svgedit.draw.Drawing.prototype.getId=function(){return this.nonce_?this.idPrefix+this.nonce_+"_"+this.obj_num:this.idPrefix+this.obj_num};svgedit.draw.Drawing.prototype.getNextId=function(){var b=
+this.obj_num,p=false;if(this.releasedNums.length>0){this.obj_num=this.releasedNums.pop();p=true}else this.obj_num++;for(var w=this.getId();this.getElem_(w);){if(p){this.obj_num=b;p=false}this.obj_num++;w=this.getId()}if(p)this.obj_num=b;return w};svgedit.draw.Drawing.prototype.releaseId=function(b){var p=this.idPrefix+(this.nonce_?this.nonce_+"_":"");if(typeof b!="string"||b.indexOf(p)!=0)return false;b=parseInt(b.substr(p.length));if(typeof b!="number"||b<=0||this.releasedNums.indexOf(b)!=-1)return false;
+this.releasedNums.push(b);return true};svgedit.draw.Drawing.prototype.getNumLayers=function(){return this.all_layers.length};svgedit.draw.Drawing.prototype.hasLayer=function(b){for(var p=0;p<this.getNumLayers();p++)if(this.all_layers[p][0]==b)return true;return false};svgedit.draw.Drawing.prototype.getLayerName=function(b){if(b>=0&&b<this.getNumLayers())return this.all_layers[b][0];return""};svgedit.draw.Drawing.prototype.getCurrentLayer=function(){return this.current_layer};svgedit.draw.Drawing.prototype.getCurrentLayerName=
+function(){for(var b=0;b<this.getNumLayers();++b)if(this.all_layers[b][1]==this.current_layer)return this.getLayerName(b);return""};svgedit.draw.Drawing.prototype.setCurrentLayer=function(b){for(var p=0;p<this.getNumLayers();++p)if(b==this.getLayerName(p)){if(this.current_layer!=this.all_layers[p][1]){this.current_layer.setAttribute("style","pointer-events:none");this.current_layer=this.all_layers[p][1];this.current_layer.setAttribute("style","pointer-events:all")}return true}return false};svgedit.draw.Drawing.prototype.deleteCurrentLayer=
+function(){if(this.current_layer&&this.getNumLayers()>1){var b=this.current_layer.parentNode.removeChild(this.current_layer);this.identifyLayers();return b}return null};svgedit.draw.Drawing.prototype.identifyLayers=function(){this.all_layers=[];for(var b=this.svgElem_.childNodes.length,p=[],w=[],c=null,f=false,d=0;d<b;++d){var n=this.svgElem_.childNodes.item(d);if(n&&n.nodeType==1)if(n.tagName=="g"){f=true;var v=$("title",n).text();if(!v&&svgedit.browser.isOpera()&&n.querySelectorAll)v=$(n.querySelectorAll("title")).text();
+if(v){w.push(v);this.all_layers.push([v,n]);c=n;svgedit.utilities.walkTree(n,function(B){B.setAttribute("style","pointer-events:inherit")});c.setAttribute("style","pointer-events:none")}else p.push(n)}else if(~a.indexOf(n.nodeName)){svgedit.utilities.getBBox(n);p.push(n)}}b=this.svgElem_.ownerDocument;if(p.length>0||!f){for(d=1;w.indexOf("Layer "+d)>=0;)d++;w="Layer "+d;c=b.createElementNS("http://www.w3.org/2000/svg","g");f=b.createElementNS("http://www.w3.org/2000/svg","title");f.textContent=w;
+c.appendChild(f);for(f=0;f<p.length;++f)c.appendChild(p[f]);this.svgElem_.appendChild(c);this.all_layers.push([w,c])}svgedit.utilities.walkTree(c,function(B){B.setAttribute("style","pointer-events:inherit")});this.current_layer=c.getAttribute("data-locked")==="true"?this.all_layers.slice(-2)[0][1]:c;this.current_layer.setAttribute("style","pointer-events:all")};svgedit.draw.Drawing.prototype.createLayer=function(b){var p=this.svgElem_.ownerDocument,w=p.createElementNS("http://www.w3.org/2000/svg",
+"g");p=p.createElementNS("http://www.w3.org/2000/svg","title");p.textContent=b;w.appendChild(p);this.svgElem_.appendChild(w);this.identifyLayers();return w};svgedit.draw.Drawing.prototype.getLayerVisibility=function(b){for(var p=null,w=0;w<this.getNumLayers();++w)if(this.getLayerName(w)==b){p=this.all_layers[w][1];break}if(!p)return false;return p.getAttribute("display")!="none"};svgedit.draw.Drawing.prototype.setLayerVisibility=function(b,p){if(typeof p!="boolean")return null;for(var w=null,c=0;c<
+this.getNumLayers();++c)if(this.getLayerName(c)==b){w=this.all_layers[c][1];break}if(!w)return null;w.getAttribute("display");w.setAttribute("display",p?"inline":"none");return w};svgedit.draw.Drawing.prototype.getLayerOpacity=function(b){for(var p=0;p<this.getNumLayers();++p)if(this.getLayerName(p)==b){(b=this.all_layers[p][1].getAttribute("opacity"))||(b="1.0");return parseFloat(b)}return null};svgedit.draw.Drawing.prototype.setLayerOpacity=function(b,p){if(!(typeof p!="number"||p<0||p>1))for(var w=
+0;w<this.getNumLayers();++w)if(this.getLayerName(w)==b){this.all_layers[w][1].setAttribute("opacity",p);break}}})();svgedit=svgedit||{};
+(function(){if(!svgedit.path)svgedit.path={};var a={pathNodeTooltip:"Drag node to move it. Double-click node to change segment type",pathCtrlPtTooltip:"Drag control point to adjust curve properties"},s={2:["x","y"],4:["x","y"],6:["x","y","x1","y1","x2","y2"],8:["x","y","x1","y1"],10:["x","y","r1","r2","angle","largeArcFlag","sweepFlag"],12:["x"],14:["y"],16:["x","y","x2","y2"],18:["x","y"]},g=[],b=false,p={};svgedit.path.setLinkControlPoints=function(f){b=f};var w=svgedit.path.path=null;svgedit.path.init=
+function(f){w=f;g=[0,"ClosePath"];$.each(["Moveto","Lineto","CurvetoCubic","CurvetoQuadratic","Arc","LinetoHorizontal","LinetoVertical","CurvetoCubicSmooth","CurvetoQuadraticSmooth"],function(d,n){g.push(n+"Abs");g.push(n+"Rel")})};svgedit.path.insertItemBefore=function(f,d,n){f=f.pathSegList;if(svgedit.browser.supportsPathInsertItemBefore())f.insertItemBefore(d,n);else{for(var v=f.numberOfItems,B=[],q=0;q<v;q++){var L=f.getItem(q);B.push(L)}f.clear();for(q=0;q<v;q++){q==n&&f.appendItem(d);f.appendItem(B[q])}}};
+svgedit.path.ptObjToArr=function(f,d){for(var n=s[f],v=n.length,B=Array(v),q=0;q<v;q++)B[q]=d[n[q]];return B};svgedit.path.getGripPt=function(f,d){var n={x:d?d.x:f.item.x,y:d?d.y:f.item.y},v=f.path;if(v.matrix)n=svgedit.math.transformPoint(n.x,n.y,v.matrix);n.x*=w.getCurrentZoom();n.y*=w.getCurrentZoom();return n};svgedit.path.getPointFromGrip=function(f,d){var n={x:f.x,y:f.y};if(d.matrix){f=svgedit.math.transformPoint(n.x,n.y,d.imatrix);n.x=f.x;n.y=f.y}n.x/=w.getCurrentZoom();n.y/=w.getCurrentZoom();
+return n};svgedit.path.addPointGrip=function(f,d,n){var v=svgedit.path.getGripContainer(),B=svgedit.utilities.getElem("pathpointgrip_"+f);if(!B){B=document.createElementNS("http://www.w3.org/2000/svg","rect");svgedit.utilities.assignAttributes(B,{id:"pathpointgrip_"+f,display:"none",width:svgedit.browser.isTouch()?30:5,height:svgedit.browser.isTouch()?30:5,fill:"#fff",stroke:"#4F80FF","shape-rendering":"crispEdges","stroke-width":1,cursor:"move",style:"pointer-events:all","xlink:title":a.pathNodeTooltip});
+B=v.appendChild(B);$("#pathpointgrip_"+f).dblclick(function(){svgedit.path.path&&svgedit.path.path.setSegType()})}if(d&&n)svgedit.utilities.assignAttributes(B,{x:d-(svgedit.browser.isTouch()?15:2.5),y:n-(svgedit.browser.isTouch()?15:2.5),display:"inline"});return B};svgedit.path.getGripContainer=function(){var f=svgedit.utilities.getElem("pathpointgrip_container");if(!f){f=svgedit.utilities.getElem("selectorParentGroup").appendChild(document.createElementNS("http://www.w3.org/2000/svg","g"));f.id=
+"pathpointgrip_container"}return f};svgedit.path.addCtrlGrip=function(f){var d=svgedit.utilities.getElem("ctrlpointgrip_"+f);if(d)return d;d=document.createElementNS("http://www.w3.org/2000/svg","circle");svgedit.utilities.assignAttributes(d,{id:"ctrlpointgrip_"+f,display:"none",r:svgedit.browser.isTouch()?15:3,fill:"#4F80FF",stroke:"#4F80FF","stroke-opacity":0,"stroke-width":"3",cursor:"move",style:"pointer-events:all","xlink:title":a.pathCtrlPtTooltip});svgedit.path.getGripContainer().appendChild(d);
+return d};svgedit.path.getCtrlLine=function(f){var d=svgedit.utilities.getElem("ctrlLine_"+f);if(d)return d;d=document.createElementNS("http://www.w3.org/2000/svg","line");svgedit.utilities.assignAttributes(d,{id:"ctrlLine_"+f,stroke:"#4F80FF","stroke-width":1,style:"pointer-events:none"});svgedit.path.getGripContainer().appendChild(d);return d};svgedit.path.getPointGrip=function(f,d){var n=svgedit.path.addPointGrip(f.index);if(d){var v=svgedit.path.getGripPt(f);svgedit.utilities.assignAttributes(n,
+{x:v.x-(svgedit.browser.isTouch()?15:2.5),y:v.y-(svgedit.browser.isTouch()?15:2.5),display:"inline"})}return n};svgedit.path.getControlPoints=function(f){var d=f.item,n=f.index;if(!d||!("x1"in d)||!("x2"in d))return null;var v={};svgedit.path.getGripContainer();for(var B=[svgedit.path.path.segs[n-1].item,d],q=1;q<3;q++){var L=n+"c"+q,Q=v["c"+q+"_line"]=svgedit.path.getCtrlLine(L),K=svgedit.path.getGripPt(f,{x:d["x"+q],y:d["y"+q]}),I=svgedit.path.getGripPt(f,{x:B[q-1].x,y:B[q-1].y});svgedit.utilities.assignAttributes(Q,
+{x1:K.x,y1:K.y,x2:I.x,y2:I.y,display:"inline"});v["c"+q+"_line"]=Q;pointGrip=v["c"+q]=svgedit.path.addCtrlGrip(L);svgedit.utilities.assignAttributes(pointGrip,{cx:K.x,cy:K.y,display:"inline"});v["c"+q]=pointGrip}return v};svgedit.path.replacePathSeg=function(f,d,n,v){v=v||svgedit.path.path.elem;f=v["createSVGPathSeg"+g[f]].apply(v,n);if(svgedit.browser.supportsPathReplaceItem())v.pathSegList.replaceItem(f,d);else{n=v.pathSegList;v=n.numberOfItems;for(var B=[],q=0;q<v;q++){var L=n.getItem(q);B.push(L)}n.clear();
+for(q=0;q<v;q++)q==d?n.appendItem(f):n.appendItem(B[q])}};svgedit.path.getSegSelector=function(f,d){var n=f.index,v=svgedit.utilities.getElem("segline_"+n);if(!v){var B=svgedit.path.getGripContainer();v=document.createElementNS("http://www.w3.org/2000/svg","path");svgedit.utilities.assignAttributes(v,{id:"segline_"+n,display:"none",fill:"none",stroke:"#0ff","stroke-opacity":1,"shape-rendering":"crispEdges","stroke-width":2,style:"pointer-events:none",d:"M0,0 0,0"});B.appendChild(v)}if(d){n=f.prev;
+if(!n){v.setAttribute("display","none");return v}n=svgedit.path.getGripPt(n);svgedit.path.replacePathSeg(2,0,[n.x,n.y],v);B=svgedit.path.ptObjToArr(f.type,f.item,true);for(var q=0;q<B.length;q+=2){n=svgedit.path.getGripPt(f,{x:B[q],y:B[q+1]});B[q]=n.x;B[q+1]=n.y}svgedit.path.replacePathSeg(f.type,1,B,v)}return v};svgedit.path.smoothControlPoints=this.smoothControlPoints=function(f,d,n){var v=f.x-n.x,B=f.y-n.y,q=d.x-n.x,L=d.y-n.y;if((v!=0||B!=0)&&(q!=0||L!=0)){f=Math.atan2(B,v);d=Math.atan2(L,q);v=
+Math.sqrt(v*v+B*B);q=Math.sqrt(q*q+L*L);B=w.getSVGRoot().createSVGPoint();L=w.getSVGRoot().createSVGPoint();if(f<0)f+=2*Math.PI;if(d<0)d+=2*Math.PI;var Q=Math.abs(f-d),K=Math.abs(Math.PI-Q)/2;if(f-d>0){f=Q<Math.PI?f+K:f-K;d=Q<Math.PI?d-K:d+K}else{f=Q<Math.PI?f-K:f+K;d=Q<Math.PI?d+K:d-K}B.x=v*Math.cos(f)+n.x;B.y=v*Math.sin(f)+n.y;L.x=q*Math.cos(d)+n.x;L.y=q*Math.sin(d)+n.y;return[B,L]}};svgedit.path.Segment=function(f,d){this.selected=false;this.index=f;this.item=d;this.type=d.pathSegType;this.ctrlpts=
+[];this.segsel=this.ptgrip=null};svgedit.path.Segment.prototype.showCtrlPts=function(f){for(var d in this.ctrlpts)this.ctrlpts[d].setAttribute("display",f?"inline":"none")};svgedit.path.Segment.prototype.selectCtrls=function(){$("#ctrlpointgrip_"+this.index+"c1, #ctrlpointgrip_"+this.index+"c2").attr("fill","#4F80FF")};svgedit.path.Segment.prototype.show=function(f){if(this.ptgrip){this.ptgrip.setAttribute("display",f?"inline":"none");this.segsel.setAttribute("display",f?"inline":"none");this.showCtrlPts(f)}};
+svgedit.path.Segment.prototype.select=function(f){if(this.ptgrip){this.ptgrip.setAttribute("stroke",f?"#4F80FF":"#4F80FF");this.ptgrip.setAttribute("fill",f?"#4F80FF":"#fff");this.segsel.setAttribute("display",f?"inline":"none");this.ctrlpts&&this.selectCtrls(f);this.selected=f}};svgedit.path.Segment.prototype.addGrip=function(){this.ptgrip=svgedit.path.getPointGrip(this,true);this.ctrlpts=svgedit.path.getControlPoints(this,true);this.segsel=svgedit.path.getSegSelector(this,true)};svgedit.path.Segment.prototype.update=
+function(f){if(this.ptgrip){var d=svgedit.path.getGripPt(this),n=svgedit.browser.isTouch()?15:2.5;svgedit.utilities.assignAttributes(this.ptgrip,this.ptgrip.nodeName=="rect"?{x:d.x-n,y:d.y-n}:{cx:d.x,cy:d.y});svgedit.path.getSegSelector(this,true);if(this.ctrlpts){if(f){this.item=svgedit.path.path.elem.pathSegList.getItem(this.index);this.type=this.item.pathSegType}svgedit.path.getControlPoints(this)}}};svgedit.path.Segment.prototype.move=function(f,d){var n=this.item;n=this.ctrlpts?[n.x+=f,n.y+=
+d,n.x1,n.y1,n.x2+=f,n.y2+=d]:[n.x+=f,n.y+=d];svgedit.path.replacePathSeg(this.type,this.index,n);if(this.next&&this.next.ctrlpts){n=this.next.item;n=[n.x,n.y,n.x1+=f,n.y1+=d,n.x2,n.y2];svgedit.path.replacePathSeg(this.next.type,this.next.index,n)}if(this.mate){n=this.mate.item;n=[n.x+=f,n.y+=d];svgedit.path.replacePathSeg(this.mate.type,this.mate.index,n)}this.update(true);this.next&&this.next.update(true)};svgedit.path.Segment.prototype.setLinked=function(f){var d,n,v;if(f==2){n=1;d=this.next;if(!d)return;
+v=this.item}else{n=2;d=this.prev;if(!d)return;v=d.item}var B=d.item;B["x"+n]=v.x+v.x-this.item["x"+f];B["y"+n]=v.y+v.y-this.item["y"+f];svgedit.path.replacePathSeg(d.type,d.index,[B.x,B.y,B.x1,B.y1,B.x2,B.y2]);d.update(true)};svgedit.path.Segment.prototype.moveCtrl=function(f,d,n){var v=this.item;v["x"+f]+=d;v["y"+f]+=n;svgedit.path.replacePathSeg(this.type,this.index,[v.x,v.y,v.x1,v.y1,v.x2,v.y2]);this.update(true)};svgedit.path.Segment.prototype.setType=function(f,d){svgedit.path.replacePathSeg(f,
+this.index,d);this.type=f;this.item=svgedit.path.path.elem.pathSegList.getItem(this.index);this.showCtrlPts(f===6);this.ctrlpts=svgedit.path.getControlPoints(this);this.update(true)};svgedit.path.Path=function(f){if(!f||f.tagName!=="path")throw"svgedit.path.Path constructed without a <path> element";this.elem=f;this.segs=[];this.selected_pts=[];svgedit.path.path=this;this.init()};svgedit.path.Path.prototype.init=function(){$(svgedit.path.getGripContainer()).find("*").attr("display","none");var f=
+this.elem.pathSegList,d=f.numberOfItems;this.segs=[];this.selected_pts=[];this.first_seg=null;for(var n=0;n<d;n++){var v=f.getItem(n);v=new svgedit.path.Segment(n,v);v.path=this;this.segs.push(v)}f=this.segs;v=null;for(n=0;n<d;n++){var B=f[n],q=n+1>=d?null:f[n+1],L=n-1<0?null:f[n-1];if(B.type===2){if(L&&L.type!==1){q=f[v];q.next=f[v+1];q.next.prev=q;q.addGrip()}v=n}else if(q&&q.type===1){B.next=f[v+1];B.next.prev=B;B.mate=f[v];B.addGrip();if(this.first_seg==null)this.first_seg=B}else if(q){if(B.type!==
+1){B.addGrip();if(q&&q.type!==2){B.next=q;B.next.prev=B}}}else if(B.type!==1){q=f[v];q.next=f[v+1];q.next.prev=q;q.addGrip();B.addGrip();if(!this.first_seg)this.first_seg=f[v]}}return this};svgedit.path.Path.prototype.eachSeg=function(f){for(var d=this.segs.length,n=0;n<d;n++)if(f.call(this.segs[n],n)===false)break};svgedit.path.Path.prototype.addSeg=function(f){var d=this.segs[f];if(d.prev){var n=d.prev,v;switch(d.item.pathSegType){case 4:var B=(d.item.x+n.item.x)/2,q=(d.item.y+n.item.y)/2;v=this.elem.createSVGPathSegLinetoAbs(B,
+q);break;case 6:v=(n.item.x+d.item.x1)/2;var L=(d.item.x1+d.item.x2)/2,Q=(d.item.x2+d.item.x)/2,K=(v+L)/2;L=(L+Q)/2;B=(K+L)/2;var I=(n.item.y+d.item.y1)/2,S=(d.item.y1+d.item.y2)/2;n=(d.item.y2+d.item.y)/2;var R=(I+S)/2;S=(S+n)/2;q=(R+S)/2;v=this.elem.createSVGPathSegCurvetoCubicAbs(B,q,v,I,K,R);svgedit.path.replacePathSeg(d.type,f,[d.item.x,d.item.y,L,S,Q,n])}svgedit.path.insertItemBefore(this.elem,v,f)}};svgedit.path.Path.prototype.deleteSeg=function(f){var d=this.segs[f],n=this.elem.pathSegList;
+d.show(false);var v=d.next;if(d.mate){var B=[v.item.x,v.item.y];svgedit.path.replacePathSeg(2,v.index,B);svgedit.path.replacePathSeg(4,d.index,B);n.removeItem(d.mate.index)}else{if(!d.prev){B=[v.item.x,v.item.y];svgedit.path.replacePathSeg(2,d.next.index,B)}n.removeItem(f)}};svgedit.path.Path.prototype.subpathIsClosed=function(f){var d=false;svgedit.path.path.eachSeg(function(n){if(n<=f)return true;if(this.type===2)return false;else if(this.type===1){d=true;return false}});return d};svgedit.path.Path.prototype.removePtFromSelection=
+function(f){var d=this.selected_pts.indexOf(f);if(d!=-1){this.segs[f].select(false);this.selected_pts.splice(d,1)}};svgedit.path.Path.prototype.clearSelection=function(){this.eachSeg(function(){this.select(false)});this.selected_pts=[]};svgedit.path.Path.prototype.storeD=function(){this.last_d=this.elem.getAttribute("d")};svgedit.path.Path.prototype.show=function(f){this.eachSeg(function(){this.show(f)});f&&this.selectPt(this.first_seg.index);return this};svgedit.path.Path.prototype.movePts=function(f,
+d){for(var n=this.selected_pts.length;n--;)this.segs[this.selected_pts[n]].move(f,d)};svgedit.path.Path.prototype.moveCtrl=function(f,d){var n=this.segs[this.selected_pts[0]];n.moveCtrl(this.dragctrl,f,d);b&&n.setLinked(this.dragctrl)};svgedit.path.Path.prototype.setSegType=function(f){this.storeD();for(var d=this.selected_pts.length,n;d--;){var v=this.segs[this.selected_pts[d]],B=v.prev;if(B){if(!f){n="Toggle Path Segment Type";f=v.type==6?4:6}f-=0;var q=v.item.x,L=v.item.y,Q=B.item.x;B=B.item.y;
+var K;switch(f){case 6:if(v.olditem){Q=v.olditem;K=[q,L,Q.x1,Q.y1,Q.x2,Q.y2]}else{K=q-Q;var I=L-B;K=[q,L,Q+K/3,B+I/3,q-K/3,L-I/3]}break;case 4:K=[q,L];v.olditem=v.item}v.setType(f,K)}}svgedit.path.path.endChanges(n)};svgedit.path.Path.prototype.selectPt=function(f,d){this.clearSelection();f==null&&this.eachSeg(function(n){if(this.prev)f=n});this.addPtsToSelection(f);if(d){this.dragctrl=d;b&&this.segs[f].setLinked(d)}};svgedit.path.Path.prototype.update=function(){var f=this.elem;if(svgedit.utilities.getRotationAngle(f)){this.matrix=
+svgedit.math.getMatrix(f);this.imatrix=this.matrix.inverse()}else this.imatrix=this.matrix=null;this.eachSeg(function(d){this.item=f.pathSegList.getItem(d);this.update()});return this};svgedit.path.getPath_=function(f){var d=p[f.id];d||(d=p[f.id]=new svgedit.path.Path(f));return d};svgedit.path.removePath_=function(f){f in p&&delete p[f]};var c=function(f,d,n,v,B,q,L){dx=f-n;dy=d-v;r=Math.sqrt(dx*dx+dy*dy);theta=Math.atan2(dy,dx)+L;dx=r*Math.cos(theta)+n;dy=r*Math.sin(theta)+v;dx-=B;dy-=q;r=Math.sqrt(dx*
+dx+dy*dy);theta=Math.atan2(dy,dx)-L;return{x:(r*Math.cos(theta)+B)/1,y:(r*Math.sin(theta)+q)/1}};svgedit.path.recalcRotatedPath=function(){var f=svgedit.path.path.elem,d=svgedit.utilities.getRotationAngle(f,true);if(d){var n=svgedit.utilities.getBBox(f),v=svgedit.path.path.oldbbox,B=v.x+v.width/2;v=v.y+v.height/2;var q=n.x+n.width/2;n=n.y+n.height/2;q=q-B;var L=n-v;n=Math.sqrt(q*q+L*L);L=Math.atan2(L,q)+d;q=n*Math.cos(L)+B;n=n*Math.sin(L)+v;L=f.pathSegList;for(var Q=L.numberOfItems;Q;){Q-=1;var K=
+L.getItem(Q),I=K.pathSegType;if(I!=1){var S=c(K.x,K.y,B,v,q,n,d);S=[S.x,S.y];if(K.x1!=null&&K.x2!=null){c_vals1=c(K.x1,K.y1,B,v,q,n,d);c_vals2=c(K.x2,K.y2,B,v,q,n,d);S.splice(S.length,0,c_vals1.x,c_vals1.y,c_vals2.x,c_vals2.y)}svgedit.path.replacePathSeg(I,Q,S)}}svgedit.utilities.getBBox(f);B=svgroot.createSVGTransform();f=svgedit.transformlist.getTransformList(f);B.setRotate(d*180/Math.PI,q,n);f.replaceItem(B,0)}};svgedit.path.clearData=function(){p={}}})();if(!window.console){window.console={};window.console.log=function(){};window.console.dir=function(){}}if(window.opera){window.console.log=function(a){opera.postError(a)};window.console.dir=function(){}}
+(function(){var a=jQuery.fn.attr;jQuery.fn.attr=function(s,g){var b=this.length;if(!b)return a.apply(this,arguments);for(var p=0;p<b;p++){var w=this[p];if(w.namespaceURI==="http://www.w3.org/2000/svg")if(g!==undefined)w.setAttribute(s,g);else if($.isArray(s)){b=s.length;for(p={};b--;){var c=s[b],f=w.getAttribute(c);if(f||f==="0")f=isNaN(f)?f:f-0;p[c]=f}return p}else if(typeof s==="object")for(c in s)w.setAttribute(c,s[c]);else{if((f=w.getAttribute(s))||f==="0")f=isNaN(f)?f:f-0;return f}else return a.apply(this,
+arguments)}return this}})();
+$.SvgCanvas=function(a,s){function g(e,k){for(var l=svgedit.utilities.getBBox(e),C=0;C<2;C++){var A=C===0?"fill":"stroke",G=e.getAttribute(A);if(G&&G.indexOf("url(")===0){G=P(G);if(G.tagName==="linearGradient"){var D=G.getAttribute("x1")||0,z=G.getAttribute("y1")||0,F=G.getAttribute("x2")||1,h=G.getAttribute("y2")||0;D=l.width*D+l.x;z=l.height*z+l.y;F=l.width*F+l.x;h=l.height*h+l.y;D=N(D,z,k);h=N(F,h,k);F={};F.x1=(D.x-l.x)/l.width;F.y1=(D.y-l.y)/l.height;F.x2=(h.x-l.x)/l.width;F.y2=(h.y-l.y)/l.height;
+G=G.cloneNode(true);$(G).attr(F);G.id=ka();gb().appendChild(G);e.setAttribute(A,"url(#"+G.id+")")}}}}var b="http://www.w3.org/2000/svg",p={show_outside_canvas:true,selectNew:true,dimensions:[640,480]};s&&$.extend(p,s);var w=p.dimensions,c=this,f=a.ownerDocument,d=f.importNode(svgedit.utilities.text2xml('<svg id="svgroot" xmlns="'+b+'" xlinkns="http://www.w3.org/1999/xlink" width="'+w[0]+'" height="'+w[1]+'" x="'+w[0]+'" y="'+w[1]+'" overflow="visible"><defs><filter id="canvashadow" filterUnits="objectBoundingBox"><feGaussianBlur in="SourceAlpha" stdDeviation="4" result="blur"/><feOffset in="blur" dx="5" dy="5" result="offsetBlur"/><feMerge><feMergeNode in="offsetBlur"/><feMergeNode in="SourceGraphic"/></feMerge></filter></defs></svg>').documentElement,
+true);a.appendChild(d);var n=f.createElementNS(b,"svg");(c.clearSvgContentElement=function(){for(;n.firstChild;)n.removeChild(n.firstChild);$(n).attr({id:"svgcontent",width:w[0],height:w[1],x:w[0],y:w[1],overflow:p.show_outside_canvas?"visible":"hidden",xmlns:b,"xmlns:se":"http://svg-edit.googlecode.com","xmlns:xlink":"http://www.w3.org/1999/xlink"}).appendTo(d);var e=f.createComment(" Created with Method Draw - http://github.com/duopixel/Method-Draw/ ");n.appendChild(e)})();var v="svg_";c.setIdPrefix=
+function(e){v=e};c.current_drawing_=new svgedit.draw.Drawing(n,v);var B=c.getCurrentDrawing=function(){return c.current_drawing_},q=1,L=null,Q={shape:{fill:(p.initFill.color=="none"?"":"#")+p.initFill.color,fill_paint:null,fill_opacity:p.initFill.opacity,stroke:"#"+p.initStroke.color,stroke_paint:null,stroke_opacity:p.initStroke.opacity,stroke_width:p.initStroke.width,stroke_dasharray:"none",opacity:p.initOpacity}};Q.text=$.extend(true,{},Q.shape);$.extend(Q.text,{fill:"#000000",stroke_width:0,font_size:24,
+font_family:"Helvetica, Arial, sans-serif"});var K=Q.shape,I=Array(1),S=this.addSvgElementFromJson=function(e){var k=svgedit.utilities.getElem(e.attr.id),l=B().getCurrentLayer();if(k&&e.element!=k.tagName){l.removeChild(k);k=null}if(!k){k=f.createElementNS(b,e.element);if(l)(L||l).appendChild(k)}e.curStyles&&svgedit.utilities.assignAttributes(k,{fill:K.fill,stroke:K.stroke,"stroke-width":K.stroke_width,"stroke-dasharray":K.stroke_dasharray,"stroke-opacity":K.stroke_opacity,"fill-opacity":K.fill_opacity,
+opacity:K.opacity/2,style:"pointer-events:inherit"},100);svgedit.utilities.assignAttributes(k,e.attr,100);svgedit.utilities.cleanupElement(k);return k},R=c.getTransformList=svgedit.transformlist.getTransformList,N=svgedit.math.transformPoint,ga=c.matrixMultiply=svgedit.math.matrixMultiply,oa=c.hasMatrixTransform=svgedit.math.hasMatrixTransform,Y=c.transformListToTransform=svgedit.math.transformListToTransform,V=svgedit.math.snapToAngle,ea=svgedit.math.getMatrix;svgedit.units.init({getBaseUnit:function(){return p.baseUnit},
+getElement:svgedit.utilities.getElem,getHeight:function(){return n.getAttribute("height")/q},getWidth:function(){return n.getAttribute("width")/q},getRoundDigits:function(){return $a.round_digits}});var Ba=c.convertToNum=svgedit.units.convertToNum;svgedit.utilities.init({getDOMDocument:function(){return f},getDOMContainer:function(){return a},getSVGRoot:function(){return d},getSelectedElements:function(){return I},getSVGContent:function(){return n}});var ja=c.getUrlFromAttr=svgedit.utilities.getUrlFromAttr,
+ca=c.getHref=svgedit.utilities.getHref,U=c.setHref=svgedit.utilities.setHref,Z=svgedit.utilities.getPathBBox;c.getBBox=svgedit.utilities.getBBox;var na=c.getRotationAngle=svgedit.utilities.getRotationAngle,pa=c.getElem=svgedit.utilities.getElem,ma=c.assignAttributes=svgedit.utilities.assignAttributes,la=this.cleanupElement=svgedit.utilities.cleanupElement,ya=svgedit.sanitize.getNSMap(),za=c.sanitizeSvg=svgedit.sanitize.sanitizeSvg,Ja=svgedit.history.MoveElementCommand,Ia=svgedit.history.InsertElementCommand,
+Fa=svgedit.history.RemoveElementCommand,Ma=svgedit.history.ChangeElementCommand,Da=svgedit.history.BatchCommand;c.undoMgr=new svgedit.history.UndoManager({handleHistoryEvent:function(e,k){var l=svgedit.history.HistoryEventTypes;if(e==l.BEFORE_UNAPPLY||e==l.BEFORE_APPLY)c.clearSelection();else if(e==l.AFTER_APPLY||e==l.AFTER_UNAPPLY){var C=k.elements();c.pathActions.clear();M("changed",C);C=k.type();l=e==l.AFTER_APPLY;if(C==Ja.type())(l?k.newParent:k.oldParent)==n&&c.identifyLayers();else if(C==Ia.type()||
+C==Fa.type()){k.parent==n&&c.identifyLayers();if(C==Ia.type())l&&Ta(k.elem);else l||Ta(k.elem);k.elem.tagName==="use"&&Gb(k.elem)}else if(C==Ma.type()){k.elem.tagName=="title"&&k.elem.parentNode.parentNode==n&&c.identifyLayers();l=l?k.newValues:k.oldValues;l.stdDeviation&&c.setBlurOffsets(k.elem.parentNode,l.stdDeviation)}}}});var wa=function(e){c.undoMgr.addCommandToHistory(e)};svgedit.select.init(p,{createSVGElement:function(e){return c.addSvgElementFromJson(e)},svgRoot:function(){return d},svgContent:function(){return n},
+currentZoom:function(){return q},getStrokedBBox:function(e){return c.getStrokedBBox([e])}});var ra=this.selectorManager=svgedit.select.getSelectorManager();svgedit.path.init({getCurrentZoom:function(){return q},getSVGRoot:function(){return d}});svgedit.utilities.snapToGrid=function(e){var k=p.snappingStep,l=p.baseUnit;if(l!=="px")k*=svgedit.units.getTypeMap()[l];return e=Math.round(e/k)*k};var va=svgedit.utilities.snapToGrid,kb={exportNoBlur:"Blurred elements will appear as un-blurred",exportNoforeignObject:"foreignObject elements will not appear",
+exportNoDashArray:"Strokes will appear filled",exportNoText:"Text may not appear as expected"},vb=["clip-path","fill","filter","marker-end","marker-mid","marker-start","mask","stroke"],cb=$.data,Ta=function(e){var k=$(e).attr(vb),l;for(l in k){var C=k[l];if(C&&C.indexOf("url(")===0){C=ja(C).substr(1);if(!pa(C)){gb().appendChild(sb[C]);delete sb[C]}}}e=e.getElementsByTagName("*");if(e.length){k=0;for(l=e.length;k<l;k++)Ta(e[k])}},Va={},Ga=p.imgPath+"logo.png",ta=[],$a={round_digits:5},Ka=false,Sa=
+null,Ha="select",db="none",lb={},Ua=Q.text,Xa=K,wb=null,sa=null,hb=[],eb={},sb={};c.clipBoard=[];var ib=this.runExtensions=function(e,k,l){var C=false;if(l)C=[];$.each(eb,function(A,G){if(e in G)if(l)C.push(G[e](k));else C=G[e](k)});return C};this.addExtension=function(e,k){if(e in eb)console.log('Cannot add extension "'+e+'", an extension by that name already exists"');else{var l=$.isFunction(k)?k($.extend(c.getPrivateMethods(),{svgroot:d,svgcontent:n,nonce:B().getNonce(),selectorManager:ra})):k;
+eb[e]=l;M("extension_added",l)}};var ab=this.round=function(e){return parseInt(e*q)/q},ob=this.getIntersectionList=function(e){if(sa==null)return null;var k=L||B().getCurrentLayer();hb.length||(hb=fb(k));var l=null;try{l=k.getIntersectionList(e,null)}catch(C){}if(l==null||typeof l.item!="function"){l=[];if(e)e=e;else{e=sa.getBBox();k={};for(var A in e)k[A]=e[A]/q;e=k}for(A=hb.length;A--;)e.width&&e.width&&svgedit.math.rectsIntersect(e,hb[A].bbox)&&l.push(hb[A].elem)}return l};getStrokedBBox=this.getStrokedBBox=
+function(e){e||(e=pb());if(!e.length)return false;var k=function(h){try{var m=svgedit.utilities.getBBox(h),o=svgedit.utilities.getRotationAngle(h);if(o&&o%90||svgedit.math.hasMatrixTransform(svgedit.transformlist.getTransformList(h))){o=false;if(["ellipse","path","line","polyline","polygon"].indexOf(h.tagName)>=0)m=o=c.convertToPath(h,true);else if(h.tagName=="rect"){var u=h.getAttribute("rx"),E=h.getAttribute("ry");if(u||E)m=o=c.convertToPath(h,true)}if(!o){var H=h.cloneNode(true),J=document.createElementNS(b,
+"g"),O=h.parentNode;O.appendChild(J);J.appendChild(H);m=svgedit.utilities.bboxToObj(J.getBBox());O.removeChild(J)}}return m}catch(W){console.log(h,W)}},l;$.each(e,function(){if(!l)if(this.parentNode)l=k(this)});if(l==null)return null;var C=l.x+l.width,A=l.y+l.height,G=l.x,D=l.y,z=function(h){var m=h.getAttribute("stroke-width"),o=0;if(h.getAttribute("stroke")!="none"&&!isNaN(m))o+=m/2;return o},F=[];$.each(e,function(h,m){var o=k(m);if(o){var u=z(m);G=Math.min(G,o.x-u);D=Math.min(D,o.y-u);F.push(o)}});
+l.x=G;l.y=D;$.each(e,function(h,m){var o=F[h];if(o&&m.nodeType==1){var u=z(m);C=Math.max(C,o.x+o.width+u);A=Math.max(A,o.y+o.height+u)}});l.width=C-G;l.height=A-D;return l};var pb=this.getVisibleElements=function(e){e||(e=$(n).children());e.find("#canvas_background").length&&e.splice(0,1);var k=[];$(e).children().each(function(l,C){try{C.getBBox()&&k.push(C)}catch(A){}});return k.reverse()},fb=this.getVisibleElementsAndBBoxes=function(e){e||(e=$(n).children());var k=[];$(e).children().each(function(l,
+C){try{C.getBBox()&&k.push({elem:C,bbox:getStrokedBBox([C])})}catch(A){}});return k.reverse()},tb=this.groupSvgElem=function(e){var k=document.createElementNS(b,"g");e.parentNode.replaceChild(k,e);$(k).append(e).data("gsvg",e)[0].id=ka()},ia=function(e){var k=document.createElementNS(e.namespaceURI,e.nodeName);k.removeAttribute("id");$.each(e.attributes,function(C,A){A.localName!="-moz-math-font-style"&&k.setAttributeNS(A.namespaceURI,A.nodeName,A.nodeValue)});if(svgedit.browser.isWebkit()&&e.nodeName==
+"path"){var l=La.convertPath(e);k.setAttribute("d",l)}$.each(e.childNodes,function(C,A){switch(A.nodeType){case 1:k.appendChild(ia(A));break;case 3:k.textContent=A.nodeValue}});if($(e).data("gsvg"))$(k).data("gsvg",k.firstChild);else if($(e).data("symbol")){e=$(e).data("symbol");$(k).data("ref",e).data("symbol",e)}else k.tagName=="image"&&Fb(k);k.id=ka();return k},aa,ka,M;(function(e){var k={};aa=e.getId=function(){return B().getId()};ka=e.getNextId=function(){return B().getNextId()};M=e.call=function(l,
+C){if(k[l])return k[l](this,C)};e.bind=function(l,C){var A=k[l];k[l]=C;return A}})(c);this.prepareSvg=function(e){this.sanitizeSvg(e.documentElement);e=e.getElementsByTagNameNS(b,"path");for(var k=0,l=e.length;k<l;++k){var C=e[k];C.setAttribute("d",La.convertPath(C));La.fixEnd(C)}};var P=this.getRefElem=function(e){return pa(ja(e).substr(1))},da=function(e){if(!svgedit.browser.isGecko())return e;var k=e.cloneNode(true);e.parentNode.insertBefore(k,e);e.parentNode.removeChild(e);ra.releaseSelector(e);
+I[0]=k;ra.requestSelector(k).showGrips(true);return k};this.setRotationAngle=function(e,k){e=parseFloat(e);var l=I[0];if(l){var C=l.getAttribute("transform"),A=svgedit.utilities.getBBox(l),G=A.x+A.width/2,D=A.y+A.height/2;A=R(l);A.numberOfItems>0&&A.getItem(0).type==4&&A.removeItem(0);if(e!=0){G=N(G,D,Y(A).matrix);D=d.createSVGTransform();D.setRotate(e,G.x,G.y);A.numberOfItems?A.insertItemBefore(D,0):A.appendItem(D)}else A.numberOfItems==0&&l.removeAttribute("transform");if(!k){A=l.getAttribute("transform");
+l.setAttribute("transform",C);Ya("transform",A,I);M("changed",I)}pa("pathpointgrip_container");l=ra.requestSelector(I[0]);l.resize();l.updateGripCursors(e)}};var Ea=this.recalculateAllSelectedDimensions=function(){for(var e=new Da(db=="none"?"position":"size"),k=I.length;k--;){var l=Ra(I[k]);l&&e.addSubCommand(l)}if(!e.isEmpty()){wa(e);M("changed",I)}},Oa=[0,"z","M","m","L","l","C","c","Q","q","A","a","H","h","V","v","S","s","T","t"],Wa=function(e){console.log([e.a,e.b,e.c,e.d,e.e,e.f])},Za=this.remapElement=
+function(e,k,l){var C=p.gridSnapping&&e.parentNode.parentNode.localName==="svg",A=function(){if(C)for(var o in k)k[o]=va(k[o]);ma(e,k,1E3,true)};box=svgedit.utilities.getBBox(e);for(var G=0;G<2;G++){var D=G===0?"fill":"stroke",z=e.getAttribute(D);if(z&&z.indexOf("url(")===0)if(l.a<0||l.d<0){z=P(z).cloneNode(true);if(l.a<0){var F=z.getAttribute("x1"),h=z.getAttribute("x2");z.setAttribute("x1",-(F-1));z.setAttribute("x2",-(h-1))}if(l.d<0){F=z.getAttribute("y1");h=z.getAttribute("y2");z.setAttribute("y1",
+-(F-1));z.setAttribute("y2",-(h-1))}z.id=ka();gb().appendChild(z);e.setAttribute(D,"url(#"+z.id+")")}}G=e.tagName;if(G==="g"||G==="text"||G==="use")if(l.a==1&&l.b==0&&l.c==0&&l.d==1&&(l.e!=0||l.f!=0)){D=Y(e).matrix;D=ga(D.inverse(),l,D);k.x=parseFloat(k.x)+D.e;k.y=parseFloat(k.y)+D.f}else{D=R(e);z=d.createSVGTransform();z.setMatrix(ga(Y(D).matrix,l));D.clear();D.appendItem(z)}switch(G){case "foreignObject":case "rect":case "image":if(G==="image"&&(l.a<0||l.d<0)){D=R(e);z=d.createSVGTransform();z.setMatrix(ga(Y(D).matrix,
+l));D.clear();D.appendItem(z)}else{D=N(k.x,k.y,l);k.width=l.a*k.width;k.height=l.d*k.height;k.x=D.x+Math.min(0,k.width);k.y=D.y+Math.min(0,k.height);k.width=Math.abs(k.width);k.height=Math.abs(k.height)}A();break;case "ellipse":G=N(k.cx,k.cy,l);k.cx=G.x;k.cy=G.y;k.rx=l.a*k.rx;k.ry=l.d*k.ry;k.rx=Math.abs(k.rx);k.ry=Math.abs(k.ry);A();break;case "circle":G=N(k.cx,k.cy,l);k.cx=G.x;k.cy=G.y;G=svgedit.math.transformBox(box.x,box.y,box.width,box.height,l);k.r=Math.min((G.tr.x-G.tl.x)/2,(G.bl.y-G.tl.y)/
+2);if(k.r)k.r=Math.abs(k.r);A();break;case "line":D=N(k.x1,k.y1,l);F=N(k.x2,k.y2,l);k.x1=D.x;k.y1=D.y;k.x2=F.x;k.y2=F.y;case "text":l=e.querySelectorAll("tspan");for(G=l.length;G--;){D=Ba("x",e.getAttribute("x"));z=Ba("x",l[G].getAttribute("x"));F=Ba("y",e.getAttribute("y"));h=Ba("y",l[G].getAttribute("y"));var m={};if(!isNaN(D)&&!isNaN(z)&&D!=0&&z!=0&&k.x)m.x=k.x-(D-z);if(!isNaN(F)&&!isNaN(h)&&F!=0&&h!=0&&k.y)m.y=k.y-(F-h);if(m.x||m.y)ma(l[G],m,1E3,true)}A();break;case "use":A();break;case "g":(A=
+$(e).data("gsvg"))&&ma(A,k,1E3,true);break;case "polyline":case "polygon":A=k.points.length;for(G=0;G<A;++G){h=k.points[G];h=N(h.x,h.y,l);k.points[G].x=h.x;k.points[G].y=h.y}A=k.points.length;l="";for(G=0;G<A;++G){h=k.points[G];l+=h.x+","+h.y+" "}e.setAttribute("points",l);break;case "path":D=e.pathSegList;A=D.numberOfItems;k.d=Array(A);for(G=0;G<A;++G){z=D.getItem(G);k.d[G]={type:z.pathSegType,x:z.x,y:z.y,x1:z.x1,y1:z.y1,x2:z.x2,y2:z.y2,r1:z.r1,r2:z.r2,angle:z.angle,largeArcFlag:z.largeArcFlag,sweepFlag:z.sweepFlag}}A=
+k.d.length;G=k.d[0];m=N(G.x,G.y,l);k.d[0].x=m.x;k.d[0].y=m.y;for(G=1;G<A;++G){z=k.d[G];D=z.type;if(D%2==0){h=N(z.x!=undefined?z.x:m.x,z.y!=undefined?z.y:m.y,l);D=N(z.x1,z.y1,l);F=N(z.x2,z.y2,l);z.x=h.x;z.y=h.y;z.x1=D.x;z.y1=D.y;z.x2=F.x;z.y2=F.y}else{z.x=l.a*z.x;z.y=l.d*z.y;z.x1=l.a*z.x1;z.y1=l.d*z.y1;z.x2=l.a*z.x2;z.y2=l.d*z.y2}z.r1=l.a*z.r1;z.r2=l.d*z.r2}l="";A=k.d.length;for(G=0;G<A;++G){z=k.d[G];D=z.type;l+=Oa[D];switch(D){case 13:case 12:l+=z.x+" ";break;case 15:case 14:l+=z.y+" ";break;case 3:case 5:case 19:case 2:case 4:case 18:l+=
+z.x+","+z.y+" ";break;case 7:case 6:l+=z.x1+","+z.y1+" "+z.x2+","+z.y2+" "+z.x+","+z.y+" ";break;case 9:case 8:l+=z.x1+","+z.y1+" "+z.x+","+z.y+" ";break;case 11:case 10:l+=z.r1+","+z.r2+" "+z.angle+" "+ +z.largeArcFlag+" "+ +z.sweepFlag+" "+z.x+","+z.y+" ";break;case 17:case 16:l+=z.x2+","+z.y2+" "+z.x+","+z.y+" "}}e.setAttribute("d",l)}},nb=function(e,k,l){e=P(e).firstChild;var C=R(e),A=d.createSVGTransform();A.setTranslate(k,l);C.appendItem(A);Ra(e)},Ra=this.recalculateDimensions=function(e){if(e==
+null)return null;var k=R(e);if(k&&k.numberOfItems>0){for(var l=k.numberOfItems;l--;){var C=k.getItem(l);if(C.type===0)k.removeItem(l);else if(C.type===1)svgedit.math.isIdentity(C.matrix)&&k.removeItem(l);else C.type===4&&C.angle===0&&k.removeItem(l)}if(k.numberOfItems===1&&na(e))return null}if(!k||k.numberOfItems==0){e.removeAttribute("transform");return null}if(k){l=k.numberOfItems;for(var A=[];l--;){C=k.getItem(l);if(C.type===1)A.push([C.matrix,l]);else if(A.length)A=[]}if(A.length===2){l=d.createSVGTransformFromMatrix(ga(A[1][0],
+A[0][0]));k.removeItem(A[0][1]);k.removeItem(A[1][1]);k.insertItemBefore(l,A[1][1])}l=k.numberOfItems;if(l>=2&&k.getItem(l-2).type===1&&k.getItem(l-1).type===2){A=d.createSVGTransform();C=ga(k.getItem(l-2).matrix,k.getItem(l-1).matrix);A.setMatrix(C);k.removeItem(l-2);k.removeItem(l-2);k.appendItem(A)}}switch(e.tagName){case "line":case "polyline":case "polygon":case "path":break;default:if(k.numberOfItems===1&&k.getItem(0).type===1||k.numberOfItems===2&&k.getItem(0).type===1&&k.getItem(0).type===
+4)return null}var G=$(e).data("gsvg");l=new Da("Transform");var D={},z=null;C=[];switch(e.tagName){case "line":C=["x1","y1","x2","y2"];break;case "circle":C=["cx","cy","r"];break;case "ellipse":C=["cx","cy","rx","ry"];break;case "foreignObject":case "rect":case "image":C=["width","height","x","y"];break;case "use":case "text":case "tspan":C=["x","y"];break;case "polygon":case "polyline":z={};z.points=e.getAttribute("points");A=e.points;var F=A.numberOfItems;D.points=Array(F);for(var h=0;h<F;++h){var m=
+A.getItem(h);D.points[h]={x:m.x,y:m.y}}break;case "path":z={};z.d=e.getAttribute("d");D.d=e.getAttribute("d")}if(C.length){D=$(e).attr(C);$.each(D,function(Ca,Pa){D[Ca]=Ba(Ca,Pa)})}else if(G)D={x:$(G).attr("x")||0,y:$(G).attr("y")||0};if(z==null){z=$.extend(true,{},D);$.each(z,function(Ca,Pa){z[Ca]=Ba(Ca,Pa)})}z.transform=Sa?Sa:"";if(e.tagName=="g"&&!G||e.tagName=="a"){A=svgedit.utilities.getBBox(e);var o={x:A.x+A.width/2,y:A.y+A.height/2},u=N(A.x+A.width/2,A.y+A.height/2,Y(k).matrix);C=d.createSVGMatrix();
+if(A=na(e)){h=A*Math.PI/180;F=Math.abs(h)>1.0E-10?Math.sin(h)/(1-Math.cos(h)):2/h;for(h=0;h<k.numberOfItems;++h){C=k.getItem(h);if(C.type==4){C=C.matrix;o.y=(F*C.e+C.f)/2;o.x=(C.e-F*C.f)/2;k.removeItem(h);break}}}h=C=G=0;var E=k.numberOfItems;if(E)var H=k.getItem(0).matrix;if(E>=3&&k.getItem(E-2).type==3&&k.getItem(E-3).type==2&&k.getItem(E-1).type==2){h=3;var J=k.getItem(E-3).matrix,O=k.getItem(E-2).matrix,W=k.getItem(E-1).matrix;F=e.childNodes;for(m=F.length;m--;){var ba=F.item(m);C=G=0;if(ba.nodeType==
+1){var T=R(ba);if(T){C=Y(T).matrix;G=na(ba);var fa=Sa,ha=[];Sa=ba.getAttribute("transform");if(G||oa(T)){var X=d.createSVGTransform();X.setMatrix(ga(J,O,W,C));T.clear();T.appendItem(X);ha.push(X)}else{G=ga(C.inverse(),W,C);X=d.createSVGMatrix();X.e=-G.e;X.f=-G.f;C=ga(X.inverse(),C.inverse(),J,O,W,C,G.inverse());var qa=d.createSVGTransform(),ua=d.createSVGTransform(),Aa=d.createSVGTransform();qa.setTranslate(G.e,G.f);ua.setScale(C.a,C.d);Aa.setTranslate(X.e,X.f);T.appendItem(Aa);T.appendItem(ua);T.appendItem(qa);
+ha.push(Aa);ha.push(ua);ha.push(qa)}l.addSubCommand(Ra(ba));Sa=fa}}}k.removeItem(E-1);k.removeItem(E-2);k.removeItem(E-3)}else if(E>=3&&k.getItem(E-1).type==1){h=3;C=Y(k).matrix;X=d.createSVGTransform();X.setMatrix(C);k.clear();k.appendItem(X)}else if((E==1||E>1&&k.getItem(1).type!=3)&&k.getItem(0).type==2){h=2;G=Y(k).matrix;k.removeItem(0);C=Y(k).matrix.inverse();C=ga(C,G);G=C.e;C=C.f;if(G!=0||C!=0){F=e.childNodes;m=F.length;for(E=[];m--;){ba=F.item(m);if(ba.nodeType==1){if(ba.getAttribute("clip-path")){fa=
+ba.getAttribute("clip-path");if(E.indexOf(fa)===-1){nb(fa,G,C);E.push(fa)}}fa=Sa;Sa=ba.getAttribute("transform");if(T=R(ba)){J=d.createSVGTransform();J.setTranslate(G,C);T.numberOfItems?T.insertItemBefore(J,0):T.appendItem(J);l.addSubCommand(Ra(ba));T=e.getElementsByTagNameNS(b,"use");ba="#"+ba.id;for(J=T.length;J--;){O=T.item(J);if(ba==ca(O)){W=d.createSVGTransform();W.setTranslate(-G,-C);R(O).insertItemBefore(W,0);l.addSubCommand(Ra(O))}}Sa=fa}}}E=[];Sa=fa}}else if(E==1&&k.getItem(0).type==1&&!A){h=
+1;C=k.getItem(0).matrix;F=e.childNodes;for(m=F.length;m--;){ba=F.item(m);if(ba.nodeType==1){fa=Sa;Sa=ba.getAttribute("transform");if(T=R(ba)){G=ga(C,Y(T).matrix);E=d.createSVGTransform();E.setMatrix(G);T.clear();T.appendItem(E,0);l.addSubCommand(Ra(ba));Sa=fa;fa=ba.getAttribute("stroke-width");ba.getAttribute("stroke")!=="none"&&!isNaN(fa)&&ba.setAttribute("stroke-width",fa*((Math.abs(G.a)+Math.abs(G.d))/2))}}}k.clear()}else{if(A){o=d.createSVGTransform();o.setRotate(A,u.x,u.y);k.numberOfItems?k.insertItemBefore(o,
+0):k.appendItem(o)}k.numberOfItems==0&&e.removeAttribute("transform");return null}if(h==2){if(A){u={x:o.x+H.e,y:o.y+H.f};o=d.createSVGTransform();o.setRotate(A,u.x,u.y);k.numberOfItems?k.insertItemBefore(o,0):k.appendItem(o)}}else if(h==3){C=Y(k).matrix;H=d.createSVGTransform();H.setRotate(A,o.x,o.y);H=H.matrix;o=d.createSVGTransform();o.setRotate(A,u.x,u.y);u=o.matrix.inverse();fa=C.inverse();u=ga(fa,u,H,C);G=u.e;C=u.f;if(G!=0||C!=0){F=e.childNodes;for(m=F.length;m--;){ba=F.item(m);if(ba.nodeType==
+1){fa=Sa;Sa=ba.getAttribute("transform");T=R(ba);J=d.createSVGTransform();J.setTranslate(G,C);T.numberOfItems?T.insertItemBefore(J,0):T.appendItem(J);l.addSubCommand(Ra(ba));Sa=fa}}}if(A)k.numberOfItems?k.insertItemBefore(o,0):k.appendItem(o)}}else{A=svgedit.utilities.getBBox(e);if(!A&&e.tagName!="path")return null;C=d.createSVGMatrix();if(G=na(e)){o={x:A.x+A.width/2,y:A.y+A.height/2};u=N(A.x+A.width/2,A.y+A.height/2,Y(k).matrix);h=G*Math.PI/180;F=Math.abs(h)>1.0E-10?Math.sin(h)/(1-Math.cos(h)):2/
+h;for(h=0;h<k.numberOfItems;++h){C=k.getItem(h);if(C.type==4){C=C.matrix;o.y=(F*C.e+C.f)/2;o.x=(C.e-F*C.f)/2;k.removeItem(h);break}}}h=0;E=k.numberOfItems;if(!svgedit.browser.isWebkit())if((H=e.getAttribute("fill"))&&H.indexOf("url(")===0){H=P(H);fa="pattern";if(H.tagName!==fa)fa="gradient";if(H.getAttribute(fa+"Units")==="userSpaceOnUse"){C=Y(k).matrix;A=R(H);A=Y(A).matrix;C=ga(C,A);A="matrix("+[C.a,C.b,C.c,C.d,C.e,C.f].join(",")+")";H.setAttribute(fa+"Transform",A)}}if(E>=3&&k.getItem(E-2).type==
+3&&k.getItem(E-3).type==2&&k.getItem(E-1).type==2){h=3;C=Y(k,E-3,E-1).matrix;k.removeItem(E-1);k.removeItem(E-2);k.removeItem(E-3)}else if(E==4&&k.getItem(E-1).type==1){h=3;C=Y(k).matrix;X=d.createSVGTransform();X.setMatrix(C);k.clear();k.appendItem(X);C=d.createSVGMatrix()}else if((E==1||E>1&&k.getItem(1).type!=3)&&k.getItem(0).type==2){h=2;H=k.getItem(0).matrix;fa=Y(k,1).matrix;A=fa.inverse();C=ga(A,H,fa);k.removeItem(0)}else if(E==1&&k.getItem(0).type==1&&!G){C=Y(k).matrix;switch(e.tagName){case "line":D=
+$(e).attr(["x1","y1","x2","y2"]);case "polyline":case "polygon":D.points=e.getAttribute("points");if(D.points){A=e.points;F=A.numberOfItems;D.points=Array(F);for(h=0;h<F;++h){m=A.getItem(h);D.points[h]={x:m.x,y:m.y}}}case "path":D.d=e.getAttribute("d");h=1;k.clear()}}else{h=4;if(G){o=d.createSVGTransform();o.setRotate(G,u.x,u.y);k.numberOfItems?k.insertItemBefore(o,0):k.appendItem(o)}k.numberOfItems==0&&e.removeAttribute("transform");return null}if(h==1||h==2||h==3)Za(e,D,C);if(h==2){if(G){oa(k)||
+(u={x:o.x+C.e,y:o.y+C.f});o=d.createSVGTransform();o.setRotate(G,u.x,u.y);k.numberOfItems?k.insertItemBefore(o,0):k.appendItem(o)}}else if(h==3&&G){C=Y(k).matrix;H=d.createSVGTransform();H.setRotate(G,o.x,o.y);H=H.matrix;o=d.createSVGTransform();o.setRotate(G,u.x,u.y);u=o.matrix.inverse();fa=C.inverse();u=ga(fa,u,H,C);Za(e,D,u);if(G)k.numberOfItems?k.insertItemBefore(o,0):k.appendItem(o)}}k.numberOfItems==0&&e.removeAttribute("transform");l.addSubCommand(new Ma(e,z));return l},mb=null,xa=this.clearSelection=
+function(e){if(I[0]!=null)for(var k=I.length,l=0;l<k;++l){var C=I[l];if(C==null)break;ra.releaseSelector(C);I[l]=null}e||M("selected",I)},qb=this.addToSelection=function(e,k){if(e.length!=0){for(var l=0;l<I.length;){if(I[l]==null)break;++l}for(var C=e.length;C--;){var A=e[C];if(A&&svgedit.utilities.getBBox(A)){if(A.tagName==="a"&&A.childNodes.length===1)A=A.firstChild;if(I.indexOf(A)==-1){I[l]=A;l++;A=ra.requestSelector(A);I.length>1&&A.showGrips(false)}}}M("selected",I);k||I.length==1?ra.requestSelector(I[0]).showGrips(true):
+ra.requestSelector(I[0]).showGrips(false);for(I.sort(function(G,D){if(G&&D&&G.compareDocumentPosition)return 3-(D.compareDocumentPosition(G)&6);else if(G==null)return 1});I[0]==null;)I.shift(0)}},rb=this.selectOnly=function(e,k){xa(true);qb(e,k)};this.removeFromSelection=function(e){if(I[0]!=null)if(e.length!=0){var k=Array(I.length);j=0;len=I.length;for(var l=0;l<len;++l){var C=I[l];if(C)if(e.indexOf(C)==-1){k[j]=C;j++}else ra.releaseSelector(C)}I=k}};this.selectAllInCurrentLayer=function(){var e=
+B().getCurrentLayer();if(e){Ha="select";rb($(L||e).children())}};var Bb=this.getMouseTarget=function(e){if(e==null||e.target==null)return null;e=e.target;if(e.correspondingUseElement)e=e.correspondingUseElement;if(["http://www.w3.org/1998/Math/MathML","http://www.w3.org/1999/xhtml"].indexOf(e.namespaceURI)>=0&&e.id!="svgcanvas")for(;e.nodeName!="foreignObject";){e=e.parentNode;if(!e)return d}var k=B().getCurrentLayer();if([d,a,n,k].indexOf(e)>=0)return d;if($(e).closest("#selectorParentGroup").length)return ra.selectorParentGroup;
+for(;e.parentNode&&e.parentNode!==(L||k);)e=e.parentNode;return e};(function(){var e=null,k=null,l=null,C=null,A=null,G={},D={minx:null,miny:null,maxx:null,maxy:null};$(a).mousedown(function(z){if(!c.spaceKey){var F=z.button===2;mb=n.getScreenCTM().inverse();isBotchedZoom=svgedit.browser.isGecko();var h=N(z.pageX,z.pageY,mb),m=h.x*(isBotchedZoom?1:q);h=h.y*(isBotchedZoom?1:q);z.preventDefault();if(F)Ha="select";m=m/q;h=h/q;var o=Bb(z);if(o.tagName==="a"&&o.childNodes.length===1)o=o.firstChild;var u=
+C=k=m,E=A=l=h;if(p.gridSnapping){m=va(m);h=va(h);k=va(k);l=va(l)}if(o==ra.selectorParentGroup&&I[0]!=null){o=z.target;var H=cb(o,"type");if(H=="rotate"){Ha="rotate";current_rotate_mode=cb(o,"dir")}else if(H=="resize"){Ha="resize";db=cb(o,"dir")}o=I[0]}Sa=o.getAttribute("transform");H=R(o);switch(Ha){case "select":Ka=true;db="none";if(F)Ka=false;if(o!=d){if(I.indexOf(o)==-1){z.shiftKey||xa(true);qb([o]);wb=o;La.clear()}if(!F)for(F=0;F<I.length;++F)if(I[F]!=null){var J=R(I[F]);J.numberOfItems?J.insertItemBefore(d.createSVGTransform(),
+0):J.appendItem(d.createSVGTransform())}}else if(!F){xa();Ha="multiselect";if(sa==null)sa=ra.getRubberBandBox();C*=q;A*=q;ma(sa,{x:C,y:A,width:0,height:0,display:"inline"},100)}break;case "zoom":Ka=true;if(sa==null)sa=ra.getRubberBandBox();ma(sa,{x:u*q,y:u*q,width:0,height:0,display:"inline"},100);break;case "resize":Ka=true;k=m;l=h;G=svgedit.utilities.getBBox($("#selectedBox0")[0]);var O={};$.each(G,function(W,ba){O[W]=ba/q});G=O;F=na(o)?1:0;if(oa(H)){H.insertItemBefore(d.createSVGTransform(),F);
+H.insertItemBefore(d.createSVGTransform(),F);H.insertItemBefore(d.createSVGTransform(),F)}else{H.appendItem(d.createSVGTransform());H.appendItem(d.createSVGTransform());H.appendItem(d.createSVGTransform());if(svgedit.browser.supportsNonScalingStroke()){if(m=svgedit.browser.isWebkit())J=function(W){var ba=W.getAttributeNS(null,"stroke");W.removeAttributeNS(null,"stroke");setTimeout(function(){W.setAttributeNS(null,"stroke",ba)},0)};o.style.vectorEffect="non-scaling-stroke";m&&J(o);h=o.getElementsByTagName("*");
+u=h.length;for(F=0;F<u;F++){h[F].style.vectorEffect="non-scaling-stroke";m&&J(h[F])}}}break;case "fhellipse":case "fhrect":case "fhpath":Ka=true;e=u+","+E+" ";J=K.stroke_width==0?1:K.stroke_width;S({element:"polyline",curStyles:true,attr:{points:e,id:ka(),fill:"none",opacity:K.opacity/2,"stroke-linecap":"round",style:"pointer-events:none"}});D.minx=u;D.maxx=u;D.miny=E;D.maxy=E;break;case "image":Ka=true;J=S({element:"image",attr:{x:m,y:h,width:0,height:0,id:ka(),opacity:K.opacity/2,style:"pointer-events:inherit"}});
+U(J,Ga);Fb(J);break;case "square":case "rect":Ka=true;k=m;l=h;S({element:"rect",curStyles:true,attr:{x:m,y:h,width:0,height:0,id:ka(),opacity:K.opacity/2}});break;case "line":Ka=true;J=K.stroke_width==0?1:K.stroke_width;S({element:"line",curStyles:true,attr:{x1:m,y1:h,x2:m,y2:h,id:ka(),stroke:K.stroke,"stroke-width":J,"stroke-dasharray":K.stroke_dasharray,"stroke-linejoin":K.stroke_linejoin,"stroke-linecap":K.stroke_linecap,"stroke-opacity":K.stroke_opacity,fill:"none",opacity:K.opacity/2,style:"pointer-events:none"}});
+break;case "circle":Ka=true;S({element:"circle",curStyles:true,attr:{cx:m,cy:h,r:0,id:ka(),opacity:K.opacity/2}});break;case "ellipse":Ka=true;S({element:"ellipse",curStyles:true,attr:{cx:m,cy:h,rx:0,ry:0,id:ka(),opacity:K.opacity/2}});break;case "text":Ka=true;S({element:"text",curStyles:true,attr:{x:m,y:h,id:ka(),fill:Ua.fill,"stroke-width":Ua.stroke_width,"font-size":Ua.font_size,"font-family":Ua.font_family,"text-anchor":"left","xml:space":"preserve",opacity:K.opacity}});break;case "path":case "pathedit":k*=
+q;l*=q;La.mouseDown(z,o,k,l);Ka=true;break;case "textedit":k*=q;l*=q;bb.mouseDown(z,o,k,l);Ka=true;break;case "rotate":Ka=true;c.undoMgr.beginUndoableChange("transform",I);document.getElementById("workarea").className="rotate"}J=ib("mouseDown",{event:z,start_x:k,start_y:l,selectedElements:I},true);$.each(J,function(W,ba){if(ba&&ba.started)Ka=true});if(Ha)document.getElementById("workarea").className=Ha=="resize"?z.target.style.cursor:Ha}}).mousemove(function(z){if(!(z.originalEvent.touches&&z.originalEvent.touches.length>
+1))if(Ka)if(!(z.button===1||c.spaceKey)){var F=I[0],h=N(z.pageX,z.pageY,mb),m=h.x*(isBotchedZoom?1:q);h=h.y*(isBotchedZoom?1:q);var o=pa(aa()),u=x=m/q,E=y=h/q;if(p.gridSnapping){x=va(x);y=va(y)}z.preventDefault();switch(Ha){case "select":if(I[0]!==null){u=x-k;var H=y-l;if(p.gridSnapping){u=va(u);H=va(H)}if(z.shiftKey){var J=V(k,l,x,y);x=J.x;y=J.y}if(u!=0||H!=0){E=I.length;for(var O=0;O<E;++O){F=I[O];if(F==null)break;var W=d.createSVGTransform();o=R(F);if(J){u=J.x-k;H=J.y-l}W.setTranslate(u,H);o.numberOfItems?
+o.replaceItem(W,0):o.appendItem(W);ra.requestSelector(F).resize()}if(z.altKey)if(!c.addClones){c.addClones=c.cloneSelectedElements(0,0,W);c.removeClones=function(){c.addClones&&c.addClones.forEach(function(ua){ua.parentNode&&ua.parentNode.removeChild(ua);c.addClones=false})};window.addEventListener("keyup",c.removeClones)}M("transition",I)}}break;case "multiselect":u*=q;E*=q;ma(sa,{x:Math.min(C,u),y:Math.min(A,E),width:Math.abs(u-C),height:Math.abs(E-A)},100);o=[];u=[];J=ob();E=I.length;for(O=0;O<
+E;++O){H=J.indexOf(I[O]);if(H==-1)o.push(I[O]);else J[H]=null}E=J.length;for(O=0;O<E;++O)J[O]&&u.push(J[O]);o.length>0&&c.removeFromSelection(o);u.length>0&&qb(u);break;case "resize":o=R(F);u=(J=oa(o))?G:svgedit.utilities.getBBox(F);E=u.x;O=u.y;var ba=u.width,T=u.height;u=x-k;H=y-l;if(p.gridSnapping){u=va(u);H=va(H);T=va(T);ba=va(ba)}if(W=na(F)){var fa=Math.sqrt(u*u+H*H);H=Math.atan2(H,u)-W*Math.PI/180;u=fa*Math.cos(H);H=fa*Math.sin(H)}if(db.indexOf("n")==-1&&db.indexOf("s")==-1)H=0;if(db.indexOf("e")==
+-1&&db.indexOf("w")==-1)u=0;var ha=fa=0,X=T?(T+H)/T:1,qa=ba?(ba+u)/ba:1;if(db.indexOf("n")>=0){X=T?(T-H)/T:1;ha=T}if(db.indexOf("w")>=0){qa=ba?(ba-u)/ba:1;fa=ba}u=d.createSVGTransform();H=d.createSVGTransform();ba=d.createSVGTransform();if(p.gridSnapping){E=va(E);fa=va(fa);O=va(O);ha=va(ha)}u.setTranslate(-(E+fa),-(O+ha));if(z.shiftKey)if(qa==1)qa=X;else X=qa;H.setScale(qa,X);ba.setTranslate(E+fa,O+ha);if(J){J=W?1:0;o.replaceItem(u,2+J);o.replaceItem(H,1+J);o.replaceItem(ba,0+J)}else{J=o.numberOfItems;
+o.replaceItem(ba,J-3);o.replaceItem(H,J-2);o.replaceItem(u,J-1)}ra.requestSelector(F).resize();M("transition",I);break;case "zoom":u*=q;E*=q;ma(sa,{x:Math.min(C*q,u),y:Math.min(A*q,E),width:Math.abs(u-C*q),height:Math.abs(E-A*q)},100);break;case "text":ma(o,{x:x,y:y},1E3);break;case "line":u=null;window.opera||d.suspendRedraw(1E3);if(p.gridSnapping){x=va(x);y=va(y)}E=x;J=y;if(z.shiftKey){J=V(k,l,E,J);E=J.x;J=J.y}o.setAttributeNS(null,"x2",E);o.setAttributeNS(null,"y2",J);window.opera||d.unsuspendRedraw(u);
+break;case "foreignObject":case "square":case "rect":case "image":u=Math.abs(x-k);J=Math.abs(y-l);if(Ha=="square"||z.shiftKey){u=J=Math.max(u,J);E=k<x?k:k-u;O=l<y?l:l-J}else{E=Math.min(k,x);O=Math.min(l,y)}if(z.altKey){u*=2;J*=2;E=k-u/2;O=l-J/2}if(p.gridSnapping){u=va(u);J=va(J);E=va(E);O=va(O)}ma(o,{width:u,height:J,x:E,y:O},1E3);break;case "circle":u=$(o).attr(["cx","cy"]);J=u.cx;E=u.cy;u=Math.sqrt((x-J)*(x-J)+(y-E)*(y-E));if(p.gridSnapping)u=va(u);o.setAttributeNS(null,"r",u);break;case "ellipse":u=
+$(o).attr(["cx","cy"]);J=Math.abs(k+(x-k)/2);E=Math.abs(l+(y-l)/2);u=null;window.opera||d.suspendRedraw(1E3);if(p.gridSnapping){x=va(x);J=va(J);y=va(y);E=va(E)}O=Math.abs(k-J);H=Math.abs(l-E);if(z.shiftKey){H=O;E=y>l?l+O:l-O}if(z.altKey){J=k;E=l;O=Math.abs(x-J);H=z.shiftKey?O:Math.abs(y-E)}o.setAttributeNS(null,"rx",O);o.setAttributeNS(null,"ry",H);o.setAttributeNS(null,"cx",J);o.setAttributeNS(null,"cy",E);window.opera||d.unsuspendRedraw(u);break;case "fhellipse":case "fhrect":D.minx=Math.min(u,
+D.minx);D.maxx=Math.max(u,D.maxx);D.miny=Math.min(E,D.miny);D.maxy=Math.max(E,D.maxy);case "fhpath":e+=+u+","+E+" ";o.setAttributeNS(null,"points",e);break;case "path":case "pathedit":x*=q;y*=q;if(p.gridSnapping){x=va(x);y=va(y);k=va(k);l=va(l)}if(z.shiftKey){if(J=svgedit.path.path){o=J.dragging?J.dragging[0]:k;J=J.dragging?J.dragging[1]:l}else{o=k;J=l}J=V(o,J,x,y);x=J.x;y=J.y}if(sa&&sa.getAttribute("display")!=="none"){u*=q;E*=q;ma(sa,{x:Math.min(C*q,u),y:Math.min(A*q,E),width:Math.abs(u-C*q),height:Math.abs(E-
+A*q)},100)}La.mouseMove(z,x,y);break;case "textedit":x*=q;y*=q;bb.mouseMove(m,h);break;case "rotate":u=svgedit.utilities.getBBox(F);J=u.x+u.width/2;E=u.y+u.height/2;o=ea(F);o=N(J,E,o);J=o.x;E=o.y;o=u.x;O=u.y;if(current_rotate_mode=="nw")o=u.x+u.width;if(current_rotate_mode=="se")O=u.y+u.height;if(current_rotate_mode=="sw"){o=u.x+u.width;O=u.y+u.height}compensation_angle=(Math.atan2(E-O,J-o)*(180/Math.PI)-90)%360;W=(Math.atan2(E-y,J-x)*(180/Math.PI)-90)%360;W+=compensation_angle;if(p.gridSnapping)W=
+va(W);if(z.shiftKey)W=Math.round(W/45)*45;c.setRotationAngle(W<-180?360+W:W,true);M("transition",I)}ib("mouseMove",{event:z,mouse_x:m,mouse_y:h,selected:F})}}).click(function(z){z.preventDefault();return false}).dblclick(function(z){var F=z.target.parentNode,h=Bb(z),m=h.tagName;if(F!==L){if(m==="text"&&Ha!=="textedit"){z=N(z.pageX,z.pageY,mb);bb.select(h,z.x,z.y)}if((m==="g"||m==="a")&&na(h)){Db(h);h=I[0];xa(true)}L&&Eb();F.tagName!=="g"&&F.tagName!=="a"||F===B().getCurrentLayer()||h===ra.selectorParentGroup||
+Kb(h)}}).mouseup(function(z){c.addClones=false;window.removeEventListener("keyup",c.removeClones);I=I.filter(Boolean);if(z.button!==2){var F=wb;wb=null;if(Ka){var h=N(z.pageX,z.pageY,mb),m=h.x*q;h=h.y*q;var o=m/q,u=h/q,E=pa(aa()),H=false;Ka=false;switch(Ha){case "resize":case "multiselect":if(sa!=null){sa.setAttribute("display","none");hb=[]}Ha="select";case "select":if(I[0]!=null){if(I.length==1){m=I[0];switch(m.tagName){case "g":case "use":case "image":case "foreignObject":break;default:Xa.fill=
+m.getAttribute("fill");Xa.fill_opacity=m.getAttribute("fill-opacity");Xa.stroke=m.getAttribute("stroke");Xa.stroke_opacity=m.getAttribute("stroke-opacity");Xa.stroke_width=m.getAttribute("stroke-width");Xa.stroke_dasharray=m.getAttribute("stroke-dasharray");Xa.stroke_linejoin=m.getAttribute("stroke-linejoin");Xa.stroke_linecap=m.getAttribute("stroke-linecap")}if(m.tagName=="text"){Ua.font_size=m.getAttribute("font-size");Ua.font_family=m.getAttribute("font-family")}ra.requestSelector(m).showGrips(true)}Ea();
+C=(m=svgedit.browser.isGecko())?C*q:C;A=m?A*q:A;m=Math.abs(u-A);if(m>1||m>1){z=I.length;for(m=0;m<z;++m){if(I[m]==null)break;I[m].firstChild||ra.requestSelector(I[m]).resize()}}else{m=z.target;if(I[0].nodeName==="path"&&I[1]==null)La.select(I[0]);else z.shiftKey&&F!=m&&c.removeFromSelection([m])}if(svgedit.browser.supportsNonScalingStroke())if(z=I[0]){z.removeAttribute("style");svgedit.utilities.walkTree(z,function(W){W.removeAttribute("style")})}}return;case "zoom":sa!=null&&sa.setAttribute("display",
+"none");M("zoomed",{x:Math.min(C,o),y:Math.min(A,u),width:Math.abs(o-C),height:Math.abs(u-A),factor:z.altKey?0.5:2});return;case "fhpath":F=E.getAttribute("points");u=F.indexOf(",");if(H=u>=0?F.indexOf(",",u+1)>=0:F.indexOf(" ",F.indexOf(" ")+1)>=0)E=La.smoothPolylineIntoPath(E);break;case "line":F=$(E).attr(["x1","x2","y1","y2"]);H=F.x1!=F.x2||F.y1!=F.y2;break;case "foreignObject":case "square":case "rect":case "image":F=$(E).attr(["width","height"]);H=F.width!=0||F.height!=0||Ha==="image";break;
+case "circle":H=E.getAttribute("r")!=0;break;case "ellipse":F=$(E).attr(["rx","ry"]);H=F.rx!=null||F.ry!=null;break;case "fhellipse":if(D.maxx-D.minx>0&&D.maxy-D.miny>0){E=S({element:"ellipse",curStyles:true,attr:{cx:(D.minx+D.maxx)/2,cy:(D.miny+D.maxy)/2,rx:(D.maxx-D.minx)/2,ry:(D.maxy-D.miny)/2,id:aa()}});M("changed",[E]);H=true}break;case "fhrect":if(D.maxx-D.minx>0&&D.maxy-D.miny>0){E=S({element:"rect",curStyles:true,attr:{x:D.minx,y:D.miny,width:D.maxx-D.minx,height:D.maxy-D.miny,id:aa()}});
+M("changed",[E]);H=true}break;case "text":H=true;rb([E]);bb.start(E);break;case "path":E=null;Ka=true;F=La.mouseUp(z,E,m,h);E=F.element;H=F.keep;break;case "pathedit":H=true;E=null;La.mouseUp(z);break;case "textedit":H=false;E=null;bb.mouseUp(z,m,h);break;case "rotate":H=true;E=null;Ha="select";F=c.undoMgr.finishUndoableChange();F.isEmpty()||wa(F);Ea();M("changed",I)}m=ib("mouseUp",{event:z,mouse_x:m,mouse_y:h},true);$.each(m,function(W,ba){if(ba){H=ba.keep||H;E=ba.element;Ka=ba.started||Ka}});if(!H&&
+E!=null){B().releaseId(aa());E.parentNode.removeChild(E);E=null;for(m=z.target;m.parentNode.parentNode.tagName=="g";)m=m.parentNode;if((Ha!="path"||!drawn_path)&&m.parentNode.id!="selectorParentGroup"&&m.id!="svgcanvas"&&m.id!="svgroot"){c.setMode("select");rb([m],true)}}else if(E!=null){c.addedNew=true;z=0.2;var J;if(false.beginElement&&E.getAttribute("opacity")!=K.opacity){J=$(false).clone().attr({to:K.opacity,dur:z}).appendTo(E);try{J[0].beginElement()}catch(O){}}else z=0;setTimeout(function(){J&&
+J.remove();E.setAttribute("opacity",K.opacity);E.setAttribute("style","pointer-events:inherit");la(E);if(Ha==="path")La.toEditMode(E);else p.selectNew&&rb([E],true);wa(new Ia(E));M("changed",[E])},z*1E3)}Sa=null}}});$(a).bind("mousewheel DOMMouseScroll",function(z){if(z.shiftKey){z.preventDefault();mb=n.getScreenCTM().inverse();var F=N(z.pageX,z.pageY,mb);F={x:F.x,y:F.y,width:0,height:0};if(z.wheelDelta)if(z.wheelDelta>=120)F.factor=2;else{if(z.wheelDelta<=-120)F.factor=0.5}else if(z.detail)if(z.detail>
+0)F.factor=0.5;else if(z.detail<0)F.factor=2;F.factor&&M("zoomed",F)}})})();var Fb=function(e){$(e).click(function(k){k.preventDefault()})},bb=c.textActions=function(){function e(T){var fa=h.value==="";$(h).focus();if(!arguments.length)if(fa)T=0;else{if(h.selectionEnd!==h.selectionStart)return;T=h.selectionEnd}var ha;ha=E[T];fa||h.setSelectionRange(T,T);m=pa("text_cursor");if(!m){m=document.createElementNS(b,"line");ma(m,{id:"text_cursor",stroke:"#333","stroke-width":1});m=pa("selectorParentGroup").appendChild(m)}u||
+(u=setInterval(function(){var X=m.getAttribute("display")==="none";m.setAttribute("display",X?"inline":"none")},600));fa=G(ha.x,H.y);ha=G(ha.x,H.y+H.height);ma(m,{x1:fa.x,y1:fa.y,x2:ha.x,y2:ha.y,visibility:"visible",display:"inline"});o&&o.setAttribute("d","M 0 0")}function k(T,fa,ha){if(T===fa)e(fa);else{ha||h.setSelectionRange(T,fa);o=pa("text_selectblock");if(!o){o=document.createElementNS(b,"path");ma(o,{id:"text_selectblock",fill:"green",opacity:0.5,style:"pointer-events:none"});pa("selectorParentGroup").appendChild(o)}T=
+E[T];var X=E[fa];m.setAttribute("visibility","hidden");fa=G(T.x,H.y);ha=G(T.x+(X.x-T.x),H.y);var qa=G(T.x,H.y+H.height);T=G(T.x+(X.x-T.x),H.y+H.height);ma(o,{d:"M"+fa.x+","+fa.y+" L"+ha.x+","+ha.y+" "+T.x+","+T.y+" "+qa.x+","+qa.y+"z",display:"inline"})}}function l(T,fa){var ha=d.createSVGPoint();ha.x=T;ha.y=fa;if(E.length==1)return 0;ha=F.getCharNumAtPosition(ha);if(ha<0){ha=E.length-2;if(T<=E[0].x)ha=0}else if(ha>=E.length-2)ha=E.length-2;var X=E[ha];T>X.x+X.width/2&&ha++;return ha}function C(T,
+fa,ha){var X=h.selectionStart;T=l(T,fa);k(Math.min(X,T),Math.max(X,T),!ha)}function A(T,fa){var ha={x:T,y:fa};ha.x/=q;ha.y/=q;if(J){var X=N(ha.x,ha.y,J.inverse());ha.x=X.x;ha.y=X.y}return ha}function G(T,fa){var ha={x:T,y:fa};if(J){var X=N(ha.x,ha.y,J);ha.x=X.x;ha.y=X.y}ha.x*=q;ha.y*=q;return ha}function D(T){k(0,F.textContent.length);$(this).unbind(T)}function z(T){if(ba&&F){var fa=N(T.pageX,T.pageY,mb);fa=A(fa.x*q,fa.y*q);fa=l(fa.x,fa.y);var ha=F.textContent,X=ha.substr(0,fa).replace(/[a-z0-9]+$/i,
+"").length;ha=ha.substr(fa).match(/^[a-z0-9]+/i);k(X,(ha?ha[0].length:0)+fa);$(T.target).click(D);setTimeout(function(){$(T.target).unbind("click",D)},300)}}var F,h,m,o,u,E=[],H,J,O,W,ba;return{select:function(T,fa,ha){F=T;bb.toEditMode(fa,ha)},start:function(T){F=T;bb.toEditMode()},mouseDown:function(T,fa,ha,X){T=A(ha,X);h.focus();e(l(T.x,T.y));O=ha;W=X},mouseMove:function(T,fa){var ha=A(T,fa);C(ha.x,ha.y)},mouseUp:function(T,fa,ha){var X=A(fa,ha);C(X.x,X.y,true);T.target!==F&&fa<O+2&&fa>O-2&&ha<
+W+2&&ha>W-2&&bb.toSelectMode(true)},setCursor:e,toEditMode:function(T,fa){rb([F],false);ba=false;Ha="textedit";ra.requestSelector(F).showGrips(false);ra.requestSelector(F);bb.init();$(F).css("cursor","text");if(arguments.length){var ha=A(T,fa);e(l(ha.x,ha.y))}else e();setTimeout(function(){ba=true},300)},toSelectMode:function(T){Ha="select";clearInterval(u);u=null;o&&$(o).attr("display","none");m&&$(m).attr("visibility","hidden");$(F).css("cursor","move");if(T){xa();$(F).css("cursor","move");M("selected",
+[F]);qb([F],true)}F&&!F.textContent.length&&c.deleteSelectedElements();$(h).blur();F=false},setInputElem:function(T){h=T},clear:function(){Ha=="textedit"&&bb.toSelectMode()},init:function(){if(F){if(!F.parentNode){F=I[0];ra.requestSelector(F).showGrips(false)}var T=F.textContent.length,fa=F.getAttribute("transform");H=svgedit.utilities.getBBox(F);J=fa?ea(F):null;E=Array(T);h.focus();$(F).unbind("dblclick",z).dblclick(z);if(!T)var ha={x:H.x+H.width/2,width:0};for(fa=0;fa<T;fa++){var X=F.getStartPositionOfChar(fa);
+ha=F.getEndPositionOfChar(fa);if(!svgedit.browser.supportsGoodTextCharPos()){var qa=c.contentW*q;X.x-=qa;ha.x-=qa;X.x/=q;ha.x/=q}E[fa]={x:X.x,y:H.y,width:ha.x-X.x,height:H.height}}E.push({x:ha.x,width:0});k(h.selectionStart,h.selectionEnd,true)}}}}(),La=c.pathActions=function(){var e=false,k,l,C;svgedit.path.Path.prototype.endChanges=function(D){if(svgedit.browser.isWebkit()){var z=this.elem;z.setAttribute("d",La.convertPath(z))}D=new Ma(this.elem,{d:this.last_d},D);wa(D);M("changed",[this.elem])};
+svgedit.path.Path.prototype.addPtsToSelection=function(D){$.isArray(D)||(D=[D]);for(var z=0;z<D.length;z++){var F=D[z],h=this.segs[F];h.ptgrip&&this.selected_pts.indexOf(F)==-1&&F>=0&&this.selected_pts.push(F)}this.selected_pts.sort();z=this.selected_pts.length;for(D=Array(z);z--;){h=this.segs[this.selected_pts[z]];h.select(true);D[z]=h.ptgrip}La.canDeleteNodes=true;La.closed_subpath=this.subpathIsClosed(this.selected_pts[0]);M("selected",D)};var A=k=null,G=false;this.lastCtrlPoint=[0,0];return{mouseDown:function(D,
+z,F,h){if(Ha==="path"){mouse_x=F;mouse_y=h;F=mouse_x/q;z=mouse_y/q;h=pa("path_stretch_line");l=[F,z];if(p.gridSnapping){F=va(F);z=va(z);mouse_x=va(mouse_x);mouse_y=va(mouse_y)}if(!h){h=document.createElementNS(b,"path");ma(h,{id:"path_stretch_line",stroke:"#22C","stroke-width":"0.5",fill:"none"});h=pa("selectorParentGroup").appendChild(h)}h.setAttribute("display","inline");this.stretchy=h;var m=null;if(A){m=A.pathSegList;for(var o=m.numberOfItems,u=6/q,E=false;o;){o--;var H=m.getItem(o),J=H.x;H=H.y;
+if(F>=J-u&&F<=J+u&&z>=H-u&&z<=H+u){E=true;break}}u=aa();svgedit.path.removePath_(u);u=pa(u);J=m.numberOfItems;if(E){if(o<=1&&J>=2){F=m.getItem(0).x;z=m.getItem(0).y;o=svgedit.path.first_grip?svgedit.path.first_grip[0]/q:m.getItem(0).x;E=svgedit.path.first_grip?svgedit.path.first_grip[1]/q:m.getItem(0).y;D=h.pathSegList.getItem(1);D=D.pathSegType===4?A.createSVGPathSegLinetoAbs(F,z):A.createSVGPathSegCurvetoCubicAbs(F,z,D.x1/q,D.y1/q,o,E);F=A.createSVGPathSegClosePath();m.appendItem(D);m.appendItem(F)}else if(J<
+3)return m=false;$(h).remove();element=u;A=null;Ka=false;if(e){svgedit.path.path.matrix&&Za(u,{},svgedit.path.path.matrix.inverse());F=u.getAttribute("d");h=$(svgedit.path.path.elem).attr("d");$(svgedit.path.path.elem).attr("d",h+F);$(u).remove();svgedit.path.path.matrix&&svgedit.path.recalcRotatedPath();svgedit.path.path.init();La.toEditMode(svgedit.path.path.elem);svgedit.path.path.selectPt();return false}}else{if(!$.contains(a,Bb(D))){console.log("Clicked outside canvas");return false}m=A.pathSegList.numberOfItems;
+o=A.pathSegList.getItem(m-1);u=o.x;o=o.y;if(D.shiftKey){z=V(u,o,F,z);F=z.x;z=z.y}D=h.pathSegList.getItem(1);D=D.pathSegType===4?A.createSVGPathSegLinetoAbs(ab(F),ab(z)):A.createSVGPathSegCurvetoCubicAbs(ab(F),ab(z),D.x1/q,D.y1/q,D.x2/q,D.y2/q);A.pathSegList.appendItem(D);F*=q;z*=q;h.setAttribute("d",["M",F,z,F,z].join(" "));h=svgedit.path.addCtrlGrip("1c1");D=svgedit.path.addCtrlGrip("0c2");u=svgedit.path.getCtrlLine(1);o=svgedit.path.getCtrlLine(2);h.setAttribute("cx",F);h.setAttribute("cy",z);D.setAttribute("cx",
+F);D.setAttribute("cy",z);u.setAttribute("x1",F);u.setAttribute("x2",F);u.setAttribute("y1",z);u.setAttribute("y2",z);o.setAttribute("x1",F);o.setAttribute("x2",F);o.setAttribute("y1",z);o.setAttribute("y2",z);h=m;if(e)h+=svgedit.path.path.segs.length;svgedit.path.addPointGrip(h,F,z)}m=true}else{d_attr="M"+F+","+z+" ";A=S({element:"path",curStyles:true,attr:{d:d_attr,id:ka(),opacity:K.opacity/2}});h.setAttribute("d",["M",mouse_x,mouse_y,mouse_x,mouse_y].join(" "));h=e?svgedit.path.path.segs.length:
+0;svgedit.path.addPointGrip(h,mouse_x,mouse_y);svgedit.path.first_grip=null}}else if(svgedit.path.path){svgedit.path.path.storeD();u=D.target.id;if(u.substr(0,14)=="pathpointgrip_"){z=svgedit.path.path.cur_pt=parseInt(u.substr(14));svgedit.path.path.dragging=[F,h];u=svgedit.path.path.segs[z];if(D.shiftKey)u.selected?svgedit.path.path.removePtFromSelection(z):svgedit.path.path.addPtsToSelection(z);else{if(svgedit.path.path.selected_pts.length<=1||!u.selected)svgedit.path.path.clearSelection();svgedit.path.path.addPtsToSelection(z)}}else if(u.indexOf("ctrlpointgrip_")==
+0){svgedit.path.path.dragging=[F,h];D=u.split("_")[1].split("c");z=D[0]-0;m=D=D[1]-0;o=svgedit.path.path.segs[z];svgedit.path.path.selectPt(z,D);if(m==2){E=1;u=o.next}else{E=2;u=o.prev}if(!u)return;D=function(O,W){return Math.sqrt(Math.pow(O.x-W.x,2)+Math.pow(O.y-W.y,2))};z={x:o.item["x"+m],y:o.item["y"+m]};m=m==2?{x:o.item.x,y:o.item.y}:{x:u.item.x,y:u.item.y};o={x:u.item["x"+E],y:u.item["y"+E]};u=D(z,m);D=D(o,m);z=Math.abs(Math.round(Math.atan2(z.y-m.y,z.x-m.x)*(180/Math.PI),0)-Math.round(Math.atan2(o.y-
+m.y,o.x-m.x)*(180/Math.PI),0))==180;if(Math.abs(u-D)<5&&z){svgedit.path.setLinkControlPoints(true);svgedit.path.is_linked=true}else{svgedit.path.setLinkControlPoints(false);svgedit.path.is_linked=false}}if(!svgedit.path.path.dragging){if(sa==null)sa=ra.getRubberBandBox();ma(sa,{x:F*q,y:h*q,width:0,height:0,display:"inline"},100)}}},mouseMove:function(D,z,F){G=true;var h=!D.altKey;if(Ha==="path"){if(A){var m=A.pathSegList,o=m.numberOfItems-1,u=svgedit.path.addCtrlGrip("1c1"),E=svgedit.path.addCtrlGrip("0c2");
+if(l){var H=E.getAttribute("cx")/q||0,J=E.getAttribute("cy")/q||0;u.setAttribute("cx",z);u.setAttribute("cy",F);u.setAttribute("display","inline");D=l[0];u=l[1];m.getItem(o);var O=z/q,W=F/q;H=h?D+(D-O):H;h=h?u+(u-W):J;E.setAttribute("cx",H*q);E.setAttribute("cy",h*q);E.setAttribute("display","inline");E=svgedit.path.getCtrlLine(1);J=svgedit.path.getCtrlLine(2);ma(E,{x1:z,y1:F,x2:D*q,y2:u*q,display:"inline"});ma(J,{x1:H*q,y1:h*q,x2:D*q,y2:u*q,display:"inline"});if(o===0)C=[z,F];else{m=m.getItem(o-
+1);z=m.x;F=m.y;if(m.pathSegType===6){z+=z-m.x2;F+=F-m.y2}else if(C){z=C[0]/q;F=C[1]/q}svgedit.path.replacePathSeg(6,o,[D,u,this.lastCtrlPoint[0]/q,this.lastCtrlPoint[1]/q,H,h],A)}}else if(h=this.stretchy){o=m.getItem(o);m=z;u=F;if(D.target.id==="pathpointgrip_0"&&svgedit.path.first_grip){m=svgedit.path.first_grip[0];u=svgedit.path.first_grip[1]}if(o.pathSegType===6)svgedit.path.replacePathSeg(6,1,[z,F,(this.lastCtrlPoint[0]/q||o.x+(o.x-o.x2))*q,(this.lastCtrlPoint[1]/q||o.y+(o.y-o.y2))*q,m,u],h);
+else C?svgedit.path.replacePathSeg(6,1,[z,F,C[0],C[1],z,F],h):svgedit.path.replacePathSeg(4,1,[z,F],h)}}}else if(svgedit.path.path.dragging){m=svgedit.path.getPointFromGrip({x:svgedit.path.path.dragging[0],y:svgedit.path.path.dragging[1]},svgedit.path.path);D=svgedit.path.getPointFromGrip({x:z,y:F},svgedit.path.path);o=D.x-m.x;m=D.y-m.y;svgedit.path.path.dragging=[z,F];!h||!svgedit.path.is_linked?svgedit.path.setLinkControlPoints(false):svgedit.path.setLinkControlPoints(true);svgedit.path.path.dragctrl?
+svgedit.path.path.moveCtrl(o,m):svgedit.path.path.movePts(o,m)}else{svgedit.path.path.selected_pts=[];svgedit.path.path.eachSeg(function(){if(this.next||this.prev){var ba=sa.getBBox(),T=svgedit.path.getGripPt(this);ba=svgedit.math.rectsIntersect(ba,{x:T.x,y:T.y,width:0,height:0});this.select(ba);ba&&svgedit.path.path.selected_pts.push(this.index)}})}},mouseUp:function(D,z,F,h){var m=pa("ctrlpointgrip_1c1"),o=pa("ctrlpointgrip_0c2");this.lastCtrlPoint=m?[m.getAttribute("cx"),m.getAttribute("cy")]:
+[F,h];if(!svgedit.path.first_grip&&o)svgedit.path.first_grip=[o.getAttribute("cx"),o.getAttribute("cy")];if(Ha==="path"){l=null;if(!A){z=pa(aa());Ka=false;C=null}return{keep:true,element:z}}if(svgedit.path.path.dragging){z=svgedit.path.path.cur_pt;svgedit.path.path.dragging=false;svgedit.path.path.dragctrl=false;svgedit.path.path.update();G&&svgedit.path.path.endChanges("Move path point(s)");!D.shiftKey&&!G&&svgedit.path.path.selectPt(z)}else if(sa&&sa.getAttribute("display")!="none"){sa.setAttribute("display",
+"none");sa.getAttribute("width")<=2&&sa.getAttribute("height")<=2&&La.toSelectMode(D.target)}else La.toSelectMode(D.target);G=false},toEditMode:function(D){svgedit.path.path=svgedit.path.getPath_(D);Ha="pathedit";xa();svgedit.path.path.show(true).update();svgedit.path.path.oldbbox=svgedit.utilities.getBBox(svgedit.path.path.elem);e=false},toSelectMode:function(D){var z=D==svgedit.path.path.elem;Ha="select";svgedit.path.path.show(false);k=false;xa();svgedit.path.path.matrix&&svgedit.path.recalcRotatedPath();
+if(z){M("selected",[D]);qb([D],true)}},addSubPath:function(D){if(D){Ha="path";e=true}else{La.clear(true);La.toEditMode(svgedit.path.path.elem)}},select:function(D){if(k===D){La.toEditMode(D);Ha="pathedit"}else k=D},reorient:function(){var D=I[0];if(D)if(na(D)!=0){var z=new Da("Reorient path"),F={d:D.getAttribute("d"),transform:D.getAttribute("transform")};z.addSubCommand(new Ma(D,F));xa();this.resetOrientation(D);wa(z);svgedit.path.getPath_(D).show(false).matrix=null;this.clear();qb([D],true);M("changed",
+I)}},clear:function(D){k=null;if(A){var z=pa(aa());$(pa("path_stretch_line")).remove();D&&$(z).remove();$(pa("pathpointgrip_container")).find("*").attr("display","none");A=C=null;Ka=false}else Ha=="pathedit"&&this.toSelectMode();svgedit.path.path&&svgedit.path.path.init().show(false)},resetOrientation:function(D){if(D==null||D.nodeName!="path")return false;var z=R(D),F=Y(z).matrix;z.clear();D.removeAttribute("transform");z=D.pathSegList;for(var h=z.numberOfItems,m=0;m<h;++m){var o=z.getItem(m),u=
+o.pathSegType;if(u!=1){var E=[];$.each(["",1,2],function(H,J){var O=o["x"+J],W=o["y"+J];if(O!==undefined&&W!==undefined){O=N(O,W,F);E.splice(E.length,0,O.x,O.y)}});svgedit.path.replacePathSeg(u,m,E,D)}}g(D,F)},zoomChange:function(){Ha=="pathedit"&&svgedit.path.path.update()},getNodePoint:function(){if(svgedit.path.path){var D=svgedit.path.path.segs[svgedit.path.path.selected_pts.length?svgedit.path.path.selected_pts[0]:1];return{x:D.item.x,y:D.item.y,type:D.type}}},linkControlPoints:function(D){svgedit.path.setLinkControlPoints(D)},
+clonePathNode:function(){svgedit.path.path.storeD();for(var D=svgedit.path.path.selected_pts,z=D.length,F=[];z--;){var h=D[z];svgedit.path.path.addSeg(h);F.push(h+z);F.push(h+z+1)}svgedit.path.path.init().addPtsToSelection(F);svgedit.path.path.endChanges("Clone path node(s)")},opencloseSubPath:function(){var D=svgedit.path.path.selected_pts;if(D.length===1){var z=svgedit.path.path.elem,F=z.pathSegList,h=D[0],m=null,o=null;svgedit.path.path.eachSeg(function(J){if(this.type===2&&J<=h)o=this.item;if(J<=
+h)return true;if(this.type===2){m=J;return false}else if(this.type===1)return m=false});if(m==null)m=svgedit.path.path.segs.length-1;if(m!==false){var u=z.createSVGPathSegLinetoAbs(o.x,o.y),E=z.createSVGPathSegClosePath();if(m==svgedit.path.path.segs.length){F.appendItem(u);F.appendItem(E)}else{svgedit.path.insertItemBefore(z,E,m);svgedit.path.insertItemBefore(z,u,m)}svgedit.path.path.init().selectPt(m+1)}else if(svgedit.path.path.segs[h].mate){F.removeItem(h);F.removeItem(h);svgedit.path.path.init().selectPt(h-
+1)}else{for(D=0;D<F.numberOfItems;D++){var H=F.getItem(D);if(H.pathSegType===2)u=D;else if(D===h)F.removeItem(u);else if(H.pathSegType===1&&h<D){E=D-1;F.removeItem(D);break}}for(D=h-u-1;D--;)svgedit.path.insertItemBefore(z,F.getItem(u),E);z=F.getItem(u);svgedit.path.replacePathSeg(2,u,[z.x,z.y]);D=h;svgedit.path.path.init().selectPt(0)}}},deletePathNode:function(){if(La.canDeleteNodes){svgedit.path.path.storeD();for(var D=svgedit.path.path.selected_pts,z=D.length;z--;)svgedit.path.path.deleteSeg(D[z]);
+var F=function(){var h=svgedit.path.path.elem.pathSegList,m=h.numberOfItems,o=function(H,J){for(;J--;)h.removeItem(H)};if(m<=1)return true;for(;m--;){var u=h.getItem(m);if(u.pathSegType===1){u=h.getItem(m-1);var E=h.getItem(m-2);if(u.pathSegType===2){o(m-1,2);F();break}else if(E.pathSegType===2){o(m-2,3);F();break}}else if(u.pathSegType===2)if(m>0){u=h.getItem(m-1).pathSegType;if(u===2){o(m-1,1);F();break}else if(u===1&&h.numberOfItems-1===m){o(m,1);F();break}}}return false};F();if(svgedit.path.path.elem.pathSegList.numberOfItems<=
+1){c.setMode("select");c.deleteSelectedElements()}else{svgedit.path.path.init();svgedit.path.path.clearSelection();if(window.opera){D=$(svgedit.path.path.elem);D.attr("d",D.attr("d"))}svgedit.path.path.endChanges("Delete path node(s)")}}},smoothPolylineIntoPath:function(D){var z=D.points,F=z.numberOfItems;if(F>=4){var h=z.getItem(0),m=null;D=[];D.push(["M",h.x,",",h.y," C"].join(""));for(var o=1;o<=F-4;o+=3){var u=z.getItem(o),E=z.getItem(o+1),H=z.getItem(o+2);if(m)if((h=svgedit.path.smoothControlPoints(m,
+u,h))&&h.length==2){u=D[D.length-1].split(",");u[2]=h[0].x;u[3]=h[0].y;D[D.length-1]=u.join(",");u=h[1]}D.push([u.x,u.y,E.x,E.y,H.x,H.y].join(","));h=H;m=E}for(D.push("L");o<F;++o){E=z.getItem(o);D.push([E.x,E.y].join(","))}D=D.join(" ");D=S({element:"path",curStyles:true,attr:{id:aa(),d:D,fill:"none"}})}return D},setSegType:function(D){svgedit.path.path.setSegType(D)},moveNode:function(D,z){var F=svgedit.path.path.selected_pts;if(F.length){svgedit.path.path.storeD();F=svgedit.path.path.segs[F[0]];
+var h={x:0,y:0};h[D]=z-F.item[D];F.move(h.x,h.y);svgedit.path.path.endChanges("Move path point")}},fixEnd:function(D){for(var z=D.pathSegList,F=z.numberOfItems,h,m=0;m<F;++m){var o=z.getItem(m);if(o.pathSegType===2)h=o;if(o.pathSegType===1){o=z.getItem(m-1);if(o.x!=h.x||o.y!=h.y){z=D.createSVGPathSegLinetoAbs(h.x,h.y);svgedit.path.insertItemBefore(D,z,m);La.fixEnd(D);break}}}svgedit.browser.isWebkit()&&D.setAttribute("d",La.convertPath(D))},convertPath:function(D,z){for(var F=D.pathSegList,h=F.numberOfItems,
+m=0,o=0,u="",E=null,H=0;H<h;++H){var J=F.getItem(H),O=J.x||0,W=J.y||0,ba=J.x1||0,T=J.y1||0,fa=J.x2||0,ha=J.y2||0,X=J.pathSegType,qa=Oa[X]["to"+(z?"Lower":"Upper")+"Case"](),ua=function(Aa,Ca,Pa){Ca=Ca?" "+Ca.join(" "):"";Pa=Pa?" "+svgedit.units.shortFloat(Pa):"";$.each(Aa,function(Qa,Na){Aa[Qa]=svgedit.units.shortFloat(Na)});u+=qa+Aa.join(" ")+Ca+Pa};switch(X){case 1:u+="z";break;case 12:O-=m;case 13:if(z){m+=O;qa="l"}else{O+=m;m=O;qa="L"}ua([[O,o]]);break;case 14:W-=o;case 15:if(z){o+=W;qa="l"}else{W+=
+o;o=W;qa="L"}ua([[m,W]]);break;case 2:case 4:case 18:O-=m;W-=o;case 5:case 3:if(E&&F.getItem(H-1).pathSegType===1&&!z){m=E[0];o=E[1]}case 19:if(z){m+=O;o+=W}else{O+=m;W+=o;m=O;o=W}if(X===3)E=[m,o];ua([[O,W]]);break;case 6:O-=m;ba-=m;fa-=m;W-=o;T-=o;ha-=o;case 7:if(z){m+=O;o+=W}else{O+=m;ba+=m;fa+=m;W+=o;T+=o;ha+=o;m=O;o=W}ua([[ba,T],[fa,ha],[O,W]]);break;case 8:O-=m;ba-=m;W-=o;T-=o;case 9:if(z){m+=O;o+=W}else{O+=m;ba+=m;W+=o;T+=o;m=O;o=W}ua([[ba,T],[O,W]]);break;case 10:O-=m;W-=o;case 11:if(z){m+=
+O;o+=W}else{O+=m;W+=o;m=O;o=W}ua([[J.r1,J.r2]],[J.angle,J.largeArcFlag?1:0,J.sweepFlag?1:0],[O,W]);break;case 16:O-=m;fa-=m;W-=o;ha-=o;case 17:if(z){m+=O;o+=W}else{O+=m;fa+=m;W+=o;ha+=o;m=O;o=W}ua([[fa,ha],[O,W]])}}return u}}}(),yb=this.removeUnusedDefElems=function(){var e=n.getElementsByTagNameNS(b,"defs");if(!e||!e.length)return 0;for(var k=[],l=0,C=["fill","stroke","filter","marker-start","marker-mid","marker-end"],A=C.length,G=n.getElementsByTagNameNS(b,"*"),D=G.length,z=0;z<D;z++){for(var F=
+G[z],h=0;h<A;h++)if(F){var m=ja(F.getAttribute(C[h]));m&&k.push(m.substr(1))}(F=ca(F))&&F.indexOf("#")===0&&k.push(F.substr(1))}e=$(e).find("linearGradient, radialGradient, filter, marker, svg, symbol");defelem_ids=[];for(z=e.length;z--;){C=e[z];A=C.id;if(k.indexOf(A)<0){sb[A]=C;C.parentNode.removeChild(C);l++}}return l};this.svgCanvasToString=function(){for(;yb()>0;);La.clear(true);$.each(n.childNodes,function(l,C){l&&C.nodeType===8&&C.data.indexOf("Created with")>=0&&n.insertBefore(C,n.firstChild)});
+if(L){Eb();rb([L])}$("#canvasGrid").attr("display","none");var e=[];$(n).find("g:data(gsvg)").each(function(){for(var l=this.attributes,C=l.length,A=0;A<C;A++)if(l[A].nodeName=="id"||l[A].nodeName=="style")C--;if(C<=0){l=this.firstChild;e.push(l);$(this).replaceWith(l)}});var k=this.svgToString(n,0);e.length&&$(e).each(function(){tb(this)});return k};this.svgToString=function(e,k){var l=[],C=svgedit.utilities.toXml,A=p.baseUnit,G=RegExp("^-?[\\d\\.]+"+A+"$");if(e){la(e);var D=e.attributes,z,F,h=e.childNodes;
+for(F=0;F<k;F++)l.push(" ");l.push("<");l.push(e.nodeName);if(e.id==="svgcontent"){F=zb();if(A!=="px"){F.w=svgedit.units.convertUnit(F.w,A)+A;F.h=svgedit.units.convertUnit(F.h,A)+A}l.push(' width="'+F.w+'" height="'+F.h+'" xmlns="'+b+'"');var m={};$(e).find("*").andSelf().each(function(){$.each(this.attributes,function(H,J){var O=J.namespaceURI;if(O&&!m[O]&&ya[O]!=="xmlns"&&ya[O]!=="xml"){m[O]=true;l.push(" xmlns:"+ya[O]+'="'+O+'"')}})});F=D.length;for(A=["width","height","xmlns","x","y","viewBox",
+"id","overflow"];F--;){z=D.item(F);var o=C(z.nodeValue);if(z.nodeName.indexOf("xmlns:")!==0)if(o!=""&&A.indexOf(z.localName)==-1)if(!z.namespaceURI||ya[z.namespaceURI]){l.push(" ");l.push(z.nodeName);l.push('="');l.push(o);l.push('"')}}}else{if(e.nodeName==="defs"&&!e.firstChild)return;var u=["-moz-math-font-style","_moz-math-font-style"];for(F=D.length-1;F>=0;F--){z=D.item(F);o=C(z.nodeValue);if(!(u.indexOf(z.localName)>=0))if(o!="")if(o.indexOf("pointer-events")!==0)if(!(z.localName==="class"&&
+o.indexOf("se_")===0)){l.push(" ");if(z.localName==="d")o=La.convertPath(e,true);if(isNaN(o)){if(G.test(o))o=svgedit.units.shortFloat(o)+A}else o=svgedit.units.shortFloat(o);if($a.apply&&e.nodeName==="image"&&z.localName==="href"&&$a.images&&$a.images==="embed"){var E=Va[o];if(E)o=E}if(!z.namespaceURI||z.namespaceURI==b||ya[z.namespaceURI]){l.push(z.nodeName);l.push('="');l.push(o);l.push('"')}}}}if(e.hasChildNodes()){l.push(">");k++;D=false;for(F=0;F<h.length;F++){A=h.item(F);switch(A.nodeType){case 1:l.push("\n");
+l.push(this.svgToString(h.item(F),k));break;case 3:A=A.nodeValue.replace(/^\s+|\s+$/g,"");if(A!=""){D=true;l.push(C(A)+"")}break;case 4:l.push("\n");l.push(Array(k+1).join(" "));l.push("<![CDATA[");l.push(A.nodeValue);l.push("]]\>");break;case 8:l.push("\n");l.push(Array(k+1).join(" "));l.push("<!--");l.push(A.data);l.push("--\>")}}k--;if(!D){l.push("\n");for(F=0;F<k;F++)l.push(" ")}l.push("</");l.push(e.nodeName);l.push(">")}else l.push("/>")}return l.join("")};this.embedImage=function(e,k){$(new Image).load(function(){var l=
+document.createElement("canvas");l.width=this.width;l.height=this.height;l.getContext("2d").drawImage(this,0,0);try{var C=";svgedit_url="+encodeURIComponent(e);C=l.toDataURL().replace(";base64",C+";base64");Va[e]=C}catch(A){Va[e]=false}Ga=e;k&&k(Va[e])}).attr("src",e)};this.setGoodImage=function(e){Ga=e};this.open=function(){};this.save=function(e){xa();e&&$.extend($a,e);$a.apply=true;e=this.svgCanvasToString();M("saved",e)};this.rasterExport=function(){xa();var e=[],k={feGaussianBlur:kb.exportNoBlur,
+foreignObject:kb.exportNoforeignObject,"[stroke-dasharray]":kb.exportNoDashArray},l=$(n);if(!("font"in $("<canvas>")[0].getContext("2d")))k.text=kb.exportNoText;$.each(k,function(C,A){l.find(C).length&&e.push(A)});k=this.svgCanvasToString();M("exported",{svg:k,issues:e})};this.getSvgString=function(){$a.apply=false;return this.svgCanvasToString()};this.randomizeIds=function(){arguments.length>0&&arguments[0]==false?svgedit.draw.randomizeIds(false,B()):svgedit.draw.randomizeIds(true,B())};var Hb=this.uniquifyElems=
+function(e){var k={},l=["filter","linearGradient","pattern","radialGradient","symbol","textPath","use"];svgedit.utilities.walkTree(e,function(z){if(z.nodeType==1){if(z.id){z.id in k||(k[z.id]={elem:null,attrs:[],hrefs:[]});k[z.id].elem=z}$.each(vb,function(h,m){var o=z.getAttributeNode(m);if(o){var u=svgedit.utilities.getUrlFromAttr(o.value);if(u=u?u.substr(1):null){u in k||(k[u]={elem:null,attrs:[],hrefs:[]});k[u].attrs.push(o)}}});var F=svgedit.utilities.getHref(z);if(F&&l.indexOf(z.nodeName)>=
+0)if(F=F.substr(1)){F in k||(k[F]={elem:null,attrs:[],hrefs:[]});k[F].hrefs.push(z)}}});for(var C in k)if(C){var A=k[C].elem;if(A){e=ka();A.id=e;A=k[C].attrs;for(var G=A.length;G--;){var D=A[G];D.ownerElement.setAttribute(D.name,"url(#"+e+")")}A=k[C].hrefs;for(G=A.length;G--;)svgedit.utilities.setHref(A[G],"#"+e)}}},Gb=this.setUseData=function(e){var k=$(e);if(e.tagName!=="use")k=k.find("use");k.each(function(){var l=ca(this).substr(1);if(l=pa(l)){$(this).data("ref",l);if(l.tagName=="symbol"||l.tagName==
+"svg")$(this).data("symbol",l).data("ref",l)}})},Ib=this.convertGradients=function(e){var k=$(e).find("linearGradient, radialGradient");if(!k.length&&svgedit.browser.isWebkit())k=$(e).find("*").filter(function(){return this.tagName.indexOf("Gradient")>=0});k.each(function(){if($(this).attr("gradientUnits")==="userSpaceOnUse"){var l=$(n).find('[fill="url(#'+this.id+')"],[stroke="url(#'+this.id+')"]');if(l.length)if(l=svgedit.utilities.getBBox(l[0]))if(this.tagName==="linearGradient"){var C=$(this).attr(["x1",
+"y1","x2","y2"]),A=this.gradientTransform.baseVal;if(A&&A.numberOfItems>0){var G=Y(A).matrix;A=N(C.x1,C.y1,G);G=N(C.x2,C.y2,G);C.x1=A.x;C.y1=A.y;C.x2=G.x;C.y2=G.y;this.removeAttribute("gradientTransform")}$(this).attr({x1:(C.x1-l.x)/l.width,y1:(C.y1-l.y)/l.height,x2:(C.x2-l.x)/l.width,y2:(C.y2-l.y)/l.height});this.removeAttribute("gradientUnits")}}})},Lb=this.convertToGroup=function(e){e||(e=I[0]);var k=$(e),l=new Da,C;if(k.data("gsvg")){l=$(e.firstChild).attr(["x","y"]);$(e.firstChild.firstChild).unwrap();
+$(e).removeData("gsvg");C=R(e);var A=d.createSVGTransform();A.setTranslate(l.x,l.y);C.appendItem(A);Ra(e);M("selected",[e])}else if(k.data("symbol")){e=k.data("symbol");C=k.attr("transform");A=k.attr(["x","y"]);var G=e.getAttribute("viewBox");if(G){G=G.split(" ");A.x-=+G[0];A.y-=+G[1]}C+=" translate("+(A.x||0)+","+(A.y||0)+")";A=k.prev();l.addSubCommand(new Fa(k[0],k[0].nextSibling,k[0].parentNode));k.remove();G=$(n).find("use:data(symbol)").length;k=f.createElementNS(b,"g");for(var D=e.childNodes,
+z=0;z<D.length;z++)k.appendChild(D[z].cloneNode(true));if(svgedit.browser.isGecko()){D=$(gb()).children("linearGradient,radialGradient,pattern").clone();$(k).append(D)}C&&k.setAttribute("transform",C);C=e.parentNode;Hb(k);svgedit.browser.isGecko()&&$(gb()).append($(k).find("linearGradient,radialGradient,pattern"));k.id=ka();A.after(k);if(C){if(!G){A=e.nextSibling;C.removeChild(e);l.addSubCommand(new Fa(e,A,C))}l.addSubCommand(new Ia(k))}Gb(k);svgedit.browser.isGecko()?Ib(gb()):Ib(k);svgedit.utilities.walkTreePost(k,
+function(F){try{Ra(F)}catch(h){console.log(h)}});$(k).find("a,circle,ellipse,foreignObject,g,image,line,path,polygon,polyline,rect,svg,text,tspan,use").each(function(){if(!this.id)this.id=ka()});rb([k]);(e=Db(k,true))&&l.addSubCommand(e);wa(l)}else console.log("Unexpected element to ungroup:",e)};this.setSvgString=function(e){try{var k=svgedit.utilities.text2xml(e);this.prepareSvg(k);var l=new Da("Change Source"),C=n.nextSibling,A=d.removeChild(n);l.addSubCommand(new Fa(A,C,d));n=f.adoptNode?f.adoptNode(k.documentElement):
+f.importNode(k.documentElement,true);d.appendChild(n);var G=$(n);c.current_drawing_=new svgedit.draw.Drawing(n,v);var D=B().getNonce();D?M("setnonce",D):M("unsetnonce");G.find("image").each(function(){var J=this;Fb(J);var O=ca(this);if(O.indexOf("data:")===0){var W=O.match(/svgedit_url=(.*?);/);if(W){var ba=decodeURIComponent(W[1]);$(new Image).load(function(){J.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",ba)}).attr("src",ba)}}c.embedImage(O)});G.find("svg").each(function(){if(!$(this).closest("defs").length){Hb(this);
+var J=this.parentNode;if(J.childNodes.length===1&&J.nodeName==="g"){$(J).data("gsvg",this);J.id=J.id||ka()}else tb(this)}});G.find("linearGradient, radialGradient, pattern").appendTo(gb());Gb(G);Ib(G[0]);svgedit.utilities.walkTreePost(n,function(J){try{Ra(J)}catch(O){console.log(O)}});var z={id:"svgcontent",overflow:p.show_outside_canvas?"visible":"hidden"},F=false;if(G.attr("viewBox")){var h=G.attr("viewBox").split(" ");z.width=h[2];z.height=h[3]}else $.each(["width","height"],function(J,O){var W=
+G.attr(O);W||(W="100%");if((W+"").substr(-1)==="%")F=true;else z[O]=Ba(O,W)});xb();G.children().find("a,circle,ellipse,foreignObject,g,image,line,path,polygon,polyline,rect,svg,text,tspan,use").each(function(){if(!this.id)this.id=ka()});if(F){var m=getStrokedBBox();z.width=m.width+m.x;z.height=m.height+m.y}if(z.width<=0)z.width=200;if(z.height<=0)z.height=200;G.attr(z);this.contentW=z.width;this.contentH=z.height;$("#canvas_width").val(this.contentW);$("#canvas_height").val(this.contentH);var o=$("#canvas_background");
+if(o.length){var u=o.attr("fill-opacity");u=u?parseInt(u)*100:100;fill=this.getPaint(o.attr("fill"),u,"canvas")}else fill=this.getPaint("none",100,"canvas");methodDraw.paintBox.canvas.setPaint(fill);l.addSubCommand(new Ia(n));var E=G.attr(["width","height"]);l.addSubCommand(new Ma(d,E));q=1;svgedit.transformlist.resetListMap();xa();svgedit.path.clearData();d.appendChild(ra.selectorParentGroup);wa(l);M("changed",[n])}catch(H){console.log(H);return false}return true};this.getPaint=function(e,k,l){var C=
+null;if(e.indexOf("url(#")===0){e=(e=svgCanvas.getRefElem(e))?e.cloneNode(true):$("#"+l+"_color defs *")[0];C={alpha:k};C[e.tagName]=e}else C=e.indexOf("#")===0?{alpha:k,solidColor:e.substr(1)}:{alpha:k,solidColor:"none"};return new $.jGraduate.Paint(C)};this.importSvgString=function(e){try{var k=svgedit.utilities.encode64(e.length+e).substr(0,32),l=false;if(lb[k])if($(lb[k].symbol).parents("#svgroot").length)l=true;var C=new Da("Import SVG");if(l)var A=lb[k].symbol,G=lb[k].xform;else{var D=svgedit.utilities.text2xml(e);
+this.prepareSvg(D);var z;z=f.adoptNode?f.adoptNode(D.documentElement):f.importNode(D.documentElement,true);Hb(z);var F=Ba("width",z.getAttribute("width")),h=Ba("height",z.getAttribute("height")),m=z.getAttribute("viewBox"),o=m?m.split(" "):[0,0,F,h];for(e=0;e<4;++e)o[e]=+o[e];n.getAttribute("width");var u=+n.getAttribute("height");G=h>F?"scale("+u/3/o[3]+")":"scale("+u/3/o[2]+")";G="translate(0) "+G+" translate(0)";A=f.createElementNS(b,"symbol");var E=gb();for(svgedit.browser.isGecko()&&$(z).find("linearGradient, radialGradient, pattern").appendTo(E);z.firstChild;)A.appendChild(z.firstChild);
+var H=z.attributes;for(z=0;z<H.length;z++){var J=H[z];A.setAttribute(J.nodeName,J.nodeValue)}A.id=ka();lb[k]={symbol:A,xform:G};gb().appendChild(A);C.addSubCommand(new Ia(A))}var O=f.createElementNS(b,"use");O.id=ka();U(O,"#"+A.id);(L||B().getCurrentLayer()).appendChild(O);C.addSubCommand(new Ia(O));xa();O.setAttribute("transform",G);Ra(O);$(O).data("symbol",A).data("ref",A);qb([O]);wa(C);M("changed",[n])}catch(W){console.log(W);return false}return true};var xb=c.identifyLayers=function(){Eb();B().identifyLayers()};
+this.createLayer=function(e){var k=new Da("Create Layer");e=B().createLayer(e);k.addSubCommand(new Ia(e));wa(k);xa();M("changed",[e])};this.cloneLayer=function(e){var k=new Da("Duplicate Layer"),l=f.createElementNS(b,"g"),C=f.createElementNS(b,"title");C.textContent=e;l.appendChild(C);C=B().getCurrentLayer();$(C).after(l);C=C.childNodes;for(var A=0;A<C.length;A++){var G=C[A];G.localName!="title"&&l.appendChild(ia(G))}xa();xb();k.addSubCommand(new Ia(l));wa(k);c.setCurrentLayer(e);M("changed",[l])};
+this.deleteCurrentLayer=function(){var e=B().getCurrentLayer(),k=e.nextSibling,l=e.parentNode;if(e=B().deleteCurrentLayer()){var C=new Da("Delete Layer");C.addSubCommand(new Fa(e,k,l));wa(C);xa();M("changed",[l]);return true}return false};this.setCurrentLayer=function(e){(e=B().setCurrentLayer(svgedit.utilities.toXml(e)))&&xa();return e};this.renameCurrentLayer=function(e){var k=B();if(k.current_layer){var l=k.current_layer;if(!c.setCurrentLayer(e)){for(var C=new Da("Rename Layer"),A=0;A<k.getNumLayers();++A)if(k.all_layers[A][1]==
+l)break;var G=k.getLayerName(A);k.all_layers[A][0]=svgedit.utilities.toXml(e);var D=l.childNodes.length;for(A=0;A<D;++A){var z=l.childNodes.item(A);if(z&&z.tagName=="title"){for(;z.firstChild;)z.removeChild(z.firstChild);z.textContent=e;C.addSubCommand(new Ma(z,{"#text":G}));wa(C);M("changed",[l]);return true}}}k.current_layer=l}return false};this.setCurrentLayerPosition=function(e){var k=B();if(k.current_layer&&e>=0&&e<k.getNumLayers()){for(var l=0;l<k.getNumLayers();++l)if(k.all_layers[l][1]==k.current_layer)break;
+if(l==k.getNumLayers())return false;if(l!=e){var C=null,A=k.current_layer.nextSibling;if(e>l){if(e<k.getNumLayers()-1)C=k.all_layers[e+1][1]}else C=k.all_layers[e][1];n.insertBefore(k.current_layer,C);wa(new Ja(k.current_layer,A,n));xb();c.setCurrentLayer(k.getLayerName(e));return true}}return false};this.setLayerVisibility=function(e,k){var l=B(),C=l.getLayerVisibility(e),A=l.setLayerVisibility(e,k);if(A)wa(new Ma(A,{display:C?"inline":"none"},"Layer Visibility"));else return false;if(A==l.getCurrentLayer()){xa();
+La.clear()}return true};this.moveSelectedToLayer=function(e){for(var k=null,l=B(),C=0;C<l.getNumLayers();++C)if(l.getLayerName(C)==e){k=l.all_layers[C][1];break}if(!k)return false;e=new Da("Move Elements to Layer");l=I;for(C=l.length;C--;){var A=l[C];if(A){var G=A.nextSibling,D=A.parentNode;k.appendChild(A);e.addSubCommand(new Ja(A,G,D))}}wa(e);return true};this.mergeLayer=function(e){var k=new Da("Merge Layer"),l=B(),C=$(l.current_layer).prev()[0];if(C){for(k.addSubCommand(new Fa(l.current_layer,
+l.current_layer.nextSibling,n));l.current_layer.firstChild;){var A=l.current_layer.firstChild;if(A.localName=="title"){k.addSubCommand(new Fa(A,A.nextSibling,l.current_layer));l.current_layer.removeChild(A)}else{var G=A.nextSibling;C.appendChild(A);k.addSubCommand(new Ja(A,G,l.current_layer))}}n.removeChild(l.current_layer);if(!e){xa();xb();M("changed",[n]);wa(k)}l.current_layer=C;return k}};this.mergeAllLayers=function(){var e=new Da("Merge all Layers"),k=B();for(k.current_layer=k.all_layers[k.getNumLayers()-
+1][1];$(n).children("g").length>1;)e.addSubCommand(c.mergeLayer(true));xa();xb();M("changed",[n]);wa(e)};var Eb=this.leaveContext=function(){var e=ta.length;if(e){for(var k=0;k<e;k++){var l=ta[k],C=cb(l,"orig_opac");C!==1?l.setAttribute("opacity",C):l.removeAttribute("opacity");l.setAttribute("style","pointer-events: inherit")}ta=[];xa(true);M("contextset",null)}L=null},Kb=this.setContext=function(e){Eb();if(typeof e==="string")e=pa(e);L=e;$(e).parentsUntil("#svgcontent").andSelf().siblings().each(function(){var k=
+this.getAttribute("opacity")||1;cb(this,"orig_opac",k);this.setAttribute("opacity",k*0.33);this.setAttribute("style","pointer-events: none");ta.push(this)});xa();M("contextset",L)};this.clear=function(){La.clear();xa();c.clearSvgContentElement();c.current_drawing_=new svgedit.draw.Drawing(n);c.createLayer("Layer 1");c.undoMgr.resetUndoStack();ra.initGroup();sa=ra.getRubberBandBox();M("cleared")};this.linkControlPoints=La.linkControlPoints;this.getContentElem=function(){return n};this.getRootElem=
+function(){return d};this.getSelectedElems=function(){return I};var zb=this.getResolution=function(){var e=n.getAttribute("width")/q,k=n.getAttribute("height")/q;return{w:e,h:k,zoom:q}};this.getZoom=function(){return q};this.getVersion=function(){return"svgcanvas.js ($Rev: 2082 $)"};this.setUiStrings=function(e){$.extend(kb,e.notification)};this.setConfig=function(e){$.extend(p,e)};this.getTitle=function(e){if(e=e||I[0]){e=$(e).data("gsvg")||$(e).data("symbol")||e;e=e.childNodes;for(var k=0;k<e.length;k++)if(e[k].nodeName==
+"title")return e[k].textContent;return""}};this.setGroupTitle=function(e){var k=I[0];k=$(k).data("gsvg")||k;var l=$(k).children("title"),C=new Da("Set Label");if(e.length)if(l.length){l=l[0];C.addSubCommand(new Ma(l,{"#text":l.textContent}));l.textContent=e}else{l=f.createElementNS(b,"title");l.textContent=e;$(k).prepend(l);C.addSubCommand(new Ia(l))}else{C.addSubCommand(new Fa(l[0],l.nextSibling,k));l.remove()}wa(C)};this.getDocumentTitle=function(){return c.getTitle(n)};this.setDocumentTitle=function(e){for(var k=
+n.childNodes,l=false,C="",A=new Da("Change Image Title"),G=0;G<k.length;G++)if(k[G].nodeName=="title"){l=k[G];C=l.textContent;break}if(!l){l=f.createElementNS(b,"title");n.insertBefore(l,n.firstChild)}if(e.length)l.textContent=e;else l.parentNode.removeChild(l);A.addSubCommand(new Ma(l,{"#text":C}));wa(A)};this.getEditorNS=function(e){e&&n.setAttribute("xmlns:se","http://svg-edit.googlecode.com");return"http://svg-edit.googlecode.com"};this.setResolution=function(e,k){var l=zb(),C=l.w;l=l.h;var A;
+if(e=="fit"){var G=getStrokedBBox();if(G){A=new Da("Fit Canvas to Content");var D=pb();qb(D);var z=[],F=[];$.each(D,function(){z.push(G.x*-1);F.push(G.y*-1)});D=c.moveSelectedElements(z,F,true);A.addSubCommand(D);xa();e=Math.round(G.width);k=Math.round(G.height)}else return false}if(e!=C||k!=l){D=d.suspendRedraw(1E3);A||(A=new Da("Change Image Dimensions"));e=Ba("width",e);k=Ba("height",k);n.setAttribute("width",e);n.setAttribute("height",k);this.contentW=e;this.contentH=k;A.addSubCommand(new Ma(n,
+{width:C,height:l}));n.setAttribute("viewBox",[0,0,e/q,k/q].join(" "));A.addSubCommand(new Ma(n,{viewBox:["0 0",C,l].join(" ")}));wa(A);d.unsuspendRedraw(D);if(background=document.getElementById("canvas_background")){background.setAttribute("x",-1);background.setAttribute("y",-1);background.setAttribute("width",e+2);background.setAttribute("height",k+2)}M("changed",[n])}return[e,k]};this.getOffset=function(){return $(n).attr(["x","y"])};this.setBBoxZoom=function(e,k,l){var C=0.85,A=function(G){if(!G)return false;
+var D=Math.min(Math.round(k/G.width*100*C)/100,Math.round(l/G.height*100*C)/100);c.setZoom(D);return{zoom:D,bbox:G}};if(typeof e=="object"){e=e;if(e.width==0||e.height==0){c.setZoom(e.zoom?e.zoom:q*e.factor);return{zoom:q,bbox:e}}return A(e)}switch(e){case "selection":if(!I[0])return;e=$.map(I,function(G){if(G)return G});e=getStrokedBBox(e);break;case "canvas":e=zb();C=0.95;e={width:e.w,height:e.h,x:0,y:0};break;case "content":e=getStrokedBBox();break;case "layer":e=getStrokedBBox(pb(B().getCurrentLayer()));
+break;default:return}return A(e)};this.setZoom=function(e){var k=zb();n.setAttribute("viewBox","0 0 "+k.w/e+" "+k.h/e);q=e;$.each(I,function(l,C){C&&ra.requestSelector(C).resize()});La.zoomChange();ib("zoomChanged",e)};this.getMode=function(){return Ha};this.setMode=function(e){La.clear();bb.clear();$("#workarea").attr("class",e);Xa=I[0]&&I[0].nodeName=="text"?Ua:K;Ha=e};this.getColor=function(e){return Xa[e]};this.setColor=function(e,k,l){K[e]=k;Xa[e+"_paint"]={type:"solidColor"};for(var C=[],A=
+I.length;A--;){var G=I[A];if(G)if(G.tagName=="g")svgedit.utilities.walkTree(G,function(D){D.nodeName!="g"&&C.push(D)});else if(e=="fill")G.tagName!="polyline"&&G.tagName!="line"&&C.push(G);else C.push(G)}if(C.length>0)if(l)Ab(e,k,C);else{Ya(e,k,C);M("changed",C)}};var gb=function(){var e=n.getElementsByTagNameNS(b,"defs");if(e.length>0)e=e[0];else{e=f.createElementNS(b,"defs");n.firstChild?n.insertBefore(e,n.firstChild.nextSibling):n.appendChild(e)}return e},Nb=this.setGradient=function(e){if(!(!Xa[e+
+"_paint"]||Xa[e+"_paint"].type=="solidColor")){var k=c[e+"Grad"],l=Mb(k),C=gb();if(l)k=l;else{k=C.appendChild(f.importNode(k,true));k.id=ka()}c.setColor(e,"url(#"+k.id+")");if(e=="canvas")(e=document.getElementById("canvas_background"))&&e.setAttribute("fill","url(#"+k.id+")")}},Mb=function(e){var k=gb();k=$(k).find("linearGradient, radialGradient");for(var l=k.length,C=["r","cx","cy","fx","fy"];l--;){var A=k[l];if(e.tagName=="linearGradient"){if(e.getAttribute("x1")!=A.getAttribute("x1")||e.getAttribute("y1")!=
+A.getAttribute("y1")||e.getAttribute("x2")!=A.getAttribute("x2")||e.getAttribute("y2")!=A.getAttribute("y2"))continue}else{var G=$(e).attr(C),D=$(A).attr(C),z=false;$.each(C,function(E,H){if(G[H]!=D[H])z=true});if(z)continue}var F=e.getElementsByTagNameNS(b,"stop"),h=A.getElementsByTagNameNS(b,"stop");if(F.length==h.length){for(var m=F.length;m--;){var o=F[m],u=h[m];if(o.getAttribute("offset")!=u.getAttribute("offset")||o.getAttribute("stop-opacity")!=u.getAttribute("stop-opacity")||o.getAttribute("stop-color")!=
+u.getAttribute("stop-color"))break}if(m==-1)return A}}return null};this.setPaint=function(e,k){var l=new $.jGraduate.Paint(k);this.setPaintOpacity(e,l.alpha/100,true);Xa[e+"_paint"]=l;switch(l.type){case "solidColor":if(l.solidColor!="none"&&l.solidColor!="#none")this.setColor(e,"#"+l.solidColor);else{this.setColor(e,"none");document.querySelector(e=="fill"?"#fill_color rect":"#stroke_color rect").setAttribute("fill","none")}break;case "linearGradient":case "radialGradient":c[e+"Grad"]=l[l.type];
+Nb(e)}};this.getStrokeWidth=function(){return Xa.stroke_width};this.setStrokeWidth=function(e){if(e==0&&["line","path"].indexOf(Ha)>=0)c.setStrokeWidth(1);else{Xa.stroke_width=e;for(var k=[],l=I.length;l--;){var C=I[l];if(C)C.tagName=="g"?svgedit.utilities.walkTree(C,function(A){A.nodeName!="g"&&k.push(A)}):k.push(C)}if(k.length>0){Ya("stroke-width",e,k);M("changed",I)}}};this.setStrokeAttr=function(e,k){K[e.replace("-","_")]=k;for(var l=[],C=I.length;C--;){var A=I[C];if(A)A.tagName=="g"?svgedit.utilities.walkTree(A,
+function(G){G.nodeName!="g"&&l.push(G)}):l.push(A)}if(l.length>0){Ya(e,k,l);M("changed",I)}};this.getStyle=function(){return K};this.getOpacity=function(){return K.opacity};this.setOpacity=function(e){K.opacity=e;Ya("opacity",e)};this.getFillOpacity=function(){return K.fill_opacity};this.getStrokeOpacity=function(){return K.stroke_opacity};this.setPaintOpacity=function(e,k,l){K[e+"_opacity"]=k;l?Ab(e+"-opacity",k):Ya(e+"-opacity",k)};this.getBlur=function(e){var k=0;if(e)if(e.getAttribute("filter"))if(e=
+pa(e.id+"_blur"))k=e.firstChild.getAttribute("stdDeviation");return k};(function(){function e(){var A=c.undoMgr.finishUndoableChange();k.addSubCommand(A);wa(k);l=k=null}var k=null,l=null,C=false;c.setBlurNoUndo=function(A){if(l)if(A===0){Ab("filter","");C=true}else{var G=I[0];C&&Ab("filter","url(#"+G.id+"_blur)");if(svgedit.browser.isWebkit()){G.removeAttribute("filter");G.setAttribute("filter","url(#"+G.id+"_blur)")}Ab("stdDeviation",A,[l.firstChild]);c.setBlurOffsets(l,A)}else c.setBlur(A)};c.setBlurOffsets=
+function(A,G){if(G>3)ma(A,{x:"-50%",y:"-50%",width:"200%",height:"200%"},100);else if(!svgedit.browser.isWebkit()){A.removeAttribute("x");A.removeAttribute("y");A.removeAttribute("width");A.removeAttribute("height")}};c.setBlur=function(A,G){if(k)e();else{var D=I[0],z=D.id;l=pa(z+"_blur");A-=0;var F=new Da;if(l){if(A===0)l=null}else{var h=S({element:"feGaussianBlur",attr:{"in":"SourceGraphic",stdDeviation:A}});l=S({element:"filter",attr:{id:z+"_blur"}});l.appendChild(h);gb().appendChild(l);F.addSubCommand(new Ia(l))}h=
+{filter:D.getAttribute("filter")};if(A===0){D.removeAttribute("filter");F.addSubCommand(new Ma(D,h))}else{Ya("filter","url(#"+z+"_blur)");F.addSubCommand(new Ma(D,h));c.setBlurOffsets(l,A);k=F;c.undoMgr.beginUndoableChange("stdDeviation",[l?l.firstChild:null]);if(G){c.setBlurNoUndo(A);e()}}}}})();this.getBold=function(){var e=true;I.filter(Boolean).forEach(function(k){if(k.getAttribute("font-weight")!="bold")e=false});return e};this.setBold=function(e){var k=I.filter(Boolean);k.forEach(function(l){if(l!=
+null&&l.tagName=="text")Ya("font-weight",e?"bold":"normal")});k[0].textContent||bb.setCursor()};this.getItalic=function(){var e=true;I.filter(Boolean).forEach(function(k){if(k.getAttribute("font-style")!="italic")e=false});return e};this.setItalic=function(e){var k=I.filter(Boolean);k.forEach(function(l){if(l!=null&&l.tagName=="text")Ya("font-style",e?"italic":"normal")});k[0].textContent||bb.setCursor()};this.getFontFamily=function(){return Ua.font_family};this.setFontFamily=function(e){Ua.font_family=
+e;Ya("font-family",e);I[0]&&!I[0].textContent&&bb.setCursor()};this.setFontColor=function(e){Ua.fill=e;Ya("fill",e)};this.getFontSize=function(){return Ua.fill};this.getFontSize=function(){return Ua.font_size};this.setFontSize=function(e){Ua.font_size=e;Ya("font-size",e);I[0].textContent||bb.setCursor()};this.getText=function(){var e=I[0];if(e==null)return"";return e.textContent};this.setTextContent=function(e){Ya("#text",e);bb.init(e);bb.setCursor()};this.setImageURL=function(e){var k=I[0];if(k){var l=
+$(k).attr(["width","height"]);l=!l.width||!l.height;var C=ca(k);if(C!==e)l=true;else if(!l)return;var A=new Da("Change Image URL");U(k,e);A.addSubCommand(new Ma(k,{"#href":C}));l?$(new Image).load(function(){var G=$(k).attr(["width","height"]);$(k).attr({width:this.width,height:this.height});ra.requestSelector(k).resize();A.addSubCommand(new Ma(k,G));wa(A);M("changed",[k])}).attr("src",e):wa(A)}};this.setLinkURL=function(e){var k=I[0];if(k){if(k.tagName!=="a"){k=$(k).parents("a");if(k.length)k=k[0];
+else return}var l=ca(k);if(l!==e){var C=new Da("Change Link URL");U(k,e);C.addSubCommand(new Ma(k,{"#href":l}));wa(C)}}};this.elementsAreSame=function(e){return!e.length||e[0]==null?null:I.every(function(k){return k&&I[0]?k.nodeName==I[0].nodeName:null})};this.setRectRadius=function(e){c.elementsAreSame(I)&&I[0].tagName=="rect"&&I.forEach(function(k){var l=k.getAttribute("rx");if(l!=e){k.setAttribute("rx",e);k.setAttribute("ry",e);wa(new Ma(k,{rx:l,ry:l},"Radius"));M("changed",[k])}})};this.makeHyperlink=
+function(e){c.groupSelectedElements("a",e)};this.removeHyperlink=function(){c.ungroupSelectedElement()};this.setSegType=function(e){La.setSegType(e)};this.convertToPath=function(e,k){if(e==null)$.each(I,function(ba,T){T&&c.convertToPath(T)});else{if(!k)var l=new Da("Convert element to Path");var C=k?{}:{fill:K.fill,"fill-opacity":K.fill_opacity,stroke:K.stroke,"stroke-width":K.stroke_width,"stroke-dasharray":K.stroke_dasharray,"stroke-linejoin":K.stroke_linejoin,"stroke-linecap":K.stroke_linecap,
+"stroke-opacity":K.stroke_opacity,opacity:K.opacity,visibility:"hidden"};$.each(["marker-start","marker-end","marker-mid","filter","clip-path"],function(){if(e.getAttribute(this))C[this]=e.getAttribute(this)});var A=S({element:"path",attr:C}),G=e.getAttribute("transform");G&&A.setAttribute("transform",G);var D=e.id,z=e.parentNode;e.nextSibling?z.insertBefore(A,e):z.appendChild(A);var F="",h=function(ba){$.each(ba,function(T,fa){var ha=fa[1];F+=fa[0];for(var X=0;X<ha.length;X+=2)F+=ha[X]+","+ha[X+
+1]+" "})},m=1.81;switch(e.tagName){case "ellipse":case "circle":var o=$(e).attr(["rx","ry","cx","cy"]),u=o.cx,E=o.cy,H=o.rx;o=o.ry;if(e.tagName=="circle")H=o=$(e).attr("r");h([["M",[u-H,E]],["C",[u-H,E-o/m,u-H/m,E-o,u,E-o]],["C",[u+H/m,E-o,u+H,E-o/m,u+H,E]],["C",[u+H,E+o/m,u+H/m,E+o,u,E+o]],["C",[u-H/m,E+o,u-H,E+o/m,u-H,E]],["Z",[]]]);break;case "path":F=e.getAttribute("d");break;case "line":o=$(e).attr(["x1","y1","x2","y2"]);F="M"+o.x1+","+o.y1+"L"+o.x2+","+o.y2;break;case "polyline":case "polygon":F=
+"M"+e.getAttribute("points");break;case "rect":o=$(e).attr(["rx","ry"]);H=o.rx;o=o.ry;var J=e.getBBox();u=J.x;E=J.y;var O=J.width;J=J.height;m=4-m;if(!H&&!o)h([["M",[u,E]],["L",[u+O,E]],["L",[u+O,E+J]],["L",[u,E+J]],["L",[u,E]],["Z",[]]]);else{o||(o=H);h([["M",[u,E+o]],["C",[u,E+o/m,u+H/m,E,u+H,E]],["L",[u+O-H,E]],["C",[u+O-H/m,E,u+O,E+o/m,u+O,E+o]],["L",[u+O,E+J-o]],["C",[u+O,E+J-o/m,u+O-H/m,E+J,u+O-H,E+J]],["L",[u+H,E+J]],["C",[u+H/m,E+J,u,E+J-o/m,u,E+J-o]],["L",[u,E+o]],["Z",[]]])}break;default:A.parentNode.removeChild(A)}F&&
+A.setAttribute("d",F);if(k){La.resetOrientation(A);l=false;try{l=A.getBBox()}catch(W){}A.parentNode.removeChild(A);return l}else{if(G){G=R(A);oa(G)&&La.resetOrientation(A)}l.addSubCommand(new Fa(e,e.nextSibling,z));l.addSubCommand(new Ia(A));xa();e.parentNode.removeChild(e);A.setAttribute("id",D);A.removeAttribute("visibility");qb([A],true);wa(l)}}};var Ab=this.changeSelectedAttributeNoUndo=function(e,k,l){var C=d.suspendRedraw(1E3);Ha=="pathedit"&&La.moveNode(e,k);l=l||I;for(var A=l.length,G=["g",
+"polyline","path"];A--;){var D=l[A];if(D!=null){Ha==="textedit"&&e!=="#text"&&D.textContent.length&&bb.toSelectMode(D);if((e==="x"||e==="y")&&G.indexOf(D.tagName)>=0){var z=getStrokedBBox([D]);c.moveSelectedElements((e==="x"?k-z.x:0)*q,(e==="y"?k-z.y:0)*q,true)}else{z=e==="#text"?D.textContent:D.getAttribute(e);if(z==null)z="";if(z!==String(k)){if(e=="#text"){svgedit.utilities.getBBox(D);D.textContent=k}else e=="#href"?U(D,k):D.setAttribute(e,k);I.indexOf(D)>=0&&setTimeout(function(){D.parentNode&&
+ra.requestSelector(D).resize()},0);z=na(D);if(z!=0&&e!="transform")for(var F=R(D),h=F.numberOfItems;h--;)if(F.getItem(h).type==4){F.removeItem(h);var m=svgedit.utilities.getBBox(D),o=N(m.x+m.width/2,m.y+m.height/2,Y(F).matrix);m=o.x;o=o.y;var u=d.createSVGTransform();u.setRotate(z,m,o);F.insertItemBefore(u,h);break}}}}}d.unsuspendRedraw(C)},Ya=this.changeSelectedAttribute=function(e,k,l){l=l||I;c.undoMgr.beginUndoableChange(e,l);Ab(e,k,l);e=c.undoMgr.finishUndoableChange();e.isEmpty()||wa(e)};this.deleteSelectedElements=
+function(){for(var e=new Da("Delete Elements"),k=I.length,l=[],C=0;C<k;++C){var A=I[C];if(A==null)break;var G=A.parentNode,D=A;ra.releaseSelector(D);svgedit.path.removePath_(D.id);if(G.tagName==="a"&&G.childNodes.length===1){D=G;G=G.parentNode}var z=D.nextSibling;D=G.removeChild(D);l.push(A);I[C]=null;e.addSubCommand(new Fa(D,z,G))}e.isEmpty()||wa(e);M("changed",l);xa()};this.cutSelectedElements=function(){for(var e=new Da("Cut Elements"),k=I.length,l=[],C=0;C<k;++C){var A=I[C];if(A==null)break;var G=
+A.parentNode,D=A;ra.releaseSelector(D);svgedit.path.removePath_(D.id);var z=D.nextSibling;D=G.removeChild(D);l.push(A);I[C]=null;e.addSubCommand(new Fa(D,z,G))}e.isEmpty()||wa(e);M("changed",l);xa();c.clipBoard=l};this.copySelectedElements=function(){c.clipBoard=$.merge([],I)};this.pasteElements=function(){var e=c.clipBoard,k=e.length;if(k){for(var l=[],C=new Da("Paste elements");k--;){var A=e[k];if(A){var G=ia(A);if(!pa(A.id))G.id=A.id;l.push(G);(L||B().getCurrentLayer()).appendChild(G);C.addSubCommand(new Ia(G))}}svgCanvas.clearSelection();
+setTimeout(function(){rb(l)},100);wa(C);M("changed",l)}};this.groupSelectedElements=function(e){e||(e="g");var k="";switch(e){case "a":k="Make hyperlink";var l="";if(arguments.length>1)l=arguments[1];break;default:e="g";k="Group Elements"}k=new Da(k);var C=S({element:e,attr:{id:ka()}});e==="a"&&U(C,l);k.addSubCommand(new Ia(C));for(l=I.length;l--;){var A=I[l];if(A!=null){if(A.parentNode.tagName==="a"&&A.parentNode.childNodes.length===1)A=A.parentNode;var G=A.nextSibling,D=A.parentNode;C.appendChild(A);
+k.addSubCommand(new Ja(A,G,D))}}k.isEmpty()||wa(k);rb([C],true)};var Db=this.pushGroupProperties=function(e,k){var l=e.childNodes,C=l.length,A=e.getAttribute("transform"),G=R(e),D=Y(G).matrix,z=new Da("Push group properties"),F=0,h=na(e),m=$(e).attr(["filter","opacity"]),o,u;for(F=0;F<C;F++){var E=l[F];if(E.nodeType===1){if(m.opacity!==null&&m.opacity!==1){E.getAttribute("opacity");var H=Math.round((E.getAttribute("opacity")||1)*m.opacity*100)/100;Ya("opacity",H,[E])}if(m.filter){var J=H=this.getBlur(E);
+u||(u=this.getBlur(e));if(H)H=u-0+(H-0);else if(H===0)H=u;if(J)o=P(E.getAttribute("filter"));else if(o){o=ia(o);gb().appendChild(o)}else o=P(m.filter);o.id=E.id+"_"+(o.firstChild.tagName==="feGaussianBlur"?"blur":"filter");Ya("filter","url(#"+o.id+")",[E]);if(H){Ya("stdDeviation",H,[o.firstChild]);c.setBlurOffsets(o,H)}}H=R(E);if(~E.tagName.indexOf("Gradient"))H=null;if(H)if(E.tagName!=="defs")if(G.numberOfItems){if(h&&G.numberOfItems==1){var O=G.getItem(0).matrix,W=d.createSVGMatrix();if(J=na(E))W=
+H.getItem(0).matrix;var ba=svgedit.utilities.getBBox(E),T=Y(H).matrix,fa=N(ba.x+ba.width/2,ba.y+ba.height/2,T);ba=h+J;T=d.createSVGTransform();T.setRotate(ba,fa.x,fa.y);O=ga(O,W,T.matrix.inverse());J&&H.removeItem(0);if(ba)H.numberOfItems?H.insertItemBefore(T,0):H.appendItem(T);if(O.e||O.f){J=d.createSVGTransform();J.setTranslate(O.e,O.f);H.numberOfItems?H.insertItemBefore(J,0):H.appendItem(J)}}else{J=E.getAttribute("transform");O={};O.transform=J?J:"";J=d.createSVGTransform();O=Y(H).matrix;W=O.inverse();
+O=ga(W,D,O);J.setMatrix(O);H.appendItem(J)}(E=Ra(E))&&z.addSubCommand(E)}}}if(A){O={};O.transform=A;e.setAttribute("transform","");e.removeAttribute("transform");z.addSubCommand(new Ma(e,O))}if(k&&!z.isEmpty())return z};this.ungroupSelectedElement=function(){var e=I[0];if($(e).data("gsvg")||$(e).data("symbol"))Lb(e);else if(e.tagName==="use"){var k=pa(ca(e).substr(1));$(e).data("symbol",k).data("ref",k);Lb(e)}else{k=$(e).parents("a");if(k.length)e=k[0];if(e.tagName==="g"||e.tagName==="a"){k=new Da("Ungroup Elements");
+var l=Db(e,true);l&&k.addSubCommand(l);l=e.parentNode;for(var C=e.nextSibling,A=Array(e.childNodes.length),G=0;e.firstChild;){var D=e.firstChild,z=D.nextSibling,F=D.parentNode;if(D.tagName==="title"){k.addSubCommand(new Fa(D,D.nextSibling,F));F.removeChild(D)}else{A[G++]=D=l.insertBefore(D,C);k.addSubCommand(new Ja(D,z,F))}}xa();C=e.nextSibling;e=l.removeChild(e);k.addSubCommand(new Fa(e,C,l));k.isEmpty()||wa(k);qb(A)}}};this.moveToTopSelectedElement=function(){var e=I.filter(Boolean).reverse(),k=
+new Da("Move to top");e.forEach(function(l){l=l;var C=l.parentNode,A=l.nextSibling;l=l.parentNode.appendChild(l);if(A!=l.nextSibling){k.addSubCommand(new Ja(l,A,C,"top"));M("changed",[l])}k.isEmpty()||wa(k)})};this.moveToBottomSelectedElement=function(){var e=I.filter(Boolean).reverse(),k=new Da("Move to top");e.forEach(function(l){l=l;var C=l.parentNode,A=l.nextSibling,G=l.parentNode.firstChild;if(G.tagName=="title")G=G.nextSibling;if(G.tagName=="defs")G=G.nextSibling;l=l.parentNode.insertBefore(l,
+G);if(A!=l.nextSibling){k.addSubCommand(new Ja(l,A,C,"bottom"));M("changed",[l])}});k.isEmpty()||wa(k)};this.moveUpDownSelected=function(e){var k=I.filter(Boolean);e=="Down"&&k.reverse();var l=new Da("Move "+e);k.forEach(function(C){hb=[];var A,G,D=$(ob(getStrokedBBox([C]))).toArray();e=="Down"&&D.reverse();$.each(D,function(){if(G){A=this;return false}else if(this==C)G=true});if(A){D=C.parentNode;var z=C.nextSibling;$(A)[e=="Down"?"before":"after"](C);if(z!=C.nextSibling){l.addSubCommand(new Ja(C,
+z,D,"Move "+e));M("changed",[C])}}});l.isEmpty()||wa(l)};this.moveSelectedElements=function(e,k,l){if(e.constructor!=Array){e/=q;k/=q}l=l||true;for(var C=new Da("position"),A=I.length;A--;){var G=I[A];if(G!=null){var D=d.createSVGTransform(),z=R(G);e.constructor==Array?D.setTranslate(e[A],k[A]):D.setTranslate(e,k);z.numberOfItems?z.insertItemBefore(D,0):z.appendItem(D);(D=Ra(G))&&C.addSubCommand(D);ra.requestSelector(G).resize()}}if(!C.isEmpty()){l&&wa(C);M("changed",I);return C}};this.cloneSelectedElements=
+function(e,k,l){for(var C=new Da("Clone Elements"),A=I.length,G=0;G<A;++G){var D=I[G];if(D==null)break}A=I.slice(0,G);this.clearSelection(true);G=A.length;for(clones=[];G--;){D=A[G];var z=ia(A[G]),F=L||B().getCurrentLayer();if(l){tlist=R(z);tlist.removeItem(l);Ra(z);F.insertBefore(z,D)}else F.appendChild(z);clones.push(z);C.addSubCommand(new Ia(z))}if(!C.isEmpty()){qb(A.reverse());l||this.moveSelectedElements(e,k,false);wa(C)}return clones};this.alignSelectedElements=function(e,k){var l=[],C=Number.MAX_VALUE,
+A=Number.MIN_VALUE,G=Number.MAX_VALUE,D=Number.MIN_VALUE,z=Number.MIN_VALUE,F=Number.MIN_VALUE,h=I.length;if(h){for(var m=0;m<h;++m){if(I[m]==null)break;l[m]=getStrokedBBox([I[m]]);switch(k){case "smallest":if((e=="l"||e=="c"||e=="r")&&(z==Number.MIN_VALUE||z>l[m].width)||(e=="t"||e=="m"||e=="b")&&(F==Number.MIN_VALUE||F>l[m].height)){C=l[m].x;G=l[m].y;A=l[m].x+l[m].width;D=l[m].y+l[m].height;z=l[m].width;F=l[m].height}break;case "largest":if((e=="l"||e=="c"||e=="r")&&(z==Number.MIN_VALUE||z<l[m].width)||
+(e=="t"||e=="m"||e=="b")&&(F==Number.MIN_VALUE||F<l[m].height)){C=l[m].x;G=l[m].y;A=l[m].x+l[m].width;D=l[m].y+l[m].height;z=l[m].width;F=l[m].height}break;default:if(l[m].x<C)C=l[m].x;if(l[m].y<G)G=l[m].y;if(l[m].x+l[m].width>A)A=l[m].x+l[m].width;if(l[m].y+l[m].height>D)D=l[m].y+l[m].height}}if(k=="page"){G=C=0;A=c.contentW;D=c.contentH}z=Array(h);F=Array(h);for(m=0;m<h;++m){if(I[m]==null)break;var o=l[m];z[m]=0;F[m]=0;switch(e){case "l":z[m]=C-o.x;break;case "c":z[m]=(C+A)/2-(o.x+o.width/2);break;
+case "r":z[m]=A-(o.x+o.width);break;case "t":F[m]=G-o.y;break;case "m":F[m]=(G+D)/2-(o.y+o.height/2);break;case "b":F[m]=D-(o.y+o.height)}}this.moveSelectedElements(z,F)}};this.contentW=zb().w;this.contentH=zb().h;this.updateCanvas=function(e,k){d.setAttribute("width",e);d.setAttribute("height",k);var l=$("#canvasBackground")[0],C=n.getAttribute("x"),A=n.getAttribute("y"),G=e/2-this.contentW*q/2,D=k/2-this.contentH*q/2;ma(n,{width:this.contentW*q,height:this.contentH*q,x:G,y:D,viewBox:"0 0 "+this.contentW+
+" "+this.contentH});ma(l,{width:n.getAttribute("width"),height:n.getAttribute("height"),x:G,y:D});(l=pa("background_image"))&&ma(l,{width:"100%",height:"100%"});ra.selectorParentGroup.setAttribute("transform","translate("+G+","+D+")");return{x:G,y:D,old_x:C,old_y:A,d_x:G-C,d_y:D-A}};this.setBackground=function(e,k){var l=pa("canvasBackground"),C=$(l).find("rect")[0],A=pa("background_image");C.setAttribute("fill",e);if(k){if(!A){A=f.createElementNS(b,"image");ma(A,{id:"background_image",width:"100%",
+height:"100%",preserveAspectRatio:"xMinYMin",style:"pointer-events:none"})}U(A,k);l.appendChild(A)}else A&&A.parentNode.removeChild(A)};this.cycleElement=function(e){var k=I[0],l=false,C=pb(L||B().getCurrentLayer());if(C.length){if(k==null){e=e?C.length-1:0;l=C[e]}else for(var A=C.length;A--;)if(C[A]==k){e=e?A-1:A+1;if(e>=C.length)e=0;else if(e<0)e=C.length-1;l=C[e];break}rb([l],true);M("selected",I)}};this.clear();this.getPrivateMethods=function(){return{addCommandToHistory:wa,setGradient:Nb,addSvgElementFromJson:S,
+assignAttributes:ma,BatchCommand:Da,call:M,ChangeElementCommand:Ma,copyElem:ia,ffClone:da,findDefs:gb,findDuplicateGradient:Mb,getElem:pa,getId:aa,getIntersectionList:ob,getMouseTarget:Bb,getNextId:ka,getPathBBox:Z,getUrlFromAttr:ja,hasMatrixTransform:oa,identifyLayers:xb,InsertElementCommand:Ia,isIdentity:svgedit.math.isIdentity,logMatrix:Wa,matrixMultiply:ga,MoveElementCommand:Ja,preventClickDefault:Fb,recalculateAllSelectedDimensions:Ea,recalculateDimensions:Ra,remapElement:Za,RemoveElementCommand:Fa,
+removeUnusedDefElems:yb,round:ab,runExtensions:ib,sanitizeSvg:za,SVGEditTransformList:svgedit.transformlist.SVGTransformList,toString:toString,transformBox:svgedit.math.transformBox,transformListToTransform:Y,transformPoint:N,walkTree:svgedit.utilities.walkTree}}};(function(){document.addEventListener("touchstart",touchHandler,true);document.addEventListener("touchmove",touchHandler,true);document.addEventListener("touchend",touchHandler,true);document.addEventListener("touchcancel",touchHandler,true);if(!window.methodDraw)window.methodDraw=function(a){function s(d,n){var v=g.setSvgString(d)!==false;n=n||a.noop;v?n(true):a.alert(uiStrings.notification.errorLoadingSVG,function(){n(false)})}var g,b={},p=false;curConfig={canvas_expansion:1,dimensions:[580,400],
+initFill:{color:"fff",opacity:1},initStroke:{width:1.5,color:"000",opacity:1},initOpacity:1,imgPath:"images/",extPath:"extensions/",jGraduatePath:"jgraduate/images/",extensions:[],initTool:"select",wireframe:false,colorPickerCSS:false,gridSnapping:false,gridColor:"#000",baseUnit:"px",snappingStep:10,showRulers:svgedit.browser.isTouch()?false:true,show_outside_canvas:false,no_save_warning:true,initFont:"Helvetica, Arial, sans-serif"};uiStrings=b.uiStrings={common:{ok:"OK",cancel:"Cancel",key_up:"Up",
+key_down:"Down",key_backspace:"Backspace",key_del:"Del"},layers:{layer:"Layer"},notification:{invalidAttrValGiven:"Invalid value given",noContentToFitTo:"No content to fit to",dupeLayerName:"There is already a layer named that!",enterUniqueLayerName:"Please enter a unique layer name",enterNewLayerName:"Please enter the new layer name",layerHasThatName:"Layer already has that name",QmoveElemsToLayer:'Move selected elements to layer "%s"?',QwantToClear:"<strong>Do you want to clear the drawing?</strong>\nThis will also erase your undo history",
+QwantToOpen:"Do you want to open a new file?\nThis will also erase your undo history",QerrorsRevertToSource:"There were parsing errors in your SVG source.\nRevert back to original SVG source?",QignoreSourceChanges:"Ignore changes made to SVG source?",featNotSupported:"Feature not supported",enterNewImgURL:"Enter the new image URL",defsFailOnSave:"NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",loadingImage:"Loading image, please wait...",
+saveFromBrowser:'Select "Save As..." in your browser to save this image as a %s file.',noteTheseIssues:"Also note the following issues: ",unsavedChanges:"There are unsaved changes.",enterNewLinkURL:"Enter the new hyperlink URL",errorLoadingSVG:"Error: Unable to load SVG data",URLloadFail:"Unable to load from URL",retrieving:'Retrieving "%s" ...'}};var w={},c={};b.curConfig=curConfig;b.tool_scale=1;b.setConfig=function(d){a.extend(true,curConfig,d);if(d.extensions)curConfig.extensions=d.extensions};
+b.setCustomHandlers=function(d){b.ready(function(){if(d.open){a('#tool_open > input[type="file"]').remove();a("#tool_open").show();g.open=d.open}if(d.save){b.show_save_warning=false;g.bind("saved",d.save)}d.pngsave&&g.bind("exported",d.pngsave);c=d})};b.randomizeIds=function(){g.randomizeIds(arguments)};b.init=function(){(function(){var h=window.opener;if(h)try{var m=h.document.createEvent("Event");m.initEvent("methodDrawReady",true,true);h.document.documentElement.dispatchEvent(m)}catch(o){}})();
+(function(){a("body").toggleClass("touch",svgedit.browser.isTouch());var h=a.deparam.querystring(true);if(!a.isEmptyObject(h)){if(h.dimensions)h.dimensions=h.dimensions.split(",");if(h.extensions)h.extensions=h.extensions.split(",");if(h.bkgd_color)h.bkgd_color="#"+h.bkgd_color;methodDraw.setConfig(h);var m=h.source,o=a.param.querystring();if(!m)if(o.indexOf("source=data:")>=0)m=o.match(/source=(data:[^&]*)/)[1];if(m)if(m.indexOf("data:")===0){m=m.replace(/ /g,"+");b.loadFromDataURI(m)}else b.loadFromString(m);
+else if(o.indexOf("paramurl=")!==-1)methodDraw.loadFromURL(o.substr(9));else h.url&&methodDraw.loadFromURL(h.url)}})();a("#canvas_width").val(curConfig.dimensions[0]);a("#canvas_height").val(curConfig.dimensions[1]);var d=function(){a.each(curConfig.extensions,function(){var h=this;a.getScript(curConfig.extPath+h,function(m){if(!m){m=document.createElement("script");m.src=curConfig.extPath+h;document.querySelector("head").appendChild(m)}})})};document.location.protocol==="file:"?setTimeout(d,100):
+d();a.svgIcons(curConfig.imgPath+"svg_edit_icons.svg",{w:27,h:27,id_match:false,no_img:true,fallback_path:curConfig.imgPath,fallback:{logo:"logo.png",select:"select.png",select_node:"select_node.png",pencil:"pencil.png",pen:"line.png",rect:"square.png",ellipse:"ellipse.png",path:"path.png",text:"text.png",image:"image.png",zoom:"zoom.png","delete":"delete.png",spapelib:"shapelib.png",node_delete:"node_delete.png",align_left:"align-left.png",align_center:"align-center.png",align_right:"align-right.png",
+align_top:"align-top.png",align_middle:"align-middle.png",align_bottom:"align-bottom.png",arrow_right:"flyouth.png",arrow_down:"dropdown.gif"},placement:{"#logo":"logo","#tool_select":"select","#tool_fhpath":"pencil","#tool_line":"pen","#tool_rect,#tools_rect_show":"rect","#tool_ellipse,#tools_ellipse_show":"ellipse","#tool_path":"path","#tool_text,#layer_rename":"text","#tool_image":"image","#tool_zoom":"zoom","#tool_node_clone":"node_clone","#tool_node_delete":"node_delete","#tool_add_subpath":"add_subpath",
+"#tool_openclose_path":"open_path","#tool_alignleft, #tool_posleft":"align_left","#tool_aligncenter, #tool_poscenter":"align_center","#tool_alignright, #tool_posright":"align_right","#tool_aligntop, #tool_postop":"align_top","#tool_alignmiddle, #tool_posmiddle":"align_middle","#tool_alignbottom, #tool_posbottom":"align_bottom","#cur_position":"align","#zoomLabel":"zoom"},resize:{"#logo .svg_icon":15,".flyout_arrow_horiz .svg_icon":5,"#fill_bg .svg_icon, #stroke_bg .svg_icon":svgedit.browser.isTouch()?
+24:24,".palette_item:first .svg_icon":svgedit.browser.isTouch()?30:16,"#zoomLabel .svg_icon":16,"#zoom_dropdown .svg_icon":7},callback:function(){a(".toolbar_button button > svg, .toolbar_button button > img").each(function(){a(this).parent().prepend(this)});a(".tool_button, .tool_button_current").addClass("loaded");var h=a("#tools_left");if(h.length!=0){h.offset();h.outerHeight()}a(".tools_flyout").each(function(){var m=a("#"+this.id+"_show"),o=m.attr("data-curopt");if(!m.children("svg, img").length){o=
+a(o).children().clone();if(o.length){o[0].removeAttribute("style");m.append(o)}}});methodDraw.runCallbacks();setTimeout(function(){a(".flyout_arrow_horiz:empty").each(function(){a(this).append(a.getSvgIcon("arrow_right").width(5).height(5))})},1)}});a("#rulers").on("dblclick",function(h){a("#base_unit_container").css({top:h.pageY-10,left:h.pageX-50,display:"block"})});a("#base_unit_container").on("mouseleave mouseenter",function(){t=setTimeout(function(){a("#base_unit_container").fadeOut(500)},200);
+event.type=="mouseover"&&clearTimeout(t)});a("#base_unit").on("change",function(){savePreferences()});b.canvas=g=new a.SvgCanvas(document.getElementById("svgcanvas"),curConfig);b.show_save_warning=false;b.paintBox={fill:null,stroke:null,canvas:null};d=navigator.platform.indexOf("Mac")>=0;var n=navigator.userAgent.indexOf("AppleWebKit")>=0,v=d?"meta+":"ctrl+",B=g.pathActions,q=g.undoMgr,L=svgedit.utilities,Q=curConfig.imgPath+"placeholder.svg",K=a("#workarea"),I=a("#cmenu_canvas"),S=null,R=1,N="toolbars",
+ga="";d||a(".shortcut").each(function(){var h=a(this).text();a(this).text(h.split("\u2318").join("Ctrl+"))});(function(){a("#dialog_container").draggable({cancel:"#dialog_content, #dialog_buttons *",containment:"window"});var h=a("#dialog_box"),m=a("#dialog_buttons"),o=function(u,E,H,J){a("#dialog_content").html("<p>"+E.replace(/\n/g,"</p><p>")+"</p>").toggleClass("prompt",u=="prompt");m.empty();var O=a('<input type="button" value="'+uiStrings.common.ok+'">').appendTo(m);u!="alert"&&a('<input type="button" value="'+
+uiStrings.common.cancel+'">').appendTo(m).on("click touchstart",function(){h.hide();H(false)});if(u=="prompt"){var W=a('<input type="text">').prependTo(m);W.val(J||"");W.bind("keydown","return",function(){O.trigger("click touchstart")})}u=="process"&&O.hide();h.show();O.on("click touchstart",function(){h.hide();var ba=u=="prompt"?W.val():true;H&&H(ba)}).focus();u=="prompt"&&W.focus()};a.alert=function(u,E){o("alert",u,E)};a.confirm=function(u,E){o("confirm",u,E)};a.process_cancel=function(u,E){o("process",
+u,E)};a.prompt=function(u,E,H){o("prompt",u,H,E)}})();var oa=function(){var h=a(".tool_button_current");if(h.length&&h[0].id!=="tool_select"){h.removeClass("tool_button_current").addClass("tool_button");a("#tool_select").addClass("tool_button_current").removeClass("tool_button")}g.setMode("select")},Y=null,V=false,ea=false,Ba="",ja=function(h,m){var o=g.getResolution(),u=K;a("#svgcanvas").position();if(u=g.setBBoxZoom(m,u.width()-15,u.height()-15)){var E=u.zoom;u=u.bbox;if(E<0.0010)wa({value:0.1});
+else{typeof animatedZoom!="undefined"&&h.cancelAnimationFrame(animatedZoom);var H=Date.now(),J=E-o.zoom;a("#zoom");var O=o.zoom,W=function(){var ba=(Date.now()-H)/500;ba=Math.pow(ba-1,3)+1;g.setZoom(O+J*ba);G();if(ba<1&&ba>-0.9)h.animatedZoom=requestAnimationFrame(W);else{a("#zoom").val(parseInt(E*100));a("option","#zoom_select").removeAttr("selected");a("option[value="+parseInt(E*100)+"]","#zoom_select").attr("selected","selected")}};W();g.getMode()=="zoom"&&u.width&&oa();xb()}}};a("#cur_context_panel").delegate("a",
+"click",function(){var h=a(this);h.attr("data-root")?g.leaveContext():g.setContext(h.text());g.clearSelection();return false});var ca=function(){b.paintBox.fill.prep();b.paintBox.stroke.prep()},U={},Z=function(h){a.each(h,function(m,o){var u=a(m).children(),E=m+"_show",H=a(E),J=false;u.addClass("tool_button").unbind("click mousedown mouseup").each(function(ba){var T=o[ba];U[T.sel]=T.fn;if(T.isDefault)J=ba;ba=function(fa){var ha=T;if(fa.type==="keydown"){var X=a(ha.parent+"_show").hasClass("tool_button_current"),
+qa=a(ha.parent+"_show").attr("data-curopt");a.each(h[T.parent],function(Aa,Ca){if(Ca.sel==qa)ha=!fa.shiftKey||!X?Ca:h[T.parent][Aa+1]||h[T.parent][0]})}if(a(this).hasClass("disabled"))return false;ra(E)&&ha.fn();var ua=ha.icon?a.getSvgIcon(ha.icon,true):a(ha.sel).children().eq(0).clone();ua[0].setAttribute("width",H.width());ua[0].setAttribute("height",H.height());H.children(":not(.flyout_arrow_horiz)").remove();H.append(ua).attr("data-curopt",ha.sel)};a(this).mouseup(ba);T.key&&a(document).bind("keydown",
+T.key[0]+" shift+"+T.key[0],ba)});if(J)H.attr("data-curopt",o[J].sel);else H.attr("data-curopt")||H.attr("data-curopt",o[0].sel);var O,W=a(E).position();a(m).css({left:W.left+34,top:W.top+77});H.mousedown(function(ba){a("#workarea").one("mousedown",function(){a("#tools_shapelib").hide()});a("#tools_shapelib").is(":visible")&&ra(E,false);if(H.hasClass("disabled"))return false;var T=a(m),fa=W.left+34,ha=T.width()*-1,X=T.data("shown_popop")?200:0;O=setTimeout(function(){H.data("isLibrary")?T.css("left",
+fa).show():T.css("left",ha).show().animate({left:fa},50);T.data("shown_popop",true)},X);ba.preventDefault()}).mouseup(function(){clearTimeout(O);var ba=a(this).attr("data-curopt");if(H.data("isLibrary")&&a(E.replace("_show","")).is(":visible"))ra(E,true);else ra(E)&&ba in U&&U[ba]()})});ma()},na=function(h,m){return a("<div>",{"class":"tools_flyout",id:h}).appendTo("#svg_editor").append(m)},pa=function(){a(".tools_flyout").each(function(){var h=a("#"+this.id+"_show"),m=h.offset();h=h.outerWidth();
+a(this).css({left:(m.left+h)*R,top:m.top})})},ma=function(){a(".tools_flyout").each(function(){var h=a("#"+this.id+"_show");if(!h.data("isLibrary")){var m=[];a(this).children().each(function(){m.push(this.title)});h[0].title=m.join(" / ")}})},la,ya=function(h,m,o){var u=null;if(h.indexOf("url(#")===0){h=(h=g.getRefElem(h))?h.cloneNode(true):a("#"+o+"_color defs *")[0];u={alpha:m};u[h.tagName]=h}else u=h.indexOf("#")===0?{alpha:m,solidColor:h.substr(1)}:{alpha:m,solidColor:"none"};return new a.jGraduate.Paint(u)},
+za=g.getResolution();if(curConfig.baseUnit!=="px"){za.w=svgedit.units.convertUnit(za.w)+curConfig.baseUnit;za.h=svgedit.units.convertUnit(za.h)+curConfig.baseUnit}var Ja=function(h){g.createLayer("background");cur_shape=g.addSvgElementFromJson({element:"rect",attr:{x:-1,y:-1,width:za.w+2,height:za.h+2,stroke:"none",id:"canvas_background",opacity:1,fill:h||"#fff",style:"pointer-events:none"}});g.setCurrentLayer("Layer 1");g.setCurrentLayerPosition("1")};document.getElementById("canvas_background")||
+Ja();document.getElementById("canvas_background").getAttribute("fill");var Ia=b.setImageURL=function(h){h||(h=Q);g.setImageURL(h);a("#image_url").val(h)},Fa=function(){var h=Y;if(h!=null&&!h.parentNode)h=null;if(V&&V[0]!=null&&!V[0].parentNode)V=false;var m=g.getCurrentDrawing().getCurrentLayerName(),o=g.getMode(),u=curConfig.baseUnit!=="px"?curConfig.baseUnit:null,E=o=="pathedit";if(E){a(".context_panel").hide();a("#path_node_panel").show();a("#stroke_panel").hide();m=B.getNodePoint();a("#tool_add_subpath").removeClass("push_button_pressed").addClass("tool_button");
+a("#tool_node_delete").toggleClass("disabled",!B.canDeleteNodes);zb("#tool_openclose_path",B.closed_subpath?"open_path":"close_path");if(m){E=a("#seg_type");if(u){m.x=svgedit.units.convertUnit(m.x);m.y=svgedit.units.convertUnit(m.y)}a("#path_node_x").val(Math.round(m.x));a("#path_node_y").val(Math.round(m.y));if(m.type){E.val(m.type).removeAttr("disabled");a("#seg_type_label").html(m.type==4?"Straight":"Curve")}else E.val(4).attr("disabled","disabled")}a("#tools_top").removeClass("multiselected");
+a("#stroke_panel").hide();a("#canvas_panel").hide()}else{var H=a("#cmenu_canvas li");a(".context_panel").hide();a(".menu_item","#edit_menu").addClass("disabled");a(".menu_item","#object_menu").addClass("disabled");if(V){V=V.filter(Boolean);(h=g.elementsAreSame(V)?V[0]:null)&&a("#tools_top").addClass("multiselected")}if(!h&&!V){a("#tools_top").removeClass("multiselected");a("#stroke_panel").hide();a("#canvas_panel").show()}if(h!=null){a("#stroke_panel").show();var J=h.nodeName,O=g.getRotationAngle(h);
+a("#angle").val(Math.round(O));O=g.getBlur(h);a("#blur").val(O);if(!E&&o!="pathedit"){a("#selected_panel").show();a(".action_selected").removeClass("disabled");var W,ba;if(["g","polyline","path"].indexOf(J)>=0)if(o=g.getStrokedBBox([h])){W=o.x;ba=o.y}if(u){W=svgedit.units.convertUnit(W);ba=svgedit.units.convertUnit(ba)}a("#"+J+"_x").val(Math.round(W));a("#"+J+"_y").val(Math.round(ba));if(J==="polyline"){a("#path_x").val(Math.round(W));a("#path_y").val(Math.round(ba))}["image","text","path","g","use"].indexOf(J)==
+-1&&a(".action_path_convert_selected").removeClass("disabled");J==="path"&&a(".action_path_selected").removeClass("disabled")}u=null;if(T==="a"){u=g.getHref(h);a("#g_panel").show()}if(h.parentNode.tagName==="a")if(!a(h).siblings().length){a("#a_panel").show();u=g.getHref(h.parentNode)}a("#tool_make_link, #tool_make_link").toggle(!u);u&&a("#link_url").val(u);u={g:[],a:[],rect:["rx","width","height","x","y"],image:["width","height","x","y"],circle:["cx","cy","r"],ellipse:["cx","cy","rx","ry"],line:["x1",
+"y1","x2","y2"],text:["x","y"],use:[],path:[]};var T=h.tagName;a(h).data("gsvg")&&a("#g_panel").show();if(T=="path"||T=="polyline")a("#path_panel").show();if(u[T]){u=u[T];a("#"+T+"_panel").show();T=="rect"?a("#cornerRadiusLabel").show():a("#cornerRadiusLabel").hide();a.each(u,function(fa,ha){var X=h.getAttribute(ha);if(curConfig.baseUnit!=="px"&&h[ha])X=svgedit.units.convertUnit(h[ha].baseVal.value);var qa=document.getElementById(T+"_"+ha);qa.value=Math.round(X)||0;qa.getAttribute("data-cursor")===
+"true"&&a.fn.dragInput.updateCursor(qa)});if(T=="text"){u=h.getAttribute("font-family");document.getElementById("font_family_dropdown").selectedIndex=3;a("#text_panel").css("display","inline");a("#tool_italic").toggleClass("active",g.getItalic());a("#tool_bold").toggleClass("active",g.getBold());a("#font_family").val(u);a("#font_size").val(h.getAttribute("font-size"));a("#text").val(h.textContent);a("#preview_font").text(u.split(",")[0].replace(/'/g,"")).css("font-family",u);g.addedNew&&setTimeout(function(){a("#text").focus().select()},
+100)}else if(T=="image")Ia(g.getHref(h));else if(T==="g"||T==="use"){a("#container_panel").show();a(".action_group_selected").removeClass("disabled");g.getTitle()}}H[(T==="g"?"en":"dis")+"ableContextMenuItems"]("#ungroup");H[(T==="g"||!V?"dis":"en")+"ableContextMenuItems"]("#group")}if(V){a("#multiselected_panel").show();a(".action_multi_selected").removeClass("disabled");H.enableContextMenuItems("#group").disableContextMenuItems("#ungroup")}h||H.disableContextMenuItems("#delete,#cut,#copy,#group,#ungroup,#move_front,#move_up,#move_down,#move_back");
+q.getUndoStackSize()>0?a("#tool_undo").removeClass("disabled"):a("#tool_undo").addClass("disabled");q.getRedoStackSize()>0?a("#tool_redo").removeClass("disabled"):a("#tool_redo").addClass("disabled");g.addedNew=false;if(h&&!E||V){a("#selLayerNames").removeAttr("disabled").val(m);I.enableContextMenuItems("#delete,#cut,#copy,#move_front,#move_up,#move_down,#move_back")}}};a("#text").on("focus",function(){});a("#text").on("blur",function(){});g.bind("selected",function(h,m){var o=g.getMode();o==="select"&&
+oa();if(o==="pathedit")return Fa();Y=m.length==1||m[1]==null?m[0]:null;m=m.filter(Boolean);V=m.length>=2?m:false;if(g.elementsAreSame(V))Y=V[0];if(Y!=null){a("#multiselected_panel").hide();if(Y!=null)switch(Y.tagName){case "use":a(".context_panel").hide();a("#use_panel").show();break;case "image":a(".context_panel").hide();a("#image_panel").show();break;case "foreignObject":a(".context_panel").hide();break;case "g":case "a":o=null;for(var u=Y.getElementsByTagName("*"),E=0,H=u.length;E<H;E++){var J=
+u[E].getAttribute("stroke-width");if(E===0)o=J;else if(o!==J)o=null}a("#stroke_width").val(o===null?"0":o);Fa();break;default:a("#stroke_width").val(Y.getAttribute("stroke-width")||0);o=Y.getAttribute("stroke-dasharray")||"none";a("option","#stroke_style").removeAttr("selected");a('#stroke_style option[value="'+o+'"]').attr("selected","selected");a("#stroke_style").trigger("change");a.fn.dragInput.updateCursor(a("#stroke_width")[0]);a.fn.dragInput.updateCursor(a("#blur")[0])}if(Y!=null){o=(Y.getAttribute("opacity")||
+1)*100;a("#group_opacity").val(o);a.fn.dragInput.updateCursor(a("#group_opacity")[0])}V.length&&a("#tools_top").addClass("multiselected")}else if(V.length){a(".context_panel").hide();a("#tools_top").removeClass("multiselected");a("#multiselected_panel").show()}else{a(".context_panel").hide();a("#canvas_panel").show();a("#tools_top").removeClass("multiselected")}g.runExtensions("selectedChanged",{elems:m,selectedElement:Y,multiselected:V})});g.bind("transition",function(h,m){var o=g.getMode(),u=m[0];
+if(u){V=m.length>=2&&m[1]!=null?m:null;if(!V)switch(o){case "rotate":o=g.getRotationAngle(u);a("#angle").val(Math.round(o));rotateCursor(o);a("#tool_reorient").toggleClass("disabled",o==0)}g.runExtensions("elementTransition",{elems:m})}});g.bind("changed",function(h,m){var o=g.getMode();o==="select"&&oa();for(var u=0;u<m.length;++u){var E=m[u];if(E&&E.tagName==="svg")G();else if(E&&Y&&Y.parentNode==null)Y=E}b.show_save_warning=true;Fa();if(Y&&o==="select"){b.paintBox.fill.update();b.paintBox.stroke.update()}g.runExtensions("elementChanged",
+{elems:m})});g.bind("saved",function(h,m){b.show_save_warning=false;m='<?xml version="1.0"?>\n'+m;var o=navigator.userAgent;if(~o.indexOf("MSIE"))Eb(0,true);else{var u=h.open("data:image/svg+xml;base64,"+L.encode64(m)),E=a.pref("save_notice_done");if(E!=="all"){var H=uiStrings.notification.saveFromBrowser.replace("%s","SVG");if(o.indexOf("Gecko/")!==-1)if(m.indexOf("<defs")!==-1){H+="\n\n"+uiStrings.notification.defsFailOnSave;a.pref("save_notice_done","all");E="all"}else a.pref("save_notice_done",
+"part");else a.pref("save_notice_done","all");E!=="part"&&u.alert(H)}}});g.bind("exported",function(h,m){var o=m.issues;a("#export_canvas").length||a("<canvas>",{id:"export_canvas"}).hide().appendTo("body");var u=a("#export_canvas")[0];u.width=g.contentW;u.height=g.contentH;canvg(u,m.svg,{renderCallback:function(){var E=u.toDataURL("image/png");S.location.href=E;if(a.pref("export_notice_done")!=="all"){E=uiStrings.notification.saveFromBrowser.replace("%s","PNG");if(o.length)E+="\n\n"+uiStrings.notification.noteTheseIssues+
+"\n \u2022 "+o.join("\n \u2022 ");a.pref("export_notice_done","all");S.alert(E)}}})});g.bind("zoomed",ja);g.bind("contextset",function(h,m){var o="";if(m){var u="";o='<a href="#" data-root="y">'+g.getCurrentDrawing().getCurrentLayerName()+"</a>";a(m).parentsUntil("#svgcontent > g").andSelf().each(function(){if(this.id){u+=" > "+this.id;o+=this!==m?' > <a href="#">'+this.id+"</a>":" > "+this.id}});Ba=u}else Ba=null;a("#cur_context_panel").toggle(!!m).html(o)});g.bind("extension_added",function(h,m){function o(){if(la){clearTimeout(la);
+la=null}E||(la=setTimeout(function(){E=true;Mb(w.iconsize)},50))}var u=false,E=false,H=true,J=function(){if(m.callback&&!u&&H){u=true;m.callback()}},O=[];m.context_tools&&a.each(m.context_tools,function(ha,X){var qa=X.container_id?' id="'+X.container_id+'"':"",ua=a("#"+X.panel);ua.length||(ua=a("<div>",{id:X.panel}).appendTo("#tools_top").hide());switch(X.type){case "tool_button":var Aa='<div class="tool_button">'+X.id+"</div>",Ca=a(Aa).appendTo(ua);X.events&&a.each(X.events,function(Na,jb){a(Ca).bind(Na,
+jb)});break;case "select":Aa="<label"+qa+'><select id="'+X.id+'">';a.each(X.options,function(Na,jb){Aa+='<option value="'+Na+'"'+(Na==X.defval?" selected":"")+">"+jb+"</option>"});Aa+="</select></label>";var Pa=a(Aa).appendTo(ua).find("select");a.each(X.events,function(Na,jb){a(Pa).bind(Na,jb)});break;case "button-select":Aa='<div id="'+X.id+'" class="dropdown toolset" title="'+X.title+'"><div id="cur_'+X.id+'" class="icon_label"></div><button></button></div>';qa=a('<ul id="'+X.id+'_opts"></ul>').appendTo("#option_lists");
+X.colnum&&qa.addClass("optcols"+X.colnum);a(Aa).appendTo(ua).children();O.push({elem:"#"+X.id,list:"#"+X.id+"_opts",title:X.title,callback:X.events.change,cur:"#cur_"+X.id});break;case "input":Aa="<label"+qa+'><span id="'+X.id+'_label">'+X.label+':</span><input id="'+X.id+'" title="'+X.title+'" size="'+(X.size||"4")+'" value="'+(X.defval||"")+'" type="text"/></label>';var Qa=a(Aa).appendTo(ua).find("input");X.spindata&&Qa.SpinButton(X.spindata);X.events&&a.each(X.events,function(Na,jb){Qa.bind(Na,
+jb)})}});if(m.buttons){var W={},ba={},T=m.svgicons,fa={};a.each(m.buttons,function(ha,X){for(var qa,ua=X.id,Aa=ha;a("#"+ua).length;)ua=X.id+"_"+ ++Aa;if(T){W[ua]=X.icon;Aa=X.svgicon?X.svgicon:X.id;if(X.type=="app_menu")ba["#"+ua+" > div"]=Aa;else ba["#"+ua]=Aa}else qa=X.type=="menu"?"":a('<img src="'+X.icon+'">');var Ca,Pa;switch(X.type){case "mode_flyout":case "mode":Ca="tool_button";if(X.cls)Ca+=" "+X.cls;Pa="#tools_left";break;case "context":Ca="tool_button";Pa="#"+X.panel;a(Pa).length||a("<div>",
+{id:X.panel}).appendTo("#tools_top");break;case "menu":Ca="menu_item tool_button";Pa="#"+(X.after||X.panel);break;case "app_menu":Ca="";Pa=X.parent||"#main_menu ul";a(Pa).length||a("<div>",{id:X.panel}).appendTo("#tools_top")}var Qa=a(X.list||X.type=="app_menu"?"<li/>":"<div/>").attr("id",ua).attr("title",X.title).addClass(Ca);if(!X.includeWith&&!X.list){if("position"in X)a(Pa).children().eq(X.position).before(Qa);else X.type!="menu"||!X.after?Qa.appendTo(Pa):a(Pa).after(Qa);if(X.type=="mode_flyout"){Aa=
+a(Qa);Ca=Aa.parent();if(!Aa.parent().hasClass("tools_flyout")){var Na=Aa[0].id.replace("tool_","tools_"),jb=Aa.clone().attr("id",Na+"_show").append(a("<div>",{"class":"flyout_arrow_horiz"}));Aa.before(jb);Ca=na(Na,Aa);Ca.data("isLibrary",true);jb.data("isLibrary",true)}ba["#"+Na+"_show"]=X.id;ua=fa["#"+Ca[0].id]=[{sel:"#"+ua,fn:X.events.click,icon:X.id,isDefault:true},ub]}else if(X.type=="app_menu"||X.type=="menu")Qa.append(X.title)}else if(X.list){Qa.addClass("push_button");a("#"+X.list+"_opts").append(Qa);
+if(X.isDefault){a("#cur_"+X.list).append(Qa.children().clone());Aa=X.svgicon?X.svgicon:X.id;ba["#cur_"+X.list]=Aa}}else if(X.includeWith){Pa=X.includeWith;Aa=a(Pa.button);Ca=Aa.parent();if(!Aa.parent().hasClass("tools_flyout")){Na=Aa[0].id.replace("tool_","tools_");jb=Aa.clone().attr("id",Na+"_show").append(a("<div>",{"class":"flyout_arrow_horiz"}));Aa.before(jb);Ca=na(Na,Aa)}var ub=C.getButtonData(Pa.button);if(Pa.isDefault)ba["#"+Na+"_show"]=X.id;ua=fa["#"+Ca[0].id]=[{sel:"#"+ua,fn:X.events.click,
+icon:X.id,key:X.key,isDefault:X.includeWith?X.includeWith.isDefault:0},ub];Na="position"in Pa?Pa.position:"last";ub=Ca.children().length;if(!isNaN(Na)&&Na>=0&&Na<ub)Ca.children().eq(Na).before(Qa);else{Ca.append(Qa);ua.reverse()}}T||Qa.append(qa);X.list||a.each(X.events,function(Cb,Jb){if(Cb=="click")if(X.type=="mode"){X.includeWith?Qa.bind(Cb,Jb):Qa.bind(Cb,function(){ra(Qa)&&Jb()});if(X.key){a(document).bind("keydown",X.key,Jb);X.title&&Qa.attr("title",X.title+" ["+X.key+"]")}}else Qa.bind(Cb,Jb);
+else Qa.bind(Cb,Jb)});Z(fa)});a.each(O,function(){vb(this.elem,this.list,this.callback,{seticon:true})});if(T)H=false;a.svgIcons(T,{w:27,h:27,id_match:false,no_img:!n,fallback:W,placement:ba,callback:function(){w.iconsize&&w.iconsize!="m"&&o();H=true;J()}})}J()});g.textActions.setInputElem(a("#text")[0]);var Ma='<div class="palette_item transparent" data-rgb="none"></div>\t\t\t\t\t\t\t\t<div class="palette_item black" data-rgb="#000000"></div>\t\t\t\t\t\t\t\t<div class="palette_item white" data-rgb="#ffffff"></div>';
+["#444444","#482816","#422C10","#3B2F0E","#32320F","#293414","#1F361B","#153723","#0C372C","#083734","#0E353B","#1A333F","#273141","#332D40","#3E2A3C","#462735","#4B252D","#4D2425","#4C261D","#666666","#845335","#7B572D","#6F5C2A","#62612C","#546433","#46673D","#396849","#306856","#2D6862","#33666C","#426373","#535F75","#645A73","#74556D","#805064","#884D58","#8B4D4B","#894F3F","#999999","#C48157","#B8874D","#A98E49","#97944B","#849854","#729C62","#619E73","#559E84","#529D94","#5B9BA2","#6D97AB",
+"#8391AE","#9A8AAB","#AF84A3","#BF7E96","#C97A86","#CE7975","#CC7C65","#BBBBBB","#FFB27C","#FABA6F","#E6C36A","#CFCA6D","#B8D078","#A0D58A","#8CD79F","#7DD8B5","#7AD6CA","#84D3DB","#9ACEE6","#B6C7EA","#D3BEE7","#EDB6DC","#FFAFCC","#FFAAB8","#FFA9A2","#FFAC8D","#DDDDDD","#FFE7A2","#FFF093","#FFFA8D","#FFFF91","#EEFF9F","#D1FFB4","#B9FFCE","#A8FFE9","#A4FFFF","#B1FFFF","#CBFFFF","#EDFFFF","#FFF5FF","#FFEBFF","#FFE2FF","#FFDCEC","#FFDBD2","#FFDFB8"].forEach(function(h){Ma+='<div class="palette_item" style="background-color: '+
+h+';" data-rgb="'+h+'"></div>'});a("#palette").append(Ma);var Da=a("#tool_angle_indicator");a("#tool_reorient");rotateCursor=function(h){h="rotate("+h+"deg)";Da.css({"-webkit-transform":h,"-moz-transform":h,"-o-transform":h,"-ms-transform":h,transform:h})};var wa=function(h){var m=h.value/100;if(m<0.0010)h.value=0.1;else{h=g.getZoom();var o=K;ja(window,{width:0,height:0,x:(o[0].scrollLeft+o.width()/2)/h,y:(o[0].scrollTop+o.height()/2)/h,zoom:m},true)}};a("#stroke_style").change(function(){g.setStrokeAttr("stroke-dasharray",
+a(this).val());a("#stroke_style_label").html(this.options[this.selectedIndex].text);window.opera&&a("<p/>").hide().appendTo("body").remove()});a("#seg_type").change(function(){g.setSegType(a(this).val());a("#seg_type_label").html(this.options[this.selectedIndex].text)});a("select").change(function(){a(this).blur()});a("#font_family").change(function(){g.setFontFamily(this.value)});a("#text").keyup(function(){g.setTextContent(this.value)});changeAttribute=function(h){var m=h.getAttribute("data-attr"),
+o=h.getAttribute("data-multiplier")||1;o=parseFloat(o);o=h.value*o;if(!svgedit.units.isValidUnit(m,o,Y)){a.alert(uiStrings.notification.invalidAttrValGiven);h.value=Y.getAttribute(m);return false}g.changeSelectedAttributeNoUndo(m,o)};picking=false;a(document).on("mouseup",function(){picking=false});a("#palette").on("mousemove mousedown touchstart touchmove",".palette_item",function(h){h.preventDefault();if(h.type=="mousedown")picking=true;if(picking){var m=a("#tool_stroke").hasClass("active"),o=m?
+"stroke":"fill",u=a(this).attr("data-rgb"),E=null,H=true;if(h.type=="mousedown")H=false;if(u==="transparent"||u==="initial"||u==="#none"){u="none";E=new a.jGraduate.Paint}else E=new a.jGraduate.Paint({alpha:100,solidColor:u.substr(1)});b.paintBox[o].setPaint(E);if(m){g.setColor("stroke",u,H);u!="none"&&g.getStrokeOpacity()!=1&&g.setPaintOpacity("stroke",1)}else{g.setColor("fill",u,H);u!="none"&&g.getFillOpacity()!=1&&g.setPaintOpacity("fill",1)}}}).bind("contextmenu",function(h){h.preventDefault()});
+a("#toggle_stroke_tools").toggle(function(){a(".stroke_tool").css("display","table-cell");a(this).addClass("expanded");Db()},function(){a(".stroke_tool").css("display","none");a(this).removeClass("expanded");Db()});var ra=function(h,m){if(a(h).hasClass("disabled"))return false;if(a(h).parent().hasClass("tools_flyout"))return true;var o=o||"normal";m||a(".tools_flyout").fadeOut(o);a("#styleoverrides").text("");a(".tool_button_current").removeClass("tool_button_current").addClass("tool_button");a(h).addClass("tool_button_current").removeClass("tool_button");
+return true};(function(){var h=null,m=null,o=K[0],u=false,E=false;a("#svgcanvas").on("mousemove mouseup touchend",function(H){if(u!==false){o.scrollLeft-=H.clientX-h;o.scrollTop-=H.clientY-m;h=H.clientX;m=H.clientY;if(H.type==="mouseup"||H.type==="touchend")u=false;return false}}).on("mousedown touchmove",function(H){if(H.button===1||E===true||H.originalEvent.touches&&H.originalEvent.touches.length>=2){u=true;h=H.clientX;m=H.clientY;return false}});a(window).mouseup(function(){u=false});a(document).bind("keydown",
+"space",function(H){H.preventDefault();g.spaceKey=E=true}).bind("keyup","space",function(H){H.preventDefault();g.spaceKey=E=false}).bind("keydown","alt",function(){g.getMode()==="zoom"&&K.addClass("out")}).bind("keyup","alt",function(){g.getMode()==="zoom"&&K.removeClass("out")})})();var va=a(".menu"),kb=function(h){h.target.style.background="#fff";setTimeout(function(){h.target.style.background="#ddd"},50);setTimeout(function(){h.target.style.background="#fff"},150);setTimeout(function(){h.target.style.background=
+"#ddd"},200);setTimeout(function(){h.target.style.background=""},200);setTimeout(function(){a("#menu_bar").removeClass("active")},220);return false};a(".menu_item").on("mousedown touchstart",function(h){kb(h)});a("svg, body").on("mousedown  touchstart",function(h){if(!(h.target.nodeName&&h.target.nodeName.toLowerCase()==="input"))if(!a(h.target).hasClass("menu_title")&&!a(h.target).parent().hasClass("menu_title"))!a(h.target).hasClass("disabled")&&a(h.target).hasClass("menu_item")?kb(h):a("#menu_bar").removeClass("active")});
+a("#workarea").on("mousewheel",function(h,m,o,u){if(h.altKey){h.preventDefault();zoom=parseInt(a("#zoom").val());a("#zoom").val(parseInt(zoom+u*10)).change()}});a(".menu_title").on("mousedown",function(){a("#tools_shapelib").hide();a("#menu_bar").toggleClass("active");va.removeClass("open");a(this).parent().addClass("open")}).on("mouseover",function(){va.removeClass("open");a(this).parent().addClass("open")});b.addDropDown=function(h,m,o){if(a(h).length!=0){var u=a(h).find("button"),E=a(h).find("ul").attr("id",
+a(h)[0].id+"-list");o||a("#option_lists").append(E);var H=false;o&&a(h).addClass("dropup");E.find("li").bind("mouseup",m);a(window).mouseup(function(){if(!H){u.removeClass("down");E.hide()}H=false});u.bind("mousedown",function(){if(u.hasClass("down")){u.removeClass("down");E.hide()}else{u.addClass("down");if(!o){var J=a(h).offset();E.css({top:J.top,left:J.left-110})}E.show();H=true}}).hover(function(){H=true}).mouseout(function(){H=false})}};var vb=function(h,m,o,u){var E=a(h);m=a(m);var H=false,
+J=u.dropUp;J&&a(h).addClass("dropup");m.find("li").bind("mouseup",function(){if(u.seticon){zb("#cur_"+E[0].id,a(this).children());a(this).addClass("current").siblings().removeClass("current")}o.apply(this,arguments)});a(window).mouseup(function(){if(!H){E.removeClass("down");m.hide();m.css({top:0,left:0})}H=false});m.height();a(h).bind("mousedown",function(){var O=a(h).offset();if(J){O.top-=m.height();O.left+=8}else O.top+=a(h).height();a(m).offset(O);if(E.hasClass("down")){E.removeClass("down");
+m.hide();m.css({top:0,left:0})}else{E.addClass("down");m.show();H=true;return false}}).hover(function(){H=true}).mouseout(function(){H=false});u.multiclick&&m.mousedown(function(){H=true})};a("#font_family_dropdown").change(function(){var h=this.options[this.selectedIndex].value,m=this.options[this.selectedIndex].text;a("#preview_font").html(m).css("font-family",h);a("#font_family").val(h).change()});a("div","#position_opts").each(function(){this.addEventListener("mouseup",function(){var h=this.id.replace("tool_pos",
+"").charAt(0);g.alignSelectedElements(h,"page")})});(function(){var h,m=function(){a(h).blur()};a("#svg_editor").find("button, select, input:not(#text)").focus(function(){h=this;N="toolbars";K.mousedown(m)}).blur(function(){N="canvas";K.unbind("mousedown",m);g.getMode()=="textedit"&&a("#text").focus()})})();var cb=function(){ra("#tool_select")&&g.setMode("select")},Ta=function(){ra("#tool_fhpath")&&g.setMode("fhpath")},Va=function(){ra("#tool_line")&&g.setMode("line")},Ga=function(){ra("#tool_rect")&&
+g.setMode("rect")},ta=function(){ra("#tool_ellipse")&&g.setMode("ellipse")},$a=function(){ra("#tool_image")&&g.setMode("image")},Ka=function(){ra("#tool_zoom")&&g.setMode("zoom")},Sa=function(){if(ra("#tool_zoom")){yb();oa()}},Ha=function(){ra("#tool_text")&&g.setMode("text")},db=function(){ra("#tool_path")&&g.setMode("path")},lb=function(){if(Y!=null||V)g.deleteSelectedElements();B.getNodePoint()&&B.deletePathNode()},Ua=function(){if(Y!=null||V){xa(a("#edit_menu"));g.cutSelectedElements()}},Xa=function(){if(Y!=
+null||V){xa(a("#edit_menu"));g.copySelectedElements()}},wb=function(){xa(a("#edit_menu"));var h=g.getZoom(),m=(K[0].scrollLeft+K.width()/2)/h-g.contentW;h=(K[0].scrollTop+K.height()/2)/h-g.contentH;g.pasteElements("point",m,h)},sa=function(){if(Y!=null){xa(a("#object_menu"));g.moveToTopSelectedElement()}},hb=function(){if(Y!=null){xa(a("#object_menu"));g.moveToBottomSelectedElement()}},eb=function(){if(Y!=null){xa(a("#object_menu"));g.moveUpDownSelected("Up")}},sb=function(){if(Y!=null){xa(a("#object_menu"));
+g.moveUpDownSelected("Down")}},ib=function(h){if(Y!=null){xa(a("#object_menu"));g.moveUpDownSelected(h)}},ab=function(){if(Y!=null){g.convertToPath();var h=g.getSelectedElems();g.selectorManager.requestSelector(h[0]).reset(h[0]);g.selectorManager.requestSelector(h[0]).selectorRect.setAttribute("display","none");g.setMode("pathedit");B.toEditMode(h[0]);g.clearSelection();Fa()}},ob=function(){Y!=null&&B.reorient()},pb=function(){if(Y!=null||V)a.prompt(uiStrings.notification.enterNewLinkURL,"http://",
+function(h){h&&g.makeHyperlink(h)})},fb=function(h,m){if(Y!=null||V){if(curConfig.gridSnapping){var o=g.getZoom()*curConfig.snappingStep;h*=o;m*=o}a("input").blur();g.moveSelectedElements(h,m)}},tb=function(){},ia=function(){B.getNodePoint()&&B.clonePathNode()},aa=function(){B.getNodePoint()&&B.deletePathNode()},ka=function(){var h=a("#tool_add_subpath"),m=!h.hasClass("push_button_pressed");m?h.addClass("push_button_pressed").removeClass("tool_button"):h.removeClass("push_button_pressed").addClass("tool_button");
+B.addSubPath(m)},M=function(){B.opencloseSubPath()},P=function(){g.cycleElement(1)},da=function(){g.cycleElement(0)},Ea=function(h,m){if(!(Y==null||V)){h||(m*=-1);var o=a("#angle").val()*1+m;g.setRotationAngle(o);Fa()}},Oa=function(){var h=curConfig.dimensions;a.confirm(uiStrings.notification.QwantToClear,function(m){if(m){oa();g.clear();g.setResolution(h[0],h[1]);G(true);yb();Fa();ca();g.runExtensions("onNewDocument")}})},Wa=function(){g.setBold(!g.getBold());Fa()},Za=function(){g.setItalic(!g.getItalic());
+Fa()},nb=function(){if(!c.pngsave){var h=uiStrings.notification.loadingImage;S=window.open("data:text/html;charset=utf-8,<title>"+h+"</title><h1>"+h+"</h1>")}window.canvg?g.rasterExport():a.getScript("canvg/rgbcolor.js",function(){a.getScript("canvg/canvg.js",function(){g.rasterExport()})})},Ra=function(){g.open()},mb=function(){},xa=function(h){var m=h.prev();m.css({background:"white",color:"black"});setTimeout(function(){m.removeAttr("style")},200)},qb=function(){if(q.getUndoStackSize()>0){xa(a("#edit_menu"));
+q.undo()}},rb=function(){if(q.getRedoStackSize()>0){xa(a("#edit_menu"));q.redo()}},Bb=function(){if(V){xa(a("#object_menu"));g.groupSelectedElements()}else if(Y){xa(a("#object_menu"));g.ungroupSelectedElement()}},Fb=function(){xa(a("#edit_menu"));g.cloneSelectedElements(20,20)},bb=function(){var h=this.id.replace("tool_align","").charAt(0);g.alignSelectedElements(h,a("#align_relative_to").val())},La=function(){var h=document.querySelector("#tool_stroke rect");a("#tool_stroke").toggleClass("active");
+a("#tool_fill").toggleClass("active");var m=document.querySelector("#tool_fill rect"),o=m.getAttribute("fill"),u=h.getAttribute("fill");h=parseFloat(h.getAttribute("stroke-opacity"));if(isNaN(h))h=100;m=parseFloat(m.getAttribute("fill-opacity"));if(isNaN(m))m=100;u=ya(u,h,"stroke");o=ya(o,m,"fill");b.paintBox.fill.setPaint(u,true);b.paintBox.stroke.setPaint(o,true)},yb=function(h){var m=g.getResolution();h=h?m.zoom*h:1;a("#zoom").val(h*100);g.setZoom(h);xb();G(true)},Hb=function(){xa(a("#view_menu"));
+!a("#tool_wireframe").hasClass("push_button_pressed")?a("#tool_wireframe").addClass("push_button_pressed"):a("#tool_wireframe").removeClass("push_button_pressed");K.toggleClass("wireframe");if(!k){var h=a("#wireframe_rules");h.length?h.empty():a('<style id="wireframe_rules"></style>').appendTo("head");xb()}},Gb=function(){xa(a("#view_menu"));var h=!a("#tool_snap").hasClass("push_button_pressed");h?a("#tool_snap").addClass("push_button_pressed"):a("#tool_snap").removeClass("push_button_pressed");curConfig.gridSnapping=
+h},Ib=function(){window.self!=window.top&&top.exit_fullscreen()},Lb=function(){xa(a("#view_menu"));if(a("#tool_rulers").hasClass("push_button_pressed")){a("#tool_rulers").removeClass("push_button_pressed");a("#show_rulers").attr("checked",false);curConfig.showRulers=false}else{a("#tool_rulers").addClass("push_button_pressed");a("#show_rulers").attr("checked",true);curConfig.showRulers=true}a("#rulers").toggle(!!curConfig.showRulers)},xb=function(){if(!k){var h="#workarea.wireframe #svgcontent * { stroke-width: "+
+1/g.getZoom()+"px; }";a("#wireframe_rules").text(K.hasClass("wireframe")?h:"")}},Eb=function(h,m){if(!ea){xa(a("#view_menu"));ea=true;a("#save_output_btns").toggle(!!m);a("#tool_source_back").toggle(!m);var o=ga=g.getSvgString();a("#svg_source_textarea").val(o);a("#svg_source_editor").fadeIn();a("#svg_source_textarea").focus().select()}},Kb=function(){if(ea){if(g.setSvgString(a("#svg_source_textarea").val())){g.clearSelection();Ya();yb();ca()}else a.confirm(uiStrings.notification.QerrorsRevertToSource,
+function(h){if(!h)return false;g.clearSelection();Ya();yb();ca()});oa()}},zb=b.setIcon=function(h,m){var o=typeof m==="string"?a.getSvgIcon(m,true):m.clone();o?a(h).find("img").replaceWith(o):console.log("NOTE: Icon image missing: "+m)},gb;gb=function(){var h=/^(Moz|Webkit|Khtml|O|ms|Icab)(?=[A-Z])/,m=document.getElementsByTagName("script")[0],o;for(o in m.style)if(h.test(o))return o.match(h)[0];if("WebkitOpacity"in m.style)return"Webkit";if("KhtmlOpacity"in m.style)return"Khtml";return""}();var Nb=
+function(h,m){gb.toLowerCase();var o=["top","left","bottom","right"];h.each(function(){for(var u=a(this),E=u.outerWidth()*(m-1),H=u.outerHeight()*(m-1),J=0;J<4;J++){var O=o[J],W=u.data("orig_margin-"+O);if(W==null){W=parseInt(u.css("margin-"+O));u.data("orig_margin-"+O,W)}W=W*m;if(O==="right")W+=E;else if(O==="bottom")W+=H;u.css("margin-"+O,W)}})},Mb=b.setIconSize=function(h,m){if(!(h==w.size&&!m)){var o=a("#tools_top .toolset, #editor_panel > *, #history_panel > *,\t\t\t\t#main_button, #tools_left > *, #path_node_panel > *, #multiselected_panel > *,\t\t\t\t#g_panel > *, #tool_font_size > *, .tools_flyout"),
+u=1;u=typeof h=="number"?h:{s:0.75,m:1,l:1.25,xl:1.5}[h];b.tool_scale=R=u;pa();var E=o.parents(":hidden");E.css("visibility","hidden").show();Nb(o,u);E.css("visibility","visible").hide();o=a("#tool_size_rules");if(o.length)o.empty();else o=a('<style id="tool_size_rules"></style>').appendTo("head");if(h!="m"){var H="";a.each(cssResizeRules,function(J,O){J="#svg_editor "+J.replace(/,/g,", #svg_editor");H+=J+"{";a.each(O,function(W,ba){if(typeof ba==="number")var T=ba*u+"px";else if(ba[h]||ba.all)T=
+ba[h]||ba.all;H+=W+":"+T+";"});H+="}"});E="-"+gb.toLowerCase()+"-";H+="#tools_top .toolset, #editor_panel > *, #history_panel > *,\t\t\t\t#main_button, #tools_left > *, #path_node_panel > *, #multiselected_panel > *,\t\t\t\t#g_panel > *, #tool_font_size > *, .tools_flyout{"+E+"transform: scale("+u+");} #svg_editor div.toolset .toolset {"+E+"transform: scale(1); margin: 1px !important;} #svg_editor .ui-slider {"+E+"transform: scale("+1/u+");}";o.text(H)}pa()}},Ab=function(){a("#dialog_box").hide();
+if(ea){if(ea)ga!==a("#svg_source_textarea").val()?a.confirm(uiStrings.notification.QignoreSourceChanges,function(h){h&&Ya()}):Ya();Db()}else Ba&&g.leaveContext()},Ya=function(){a("#svg_source_editor").hide();ea=false;a("#svg_source_textarea").blur()};a(window).width();a(window).height();var Db=a.noop;a(window).resize(function(){G()});(function(){K.scroll(function(){if(a("#ruler_x").length!=0)a("#ruler_x")[0].scrollLeft=K[0].scrollLeft;if(a("#ruler_y").length!=0)a("#ruler_y")[0].scrollTop=K[0].scrollTop})})();
+a("#url_notice").click(function(){a.alert(this.title)});a("#change_image_url").click(function(){var h=g.getHref(Y);h=h.indexOf("data:")===0?"":h;a.prompt(uiStrings.notification.enterNewImgURL,h,function(m){m&&Ia(m)})});var e=function(h){var m=h[0].id=="stroke_color"?"stroke":"fill",o=h[0].id=="canvas_color";if(o)m="canvas";var u=b.paintBox[m].paint;h=m=="stroke"?"Pick a Stroke Paint and Opacity":"Pick a Fill Paint and Opacity";o=o?{right:175,top:50}:{left:50,bottom:50};a("#color_picker").draggable({cancel:".jGraduate_tabs, .jGraduate_colPick, .jGraduate_gradPick, .jPicker",
+containment:"window"}).removeAttr("style").css(o).jGraduate({paint:u,window:{pickerTitle:h},images:{clientPath:curConfig.jGraduatePath},newstop:"inverse"},function(E){u=new a.jGraduate.Paint(E);b.paintBox[m].setPaint(u);g.setPaint(m,u);a("#color_picker").hide()},function(){a("#color_picker").hide()})};d=function(h,m){var o=document.getElementById("canvas_background"),u={color:"fff",opacity:1};if(m=="stroke")u=curConfig.initStroke;if(m=="fill")u=curConfig.initFill;if(m=="canvas"&&o)if(o=o.getAttribute("fill").match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/))u=
+{color:("0"+parseInt(o[1],10).toString(16)).slice(-2)+("0"+parseInt(o[2],10).toString(16)).slice(-2)+("0"+parseInt(o[3],10).toString(16)).slice(-2),opacity:1};o=(new DOMParser).parseFromString('<svg xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"\t\t\t\t\tfill="#'+u.color+'" opacity="'+u.opacity+'"/>\t\t\t\t\t<defs><linearGradient id="gradbox_"/></defs></svg>',"text/xml").documentElement;o=a(h)[0].appendChild(document.importNode(o,true));m==="canvas"?o.setAttribute("width",60.5):
+o.setAttribute("width","100%");this.rect=o.firstChild;this.defs=o.getElementsByTagName("defs")[0];this.grad=this.defs.firstChild;this.paint=new a.jGraduate.Paint({solidColor:u.color});this.type=m;this.setPaint=function(E,H){this.paint=E;var J="none",O=E.type,W=E.alpha/100;switch(O){case "solidColor":J=E[O]=="none"||E[O]=="one"?"none":"#"+E[O];break;case "linearGradient":case "radialGradient":this.defs.removeChild(this.grad);this.grad=this.defs.appendChild(E[O]);J="url(#"+(this.grad.id="gradbox_"+
+this.type)+")"}this.rect.setAttribute("fill",J);this.rect.setAttribute("opacity",W);if(this.type=="canvas")if(O=document.getElementById("canvas_background")){za=g.getResolution();O.setAttribute("x",-1);O.setAttribute("y",-1);O.setAttribute("width",za.w+2);O.setAttribute("height",za.h+2);J.indexOf("url")==-1&&O.setAttribute("fill",J)}else Ja(J);if(H){g.setColor(this.type,J,true);g.setPaintOpacity(this.type,W,true)}};this.update=function(E){if(Y){var H=this.type;switch(Y.tagName){case "use":case "image":case "foreignObject":return;
+case "g":case "a":for(var J=null,O=Y.getElementsByTagName("*"),W=0,ba=O.length;W<ba;W++){var T=O[W].getAttribute(H);if(W===0)J=T;else if(J!==T){J=null;break}}if(J===null){O=null;return}O=J;J=1;break;default:J=parseFloat(Y.getAttribute(H+"-opacity"));if(isNaN(J))J=1;O=H==="fill"?"black":"none";O=Y.getAttribute(H)||O}if(E){g.setColor(H,O,true);g.setPaintOpacity(H,J,true)}J*=100;this.setPaint(ya(O,J,H))}};this.prep=function(){switch(this.paint.type){case "linearGradient":case "radialGradient":var E=
+new a.jGraduate.Paint({copy:this.paint});g.setPaint(m,E)}}};b.paintBox.fill=new d("#fill_color","fill");b.paintBox.stroke=new d("#stroke_color","stroke");b.paintBox.canvas=new d("#canvas_color","canvas");a("#stroke_width").val(curConfig.initStroke.width);a("#group_opacity").val(curConfig.initOpacity*100);d=b.paintBox.fill.rect.cloneNode(false);d.setAttribute("style","vector-effect:non-scaling-stroke");var k=d.style.vectorEffect==="non-scaling-stroke";d.removeAttribute("style");d=b.paintBox.fill.rect.ownerDocument.createElementNS("http://www.w3.org/2000/svg",
+"feGaussianBlur");typeof d.stdDeviationX==="undefined"&&a("#tool_blur").hide();a(d).remove();setTimeout(function(){g.embedImage("images/placeholder.svg",function(h){if(!h){a("#image_save_opts [value=embed]").attr("disabled","disabled");a("#image_save_opts input").val(["ref"]);w.img_save="ref";a("#image_opt_embed").css("color","#666").attr("title",uiStrings.notification.featNotSupported)}})},1E3);a("#tool_fill").click(function(){if(a("#tool_fill").hasClass("active"))e(a("#fill_color"));else{a("#tool_fill").addClass("active");
+a("#tool_stroke").removeClass("active")}});a("#tool_stroke").on("click",function(){if(a("#tool_stroke").hasClass("active"))e(a("#stroke_color"));else{a("#tool_stroke").addClass("active");a("#tool_fill").removeClass("active")}});a("#tool_canvas").on("click touchstart",function(){e(a("#canvas_color"))});a("#tool_stroke").on("touchstart",function(){a("#tool_stroke").addClass("active");a("#tool_fill").removeClass("active");e(a("#stroke_color"))});a("#tool_fill").on("touchstart",function(){a("#tool_fill").addClass("active");
+a("#tool_stroke").removeClass("active");e(a("#fill_color"))});a("#zoom_select").on("change",function(){var h=this.options[this.selectedIndex].text;h=h.split("%")[0];a("#zoom").val(h).trigger("change")});a(".push_button").mousedown(function(){a(this).hasClass("disabled")||a(this).addClass("push_button_pressed").removeClass("push_button")}).mouseout(function(){a(this).removeClass("push_button_pressed").addClass("push_button")}).mouseup(function(){a(this).removeClass("push_button_pressed").addClass("push_button")});
+a(window).bind("load resize",function(){K.css("line-height",K.height()+"px")});var l=function(){var h=a("#canvas_width"),m=a("#canvas_height"),o=h.val(),u=m.val();if(o!="fit"&&!svgedit.units.isValidUnit("width",o)){a.alert(uiStrings.notification.invalidAttrValGiven);h.parent().addClass("error");return false}h.parent().removeClass("error");if(u!="fit"&&!svgedit.units.isValidUnit("height",u)){a.alert(uiStrings.notification.invalidAttrValGiven);m.parent().addClass("error");return false}m.parent().removeClass("error");
+if(!g.setResolution(o,u)){a.alert(uiStrings.notification.noContentToFitTo);o=g.getResolution();h.val(o.w);m.val(o.h);return false}G()};a("#resolution").change(function(){var h=a("#canvas_width")[0],m=a("#canvas_height")[0];if(this.selectedIndex)if(this.value=="content"){h.value="fit";m.value="fit";l();var o=g.getResolution();h.value=o.w;m.value=o.h}else{var u=this.value.split("x");u[0]=parseInt(u[0]);u[1]=parseInt(u[1]);var E=u[0]-h.value,H=u[1]-m.value,J=Date.now(),O=function(W){W=(W-J)/1E3;W=Math.pow(W-
+1,3)+1;h.value=(u[0]-E+W*E).toFixed(0);m.value=(u[1]-H+W*H).toFixed(0);l();if(W>=1){W=g.getResolution();a("#canvas_width").val(W.w.toFixed());a("#canvas_height").val(W.h.toFixed());a("#resolution_label").html("<div class='pull'>"+W.w+"<span>\u00d7</span></br>"+W.h+"</div>")}else requestAnimationFrame(O)};O(Date.now())}else{a("#resolution_label").html("Custom");h.removeAttribute("readonly");h.focus();h.select();if(h.value=="fit"){h.value=100;m.value=100}}});a("#zoom").change(function(){wa(this)});
+a("input,select").attr("autocomplete","off");var C=function(){var h=[{sel:"#tool_select",fn:cb,evt:"click",key:["V",true]},{sel:"#tool_fhpath",fn:Ta,evt:"click",key:["Q",true]},{sel:"#tool_line",fn:Va,evt:"click",key:["L",true]},{sel:"#tool_rect",fn:Ga,evt:"click",key:["R",true],icon:"rect"},{sel:"#tool_ellipse",fn:ta,evt:"mouseup",key:["C",true],icon:"ellipse"},{sel:"#tool_path",fn:db,evt:"click",key:["P",true]},{sel:"#tool_text",fn:Ha,evt:"click",key:["T",true]},{sel:"#tool_image",fn:$a,evt:"mouseup"},
+{sel:"#tool_zoom",fn:Ka,evt:"mouseup",key:["Z",true]},{sel:"#tool_clear",fn:Oa,evt:"mouseup",key:[v+"N",true]},{sel:"#tool_save",fn:function(){if(ea)Kb();else{xa(a("#file_menu"));g.save({images:w.img_save,round_digits:6})}},evt:"mouseup",key:[v+"S",true]},{sel:"#tool_export",fn:nb,evt:"mouseup"},{sel:"#tool_open",fn:Ra,evt:"mouseup"},{sel:"#tool_import",fn:mb,evt:"mouseup"},{sel:"#tool_source",fn:Eb,evt:"click",key:[v+"U",true]},{sel:"#tool_wireframe",fn:Hb,evt:"click"},{sel:"#tool_snap",fn:Gb,evt:"click"},
+{sel:"#tool_rulers",fn:Lb,evt:"click"},{sel:"#tool_source_cancel,#svg_source_overlay,#tool_docprops_cancel,#tool_prefs_cancel",fn:Ab,evt:"click",key:["esc",false,false],hidekey:true},{sel:"#tool_source_save",fn:Kb,evt:"click"},{sel:"#tool_delete,#tool_delete_multi",fn:lb,evt:"click",key:["del/backspace",true]},{sel:"#tool_reorient",fn:ob,evt:"click"},{sel:"#tool_node_link",fn:tb,evt:"change"},{sel:"#tool_node_clone",fn:ia,evt:"click"},{sel:"#tool_node_delete",fn:aa,evt:"click"},{sel:"#tool_openclose_path",
+fn:M,evt:"click"},{sel:"#tool_add_subpath",fn:ka,evt:"click"},{sel:"#tool_move_top",fn:sa,evt:"click",key:v+"shift+up"},{sel:"#tool_move_bottom",fn:hb,evt:"click",key:v+"shift+down"},{sel:"#tool_move_up",fn:eb,evt:"click",key:[v+"up",true]},{sel:"#tool_move_down",fn:sb,evt:"click",key:[v+"down",true]},{sel:"#tool_topath",fn:ab,evt:"click"},{sel:"#tool_make_link,#tool_make_link_multi",fn:pb,evt:"click"},{sel:"#tool_clone,#tool_clone_multi",fn:Fb,evt:"click",key:[v+"D",true]},{sel:"#tool_group",fn:Bb,
+evt:"click",key:[v+"G",true]},{sel:"#tool_ungroup",fn:Bb,evt:"click",key:v+"shift+G"},{sel:"#tool_unlink_use",fn:Bb,evt:"click"},{sel:"[id^=tool_align]",fn:bb,evt:"click"},{sel:"#tool_undo",fn:qb,evt:"click",key:v+"z"},{sel:"#tool_redo",fn:rb,evt:"click",key:["y",true]},{sel:"#tool_cut",fn:Ua,evt:"click",key:[v+"x",true]},{sel:"#tool_copy",fn:Xa,evt:"click",key:v+"c"},{sel:"#tool_paste",fn:wb,evt:"click",key:v+"v"},{sel:"#tool_switch",fn:La,evt:"click",key:["x",true]},{sel:"#tool_bold",fn:Wa,evt:"mousedown",
+key:[v+"B",true]},{sel:"#tool_italic",fn:Za,evt:"mousedown",key:[v+"I",true]},{sel:"#copy_save_done",fn:Ab,evt:"click"},{key:"ctrl+left",fn:function(){Ea(0,1)}},{key:"ctrl+right",fn:function(){Ea(1,1)}},{key:"ctrl+shift+left",fn:function(){Ea(0,5)}},{key:"ctrl+shift+right",fn:function(){Ea(1,5)}},{key:"shift+O",fn:da},{key:"shift+P",fn:P},{key:[v+"+",true],fn:function(){yb(2)}},{key:[v+"-",true],fn:function(){yb(0.5)}},{key:["up",true],fn:function(){fb(0,-1)}},{key:["down",true],fn:function(){fb(0,
+1)}},{key:["left",true],fn:function(){fb(-1,0)}},{key:["right",true],fn:function(){fb(1,0)}},{key:"shift+up",fn:function(){fb(0,-10)}},{key:"shift+down",fn:function(){fb(0,10)}},{key:"shift+left",fn:function(){fb(-10,0)}},{key:"shift+right",fn:function(){fb(10,0)}},{key:["alt+up",true],fn:function(){g.cloneSelectedElements(0,-1)}},{key:["alt+down",true],fn:function(){g.cloneSelectedElements(0,1)}},{key:["alt+left",true],fn:function(){g.cloneSelectedElements(-1,0)}},{key:["alt+right",true],fn:function(){g.cloneSelectedElements(1,
+0)}},{key:["alt+shift+up",true],fn:function(){g.cloneSelectedElements(0,-10)}},{key:["alt+shift+down",true],fn:function(){g.cloneSelectedElements(0,10)}},{key:["alt+shift+left",true],fn:function(){g.cloneSelectedElements(-10,0)}},{key:["alt+shift+right",true],fn:function(){g.cloneSelectedElements(10,0)}},{key:v+"A",fn:function(){g.selectAllInCurrentLayer()}},{key:"I",fn:function(){var o=a(".tool_button_current");if(o.length&&o[0].id!=="tool_eyedropper"){o.removeClass("tool_button_current").addClass("tool_button");
+a("#tool_eyedropper").addClass("tool_button_current").removeClass("tool_button")}g.setMode("eyedropper")}},{key:v+"shift+z",fn:rb},{key:"esc",fn:Ib}],m={"4/Shift+4":"#tools_rect_show","5/Shift+5":"#tools_ellipse_show"};return{setAll:function(){var o={};a.each(h,function(u,E){if(E.sel){var H=a(E.sel);if(H.length==0)return true;if(E.evt){if(svgedit.browser.isTouch()&&E.evt==="click")E.evt="mousedown";H[E.evt](E.fn)}if(E.parent&&a(E.parent+"_show").length!=0){var J=a(E.parent);J.length||(J=na(E.parent.substr(1)));
+J.append(H);a.isArray(o[E.parent])||(o[E.parent]=[]);o[E.parent].push(E)}}if(E.key){var O=E.fn,W=false;if(a.isArray(E.key)){J=E.key[0];if(E.key.length>1)W=E.key[1]}else J=E.key;J+="";svgedit.browser.isMac&&J.indexOf("+")!=-1&&J.split("+")[0]=="ctrl"&&J.replace("ctrl","cmd");a.each(J.split("/"),function(T,fa){a(document).bind("keydown",fa,function(ha){O();W&&ha.preventDefault();return false})});if(E.sel&&!E.hidekey&&H.attr("title")){var ba=H.attr("title").split("[")[0]+" ("+J+")";m[J]=E.sel;H.parents("#main_menu").length||
+H.attr("title",ba)}}});Z(o);a(window).bind("keydown","tab",function(u){if(N==="canvas"){u.preventDefault();P()}}).bind("keydown","shift+tab",function(u){if(N==="canvas"){u.preventDefault();da()}});a("#tool_zoom").dblclick(Sa)},setTitles:function(){a.each(m,function(o,u){var E=a(u).parents("#main_menu").length;a(u).each(function(){var H=E?a(this).text().split(" [")[0]:this.title.split(" [")[0],J="";a.each(o.split("/"),function(O,W){var ba=W.split("+"),T="";if(ba.length>1){T=ba[0]+"+";W=ba[1]}J+=(O?
+"/":"")+T+(uiStrings["key_"+W]||W)});if(E)this.lastChild.textContent=H+" ["+J+"]";else this.title=H+" ["+J+"]"})})},getButtonData:function(o){var u;a.each(h,function(E,H){if(H.sel===o)u=H});return u}}}();C.setAll();b.ready(function(){var h=curConfig.initTool,m=a("#tools_left, #svg_editor .tools_flyout"),o=m.find("#tool_"+h);h=m.find("#"+h);(o.length?o:h.length?h:a("#tool_select")).click().mouseup();curConfig.wireframe&&a("#tool_wireframe").click();curConfig.showlayers&&toggleSidePanel();a("#rulers").toggle(!!curConfig.showRulers)});
+a("#canvas_height").dragInput({min:10,max:null,step:10,callback:l,cursor:false,dragAdjust:0.1});a("#canvas_width").dragInput({min:10,max:null,step:10,callback:l,cursor:false,dragAdjust:0.1});a("#rect_width").dragInput({min:1,max:null,step:1,callback:changeAttribute,cursor:false});a("#rect_height").dragInput({min:1,max:null,step:1,callback:changeAttribute,cursor:false});a("#ellipse_cx").dragInput({min:1,max:null,step:1,callback:changeAttribute,cursor:false});a("#ellipse_cy").dragInput({min:1,max:null,
+step:1,callback:changeAttribute,cursor:false});a("#ellipse_rx").dragInput({min:1,max:null,step:1,callback:changeAttribute,cursor:false});a("#ellipse_ry").dragInput({min:1,max:null,step:1,callback:changeAttribute,cursor:false});a("#image_height").dragInput({min:1,max:null,step:1,callback:changeAttribute,cursor:false});a("#circle_cx").dragInput({min:1,max:null,step:1,callback:changeAttribute,cursor:false});a("#circle_cy").dragInput({min:1,max:null,step:1,callback:changeAttribute,cursor:false});a("#circle_r").dragInput({min:1,
+max:null,step:1,callback:changeAttribute,cursor:false});a("#image_height").dragInput({min:0,max:null,step:1,callback:changeAttribute,cursor:false});a("#selected_x").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#selected_y").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#path_node_x").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#path_node_y").dragInput({min:null,max:null,step:1,callback:changeAttribute,
+cursor:false});a("#image_width").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#line_x1").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#line_x2").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#line_y1").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#line_y2").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#path_x").dragInput({min:null,
+max:null,step:1,callback:changeAttribute,cursor:false});a("#path_y").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#rect_x").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#rect_y").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#g_x").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#g_y").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#image_x").dragInput({min:null,
+max:null,step:1,callback:changeAttribute,cursor:false});a("#text_y").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#text_x").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#image_y").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#rect_rx").dragInput({min:0,max:100,step:1,callback:changeAttribute,cursor:true});a("#stroke_width").dragInput({min:0,max:99,step:1,callback:function(h){var m=h.value;if(m==0&&
+Y&&["line","polyline"].indexOf(Y.nodeName)>=0)m=h.value=1;g.setStrokeWidth(m)},cursor:true,smallStep:0.1,start:1.5});a("#angle").dragInput({min:-180,max:180,step:1,callback:function(h){g.setRotationAngle(h.value,true);rotateCursor(h.value);a("#tool_reorient").toggleClass("disabled",h.value==0)},cursor:false,dragAdjust:0.5});a("#font_size").dragInput({min:1,max:250,step:1,callback:function(h){g.setFontSize(h.value)},cursor:true,stepfunc:function(h,m){var o=h.value-0,u=o+m,E=u>=o;if(m===0)return o;
+return o>=24?E?Math.round(o*1.1):Math.round(o/1.1):o<=1?E?o*2:o/2:u},dragAdjust:0.15});a("#group_opacity").dragInput({min:0,max:100,step:5,callback:changeAttribute,cursor:true,start:100});a("#blur").dragInput({min:0,max:10,step:0.1,callback:function(h,m){val=h.value;a("#blur").val(val);m?g.setBlur(val,true):g.setBlurNoUndo(val)},cursor:true,start:0});a("#zoom").val(g.getZoom()*100);a("#workarea").contextMenu({menu:"cmenu_canvas",inSpeed:0},function(h){switch(h){case "delete":lb();break;case "cut":Ua();
+break;case "copy":Xa();break;case "paste":g.pasteElements();break;case "paste_in_place":g.pasteElements("in_place");break;case "group":g.groupSelectedElements();break;case "ungroup":g.ungroupSelectedElement();break;case "move_front":sa();break;case "move_up":ib("Up");break;case "move_down":ib("Down");break;case "move_back":hb();break;default:svgedit.contextmenu&&svgedit.contextmenu.hasCustomHandler(h)&&svgedit.contextmenu.getCustomHandler(h).call()}});a(".contextMenu li").mousedown(function(h){h.preventDefault()});
+a("#cmenu_canvas li").disableContextMenu();I.enableContextMenuItems("#delete,#cut,#copy");window.onbeforeunload=function(){if(q.getUndoStackSize()===0)b.show_save_warning=false;if(!curConfig.no_save_warning&&b.show_save_warning)return uiStrings.notification.unsavedChanges};b.openPrep=function(h){a("#main_menu").hide();q.getUndoStackSize()===0?h(true):a.confirm(uiStrings.notification.QwantToOpen,h)};if(window.FileReader){d=function(h){h.stopPropagation();h.preventDefault();a("#workarea").removeAttr("style");
+a("#main_menu").hide();var m=null;if(m=h.type=="drop"?h.dataTransfer.files[0]:this.files[0])if(m.type.indexOf("image")!=-1)if(m.type.indexOf("svg")!=-1){h=new FileReader;h.onloadend=function(o){g.importSvgString(o.target.result,true);g.ungroupSelectedElement();g.ungroupSelectedElement();g.groupSelectedElements();g.alignSelectedElements("m","page");g.alignSelectedElements("c","page")};h.readAsText(m)}else{h=new FileReader;h.onloadend=function(o){insertNewImage=function(J,O){var W=g.addSvgElementFromJson({element:"image",
+attr:{x:0,y:0,width:J,height:O,id:g.getNextId(),style:"pointer-events:inherit"}});g.setHref(W,o.target.result);g.selectOnly([W]);g.alignSelectedElements("m","page");g.alignSelectedElements("c","page");Fa()};var u=100,E=100,H=new Image;H.src=o.target.result;document.body.appendChild(H);H.onload=function(){u=H.offsetWidth;E=H.offsetHeight;insertNewImage(u,E);document.body.removeChild(H)}};h.readAsDataURL(m)}};K=a("#workarea");K[0].addEventListener("dragenter",function(h){h.stopPropagation();h.preventDefault();
+K.css({"-webkit-transform":"scale3d(1.1,1.1,1)","-moz-transform":"scale3d(1.1,1.1,1)","-o-transform":"scale(1.1)","-ms-transform":"scale3d(1.1,1.1,1)",transform:"scale3d(1.1,1.1,1)"})},false);K[0].addEventListener("dragover",function(h){h.stopPropagation();h.preventDefault()},false);K[0].addEventListener("dragleave",function(h){K.removeAttr("style");h.stopPropagation();h.preventDefault()},false);K[0].addEventListener("drop",d,false);var A=a('<input type="file">').change(function(){var h=this;b.openPrep(function(m){if(m){g.clear();
+if(h.files.length==1){m=new FileReader;m.onloadend=function(o){s(o.target.result);G()};m.readAsText(h.files[0])}}})});a("#tool_open").show().prepend(A);d=a('<input type="file">').change(d);a("#tool_import").show().prepend(d)}var G=b.updateCanvas=function(h,m){var o=K.width(),u=K.height(),E=o,H=u,J=g.getZoom(),O=K,W=a("#svgcanvas"),ba={x:O[0].scrollLeft+E/2,y:O[0].scrollTop+H/2},T=curConfig.canvas_expansion;o=Math.max(E,g.contentW*J*T);u=Math.max(H,g.contentH*J*T);o==E&&u==H?K.css("overflow","hidden"):
+K.css("overflow","scroll");T=W.height()/2;var fa=W.width()/2;W.width(o).height(u);var ha=u/2,X=o/2,qa=g.updateCanvas(o,u),ua=X/fa;o=o/2-E/2;u=u/2-H/2;if(m){m.x+=qa.x;m.y+=qa.y}else m={x:X+(ba.x-fa)*ua,y:ha+(ba.y-T)*ua};if(h)if(g.contentW>O.width()){K[0].scrollLeft=qa.x-10;K[0].scrollTop=qa.y-10}else{O[0].scrollLeft=o;O[0].scrollTop=u}else{O[0].scrollLeft=m.x-E/2;O[0].scrollTop=m.y-H/2}if(curConfig.showRulers){E=W;J=J;document.getElementById("workarea");document.getElementById("title_show");J||(J=
+g.getZoom());E||(E=a("#svgcanvas"));H=g.getContentElem();O=svgedit.units.getTypeMap()[curConfig.baseUnit];for(W=0;W<2;W++){fa=(ba=W===0)?"x":"y";ua=ba?"width":"height";T=H.getAttribute(fa)-0;fa=a("#ruler_"+fa+" canvas:first");$hcanv=fa.clone();fa.replaceWith($hcanv);o=$hcanv[0];ha=fa=E[ua]()*2;o.parentNode.style[ua]=ha+"px";X=0;var Aa;qa=o.getContext("2d");qa.fillStyle="rgb(200,0,0)";qa.fillRect(0,0,o.width,o.height);$hcanv.siblings().remove();if(fa>=3E4){var Ca=parseInt(fa/3E4)+1;Aa=Array(Ca);Aa[0]=
+qa;for(u=1;u<Ca;u++){o[ua]=3E4;var Pa=o.cloneNode(true);o.parentNode.appendChild(Pa);Aa[u]=Pa.getContext("2d")}Pa[ua]=fa%3E4;fa=3E4}o[ua]=fa;ua=O*J;var Qa=50/ua;o=1;for(u=0;u<D.length;u++){o=Ca=D[u];if(Qa<=Ca)break}Qa=o*ua;qa.font="normal 9px 'Lucida Grande', sans-serif";qa.fillStyle="#777";for(var Na=T/ua%o*ua,jb=Na-Qa;Na<ha;Na+=Qa){jb+=Qa;u=Math.round(Na)+0.5;if(ba){qa.moveTo(u,15);qa.lineTo(u,0)}else{qa.moveTo(15,u);qa.lineTo(0,u)}Ca=(jb-T)/ua;if(o>=1)u=Math.round(Ca);else{u=(o+"").split(".")[1].length;
+u=Ca.toFixed(u)-0}if(u!==0&&u!==1E3&&u%1E3===0)u=u/1E3+"K";if(ba){qa.fillText(u,Na+2,8);qa.fillStyle="#777"}else{Ca=(u+"").split("");for(u=0;u<Ca.length;u++){qa.fillText(Ca[u],1,Na+9+u*9);qa.fillStyle="#777"}}Ca=Qa/10;for(u=1;u<10;u++){var ub=Math.round(Na+Ca*u)+0.5;if(Aa&&ub>fa){X++;qa.stroke();if(X>=Aa.length){u=10;Na=ha;continue}qa=Aa[X];Na-=3E4;ub=Math.round(Na+Ca*u)+0.5}var Cb=u%2?12:10;if(ba){qa.moveTo(ub,15);qa.lineTo(ub,Cb)}else{qa.moveTo(15,ub);qa.lineTo(Cb,ub)}}}qa.strokeStyle="#666";qa.stroke()}K.scroll()}},
+D=[];for(d=0.1;d<1E5;d*=10){D.push(1*d);D.push(2*d);D.push(5*d)}G(true);try{var z=function(h){if(window.JSON&&JSON.stringify)return JSON.stringify(h);var m=arguments.callee;if(typeof h=="boolean"||typeof h=="number")return h+"";else if(typeof h=="string")return'"'+h.replace(/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,function(E){return"\\u"+("0000"+E.charCodeAt(0).toString(16)).slice(-4)})+'"';else if(h.length){for(var o=
+0;o<h.length;o++)h[o]=m(h[o]);return"["+h.join(",")+"]"}else{o=[];for(var u in h)o.push(m(u)+":"+m(h[u]));return"{"+o.join(",")+"}"}};window.addEventListener("message",function(h){var m=parseInt(h.data.substr(0,h.data.indexOf(";")));try{h.source.postMessage("SVGe"+m+";"+z(eval(h.data)),"*")}catch(o){h.source.postMessage("SVGe"+m+";error:"+o.message,"*")}},false)}catch(F){window.embed_error=F}a(function(){window.svgCanvas=g;g.ready=methodDraw.ready});b.setLang=function(h,m){a.pref("lang",h);a("#lang_select").val(h);
+if(m){g.runExtensions("langChanged",h);ma();a.each({"#stroke_color":"#tool_stroke .icon_label, #tool_stroke .color_block","#fill_color":"#tool_fill label, #tool_fill .color_block","#linejoin_miter":"#cur_linejoin","#linecap_butt":"#cur_linecap"},function(o,u){a(u).attr("title",a(o)[0].title)});a("#multiselected_panel div[id^=tool_align]").each(function(){a("#tool_pos"+this.id.substr(10))[0].title=this.title})}}};var f=[];b.ready=function(d){p?d():f.push(d)};b.runCallbacks=function(){a.each(f,function(){this()});
+p=true};b.loadFromString=function(d){b.ready(function(){s(d)})};b.loadFromURL=function(d,n){n||(n={});var v=n.cache,B=n.callback;b.ready(function(){a.ajax({url:d,dataType:"text",cache:!!v,success:function(q){s(q,B)},error:function(q,L,Q){q.status!=404&&q.responseText?s(q.responseText,B):a.alert(uiStrings.notification.URLloadFail+": \n"+Q+"",B)}})})};b.loadFromDataURI=function(d){b.ready(function(){var n=d.substring(26);s(svgedit.utilities.decode64(n))})};b.addExtension=function(){var d=arguments;
+a(function(){g&&g.addExtension.apply(this,d)})};return b}(jQuery);$(methodDraw.init)})();$.fn.dragInput=function(a){return this.each(function(){this.repeating=false;this.dragCfg={min:a&&!isNaN(parseFloat(a.min))?Number(a.min):null,max:a&&!isNaN(parseFloat(a.max))?Number(a.max):null,step:a&&Number(a.step)?a.step:1,stepfunc:a&&a.stepfunc?a.stepfunc:false,dragAdjust:a&&a.dragAdjust?a.dragAdjust:1,height:70,cursor:a&&a.cursor?Boolean(a.cursor):false,start:a&&a.start?Number(a.start):0,_btn_width:20,_direction:null,_delay:null,_repeat:null,callback:a&&a.callback?a.callback:null};this.dragCfg.smallStep=
+a&&a.smallStep?a.smallStep:this.dragCfg.step/2;var s=this.dragCfg.dragAdjust,g=$(this).parent(),b=$(this),p=this.dragCfg.height,w=this.dragCfg.min,c=this.dragCfg.max,f=this.dragCfg.step,d=c-w>0?(c-w)/f:200,n=d/p*f,v=0,B=this.getAttribute("data-attr"),q=methodDraw.canvas,L=svgedit.browser.isTouch(),Q=true,K=d&&this.dragCfg.cursor?$("<div class='draginput_cursor' />").appendTo(g):false;b.attr("readonly","readonly");K&&!isNaN(this.dragCfg.start)&&K.css("top",this.dragCfg.start*-1/n+p);this.adjustValue=
+function(I,S){var R;I=parseFloat(I);R=isNaN(this.value)?this.dragCfg.reset:$.isFunction(this.dragCfg.stepfunc)?this.dragCfg.stepfunc(this,I):Number((Number(this.value)+Number(I)).toFixed(5));if(c!==null)R=Math.min(R,c);if(w!==null)R=Math.max(R,w);K&&this.updateCursor(R);this.value=R;g.attr("data-value",R);$.isFunction(this.dragCfg.callback)&&this.dragCfg.callback(this,S)};g.toggleClass("draginput",g.is("label"));this.move=function(I,S,R){if(L)I=I.originalEvent.touches[0];if(v===0)v=S;S=(I.pageY-v)*
+-1;v=I.pageY;R=S*n*s;this.adjustValue(R.toFixed(f<1?1:0))};this.stop=function(){var I=q.getSelectedElems();$("body").removeClass("dragging");g.removeClass("active");Q=true;$(window).unbind("mousemove.draginput touchmove.draginput mouseup.draginput touchend.draginput");v=0;if(I[0]){I=q.undoMgr.finishUndoableChange();I.isEmpty()||q.undoMgr.addCommandToHistory(I)}this.adjustValue(0,Q)};this.updateCursor=function(){var I=parseFloat(this.value)*-1/n+p;K.css("top",I)};this.launch=function(I){var S=q.getSelectedElems();
+if(L)I=I.originalEvent.touches[0];var R=I.pageY,N=this.value,ga=this;q.undoMgr.beginUndoableChange(B,S);$("body").addClass("dragging");g.addClass("active");$(window).bind("mousemove.draginput touchmove.draginput",function(oa){ga.move(oa,R,parseFloat(N))});$(window).bind("mouseup.draginput touchend.draginput",function(){ga.stop()})};$(this).attr("readonly","readonly").attr("data-scale",n).attr("data-domain",p).attr("data-cursor",K!=false).bind("mousedown touchstart",function(I){this.blur();this.launch(I)}).bind("dblclick taphold",
+function(){this.removeAttribute("readonly","readonly");this.focus();this.select()}).keydown(function(I){switch(I.keyCode){case 13:this.adjustValue(0);this.blur()}}).focus(function(){this.getAttribute("readonly")==="readonly"&&this.blur()}).blur(function(){this.setAttribute("readonly","readonly")}).bind("mousewheel",function(I,S,R,N){S=q.getSelectedElems();Q&&q.undoMgr.beginUndoableChange(B,S);Q=false;clearTimeout(window.undoTimeout);window.undoTimeout=setTimeout(function(){ga.stop()},200);var ga=
+this;if(N>0)this.adjustValue(this.dragCfg.step);else N<0&&this.adjustValue(-this.dragCfg.step);I.preventDefault()})})};$.fn.dragInput.updateCursor=function(a){var s=parseFloat(a.value),g=parseFloat(a.getAttribute("data-scale")),b=parseFloat(a.getAttribute("data-domain"));s=s*-1/g+b+"px";a=a.parentNode.lastChild;if(a.className=="draginput_cursor")a.style.top=s};svgedit=svgedit||{};
+(function(){var a=this;if(!svgedit.contextmenu)svgedit.contextmenu={};a.contextMenuExtensions={};methodDraw.ready(function(){for(menuItem in contextMenuExtensions){var s=contextMenuExtensions[menuItem];Object.keys(a.contextMenuExtensions).length==0&&$("#cmenu_canvas").append("<li class='separator'>");var g=s.shortcut||"";$("#cmenu_canvas").append("<li class='disabled'><a href='#"+s.id+"'>"+s.label+"<span class='shortcut'>"+g+"</span></a></li>")}});svgedit.contextmenu.resetCustomMenus=function(){a.contextMenuExtensions=
+{}};svgedit.contextmenu.add=function(s){if(s&&s.id&&s.label&&s.action&&typeof s.action=="function")if(s.id in a.contextMenuExtensions)console.error('Cannot add extension "'+s.id+'", an extension by that name already exists"');else{console.log("Registed contextmenu item: {id:"+s.id+", label:"+s.label+"}");a.contextMenuExtensions[s.id]=s}else console.error("Menu items must be defined and have at least properties: id, label, action, where action must be a function")};svgedit.contextmenu.hasCustomHandler=
+function(s){return a.contextMenuExtensions[s]&&true};svgedit.contextmenu.getCustomHandler=function(s){return a.contextMenuExtensions[s].action}})();(function(a,s){function g(p){return!a(p).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}function b(p,w){var c=p.nodeName.toLowerCase();if("area"===c){c=p.parentNode;var f=c.name;if(!p.href||!f||c.nodeName.toLowerCase()!=="map")return false;c=a("img[usemap=#"+f+"]")[0];return!!c&&g(c)}return(/input|select|textarea|button|object/.test(c)?!p.disabled:"a"==c?p.href||w:w)&&g(p)}a.ui=a.ui||{};a.ui.version||(a.extend(a.ui,{version:"1.8.17",
+keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,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,WINDOWS:91}}),a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(p,w){return typeof p=="number"?this.each(function(){var c=
+this;setTimeout(function(){a(c).focus();w&&w.call(c)},p)}):this._focus.apply(this,arguments)},scrollParent:function(){var p;a.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?p=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(a.curCSS(this,"position",1))&&/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0):p=this.parents().filter(function(){return/(auto|scroll)/.test(a.curCSS(this,
+"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!p.length?a(document):p},zIndex:function(p){if(p!==s)return this.css("zIndex",p);if(this.length){p=a(this[0]);for(var w;p.length&&p[0]!==document;){w=p.css("position");if(w==="absolute"||w==="relative"||w==="fixed"){w=parseInt(p.css("zIndex"),10);if(!isNaN(w)&&w!==0)return w}p=p.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":
+"mousedown")+".ui-disableSelection",function(p){p.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),a.each(["Width","Height"],function(p,w){function c(v,B,q,L){a.each(f,function(){B-=parseFloat(a.curCSS(v,"padding"+this,true))||0;q&&(B-=parseFloat(a.curCSS(v,"border"+this+"Width",true))||0);L&&(B-=parseFloat(a.curCSS(v,"margin"+this,true))||0)});return B}var f=w==="Width"?["Left","Right"]:["Top","Bottom"],d=w.toLowerCase(),n={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,
+outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};a.fn["inner"+w]=function(v){if(v===s)return n["inner"+w].call(this);return this.each(function(){a(this).css(d,c(this,v)+"px")})};a.fn["outer"+w]=function(v,B){if(typeof v!="number")return n["outer"+w].call(this,v);return this.each(function(){a(this).css(d,c(this,v,true,B)+"px")})}}),a.extend(a.expr[":"],{data:function(p,w,c){return!!a.data(p,c[3])},focusable:function(p){return b(p,!isNaN(a.attr(p,"tabindex")))},tabbable:function(p){var w=a.attr(p,
+"tabindex"),c=isNaN(w);return(c||w>=0)&&b(p,!c)}}),a(function(){var p=document.body,w=p.appendChild(w=document.createElement("div"));a.extend(w.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=w.offsetHeight===100;a.support.selectstart="onselectstart"in w;p.removeChild(w).style.display="none"}),a.extend(a.ui,{plugin:{add:function(p,w,c){p=a.ui[p].prototype;for(var f in c){p.plugins[f]=p.plugins[f]||[];p.plugins[f].push([w,c[f]])}},call:function(p,w,c){if((w=p.plugins[w])&&
+p.element[0].parentNode)for(var f=0;f<w.length;f++)p.options[w[f][0]]&&w[f][1].apply(p.element,c)}},contains:function(p,w){return document.compareDocumentPosition?p.compareDocumentPosition(w)&16:p!==w&&p.contains(w)},hasScroll:function(p,w){if(a(p).css("overflow")==="hidden")return false;var c=w&&w==="left"?"scrollLeft":"scrollTop",f=false;if(p[c]>0)return true;p[c]=1;f=p[c]>0;p[c]=0;return f},isOverAxis:function(p,w,c){return p>w&&p<w+c},isOver:function(p,w,c,f,d,n){return a.ui.isOverAxis(p,c,d)&&
+a.ui.isOverAxis(w,f,n)}}))})(jQuery);
+(function(a,s){if(a.cleanData){var g=a.cleanData;a.cleanData=function(p){for(var w=0,c;(c=p[w])!=null;w++)try{a(c).triggerHandler("remove")}catch(f){}g(p)}}else{var b=a.fn.remove;a.fn.remove=function(p,w){return this.each(function(){w||(!p||a.filter(p,[this]).length)&&a("*",this).add([this]).each(function(){try{a(this).triggerHandler("remove")}catch(c){}});return b.call(a(this),p,w)})}}a.widget=function(p,w,c){var f=p.split(".")[0],d;p=p.split(".")[1];d=f+"-"+p;c||(c=w,w=a.Widget);a.expr[":"][d]=
+function(n){return!!a.data(n,p)};a[f]=a[f]||{};a[f][p]=function(n,v){arguments.length&&this._createWidget(n,v)};w=new w;w.options=a.extend(true,{},w.options);a[f][p].prototype=a.extend(true,w,{namespace:f,widgetName:p,widgetEventPrefix:a[f][p].prototype.widgetEventPrefix||p,widgetBaseClass:d},c);a.widget.bridge(p,a[f][p])};a.widget.bridge=function(p,w){a.fn[p]=function(c){var f=typeof c=="string",d=Array.prototype.slice.call(arguments,1),n=this;c=!f&&d.length?a.extend.apply(null,[true,c].concat(d)):
+c;if(f&&c.charAt(0)==="_")return n;f?this.each(function(){var v=a.data(this,p),B=v&&a.isFunction(v[c])?v[c].apply(v,d):v;if(B!==v&&B!==s){n=B;return false}}):this.each(function(){var v=a.data(this,p);v?v.option(c||{})._init():a.data(this,p,new w(c,this))});return n}};a.Widget=function(p,w){arguments.length&&this._createWidget(p,w)};a.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(p,w){a.data(w,this.widgetName,this);this.element=a(w);this.options=
+a.extend(true,{},this.options,this._getCreateOptions(),p);var c=this;this.element.bind("remove."+this.widgetName,function(){c.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return a.metadata&&a.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+
+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(p,w){var c=p;if(arguments.length===0)return a.extend({},this.options);if(typeof p=="string"){if(w===s)return this.options[p];c={};c[p]=w}this._setOptions(c);return this},_setOptions:function(p){var w=this;a.each(p,function(c,f){w._setOption(c,f)});return this},_setOption:function(p,w){this.options[p]=w;p==="disabled"&&this.widget()[w?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",
+w);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(p,w,c){var f,d=this.options[p];c=c||{};w=a.Event(w);w.type=(p===this.widgetEventPrefix?p:this.widgetEventPrefix+p).toLowerCase();w.target=this.element[0];if(p=w.originalEvent)for(f in p)f in w||(w[f]=p[f]);this.element.trigger(w,c);return!(a.isFunction(d)&&d.call(this.element[0],w,c)===false||w.isDefaultPrevented())}}})(jQuery);
+(function(a){var s=false;a(document).mouseup(function(){s=false});a.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var g=this;this.element.bind("mousedown."+this.widgetName,function(b){return g._mouseDown(b)}).bind("click."+this.widgetName,function(b){if(true===a.data(b.target,g.widgetName+".preventClickEvent")){a.removeData(b.target,g.widgetName+".preventClickEvent");b.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+
+this.widgetName)},_mouseDown:function(g){if(!s){this._mouseStarted&&this._mouseUp(g);this._mouseDownEvent=g;var b=this,p=g.which==1,w=typeof this.options.cancel=="string"&&g.target.nodeName?a(g.target).closest(this.options.cancel).length:false;if(!p||w||!this._mouseCapture(g))return true;(this.mouseDelayMet=!this.options.delay)||(this._mouseDelayTimer=setTimeout(function(){b.mouseDelayMet=true},this.options.delay));if(this._mouseDistanceMet(g)&&this._mouseDelayMet(g)){this._mouseStarted=this._mouseStart(g)!==
+false;if(!this._mouseStarted){g.preventDefault();return true}}true===a.data(g.target,this.widgetName+".preventClickEvent")&&a.removeData(g.target,this.widgetName+".preventClickEvent");this._mouseMoveDelegate=function(c){return b._mouseMove(c)};this._mouseUpDelegate=function(c){return b._mouseUp(c)};a(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);g.preventDefault();return s=true}},_mouseMove:function(g){if(a.browser.msie&&
+!(document.documentMode>=9)&&!g.button)return this._mouseUp(g);if(this._mouseStarted){this._mouseDrag(g);return g.preventDefault()}this._mouseDistanceMet(g)&&this._mouseDelayMet(g)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,g)!==false,this._mouseStarted?this._mouseDrag(g):this._mouseUp(g));return!this._mouseStarted},_mouseUp:function(g){a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);this._mouseStarted&&
+(this._mouseStarted=false,g.target==this._mouseDownEvent.target&&a.data(g.target,this.widgetName+".preventClickEvent",true),this._mouseStop(g));return false},_mouseDistanceMet:function(g){return Math.max(Math.abs(this._mouseDownEvent.pageX-g.pageX),Math.abs(this._mouseDownEvent.pageY-g.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery);
+(function(a){a.widget("ui.draggable",a.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){this.options.helper=="original"&&
+!/^(?:r|a|f)/.test(this.element.css("position"))&&(this.element[0].style.position="relative");this.options.addClasses&&this.element.addClass("ui-draggable");this.options.disabled&&this.element.addClass("ui-draggable-disabled");this._mouseInit()},destroy:function(){if(this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this}},_mouseCapture:function(s){var g=this.options;
+if(this.helper||g.disabled||a(s.target).is(".ui-resizable-handle"))return false;this.handle=this._getHandle(s);if(!this.handle)return false;g.iframeFix&&a(g.iframeFix===true?"iframe":g.iframeFix).each(function(){a('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(a(this).offset()).appendTo("body")});return true},_mouseStart:function(s){var g=this.options;this.helper=
+this._createHelper(s);this._cacheHelperProportions();a.ui.ddmanager&&(a.ui.ddmanager.current=this);this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};a.extend(this.offset,{click:{left:s.pageX-this.offset.left,top:s.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});
+this.originalPosition=this.position=this._generatePosition(s);this.originalPageX=s.pageX;this.originalPageY=s.pageY;g.cursorAt&&this._adjustOffsetFromHelper(g.cursorAt);g.containment&&this._setContainment();if(this._trigger("start",s)===false){this._clear();return false}this._cacheHelperProportions();a.ui.ddmanager&&!g.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,s);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(s,true);a.ui.ddmanager&&a.ui.ddmanager.dragStart(this,s);return true},
+_mouseDrag:function(s,g){this.position=this._generatePosition(s);this.positionAbs=this._convertPositionTo("absolute");if(!g){var b=this._uiHash();if(this._trigger("drag",s,b)===false){this._mouseUp({});return false}this.position=b.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";a.ui.ddmanager&&a.ui.ddmanager.drag(this,s);return false},_mouseStop:function(s){var g=
+false;a.ui.ddmanager&&!this.options.dropBehaviour&&(g=a.ui.ddmanager.drop(this,s));this.dropped&&(g=this.dropped,this.dropped=false);if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper=="original")return false;if(this.options.revert=="invalid"&&!g||this.options.revert=="valid"&&g||this.options.revert===true||a.isFunction(this.options.revert)&&this.options.revert.call(this.element,g)){var b=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),
+function(){b._trigger("stop",s)!==false&&b._clear()})}else this._trigger("stop",s)!==false&&this._clear();return false},_mouseUp:function(s){this.options.iframeFix===true&&a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)});a.ui.ddmanager&&a.ui.ddmanager.dragStop(this,s);return a.ui.mouse.prototype._mouseUp.call(this,s)},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(s){var g=!this.options.handle||
+!a(this.options.handle,this.element).length?true:false;a(this.options.handle,this.element).find("*").andSelf().each(function(){this==s.target&&(g=true)});return g},_createHelper:function(s){var g=this.options;s=a.isFunction(g.helper)?a(g.helper.apply(this.element[0],[s])):g.helper=="clone"?this.element.clone().removeAttr("id"):this.element;s.parents("body").length||s.appendTo(g.appendTo=="parent"?this.element[0].parentNode:g.appendTo);s[0]!=this.element[0]&&!/(fixed|absolute)/.test(s.css("position"))&&
+s.css("position","absolute");return s},_adjustOffsetFromHelper:function(s){typeof s=="string"&&(s=s.split(" "));a.isArray(s)&&(s={left:+s[0],top:+s[1]||0});"left"in s&&(this.offset.click.left=s.left+this.margins.left);"right"in s&&(this.offset.click.left=this.helperProportions.width-s.right+this.margins.left);"top"in s&&(this.offset.click.top=s.top+this.margins.top);"bottom"in s&&(this.offset.click.top=this.helperProportions.height-s.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=
+this.helper.offsetParent();var s=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])&&(s.left+=this.scrollParent.scrollLeft(),s.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)s={top:0,left:0};return{top:s.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:s.left+(parseInt(this.offsetParent.css("borderLeftWidth"),
+10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var s=this.element.position();return{top:s.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:s.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),
+10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var s=this.options;s.containment=="parent"&&(s.containment=this.helper[0].parentNode);if(s.containment=="document"||s.containment=="window")this.containment=[s.containment=="document"?0:a(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,s.containment=="document"?0:a(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,
+(s.containment=="document"?0:a(window).scrollLeft())+a(s.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(s.containment=="document"?0:a(window).scrollTop())+(a(s.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(s.containment)&&s.containment.constructor!=Array){s=a(s.containment);var g=s[0];if(g){s.offset();var b=a(g).css("overflow")!=
+"hidden";this.containment=[(parseInt(a(g).css("borderLeftWidth"),10)||0)+(parseInt(a(g).css("paddingLeft"),10)||0),(parseInt(a(g).css("borderTopWidth"),10)||0)+(parseInt(a(g).css("paddingTop"),10)||0),(b?Math.max(g.scrollWidth,g.offsetWidth):g.offsetWidth)-(parseInt(a(g).css("borderLeftWidth"),10)||0)-(parseInt(a(g).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(b?Math.max(g.scrollHeight,g.offsetHeight):g.offsetHeight)-(parseInt(a(g).css("borderTopWidth"),
+10)||0)-(parseInt(a(g).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom];this.relative_container=s}}else s.containment.constructor==Array&&(this.containment=s.containment)},_convertPositionTo:function(s,g){g||(g=this.position);var b=s=="absolute"?1:-1,p=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,w=/(html|body)/i.test(p[0].tagName);return{top:g.top+
+this.offset.relative.top*b+this.offset.parent.top*b-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():w?0:p.scrollTop())*b),left:g.left+this.offset.relative.left*b+this.offset.parent.left*b-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():w?0:p.scrollLeft())*b)}},_generatePosition:function(s){var g=this.options,b=this.cssPosition=="absolute"&&
+(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,p=/(html|body)/i.test(b[0].tagName),w=s.pageX,c=s.pageY;if(this.originalPosition){var f;if(this.containment){if(this.relative_container){f=this.relative_container.offset();f=[this.containment[0]+f.left,this.containment[1]+f.top,this.containment[2]+f.left,this.containment[3]+f.top]}else f=this.containment;s.pageX-this.offset.click.left<f[0]&&(w=f[0]+this.offset.click.left);
+s.pageY-this.offset.click.top<f[1]&&(c=f[1]+this.offset.click.top);s.pageX-this.offset.click.left>f[2]&&(w=f[2]+this.offset.click.left);s.pageY-this.offset.click.top>f[3]&&(c=f[3]+this.offset.click.top)}if(g.grid){c=g.grid[1]?this.originalPageY+Math.round((c-this.originalPageY)/g.grid[1])*g.grid[1]:this.originalPageY;c=f?c-this.offset.click.top<f[1]||c-this.offset.click.top>f[3]?c-this.offset.click.top<f[1]?c+g.grid[1]:c-g.grid[1]:c:c;w=g.grid[0]?this.originalPageX+Math.round((w-this.originalPageX)/
+g.grid[0])*g.grid[0]:this.originalPageX;w=f?w-this.offset.click.left<f[0]||w-this.offset.click.left>f[2]?w-this.offset.click.left<f[0]?w+g.grid[0]:w-g.grid[0]:w:w}}return{top:c-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():p?0:b.scrollTop()),left:w-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&a.browser.version<
+526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():p?0:b.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging");this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove();this.helper=null;this.cancelHelperRemoval=false},_trigger:function(s,g,b){b=b||this._uiHash();a.ui.plugin.call(this,s,[g,b]);s=="drag"&&(this.positionAbs=this._convertPositionTo("absolute"));return a.Widget.prototype._trigger.call(this,s,g,
+b)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}});a.extend(a.ui.draggable,{version:"1.8.17"});a.ui.plugin.add("draggable","connectToSortable",{start:function(s,g){var b=a(this).data("draggable"),p=b.options,w=a.extend({},g,{item:b.element});b.sortables=[];a(p.connectToSortable).each(function(){var c=a.data(this,"sortable");c&&!c.options.disabled&&(b.sortables.push({instance:c,shouldRevert:c.options.revert}),
+c.refreshPositions(),c._trigger("activate",s,w))})},stop:function(s,g){var b=a(this).data("draggable"),p=a.extend({},g,{item:b.element});a.each(b.sortables,function(){this.instance.isOver?(this.instance.isOver=0,b.cancelHelperRemoval=true,this.instance.cancelHelperRemoval=false,this.shouldRevert&&(this.instance.options.revert=true),this.instance._mouseStop(s),this.instance.options.helper=this.instance.options._helper,b.options.helper=="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})):
+(this.instance.cancelHelperRemoval=false,this.instance._trigger("deactivate",s,p))})},drag:function(s,g){var b=a(this).data("draggable"),p=this;a.each(b.sortables,function(){this.instance.positionAbs=b.positionAbs;this.instance.helperProportions=b.helperProportions;this.instance.offset.click=b.offset.click;this.instance._intersectsWith(this.instance.containerCache)?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=a(p).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item",
+true),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return g.helper[0]},s.target=this.instance.currentItem[0],this.instance._mouseCapture(s,true),this.instance._mouseStart(s,true,true),this.instance.offset.click.top=b.offset.click.top,this.instance.offset.click.left=b.offset.click.left,this.instance.offset.parent.left-=b.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=b.offset.parent.top-this.instance.offset.parent.top,
+b._trigger("toSortable",s),b.dropped=this.instance.element,b.currentItem=b.element,this.instance.fromOutside=b),this.instance.currentItem&&this.instance._mouseDrag(s)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=true,this.instance.options.revert=false,this.instance._trigger("out",s,this.instance._uiHash(this.instance)),this.instance._mouseStop(s,true),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&
+this.instance.placeholder.remove(),b._trigger("fromSortable",s),b.dropped=false)})}});a.ui.plugin.add("draggable","cursor",{start:function(){var s=a("body"),g=a(this).data("draggable").options;s.css("cursor")&&(g._cursor=s.css("cursor"));s.css("cursor",g.cursor)},stop:function(){var s=a(this).data("draggable").options;s._cursor&&a("body").css("cursor",s._cursor)}});a.ui.plugin.add("draggable","opacity",{start:function(s,g){var b=a(g.helper),p=a(this).data("draggable").options;b.css("opacity")&&(p._opacity=
+b.css("opacity"));b.css("opacity",p.opacity)},stop:function(s,g){var b=a(this).data("draggable").options;b._opacity&&a(g.helper).css("opacity",b._opacity)}});a.ui.plugin.add("draggable","scroll",{start:function(){var s=a(this).data("draggable");s.scrollParent[0]!=document&&s.scrollParent[0].tagName!="HTML"&&(s.overflowOffset=s.scrollParent.offset())},drag:function(s){var g=a(this).data("draggable"),b=g.options,p=false;if(g.scrollParent[0]!=document&&g.scrollParent[0].tagName!="HTML"){if(!b.axis||
+b.axis!="x")g.overflowOffset.top+g.scrollParent[0].offsetHeight-s.pageY<b.scrollSensitivity?g.scrollParent[0].scrollTop=p=g.scrollParent[0].scrollTop+b.scrollSpeed:s.pageY-g.overflowOffset.top<b.scrollSensitivity&&(g.scrollParent[0].scrollTop=p=g.scrollParent[0].scrollTop-b.scrollSpeed);if(!b.axis||b.axis!="y")g.overflowOffset.left+g.scrollParent[0].offsetWidth-s.pageX<b.scrollSensitivity?g.scrollParent[0].scrollLeft=p=g.scrollParent[0].scrollLeft+b.scrollSpeed:s.pageX-g.overflowOffset.left<b.scrollSensitivity&&
+(g.scrollParent[0].scrollLeft=p=g.scrollParent[0].scrollLeft-b.scrollSpeed)}else{if(!b.axis||b.axis!="x")s.pageY-a(document).scrollTop()<b.scrollSensitivity?p=a(document).scrollTop(a(document).scrollTop()-b.scrollSpeed):a(window).height()-(s.pageY-a(document).scrollTop())<b.scrollSensitivity&&(p=a(document).scrollTop(a(document).scrollTop()+b.scrollSpeed));if(!b.axis||b.axis!="y")s.pageX-a(document).scrollLeft()<b.scrollSensitivity?p=a(document).scrollLeft(a(document).scrollLeft()-b.scrollSpeed):
+a(window).width()-(s.pageX-a(document).scrollLeft())<b.scrollSensitivity&&(p=a(document).scrollLeft(a(document).scrollLeft()+b.scrollSpeed))}p!==false&&a.ui.ddmanager&&!b.dropBehaviour&&a.ui.ddmanager.prepareOffsets(g,s)}});a.ui.plugin.add("draggable","snap",{start:function(){var s=a(this).data("draggable"),g=s.options;s.snapElements=[];a(g.snap.constructor!=String?g.snap.items||":data(draggable)":g.snap).each(function(){var b=a(this),p=b.offset();this!=s.element[0]&&s.snapElements.push({item:this,
+width:b.outerWidth(),height:b.outerHeight(),top:p.top,left:p.left})})},drag:function(s,g){for(var b=a(this).data("draggable"),p=b.options,w=p.snapTolerance,c=g.offset.left,f=c+b.helperProportions.width,d=g.offset.top,n=d+b.helperProportions.height,v=b.snapElements.length-1;v>=0;v--){var B=b.snapElements[v].left,q=B+b.snapElements[v].width,L=b.snapElements[v].top,Q=L+b.snapElements[v].height;if(B-w<c&&c<q+w&&L-w<d&&d<Q+w||B-w<c&&c<q+w&&L-w<n&&n<Q+w||B-w<f&&f<q+w&&L-w<d&&d<Q+w||B-w<f&&f<q+w&&L-w<n&&
+n<Q+w){if(p.snapMode!="inner"){var K=Math.abs(L-n)<=w,I=Math.abs(Q-d)<=w,S=Math.abs(B-f)<=w,R=Math.abs(q-c)<=w;K&&(g.position.top=b._convertPositionTo("relative",{top:L-b.helperProportions.height,left:0}).top-b.margins.top);I&&(g.position.top=b._convertPositionTo("relative",{top:Q,left:0}).top-b.margins.top);S&&(g.position.left=b._convertPositionTo("relative",{top:0,left:B-b.helperProportions.width}).left-b.margins.left);R&&(g.position.left=b._convertPositionTo("relative",{top:0,left:q}).left-b.margins.left)}var N=
+K||I||S||R;if(p.snapMode!="outer"){K=Math.abs(L-d)<=w;I=Math.abs(Q-n)<=w;S=Math.abs(B-c)<=w;R=Math.abs(q-f)<=w;K&&(g.position.top=b._convertPositionTo("relative",{top:L,left:0}).top-b.margins.top);I&&(g.position.top=b._convertPositionTo("relative",{top:Q-b.helperProportions.height,left:0}).top-b.margins.top);S&&(g.position.left=b._convertPositionTo("relative",{top:0,left:B}).left-b.margins.left);R&&(g.position.left=b._convertPositionTo("relative",{top:0,left:q-b.helperProportions.width}).left-b.margins.left)}!b.snapElements[v].snapping&&
+(K||I||S||R||N)&&b.options.snap.snap&&b.options.snap.snap.call(b.element,s,a.extend(b._uiHash(),{snapItem:b.snapElements[v].item}));b.snapElements[v].snapping=K||I||S||R||N}else{b.snapElements[v].snapping&&b.options.snap.release&&b.options.snap.release.call(b.element,s,a.extend(b._uiHash(),{snapItem:b.snapElements[v].item}));b.snapElements[v].snapping=false}}}});a.ui.plugin.add("draggable","stack",{start:function(){var s=a(this).data("draggable").options;s=a.makeArray(a(s.stack)).sort(function(b,
+p){return(parseInt(a(b).css("zIndex"),10)||0)-(parseInt(a(p).css("zIndex"),10)||0)});if(s.length){var g=parseInt(s[0].style.zIndex)||0;a(s).each(function(b){this.style.zIndex=g+b});this[0].style.zIndex=g+s.length}}});a.ui.plugin.add("draggable","zIndex",{start:function(s,g){var b=a(g.helper),p=a(this).data("draggable").options;b.css("zIndex")&&(p._zIndex=b.css("zIndex"));b.css("zIndex",p.zIndex)},stop:function(s,g){var b=a(this).data("draggable").options;b._zIndex&&a(g.helper).css("zIndex",b._zIndex)}})})(jQuery);
+(function(a){a.widget("ui.slider",a.ui.mouse,{widgetEventPrefix:"slide",options:{animate:false,distance:0,max:100,min:0,orientation:"horizontal",range:false,step:1,value:0,values:null},_create:function(){var s=this,g=this.options,b=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),p=g.values&&g.values.length||1,w=[];this._mouseSliding=this._keySliding=false;this._animateOff=true;this._handleIndex=null;this._detectOrientation();this._mouseInit();this.element.addClass("ui-slider ui-slider-"+
+this.orientation+" ui-widget ui-widget-content ui-corner-all"+(g.disabled?" ui-slider-disabled ui-disabled":""));this.range=a([]);g.range&&(g.range===true&&(g.values||(g.values=[this._valueMin(),this._valueMin()]),g.values.length&&g.values.length!==2&&(g.values=[g.values[0],g.values[0]])),this.range=a("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(g.range==="min"||g.range==="max"?" ui-slider-range-"+g.range:"")));for(var c=b.length;c<p;c+=1)w.push("<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>");
+this.handles=b.add(a(w.join("")).appendTo(s.element));this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(f){f.preventDefault()}).hover(function(){g.disabled||a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")}).focus(function(){g.disabled?a(this).blur():(a(".ui-slider .ui-state-focus").removeClass("ui-state-focus"),a(this).addClass("ui-state-focus"))}).blur(function(){a(this).removeClass("ui-state-focus")});this.handles.each(function(f){a(this).data("index.ui-slider-handle",
+f)});this.handles.keydown(function(f){var d=true,n=a(this).data("index.ui-slider-handle"),v,B,q;if(!s.options.disabled){switch(f.keyCode){case a.ui.keyCode.HOME:case a.ui.keyCode.END:case a.ui.keyCode.PAGE_UP:case a.ui.keyCode.PAGE_DOWN:case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:d=false;if(!s._keySliding){s._keySliding=true;a(this).addClass("ui-state-active");v=s._start(f,n);if(v===false)return}}v=s.options.step;s.options.values&&s.options.values.length?
+B=q=s.values(n):B=q=s.value();switch(f.keyCode){case a.ui.keyCode.HOME:q=s._valueMin();break;case a.ui.keyCode.END:q=s._valueMax();break;case a.ui.keyCode.PAGE_UP:q=s._trimAlignValue(B+(s._valueMax()-s._valueMin())/5);break;case a.ui.keyCode.PAGE_DOWN:q=s._trimAlignValue(B-(s._valueMax()-s._valueMin())/5);break;case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:if(B===s._valueMax())return;q=s._trimAlignValue(B+v);break;case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:if(B===s._valueMin())return;q=s._trimAlignValue(B-
+v)}s._slide(f,n,q);return d}}).keyup(function(f){var d=a(this).data("index.ui-slider-handle");s._keySliding&&(s._keySliding=false,s._stop(f,d),s._change(f,d),a(this).removeClass("ui-state-active"))});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");this._mouseDestroy();
+return this},_mouseCapture:function(s){var g=this.options,b,p,w,c,f;if(g.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();b=this._normValueFromMouse({x:s.pageX,y:s.pageY});p=this._valueMax()-this._valueMin()+1;c=this;this.handles.each(function(d){var n=Math.abs(b-c.values(d));p>n&&(p=n,w=a(this),f=d)});g.range===true&&this.values(1)===g.min&&(f+=1,w=a(this.handles[f]));if(this._start(s,f)===false)return false;
+this._mouseSliding=true;c._handleIndex=f;w.addClass("ui-state-active").focus();g=w.offset();this._clickOffset=!a(s.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:s.pageX-g.left-w.width()/2,top:s.pageY-g.top-w.height()/2-(parseInt(w.css("borderTopWidth"),10)||0)-(parseInt(w.css("borderBottomWidth"),10)||0)+(parseInt(w.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(s,f,b);return this._animateOff=true},_mouseStart:function(){return true},_mouseDrag:function(s){var g=
+this._normValueFromMouse({x:s.pageX,y:s.pageY});this._slide(s,this._handleIndex,g);return false},_mouseStop:function(s){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(s,this._handleIndex);this._change(s,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(s){var g,b;this.orientation==="horizontal"?
+(g=this.elementSize.width,b=s.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(g=this.elementSize.height,b=s.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0));s=b/g;s>1&&(s=1);s<0&&(s=0);this.orientation==="vertical"&&(s=1-s);g=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+s*g)},_start:function(s,g){var b={handle:this.handles[g],value:this.value()};this.options.values&&this.options.values.length&&(b.value=this.values(g),
+b.values=this.values());return this._trigger("start",s,b)},_slide:function(s,g,b){var p,w,c;this.options.values&&this.options.values.length?(p=this.values(g?0:1),this.options.values.length===2&&this.options.range===true&&(g===0&&b>p||g===1&&b<p)&&(b=p),b!==this.values(g)&&(w=this.values(),w[g]=b,c=this._trigger("slide",s,{handle:this.handles[g],value:b,values:w}),this.values(g?0:1),c!==false&&this.values(g,b,true))):b!==this.value()&&(c=this._trigger("slide",s,{handle:this.handles[g],value:b}),c!==
+false&&this.value(b))},_stop:function(s,g){var b={handle:this.handles[g],value:this.value()};this.options.values&&this.options.values.length&&(b.value=this.values(g),b.values=this.values());this._trigger("stop",s,b)},_change:function(s,g){if(!this._keySliding&&!this._mouseSliding){var b={handle:this.handles[g],value:this.value()};this.options.values&&this.options.values.length&&(b.value=this.values(g),b.values=this.values());this._trigger("change",s,b)}},value:function(s){if(arguments.length){this.options.value=
+this._trimAlignValue(s);this._refreshValue();this._change(null,0)}else return this._value()},values:function(s,g){var b,p,w;if(arguments.length>1){this.options.values[s]=this._trimAlignValue(g);this._refreshValue();this._change(null,s)}else{if(!arguments.length)return this._values();if(!a.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(s):this.value();b=this.options.values;p=arguments[0];for(w=0;w<b.length;w+=1){b[w]=this._trimAlignValue(p[w]);this._change(null,
+w)}this._refreshValue()}},_setOption:function(s,g){var b,p=0;a.isArray(this.options.values)&&(p=this.options.values.length);a.Widget.prototype._setOption.apply(this,arguments);switch(s){case "disabled":g?(this.handles.filter(".ui-state-focus").blur(),this.handles.removeClass("ui-state-hover"),this.handles.propAttr("disabled",true),this.element.addClass("ui-disabled")):(this.handles.propAttr("disabled",false),this.element.removeClass("ui-disabled"));break;case "orientation":this._detectOrientation();
+this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation);this._refreshValue();break;case "value":this._animateOff=true;this._refreshValue();this._change(null,0);this._animateOff=false;break;case "values":this._animateOff=true;this._refreshValue();for(b=0;b<p;b+=1)this._change(null,b);this._animateOff=false}},_value:function(){var s=this.options.value;return s=this._trimAlignValue(s)},_values:function(s){var g,b;if(arguments.length){g=this.options.values[s];
+return g=this._trimAlignValue(g)}g=this.options.values.slice();for(b=0;b<g.length;b+=1)g[b]=this._trimAlignValue(g[b]);return g},_trimAlignValue:function(s){if(s<=this._valueMin())return this._valueMin();if(s>=this._valueMax())return this._valueMax();var g=this.options.step>0?this.options.step:1,b=(s-this._valueMin())%g;s=s-b;Math.abs(b)*2>=g&&(s+=b>0?g:-g);return parseFloat(s.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var s=
+this.options.range,g=this.options,b=this,p=this._animateOff?false:g.animate,w,c={},f,d,n,v;this.options.values&&this.options.values.length?this.handles.each(function(B){w=(b.values(B)-b._valueMin())/(b._valueMax()-b._valueMin())*100;c[b.orientation==="horizontal"?"left":"bottom"]=w+"%";a(this).stop(1,1)[p?"animate":"css"](c,g.animate);b.options.range===true&&(b.orientation==="horizontal"?(B===0&&b.range.stop(1,1)[p?"animate":"css"]({left:w+"%"},g.animate),B===1&&b.range[p?"animate":"css"]({width:w-
+f+"%"},{queue:false,duration:g.animate})):(B===0&&b.range.stop(1,1)[p?"animate":"css"]({bottom:w+"%"},g.animate),B===1&&b.range[p?"animate":"css"]({height:w-f+"%"},{queue:false,duration:g.animate})));f=w}):(d=this.value(),n=this._valueMin(),v=this._valueMax(),w=v!==n?(d-n)/(v-n)*100:0,c[b.orientation==="horizontal"?"left":"bottom"]=w+"%",this.handle.stop(1,1)[p?"animate":"css"](c,g.animate),s==="min"&&this.orientation==="horizontal"&&this.range.stop(1,1)[p?"animate":"css"]({width:w+"%"},g.animate),
+s==="max"&&this.orientation==="horizontal"&&this.range[p?"animate":"css"]({width:100-w+"%"},{queue:false,duration:g.animate}),s==="min"&&this.orientation==="vertical"&&this.range.stop(1,1)[p?"animate":"css"]({height:w+"%"},g.animate),s==="max"&&this.orientation==="vertical"&&this.range[p?"animate":"css"]({height:100-w+"%"},{queue:false,duration:g.animate}))}});a.extend(a.ui.slider,{version:"1.8.17"})})(jQuery);(function(a){Math.precision=function(c,f){if(f===undefined)f=0;return Math.round(c*Math.pow(10,f))/Math.pow(10,f)};var s=function(c,f){var d=this,n=c.find("img:first"),v=0,B=100,q=100,L=0,Q=100,K=100,I=0,S=0,R,N,ga=[],oa=function(U){for(var Z=0;Z<ga.length;Z++)ga[Z].call(d,d,U)},Y=function(U){var Z=c.offset();R={l:Z.left|0,t:Z.top|0};clearTimeout(N);N=setTimeout(function(){Ba.call(d,U)},0);a(document).bind("mousemove",V).bind("mouseup",ea);U.preventDefault()},V=function(U){clearTimeout(N);N=setTimeout(function(){Ba.call(d,
+U)},0);U.stopPropagation();U.preventDefault();return false},ea=function(U){a(document).unbind("mouseup",ea).unbind("mousemove",V);U.stopPropagation();U.preventDefault();return false},Ba=function(U){var Z=U.pageX-R.l;U=U.pageY-R.t;var na=c.w,pa=c.h;if(Z<0)Z=0;else if(Z>na)Z=na;if(U<0)U=0;else if(U>pa)U=pa;ja.call(d,"xy",{x:Z/na*q+v,y:U/pa*K+L})},ja=function(U,Z,na){if(Z===undefined){if(U===undefined||U==null)U="xy";switch(U.toLowerCase()){case "x":return I;case "y":return S;default:return{x:I,y:S}}}if(!(na!=
+null&&na==d)){var pa=false,ma,la;if(U==null)U="xy";switch(U.toLowerCase()){case "x":ma=Z&&(Z.x&&Z.x|0||Z|0)||0;break;case "y":la=Z&&(Z.y&&Z.y|0||Z|0)||0;break;default:ma=Z&&Z.x&&Z.x|0||0;la=Z&&Z.y&&Z.y|0||0}if(ma!=null){if(ma<v)ma=v;else if(ma>B)ma=B;if(I!=ma){I=ma;pa=true}}if(la!=null){if(la<L)la=L;else if(la>Q)la=Q;if(S!=la){S=la;pa=true}}pa&&oa.call(d,na||d)}},ca=function(U){a.isFunction(U)&&ga.push(U)};a.extend(true,d,{val:ja,range:function(U,Z){if(Z===undefined){if(U===undefined||U==null)U="all";
+switch(U.toLowerCase()){case "minx":return v;case "maxx":return B;case "rangex":return{minX:v,maxX:B,rangeX:q};case "miny":return L;case "maxy":return Q;case "rangey":return{minY:L,maxY:Q,rangeY:K};default:return{minX:v,maxX:B,rangeX:q,minY:L,maxY:Q,rangeY:K}}}var na,pa,ma,la;if(U==null)U="all";switch(U.toLowerCase()){case "minx":na=Z&&(Z.minX&&Z.minX|0||Z|0)||0;break;case "maxx":pa=Z&&(Z.maxX&&Z.maxX|0||Z|0)||0;break;case "rangex":na=Z&&Z.minX&&Z.minX|0||0;pa=Z&&Z.maxX&&Z.maxX|0||0;break;case "miny":ma=
+Z&&(Z.minY&&Z.minY|0||Z|0)||0;break;case "maxy":la=Z&&(Z.maxY&&Z.maxY|0||Z|0)||0;break;case "rangey":ma=Z&&Z.minY&&Z.minY|0||0;la=Z&&Z.maxY&&Z.maxY|0||0;break;default:na=Z&&Z.minX&&Z.minX|0||0;pa=Z&&Z.maxX&&Z.maxX|0||0;ma=Z&&Z.minY&&Z.minY|0||0;la=Z&&Z.maxY&&Z.maxY|0||0}if(na!=null&&v!=na){v=na;q=B-v}if(pa!=null&&B!=pa){B=pa;q=B-v}if(ma!=null&&L!=ma){L=ma;K=Q-L}if(la!=null&&Q!=la){Q=la;K=Q-L}},bind:ca,unbind:function(U){if(a.isFunction(U))for(var Z;(Z=a.inArray(U,ga))!=-1;)ga.splice(Z,1)},destroy:function(){a(document).unbind("mouseup",
+ea).unbind("mousemove",V);c.unbind("mousedown",Y);ga=n=c=null}});n.src=f.arrow&&f.arrow.image;n.w=f.arrow&&f.arrow.width||n.width();n.h=f.arrow&&f.arrow.height||n.height();c.w=f.map&&f.map.width||c.width();c.h=f.map&&f.map.height||c.height();c.bind("mousedown",Y);ca.call(d,function(){var U=0,Z=0,na=c.w,pa=c.h,ma=n.w,la=n.h;setTimeout(function(){if(q>0)U=I==B?na:I/q*na|0;if(K>0)Z=S==Q?pa:S/K*pa|0;if(ma>=na)U=(na>>1)-(ma>>1);else U-=ma>>1;if(la>=pa)Z=(pa>>1)-(la>>1);else Z-=la>>1;n.css({left:U+"px",
+top:Z+"px"})},0)})},g=function(c,f,d,n){var v=this;c=c.find("td.Text input");var B=c.eq(3),q=c.eq(4),L=c.eq(5),Q=c.length>7?c.eq(6):null,K=c.eq(0),I=c.eq(1),S=c.eq(2),R=c.eq(c.length>7?7:6),N=c.length>7?c.eq(8):null,ga=function(ja){if(!(ja.target.value==""&&ja.target!=R.get(0)&&(d!=null&&ja.target!=d.get(0)||d==null))){if(!V(ja))return ja;switch(ja.target){case B.get(0):switch(ja.keyCode){case 38:B.val(ea.call(v,(B.val()<<0)+1,0,255));f.val("r",B.val(),ja.target);return false;case 40:B.val(ea.call(v,
+(B.val()<<0)-1,0,255));f.val("r",B.val(),ja.target);return false}break;case q.get(0):switch(ja.keyCode){case 38:q.val(ea.call(v,(q.val()<<0)+1,0,255));f.val("g",q.val(),ja.target);return false;case 40:q.val(ea.call(v,(q.val()<<0)-1,0,255));f.val("g",q.val(),ja.target);return false}break;case L.get(0):switch(ja.keyCode){case 38:L.val(ea.call(v,(L.val()<<0)+1,0,255));f.val("b",L.val(),ja.target);return false;case 40:L.val(ea.call(v,(L.val()<<0)-1,0,255));f.val("b",L.val(),ja.target);return false}break;
+case Q&&Q.get(0):switch(ja.keyCode){case 38:Q.val(ea.call(v,parseFloat(Q.val())+1,0,100));f.val("a",Math.precision(Q.val()*255/100,n),ja.target);return false;case 40:Q.val(ea.call(v,parseFloat(Q.val())-1,0,100));f.val("a",Math.precision(Q.val()*255/100,n),ja.target);return false}break;case K.get(0):switch(ja.keyCode){case 38:K.val(ea.call(v,(K.val()<<0)+1,0,360));f.val("h",K.val(),ja.target);return false;case 40:K.val(ea.call(v,(K.val()<<0)-1,0,360));f.val("h",K.val(),ja.target);return false}break;
+case I.get(0):switch(ja.keyCode){case 38:I.val(ea.call(v,(I.val()<<0)+1,0,100));f.val("s",I.val(),ja.target);return false;case 40:I.val(ea.call(v,(I.val()<<0)-1,0,100));f.val("s",I.val(),ja.target);return false}break;case S.get(0):switch(ja.keyCode){case 38:S.val(ea.call(v,(S.val()<<0)+1,0,100));f.val("v",S.val(),ja.target);return false;case 40:S.val(ea.call(v,(S.val()<<0)-1,0,100));f.val("v",S.val(),ja.target);return false}}}},oa=function(ja){if(!(ja.target.value==""&&ja.target!=R.get(0)&&(d!=null&&
+ja.target!=d.get(0)||d==null))){if(!V(ja))return ja;switch(ja.target){case B.get(0):B.val(ea.call(v,B.val(),0,255));f.val("r",B.val(),ja.target);break;case q.get(0):q.val(ea.call(v,q.val(),0,255));f.val("g",q.val(),ja.target);break;case L.get(0):L.val(ea.call(v,L.val(),0,255));f.val("b",L.val(),ja.target);break;case Q&&Q.get(0):Q.val(ea.call(v,Q.val(),0,100));f.val("a",Math.precision(Q.val()*255/100,n),ja.target);break;case K.get(0):K.val(ea.call(v,K.val(),0,360));f.val("h",K.val(),ja.target);break;
+case I.get(0):I.val(ea.call(v,I.val(),0,100));f.val("s",I.val(),ja.target);break;case S.get(0):S.val(ea.call(v,S.val(),0,100));f.val("v",S.val(),ja.target);break;case R.get(0):R.val(R.val().replace(/[^a-fA-F0-9]/g,"").toLowerCase().substring(0,6));d&&d.val(R.val());f.val("hex",R.val()!=""?R.val():null,ja.target);break;case d&&d.get(0):d.val(d.val().replace(/[^a-fA-F0-9]/g,"").toLowerCase().substring(0,6));R.val(d.val());f.val("hex",d.val()!=""?d.val():null,ja.target);break;case N&&N.get(0):N.val(N.val().replace(/[^a-fA-F0-9]/g,
+"").toLowerCase().substring(0,2));f.val("a",N.val()!=null?parseInt(N.val(),16):null,ja.target)}}},Y=function(ja){if(f.val()!=null)switch(ja.target){case B.get(0):B.val(f.val("r"));break;case q.get(0):q.val(f.val("g"));break;case L.get(0):L.val(f.val("b"));break;case Q&&Q.get(0):Q.val(Math.precision(f.val("a")*100/255,n));break;case K.get(0):K.val(f.val("h"));break;case I.get(0):I.val(f.val("s"));break;case S.get(0):S.val(f.val("v"));break;case R.get(0):case d&&d.get(0):R.val(f.val("hex"));d&&d.val(f.val("hex"));
+break;case N&&N.get(0):N.val(f.val("ahex").substring(6))}},V=function(ja){switch(ja.keyCode){case 9:case 16:case 29:case 37:case 39:return false;case "c".charCodeAt():case "v".charCodeAt():if(ja.ctrlKey)return false}return true},ea=function(ja,ca,U){if(ja==""||isNaN(ja))return ca;if(ja>U)return U;if(ja<ca)return ca;return ja},Ba=function(ja,ca){var U=ja.val("all");if(ca!=B.get(0))B.val(U!=null?U.r:"");if(ca!=q.get(0))q.val(U!=null?U.g:"");if(ca!=L.get(0))L.val(U!=null?U.b:"");if(Q&&ca!=Q.get(0))Q.val(U!=
+null?Math.precision(U.a*100/255,n):"");if(ca!=K.get(0))K.val(U!=null?U.h:"");if(ca!=I.get(0))I.val(U!=null?U.s:"");if(ca!=S.get(0))S.val(U!=null?U.v:"");if(ca!=R.get(0)&&(d&&ca!=d.get(0)||!d))R.val(U!=null?U.hex:"");if(d&&ca!=d.get(0)&&ca!=R.get(0))d.val(U!=null?U.hex:"");if(N&&ca!=N.get(0))N.val(U!=null?U.ahex.substring(6):"")};a.extend(true,v,{destroy:function(){B.add(q).add(L).add(Q).add(K).add(I).add(S).add(R).add(d).add(N).unbind("keyup",oa).unbind("blur",Y);B.add(q).add(L).add(Q).add(K).add(I).add(S).unbind("keydown",
+ga);f.unbind(Ba);N=R=S=I=K=Q=L=q=B=null}});B.add(q).add(L).add(Q).add(K).add(I).add(S).add(R).add(d).add(N).bind("keyup",oa).bind("blur",Y);B.add(q).add(L).add(Q).add(K).add(I).add(S).bind("keydown",ga);f.bind(Ba)};a.jPicker={List:[],Color:function(c){var f=this,d,n,v,B,q,L,Q,K=[],I=function(R){for(var N=0;N<K.length;N++)K[N].call(f,f,R)},S=function(R,N,ga){if(N===undefined){if(R===undefined||R==null||R=="")R="all";if(d==null)return null;switch(R.toLowerCase()){case "ahex":return w.rgbaToHex({r:d,
+g:n,b:v,a:B});case "hex":return S("ahex").substring(0,6);case "all":return{r:d,g:n,b:v,a:B,h:q,s:L,v:Q,hex:S.call(f,"hex"),ahex:S.call(f,"ahex")};default:N={};for(var oa=0;oa<R.length;oa++)switch(R.charAt(oa)){case "r":if(R.length==1)N=d;else N.r=d;break;case "g":if(R.length==1)N=n;else N.g=n;break;case "b":if(R.length==1)N=v;else N.b=v;break;case "a":if(R.length==1)N=B;else N.a=B;break;case "h":if(R.length==1)N=q;else N.h=q;break;case "s":if(R.length==1)N=L;else N.s=L;break;case "v":if(R.length==
+1)N=Q;else N.v=Q}return N=={}?S.call(f,"all"):N}}if(!(ga!=null&&ga==f)){var Y=false;if(R==null)R="";if(N==null){if(d!=null){d=null;Y=true}if(n!=null){n=null;Y=true}if(v!=null){v=null;Y=true}if(B!=null){B=null;Y=true}if(q!=null){q=null;Y=true}if(L!=null){L=null;Y=true}if(Q!=null){Q=null;Y=true}Y&&I.call(f,ga||f)}else switch(R.toLowerCase()){case "ahex":case "hex":N=w.hexToRgba(N&&(N.ahex||N.hex)||N||"00000000");S.call(f,"rgba",{r:N.r,g:N.g,b:N.b,a:R=="ahex"?N.a:B!=null?B:255},ga);break;default:if(N&&
+(N.ahex!=null||N.hex!=null)){S.call(f,"ahex",N.ahex||N.hex||"00000000",ga);break}var V={},ea=false,Ba=false;if(N.r!==undefined&&!R.indexOf("r")==-1)R+="r";if(N.g!==undefined&&!R.indexOf("g")==-1)R+="g";if(N.b!==undefined&&!R.indexOf("b")==-1)R+="b";if(N.a!==undefined&&!R.indexOf("a")==-1)R+="a";if(N.h!==undefined&&!R.indexOf("h")==-1)R+="h";if(N.s!==undefined&&!R.indexOf("s")==-1)R+="s";if(N.v!==undefined&&!R.indexOf("v")==-1)R+="v";for(oa=0;oa<R.length;oa++)switch(R.charAt(oa)){case "r":if(Ba)continue;
+ea=true;V.r=N&&N.r&&N.r|0||N&&N|0||0;if(V.r<0)V.r=0;else if(V.r>255)V.r=255;if(d!=V.r){d=V.r;Y=true}break;case "g":if(Ba)continue;ea=true;V.g=N&&N.g&&N.g|0||N&&N|0||0;if(V.g<0)V.g=0;else if(V.g>255)V.g=255;if(n!=V.g){n=V.g;Y=true}break;case "b":if(Ba)continue;ea=true;V.b=N&&N.b&&N.b|0||N&&N|0||0;if(V.b<0)V.b=0;else if(V.b>255)V.b=255;if(v!=V.b){v=V.b;Y=true}break;case "a":V.a=N&&N.a!=null?N.a|0:N!=null?N|0:255;if(V.a<0)V.a=0;else if(V.a>255)V.a=255;if(B!=V.a){B=V.a;Y=true}break;case "h":if(ea)continue;
+Ba=true;V.h=N&&N.h&&N.h|0||N&&N|0||0;if(V.h<0)V.h=0;else if(V.h>360)V.h=360;if(q!=V.h){q=V.h;Y=true}break;case "s":if(ea)continue;Ba=true;V.s=N&&N.s!=null?N.s|0:N!=null?N|0:100;if(V.s<0)V.s=0;else if(V.s>100)V.s=100;if(L!=V.s){L=V.s;Y=true}break;case "v":if(ea)continue;Ba=true;V.v=N&&N.v!=null?N.v|0:N!=null?N|0:100;if(V.v<0)V.v=0;else if(V.v>100)V.v=100;if(Q!=V.v){Q=V.v;Y=true}}if(Y){if(ea){d=d||0;n=n||0;v=v||0;N=w.rgbToHsv({r:d,g:n,b:v});q=N.h;L=N.s;Q=N.v}else if(Ba){q=q||0;L=L!=null?L:100;Q=Q!=
+null?Q:100;N=w.hsvToRgb({h:q,s:L,v:Q});d=N.r;n=N.g;v=N.b}B=B!=null?B:255;I.call(f,ga||f)}}}};a.extend(true,f,{val:S,bind:function(R){a.isFunction(R)&&K.push(R)},unbind:function(R){if(a.isFunction(R))for(var N;(N=a.inArray(R,K))!=-1;)K.splice(N,1)},destroy:function(){K=null}});if(c)if(c.ahex!=null)S("ahex",c);else if(c.hex!=null)S((c.a!=null?"a":"")+"hex",c.a!=null?{ahex:c.hex+w.intToHex(c.a)}:c);else if(c.r!=null&&c.g!=null&&c.b!=null)S("rgb"+(c.a!=null?"a":""),c);else if(c.h!=null&&c.s!=null&&c.v!=
+null)S("hsv"+(c.a!=null?"a":""),c)},ColorMethods:{hexToRgba:function(c){c=this.validateHex(c);if(c=="")return{r:null,g:null,b:null,a:null};var f="00",d="00",n="00",v="255";if(c.length==6)c+="ff";if(c.length>6){f=c.substring(0,2);d=c.substring(2,4);n=c.substring(4,6);v=c.substring(6,c.length)}else{if(c.length>4){f=c.substring(4,c.length);c=c.substring(0,4)}if(c.length>2){d=c.substring(2,c.length);c=c.substring(0,2)}if(c.length>0)n=c.substring(0,c.length)}return{r:this.hexToInt(f),g:this.hexToInt(d),
+b:this.hexToInt(n),a:this.hexToInt(v)}},validateHex:function(c){if(typeof c=="object")return"";c=c.toLowerCase().replace(/[^a-f0-9]/g,"");if(c.length>8)c=c.substring(0,8);return c},rgbaToHex:function(c){return this.intToHex(c.r)+this.intToHex(c.g)+this.intToHex(c.b)+this.intToHex(c.a)},intToHex:function(c){c=(c|0).toString(16);if(c.length==1)c="0"+c;return c.toLowerCase()},hexToInt:function(c){return parseInt(c,16)},rgbToHsv:function(c){var f=c.r/255,d=c.g/255;c=c.b/255;var n={h:0,s:0,v:0},v=0,B=
+0;if(f>=d&&f>=c){B=f;v=d>c?c:d}else if(d>=c&&d>=f){B=d;v=f>c?c:f}else{B=c;v=d>f?f:d}n.v=B;n.s=B?(B-v)/B:0;if(n.s){v=B-v;n.h=f==B?(d-c)/v:d==B?2+(c-f)/v:4+(f-d)/v;n.h=parseInt(n.h*60);if(n.h<0)n.h+=360}else n.h=0;n.s=n.s*100|0;n.v=n.v*100|0;return n},hsvToRgb:function(c){var f={r:0,g:0,b:0,a:100},d=c.h,n=c.s;c=c.v;if(n==0)f.r=c==0?f.g=f.b=0:f.g=f.b=c*255/100|0;else{if(d==360)d=0;d/=60;n/=100;c/=100;var v=d|0,B=d-v;d=c*(1-n);var q=c*(1-n*B);n=c*(1-n*(1-B));switch(v){case 0:f.r=c;f.g=n;f.b=d;break;case 1:f.r=
+q;f.g=c;f.b=d;break;case 2:f.r=d;f.g=c;f.b=n;break;case 3:f.r=d;f.g=q;f.b=c;break;case 4:f.r=n;f.g=d;f.b=c;break;case 5:f.r=c;f.g=d;f.b=q}f.r=f.r*255|0;f.g=f.g*255|0;f.b=f.b*255|0}return f}}};var b=a.jPicker.Color,p=a.jPicker.List,w=a.jPicker.ColorMethods;a.fn.jPicker=function(c){var f=arguments;return this.each(function(){var d=this,n=a.extend(true,{},a.fn.jPicker.defaults,c);if(a(d).get(0).nodeName.toLowerCase()=="input"){a.extend(true,n,{window:{bindToInput:true,expandable:true,input:a(d)}});if(a(d).val()==
+""){n.color.active=new b({hex:null});n.color.current=new b({hex:null})}else if(w.validateHex(a(d).val())){n.color.active=new b({hex:a(d).val(),a:n.color.active.val("a")});n.color.current=new b({hex:a(d).val(),a:n.color.active.val("a")})}}if(n.window.expandable)a(d).after('<span class="jPicker"><span class="Icon"><span class="Color">&nbsp;</span><span class="Alpha">&nbsp;</span><span class="Image" title="Click To Open Color Picker">&nbsp;</span><span class="Container">&nbsp;</span></span></span>');
+else n.window.liveUpdate=false;var v=parseFloat(navigator.appVersion.split("MSIE")[1])<7&&document.body.filters,B=null,q=null,L=null,Q=null,K=null,I=null,S=null,R=null,N=null,ga=null,oa=null,Y=null,V=null,ea=null,Ba=null,ja=null,ca=null,U=null,Z=null,na=null,pa=null,ma=null,la=null,ya=null,za=null,Ja=null,Ia=null,Fa=null,Ma=function(M){var P=ka.active,da=P.val("hex"),Ea,Oa;n.color.mode=M;switch(M){case "h":setTimeout(function(){Ta.call(d,q,"transparent");Ga.call(d,Q,0);ta.call(d,Q,100);Ga.call(d,
+K,260);ta.call(d,K,100);Ta.call(d,L,"transparent");Ga.call(d,S,0);ta.call(d,S,100);Ga.call(d,R,260);ta.call(d,R,100);Ga.call(d,N,260);ta.call(d,N,100);Ga.call(d,ga,260);ta.call(d,ga,100);Ga.call(d,Y,260);ta.call(d,Y,100)},0);V.range("all",{minX:0,maxX:100,minY:0,maxY:100});ea.range("rangeY",{minY:0,maxY:360});if(P.val("ahex")==null)break;V.val("xy",{x:P.val("s"),y:100-P.val("v")},V);ea.val("y",360-P.val("h"),ea);break;case "s":setTimeout(function(){Ta.call(d,q,"transparent");Ga.call(d,Q,-260);Ga.call(d,
+K,-520);Ga.call(d,S,-260);Ga.call(d,R,-520);Ga.call(d,Y,260);ta.call(d,Y,100)},0);V.range("all",{minX:0,maxX:360,minY:0,maxY:100});ea.range("rangeY",{minY:0,maxY:100});if(P.val("ahex")==null)break;V.val("xy",{x:P.val("h"),y:100-P.val("v")},V);ea.val("y",100-P.val("s"),ea);break;case "v":setTimeout(function(){Ta.call(d,q,"000000");Ga.call(d,Q,-780);Ga.call(d,K,260);Ta.call(d,L,da);Ga.call(d,S,-520);Ga.call(d,R,260);ta.call(d,R,100);Ga.call(d,Y,260);ta.call(d,Y,100)},0);V.range("all",{minX:0,maxX:360,
+minY:0,maxY:100});ea.range("rangeY",{minY:0,maxY:100});if(P.val("ahex")==null)break;V.val("xy",{x:P.val("h"),y:100-P.val("s")},V);ea.val("y",100-P.val("v"),ea);break;case "r":Ea=-1040;Oa=-780;V.range("all",{minX:0,maxX:255,minY:0,maxY:255});ea.range("rangeY",{minY:0,maxY:255});if(P.val("ahex")==null)break;V.val("xy",{x:P.val("b"),y:255-P.val("g")},V);ea.val("y",255-P.val("r"),ea);break;case "g":Ea=-1560;Oa=-1820;V.range("all",{minX:0,maxX:255,minY:0,maxY:255});ea.range("rangeY",{minY:0,maxY:255});
+if(P.val("ahex")==null)break;V.val("xy",{x:P.val("b"),y:255-P.val("r")},V);ea.val("y",255-P.val("g"),ea);break;case "b":Ea=-2080;Oa=-2860;V.range("all",{minX:0,maxX:255,minY:0,maxY:255});ea.range("rangeY",{minY:0,maxY:255});if(P.val("ahex")==null)break;V.val("xy",{x:P.val("r"),y:255-P.val("g")},V);ea.val("y",255-P.val("b"),ea);break;case "a":setTimeout(function(){Ta.call(d,q,"transparent");Ga.call(d,Q,-260);Ga.call(d,K,-520);Ga.call(d,S,260);Ga.call(d,R,260);ta.call(d,R,100);Ga.call(d,Y,0);ta.call(d,
+Y,100)},0);V.range("all",{minX:0,maxX:360,minY:0,maxY:100});ea.range("rangeY",{minY:0,maxY:255});if(P.val("ahex")==null)break;V.val("xy",{x:P.val("h"),y:100-P.val("v")},V);ea.val("y",255-P.val("a"),ea);break;default:throw"Invalid Mode";}switch(M){case "s":case "v":case "a":setTimeout(function(){ta.call(d,Q,100);ta.call(d,S,100);Ga.call(d,N,260);ta.call(d,N,100);Ga.call(d,ga,260);ta.call(d,ga,100)},0);break;case "r":case "g":case "b":setTimeout(function(){Ta.call(d,q,"transparent");Ta.call(d,L,"transparent");
+ta.call(d,S,100);ta.call(d,Q,100);Ga.call(d,Q,Ea);Ga.call(d,K,Ea-260);Ga.call(d,S,Oa-780);Ga.call(d,R,Oa-520);Ga.call(d,N,Oa);Ga.call(d,ga,Oa-260);Ga.call(d,Y,260);ta.call(d,Y,100)},0)}P.val("ahex")!=null&&Da.call(d,P)},Da=function(M,P){if(P==null||P!=ea&&P!=V)va.call(d,M,P);setTimeout(function(){kb.call(d,M);vb.call(d,M);cb.call(d,M)},0)},wa=function(M,P){var da=ka.active;if(!(P!=V&&da.val()==null)){var Ea=M.val("all");switch(n.color.mode){case "h":da.val("sv",{s:Ea.x,v:100-Ea.y},P);break;case "s":case "a":da.val("hv",
+{h:Ea.x,v:100-Ea.y},P);break;case "v":da.val("hs",{h:Ea.x,s:100-Ea.y},P);break;case "r":da.val("gb",{g:255-Ea.y,b:Ea.x},P);break;case "g":da.val("rb",{r:255-Ea.y,b:Ea.x},P);break;case "b":da.val("rg",{r:Ea.x,g:255-Ea.y},P)}}},ra=function(M,P){var da=ka.active;if(!(P!=ea&&da.val()==null))switch(n.color.mode){case "h":da.val("h",{h:360-M.val("y")},P);break;case "s":da.val("s",{s:100-M.val("y")},P);break;case "v":da.val("v",{v:100-M.val("y")},P);break;case "r":da.val("r",{r:255-M.val("y")},P);break;
+case "g":da.val("g",{g:255-M.val("y")},P);break;case "b":da.val("b",{b:255-M.val("y")},P);break;case "a":da.val("a",255-M.val("y"),P)}},va=function(M,P){if(P!=V)switch(n.color.mode){case "h":var da=M.val("sv");V.val("xy",{x:da!=null?da.s:100,y:100-(da!=null?da.v:100)},P);break;case "s":case "a":da=M.val("hv");V.val("xy",{x:da&&da.h||0,y:100-(da!=null?da.v:100)},P);break;case "v":da=M.val("hs");V.val("xy",{x:da&&da.h||0,y:100-(da!=null?da.s:100)},P);break;case "r":da=M.val("bg");V.val("xy",{x:da&&
+da.b||0,y:255-(da&&da.g||0)},P);break;case "g":da=M.val("br");V.val("xy",{x:da&&da.b||0,y:255-(da&&da.r||0)},P);break;case "b":da=M.val("rg");V.val("xy",{x:da&&da.r||0,y:255-(da&&da.g||0)},P)}if(P!=ea)switch(n.color.mode){case "h":ea.val("y",360-(M.val("h")||0),P);break;case "s":da=M.val("s");ea.val("y",100-(da!=null?da:100),P);break;case "v":da=M.val("v");ea.val("y",100-(da!=null?da:100),P);break;case "r":ea.val("y",255-(M.val("r")||0),P);break;case "g":ea.val("y",255-(M.val("g")||0),P);break;case "b":ea.val("y",
+255-(M.val("b")||0),P);break;case "a":da=M.val("a");ea.val("y",255-(da!=null?da:255),P)}},kb=function(M){try{var P=M.val("all");na.css({backgroundColor:P&&"#"+P.hex||"transparent"});ta.call(d,na,P&&Math.precision(P.a*100/255,4)||0)}catch(da){}},vb=function(M){switch(n.color.mode){case "h":Ta.call(d,q,(new b({h:M.val("h")||0,s:100,v:100})).val("hex"));break;case "s":case "a":var P=M.val("s");ta.call(d,K,100-(P!=null?P:100));break;case "v":P=M.val("v");ta.call(d,Q,P!=null?P:100);break;case "r":ta.call(d,
+K,Math.precision((M.val("r")||0)/255*100,4));break;case "g":ta.call(d,K,Math.precision((M.val("g")||0)/255*100,4));break;case "b":ta.call(d,K,Math.precision((M.val("b")||0)/255*100))}M=M.val("a");ta.call(d,I,Math.precision((255-(M||0))*100/255,4))},cb=function(M){switch(n.color.mode){case "h":var P=M.val("a");ta.call(d,oa,Math.precision((255-(P||0))*100/255,4));break;case "s":P=M.val("hva");var da=new b({h:P&&P.h||0,s:100,v:P!=null?P.v:100});Ta.call(d,L,da.val("hex"));ta.call(d,R,100-(P!=null?P.v:
+100));ta.call(d,oa,Math.precision((255-(P&&P.a||0))*100/255,4));break;case "v":P=M.val("hsa");da=new b({h:P&&P.h||0,s:P!=null?P.s:100,v:100});Ta.call(d,L,da.val("hex"));ta.call(d,oa,Math.precision((255-(P&&P.a||0))*100/255,4));break;case "r":case "g":case "b":da=P=0;M=M.val("rgba");if(n.color.mode=="r"){P=M&&M.b||0;da=M&&M.g||0}else if(n.color.mode=="g"){P=M&&M.b||0;da=M&&M.r||0}else if(n.color.mode=="b"){P=M&&M.r||0;da=M&&M.g||0}var Ea=da>P?P:da;ta.call(d,R,P>da?Math.precision((P-da)/(255-da)*100,
+4):0);ta.call(d,N,da>P?Math.precision((da-P)/(255-P)*100,4):0);ta.call(d,ga,Math.precision(Ea/255*100,4));ta.call(d,oa,Math.precision((255-(M&&M.a||0))*100/255,4));break;case "a":P=M.val("a");Ta.call(d,L,M.val("hex")||"000000");ta.call(d,oa,P!=null?0:100);ta.call(d,Y,P!=null?100:0)}},Ta=function(M,P){M.css({backgroundColor:P&&P.length==6&&"#"+P||"transparent"})},Va=function(M,P){if(v&&(P.indexOf("AlphaBar.png")!=-1||P.indexOf("Bars.png")!=-1||P.indexOf("Maps.png")!=-1)){M.attr("pngSrc",P);M.css({backgroundImage:"none",
+filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+P+"', sizingMethod='scale')"})}else M.css({backgroundImage:"url('"+P+"')"})},Ga=function(M,P){M.css({top:P+"px"})},ta=function(M,P){M.css({visibility:P>0?"visible":"hidden"});if(P>0&&P<100)if(v){var da=M.attr("pngSrc");da!=null&&(da.indexOf("AlphaBar.png")!=-1||da.indexOf("Bars.png")!=-1||da.indexOf("Maps.png")!=-1)?M.css({filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+da+"', sizingMethod='scale') progid:DXImageTransform.Microsoft.Alpha(opacity="+
+P+")"}):M.css({opacity:Math.precision(P/100,4)})}else M.css({opacity:Math.precision(P/100,4)});else if(P==0||P==100)if(v){da=M.attr("pngSrc");da!=null&&(da.indexOf("AlphaBar.png")!=-1||da.indexOf("Bars.png")!=-1||da.indexOf("Maps.png")!=-1)?M.css({filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+da+"', sizingMethod='scale')"}):M.css({opacity:""})}else M.css({opacity:""})},$a=function(){ka.active.val("ahex",ka.current.val("ahex"))},Ka=function(){ka.current.val("ahex",ka.active.val("ahex"))},
+Sa=function(M){a(this).parents("tbody:first").find('input:radio[value!="'+M.target.value+'"]').removeAttr("checked");Ma.call(d,M.target.value)},Ha=function(){$a.call(d)},db=function(){$a.call(d);n.window.expandable&&fb.call(d);a.isFunction(ob)&&ob.call(d,ka.active,la)},lb=function(){Ka.call(d);n.window.expandable&&fb.call(d);a.isFunction(ib)&&ib.call(d,ka.active,ma)},Ua=function(){pb.call(d)},Xa=function(M){var P=M.val("hex");pa.css({backgroundColor:P&&"#"+P||"transparent"});ta.call(d,pa,Math.precision((M.val("a")||
+0)*100/255,4))},wb=function(M){var P=M.val("hex");M=M.val("va");za.css({backgroundColor:P&&"#"+P||"transparent"});ta.call(d,Ja,Math.precision((255-(M&&M.a||0))*100/255,4));if(n.window.bindToInput&&n.window.updateInputColor)n.window.input.css({backgroundColor:P&&"#"+P||"transparent",color:M==null||M.v>75?"#000000":"#ffffff"})},sa=function(M){ja=parseInt(B.css("left"));ca=parseInt(B.css("top"));U=M.pageX;Z=M.pageY;a(document).bind("mousemove",hb).bind("mouseup",eb);M.preventDefault()},hb=function(M){B.css({left:ja-
+(U-M.pageX)+"px",top:ca-(Z-M.pageY)+"px"});n.window.expandable&&!a.support.boxModel&&B.prev().css({left:B.css("left"),top:B.css("top")});M.stopPropagation();M.preventDefault();return false},eb=function(M){a(document).unbind("mousemove",hb).unbind("mouseup",eb);M.stopPropagation();M.preventDefault();return false},sb=function(M){M.preventDefault();M.stopPropagation();ka.active.val("ahex",a(this).attr("title")||null,M.target);return false},ib=a.isFunction(f[1])&&f[1]||null,ab=a.isFunction(f[2])&&f[2]||
+null,ob=a.isFunction(f[3])&&f[3]||null,pb=function(){ka.current.val("ahex",ka.active.val("ahex"));var M=function(){if(!(!n.window.expandable||a.support.boxModel)){var P=B.find("table:first");B.before("<iframe/>");B.prev().css({width:P.width(),height:B.height(),opacity:0,position:"absolute",left:B.css("left"),top:B.css("top")})}};if(n.window.expandable){a(document.body).children("div.jPicker.Container").css({zIndex:10});B.css({zIndex:20})}switch(n.window.effects.type){case "fade":B.fadeIn(n.window.effects.speed.show,
+M);break;case "slide":B.slideDown(n.window.effects.speed.show,M);break;default:B.show(n.window.effects.speed.show,M)}},fb=function(){var M=function(){n.window.expandable&&B.css({zIndex:10});!n.window.expandable||a.support.boxModel||B.prev().remove()};switch(n.window.effects.type){case "fade":B.fadeOut(n.window.effects.speed.hide,M);break;case "slide":B.slideUp(n.window.effects.speed.hide,M);break;default:B.hide(n.window.effects.speed.hide,M)}},tb=function(){var M=n.window,P=M.expandable?a(d).next().find(".Container:first"):
+null;B=M.expandable?a("<div/>"):a(d);B.addClass("jPicker Container");M.expandable&&B.hide();B.get(0).onselectstart=function(xa){if(xa.target.nodeName.toLowerCase()!=="input")return false};var da=ka.active.val("all");if(M.alphaPrecision<0)M.alphaPrecision=0;else if(M.alphaPrecision>2)M.alphaPrecision=2;var Ea='<table class="jPicker" cellpadding="0" cellspacing="0"><tbody>'+(M.expandable?'<tr><td class="Move" colspan="5">&nbsp;</td></tr>':"")+'<tr><td rowspan="9"><h2 class="Title">'+(M.title||aa.text.title)+
+'</h2><div class="Map"><span class="Map1">&nbsp;</span><span class="Map2">&nbsp;</span><span class="Map3">&nbsp;</span><img src="'+ia.clientPath+ia.colorMap.arrow.file+'" class="Arrow"/></div></td><td rowspan="9"><div class="Bar"><span class="Map1">&nbsp;</span><span class="Map2">&nbsp;</span><span class="Map3">&nbsp;</span><span class="Map4">&nbsp;</span><span class="Map5">&nbsp;</span><span class="Map6">&nbsp;</span><img src="'+ia.clientPath+ia.colorBar.arrow.file+'" class="Arrow"/></div></td><td colspan="2" class="Preview"><div class="prev_div">'+
+aa.text.newColor+'<div class="color_preview"><span class="Active" title="'+aa.tooltips.colors.newColor+'">&nbsp;</span><span class="Current" title="'+aa.tooltips.colors.currentColor+'">&nbsp;</span></div></div>'+aa.text.currentColor+'</td><td rowspan="9" class="Button"><input type="button" class="Ok" value="'+aa.text.ok+'" title="'+aa.tooltips.buttons.ok+'"/><input type="button" class="Cancel" value="'+aa.text.cancel+'" title="'+aa.tooltips.buttons.cancel+'"/><div class="Grid">&nbsp;</div></td></tr><tr class="Hue"><td class="Radio"><label title="'+
+aa.tooltips.hue.radio+'"><input type="radio" value="h"'+(n.color.mode=="h"?' checked="checked"':"")+'/>H:</label></td><td class="Text"><input type="text" maxlength="3" value="'+(da!=null?da.h:"")+'" title="'+aa.tooltips.hue.textbox+'"/>&nbsp;\u00ba</td></tr><tr class="Saturation"><td class="Radio"><label title="'+aa.tooltips.saturation.radio+'"><input type="radio" value="s"'+(n.color.mode=="s"?' checked="checked"':"")+'/>S:</label></td><td class="Text"><input type="text" maxlength="3" value="'+(da!=
+null?da.s:"")+'" title="'+aa.tooltips.saturation.textbox+'"/>&nbsp;%</td></tr><tr class="Value"><td class="Radio"><label title="'+aa.tooltips.value.radio+'"><input type="radio" value="v"'+(n.color.mode=="v"?' checked="checked"':"")+'/>V:</label></td><td class="Text"><input type="text" maxlength="3" value="'+(da!=null?da.v:"")+'" title="'+aa.tooltips.value.textbox+'"/>&nbsp;%<br/><br/></td></tr><tr class="Red"><td class="Radio"><label title="'+aa.tooltips.red.radio+'"><input type="radio" value="r"'+
+(n.color.mode=="r"?' checked="checked"':"")+'/>R:</label></td><td class="Text"><input type="text" maxlength="3" value="'+(da!=null?da.r:"")+'" title="'+aa.tooltips.red.textbox+'"/></td></tr><tr class="Green"><td class="Radio"><label title="'+aa.tooltips.green.radio+'"><input type="radio" value="g"'+(n.color.mode=="g"?' checked="checked"':"")+'/>G:</label></td><td class="Text"><input type="text" maxlength="3" value="'+(da!=null?da.g:"")+'" title="'+aa.tooltips.green.textbox+'"/></td></tr><tr class="Blue"><td class="Radio"><label title="'+
+aa.tooltips.blue.radio+'"><input type="radio" value="b"'+(n.color.mode=="b"?' checked="checked"':"")+'/>B:</label></td><td class="Text"><input type="text" maxlength="3" value="'+(da!=null?da.b:"")+'" title="'+aa.tooltips.blue.textbox+'"/></td></tr><tr class="Alpha"><td class="Radio">'+(M.alphaSupport?'<label title="'+aa.tooltips.alpha.radio+'"><input type="radio" value="a"'+(n.color.mode=="a"?' checked="checked"':"")+"/>A:</label>":"&nbsp;")+'</td><td class="Text">'+(M.alphaSupport?'<input type="text" maxlength="'+
+(3+M.alphaPrecision)+'" value="'+(da!=null?Math.precision(da.a*100/255,M.alphaPrecision):"")+'" title="'+aa.tooltips.alpha.textbox+'"/>&nbsp;%':"&nbsp;")+'</td></tr><tr class="Hex"><td colspan="2" class="Text"><label title="'+aa.tooltips.hex.textbox+'">#:<input type="text" maxlength="6" class="Hex" value="'+(da!=null?da.hex:"")+'"/></label>'+(M.alphaSupport?'<input type="text" maxlength="2" class="AHex" value="'+(da!=null?da.ahex.substring(6):"")+'" title="'+aa.tooltips.hex.alpha+'"/></td>':"&nbsp;")+
+"</tr></tbody></table>";if(M.expandable){B.html(Ea);a(document.body).children("div.jPicker.Container").length==0?a(document.body).prepend(B):a(document.body).children("div.jPicker.Container:last").after(B);B.mousedown(function(){a(document.body).children("div.jPicker.Container").css({zIndex:10});B.css({zIndex:20})});B.css({left:M.position.x=="left"?P.offset().left-530-(M.position.y=="center"?25:0)+"px":M.position.x=="center"?P.offset().left-260+"px":M.position.x=="right"?P.offset().left-10+(M.position.y==
+"center"?25:0)+"px":M.position.x=="screenCenter"?(a(document).width()>>1)-260+"px":P.offset().left+parseInt(M.position.x)+"px",position:"absolute",top:M.position.y=="top"?P.offset().top-312+"px":M.position.y=="center"?P.offset().top-156+"px":M.position.y=="bottom"?P.offset().top+25+"px":P.offset().top+parseInt(M.position.y)+"px"})}else{B=a(d);B.html(Ea)}Ea=B.find("tbody:first");q=Ea.find("div.Map:first");L=Ea.find("div.Bar:first");var Oa=q.find("span"),Wa=L.find("span");Q=Oa.filter(".Map1:first");
+K=Oa.filter(".Map2:first");I=Oa.filter(".Map3:first");S=Wa.filter(".Map1:first");R=Wa.filter(".Map2:first");N=Wa.filter(".Map3:first");ga=Wa.filter(".Map4:first");oa=Wa.filter(".Map5:first");Y=Wa.filter(".Map6:first");V=new s(q,{map:{width:ia.colorMap.width,height:ia.colorMap.height},arrow:{image:ia.clientPath+ia.colorMap.arrow.file,width:ia.colorMap.arrow.width,height:ia.colorMap.arrow.height}});V.bind(wa);ea=new s(L,{map:{width:ia.colorBar.width,height:ia.colorBar.height},arrow:{image:ia.clientPath+
+ia.colorBar.arrow.file,width:ia.colorBar.arrow.width,height:ia.colorBar.arrow.height}});ea.bind(ra);Ba=new g(Ea,ka.active,M.expandable&&M.bindToInput?M.input:null,M.alphaPrecision);Oa=da!=null?da.hex:null;var Za=Ea.find(".Preview");Wa=Ea.find(".Button");na=Za.find(".Active:first").css({backgroundColor:Oa&&"#"+Oa||"transparent"});pa=Za.find(".Current:first").css({backgroundColor:Oa&&"#"+Oa||"transparent"}).bind("click",Ha);ta.call(d,pa,Math.precision(ka.current.val("a")*100)/255,4);ma=Wa.find(".Ok:first").bind("click touchstart",
+lb);la=Wa.find(".Cancel:first").bind("click touchstart",db);ya=Wa.find(".Grid:first");setTimeout(function(){Va.call(d,Q,ia.clientPath+"Maps.png");Va.call(d,K,ia.clientPath+"Maps.png");Va.call(d,I,ia.clientPath+"map-opacity.png");Va.call(d,S,ia.clientPath+"Bars.png");Va.call(d,R,ia.clientPath+"Bars.png");Va.call(d,N,ia.clientPath+"Bars.png");Va.call(d,ga,ia.clientPath+"Bars.png");Va.call(d,oa,ia.clientPath+"bar-opacity.png");Va.call(d,Y,ia.clientPath+"AlphaBar.png");Va.call(d,Za.find("div:last"),ia.clientPath+
+"preview-opacity.png")},0);Ea.find("td.Radio input").bind("click  touchstart",Sa);if(ka.quickList&&ka.quickList.length>0){Wa="";for(i=0;i<ka.quickList.length;i++){if((typeof ka.quickList[i]).toString().toLowerCase()=="string")ka.quickList[i]=new b({hex:ka.quickList[i]});var nb=ka.quickList[i].val("a"),Ra=ka.quickList[i].val("ahex");if(!M.alphaSupport&&Ra)Ra=Ra.substring(0,6)+"ff";var mb=ka.quickList[i].val("hex");Wa+='<span class="QuickColor"'+(Ra&&' title="#'+Ra+'"'||"")+' style="background-color:'+
+(mb&&"#"+mb||"")+";"+(mb?"":"background-image:url("+ia.clientPath+"NoColor.png)")+(M.alphaSupport&&nb&&nb<255?";opacity:"+Math.precision(nb/255,4)+";filter:Alpha(opacity="+Math.precision(nb/2.55,4)+")":"")+'">&nbsp;</span>'}Va.call(d,ya,ia.clientPath+"bar-opacity.png");ya.html(Wa);ya.find(".QuickColor").click(sb)}Ma.call(d,n.color.mode);ka.active.bind(Da);a.isFunction(ab)&&ka.active.bind(ab);ka.current.bind(Xa);if(M.expandable){d.icon=P.parents(".Icon:first");za=d.icon.find(".Color:first").css({backgroundColor:Oa&&
+"#"+Oa||"transparent"});Ja=d.icon.find(".Alpha:first");Va.call(d,Ja,ia.clientPath+"bar-opacity.png");ta.call(d,Ja,Math.precision((255-(da!=null?da.a:0))*100/255,4));Ia=d.icon.find(".Image:first").css({backgroundImage:"url('"+ia.clientPath+ia.picker.file+"')"}).bind("click",Ua);if(M.bindToInput&&M.updateInputColor)M.input.css({backgroundColor:Oa&&"#"+Oa||"transparent",color:da==null||da.v>75?"#000000":"#ffffff"});Fa=Ea.find(".Move:first").bind("mousedown",sa);ka.active.bind(wb)}else pb.call(d)},ia=
+n.images,aa=n.localization,ka={active:(typeof n.color.active).toString().toLowerCase()=="string"?new b({ahex:!n.window.alphaSupport&&n.color.active?n.color.active.substring(0,6)+"ff":n.color.active}):new b({ahex:!n.window.alphaSupport&&n.color.active.val("ahex")?n.color.active.val("ahex").substring(0,6)+"ff":n.color.active.val("ahex")}),current:(typeof n.color.active).toString().toLowerCase()=="string"?new b({ahex:!n.window.alphaSupport&&n.color.active?n.color.active.substring(0,6)+"ff":n.color.active}):
+new b({ahex:!n.window.alphaSupport&&n.color.active.val("ahex")?n.color.active.val("ahex").substring(0,6)+"ff":n.color.active.val("ahex")}),quickList:n.color.quickList};a.extend(true,d,{commitCallback:ib,liveCallback:ab,cancelCallback:ob,color:ka,show:pb,hide:fb,destroy:function(){B.find("td.Radio input  touchstart").unbind("click",Sa);pa.unbind("click  touchstart",Ha);la.unbind("click  touchstart",db);ma.unbind("click  touchstart",lb);if(n.window.expandable){Ia.unbind("click",Ua);Fa.unbind("mousedown",
+sa);d.icon=null}B.find(".QuickColor").unbind("click",sb);Y=oa=ga=N=R=S=I=K=Q=L=q=null;V.destroy();V=null;ea.destroy();ea=null;Ba.destroy();ab=ob=ib=ya=la=ma=pa=na=Ba=null;B.html("");for(i=0;i<p.length;i++)p[i]==d&&p.splice(i,1)}});p.push(d);setTimeout(function(){tb.call(d)},0)})};a.fn.jPicker.defaults={window:{title:null,effects:{type:"slide",speed:{show:"slow",hide:"fast"}},position:{x:"screenCenter",y:"top"},expandable:false,liveUpdate:true,alphaSupport:false,alphaPrecision:0,updateInputColor:true},
+color:{mode:"h",active:new b({ahex:"#ffcc00ff"}),quickList:[new b({h:360,s:33,v:100}),new b({h:360,s:66,v:100}),new b({h:360,s:100,v:100}),new b({h:360,s:100,v:75}),new b({h:360,s:100,v:50}),new b({h:180,s:0,v:100}),new b({h:30,s:33,v:100}),new b({h:30,s:66,v:100}),new b({h:30,s:100,v:100}),new b({h:30,s:100,v:75}),new b({h:30,s:100,v:50}),new b({h:180,s:0,v:90}),new b({h:60,s:33,v:100}),new b({h:60,s:66,v:100}),new b({h:60,s:100,v:100}),new b({h:60,s:100,v:75}),new b({h:60,s:100,v:50}),new b({h:180,
+s:0,v:80}),new b({h:90,s:33,v:100}),new b({h:90,s:66,v:100}),new b({h:90,s:100,v:100}),new b({h:90,s:100,v:75}),new b({h:90,s:100,v:50}),new b({h:180,s:0,v:70}),new b({h:120,s:33,v:100}),new b({h:120,s:66,v:100}),new b({h:120,s:100,v:100}),new b({h:120,s:100,v:75}),new b({h:120,s:100,v:50}),new b({h:180,s:0,v:60}),new b({h:150,s:33,v:100}),new b({h:150,s:66,v:100}),new b({h:150,s:100,v:100}),new b({h:150,s:100,v:75}),new b({h:150,s:100,v:50}),new b({h:180,s:0,v:50}),new b({h:180,s:33,v:100}),new b({h:180,
+s:66,v:100}),new b({h:180,s:100,v:100}),new b({h:180,s:100,v:75}),new b({h:180,s:100,v:50}),new b({h:180,s:0,v:40}),new b({h:210,s:33,v:100}),new b({h:210,s:66,v:100}),new b({h:210,s:100,v:100}),new b({h:210,s:100,v:75}),new b({h:210,s:100,v:50}),new b({h:180,s:0,v:30}),new b({h:240,s:33,v:100}),new b({h:240,s:66,v:100}),new b({h:240,s:100,v:100}),new b({h:240,s:100,v:75}),new b({h:240,s:100,v:50}),new b({h:180,s:0,v:20}),new b({h:270,s:33,v:100}),new b({h:270,s:66,v:100}),new b({h:270,s:100,v:100}),
+new b({h:270,s:100,v:75}),new b({h:270,s:100,v:50}),new b({h:180,s:0,v:10}),new b({h:300,s:33,v:100}),new b({h:300,s:66,v:100}),new b({h:300,s:100,v:100}),new b({h:300,s:100,v:75}),new b({h:300,s:100,v:50}),new b({h:180,s:0,v:0}),new b({h:330,s:33,v:100}),new b({h:330,s:66,v:100}),new b({h:330,s:100,v:100}),new b({h:330,s:100,v:75}),new b({h:330,s:100,v:50}),new b]},images:{clientPath:"/jPicker/images/",colorMap:{width:256,height:256,arrow:{file:"mappoint.gif",width:15,height:15}},colorBar:{width:20,
+height:256,arrow:{file:"rangearrows.gif",width:20,height:7}},picker:{file:"picker.gif",width:25,height:24}},localization:{text:{title:"Drag Markers To Pick A Color",newColor:"new",currentColor:"current",ok:"OK",cancel:"Cancel"},tooltips:{colors:{newColor:"New Color - Press &ldquo;OK&rdquo; To Commit",currentColor:"Click To Revert To Original Color"},buttons:{ok:"Commit To This Color Selection",cancel:"Cancel And Revert To Original Color"},hue:{radio:"Set To &ldquo;Hue&rdquo; Color Mode",textbox:"Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)"},
+saturation:{radio:"Set To &ldquo;Saturation&rdquo; Color Mode",textbox:"Enter A &ldquo;Saturation&rdquo; Value (0-100%)"},value:{radio:"Set To &ldquo;Value&rdquo; Color Mode",textbox:"Enter A &ldquo;Value&rdquo; Value (0-100%)"},red:{radio:"Set To &ldquo;Red&rdquo; Color Mode",textbox:"Enter A &ldquo;Red&rdquo; Value (0-255)"},green:{radio:"Set To &ldquo;Green&rdquo; Color Mode",textbox:"Enter A &ldquo;Green&rdquo; Value (0-255)"},blue:{radio:"Set To &ldquo;Blue&rdquo; Color Mode",textbox:"Enter A &ldquo;Blue&rdquo; Value (0-255)"},
+alpha:{radio:"Set To &ldquo;Alpha&rdquo; Color Mode",textbox:"Enter A &ldquo;Alpha&rdquo; Value (0-100)"},hex:{textbox:"Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)",alpha:"Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)"}}}}})(jQuery,"1.1.6");(function(a){function s(p){var w=p||window.event,c=[].slice.call(arguments,1),f=0,d=0,n=0;p=a.event.fix(w);p.type="mousewheel";if(w.wheelDelta)f=w.wheelDelta/120;if(w.detail)f=-w.detail/3;n=f;if(w.axis!==undefined&&w.axis===w.HORIZONTAL_AXIS){n=0;d=-1*f}if(w.wheelDeltaY!==undefined)n=w.wheelDeltaY/120;if(w.wheelDeltaX!==undefined)d=-1*w.wheelDeltaX/120;c.unshift(p,f,d,n);return(a.event.dispatch||a.event.handle).apply(this,c)}var g=["DOMMouseScroll","mousewheel"];if(a.event.fixHooks)for(var b=g.length;b;)a.event.fixHooks[g[--b]]=
+a.event.mouseHooks;a.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var p=g.length;p;)this.addEventListener(g[--p],s,false);else this.onmousewheel=s},teardown:function(){if(this.removeEventListener)for(var p=g.length;p;)this.removeEventListener(g[--p],s,false);else this.onmousewheel=null}};a.fn.extend({mousewheel:function(p){return p?this.bind("mousewheel",p):this.trigger("mousewheel")},unmousewheel:function(p){return this.unbind("mousewheel",p)}})})(jQuery);methodDraw.addExtension("eyedropper",function(a){var s=methodDraw.canvas,g=svgedit.history.ChangeElementCommand,b={fillPaint:"red",fillOpacity:1,strokePaint:"black",strokeOpacity:1,strokeWidth:5,strokeDashArray:null,opacity:1,strokeLinecap:"butt",strokeLinejoin:"miter"},p=function(w,c,f){var d=null;if(w.indexOf("url(#")===0){w=(w=s.getRefElem(w))?w.cloneNode(true):$("#"+f+"_color defs *")[0];d={alpha:c};d[w.tagName]=w}else d=w.indexOf("#")===0?{alpha:c,solidColor:w.substr(1)}:{alpha:c,solidColor:"none"};
+return new $.jGraduate.Paint(d)};return{name:"eyedropper",svgicons:"extensions/eyedropper-icon.xml",buttons:[{id:"tool_eyedropper",type:"mode",title:"Eye Dropper Tool",position:8,key:"I",icon:"extensions/eyedropper.png",events:{click:function(){s.setMode("eyedropper")}}}],mouseDown:function(w){var c=s.getMode(),f=w.event;f=f.target.id==="svgroot"?document.getElementById("canvas_background"):f.target;if(c=="eyedropper"&&f){b.fillPaint=f.getAttribute("fill")||"white";b.fillOpacity=f.getAttribute("fill-opacity")||
+1;b.strokePaint=f.getAttribute("stroke")||"none";b.strokeOpacity=f.getAttribute("stroke-opacity")||1;b.strokeWidth=f.getAttribute("stroke-width");b.strokeDashArray=f.getAttribute("stroke-dasharray");b.strokeLinecap=f.getAttribute("stroke-linecap");b.strokeLinejoin=f.getAttribute("stroke-linejoin");b.opacity=f.getAttribute("opacity")||1;w.selectedElements=w.selectedElements.filter(Boolean);if(w.selectedElements.length){if($.inArray(w.selectedElements.nodeName,["g","use"])==-1){var d={},n=function(B,
+q,L){d[q]=B.getAttribute(q);B.setAttribute(q,L)},v=new a.BatchCommand;w.selectedElements.forEach(function(B){b.fillPaint&&n(B,"fill",b.fillPaint);b.fillOpacity&&n(B,"fill-opacity",b.fillOpacity);b.strokePaint&&n(B,"stroke",b.strokePaint);b.strokeOpacity&&n(B,"stroke-opacity",b.strokeOpacity);b.strokeWidth&&n(B,"stroke-width",b.strokeWidth);b.strokeDashArray&&n(B,"stroke-dasharray",b.strokeDashArray);b.opacity&&n(B,"opacity",b.opacity);b.strokeLinecap&&n(B,"stroke-linecap",b.strokeLinecap);b.strokeLinejoin&&
+n(B,"stroke-linejoin",b.strokeLinejoin);v.addSubCommand(new g(B,d));d={}});w=p(b.fillPaint,b.fillOpacity*100,"fill");c=p(b.strokePaint,b.strokeOpacity*100,"stroke");methodDraw.paintBox.fill.update(true);methodDraw.paintBox.stroke.update(true);s.undoMgr.addCommandToHistory(v)}}else{w=p(b.fillPaint,b.fillOpacity*100,"fill");c=p(b.strokePaint,b.strokeOpacity*100,"stroke");methodDraw.paintBox.fill.setPaint(w);methodDraw.paintBox.stroke.setPaint(c)}}}}});methodDraw.addExtension("view_grid",function(a){function s(n){f.attr("width");f.attr("height");var v=svgedit.units.getTypeMap()[methodDraw.curConfig.baseUnit],B=[0.01,0.1,1,10,100,1E3];b.getContentElem().getAttribute("x");var q=w;v=v*n;var L=100/v,Q=1;for(n=0;n<B.length;n++){var K=B[n];Q=K;if(L<=K)break}B=Q*v;q.width=B;q.height=B;v=q.getContext("2d");L=B/10;v.globalAlpha=0.2;v.strokeStyle="#000";for(n=1;n<10;n++){Q=Math.round(L*n)+0.5;v.moveTo(Q,B);v.lineTo(Q,0);v.moveTo(B,Q);v.lineTo(0,Q)}v.stroke();
+v.beginPath();v.globalAlpha=0.5;v.moveTo(0.5,B);v.lineTo(0.5,0);v.moveTo(B,0.5);v.lineTo(0,0.5);v.stroke();q=q.toDataURL("image/png");d.setAttribute("width",B);d.setAttribute("height",B);d.parentNode.setAttribute("width",B);d.parentNode.setAttribute("height",B);b.setHref(d,q)}if(!document.getElementById("canvasGrid")){var g=document.getElementById("svgcanvas").ownerDocument,b=methodDraw.canvas,p=false;a=a.assignAttributes;var w=document.createElement("canvas");$(w).hide().appendTo("body");var c=g.createElementNS("http://www.w3.org/2000/svg",
+"g");a(c,{id:"canvasGrid",width:"100%",height:"100%",x:0,y:0,overflow:"visible",display:"none"});var f=$("#canvas_background");f.after(c);c=g.createElementNS("http://www.w3.org/2000/svg","pattern");a(c,{id:"gridpattern",patternUnits:"userSpaceOnUse",x:0,y:0,width:100,height:100});var d=g.createElementNS("http://www.w3.org/2000/svg","image");a(d,{x:0,y:0,width:100,height:100});c.appendChild(d);$("#svgroot defs").append(c);g=g.createElementNS("http://www.w3.org/2000/svg","rect");a(g,{width:"100%",height:"100%",
+x:0,y:0,"stroke-width":0,stroke:"none",fill:"url(#gridpattern)",style:"pointer-events: none; display:visible;"});$("#canvasGrid").append(g)}return{name:"view_grid",zoomChanged:function(n){p&&s(n)},buttons:[{id:"view_grid",type:"menu",after:"tool_wireframe",panel:"view_menu",title:"View Grid",events:{click:function(){if($("#view_grid").hasClass("push_button_pressed")){methodDraw.curConfig.showGrid=p=false;$("#view_grid").removeClass("push_button_pressed");$("#canvasGrid").attr("display","none")}else{methodDraw.curConfig.showGrid=
+p=true;$("#view_grid").addClass("push_button_pressed");$("#canvasGrid").attr("display","inline");s(b.getZoom())}}}}]}});methodDraw.addExtension("shapes",function(){function a(){$("#shape_buttons").empty();$("#shape_buttons").append(L.buttons)}function s(K){var I=q[K];if(I){L=I;I.buttons.length||g(K,I);a()}else{$("#shape_buttons").html("Loading...");$.getJSON("extensions/shapelib/"+K+".json",function(S){L=q[K]={data:S.data,size:S.size,fill:S.fill};g(K,S);a()})}}function g(K,I){var S=L.size||300,R=L.fill||false,N=S*0.05;N=[-N,-N,S+N*2,S+N*2].join(" ");S=R?0:S/30;S=(new DOMParser).parseFromString('<svg xmlns="http://www.w3.org/2000/svg"><svg viewBox="'+
+N+'"><path fill="#333" stroke="transparent" stroke-width="'+S+'" /></svg></svg>',"text/xml");S.documentElement.setAttribute("width",40);S.documentElement.setAttribute("height",40);S=$(document.importNode(S.documentElement,true));R=I.data;L.buttons=[];for(var ga in R){N=R[ga];var oa=S.clone();oa.find("path").attr("d",N);N=oa.wrap('<div class="tool_button">').parent().attr({id:Q+"_"+ga,title:ga});L.buttons.push(N[0])}}var b,p,w=methodDraw.canvas,c,f,d,n=w.getRootElem(),v={},B={basic:"Basic",object:"Objects",
+symbol:"Symbols",arrow:"Arrows",flowchart:"Flowchart",nature:"Nature",game:"Cards & Chess",dialog_balloon:"Dialog balloons",music:"Music",weather:"Weather &amp; Time",ui:"User Interface",social:"Social Web"},q={basic:{data:{star_points_5:"m1,116.58409l113.82668,0l35.17332,-108.13487l35.17334,108.13487l113.82666,0l-92.08755,66.83026l35.17514,108.13487l-92.08759,-66.83208l-92.08757,66.83208l35.17515,-108.13487l-92.08758,-66.83026z",donut:"m1,150l0,0c0,-82.29042 66.70958,-149 149,-149l0,0c39.51724,0 77.41599,15.69816 105.35889,43.64108c27.94293,27.94293 43.64111,65.84165 43.64111,105.35892l0,0c0,82.29041 -66.70958,149 -149,149l0,0c-82.29041,0 -149,-66.70959 -149,-149zm74.5,0l0,0c0,41.1452 33.35481,74.5 74.5,74.5c41.14522,0 74.5,-33.3548 74.5,-74.5c0,-41.1452 -33.3548,-74.5 -74.5,-74.5l0,0c-41.14519,0 -74.5,33.35481 -74.5,74.5z",
+triangle:"m1,280.375l149,-260.75l149,260.75z",right_triangle:"m1,299l0,-298l298,298z",diamond:"m1,150l149,-149l149,149l-149,149l-149,-149z",pentagon:"m1.00035,116.97758l148.99963,-108.4053l148.99998,108.4053l-56.91267,175.4042l-184.1741,0l-56.91284,-175.4042z",hexagon:"m1,149.99944l63.85715,-127.71428l170.28572,0l63.85713,127.71428l-63.85713,127.71428l-170.28572,0l-63.85715,-127.71428z",septagon1:"m0.99917,191.06511l29.51249,-127.7108l119.48833,-56.83673l119.48836,56.83673l29.51303,127.7108l-82.69087,102.41679l-132.62103,0l-82.69031,-102.41679z",
+heptagon:"m1,88.28171l87.28172,-87.28171l123.43653,0l87.28172,87.28171l0,123.43654l-87.28172,87.28172l-123.43653,0l-87.28172,-87.28172l0,-123.43654z",decagon:"m1,150.00093l28.45646,-88.40318l74.49956,-54.63682l92.08794,0l74.50002,54.63682l28.45599,88.40318l-28.45599,88.40318l-74.50002,54.63681l-92.08794,0l-74.49956,-54.63681l-28.45646,-88.40318z",dodecagon:"m1,110.07421l39.92579,-69.14842l69.14842,-39.92579l79.85159,0l69.14842,39.92579l39.92578,69.14842l0,79.85159l-39.92578,69.14842l-69.14842,39.92578l-79.85159,0l-69.14842,-39.92578l-39.92579,-69.14842l0,-79.85159z",
+trapezoid:"m1,299l55.875,-298l186.25001,0l55.87498,298z",dialog_balloon_1:"m0.99786,35.96579l0,0c0,-19.31077 15.28761,-34.96524 34.14583,-34.96524l15.52084,0l0,0l74.50001,0l139.68748,0c9.05606,0 17.74118,3.68382 24.14478,10.24108c6.40356,6.55726 10.00107,15.45081 10.00107,24.72416l0,87.41311l0,0l0,52.44785l0,0c0,19.31078 -15.2876,34.96524 -34.14584,34.96524l-139.68748,0l-97.32507,88.90848l22.82506,-88.90848l-15.52084,0c-18.85822,0 -34.14583,-15.65446 -34.14583,-34.96524l0,0l0,-52.44785l0,0z",heart:"m150,73c61,-175 300,0 0,225c-300,-225 -61,-400 0,-225z",
+cylinder:"m299.0007,83.77844c0,18.28676 -66.70958,33.11111 -149.00002,33.11111m149.00002,-33.11111l0,0c0,18.28676 -66.70958,33.11111 -149.00002,33.11111c-82.29041,0 -148.99997,-14.82432 -148.99997,-33.11111m0,0l0,0c0,-18.28674 66.70956,-33.1111 148.99997,-33.1111c82.29044,0 149.00002,14.82436 149.00002,33.1111l0,132.44449c0,18.28674 -66.70958,33.11105 -149.00002,33.11105c-82.29041,0 -148.99997,-14.82431 -148.99997,-33.11105z",arrow_up:"m1.49805,149.64304l148.50121,-148.00241l148.50121,148.00241l-74.25061,0l0,148.71457l-148.5012,0l0,-148.71457z",
+arrow_u_turn:"m1.00059,299.00055l0,-167.62497l0,0c0,-72.00411 58.37087,-130.37499 130.375,-130.37499l0,0l0,0c34.57759,0 67.73898,13.7359 92.18906,38.18595c24.45006,24.45005 38.18593,57.61144 38.18593,92.18904l0,18.625l37.24997,0l-74.49995,74.50002l-74.50002,-74.50002l37.25,0l0,-18.625c0,-30.8589 -25.0161,-55.87498 -55.87498,-55.87498l0,0l0,0c-30.85892,0 -55.875,25.01608 -55.875,55.87498l0,167.62497z",arrow_left_up:"m0.99865,224.5l74.50004,-74.5l0,37.25l111.74991,0l0,-111.75l-37.25,0l74.5,-74.5l74.5,74.5l-37.25,0l0,186.25l-186.24989,0l0,37.25l-74.50005,-74.5z",
+plaque:"m-0.00197,49.94376l0,0c27.5829,0 49.94327,-22.36036 49.94327,-49.94327l199.76709,0l0,0c0,27.5829 22.36037,49.94327 49.94325,49.94327l0,199.7671l0,0c-27.58289,0 -49.94325,22.36034 -49.94325,49.94325l-199.76709,0c0,-27.58292 -22.36037,-49.94325 -49.94327,-49.94325z",page:"m249.3298,298.99744l9.9335,-39.73413l39.73413,-9.93355l-49.66763,49.66768l-248.33237,0l0,-298.00001l298.00001,0l0,248.33234",cross:"m0.99844,99.71339l98.71494,0l0,-98.71495l101.26279,0l0,98.71495l98.71495,0l0,101.2628l-98.71495,0l0,98.71494l-101.26279,0l0,-98.71494l-98.71494,0z",
+divide:"m150,0.99785l0,0c25.17819,0 45.58916,20.41097 45.58916,45.58916c0,25.17821 -20.41096,45.58916 -45.58916,45.58916c-25.17822,0 -45.58916,-20.41093 -45.58916,-45.58916c0,-25.1782 20.41093,-45.58916 45.58916,-45.58916zm0,296.25203c-25.17822,0 -45.58916,-20.41095 -45.58916,-45.58917c0,-25.17819 20.41093,-45.58916 45.58916,-45.58916c25.17819,0 45.58916,20.41096 45.58916,45.58916c0,25.17822 -20.41096,45.58917 -45.58916,45.58917zm-134.06754,-193.71518l268.13507,0l0,91.17833l-268.13507,0z",minus:"m0.99887,102.39503l297.49445,0l0,95.2112l-297.49445,0z",
+times:"m1.00089,73.36786l72.36697,-72.36697l76.87431,76.87368l76.87431,-76.87368l72.36765,72.36697l-76.87433,76.87431l76.87433,76.87431l-72.36765,72.36765l-76.87431,-76.87433l-76.87431,76.87433l-72.36697,-72.36765l76.87368,-76.87431l-76.87368,-76.87431z"},buttons:[]}},L=q.basic,Q="shapelib";return{svgicons:"extensions/ext-shapes.xml",buttons:[{id:"tool_shapelib",type:"mode_flyout",position:6,title:"Shape library",icon:"extensions/ext-shapes.png",events:{click:function(){w.setMode(Q)}}}],callback:function(){var K=
+$('<div id="shape_buttons">');$("#tools_shapelib > *").wrapAll(K);var I=$("#tools_shapelib_show");s("basic");$("#shape_buttons").mouseup(function(R){R=$(R.target).closest("div.tool_button");if(R.length){var N=R.children().clone().attr({width:24,height:24});I.children(":not(.flyout_arrow_horiz)").remove();I.append(N).attr("data-curopt","#"+R[0].id).mouseup();w.setMode(Q);p=R[0].id.substr((Q+"_").length);b=L.data[p];$(".tools_flyout").fadeOut()}});K=$('<div id="shape_cats">');var S="";$.each(B,function(R,
+N){S+="<div data-cat="+R+">"+N+"</div>"});K.html(S).children().bind("mouseup",function(){var R=$(this);R.siblings().removeClass("current");R.addClass("current");s(R.attr("data-cat"));return false});K.children().eq(0).addClass("current");$("#tools_shapelib").prepend(K);I.mouseup(function(){w.setMode(b?Q:"select")});$("#tool_shapelib").remove();K=$("#tools_shapelib").height();$("#tools_shapelib").css({"margin-top":-(K/2),"margin-left":3})},mouseDown:function(K){if(w.getMode()===Q){var I=f=K.start_x;
+K=d=K.start_y;var S=w.getStyle();c=w.addSvgElementFromJson({element:"path",curStyles:true,attr:{d:b,id:w.getNextId(),opacity:S.opacity/2,style:"pointer-events:none"}});c.setAttribute("d",b);if(/[a-z]/.test(b)){b=L.data[p]=w.pathActions.convertPath(c);c.setAttribute("d",b);w.pathActions.fixEnd(c)}c.setAttribute("transform","translate("+I+","+K+") scale(0.005) translate("+-I+","+-K+")");w.recalculateDimensions(c);w.getTransformList(c);v=c.getBBox();totalScale={sx:1,sy:1};return{started:true}}},mouseMove:function(K){if(w.getMode()===
+Q){var I=w.getZoom(),S=K.event,R=K.mouse_x/I,N=K.mouse_y/I;K=w.getTransformList(c);var ga=c.getBBox();I=ga.x;var oa=ga.y,Y=ga.width,V=ga.height,ea=R-f,Ba=N-d,ja={x:Math.min(f,R),y:Math.min(d,N),width:Math.abs(R-f),height:Math.abs(N-d)},ca=ga=0;V=V?(V+Ba)/V:1;Y=Y?(Y+ea)/Y:1;Y=ja.width/v.width;V=ja.height/v.height;Y=Y||1;V=V||1;if(R<f)ga=v.width;if(N<d)ca=v.height;R=n.createSVGTransform();N=n.createSVGTransform();ja=n.createSVGTransform();R.setTranslate(-(I+ga),-(oa+ca));if(S.shiftKey){replaced=true;
+S=Math.min(Math.abs(Y),Math.abs(V));Y=S*(Y<0?-1:1);V=S*(V<0?-1:1);if(totalScale.sx!=totalScale.sy){S=totalScale.sx>totalScale.sy?1:totalScale.sx/totalScale.sy;Y*=totalScale.sy>totalScale.sx?1:totalScale.sy/totalScale.sx;V*=S}}totalScale.sx*=Y;totalScale.sy*=V;N.setScale(Y,V);ja.setTranslate(I+ga,oa+ca);K.appendItem(ja);K.appendItem(N);K.appendItem(R);w.recalculateDimensions(c);v=c.getBBox()}},mouseUp:function(K){if(w.getMode()===Q){if(K.mouse_x==f&&K.mouse_y==d)return{keep:false,element:c,started:false};
+w.setMode("select");return{keep:true,element:c,started:false}}}}});(function(){for(var a=0,s=["ms","moz","webkit","o"],g=0;g<s.length&&!window.requestAnimationFrame;++g){window.requestAnimationFrame=window[s[g]+"RequestAnimationFrame"];window.cancelAnimationFrame=window[s[g]+"CancelAnimationFrame"]||window[s[g]+"CancelRequestAnimationFrame"]}if(!window.requestAnimationFrame)window.requestAnimationFrame=function(b){var p=(new Date).getTime(),w=Math.max(0,16-(p-a)),c=window.setTimeout(function(){b(p+w)},w);a=p+w;return c};if(!window.cancelAnimationFrame)window.cancelAnimationFrame=
+function(b){clearTimeout(b)}})();(function(a){function s(q){var L=q.originalEvent;if(!L.touches||L.targetTouches.length===1&&L.touches.length===1){c.call(this,q);q=a(this);q.bind(v,g);q.bind(n,b)}else{clearTimeout(B);w.call(this)}}function g(q){if(B!=null){var L=q.originalEvent;q=L.changedTouches?L.changedTouches[0].pageX:L.pageX;L=L.changedTouches?L.changedTouches[0].pageY:L.pageY;var Q=a(this).data("taphold.point");q=q-Q.x;L=L-Q.y;if(Math.sqrt(q*q+L*L)>d){clearTimeout(B);w.call(this)}}}function b(){clearTimeout(B);w.call(this)}
+function p(q){w.call(this);a(this).data("taphold.handler").call(this,q)}function w(){B=null;a(this).unbind(v,g);a(this).unbind(n,b)}function c(q){if(B==null){var L=this;B=setTimeout(function(){p.call(L,q)},f);var Q=q.originalEvent,K={};K.x=Q.changedTouches?Q.changedTouches[0].pageX:Q.pageX;K.y=Q.changedTouches?Q.changedTouches[0].pageY:Q.pageY;a(this).data("taphold.point",K)}}var f=1E3,d=5,n="touchend",v="touchmove",B=null;a.event.special.taphold={setup:function(){},add:function(q){a(this).data("taphold.handler",
+q.handler);q.data?a(this).bind("touchstart",q.data,s):a(this).bind("touchstart",s)},remove:function(q){clearTimeout(B);w.call(this);q.data?a(this).unbind("touchstart",q.data,s):a(this).unbind("touchstart",s)},teardown:function(){}}})(jQuery);
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/method-draw.manifest
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/method-draw.manifest	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/method-draw.manifest	(revision 29468)
@@ -0,0 +1,121 @@
+﻿CACHE MANIFEST
+svg-editor.html
+images/logo.png
+jgraduate/css/jPicker-1.0.9.css
+jgraduate/css/jGraduate-0.2.0.css
+svg-editor.css
+spinbtn/JQuerySpinBtn.css
+jquery.js
+js-hotkeys/jquery.hotkeys.min.js
+jquery-ui/jquery-ui-1.7.2.custom.min.js
+jgraduate/jpicker-1.0.9.min.js
+jgraduate/jquery.jgraduate.js
+spinbtn/JQuerySpinBtn.js
+svgcanvas.js
+svg-editor.js
+images/align-bottom.png
+images/align-center.png
+images/align-left.png
+images/align-middle.png
+images/align-right.png
+images/align-top.png
+images/bold.png
+images/cancel.png
+images/circle.png
+images/clear.png
+images/clone.png
+images/copy.png
+images/cut.png
+images/delete.png
+images/document-properties.png
+images/dropdown.gif
+images/ellipse.png
+images/eye.png
+images/flyouth.png
+images/flyup.gif
+images/freehand-circle.png
+images/freehand-square.png
+images/go-down.png
+images/go-up.png
+images/image.png
+images/italic.png
+images/line.png
+images/logo.png
+images/logo.svg
+images/move_bottom.png
+images/move_top.png
+images/none.png
+images/open.png
+images/paste.png
+images/path.png
+images/polygon.png
+images/rect.png
+images/redo.png
+images/save.png
+images/select.png
+images/sep.png
+images/shape_group.png
+images/shape_ungroup.png
+images/source.png
+images/square.png
+images/text.png
+images/undo.png
+images/view-refresh.png
+images/wave.png
+images/zoom.png
+locale/locale.js
+locale/lang.af.js
+locale/lang.ar.js
+locale/lang.az.js
+locale/lang.be.js
+locale/lang.bg.js
+locale/lang.ca.js
+locale/lang.cs.js
+locale/lang.cy.js
+locale/lang.da.js
+locale/lang.de.js
+locale/lang.el.js
+locale/lang.en.js
+locale/lang.es.js
+locale/lang.et.js
+locale/lang.fa.js
+locale/lang.fi.js
+locale/lang.fr.js
+locale/lang.ga.js
+locale/lang.gl.js
+locale/lang.hi.js
+locale/lang.hr.js
+locale/lang.hu.js
+locale/lang.hy.js
+locale/lang.id.js
+locale/lang.is.js
+locale/lang.it.js
+locale/lang.iw.js
+locale/lang.ja.js
+locale/lang.ko.js
+locale/lang.lt.js
+locale/lang.lv.js
+locale/lang.mk.js
+locale/lang.ms.js
+locale/lang.mt.js
+locale/lang.nl.js
+locale/lang.no.js
+locale/lang.pl.js
+locale/lang.pt-PT.js
+locale/lang.ro.js
+locale/lang.ru.js
+locale/lang.sk.js
+locale/lang.sl.js
+locale/lang.sq.js
+locale/lang.sr.js
+locale/lang.sv.js
+locale/lang.sw.js
+locale/lang.th.js
+locale/lang.tl.js
+locale/lang.tr.js
+locale/lang.uk.js
+locale/lang.vi.js
+locale/lang.yi.js
+locale/lang.zh-CN.js
+locale/lang.zh-TW.js
+locale/lang.zh.js
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/browser.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/browser.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/browser.js	(revision 29468)
@@ -0,0 +1,181 @@
+/**
+ * Package: svgedit.browser
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Jeff Schiller
+ * Copyright(c) 2010 Alexis Deveria
+ */
+
+// Dependencies:
+// 1) jQuery (for $.alert())
+
+var svgedit = svgedit || {};
+
+(function() {
+
+if (!svgedit.browser) {
+	svgedit.browser = {};
+}
+var supportsSvg_ = (function() {
+        return !!document.createElementNS && !!document.createElementNS('http://www.w3.org/2000/svg', 'svg').createSVGRect;
+})();
+svgedit.browser.supportsSvg = function() { return supportsSvg_; }
+if(!svgedit.browser.supportsSvg()) {
+	window.location = "browser-not-supported.html";
+}
+else{
+
+var svgns = 'http://www.w3.org/2000/svg';
+var userAgent = navigator.userAgent;
+var svg = document.createElementNS(svgns, 'svg');
+
+// Note: Browser sniffing should only be used if no other detection method is possible
+var isOpera_ = !!window.opera;
+var isWebkit_ = userAgent.indexOf("AppleWebKit") >= 0;
+var isGecko_ = userAgent.indexOf('Gecko/') >= 0;
+var isIE_ = userAgent.indexOf('MSIE') >= 0;
+var isChrome_ = userAgent.indexOf('Chrome/') >= 0;
+var isWindows_ = userAgent.indexOf('Windows') >= 0;
+var isMac_ = userAgent.indexOf('Macintosh') >= 0;
+var isTouch_ = 'ontouchstart' in window;
+
+var supportsSelectors_ = (function() {
+	return !!svg.querySelector;
+})();
+
+var supportsXpath_ = (function() {
+	return !!document.evaluate;
+})();
+
+// segList functions (for FF1.5 and 2.0)
+var supportsPathReplaceItem_ = (function() {
+	var path = document.createElementNS(svgns, 'path');
+	path.setAttribute('d','M0,0 10,10');
+	var seglist = path.pathSegList;
+	var seg = path.createSVGPathSegLinetoAbs(5,5);
+	try {
+		seglist.replaceItem(seg, 0);
+		return true;
+	} catch(err) {}
+	return false;
+})();
+
+var supportsPathInsertItemBefore_ = (function() {
+	var path = document.createElementNS(svgns,'path');
+	path.setAttribute('d','M0,0 10,10');
+	var seglist = path.pathSegList;
+	var seg = path.createSVGPathSegLinetoAbs(5,5);
+	try {
+		seglist.insertItemBefore(seg, 0);
+		return true;
+	} catch(err) {}
+	return false;
+})();
+
+// text character positioning (for IE9)
+var supportsGoodTextCharPos_ = (function() {
+   var retValue = false;
+   var svgroot = document.createElementNS(svgns, 'svg');
+   var svgcontent = document.createElementNS(svgns, 'svg');
+   document.documentElement.appendChild(svgroot);
+   svgcontent.setAttribute('x', 5);
+   svgroot.appendChild(svgcontent);
+   var text = document.createElementNS(svgns,'text');
+   text.textContent = 'a';
+   svgcontent.appendChild(text);
+   var pos = text.getStartPositionOfChar(0)
+   pos = pos.x; //if you put it on one line it fails when compiled
+   document.documentElement.removeChild(svgroot);
+   return (pos === 0);
+})();
+
+var supportsPathBBox_ = (function() {
+	var svgcontent = document.createElementNS(svgns, 'svg');
+	document.documentElement.appendChild(svgcontent);
+	var path = document.createElementNS(svgns, 'path');
+	path.setAttribute('d','M0,0 C0,0 10,10 10,0');
+	svgcontent.appendChild(path);
+	var bbox = path.getBBox();
+	document.documentElement.removeChild(svgcontent);
+	return (bbox.height > 4 && bbox.height < 5);
+})();
+
+// Support for correct bbox sizing on groups with horizontal/vertical lines
+var supportsHVLineContainerBBox_ = (function() {
+	var svgcontent = document.createElementNS(svgns, 'svg');
+	document.documentElement.appendChild(svgcontent);
+	var path = document.createElementNS(svgns, 'path');
+	path.setAttribute('d','M0,0 10,0');
+	var path2 = document.createElementNS(svgns, 'path');
+	path2.setAttribute('d','M5,0 15,0');
+	var g = document.createElementNS(svgns, 'g');
+	g.appendChild(path);
+	g.appendChild(path2);
+	svgcontent.appendChild(g);
+	var bbox = g.getBBox();
+	document.documentElement.removeChild(svgcontent);
+	// Webkit gives 0, FF gives 10, Opera (correctly) gives 15
+	return (bbox.width == 15);
+})();
+
+var supportsEditableText_ = (function() {
+	// TODO: Find better way to check support for this
+	return isOpera_;
+})();
+
+var supportsGoodDecimals_ = (function() {
+	// Correct decimals on clone attributes (Opera < 10.5/win/non-en)
+	var rect = document.createElementNS(svgns, 'rect');
+	rect.setAttribute('x',.1);
+	var crect = rect.cloneNode(false);
+	var retValue = (crect.getAttribute('x').indexOf(',') == -1);
+	if(!retValue) {
+		$.alert("NOTE: This version of Opera is known to contain bugs in SVG-edit.\n\
+		Please upgrade to the <a href='http://opera.com'>latest version</a> in which the problems have been fixed.");
+	}
+	return retValue;
+})();
+
+var supportsNonScalingStroke_ = (function() {
+	var rect = document.createElementNS(svgns, 'rect');
+	rect.setAttribute('style','vector-effect:non-scaling-stroke');
+	return rect.style.vectorEffect === 'non-scaling-stroke';
+})();
+
+var supportsNativeSVGTransformLists_ = (function() {
+	var rect = document.createElementNS(svgns, 'rect');
+	var rxform = rect.transform.baseVal;
+	
+	var t1 = svg.createSVGTransform();
+	rxform.appendItem(t1);
+	return rxform.getItem(0) == t1;
+})();
+
+// Public API
+
+svgedit.browser.isOpera = function() { return isOpera_; }
+svgedit.browser.isWebkit = function() { return isWebkit_; }
+svgedit.browser.isGecko = function() { return isGecko_; }
+svgedit.browser.isIE = function() { return isIE_; }
+svgedit.browser.isChrome = function() { return isChrome_; }
+svgedit.browser.isWindows = function() { return isWindows_; }
+svgedit.browser.isMac = function() { return isMac_; }
+svgedit.browser.isTouch = function() { return isTouch_; }
+
+svgedit.browser.supportsSelectors = function() { return supportsSelectors_; }
+svgedit.browser.supportsXpath = function() { return supportsXpath_; }
+
+svgedit.browser.supportsPathReplaceItem = function() { return supportsPathReplaceItem_; }
+svgedit.browser.supportsPathInsertItemBefore = function() { return supportsPathInsertItemBefore_; }
+svgedit.browser.supportsPathBBox = function() { return supportsPathBBox_; }
+svgedit.browser.supportsHVLineContainerBBox = function() { return supportsHVLineContainerBBox_; }
+svgedit.browser.supportsGoodTextCharPos = function() { return supportsGoodTextCharPos_; }
+svgedit.browser.supportsEditableText = function() { return supportsEditableText_; }
+svgedit.browser.supportsGoodDecimals = function() { return supportsGoodDecimals_; }
+svgedit.browser.supportsNonScalingStroke = function() { return supportsNonScalingStroke_; }
+svgedit.browser.supportsNativeTransformLists = function() { return supportsNativeSVGTransformLists_; }
+
+}
+
+})();
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/dialog.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/dialog.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/dialog.js	(revision 29468)
@@ -0,0 +1,49 @@
+// This sets up alternative dialog boxes. They mostly work the same way as
+// their UI counterparts, expect instead of returning the result, a callback
+// needs to be included that returns the result as its first parameter.
+// In the future we may want to add additional types of dialog boxes, since 
+// they should be easy to handle this way.
+
+(function() {
+	$('#dialog_container').draggable({cancel:'#dialog_content, #dialog_buttons *', containment: 'window'});
+	var box = $('#dialog_box'), btn_holder = $('#dialog_buttons');
+	
+	var dbox = function(type, msg, callback, defText) {
+		$('#dialog_content').html('<p>'+msg.replace(/\n/g,'</p><p>')+'</p>')
+			.toggleClass('prompt',(type=='prompt'));
+		btn_holder.empty();
+		
+		var ok = $('<input type="button" value="' + uiStrings.common.ok + '">').appendTo(btn_holder);
+	
+		if(type != 'alert') {
+			$('<input type="button" value="' + uiStrings.common.cancel + '">')
+				.appendTo(btn_holder)
+				.on("click touchstart", function() { box.hide();callback(false)});
+		}
+		
+		if(type == 'prompt') {
+			var input = $('<input type="text">').prependTo(btn_holder);
+			input.val(defText || '');
+			input.bind('keydown', 'return', function() {ok.trigger("click touchstart");});
+		}
+		
+		if(type == 'process') {
+			ok.hide();
+		}
+
+		box.show();
+		
+		ok.on("click touchstart", function() { 
+			box.hide();
+			var resp = (type == 'prompt')?input.val():true;
+			if(callback) callback(resp);
+		}).focus();
+		
+		if(type == 'prompt') input.focus();
+	}
+	
+	$.alert = function(msg, cb) { dbox('alert', msg, cb);};
+	$.confirm = function(msg, cb) {	dbox('confirm', msg, cb);};
+	$.process_cancel = function(msg, cb) {	dbox('process', msg, cb);};
+	$.prompt = function(msg, txt, cb) { dbox('prompt', msg, cb, txt);};
+}());
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/dragupload.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/dragupload.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/dragupload.js	(revision 29468)
@@ -0,0 +1,11 @@
+window.onload = function () {
+  document.querySelector('body').addEventListener('drop', function(e) {
+    e.preventDefault();
+    var reader = new FileReader();
+    reader.onload = function(evt) {
+      //document.querySelector('img').src = evt.target.result;
+    };
+
+    reader.readAsDataURL(e.dataTransfer.files[0]);
+  }, false);
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/draw.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/draw.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/draw.js	(revision 29468)
@@ -0,0 +1,533 @@
+/**
+ * Package: svgedit.draw
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2011 Jeff Schiller
+ */
+
+// Dependencies:
+// 1) jQuery
+// 2) browser.js
+// 3) svgutils.js
+
+var svgedit = svgedit || {};
+
+(function() {
+
+if (!svgedit.draw) {
+	svgedit.draw = {};
+}
+
+var svg_ns = "http://www.w3.org/2000/svg";
+var se_ns = "http://svg-edit.googlecode.com";
+var xmlns_ns = "http://www.w3.org/2000/xmlns/";
+
+var visElems = 'a,circle,ellipse,foreignObject,g,image,line,path,polygon,polyline,rect,svg,text,tspan,use';
+var visElems_arr = visElems.split(',');
+
+var RandomizeModes = {
+	LET_DOCUMENT_DECIDE: 0,
+	ALWAYS_RANDOMIZE: 1,
+	NEVER_RANDOMIZE: 2
+};
+var randomize_ids = RandomizeModes.LET_DOCUMENT_DECIDE;
+
+/**
+ * This class encapsulates the concept of a layer in the drawing
+ * @param name {String} Layer name
+ * @param child {SVGGElement} Layer SVG group.
+ */
+svgedit.draw.Layer = function(name, group) {
+	this.name_ = name;
+	this.group_ = group;
+};
+
+svgedit.draw.Layer.prototype.getName = function() {
+	return this.name_;
+};
+
+svgedit.draw.Layer.prototype.getGroup = function() {
+	return this.group_;
+};
+
+
+// Called to ensure that drawings will or will not have randomized ids.
+// The current_drawing will have its nonce set if it doesn't already.
+// 
+// Params:
+// enableRandomization - flag indicating if documents should have randomized ids
+svgedit.draw.randomizeIds = function(enableRandomization, current_drawing) {
+	randomize_ids = enableRandomization == false ?
+		RandomizeModes.NEVER_RANDOMIZE :
+		RandomizeModes.ALWAYS_RANDOMIZE;
+
+	if (randomize_ids == RandomizeModes.ALWAYS_RANDOMIZE && !current_drawing.getNonce()) {
+		current_drawing.setNonce(Math.floor(Math.random() * 100001));
+	} else if (randomize_ids == RandomizeModes.NEVER_RANDOMIZE && current_drawing.getNonce()) {
+		current_drawing.clearNonce();
+	}
+};
+
+/**
+ * This class encapsulates the concept of a SVG-edit drawing
+ *
+ * @param svgElem {SVGSVGElement} The SVG DOM Element that this JS object
+ *     encapsulates.  If the svgElem has a se:nonce attribute on it, then
+ *     IDs will use the nonce as they are generated.
+ * @param opt_idPrefix {String} The ID prefix to use.  Defaults to "svg_"
+ *     if not specified.
+ */
+svgedit.draw.Drawing = function(svgElem, opt_idPrefix) {
+	if (!svgElem || !svgElem.tagName || !svgElem.namespaceURI ||
+		svgElem.tagName != 'svg' || svgElem.namespaceURI != svg_ns) {
+		throw "Error: svgedit.draw.Drawing instance initialized without a <svg> element";
+	}
+
+	/**
+	 * The SVG DOM Element that represents this drawing.
+	 * @type {SVGSVGElement}
+	 */
+	this.svgElem_ = svgElem;
+	
+	/**
+	 * The latest object number used in this drawing.
+	 * @type {number}
+	 */
+	this.obj_num = 0;
+	
+	/**
+	 * The prefix to prepend to each element id in the drawing.
+	 * @type {String}
+	 */
+	this.idPrefix = opt_idPrefix || "svg_";
+	
+	/**
+	 * An array of released element ids to immediately reuse.
+	 * @type {Array.<number>}
+	 */
+	this.releasedNums = [];
+
+	/**
+	 * The z-ordered array of tuples containing layer names and <g> elements.
+	 * The first layer is the one at the bottom of the rendering.
+	 * TODO: Turn this into an Array.<Layer>
+	 * @type {Array.<Array.<String, SVGGElement>>}
+	 */
+	this.all_layers = [];
+
+	/**
+	 * The current layer being used.
+	 * TODO: Make this a {Layer}.
+	 * @type {SVGGElement}
+	 */
+	this.current_layer = null;
+
+	/**
+	 * The nonce to use to uniquely identify elements across drawings.
+	 * @type {!String}
+	 */
+	this.nonce_ = "";
+	var n = this.svgElem_.getAttributeNS(se_ns, 'nonce');
+	// If already set in the DOM, use the nonce throughout the document
+	// else, if randomizeIds(true) has been called, create and set the nonce.
+	if (!!n && randomize_ids != RandomizeModes.NEVER_RANDOMIZE) {
+		this.nonce_ = n;
+	} else if (randomize_ids == RandomizeModes.ALWAYS_RANDOMIZE) {
+		this.setNonce(Math.floor(Math.random() * 100001));
+	}
+};
+
+svgedit.draw.Drawing.prototype.getElem_ = function(id) {
+	if(this.svgElem_.querySelector) {
+		// querySelector lookup
+		return this.svgElem_.querySelector('#'+id);
+	} else {
+		// jQuery lookup: twice as slow as xpath in FF
+		return $(this.svgElem_).find('[id=' + id + ']')[0];
+	}
+};
+
+svgedit.draw.Drawing.prototype.getSvgElem = function() {
+	return this.svgElem_;
+};
+
+svgedit.draw.Drawing.prototype.getNonce = function() {
+	return this.nonce_;
+};
+
+svgedit.draw.Drawing.prototype.setNonce = function(n) {
+	this.svgElem_.setAttributeNS(xmlns_ns, 'xmlns:se', se_ns);
+	this.svgElem_.setAttributeNS(se_ns, 'se:nonce', n);
+	this.nonce_ = n;
+};
+
+svgedit.draw.Drawing.prototype.clearNonce = function() {
+	// We deliberately leave any se:nonce attributes alone,
+	// we just don't use it to randomize ids.
+	this.nonce_ = "";
+};
+
+/**
+ * Returns the latest object id as a string.
+ * @return {String} The latest object Id.
+ */
+svgedit.draw.Drawing.prototype.getId = function() {
+	return this.nonce_ ?
+		this.idPrefix + this.nonce_ +'_' + this.obj_num :
+ 		this.idPrefix + this.obj_num;
+};
+
+/**
+ * Returns the next object Id as a string.
+ * @return {String} The next object Id to use.
+ */
+svgedit.draw.Drawing.prototype.getNextId = function() {
+	var oldObjNum = this.obj_num;
+	var restoreOldObjNum = false;
+
+	// If there are any released numbers in the release stack, 
+	// use the last one instead of the next obj_num.
+	// We need to temporarily use obj_num as that is what getId() depends on.
+	if (this.releasedNums.length > 0) {
+		this.obj_num = this.releasedNums.pop();
+		restoreOldObjNum = true;
+	} else {
+		// If we are not using a released id, then increment the obj_num.
+		this.obj_num++;
+	}
+
+	// Ensure the ID does not exist.
+	var id = this.getId();
+	while (this.getElem_(id)) {
+		if (restoreOldObjNum) {
+			this.obj_num = oldObjNum;
+			restoreOldObjNum = false;
+		}
+		this.obj_num++;
+		id = this.getId();
+	}
+	// Restore the old object number if required.
+	if (restoreOldObjNum) {
+		this.obj_num = oldObjNum;
+	}
+	return id;
+};
+
+// Function: svgedit.draw.Drawing.releaseId
+// Releases the object Id, letting it be used as the next id in getNextId().
+// This method DOES NOT remove any elements from the DOM, it is expected
+// that client code will do this.
+//
+// Parameters:
+// id - The id to release.
+//
+// Returns:
+// True if the id was valid to be released, false otherwise.
+svgedit.draw.Drawing.prototype.releaseId = function(id) {
+	// confirm if this is a valid id for this Document, else return false
+	var front = this.idPrefix + (this.nonce_ ? this.nonce_ +'_' : '');
+	if (typeof id != typeof '' || id.indexOf(front) != 0) {
+		return false;
+	}
+	// extract the obj_num of this id
+	var num = parseInt(id.substr(front.length));
+
+	// if we didn't get a positive number or we already released this number
+	// then return false.
+	if (typeof num != typeof 1 || num <= 0 || this.releasedNums.indexOf(num) != -1) {
+		return false;
+	}
+	
+	// push the released number into the released queue
+	this.releasedNums.push(num);
+
+	return true;
+};
+
+// Function: svgedit.draw.Drawing.getNumLayers
+// Returns the number of layers in the current drawing.
+// 
+// Returns:
+// The number of layers in the current drawing.
+svgedit.draw.Drawing.prototype.getNumLayers = function() {
+	return this.all_layers.length;
+};
+
+// Function: svgedit.draw.Drawing.hasLayer
+// Check if layer with given name already exists
+svgedit.draw.Drawing.prototype.hasLayer = function(name) {
+	for(var i = 0; i < this.getNumLayers(); i++) {
+		if(this.all_layers[i][0] == name) return true;
+	}
+	return false;
+};
+
+
+// Function: svgedit.draw.Drawing.getLayerName
+// Returns the name of the ith layer. If the index is out of range, an empty string is returned.
+//
+// Parameters:
+// i - the zero-based index of the layer you are querying.
+// 
+// Returns:
+// The name of the ith layer
+svgedit.draw.Drawing.prototype.getLayerName = function(i) {
+	if (i >= 0 && i < this.getNumLayers()) {
+		return this.all_layers[i][0];
+	}
+	return "";
+};
+
+// Function: svgedit.draw.Drawing.getCurrentLayer
+// Returns:
+// The SVGGElement representing the current layer.
+svgedit.draw.Drawing.prototype.getCurrentLayer = function() {
+	return this.current_layer;
+};
+
+// Function: getCurrentLayerName
+// Returns the name of the currently selected layer. If an error occurs, an empty string 
+// is returned.
+//
+// Returns:
+// The name of the currently active layer.
+svgedit.draw.Drawing.prototype.getCurrentLayerName = function() {
+	for (var i = 0; i < this.getNumLayers(); ++i) {
+		if (this.all_layers[i][1] == this.current_layer) {
+			return this.getLayerName(i);
+		}
+	}
+	return "";
+};
+
+// Function: setCurrentLayer
+// Sets the current layer. If the name is not a valid layer name, then this function returns
+// false. Otherwise it returns true. This is not an undo-able action.
+//
+// Parameters:
+// name - the name of the layer you want to switch to.
+//
+// Returns:
+// true if the current layer was switched, otherwise false
+svgedit.draw.Drawing.prototype.setCurrentLayer = function(name) {
+	for (var i = 0; i < this.getNumLayers(); ++i) {
+		if (name == this.getLayerName(i)) {
+			if (this.current_layer != this.all_layers[i][1]) {
+				this.current_layer.setAttribute("style", "pointer-events:none");
+				this.current_layer = this.all_layers[i][1];
+				this.current_layer.setAttribute("style", "pointer-events:all");
+			}
+			return true;
+		}
+	}
+	return false;
+};
+
+
+// Function: svgedit.draw.Drawing.deleteCurrentLayer
+// Deletes the current layer from the drawing and then clears the selection. This function 
+// then calls the 'changed' handler.  This is an undoable action.
+// Returns:
+// The SVGGElement of the layer removed or null.
+svgedit.draw.Drawing.prototype.deleteCurrentLayer = function() {
+	if (this.current_layer && this.getNumLayers() > 1) {
+		// actually delete from the DOM and return it
+		var parent = this.current_layer.parentNode;
+		var nextSibling = this.current_layer.nextSibling;
+		var oldLayerGroup = parent.removeChild(this.current_layer);
+		this.identifyLayers();
+		return oldLayerGroup;
+	}
+	return null;
+};
+
+// Function: svgedit.draw.Drawing.identifyLayers
+// Updates layer system and sets the current layer to the
+// top-most layer (last <g> child of this drawing).
+svgedit.draw.Drawing.prototype.identifyLayers = function() {
+	this.all_layers = [];
+	var numchildren = this.svgElem_.childNodes.length;
+	// loop through all children of SVG element
+	var orphans = [], layernames = [];
+	var a_layer = null;
+	var childgroups = false;
+	for (var i = 0; i < numchildren; ++i) {
+		var child = this.svgElem_.childNodes.item(i);
+		// for each g, find its layer name
+		if (child && child.nodeType == 1) {
+			if (child.tagName == "g") {
+				childgroups = true;
+				var name = $("title",child).text();
+				
+				// Hack for Opera 10.60
+				if(!name && svgedit.browser.isOpera() && child.querySelectorAll) {
+					name = $(child.querySelectorAll('title')).text();
+				}
+
+				// store layer and name in global variable
+				if (name) {
+					layernames.push(name);
+					this.all_layers.push( [name,child] );
+					a_layer = child;
+					svgedit.utilities.walkTree(child, function(e){e.setAttribute("style", "pointer-events:inherit");});
+					a_layer.setAttribute("style", "pointer-events:none");
+				}
+				// if group did not have a name, it is an orphan
+				else {
+					orphans.push(child);
+				}
+			}
+			// if child has is "visible" (i.e. not a <title> or <defs> element), then it is an orphan
+			else if(~visElems_arr.indexOf(child.nodeName)) {
+				var bb = svgedit.utilities.getBBox(child);
+				orphans.push(child);
+			}
+		}
+	}
+	
+	// create a new layer and add all the orphans to it
+	var svgdoc = this.svgElem_.ownerDocument;
+	if (orphans.length > 0 || !childgroups) {
+		var i = 1;
+		// TODO(codedread): What about internationalization of "Layer"?
+		while (layernames.indexOf(("Layer " + i)) >= 0) { i++; }
+		var newname = "Layer " + i;
+		a_layer = svgdoc.createElementNS(svg_ns, "g");
+		var layer_title = svgdoc.createElementNS(svg_ns, "title");
+		layer_title.textContent = newname;
+		a_layer.appendChild(layer_title);
+		for (var j = 0; j < orphans.length; ++j) {
+			a_layer.appendChild(orphans[j]);
+		}
+		this.svgElem_.appendChild(a_layer);
+		this.all_layers.push( [newname, a_layer] );
+	}
+	svgedit.utilities.walkTree(a_layer, function(e){e.setAttribute("style","pointer-events:inherit");});
+	if (a_layer.getAttribute("data-locked") === "true") {
+		this.current_layer = this.all_layers.slice(-2)[0][1]
+	}
+	else {
+		this.current_layer = a_layer
+	}
+	this.current_layer.setAttribute("style","pointer-events:all");
+};
+
+// Function: svgedit.draw.Drawing.createLayer
+// Creates a new top-level layer in the drawing with the given name and 
+// sets the current layer to it.
+//
+// Parameters:
+// name - The given name
+//
+// Returns:
+// The SVGGElement of the new layer, which is also the current layer
+// of this drawing.
+svgedit.draw.Drawing.prototype.createLayer = function(name) {
+	var svgdoc = this.svgElem_.ownerDocument;
+	var new_layer = svgdoc.createElementNS(svg_ns, "g");
+	var layer_title = svgdoc.createElementNS(svg_ns, "title");
+	layer_title.textContent = name;
+	new_layer.appendChild(layer_title);
+	this.svgElem_.appendChild(new_layer);
+	this.identifyLayers();
+	return new_layer;
+};
+
+// Function: svgedit.draw.Drawing.getLayerVisibility
+// Returns whether the layer is visible.  If the layer name is not valid, then this function
+// returns false.
+//
+// Parameters:
+// layername - the name of the layer which you want to query.
+//
+// Returns:
+// The visibility state of the layer, or false if the layer name was invalid.
+svgedit.draw.Drawing.prototype.getLayerVisibility = function(layername) {
+	// find the layer
+	var layer = null;
+	for (var i = 0; i < this.getNumLayers(); ++i) {
+		if (this.getLayerName(i) == layername) {
+			layer = this.all_layers[i][1];
+			break;
+		}
+	}
+	if (!layer) return false;
+	return (layer.getAttribute('display') != 'none');
+};
+
+// Function: svgedit.draw.Drawing.setLayerVisibility
+// Sets the visibility of the layer. If the layer name is not valid, this function return 
+// false, otherwise it returns true. This is an undo-able action.
+//
+// Parameters:
+// layername - the name of the layer to change the visibility
+// bVisible - true/false, whether the layer should be visible
+//
+// Returns:
+// The SVGGElement representing the layer if the layername was valid, otherwise null.
+svgedit.draw.Drawing.prototype.setLayerVisibility = function(layername, bVisible) {
+	if (typeof bVisible != typeof true) {
+		return null;
+	}
+	// find the layer
+	var layer = null;
+	for (var i = 0; i < this.getNumLayers(); ++i) {
+		if (this.getLayerName(i) == layername) {
+			layer = this.all_layers[i][1];
+			break;
+		}
+	}
+	if (!layer) return null;
+	
+	var oldDisplay = layer.getAttribute("display");
+	if (!oldDisplay) oldDisplay = "inline";
+	layer.setAttribute("display", bVisible ? "inline" : "none");
+	return layer;
+};
+
+
+// Function: svgedit.draw.Drawing.getLayerOpacity
+// Returns the opacity of the given layer.  If the input name is not a layer, null is returned.
+//
+// Parameters: 
+// layername - name of the layer on which to get the opacity
+//
+// Returns:
+// The opacity value of the given layer.  This will be a value between 0.0 and 1.0, or null
+// if layername is not a valid layer
+svgedit.draw.Drawing.prototype.getLayerOpacity = function(layername) {
+	for (var i = 0; i < this.getNumLayers(); ++i) {
+		if (this.getLayerName(i) == layername) {
+			var g = this.all_layers[i][1];
+			var opacity = g.getAttribute('opacity');
+			if (!opacity) {
+				opacity = '1.0';
+			}
+			return parseFloat(opacity);
+		}
+	}
+	return null;
+};
+
+// Function: svgedit.draw.Drawing.setLayerOpacity
+// Sets the opacity of the given layer.  If the input name is not a layer, nothing happens.
+// If opacity is not a value between 0.0 and 1.0, then nothing happens.
+//
+// Parameters:
+// layername - name of the layer on which to set the opacity
+// opacity - a float value in the range 0.0-1.0
+svgedit.draw.Drawing.prototype.setLayerOpacity = function(layername, opacity) {
+	if (typeof opacity != typeof 1.0 || opacity < 0.0 || opacity > 1.0) {
+		return;
+	}
+	for (var i = 0; i < this.getNumLayers(); ++i) {
+		if (this.getLayerName(i) == layername) {
+			var g = this.all_layers[i][1];
+			g.setAttribute("opacity", opacity);
+			break;
+		}
+	}
+};
+
+})();
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/embedapi.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/embedapi.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/embedapi.js	(revision 29468)
@@ -0,0 +1,173 @@
+﻿/*
+function embedded_svg_edit(frame){
+  //initialize communication
+  this.frame = frame;
+  this.stack = []; //callback stack
+  
+  var editapi = this;
+  
+  window.addEventListener("message", function(e){
+    if(e.data.substr(0,5) == "ERROR"){
+      editapi.stack.splice(0,1)[0](e.data,"error")
+    }else{
+      editapi.stack.splice(0,1)[0](e.data)
+    }
+  }, false)
+}
+
+embedded_svg_edit.prototype.call = function(code, callback){
+  this.stack.push(callback);
+  this.frame.contentWindow.postMessage(code,"*");
+}
+
+embedded_svg_edit.prototype.getSvgString = function(callback){
+  this.call("svgCanvas.getSvgString()",callback)
+}
+
+embedded_svg_edit.prototype.setSvgString = function(svg){
+  this.call("svgCanvas.setSvgString('"+svg.replace(/'/g, "\\'")+"')");
+}
+*/
+
+
+/*
+Embedded SVG-edit API
+
+General usage:
+- Have an iframe somewhere pointing to a version of svg-edit > r1000
+- Initialize the magic with:
+var svgCanvas = new embedded_svg_edit(window.frames['svgedit']);
+- Pass functions in this format:
+svgCanvas.setSvgString("string")
+- Or if a callback is needed:
+svgCanvas.setSvgString("string")(function(data, error){
+  if(error){
+    //there was an error
+  }else{
+    //handle data
+  }
+})
+
+Everything is done with the same API as the real svg-edit, 
+and all documentation is unchanged. The only difference is
+when handling returns, the callback notation is used instead. 
+
+var blah = new embedded_svg_edit(window.frames['svgedit']);
+blah.clearSelection("woot","blah",1337,[1,2,3,4,5,"moo"],-42,{a: "tree",b:6, c: 9})(function(){console.log("GET DATA",arguments)})
+*/
+
+function embedded_svg_edit(frame){
+  //initialize communication
+  this.frame = frame;
+  //this.stack = [] //callback stack
+  this.callbacks = {}; //successor to stack
+  this.encode = embedded_svg_edit.encode;
+  //List of functions extracted with this:
+  //Run in firebug on http://svg-edit.googlecode.com/svn/trunk/docs/files/svgcanvas-js.html
+  
+  //for(var i=0,q=[],f = document.querySelectorAll("div.CFunction h3.CTitle a");i<f.length;i++){q.push(f[i].name)};q
+  //var functions = ["clearSelection", "addToSelection", "removeFromSelection", "open", "save", "getSvgString", "setSvgString",
+  //"createLayer", "deleteCurrentLayer", "setCurrentLayer", "renameCurrentLayer", "setCurrentLayerPosition", "setLayerVisibility",
+  //"moveSelectedToLayer", "clear"];
+  
+  
+  //Newer, well, it extracts things that aren't documented as well. All functions accessible through the normal thingy can now be accessed though the API
+  //var l=[];for(var i in svgCanvas){if(typeof svgCanvas[i] == "function"){l.push(i)}};
+  //run in svgedit itself
+  var functions = ["updateElementFromJson", "embedImage", "fixOperaXML", "clearSelection", "addToSelection",
+		"removeFromSelection", "addNodeToSelection", "open", "save", "getSvgString", "setSvgString", "createLayer",
+		"deleteCurrentLayer", "getCurrentDrawing", "setCurrentLayer", "renameCurrentLayer", "setCurrentLayerPosition",
+		"setLayerVisibility", "moveSelectedToLayer", "clear", "clearPath", "getNodePoint", "clonePathNode", "deletePathNode",
+		"getResolution", "getImageTitle", "setImageTitle", "setResolution", "setBBoxZoom", "setZoom", "getMode", "setMode",
+		"getStrokeColor", "setStrokeColor", "getFillColor", "setFillColor", "setStrokePaint", "setFillPaint", "getStrokeWidth",
+		"setStrokeWidth", "getStrokeStyle", "setStrokeStyle", "getOpacity", "setOpacity", "getFillOpacity", "setFillOpacity",
+		"getStrokeOpacity", "setStrokeOpacity", "getTransformList", "getBBox", "getRotationAngle", "setRotationAngle", "each",
+		"bind", "setIdPrefix", "getBold", "setBold", "getItalic", "setItalic", "getFontFamily", "setFontFamily", "getFontSize",
+		"setFontSize", "getText", "setTextContent", "setImageURL", "setRectRadius", "setSegType", "quickClone",
+		"changeSelectedAttributeNoUndo", "changeSelectedAttribute", "deleteSelectedElements", "groupSelectedElements",
+		"ungroupSelectedElement", "moveToTopSelectedElement", "moveToBottomSelectedElement", "moveSelectedElements",
+		"getStrokedBBox", "getVisibleElements", "cycleElement", "getUndoStackSize", "getRedoStackSize", "getNextUndoCommandText",
+		"getNextRedoCommandText", "undo", "redo", "cloneSelectedElements", "alignSelectedElements", "getZoom", "getVersion",
+		"setIconSize", "setLang", "setCustomHandlers"];
+  
+  //TODO: rewrite the following, it's pretty scary.
+  for(var i = 0; i < functions.length; i++){
+    this[functions[i]] = (function(d){
+      return function(){
+        var t = this //new callback
+        for(var g = 0, args = []; g < arguments.length; g++){
+          args.push(arguments[g]);
+        }
+        var cbid = t.send(d,args, function(){})  //the callback (currently it's nothing, but will be set later
+        
+        return function(newcallback){
+          t.callbacks[cbid] = newcallback; //set callback
+        }
+      }
+    })(functions[i])
+  }
+  //TODO: use AddEvent for Trident browsers, currently they dont support SVG, but they do support onmessage
+  var t = this;
+  window.addEventListener("message", function(e){
+    if(e.data.substr(0,4)=="SVGe"){ //because svg-edit is too longish
+      var data = e.data.substr(4);
+      var cbid = data.substr(0, data.indexOf(";"));
+      if(t.callbacks[cbid]){
+        if(data.substr(0,6) != "error:"){
+          t.callbacks[cbid](eval("("+data.substr(cbid.length+1)+")"))
+        }else{
+          t.callbacks[cbid](data, "error");
+        }
+      }
+    }
+    //this.stack.shift()[0](e.data,e.data.substr(0,5) == "ERROR"?'error':null) //replace with shift
+  }, false)
+}
+
+embedded_svg_edit.encode = function(obj){
+  //simple partial JSON encoder implementation
+  if(window.JSON && JSON.stringify) return JSON.stringify(obj);
+  var enc = arguments.callee; //for purposes of recursion
+  
+  if(typeof obj == "boolean" || typeof obj == "number"){
+      return obj+'' //should work...
+  }else if(typeof obj == "string"){
+    //a large portion of this is stolen from Douglas Crockford's json2.js
+    return '"'+
+          obj.replace(
+            /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g
+          , function (a) {
+            return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+          })
+          +'"'; //note that this isn't quite as purtyful as the usualness
+  }else if(obj.length){ //simple hackish test for arrayish-ness
+    for(var i = 0; i < obj.length; i++){
+      obj[i] = enc(obj[i]); //encode every sub-thingy on top
+    }
+    return "["+obj.join(",")+"]";
+  }else{
+    var pairs = []; //pairs will be stored here
+    for(var k in obj){ //loop through thingys
+      pairs.push(enc(k)+":"+enc(obj[k])); //key: value
+    }
+    return "{"+pairs.join(",")+"}" //wrap in the braces
+  }
+}
+
+embedded_svg_edit.prototype.send = function(name, args, callback){
+  var cbid = Math.floor(Math.random()*31776352877+993577).toString();
+  //this.stack.push(callback);
+  this.callbacks[cbid] = callback;
+  for(var argstr = [], i = 0; i < args.length; i++){
+    argstr.push(this.encode(args[i]))
+  }
+  var t = this;
+  setTimeout(function(){//delay for the callback to be set in case its synchronous
+    t.frame.contentWindow.postMessage(cbid+";svgCanvas['"+name+"']("+argstr.join(",")+")","*");
+  }, 0);
+  return cbid;
+  //this.stack.shift()("svgCanvas['"+name+"']("+argstr.join(",")+")")
+}
+
+
+
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/history.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/history.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/history.js	(revision 29468)
@@ -0,0 +1,601 @@
+/**
+ * Package: svedit.history
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Jeff Schiller
+ */
+
+// Dependencies:
+// 1) jQuery
+// 2) svgtransformlist.js
+// 3) svgutils.js
+
+var svgedit = svgedit || {};
+
+(function() {
+
+if (!svgedit.history) {
+	svgedit.history = {};
+}
+
+// Group: Undo/Redo history management
+
+
+svgedit.history.HistoryEventTypes = {
+	BEFORE_APPLY: 'before_apply',
+	AFTER_APPLY: 'after_apply',
+	BEFORE_UNAPPLY: 'before_unapply',
+	AFTER_UNAPPLY: 'after_unapply'
+};
+
+var removedElements = {};
+
+/**
+ * Interface: svgedit.history.HistoryCommand
+ * An interface that all command objects must implement.
+ *
+ * interface svgedit.history.HistoryCommand {
+ *   void apply(svgedit.history.HistoryEventHandler);
+ *   void unapply(svgedit.history.HistoryEventHandler);
+ *   Element[] elements();
+ *   String getText();
+ *
+ *   static String type();
+ * }
+ *
+ * Interface: svgedit.history.HistoryEventHandler
+ * An interface for objects that will handle history events.
+ *
+ * interface svgedit.history.HistoryEventHandler {
+ *   void handleHistoryEvent(eventType, command);
+ * }
+ *
+ * eventType is a string conforming to one of the HistoryEvent types.
+ * command is an object fulfilling the HistoryCommand interface.
+ */
+
+// Class: svgedit.history.MoveElementCommand
+// implements svgedit.history.HistoryCommand
+// History command for an element that had its DOM position changed
+//
+// Parameters:
+// elem - The DOM element that was moved
+// oldNextSibling - The element's next sibling before it was moved
+// oldParent - The element's parent before it was moved
+// text - An optional string visible to user related to this change
+svgedit.history.MoveElementCommand = function(elem, oldNextSibling, oldParent, text) {
+	this.elem = elem;
+	this.text = text ? ("Move " + elem.tagName + " to " + text) : ("Move " + elem.tagName);
+	this.oldNextSibling = oldNextSibling;
+	this.oldParent = oldParent;
+	this.newNextSibling = elem.nextSibling;
+	this.newParent = elem.parentNode;
+};
+svgedit.history.MoveElementCommand.type = function() { return 'svgedit.history.MoveElementCommand'; }
+svgedit.history.MoveElementCommand.prototype.type = svgedit.history.MoveElementCommand.type;
+
+// Function: svgedit.history.MoveElementCommand.getText
+svgedit.history.MoveElementCommand.prototype.getText = function() {
+	return this.text;
+};
+
+// Function: svgedit.history.MoveElementCommand.apply
+// Re-positions the element
+svgedit.history.MoveElementCommand.prototype.apply = function(handler) {
+	// TODO(codedread): Refactor this common event code into a base HistoryCommand class.
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_APPLY, this);
+	}
+
+	this.elem = this.newParent.insertBefore(this.elem, this.newNextSibling);
+
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_APPLY, this);
+	}
+};
+
+// Function: svgedit.history.MoveElementCommand.unapply
+// Positions the element back to its original location
+svgedit.history.MoveElementCommand.prototype.unapply = function(handler) {
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_UNAPPLY, this);
+	}
+		
+	this.elem = this.oldParent.insertBefore(this.elem, this.oldNextSibling);
+
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_UNAPPLY, this);
+	}
+};
+
+// Function: svgedit.history.MoveElementCommand.elements
+// Returns array with element associated with this command
+svgedit.history.MoveElementCommand.prototype.elements = function() {
+	return [this.elem];
+};
+
+
+// Class: svgedit.history.InsertElementCommand
+// implements svgedit.history.HistoryCommand
+// History command for an element that was added to the DOM
+//
+// Parameters:
+// elem - The newly added DOM element
+// text - An optional string visible to user related to this change
+svgedit.history.InsertElementCommand = function(elem, text) {
+	this.elem = elem;
+	this.text = text || ("Create " + elem.tagName);
+	this.parent = elem.parentNode;
+	this.nextSibling = this.elem.nextSibling;
+};
+svgedit.history.InsertElementCommand.type = function() { return 'svgedit.history.InsertElementCommand'; }
+svgedit.history.InsertElementCommand.prototype.type = svgedit.history.InsertElementCommand.type;
+
+// Function: svgedit.history.InsertElementCommand.getText
+svgedit.history.InsertElementCommand.prototype.getText = function() {
+	return this.text;
+};
+
+// Function: svgedit.history.InsertElementCommand.apply
+// Re-Inserts the new element
+svgedit.history.InsertElementCommand.prototype.apply = function(handler) { 
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_APPLY, this);
+	}
+
+	this.elem = this.parent.insertBefore(this.elem, this.nextSibling); 
+
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_APPLY, this);
+	}
+};
+
+// Function: svgedit.history.InsertElementCommand.unapply
+// Removes the element
+svgedit.history.InsertElementCommand.prototype.unapply = function(handler) {
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_UNAPPLY, this);
+	}
+
+	this.parent = this.elem.parentNode;
+	this.elem = this.elem.parentNode.removeChild(this.elem);
+
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_UNAPPLY, this);
+	}
+};
+
+// Function: svgedit.history.InsertElementCommand.elements
+// Returns array with element associated with this command
+svgedit.history.InsertElementCommand.prototype.elements = function() {
+	return [this.elem];
+};
+
+
+// Class: svgedit.history.RemoveElementCommand
+// implements svgedit.history.HistoryCommand
+// History command for an element removed from the DOM
+//
+// Parameters:
+// elem - The removed DOM element
+// oldNextSibling - the DOM element's nextSibling when it was in the DOM
+// oldParent - The DOM element's parent
+// text - An optional string visible to user related to this change
+svgedit.history.RemoveElementCommand = function(elem, oldNextSibling, oldParent, text) {
+	this.elem = elem;
+	this.text = text || ("Delete " + elem.tagName);
+	this.nextSibling = oldNextSibling;
+	this.parent = oldParent;
+
+	// special hack for webkit: remove this element's entry in the svgTransformLists map
+	svgedit.transformlist.removeElementFromListMap(elem);
+};
+svgedit.history.RemoveElementCommand.type = function() { return 'svgedit.history.RemoveElementCommand'; }
+svgedit.history.RemoveElementCommand.prototype.type = svgedit.history.RemoveElementCommand.type;
+
+// Function: svgedit.history.RemoveElementCommand.getText
+svgedit.history.RemoveElementCommand.prototype.getText = function() {
+	return this.text;
+};
+
+// Function: RemoveElementCommand.apply
+// Re-removes the new element
+svgedit.history.RemoveElementCommand.prototype.apply = function(handler) {	
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_APPLY, this);
+	}
+
+	svgedit.transformlist.removeElementFromListMap(this.elem);
+	this.parent = this.elem.parentNode;
+	this.elem = this.parent.removeChild(this.elem);
+
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_APPLY, this);
+	}
+};
+
+// Function: RemoveElementCommand.unapply
+// Re-adds the new element
+svgedit.history.RemoveElementCommand.prototype.unapply = function(handler) { 
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_UNAPPLY, this);
+	}
+
+	svgedit.transformlist.removeElementFromListMap(this.elem);
+	if(this.nextSibling == null) {
+		if(window.console) console.log('Error: reference element was lost');
+	}
+	this.parent.insertBefore(this.elem, this.nextSibling);
+
+
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_UNAPPLY, this);
+	}
+};
+
+// Function: RemoveElementCommand.elements
+// Returns array with element associated with this command
+svgedit.history.RemoveElementCommand.prototype.elements = function() {
+	return [this.elem];
+};
+
+
+// Class: svgedit.history.ChangeElementCommand
+// implements svgedit.history.HistoryCommand
+// History command to make a change to an element. 
+// Usually an attribute change, but can also be textcontent.
+//
+// Parameters:
+// elem - The DOM element that was changed
+// attrs - An object with the attributes to be changed and the values they had *before* the change
+// text - An optional string visible to user related to this change
+svgedit.history.ChangeElementCommand = function(elem, attrs, text) {
+	this.elem = elem;
+	this.text = text ? ("Change " + elem.tagName + " " + text) : ("Change " + elem.tagName);
+	this.newValues = {};
+	this.oldValues = attrs;
+	for (var attr in attrs) {
+		if (attr == "#text") this.newValues[attr] = elem.textContent;
+		else if (attr == "#href") this.newValues[attr] = svgedit.utilities.getHref(elem);
+		else this.newValues[attr] = elem.getAttribute(attr);
+	}
+};
+svgedit.history.ChangeElementCommand.type = function() { return 'svgedit.history.ChangeElementCommand'; }
+svgedit.history.ChangeElementCommand.prototype.type = svgedit.history.ChangeElementCommand.type;
+
+// Function: svgedit.history.ChangeElementCommand.getText
+svgedit.history.ChangeElementCommand.prototype.getText = function() {
+	return this.text;
+};
+
+// Function: svgedit.history.ChangeElementCommand.apply
+// Performs the stored change action
+svgedit.history.ChangeElementCommand.prototype.apply = function(handler) {
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_APPLY, this);
+	}
+
+	var bChangedTransform = false;
+	for(var attr in this.newValues ) {
+		if (this.newValues[attr]) {
+			if (attr == "#text") this.elem.textContent = this.newValues[attr];
+			else if (attr == "#href") svgedit.utilities.setHref(this.elem, this.newValues[attr])
+			else this.elem.setAttribute(attr, this.newValues[attr]);
+		}
+		else {
+			if (attr == "#text") {
+				this.elem.textContent = "";
+			}
+			else {
+				this.elem.setAttribute(attr, "");
+				this.elem.removeAttribute(attr);
+			}
+		}
+
+		if (attr == "transform") { bChangedTransform = true; }
+	}
+
+	// relocate rotational transform, if necessary
+	if(!bChangedTransform) {
+		var angle = svgedit.utilities.getRotationAngle(this.elem);
+		if (angle) {
+			var bbox = elem.getBBox();
+			var cx = bbox.x + bbox.width/2,
+				cy = bbox.y + bbox.height/2;
+			var rotate = ["rotate(", angle, " ", cx, ",", cy, ")"].join('');
+			if (rotate != elem.getAttribute("transform")) {
+				elem.setAttribute("transform", rotate);
+			}
+		}
+	}
+
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_APPLY, this);
+	}
+
+	return true;
+};
+
+// Function: svgedit.history.ChangeElementCommand.unapply
+// Reverses the stored change action
+svgedit.history.ChangeElementCommand.prototype.unapply = function(handler) {
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_UNAPPLY, this);
+	}
+
+	var bChangedTransform = false;
+	for(var attr in this.oldValues ) {
+		if (this.oldValues[attr]) {
+			if (attr == "#text") this.elem.textContent = this.oldValues[attr];
+			else if (attr == "#href") svgedit.utilities.setHref(this.elem, this.oldValues[attr]);
+			else this.elem.setAttribute(attr, this.oldValues[attr]);
+		}
+		else {
+			if (attr == "#text") {
+				this.elem.textContent = "";
+			}
+			else this.elem.removeAttribute(attr);
+		}
+		if (attr == "transform") { bChangedTransform = true; }
+	}
+	// relocate rotational transform, if necessary
+	if(!bChangedTransform) {
+		var angle = svgedit.utilities.getRotationAngle(this.elem);
+		if (angle) {
+			var bbox = this.elem.getBBox();
+			var cx = bbox.x + bbox.width/2,
+				cy = bbox.y + bbox.height/2;
+			var rotate = ["rotate(", angle, " ", cx, ",", cy, ")"].join('');
+			if (rotate != this.elem.getAttribute("transform")) {
+				this.elem.setAttribute("transform", rotate);
+			}
+		}
+	}
+
+	// Remove transformlist to prevent confusion that causes bugs like 575.
+	svgedit.transformlist.removeElementFromListMap(this.elem);
+
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_UNAPPLY, this);
+	}
+
+	return true;
+};
+
+// Function: ChangeElementCommand.elements
+// Returns array with element associated with this command
+svgedit.history.ChangeElementCommand.prototype.elements = function() {
+	return [this.elem];
+};
+
+
+// TODO: create a 'typing' command object that tracks changes in text
+// if a new Typing command is created and the top command on the stack is also a Typing
+// and they both affect the same element, then collapse the two commands into one
+
+
+// Class: svgedit.history.BatchCommand
+// implements svgedit.history.HistoryCommand
+// History command that can contain/execute multiple other commands
+//
+// Parameters:
+// text - An optional string visible to user related to this change
+svgedit.history.BatchCommand = function(text) {
+	this.text = text || "Batch Command";
+	this.stack = [];
+};
+svgedit.history.BatchCommand.type = function() { return 'svgedit.history.BatchCommand'; }
+svgedit.history.BatchCommand.prototype.type = svgedit.history.BatchCommand.type;
+
+// Function: svgedit.history.BatchCommand.getText
+svgedit.history.BatchCommand.prototype.getText = function() {
+	return this.text;
+};
+
+// Function: svgedit.history.BatchCommand.apply
+// Runs "apply" on all subcommands
+svgedit.history.BatchCommand.prototype.apply = function(handler) {
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_APPLY, this);
+	}
+
+	var len = this.stack.length;
+	for (var i = 0; i < len; ++i) {
+		this.stack[i].apply(handler);
+	}
+
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_APPLY, this);
+	}
+};
+
+// Function: svgedit.history.BatchCommand.unapply
+// Runs "unapply" on all subcommands
+svgedit.history.BatchCommand.prototype.unapply = function(handler) {
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_UNAPPLY, this);
+	}
+
+	for (var i = this.stack.length-1; i >= 0; i--) {
+		this.stack[i].unapply(handler);
+	}
+
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_UNAPPLY, this);
+	}
+};
+
+// Function: svgedit.history.BatchCommand.elements
+// Iterate through all our subcommands and returns all the elements we are changing
+svgedit.history.BatchCommand.prototype.elements = function() {
+	var elems = [];
+	var cmd = this.stack.length;
+	while (cmd--) {
+		var thisElems = this.stack[cmd].elements();
+		var elem = thisElems.length;
+		while (elem--) {
+			if (elems.indexOf(thisElems[elem]) == -1) elems.push(thisElems[elem]);
+		}
+	}
+	return elems;
+};
+
+// Function: svgedit.history.BatchCommand.addSubCommand
+// Adds a given command to the history stack
+//
+// Parameters:
+// cmd - The undo command object to add
+svgedit.history.BatchCommand.prototype.addSubCommand = function(cmd) {
+	this.stack.push(cmd);
+};
+
+// Function: svgedit.history.BatchCommand.isEmpty
+// Returns a boolean indicating whether or not the batch command is empty
+svgedit.history.BatchCommand.prototype.isEmpty = function() {
+	return this.stack.length == 0;
+};
+
+
+// Class: svgedit.history.UndoManager
+// Parameters:
+// historyEventHandler - an object that conforms to the HistoryEventHandler interface
+// (see above)
+svgedit.history.UndoManager = function(historyEventHandler) {
+	this.handler_ = historyEventHandler || null;
+	this.undoStackPointer = 0;
+	this.undoStack = [];
+
+	// this is the stack that stores the original values, the elements and
+	// the attribute name for begin/finish
+	this.undoChangeStackPointer = -1;
+	this.undoableChangeStack = [];
+};
+	
+// Function: svgedit.history.UndoManager.resetUndoStack
+// Resets the undo stack, effectively clearing the undo/redo history
+svgedit.history.UndoManager.prototype.resetUndoStack = function() {
+	this.undoStack = [];
+	this.undoStackPointer = 0;
+};
+
+// Function: svgedit.history.UndoManager.getUndoStackSize
+// Returns: 
+// Integer with the current size of the undo history stack
+svgedit.history.UndoManager.prototype.getUndoStackSize = function() {
+	return this.undoStackPointer;
+};
+
+// Function: svgedit.history.UndoManager.getRedoStackSize
+// Returns: 
+// Integer with the current size of the redo history stack
+svgedit.history.UndoManager.prototype.getRedoStackSize = function() {
+	return this.undoStack.length - this.undoStackPointer;
+};
+
+// Function: svgedit.history.UndoManager.getNextUndoCommandText
+// Returns: 
+// String associated with the next undo command
+svgedit.history.UndoManager.prototype.getNextUndoCommandText = function() { 
+	return this.undoStackPointer > 0 ? this.undoStack[this.undoStackPointer-1].getText() : "";
+};
+
+// Function: svgedit.history.UndoManager.getNextRedoCommandText
+// Returns: 
+// String associated with the next redo command
+svgedit.history.UndoManager.prototype.getNextRedoCommandText = function() { 
+	return this.undoStackPointer < this.undoStack.length ? this.undoStack[this.undoStackPointer].getText() : "";
+};
+
+// Function: svgedit.history.UndoManager.undo
+// Performs an undo step
+svgedit.history.UndoManager.prototype.undo = function() {
+	if (this.undoStackPointer > 0) {
+		var cmd = this.undoStack[--this.undoStackPointer];
+		cmd.unapply(this.handler_);
+	}
+};
+
+// Function: svgedit.history.UndoManager.redo		
+// Performs a redo step
+svgedit.history.UndoManager.prototype.redo = function() {
+	if (this.undoStackPointer < this.undoStack.length && this.undoStack.length > 0) {
+		var cmd = this.undoStack[this.undoStackPointer++];
+		cmd.apply(this.handler_);
+	}
+};
+	
+// Function: svgedit.history.UndoManager.addCommandToHistory
+// Adds a command object to the undo history stack
+//
+// Parameters: 
+// cmd - The command object to add
+svgedit.history.UndoManager.prototype.addCommandToHistory = function(cmd) {
+	// FIXME: we MUST compress consecutive text changes to the same element
+	// (right now each keystroke is saved as a separate command that includes the
+	// entire text contents of the text element)
+	// TODO: consider limiting the history that we store here (need to do some slicing)
+	
+	// if our stack pointer is not at the end, then we have to remove
+	// all commands after the pointer and insert the new command
+	if (this.undoStackPointer < this.undoStack.length && this.undoStack.length > 0) {
+		this.undoStack = this.undoStack.splice(0, this.undoStackPointer);
+	}
+	this.undoStack.push(cmd);
+	this.undoStackPointer = this.undoStack.length;
+};
+
+
+// Function: svgedit.history.UndoManager.beginUndoableChange
+// This function tells the canvas to remember the old values of the 
+// attrName attribute for each element sent in.  The elements and values 
+// are stored on a stack, so the next call to finishUndoableChange() will 
+// pop the elements and old values off the stack, gets the current values
+// from the DOM and uses all of these to construct the undo-able command.
+//
+// Parameters: 
+// attrName - The name of the attribute being changed
+// elems - Array of DOM elements being changed
+svgedit.history.UndoManager.prototype.beginUndoableChange = function(attrName, elems) {
+	var p = ++this.undoChangeStackPointer;
+	var i = elems.length;
+	var oldValues = new Array(i), elements = new Array(i);
+	while (i--) {
+		var elem = elems[i];
+		if (elem == null) continue;
+		elements[i] = elem;
+		oldValues[i] = elem.getAttribute(attrName);
+	}
+	this.undoableChangeStack[p] = {'attrName': attrName,
+							'oldValues': oldValues,
+							'elements': elements};
+};
+
+// Function: svgedit.history.UndoManager.finishUndoableChange
+// This function returns a BatchCommand object which summarizes the
+// change since beginUndoableChange was called.  The command can then
+// be added to the command history
+//
+// Returns: 
+// Batch command object with resulting changes
+svgedit.history.UndoManager.prototype.finishUndoableChange = function() {
+	var p = this.undoChangeStackPointer--;
+	var changeset = this.undoableChangeStack[p];
+	var i = changeset['elements'].length;
+	var attrName = changeset['attrName'];
+	var batchCmd = new svgedit.history.BatchCommand("Change " + attrName);
+	while (i--) {
+		var elem = changeset['elements'][i];
+		if (elem == null) continue;
+		var changes = {};
+		changes[attrName] = changeset['oldValues'][i];
+		if (changes[attrName] != elem.getAttribute(attrName)) {
+			batchCmd.addSubCommand(new svgedit.history.ChangeElementCommand(elem, changes, attrName));
+		}
+	}
+	this.undoableChangeStack[p] = null;
+	return batchCmd;
+};
+
+
+})();
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/math.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/math.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/math.js	(revision 29468)
@@ -0,0 +1,247 @@
+/**
+ * Package: svedit.math
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ * Copyright(c) 2010 Jeff Schiller
+ */
+
+// Dependencies:
+// None.
+
+var svgedit = svgedit || {};
+
+(function() {
+
+if (!svgedit.math) {
+	svgedit.math = {};
+}
+
+// Constants
+var NEAR_ZERO = 1e-14;
+
+// Throw away SVGSVGElement used for creating matrices/transforms.
+var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
+
+// Function: svgedit.math.transformPoint
+// A (hopefully) quicker function to transform a point by a matrix
+// (this function avoids any DOM calls and just does the math)
+// 
+// Parameters:
+// x - Float representing the x coordinate
+// y - Float representing the y coordinate
+// m - Matrix object to transform the point with
+// Returns a x,y object representing the transformed point
+svgedit.math.transformPoint = function(x, y, m) {
+	return { x: m.a * x + m.c * y + m.e, y: m.b * x + m.d * y + m.f};
+};
+
+
+// Function: svgedit.math.isIdentity
+// Helper function to check if the matrix performs no actual transform 
+// (i.e. exists for identity purposes)
+//
+// Parameters: 
+// m - The matrix object to check
+//
+// Returns:
+// Boolean indicating whether or not the matrix is 1,0,0,1,0,0
+svgedit.math.isIdentity = function(m) {
+	return (m.a === 1 && m.b === 0 && m.c === 0 && m.d === 1 && m.e === 0 && m.f === 0);
+};
+
+
+// Function: svgedit.math.matrixMultiply
+// This function tries to return a SVGMatrix that is the multiplication m1*m2.
+// We also round to zero when it's near zero
+// 
+// Parameters:
+// >= 2 Matrix objects to multiply
+//
+// Returns: 
+// The matrix object resulting from the calculation
+svgedit.math.matrixMultiply = function() {
+	var args = arguments, i = args.length, m = args[i-1];
+	
+	while(i-- > 1) {
+		var m1 = args[i-1];
+		m = m1.multiply(m);
+	}
+	if (Math.abs(m.a) < NEAR_ZERO) m.a = 0;
+	if (Math.abs(m.b) < NEAR_ZERO) m.b = 0;
+	if (Math.abs(m.c) < NEAR_ZERO) m.c = 0;
+	if (Math.abs(m.d) < NEAR_ZERO) m.d = 0;
+	if (Math.abs(m.e) < NEAR_ZERO) m.e = 0;
+	if (Math.abs(m.f) < NEAR_ZERO) m.f = 0;
+	
+	return m;
+};
+
+// Function: svgedit.math.hasMatrixTransform
+// See if the given transformlist includes a non-indentity matrix transform
+//
+// Parameters: 
+// tlist - The transformlist to check
+//
+// Returns: 
+// Boolean on whether or not a matrix transform was found
+svgedit.math.hasMatrixTransform = function(tlist) {
+	if(!tlist) return false;
+	var num = tlist.numberOfItems;
+	while (num--) {
+		var xform = tlist.getItem(num);
+		if (xform.type == 1 && !svgedit.math.isIdentity(xform.matrix)) return true;
+	}
+	return false;
+};
+
+// Function: svgedit.math.transformBox
+// Transforms a rectangle based on the given matrix
+//
+// Parameters:
+// l - Float with the box's left coordinate
+// t - Float with the box's top coordinate
+// w - Float with the box width
+// h - Float with the box height
+// m - Matrix object to transform the box by
+// 
+// Returns:
+// An object with the following values:
+// * tl - The top left coordinate (x,y object)
+// * tr - The top right coordinate (x,y object)
+// * bl - The bottom left coordinate (x,y object)
+// * br - The bottom right coordinate (x,y object)
+// * aabox - Object with the following values:
+// * Float with the axis-aligned x coordinate
+// * Float with the axis-aligned y coordinate
+// * Float with the axis-aligned width coordinate
+// * Float with the axis-aligned height coordinate
+svgedit.math.transformBox = function(l, t, w, h, m) {
+	var topleft = {x:l,y:t},
+		topright = {x:(l+w),y:t},
+		botright = {x:(l+w),y:(t+h)},
+		botleft = {x:l,y:(t+h)};
+	var transformPoint = svgedit.math.transformPoint;
+	topleft = transformPoint( topleft.x, topleft.y, m );
+	var minx = topleft.x,
+		maxx = topleft.x,
+		miny = topleft.y,
+		maxy = topleft.y;
+	topright = transformPoint( topright.x, topright.y, m );
+	minx = Math.min(minx, topright.x);
+	maxx = Math.max(maxx, topright.x);
+	miny = Math.min(miny, topright.y);
+	maxy = Math.max(maxy, topright.y);
+	botleft = transformPoint( botleft.x, botleft.y, m);
+	minx = Math.min(minx, botleft.x);
+	maxx = Math.max(maxx, botleft.x);
+	miny = Math.min(miny, botleft.y);
+	maxy = Math.max(maxy, botleft.y);
+	botright = transformPoint( botright.x, botright.y, m );
+	minx = Math.min(minx, botright.x);
+	maxx = Math.max(maxx, botright.x);
+	miny = Math.min(miny, botright.y);
+	maxy = Math.max(maxy, botright.y);
+
+	return {tl:topleft, tr:topright, bl:botleft, br:botright, 
+			aabox: {x:minx, y:miny, width:(maxx-minx), height:(maxy-miny)} };
+};
+
+// Function: svgedit.math.transformListToTransform
+// This returns a single matrix Transform for a given Transform List
+// (this is the equivalent of SVGTransformList.consolidate() but unlike
+//  that method, this one does not modify the actual SVGTransformList)
+// This function is very liberal with its min,max arguments
+// 
+// Parameters:
+// tlist - The transformlist object
+// min - Optional integer indicating start transform position
+// max - Optional integer indicating end transform position
+//
+// Returns:
+// A single matrix transform object
+svgedit.math.transformListToTransform = function(tlist, min, max) {
+	if(tlist == null) {
+		// Or should tlist = null have been prevented before this?
+		return svg.createSVGTransformFromMatrix(svg.createSVGMatrix());
+	}
+	var min = min == undefined ? 0 : min;
+	var max = max == undefined ? (tlist.numberOfItems-1) : max;
+	min = parseInt(min);
+	max = parseInt(max);
+	if (min > max) { var temp = max; max = min; min = temp; }
+	var m = svg.createSVGMatrix();
+	for (var i = min; i <= max; ++i) {
+		// if our indices are out of range, just use a harmless identity matrix
+		var mtom = (i >= 0 && i < tlist.numberOfItems ? 
+						tlist.getItem(i).matrix :
+						svg.createSVGMatrix());
+		m = svgedit.math.matrixMultiply(m, mtom);
+	}
+	return svg.createSVGTransformFromMatrix(m);
+};
+
+
+// Function: svgedit.math.getMatrix
+// Get the matrix object for a given element
+//
+// Parameters:
+// elem - The DOM element to check
+// 
+// Returns:
+// The matrix object associated with the element's transformlist
+svgedit.math.getMatrix = function(elem) {
+	var tlist = svgedit.transformlist.getTransformList(elem);
+	return svgedit.math.transformListToTransform(tlist).matrix;
+};
+
+
+// Function: svgedit.math.snapToAngle
+// Returns a 45 degree angle coordinate associated with the two given 
+// coordinates
+// 
+// Parameters:
+// x1 - First coordinate's x value
+// x2 - Second coordinate's x value
+// y1 - First coordinate's y value
+// y2 - Second coordinate's y value
+//
+// Returns: 
+// Object with the following values:
+// x - The angle-snapped x value
+// y - The angle-snapped y value
+// snapangle - The angle at which to snap
+svgedit.math.snapToAngle = function(x1,y1,x2,y2) {
+	var snap = Math.PI/4; // 45 degrees
+	var dx = x2 - x1;
+	var dy = y2 - y1;
+	var angle = Math.atan2(dy,dx);
+	var dist = Math.sqrt(dx * dx + dy * dy);
+	var snapangle= Math.round(angle/snap)*snap;
+	var x = x1 + dist*Math.cos(snapangle);	
+	var y = y1 + dist*Math.sin(snapangle);
+	//console.log(x1,y1,x2,y2,x,y,angle)
+	return {x:x, y:y, a:snapangle};
+};
+
+
+// Function: rectsIntersect
+// Check if two rectangles (BBoxes objects) intersect each other
+//
+// Paramaters:
+// r1 - The first BBox-like object
+// r2 - The second BBox-like object
+//
+// Returns:
+// Boolean that's true if rectangles intersect
+svgedit.math.rectsIntersect = function(r1, r2) {
+  if (!r1 || !r2) return false;
+	return r2.x < (r1.x+r1.width) && 
+		(r2.x+r2.width) > r1.x &&
+		r2.y < (r1.y+r1.height) &&
+		(r2.y+r2.height) > r1.y;
+};
+
+
+})();
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/method-draw.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/method-draw.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/method-draw.js	(revision 29468)
@@ -0,0 +1,4140 @@
+/*
+ * svg-editor.js
+ *
+ * Licensed under the MIT License
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ * Copyright(c) 2010 Pavol Rusnak
+ * Copyright(c) 2010 Jeff Schiller
+ * Copyright(c) 2010 Narendra Sisodiya
+* Copyright(c)  2012 Mark MacKay
+ *
+ */
+
+// Dependencies:
+// 1) units.js
+// 2) browser.js
+// 3) svgcanvas.js
+
+(function() { 
+  
+  document.addEventListener("touchstart", touchHandler, true);
+  document.addEventListener("touchmove", touchHandler, true);
+  document.addEventListener("touchend", touchHandler, true);
+  document.addEventListener("touchcancel", touchHandler, true);
+  
+	if(!window.methodDraw) window.methodDraw = function($) {
+		var svgCanvas;
+		var Editor = {};
+		var is_ready = false;
+		curConfig = {
+		  canvas_expansion: 1, 
+		  dimensions: [580,400], 
+		  initFill: {color: 'fff', opacity: 1},
+		  initStroke: {width: 1.5, color: '000', opacity: 1},
+			initOpacity: 1,
+			imgPath: 'images/',
+			extPath: 'extensions/',
+			jGraduatePath: 'jgraduate/images/',
+			extensions: [],
+			initTool: 'select',
+			wireframe: false,
+			colorPickerCSS: false,
+			gridSnapping: false,
+			gridColor: "#000",
+			baseUnit: 'px',
+			snappingStep: 10,
+			showRulers: (svgedit.browser.isTouch()) ? false : true,
+			show_outside_canvas: false,
+			no_save_warning: true,
+			initFont: 'Helvetica, Arial, sans-serif'
+		},
+			uiStrings = Editor.uiStrings = {
+				common: {
+					"ok":"OK",
+					"cancel":"Cancel",
+					"key_up":"Up",
+					"key_down":"Down",
+					"key_backspace":"Backspace",
+					"key_del":"Del"
+	
+				},
+				// This is needed if the locale is English, since the locale strings are not read in that instance.
+				layers: {
+					"layer":"Layer"
+				},
+				notification: {
+					"invalidAttrValGiven":"Invalid value given",
+					"noContentToFitTo":"No content to fit to",
+					"dupeLayerName":"There is already a layer named that!",
+					"enterUniqueLayerName":"Please enter a unique layer name",
+					"enterNewLayerName":"Please enter the new layer name",
+					"layerHasThatName":"Layer already has that name",
+					"QmoveElemsToLayer":"Move selected elements to layer \"%s\"?",
+					"QwantToClear":"<strong>Do you want to clear the drawing?</strong>\nThis will also erase your undo history",
+					"QwantToOpen":"Do you want to open a new file?\nThis will also erase your undo history",
+					"QerrorsRevertToSource":"There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+					"QignoreSourceChanges":"Ignore changes made to SVG source?",
+					"featNotSupported":"Feature not supported",
+					"enterNewImgURL":"Enter the new image URL",
+					"defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+					"loadingImage":"Loading image, please wait...",
+					"saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+					"noteTheseIssues": "Also note the following issues: ",
+					"unsavedChanges": "There are unsaved changes.",
+					"enterNewLinkURL": "Enter the new hyperlink URL",
+					"errorLoadingSVG": "Error: Unable to load SVG data",
+					"URLloadFail": "Unable to load from URL",
+					"retrieving": 'Retrieving "%s" ...'
+				}
+			};
+		
+
+		var curPrefs = {}; //$.extend({}, defaultPrefs);
+		var customHandlers = {};
+		Editor.curConfig = curConfig;
+		Editor.tool_scale = 1;
+		
+		Editor.setConfig = function(opts) {
+			$.extend(true, curConfig, opts);
+			if(opts.extensions) {
+				curConfig.extensions = opts.extensions;
+			}
+		}
+		
+		// Extension mechanisms must call setCustomHandlers with two functions: opts.open and opts.save
+		// opts.open's responsibilities are:
+		// 	- invoke a file chooser dialog in 'open' mode
+		//	- let user pick a SVG file
+		//	- calls setCanvas.setSvgString() with the string contents of that file
+		// opts.save's responsibilities are:
+		//	- accept the string contents of the current document 
+		//	- invoke a file chooser dialog in 'save' mode
+		// 	- save the file to location chosen by the user
+		Editor.setCustomHandlers = function(opts) {
+			Editor.ready(function() {
+				if(opts.open) {
+					$('#tool_open > input[type="file"]').remove();
+					$('#tool_open').show();
+					svgCanvas.open = opts.open;
+				}
+				if(opts.save) {
+					Editor.show_save_warning = false;
+					svgCanvas.bind("saved", opts.save);
+				}
+				if(opts.pngsave) {
+					svgCanvas.bind("exported", opts.pngsave);
+				}
+				customHandlers = opts;
+			});
+		}
+		
+		Editor.randomizeIds = function() {
+			svgCanvas.randomizeIds(arguments)
+		}
+
+		Editor.init = function() {
+			// For external openers
+			(function() {
+				// let the opener know SVG Edit is ready
+				var w = window.opener;
+				if (w) {
+			    		try {
+						var methodDrawReadyEvent = w.document.createEvent("Event");
+						methodDrawReadyEvent.initEvent("methodDrawReady", true, true);
+						w.document.documentElement.dispatchEvent(methodDrawReadyEvent);
+			    		}
+					catch(e) {}
+				}
+			})();
+
+			(function() {
+  			$("body").toggleClass("touch", svgedit.browser.isTouch());
+				// Load config/data from URL if given
+				var urldata = $.deparam.querystring(true);
+				if(!$.isEmptyObject(urldata)) {
+					if(urldata.dimensions) {
+						urldata.dimensions = urldata.dimensions.split(',');
+					}
+					
+					if(urldata.extensions) {
+						urldata.extensions = urldata.extensions.split(',');
+					}
+					
+					if(urldata.bkgd_color) {
+						urldata.bkgd_color = '#' + urldata.bkgd_color;
+					}
+
+					methodDraw.setConfig(urldata);
+					
+					var src = urldata.source;
+					var qstr = $.param.querystring();
+					
+					if(!src) { // urldata.source may have been null if it ended with '='
+						if(qstr.indexOf('source=data:') >= 0) {
+							src = qstr.match(/source=(data:[^&]*)/)[1];
+						}
+					}
+					
+					if(src) {
+						if(src.indexOf("data:") === 0) {
+							// plusses get replaced by spaces, so re-insert
+							src = src.replace(/ /g, "+");
+							Editor.loadFromDataURI(src);
+						} else {
+							Editor.loadFromString(src);
+						}
+					} else if(qstr.indexOf('paramurl=') !== -1) {
+						// Get paramater URL (use full length of remaining location.href)
+						methodDraw.loadFromURL(qstr.substr(9));
+					} else if(urldata.url) {
+						methodDraw.loadFromURL(urldata.url);
+					}
+				}
+			})();
+			
+			$("#canvas_width").val(curConfig.dimensions[0]);
+			$("#canvas_height").val(curConfig.dimensions[1]);
+			
+			var extFunc = function() {
+				$.each(curConfig.extensions, function() {
+					var extname = this;
+					$.getScript(curConfig.extPath + extname, function(d) {
+						// Fails locally in Chrome 5
+						if(!d) {
+							var s = document.createElement('script');
+							s.src = curConfig.extPath + extname;
+							document.querySelector('head').appendChild(s);
+						}
+					});
+				});
+			}
+			
+			// Load extensions
+			// Bit of a hack to run extensions in local Opera/IE9
+			if(document.location.protocol === 'file:') {
+				setTimeout(extFunc, 100);
+			} else {
+				extFunc();
+			}
+			$.svgIcons(curConfig.imgPath + 'svg_edit_icons.svg', {
+				w:27, h:27,
+				id_match: false,
+ 				no_img: true, // Opera & Firefox 4 gives odd behavior w/images
+				fallback_path: curConfig.imgPath,
+				fallback:{
+				  'logo':'logo.png',
+					'select':'select.png',
+					'select_node':'select_node.png',
+					'pencil':'pencil.png',
+					'pen':'line.png',
+					'rect':'square.png',
+					'ellipse':'ellipse.png',
+					'path':'path.png',
+					'text':'text.png',
+					'image':'image.png',
+					'zoom':'zoom.png',
+					'delete':'delete.png',
+					'spapelib':'shapelib.png',
+					'node_delete':'node_delete.png',				
+					'align_left':'align-left.png',
+					'align_center':'align-center.png',
+					'align_right':'align-right.png',
+					'align_top':'align-top.png',
+					'align_middle':'align-middle.png',
+					'align_bottom':'align-bottom.png',
+					'arrow_right':'flyouth.png',
+					'arrow_down':'dropdown.gif'
+				},
+				placement: {
+				  '#logo':'logo',
+					'#tool_select':'select',
+					'#tool_fhpath':'pencil',
+					'#tool_line':'pen',
+					'#tool_rect,#tools_rect_show':'rect',
+					'#tool_ellipse,#tools_ellipse_show':'ellipse',
+					'#tool_path':'path',
+					'#tool_text,#layer_rename':'text',
+					'#tool_image':'image',
+					'#tool_zoom':'zoom',
+					'#tool_node_clone':'node_clone',
+					'#tool_node_delete':'node_delete',
+					'#tool_add_subpath':'add_subpath',
+					'#tool_openclose_path':'open_path',
+					'#tool_alignleft, #tool_posleft':'align_left',
+					'#tool_aligncenter, #tool_poscenter':'align_center',
+					'#tool_alignright, #tool_posright':'align_right',
+					'#tool_aligntop, #tool_postop':'align_top',
+					'#tool_alignmiddle, #tool_posmiddle':'align_middle',
+					'#tool_alignbottom, #tool_posbottom':'align_bottom',
+					'#cur_position':'align',
+					'#zoomLabel':'zoom'
+				},
+				resize: {
+					'#logo .svg_icon': 15,
+					'.flyout_arrow_horiz .svg_icon': 5,
+					'#fill_bg .svg_icon, #stroke_bg .svg_icon': svgedit.browser.isTouch() ? 24 : 24,
+					'.palette_item:first .svg_icon': svgedit.browser.isTouch() ? 30 : 16,
+					'#zoomLabel .svg_icon': 16,
+					'#zoom_dropdown .svg_icon': 7
+				},
+				callback: function(icons) {
+					$('.toolbar_button button > svg, .toolbar_button button > img').each(function() {
+						$(this).parent().prepend(this);
+					});
+					$('.tool_button, .tool_button_current').addClass("loaded")
+					var tleft = $('#tools_left');
+					if (tleft.length != 0) {
+						var min_height = tleft.offset().top + tleft.outerHeight();
+					}
+					
+					// Look for any missing flyout icons from plugins
+					$('.tools_flyout').each(function() {
+						var shower = $('#' + this.id + '_show');
+						var sel = shower.attr('data-curopt');
+						// Check if there's an icon here
+						if(!shower.children('svg, img').length) {
+							var clone = $(sel).children().clone();
+							if(clone.length) {
+								clone[0].removeAttribute('style'); //Needed for Opera
+								shower.append(clone);
+							}
+						}
+					});
+					methodDraw.runCallbacks();
+					
+					setTimeout(function() {
+						$('.flyout_arrow_horiz:empty').each(function() {
+							$(this).append($.getSvgIcon('arrow_right').width(5).height(5));
+						});
+					}, 1);
+				}
+			});
+			
+			$('#rulers').on("dblclick", function(e){
+			  $("#base_unit_container").css({
+			    top: e.pageY-10,
+			    left: e.pageX-50,
+			    display: 'block'
+		    })
+			})
+			$("#base_unit_container")
+  			.on("mouseleave mouseenter", function(e){
+  			  t = setTimeout(function(){$("#base_unit_container").fadeOut(500)}, 200)
+  			  if(event.type == "mouseover") clearTimeout(t)  
+  			})
+  		$("#base_unit")
+    		.on("change", function(e) {
+    			savePreferences();
+    		});
+
+			Editor.canvas = svgCanvas = new $.SvgCanvas(document.getElementById("svgcanvas"), curConfig);
+			Editor.show_save_warning = false;
+			Editor.paintBox = {fill: null, stroke:null, canvas:null};
+			var palette = ["#444444", "#482816", "#422C10", "#3B2F0E", "#32320F", 
+										 "#293414", "#1F361B", "#153723", "#0C372C", 
+										 "#083734", "#0E353B", "#1A333F", "#273141", 
+										 "#332D40", "#3E2A3C", "#462735", "#4B252D", 
+										 "#4D2425", "#4C261D", "#666666", "#845335", "#7B572D", 
+										 "#6F5C2A", "#62612C", "#546433", "#46673D", 
+										 "#396849", "#306856", "#2D6862", "#33666C", 
+										 "#426373", "#535F75", "#645A73", "#74556D", 
+										 "#805064", "#884D58", "#8B4D4B", "#894F3F", 
+										 "#999999", "#C48157", "#B8874D", "#A98E49", "#97944B", 
+										 "#849854", "#729C62", "#619E73", "#559E84", 
+										 "#529D94", "#5B9BA2", "#6D97AB", "#8391AE", 
+										 "#9A8AAB", "#AF84A3", "#BF7E96", "#C97A86", 
+										 "#CE7975", "#CC7C65", "#BBBBBB", "#FFB27C", "#FABA6F", 
+										 "#E6C36A", "#CFCA6D", "#B8D078", "#A0D58A",
+										 "#8CD79F", "#7DD8B5", "#7AD6CA", "#84D3DB", 
+										 "#9ACEE6", "#B6C7EA", "#D3BEE7", "#EDB6DC", 
+										 "#FFAFCC", "#FFAAB8", "#FFA9A2", "#FFAC8D", 
+										 "#DDDDDD", "#FFE7A2", "#FFF093", "#FFFA8D", "#FFFF91", 
+										 "#EEFF9F", "#D1FFB4", "#B9FFCE", "#A8FFE9", 
+										 "#A4FFFF", "#B1FFFF", "#CBFFFF", "#EDFFFF", 
+										 "#FFF5FF", "#FFEBFF", "#FFE2FF", "#FFDCEC", 
+										 "#FFDBD2", "#FFDFB8"
+			           ],
+				isMac = (navigator.platform.indexOf("Mac") >= 0),
+				isWebkit = (navigator.userAgent.indexOf("AppleWebKit") >= 0),
+				modKey = (isMac ? "meta+" : "ctrl+"), // â
+				path = svgCanvas.pathActions,
+				undoMgr = svgCanvas.undoMgr,
+				Utils = svgedit.utilities,
+				default_img_url = curConfig.imgPath + "placeholder.svg",
+				workarea = $("#workarea"),
+				canv_menu = $("#cmenu_canvas"),
+				exportWindow = null, 
+				tool_scale = 1,
+				ui_context = 'toolbars',
+				orig_source = '';
+				
+
+			// This puts the correct shortcuts in the menus
+			if (!isMac) {
+			 $('.shortcut').each(function(){
+			   var text = $(this).text();
+			   $(this).text(text.split("â").join("Ctrl+"))
+			 }); 
+			}
+
+			// This sets up alternative dialog boxes. They mostly work the same way as
+			// their UI counterparts, expect instead of returning the result, a callback
+			// needs to be included that returns the result as its first parameter.
+			// In the future we may want to add additional types of dialog boxes, since 
+			// they should be easy to handle this way.
+			(function() {
+				$('#dialog_container').draggable({cancel:'#dialog_content, #dialog_buttons *', containment: 'window'});
+				var box = $('#dialog_box'), btn_holder = $('#dialog_buttons');
+				
+				var dbox = function(type, msg, callback, defText) {
+					$('#dialog_content').html('<p>'+msg.replace(/\n/g,'</p><p>')+'</p>')
+						.toggleClass('prompt',(type=='prompt'));
+					btn_holder.empty();
+					
+					var ok = $('<input type="button" value="' + uiStrings.common.ok + '">').appendTo(btn_holder);
+				
+					if(type != 'alert') {
+						$('<input type="button" value="' + uiStrings.common.cancel + '">')
+							.appendTo(btn_holder)
+							.on("click touchstart", function() { box.hide();callback(false)});
+					}
+					
+					if(type == 'prompt') {
+						var input = $('<input type="text">').prependTo(btn_holder);
+						input.val(defText || '');
+						input.bind('keydown', 'return', function() {ok.trigger("click touchstart");});
+					}
+					
+					if(type == 'process') {
+						ok.hide();
+					}
+		
+					box.show();
+					
+					ok.on("click touchstart", function() { 
+						box.hide();
+						var resp = (type == 'prompt')?input.val():true;
+						if(callback) callback(resp);
+					}).focus();
+					
+					if(type == 'prompt') input.focus();
+				}
+				
+				$.alert = function(msg, cb) { dbox('alert', msg, cb);};
+				$.confirm = function(msg, cb) {	dbox('confirm', msg, cb);};
+				$.process_cancel = function(msg, cb) {	dbox('process', msg, cb);};
+				$.prompt = function(msg, txt, cb) { dbox('prompt', msg, cb, txt);};
+			}());
+			
+			var setSelectMode = function() {
+				var curr = $('.tool_button_current');
+				if(curr.length && curr[0].id !== 'tool_select') {
+					curr.removeClass('tool_button_current').addClass('tool_button');
+					$('#tool_select').addClass('tool_button_current').removeClass('tool_button');
+				}
+				svgCanvas.setMode('select');
+			};
+			
+			var setEyedropperMode = function() {
+			  var curr = $('.tool_button_current');
+				if(curr.length && curr[0].id !== 'tool_eyedropper') {
+					curr.removeClass('tool_button_current').addClass('tool_button');
+					$('#tool_eyedropper').addClass('tool_button_current').removeClass('tool_button');
+				}
+				svgCanvas.setMode('eyedropper');
+		  }
+			
+			var togglePathEditMode = function(editmode, elems) {
+				$('#tools_bottom_2,#tools_bottom_3').toggle(!editmode);
+				if(editmode) {
+					// Change select icon
+					$('.context_panel').hide();
+					$('#path_node_panel').show();
+					$('.tool_button_current').removeClass('tool_button_current').addClass('tool_button');
+					$('#tool_select').addClass('tool_button_current').removeClass('tool_button');
+					setIcon('#tool_select', 'select_node');
+					multiselected = false;
+				} else {
+				  if (elems[0]) {
+				    var selector = svgCanvas.selectorManager.requestSelector(elems[0])
+				    selector.reset(elems[0]);
+				    selector.selectorRect.setAttribute('display', 'inline');
+				  }
+				  
+				  setIcon('#tool_select', 'select');
+				}
+			}
+		
+			// used to make the flyouts stay on the screen longer the very first time
+			var flyoutspeed = 1250;
+			var textBeingEntered = false;
+			var selectedElement = null;
+			var multiselected = false;
+			var editingsource = false;
+			var docprops = false;
+			var preferences = false;
+			var cur_context = '';
+			
+			var saveHandler = function(window,svg) {
+				Editor.show_save_warning = false;
+			
+				// by default, we add the XML prolog back, systems integrating SVG-edit (wikis, CMSs) 
+				// can just provide their own custom save handler and might not want the XML prolog
+				svg = '<?xml version="1.0"?>\n' + svg;
+				
+				// Opens the SVG in new window, with warning about Mozilla bug #308590 when applicable
+				
+				var ua = navigator.userAgent;
+
+				// Chrome 5 (and 6?) don't allow saving, show source instead ( http://code.google.com/p/chromium/issues/detail?id=46735 )
+				// IE9 doesn't allow standalone Data URLs ( https://connect.microsoft.com/IE/feedback/details/542600/data-uri-images-fail-when-loaded-by-themselves )
+				if(~ua.indexOf('MSIE')) {
+					showSourceEditor(0,true);
+					return;	
+				}
+				var win = window.open("data:image/svg+xml;base64," + Utils.encode64(svg));
+				
+				// Alert will only appear the first time saved OR the first time the bug is encountered
+				var done = $.pref('save_notice_done');
+				if(done !== "all") {
+		
+					var note = uiStrings.notification.saveFromBrowser.replace('%s', 'SVG');
+					
+					// Check if FF and has <defs/>
+					if(ua.indexOf('Gecko/') !== -1) {
+						if(svg.indexOf('<defs') !== -1) {
+							note += "\n\n" + uiStrings.notification.defsFailOnSave;
+							$.pref('save_notice_done', 'all');
+							done = "all";
+						} else {
+							$.pref('save_notice_done', 'part');
+						}
+					} else {
+						$.pref('save_notice_done', 'all'); 
+					}
+					
+					if(done !== 'part') {
+						win.alert(note);
+					}
+				}
+			};
+			
+			var exportHandler = function(window, data) {
+				var issues = data.issues;
+				
+				if(!$('#export_canvas').length) {
+					$('<canvas>', {id: 'export_canvas'}).hide().appendTo('body');
+				}
+				var c = $('#export_canvas')[0];
+				
+				c.width = svgCanvas.contentW;
+				c.height = svgCanvas.contentH;
+				canvg(c, data.svg, {renderCallback: function() {
+					var datauri = c.toDataURL('image/png');
+					exportWindow.location.href = datauri;
+					var done = $.pref('export_notice_done');
+					if(done !== "all") {
+						var note = uiStrings.notification.saveFromBrowser.replace('%s', 'PNG');
+						
+						// Check if there's issues
+						if(issues.length) {
+							var pre = "\n \u2022 ";
+							note += ("\n\n" + uiStrings.notification.noteTheseIssues + pre + issues.join(pre));
+						} 
+						
+						// Note that this will also prevent the notice even though new issues may appear later.
+						// May want to find a way to deal with that without annoying the user
+						$.pref('export_notice_done', 'all'); 
+						exportWindow.alert(note);
+					}
+				}});
+			};
+			
+			// called when we've selected a different element
+			var selectedChanged = function(window,elems) {			  
+				var mode = svgCanvas.getMode();
+				if(mode === "select") setSelectMode();
+				if (mode === "pathedit") return updateContextPanel();
+				// if elems[1] is present, then we have more than one element
+				selectedElement = (elems.length == 1 || elems[1] == null ? elems[0] : null);
+				elems = elems.filter(Boolean)
+				multiselected = (elems.length >= 2) ? elems : false;
+				if (svgCanvas.elementsAreSame(multiselected)) selectedElement = multiselected[0]
+				if (selectedElement != null) {
+				  $('#multiselected_panel').hide()
+					updateToolbar();
+					if (multiselected.length) {//multiselected elements are the same
+					  $('#tools_top').addClass('multiselected')
+					}
+				}
+				else if (multiselected.length) {
+				  $('.context_panel').hide()
+				  $('#tools_top').removeClass('multiselected')
+				  $('#multiselected_panel').show()
+				}
+				else {
+				  $('.context_panel').hide()
+				  $('#canvas_panel').show()
+				  $('#tools_top').removeClass('multiselected')
+				}
+				svgCanvas.runExtensions("selectedChanged", {
+					elems: elems,
+					selectedElement: selectedElement,
+					multiselected: multiselected
+				});
+			};
+		
+			// Call when part of element is in process of changing, generally
+			// on mousemove actions like rotate, move, etc.
+			var elementTransition = function(window,elems) {
+				var mode = svgCanvas.getMode();
+				var elem = elems[0];
+				
+				if(!elem) return;
+				
+				multiselected = (elems.length >= 2 && elems[1] != null) ? elems : null;
+				// Only updating fields for single elements for now
+				if(!multiselected) {
+					switch ( mode ) {
+						case "rotate":
+							var ang = svgCanvas.getRotationAngle(elem);
+							$('#angle').val(Math.round(ang));
+							rotateCursor(ang);
+							$('#tool_reorient').toggleClass('disabled', ang == 0);
+							break;
+						
+						// TODO: Update values that change on move/resize, etc
+// 						case "select":
+// 						case "resize":
+// 							break;
+					}
+				}
+				svgCanvas.runExtensions("elementTransition", {
+					elems: elems
+				});
+			};
+		
+			// called when any element has changed
+			var elementChanged = function(window,elems) {
+				var mode = svgCanvas.getMode();
+				if(mode === "select") {
+					setSelectMode();
+				}
+				
+				for (var i = 0; i < elems.length; ++i) {
+					var elem = elems[i];
+					
+					// if the element changed was the svg, then it could be a resolution change
+					if (elem && elem.tagName === "svg") {
+						//populateLayers();
+						updateCanvas();
+					} 
+					// Update selectedElement if element is no longer part of the image.
+					// This occurs for the text elements in Firefox
+					else if(elem && selectedElement && selectedElement.parentNode == null) {
+// 						|| elem && elem.tagName == "path" && !multiselected) { // This was added in r1430, but not sure why
+						selectedElement = elem;
+					}
+				}
+				
+				Editor.show_save_warning = true;
+		
+				// we update the contextual panel with potentially new
+				// positional/sizing information (we DON'T want to update the
+				// toolbar here as that creates an infinite loop)
+				// also this updates the history buttons
+		
+				// we tell it to skip focusing the text control if the
+				// text element was previously in focus
+				updateContextPanel();
+				
+				// In the event a gradient was flipped:
+				if(selectedElement && mode === "select") {
+					Editor.paintBox.fill.update();
+					Editor.paintBox.stroke.update();
+				}
+				
+				svgCanvas.runExtensions("elementChanged", {
+					elems: elems
+				});
+			};
+			
+			var zoomChanged = function(window, bbox, autoCenter) {
+				var scrbar = 15,
+					res = svgCanvas.getResolution(),
+					w_area = workarea,
+					canvas_pos = $('#svgcanvas').position();
+				var z_info = svgCanvas.setBBoxZoom(bbox, w_area.width()-scrbar, w_area.height()-scrbar);
+				if(!z_info) return;
+				var zoomlevel = z_info.zoom,
+					bb = z_info.bbox;
+				
+				if(zoomlevel < .001) {
+					changeZoom({value: .1});
+					return;
+				}
+				if (typeof animatedZoom != 'undefined') window.cancelAnimationFrame(animatedZoom)
+				// zoom duration 500ms
+				var start = Date.now();
+				var duration = 500;
+				var diff = (zoomlevel) - (res.zoom)
+				var zoom = $('#zoom')[0]
+				var current_zoom = res.zoom
+				var animateZoom = function(timestamp) {
+				  var progress = Date.now() - start
+				  var tick = progress / duration
+          tick = (Math.pow((tick-1), 3) +1);
+          svgCanvas.setZoom(current_zoom + (diff*tick));
+				  updateCanvas();
+				  if (tick < 1 && tick > -.90) {
+            window.animatedZoom = requestAnimationFrame(animateZoom)
+				  }
+				  else {
+				    $("#zoom").val(parseInt(zoomlevel*100))
+				    $("option", "#zoom_select").removeAttr("selected")
+				    $("option[value="+ parseInt(zoomlevel*100) +"]", "#zoom_select").attr("selected", "selected")
+				  }
+				}
+				animateZoom()
+				
+ 			  
+				
+				//if(autoCenter) {
+				//	updateCanvas();
+				//} else {
+				//	updateCanvas(false, {x: bb.x * zoomlevel + (bb.width * zoomlevel)/2, y: bb.y * zoomlevel + (bb.height * zoomlevel)/2});
+				//}
+		
+				if(svgCanvas.getMode() == 'zoom' && bb.width) {
+					// Go to select if a zoom box was drawn
+					setSelectMode();
+				}
+				
+				zoomDone();
+			}
+			
+			$('#cur_context_panel').delegate('a', 'click', function() {
+				var link = $(this);
+				if(link.attr('data-root')) {
+					svgCanvas.leaveContext();
+				} else {
+					svgCanvas.setContext(link.text());
+				}
+				svgCanvas.clearSelection();
+				return false;
+			});
+			
+			var contextChanged = function(win, context) {
+				
+				var link_str = '';
+				if(context) {
+					var str = '';
+					link_str = '<a href="#" data-root="y">' + svgCanvas.getCurrentDrawing().getCurrentLayerName() + '</a>';
+					
+					$(context).parentsUntil('#svgcontent > g').andSelf().each(function() {
+						if(this.id) {
+							str += ' > ' + this.id;
+							if(this !== context) {
+								link_str += ' > <a href="#">' + this.id + '</a>';
+							} else {
+								link_str += ' > ' + this.id;
+							}
+						}
+					});
+
+					cur_context = str;
+				} else {
+					cur_context = null;
+				}
+				$('#cur_context_panel').toggle(!!context).html(link_str);
+
+			}
+			
+			// Makes sure the current selected paint is available to work with
+			var prepPaints = function() {
+				Editor.paintBox.fill.prep();
+				Editor.paintBox.stroke.prep();
+			}
+			
+			var flyout_funcs = {};
+			
+			var setupFlyouts = function(holders) {
+				$.each(holders, function(hold_sel, btn_opts) {
+					var buttons = $(hold_sel).children();
+					var show_sel = hold_sel + '_show';
+					var shower = $(show_sel);
+					var def = false;
+					buttons.addClass('tool_button')
+						.unbind('click mousedown mouseup') // may not be necessary
+						.each(function(i) {
+							// Get this buttons options
+							var opts = btn_opts[i];
+							
+							// Remember the function that goes with this ID
+							flyout_funcs[opts.sel] = opts.fn;
+
+							if(opts.isDefault) def = i;
+
+							// Clicking the icon in flyout should set this set's icon
+							var func = function(event) {
+								var options = opts;
+								//find the currently selected tool if comes from keystroke
+								if (event.type === "keydown") {
+									var flyoutIsSelected = $(options.parent + "_show").hasClass('tool_button_current'); 
+									var currentOperation = $(options.parent + "_show").attr("data-curopt");
+									$.each(holders[opts.parent], function(i, tool){
+										if (tool.sel == currentOperation) {
+											if(!event.shiftKey || !flyoutIsSelected) {
+												options = tool;
+											}
+											else {
+												options = holders[opts.parent][i+1] || holders[opts.parent][0];
+											}
+										}
+									});
+								}
+								if($(this).hasClass('disabled')) return false;
+								if (toolButtonClick(show_sel)) {
+									options.fn();
+								}
+								if(options.icon) {
+									var icon = $.getSvgIcon(options.icon, true);
+								} else {
+									var icon = $(options.sel).children().eq(0).clone();
+								}
+
+								icon[0].setAttribute('width',shower.width());
+								icon[0].setAttribute('height',shower.height());
+								shower.children(':not(.flyout_arrow_horiz)').remove();
+								shower.append(icon).attr('data-curopt', options.sel); // This sets the current mode
+							}
+
+							$(this).mouseup(func);
+
+							if(opts.key) {
+								$(document).bind('keydown', opts.key[0] + " shift+" + opts.key[0], func);
+							}
+						});
+
+					if(def) {
+						shower.attr('data-curopt', btn_opts[def].sel);
+					} else if(!shower.attr('data-curopt')) {
+						// Set first as default
+						shower.attr('data-curopt', btn_opts[0].sel);
+					}
+					
+					var timer;
+					
+					var pos = $(show_sel).position();
+					$(hold_sel).css({'left': pos.left+34, 'top': pos.top+77});
+					
+					// Clicking the "show" icon should set the current mode
+					shower.mousedown(function(evt) {
+					  $('#workarea').one("mousedown", function(){$('#tools_shapelib').hide()})
+            if ($('#tools_shapelib').is(":visible")) toolButtonClick(show_sel, false);
+						if(shower.hasClass('disabled')) return false;
+						var holder = $(hold_sel);
+						var l = pos.left+34;
+						var w = holder.width()*-1;
+						var time = holder.data('shown_popop')?200:0;
+						timer = setTimeout(function() {
+							// Show corresponding menu
+							if(!shower.data('isLibrary')) {
+								holder.css('left', w).show().animate({
+									left: l
+								},50);
+							} else {
+								holder.css('left', l).show();
+							}
+							holder.data('shown_popop',true);
+						},time);
+						evt.preventDefault();
+					}).mouseup(function(evt) {
+						clearTimeout(timer);
+						var opt = $(this).attr('data-curopt');
+						// Is library and popped up, so do nothing
+						if(shower.data('isLibrary') && $(show_sel.replace('_show','')).is(':visible')) {
+							toolButtonClick(show_sel, true);
+							return;
+						}
+						if (toolButtonClick(show_sel) && (opt in flyout_funcs)) {
+							flyout_funcs[opt]();
+						}
+					});
+					
+					// 	$('#tools_rect').mouseleave(function(){$('#tools_rect').fadeOut();});
+				});
+				
+				setFlyoutTitles();
+			}
+			
+			var makeFlyoutHolder = function(id, child) {
+				var div = $('<div>',{
+					'class': 'tools_flyout',
+					id: id
+				}).appendTo('#svg_editor').append(child);
+				
+				return div;
+			}
+			
+			var setFlyoutPositions = function() {
+				$('.tools_flyout').each(function() {
+					var shower = $('#' + this.id + '_show');
+					var pos = shower.offset();
+					var w = shower.outerWidth();
+					$(this).css({left: (pos.left + w)*tool_scale, top: pos.top});
+				});
+			}
+			
+			var setFlyoutTitles = function() {
+				$('.tools_flyout').each(function() {
+					var shower = $('#' + this.id + '_show');
+					if(shower.data('isLibrary')) return;
+					
+					var tooltips = [];
+					$(this).children().each(function() {
+						tooltips.push(this.title);
+					});
+					shower[0].title = tooltips.join(' / ');
+				});
+			}
+
+			var resize_timer;			
+			
+			var extAdded = function(window, ext) {
+		
+				var cb_called = false;
+				var resize_done = false;
+				var cb_ready = true; // Set to false to delay callback (e.g. wait for $.svgIcons)
+				
+				function prepResize() {
+					if(resize_timer) {
+						clearTimeout(resize_timer);
+						resize_timer = null;
+					}
+					if(!resize_done) {
+						resize_timer = setTimeout(function() {
+							resize_done = true;
+							setIconSize(curPrefs.iconsize);
+						}, 50);	
+					}
+				}
+
+				
+				var runCallback = function() {
+					if(ext.callback && !cb_called && cb_ready) {
+						cb_called = true;
+						ext.callback();
+					}
+				}
+		
+				var btn_selects = [];
+		
+				if(ext.context_tools) {
+					$.each(ext.context_tools, function(i, tool) {
+						// Add select tool
+						var cont_id = tool.container_id?(' id="' + tool.container_id + '"'):"";
+						
+						var panel = $('#' + tool.panel);
+						
+						// create the panel if it doesn't exist
+						if(!panel.length)
+							panel = $('<div>', {id: tool.panel}).appendTo("#tools_top").hide();
+						
+						// TODO: Allow support for other types, or adding to existing tool
+						switch (tool.type) {
+						case 'tool_button':
+							var html = '<div class="tool_button">' + tool.id + '</div>';
+							var div = $(html).appendTo(panel);
+							if (tool.events) {
+								$.each(tool.events, function(evt, func) {
+									$(div).bind(evt, func);
+								});
+							}
+							break;
+						case 'select':
+							var html = '<label' + cont_id + '>'
+								+ '<select id="' + tool.id + '">';
+							$.each(tool.options, function(val, text) {
+								var sel = (val == tool.defval) ? " selected":"";
+								html += '<option value="'+val+'"' + sel + '>' + text + '</option>';
+							});
+							html += "</select></label>";
+							// Creates the tool, hides & adds it, returns the select element
+							var sel = $(html).appendTo(panel).find('select');
+							
+							$.each(tool.events, function(evt, func) {
+								$(sel).bind(evt, func);
+							});
+							break;
+						case 'button-select': 
+							var html = '<div id="' + tool.id + '" class="dropdown toolset" title="' + tool.title + '">'
+								+ '<div id="cur_' + tool.id + '" class="icon_label"></div><button></button></div>';
+							
+							var list = $('<ul id="' + tool.id + '_opts"></ul>').appendTo('#option_lists');
+							if(tool.colnum) {
+								list.addClass('optcols' + tool.colnum);
+							}
+							
+							// Creates the tool, hides & adds it, returns the select element
+							var dropdown = $(html).appendTo(panel).children();
+							
+							btn_selects.push({
+								elem: ('#' + tool.id),
+								list: ('#' + tool.id + '_opts'),
+								title: tool.title,
+								callback: tool.events.change,
+								cur: ('#cur_' + tool.id)
+							});
+
+							break;
+						case 'input':
+							var html = '<label' + cont_id + '>'
+								+ '<span id="' + tool.id + '_label">' 
+								+ tool.label + ':</span>'
+								+ '<input id="' + tool.id + '" title="' + tool.title
+								+ '" size="' + (tool.size || "4") + '" value="' + (tool.defval || "") + '" type="text"/></label>'
+								
+							// Creates the tool, hides & adds it, returns the select element
+							
+							// Add to given tool.panel
+							var inp = $(html).appendTo(panel).find('input');
+							
+							if(tool.spindata) {
+								inp.SpinButton(tool.spindata);
+							}
+							
+							if(tool.events) {
+								$.each(tool.events, function(evt, func) {
+									inp.bind(evt, func);
+								});
+							}
+							break;
+							
+						default:
+							break;
+						}
+					});
+				}
+				
+				if(ext.buttons) {
+					var fallback_obj = {},
+						placement_obj = {},
+						svgicons = ext.svgicons;
+					var holders = {};
+					
+				
+					// Add buttons given by extension
+					$.each(ext.buttons, function(i, btn) {
+						var icon;
+						var id = btn.id;
+						var num = i;
+						// Give button a unique ID
+						while($('#'+id).length) {
+							id = btn.id + '_' + (++num);
+						}
+						if(!svgicons) {
+							icon = (btn.type == "menu") ? "" : $('<img src="' + btn.icon + '">');
+						} else {
+							fallback_obj[id] = btn.icon;
+							var svgicon = btn.svgicon ? btn.svgicon : btn.id;
+							if(btn.type == 'app_menu') {
+								placement_obj['#' + id + ' > div'] = svgicon;
+							} else {
+								placement_obj['#' + id] = svgicon;
+							}
+						}
+						
+						var cls, parent;
+						
+						
+						
+						// Set button up according to its type
+						switch ( btn.type ) {
+						case 'mode_flyout':
+						case 'mode':
+							cls = 'tool_button';
+							if(btn.cls) {
+  						  cls += " " + btn.cls;
+  						}
+							parent = "#tools_left";
+							break;
+						case 'context':
+							cls = 'tool_button';
+							parent = "#" + btn.panel;
+							// create the panel if it doesn't exist
+							if(!$(parent).length)
+								$('<div>', {id: btn.panel}).appendTo("#tools_top");
+							break;
+						case 'menu':
+							cls = 'menu_item tool_button';
+							parent = "#" + (btn.after || btn.panel);
+							break;
+						case 'app_menu':
+							cls = '';
+							parent = btn.parent || '#main_menu ul';
+							// create the panel if it doesn't exist
+							if(!$(parent).length)
+								$('<div>', {id: btn.panel}).appendTo("#tools_top");
+							break;
+						}
+						
+						var button = $((btn.list || btn.type == 'app_menu')?'<li/>':'<div/>')
+							.attr("id", id)
+							.attr("title", btn.title)
+							.addClass(cls);
+						if(!btn.includeWith && !btn.list) {
+							if("position" in btn) {
+								$(parent).children().eq(btn.position).before(button);
+							} else {
+								if (btn.type != "menu" || !btn.after) button.appendTo(parent);
+								else $(parent).after(button);
+							}
+
+							if(btn.type =='mode_flyout') {
+							// Add to flyout menu / make flyout menu
+	// 							var opts = btn.includeWith;
+	// 							// opts.button, default, position
+								var ref_btn = $(button);
+								
+								var flyout_holder = ref_btn.parent();
+								// Create a flyout menu if there isn't one already
+								if(!ref_btn.parent().hasClass('tools_flyout')) {
+									// Create flyout placeholder
+									var tls_id = ref_btn[0].id.replace('tool_','tools_')
+									var show_btn = ref_btn.clone()
+										.attr('id',tls_id + '_show')
+										.append($('<div>',{'class':'flyout_arrow_horiz'}));
+										
+									ref_btn.before(show_btn);
+								
+									// Create a flyout div
+									flyout_holder = makeFlyoutHolder(tls_id, ref_btn);
+									flyout_holder.data('isLibrary', true);
+									show_btn.data('isLibrary', true);
+								} 
+								
+								
+								
+	// 							var ref_data = Actions.getButtonData(opts.button);
+								
+								placement_obj['#' + tls_id + '_show'] = btn.id;
+								// TODO: Find way to set the current icon using the iconloader if this is not default
+								
+								// Include data for extension button as well as ref button
+								var cur_h = holders['#'+flyout_holder[0].id] = [{
+									sel: '#'+id,
+									fn: btn.events.click,
+									icon: btn.id,
+                  //key: btn.key,
+									isDefault: true
+								}, ref_data];
+
+							} else if(btn.type == 'app_menu' || btn.type == 'menu') {
+								button.append(btn.title);
+							}
+							
+						} else if(btn.list) {
+							// Add button to list
+							button.addClass('push_button');
+							$('#' + btn.list + '_opts').append(button);
+ 							if(btn.isDefault) {
+ 								$('#cur_' + btn.list).append(button.children().clone());
+ 								var svgicon = btn.svgicon?btn.svgicon:btn.id;
+	 							placement_obj['#cur_' + btn.list] = svgicon;
+ 							}
+						} else if(btn.includeWith) {
+							// Add to flyout menu / make flyout menu
+							var opts = btn.includeWith;
+							// opts.button, default, position
+							var ref_btn = $(opts.button);
+							
+							var flyout_holder = ref_btn.parent();
+							// Create a flyout menu if there isn't one already
+							if(!ref_btn.parent().hasClass('tools_flyout')) {
+								// Create flyout placeholder
+								var tls_id = ref_btn[0].id.replace('tool_','tools_')
+								var show_btn = ref_btn.clone()
+									.attr('id',tls_id + '_show')
+									.append($('<div>',{'class':'flyout_arrow_horiz'}));
+									
+								ref_btn.before(show_btn);
+							
+								// Create a flyout div
+								flyout_holder = makeFlyoutHolder(tls_id, ref_btn);
+							} 
+							
+							var ref_data = Actions.getButtonData(opts.button);
+							
+							if(opts.isDefault) {
+								placement_obj['#' + tls_id + '_show'] = btn.id;
+							} 
+							// TODO: Find way to set the current icon using the iconloader if this is not default
+							
+							// Include data for extension button as well as ref button
+							var cur_h = holders['#'+flyout_holder[0].id] = [{
+								sel: '#'+id,
+								fn: btn.events.click,
+								icon: btn.id,
+								key: btn.key,
+								isDefault: btn.includeWith?btn.includeWith.isDefault:0
+							}, ref_data];
+							
+							// {sel:'#tool_rect', fn: clickRect, evt: 'mouseup', key: 4, parent: '#tools_rect', icon: 'rect'}
+								
+							var pos  = ("position" in opts)?opts.position:'last';
+							var len = flyout_holder.children().length;
+							
+							// Add at given position or end
+							if(!isNaN(pos) && pos >= 0 && pos < len) {
+								flyout_holder.children().eq(pos).before(button);
+							} else {
+								flyout_holder.append(button);
+								cur_h.reverse();
+							}
+						} 
+						
+						if(!svgicons) {
+							button.append(icon);
+						}
+						
+						if(!btn.list) {
+							// Add given events to button
+							$.each(btn.events, function(name, func) {
+								if(name == "click") {
+									if(btn.type == 'mode') {
+										if(btn.includeWith) {
+											button.bind(name, func);
+										} else {
+											button.bind(name, function() {
+												if(toolButtonClick(button)) {
+													func();
+												}
+											});
+										}
+										if(btn.key) {
+											$(document).bind('keydown', btn.key, func);
+											if(btn.title) button.attr("title", btn.title + ' ['+btn.key+']');
+										}
+									} else {
+										button.bind(name, func);
+									}
+								} else {
+									button.bind(name, func);
+								}
+							});
+						}
+						setupFlyouts(holders);
+					});
+					
+					$.each(btn_selects, function() {
+						addAltDropDown(this.elem, this.list, this.callback, {seticon: true}); 
+					});
+					
+					if (svgicons)
+						cb_ready = false; // Delay callback
+
+					$.svgIcons(svgicons, {
+						w:27, h:27,
+						id_match: false,
+						no_img: (!isWebkit),
+						fallback: fallback_obj,
+						placement: placement_obj,
+						callback: function(icons) {
+							// Non-ideal hack to make the icon match the current size
+							if(curPrefs.iconsize && curPrefs.iconsize != 'm') {
+								prepResize();
+							}
+							cb_ready = true; // Ready for callback
+							runCallback();
+						}
+				
+					});
+				}
+				
+				runCallback();
+			};
+			
+			var getPaint = function(color, opac, type) {
+				// update the editor's fill paint
+				var opts = null;
+				if (color.indexOf("url(#") === 0) {
+					var refElem = svgCanvas.getRefElem(color);
+					if(refElem) {
+						refElem = refElem.cloneNode(true);
+					} else {
+						refElem =  $("#" + type + "_color defs *")[0];
+					}
+					
+					opts = { alpha: opac };
+					opts[refElem.tagName] = refElem;
+				} 
+				else if (color.indexOf("#") === 0) {
+					opts = {
+						alpha: opac,
+						solidColor: color.substr(1)
+					};
+				}
+				else {
+					opts = {
+						alpha: opac,
+						solidColor: 'none'
+					};
+				}
+				return new $.jGraduate.Paint(opts);
+			};	
+			
+			// set the canvas properties at init
+			var res = svgCanvas.getResolution();
+			if(curConfig.baseUnit !== "px") {
+				res.w = svgedit.units.convertUnit(res.w) + curConfig.baseUnit;
+				res.h = svgedit.units.convertUnit(res.h) + curConfig.baseUnit;
+			}
+			
+			var createBackground = function(fill) {
+        svgCanvas.createLayer("background")
+  			cur_shape = svgCanvas.addSvgElementFromJson({
+  				"element": "rect",
+  				"attr": {
+  					"x": -1,
+  					"y": -1,
+  					"width": res.w+2,
+  					"height": res.h+2,
+  					"stroke": "none",
+  					"id": "canvas_background",
+  					"opacity": 1,
+  					"fill": fill || "#fff",
+  					"style": "pointer-events:none"
+  				}
+  			});
+  			svgCanvas.setCurrentLayer("Layer 1")
+  			svgCanvas.setCurrentLayerPosition("1")
+      }
+			
+			// create a new layer background if it doesn't exist
+			if (!document.getElementById('canvas_background')) createBackground();
+			var fill = document.getElementById('canvas_background').getAttribute("fill");
+			
+			// updates the toolbar (colors, opacity, etc) based on the selected element
+			// This function also updates the opacity and id elements that are in the context panel
+			var updateToolbar = function() {
+				if (selectedElement != null) {
+					switch ( selectedElement.tagName ) {
+					case 'use':
+					  $(".context_panel").hide();
+					  $("#use_panel").show();
+					  break;
+					case 'image':
+  					$(".context_panel").hide();
+  				  $("#image_panel").show();
+  				  break;
+					case 'foreignObject':
+  					$(".context_panel").hide();
+						break;
+					case 'g':
+					case 'a':
+						// Look for common styles
+						var gWidth = null;
+						
+						var childs = selectedElement.getElementsByTagName('*');
+						for(var i = 0, len = childs.length; i < len; i++) {
+							var swidth = childs[i].getAttribute("stroke-width");
+							if(i === 0) {
+								gWidth = swidth;
+							} else if(gWidth !== swidth) {
+								gWidth = null;
+							}
+						}
+						
+						$('#stroke_width').val(gWidth === null ? "0" : gWidth);
+            updateContextPanel();
+						break;
+					default:
+						//removed because multiselect shouldnt set color
+						//Editor.paintBox.fill.update(false);
+						//Editor.paintBox.stroke.update(false);
+						
+						$('#stroke_width').val(selectedElement.getAttribute("stroke-width") || 0);
+						var dash = selectedElement.getAttribute("stroke-dasharray") || "none"
+						$('option', '#stroke_style').removeAttr('selected');
+						$('#stroke_style option[value="'+ dash +'"]').attr("selected", "selected");
+						$('#stroke_style').trigger('change');
+
+	          $.fn.dragInput.updateCursor($('#stroke_width')[0])
+	          $.fn.dragInput.updateCursor($('#blur')[0])
+					}
+	
+				}
+				
+				// All elements including image and group have opacity
+				if(selectedElement != null) {
+					var opac_perc = ((selectedElement.getAttribute("opacity")||1.0)*100);
+					$('#group_opacity').val(opac_perc);
+					$.fn.dragInput.updateCursor($('#group_opacity')[0])
+				}
+			};
+		
+			var setImageURL = Editor.setImageURL = function(url) {
+				if(!url) url = default_img_url;
+				
+				svgCanvas.setImageURL(url);
+				$('#image_url').val(url);
+			}
+		
+			var setInputWidth = function(elem) {
+				var w = Math.min(Math.max(12 + elem.value.length * 6, 50), 300);
+				$(elem).width(w);
+			}
+		
+			// updates the context panel tools based on the selected element
+			var updateContextPanel = function(e) {
+			var elem = selectedElement;
+				// If element has just been deleted, consider it null
+				if(elem != null && !elem.parentNode) elem = null;
+				if (multiselected && multiselected[0] != null && !multiselected[0].parentNode) multiselected = false;
+				
+				var currentLayerName = svgCanvas.getCurrentDrawing().getCurrentLayerName();
+				var currentMode = svgCanvas.getMode();
+				var unit = curConfig.baseUnit !== 'px' ? curConfig.baseUnit : null;
+				var is_node = currentMode == 'pathedit'; //elem ? (elem.id && elem.id.indexOf('pathpointgrip') == 0) : false;
+				
+				if (is_node) {
+				  $('.context_panel').hide();
+				  $('#path_node_panel').show();
+				  $('#stroke_panel').hide();
+					var point = path.getNodePoint();
+					$('#tool_add_subpath').removeClass('push_button_pressed').addClass('tool_button');
+					$('#tool_node_delete').toggleClass('disabled', !path.canDeleteNodes);
+					
+					// Show open/close button based on selected point
+					setIcon('#tool_openclose_path', path.closed_subpath ? 'open_path' : 'close_path');
+					
+					if(point) {
+						var seg_type = $('#seg_type');
+						if(unit) {
+							point.x = svgedit.units.convertUnit(point.x);
+							point.y = svgedit.units.convertUnit(point.y);
+						}
+						$('#path_node_x').val(Math.round(point.x));
+						$('#path_node_y').val(Math.round(point.y));
+						if(point.type) {
+							seg_type.val(point.type).removeAttr('disabled');
+							$("#seg_type_label").html(point.type == 4 ? "Straight" : "Curve")
+						} else {
+							seg_type.val(4).attr('disabled','disabled');
+						}
+					}
+					$("#tools_top").removeClass("multiselected")			  
+          $("#stroke_panel").hide();
+          $("#canvas_panel").hide();
+					return;
+				}
+				
+				var menu_items = $('#cmenu_canvas li');
+				$('.context_panel').hide();
+				$('.menu_item', '#edit_menu').addClass('disabled');
+				$('.menu_item', '#object_menu').addClass('disabled');
+				
+        
+        //hack to show the proper multialign box
+        if (multiselected) {
+          multiselected = multiselected.filter(Boolean);
+          elem = (svgCanvas.elementsAreSame(multiselected)) ? multiselected[0] : null
+          if (elem) $("#tools_top").addClass("multiselected")
+        }
+
+        if (!elem && !multiselected) {
+          $("#tools_top").removeClass("multiselected")			  
+          $("#stroke_panel").hide();
+          $("#canvas_panel").show();
+				}
+		
+				if (elem != null) {
+				  $("#stroke_panel").show();
+					var elname = elem.nodeName;
+					var angle = svgCanvas.getRotationAngle(elem);
+					$('#angle').val(Math.round(angle));
+					
+					var blurval = svgCanvas.getBlur(elem);
+					$('#blur').val(blurval);
+					if(!is_node && currentMode != 'pathedit') {
+						$('#selected_panel').show();
+						$('.action_selected').removeClass('disabled');
+						// Elements in this array already have coord fields
+            var x, y
+						if(['g', 'polyline', 'path'].indexOf(elname) >= 0) {
+							var bb = svgCanvas.getStrokedBBox([elem]);
+							if(bb) {
+								x = bb.x;
+								y = bb.y;
+							}
+						}
+						
+						if(unit) {
+							x = svgedit.units.convertUnit(x);
+							y = svgedit.units.convertUnit(y);
+						}
+
+						$("#" + elname +"_x").val(Math.round(x))
+						$("#" + elname +"_y").val(Math.round(y))
+						if (elname === "polyline") {
+						  //we're acting as if polylines were paths
+						  $("#path_x").val(Math.round(x))
+  						$("#path_y").val(Math.round(y))
+						}
+											
+					  // Elements in this array cannot be converted to a path
+  					var no_path = ['image', 'text', 'path', 'g', 'use'].indexOf(elname) == -1;
+  					if (no_path) $('.action_path_convert_selected').removeClass('disabled');
+  					if (elname === "path") $('.action_path_selected').removeClass('disabled');
+  
+					}
+					
+					var link_href = null;
+					if (el_name === 'a') {
+						link_href = svgCanvas.getHref(elem);
+						$('#g_panel').show();
+					}
+					
+					if(elem.parentNode.tagName === 'a') {
+						if(!$(elem).siblings().length) {
+							$('#a_panel').show();
+							link_href = svgCanvas.getHref(elem.parentNode);
+						}
+					}
+					
+					// Hide/show the make_link buttons
+					$('#tool_make_link, #tool_make_link').toggle(!link_href);
+					
+					if(link_href) {
+						$('#link_url').val(link_href);
+					}
+					
+					// update contextual tools here
+					var panels = {
+						g: [],
+						a: [],
+						rect: ['rx','width','height', 'x', 'y'],
+						image: ['width','height', 'x', 'y'],
+						circle: ['cx','cy','r'],
+						ellipse: ['cx','cy','rx','ry'],
+						line: ['x1','y1','x2','y2'], 
+						text: ['x', 'y'],
+						'use': [],
+						path : []
+					};
+					
+					var el_name = elem.tagName;
+					
+ 					if($(elem).data('gsvg')) {
+ 						$('#g_panel').show();
+ 					}
+ 					
+ 					if (el_name == "path" || el_name == "polyline") {
+ 					  $('#path_panel').show();
+ 					}
+					
+					if(panels[el_name]) {
+						var cur_panel = panels[el_name];
+						$('#' + el_name + '_panel').show();
+			      
+			      // corner radius has to live in a different panel
+			      // because otherwise it changes the position of the 
+			      // of the elements
+			      if(el_name == "rect") $("#cornerRadiusLabel").show()
+			      else $("#cornerRadiusLabel").hide()
+						
+						$.each(cur_panel, function(i, item) {
+							var attrVal = elem.getAttribute(item);
+							if(curConfig.baseUnit !== 'px' && elem[item]) {
+								var bv = elem[item].baseVal.value;
+								attrVal = svgedit.units.convertUnit(bv);
+							}
+							
+							//update the draginput cursors
+						  var name_item = document.getElementById(el_name + '_' + item);
+							name_item.value = Math.round(attrVal) || 0;
+							if (name_item.getAttribute("data-cursor") === "true") {
+      				  $.fn.dragInput.updateCursor(name_item );
+      				}
+						});
+						
+						if(el_name == 'text') {
+							var font_family = elem.getAttribute("font-family");
+							var select = document.getElementById("font_family_dropdown");
+							select.selectedIndex = 3
+							
+							$('#text_panel').css("display", "inline");	
+							$('#tool_italic').toggleClass('active', svgCanvas.getItalic())
+							$('#tool_bold').toggleClass('active', svgCanvas.getBold())
+							$('#font_family').val(font_family);
+							$('#font_size').val(elem.getAttribute("font-size"));
+							$('#text').val(elem.textContent);
+							$('#preview_font').text(font_family.split(",")[0].replace(/'/g, "")).css('font-family', font_family);
+							if (svgCanvas.addedNew) {
+								// Timeout needed for IE9
+								setTimeout(function() {
+									$('#text').focus().select();
+								},100);
+							}
+						} // text
+						else if(el_name == 'image') {
+							setImageURL(svgCanvas.getHref(elem));
+						} // image
+						else if(el_name === 'g' || el_name === 'use') {
+							$('#container_panel').show();
+							$('.action_group_selected').removeClass('disabled');
+							var title = svgCanvas.getTitle();
+						}
+					}
+					menu_items[(el_name === 'g' ? 'en':'dis') + 'ableContextMenuItems']('#ungroup');
+					menu_items[((el_name === 'g' || !multiselected) ? 'dis':'en') + 'ableContextMenuItems']('#group');
+				}
+				
+				if (multiselected) {
+					$('#multiselected_panel').show();
+					$('.action_multi_selected').removeClass('disabled');
+					menu_items
+						.enableContextMenuItems('#group')
+						.disableContextMenuItems('#ungroup');
+				} 
+				
+				if (!elem) {
+					menu_items.disableContextMenuItems('#delete,#cut,#copy,#group,#ungroup,#move_front,#move_up,#move_down,#move_back');
+				}
+				
+				// update history buttons
+				if (undoMgr.getUndoStackSize() > 0) {
+					$('#tool_undo').removeClass( 'disabled');
+				}
+				else {
+					$('#tool_undo').addClass( 'disabled');
+				}
+				if (undoMgr.getRedoStackSize() > 0) {
+					$('#tool_redo').removeClass( 'disabled');
+				}
+				else {
+					$('#tool_redo').addClass( 'disabled');
+				}
+				
+				svgCanvas.addedNew = false;
+				
+				if ( (elem && !is_node)	|| multiselected) {
+					// update the selected elements' layer
+					$('#selLayerNames').removeAttr('disabled').val(currentLayerName);
+					
+					// Enable regular menu options
+					canv_menu.enableContextMenuItems('#delete,#cut,#copy,#move_front,#move_up,#move_down,#move_back');
+				}
+			};
+		
+			$('#text').on("focus", function(e){ textBeingEntered = true; } );
+			$('#text').on("blur", function(){ textBeingEntered = false; } );
+		  
+			// bind the selected event to our function that handles updates to the UI
+			svgCanvas.bind("selected", selectedChanged);
+			svgCanvas.bind("transition", elementTransition);
+			svgCanvas.bind("changed", elementChanged);
+			svgCanvas.bind("saved", saveHandler);
+			svgCanvas.bind("exported", exportHandler);
+			svgCanvas.bind("zoomed", zoomChanged);
+			svgCanvas.bind("contextset", contextChanged);
+			svgCanvas.bind("extension_added", extAdded);
+			svgCanvas.textActions.setInputElem($("#text")[0]);
+		
+			var str = '<div class="palette_item transparent" data-rgb="none"></div>\
+								<div class="palette_item black" data-rgb="#000000"></div>\
+								<div class="palette_item white" data-rgb="#ffffff"></div>'
+			palette.forEach(function(item, i){
+				str += '<div class="palette_item" style="background-color: ' + item + ';" data-rgb="' + item + '"></div>';
+			});
+			$('#palette').append(str);
+			
+			var changeFontSize = function(ctl) {
+				svgCanvas.setFontSize(ctl.value);
+			}
+			
+			var changeStrokeWidth = function(ctl) {
+				var val = ctl.value;
+				if(val == 0 && selectedElement && ['line', 'polyline'].indexOf(selectedElement.nodeName) >= 0) {
+					val = ctl.value = 1;
+				}
+				svgCanvas.setStrokeWidth(val);
+			}
+			
+			//cache
+			var $indicator = $('#tool_angle_indicator')
+			var $reorient = $('#tool_reorient')
+			
+			rotateCursor = function(angle){
+			  var rotate_string = 'rotate('+ angle + 'deg)'
+  			$indicator.css({
+  			  '-webkit-transform': rotate_string,
+  			  '-moz-transform': rotate_string,
+  			  '-o-transform': rotate_string,
+  			  '-ms-transform': rotate_string,
+  			  'transform': rotate_string
+  			});
+			}
+			
+			var changeRotationAngle = function(ctl) {
+			  var preventUndo = true;
+				svgCanvas.setRotationAngle(ctl.value, preventUndo);
+				rotateCursor(ctl.value)
+				$('#tool_reorient').toggleClass('disabled', ctl.value == 0);
+			}
+			
+			var changeZoom = function(ctl) {
+				var zoomlevel = ctl.value / 100;
+				if(zoomlevel < .001) {
+					ctl.value = .1;
+					return;
+				}
+				var zoom = svgCanvas.getZoom();
+				var w_area = workarea;
+				zoomChanged(window, {
+					width: 0,
+					height: 0,
+					// center pt of scroll position
+					x: (w_area[0].scrollLeft + w_area.width()/2)/zoom, 
+					y: (w_area[0].scrollTop + w_area.height()/2)/zoom,
+					zoom: zoomlevel
+				}, true);
+			}
+			
+			var changeBlur = function(ctl, completed) {
+				val = ctl.value;
+				$('#blur').val(val);
+				if (completed) {
+				  svgCanvas.setBlur(val, true);
+				}
+				else {
+				  svgCanvas.setBlurNoUndo(val);
+				}
+			}
+		
+			var operaRepaint = function() {
+				// Repaints canvas in Opera. Needed for stroke-dasharray change as well as fill change
+				if(!window.opera) return;
+				$('<p/>').hide().appendTo('body').remove();
+			}
+		
+			$('#stroke_style').change(function(){
+				svgCanvas.setStrokeAttr('stroke-dasharray', $(this).val());
+				$("#stroke_style_label").html(this.options[this.selectedIndex].text)
+				operaRepaint();
+			});
+			
+			$('#seg_type').change(function() {
+				svgCanvas.setSegType($(this).val());
+				$("#seg_type_label").html(this.options[this.selectedIndex].text)
+			});
+		
+			// Lose focus for select elements when changed (Allows keyboard shortcuts to work better)
+			$('select').change(function(){$(this).blur();});
+		
+			$('#font_family').change(function() {
+				svgCanvas.setFontFamily(this.value);
+			});
+				
+			$('#text').keyup(function(){
+				svgCanvas.setTextContent(this.value);
+			});
+		  
+			changeAttribute = function(el, completed) {
+				var attr = el.getAttribute("data-attr");
+				var multiplier = el.getAttribute("data-multiplier") || 1;
+				multiplier = parseFloat(multiplier);
+				var val = el.value * multiplier;
+				var valid = svgedit.units.isValidUnit(attr, val, selectedElement);
+				if(!valid) {
+					$.alert(uiStrings.notification.invalidAttrValGiven);
+					el.value = selectedElement.getAttribute(attr);
+					return false;
+				}
+				//if (!noUndo) svgCanvas.changeSelectedAttribute(attr, val);
+				svgCanvas.changeSelectedAttributeNoUndo(attr, val);
+			};
+			
+			picking = false;
+			$(document).on("mouseup", function(){picking = false;})
+
+			$('#palette').on("mousemove mousedown touchstart touchmove", ".palette_item", function(evt){
+				evt.preventDefault();
+
+				if (evt.type == "mousedown") picking = true;
+				if (picking) {
+					var isStroke = $('#tool_stroke').hasClass('active');
+					var picker = isStroke ? "stroke" : "fill";
+					var color = $(this).attr('data-rgb');
+					var paint = null;
+					var noUndo = true;
+					if (evt.type == "mousedown") noUndo = false 
+					// Webkit-based browsers returned 'initial' here for no stroke
+					if (color === 'transparent' || color === 'initial' || color === '#none') {
+						color = 'none';
+						paint = new $.jGraduate.Paint();
+					}
+					else {
+						paint = new $.jGraduate.Paint({alpha: 100, solidColor: color.substr(1)});
+					}
+					
+					Editor.paintBox[picker].setPaint(paint);
+					
+					if (isStroke) {
+						svgCanvas.setColor('stroke', color, noUndo);
+						if (color != 'none' && svgCanvas.getStrokeOpacity() != 1) {
+							svgCanvas.setPaintOpacity('stroke', 1.0);
+						}
+					} else {
+						svgCanvas.setColor('fill', color, noUndo);
+						if (color != 'none' && svgCanvas.getFillOpacity() != 1) {
+							svgCanvas.setPaintOpacity('fill', 1.0);
+						}
+					}
+				}
+			}).bind('contextmenu', function(e) {e.preventDefault()});
+		
+			$("#toggle_stroke_tools").toggle(function() {
+				$(".stroke_tool").css('display','table-cell');
+				$(this).addClass('expanded');
+				resetScrollPos();
+			}, function() {
+				$(".stroke_tool").css('display','none');
+				$(this).removeClass('expanded');
+				resetScrollPos();
+			});
+		
+			// This is a common function used when a tool has been clicked (chosen)
+			// It does several common things:
+			// - removes the tool_button_current class from whatever tool currently has it
+			// - hides any flyouts
+			// - adds the tool_button_current class to the button passed in
+			var toolButtonClick = function(button, noHiding) {
+				if ($(button).hasClass('disabled')) return false;
+				if($(button).parent().hasClass('tools_flyout')) return true;
+				var fadeFlyouts = fadeFlyouts || 'normal';
+				if(!noHiding) {
+					$('.tools_flyout').fadeOut(fadeFlyouts);
+				}
+				$('#styleoverrides').text('');
+				$('.tool_button_current').removeClass('tool_button_current').addClass('tool_button');
+				$(button).addClass('tool_button_current').removeClass('tool_button');
+				return true;
+			};
+			
+			(function() {
+				var last_x = null, last_y = null, w_area = workarea[0], 
+					panning = false, keypan = false;
+				
+				var move_pan = function(evt) {    
+  					if(panning === false) return;
+
+  				  w_area.scrollLeft -= (evt.clientX - last_x);
+  					w_area.scrollTop -= (evt.clientY - last_y);
+  					last_x = evt.clientX;
+  					last_y = evt.clientY;
+  					if(evt.type === 'mouseup' || evt.type === 'touchend') panning = false;
+  					return false;
+  			}
+  			
+  			var start_pan = function(evt) {
+  				if(evt.button === 1 || keypan === true || (evt.originalEvent.touches && evt.originalEvent.touches.length >= 2)) {
+  					panning = true;
+  					last_x = evt.clientX;
+  					last_y = evt.clientY;
+  					return false;
+  				}
+			  }
+				
+				$('#svgcanvas')
+				  .on('mousemove mouseup touchend', move_pan)
+				  .on("mousedown touchmove", start_pan)
+				
+				$(window).mouseup(function() {
+					panning = false;
+				});
+				
+				$(document).bind('keydown', 'space', function(evt) {
+					evt.preventDefault();
+					svgCanvas.spaceKey = keypan = true;
+					
+				}).bind('keyup', 'space', function(evt) {
+					evt.preventDefault();
+					svgCanvas.spaceKey = keypan = false;
+				}).bind('keydown', 'alt', function(evt) {
+					if(svgCanvas.getMode() === 'zoom') {
+						workarea.addClass('out');
+					}
+				}).bind('keyup', 'alt', function(evt) {
+					if(svgCanvas.getMode() === 'zoom') {
+						workarea.removeClass('out');
+					}
+				})
+			}());
+			
+			
+			function setStrokeOpt(opt, changeElem) {
+				var id = opt.id;
+				var bits = id.split('_');
+				var pre = bits[0];
+				var val = bits[1];
+			
+				if(changeElem) {
+					svgCanvas.setStrokeAttr('stroke-' + pre, val);
+				}
+				operaRepaint();
+				setIcon('#cur_' + pre , id, 20);
+				$(opt).addClass('current').siblings().removeClass('current');
+			}
+			
+      //menu handling
+      var menus = $('.menu');
+      var blinker = function(e) {
+        e.target.style.background = "#fff";
+        setTimeout(function(){e.target.style.background = "#ddd";}, 50);
+        setTimeout(function(){e.target.style.background = "#fff";}, 150);
+        setTimeout(function(){e.target.style.background = "#ddd";}, 200);
+        setTimeout(function(){e.target.style.background = "";}, 200);
+        setTimeout(function(){$('#menu_bar').removeClass('active')}, 220);
+        return false;
+      }
+      var closer = function(e){
+        if (e.target.nodeName && e.target.nodeName.toLowerCase() === "input") return false;
+        if (!$(e.target).hasClass("menu_title") && !$(e.target).parent().hasClass("menu_title")) {
+          if(!$(e.target).hasClass("disabled") && $(e.target).hasClass("menu_item")) blinker(e)
+          else $('#menu_bar').removeClass('active')
+
+        }  
+      }
+      
+      $('.menu_item').on('mousedown touchstart', function(e){blinker(e)});
+      $("svg, body").on('mousedown  touchstart', function(e){closer(e)});
+      
+      var accumulatedDelta = 0
+      $('#workarea').on('mousewheel', function(e, delta, deltaX, deltaY){
+        if (e.altKey) {
+          e.preventDefault();
+          zoom = parseInt($("#zoom").val())
+          $("#zoom").val(parseInt(zoom + deltaY*10)).change()
+        }
+      })
+			$('.menu_title')
+			  .on('mousedown', function() {
+			    $("#tools_shapelib").hide()
+			    $("#menu_bar").toggleClass('active');
+			    menus.removeClass('open');
+          $(this).parent().addClass('open');
+			  })
+        .on('mouseover', function() {
+           menus.removeClass('open');
+           $(this).parent().addClass('open');
+         });
+
+			
+			// Made public for UI customization.
+			// TODO: Group UI functions into a public methodDraw.ui interface.
+			Editor.addDropDown = function(elem, callback, dropUp) {
+				if ($(elem).length == 0) return; // Quit if called on non-existant element
+				var button = $(elem).find('button');
+				
+				var list = $(elem).find('ul').attr('id', $(elem)[0].id + '-list');
+				
+				if(!dropUp) {
+					// Move list to place where it can overflow container
+					$('#option_lists').append(list);
+				}
+				
+				var on_button = false;
+				if(dropUp) {
+					$(elem).addClass('dropup');
+				}
+			
+				list.find('li').bind('mouseup', callback);
+				
+				$(window).mouseup(function(evt) {
+					if(!on_button) {
+						button.removeClass('down');
+						list.hide();
+					}
+					on_button = false;
+				});
+				
+				button.bind('mousedown',function() {
+					if (!button.hasClass('down')) {
+						button.addClass('down');
+						
+						if(!dropUp) {
+							var pos = $(elem).offset();
+							// position slider
+							list.css({
+								top: pos.top,
+								left: pos.left - 110
+							});
+						}
+						list.show();
+						
+						on_button = true;
+					} else {
+						button.removeClass('down');
+						list.hide();
+					}
+				}).hover(function() {
+					on_button = true;
+				}).mouseout(function() {
+					on_button = false;
+				});
+			}
+			
+			// TODO: Combine this with addDropDown or find other way to optimize
+			var addAltDropDown = function(elem, list, callback, opts) {
+				var button = $(elem);
+				var list = $(list);
+				var on_button = false;
+				var dropUp = opts.dropUp;
+				if(dropUp) {
+					$(elem).addClass('dropup');
+				}
+				list.find('li').bind('mouseup', function() {
+					if(opts.seticon) {
+						setIcon('#cur_' + button[0].id , $(this).children());
+						$(this).addClass('current').siblings().removeClass('current');
+					}
+					callback.apply(this, arguments);
+
+				});
+				
+				$(window).mouseup(function(evt) {
+					if(!on_button) {
+						button.removeClass('down');
+						list.hide();
+						list.css({top:0, left:0});
+					}
+					on_button = false;
+				});
+				
+				var height = list.height();
+				$(elem).bind('mousedown',function() {
+					var off = $(elem).offset();
+					if(dropUp) {
+						off.top -= list.height();
+						off.left += 8;
+					} else {
+						off.top += $(elem).height();
+					}
+					$(list).offset(off);
+					
+					if (!button.hasClass('down')) {
+						button.addClass('down');
+						list.show();
+						on_button = true;
+						return false;
+					} else {
+						button.removeClass('down');
+						// CSS position must be reset for Webkit
+						list.hide();
+						list.css({top:0, left:0});
+					}
+				}).hover(function() {
+					on_button = true;
+				}).mouseout(function() {
+					on_button = false;
+				});
+				
+				if(opts.multiclick) {
+					list.mousedown(function() {
+						on_button = true;
+					});
+				}
+			}
+			
+			$('#font_family_dropdown').change(function() {
+				var fam = this.options[this.selectedIndex].value
+				var fam_display = this.options[this.selectedIndex].text
+				$('#preview_font').html(fam_display).css("font-family", fam);
+				$('#font_family').val(fam).change();
+			});
+			
+			$('div', '#position_opts').each(function(){
+			  this.addEventListener("mouseup", function(){
+				  var letter = this.id.replace('tool_pos','').charAt(0);
+				  svgCanvas.alignSelectedElements(letter, 'page');
+				})
+			});
+			
+			/*
+			
+			When a flyout icon is selected
+				(if flyout) {
+				- Change the icon
+				- Make pressing the button run its stuff
+				}
+				- Run its stuff
+			
+			When its shortcut key is pressed
+				- If not current in list, do as above
+				, else:
+				- Just run its stuff
+			
+			*/
+			
+			// Unfocus text input when workarea is mousedowned.
+			(function() {
+				var inp;
+				var unfocus = function() {
+					$(inp).blur();
+				}
+				
+				$('#svg_editor').find('button, select, input:not(#text)').focus(function() {
+					inp = this;
+					ui_context = 'toolbars';
+					workarea.mousedown(unfocus);
+				}).blur(function() {
+					ui_context = 'canvas';
+					workarea.unbind('mousedown', unfocus);
+					// Go back to selecting text if in textedit mode
+					if(svgCanvas.getMode() == 'textedit') {
+						$('#text').focus();
+					}
+				});
+				
+			}());
+
+			var clickSelect = function() {
+				if (toolButtonClick('#tool_select')) {
+					svgCanvas.setMode('select');
+				}
+			};
+		
+			var clickFHPath = function() {
+				if (toolButtonClick('#tool_fhpath')) {
+					svgCanvas.setMode('fhpath');
+				}
+			};
+		
+			var clickLine = function() {
+				if (toolButtonClick('#tool_line')) {
+					svgCanvas.setMode('line');
+				}
+			};
+		
+			var clickSquare = function(){
+				if (toolButtonClick('#tool_square')) {
+					svgCanvas.setMode('square');
+				}
+			};
+			
+			var clickRect = function(){
+				if (toolButtonClick('#tool_rect')) {
+					svgCanvas.setMode('rect');
+				}
+			};
+			
+			var clickFHRect = function(){
+				if (toolButtonClick('#tool_fhrect')) {
+					svgCanvas.setMode('fhrect');
+				}
+			};
+			
+			var clickCircle = function(){
+				if (toolButtonClick('#tool_circle')) {
+					svgCanvas.setMode('circle');
+				}
+			};
+		
+			var clickEllipse = function(){
+				if (toolButtonClick('#tool_ellipse')) {
+					svgCanvas.setMode('ellipse');
+				}
+			};
+		
+			var clickFHEllipse = function(){
+				if (toolButtonClick('#tool_fhellipse')) {
+					svgCanvas.setMode('fhellipse');
+				}
+			};
+			
+			var clickImage = function(){
+				if (toolButtonClick('#tool_image')) {
+					svgCanvas.setMode('image');
+				}
+			};
+		
+			var clickZoom = function(){
+				if (toolButtonClick('#tool_zoom')) {
+					svgCanvas.setMode('zoom');
+				}
+			};
+		
+			var dblclickZoom = function(){
+				if (toolButtonClick('#tool_zoom')) {
+					zoomImage();
+					setSelectMode();
+				}
+			};
+		
+			var clickText = function(){
+				if (toolButtonClick('#tool_text')) {
+					svgCanvas.setMode('text');
+				}
+			};
+			
+			var clickPath = function(){
+				if (toolButtonClick('#tool_path')) {
+					svgCanvas.setMode('path');
+				}
+			};
+
+			// Delete is a contextual tool that only appears in the ribbon if
+			// an element has been selected
+			var deleteSelected = function() {
+				if (selectedElement != null || multiselected) {
+					svgCanvas.deleteSelectedElements();
+				}
+				if (path.getNodePoint()) {
+					path.deletePathNode();
+				}
+			};
+		
+			var cutSelected = function() {
+				if (selectedElement != null || multiselected) {
+					flash($('#edit_menu'));
+					svgCanvas.cutSelectedElements();
+				}
+			};
+			
+			var copySelected = function() {
+				if (selectedElement != null || multiselected) {
+				  flash($('#edit_menu'));
+					svgCanvas.copySelectedElements();
+				}
+			};
+			
+			var pasteSelected = function() {
+			  flash($('#edit_menu'));
+				var zoom = svgCanvas.getZoom();				
+				var x = (workarea[0].scrollLeft + workarea.width()/2)/zoom  - svgCanvas.contentW; 
+				var y = (workarea[0].scrollTop + workarea.height()/2)/zoom  - svgCanvas.contentH;
+				svgCanvas.pasteElements('point', x, y); 
+			}
+			
+			var moveToTopSelected = function() {
+				if (selectedElement != null) {
+				  flash($('#object_menu'));
+					svgCanvas.moveToTopSelectedElement();
+				}
+			};
+			
+			var moveToBottomSelected = function() {
+				if (selectedElement != null) {
+				  flash($('#object_menu'));
+					svgCanvas.moveToBottomSelectedElement();
+				}
+			};
+			
+			var moveUpSelected = function() {
+				if (selectedElement != null) {
+			  flash($('#object_menu'));
+					svgCanvas.moveUpDownSelected("Up");
+				}
+			};
+
+			var moveDownSelected = function() {
+				if (selectedElement != null) {
+				  flash($('#object_menu'));
+					svgCanvas.moveUpDownSelected("Down");
+				}
+			};
+			
+			var moveUpDownSelected = function(dir) {
+				if (selectedElement != null) {
+				  flash($('#object_menu'));
+					svgCanvas.moveUpDownSelected(dir);
+				}
+			};
+
+			var convertToPath = function() {
+				if (selectedElement != null) {
+					svgCanvas.convertToPath();
+					var elems = svgCanvas.getSelectedElems()
+					svgCanvas.selectorManager.requestSelector(elems[0]).reset(elems[0])
+					svgCanvas.selectorManager.requestSelector(elems[0]).selectorRect.setAttribute("display", "none");
+					svgCanvas.setMode("pathedit")
+					path.toEditMode(elems[0]);
+					svgCanvas.clearSelection();
+          updateContextPanel();
+				}
+			}
+			
+			var reorientPath = function() {
+				if (selectedElement != null) {
+					path.reorient();
+				}
+			}
+		
+			var makeHyperlink = function() {
+				if (selectedElement != null || multiselected) {
+					$.prompt(uiStrings.notification.enterNewLinkURL, "http://", function(url) {
+						if(url) svgCanvas.makeHyperlink(url);
+					});
+				}
+			}
+		
+			var moveSelected = function(dx,dy) {
+				if (selectedElement != null || multiselected) {
+					if(curConfig.gridSnapping) {
+						// Use grid snap value regardless of zoom level
+						var multi = svgCanvas.getZoom() * curConfig.snappingStep;
+						dx *= multi;
+						dy *= multi;
+					}
+					$('input').blur()
+					svgCanvas.moveSelectedElements(dx,dy);
+				}
+			};
+		
+			var linkControlPoints = function() {
+			//	var linked = document.getElementById('tool_node_link').checked;
+			//	path.linkControlPoints(linked);
+			}
+		
+			var clonePathNode = function() {
+				if (path.getNodePoint()) {
+					path.clonePathNode();
+				}
+			};
+			
+			var deletePathNode = function() {
+				if (path.getNodePoint()) {
+					path.deletePathNode();
+				}
+			};
+		
+			var addSubPath = function() {
+				var button = $('#tool_add_subpath');
+				var sp = !button.hasClass('push_button_pressed');
+				if (sp) {
+					button.addClass('push_button_pressed').removeClass('tool_button');
+				} else {
+					button.removeClass('push_button_pressed').addClass('tool_button');
+				}
+				
+				path.addSubPath(sp);
+				
+			};
+		
+			var opencloseSubPath = function() {
+				path.opencloseSubPath();
+			}	
+			
+			var selectNext = function() {
+				svgCanvas.cycleElement(1);
+			};
+			
+			var selectPrev = function() {
+				svgCanvas.cycleElement(0);
+			};
+			
+			var rotateSelected = function(cw,step) {
+				if (selectedElement == null || multiselected) return;
+				if(!cw) step *= -1;
+				var new_angle = $('#angle').val()*1 + step;
+				svgCanvas.setRotationAngle(new_angle);
+				updateContextPanel();
+			};
+			
+			var clickClear = function(){
+				var dims = curConfig.dimensions;
+				$.confirm(uiStrings.notification.QwantToClear, function(ok) {
+					if(!ok) return;
+					setSelectMode();
+					svgCanvas.clear();
+					svgCanvas.setResolution(dims[0], dims[1]);
+					updateCanvas(true);
+					zoomImage();
+					updateContextPanel();
+					prepPaints();
+					svgCanvas.runExtensions('onNewDocument');
+				});
+			};
+			
+			var clickBold = function(){
+				svgCanvas.setBold( !svgCanvas.getBold() );
+				updateContextPanel();
+			};
+			
+			var clickItalic = function(){
+				svgCanvas.setItalic( !svgCanvas.getItalic() );
+				updateContextPanel();
+			};
+			
+			var clickExport = function() {
+				// Open placeholder window (prevents popup)
+				if(!customHandlers.pngsave)  {
+					var str = uiStrings.notification.loadingImage;
+					exportWindow = window.open("data:text/html;charset=utf-8,<title>" + str + "<\/title><h1>" + str + "<\/h1>");
+				}
+
+				if(window.canvg) {
+					svgCanvas.rasterExport();
+				} else {
+					$.getScript('canvg/rgbcolor.js', function() {
+						$.getScript('canvg/canvg.js', function() {
+							svgCanvas.rasterExport();
+						});
+					});
+				}
+			}
+			
+			// by default, svgCanvas.open() is a no-op.
+			// it is up to an extension mechanism (opera widget, etc) 
+			// to call setCustomHandlers() which will make it do something
+			var clickOpen = function(){
+				svgCanvas.open();
+			};
+			var clickImport = function(){
+			};
+			
+		  var flash = function($menu){
+		    var menu_title = $menu.prev();
+		    menu_title.css({
+		      "background": "white",
+		      "color": "black"
+		    });
+		    setTimeout(function(){menu_title.removeAttr("style")}, 200);
+		  }
+		  
+			var clickUndo = function(){
+				if (undoMgr.getUndoStackSize() > 0) {
+				  flash($('#edit_menu'));
+					undoMgr.undo();
+				}
+			};
+		
+			var clickRedo = function(){
+				if (undoMgr.getRedoStackSize() > 0) {
+				  flash($('#edit_menu'));
+					undoMgr.redo();
+				}
+			};
+			
+			var clickGroup = function(){
+				// group
+				if (multiselected) {
+				  flash($('#object_menu'));
+					svgCanvas.groupSelectedElements();
+				}
+				// ungroup
+				else if(selectedElement){
+				  flash($('#object_menu'));
+					svgCanvas.ungroupSelectedElement();
+				}
+			};
+			
+			var clickClone = function(){
+			  flash($('#edit_menu'));
+				svgCanvas.cloneSelectedElements(20,20);
+			};
+			
+			var clickAlign = function() {
+				var letter = this.id.replace('tool_align','').charAt(0);
+				svgCanvas.alignSelectedElements(letter, $('#align_relative_to').val());
+			};
+			
+			var clickSwitch = function() {
+				var stroke_rect = document.querySelector('#tool_stroke rect');
+				$("#tool_stroke").toggleClass('active')
+				$("#tool_fill").toggleClass('active')
+				var fill_rect = document.querySelector('#tool_fill rect');
+				var fill_color = fill_rect.getAttribute("fill");
+				var stroke_color = stroke_rect.getAttribute("fill");
+				var stroke_opacity = parseFloat(stroke_rect.getAttribute("stroke-opacity"));
+				if (isNaN(stroke_opacity)) {stroke_opacity = 100;}
+				var fill_opacity = parseFloat(fill_rect.getAttribute("fill-opacity"));
+				if (isNaN(fill_opacity)) {fill_opacity = 100;}
+				var stroke = getPaint(stroke_color, stroke_opacity, "stroke");
+				var fill = getPaint(fill_color, fill_opacity, "fill");
+				Editor.paintBox.fill.setPaint(stroke, true);
+				Editor.paintBox.stroke.setPaint(fill, true);
+				
+			};
+			
+			var zoomImage = function(multiplier) {
+				var res = svgCanvas.getResolution();
+				multiplier = multiplier?res.zoom * multiplier:1;
+		// 		setResolution(res.w * multiplier, res.h * multiplier, true);
+				$('#zoom').val(multiplier * 100);
+				svgCanvas.setZoom(multiplier);
+				zoomDone();
+				updateCanvas(true);
+			};
+			
+			var zoomDone = function() {
+		// 		updateBgImage();
+				updateWireFrame();
+				//updateCanvas(); // necessary?
+			}
+		
+			var clickWireframe = function() {
+			  flash($('#view_menu'));
+				var wf = !$('#tool_wireframe').hasClass('push_button_pressed');
+				if (wf) 
+					$('#tool_wireframe').addClass('push_button_pressed');
+				else
+					$('#tool_wireframe').removeClass('push_button_pressed');
+				workarea.toggleClass('wireframe');
+				
+				if(supportsNonSS) return;
+				var wf_rules = $('#wireframe_rules');
+				if(!wf_rules.length) {
+					wf_rules = $('<style id="wireframe_rules"><\/style>').appendTo('head');
+				} else {
+					wf_rules.empty();
+				}
+				
+				updateWireFrame();
+			}
+			
+			var clickSnapGrid = function() {
+			  flash($('#view_menu'));
+				var sg = !$('#tool_snap').hasClass('push_button_pressed');
+				if (sg) 
+					$('#tool_snap').addClass('push_button_pressed');
+				else
+					$('#tool_snap').removeClass('push_button_pressed');		
+				curConfig.gridSnapping = sg;
+			}
+			
+			var minimizeModal = function() {
+        
+			  if (window.self != window.top) { //we're in an iframe
+		      top.exit_fullscreen();
+		    }
+			}
+			
+			var clickRulers = function() {
+			  flash($('#view_menu'));
+				var rulers = !$('#tool_rulers').hasClass('push_button_pressed');
+				if (rulers) {
+					$('#tool_rulers').addClass('push_button_pressed');
+					$('#show_rulers').attr("checked", true);
+					curConfig.showRulers = true;
+				}
+				else {
+					$('#tool_rulers').removeClass('push_button_pressed');
+					$('#show_rulers').attr("checked", false);
+					curConfig.showRulers = false;
+				}
+				$('#rulers').toggle(!!curConfig.showRulers)
+			}
+			
+			var updateWireFrame = function() {
+				// Test support
+				if(supportsNonSS) return;
+		
+				var rule = "#workarea.wireframe #svgcontent * { stroke-width: " + 1/svgCanvas.getZoom() + "px; }";
+				$('#wireframe_rules').text(workarea.hasClass('wireframe') ? rule : "");
+			}
+		
+			var showSourceEditor = function(e, forSaving){
+				if (editingsource) return;
+				flash($('#view_menu'));
+				editingsource = true;
+				
+				$('#save_output_btns').toggle(!!forSaving);
+				$('#tool_source_back').toggle(!forSaving);
+				
+				var str = orig_source = svgCanvas.getSvgString();
+				$('#svg_source_textarea').val(str);
+				$('#svg_source_editor').fadeIn();
+				$('#svg_source_textarea').focus().select();
+			};
+			
+			var clickSave = function(){
+			  flash($('#file_menu'));
+				// In the future, more options can be provided here
+				var saveOpts = {
+					'images': curPrefs.img_save,
+					'round_digits': 6
+				}
+				svgCanvas.save(saveOpts);
+			};
+			
+			var saveSourceEditor = function(){
+				if (!editingsource) return;
+		
+				var saveChanges = function() {
+					svgCanvas.clearSelection();
+					hideSourceEditor();
+					zoomImage();
+					prepPaints();
+				}
+		
+				if (!svgCanvas.setSvgString($('#svg_source_textarea').val())) {
+					$.confirm(uiStrings.notification.QerrorsRevertToSource, function(ok) {
+						if(!ok) return false;
+						saveChanges();
+					});
+				} else {
+					saveChanges();
+				}
+				setSelectMode();		
+			};
+			
+			function setBackground(color, url) {
+// 				if(color == curPrefs.bkgd_color && url == curPrefs.bkgd_url) return;
+				$.pref('bkgd_color', color);
+				$.pref('bkgd_url', url);
+				
+				// This should be done in svgcanvas.js for the borderRect fill
+				svgCanvas.setBackground(color, url);
+			}
+			
+			var setIcon = Editor.setIcon = function(elem, icon_id, forcedSize) {
+				var icon = (typeof icon_id === 'string') ? $.getSvgIcon(icon_id, true) : icon_id.clone();
+				if(!icon) {
+					console.log('NOTE: Icon image missing: ' + icon_id);
+					return;
+				}
+
+				$(elem).find("img").replaceWith(icon);
+			}
+		
+			var ua_prefix;
+			(ua_prefix = function() {
+				var regex = /^(Moz|Webkit|Khtml|O|ms|Icab)(?=[A-Z])/;
+				var someScript = document.getElementsByTagName('script')[0];
+				for(var prop in someScript.style) {
+					if(regex.test(prop)) {
+						// test is faster than match, so it's better to perform
+						// that on the lot and match only when necessary
+						return prop.match(regex)[0];
+					}
+				}
+			
+				// Nothing found so far?
+				if('WebkitOpacity' in someScript.style) return 'Webkit';
+				if('KhtmlOpacity' in someScript.style) return 'Khtml';
+				
+				return '';
+			}());
+			
+			var scaleElements = function(elems, scale) {
+				var prefix = '-' + ua_prefix.toLowerCase() + '-';
+				
+				var sides = ['top', 'left', 'bottom', 'right'];
+			
+				elems.each(function() {
+// 					console.log('go', scale);
+
+					// Handled in CSS
+					// this.style[ua_prefix + 'Transform'] = 'scale(' + scale + ')';
+				
+					var el = $(this);
+					
+					var w = el.outerWidth() * (scale - 1);
+					var h = el.outerHeight() * (scale - 1);
+					var margins = {};
+					
+					for(var i = 0; i < 4; i++) {
+						var s = sides[i];
+						
+						var cur = el.data('orig_margin-' + s);
+						if(cur == null) {
+							cur = parseInt(el.css('margin-' + s));
+							// Cache the original margin
+							el.data('orig_margin-' + s, cur);
+						}
+						var val = cur * scale;
+						if(s === 'right') {
+							val += w;
+						} else if(s === 'bottom') {
+							val += h;
+						}
+						
+						el.css('margin-' + s, val);
+// 						el.css('outline', '1px solid red');
+					}
+				});
+			}
+			
+			var setIconSize = Editor.setIconSize = function(size, force) {
+				if(size == curPrefs.size && !force) return;
+// 				return;
+// 				var elems = $('.tool_button, .push_button, .tool_button_current, .disabled, .icon_label, #url_notice, #tool_open');
+				
+				var sel_toscale = '#tools_top .toolset, #editor_panel > *, #history_panel > *,\
+				#main_button, #tools_left > *, #path_node_panel > *, #multiselected_panel > *,\
+				#g_panel > *, #tool_font_size > *, .tools_flyout';
+				
+				var elems = $(sel_toscale);
+				
+				var scale = 1;
+				
+				if(typeof size == 'number') {
+					scale = size;
+				} else {
+					var icon_sizes = { s:.75, m:1, l:1.25, xl:1.5 };
+					scale = icon_sizes[size];
+				}
+				
+				Editor.tool_scale = tool_scale = scale;
+				
+				setFlyoutPositions();				
+				var hidden_ps = elems.parents(':hidden');
+				hidden_ps.css('visibility', 'hidden').show();
+				scaleElements(elems, scale);
+				hidden_ps.css('visibility', 'visible').hide();
+				
+				var rule_elem = $('#tool_size_rules');
+				if(!rule_elem.length) {
+					rule_elem = $('<style id="tool_size_rules"><\/style>').appendTo('head');
+				} else {
+					rule_elem.empty();
+				}
+				
+				if(size != 'm') {
+					var style_str = '';
+					$.each(cssResizeRules, function(selector, rules) {
+						selector = '#svg_editor ' + selector.replace(/,/g,', #svg_editor');
+						style_str += selector + '{';
+						$.each(rules, function(prop, values) {
+							if(typeof values === 'number') {
+								var val = (values * scale) + 'px';
+							} else if(values[size] || values.all) {
+								var val = (values[size] || values.all);
+							}
+							style_str += (prop + ':' + val + ';');
+						});
+						style_str += '}';
+					});
+					//this.style[ua_prefix + 'Transform'] = 'scale(' + scale + ')';
+					var prefix = '-' + ua_prefix.toLowerCase() + '-';
+					style_str += (sel_toscale + '{' + prefix + 'transform: scale(' + scale + ');}'
+					+ ' #svg_editor div.toolset .toolset {' + prefix + 'transform: scale(1); margin: 1px !important;}' // Hack for markers
+					+ ' #svg_editor .ui-slider {' + prefix + 'transform: scale(' + (1/scale) + ');}' // Hack for sliders
+					);
+					rule_elem.text(style_str);
+				}
+				
+				setFlyoutPositions();
+			}
+		
+			var cancelOverlays = function() {
+				$('#dialog_box').hide();
+				if (!editingsource && !docprops && !preferences) {
+					if(cur_context) {
+						svgCanvas.leaveContext();
+					}
+					return;
+				};
+		
+				if (editingsource) {
+					if (orig_source !== $('#svg_source_textarea').val()) {
+						$.confirm(uiStrings.notification.QignoreSourceChanges, function(ok) {
+							if(ok) hideSourceEditor();
+						});
+					} else {
+						hideSourceEditor();
+					}
+				}
+				else if (docprops) {
+					hideDocProperties();
+				} else if (preferences) {
+					hidePreferences();
+				}
+				resetScrollPos();
+			};
+		
+			var hideSourceEditor = function(){
+				$('#svg_source_editor').hide();
+				editingsource = false;
+				$('#svg_source_textarea').blur();
+			};
+
+			var win_wh = {width:$(window).width(), height:$(window).height()};
+			
+			var resetScrollPos = $.noop, curScrollPos;
+			
+			/* Fix for Issue 781: Drawing area jumps to top-left corner on window resize (IE9)
+			if(svgedit.browser.isIE()) {
+				(function() {
+					resetScrollPos = function() {
+						if(workarea[0].scrollLeft === 0 
+						&& workarea[0].scrollTop === 0) {
+							workarea[0].scrollLeft = curScrollPos.left;
+							workarea[0].scrollTop = curScrollPos.top;
+						}
+					}
+				
+					curScrollPos = {
+						left: workarea[0].scrollLeft,
+						top: workarea[0].scrollTop
+					};
+					
+					$(window).resize(resetScrollPos);
+					methodDraw.ready(function() {
+						// TODO: Find better way to detect when to do this to minimize
+						// flickering effect
+						setTimeout(function() {
+							resetScrollPos();
+						}, 500);
+					});
+					
+					workarea.scroll(function() {
+						curScrollPos = {
+							left: workarea[0].scrollLeft,
+							top: workarea[0].scrollTop
+						};
+					});
+				}());
+			}*/
+			
+			$(window).resize(function(evt) {
+					updateCanvas();
+			});
+			
+			(function() {
+				workarea.scroll(function() {
+					// TODO:  jQuery's scrollLeft/Top() wouldn't require a null check
+					if ($('#ruler_x').length != 0) {
+						$('#ruler_x')[0].scrollLeft = workarea[0].scrollLeft;
+					}
+					if ($('#ruler_y').length != 0) {
+						$('#ruler_y')[0].scrollTop = workarea[0].scrollTop;	
+					}
+				});
+
+			}());
+			
+			$('#url_notice').click(function() {
+				$.alert(this.title);
+			});
+			
+			$('#change_image_url').click(promptImgURL);
+			
+			function promptImgURL() {
+				var curhref = svgCanvas.getHref(selectedElement);
+				curhref = curhref.indexOf("data:") === 0?"":curhref;
+				$.prompt(uiStrings.notification.enterNewImgURL, curhref, function(url) {
+					if(url) setImageURL(url);
+				});
+			}
+			
+			// TODO: go back to the color boxes having white background-color and then setting
+			//       background-image to none.png (otherwise partially transparent gradients look weird)	
+			var colorPicker = function(elem) {
+				var picker = elem[0].id == 'stroke_color' ? 'stroke' : 'fill';
+				var is_background = elem[0].id == "canvas_color"
+				if (is_background) picker = 'canvas'
+// 				var opacity = (picker == 'stroke' ? $('#stroke_opacity') : $('#fill_opacity'));
+				var paint = Editor.paintBox[picker].paint;
+				
+				var title = (picker == 'stroke' ? 'Pick a Stroke Paint and Opacity' : 'Pick a Fill Paint and Opacity');
+				var was_none = false;
+				var pos = is_background ? {'right': 175, 'top': 50} : {'left': 50, 'bottom': 50}
+				
+				$("#color_picker")
+					.draggable({cancel:'.jGraduate_tabs, .jGraduate_colPick, .jGraduate_gradPick, .jPicker', containment: 'window'})
+					.removeAttr("style")
+					.css(pos)
+					.jGraduate(
+					{ 
+						paint: paint,
+						window: { pickerTitle: title },
+						images: { clientPath: curConfig.jGraduatePath },
+						newstop: 'inverse'
+					},
+					function(p) {
+						paint = new $.jGraduate.Paint(p);
+						
+						Editor.paintBox[picker].setPaint(paint);
+						svgCanvas.setPaint(picker, paint);
+						
+						$('#color_picker').hide();
+					},
+					function(p) {
+						$('#color_picker').hide();
+					});
+			};
+		
+			var PaintBox = function(container, type) {
+			  var background = document.getElementById("canvas_background");
+			  var cur = {color: "fff", opacity: 1}
+			  if (type == "stroke") cur = curConfig['initStroke'];
+			  if (type == "fill") cur = curConfig['initFill'];
+			  if (type == "canvas" && background) {
+          		var rgb = background.getAttribute("fill").match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
+          		if (rgb) {
+            		var hex = 	("0" + parseInt(rgb[1],10).toString(16)).slice(-2) +
+                           		("0" + parseInt(rgb[2],10).toString(16)).slice(-2) +
+                           		("0" + parseInt(rgb[3],10).toString(16)).slice(-2);
+            		cur = {color: hex, opacity: 1}
+          		}
+			  }
+
+				// set up gradients to be used for the buttons
+				var svgdocbox = new DOMParser().parseFromString(
+					'<svg xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"\
+					fill="#' + cur.color + '" opacity="' + cur.opacity + '"/>\
+					<defs><linearGradient id="gradbox_"/></defs></svg>', 'text/xml');
+				var docElem = svgdocbox.documentElement;
+				
+				docElem = $(container)[0].appendChild(document.importNode(docElem, true));
+        if (type === 'canvas') docElem.setAttribute('width',60.5);
+        else docElem.setAttribute('width',"100%");
+				
+				this.rect = docElem.firstChild;
+				this.defs = docElem.getElementsByTagName('defs')[0];
+				this.grad = this.defs.firstChild;
+				this.paint = new $.jGraduate.Paint({solidColor: cur.color});
+				this.type = type;
+
+				this.setPaint = function(paint, apply, noUndo) {
+					this.paint = paint;
+					var fillAttr = "none";
+					var ptype = paint.type;
+					var opac = paint.alpha / 100;
+					switch ( ptype ) {
+						case 'solidColor':
+							fillAttr = (paint[ptype] == 'none' || paint[ptype] == 'one') ? 'none' : "#" + paint[ptype];
+							break;
+						case 'linearGradient':
+						case 'radialGradient':
+							this.defs.removeChild(this.grad);
+							this.grad = this.defs.appendChild(paint[ptype]);
+							var id = this.grad.id = 'gradbox_' + this.type;
+							fillAttr = "url(#" + id + ')';
+					}
+					this.rect.setAttribute('fill', fillAttr);
+					this.rect.setAttribute('opacity', opac);
+
+					if (this.type == "canvas") {
+					  //recache background in case it changed
+					  var background = document.getElementById("canvas_background");
+					  if (background) {
+					    res = svgCanvas.getResolution()
+					    background.setAttribute("x", -1);
+					    background.setAttribute("y", -1);
+					    background.setAttribute("width", res.w+2);
+					    background.setAttribute("height", res.h+2);
+					    if (fillAttr.indexOf("url") == -1) background.setAttribute('fill', fillAttr)
+					  }
+					  else createBackground(fillAttr)
+					}
+					
+					if(apply) {
+						svgCanvas.setColor(this.type, fillAttr, true);
+						svgCanvas.setPaintOpacity(this.type, opac, true);
+					}
+					
+				}
+				
+				this.update = function(apply) {
+					if(!selectedElement) return;
+					var type = this.type;
+					switch ( selectedElement.tagName ) {
+					case 'use':
+					case 'image':
+					case 'foreignObject':
+						// These elements don't have fill or stroke, so don't change 
+						// the current value
+						return;
+					case 'g':
+					case 'a':
+						var gPaint = null;
+					
+						var childs = selectedElement.getElementsByTagName('*');
+						for(var i = 0, len = childs.length; i < len; i++) {
+							var elem = childs[i];
+							var p = elem.getAttribute(type);
+							if(i === 0) {
+								gPaint = p;
+							} else if(gPaint !== p) {
+								gPaint = null;
+								break;
+							}
+						}
+						if(gPaint === null) {
+							// No common color, don't update anything
+							var paintColor = null;
+							return;
+						}
+						var paintColor = gPaint;
+						
+						var paintOpacity = 1;
+						break;
+					default:
+						var paintOpacity = parseFloat(selectedElement.getAttribute(type + "-opacity"));
+						if (isNaN(paintOpacity)) {
+							paintOpacity = 1.0;
+						}
+						
+						var defColor = type === "fill" ? "black" : "none";
+						var paintColor = selectedElement.getAttribute(type) || defColor;
+					}
+					if(apply) {
+						svgCanvas.setColor(type, paintColor, true);
+						svgCanvas.setPaintOpacity(type, paintOpacity, true);
+					}
+
+					paintOpacity *= 100;					
+					
+					var paint = getPaint(paintColor, paintOpacity, type);
+					// update the rect inside #fill_color/#stroke_color
+					this.setPaint(paint);
+				}
+				
+				this.prep = function() {
+					var ptype = this.paint.type;
+				
+					switch ( ptype ) {
+						case 'linearGradient':
+						case 'radialGradient':
+							var paint = new $.jGraduate.Paint({copy: this.paint});
+							svgCanvas.setPaint(type, paint);
+					}
+				}
+			};
+			
+			Editor.paintBox.fill = new PaintBox('#fill_color', 'fill');
+			Editor.paintBox.stroke = new PaintBox('#stroke_color', 'stroke');
+			Editor.paintBox.canvas = new PaintBox('#canvas_color', 'canvas');
+
+			$('#stroke_width').val(curConfig.initStroke.width);
+			$('#group_opacity').val(curConfig.initOpacity * 100);
+			
+			// Use this SVG elem to test vectorEffect support
+			var test_el = Editor.paintBox.fill.rect.cloneNode(false);
+			test_el.setAttribute('style','vector-effect:non-scaling-stroke');
+			var supportsNonSS = (test_el.style.vectorEffect === 'non-scaling-stroke');
+			test_el.removeAttribute('style');
+			var svgdocbox = Editor.paintBox.fill.rect.ownerDocument;
+			// Use this to test support for blur element. Seems to work to test support in Webkit
+			var blur_test = svgdocbox.createElementNS('http://www.w3.org/2000/svg', 'feGaussianBlur');
+			if(typeof blur_test.stdDeviationX === "undefined") {
+				$('#tool_blur').hide();
+			}
+			$(blur_test).remove();
+
+			
+			
+			// Test for embedImage support (use timeout to not interfere with page load)
+			setTimeout(function() {
+				svgCanvas.embedImage('images/placeholder.svg', function(datauri) {
+					if(!datauri) {
+						// Disable option
+						$('#image_save_opts [value=embed]').attr('disabled','disabled');
+						$('#image_save_opts input').val(['ref']);
+						curPrefs.img_save = 'ref';
+						$('#image_opt_embed').css('color','#666').attr('title',uiStrings.notification.featNotSupported);
+					}
+				});
+			},1000);
+				
+			$('#tool_fill').click(function(){
+			  if ($('#tool_fill').hasClass('active')) {
+				  colorPicker($('#fill_color'));
+				}
+				else {
+				  $('#tool_fill').addClass('active');
+				  $("#tool_stroke").removeClass('active');
+				}
+			});
+			
+			$('#tool_stroke').on("click", function(){
+			  if ($('#tool_stroke').hasClass('active')) {
+				  colorPicker($('#stroke_color'));
+				}
+				else {
+				  $('#tool_stroke').addClass('active');
+				  $("#tool_fill").removeClass('active');
+				}
+			});
+			
+			$('#tool_canvas').on("click touchstart", function(){
+				  colorPicker($('#canvas_color'));
+			});
+			
+			$('#tool_stroke').on("touchstart", function(){
+			    $('#tool_stroke').addClass('active');
+				  $("#tool_fill").removeClass('active');
+				  colorPicker($('#stroke_color'));
+			});
+
+      $('#tool_fill').on("touchstart", function(){
+			    $('#tool_fill').addClass('active');
+				  $("#tool_stroke").removeClass('active');
+				  colorPicker($('#fill_color'));
+			});
+			
+			$('#zoom_select').on("change", function() {
+				var val = this.options[this.selectedIndex].text
+        val = val.split("%")[0]
+				$("#zoom").val(val).trigger("change")
+			});
+		
+			$('.push_button').mousedown(function() { 
+				if (!$(this).hasClass('disabled')) {
+					$(this).addClass('push_button_pressed').removeClass('push_button');
+				}
+			}).mouseout(function() {
+				$(this).removeClass('push_button_pressed').addClass('push_button');
+			}).mouseup(function() {
+				$(this).removeClass('push_button_pressed').addClass('push_button');
+			});
+			
+		
+		// 	function changeResolution(x,y) {
+		// 		var zoom = svgCanvas.getResolution().zoom;
+		// 		setResolution(x * zoom, y * zoom);
+		// 	}
+			
+			var centerCanvas = function() {
+				// this centers the canvas vertically in the workarea (horizontal handled in CSS)
+				workarea.css('line-height', workarea.height() + 'px');
+			};
+			
+			$(window).bind('load resize', centerCanvas);
+		
+			function stepFontSize(elem, step) {
+				var orig_val = elem.value-0;
+				var sug_val = orig_val + step;
+				var increasing = sug_val >= orig_val;
+				if(step === 0) return orig_val;
+				
+				if(orig_val >= 24) {
+					if(increasing) {
+						return Math.round(orig_val * 1.1);
+					} else {
+						return Math.round(orig_val / 1.1);
+					}
+				} else if(orig_val <= 1) {
+					if(increasing) {
+						return orig_val * 2;			
+					} else {
+						return orig_val / 2;
+					}
+				} else {
+					return sug_val;
+				}
+			}
+			
+			function stepZoom(elem, step) {
+				var orig_val = elem.value-0;
+				if(orig_val === 0) return 100;
+				var sug_val = orig_val + step;
+				if(step === 0) return orig_val;
+				
+				if(orig_val >= 100) {
+					return sug_val;
+				} else {
+					if(sug_val >= orig_val) {
+						return orig_val * 2;
+					} else {
+						return orig_val / 2;
+					}
+				}
+			}
+				
+		var changeCanvasSize = function(ctl){
+		  var width = $("#canvas_width");
+			var height = $("#canvas_height");
+			var w = width.val();
+			var h = height.val()
+			
+			if(w != "fit" && !svgedit.units.isValidUnit('width', w)) {
+				$.alert(uiStrings.notification.invalidAttrValGiven);
+				width.parent().addClass('error');
+				return false;
+			}
+
+			width.parent().removeClass('error');
+
+			if(h != "fit" && !svgedit.units.isValidUnit('height', h)) {
+				$.alert(uiStrings.notification.invalidAttrValGiven);
+				height.parent().addClass('error');
+				return false;
+			} 
+			height.parent().removeClass('error');
+			if(!svgCanvas.setResolution(w, h)) {
+				$.alert(uiStrings.notification.noContentToFitTo);
+				var dims = svgCanvas.getResolution()
+				width.val(dims.w)
+				height.val(dims.h)
+				return false;
+			}
+			 updateCanvas();
+		}
+		
+		
+			$('#resolution').change(function(){
+				var w = $('#canvas_width')[0];
+				var h = $('#canvas_height')[0];
+				if(!this.selectedIndex) {
+				  $('#resolution_label').html("Custom");
+				  w.removeAttribute("readonly");
+				  w.focus();
+				  w.select();
+					if(w.value == 'fit') {
+						w.value = 100
+						h.value = 100
+					}
+				} else if(this.value == 'content') {
+					w.value = 'fit'
+					h.value = 'fit'
+					changeCanvasSize();
+					var res = svgCanvas.getResolution()
+					w.value = res.w
+					h.value = res.h
+					
+				} else {
+					var dims = this.value.split('x');
+					dims[0] = parseInt(dims[0]); 
+					dims[1] = parseInt(dims[1]);
+					var diff_w = dims[0] - w.value;
+					var diff_h = dims[1] - h.value;
+					//animate
+					var start = Date.now();
+					var duration = 1000;
+					var animateCanvasSize = function(timestamp) {
+					  var progress = timestamp - start
+					  var tick = progress / duration
+            tick = (Math.pow((tick-1), 3) +1);
+					  w.value = (dims[0] - diff_w + (tick*diff_w)).toFixed(0);
+					  h.value = (dims[1] - diff_h + (tick*diff_h)).toFixed(0);
+					  changeCanvasSize();
+					  if (tick >= 1) {
+					    var res = svgCanvas.getResolution()
+					    $('#canvas_width').val(res.w.toFixed())
+					    $('#canvas_height').val(res.h.toFixed())
+					    $('#resolution_label').html("<div class='pull'>" + res.w + "<span>Ã</span></br>" + res.h + "</div>");
+					  }
+					  else {
+					    requestAnimationFrame(animateCanvasSize)
+					  }
+					}
+					animateCanvasSize(Date.now())
+
+				}
+			});
+			
+			$('#zoom').change(function(){
+			  changeZoom(this)
+			})
+		
+			//Prevent browser from erroneously repopulating fields
+			$('input,select').attr("autocomplete","off");
+			
+			// Associate all button actions as well as non-button keyboard shortcuts
+			var Actions = function() {
+				// sel:'selector', fn:function, evt:'event', key:[key, preventDefault, NoDisableInInput]
+				var tool_buttons = [
+					{sel:'#tool_select', fn: clickSelect, evt: 'click', key: ['V', true]},
+					{sel:'#tool_fhpath', fn: clickFHPath, evt: 'click', key: ['Q', true]},
+					{sel:'#tool_line', fn: clickLine, evt: 'click', key: ['L', true]},
+					{sel:'#tool_rect', fn: clickRect, evt: 'click', key: ['R', true], icon: 'rect'},
+					{sel:'#tool_ellipse', fn: clickEllipse, evt: 'mouseup', key: ['C', true], icon: 'ellipse'},
+					//{sel:'#tool_circle', fn: clickCircle, evt: 'mouseup', icon: 'circle'},
+					//{sel:'#tool_fhellipse', fn: clickFHEllipse, evt: 'mouseup', parent: '#tools_ellipse', icon: 'fh_ellipse'},
+					{sel:'#tool_path', fn: clickPath, evt: 'click', key: ['P', true]},
+					{sel:'#tool_text', fn: clickText, evt: 'click', key: ['T', true]},
+					{sel:'#tool_image', fn: clickImage, evt: 'mouseup'},
+					{sel:'#tool_zoom', fn: clickZoom, evt: 'mouseup', key: ['Z', true]},
+					{sel:'#tool_clear', fn: clickClear, evt: 'mouseup', key: [modKey + 'N', true]},
+					{sel:'#tool_save', fn: function() { editingsource?saveSourceEditor():clickSave()}, evt: 'mouseup', key: [modKey + 'S', true]},
+					{sel:'#tool_export', fn: clickExport, evt: 'mouseup'},
+					{sel:'#tool_open', fn: clickOpen, evt: 'mouseup'},
+					{sel:'#tool_import', fn: clickImport, evt: 'mouseup'},
+					{sel:'#tool_source', fn: showSourceEditor, evt: 'click', key: [modKey + 'U', true]},
+					{sel:'#tool_wireframe', fn: clickWireframe, evt: 'click'},
+					{sel:'#tool_snap', fn: clickSnapGrid, evt: 'click'},
+					{sel:'#tool_rulers', fn: clickRulers, evt: 'click'},
+					{sel:'#tool_source_cancel,#svg_source_overlay,#tool_docprops_cancel,#tool_prefs_cancel', fn: cancelOverlays, evt: 'click', key: ['esc', false, false], hidekey: true},
+					{sel:'#tool_source_save', fn: saveSourceEditor, evt: 'click'},
+					{sel:'#tool_delete,#tool_delete_multi', fn: deleteSelected, evt: 'click', key: ['del/backspace', true]},
+					{sel:'#tool_reorient', fn: reorientPath, evt: 'click'},
+					{sel:'#tool_node_link', fn: linkControlPoints, evt: 'change'},
+					{sel:'#tool_node_clone', fn: clonePathNode, evt: 'click'},
+					{sel:'#tool_node_delete', fn: deletePathNode, evt: 'click'},
+					{sel:'#tool_openclose_path', fn: opencloseSubPath, evt: 'click'},
+					{sel:'#tool_add_subpath', fn: addSubPath, evt: 'click'},
+					{sel:'#tool_move_top', fn: moveToTopSelected, evt: 'click', key: modKey + 'shift+up'},
+					{sel:'#tool_move_bottom', fn: moveToBottomSelected, evt: 'click', key: modKey + 'shift+down'},
+					{sel:'#tool_move_up', fn: moveUpSelected, evt:'click', key: [modKey+'up', true]},
+					{sel:'#tool_move_down', fn: moveDownSelected, evt:'click', key: [modKey+'down', true]},
+					{sel:'#tool_topath', fn: convertToPath, evt: 'click'},
+					{sel:'#tool_make_link,#tool_make_link_multi', fn: makeHyperlink, evt: 'click'},
+					{sel:'#tool_clone,#tool_clone_multi', fn: clickClone, evt: 'click', key: [modKey + 'D', true]},
+					{sel:'#tool_group', fn: clickGroup, evt: 'click', key: [modKey + 'G', true]},
+					{sel:'#tool_ungroup', fn: clickGroup, evt: 'click', key: modKey + 'shift+G'},
+					{sel:'#tool_unlink_use', fn: clickGroup, evt: 'click'},
+					{sel:'[id^=tool_align]', fn: clickAlign, evt: 'click'},
+					{sel:'#tool_undo', fn: clickUndo, evt: 'click', key: modKey + 'z'},
+					{sel:'#tool_redo', fn: clickRedo, evt: 'click', key: ['y', true]},
+					{sel:'#tool_cut', fn: cutSelected, evt: 'click', key: [modKey+'x', true]},
+					{sel:'#tool_copy', fn: copySelected, evt: 'click', key: modKey+'c'},
+					{sel:'#tool_paste', fn: pasteSelected, evt: 'click', key: modKey+'v'},
+					{sel:'#tool_switch', fn: clickSwitch, evt: 'click', key: ['x', true]},
+					{sel:'#tool_bold', fn: clickBold, evt: 'mousedown', key: [modKey + 'B', true]},
+					{sel:'#tool_italic', fn: clickItalic, evt: 'mousedown',  key: [modKey + 'I', true]},
+					//{sel:'#sidepanel_handle', fn: toggleSidePanel, key: ['X']},
+					{sel:'#copy_save_done', fn: cancelOverlays, evt: 'click'},
+					
+					// Shortcuts not associated with buttons
+					
+					{key: 'ctrl+left', fn: function(){rotateSelected(0,1)}},
+					{key: 'ctrl+right', fn: function(){rotateSelected(1,1)}},
+					{key: 'ctrl+shift+left', fn: function(){rotateSelected(0,5)}},					
+					{key: 'ctrl+shift+right', fn: function(){rotateSelected(1,5)}},
+					{key: 'shift+O', fn: selectPrev},
+					{key: 'shift+P', fn: selectNext},
+					{key: [modKey+'+', true], fn: function(){zoomImage(2);}},
+					{key: [modKey+'-', true], fn: function(){zoomImage(.5);}},
+					{key: ['up', true], fn: function(){moveSelected(0,-1);}},
+					{key: ['down', true], fn: function(){moveSelected(0,1);}},
+					{key: ['left', true], fn: function(){moveSelected(-1,0);}},
+					{key: ['right', true], fn: function(){moveSelected(1,0);}},
+					{key: 'shift+up', fn: function(){moveSelected(0,-10)}},
+					{key: 'shift+down', fn: function(){moveSelected(0,10)}},
+					{key: 'shift+left', fn: function(){moveSelected(-10,0)}},
+					{key: 'shift+right', fn: function(){moveSelected(10,0)}},
+					{key: ['alt+up', true], fn: function(){svgCanvas.cloneSelectedElements(0,-1)}},
+					{key: ['alt+down', true], fn: function(){svgCanvas.cloneSelectedElements(0,1)}},
+					{key: ['alt+left', true], fn: function(){svgCanvas.cloneSelectedElements(-1,0)}},
+					{key: ['alt+right', true], fn: function(){svgCanvas.cloneSelectedElements(1,0)}},
+					{key: ['alt+shift+up', true], fn: function(){svgCanvas.cloneSelectedElements(0,-10)}},
+					{key: ['alt+shift+down', true], fn: function(){svgCanvas.cloneSelectedElements(0,10)}},
+					{key: ['alt+shift+left', true], fn: function(){svgCanvas.cloneSelectedElements(-10,0)}},
+					{key: ['alt+shift+right', true], fn: function(){svgCanvas.cloneSelectedElements(10,0)}},	
+					{key: modKey + 'A', fn: function(){svgCanvas.selectAllInCurrentLayer();}},
+					{key: 'I', fn: function(){setEyedropperMode()}},
+
+					// Standard shortcuts
+					{key: modKey + 'shift+z', fn: clickRedo},
+					{key: 'esc', fn: minimizeModal}
+				];
+				
+				// Tooltips not directly associated with a single function
+				var key_assocs = {
+					'4/Shift+4': '#tools_rect_show',
+					'5/Shift+5': '#tools_ellipse_show'
+				};
+			
+				return {
+					setAll: function() {
+						var flyouts = {};
+						
+						$.each(tool_buttons, function(i, opts)  {				
+							// Bind function to button
+							if(opts.sel) {
+								var btn = $(opts.sel);
+								if (btn.length == 0) return true; // Skip if markup does not exist
+								if(opts.evt) {
+								  if (svgedit.browser.isTouch() && opts.evt === "click") opts.evt = "mousedown" 
+									btn[opts.evt](opts.fn);
+								}
+		
+								// Add to parent flyout menu, if able to be displayed
+								if(opts.parent && $(opts.parent + '_show').length != 0) {
+									var f_h = $(opts.parent);
+									if(!f_h.length) {
+										f_h = makeFlyoutHolder(opts.parent.substr(1));
+									}
+									
+									f_h.append(btn);
+									
+									if(!$.isArray(flyouts[opts.parent])) {
+										flyouts[opts.parent] = [];
+									}
+									flyouts[opts.parent].push(opts);
+								}
+							}
+							
+							
+							// Bind function to shortcut key
+							if(opts.key) {
+								// Set shortcut based on options
+								var keyval, shortcut = '', disInInp = true, fn = opts.fn, pd = false;
+								if($.isArray(opts.key)) {
+									keyval = opts.key[0];
+									if(opts.key.length > 1) pd = opts.key[1];
+									if(opts.key.length > 2) disInInp = opts.key[2];
+								} else {
+									keyval = opts.key;
+								}
+								keyval += '';
+								if (svgedit.browser.isMac && keyval.indexOf("+") != -1) {
+								  var modifier_key =  keyval.split("+")[0];
+								  if (modifier_key == "ctrl") keyval.replace("ctrl", "cmd")
+								}
+								
+								$.each(keyval.split('/'), function(i, key) {
+									$(document).bind('keydown', key, function(e) {
+										fn();
+										if(pd) {
+											e.preventDefault();
+										}
+										// Prevent default on ALL keys?
+										return false;
+									});
+								});
+								
+								// Put shortcut in title
+								if(opts.sel && !opts.hidekey && btn.attr('title')) {
+									var new_title = btn.attr('title').split('[')[0] + ' (' + keyval + ')';
+									key_assocs[keyval] = opts.sel;
+									// Disregard for menu items
+									if(!btn.parents('#main_menu').length) {
+										btn.attr('title', new_title);
+									}
+								}
+							}
+						});
+						
+						// Setup flyouts
+						setupFlyouts(flyouts);
+						
+						$(window).bind('keydown', 'tab', function(e) {
+							if(ui_context === 'canvas') {
+								e.preventDefault();
+								selectNext();
+							}
+						}).bind('keydown', 'shift+tab', function(e) {
+							if(ui_context === 'canvas') {
+								e.preventDefault();
+								selectPrev();
+							}
+						});
+						
+						$('#tool_zoom').dblclick(dblclickZoom);
+					},
+					setTitles: function() {
+						$.each(key_assocs, function(keyval, sel)  {
+							var menu = ($(sel).parents('#main_menu').length);
+						
+							$(sel).each(function() {
+								if(menu) {
+									var t = $(this).text().split(' [')[0];
+								} else {
+									var t = this.title.split(' [')[0];							
+								}
+								var key_str = '';
+								// Shift+Up
+								$.each(keyval.split('/'), function(i, key) {
+									var mod_bits = key.split('+'), mod = '';
+									if(mod_bits.length > 1) {
+										mod = mod_bits[0] + '+';
+										key = mod_bits[1];
+									}
+									key_str += (i?'/':'') + mod + (uiStrings['key_'+key] || key);
+								});
+								if(menu) {
+									this.lastChild.textContent = t +' ['+key_str+']';
+								} else {
+									this.title = t +' ['+key_str+']';
+								}
+							});
+						});
+					},
+					getButtonData: function(sel) {
+						var b;
+						$.each(tool_buttons, function(i, btn) {
+							if(btn.sel === sel) b = btn;
+						});
+						return b;
+					}
+				};
+			}();
+			
+			Actions.setAll();
+			
+			// Select given tool
+			Editor.ready(function() {
+				var tool,
+					itool = curConfig.initTool,
+					container = $("#tools_left, #svg_editor .tools_flyout"),
+					pre_tool = container.find("#tool_" + itool),
+					reg_tool = container.find("#" + itool);
+				if(pre_tool.length) {
+					tool = pre_tool;
+				} else if(reg_tool.length){
+					tool = reg_tool;
+				} else {
+					tool = $("#tool_select");
+				}
+				tool.click().mouseup();
+				
+				if(curConfig.wireframe) {
+					$('#tool_wireframe').click();
+				}
+				
+				if(curConfig.showlayers) {
+					toggleSidePanel();
+				}
+				
+				$('#rulers').toggle(!!curConfig.showRulers);
+			});
+		
+			
+			$('#canvas_height').dragInput({ min: 10,   max: null,  step: 10,  callback: changeCanvasSize,    cursor: false, dragAdjust: .1         }); 
+			$('#canvas_width') .dragInput({ min: 10,   max: null,  step: 10,  callback: changeCanvasSize,    cursor: false, dragAdjust: .1         });                         
+			$('#rect_width')   .dragInput({ min: 1,    max: null,  step:  1,  callback: changeAttribute,     cursor: false                         }); 
+			$('#rect_height')  .dragInput({ min: 1,    max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#ellipse_cx')   .dragInput({ min: 1,    max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#ellipse_cy')   .dragInput({ min: 1,    max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#ellipse_rx')   .dragInput({ min: 1,    max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#ellipse_ry')   .dragInput({ min: 1,    max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$("#image_height") .dragInput({ min: 1,    max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#circle_cx')    .dragInput({ min: 1,    max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#circle_cy')    .dragInput({ min: 1,    max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#circle_r')     .dragInput({ min: 1,    max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$("#image_height") .dragInput({ min: 0,    max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#selected_x')   .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#selected_y')   .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$("#path_node_x")  .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$("#path_node_y")  .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$("#image_width")  .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#line_x1')      .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#line_x2')      .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#line_y1')      .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#line_y2')      .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#path_x')       .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#path_y')       .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#rect_x')       .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#rect_y')       .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#g_x')      .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#g_y')      .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#image_x')      .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#text_y')       .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#text_x')       .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#image_y')      .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#rect_rx')      .dragInput({ min: 0,    max: 100,   step:  1,  callback: changeAttribute,    cursor: true                          });
+	    $('#stroke_width') .dragInput({ min: 0,    max: 99,    step:  1,  callback: changeStrokeWidth,   cursor: true, smallStep: 0.1, start: 1.5          });
+			$('#angle')        .dragInput({ min: -180, max: 180,   step:  1,  callback: changeRotationAngle, cursor: false, dragAdjust: 0.5      });
+			$('#font_size')    .dragInput({ min: 1, max: 250, step: 1, callback: changeFontSize, cursor: true, stepfunc: stepFontSize, dragAdjust: .15 });
+			$('#group_opacity').dragInput({ min: 0,    max: 100,   step:  5,  callback: changeAttribute,       cursor: true,  start: 100             });
+			$('#blur')         .dragInput({ min: 0,    max: 10,    step: .1,  callback: changeBlur,          cursor: true,  start: 0               });
+				// Set default zoom 
+			$('#zoom').val(svgCanvas.getZoom() * 100);
+			
+			$("#workarea").contextMenu({
+					menu: 'cmenu_canvas',
+					inSpeed: 0
+				},
+				function(action, el, pos) {
+					switch ( action ) {
+						case 'delete':
+							deleteSelected();
+							break;
+						case 'cut':
+							cutSelected();
+							break;
+						case 'copy':
+							copySelected();
+							break;
+						case 'paste':
+							svgCanvas.pasteElements();
+							break;
+						case 'paste_in_place':
+							svgCanvas.pasteElements('in_place');
+							break;
+						case 'group':
+							svgCanvas.groupSelectedElements();
+							break;
+						case 'ungroup':         
+							svgCanvas.ungroupSelectedElement();  
+							break;
+						case 'move_front':
+							moveToTopSelected();
+							break;
+						case 'move_up':
+							moveUpDownSelected('Up');
+							break;
+						case 'move_down':
+							moveUpDownSelected('Down');
+							break;
+						case 'move_back':
+							moveToBottomSelected();
+							break;
+  						default:
+ 							if(svgedit.contextmenu && svgedit.contextmenu.hasCustomHandler(action)){
+ 								svgedit.contextmenu.getCustomHandler(action).call();
+  							}
+  							break;
+					}
+					
+			});
+			
+			$('.contextMenu li').mousedown(function(ev) {
+				ev.preventDefault();
+			})
+			
+			$('#cmenu_canvas li').disableContextMenu();
+			canv_menu.enableContextMenuItems('#delete,#cut,#copy');
+			
+			window.onbeforeunload = function() { 
+				// Suppress warning if page is empty 
+				if(undoMgr.getUndoStackSize() === 0) {
+					Editor.show_save_warning = false;
+				}
+
+				// show_save_warning is set to "false" when the page is saved.
+				if(!curConfig.no_save_warning && Editor.show_save_warning) {
+					// Browser already asks question about closing the page
+					return uiStrings.notification.unsavedChanges; 
+				}
+			};
+			
+			Editor.openPrep = function(func) {
+				$('#main_menu').hide();
+				if(undoMgr.getUndoStackSize() === 0) {
+					func(true);
+				} else {
+					$.confirm(uiStrings.notification.QwantToOpen, func);
+				}
+			}
+						
+			if (window.FileReader) {
+			  
+			  var import_image = function(e) {
+			    e.stopPropagation();
+          e.preventDefault();
+          $("#workarea").removeAttr("style");
+					$('#main_menu').hide();
+					var file = null;
+					if (e.type == "drop") file = e.dataTransfer.files[0]
+					else file = this.files[0];
+					if (file) {
+					  if(file.type.indexOf("image") != -1) {
+					    //detected an image
+					  
+					    //svg handing
+  				  	if(file.type.indexOf("svg") != -1) {
+  				  		var reader = new FileReader();
+  				  		reader.onloadend = function(e) {
+  				  			svgCanvas.importSvgString(e.target.result, true);
+  				  			svgCanvas.ungroupSelectedElement()
+  				  			svgCanvas.ungroupSelectedElement()
+  				  			svgCanvas.groupSelectedElements()
+  				  			svgCanvas.alignSelectedElements("m", "page")
+  				  			svgCanvas.alignSelectedElements("c", "page")
+  				  		};
+  				  		reader.readAsText(file);
+  				  	}
+					
+					    //image handling
+					    else {
+					      var reader = new FileReader();
+  				  		reader.onloadend = function(e) {
+                  // lets insert the new image until we know its dimensions
+  				  			insertNewImage = function(img_width, img_height){
+    			  				  var newImage = svgCanvas.addSvgElementFromJson({
+            					"element": "image",
+            					"attr": {
+            						"x": 0,
+            						"y": 0,
+            						"width": img_width,
+            						"height": img_height,
+            						"id": svgCanvas.getNextId(),
+            						"style": "pointer-events:inherit"
+            					}
+            				});
+            				svgCanvas.setHref(newImage, e.target.result);
+            				svgCanvas.selectOnly([newImage])
+            				svgCanvas.alignSelectedElements("m", "page")
+    				  			svgCanvas.alignSelectedElements("c", "page")
+            				updateContextPanel();
+        	  			}
+  				  		  // put a placeholder img so we know the default dimensions
+  				  		  var img_width = 100;
+  				  		  var img_height = 100;
+  				  		  var img = new Image()
+  				  		  img.src = e.target.result
+                  document.body.appendChild(img);
+                  img.onload = function() {
+                    img_width = img.offsetWidth
+                    img_height = img.offsetHeight
+                    insertNewImage(img_width, img_height);
+                    document.body.removeChild(img);
+                  }
+  				  		};
+  				  		reader.readAsDataURL(file)
+					    }
+					  }
+					}
+				}
+			  
+			  var workarea = $("#workarea")
+			  
+			  function onDragEnter(e) {
+          e.stopPropagation();
+          e.preventDefault();
+          workarea.css({
+            "-webkit-transform": "scale3d(1.1,1.1,1)",
+            "-moz-transform": "scale3d(1.1,1.1,1)",
+            "-o-transform": "scale(1.1)",
+            "-ms-transform": "scale3d(1.1,1.1,1)",
+            "transform": "scale3d(1.1,1.1,1)"
+          })
+
+        }
+
+        function onDragOver(e) {
+          e.stopPropagation();
+          e.preventDefault();
+        }
+
+        function onDragLeave(e) {
+          workarea.removeAttr("style")
+          e.stopPropagation();
+          e.preventDefault();
+        }
+
+  		workarea[0].addEventListener('dragenter', onDragEnter, false);
+        workarea[0].addEventListener('dragover', onDragOver, false);
+        workarea[0].addEventListener('dragleave', onDragLeave, false);
+        workarea[0].addEventListener('drop', import_image, false);
+			  
+				var open = $('<input type="file">').change(function() {
+					var f = this;
+					Editor.openPrep(function(ok) {
+						if(!ok) return;
+						svgCanvas.clear();
+						if(f.files.length==1) {
+							var reader = new FileReader();
+							reader.onloadend = function(e) {
+								loadSvgString(e.target.result);
+								updateCanvas();
+							};
+							reader.readAsText(f.files[0]);
+						}
+					});
+				});
+				$("#tool_open").show().prepend(open);
+				
+				var img_import = $('<input type="file">').change(import_image);
+				$("#tool_import").show().prepend(img_import);
+			}
+
+			
+			var updateCanvas = Editor.updateCanvas = function(center, new_ctr) {
+				var w = workarea.width(), h = workarea.height();
+				var w_orig = w, h_orig = h;
+				var zoom = svgCanvas.getZoom();
+				var w_area = workarea;
+				var cnvs = $("#svgcanvas");
+				
+				var old_ctr = {
+					x: w_area[0].scrollLeft + w_orig/2,
+					y: w_area[0].scrollTop + h_orig/2
+				};
+				
+				var multi = curConfig.canvas_expansion;
+				w = Math.max(w_orig, svgCanvas.contentW * zoom * multi);
+				h = Math.max(h_orig, svgCanvas.contentH * zoom * multi);
+				
+				if(w == w_orig && h == h_orig) {
+					workarea.css('overflow','hidden');
+				} else {
+					workarea.css('overflow','scroll');
+				}
+				
+				var old_can_y = cnvs.height()/2;
+				var old_can_x = cnvs.width()/2;
+				cnvs.width(w).height(h);
+				var new_can_y = h/2;
+				var new_can_x = w/2;
+				var offset = svgCanvas.updateCanvas(w, h);
+				
+				var ratio = new_can_x / old_can_x;
+		
+				var scroll_x = w/2 - w_orig/2;
+				var scroll_y = h/2 - h_orig/2;
+				
+				if(!new_ctr) {
+		
+					var old_dist_x = old_ctr.x - old_can_x;
+					var new_x = new_can_x + old_dist_x * ratio;
+		
+					var old_dist_y = old_ctr.y - old_can_y;
+					var new_y = new_can_y + old_dist_y * ratio;
+		
+					new_ctr = {
+						x: new_x,
+						y: new_y
+					};
+					
+				} else {
+					new_ctr.x += offset.x,
+					new_ctr.y += offset.y;
+				}
+				
+				//width.val(offset.x)
+				//height.val(offset.y)
+				
+				if(center) {
+					// Go to top-left for larger documents
+					if(svgCanvas.contentW > w_area.width()) {
+						// Top-left
+						workarea[0].scrollLeft = offset.x - 10;
+						workarea[0].scrollTop = offset.y - 10;
+					} else {
+						// Center
+						w_area[0].scrollLeft = scroll_x;
+						w_area[0].scrollTop = scroll_y;
+					}
+				} else {
+					w_area[0].scrollLeft = new_ctr.x - w_orig/2;
+					w_area[0].scrollTop = new_ctr.y - h_orig/2;
+				}
+				if(curConfig.showRulers) {
+					updateRulers(cnvs, zoom);
+					workarea.scroll();
+				}
+			}
+			
+			// Make [1,2,5] array
+			var r_intervals = [];
+			for(var i = .1; i < 1E5; i *= 10) {
+				r_intervals.push(1 * i);
+				r_intervals.push(2 * i);
+				r_intervals.push(5 * i);
+			}
+			
+			function updateRulers(scanvas, zoom) {
+			  var workarea = document.getElementById("workarea");
+			  var title_show = document.getElementById("title_show");
+			  var offset_x = 66;
+			  var offset_y = 48;
+				if(!zoom) zoom = svgCanvas.getZoom();
+				if(!scanvas) scanvas = $("#svgcanvas");
+				
+				var limit = 30000;
+				
+				var c_elem = svgCanvas.getContentElem();
+				
+				var units = svgedit.units.getTypeMap();
+				var unit = units[curConfig.baseUnit]; // 1 = 1px
+			
+				for(var d = 0; d < 2; d++) {
+					var is_x = (d === 0);
+					var dim = is_x ? 'x' : 'y';
+					var lentype = is_x?'width':'height';
+					var content_d = c_elem.getAttribute(dim)-0;
+					
+					var $hcanv_orig = $('#ruler_' + dim + ' canvas:first');
+					
+					// Bit of a hack to fully clear the canvas in Safari & IE9
+					$hcanv = $hcanv_orig.clone();
+					$hcanv_orig.replaceWith($hcanv);
+					
+					var hcanv = $hcanv[0];
+					
+					// Set the canvas size to the width of the container
+					var ruler_len = scanvas[lentype]()*2;
+					var total_len = ruler_len;
+					hcanv.parentNode.style[lentype] = total_len + 'px';
+					
+					var canv_count = 1;
+					var ctx_num = 0;
+					var ctx_arr;
+					var ctx = hcanv.getContext("2d");
+					
+					ctx.fillStyle = "rgb(200,0,0)"; 
+					ctx.fillRect(0,0,hcanv.width,hcanv.height); 
+					
+					// Remove any existing canvasses
+					$hcanv.siblings().remove();
+					
+					// Create multiple canvases when necessary (due to browser limits)
+					if(ruler_len >= limit) {
+						var num = parseInt(ruler_len / limit) + 1;
+						ctx_arr = Array(num);
+						ctx_arr[0] = ctx;
+						for(var i = 1; i < num; i++) {
+							hcanv[lentype] = limit;
+							var copy = hcanv.cloneNode(true);
+							hcanv.parentNode.appendChild(copy);
+							ctx_arr[i] = copy.getContext('2d');
+						}
+						
+						copy[lentype] = ruler_len % limit;
+						
+						// set copy width to last
+						ruler_len = limit;
+					}
+					
+					hcanv[lentype] = ruler_len;
+					
+					var u_multi = unit * zoom;
+					
+					// Calculate the main number interval
+					var raw_m = 50 / u_multi;
+					var multi = 1;
+					for(var i = 0; i < r_intervals.length; i++) {
+						var num = r_intervals[i];
+						multi = num;
+						if(raw_m <= num) {
+							break;
+						}
+					}
+					
+					var big_int = multi * u_multi;
+					ctx.font = "normal 9px 'Lucida Grande', sans-serif";
+					ctx.fillStyle = "#777";
+
+					var ruler_d = ((content_d / u_multi) % multi) * u_multi;
+					var label_pos = ruler_d - big_int;
+					for (; ruler_d < total_len; ruler_d += big_int) {
+						label_pos += big_int;
+						var real_d = ruler_d - content_d;
+
+						var cur_d = Math.round(ruler_d) + .5;
+						if(is_x) {
+							ctx.moveTo(cur_d, 15);
+							ctx.lineTo(cur_d, 0);
+						} else {
+							ctx.moveTo(15, cur_d);
+							ctx.lineTo(0, cur_d);
+						}
+	
+						var num = (label_pos - content_d) / u_multi;
+						var label;
+						if(multi >= 1) {
+							label = Math.round(num);
+						} else {
+							var decs = (multi+'').split('.')[1].length;
+							label = num.toFixed(decs)-0;
+						}
+						
+						// Do anything special for negative numbers?
+// 						var is_neg = label < 0;
+// 						real_d2 = Math.abs(real_d2);
+						
+						// Change 1000s to Ks
+						if(label !== 0 && label !== 1000 && label % 1000 === 0) {
+							label = (label / 1000) + 'K';
+						}
+						
+						if(is_x) {
+							ctx.fillText(label, ruler_d+2, 8);
+							ctx.fillStyle = "#777";
+						} else {
+							var str = (label+'').split('');
+							for(var i = 0; i < str.length; i++) {
+								ctx.fillText(str[i], 1, (ruler_d+9) + i*9);
+								ctx.fillStyle = "#777";
+							}
+						}
+						
+						var part = big_int / 10;
+						for(var i = 1; i < 10; i++) {
+							var sub_d = Math.round(ruler_d + part * i) + .5;
+							if(ctx_arr && sub_d > ruler_len) {
+								ctx_num++;
+								ctx.stroke();
+								if(ctx_num >= ctx_arr.length) {
+									i = 10;
+									ruler_d = total_len;
+									continue;
+								}
+								ctx = ctx_arr[ctx_num];
+								ruler_d -= limit;
+								sub_d = Math.round(ruler_d + part * i) + .5;
+							}
+							
+							var line_num = (i % 2)?12:10;
+							if(is_x) {
+								ctx.moveTo(sub_d, 15);
+								ctx.lineTo(sub_d, line_num);
+							} else {
+								ctx.moveTo(15, sub_d);
+								ctx.lineTo(line_num ,sub_d);
+							}
+						}
+					}
+					ctx.strokeStyle = "#666";
+					ctx.stroke();
+				}
+			}
+		
+// 			$(function() {
+				updateCanvas(true);
+// 			});
+			
+		//	var revnums = "svg-editor.js ($Rev: 2083 $) ";
+		//	revnums += svgCanvas.getVersion();
+		//	$('#copyright')[0].setAttribute("title", revnums);
+		
+			// Callback handler for embedapi.js
+ 			try{
+ 				var json_encode = function(obj){
+ 			  //simple partial JSON encoder implementation
+ 			  if(window.JSON && JSON.stringify) return JSON.stringify(obj);
+ 			  var enc = arguments.callee; //for purposes of recursion
+ 			  if(typeof obj == "boolean" || typeof obj == "number"){
+ 				  return obj+'' //should work...
+ 			  }else if(typeof obj == "string"){
+ 				//a large portion of this is stolen from Douglas Crockford's json2.js
+ 				return '"'+
+ 					  obj.replace(
+ 						/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g
+ 					  , function (a) {
+ 						return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+ 					  })
+ 					  +'"'; //note that this isn't quite as purtyful as the usualness
+ 			  }else if(obj.length){ //simple hackish test for arrayish-ness
+ 				for(var i = 0; i < obj.length; i++){
+ 				  obj[i] = enc(obj[i]); //encode every sub-thingy on top
+ 				}
+ 				return "["+obj.join(",")+"]";
+ 			  }else{
+ 				var pairs = []; //pairs will be stored here
+ 				for(var k in obj){ //loop through thingys
+ 				  pairs.push(enc(k)+":"+enc(obj[k])); //key: value
+ 				}
+ 				return "{"+pairs.join(",")+"}" //wrap in the braces
+ 			  }
+ 			}
+ 			  window.addEventListener("message", function(e){
+ 				var cbid = parseInt(e.data.substr(0, e.data.indexOf(";")));
+ 				try{
+					e.source.postMessage("SVGe"+cbid+";"+json_encode(eval(e.data)), "*");
+ 			  }catch(err){					
+					e.source.postMessage("SVGe"+cbid+";error:"+err.message, "*");
+ 			  }
+ 			}, false)
+ 			}catch(err){
+ 			  window.embed_error = err;
+			}
+			
+		
+		
+			// For Compatibility with older extensions
+			$(function() {
+				window.svgCanvas = svgCanvas;
+				svgCanvas.ready = methodDraw.ready;
+			});
+		
+		
+			Editor.setLang = function(lang, allStrings) {
+				$.pref('lang', lang);
+				$('#lang_select').val(lang);
+				if(allStrings) {
+				
+					var notif = allStrings.notification;
+					
+					svgCanvas.runExtensions("langChanged", lang);
+					
+					// Update flyout tooltips
+					setFlyoutTitles();
+					
+					// Copy title for certain tool elements
+					var elems = {
+						'#stroke_color': '#tool_stroke .icon_label, #tool_stroke .color_block',
+						'#fill_color': '#tool_fill label, #tool_fill .color_block',
+						'#linejoin_miter': '#cur_linejoin',
+						'#linecap_butt': '#cur_linecap'
+					}
+					
+					$.each(elems, function(source, dest) {
+						$(dest).attr('title', $(source)[0].title);
+					});
+					
+					// Copy alignment titles
+					$('#multiselected_panel div[id^=tool_align]').each(function() {
+						$('#tool_pos' + this.id.substr(10))[0].title = this.title;
+					});
+					
+				}
+			};
+		};
+		
+		var callbacks = [];
+		
+		function loadSvgString(str, callback) {
+			var success = svgCanvas.setSvgString(str) !== false;
+			callback = callback || $.noop;
+			if(success) {
+				callback(true);
+			} else {
+				$.alert(uiStrings.notification.errorLoadingSVG, function() {
+					callback(false);
+				});
+			}
+		}
+		
+		Editor.ready = function(cb) {
+			if(!is_ready) {
+				callbacks.push(cb);
+			} else {
+				cb();
+			}
+		};
+
+		Editor.runCallbacks = function() {
+			$.each(callbacks, function() {
+				this();
+			});
+			is_ready = true;
+		};
+		
+		Editor.loadFromString = function(str) {
+			Editor.ready(function() {
+				loadSvgString(str);
+			});
+		};
+		
+		Editor.loadFromURL = function(url, opts) {
+			if(!opts) opts = {};
+
+			var cache = opts.cache;
+			var cb = opts.callback;
+		
+			Editor.ready(function() {
+				$.ajax({
+					'url': url,
+					'dataType': 'text',
+					cache: !!cache,
+					success: function(str) {
+						loadSvgString(str, cb);
+					},
+					error: function(xhr, stat, err) {
+						if(xhr.status != 404 && xhr.responseText) {
+							loadSvgString(xhr.responseText, cb);
+						} else {
+							$.alert(uiStrings.notification.URLloadFail + ": \n"+err+'', cb);
+						}
+					}
+				});
+			});
+		};
+		
+		Editor.loadFromDataURI = function(str) {
+			Editor.ready(function() {
+				var pre = 'data:image/svg+xml;base64,';
+				var src = str.substring(pre.length);
+				loadSvgString(svgedit.utilities.decode64(src));
+			});
+		};
+		
+		Editor.addExtension = function() {
+			var args = arguments;
+			
+			// Note that we don't want this on Editor.ready since some extensions
+			// may want to run before then (like server_opensave).
+			$(function() {
+				if(svgCanvas) svgCanvas.addExtension.apply(this, args);
+			});
+		};
+
+		return Editor;
+	}(jQuery);
+	
+	// Run init once DOM is loaded
+	$(methodDraw.init);
+	
+
+})();
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/path.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/path.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/path.js	(revision 29468)
@@ -0,0 +1,979 @@
+/**
+ * Package: svgedit.path
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2011 Alexis Deveria
+ * Copyright(c) 2011 Jeff Schiller
+ */
+
+// Dependencies:
+// 1) jQuery
+// 2) browser.js
+// 3) math.js
+// 4) svgutils.js
+
+var svgedit = svgedit || {};
+
+(function() {
+
+if (!svgedit.path) {
+	svgedit.path = {};
+}
+
+var svgns = "http://www.w3.org/2000/svg";
+
+var uiStrings = {
+	"pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+	"pathCtrlPtTooltip": "Drag control point to adjust curve properties"
+};
+
+var segData = {
+	2: ['x','y'],
+	4: ['x','y'],
+	6: ['x','y','x1','y1','x2','y2'],
+	8: ['x','y','x1','y1'],
+	10: ['x','y','r1','r2','angle','largeArcFlag','sweepFlag'],
+	12: ['x'],
+	14: ['y'],
+	16: ['x','y','x2','y2'],
+	18: ['x','y']
+};
+
+var pathFuncs = [];
+
+var link_control_pts = false;
+
+// Stores references to paths via IDs.
+// TODO: Make this cross-document happy.
+var pathData = {};
+
+svgedit.path.setLinkControlPoints = function(lcp) {
+	link_control_pts = lcp;
+};
+
+svgedit.path.path = null;
+
+var editorContext_ = null;
+
+svgedit.path.init = function(editorContext) {
+	editorContext_ = editorContext;
+	
+	pathFuncs = [0,'ClosePath'];
+	var pathFuncsStrs = ['Moveto', 'Lineto', 'CurvetoCubic', 'CurvetoQuadratic', 'Arc',
+		'LinetoHorizontal', 'LinetoVertical','CurvetoCubicSmooth','CurvetoQuadraticSmooth'];
+	$.each(pathFuncsStrs, function(i,s) {
+		pathFuncs.push(s+'Abs');
+		pathFuncs.push(s+'Rel');
+	});
+};
+
+svgedit.path.insertItemBefore = function(elem, newseg, index) {
+	// Support insertItemBefore on paths for FF2
+	var list = elem.pathSegList;
+
+	if(svgedit.browser.supportsPathInsertItemBefore()) {
+		list.insertItemBefore(newseg, index);
+		return;
+	}
+	//TODO!!!
+	var len = list.numberOfItems;
+	var arr = [];
+	for(var i=0; i<len; i++) {
+		var cur_seg = list.getItem(i);
+		arr.push(cur_seg)				
+	}
+	list.clear();
+	for(var i=0; i<len; i++) {
+		if(i == index) { //index+1
+			list.appendItem(newseg);
+		}
+		list.appendItem(arr[i]);
+	}
+};
+
+// TODO: See if this should just live in replacePathSeg
+svgedit.path.ptObjToArr = function(type, seg_item) {
+	var arr = segData[type], len = arr.length;
+	var out = Array(len);
+	for(var i=0; i<len; i++) {
+		out[i] = seg_item[arr[i]];
+	}
+	return out;
+};
+
+svgedit.path.getGripPt = function(seg, alt_pt) {
+	var out = {
+		x: alt_pt? alt_pt.x : seg.item.x,
+		y: alt_pt? alt_pt.y : seg.item.y
+	}, path = seg.path;
+
+	if(path.matrix) {
+		var pt = svgedit.math.transformPoint(out.x, out.y, path.matrix);
+		out = pt;
+	}
+
+	out.x *= editorContext_.getCurrentZoom();
+	out.y *= editorContext_.getCurrentZoom();
+
+	return out;
+};
+
+svgedit.path.getPointFromGrip = function(pt, path) {
+	var out = {
+		x: pt.x,
+		y: pt.y
+	}
+
+	if(path.matrix) {
+		var pt = svgedit.math.transformPoint(out.x, out.y, path.imatrix);
+		out.x = pt.x;
+		out.y = pt.y;
+	}
+
+	out.x /= editorContext_.getCurrentZoom();
+	out.y /= editorContext_.getCurrentZoom();
+
+	return out;
+};
+
+svgedit.path.addPointGrip = function(index, x, y) {
+	// create the container of all the point grips
+	var pointGripContainer = svgedit.path.getGripContainer();
+
+	var pointGrip = svgedit.utilities.getElem("pathpointgrip_"+index);
+	// create it
+	if (!pointGrip) {
+		pointGrip = document.createElementNS(svgns, "rect");
+		svgedit.utilities.assignAttributes(pointGrip, {
+			'id': "pathpointgrip_" + index,
+			'display': "none",
+			'width': svgedit.browser.isTouch() ? 30 : 5,
+			'height': svgedit.browser.isTouch() ? 30 : 5,
+			'fill': "#fff",
+			'stroke': "#4F80FF",
+			'shape-rendering': "crispEdges",
+			'stroke-width': 1,
+			'cursor': 'move',
+			'style': 'pointer-events:all',
+			'xlink:title': uiStrings.pathNodeTooltip
+		});
+		pointGrip = pointGripContainer.appendChild(pointGrip);
+
+		var grip = $('#pathpointgrip_'+index);
+		grip.dblclick(function() {
+			if(svgedit.path.path) svgedit.path.path.setSegType();
+		});
+	}
+	if(x && y) {
+		// set up the point grip element and display it
+		svgedit.utilities.assignAttributes(pointGrip, {
+			'x': x-(svgedit.browser.isTouch() ? 15 : 2.5),
+			'y': y-(svgedit.browser.isTouch() ? 15 : 2.5),
+			'display': "inline"
+		});
+	}
+	return pointGrip;
+};
+
+svgedit.path.getGripContainer = function() {
+	var c = svgedit.utilities.getElem("pathpointgrip_container");
+	if (!c) {
+		var parent = svgedit.utilities.getElem("selectorParentGroup");
+		c = parent.appendChild(document.createElementNS(svgns, "g"));
+		c.id = "pathpointgrip_container";
+	}
+	return c;
+};
+
+svgedit.path.addCtrlGrip = function(id) {
+	var pointGrip = svgedit.utilities.getElem("ctrlpointgrip_"+id);
+	if(pointGrip) return pointGrip;
+		
+	pointGrip = document.createElementNS(svgns, "circle");
+	svgedit.utilities.assignAttributes(pointGrip, {
+		'id': "ctrlpointgrip_" + id,
+		'display': "none",
+		'r': svgedit.browser.isTouch() ? 15 : 3,
+		'fill': "#4F80FF",
+		'stroke': '#4F80FF',
+		'stroke-opacity': 0,
+		'stroke-width': '3',
+		'cursor': 'move',
+		'style': 'pointer-events:all',
+		'xlink:title': uiStrings.pathCtrlPtTooltip
+	});
+	svgedit.path.getGripContainer().appendChild(pointGrip);
+	return pointGrip;
+};
+
+svgedit.path.getCtrlLine = function(id) {
+	var ctrlLine = svgedit.utilities.getElem("ctrlLine_"+id);
+	if(ctrlLine) return ctrlLine;
+
+	ctrlLine = document.createElementNS(svgns, "line");
+	svgedit.utilities.assignAttributes(ctrlLine, {
+		'id': "ctrlLine_"+id,
+		'stroke': "#4F80FF",
+		'stroke-width': 1,
+		"style": "pointer-events:none"
+	});
+	svgedit.path.getGripContainer().appendChild(ctrlLine);
+	return ctrlLine;
+};
+
+svgedit.path.getPointGrip = function(seg, update) {
+	var index = seg.index;
+	var pointGrip = svgedit.path.addPointGrip(index);
+	if(update) {
+		var pt = svgedit.path.getGripPt(seg);
+		svgedit.utilities.assignAttributes(pointGrip, {
+			'x': pt.x-(svgedit.browser.isTouch() ? 15 : 2.5),
+			'y': pt.y-(svgedit.browser.isTouch() ? 15 : 2.5),
+			'display': "inline"
+		});
+	}
+
+	return pointGrip;
+};
+
+svgedit.path.getControlPoints = function(seg) {
+	var item = seg.item;
+	var index = seg.index;
+	if(!item || !("x1" in item) || !("x2" in item)) return null;
+	var cpt = {};			
+	var pointGripContainer = svgedit.path.getGripContainer();
+
+	// Note that this is intentionally not seg.prev.item
+	var prev = svgedit.path.path.segs[index-1].item;
+
+	var seg_items = [prev, item];
+
+	for(var i=1; i<3; i++) {
+		var id = index + 'c' + i;
+
+		var ctrlLine = cpt['c' + i + '_line'] = svgedit.path.getCtrlLine(id);
+
+		var pt = svgedit.path.getGripPt(seg, {x:item['x' + i], y:item['y' + i]});
+		var gpt = svgedit.path.getGripPt(seg, {x:seg_items[i-1].x, y:seg_items[i-1].y});
+
+		svgedit.utilities.assignAttributes(ctrlLine, {
+			'x1': pt.x,
+			'y1': pt.y,
+			'x2': gpt.x,
+			'y2': gpt.y,
+			'display': "inline"
+		});
+
+		cpt['c' + i + '_line'] = ctrlLine;
+
+		// create it
+		pointGrip = cpt['c' + i] = svgedit.path.addCtrlGrip(id);
+		svgedit.utilities.assignAttributes(pointGrip, {
+			'cx': pt.x,
+			'cy': pt.y,
+			'display': "inline"
+		});
+		cpt['c' + i] = pointGrip;
+	}
+	return cpt;
+};
+
+// This replaces the segment at the given index. Type is given as number.
+svgedit.path.replacePathSeg = function(type, index, pts, elem) {
+	var path = elem || svgedit.path.path.elem;
+	var func = 'createSVGPathSeg' + pathFuncs[type];
+	var seg = path[func].apply(path, pts);
+
+	if(svgedit.browser.supportsPathReplaceItem()) {
+		path.pathSegList.replaceItem(seg, index);
+	} else {
+		var segList = path.pathSegList;
+		var len = segList.numberOfItems;
+		var arr = [];
+		for(var i=0; i<len; i++) {
+			var cur_seg = segList.getItem(i);
+			arr.push(cur_seg)				
+		}
+		segList.clear();
+		for(var i=0; i<len; i++) {
+			if(i == index) {
+				segList.appendItem(seg);
+			} else {
+				segList.appendItem(arr[i]);
+			}
+		}
+	}
+};
+
+svgedit.path.getSegSelector = function(seg, update) {
+	var index = seg.index;
+	var segLine = svgedit.utilities.getElem("segline_" + index);
+	if(!segLine) {
+		var pointGripContainer = svgedit.path.getGripContainer();
+		// create segline
+		segLine = document.createElementNS(svgns, "path");
+		svgedit.utilities.assignAttributes(segLine, {
+			'id': "segline_" + index,
+			'display': 'none',
+			'fill': "none",
+			'stroke': "#0ff",
+			'stroke-opacity': 1,
+			"shape-rendering": "crispEdges",
+			'stroke-width': 2,
+			'style':'pointer-events:none',
+			'd': 'M0,0 0,0'
+		});
+		pointGripContainer.appendChild(segLine);
+	} 
+
+	if(update) {
+		var prev = seg.prev;
+		if(!prev) {
+			segLine.setAttribute("display", "none");
+			return segLine;
+		}
+
+		var pt = svgedit.path.getGripPt(prev);
+		// Set start point
+		svgedit.path.replacePathSeg(2, 0, [pt.x, pt.y], segLine);
+
+		var pts = svgedit.path.ptObjToArr(seg.type, seg.item, true);
+		for(var i=0; i < pts.length; i+=2) {
+			var pt = svgedit.path.getGripPt(seg, {x:pts[i], y:pts[i+1]});
+			pts[i] = pt.x;
+			pts[i+1] = pt.y;
+		}
+
+		svgedit.path.replacePathSeg(seg.type, 1, pts, segLine);
+	}
+	return segLine;
+};
+
+// Function: smoothControlPoints
+// Takes three points and creates a smoother line based on them
+// 
+// Parameters: 
+// ct1 - Object with x and y values (first control point)
+// ct2 - Object with x and y values (second control point)
+// pt - Object with x and y values (third point)
+//
+// Returns: 
+// Array of two "smoothed" point objects
+svgedit.path.smoothControlPoints = this.smoothControlPoints = function(ct1, ct2, pt) {
+	// each point must not be the origin
+	var x1 = ct1.x - pt.x,
+		y1 = ct1.y - pt.y,
+		x2 = ct2.x - pt.x,
+		y2 = ct2.y - pt.y;
+		
+	if ( (x1 != 0 || y1 != 0) && (x2 != 0 || y2 != 0) ) {
+		var anglea = Math.atan2(y1,x1),
+			angleb = Math.atan2(y2,x2),
+			r1 = Math.sqrt(x1*x1+y1*y1),
+			r2 = Math.sqrt(x2*x2+y2*y2),
+			nct1 = editorContext_.getSVGRoot().createSVGPoint(),
+			nct2 = editorContext_.getSVGRoot().createSVGPoint();				
+		if (anglea < 0) { anglea += 2*Math.PI; }
+		if (angleb < 0) { angleb += 2*Math.PI; }
+		
+		var angleBetween = Math.abs(anglea - angleb),
+			angleDiff = Math.abs(Math.PI - angleBetween)/2;
+		
+		var new_anglea, new_angleb;
+		if (anglea - angleb > 0) {
+			new_anglea = angleBetween < Math.PI ? (anglea + angleDiff) : (anglea - angleDiff);
+			new_angleb = angleBetween < Math.PI ? (angleb - angleDiff) : (angleb + angleDiff);
+		}
+		else {
+			new_anglea = angleBetween < Math.PI ? (anglea - angleDiff) : (anglea + angleDiff);
+			new_angleb = angleBetween < Math.PI ? (angleb + angleDiff) : (angleb - angleDiff);
+		}
+		
+		// rotate the points
+		nct1.x = r1 * Math.cos(new_anglea) + pt.x;
+		nct1.y = r1 * Math.sin(new_anglea) + pt.y;
+		nct2.x = r2 * Math.cos(new_angleb) + pt.x;
+		nct2.y = r2 * Math.sin(new_angleb) + pt.y;
+		
+		return [nct1, nct2];
+	}
+	return undefined;
+};
+
+svgedit.path.Segment = function(index, item) {
+	this.selected = false;
+	this.index = index;
+	this.item = item;
+	this.type = item.pathSegType;
+	
+	this.ctrlpts = [];
+	this.ptgrip = null;
+	this.segsel = null;
+};
+
+svgedit.path.Segment.prototype.showCtrlPts = function(y) {
+	for (var i in this.ctrlpts) {
+		this.ctrlpts[i].setAttribute("display", y ? "inline" : "none");
+	}
+};
+
+svgedit.path.Segment.prototype.selectCtrls = function(y) {
+	$('#ctrlpointgrip_' + this.index + 'c1, #ctrlpointgrip_' + this.index + 'c2').
+		attr('fill', '#4F80FF');
+};
+
+svgedit.path.Segment.prototype.show = function(y) {
+	if(this.ptgrip) {
+		this.ptgrip.setAttribute("display", y ? "inline" : "none");
+		this.segsel.setAttribute("display", y ? "inline" : "none");
+		// Show/hide all control points if available
+		this.showCtrlPts(y);
+	}
+};
+
+svgedit.path.Segment.prototype.select = function(y) {
+	if(this.ptgrip) {
+		this.ptgrip.setAttribute("stroke", y ? "#4F80FF" : "#4F80FF");
+		this.ptgrip.setAttribute("fill", y ? "#4F80FF" : "#fff");
+		this.segsel.setAttribute("display", y ? "inline" : "none");
+		if(this.ctrlpts) {
+			this.selectCtrls(y);
+		}
+		this.selected = y;
+	}
+};
+
+svgedit.path.Segment.prototype.addGrip = function() {
+	this.ptgrip = svgedit.path.getPointGrip(this, true);
+	this.ctrlpts = svgedit.path.getControlPoints(this, true);
+	this.segsel = svgedit.path.getSegSelector(this, true);
+};
+
+svgedit.path.Segment.prototype.update = function(full) {
+	if(this.ptgrip) {
+		var pt = svgedit.path.getGripPt(this);
+		var reposition = (svgedit.browser.isTouch() ? 15 : 2.5)
+		var properties = (this.ptgrip.nodeName == "rect") ? {'x': pt.x-reposition, 'y': pt.y-reposition} : {'cx': pt.x, 'cy': pt.y};
+		svgedit.utilities.assignAttributes(this.ptgrip, properties);
+		svgedit.path.getSegSelector(this, true);
+
+		if(this.ctrlpts) {
+			if(full) {
+				this.item = svgedit.path.path.elem.pathSegList.getItem(this.index);
+				this.type = this.item.pathSegType;
+			}
+			svgedit.path.getControlPoints(this);
+		} 
+		// this.segsel.setAttribute("display", y?"inline":"none");
+	}
+};
+
+svgedit.path.Segment.prototype.move = function(dx, dy) {
+	var item = this.item;
+	if(this.ctrlpts) {
+		var cur_pts = [item.x += dx, item.y += dy, 
+			item.x1, item.y1, item.x2 += dx, item.y2 += dy];
+	} else {
+		var cur_pts = [item.x += dx, item.y += dy];
+	}
+	svgedit.path.replacePathSeg(this.type, this.index, cur_pts);
+
+	if(this.next && this.next.ctrlpts) {
+		var next = this.next.item;
+		var next_pts = [next.x, next.y, 
+			next.x1 += dx, next.y1 += dy, next.x2, next.y2];
+		svgedit.path.replacePathSeg(this.next.type, this.next.index, next_pts);
+	}
+
+	if(this.mate) {
+		// The last point of a closed subpath has a "mate",
+		// which is the "M" segment of the subpath
+		var item = this.mate.item;
+		var pts = [item.x += dx, item.y += dy];
+		svgedit.path.replacePathSeg(this.mate.type, this.mate.index, pts);
+		// Has no grip, so does not need "updating"?
+	}
+
+	this.update(true);
+	if(this.next) this.next.update(true);
+};
+
+svgedit.path.Segment.prototype.setLinked = function(num) {
+	var seg, anum, pt;
+	if (num == 2) {
+		anum = 1;
+		seg = this.next;
+		if(!seg) return;
+		pt = this.item;
+	} else {
+		anum = 2;
+		seg = this.prev;
+		if(!seg) return;
+		pt = seg.item;
+	}
+
+	var item = seg.item;
+	item['x' + anum] = pt.x + pt.x - this.item['x' + num];
+	item['y' + anum] = pt.y + pt.y - this.item['y' + num];
+
+	var pts = [item.x, item.y,
+		item.x1, item.y1,
+		item.x2, item.y2];
+	svgedit.path.replacePathSeg(seg.type, seg.index, pts);
+	seg.update(true);
+};
+
+svgedit.path.Segment.prototype.moveCtrl = function(num, dx, dy) {
+	var item = this.item;
+
+	item['x' + num] += dx;
+	item['y' + num] += dy;
+
+	var pts = [item.x,item.y,
+		item.x1,item.y1, item.x2,item.y2];
+		
+	svgedit.path.replacePathSeg(this.type, this.index, pts);
+	this.update(true);
+};
+
+svgedit.path.Segment.prototype.setType = function(new_type, pts) {
+	svgedit.path.replacePathSeg(new_type, this.index, pts);
+	this.type = new_type;
+	this.item = svgedit.path.path.elem.pathSegList.getItem(this.index);
+	this.showCtrlPts(new_type === 6);
+	this.ctrlpts = svgedit.path.getControlPoints(this);
+	this.update(true);
+};
+
+svgedit.path.Path = function(elem) {
+	if(!elem || elem.tagName !== "path") {
+		throw "svgedit.path.Path constructed without a <path> element";
+	}
+
+	this.elem = elem;
+	this.segs = [];
+	this.selected_pts = [];
+	svgedit.path.path = this;
+
+	this.init();
+};
+
+// Reset path data
+svgedit.path.Path.prototype.init = function() {
+	// Hide all grips, etc
+	$(svgedit.path.getGripContainer()).find("*").attr("display", "none");
+	var segList = this.elem.pathSegList;
+	var len = segList.numberOfItems;
+	this.segs = [];
+	this.selected_pts = [];
+	this.first_seg = null;
+	
+	// Set up segs array
+	for(var i=0; i < len; i++) {
+		var item = segList.getItem(i);
+		var segment = new svgedit.path.Segment(i, item);
+		segment.path = this;
+		this.segs.push(segment);
+	}	
+	
+	var segs = this.segs;
+	var start_i = null;
+
+	for(var i=0; i < len; i++) {
+		var seg = segs[i]; 
+		var next_seg = (i+1) >= len ? null : segs[i+1];
+		var prev_seg = (i-1) < 0 ? null : segs[i-1];
+		
+		if(seg.type === 2) {
+			if(prev_seg && prev_seg.type !== 1) {
+				// New sub-path, last one is open,
+				// so add a grip to last sub-path's first point
+				var start_seg = segs[start_i];
+				start_seg.next = segs[start_i+1];
+				start_seg.next.prev = start_seg;
+				start_seg.addGrip();
+			}
+			// Remember that this is a starter seg
+			start_i = i;
+		} else if(next_seg && next_seg.type === 1) {
+			// This is the last real segment of a closed sub-path
+			// Next is first seg after "M"
+			seg.next = segs[start_i+1];
+			
+			// First seg after "M"'s prev is this
+			seg.next.prev = seg;
+			seg.mate = segs[start_i];
+			seg.addGrip();
+			if(this.first_seg == null) {
+				this.first_seg = seg;
+			}
+		} else if(!next_seg) {
+			if(seg.type !== 1) {
+				// Last seg, doesn't close so add a grip
+				// to last sub-path's first point
+				var start_seg = segs[start_i];
+				start_seg.next = segs[start_i+1];
+				start_seg.next.prev = start_seg;
+				start_seg.addGrip();
+				seg.addGrip();
+
+				if(!this.first_seg) {
+					// Open path, so set first as real first and add grip
+					this.first_seg = segs[start_i];
+				}
+			}
+		} else if(seg.type !== 1){
+			// Regular segment, so add grip and its "next"
+			seg.addGrip();
+			
+			// Don't set its "next" if it's an "M"
+			if(next_seg && next_seg.type !== 2) {
+				seg.next = next_seg;
+				seg.next.prev = seg;
+			}
+		}
+	}
+	return this;
+};
+
+svgedit.path.Path.prototype.eachSeg = function(fn) {
+	var len = this.segs.length
+	for(var i=0; i < len; i++) {
+		var ret = fn.call(this.segs[i], i);
+		if(ret === false) break;
+	}
+};
+
+svgedit.path.Path.prototype.addSeg = function(index) {
+	// Adds a new segment
+	var seg = this.segs[index];
+	if(!seg.prev) return;
+
+	var prev = seg.prev;
+	var newseg;
+	switch(seg.item.pathSegType) {
+	case 4:
+		var new_x = (seg.item.x + prev.item.x) / 2;
+		var new_y = (seg.item.y + prev.item.y) / 2;
+		newseg = this.elem.createSVGPathSegLinetoAbs(new_x, new_y);
+		break;
+	case 6: //make it a curved segment to preserve the shape (WRS)
+		// http://en.wikipedia.org/wiki/De_Casteljau%27s_algorithm#Geometric_interpretation
+		var p0_x = (prev.item.x + seg.item.x1)/2;
+		var p1_x = (seg.item.x1 + seg.item.x2)/2;
+		var p2_x = (seg.item.x2 + seg.item.x)/2;
+		var p01_x = (p0_x + p1_x)/2;
+		var p12_x = (p1_x + p2_x)/2;
+		var new_x = (p01_x + p12_x)/2;
+		var p0_y = (prev.item.y + seg.item.y1)/2;
+		var p1_y = (seg.item.y1 + seg.item.y2)/2;
+		var p2_y = (seg.item.y2 + seg.item.y)/2;
+		var p01_y = (p0_y + p1_y)/2;
+		var p12_y = (p1_y + p2_y)/2;
+		var new_y = (p01_y + p12_y)/2;
+		newseg = this.elem.createSVGPathSegCurvetoCubicAbs(new_x,new_y, p0_x,p0_y, p01_x,p01_y);
+		var pts = [seg.item.x,seg.item.y,p12_x,p12_y,p2_x,p2_y];
+		svgedit.path.replacePathSeg(seg.type,index,pts);
+		break;
+	}
+
+	svgedit.path.insertItemBefore(this.elem, newseg, index);
+};
+
+svgedit.path.Path.prototype.deleteSeg = function(index) {
+	var seg = this.segs[index];
+	var list = this.elem.pathSegList;
+	
+	seg.show(false);
+	var next = seg.next;
+	if(seg.mate) {
+		// Make the next point be the "M" point
+		var pt = [next.item.x, next.item.y];
+		svgedit.path.replacePathSeg(2, next.index, pt);
+		
+		// Reposition last node
+		svgedit.path.replacePathSeg(4, seg.index, pt);
+		
+		list.removeItem(seg.mate.index);
+	} else if(!seg.prev) {
+		// First node of open path, make next point the M
+		var item = seg.item;
+		var pt = [next.item.x, next.item.y];
+		svgedit.path.replacePathSeg(2, seg.next.index, pt);
+		list.removeItem(index);
+		
+	} else {
+		list.removeItem(index);
+	}
+};
+
+svgedit.path.Path.prototype.subpathIsClosed = function(index) {
+	var closed = false;
+	// Check if subpath is already open
+	svgedit.path.path.eachSeg(function(i) {
+		if(i <= index) return true;
+		if(this.type === 2) {
+			// Found M first, so open
+			return false;
+		} else if(this.type === 1) {
+			// Found Z first, so closed
+			closed = true;
+			return false;
+		}
+	});
+	
+	return closed;
+};
+
+svgedit.path.Path.prototype.removePtFromSelection = function(index) {
+	var pos = this.selected_pts.indexOf(index);
+	if(pos == -1) {
+		return;
+	} 
+	this.segs[index].select(false);
+	this.selected_pts.splice(pos, 1);
+};
+
+svgedit.path.Path.prototype.clearSelection = function() {
+	this.eachSeg(function(i) {
+		// 'this' is the segment here
+		this.select(false);
+	});
+	this.selected_pts = [];
+};
+
+svgedit.path.Path.prototype.storeD = function() {
+	this.last_d = this.elem.getAttribute('d');
+};
+
+svgedit.path.Path.prototype.show = function(y) {
+	// Shows this path's segment grips
+	this.eachSeg(function() {
+		// 'this' is the segment here
+		this.show(y);
+	});
+	if(y) {
+		this.selectPt(this.first_seg.index);
+	}
+	return this;
+};
+
+// Move selected points 
+svgedit.path.Path.prototype.movePts = function(d_x, d_y) {
+	var i = this.selected_pts.length;
+	while(i--) {
+		var seg = this.segs[this.selected_pts[i]];
+		seg.move(d_x, d_y);
+	}
+};
+
+svgedit.path.Path.prototype.moveCtrl = function(d_x, d_y) {
+	var seg = this.segs[this.selected_pts[0]];
+	seg.moveCtrl(this.dragctrl, d_x, d_y);
+	if(link_control_pts) {
+		seg.setLinked(this.dragctrl);
+	}
+};
+
+svgedit.path.Path.prototype.setSegType = function(new_type) {
+	this.storeD();
+	var i = this.selected_pts.length;
+	var text;
+	while(i--) {
+		var sel_pt = this.selected_pts[i];
+		
+		// Selected seg
+		var cur = this.segs[sel_pt];
+		var prev = cur.prev;
+		if(!prev) continue;
+		
+		if(!new_type) { // double-click, so just toggle
+			text = "Toggle Path Segment Type";
+
+			// Toggle segment to curve/straight line
+			var old_type = cur.type;
+			
+			new_type = (old_type == 6) ? 4 : 6;
+		} 
+		
+		new_type = new_type-0;
+		
+		var cur_x = cur.item.x;
+		var cur_y = cur.item.y;
+		var prev_x = prev.item.x;
+		var prev_y = prev.item.y;
+		var points;
+		switch ( new_type ) {
+		case 6:
+			if(cur.olditem) {
+				var old = cur.olditem;
+				points = [cur_x,cur_y, old.x1,old.y1, old.x2,old.y2];
+			} else {
+				var diff_x = cur_x - prev_x;
+				var diff_y = cur_y - prev_y;
+				// get control points from straight line segment
+				/*
+				var ct1_x = (prev_x + (diff_y/2));
+				var ct1_y = (prev_y - (diff_x/2));
+				var ct2_x = (cur_x + (diff_y/2));
+				var ct2_y = (cur_y - (diff_x/2));
+				*/
+				//create control points on the line to preserve the shape (WRS)
+				var ct1_x = (prev_x + (diff_x/3));
+				var ct1_y = (prev_y + (diff_y/3));
+				var ct2_x = (cur_x - (diff_x/3));
+				var ct2_y = (cur_y - (diff_y/3));
+				points = [cur_x,cur_y, ct1_x,ct1_y, ct2_x,ct2_y];
+			}
+			break;
+		case 4:
+			points = [cur_x,cur_y];
+			
+			// Store original prevve segment nums
+			cur.olditem = cur.item;
+			break;
+		}
+		
+		cur.setType(new_type, points);
+	}
+	svgedit.path.path.endChanges(text);
+};
+
+svgedit.path.Path.prototype.selectPt = function(pt, ctrl_num) {
+	this.clearSelection();
+	if(pt == null) {
+		this.eachSeg(function(i) {
+			// 'this' is the segment here.
+			if(this.prev) {
+				pt = i;
+			}
+		});
+	}
+	this.addPtsToSelection(pt);
+	if(ctrl_num) {
+		this.dragctrl = ctrl_num;
+		
+		if(link_control_pts) {
+			this.segs[pt].setLinked(ctrl_num);
+		}
+	}
+};
+
+// Update position of all points
+svgedit.path.Path.prototype.update = function() {
+	var elem = this.elem;
+	if(svgedit.utilities.getRotationAngle(elem)) {
+		this.matrix = svgedit.math.getMatrix(elem);
+		this.imatrix = this.matrix.inverse();
+	} else {
+		this.matrix = null;
+		this.imatrix = null;
+	}
+
+	this.eachSeg(function(i) {
+		this.item = elem.pathSegList.getItem(i);
+		this.update();
+	});
+
+	return this;
+};
+
+svgedit.path.getPath_ = function(elem) {
+	var p = pathData[elem.id];
+	if(!p) p = pathData[elem.id] = new svgedit.path.Path(elem);
+	return p;
+};
+
+svgedit.path.removePath_ = function(id) {
+	if(id in pathData) delete pathData[id];
+};
+
+var getRotVals = function(x, y, oldcx, oldcy, newcx, newcy, angle) {
+	dx = x - oldcx;
+	dy = y - oldcy;
+	
+	// rotate the point around the old center
+	r = Math.sqrt(dx*dx + dy*dy);
+	theta = Math.atan2(dy,dx) + angle;
+	dx = r * Math.cos(theta) + oldcx;
+	dy = r * Math.sin(theta) + oldcy;
+	
+	// dx,dy should now hold the actual coordinates of each
+	// point after being rotated
+
+	// now we want to rotate them around the new center in the reverse direction
+	dx -= newcx;
+	dy -= newcy;
+	
+	r = Math.sqrt(dx*dx + dy*dy);
+	theta = Math.atan2(dy,dx) - angle;
+	return {'x':(r * Math.cos(theta) + newcx)/1,
+		'y':(r * Math.sin(theta) + newcy)/1};
+};
+
+// If the path was rotated, we must now pay the piper:
+// Every path point must be rotated into the rotated coordinate system of 
+// its old center, then determine the new center, then rotate it back
+// This is because we want the path to remember its rotation
+
+// TODO: This is still using ye olde transform methods, can probably
+// be optimized or even taken care of by recalculateDimensions
+svgedit.path.recalcRotatedPath = function() {
+	var current_path = svgedit.path.path.elem;
+	var angle = svgedit.utilities.getRotationAngle(current_path, true);
+	if(!angle) return;
+//	selectedBBoxes[0] = svgedit.path.path.oldbbox;
+	var box = svgedit.utilities.getBBox(current_path),
+		oldbox = svgedit.path.path.oldbbox,//selectedBBoxes[0],
+		oldcx = oldbox.x + oldbox.width/2,
+		oldcy = oldbox.y + oldbox.height/2,
+		newcx = box.x + box.width/2,
+		newcy = box.y + box.height/2,
+		
+	// un-rotate the new center to the proper position
+		dx = newcx - oldcx,
+		dy = newcy - oldcy,
+		r = Math.sqrt(dx*dx + dy*dy),
+		theta = Math.atan2(dy,dx) + angle;
+		
+	newcx = r * Math.cos(theta) + oldcx;
+	newcy = r * Math.sin(theta) + oldcy;
+	
+	var list = current_path.pathSegList,
+		i = list.numberOfItems;
+	while (i) {
+		i -= 1;
+		var seg = list.getItem(i),
+			type = seg.pathSegType;
+		if(type == 1) continue;
+		
+		var rvals = getRotVals(seg.x,seg.y, oldcx, oldcy, newcx, newcy, angle),
+			points = [rvals.x, rvals.y];
+		if(seg.x1 != null && seg.x2 != null) {
+			c_vals1 = getRotVals(seg.x1, seg.y1, oldcx, oldcy, newcx, newcy, angle);
+			c_vals2 = getRotVals(seg.x2, seg.y2, oldcx, oldcy, newcx, newcy, angle);
+			points.splice(points.length, 0, c_vals1.x , c_vals1.y, c_vals2.x, c_vals2.y);
+		}
+		svgedit.path.replacePathSeg(type, i, points);
+	} // loop for each point
+
+	box = svgedit.utilities.getBBox(current_path);						
+//	selectedBBoxes[0].x = box.x; selectedBBoxes[0].y = box.y;
+//	selectedBBoxes[0].width = box.width; selectedBBoxes[0].height = box.height;
+	
+	// now we must set the new transform to be rotated around the new center
+	var R_nc = svgroot.createSVGTransform(),
+		tlist = svgedit.transformlist.getTransformList(current_path);
+	R_nc.setRotate((angle * 180.0 / Math.PI), newcx, newcy);
+	tlist.replaceItem(R_nc,0);
+};
+
+// ====================================
+// Public API starts here
+
+svgedit.path.clearData =  function() {
+	pathData = {};
+};
+
+})();
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/sanitize.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/sanitize.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/sanitize.js	(revision 29468)
@@ -0,0 +1,273 @@
+/**
+ * Package: svgedit.sanitize
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ * Copyright(c) 2010 Jeff Schiller
+ */
+
+// Dependencies:
+// 1) browser.js
+// 2) svgutils.js
+
+var svgedit = svgedit || {};
+
+(function() {
+
+if (!svgedit.sanitize) {
+	svgedit.sanitize = {};
+}
+
+// Namespace constants
+var svgns = "http://www.w3.org/2000/svg",
+	xlinkns = "http://www.w3.org/1999/xlink",
+	xmlns = "http://www.w3.org/XML/1998/namespace",
+	xmlnsns = "http://www.w3.org/2000/xmlns/", // see http://www.w3.org/TR/REC-xml-names/#xmlReserved
+	se_ns = "http://svg-edit.googlecode.com",
+	htmlns = "http://www.w3.org/1999/xhtml",
+	mathns = "http://www.w3.org/1998/Math/MathML";
+
+// map namespace URIs to prefixes
+var nsMap_ = {};
+nsMap_[xlinkns] = 'xlink';
+nsMap_[xmlns] = 'xml';
+nsMap_[xmlnsns] = 'xmlns';
+nsMap_[se_ns] = 'se';
+nsMap_[htmlns] = 'xhtml';
+nsMap_[mathns] = 'mathml';
+
+// map prefixes to namespace URIs
+var nsRevMap_ = {};
+$.each(nsMap_, function(key,value){
+	nsRevMap_[value] = key;
+});
+
+// this defines which elements and attributes that we support
+var svgWhiteList_ = {
+	// SVG Elements
+	"a": ["class", "clip-path", "clip-rule", "fill", "fill-opacity", "fill-rule", "filter", "id", "mask", "opacity", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "systemLanguage", "transform", "xlink:href", "xlink:title"],
+	"circle": ["class", "clip-path", "clip-rule", "cx", "cy", "fill", "fill-opacity", "fill-rule", "filter", "id", "mask", "opacity", "r", "requiredFeatures", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "systemLanguage", "transform"],
+	"clipPath": ["class", "clipPathUnits", "id"],
+	"defs": [],
+        "style" : ["type"],
+	"desc": [],
+	"ellipse": ["class", "clip-path", "clip-rule", "cx", "cy", "fill", "fill-opacity", "fill-rule", "filter", "id", "mask", "opacity", "requiredFeatures", "rx", "ry", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "systemLanguage", "transform"],
+	"feGaussianBlur": ["class", "color-interpolation-filters", "id", "requiredFeatures", "stdDeviation"],
+	"filter": ["class", "color-interpolation-filters", "filterRes", "filterUnits", "height", "id", "primitiveUnits", "requiredFeatures", "width", "x", "xlink:href", "y"],
+	"foreignObject": ["class", "font-size", "height", "id", "opacity", "requiredFeatures", "style", "transform", "width", "x", "y"],
+	"g": ["class", "clip-path", "clip-rule", "id", "display", "fill", "fill-opacity", "fill-rule", "filter", "mask", "opacity", "requiredFeatures", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "systemLanguage", "transform", "font-family", "font-size", "font-style", "font-weight", "text-anchor", "data-locked"],
+	"image": ["class", "clip-path", "clip-rule", "filter", "height", "id", "mask", "opacity", "requiredFeatures", "style", "systemLanguage", "transform", "width", "x", "xlink:href", "xlink:title", "y"],
+	"line": ["shape-rendering", "class", "clip-path", "clip-rule", "fill", "fill-opacity", "fill-rule", "filter", "id", "marker-end", "marker-mid", "marker-start", "mask", "opacity", "requiredFeatures", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "systemLanguage", "transform", "x1", "x2", "y1", "y2"],
+	"linearGradient": ["class", "id", "gradientTransform", "gradientUnits", "requiredFeatures", "spreadMethod", "systemLanguage", "x1", "x2", "xlink:href", "y1", "y2"],
+	"marker": ["id", "class", "markerHeight", "markerUnits", "markerWidth", "orient", "preserveAspectRatio", "refX", "refY", "systemLanguage", "viewBox"],
+	"mask": ["class", "height", "id", "maskContentUnits", "maskUnits", "width", "x", "y"],
+	"metadata": ["class", "id"],
+	"path": ["class", "clip-path", "clip-rule", "d", "fill", "fill-opacity", "fill-rule", "filter", "id", "marker-end", "marker-mid", "marker-start", "mask", "opacity", "requiredFeatures", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "systemLanguage", "transform"],
+	"pattern": ["class", "height", "id", "patternContentUnits", "patternTransform", "patternUnits", "requiredFeatures", "style", "systemLanguage", "viewBox", "width", "x", "xlink:href", "y"],
+	"polygon": ["class", "clip-path", "clip-rule", "id", "fill", "fill-opacity", "fill-rule", "filter", "id", "class", "marker-end", "marker-mid", "marker-start", "mask", "opacity", "points", "requiredFeatures", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "systemLanguage", "transform"],
+	"polyline": ["class", "clip-path", "clip-rule", "id", "fill", "fill-opacity", "fill-rule", "filter", "marker-end", "marker-mid", "marker-start", "mask", "opacity", "points", "requiredFeatures", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "systemLanguage", "transform"],
+	"radialGradient": ["class", "cx", "cy", "fx", "fy", "gradientTransform", "gradientUnits", "id", "r", "requiredFeatures", "spreadMethod", "systemLanguage", "xlink:href"],
+	"rect": ["shape-rendering", "class", "clip-path", "clip-rule", "fill", "fill-opacity", "fill-rule", "filter", "height", "id", "mask", "opacity", "requiredFeatures", "rx", "ry", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "systemLanguage", "transform", "width", "x", "y"],
+	"stop": ["class", "id", "offset", "requiredFeatures", "stop-color", "stop-opacity", "style", "systemLanguage"],
+	"svg": ["class", "clip-path", "clip-rule", "filter", "id", "height", "mask", "preserveAspectRatio", "requiredFeatures", "style", "systemLanguage", "viewBox", "width", "x", "xmlns", "xmlns:se", "xmlns:xlink", "y"],
+	"switch": ["class", "id", "requiredFeatures", "systemLanguage"],
+	"symbol": ["class", "fill", "fill-opacity", "fill-rule", "filter", "font-family", "font-size", "font-style", "font-weight", "id", "opacity", "preserveAspectRatio", "requiredFeatures", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "systemLanguage", "transform", "viewBox"],
+	"text": ["class", "clip-path", "clip-rule", "fill", "fill-opacity", "fill-rule", "filter", "font-family", "font-size", "font-style", "font-weight", "id", "mask", "opacity", "requiredFeatures", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "systemLanguage", "text-anchor", "transform", "x", "xml:space", "y"],
+	"textPath": ["class", "id", "method", "requiredFeatures", "spacing", "startOffset", "style", "systemLanguage", "transform", "xlink:href"],
+	"title": [],
+	"tspan": ["class", "clip-path", "clip-rule", "dx", "dy", "fill", "fill-opacity", "fill-rule", "filter", "font-family", "font-size", "font-style", "font-weight", "id", "mask", "opacity", "requiredFeatures", "rotate", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "systemLanguage", "text-anchor", "textLength", "transform", "x", "xml:space", "y"],
+	"use": ["class", "clip-path", "clip-rule", "fill", "fill-opacity", "fill-rule", "filter", "height", "id", "mask", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "transform", "width", "x", "xlink:href", "y"],
+	
+	// MathML Elements
+	"annotation": ["encoding"],
+	"annotation-xml": ["encoding"],
+	"maction": ["actiontype", "other", "selection"],
+	"math": ["class", "id", "display", "xmlns"],
+	"menclose": ["notation"],
+	"merror": [],
+	"mfrac": ["linethickness"],
+	"mi": ["mathvariant"],
+	"mmultiscripts": [],
+	"mn": [],
+	"mo": ["fence", "lspace", "maxsize", "minsize", "rspace", "stretchy"],
+	"mover": [],
+	"mpadded": ["lspace", "width", "height", "depth", "voffset"],
+	"mphantom": [],
+	"mprescripts": [],
+	"mroot": [],
+	"mrow": ["xlink:href", "xlink:type", "xmlns:xlink"],
+	"mspace": ["depth", "height", "width"],
+	"msqrt": [],
+	"mstyle": ["displaystyle", "mathbackground", "mathcolor", "mathvariant", "scriptlevel"],
+	"msub": [],
+	"msubsup": [],
+	"msup": [],
+	"mtable": ["align", "columnalign", "columnlines", "columnspacing", "displaystyle", "equalcolumns", "equalrows", "frame", "rowalign", "rowlines", "rowspacing", "width"],
+	"mtd": ["columnalign", "columnspan", "rowalign", "rowspan"],
+	"mtext": [],
+	"mtr": ["columnalign", "rowalign"],
+	"munder": [],
+	"munderover": [],
+	"none": [],
+	"semantics": []
+};
+
+// Produce a Namespace-aware version of svgWhitelist
+var svgWhiteListNS_ = {};
+$.each(svgWhiteList_, function(elt,atts){
+	var attNS = {};
+	$.each(atts, function(i, att){
+		if (att.indexOf(':') >= 0) {
+			var v = att.split(':');
+			attNS[v[1]] = nsRevMap_[v[0]];
+		} else {
+			attNS[att] = att == 'xmlns' ? xmlnsns : null;
+		}
+	});
+	svgWhiteListNS_[elt] = attNS;
+});
+
+// temporarily expose these
+svgedit.sanitize.getNSMap = function() { return nsMap_; }
+
+// Function: svgedit.sanitize.sanitizeSvg
+// Sanitizes the input node and its children
+// It only keeps what is allowed from our whitelist defined above
+//
+// Parameters:
+// node - The DOM element to be checked, will also check its children
+svgedit.sanitize.sanitizeSvg = function(node) {
+	// we only care about element nodes
+	// automatically return for all comment, etc nodes
+	// for text, we do a whitespace trim
+	if (node.nodeType == 3) {
+		node.nodeValue = node.nodeValue.replace(/^\s+|\s+$/g, "");
+		// Remove empty text nodes
+		if(!node.nodeValue.length) node.parentNode.removeChild(node);
+	}
+	if (node.nodeType != 1) return;
+	var doc = node.ownerDocument;
+	var parent = node.parentNode;
+	// can parent ever be null here?  I think the root node's parent is the document...
+	if (!doc || !parent) return;
+	
+	var allowedAttrs = svgWhiteList_[node.nodeName];
+	var allowedAttrsNS = svgWhiteListNS_[node.nodeName];
+
+	// if this element is allowed
+	if (allowedAttrs != undefined) {
+
+		var se_attrs = [];
+	
+		var i = node.attributes.length;
+		while (i--) {
+			// if the attribute is not in our whitelist, then remove it
+			// could use jQuery's inArray(), but I don't know if that's any better
+			var attr = node.attributes.item(i);
+			var attrName = attr.nodeName;
+			var attrLocalName = attr.localName;
+			var attrNsURI = attr.namespaceURI;
+			// Check that an attribute with the correct localName in the correct namespace is on 
+			// our whitelist or is a namespace declaration for one of our allowed namespaces
+			if (!(allowedAttrsNS.hasOwnProperty(attrLocalName) && attrNsURI == allowedAttrsNS[attrLocalName] && attrNsURI != xmlnsns) &&
+				!(attrNsURI == xmlnsns && nsMap_[attr.nodeValue]) ) 
+			{
+				// TODO(codedread): Programmatically add the se: attributes to the NS-aware whitelist.
+				// Bypassing the whitelist to allow se: prefixes. Is there
+				// a more appropriate way to do this?
+				if(attrName.indexOf('se:') == 0) {
+					se_attrs.push([attrName, attr.nodeValue]);
+				} 
+				node.removeAttributeNS(attrNsURI, attrLocalName);
+			}
+			
+			// Add spaces before negative signs where necessary
+			if(svgedit.browser.isGecko()) {
+				switch ( attrName ) {
+				case "transform":
+				case "gradientTransform":
+				case "patternTransform":
+					var val = attr.nodeValue.replace(/(\d)-/g, "$1 -");
+					node.setAttribute(attrName, val);
+				}
+			}
+			
+			// for the style attribute, rewrite it in terms of XML presentational attributes
+			if (attrName == "style") {
+				var props = attr.nodeValue.split(";"),
+					p = props.length;
+				while(p--) {
+					var nv = props[p].split(":");
+					// now check that this attribute is supported
+					if (allowedAttrs.indexOf(nv[0]) >= 0) {
+						node.setAttribute(nv[0],nv[1]);
+					}
+				}
+				node.removeAttribute('style');
+			}
+		}
+		
+		$.each(se_attrs, function(i, attr) {
+			node.setAttributeNS(se_ns, attr[0], attr[1]);
+		});
+		
+		// for some elements that have a xlink:href, ensure the URI refers to a local element
+		// (but not for links)
+		var href = svgedit.utilities.getHref(node);
+		if(href && 
+		   ["filter", "linearGradient", "pattern",
+		   "radialGradient", "textPath", "use"].indexOf(node.nodeName) >= 0)
+		{
+			// TODO: we simply check if the first character is a #, is this bullet-proof?
+			if (href[0] != "#") {
+				// remove the attribute (but keep the element)
+				svgedit.utilities.setHref(node, "");
+				node.removeAttributeNS(xlinkns, "href");
+			}
+		}
+		
+		// Safari crashes on a <use> without a xlink:href, so we just remove the node here
+		if (node.nodeName == "use" && !svgedit.utilities.getHref(node)) {
+			parent.removeChild(node);
+			return;
+		}
+		// if the element has attributes pointing to a non-local reference, 
+		// need to remove the attribute
+		$.each(["clip-path", "fill", "filter", "marker-end", "marker-mid", "marker-start", "mask", "stroke"],function(i,attr) {
+			var val = node.getAttribute(attr);
+			if (val) {
+				val = svgedit.utilities.getUrlFromAttr(val);
+				// simply check for first character being a '#'
+				if (val && val[0] !== "#") {
+					node.setAttribute(attr, "");
+					node.removeAttribute(attr);
+				}
+			}
+		});
+		
+		// recurse to children
+		i = node.childNodes.length;
+		while (i--) { svgedit.sanitize.sanitizeSvg(node.childNodes.item(i)); }
+	}
+	// else, remove this element
+	else {
+		// remove all children from this node and insert them before this node
+		// FIXME: in the case of animation elements this will hardly ever be correct
+		var children = [];
+		while (node.hasChildNodes()) {
+			children.push(parent.insertBefore(node.firstChild, node));
+		}
+
+		// remove this node from the document altogether
+		parent.removeChild(node);
+
+		// call sanitizeSvg on each of those children
+		var i = children.length;
+		while (i--) { svgedit.sanitize.sanitizeSvg(children[i]); }
+
+	}
+};
+
+})();
+
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/select.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/select.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/select.js	(revision 29468)
@@ -0,0 +1,608 @@
+/**
+ * Package: svedit.select
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ * Copyright(c) 2010 Jeff Schiller
+ */
+
+// Dependencies:
+// 1) jQuery
+// 2) browser.js
+// 3) math.js
+// 4) svgutils.js
+
+var svgedit = svgedit || {};
+
+(function() {
+
+if (!svgedit.select) {
+	svgedit.select = {};
+}
+
+var svgFactory_;
+var config_;
+var selectorManager_; // A Singleton
+
+// Class: svgedit.select.Selector
+// Private class for DOM element selection boxes
+// 
+// Parameters:
+// id - integer to internally indentify the selector
+// elem - DOM element associated with this selector
+svgedit.select.Selector = function(id, elem) {
+	// this is the selector's unique number
+	this.id = id;
+
+	// this holds a reference to the element for which this selector is being used
+	this.selectedElement = elem;
+
+	// this is a flag used internally to track whether the selector is being used or not
+	this.locked = true;
+
+	// this holds a reference to the <g> element that holds all visual elements of the selector
+	this.selectorGroup = svgFactory_.createSVGElement({
+		'element': 'g',
+		'attr': {'id': ('selectorGroup' + this.id)}
+	});
+
+	// this holds a reference to the path rect
+	this.selectorRect = this.selectorGroup.appendChild(
+		svgFactory_.createSVGElement({
+			'element': 'path',
+			'attr': {
+				'id': ('selectedBox' + this.id),
+				'fill': 'none',
+				'stroke': '#4F80FF',
+				'stroke-width': '1',
+				'shape-rendering': 'crispEdges',
+				'style': 'pointer-events:none'
+			}
+		})
+	);
+	
+	if (svgedit.browser.isTouch()) {
+	  this.selectorRect.setAttribute("stroke-opacity", 0.3);
+	}
+
+	// this holds a reference to the grip coordinates for this selector
+	this.gripCoords = {
+		'nw': null,
+		'n' : null,
+		'ne': null,
+		'e' : null,
+		'se': null,
+		's' : null,
+		'sw': null,
+		'w' : null
+	};
+
+	this.reset(this.selectedElement);
+};
+
+
+// Function: svgedit.select.Selector.reset 
+// Used to reset the id and element that the selector is attached to
+//
+// Parameters: 
+// e - DOM element associated with this selector
+svgedit.select.Selector.prototype.reset = function(e) {
+	this.locked = true;
+	this.selectedElement = e;
+	this.resize();
+	this.selectorGroup.setAttribute('display', 'inline');
+};
+
+// Function: svgedit.select.Selector.updateGripCursors
+// Updates cursors for corner grips on rotation so arrows point the right way
+//
+// Parameters:
+// angle - Float indicating current rotation angle in degrees
+svgedit.select.Selector.prototype.updateGripCursors = function(angle) {
+	var dir_arr = [];
+	var steps = Math.round(angle / 45);
+	if(steps < 0) steps += 8;
+	for (var dir in selectorManager_.selectorGrips) {
+		dir_arr.push(dir);
+	}
+	while(steps > 0) {
+		dir_arr.push(dir_arr.shift());
+		steps--;
+	}
+	var i = 0;
+	for (var dir in selectorManager_.selectorGrips) {
+		selectorManager_.selectorGrips[dir].setAttribute('style', ('cursor:' + dir_arr[i] + '-resize'));
+		i++;
+	};
+};
+
+// Function: svgedit.select.Selector.showGrips
+// Show the resize grips of this selector
+//
+// Parameters:
+// show - boolean indicating whether grips should be shown or not
+svgedit.select.Selector.prototype.showGrips = function(show) {
+	// TODO: use suspendRedraw() here
+	var bShow = show ? 'inline' : 'none';
+	selectorManager_.selectorGripsGroup.setAttribute('display', bShow);
+	var elem = this.selectedElement;
+	this.hasGrips = show;
+	if(elem && show) {
+		this.selectorGroup.appendChild(selectorManager_.selectorGripsGroup);
+		this.updateGripCursors(svgedit.utilities.getRotationAngle(elem));
+	}
+};
+
+// Function: svgedit.select.Selector.resize
+// Updates the selector to match the element's size
+svgedit.select.Selector.prototype.resize = function() {
+	var selectedBox = this.selectorRect,
+		mgr = selectorManager_,
+		selectedGrips = mgr.selectorGrips,
+		selected = this.selectedElement,
+		sw = selected.getAttribute('stroke-width'),
+		current_zoom = svgFactory_.currentZoom();
+	var offset = 1/current_zoom;
+	if (selected.getAttribute('stroke') !== 'none' && !isNaN(sw)) {
+		offset += (sw/2);
+	}
+
+	var tagName = selected.tagName;
+	if (tagName === 'text') {
+		offset += 2/current_zoom;
+	}
+
+	// loop and transform our bounding box until we reach our first rotation
+	var tlist = svgedit.transformlist.getTransformList(selected);
+	var m = svgedit.math.transformListToTransform(tlist).matrix;
+
+	// This should probably be handled somewhere else, but for now
+	// it keeps the selection box correctly positioned when zoomed
+	m.e *= current_zoom;
+	m.f *= current_zoom;
+
+	var bbox = svgedit.utilities.getBBox(selected);
+	if(tagName === 'g' && !$.data(selected, 'gsvg')) {
+		// The bbox for a group does not include stroke vals, so we
+		// get the bbox based on its children. 
+		var stroked_bbox = svgFactory_.getStrokedBBox(selected.childNodes);
+		if(stroked_bbox) {
+			bbox = stroked_bbox;
+		}
+	}
+
+	// apply the transforms
+	var l=bbox.x, t=bbox.y, w=bbox.width, h=bbox.height,
+		bbox = {x:l, y:t, width:w, height:h};
+
+	// we need to handle temporary transforms too
+	// if skewed, get its transformed box, then find its axis-aligned bbox
+	
+	//*
+	offset *= current_zoom;
+	
+	var nbox = svgedit.math.transformBox(l*current_zoom, t*current_zoom, w*current_zoom, h*current_zoom, m),
+		aabox = nbox.aabox,
+		nbax = aabox.x - offset,
+		nbay = aabox.y - offset,
+		nbaw = aabox.width + (offset * 2),
+		nbah = aabox.height + (offset * 2);
+		
+	// now if the shape is rotated, un-rotate it
+	var cx = nbax + nbaw/2,
+		cy = nbay + nbah/2;
+
+	var angle = svgedit.utilities.getRotationAngle(selected);
+	if (angle) {
+		var rot = svgFactory_.svgRoot().createSVGTransform();
+		rot.setRotate(-angle,cx,cy);
+		var rotm = rot.matrix;
+		nbox.tl = svgedit.math.transformPoint(nbox.tl.x,nbox.tl.y,rotm);
+		nbox.tr = svgedit.math.transformPoint(nbox.tr.x,nbox.tr.y,rotm);
+		nbox.bl = svgedit.math.transformPoint(nbox.bl.x,nbox.bl.y,rotm);
+		nbox.br = svgedit.math.transformPoint(nbox.br.x,nbox.br.y,rotm);
+
+		// calculate the axis-aligned bbox
+		var tl = nbox.tl;
+		var minx = tl.x,
+			miny = tl.y,
+			maxx = tl.x,
+			maxy = tl.y;
+
+		var Min = Math.min, Max = Math.max;
+
+		minx = Min(minx, Min(nbox.tr.x, Min(nbox.bl.x, nbox.br.x) ) ) - offset;
+		miny = Min(miny, Min(nbox.tr.y, Min(nbox.bl.y, nbox.br.y) ) ) - offset;
+		maxx = Max(maxx, Max(nbox.tr.x, Max(nbox.bl.x, nbox.br.x) ) ) + offset;
+		maxy = Max(maxy, Max(nbox.tr.y, Max(nbox.bl.y, nbox.br.y) ) ) + offset;
+
+		nbax = minx;
+		nbay = miny;
+		nbaw = (maxx-minx);
+		nbah = (maxy-miny);
+	}
+	var sr_handle = svgFactory_.svgRoot().suspendRedraw(100);
+
+	var dstr = 'M' + nbax + ',' + nbay
+				+ ' L' + (nbax+nbaw) + ',' + nbay
+				+ ' ' + (nbax+nbaw) + ',' + (nbay+nbah)
+				+ ' ' + nbax + ',' + (nbay+nbah) + 'z';
+	selectedBox.setAttribute('d', dstr);
+	
+	var xform = angle ? 'rotate(' + [angle,cx,cy].join(',') + ')' : '';
+	this.selectorGroup.setAttribute('transform', xform);
+
+		if(svgedit.browser.isTouch()) {
+		  nbax -= 15.75;
+  		nbay -= 15.75;
+		}
+		else {
+		  nbax -= 4;
+  		nbay -= 4;
+		}
+		this.gripCoords = {
+			'nw': [nbax, nbay].map(Math.round),
+			'ne': [nbax+nbaw, nbay].map(Math.round),
+			'sw': [nbax, nbay+nbah].map(Math.round),
+			'se': [nbax+nbaw, nbay+nbah].map(Math.round),
+			'n':  [nbax + (nbaw)/2, nbay].map(Math.round),
+			'w':	[nbax, nbay + (nbah)/2].map(Math.round),
+			'e':	[nbax + nbaw, nbay + (nbah)/2].map(Math.round),
+			's':	[nbax + (nbaw)/2, nbay + nbah].map(Math.round)
+		};
+
+		for(var dir in this.gripCoords) {
+			var coords = this.gripCoords[dir];
+			selectedGrips[dir].setAttribute('x', coords[0]);
+			selectedGrips[dir].setAttribute('y', coords[1]);
+		};
+		
+		this.rotateCoords = {
+			'nw': [nbax, nbay],
+			'ne': [nbax+nbaw+8, nbay],
+			'sw': [nbax, nbay+nbah+8],
+			'se': [nbax+nbaw+8, nbay+nbah+8]
+		};
+		
+    for(var dir in this.rotateCoords) {
+      var coords = this.rotateCoords[dir];
+		  mgr.rotateGrips[dir].setAttribute('cx', coords[0]); 
+		  mgr.rotateGrips[dir].setAttribute('cy', coords[1]);
+	  }
+
+	svgFactory_.svgRoot().unsuspendRedraw(sr_handle);
+};
+
+
+// Class: svgedit.select.SelectorManager
+svgedit.select.SelectorManager = function() {
+	// this will hold the <g> element that contains all selector rects/grips
+	this.selectorParentGroup = null;
+
+	// this is a special rect that is used for multi-select
+	this.rubberBandBox = null;
+
+	// this will hold objects of type svgedit.select.Selector (see above)
+	this.selectors = [];
+
+	// this holds a map of SVG elements to their Selector object
+	this.selectorMap = {};
+
+	// this holds a reference to the grip elements
+	this.selectorGrips = {
+		'nw': null,
+		'n' :  null,
+		'ne': null,
+		'e' :  null,
+		'se': null,
+		's' :  null,
+		'sw': null,
+		'w' :  null
+	};
+
+	this.selectorGripsGroup = null;
+	//this.rotateGripConnector = null;
+	this.rotateGrips = {
+	  'nw': null,
+		'ne': null,
+		'se': null,
+		'sw': null
+	};
+
+	this.initGroup();
+};
+
+// Function: svgedit.select.SelectorManager.initGroup
+// Resets the parent selector group element
+svgedit.select.SelectorManager.prototype.initGroup = function() {
+	// remove old selector parent group if it existed
+	if (this.selectorParentGroup && this.selectorParentGroup.parentNode) {
+		this.selectorParentGroup.parentNode.removeChild(this.selectorParentGroup);
+	}
+
+	// create parent selector group and add it to svgroot
+	this.selectorParentGroup = svgFactory_.createSVGElement({
+		'element': 'g',
+		'attr': {'id': 'selectorParentGroup'}
+	});
+	this.selectorGripsGroup = svgFactory_.createSVGElement({
+		'element': 'g',
+		'attr': {'display': 'none'}
+	});
+	this.selectorParentGroup.appendChild(this.selectorGripsGroup);
+	svgFactory_.svgRoot().appendChild(this.selectorParentGroup);
+
+	this.selectorMap = {};
+	this.selectors = [];
+	this.rubberBandBox = null;
+
+  for (var dir in this.rotateGrips) {
+	  var grip = svgFactory_.createSVGElement({
+  			'element': 'circle',
+  			'attr': {
+  				'id': 'selectorGrip_rotate_' + dir,
+  				'fill': '#000',
+  				'r': 8,
+  				'stroke': '#000',
+  				"fill-opacity": 0,
+  				"stroke-opacity": 0,
+  				'stroke-width': 0,
+  				'style': 'cursor:url(' + config_.imgPath + 'rotate.png) 12 12, auto;'
+  			}
+  	})
+  $.data(grip, 'dir', dir);
+	$.data(grip, 'type', 'rotate');
+	this.rotateGrips[dir] = this.selectorGripsGroup.appendChild(grip);
+	}
+
+	// add the corner grips
+	for (var dir in this.selectorGrips) {
+		var grip = svgFactory_.createSVGElement({
+			'element': 'rect',
+			'attr': {
+				'id': ('selectorGrip_resize_' + dir),
+				'width': 8,
+  			'height': 8,
+  			'fill': "#4F80FF",
+  			'stroke': "rgba(0,0,0,0)",
+  			'stroke-width': 1,
+				'style': ('cursor:' + dir + '-resize'),
+				'pointer-events': 'all'
+			}
+		});
+		if (svgedit.browser.isTouch()) {
+		  
+		  grip.setAttribute("width", 30.5)
+		  grip.setAttribute("height", 30.5)
+		  grip.setAttribute("fill-opacity", 0.3)
+		}
+		
+		$.data(grip, 'dir', dir);
+		$.data(grip, 'type', 'resize');
+		this.selectorGrips[dir] = this.selectorGripsGroup.appendChild(grip);
+	}
+
+	if($('#canvasBackground').length) return;
+
+	var dims = config_.dimensions;
+	var canvasbg = svgFactory_.createSVGElement({
+		'element': 'svg',
+		'attr': {
+			'id': 'canvasBackground',
+			'width': dims[0],
+			'height': dims[1],
+			'x': 0,
+			'y': 0,
+			'overflow': (svgedit.browser.isWebkit() ? 'none' : 'visible'), // Chrome 7 has a problem with this when zooming out
+			'style': 'pointer-events:none'
+		}
+	});
+
+  var defs = svgFactory_.createSVGElement({
+    'element': 'defs',
+    'attr': {
+      'id': 'placeholder_defs'
+    }
+  })
+  
+  var pattern = svgFactory_.createSVGElement({
+    'element': 'pattern',
+    'attr': {
+      'id': 'checkerPattern',
+      'patternUnits': 'userSpaceOnUse',
+      'x': 0,
+      'y': 0,
+      'width': 20,
+      'height': 20,
+      'viewBox': '0 0 10 10'
+    }
+  })
+  
+  var pattern_bg = svgFactory_.createSVGElement({
+    'element': 'rect',
+    'attr': {
+      'x': 0,
+      'y': 0,
+      'width': 10,
+      'height': 10,
+      'fill': "#fff"
+    }
+  })
+
+  var pattern_square1 = svgFactory_.createSVGElement({
+    'element': 'rect',
+    'attr': {
+      'x': 0,
+      'y': 0,
+      'width': 5,
+      'height': 5,
+      'fill': "#eee"
+    }
+  })
+  
+  var pattern_square2 = svgFactory_.createSVGElement({
+    'element': 'rect',
+    'attr': {
+      'x': 5,
+      'y': 5,
+      'width': 5,
+      'height': 5,
+      'fill': "#eee"
+    }
+  })
+
+	var rect = svgFactory_.createSVGElement({
+		'element': 'rect',
+		'attr': {
+			'width': '100%',
+			'height': '100%',
+			'x': 0,
+			'y': 0,
+			'stroke-width': 1,
+			'stroke': '#000',
+			'fill': 'url(#checkerPattern)',
+			'style': 'pointer-events:none'
+		}
+	});
+
+	// Both Firefox and WebKit are too slow with this filter region (especially at higher
+	// zoom levels) and Opera has at least one bug
+//	if (!svgedit.browser.isOpera()) rect.setAttribute('filter', 'url(#canvashadow)');
+	canvasbg.appendChild(defs);
+	defs.appendChild(pattern);
+	pattern.appendChild(pattern_bg);
+	pattern.appendChild(pattern_square1);
+	pattern.appendChild(pattern_square2);
+	canvasbg.appendChild(rect);
+
+	svgFactory_.svgRoot().insertBefore(canvasbg, svgFactory_.svgContent());
+};
+
+// Function: svgedit.select.SelectorManager.requestSelector
+// Returns the selector based on the given element
+//
+// Parameters:
+// elem - DOM element to get the selector for
+svgedit.select.SelectorManager.prototype.requestSelector = function(elem) {
+	if (elem == null) return null;
+	var N = this.selectors.length;
+	// If we've already acquired one for this element, return it.
+	if (typeof(this.selectorMap[elem.id]) == 'object') {
+		this.selectorMap[elem.id].locked = true;
+		return this.selectorMap[elem.id];
+	}
+	for (var i = 0; i < N; ++i) {
+		if (this.selectors[i] && !this.selectors[i].locked) {
+			this.selectors[i].locked = true;
+			this.selectors[i].reset(elem);
+			this.selectorMap[elem.id] = this.selectors[i];
+			return this.selectors[i];
+		}
+	}
+	// if we reached here, no available selectors were found, we create one
+	this.selectors[N] = new svgedit.select.Selector(N, elem);
+	this.selectorParentGroup.appendChild(this.selectors[N].selectorGroup);
+	this.selectorMap[elem.id] = this.selectors[N];
+	return this.selectors[N];
+};
+
+// Function: svgedit.select.SelectorManager.releaseSelector
+// Removes the selector of the given element (hides selection box) 
+//
+// Parameters:
+// elem - DOM element to remove the selector for
+svgedit.select.SelectorManager.prototype.releaseSelector = function(elem) {
+	if (elem == null) return;
+	var N = this.selectors.length,
+		sel = this.selectorMap[elem.id];
+	for (var i = 0; i < N; ++i) {
+		if (this.selectors[i] && this.selectors[i] == sel) {
+			if (sel.locked == false) {
+				// TODO(codedread): Ensure this exists in this module.
+				console.log('WARNING! selector was released but was already unlocked');
+			}
+			delete this.selectorMap[elem.id];
+			sel.locked = false;
+			sel.selectedElement = null;
+			sel.showGrips(false);
+
+			// remove from DOM and store reference in JS but only if it exists in the DOM
+			try {
+				sel.selectorGroup.setAttribute('display', 'none');
+			} catch(e) { }
+
+			break;
+		}
+	}
+};
+
+// Function: svgedit.select.SelectorManager.getRubberBandBox
+// Returns the rubberBandBox DOM element. This is the rectangle drawn by the user for selecting/zooming
+svgedit.select.SelectorManager.prototype.getRubberBandBox = function() {
+	if (!this.rubberBandBox) {
+		this.rubberBandBox = this.selectorParentGroup.appendChild(
+			svgFactory_.createSVGElement({
+				'element': 'rect',
+				'attr': {
+					'id': 'selectorRubberBand',
+					'fill': 'none',
+					'stroke': '#666',
+					'stroke-width': 1,
+					'stroke-dasharray': '3,2', 
+					'display': 'none',
+					'style': 'pointer-events:none'
+				}
+			})
+		);
+	}
+	return this.rubberBandBox;
+};
+
+
+/**
+ * Interface: svgedit.select.SVGFactory
+ * An object that creates SVG elements for the canvas.
+ *
+ * interface svgedit.select.SVGFactory {
+ *   SVGElement createSVGElement(jsonMap);
+ *   SVGSVGElement svgRoot();
+ *   SVGSVGElement svgContent();
+ *
+ *   Number currentZoom();
+ *   Object getStrokedBBox(Element[]); // TODO(codedread): Remove when getStrokedBBox() has been put into svgutils.js
+ * }
+ */
+
+/**
+ * Function: svgedit.select.init()
+ * Initializes this module.
+ *
+ * Parameters:
+ * config - an object containing configurable parameters (imgPath)
+ * svgFactory - an object implementing the SVGFactory interface (see above).
+ */
+svgedit.select.init = function(config, svgFactory) {
+	config_ = config;
+	svgFactory_ = svgFactory;
+	selectorManager_ = new svgedit.select.SelectorManager();
+	//for hovering elements
+	svgFactory_.createSVGElement({
+		'element': 'g',
+		'attr': {
+			'id': 'hover_group'
+		}
+	})
+};
+
+/**
+ * Function: svgedit.select.getSelectorManager
+ *
+ * Returns:
+ * The SelectorManager instance.
+ */
+svgedit.select.getSelectorManager = function() {
+	return selectorManager_;
+};
+
+})();
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/svgcanvas.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/svgcanvas.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/svgcanvas.js	(revision 29468)
@@ -0,0 +1,9047 @@
+/*
+ * svgcanvas.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ * Copyright(c) 2010 Pavol Rusnak
+ * Copyright(c) 2010 Jeff Schiller
+ *
+ */
+
+// Dependencies:
+// 1) jQuery
+// 2) browser.js
+// 3) svgtransformlist.js
+// 4) math.js
+// 5) units.js
+// 6) svgutils.js
+// 7) sanitize.js
+// 8) history.js
+// 9) select.js
+// 10) draw.js
+// 11) path.js
+
+/*jslint browser: true*/
+
+if(!window.console) {
+	window.console = {};
+	window.console.log = function(str) {};
+	window.console.dir = function(str) {};
+}
+
+if(window.opera) {
+	window.console.log = function(str) { opera.postError(str); };
+	window.console.dir = function(str) {};
+}
+
+(function() {
+
+	// This fixes $(...).attr() to work as expected with SVG elements.
+	// Does not currently use *AttributeNS() since we rarely need that.
+	
+	// See http://api.jquery.com/attr/ for basic documentation of .attr()
+	
+	// Additional functionality: 
+	// - When getting attributes, a string that's a number is return as type number.
+	// - If an array is supplied as first parameter, multiple values are returned
+	// as an object with values for each given attributes
+
+	var proxied = jQuery.fn.attr, svgns = "http://www.w3.org/2000/svg";
+	jQuery.fn.attr = function(key, value) {
+		var len = this.length;
+		if(!len) return proxied.apply(this, arguments);
+		for(var i=0; i<len; i++) {
+			var elem = this[i];
+			// set/get SVG attribute
+			if(elem.namespaceURI === svgns) {
+				// Setting attribute
+				if(value !== undefined) {
+					elem.setAttribute(key, value);
+				} else if($.isArray(key)) {
+					// Getting attributes from array
+					var j = key.length, obj = {};
+
+					while(j--) {
+						var aname = key[j];
+						var attr = elem.getAttribute(aname);
+						// This returns a number when appropriate
+						if(attr || attr === "0") {
+							attr = isNaN(attr)?attr:attr-0;
+						}
+						obj[aname] = attr;
+					}
+					return obj;
+				
+				} else if(typeof key === "object") {
+					// Setting attributes form object
+					for(var v in key) {
+						elem.setAttribute(v, key[v]);
+					}
+				// Getting attribute
+				} else {
+					var attr = elem.getAttribute(key);
+					if(attr || attr === "0") {
+						attr = isNaN(attr)?attr:attr-0;
+					}
+
+					return attr;
+				}
+			} else {
+				return proxied.apply(this, arguments);
+			}
+		}
+		return this;
+	};
+	
+}());
+
+// Class: SvgCanvas
+// The main SvgCanvas class that manages all SVG-related functions
+//
+// Parameters:
+// container - The container HTML element that should hold the SVG root element
+// config - An object that contains configuration data
+$.SvgCanvas = function(container, config)
+{
+// Namespace constants
+var svgns = "http://www.w3.org/2000/svg",
+	xlinkns = "http://www.w3.org/1999/xlink",
+	xmlns = "http://www.w3.org/XML/1998/namespace",
+	xmlnsns = "http://www.w3.org/2000/xmlns/", // see http://www.w3.org/TR/REC-xml-names/#xmlReserved
+	se_ns = "http://svg-edit.googlecode.com",
+	htmlns = "http://www.w3.org/1999/xhtml",
+	mathns = "http://www.w3.org/1998/Math/MathML";
+
+// Default configuration options
+var curConfig = {
+	show_outside_canvas: true,
+	selectNew: true,
+	dimensions: [640, 480]
+};
+
+// Update config with new one if given
+if(config) {
+	$.extend(curConfig, config);
+}
+
+// Array with width/height of canvas
+var dimensions = curConfig.dimensions;
+
+var canvas = this;
+
+// "document" element associated with the container (same as window.document using default svg-editor.js)
+// NOTE: This is not actually a SVG document, but a HTML document.
+var svgdoc = container.ownerDocument;
+
+// This is a container for the document being edited, not the document itself.
+var svgroot = svgdoc.importNode(svgedit.utilities.text2xml(
+		'<svg id="svgroot" xmlns="' + svgns + '" xlinkns="' + xlinkns + '" ' +
+			'width="' + dimensions[0] + '" height="' + dimensions[1] + '" x="' + dimensions[0] + '" y="' + dimensions[1] + '" overflow="visible">' +
+			'<defs>' +
+				'<filter id="canvashadow" filterUnits="objectBoundingBox">' +
+					'<feGaussianBlur in="SourceAlpha" stdDeviation="4" result="blur"/>'+
+					'<feOffset in="blur" dx="5" dy="5" result="offsetBlur"/>'+
+					'<feMerge>'+
+						'<feMergeNode in="offsetBlur"/>'+
+						'<feMergeNode in="SourceGraphic"/>'+
+					'</feMerge>'+
+				'</filter>'+
+			'</defs>'+
+		'</svg>').documentElement, true);
+container.appendChild(svgroot);
+
+// The actual element that represents the final output SVG element
+var svgcontent = svgdoc.createElementNS(svgns, "svg");
+
+// This function resets the svgcontent element while keeping it in the DOM.
+var clearSvgContentElement = canvas.clearSvgContentElement = function() {
+	while (svgcontent.firstChild) { svgcontent.removeChild(svgcontent.firstChild); }
+
+	// TODO: Clear out all other attributes first?
+	$(svgcontent).attr({
+		id: 'svgcontent',
+		width: dimensions[0],
+		height: dimensions[1],
+		x: dimensions[0],
+		y: dimensions[1],
+		overflow: curConfig.show_outside_canvas ? 'visible' : 'hidden',
+		xmlns: svgns,
+		"xmlns:se": se_ns,
+		"xmlns:xlink": xlinkns
+	}).appendTo(svgroot);
+
+	// TODO: make this string optional and set by the client
+	var comment = svgdoc.createComment(" Created with Method Draw - http://github.com/duopixel/Method-Draw/ ");
+	svgcontent.appendChild(comment);
+};
+clearSvgContentElement();
+
+// Prefix string for element IDs
+var idprefix = "svg_";
+
+// Function: setIdPrefix
+// Changes the ID prefix to the given value
+//
+// Parameters: 
+// p - String with the new prefix 
+canvas.setIdPrefix = function(p) {
+	idprefix = p;
+};
+
+// Current svgedit.draw.Drawing object
+// @type {svgedit.draw.Drawing}
+canvas.current_drawing_ = new svgedit.draw.Drawing(svgcontent, idprefix);
+
+// Function: getCurrentDrawing
+// Returns the current Drawing.
+// @return {svgedit.draw.Drawing}
+var getCurrentDrawing = canvas.getCurrentDrawing = function() {
+	return canvas.current_drawing_;
+};
+
+// Float displaying the current zoom level (1 = 100%, .5 = 50%, etc)
+var current_zoom = 1;
+
+// pointer to current group (for in-group editing)
+var current_group = null;
+
+// Object containing data for the currently selected styles
+var all_properties = {
+	shape: {
+		fill: (curConfig.initFill.color == 'none' ? '' : '#') + curConfig.initFill.color,
+		fill_paint: null,
+		fill_opacity: curConfig.initFill.opacity,
+		stroke: "#" + curConfig.initStroke.color,
+		stroke_paint: null,
+		stroke_opacity: curConfig.initStroke.opacity,
+		stroke_width: curConfig.initStroke.width,
+		stroke_dasharray: 'none',
+		opacity: curConfig.initOpacity
+	}
+};
+
+all_properties.text = $.extend(true, {}, all_properties.shape);
+$.extend(all_properties.text, {
+	fill: "#000000",
+	stroke_width: 0,
+	font_size: 24,
+	font_family: 'Helvetica, Arial, sans-serif'
+});
+
+// Current shape style properties
+var cur_shape = all_properties.shape;
+
+// Array with all the currently selected elements
+// default size of 1 until it needs to grow bigger
+var selectedElements = new Array(1);
+
+// Function: addSvgElementFromJson
+// Create a new SVG element based on the given object keys/values and add it to the current layer
+// The element will be ran through cleanupElement before being returned 
+//
+// Parameters:
+// data - Object with the following keys/values:
+// * element - tag name of the SVG element to create
+// * attr - Object with attributes key-values to assign to the new element
+// * curStyles - Boolean indicating that current style attributes should be applied first
+//
+// Returns: The new element
+var addSvgElementFromJson = this.addSvgElementFromJson = function(data) {
+	var shape = svgedit.utilities.getElem(data.attr.id);
+	// if shape is a path but we need to create a rect/ellipse, then remove the path
+	var current_layer = getCurrentDrawing().getCurrentLayer();
+	if (shape && data.element != shape.tagName) {
+		current_layer.removeChild(shape);
+		shape = null;
+	}
+	if (!shape) {
+		shape = svgdoc.createElementNS(svgns, data.element);
+		if (current_layer) {
+			(current_group || current_layer).appendChild(shape);
+		}
+	}
+	if(data.curStyles) {
+		svgedit.utilities.assignAttributes(shape, {
+			"fill": cur_shape.fill,
+			"stroke": cur_shape.stroke,
+			"stroke-width": cur_shape.stroke_width,
+			"stroke-dasharray": cur_shape.stroke_dasharray,
+			"stroke-opacity": cur_shape.stroke_opacity,
+			"fill-opacity": cur_shape.fill_opacity,
+			"opacity": cur_shape.opacity / 2,
+			"style": "pointer-events:inherit"
+		}, 100);
+	}
+	svgedit.utilities.assignAttributes(shape, data.attr, 100);
+	svgedit.utilities.cleanupElement(shape);
+	return shape;
+};
+
+
+// import svgtransformlist.js
+var getTransformList = canvas.getTransformList = svgedit.transformlist.getTransformList;
+
+// import from math.js.
+var transformPoint = svgedit.math.transformPoint;
+var matrixMultiply = canvas.matrixMultiply = svgedit.math.matrixMultiply;
+var hasMatrixTransform = canvas.hasMatrixTransform = svgedit.math.hasMatrixTransform;
+var transformListToTransform = canvas.transformListToTransform = svgedit.math.transformListToTransform;
+var snapToAngle = svgedit.math.snapToAngle;
+var getMatrix = svgedit.math.getMatrix;
+
+// initialize from units.js
+// send in an object implementing the ElementContainer interface (see units.js)
+svgedit.units.init({
+	getBaseUnit: function() { return curConfig.baseUnit; },
+	getElement: svgedit.utilities.getElem,
+	getHeight: function() { return svgcontent.getAttribute("height")/current_zoom; },
+	getWidth: function() { return svgcontent.getAttribute("width")/current_zoom; },
+	getRoundDigits: function() { return save_options.round_digits; }
+});
+// import from units.js
+var convertToNum = canvas.convertToNum = svgedit.units.convertToNum;
+
+// import from svgutils.js
+svgedit.utilities.init({
+	getDOMDocument: function() { return svgdoc; },
+	getDOMContainer: function() { return container; },
+	getSVGRoot: function() { return svgroot; },
+	// TODO: replace this mostly with a way to get the current drawing.
+	getSelectedElements: function() { return selectedElements; },
+	getSVGContent: function() { return svgcontent; }
+});
+var getUrlFromAttr = canvas.getUrlFromAttr = svgedit.utilities.getUrlFromAttr;
+var getHref = canvas.getHref = svgedit.utilities.getHref;
+var setHref = canvas.setHref = svgedit.utilities.setHref;
+var getPathBBox = svgedit.utilities.getPathBBox;
+var getBBox = canvas.getBBox = svgedit.utilities.getBBox;
+var getRotationAngle = canvas.getRotationAngle = svgedit.utilities.getRotationAngle;
+var getElem = canvas.getElem = svgedit.utilities.getElem;
+var assignAttributes = canvas.assignAttributes = svgedit.utilities.assignAttributes;
+var cleanupElement = this.cleanupElement = svgedit.utilities.cleanupElement;
+
+// import from sanitize.js
+var nsMap = svgedit.sanitize.getNSMap();
+var sanitizeSvg = canvas.sanitizeSvg = svgedit.sanitize.sanitizeSvg;
+
+// import from history.js
+var MoveElementCommand = svgedit.history.MoveElementCommand;
+var InsertElementCommand = svgedit.history.InsertElementCommand;
+var RemoveElementCommand = svgedit.history.RemoveElementCommand;
+var ChangeElementCommand = svgedit.history.ChangeElementCommand;
+var BatchCommand = svgedit.history.BatchCommand;
+// Implement the svgedit.history.HistoryEventHandler interface.
+canvas.undoMgr = new svgedit.history.UndoManager({
+	handleHistoryEvent: function(eventType, cmd) {
+		var EventTypes = svgedit.history.HistoryEventTypes;
+		// TODO: handle setBlurOffsets.
+		if (eventType == EventTypes.BEFORE_UNAPPLY || eventType == EventTypes.BEFORE_APPLY) {
+			canvas.clearSelection();
+		} else if (eventType == EventTypes.AFTER_APPLY || eventType == EventTypes.AFTER_UNAPPLY) {
+			var elems = cmd.elements();
+			canvas.pathActions.clear();
+			call("changed", elems);
+			
+			var cmdType = cmd.type();
+			var isApply = (eventType == EventTypes.AFTER_APPLY);
+			if (cmdType == MoveElementCommand.type()) {
+				var parent = isApply ? cmd.newParent : cmd.oldParent;
+				if (parent == svgcontent) {
+					canvas.identifyLayers();
+				}
+			} else if (cmdType == InsertElementCommand.type() ||
+					cmdType == RemoveElementCommand.type()) {
+				if (cmd.parent == svgcontent) {
+					canvas.identifyLayers();
+				}
+				if (cmdType == InsertElementCommand.type()) {
+					if (isApply) restoreRefElems(cmd.elem);
+				} else {
+					if (!isApply) restoreRefElems(cmd.elem);
+				}
+				
+				if(cmd.elem.tagName === 'use') {
+					setUseData(cmd.elem);
+				}
+			} else if (cmdType == ChangeElementCommand.type()) {
+				// if we are changing layer names, re-identify all layers
+				if (cmd.elem.tagName == "title" && cmd.elem.parentNode.parentNode == svgcontent) {
+					canvas.identifyLayers();
+				}
+				var values = isApply ? cmd.newValues : cmd.oldValues;
+				// If stdDeviation was changed, update the blur.
+				if (values["stdDeviation"]) {
+					canvas.setBlurOffsets(cmd.elem.parentNode, values["stdDeviation"]);
+				}
+				
+				// Remove & Re-add hack for Webkit (issue 775) 
+				//if(cmd.elem.tagName === 'use' && svgedit.browser.isWebkit()) {
+				//	var elem = cmd.elem;
+				//	if(!elem.getAttribute('x') && !elem.getAttribute('y')) {
+				//		var parent = elem.parentNode;
+				//		var sib = elem.nextSibling;
+				//		parent.removeChild(elem);
+				//		parent.insertBefore(elem, sib);
+				//	}
+				//}
+			}
+		}
+	}
+});
+var addCommandToHistory = function(cmd) {
+	canvas.undoMgr.addCommandToHistory(cmd);
+};
+
+// import from select.js
+svgedit.select.init(curConfig, {
+	createSVGElement: function(jsonMap) { return canvas.addSvgElementFromJson(jsonMap); },
+	svgRoot: function() { return svgroot; },
+	svgContent: function() { return svgcontent; },
+	currentZoom: function() { return current_zoom; },
+	// TODO(codedread): Remove when getStrokedBBox() has been put into svgutils.js.
+	getStrokedBBox: function(elems) { return canvas.getStrokedBBox([elems]); }
+});
+// this object manages selectors for us
+var selectorManager = this.selectorManager = svgedit.select.getSelectorManager();
+// this object manages selectors for us
+
+// Import from path.js
+svgedit.path.init({
+	getCurrentZoom: function() { return current_zoom; },
+	getSVGRoot: function() { return svgroot; }
+});
+
+// Function: snapToGrid
+// round value to for snapping
+// NOTE: This function did not move to svgutils.js since it depends on curConfig.
+svgedit.utilities.snapToGrid = function(value){
+	var stepSize = curConfig.snappingStep;
+	var unit = curConfig.baseUnit;
+	if(unit !== "px") {
+	stepSize *= svgedit.units.getTypeMap()[unit];
+	}
+	value = Math.round(value/stepSize)*stepSize;
+	return value;
+};
+var snapToGrid = svgedit.utilities.snapToGrid;
+
+// Interface strings, usually for title elements
+var uiStrings = {
+	"exportNoBlur": "Blurred elements will appear as un-blurred",
+	"exportNoforeignObject": "foreignObject elements will not appear",
+	"exportNoDashArray": "Strokes will appear filled",
+	"exportNoText": "Text may not appear as expected"
+};
+
+var visElems = 'a,circle,ellipse,foreignObject,g,image,line,path,polygon,polyline,rect,svg,text,tspan,use';
+var ref_attrs = ["clip-path", "fill", "filter", "marker-end", "marker-mid", "marker-start", "mask", "stroke"];
+
+var elData = $.data;
+
+// Animation element to change the opacity of any newly created element
+var opac_ani = false; //document.createElementNS(svgns, 'animate');
+//$(opac_ani).attr({
+//	attributeName: 'opacity',
+//	begin: 'indefinite',
+//	dur: 0,
+//	fill: 'freeze'
+//}).appendTo(svgroot);
+
+var restoreRefElems = function(elem) {
+	// Look for missing reference elements, restore any found
+	var attrs = $(elem).attr(ref_attrs);
+	for(var o in attrs) {
+		var val = attrs[o];
+		if (val && val.indexOf('url(') === 0) {
+			var id = getUrlFromAttr(val).substr(1);
+			var ref = getElem(id);
+			if(!ref) {
+				findDefs().appendChild(removedElements[id]);
+				delete removedElements[id];
+			}
+		}
+	}
+	
+	var childs = elem.getElementsByTagName('*');
+	
+	if(childs.length) {
+		for(var i = 0, l = childs.length; i < l; i++) {
+			restoreRefElems(childs[i]);
+		}
+	}
+};
+
+(function() {
+	// TODO For Issue 208: this is a start on a thumbnail
+	//	var svgthumb = svgdoc.createElementNS(svgns, "use");
+	//	svgthumb.setAttribute('width', '100');
+	//	svgthumb.setAttribute('height', '100');
+	//	svgedit.utilities.setHref(svgthumb, '#svgcontent');
+	//	svgroot.appendChild(svgthumb);
+
+})();
+
+// Object to contain image data for raster images that were found encodable
+var encodableImages = {},
+	
+	// String with image URL of last loadable image
+	last_good_img_url = curConfig.imgPath + 'logo.png',
+	
+	// Array with current disabled elements (for in-group editing)
+	disabled_elems = [],
+	
+	// Object with save options
+	save_options = {round_digits: 5},
+	
+	// Boolean indicating whether or not a draw action has been started
+	started = false,
+	
+	// String with an element's initial transform attribute value
+	start_transform = null,
+	
+	// String indicating the current editor mode
+	current_mode = "select",
+	
+	// String with the current direction in which an element is being resized
+	current_resize_mode = "none",
+	
+	// Object with IDs for imported files, to see if one was already added
+	import_ids = {};
+
+// Current text style properties
+var cur_text = all_properties.text,
+	
+	// Current general properties
+	cur_properties = cur_shape,
+	
+	// Array with selected elements' Bounding box object
+//	selectedBBoxes = new Array(1),
+	
+	// The DOM element that was just selected
+	justSelected = null,
+	
+	// DOM element for selection rectangle drawn by the user
+	rubberBox = null,
+	
+	// Array of current BBoxes (still needed?)
+	curBBoxes = [],
+	
+	// Object to contain all included extensions
+	extensions = {},
+	
+	// Canvas point for the most recent right click
+	lastClickPoint = null,
+	
+	// Map of deleted reference elements
+	removedElements = {}
+
+// Clipboard for cut, copy&pasted elements
+canvas.clipBoard = [];
+
+// Should this return an array by default, so extension results aren't overwritten?
+var runExtensions = this.runExtensions = function(action, vars, returnArray) {
+	var result = false;
+	if(returnArray) result = [];
+	$.each(extensions, function(name, opts) {
+		if(action in opts) {
+			if(returnArray) {
+				result.push(opts[action](vars))
+			} else {
+				result = opts[action](vars);
+			}
+		}
+	});
+	return result;
+}
+
+
+// Function: addExtension
+// Add an extension to the editor
+// 
+// Parameters:
+// name - String with the ID of the extension
+// ext_func - Function supplied by the extension with its data
+this.addExtension = function(name, ext_func) {
+	if(!(name in extensions)) {
+		// Provide private vars/funcs here. Is there a better way to do this?
+		
+		if($.isFunction(ext_func)) {
+		var ext = ext_func($.extend(canvas.getPrivateMethods(), {
+			svgroot: svgroot,
+			svgcontent: svgcontent,
+			nonce: getCurrentDrawing().getNonce(),
+			selectorManager: selectorManager
+		}));
+		} else {
+			var ext = ext_func;
+		}
+		extensions[name] = ext;
+		call("extension_added", ext);
+	} else {
+		console.log('Cannot add extension "' + name + '", an extension by that name already exists"');
+	}
+};
+	
+// This method rounds the incoming value to the nearest value based on the current_zoom
+var round = this.round = function(val) {
+	return parseInt(val*current_zoom)/current_zoom;
+};
+
+// This method sends back an array or a NodeList full of elements that
+// intersect the multi-select rubber-band-box on the current_layer only.
+// 
+// Since the only browser that supports the SVG DOM getIntersectionList is Opera, 
+// we need to provide an implementation here.  We brute-force it for now.
+// 
+// Reference:
+// Firefox does not implement getIntersectionList(), see https://bugzilla.mozilla.org/show_bug.cgi?id=501421
+// Webkit does not implement getIntersectionList(), see https://bugs.webkit.org/show_bug.cgi?id=11274
+var getIntersectionList = this.getIntersectionList = function(rect) {
+	if (rubberBox == null) { return null; }
+
+	var parent = current_group || getCurrentDrawing().getCurrentLayer();
+	
+	if(!curBBoxes.length) {
+		// Cache all bboxes
+		curBBoxes = getVisibleElementsAndBBoxes(parent);
+	}
+	
+	var resultList = null;
+	try {
+		resultList = parent.getIntersectionList(rect, null);
+	} catch(e) { }
+
+	if (resultList == null || typeof(resultList.item) != "function") {
+		resultList = [];
+		
+		if(!rect) {
+			var rubberBBox = rubberBox.getBBox();
+			var bb = {};
+			
+			for(var o in rubberBBox) {
+				bb[o] = rubberBBox[o] / current_zoom;
+			}
+			rubberBBox = bb;
+			
+		} else {
+			var rubberBBox = rect;
+		}
+		var i = curBBoxes.length;
+		while (i--) {
+			if(!rubberBBox.width || !rubberBBox.width) continue;
+			if (svgedit.math.rectsIntersect(rubberBBox, curBBoxes[i].bbox))  {
+				resultList.push(curBBoxes[i].elem);
+			}
+		}
+	}
+	// addToSelection expects an array, but it's ok to pass a NodeList 
+	// because using square-bracket notation is allowed: 
+	// http://www.w3.org/TR/DOM-Level-2-Core/ecma-script-binding.html
+	return resultList;
+};
+
+// TODO(codedread): Migrate this into svgutils.js
+// Function: getStrokedBBox
+// Get the bounding box for one or more stroked and/or transformed elements
+// 
+// Parameters:
+// elems - Array with DOM elements to check
+// 
+// Returns:
+// A single bounding box object
+getStrokedBBox = this.getStrokedBBox = function(elems) {
+	if(!elems) elems = getVisibleElements();
+	if(!elems.length) return false;
+	
+	// Make sure the expected BBox is returned if the element is a group
+	var getCheckedBBox = function(elem) {
+	
+		try {
+			// TODO: Fix issue with rotated groups. Currently they work
+			// fine in FF, but not in other browsers (same problem mentioned
+			// in Issue 339 comment #2).
+			
+			var bb = svgedit.utilities.getBBox(elem);
+			
+			var angle = svgedit.utilities.getRotationAngle(elem);
+			if ((angle && angle % 90) ||
+			    svgedit.math.hasMatrixTransform(svgedit.transformlist.getTransformList(elem))) {
+				// Accurate way to get BBox of rotated element in Firefox:
+				// Put element in group and get its BBox
+				
+				var good_bb = false;
+				
+				// Get the BBox from the raw path for these elements
+				var elemNames = ['ellipse','path','line','polyline','polygon'];
+				if(elemNames.indexOf(elem.tagName) >= 0) {
+					bb = good_bb = canvas.convertToPath(elem, true);
+				} else if(elem.tagName == 'rect') {
+					// Look for radius
+					var rx = elem.getAttribute('rx');
+					var ry = elem.getAttribute('ry');
+					if(rx || ry) {
+						bb = good_bb = canvas.convertToPath(elem, true);
+					}
+				}
+				
+				if(!good_bb) {
+					// Must use clone else FF freaks out
+					var clone = elem.cloneNode(true); 
+					var g = document.createElementNS(svgns, "g");
+					var parent = elem.parentNode;
+					parent.appendChild(g);
+					g.appendChild(clone);
+					bb = svgedit.utilities.bboxToObj(g.getBBox());
+					parent.removeChild(g);
+				}
+				
+
+				// Old method: Works by giving the rotated BBox,
+				// this is (unfortunately) what Opera and Safari do
+				// natively when getting the BBox of the parent group
+// 						var angle = angle * Math.PI / 180.0;
+// 						var rminx = Number.MAX_VALUE, rminy = Number.MAX_VALUE, 
+// 							rmaxx = Number.MIN_VALUE, rmaxy = Number.MIN_VALUE;
+// 						var cx = round(bb.x + bb.width/2),
+// 							cy = round(bb.y + bb.height/2);
+// 						var pts = [ [bb.x - cx, bb.y - cy], 
+// 									[bb.x + bb.width - cx, bb.y - cy],
+// 									[bb.x + bb.width - cx, bb.y + bb.height - cy],
+// 									[bb.x - cx, bb.y + bb.height - cy] ];
+// 						var j = 4;
+// 						while (j--) {
+// 							var x = pts[j][0],
+// 								y = pts[j][1],
+// 								r = Math.sqrt( x*x + y*y );
+// 							var theta = Math.atan2(y,x) + angle;
+// 							x = round(r * Math.cos(theta) + cx);
+// 							y = round(r * Math.sin(theta) + cy);
+// 		
+// 							// now set the bbox for the shape after it's been rotated
+// 							if (x < rminx) rminx = x;
+// 							if (y < rminy) rminy = y;
+// 							if (x > rmaxx) rmaxx = x;
+// 							if (y > rmaxy) rmaxy = y;
+// 						}
+// 						
+// 						bb.x = rminx;
+// 						bb.y = rminy;
+// 						bb.width = rmaxx - rminx;
+// 						bb.height = rmaxy - rminy;
+			}
+			return bb;
+		} catch(e) { 
+			console.log(elem, e);
+		} 
+	};
+
+	var full_bb;
+	$.each(elems, function() {
+		if(full_bb) return;
+		if(!this.parentNode) return;
+		full_bb = getCheckedBBox(this);
+	});
+	
+	// This shouldn't ever happen...
+	if(full_bb == null) return null;
+	
+	// full_bb doesn't include the stoke, so this does no good!
+// 		if(elems.length == 1) return full_bb;
+	
+	var max_x = full_bb.x + full_bb.width;
+	var max_y = full_bb.y + full_bb.height;
+	var min_x = full_bb.x;
+	var min_y = full_bb.y;
+	
+	// FIXME: same re-creation problem with this function as getCheckedBBox() above
+	var getOffset = function(elem) {
+		var sw = elem.getAttribute("stroke-width");
+		var offset = 0;
+		if (elem.getAttribute("stroke") != "none" && !isNaN(sw)) {
+			offset += sw/2;
+		}
+		return offset;
+	}
+	var bboxes = [];
+	$.each(elems, function(i, elem) {
+		var cur_bb = getCheckedBBox(elem);
+		if(cur_bb) {
+			var offset = getOffset(elem);
+			min_x = Math.min(min_x, cur_bb.x - offset);
+			min_y = Math.min(min_y, cur_bb.y - offset);
+			bboxes.push(cur_bb);
+		}
+	});
+	
+	full_bb.x = min_x;
+	full_bb.y = min_y;
+	
+	$.each(elems, function(i, elem) {
+		var cur_bb = bboxes[i];
+		// ensure that elem is really an element node
+		if (cur_bb && elem.nodeType == 1) {
+			var offset = getOffset(elem);
+			max_x = Math.max(max_x, cur_bb.x + cur_bb.width + offset);
+			max_y = Math.max(max_y, cur_bb.y + cur_bb.height + offset);
+		}
+	});
+	
+	full_bb.width = max_x - min_x;
+	full_bb.height = max_y - min_y;
+	return full_bb;
+}
+
+// Function: getVisibleElements
+// Get all elements that have a BBox (excludes <defs>, <title>, etc).
+// Note that 0-opacity, off-screen etc elements are still considered "visible"
+// for this function
+//
+// Parameters:
+// parent - The parent DOM element to search within
+//
+// Returns:
+// An array with all "visible" elements.
+var getVisibleElements = this.getVisibleElements = function(parent) {
+	if(!parent) parent = $(svgcontent).children(); // Prevent layers from being included
+	if (parent.find("#canvas_background").length) parent.splice(0, 1) // Prevent background from being included
+	var contentElems = [];
+	$(parent).children().each(function(i, elem) {
+		try {
+			if (elem.getBBox()) {
+				contentElems.push(elem);
+			}
+		} catch(e) {}
+	});
+	return contentElems.reverse();
+};
+
+// Function: getVisibleElementsAndBBoxes
+// Get all elements that have a BBox (excludes <defs>, <title>, etc).
+// Note that 0-opacity, off-screen etc elements are still considered "visible"
+// for this function
+//
+// Parameters:
+// parent - The parent DOM element to search within
+//
+// Returns:
+// An array with objects that include:
+// * elem - The element
+// * bbox - The element's BBox as retrieved from getStrokedBBox
+var getVisibleElementsAndBBoxes = this.getVisibleElementsAndBBoxes = function(parent) {
+	if(!parent) parent = $(svgcontent).children(); // Prevent layers from being included
+	
+	var contentElems = [];
+	$(parent).children().each(function(i, elem) {
+		try {
+			if (elem.getBBox()) {
+				contentElems.push({'elem':elem, 'bbox':getStrokedBBox([elem])});
+			}
+		} catch(e) {}
+	});
+	return contentElems.reverse();
+};
+
+// Function: groupSvgElem
+// Wrap an SVG element into a group element, mark the group as 'gsvg'
+//
+// Parameters:
+// elem - SVG element to wrap
+var groupSvgElem = this.groupSvgElem = function(elem) {
+	var g = document.createElementNS(svgns, "g");
+	elem.parentNode.replaceChild(g, elem);
+	$(g).append(elem).data('gsvg', elem)[0].id = getNextId();
+}
+
+// Function: copyElem
+// Create a clone of an element, updating its ID and its children's IDs when needed
+//
+// Parameters:
+// el - DOM element to clone
+//
+// Returns: The cloned element
+var copyElem = function(el) {
+  var new_el = document.createElementNS(el.namespaceURI, el.nodeName);
+  // set the copied element's new id
+	new_el.removeAttribute("id");
+	// manually create a copy of the element
+	$.each(el.attributes, function(i, attr) {
+		if (attr.localName != '-moz-math-font-style') {
+			new_el.setAttributeNS(attr.namespaceURI, attr.nodeName, attr.nodeValue);
+		}
+	});
+	
+	// Opera's "d" value needs to be reset for Opera/Win/non-EN
+	// Also needed for webkit (else does not keep curved segments on clone)
+	if(svgedit.browser.isWebkit() && el.nodeName == 'path') {
+		var fixed_d = pathActions.convertPath(el);
+		new_el.setAttribute('d', fixed_d);
+	}
+
+	// now create copies of all children
+	$.each(el.childNodes, function(i, child) {
+		switch(child.nodeType) {
+			case 1: // element node
+				new_el.appendChild(copyElem(child));
+				break;
+			case 3: // text node
+				new_el.textContent = child.nodeValue;
+				break;
+			default:
+				break;
+		}
+	});
+	
+	if($(el).data('gsvg')) {
+		$(new_el).data('gsvg', new_el.firstChild);
+	} else if($(el).data('symbol')) {
+		var ref = $(el).data('symbol');
+		$(new_el).data('ref', ref).data('symbol', ref);
+	}
+	else if(new_el.tagName == 'image') {
+		preventClickDefault(new_el);
+	}
+	new_el.id = getNextId();
+	return new_el;
+};
+
+// Set scope for these functions
+var getId, getNextId, call;
+
+(function(c) {
+
+	// Object to contain editor event names and callback functions
+	var events = {};
+
+	getId = c.getId = function() { return getCurrentDrawing().getId(); };
+	getNextId = c.getNextId = function() { return getCurrentDrawing().getNextId(); };
+	
+	// Function: call
+	// Run the callback function associated with the given event
+	//
+	// Parameters:
+	// event - String with the event name
+	// arg - Argument to pass through to the callback function
+	call = c.call = function(event, arg) {
+		if (events[event]) {
+			return events[event](this, arg);
+		}
+	};
+	
+	// Function: bind
+	// Attaches a callback function to an event
+	//
+	// Parameters:
+	// event - String indicating the name of the event
+	// f - The callback function to bind to the event
+	// 
+	// Return:
+	// The previous event
+	c.bind = function(event, f) {
+	  var old = events[event];
+		events[event] = f;
+		return old;
+	};
+	
+}(canvas));
+
+// Function: canvas.prepareSvg
+// Runs the SVG Document through the sanitizer and then updates its paths.
+//
+// Parameters:
+// newDoc - The SVG DOM document
+this.prepareSvg = function(newDoc) {
+	this.sanitizeSvg(newDoc.documentElement);
+
+	// convert paths into absolute commands
+	var paths = newDoc.getElementsByTagNameNS(svgns, "path");
+	for (var i = 0, len = paths.length; i < len; ++i) {
+		var path = paths[i];
+		path.setAttribute('d', pathActions.convertPath(path));
+		pathActions.fixEnd(path);
+	}
+};
+
+// Function getRefElem
+// Get the reference element associated with the given attribute value
+//
+// Parameters:
+// attrVal - The attribute value as a string
+var getRefElem = this.getRefElem = function(attrVal) {
+	return getElem(getUrlFromAttr(attrVal).substr(1));
+}
+
+// Function: ffClone
+// Hack for Firefox bugs where text element features aren't updated or get 
+// messed up. See issue 136 and issue 137.
+// This function clones the element and re-selects it 
+// TODO: Test for this bug on load and add it to "support" object instead of 
+// browser sniffing
+//
+// Parameters: 
+// elem - The (text) DOM element to clone
+var ffClone = function(elem) {
+	if(!svgedit.browser.isGecko()) return elem;
+	var clone = elem.cloneNode(true)
+	elem.parentNode.insertBefore(clone, elem);
+	elem.parentNode.removeChild(elem);
+	selectorManager.releaseSelector(elem);
+	selectedElements[0] = clone;
+	selectorManager.requestSelector(clone).showGrips(true);
+	return clone;
+}
+
+
+// this.each is deprecated, if any extension used this it can be recreated by doing this:
+// $(canvas.getRootElem()).children().each(...)
+
+// this.each = function(cb) {
+// 	$(svgroot).children().each(cb);
+// };
+
+
+// Function: setRotationAngle
+// Removes any old rotations if present, prepends a new rotation at the
+// transformed center
+//
+// Parameters:
+// val - The new rotation angle in degrees
+// preventUndo - Boolean indicating whether the action should be undoable or not
+this.setRotationAngle = function(val, preventUndo) {
+	// ensure val is the proper type
+	val = parseFloat(val);
+	var elem = selectedElements[0];
+	if (!elem) return;
+	var oldTransform = elem.getAttribute("transform");
+	var bbox = svgedit.utilities.getBBox(elem);
+	var cx = bbox.x+bbox.width/2, cy = bbox.y+bbox.height/2;
+	var tlist = getTransformList(elem);
+	
+	// only remove the real rotational transform if present (i.e. at index=0)
+	if (tlist.numberOfItems > 0) {
+		var xform = tlist.getItem(0);
+		if (xform.type == 4) {
+			tlist.removeItem(0);
+		}
+	}
+	// find R_nc and insert it
+	if (val != 0) {
+		var center = transformPoint(cx,cy,transformListToTransform(tlist).matrix);
+		var R_nc = svgroot.createSVGTransform();
+		R_nc.setRotate(val, center.x, center.y);
+		if(tlist.numberOfItems) {
+			tlist.insertItemBefore(R_nc, 0);
+		} else {
+			tlist.appendItem(R_nc);
+		}
+	}
+	else if (tlist.numberOfItems == 0) {
+		elem.removeAttribute("transform");
+	}
+	
+	if (!preventUndo) {
+		// we need to undo it, then redo it so it can be undo-able! :)
+		// TODO: figure out how to make changes to transform list undo-able cross-browser?
+		var newTransform = elem.getAttribute("transform");
+		elem.setAttribute("transform", oldTransform);
+		changeSelectedAttribute("transform",newTransform,selectedElements);
+		call("changed", selectedElements);
+	}
+	var pointGripContainer = getElem("pathpointgrip_container");
+// 		if(elem.nodeName == "path" && pointGripContainer) {
+// 			pathActions.setPointContainerTransform(elem.getAttribute("transform"));
+// 		}
+	var selector = selectorManager.requestSelector(selectedElements[0]);
+	selector.resize();
+	selector.updateGripCursors(val);
+};
+
+// Function: recalculateAllSelectedDimensions
+// Runs recalculateDimensions on the selected elements, 
+// adding the changes to a single batch command
+var recalculateAllSelectedDimensions = this.recalculateAllSelectedDimensions = function() {
+	var text = (current_resize_mode == "none" ? "position" : "size");
+	var batchCmd = new BatchCommand(text);
+
+	var i = selectedElements.length;
+	while(i--) {
+		var elem = selectedElements[i];
+// 			if(getRotationAngle(elem) && !hasMatrixTransform(getTransformList(elem))) continue;
+		var cmd = recalculateDimensions(elem);
+		if (cmd) {
+			batchCmd.addSubCommand(cmd);
+		}
+	}
+
+	if (!batchCmd.isEmpty()) {
+		addCommandToHistory(batchCmd);
+		call("changed", selectedElements);
+	}
+};
+
+// this is how we map paths to our preferred relative segment types
+var pathMap = [0, 'z', 'M', 'm', 'L', 'l', 'C', 'c', 'Q', 'q', 'A', 'a', 
+					'H', 'h', 'V', 'v', 'S', 's', 'T', 't'];
+					
+// Debug tool to easily see the current matrix in the browser's console
+var logMatrix = function(m) {
+	console.log([m.a,m.b,m.c,m.d,m.e,m.f]);
+};
+
+// Function: remapElement
+// Applies coordinate changes to an element based on the given matrix
+//
+// Parameters:
+// selected - DOM element to be changed
+// changes - Object with changes to be remapped
+// m - Matrix object to use for remapping coordinates
+var remapElement = this.remapElement = function(selected,changes,m) {
+
+	var remap = function(x,y) { return transformPoint(x,y,m); },
+		scalew = function(w) { return m.a*w; },
+		scaleh = function(h) { return m.d*h; },
+		doSnapping = curConfig.gridSnapping && selected.parentNode.parentNode.localName === "svg",
+		finishUp = function() {
+			if(doSnapping) for(var o in changes) changes[o] = snapToGrid(changes[o]);
+			assignAttributes(selected, changes, 1000, true);
+		}
+		box = svgedit.utilities.getBBox(selected);
+	
+	for(var i = 0; i < 2; i++) {
+		var type = i === 0 ? 'fill' : 'stroke';
+		var attrVal = selected.getAttribute(type);
+		if(attrVal && attrVal.indexOf('url(') === 0) {
+			if(m.a < 0 || m.d < 0) {
+				var grad = getRefElem(attrVal);
+				var newgrad = grad.cloneNode(true);
+	
+				if(m.a < 0) {
+					//flip x
+					var x1 = newgrad.getAttribute('x1');
+					var x2 = newgrad.getAttribute('x2');
+					newgrad.setAttribute('x1', -(x1 - 1));
+					newgrad.setAttribute('x2', -(x2 - 1));
+				} 
+				
+				if(m.d < 0) {
+					//flip y
+					var y1 = newgrad.getAttribute('y1');
+					var y2 = newgrad.getAttribute('y2');
+					newgrad.setAttribute('y1', -(y1 - 1));
+					newgrad.setAttribute('y2', -(y2 - 1));
+				}
+				newgrad.id = getNextId();
+				findDefs().appendChild(newgrad);
+				selected.setAttribute(type, 'url(#' + newgrad.id + ')');
+			}
+			
+			// Not really working :(
+// 			if(selected.tagName === 'path') {
+// 				reorientGrads(selected, m);
+// 			}
+		}
+	}
+
+
+	var elName = selected.tagName;
+	if(elName === "g" || elName === "text" || elName === "use") {
+		// if it was a translate, then just update x,y
+		if (m.a == 1 && m.b == 0 && m.c == 0 && m.d == 1 && 
+			(m.e != 0 || m.f != 0) ) 
+		{
+			// [T][M] = [M][T']
+			// therefore [T'] = [M_inv][T][M]
+			var existing = transformListToTransform(selected).matrix,
+				t_new = matrixMultiply(existing.inverse(), m, existing);
+			changes.x = parseFloat(changes.x) + t_new.e;
+			changes.y = parseFloat(changes.y) + t_new.f;
+		}
+		else {
+			// we just absorb all matrices into the element and don't do any remapping
+			var chlist = getTransformList(selected);
+			var mt = svgroot.createSVGTransform();
+			mt.setMatrix(matrixMultiply(transformListToTransform(chlist).matrix,m));
+			chlist.clear();
+			chlist.appendItem(mt);
+		}
+	}
+	
+	// now we have a set of changes and an applied reduced transform list
+	// we apply the changes directly to the DOM
+	switch (elName)
+	{
+		case "foreignObject":
+		case "rect":
+		case "image":
+			
+			// Allow images to be inverted (give them matrix when flipped)
+			if(elName === 'image' && (m.a < 0 || m.d < 0)) {
+				// Convert to matrix
+				var chlist = getTransformList(selected);
+				var mt = svgroot.createSVGTransform();
+				mt.setMatrix(matrixMultiply(transformListToTransform(chlist).matrix,m));
+				chlist.clear();
+				chlist.appendItem(mt);
+			} else {
+				var pt1 = remap(changes.x,changes.y);
+				
+				changes.width = scalew(changes.width);
+				changes.height = scaleh(changes.height);
+				
+				changes.x = pt1.x + Math.min(0,changes.width);
+				changes.y = pt1.y + Math.min(0,changes.height);
+				changes.width = Math.abs(changes.width);
+				changes.height = Math.abs(changes.height);
+			}
+			finishUp();
+			break;
+		case "ellipse":
+			var c = remap(changes.cx,changes.cy);
+			changes.cx = c.x;
+			changes.cy = c.y;
+			changes.rx = scalew(changes.rx);
+			changes.ry = scaleh(changes.ry);
+		
+			changes.rx = Math.abs(changes.rx);
+			changes.ry = Math.abs(changes.ry);
+			finishUp();
+			break;
+		case "circle":
+			var c = remap(changes.cx,changes.cy);
+			changes.cx = c.x;
+			changes.cy = c.y;
+			// take the minimum of the new selected box's dimensions for the new circle radius
+			var tbox = svgedit.math.transformBox(box.x, box.y, box.width, box.height, m);
+			var w = tbox.tr.x - tbox.tl.x, h = tbox.bl.y - tbox.tl.y;
+			changes.r = Math.min(w/2, h/2);
+
+			if(changes.r) changes.r = Math.abs(changes.r);
+			finishUp();
+			break;
+		case "line":
+			var pt1 = remap(changes.x1,changes.y1),
+				pt2 = remap(changes.x2,changes.y2);
+			changes.x1 = pt1.x;
+			changes.y1 = pt1.y;
+			changes.x2 = pt2.x;
+			changes.y2 = pt2.y;
+			
+		case "text":
+			var tspan = selected.querySelectorAll('tspan');
+			var i = tspan.length
+			while(i--) {
+				var selX = convertToNum("x", selected.getAttribute('x'));
+				var tx = convertToNum("x", tspan[i].getAttribute('x'));
+				var selY = convertToNum("y", selected.getAttribute('y'));
+				var ty = convertToNum("y", tspan[i].getAttribute('y'));
+				var offset = new Object();
+				if (!isNaN(selX) && !isNaN(tx) && selX!=0 && tx!=0 && changes.x)
+					offset.x = changes.x - (selX - tx);
+				if (!isNaN(selY) && !isNaN(ty) && selY!=0 && ty!=0 && changes.y)
+					offset.y = changes.y - (selY - ty);
+				if (offset.x || offset.y)
+					assignAttributes(tspan[i], offset, 1000, true);
+			}
+			finishUp();
+			break;
+		case "use":
+			finishUp();
+			break;
+		case "g":
+			var gsvg = $(selected).data('gsvg');
+			if(gsvg) {
+				assignAttributes(gsvg, changes, 1000, true);
+			}
+			break;
+		case "polyline":
+		case "polygon":
+			var len = changes.points.length;
+			for (var i = 0; i < len; ++i) {
+				var pt = changes.points[i];
+				pt = remap(pt.x,pt.y);
+				changes.points[i].x = pt.x;
+				changes.points[i].y = pt.y;
+			}
+
+			var len = changes.points.length;
+			var pstr = "";
+			for (var i = 0; i < len; ++i) {
+				var pt = changes.points[i];
+				pstr += pt.x + "," + pt.y + " ";
+			}
+			selected.setAttribute("points", pstr);
+			break;
+		case "path":
+		
+			var segList = selected.pathSegList;
+			var len = segList.numberOfItems;
+			changes.d = new Array(len);
+			for (var i = 0; i < len; ++i) {
+				var seg = segList.getItem(i);
+				changes.d[i] = {
+					type: seg.pathSegType,
+					x: seg.x,
+					y: seg.y,
+					x1: seg.x1,
+					y1: seg.y1,
+					x2: seg.x2,
+					y2: seg.y2,
+					r1: seg.r1,
+					r2: seg.r2,
+					angle: seg.angle,
+					largeArcFlag: seg.largeArcFlag,
+					sweepFlag: seg.sweepFlag
+				};
+			}
+			
+			var len = changes.d.length,
+				firstseg = changes.d[0],
+				currentpt = remap(firstseg.x,firstseg.y);
+			changes.d[0].x = currentpt.x;
+			changes.d[0].y = currentpt.y;
+			for (var i = 1; i < len; ++i) {
+				var seg = changes.d[i];
+				var type = seg.type;
+				// if absolute or first segment, we want to remap x, y, x1, y1, x2, y2
+				// if relative, we want to scalew, scaleh
+				if (type % 2 == 0) { // absolute
+					var thisx = (seg.x != undefined) ? seg.x : currentpt.x, // for V commands
+						thisy = (seg.y != undefined) ? seg.y : currentpt.y, // for H commands
+						pt = remap(thisx,thisy),
+						pt1 = remap(seg.x1,seg.y1),
+						pt2 = remap(seg.x2,seg.y2);
+					seg.x = pt.x;
+					seg.y = pt.y;
+					seg.x1 = pt1.x;
+					seg.y1 = pt1.y;
+					seg.x2 = pt2.x;
+					seg.y2 = pt2.y;
+					seg.r1 = scalew(seg.r1),
+					seg.r2 = scaleh(seg.r2);
+				}
+				else { // relative
+					seg.x = scalew(seg.x);
+					seg.y = scaleh(seg.y);
+					seg.x1 = scalew(seg.x1);
+					seg.y1 = scaleh(seg.y1);
+					seg.x2 = scalew(seg.x2);
+					seg.y2 = scaleh(seg.y2);
+					seg.r1 = scalew(seg.r1),
+					seg.r2 = scaleh(seg.r2);
+				}
+			} // for each segment
+		
+			var dstr = "";
+			var len = changes.d.length;
+			for (var i = 0; i < len; ++i) {
+				var seg = changes.d[i];
+				var type = seg.type;
+				dstr += pathMap[type];
+				switch(type) {
+					case 13: // relative horizontal line (h)
+					case 12: // absolute horizontal line (H)
+						dstr += seg.x + " ";
+						break;
+					case 15: // relative vertical line (v)
+					case 14: // absolute vertical line (V)
+						dstr += seg.y + " ";
+						break;
+					case 3: // relative move (m)
+					case 5: // relative line (l)
+					case 19: // relative smooth quad (t)
+					case 2: // absolute move (M)
+					case 4: // absolute line (L)
+					case 18: // absolute smooth quad (T)
+						dstr += seg.x + "," + seg.y + " ";
+						break;
+					case 7: // relative cubic (c)
+					case 6: // absolute cubic (C)
+						dstr += seg.x1 + "," + seg.y1 + " " + seg.x2 + "," + seg.y2 + " " +
+							 seg.x + "," + seg.y + " ";
+						break;
+					case 9: // relative quad (q) 
+					case 8: // absolute quad (Q)
+						dstr += seg.x1 + "," + seg.y1 + " " + seg.x + "," + seg.y + " ";
+						break;
+					case 11: // relative elliptical arc (a)
+					case 10: // absolute elliptical arc (A)
+						dstr += seg.r1 + "," + seg.r2 + " " + seg.angle + " " + (+seg.largeArcFlag) +
+							" " + (+seg.sweepFlag) + " " + seg.x + "," + seg.y + " ";
+						break;
+					case 17: // relative smooth cubic (s)
+					case 16: // absolute smooth cubic (S)
+						dstr += seg.x2 + "," + seg.y2 + " " + seg.x + "," + seg.y + " ";
+						break;
+				}
+			}
+
+			selected.setAttribute("d", dstr);
+			break;
+	}
+};
+
+// Function: updateClipPath
+// Updates a <clipPath>s values based on the given translation of an element
+//
+// Parameters:
+// attr - The clip-path attribute value with the clipPath's ID
+// tx - The translation's x value
+// ty - The translation's y value
+var updateClipPath = function(attr, tx, ty) {
+	var path = getRefElem(attr).firstChild;
+	
+	var cp_xform = getTransformList(path);
+	
+	var newxlate = svgroot.createSVGTransform();
+	newxlate.setTranslate(tx, ty);
+
+	cp_xform.appendItem(newxlate);
+	
+	// Update clipPath's dimensions
+	recalculateDimensions(path);
+}
+
+// Function: recalculateDimensions
+// Decides the course of action based on the element's transform list
+//
+// Parameters:
+// selected - The DOM element to recalculate
+//
+// Returns: 
+// Undo command object with the resulting change
+var recalculateDimensions = this.recalculateDimensions = function(selected) {
+	if (selected == null) return null;
+	
+	var tlist = getTransformList(selected);
+	
+	// remove any unnecessary transforms
+	if (tlist && tlist.numberOfItems > 0) {
+		var k = tlist.numberOfItems;
+		while (k--) {
+			var xform = tlist.getItem(k);
+			if (xform.type === 0) {
+				tlist.removeItem(k);
+			}
+			// remove identity matrices
+			else if (xform.type === 1) {
+				if (svgedit.math.isIdentity(xform.matrix)) {
+					tlist.removeItem(k);
+				}
+			}
+			// remove zero-degree rotations
+			else if (xform.type === 4) {
+				if (xform.angle === 0) {
+					tlist.removeItem(k);
+				}
+			}
+		}
+		// End here if all it has is a rotation
+		if(tlist.numberOfItems === 1 && getRotationAngle(selected)) return null;
+	}
+	
+	// if this element had no transforms, we are done
+	if (!tlist || tlist.numberOfItems == 0) {
+		selected.removeAttribute("transform");
+		return null;
+	}
+	
+	// TODO: Make this work for more than 2
+	if (tlist) {
+		var k = tlist.numberOfItems;
+		var mxs = [];
+		while (k--) {
+			var xform = tlist.getItem(k);
+			if (xform.type === 1) {
+				mxs.push([xform.matrix, k]);
+			} else if(mxs.length) {
+				mxs = [];
+			}
+		}
+		if(mxs.length === 2) {
+			var m_new = svgroot.createSVGTransformFromMatrix(matrixMultiply(mxs[1][0], mxs[0][0]));
+			tlist.removeItem(mxs[0][1]);
+			tlist.removeItem(mxs[1][1]);
+			tlist.insertItemBefore(m_new, mxs[1][1]);
+		}
+		
+		// combine matrix + translate
+		k = tlist.numberOfItems;
+		if(k >= 2 && tlist.getItem(k-2).type === 1 && tlist.getItem(k-1).type === 2) {
+			var mt = svgroot.createSVGTransform();
+			
+			var m = matrixMultiply(
+				tlist.getItem(k-2).matrix, 
+				tlist.getItem(k-1).matrix
+			);		
+			mt.setMatrix(m);
+			tlist.removeItem(k-2);
+			tlist.removeItem(k-2);
+			tlist.appendItem(mt);
+		}
+	}
+	
+	// If it still has a single [M] or [R][M], return null too (prevents BatchCommand from being returned).
+	switch ( selected.tagName ) {
+		// Ignore these elements, as they can absorb the [M]
+		case 'line':
+		case 'polyline':
+		case 'polygon':
+		case 'path':
+			break;
+		default:
+			if(
+				(tlist.numberOfItems === 1 && tlist.getItem(0).type === 1)
+				||  (tlist.numberOfItems === 2 && tlist.getItem(0).type === 1 && tlist.getItem(0).type === 4)
+			) {
+				return null;
+			}
+	}
+	
+	// Grouped SVG element 
+	var gsvg = $(selected).data('gsvg');
+	
+	// we know we have some transforms, so set up return variable		
+	var batchCmd = new BatchCommand("Transform");
+	
+	// store initial values that will be affected by reducing the transform list
+	var changes = {}, initial = null, attrs = [];
+	switch (selected.tagName)
+	{
+		case "line":
+			attrs = ["x1", "y1", "x2", "y2"];
+			break;
+		case "circle":
+			attrs = ["cx", "cy", "r"];
+			break;
+		case "ellipse":
+			attrs = ["cx", "cy", "rx", "ry"];
+			break;
+		case "foreignObject":
+		case "rect":
+		case "image":
+			attrs = ["width", "height", "x", "y"];
+			break;
+		case "use":
+		case "text":
+		case "tspan":
+			attrs = ["x", "y"];
+			break;
+		case "polygon":
+		case "polyline":
+			initial = {};
+			initial["points"] = selected.getAttribute("points");
+			var list = selected.points;
+			var len = list.numberOfItems;
+			changes["points"] = new Array(len);
+			for (var i = 0; i < len; ++i) {
+				var pt = list.getItem(i);
+				changes["points"][i] = {x:pt.x,y:pt.y};
+			}
+			break;
+		case "path":
+			initial = {};
+			initial["d"] = selected.getAttribute("d");
+			changes["d"] = selected.getAttribute("d");
+			break;
+	} // switch on element type to get initial values
+	
+	if(attrs.length) {
+		changes = $(selected).attr(attrs);
+		$.each(changes, function(attr, val) {
+			changes[attr] = convertToNum(attr, val);
+		});
+	} else if(gsvg) {
+		// GSVG exception
+		changes = {
+			x: $(gsvg).attr('x') || 0,
+			y: $(gsvg).attr('y') || 0
+		};
+	}
+	
+	// if we haven't created an initial array in polygon/polyline/path, then 
+	// make a copy of initial values and include the transform
+	if (initial == null) {
+		initial = $.extend(true, {}, changes);
+		$.each(initial, function(attr, val) {
+			initial[attr] = convertToNum(attr, val);
+		});
+	}
+	// save the start transform value too
+	initial["transform"] = start_transform ? start_transform : "";
+	
+	// if it's a regular group, we have special processing to flatten transforms
+	if ((selected.tagName == "g" && !gsvg) || selected.tagName == "a") {
+		var box = svgedit.utilities.getBBox(selected),
+			oldcenter = {x: box.x+box.width/2, y: box.y+box.height/2},
+			newcenter = transformPoint(box.x+box.width/2, box.y+box.height/2,
+							transformListToTransform(tlist).matrix),
+			m = svgroot.createSVGMatrix();
+		
+		
+		// temporarily strip off the rotate and save the old center
+		var gangle = getRotationAngle(selected);
+		if (gangle) {
+			var a = gangle * Math.PI / 180;
+			if ( Math.abs(a) > (1.0e-10) ) {
+				var s = Math.sin(a)/(1 - Math.cos(a));
+			} else {
+				// FIXME: This blows up if the angle is exactly 0!
+				var s = 2/a;
+			}
+			for (var i = 0; i < tlist.numberOfItems; ++i) {
+				var xform = tlist.getItem(i);
+				if (xform.type == 4) {
+					// extract old center through mystical arts
+					var rm = xform.matrix;
+					oldcenter.y = (s*rm.e + rm.f)/2;
+					oldcenter.x = (rm.e - s*rm.f)/2;
+					tlist.removeItem(i);
+					break;
+				}
+			}
+		}
+		var tx = 0, ty = 0,
+			operation = 0,
+			N = tlist.numberOfItems;
+
+		if(N) {
+			var first_m = tlist.getItem(0).matrix;
+		}
+
+		// first, if it was a scale then the second-last transform will be it
+		if (N >= 3 && tlist.getItem(N-2).type == 3 && 
+			tlist.getItem(N-3).type == 2 && tlist.getItem(N-1).type == 2) 
+		{
+			operation = 3; // scale
+		
+			// if the children are unrotated, pass the scale down directly
+			// otherwise pass the equivalent matrix() down directly
+			var tm = tlist.getItem(N-3).matrix,
+				sm = tlist.getItem(N-2).matrix,
+				tmn = tlist.getItem(N-1).matrix;
+		
+			var children = selected.childNodes;
+			var c = children.length;
+			while (c--) {
+				var child = children.item(c);
+				tx = 0;
+				ty = 0;
+				if (child.nodeType == 1) {
+					var childTlist = getTransformList(child);
+
+					// some children might not have a transform (<metadata>, <defs>, etc)
+					if (!childTlist) continue;
+
+					var m = transformListToTransform(childTlist).matrix;
+
+					// Convert a matrix to a scale if applicable
+// 					if(hasMatrixTransform(childTlist) && childTlist.numberOfItems == 1) {
+// 						if(m.b==0 && m.c==0 && m.e==0 && m.f==0) {
+// 							childTlist.removeItem(0);
+// 							var translateOrigin = svgroot.createSVGTransform(),
+// 								scale = svgroot.createSVGTransform(),
+// 								translateBack = svgroot.createSVGTransform();
+// 							translateOrigin.setTranslate(0, 0);
+// 							scale.setScale(m.a, m.d);
+// 							translateBack.setTranslate(0, 0);
+// 							childTlist.appendItem(translateBack);
+// 							childTlist.appendItem(scale);
+// 							childTlist.appendItem(translateOrigin);
+// 						}
+// 					}
+				
+					var angle = getRotationAngle(child);
+					var old_start_transform = start_transform;
+					var childxforms = [];
+					start_transform = child.getAttribute("transform");
+					if(angle || hasMatrixTransform(childTlist)) {
+						var e2t = svgroot.createSVGTransform();
+						e2t.setMatrix(matrixMultiply(tm, sm, tmn, m));
+						childTlist.clear();
+						childTlist.appendItem(e2t);
+						childxforms.push(e2t);
+					}
+					// if not rotated or skewed, push the [T][S][-T] down to the child
+					else {
+						// update the transform list with translate,scale,translate
+						
+						// slide the [T][S][-T] from the front to the back
+						// [T][S][-T][M] = [M][T2][S2][-T2]
+						
+						// (only bringing [-T] to the right of [M])
+						// [T][S][-T][M] = [T][S][M][-T2]
+						// [-T2] = [M_inv][-T][M]
+						var t2n = matrixMultiply(m.inverse(), tmn, m);
+						// [T2] is always negative translation of [-T2]
+						var t2 = svgroot.createSVGMatrix();
+						t2.e = -t2n.e;
+						t2.f = -t2n.f;
+						
+						// [T][S][-T][M] = [M][T2][S2][-T2]
+						// [S2] = [T2_inv][M_inv][T][S][-T][M][-T2_inv]
+						var s2 = matrixMultiply(t2.inverse(), m.inverse(), tm, sm, tmn, m, t2n.inverse());
+
+						var translateOrigin = svgroot.createSVGTransform(),
+							scale = svgroot.createSVGTransform(),
+							translateBack = svgroot.createSVGTransform();
+						translateOrigin.setTranslate(t2n.e, t2n.f);
+						scale.setScale(s2.a, s2.d);
+						translateBack.setTranslate(t2.e, t2.f);
+						childTlist.appendItem(translateBack);
+						childTlist.appendItem(scale);
+						childTlist.appendItem(translateOrigin);
+						childxforms.push(translateBack);
+						childxforms.push(scale);
+						childxforms.push(translateOrigin);
+// 						logMatrix(translateBack.matrix);
+// 						logMatrix(scale.matrix);
+					} // not rotated
+					batchCmd.addSubCommand( recalculateDimensions(child) );
+					// TODO: If any <use> have this group as a parent and are 
+					// referencing this child, then we need to impose a reverse 
+					// scale on it so that when it won't get double-translated
+//						var uses = selected.getElementsByTagNameNS(svgns, "use");
+//						var href = "#"+child.id;
+//						var u = uses.length;
+//						while (u--) {
+//							var useElem = uses.item(u);
+//							if(href == getHref(useElem)) {
+//								var usexlate = svgroot.createSVGTransform();
+//								usexlate.setTranslate(-tx,-ty);
+//								getTransformList(useElem).insertItemBefore(usexlate,0);
+//								batchCmd.addSubCommand( recalculateDimensions(useElem) );
+//							}
+//						}
+					start_transform = old_start_transform;
+				} // element
+			} // for each child
+			// Remove these transforms from group
+			tlist.removeItem(N-1);
+			tlist.removeItem(N-2);
+			tlist.removeItem(N-3);
+		}
+		else if (N >= 3 && tlist.getItem(N-1).type == 1)
+		{
+			operation = 3; // scale
+			m = transformListToTransform(tlist).matrix;
+			var e2t = svgroot.createSVGTransform();
+			e2t.setMatrix(m);
+			tlist.clear();
+			tlist.appendItem(e2t);
+		}			
+		// next, check if the first transform was a translate 
+		// if we had [ T1 ] [ M ] we want to transform this into [ M ] [ T2 ]
+		// therefore [ T2 ] = [ M_inv ] [ T1 ] [ M ]
+		else if ( (N == 1 || (N > 1 && tlist.getItem(1).type != 3)) && 
+			tlist.getItem(0).type == 2) 
+		{
+			operation = 2; // translate
+			var T_M = transformListToTransform(tlist).matrix;
+			tlist.removeItem(0);
+			var M_inv = transformListToTransform(tlist).matrix.inverse();
+			var M2 = matrixMultiply( M_inv, T_M );
+			
+			tx = M2.e;
+			ty = M2.f;
+
+			if (tx != 0 || ty != 0) {
+				// we pass the translates down to the individual children
+				var children = selected.childNodes;
+				var c = children.length;
+				
+				var clipPaths_done = [];
+				
+				while (c--) {
+					var child = children.item(c);
+					if (child.nodeType == 1) {
+					
+						// Check if child has clip-path
+						if(child.getAttribute('clip-path')) {
+							// tx, ty
+							var attr = child.getAttribute('clip-path');
+							if(clipPaths_done.indexOf(attr) === -1) {
+								updateClipPath(attr, tx, ty);
+								clipPaths_done.push(attr);
+							}							
+						}
+
+						var old_start_transform = start_transform;
+						start_transform = child.getAttribute("transform");
+						
+						var childTlist = getTransformList(child);
+						// some children might not have a transform (<metadata>, <defs>, etc)
+						if (childTlist) {
+							var newxlate = svgroot.createSVGTransform();
+							newxlate.setTranslate(tx,ty);
+							if(childTlist.numberOfItems) {
+								childTlist.insertItemBefore(newxlate, 0);
+							} else {
+								childTlist.appendItem(newxlate);
+							}
+							batchCmd.addSubCommand( recalculateDimensions(child) );
+							// If any <use> have this group as a parent and are 
+							// referencing this child, then impose a reverse translate on it
+							// so that when it won't get double-translated
+							var uses = selected.getElementsByTagNameNS(svgns, "use");
+							var href = "#"+child.id;
+							var u = uses.length;
+							while (u--) {
+								var useElem = uses.item(u);
+								if(href == getHref(useElem)) {
+									var usexlate = svgroot.createSVGTransform();
+									usexlate.setTranslate(-tx,-ty);
+									getTransformList(useElem).insertItemBefore(usexlate,0);
+									batchCmd.addSubCommand( recalculateDimensions(useElem) );
+								}
+							}
+							start_transform = old_start_transform;
+						}
+					}
+				}
+				
+				clipPaths_done = [];
+				
+				start_transform = old_start_transform;
+			}
+		}
+		// else, a matrix imposition from a parent group
+		// keep pushing it down to the children
+		else if (N == 1 && tlist.getItem(0).type == 1 && !gangle) {
+			operation = 1;
+			var m = tlist.getItem(0).matrix,
+				children = selected.childNodes,
+				c = children.length;
+			while (c--) {
+				var child = children.item(c);
+				if (child.nodeType == 1) {
+					var old_start_transform = start_transform;
+					start_transform = child.getAttribute("transform");
+					var childTlist = getTransformList(child);
+					
+					if (!childTlist) continue;
+					
+					var em = matrixMultiply(m, transformListToTransform(childTlist).matrix);
+					var e2m = svgroot.createSVGTransform();
+					e2m.setMatrix(em);
+					childTlist.clear();
+					childTlist.appendItem(e2m,0);
+					
+					batchCmd.addSubCommand( recalculateDimensions(child) );
+					start_transform = old_start_transform;
+					
+					// Convert stroke
+					// TODO: Find out if this should actually happen somewhere else
+					var sw = child.getAttribute("stroke-width");
+					if (child.getAttribute("stroke") !== "none" && !isNaN(sw)) {
+						var avg = (Math.abs(em.a) + Math.abs(em.d)) / 2;
+						child.setAttribute('stroke-width', sw * avg);
+					}
+
+				}
+			}
+			tlist.clear();
+		}
+		// else it was just a rotate
+		else {
+			if (gangle) {
+				var newRot = svgroot.createSVGTransform();
+				newRot.setRotate(gangle,newcenter.x,newcenter.y);
+				if(tlist.numberOfItems) {
+					tlist.insertItemBefore(newRot, 0);
+				} else {
+					tlist.appendItem(newRot);
+				}
+			}
+			if (tlist.numberOfItems == 0) {
+				selected.removeAttribute("transform");
+			}
+			return null;			
+		}
+		
+		// if it was a translate, put back the rotate at the new center
+		if (operation == 2) {
+			if (gangle) {
+				newcenter = {
+					x: oldcenter.x + first_m.e,
+					y: oldcenter.y + first_m.f
+				};
+			
+				var newRot = svgroot.createSVGTransform();
+				newRot.setRotate(gangle,newcenter.x,newcenter.y);
+				if(tlist.numberOfItems) {
+					tlist.insertItemBefore(newRot, 0);
+				} else {
+					tlist.appendItem(newRot);
+				}
+			}
+		}
+		// if it was a resize
+		else if (operation == 3) {
+			var m = transformListToTransform(tlist).matrix;
+			var roldt = svgroot.createSVGTransform();
+			roldt.setRotate(gangle, oldcenter.x, oldcenter.y);
+			var rold = roldt.matrix;
+			var rnew = svgroot.createSVGTransform();
+			rnew.setRotate(gangle, newcenter.x, newcenter.y);
+			var rnew_inv = rnew.matrix.inverse(),
+				m_inv = m.inverse(),
+				extrat = matrixMultiply(m_inv, rnew_inv, rold, m);
+
+			tx = extrat.e;
+			ty = extrat.f;
+
+			if (tx != 0 || ty != 0) {
+				// now push this transform down to the children
+				// we pass the translates down to the individual children
+				var children = selected.childNodes;
+				var c = children.length;
+				while (c--) {
+					var child = children.item(c);
+					if (child.nodeType == 1) {
+						var old_start_transform = start_transform;
+						start_transform = child.getAttribute("transform");
+						var childTlist = getTransformList(child);
+						var newxlate = svgroot.createSVGTransform();
+						newxlate.setTranslate(tx,ty);
+						if(childTlist.numberOfItems) {
+							childTlist.insertItemBefore(newxlate, 0);
+						} else {
+							childTlist.appendItem(newxlate);
+						}
+
+						batchCmd.addSubCommand( recalculateDimensions(child) );
+						start_transform = old_start_transform;
+					}
+				}
+			}
+			
+			if (gangle) {
+				if(tlist.numberOfItems) {
+					tlist.insertItemBefore(rnew, 0);
+				} else {
+					tlist.appendItem(rnew);
+				}
+			}
+		}
+	}
+	// else, it's a non-group
+	else {
+
+		// FIXME: box might be null for some elements (<metadata> etc), need to handle this
+		var box = svgedit.utilities.getBBox(selected);
+
+		// Paths (and possbly other shapes) will have no BBox while still in <defs>,
+		// but we still may need to recalculate them (see issue 595).
+		// TODO: Figure out how to get BBox from these elements in case they
+		// have a rotation transform
+		
+		if(!box && selected.tagName != 'path') return null;
+		
+
+		var m = svgroot.createSVGMatrix(),
+			// temporarily strip off the rotate and save the old center
+			angle = getRotationAngle(selected);
+		if (angle) {
+			var oldcenter = {x: box.x+box.width/2, y: box.y+box.height/2},
+			newcenter = transformPoint(box.x+box.width/2, box.y+box.height/2,
+							transformListToTransform(tlist).matrix);
+		
+			var a = angle * Math.PI / 180;
+			if ( Math.abs(a) > (1.0e-10) ) {
+				var s = Math.sin(a)/(1 - Math.cos(a));
+			} else {
+				// FIXME: This blows up if the angle is exactly 0!
+				var s = 2/a;
+			}
+			for (var i = 0; i < tlist.numberOfItems; ++i) {
+				var xform = tlist.getItem(i);
+				if (xform.type == 4) {
+					// extract old center through mystical arts
+					var rm = xform.matrix;
+					oldcenter.y = (s*rm.e + rm.f)/2;
+					oldcenter.x = (rm.e - s*rm.f)/2;
+					tlist.removeItem(i);
+					break;
+				}
+			}
+		}
+		
+		// 2 = translate, 3 = scale, 4 = rotate, 1 = matrix imposition
+		var operation = 0;
+		var N = tlist.numberOfItems;
+		
+		// Check if it has a gradient with userSpaceOnUse, in which case
+		// adjust it by recalculating the matrix transform.
+		// TODO: Make this work in Webkit using svgedit.transformlist.SVGTransformList
+		if(!svgedit.browser.isWebkit()) {
+			var fill = selected.getAttribute('fill');
+			if(fill && fill.indexOf('url(') === 0) {
+				var paint = getRefElem(fill);
+				var type = 'pattern';
+				if(paint.tagName !== type) type = 'gradient';
+				var attrVal = paint.getAttribute(type + 'Units');
+				if(attrVal === 'userSpaceOnUse') {
+					//Update the userSpaceOnUse element
+					m = transformListToTransform(tlist).matrix;
+					var gtlist = getTransformList(paint);
+					var gmatrix = transformListToTransform(gtlist).matrix;
+					m = matrixMultiply(m, gmatrix);
+					var m_str = "matrix(" + [m.a,m.b,m.c,m.d,m.e,m.f].join(",") + ")";
+					paint.setAttribute(type + 'Transform', m_str);
+				}
+			}
+		}
+
+		// first, if it was a scale of a non-skewed element, then the second-last  
+		// transform will be the [S]
+		// if we had [M][T][S][T] we want to extract the matrix equivalent of
+		// [T][S][T] and push it down to the element
+		if (N >= 3 && tlist.getItem(N-2).type == 3 && 
+			tlist.getItem(N-3).type == 2 && tlist.getItem(N-1).type == 2) 
+			
+			// Removed this so a <use> with a given [T][S][T] would convert to a matrix. 
+			// Is that bad?
+			//  && selected.nodeName != "use"
+		{
+			operation = 3; // scale
+			m = transformListToTransform(tlist,N-3,N-1).matrix;
+			tlist.removeItem(N-1);
+			tlist.removeItem(N-2);
+			tlist.removeItem(N-3);
+		} // if we had [T][S][-T][M], then this was a skewed element being resized
+		// Thus, we simply combine it all into one matrix
+		else if(N == 4 && tlist.getItem(N-1).type == 1) {
+			operation = 3; // scale
+			m = transformListToTransform(tlist).matrix;
+			var e2t = svgroot.createSVGTransform();
+			e2t.setMatrix(m);
+			tlist.clear();
+			tlist.appendItem(e2t);
+			// reset the matrix so that the element is not re-mapped
+			m = svgroot.createSVGMatrix();
+		} // if we had [R][T][S][-T][M], then this was a rotated matrix-element  
+		// if we had [T1][M] we want to transform this into [M][T2]
+		// therefore [ T2 ] = [ M_inv ] [ T1 ] [ M ] and we can push [T2] 
+		// down to the element
+		else if ( (N == 1 || (N > 1 && tlist.getItem(1).type != 3)) && 
+			tlist.getItem(0).type == 2) 
+		{
+			operation = 2; // translate
+			var oldxlate = tlist.getItem(0).matrix,
+				meq = transformListToTransform(tlist,1).matrix,
+				meq_inv = meq.inverse();
+			m = matrixMultiply( meq_inv, oldxlate, meq );
+			tlist.removeItem(0);
+		}
+		// else if this child now has a matrix imposition (from a parent group)
+		// we might be able to simplify
+		else if (N == 1 && tlist.getItem(0).type == 1 && !angle) {
+			// Remap all point-based elements
+			m = transformListToTransform(tlist).matrix;
+			switch (selected.tagName) {
+				case 'line':
+					changes = $(selected).attr(["x1","y1","x2","y2"]);
+				case 'polyline':
+				case 'polygon':
+					changes.points = selected.getAttribute("points");
+					if(changes.points) {
+						var list = selected.points;
+						var len = list.numberOfItems;
+						changes.points = new Array(len);
+						for (var i = 0; i < len; ++i) {
+							var pt = list.getItem(i);
+							changes.points[i] = {x:pt.x,y:pt.y};
+						}
+					}
+				case 'path':
+					changes.d = selected.getAttribute("d");
+					operation = 1;
+					tlist.clear();
+					break;
+				default:
+					break;
+			}
+		}
+		// if it was a rotation, put the rotate back and return without a command
+		// (this function has zero work to do for a rotate())
+		else {
+			operation = 4; // rotation
+			if (angle) {
+				var newRot = svgroot.createSVGTransform();
+				newRot.setRotate(angle,newcenter.x,newcenter.y);
+				
+				if(tlist.numberOfItems) {
+					tlist.insertItemBefore(newRot, 0);
+				} else {
+					tlist.appendItem(newRot);
+				}
+			}
+			if (tlist.numberOfItems == 0) {
+				selected.removeAttribute("transform");
+			}
+			return null;
+		}
+		
+		// if it was a translate or resize, we need to remap the element and absorb the xform
+		if (operation == 1 || operation == 2 || operation == 3) {
+			remapElement(selected,changes,m);
+		} // if we are remapping
+		
+		// if it was a translate, put back the rotate at the new center
+		if (operation == 2) {
+			if (angle) {
+				if(!hasMatrixTransform(tlist)) {
+					newcenter = {
+						x: oldcenter.x + m.e,
+						y: oldcenter.y + m.f
+					};
+				}
+				var newRot = svgroot.createSVGTransform();
+				newRot.setRotate(angle, newcenter.x, newcenter.y);
+				if(tlist.numberOfItems) {
+					tlist.insertItemBefore(newRot, 0);
+				} else {
+					tlist.appendItem(newRot);
+				}
+			}
+		}
+		// [Rold][M][T][S][-T] became [Rold][M]
+		// we want it to be [Rnew][M][Tr] where Tr is the
+		// translation required to re-center it
+		// Therefore, [Tr] = [M_inv][Rnew_inv][Rold][M]
+		else if (operation == 3 && angle) {
+			var m = transformListToTransform(tlist).matrix;
+			var roldt = svgroot.createSVGTransform();
+			roldt.setRotate(angle, oldcenter.x, oldcenter.y);
+			var rold = roldt.matrix;
+			var rnew = svgroot.createSVGTransform();
+			rnew.setRotate(angle, newcenter.x, newcenter.y);
+			var rnew_inv = rnew.matrix.inverse();
+			var m_inv = m.inverse();
+			var extrat = matrixMultiply(m_inv, rnew_inv, rold, m);
+		
+			remapElement(selected,changes,extrat);
+			if (angle) {
+				if(tlist.numberOfItems) {
+					tlist.insertItemBefore(rnew, 0);
+				} else {
+					tlist.appendItem(rnew);
+				}
+			}
+		}
+	} // a non-group
+
+	// if the transform list has been emptied, remove it
+	if (tlist.numberOfItems == 0) {
+		selected.removeAttribute("transform");
+	}
+	
+	batchCmd.addSubCommand(new ChangeElementCommand(selected, initial));
+	
+	return batchCmd;
+};
+
+// Root Current Transformation Matrix in user units
+var root_sctm = null;
+
+// Group: Selection
+
+// Function: clearSelection
+// Clears the selection.  The 'selected' handler is then called.
+// Parameters: 
+// noCall - Optional boolean that when true does not call the "selected" handler
+var clearSelection = this.clearSelection = function(noCall) {
+	if (selectedElements[0] != null) {
+		var len = selectedElements.length;
+		for (var i = 0; i < len; ++i) {
+			var elem = selectedElements[i];
+			if (elem == null) break;
+			selectorManager.releaseSelector(elem);
+			selectedElements[i] = null;
+		}
+//		selectedBBoxes[0] = null;
+	}
+	if(!noCall) call("selected", selectedElements);
+};
+
+// TODO: do we need to worry about selectedBBoxes here?
+
+
+// Function: addToSelection
+// Adds a list of elements to the selection.  The 'selected' handler is then called.
+//
+// Parameters:
+// elemsToAdd - an array of DOM elements to add to the selection
+// showGrips - a boolean flag indicating whether the resize grips should be shown
+var addToSelection = this.addToSelection = function(elemsToAdd, showGrips) {
+	if (elemsToAdd.length == 0) { return; }
+	// find the first null in our selectedElements array
+	var j = 0;
+	
+	while (j < selectedElements.length) {
+		if (selectedElements[j] == null) { 
+			break;
+		}
+		++j;
+	}
+
+	// now add each element consecutively
+	var i = elemsToAdd.length;
+	while (i--) {
+		var elem = elemsToAdd[i];
+		if (!elem || !svgedit.utilities.getBBox(elem)) continue;
+
+		if(elem.tagName === 'a' && elem.childNodes.length === 1) {
+			// Make "a" element's child be the selected element 
+			elem = elem.firstChild;
+		}
+
+		// if it's not already there, add it
+		if (selectedElements.indexOf(elem) == -1) {
+
+			selectedElements[j] = elem;
+
+			// only the first selectedBBoxes element is ever used in the codebase these days
+//			if (j == 0) selectedBBoxes[0] = svgedit.utilities.getBBox(elem);
+			j++;
+			var sel = selectorManager.requestSelector(elem);
+	
+			if (selectedElements.length > 1) {
+				sel.showGrips(false);
+			}
+		}
+	}
+	call("selected", selectedElements);
+	if (showGrips || selectedElements.length == 1) selectorManager.requestSelector(selectedElements[0]).showGrips(true)
+  else selectorManager.requestSelector(selectedElements[0]).showGrips(false);
+
+	// make sure the elements are in the correct order
+	// See: http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-compareDocumentPosition
+
+	selectedElements.sort(function(a,b) {
+		if(a && b && a.compareDocumentPosition) {
+			return 3 - (b.compareDocumentPosition(a) & 6);	
+		} else if(a == null) {
+			return 1;
+		}
+	});
+	
+	// Make sure first elements are not null
+	while(selectedElements[0] == null) selectedElements.shift(0);
+};
+
+// Function: selectOnly()
+// Selects only the given elements, shortcut for clearSelection(); addToSelection()
+//
+// Parameters:
+// elems - an array of DOM elements to be selected
+var selectOnly = this.selectOnly = function(elems, showGrips) {
+	clearSelection(true);
+	addToSelection(elems, showGrips);
+}
+
+// TODO: could use slice here to make this faster?
+// TODO: should the 'selected' handler
+
+// Function: removeFromSelection
+// Removes elements from the selection.
+//
+// Parameters:
+// elemsToRemove - an array of elements to remove from selection
+var removeFromSelection = this.removeFromSelection = function(elemsToRemove) {
+	if (selectedElements[0] == null) { return; }
+	if (elemsToRemove.length == 0) { return; }
+
+	// find every element and remove it from our array copy
+	var newSelectedItems = new Array(selectedElements.length);
+		j = 0,
+		len = selectedElements.length;
+	for (var i = 0; i < len; ++i) {
+		var elem = selectedElements[i];
+		if (elem) {
+			// keep the item
+			if (elemsToRemove.indexOf(elem) == -1) {
+				newSelectedItems[j] = elem;
+				j++;
+			}
+			else { // remove the item and its selector
+				selectorManager.releaseSelector(elem);
+			}
+		}
+	}
+	// the copy becomes the master now
+	selectedElements = newSelectedItems;
+};
+
+// Function: selectAllInCurrentLayer
+// Clears the selection, then adds all elements in the current layer to the selection.
+this.selectAllInCurrentLayer = function() {
+	var current_layer = getCurrentDrawing().getCurrentLayer();
+	if (current_layer) {
+		current_mode = "select";
+		selectOnly($(current_group || current_layer).children());
+	}
+};
+
+// Function: getMouseTarget
+// Gets the desired element from a mouse event
+// 
+// Parameters:
+// evt - Event object from the mouse event
+// 
+// Returns:
+// DOM element we want
+var getMouseTarget = this.getMouseTarget = function(evt) {
+	if (evt == null || evt.target == null) {
+		return null;
+	}
+	var mouse_target = evt.target;
+	
+	// if it was a <use>, Opera and WebKit return the SVGElementInstance
+	if (mouse_target.correspondingUseElement) mouse_target = mouse_target.correspondingUseElement;
+	
+	// for foreign content, go up until we find the foreignObject
+	// WebKit browsers set the mouse target to the svgcanvas div 
+	if ([mathns, htmlns].indexOf(mouse_target.namespaceURI) >= 0 && 
+		mouse_target.id != "svgcanvas") 
+	{
+		while (mouse_target.nodeName != "foreignObject") {
+			mouse_target = mouse_target.parentNode;
+			if(!mouse_target) return svgroot;
+		}
+	}
+	
+	// Get the desired mouse_target with jQuery selector-fu
+	// If it's root-like, select the root
+	var current_layer = getCurrentDrawing().getCurrentLayer();
+	if([svgroot, container, svgcontent, current_layer].indexOf(mouse_target) >= 0) {
+		return svgroot;
+	}
+	
+	var $target = $(mouse_target);
+
+	// If it's a selection grip, return the grip parent
+	if($target.closest('#selectorParentGroup').length) {
+		// While we could instead have just returned mouse_target, 
+		// this makes it easier to indentify as being a selector grip
+		return selectorManager.selectorParentGroup;
+	}
+
+	while (mouse_target.parentNode && mouse_target.parentNode !== (current_group || current_layer)) {
+		mouse_target = mouse_target.parentNode;
+	}
+	
+// 	
+// 	// go up until we hit a child of a layer
+// 	while (mouse_target.parentNode.parentNode.tagName == 'g') {
+// 		mouse_target = mouse_target.parentNode;
+// 	}
+	// Webkit bubbles the mouse event all the way up to the div, so we
+	// set the mouse_target to the svgroot like the other browsers
+// 	if (mouse_target.nodeName.toLowerCase() == "div") {
+// 		mouse_target = svgroot;
+// 	}
+	
+	return mouse_target;
+};
+
+// Mouse events
+(function() {
+	var d_attr = null,
+		start_x = null,
+		start_y = null,
+		r_start_x = null,
+		r_start_y = null,
+		init_bbox = {},
+		freehand = {
+			minx: null,
+			miny: null,
+			maxx: null,
+			maxy: null
+		};
+	
+	// - when we are in a create mode, the element is added to the canvas
+	//   but the action is not recorded until mousing up
+	// - when we are in select mode, select the element, remember the position
+	//   and do nothing else
+	var mouseDown = function(evt)
+	{
+		if (canvas.spaceKey) return;
+		var right_click = evt.button === 2;
+		
+		root_sctm = svgcontent.getScreenCTM().inverse();
+		isBotchedZoom = svgedit.browser.isGecko();
+		var pt = transformPoint( evt.pageX, evt.pageY, root_sctm ),
+			mouse_x = pt.x * (isBotchedZoom ? 1 : current_zoom),
+			mouse_y = pt.y * (isBotchedZoom ? 1 : current_zoom);
+			
+		evt.preventDefault();
+
+		if(right_click) {
+			current_mode = "select";
+			lastClickPoint = pt;
+		}
+		
+		var x = mouse_x / current_zoom,
+			y = mouse_y / current_zoom,
+			mouse_target = getMouseTarget(evt);
+		
+		if(mouse_target.tagName === 'a' && mouse_target.childNodes.length === 1) {
+			mouse_target = mouse_target.firstChild;
+		}
+		
+		// real_x/y ignores grid-snap value
+		var real_x = r_start_x = start_x = x;
+		var real_y = r_start_y = start_y = y;
+
+		if(curConfig.gridSnapping){
+			x = snapToGrid(x);
+			y = snapToGrid(y);
+			start_x = snapToGrid(start_x);
+			start_y = snapToGrid(start_y);
+		}
+
+		// if it is a selector grip, then it must be a single element selected, 
+		// set the mouse_target to that and update the mode to rotate/resize
+		
+		if (mouse_target == selectorManager.selectorParentGroup && selectedElements[0] != null) {
+			var grip = evt.target;
+			var griptype = elData(grip, "type");
+			// rotating
+			if (griptype == "rotate") {
+				current_mode = "rotate";
+				current_rotate_mode = elData(grip, "dir");
+			}
+			// resizing
+			else if(griptype == "resize") {
+				current_mode = "resize";
+				current_resize_mode = elData(grip, "dir");
+			}
+			mouse_target = selectedElements[0];
+		}
+		
+		start_transform = mouse_target.getAttribute("transform");
+		var tlist = getTransformList(mouse_target);
+		switch (current_mode) {
+			case "select":
+				started = true;
+				current_resize_mode = "none";
+				if(right_click) started = false;
+				
+				if (mouse_target != svgroot) {
+					// if this element is not yet selected, clear selection and select it
+					if (selectedElements.indexOf(mouse_target) == -1) {
+						// only clear selection if shift is not pressed (otherwise, add 
+						// element to selection)
+						if (!evt.shiftKey) {
+							// No need to do the call here as it will be done on addToSelection
+							clearSelection(true);
+						}
+						addToSelection([mouse_target]);
+						justSelected = mouse_target;
+						pathActions.clear();
+					}
+					// else if it's a path, go into pathedit mode in mouseup
+					
+					if(!right_click) {
+						// insert a dummy transform so if the element(s) are moved it will have
+						// a transform to use for its translate
+						for (var i = 0; i < selectedElements.length; ++i) {
+							if(selectedElements[i] == null) continue;
+							var slist = getTransformList(selectedElements[i]);
+							if(slist.numberOfItems) {
+								slist.insertItemBefore(svgroot.createSVGTransform(), 0);
+							} else {
+								slist.appendItem(svgroot.createSVGTransform());
+							}
+						}
+					}
+				}
+				else if(!right_click){
+					clearSelection();
+					current_mode = "multiselect";
+					if (rubberBox == null) {
+						rubberBox = selectorManager.getRubberBandBox();
+					}
+					r_start_x *= current_zoom;
+					r_start_y *= current_zoom;
+// 					console.log('p',[evt.pageX, evt.pageY]);					
+// 					console.log('c',[evt.clientX, evt.clientY]);	
+// 					console.log('o',[evt.offsetX, evt.offsetY]);	
+// 					console.log('s',[start_x, start_y]);
+					
+					assignAttributes(rubberBox, {
+						'x': r_start_x,
+						'y': r_start_y,
+						'width': 0,
+						'height': 0,
+						'display': 'inline'
+					}, 100);
+				}
+				break;
+			case "zoom": 
+				started = true;
+				if (rubberBox == null) {
+					rubberBox = selectorManager.getRubberBandBox();
+				}
+				assignAttributes(rubberBox, {
+						'x': real_x * current_zoom,
+						'y': real_x * current_zoom,
+						'width': 0,
+						'height': 0,
+						'display': 'inline'
+				}, 100);
+				break;
+			case "resize":
+				started = true;
+				start_x = x;
+				start_y = y;
+				
+				// Getting the BBox from the selection box, since we know we
+				// want to orient around it
+				init_bbox = svgedit.utilities.getBBox($('#selectedBox0')[0]);
+				var bb = {};
+				$.each(init_bbox, function(key, val) {
+					bb[key] = val/current_zoom;
+				});
+				init_bbox = bb;
+				// append three dummy transforms to the tlist so that
+				// we can translate,scale,translate in mousemove
+				var pos = getRotationAngle(mouse_target)?1:0;
+				
+				if(hasMatrixTransform(tlist)) {
+					tlist.insertItemBefore(svgroot.createSVGTransform(), pos);
+					tlist.insertItemBefore(svgroot.createSVGTransform(), pos);
+					tlist.insertItemBefore(svgroot.createSVGTransform(), pos);
+				} else {
+					tlist.appendItem(svgroot.createSVGTransform());
+					tlist.appendItem(svgroot.createSVGTransform());
+					tlist.appendItem(svgroot.createSVGTransform());
+					
+					if(svgedit.browser.supportsNonScalingStroke()) {
+						//Handle crash for newer Webkit: https://code.google.com/p/svg-edit/issues/detail?id=904
+						//Chromium issue: https://code.google.com/p/chromium/issues/detail?id=114625
+						// TODO: Remove this workaround (all isChrome blocks) once vendor fixes the issue
+						var isWebkit = svgedit.browser.isWebkit();
+						if(isWebkit) {
+							var delayedStroke = function(ele) {
+								var _stroke = ele.getAttributeNS(null, 'stroke');
+								ele.removeAttributeNS(null, 'stroke');
+								//Re-apply stroke after delay. Anything higher than 1 seems to cause flicker
+								setTimeout(function() { ele.setAttributeNS(null, 'stroke', _stroke) }, 0);
+							}
+						}
+						mouse_target.style.vectorEffect = 'non-scaling-stroke';
+						if(isWebkit) delayedStroke(mouse_target);
+
+						var all = mouse_target.getElementsByTagName('*'),
+						    len = all.length;
+						for(var i = 0; i < len; i++) {
+							all[i].style.vectorEffect = 'non-scaling-stroke';
+							if(isWebkit) delayedStroke(all[i]);
+						}
+					}
+				}
+				break;
+			case "fhellipse":
+			case "fhrect":
+			case "fhpath":
+				started = true;
+				d_attr = real_x + "," + real_y + " ";
+				var stroke_w = cur_shape.stroke_width == 0?1:cur_shape.stroke_width;
+				addSvgElementFromJson({
+					"element": "polyline",
+					"curStyles": true,
+					"attr": {
+						"points": d_attr,
+						"id": getNextId(),
+						"fill": "none",
+						"opacity": cur_shape.opacity / 2,
+						"stroke-linecap": "round",
+						"style": "pointer-events:none"
+					}
+				});
+				freehand.minx = real_x;
+				freehand.maxx = real_x;
+				freehand.miny = real_y;
+				freehand.maxy = real_y;
+				break;
+			case "image":
+				started = true;
+				var newImage = addSvgElementFromJson({
+					"element": "image",
+					"attr": {
+						"x": x,
+						"y": y,
+						"width": 0,
+						"height": 0,
+						"id": getNextId(),
+						"opacity": cur_shape.opacity / 2,
+						"style": "pointer-events:inherit"
+					}
+				});
+				setHref(newImage, last_good_img_url);
+				preventClickDefault(newImage);
+				break;
+			case "square":
+				// FIXME: once we create the rect, we lose information that this was a square
+				// (for resizing purposes this could be important)
+			case "rect":
+				started = true;
+				start_x = x;
+				start_y = y;
+				addSvgElementFromJson({
+					"element": "rect",
+					"curStyles": true,
+					"attr": {
+						"x": x,
+						"y": y,
+						"width": 0,
+						"height": 0,
+						"id": getNextId(),
+						"opacity": cur_shape.opacity / 2
+					}
+				});
+				break;
+			case "line":
+				started = true;
+				var stroke_w = cur_shape.stroke_width == 0?1:cur_shape.stroke_width;
+				addSvgElementFromJson({
+					"element": "line",
+					"curStyles": true,
+					"attr": {
+						"x1": x,
+						"y1": y,
+						"x2": x,
+						"y2": y,
+						"id": getNextId(),
+						"stroke": cur_shape.stroke,
+						"stroke-width": stroke_w,
+						"stroke-dasharray": cur_shape.stroke_dasharray,
+						"stroke-linejoin": cur_shape.stroke_linejoin,
+						"stroke-linecap": cur_shape.stroke_linecap,
+						"stroke-opacity": cur_shape.stroke_opacity,
+						"fill": "none",
+						"opacity": cur_shape.opacity / 2,
+						"style": "pointer-events:none"
+					}
+				});
+				break;
+			case "circle":
+				started = true;
+				addSvgElementFromJson({
+					"element": "circle",
+					"curStyles": true,
+					"attr": {
+						"cx": x,
+						"cy": y,
+						"r": 0,
+						"id": getNextId(),
+						"opacity": cur_shape.opacity / 2
+					}
+				});
+				break;
+			case "ellipse":
+				started = true;
+				addSvgElementFromJson({
+					"element": "ellipse",
+					"curStyles": true,
+					"attr": {
+						"cx": x,
+						"cy": y,
+						"rx": 0,
+						"ry": 0,
+						"id": getNextId(),
+						"opacity": cur_shape.opacity / 2
+					}
+				});
+				break;
+			case "text":
+				started = true;
+				var newText = addSvgElementFromJson({
+					"element": "text",
+					"curStyles": true,
+					"attr": {
+						"x": x,
+						"y": y,
+						"id": getNextId(),
+						"fill": cur_text.fill,
+						"stroke-width": cur_text.stroke_width,
+						"font-size": cur_text.font_size,
+						"font-family": cur_text.font_family,
+						"text-anchor": "left",
+						"xml:space": "preserve",
+						"opacity": cur_shape.opacity
+					}
+				});
+// 					newText.textContent = "text";
+				break;
+			case "path":
+				// Fall through
+			case "pathedit":
+				start_x *= current_zoom;
+				start_y *= current_zoom;
+				pathActions.mouseDown(evt, mouse_target, start_x, start_y);
+				started = true;
+				break;
+			case "textedit":
+				start_x *= current_zoom;
+				start_y *= current_zoom;
+				textActions.mouseDown(evt, mouse_target, start_x, start_y);
+				started = true;
+				break;
+			case "rotate":
+				started = true;
+				// we are starting an undoable change (a drag-rotation)
+				canvas.undoMgr.beginUndoableChange("transform", selectedElements);
+				document.getElementById("workarea").className = "rotate";
+				break;
+			default:
+				// This could occur in an extension
+				break;
+		}
+		
+		var ext_result = runExtensions("mouseDown", {
+			event: evt,
+			start_x: start_x,
+			start_y: start_y,
+			selectedElements: selectedElements
+		}, true);
+		
+		$.each(ext_result, function(i, r) {
+			if(r && r.started) {
+				started = true;
+			}
+		});
+		if (current_mode) {
+		  document.getElementById("workarea").className = 
+		    (current_mode == "resize")
+		    ? evt.target.style.cursor
+		    : current_mode
+		  }
+	};
+	
+	// in this function we do not record any state changes yet (but we do update
+	// any elements that are still being created, moved or resized on the canvas)
+	var mouseMove = function(evt) {
+	  	if (evt.originalEvent.touches && evt.originalEvent.touches.length > 1) return;
+		if (!started) return;
+		if(evt.button === 1 || canvas.spaceKey) return;
+		var selected = selectedElements[0],
+			pt = transformPoint( evt.pageX, evt.pageY, root_sctm ),
+			mouse_x = pt.x * (isBotchedZoom ? 1 : current_zoom),
+			mouse_y = pt.y * (isBotchedZoom ? 1 : current_zoom),
+			shape = getElem(getId());
+
+		var real_x = x = mouse_x / current_zoom;
+		var real_y = y = mouse_y / current_zoom;
+
+		if(curConfig.gridSnapping){
+			x = snapToGrid(x);
+			y = snapToGrid(y);
+		}
+
+		evt.preventDefault();
+		
+		switch (current_mode)
+		{
+			case "select":
+				// we temporarily use a translate on the element(s) being dragged
+				// this transform is removed upon mousing up and the element is 
+				// relocated to the new location
+				if (selectedElements[0] !== null) {
+					var dx = x - start_x;
+					var dy = y - start_y;
+					
+					if(curConfig.gridSnapping){
+						dx = snapToGrid(dx);
+						dy = snapToGrid(dy);
+					}
+      	  
+      	  if(evt.shiftKey) { 
+      	    var xya = snapToAngle(start_x,start_y,x,y); x=xya.x; y=xya.y;
+      	 }
+					if (dx != 0 || dy != 0) {
+						var len = selectedElements.length;
+						for (var i = 0; i < len; ++i) {
+							var selected = selectedElements[i];
+							if (selected == null) break;
+//							if (i==0) {
+//								var box = svgedit.utilities.getBBox(selected);
+// 									selectedBBoxes[i].x = box.x + dx;
+// 									selectedBBoxes[i].y = box.y + dy;
+//							}
+
+							// update the dummy transform in our transform list
+							// to be a translate
+							var xform = svgroot.createSVGTransform();
+							var tlist = getTransformList(selected);
+							// Note that if Webkit and there's no ID for this
+							// element, the dummy transform may have gotten lost.
+							// This results in unexpected behaviour
+							if (xya) {
+							  dx = xya.x - start_x
+							  dy = xya.y - start_y
+							}
+							xform.setTranslate(dx,dy);
+							if(tlist.numberOfItems) {
+								tlist.replaceItem(xform, 0);
+							} else {
+								tlist.appendItem(xform);
+							}
+							
+							// update our internal bbox that we're tracking while dragging
+							selectorManager.requestSelector(selected).resize();
+						}
+
+        	  //duplicate only once
+        	  // alt drag = create a clone and save the reference							
+  					if(evt.altKey) {
+  					  //clone doesn't exist yet
+  					  if (!canvas.addClones) {
+  					    canvas.addClones = canvas.cloneSelectedElements(0,0, xform);
+  					    canvas.removeClones = function(){
+  					      if (canvas.addClones) {
+  					        canvas.addClones.forEach(function(clone){
+  					          if (clone.parentNode) clone.parentNode.removeChild(clone)
+  					          canvas.addClones = false;
+  					        })
+  					      }
+  					    }
+  					    window.addEventListener("keyup", canvas.removeClones)
+        	    }
+        	  }
+			
+						call("transition", selectedElements);
+					}
+					
+
+
+					
+					
+				}
+				break;
+			case "multiselect":
+				real_x *= current_zoom;
+				real_y *= current_zoom;
+				assignAttributes(rubberBox, {
+					'x': Math.min(r_start_x, real_x),
+					'y': Math.min(r_start_y, real_y),
+					'width': Math.abs(real_x - r_start_x),
+					'height': Math.abs(real_y - r_start_y)
+				},100);
+
+				// for each selected:
+				// - if newList contains selected, do nothing
+				// - if newList doesn't contain selected, remove it from selected
+				// - for any newList that was not in selectedElements, add it to selected
+				var elemsToRemove = [], elemsToAdd = [],
+					newList = getIntersectionList(),
+					len = selectedElements.length;
+				
+				for (var i = 0; i < len; ++i) {
+					var ind = newList.indexOf(selectedElements[i]);
+					if (ind == -1) {
+						elemsToRemove.push(selectedElements[i]);
+					}
+					else {
+						newList[ind] = null;
+					}
+				}
+				
+				len = newList.length;
+				for (i = 0; i < len; ++i) { if (newList[i]) elemsToAdd.push(newList[i]); }
+				
+				if (elemsToRemove.length > 0) 
+					canvas.removeFromSelection(elemsToRemove);
+				
+				if (elemsToAdd.length > 0) 
+					addToSelection(elemsToAdd);
+					
+				break;
+			case "resize":
+				// we track the resize bounding box and translate/scale the selected element
+				// while the mouse is down, when mouse goes up, we use this to recalculate
+				// the shape's coordinates
+				var tlist = getTransformList(selected),
+					hasMatrix = hasMatrixTransform(tlist),
+					box = hasMatrix ? init_bbox : svgedit.utilities.getBBox(selected), 
+					left=box.x, top=box.y, width=box.width,
+					height=box.height, dx=(x-start_x), dy=(y-start_y);
+				
+				if(curConfig.gridSnapping){
+					dx = snapToGrid(dx);
+					dy = snapToGrid(dy);
+					height = snapToGrid(height);
+					width = snapToGrid(width);
+				}
+
+				// if rotated, adjust the dx,dy values
+				var angle = getRotationAngle(selected);
+				if (angle) {
+					var r = Math.sqrt( dx*dx + dy*dy ),
+						theta = Math.atan2(dy,dx) - angle * Math.PI / 180.0;
+					dx = r * Math.cos(theta);
+					dy = r * Math.sin(theta);
+				}
+
+				// if not stretching in y direction, set dy to 0
+				// if not stretching in x direction, set dx to 0
+				if(current_resize_mode.indexOf("n")==-1 && current_resize_mode.indexOf("s")==-1) {
+					dy = 0;
+				}
+				if(current_resize_mode.indexOf("e")==-1 && current_resize_mode.indexOf("w")==-1) {
+					dx = 0;
+				}				
+				
+				var ts = null,
+					tx = 0, ty = 0,
+					sy = height ? (height+dy)/height : 1, 
+					sx = width ? (width+dx)/width : 1;
+				// if we are dragging on the north side, then adjust the scale factor and ty
+				if(current_resize_mode.indexOf("n") >= 0) {
+					sy = height ? (height-dy)/height : 1;
+					ty = height;
+				}
+				
+				// if we dragging on the east side, then adjust the scale factor and tx
+				if(current_resize_mode.indexOf("w") >= 0) {
+					sx = width ? (width-dx)/width : 1;
+					tx = width;
+				}
+				
+				// update the transform list with translate,scale,translate
+				var translateOrigin = svgroot.createSVGTransform(),
+					scale = svgroot.createSVGTransform(),
+					translateBack = svgroot.createSVGTransform();
+
+				if(curConfig.gridSnapping){
+					left = snapToGrid(left);
+					tx = snapToGrid(tx);
+					top = snapToGrid(top);
+					ty = snapToGrid(ty);
+				}
+
+				translateOrigin.setTranslate(-(left+tx),-(top+ty));
+				if(evt.shiftKey) {
+					if(sx == 1) sx = sy
+					else sy = sx;
+				}
+				scale.setScale(sx,sy);
+				
+				translateBack.setTranslate(left+tx,top+ty);
+				if(hasMatrix) {
+					var diff = angle?1:0;
+					tlist.replaceItem(translateOrigin, 2+diff);
+					tlist.replaceItem(scale, 1+diff);
+					tlist.replaceItem(translateBack, 0+diff);
+				} else {
+					var N = tlist.numberOfItems;
+					tlist.replaceItem(translateBack, N-3);
+					tlist.replaceItem(scale, N-2);
+					tlist.replaceItem(translateOrigin, N-1);
+				}
+
+				selectorManager.requestSelector(selected).resize();
+				
+				call("transition", selectedElements);
+				
+				break;
+			case "zoom":
+				real_x *= current_zoom;
+				real_y *= current_zoom;
+				assignAttributes(rubberBox, {
+					'x': Math.min(r_start_x*current_zoom, real_x),
+					'y': Math.min(r_start_y*current_zoom, real_y),
+					'width': Math.abs(real_x - r_start_x*current_zoom),
+					'height': Math.abs(real_y - r_start_y*current_zoom)
+				},100);			
+				break;
+			case "text":
+				assignAttributes(shape,{
+					'x': x,
+					'y': y
+				},1000);
+				break;
+			case "line":
+				// Opera has a problem with suspendRedraw() apparently
+				var handle = null;
+				if (!window.opera) svgroot.suspendRedraw(1000);
+
+				if(curConfig.gridSnapping){
+					x = snapToGrid(x);
+					y = snapToGrid(y);
+				}
+
+				var x2 = x;
+				var y2 = y;					
+
+				if(evt.shiftKey) { var xya = snapToAngle(start_x,start_y,x2,y2); x2=xya.x; y2=xya.y; }
+				
+				shape.setAttributeNS(null, "x2", x2);
+				shape.setAttributeNS(null, "y2", y2);
+				if (!window.opera) svgroot.unsuspendRedraw(handle);
+				break;
+			case "foreignObject":
+				// fall through
+			case "square":
+				// fall through
+			case "rect":
+			case "image":
+				var square = (current_mode == 'square') || evt.shiftKey,
+					w = Math.abs(x - start_x),
+					h = Math.abs(y - start_y),
+					new_x, new_y;
+				if(square) {
+					w = h = Math.max(w, h);
+					new_x = start_x < x ? start_x : start_x - w;
+					new_y = start_y < y ? start_y : start_y - h;
+				} else {
+					new_x = Math.min(start_x,x);
+					new_y = Math.min(start_y,y);
+				}
+				if (evt.altKey){
+				  w *=2;
+				  h *=2; 
+				  new_x = start_x - w/2;
+				  new_y = start_y - h/2;
+				}
+	
+				if(curConfig.gridSnapping){
+					w = snapToGrid(w);
+					h = snapToGrid(h);
+					new_x = snapToGrid(new_x);
+					new_y = snapToGrid(new_y);
+				}
+
+				assignAttributes(shape,{
+					'width': w,
+					'height': h,
+					'x': new_x,
+					'y': new_y
+				},1000);
+				
+				break;
+			case "circle":
+				var c = $(shape).attr(["cx", "cy"]);
+				var cx = c.cx, cy = c.cy,
+					rad = Math.sqrt( (x-cx)*(x-cx) + (y-cy)*(y-cy) );
+				if(curConfig.gridSnapping){
+					rad = snapToGrid(rad);
+				}
+				shape.setAttributeNS(null, "r", rad);
+				break;
+			case "ellipse":
+				var c = $(shape).attr(["cx", "cy"]);
+				var cx = Math.abs(start_x + (x - start_x)/2)
+				var cy = Math.abs(start_y + (y - start_y)/2);
+ 
+				// Opera has a problem with suspendRedraw() apparently
+					handle = null;
+				if (!window.opera) svgroot.suspendRedraw(1000);
+				if(curConfig.gridSnapping){
+					x = snapToGrid(x);
+					cx = snapToGrid(cx);
+					y = snapToGrid(y);
+					cy = snapToGrid(cy);
+				}
+				var rx = Math.abs(start_x - cx)
+				var ry = Math.abs(start_y - cy);
+        if (evt.shiftKey) {
+          ry = rx
+          cy = (y > start_y) ? start_y + rx : start_y - rx
+          
+        }
+        if (evt.altKey) {
+          cx = start_x
+          cy = start_y
+          rx = Math.abs(x - cx)
+  				ry = evt.shiftKey ? rx : Math.abs(y - cy);
+        }
+				shape.setAttributeNS(null, "rx", rx );
+				shape.setAttributeNS(null, "ry", ry );
+				shape.setAttributeNS(null, "cx", cx );
+				shape.setAttributeNS(null, "cy", cy );
+				if (!window.opera) svgroot.unsuspendRedraw(handle);
+				break;
+			case "fhellipse":
+			case "fhrect":
+				freehand.minx = Math.min(real_x, freehand.minx);
+				freehand.maxx = Math.max(real_x, freehand.maxx);
+				freehand.miny = Math.min(real_y, freehand.miny);
+				freehand.maxy = Math.max(real_y, freehand.maxy);
+			// break; missing on purpose
+			case "fhpath":
+				d_attr += + real_x + "," + real_y + " ";
+				shape.setAttributeNS(null, "points", d_attr);
+				break;
+			// update path stretch line coordinates
+			case "path":
+				// fall through
+			case "pathedit":
+				x *= current_zoom;
+				y *= current_zoom;
+				
+				if(curConfig.gridSnapping){
+					x = snapToGrid(x);
+					y = snapToGrid(y);
+					start_x = snapToGrid(start_x);
+					start_y = snapToGrid(start_y);
+				}
+				if(evt.shiftKey) {
+					var path = svgedit.path.path;
+					if(path) {
+						var x1 = path.dragging?path.dragging[0]:start_x;
+						var y1 = path.dragging?path.dragging[1]:start_y;
+					} else {
+						var x1 = start_x;
+						var y1 = start_y;
+					}
+					var xya = snapToAngle(x1,y1,x,y);
+					x=xya.x; y=xya.y;
+				}
+				
+				if(rubberBox && rubberBox.getAttribute('display') !== 'none') {
+					real_x *= current_zoom;
+					real_y *= current_zoom;
+					assignAttributes(rubberBox, {
+						'x': Math.min(r_start_x*current_zoom, real_x),
+						'y': Math.min(r_start_y*current_zoom, real_y),
+						'width': Math.abs(real_x - r_start_x*current_zoom),
+						'height': Math.abs(real_y - r_start_y*current_zoom)
+					},100);	
+				}
+				pathActions.mouseMove(evt, x, y);
+				
+				break;
+			case "textedit":
+				x *= current_zoom;
+				y *= current_zoom;
+// 					if(rubberBox && rubberBox.getAttribute('display') != 'none') {
+// 						assignAttributes(rubberBox, {
+// 							'x': Math.min(start_x,x),
+// 							'y': Math.min(start_y,y),
+// 							'width': Math.abs(x-start_x),
+// 							'height': Math.abs(y-start_y)
+// 						},100);
+// 					}
+				
+				textActions.mouseMove(mouse_x, mouse_y);
+				
+				break;
+			case "rotate":
+				var box = svgedit.utilities.getBBox(selected),
+					cx = box.x + box.width/2, 
+					cy = box.y + box.height/2,
+					m = getMatrix(selected),
+					center = transformPoint(cx,cy,m);
+				cx = center.x;
+				cy = center.y;
+				var ccx = box.x // ne
+				var ccy = box.y // ne
+				if (current_rotate_mode == "nw")  ccx = box.x + box.width;
+				if (current_rotate_mode == "se")  ccy = box.y + box.height;
+				if (current_rotate_mode == "sw"){ ccx = box.x + box.width; ccy = box.y + box.height;  }
+				compensation_angle = ((Math.atan2(cy-ccy,cx-ccx)  * (180/Math.PI))-90) % 360;
+				var angle = ((Math.atan2(cy-y,cx-x)  * (180/Math.PI))-90) % 360;
+				angle += compensation_angle;
+				if(curConfig.gridSnapping){
+					angle = snapToGrid(angle);
+				}
+				if(evt.shiftKey) { // restrict rotations to nice angles (WRS)
+					var snap = 45;
+					angle= Math.round(angle/snap)*snap;
+				}
+
+				canvas.setRotationAngle(angle<-180?(360+angle):angle, true);
+				call("transition", selectedElements);
+				break;
+			default:
+				break;
+		}
+		
+		runExtensions("mouseMove", {
+			event: evt,
+			mouse_x: mouse_x,
+			mouse_y: mouse_y,
+			selected: selected
+		});
+
+	}; // mouseMove()
+	
+	
+	/* mouseover mode
+	var mouseOver = function(evt) {
+	  
+	  if(canvas.spaceKey || evt.button === 1 || current_mode != "select") return;
+	  evt.stopPropagation();
+	  mouse_target = getMouseTarget(evt);
+	  if (svghover.lastChild) svghover.removeChild(svghover.lastChild);
+	  
+	  if (mouse_target.id == "svgroot") return
+	  switch (mouse_target.nodeName) {
+	    case "polyline":
+	    case "line":
+	    case "path":
+	    case "ellipse":
+	    case "rect":
+					var clone = mouse_target.cloneNode(true); 
+					clone.setAttribute("stroke", "#c00")
+					clone.setAttribute("stroke-width", "1")
+					clone.setAttribute("stroke-opacity", "1")
+					clone.setAttribute("shape-rendering", "crispEdges")
+					clone.setAttribute("fill", "none")
+					hover_group.appendChild(clone);
+			break;
+				
+	    default:
+	    break;
+	  }
+	}
+	*/
+	
+	// - in create mode, the element's opacity is set properly, we create an InsertElementCommand
+	//   and store it on the Undo stack
+	// - in move/resize mode, the element's attributes which were affected by the move/resize are
+	//   identified, a ChangeElementCommand is created and stored on the stack for those attrs
+	//   this is done in when we recalculate the selected dimensions()
+	var mouseUp = function(evt)
+	{
+	  canvas.addClones = false;
+	  window.removeEventListener("keyup", canvas.removeClones)
+	  selectedElements = selectedElements.filter(Boolean)
+		if(evt.button === 2) return;
+		var tempJustSelected = justSelected;
+		justSelected = null;
+		if (!started) return;
+		var pt = transformPoint( evt.pageX, evt.pageY, root_sctm ),
+			mouse_x = pt.x * current_zoom,
+			mouse_y = pt.y * current_zoom,
+			x = mouse_x / current_zoom,
+			y = mouse_y / current_zoom,
+			element = getElem(getId()),
+			keep = false;
+
+		var real_x = x;
+		var real_y = y;
+
+		// TODO: Make true when in multi-unit mode
+		var useUnit = false; // (curConfig.baseUnit !== 'px');
+		started = false;
+		switch (current_mode)
+		{
+			// intentionally fall-through to select here
+			case "resize":
+			case "multiselect":
+				if (rubberBox != null) {
+					rubberBox.setAttribute("display", "none");
+					curBBoxes = [];
+				}
+				current_mode = "select";
+			case "select":
+				if (selectedElements[0] != null) {
+					// if we only have one selected element
+					if (selectedElements.length == 1) {
+						// set our current stroke/fill properties to the element's
+						var selected = selectedElements[0];
+						switch ( selected.tagName ) {
+							case "g":
+							case "use":
+							case "image":
+							case "foreignObject":
+								break;
+							default:
+								cur_properties.fill = selected.getAttribute("fill");
+								cur_properties.fill_opacity = selected.getAttribute("fill-opacity");
+								cur_properties.stroke = selected.getAttribute("stroke");
+								cur_properties.stroke_opacity = selected.getAttribute("stroke-opacity");
+								cur_properties.stroke_width = selected.getAttribute("stroke-width");
+								cur_properties.stroke_dasharray = selected.getAttribute("stroke-dasharray");
+								cur_properties.stroke_linejoin = selected.getAttribute("stroke-linejoin");
+								cur_properties.stroke_linecap = selected.getAttribute("stroke-linecap");
+						}
+						if (selected.tagName == "text") {
+							cur_text.font_size = selected.getAttribute("font-size");
+							cur_text.font_family = selected.getAttribute("font-family");
+						}
+						selectorManager.requestSelector(selected).showGrips(true);
+						
+						// This shouldn't be necessary as it was done on mouseDown...
+// 							call("selected", [selected]);
+					}
+					// always recalculate dimensions to strip off stray identity transforms
+					recalculateAllSelectedDimensions();
+
+					// if it was being dragged/resized
+					var isBotchedZoom = svgedit.browser.isGecko();
+					r_start_x = isBotchedZoom ? r_start_x * current_zoom : r_start_x; 
+					r_start_y = isBotchedZoom ? r_start_y * current_zoom : r_start_y; 
+					var difference_x = Math.abs(real_x-r_start_x);
+					var difference_y = Math.abs(real_y-r_start_y);
+
+					if (difference_y > 1 || difference_y > 1) {
+						var len = selectedElements.length;
+						for	(var i = 0; i < len; ++i) {
+							if (selectedElements[i] == null) break;
+							if(!selectedElements[i].firstChild) {
+								// Not needed for groups (incorrectly resizes elems), possibly not needed at all?
+								selectorManager.requestSelector(selectedElements[i]).resize();
+							}
+						}
+					}
+					// no change in position/size, so maybe we should move to pathedit
+					else {
+						var t = evt.target;
+						if (selectedElements[0].nodeName === "path" && selectedElements[1] == null) {
+							pathActions.select(selectedElements[0]);
+						} // if it was a path
+						// else, if it was selected and this is a shift-click, remove it from selection
+						else if (evt.shiftKey) {
+							if(tempJustSelected != t) {
+								canvas.removeFromSelection([t]);
+							}
+						}
+					} // no change in mouse position
+					
+					// Remove non-scaling stroke
+					if(svgedit.browser.supportsNonScalingStroke()) {
+						var elem = selectedElements[0];
+						if (elem) {
+							elem.removeAttribute('style');
+							svgedit.utilities.walkTree(elem, function(elem) {
+								elem.removeAttribute('style');
+							});
+						}
+					}
+
+				}
+				return;
+				break;
+			case "zoom":
+				if (rubberBox != null) {
+					rubberBox.setAttribute("display", "none");
+				}
+				var factor = evt.altKey?.5:2;
+				call("zoomed", {
+					'x': Math.min(r_start_x, real_x),
+					'y': Math.min(r_start_y, real_y),
+					'width': Math.abs(real_x - r_start_x),
+					'height': Math.abs(real_y - r_start_y),
+					'factor': factor
+				});
+				return;
+			case "fhpath":
+				// Check that the path contains at least 2 points; a degenerate one-point path
+				// causes problems.
+				// Webkit ignores how we set the points attribute with commas and uses space
+				// to separate all coordinates, see https://bugs.webkit.org/show_bug.cgi?id=29870
+				var coords = element.getAttribute('points');
+				var commaIndex = coords.indexOf(',');
+				if (commaIndex >= 0) {
+					keep = coords.indexOf(',', commaIndex+1) >= 0;
+				} else {
+					keep = coords.indexOf(' ', coords.indexOf(' ')+1) >= 0;
+				}
+				if (keep) {
+					element = pathActions.smoothPolylineIntoPath(element);
+				}
+				break;
+			case "line":
+				var attrs = $(element).attr(["x1", "x2", "y1", "y2"]);
+				keep = (attrs.x1 != attrs.x2 || attrs.y1 != attrs.y2);
+				break;
+			case "foreignObject":
+			case "square":
+			case "rect":
+			case "image":
+				var attrs = $(element).attr(["width", "height"]);
+				// Image should be kept regardless of size (use inherit dimensions later)
+				keep = (attrs.width != 0 || attrs.height != 0) || current_mode === "image";
+				break;
+			case "circle":
+				keep = (element.getAttribute('r') != 0);
+				break;
+			case "ellipse":
+				var attrs = $(element).attr(["rx", "ry"]);
+				keep = (attrs.rx != null || attrs.ry != null);
+				break;
+			case "fhellipse":
+				if ((freehand.maxx - freehand.minx) > 0 &&
+					(freehand.maxy - freehand.miny) > 0) {
+					element = addSvgElementFromJson({
+						"element": "ellipse",
+						"curStyles": true,
+						"attr": {
+							"cx": (freehand.minx + freehand.maxx) / 2,
+							"cy": (freehand.miny + freehand.maxy) / 2,
+							"rx": (freehand.maxx - freehand.minx) / 2,
+							"ry": (freehand.maxy - freehand.miny) / 2,
+							"id": getId()
+						}
+					});
+					call("changed",[element]);
+					keep = true;
+				}
+				break;
+			case "fhrect":
+				if ((freehand.maxx - freehand.minx) > 0 &&
+					(freehand.maxy - freehand.miny) > 0) {
+					element = addSvgElementFromJson({
+						"element": "rect",
+						"curStyles": true,
+						"attr": {
+							"x": freehand.minx,
+							"y": freehand.miny,
+							"width": (freehand.maxx - freehand.minx),
+							"height": (freehand.maxy - freehand.miny),
+							"id": getId()
+						}
+					});
+					call("changed",[element]);
+					keep = true;
+				}
+				break;
+			case "text":
+				keep = true;
+				selectOnly([element]);
+				textActions.start(element);
+				break;
+			case "path":
+				// set element to null here so that it is not removed nor finalized
+				element = null;
+				// continue to be set to true so that mouseMove happens
+				started = true;
+				
+				var res = pathActions.mouseUp(evt, element, mouse_x, mouse_y);
+				element = res.element;
+				keep = res.keep;
+				break;
+			case "pathedit":
+				keep = true;
+				element = null;
+				pathActions.mouseUp(evt);
+				break;
+			case "textedit":
+				keep = false;
+				element = null;
+				textActions.mouseUp(evt, mouse_x, mouse_y);
+				break;
+			case "rotate":
+				keep = true;
+				element = null;
+				current_mode = "select";
+				var batchCmd = canvas.undoMgr.finishUndoableChange();
+				if (!batchCmd.isEmpty()) { 
+					addCommandToHistory(batchCmd);
+				}
+				// perform recalculation to weed out any stray identity transforms that might get stuck
+				recalculateAllSelectedDimensions();
+				call("changed", selectedElements);
+				break;
+			default:
+				// This could occur in an extension
+				break;
+		}
+		
+		var ext_result = runExtensions("mouseUp", {
+			event: evt,
+			mouse_x: mouse_x,
+			mouse_y: mouse_y
+		}, true);
+		
+		$.each(ext_result, function(i, r) {
+			if(r) {
+				keep = r.keep || keep;
+				element = r.element;
+				started = r.started || started;
+			}
+		});
+		
+		if (!keep && element != null) {
+			getCurrentDrawing().releaseId(getId());
+			element.parentNode.removeChild(element);
+			element = null;
+			
+			var t = evt.target;
+			
+			// if this element is in a group, go up until we reach the top-level group 
+			// just below the layer groups
+			// TODO: once we implement links, we also would have to check for <a> elements
+			while (t.parentNode.parentNode.tagName == "g") {
+				t = t.parentNode;
+			}
+			// if we are not in the middle of creating a path, and we've clicked on some shape, 
+			// then go to Select mode.
+			// WebKit returns <div> when the canvas is clicked, Firefox/Opera return <svg>
+			if ( (current_mode != "path" || !drawn_path) &&
+				t.parentNode.id != "selectorParentGroup" &&
+				t.id != "svgcanvas" && t.id != "svgroot") 
+			{
+				// switch into "select" mode if we've clicked on an element
+				canvas.setMode("select");
+				selectOnly([t], true);
+			}
+			
+		} else if (element != null) {
+			canvas.addedNew = true;
+			
+			if(useUnit) svgedit.units.convertAttrs(element);
+			
+			var ani_dur = .2, c_ani;
+			if(opac_ani.beginElement && element.getAttribute('opacity') != cur_shape.opacity) {
+				c_ani = $(opac_ani).clone().attr({
+					to: cur_shape.opacity,
+					dur: ani_dur
+				}).appendTo(element);
+				try {
+					// Fails in FF4 on foreignObject
+					c_ani[0].beginElement();
+				} catch(e){}
+			} else {
+				ani_dur = 0;
+			}
+			
+			// Ideally this would be done on the endEvent of the animation,
+			// but that doesn't seem to be supported in Webkit
+			setTimeout(function() {
+				if(c_ani) c_ani.remove();
+				element.setAttribute("opacity", cur_shape.opacity);
+				element.setAttribute("style", "pointer-events:inherit");
+				cleanupElement(element);
+				if(current_mode === "path") {
+					pathActions.toEditMode(element);
+				} else {
+					if(curConfig.selectNew) {
+						selectOnly([element], true);
+					}
+				}
+				// we create the insert command that is stored on the stack
+				// undo means to call cmd.unapply(), redo means to call cmd.apply()
+				addCommandToHistory(new InsertElementCommand(element));
+				
+				call("changed",[element]);
+			}, ani_dur * 1000);
+		}
+		
+		start_transform = null;
+	};
+	
+	var dblClick = function(evt) {
+		var evt_target = evt.target;
+		var parent = evt_target.parentNode;
+		var mouse_target = getMouseTarget(evt);
+		var tagName = mouse_target.tagName;
+
+		if(parent === current_group) return;
+		
+		if(tagName === 'text' && current_mode !== 'textedit') {
+			var pt = transformPoint( evt.pageX, evt.pageY, root_sctm );
+			textActions.select(mouse_target, pt.x, pt.y);
+		}
+		
+		if((tagName === "g" || tagName === "a") && getRotationAngle(mouse_target)) {
+			// TODO: Allow method of in-group editing without having to do 
+			// this (similar to editing rotated paths)
+		
+			// Ungroup and regroup
+			pushGroupProperties(mouse_target);
+			mouse_target = selectedElements[0];
+			clearSelection(true);
+		}
+		// Reset context
+		if(current_group) {
+			leaveContext();
+		}
+		
+		if((parent.tagName !== 'g' && parent.tagName !== 'a') ||
+			parent === getCurrentDrawing().getCurrentLayer() ||
+			mouse_target === selectorManager.selectorParentGroup)
+		{
+			// Escape from in-group edit
+			return;
+		}
+		setContext(mouse_target);
+	}
+
+	// prevent links from being followed in the canvas
+	var handleLinkInCanvas = function(e) {
+		e.preventDefault();
+		return false;
+	};
+	
+	// Added mouseup to the container here.
+	// TODO(codedread): Figure out why after the Closure compiler, the window mouseup is ignored.
+	$(container).mousedown(mouseDown).mousemove(mouseMove).click(handleLinkInCanvas).dblclick(dblClick).mouseup(mouseUp);
+//	$(window).mouseup(mouseUp);
+	
+	$(container).bind("mousewheel DOMMouseScroll", function(e){
+		if(!e.shiftKey) return;
+		e.preventDefault();
+
+		root_sctm = svgcontent.getScreenCTM().inverse();
+		var pt = transformPoint( e.pageX, e.pageY, root_sctm );
+		var bbox = {
+			'x': pt.x,
+			'y': pt.y,
+			'width': 0,
+			'height': 0
+		};
+
+		// Respond to mouse wheel in IE/Webkit/Opera.
+		// (It returns up/dn motion in multiples of 120)
+		if(e.wheelDelta) {
+			if (e.wheelDelta >= 120) {
+				bbox.factor = 2;
+			} else if (e.wheelDelta <= -120) {
+				bbox.factor = .5;
+			}
+		} else if(e.detail) {
+			if (e.detail > 0) {
+				bbox.factor = .5;
+			} else if (e.detail < 0) {
+				bbox.factor = 2;			
+			}				
+		}
+		
+		if(!bbox.factor) return;
+		call("zoomed", bbox);
+	});
+	
+}());
+
+// Function: preventClickDefault
+// Prevents default browser click behaviour on the given element
+//
+// Parameters:
+// img - The DOM element to prevent the cilck on
+var preventClickDefault = function(img) {
+	$(img).click(function(e){e.preventDefault()});
+}
+
+// Group: Text edit functions
+// Functions relating to editing text elements
+var textActions = canvas.textActions = function() {
+	var curtext;
+	var textinput;
+	var cursor;
+	var selblock;
+	var blinker;
+	var chardata = [];
+	var textbb, transbb;
+	var matrix;
+	var last_x, last_y;
+	var allow_dbl;
+	
+	function setCursor(index) {
+		var empty = (textinput.value === "");
+		$(textinput).focus();
+	
+		if(!arguments.length) {
+			if(empty) {
+				index = 0;
+			} else {
+				if(textinput.selectionEnd !== textinput.selectionStart) return;
+				index = textinput.selectionEnd;
+			}
+		}
+		
+		var charbb;
+		charbb = chardata[index];
+		if(!empty) {
+			textinput.setSelectionRange(index, index);
+		}
+		cursor = getElem("text_cursor");
+		if (!cursor) {
+			cursor = document.createElementNS(svgns, "line");
+			assignAttributes(cursor, {
+				'id': "text_cursor",
+				'stroke': "#333",
+				'stroke-width': 1
+			});
+			cursor = getElem("selectorParentGroup").appendChild(cursor);
+		}
+		
+		if(!blinker) {
+			blinker = setInterval(function() {
+				var show = (cursor.getAttribute('display') === 'none');
+				cursor.setAttribute('display', show?'inline':'none');
+			}, 600);
+
+		}
+		
+		
+		var start_pt = ptToScreen(charbb.x, textbb.y);
+		var end_pt = ptToScreen(charbb.x, (textbb.y + textbb.height));
+		
+		assignAttributes(cursor, {
+			x1: start_pt.x,
+			y1: start_pt.y,
+			x2: end_pt.x,
+			y2: end_pt.y,
+			visibility: 'visible',
+			display: 'inline'
+		});
+		
+		if(selblock) selblock.setAttribute('d', 'M 0 0');
+	}
+	
+	function setSelection(start, end, skipInput) {
+		if(start === end) {
+			setCursor(end);
+			return;
+		}
+	
+		if(!skipInput) {
+			textinput.setSelectionRange(start, end);
+		}
+		
+		selblock = getElem("text_selectblock");
+		if (!selblock) {
+
+			selblock = document.createElementNS(svgns, "path");
+			assignAttributes(selblock, {
+				'id': "text_selectblock",
+				'fill': "green",
+				'opacity': .5,
+				'style': "pointer-events:none"
+			});
+			getElem("selectorParentGroup").appendChild(selblock);
+		}
+
+		
+		var startbb = chardata[start];
+		
+		var endbb = chardata[end];
+		
+		cursor.setAttribute('visibility', 'hidden');
+		
+		var tl = ptToScreen(startbb.x, textbb.y),
+			tr = ptToScreen(startbb.x + (endbb.x - startbb.x), textbb.y),
+			bl = ptToScreen(startbb.x, textbb.y + textbb.height),
+			br = ptToScreen(startbb.x + (endbb.x - startbb.x), textbb.y + textbb.height);
+		
+		
+		var dstr = "M" + tl.x + "," + tl.y
+					+ " L" + tr.x + "," + tr.y
+					+ " " + br.x + "," + br.y
+					+ " " + bl.x + "," + bl.y + "z";
+		
+		assignAttributes(selblock, {
+			d: dstr,
+			'display': 'inline'
+		});
+	}
+	
+	function getIndexFromPoint(mouse_x, mouse_y) {
+		// Position cursor here
+		var pt = svgroot.createSVGPoint();
+		pt.x = mouse_x;
+		pt.y = mouse_y;
+
+		// No content, so return 0
+		if(chardata.length == 1) return 0;
+		// Determine if cursor should be on left or right of character
+		var charpos = curtext.getCharNumAtPosition(pt);
+		if(charpos < 0) {
+			// Out of text range, look at mouse coords
+			charpos = chardata.length - 2;
+			if(mouse_x <= chardata[0].x) {
+				charpos = 0;
+			}
+		} else if(charpos >= chardata.length - 2) {
+			charpos = chardata.length - 2;
+		}
+		var charbb = chardata[charpos];
+		var mid = charbb.x + (charbb.width/2);
+		if(mouse_x > mid) {
+			charpos++;
+		}
+		return charpos;
+	}
+	
+	function setCursorFromPoint(mouse_x, mouse_y) {
+		setCursor(getIndexFromPoint(mouse_x, mouse_y));
+	}
+	
+	function setEndSelectionFromPoint(x, y, apply) {
+		var i1 = textinput.selectionStart;
+		var i2 = getIndexFromPoint(x, y);
+		
+		var start = Math.min(i1, i2);
+		var end = Math.max(i1, i2);
+		setSelection(start, end, !apply);
+	}
+		
+	function screenToPt(x_in, y_in) {
+		var out = {
+			x: x_in,
+			y: y_in
+		}
+		
+		out.x /= current_zoom;
+		out.y /= current_zoom;			
+
+		if(matrix) {
+			var pt = transformPoint(out.x, out.y, matrix.inverse());
+			out.x = pt.x;
+			out.y = pt.y;
+		}
+		
+		return out;
+	}	
+	
+	function ptToScreen(x_in, y_in) {
+		var out = {
+			x: x_in,
+			y: y_in
+		}
+		
+		if(matrix) {
+			var pt = transformPoint(out.x, out.y, matrix);
+			out.x = pt.x;
+			out.y = pt.y;
+		}
+		
+		out.x *= current_zoom;
+		out.y *= current_zoom;
+		
+		return out;
+	}
+	
+	function hideCursor() {
+		if(cursor) {
+			cursor.setAttribute('visibility', 'hidden');
+		}
+	}
+	
+	function selectAll(evt) {
+		setSelection(0, curtext.textContent.length);
+		$(this).unbind(evt);
+	}
+
+	function selectWord(evt) {
+		if(!allow_dbl || !curtext) return;
+	
+		var ept = transformPoint( evt.pageX, evt.pageY, root_sctm ),
+			mouse_x = ept.x * current_zoom,
+			mouse_y = ept.y * current_zoom;
+		var pt = screenToPt(mouse_x, mouse_y);
+		
+		var index = getIndexFromPoint(pt.x, pt.y);
+		var str = curtext.textContent;
+		var first = str.substr(0, index).replace(/[a-z0-9]+$/i, '').length;
+		var m = str.substr(index).match(/^[a-z0-9]+/i);
+		var last = (m?m[0].length:0) + index;
+		setSelection(first, last);
+		
+		// Set tripleclick
+		$(evt.target).click(selectAll);
+		setTimeout(function() {
+			$(evt.target).unbind('click', selectAll);
+		}, 300);
+		
+	}
+
+	return {
+		select: function(target, x, y) {
+			curtext = target;
+			textActions.toEditMode(x, y);
+		},
+		start: function(elem) {
+			curtext = elem;
+			textActions.toEditMode();
+		},
+		mouseDown: function(evt, mouse_target, start_x, start_y) {
+			var pt = screenToPt(start_x, start_y);
+		
+			textinput.focus();
+			setCursorFromPoint(pt.x, pt.y);
+			last_x = start_x;
+			last_y = start_y;
+			
+			// TODO: Find way to block native selection
+		},
+		mouseMove: function(mouse_x, mouse_y) {
+			var pt = screenToPt(mouse_x, mouse_y);
+			setEndSelectionFromPoint(pt.x, pt.y);
+		},			
+		mouseUp: function(evt, mouse_x, mouse_y) {
+			var pt = screenToPt(mouse_x, mouse_y);
+			
+			setEndSelectionFromPoint(pt.x, pt.y, true);
+			
+			// TODO: Find a way to make this work: Use transformed BBox instead of evt.target 
+// 				if(last_x === mouse_x && last_y === mouse_y
+// 					&& !svgedit.math.rectsIntersect(transbb, {x: pt.x, y: pt.y, width:0, height:0})) {
+// 					textActions.toSelectMode(true);				
+// 				}
+
+			if(
+				evt.target !== curtext
+				&&	mouse_x < last_x + 2
+				&& mouse_x > last_x - 2
+				&&	mouse_y < last_y + 2
+				&& mouse_y > last_y - 2) {
+
+				textActions.toSelectMode(true);
+			}
+
+		},
+		setCursor: setCursor,
+		toEditMode: function(x, y) {
+		  selectOnly([curtext], false)
+			allow_dbl = false;
+			current_mode = "textedit";
+    	selectorManager.requestSelector(curtext).showGrips(false);
+		
+			// Make selector group accept clicks
+			var sel = selectorManager.requestSelector(curtext).selectorRect;
+			
+			textActions.init();
+
+			$(curtext).css('cursor', 'text');
+			
+			if(!arguments.length) {
+				setCursor();
+			} else {
+				var pt = screenToPt(x, y);
+				setCursorFromPoint(pt.x, pt.y);
+			}
+			
+			setTimeout(function() {
+				allow_dbl = true;
+			}, 300);
+		},
+		toSelectMode: function(selectElem) {
+			current_mode = "select";
+			clearInterval(blinker);
+			blinker = null;
+			if(selblock) $(selblock).attr('display','none');
+			if(cursor) $(cursor).attr('visibility','hidden');
+			$(curtext).css('cursor', 'move');
+			
+			if(selectElem) {
+				clearSelection();
+				$(curtext).css('cursor', 'move');
+				
+				call("selected", [curtext]);
+				addToSelection([curtext], true);
+			}
+			if(curtext && !curtext.textContent.length) {
+				// No content, so delete
+				canvas.deleteSelectedElements();
+			}
+			
+			$(textinput).blur();
+			
+			curtext = false;
+			
+// 				if(svgedit.browser.supportsEditableText()) {
+// 					curtext.removeAttribute('editable');
+// 				}
+		},
+		setInputElem: function(elem) {
+			textinput = elem;
+// 			$(textinput).blur(hideCursor);
+		},
+		clear: function() {
+			if(current_mode == "textedit") {
+				textActions.toSelectMode();
+			}
+		},
+		init: function(inputElem) {
+			if(!curtext) return;
+
+// 				if(svgedit.browser.supportsEditableText()) {
+// 					curtext.select();
+// 					return;
+// 				}
+		
+			if(!curtext.parentNode) {
+				// Result of the ffClone, need to get correct element
+				curtext = selectedElements[0];
+				selectorManager.requestSelector(curtext).showGrips(false);
+			}
+			
+			var str = curtext.textContent;
+			var len = str.length;
+			
+			var xform = curtext.getAttribute('transform');
+
+			textbb = svgedit.utilities.getBBox(curtext);
+			
+			matrix = xform?getMatrix(curtext):null;
+
+			chardata = Array(len);
+			textinput.focus();
+			
+			$(curtext).unbind('dblclick', selectWord).dblclick(selectWord);
+			
+			if(!len) {
+				var end = {x: textbb.x + (textbb.width/2), width: 0};
+			}
+			
+			for(var i=0; i<len; i++) {
+				var start = curtext.getStartPositionOfChar(i);
+				var end = curtext.getEndPositionOfChar(i);
+				
+				if(!svgedit.browser.supportsGoodTextCharPos()) {
+					var offset = canvas.contentW * current_zoom;
+					start.x -= offset;
+					end.x -= offset;
+					
+					start.x /= current_zoom;
+					end.x /= current_zoom;
+				}
+				
+				// Get a "bbox" equivalent for each character. Uses the
+				// bbox data of the actual text for y, height purposes
+				
+				// TODO: Decide if y, width and height are actually necessary
+				chardata[i] = {
+					x: start.x,
+					y: textbb.y, // start.y?
+					width: end.x - start.x,
+					height: textbb.height
+				};
+			}
+			
+			// Add a last bbox for cursor at end of text
+			chardata.push({
+				x: end.x,
+				width: 0
+			});
+			setSelection(textinput.selectionStart, textinput.selectionEnd, true);
+		}
+	}
+}();
+
+// TODO: Migrate all of this code into path.js
+// Group: Path edit functions
+// Functions relating to editing path elements
+var pathActions = canvas.pathActions = function() {
+	
+	var subpath = false;
+	var current_path;
+	var newPoint, firstCtrl;
+	
+	function resetD(p) {
+		p.setAttribute("d", pathActions.convertPath(p));
+	}
+
+	// TODO: Move into path.js
+		svgedit.path.Path.prototype.endChanges = function(text) {
+			if(svgedit.browser.isWebkit()) resetD(this.elem);
+			var cmd = new ChangeElementCommand(this.elem, {d: this.last_d}, text);
+			addCommandToHistory(cmd);
+			call("changed", [this.elem]);
+		}
+
+		svgedit.path.Path.prototype.addPtsToSelection = function(indexes) {
+			if(!$.isArray(indexes)) indexes = [indexes];
+			for(var i=0; i< indexes.length; i++) {
+				var index = indexes[i];
+				var seg = this.segs[index];
+				if(seg.ptgrip) {
+					if(this.selected_pts.indexOf(index) == -1 && index >= 0) {
+						this.selected_pts.push(index);
+					}
+				}
+			};
+			this.selected_pts.sort();
+			var i = this.selected_pts.length,
+				grips = new Array(i);
+			// Loop through points to be selected and highlight each
+			while(i--) {
+				var pt = this.selected_pts[i];
+				var seg = this.segs[pt];
+				seg.select(true);
+				grips[i] = seg.ptgrip;
+			}
+			// TODO: Correct this:
+			pathActions.canDeleteNodes = true;
+			
+			pathActions.closed_subpath = this.subpathIsClosed(this.selected_pts[0]);
+			
+			call("selected", grips);
+		}
+
+	var current_path = null,
+		drawn_path = null,
+		hasMoved = false,
+		stretchy = null;
+
+	this.lastCtrlPoint = [0, 0];
+	
+	// This function converts a polyline (created by the fh_path tool) into
+	// a path element and coverts every three line segments into a single bezier
+	// curve in an attempt to smooth out the free-hand
+	var smoothPolylineIntoPath = function(element) {
+		var points = element.points;
+		var N = points.numberOfItems;
+		if (N >= 4) {
+			// loop through every 3 points and convert to a cubic bezier curve segment
+			// 
+			// NOTE: this is cheating, it means that every 3 points has the potential to 
+			// be a corner instead of treating each point in an equal manner.  In general,
+			// this technique does not look that good.
+			// 
+			// I am open to better ideas!
+			// 
+			// Reading:
+			// - http://www.efg2.com/Lab/Graphics/Jean-YvesQueinecBezierCurves.htm
+			// - http://www.codeproject.com/KB/graphics/BezierSpline.aspx?msg=2956963
+			// - http://www.ian-ko.com/ET_GeoWizards/UserGuide/smooth.htm
+			// - http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/Bezier/bezier-der.html
+			var curpos = points.getItem(0), prevCtlPt = null;
+			var d = [];
+			d.push(["M",curpos.x,",",curpos.y," C"].join(""));
+			for (var i = 1; i <= (N-4); i += 3) {
+				var ct1 = points.getItem(i);
+				var ct2 = points.getItem(i+1);
+				var end = points.getItem(i+2);
+				
+				// if the previous segment had a control point, we want to smooth out
+				// the control points on both sides
+				if (prevCtlPt) {
+					var newpts = svgedit.path.smoothControlPoints( prevCtlPt, ct1, curpos );
+					if (newpts && newpts.length == 2) {
+						var prevArr = d[d.length-1].split(',');
+						prevArr[2] = newpts[0].x;
+						prevArr[3] = newpts[0].y;
+						d[d.length-1] = prevArr.join(',');
+						ct1 = newpts[1];
+					}
+				}
+				
+				d.push([ct1.x,ct1.y,ct2.x,ct2.y,end.x,end.y].join(','));
+				
+				curpos = end;
+				prevCtlPt = ct2;
+			}
+			// handle remaining line segments
+			d.push("L");
+			for(;i < N;++i) {
+				var pt = points.getItem(i);
+				d.push([pt.x,pt.y].join(","));
+			}
+			d = d.join(" ");
+
+			// create new path element
+			element = addSvgElementFromJson({
+				"element": "path",
+				"curStyles": true,
+				"attr": {
+					"id": getId(),
+					"d": d,
+					"fill": "none"
+				}
+			});
+			// No need to call "changed", as this is already done under mouseUp
+		}
+		return element;
+	};
+
+	return {
+		mouseDown: function(evt, mouse_target, start_x, start_y) {
+			if(current_mode === "path") {
+				mouse_x = start_x;
+				mouse_y = start_y;
+				
+				var x = mouse_x/current_zoom,
+					y = mouse_y/current_zoom,
+					stretchy = getElem("path_stretch_line");
+				newPoint = [x, y];	
+				
+				if(curConfig.gridSnapping){
+					x = snapToGrid(x);
+					y = snapToGrid(y);
+					mouse_x = snapToGrid(mouse_x);
+					mouse_y = snapToGrid(mouse_y);
+				}
+
+				if (!stretchy) {
+					stretchy = document.createElementNS(svgns, "path");
+					assignAttributes(stretchy, {
+						'id': "path_stretch_line",
+						'stroke': "#22C",
+						'stroke-width': "0.5",
+						'fill': 'none'
+					});
+					stretchy = getElem("selectorParentGroup").appendChild(stretchy);
+				}
+				stretchy.setAttribute("display", "inline");
+
+				this.stretchy = stretchy;
+				
+				var keep = null;
+				
+				// if pts array is empty, create path element with M at current point
+				if (!drawn_path) {
+					d_attr = "M" + x + "," + y + " ";
+					drawn_path = addSvgElementFromJson({
+						"element": "path",
+						"curStyles": true,
+						"attr": {
+							"d": d_attr,
+							"id": getNextId(),
+							"opacity": cur_shape.opacity / 2
+						}
+					});
+					// set stretchy line to first point
+					stretchy.setAttribute('d', ['M', mouse_x, mouse_y, mouse_x, mouse_y].join(' '));
+					var index = subpath ? svgedit.path.path.segs.length : 0;
+					svgedit.path.addPointGrip(index, mouse_x, mouse_y);
+					svgedit.path.first_grip = null;
+				}
+				else {
+					// determine if we clicked on an existing point
+					var seglist = drawn_path.pathSegList;
+					var i = seglist.numberOfItems;
+					var FUZZ = 6/current_zoom;
+					var clickOnPoint = false;
+					while(i) {
+						i --;
+						var item = seglist.getItem(i);
+						var px = item.x, py = item.y;
+						// found a matching point
+						if ( x >= (px-FUZZ) && x <= (px+FUZZ) && y >= (py-FUZZ) && y <= (py+FUZZ) ) {
+							clickOnPoint = true;
+							break;
+						}
+					}
+					
+					// get path element that we are in the process of creating
+					var id = getId();
+				
+					// Remove previous path object if previously created
+					svgedit.path.removePath_(id);
+					
+					var newpath = getElem(id);
+					
+					var len = seglist.numberOfItems;
+					// if we clicked on an existing point, then we are done this path, commit it
+					// (i,i+1) are the x,y that were clicked on
+					if (clickOnPoint) {
+						// if clicked on any other point but the first OR
+						// the first point was clicked on and there are less than 3 points
+						// then leave the path open
+						// otherwise, close the path
+						if (i <= 1 && len >= 2) {
+
+							// Create end segment
+							var abs_x = seglist.getItem(0).x;
+							var abs_y = seglist.getItem(0).y;
+							var grip_x = svgedit.path.first_grip ? svgedit.path.first_grip[0]/current_zoom : seglist.getItem(0).x;
+							var grip_y = svgedit.path.first_grip ? svgedit.path.first_grip[1]/current_zoom : seglist.getItem(0).y;
+							
+
+							var s_seg = stretchy.pathSegList.getItem(1);
+							if(s_seg.pathSegType === 4) {
+								var newseg = drawn_path.createSVGPathSegLinetoAbs(abs_x, abs_y);
+							} else {
+								var newseg = drawn_path.createSVGPathSegCurvetoCubicAbs(
+									abs_x,
+									abs_y,
+									s_seg.x1 / current_zoom,
+									s_seg.y1 / current_zoom,
+									grip_x,
+									grip_y
+								);
+							}
+							var endseg = drawn_path.createSVGPathSegClosePath();
+							seglist.appendItem(newseg);
+							seglist.appendItem(endseg);
+						} else if(len < 3) {
+							keep = false;
+							return keep;
+						}
+						$(stretchy).remove();
+						
+						// this will signal to commit the path
+						element = newpath;
+						drawn_path = null;
+						started = false;
+						if(subpath) {
+
+							if(svgedit.path.path.matrix) {
+								remapElement(newpath, {}, svgedit.path.path.matrix.inverse());
+							}
+						
+							var new_d = newpath.getAttribute("d");
+							var orig_d = $(svgedit.path.path.elem).attr("d");
+							$(svgedit.path.path.elem).attr("d", orig_d + new_d);
+							$(newpath).remove();
+							if(svgedit.path.path.matrix) {
+								svgedit.path.recalcRotatedPath();
+							}
+							svgedit.path.path.init();
+							pathActions.toEditMode(svgedit.path.path.elem);
+							svgedit.path.path.selectPt();
+							return false;
+						}
+
+					}
+					// else, create a new point, update path element
+					else {
+						// Checks if current target or parents are #svgcontent
+						if(!$.contains(container, getMouseTarget(evt))) {
+							// Clicked outside canvas, so don't make point
+							console.log("Clicked outside canvas");
+							return false;
+						}
+
+						var num = drawn_path.pathSegList.numberOfItems;
+						var last = drawn_path.pathSegList.getItem(num -1);
+						var lastx = last.x, lasty = last.y;
+
+						if(evt.shiftKey) { var xya = snapToAngle(lastx,lasty,x,y); x=xya.x; y=xya.y; }
+						
+						// Use the segment defined by stretchy
+						var s_seg = stretchy.pathSegList.getItem(1);
+						if(s_seg.pathSegType === 4) {
+							var newseg = drawn_path.createSVGPathSegLinetoAbs(round(x), round(y));
+						} else {
+							var newseg = drawn_path.createSVGPathSegCurvetoCubicAbs(
+								round(x),
+								round(y),
+								s_seg.x1 / current_zoom,
+								s_seg.y1 / current_zoom,
+								s_seg.x2 / current_zoom,
+								s_seg.y2 / current_zoom
+							);
+						}
+						
+						drawn_path.pathSegList.appendItem(newseg);
+						
+						x *= current_zoom;
+						y *= current_zoom;
+						
+						// update everything to the latest point
+						stretchy.setAttribute('d', ['M', x, y, x, y].join(' '));
+						var pointGrip1 = svgedit.path.addCtrlGrip('1c1');
+						var pointGrip2 = svgedit.path.addCtrlGrip('0c2');
+						var ctrlLine = svgedit.path.getCtrlLine(1);
+						var ctrlLine2 = svgedit.path.getCtrlLine(2);
+
+						pointGrip1.setAttribute('cx', x);
+						pointGrip1.setAttribute('cy', y);
+						pointGrip2.setAttribute('cx', x);
+						pointGrip2.setAttribute('cy', y);
+
+						ctrlLine.setAttribute('x1', x);
+						ctrlLine.setAttribute('x2', x);
+						ctrlLine.setAttribute('y1', y);
+						ctrlLine.setAttribute('y2', y);
+
+						ctrlLine2.setAttribute('x1', x);
+						ctrlLine2.setAttribute('x2', x);
+						ctrlLine2.setAttribute('y1', y);
+						ctrlLine2.setAttribute('y2', y);
+
+						var index = num;
+						if(subpath) index += svgedit.path.path.segs.length;
+						svgedit.path.addPointGrip(index, x, y);
+					}
+   					keep = true;
+				}
+				return;
+			}
+			
+			// TODO: Make sure current_path isn't null at this point
+			if(!svgedit.path.path) return;
+			
+			svgedit.path.path.storeD();
+			
+			var id = evt.target.id;
+			if (id.substr(0,14) == "pathpointgrip_") {
+				// Select this point
+				var cur_pt = svgedit.path.path.cur_pt = parseInt(id.substr(14));
+				svgedit.path.path.dragging = [start_x, start_y];
+				var seg = svgedit.path.path.segs[cur_pt];
+				
+				// only clear selection if shift is not pressed (otherwise, add 
+				// node to selection)
+				if (!evt.shiftKey) {
+					if(svgedit.path.path.selected_pts.length <= 1 || !seg.selected) {
+						svgedit.path.path.clearSelection();
+					}
+					svgedit.path.path.addPtsToSelection(cur_pt);
+				} else if(seg.selected) {
+					svgedit.path.path.removePtFromSelection(cur_pt);
+				} else {
+					svgedit.path.path.addPtsToSelection(cur_pt);
+				}
+			} else if(id.indexOf("ctrlpointgrip_") == 0) {
+				svgedit.path.path.dragging = [start_x, start_y];
+				
+				var parts = id.split('_')[1].split('c');
+				var cur_pt = parts[0]-0;
+				var ctrl_num = parts[1]-0;
+				var num = ctrl_num;
+				var path = svgedit.path.path.segs[cur_pt];
+
+				svgedit.path.path.selectPt(cur_pt, ctrl_num);
+
+				/////////////////
+				//check if linked
+				var seg, anum, pt;
+				if (num == 2) {
+					anum = 1;
+					seg = path.next;
+					if(!seg) return;
+					pt = path.item;
+				} else {
+					anum = 2;
+					seg = path.prev;
+					if(!seg) return;
+					pt = seg.item;
+				}
+
+				var get_distance = function(pt1, pt2) {
+					var a = pt1.x - pt2.x;
+					var b = pt1.y - pt2.y;
+					return Math.sqrt(Math.pow(a, 2) + Math.pow(b, 2));
+				}
+
+				function get_angle(pt1, pt2)
+				{
+					var dy = pt1.y - pt2.y;
+					var dx = pt1.x - pt2.x;
+					var theta = Math.atan2(dy, dx);
+					return theta *= 180/Math.PI // rads to degs
+				}
+
+				var grip = {
+					x: path.item["x" + num],
+					y: path.item["y" + num]
+				}
+
+				if (num == 2) {
+					var node = {
+						x: path.item["x"],
+						y: path.item["y"]
+					}
+				}
+				else {
+					var node = {
+						x: seg.item["x"],
+						y: seg.item["y"]
+					}
+				}
+
+				var pair = {
+					x: seg.item["x" + anum],
+					y: seg.item["y" + anum]
+				}
+
+				var distance_between_node_grip = get_distance(grip, node);
+				var distance_between_pair_grip = get_distance(pair, node);
+				var angle_grip = Math.round(get_angle(grip, node), 0);
+				var angle_pair = Math.round(get_angle(pair, node), 0);
+				var is_complementary = (Math.abs(angle_grip - angle_pair) == 180);
+				//console.log("distance: " + Math.abs(distance_between_node_grip - distance_between_pair_grip) + " angle = " + (Math.round(Math.abs(get_angle(grip, node)) + Math.abs(get_angle(pair, node)), 0)))
+				if (Math.abs(distance_between_node_grip - distance_between_pair_grip) < 5 && is_complementary) {
+					svgedit.path.setLinkControlPoints(true);
+					svgedit.path.is_linked = true;
+				}
+				else {
+					svgedit.path.setLinkControlPoints(false);
+					svgedit.path.is_linked = false;
+				}
+
+
+				///////
+
+
+			}
+
+			// Start selection box
+			if(!svgedit.path.path.dragging) {
+				if (rubberBox == null) {
+					rubberBox = selectorManager.getRubberBandBox();
+				}
+				assignAttributes(rubberBox, {
+						'x': start_x * current_zoom,
+						'y': start_y * current_zoom,
+						'width': 0,
+						'height': 0,
+						'display': 'inline'
+				}, 100);
+			}
+		},
+		mouseMove: function(evt, mouse_x, mouse_y) {
+			hasMoved = true;
+			var is_linked = !evt.altKey;
+			if(current_mode === "path") {
+				if(!drawn_path) return;
+				var seglist = drawn_path.pathSegList;
+				var index = seglist.numberOfItems - 1;
+				var pointGrip1 = svgedit.path.addCtrlGrip('1c1'); 
+				var pointGrip2 = svgedit.path.addCtrlGrip('0c2');
+
+				if(newPoint) {
+					// First point
+
+					// Set control points
+					var current_pointGrip2_x = pointGrip2.getAttribute('cx') / current_zoom || 0;
+					var current_pointGrip2_y = pointGrip2.getAttribute('cy') / current_zoom || 0;
+
+					// dragging pointGrip1
+					pointGrip1.setAttribute('cx', mouse_x);
+					pointGrip1.setAttribute('cy', mouse_y);
+					pointGrip1.setAttribute('display', 'inline');
+
+					var pt_x = newPoint[0];
+					var pt_y = newPoint[1];
+					
+					// set curve
+					var seg = seglist.getItem(index);
+					var cur_x = mouse_x / current_zoom;
+					var cur_y = mouse_y / current_zoom;
+				  var alt_x = (is_linked) ?  (pt_x + (pt_x - cur_x)) : current_pointGrip2_x;
+				  var alt_y = (is_linked) ?  (pt_y + (pt_y - cur_y)) : current_pointGrip2_y;
+					
+					
+				  pointGrip2.setAttribute('cx', alt_x * current_zoom);
+				  pointGrip2.setAttribute('cy', alt_y * current_zoom);
+				  pointGrip2.setAttribute('display', 'inline');
+					
+					
+					var ctrlLine = svgedit.path.getCtrlLine(1);
+					var ctrlLine2 = svgedit.path.getCtrlLine(2);
+					assignAttributes(ctrlLine, {
+						x1: mouse_x,
+						y1: mouse_y,
+						x2: pt_x * current_zoom,
+						y2: pt_y * current_zoom,
+						display: 'inline'
+					});
+					
+
+					assignAttributes(ctrlLine2, {
+						x1: alt_x * current_zoom,
+						y1: alt_y * current_zoom,
+						x2: pt_x  * current_zoom,
+						y2: pt_y * current_zoom,
+						display: 'inline'
+					});
+
+
+					if(index === 0) {
+						firstCtrl = [mouse_x, mouse_y];
+					} else {
+						var last_x, last_y;
+						
+						var last = seglist.getItem(index - 1);
+						var last_x = last.x;
+						var last_y = last.y
+	
+						if(last.pathSegType === 6) {
+							last_x += (last_x - last.x2);
+							last_y += (last_y - last.y2);
+						} else if(firstCtrl) {
+							last_x = firstCtrl[0]/current_zoom;
+							last_y = firstCtrl[1]/current_zoom;
+						}
+						svgedit.path.replacePathSeg(6, index, [pt_x, pt_y, this.lastCtrlPoint[0]/current_zoom, this.lastCtrlPoint[1]/current_zoom, alt_x, alt_y], drawn_path);
+					}
+				} else {
+					var stretchy = this.stretchy;
+					if (stretchy) {
+						var prev = seglist.getItem(index);
+						var lastpoint = (evt.target.id === 'pathpointgrip_0');
+
+						var lastgripx = mouse_x;
+						var lastgripy = mouse_y;
+
+						if (lastpoint && svgedit.path.first_grip) {
+							lastgripx = svgedit.path.first_grip[0];
+							lastgripy = svgedit.path.first_grip[1];
+						}
+
+						if(prev.pathSegType === 6) {
+							var prev_x = this.lastCtrlPoint[0]/current_zoom || prev.x + (prev.x - prev.x2);
+							var prev_y = this.lastCtrlPoint[1]/current_zoom || prev.y + (prev.y - prev.y2);
+							svgedit.path.replacePathSeg(6, 1, [mouse_x, mouse_y, prev_x * current_zoom, prev_y * current_zoom, lastgripx, lastgripy], stretchy);							
+						} else if(firstCtrl) {
+							svgedit.path.replacePathSeg(6, 1, [mouse_x, mouse_y, firstCtrl[0], firstCtrl[1], mouse_x, mouse_y], stretchy);
+						} else {
+							svgedit.path.replacePathSeg(4, 1, [mouse_x, mouse_y], stretchy);
+						}
+					}
+				}
+				return;
+			}
+			// if we are dragging a point, let's move it
+			if (svgedit.path.path.dragging) {
+				var pt = svgedit.path.getPointFromGrip({
+					x: svgedit.path.path.dragging[0],
+					y: svgedit.path.path.dragging[1]
+				}, svgedit.path.path);
+				var mpt = svgedit.path.getPointFromGrip({
+					x: mouse_x,
+					y: mouse_y
+				}, svgedit.path.path);
+				var diff_x = mpt.x - pt.x;
+				var diff_y = mpt.y - pt.y;
+
+				svgedit.path.path.dragging = [mouse_x, mouse_y];
+				if (!is_linked || !svgedit.path.is_linked) svgedit.path.setLinkControlPoints(false);
+				else svgedit.path.setLinkControlPoints(true);
+
+				if(svgedit.path.path.dragctrl) {
+					svgedit.path.path.moveCtrl(diff_x, diff_y);
+				} else {
+					svgedit.path.path.movePts(diff_x, diff_y);
+				}
+			} else {
+				//select
+				svgedit.path.path.selected_pts = [];
+				svgedit.path.path.eachSeg(function(i) {
+					var seg = this;
+					if(!seg.next && !seg.prev) return;
+					var item = seg.item;
+					var rbb = rubberBox.getBBox();
+					
+					var pt = svgedit.path.getGripPt(seg);
+					var pt_bb = {
+						x: pt.x,
+						y: pt.y,
+						width: 0,
+						height: 0
+					};
+				
+					var sel = svgedit.math.rectsIntersect(rbb, pt_bb);
+
+					this.select(sel);
+					//Note that addPtsToSelection is not being run
+					if(sel) svgedit.path.path.selected_pts.push(seg.index);
+				});
+
+			}
+		}, 
+		mouseUp: function(evt, element, mouse_x, mouse_y) {
+			var lastpointgrip = getElem('ctrlpointgrip_1c1');
+			var firstpointgrip = getElem('ctrlpointgrip_0c2');
+			if (lastpointgrip)
+				this.lastCtrlPoint = [lastpointgrip.getAttribute('cx'), lastpointgrip.getAttribute('cy')];
+			else
+				this.lastCtrlPoint = [mouse_x, mouse_y]
+			if (!svgedit.path.first_grip && firstpointgrip) {
+				svgedit.path.first_grip = [firstpointgrip.getAttribute('cx'), firstpointgrip.getAttribute('cy')];
+			}
+			// Create mode
+			if(current_mode === "path") {
+				newPoint = null;
+				if(!drawn_path) {
+					element = getElem(getId());
+					started = false;
+					firstCtrl = null;
+				}
+
+				return {
+					keep: true,
+					element: element
+				}
+			}
+			
+			// Edit mode
+			
+			if (svgedit.path.path.dragging) {
+				var last_pt = svgedit.path.path.cur_pt;
+
+				svgedit.path.path.dragging = false;
+				svgedit.path.path.dragctrl = false;
+				svgedit.path.path.update();
+				
+			
+				if(hasMoved) {
+					svgedit.path.path.endChanges("Move path point(s)");
+				} 
+				
+				if(!evt.shiftKey && !hasMoved) {
+					svgedit.path.path.selectPt(last_pt);
+				} 
+			}
+			else if(rubberBox && rubberBox.getAttribute('display') != 'none') {
+				// Done with multi-node-select
+				rubberBox.setAttribute("display", "none");
+				
+				if(rubberBox.getAttribute('width') <= 2 && rubberBox.getAttribute('height') <= 2) {
+					pathActions.toSelectMode(evt.target);
+				}
+				
+			// else, move back to select mode	
+			} else {
+				pathActions.toSelectMode(evt.target);
+			}
+			hasMoved = false;
+		},
+		toEditMode: function(element) {
+			svgedit.path.path = svgedit.path.getPath_(element);
+			current_mode = "pathedit";
+			clearSelection();
+			svgedit.path.path.show(true).update();
+			svgedit.path.path.oldbbox = svgedit.utilities.getBBox(svgedit.path.path.elem);
+			subpath = false;
+		},
+		toSelectMode: function(elem) {
+			var selPath = (elem == svgedit.path.path.elem);
+			current_mode = "select";
+			svgedit.path.path.show(false);
+			current_path = false;
+			clearSelection();
+			
+			if(svgedit.path.path.matrix) {
+				// Rotated, so may need to re-calculate the center
+				svgedit.path.recalcRotatedPath();
+			}
+			
+			if(selPath) {
+				call("selected", [elem]);
+				addToSelection([elem], true);
+			}
+		},
+		addSubPath: function(on) {
+			if(on) {
+				// Internally we go into "path" mode, but in the UI it will
+				// still appear as if in "pathedit" mode.
+				current_mode = "path";
+				subpath = true;
+			} else {
+				pathActions.clear(true);
+				pathActions.toEditMode(svgedit.path.path.elem);
+			}
+		},
+		select: function(target) {
+			if (current_path === target) {
+				pathActions.toEditMode(target);
+				current_mode = "pathedit";
+			} // going into pathedit mode
+			else {
+				current_path = target;
+			}	
+		},
+		reorient: function() {
+			var elem = selectedElements[0];
+			if(!elem) return;
+			var angle = getRotationAngle(elem);
+			if(angle == 0) return;
+			
+			var batchCmd = new BatchCommand("Reorient path");
+			var changes = {
+				d: elem.getAttribute('d'),
+				transform: elem.getAttribute('transform')
+			};
+			batchCmd.addSubCommand(new ChangeElementCommand(elem, changes));
+			clearSelection();
+			this.resetOrientation(elem);
+			
+			addCommandToHistory(batchCmd);
+
+			// Set matrix to null
+			svgedit.path.getPath_(elem).show(false).matrix = null; 
+
+			this.clear();
+	
+			addToSelection([elem], true);
+			call("changed", selectedElements);
+		},
+		
+		clear: function(remove) {
+			current_path = null;
+			if (drawn_path) {
+				var elem = getElem(getId());
+				$(getElem("path_stretch_line")).remove();
+				if (remove) $(elem).remove();
+				$(getElem("pathpointgrip_container")).find('*').attr('display', 'none');
+				drawn_path = firstCtrl = null;
+				started = false;
+			} else if (current_mode == "pathedit") {
+				this.toSelectMode();
+			}
+			if(svgedit.path.path) svgedit.path.path.init().show(false);
+		},
+		resetOrientation: function(path) {
+			if(path == null || path.nodeName != 'path') return false;
+			var tlist = getTransformList(path);
+			var m = transformListToTransform(tlist).matrix;
+			tlist.clear();
+			path.removeAttribute("transform");
+			var segList = path.pathSegList;
+			
+			// Opera/win/non-EN throws an error here.
+			// TODO: Find out why!
+			// Presumed fixed in Opera 10.5, so commented out for now
+			
+// 			try {
+				var len = segList.numberOfItems;
+// 			} catch(err) {
+// 				var fixed_d = pathActions.convertPath(path);
+// 				path.setAttribute('d', fixed_d);
+// 				segList = path.pathSegList;
+// 				var len = segList.numberOfItems;
+// 			}
+			var last_x, last_y;
+
+
+			for (var i = 0; i < len; ++i) {
+				var seg = segList.getItem(i);
+				var type = seg.pathSegType;
+				if(type == 1) continue;
+				var pts = [];
+				$.each(['',1,2], function(j, n) {
+					var x = seg['x'+n], y = seg['y'+n];
+					if(x !== undefined && y !== undefined) {
+						var pt = transformPoint(x, y, m);
+						pts.splice(pts.length, 0, pt.x, pt.y);
+					}
+				});
+				svgedit.path.replacePathSeg(type, i, pts, path);
+			}
+			
+			reorientGrads(path, m);
+
+
+		},
+		zoomChange: function() {
+			if(current_mode == "pathedit") {
+				svgedit.path.path.update();
+			}
+		},
+		getNodePoint: function() {
+			if (!svgedit.path.path) return;
+			var sel_pt = svgedit.path.path.selected_pts.length ? svgedit.path.path.selected_pts[0] : 1;
+
+			var seg = svgedit.path.path.segs[sel_pt];
+			return {
+				x: seg.item.x,
+				y: seg.item.y,
+				type: seg.type
+			};
+		}, 
+		linkControlPoints: function(linkPoints) {
+			svgedit.path.setLinkControlPoints(linkPoints);
+		},
+		clonePathNode: function() {
+			svgedit.path.path.storeD();
+			
+			var sel_pts = svgedit.path.path.selected_pts;
+			var segs = svgedit.path.path.segs;
+			
+			var i = sel_pts.length;
+			var nums = [];
+
+			while(i--) {
+				var pt = sel_pts[i];
+				svgedit.path.path.addSeg(pt);
+				nums.push(pt + i);
+				nums.push(pt + i + 1);
+			}
+			
+			svgedit.path.path.init().addPtsToSelection(nums);
+
+			svgedit.path.path.endChanges("Clone path node(s)");
+		},
+		opencloseSubPath: function() {
+			var sel_pts = svgedit.path.path.selected_pts;
+			// Only allow one selected node for now
+			if(sel_pts.length !== 1) return;
+			
+			var elem = svgedit.path.path.elem;
+			var list = elem.pathSegList;
+
+			var len = list.numberOfItems;
+
+			var index = sel_pts[0];
+			
+			var open_pt = null;
+			var start_item = null;
+
+			// Check if subpath is already open
+			svgedit.path.path.eachSeg(function(i) {
+				if(this.type === 2 && i <= index) {
+					start_item = this.item;
+				}
+				if(i <= index) return true;
+				if(this.type === 2) {
+					// Found M first, so open
+					open_pt = i;
+					return false;
+				} else if(this.type === 1) {
+					// Found Z first, so closed
+					open_pt = false;
+					return false;
+				}
+			});
+			
+			if(open_pt == null) {
+				// Single path, so close last seg
+				open_pt = svgedit.path.path.segs.length - 1;
+			}
+
+			if(open_pt !== false) {
+				// Close this path
+				
+				// Create a line going to the previous "M"
+				var newseg = elem.createSVGPathSegLinetoAbs(start_item.x, start_item.y);
+			
+				var closer = elem.createSVGPathSegClosePath();
+				if(open_pt == svgedit.path.path.segs.length) {
+					list.appendItem(newseg);
+					list.appendItem(closer);
+				} else {
+					svgedit.path.insertItemBefore(elem, closer, open_pt);
+					svgedit.path.insertItemBefore(elem, newseg, open_pt);
+				}
+				
+				svgedit.path.path.init().selectPt(open_pt+1);
+				return;
+			}
+			
+			
+
+			// M 1,1 L 2,2 L 3,3 L 1,1 z // open at 2,2
+			// M 2,2 L 3,3 L 1,1
+			
+			// M 1,1 L 2,2 L 1,1 z M 4,4 L 5,5 L6,6 L 5,5 z 
+			// M 1,1 L 2,2 L 1,1 z [M 4,4] L 5,5 L(M)6,6 L 5,5 z 
+			
+			var seg = svgedit.path.path.segs[index];
+			
+			if(seg.mate) {
+				list.removeItem(index); // Removes last "L"
+				list.removeItem(index); // Removes the "Z"
+				svgedit.path.path.init().selectPt(index - 1);
+				return;
+			}
+			
+			var last_m, z_seg;
+			
+			// Find this sub-path's closing point and remove
+			for(var i=0; i<list.numberOfItems; i++) {
+				var item = list.getItem(i);
+
+				if(item.pathSegType === 2) {
+					// Find the preceding M
+					last_m = i;
+				} else if(i === index) {
+					// Remove it
+					list.removeItem(last_m);
+// 						index--;
+				} else if(item.pathSegType === 1 && index < i) {
+					// Remove the closing seg of this subpath
+					z_seg = i-1;
+					list.removeItem(i);
+					break;
+				}
+			}
+			
+			var num = (index - last_m) - 1;
+			
+			while(num--) {
+				svgedit.path.insertItemBefore(elem, list.getItem(last_m), z_seg);
+			}
+			
+			var pt = list.getItem(last_m);
+			
+			// Make this point the new "M"
+			svgedit.path.replacePathSeg(2, last_m, [pt.x, pt.y]);
+			
+			var i = index
+			
+			svgedit.path.path.init().selectPt(0);
+		},
+		deletePathNode: function() {
+			if(!pathActions.canDeleteNodes) return;
+			svgedit.path.path.storeD();
+			
+			var sel_pts = svgedit.path.path.selected_pts;
+			var i = sel_pts.length;
+
+			while(i--) {
+				var pt = sel_pts[i];
+				svgedit.path.path.deleteSeg(pt);
+			}
+			
+			// Cleanup
+			var cleanup = function() {
+				var segList = svgedit.path.path.elem.pathSegList;
+				var len = segList.numberOfItems;
+				
+				var remItems = function(pos, count) {
+					while(count--) {
+						segList.removeItem(pos);
+					}
+				}
+
+				if(len <= 1) return true;
+				
+				while(len--) {
+					var item = segList.getItem(len);
+					if(item.pathSegType === 1) {
+						var prev = segList.getItem(len-1);
+						var nprev = segList.getItem(len-2);
+						if(prev.pathSegType === 2) {
+							remItems(len-1, 2);
+							cleanup();
+							break;
+						} else if(nprev.pathSegType === 2) {
+							remItems(len-2, 3);
+							cleanup();
+							break;
+						}
+
+					} else if(item.pathSegType === 2) {
+						if(len > 0) {
+							var prev_type = segList.getItem(len-1).pathSegType;
+							// Path has M M  
+							if(prev_type === 2) {
+								remItems(len-1, 1);
+								cleanup();
+								break;
+							// Entire path ends with Z M 
+							} else if(prev_type === 1 && segList.numberOfItems-1 === len) {
+								remItems(len, 1);
+								cleanup();
+								break;
+							}
+						}
+					}
+				}	
+				return false;
+			}
+			
+			cleanup();
+			
+			// Completely delete a path with 1 or 0 segments
+			if(svgedit.path.path.elem.pathSegList.numberOfItems <= 1) {
+				canvas.setMode("select")
+				canvas.deleteSelectedElements();
+				return;
+			}
+			
+			svgedit.path.path.init();
+			
+			svgedit.path.path.clearSelection();
+			
+			// TODO: Find right way to select point now
+			// path.selectPt(sel_pt);
+			if(window.opera) { // Opera repaints incorrectly
+				var cp = $(svgedit.path.path.elem); cp.attr('d',cp.attr('d'));
+			}
+			svgedit.path.path.endChanges("Delete path node(s)");
+		},
+		smoothPolylineIntoPath: smoothPolylineIntoPath,
+		setSegType: function(v) {
+			svgedit.path.path.setSegType(v);
+		},
+		moveNode: function(attr, newValue) {
+			var sel_pts = svgedit.path.path.selected_pts;
+			if(!sel_pts.length) return;
+			
+			svgedit.path.path.storeD();
+			
+			// Get first selected point
+			var seg = svgedit.path.path.segs[sel_pts[0]];
+			var diff = {x:0, y:0};
+			diff[attr] = newValue - seg.item[attr];
+			
+			seg.move(diff.x, diff.y);
+			svgedit.path.path.endChanges("Move path point");
+		},
+		fixEnd: function(elem) {
+			// Adds an extra segment if the last seg before a Z doesn't end
+			// at its M point
+			// M0,0 L0,100 L100,100 z
+			var segList = elem.pathSegList;
+			var len = segList.numberOfItems;
+			var last_m;
+			for (var i = 0; i < len; ++i) {
+				var item = segList.getItem(i);
+				if(item.pathSegType === 2) {
+					last_m = item;
+				}
+				
+				if(item.pathSegType === 1) {
+					var prev = segList.getItem(i-1);
+					if(prev.x != last_m.x || prev.y != last_m.y) {
+						// Add an L segment here
+						var newseg = elem.createSVGPathSegLinetoAbs(last_m.x, last_m.y);
+						svgedit.path.insertItemBefore(elem, newseg, i);
+						// Can this be done better?
+						pathActions.fixEnd(elem);
+						break;
+					}
+					
+				}
+			}
+			if(svgedit.browser.isWebkit()) resetD(elem);
+		},
+		// Convert a path to one with only absolute or relative values
+		convertPath: function(path, toRel) {
+			var segList = path.pathSegList;
+			var len = segList.numberOfItems;
+			var curx = 0, cury = 0;
+			var d = "";
+			var last_m = null;
+			
+			for (var i = 0; i < len; ++i) {
+				var seg = segList.getItem(i);
+				// if these properties are not in the segment, set them to zero
+				var x = seg.x || 0,
+					y = seg.y || 0,
+					x1 = seg.x1 || 0,
+					y1 = seg.y1 || 0,
+					x2 = seg.x2 || 0,
+					y2 = seg.y2 || 0;
+	
+				var type = seg.pathSegType;
+				var letter = pathMap[type]['to'+(toRel?'Lower':'Upper')+'Case']();
+				
+				var addToD = function(pnts, more, last) {
+					var str = '';
+					var more = more?' '+more.join(' '):'';
+					var last = last?' '+svgedit.units.shortFloat(last):'';
+					$.each(pnts, function(i, pnt) {
+						pnts[i] = svgedit.units.shortFloat(pnt);
+					});
+					d += letter + pnts.join(' ') + more + last;
+				}
+				
+				switch (type) {
+					case 1: // z,Z closepath (Z/z)
+						d += "z";
+						break;
+					case 12: // absolute horizontal line (H)
+						x -= curx;
+					case 13: // relative horizontal line (h)
+						if(toRel) {
+							curx += x;
+							letter = 'l';
+						} else {
+							x += curx;
+							curx = x;
+							letter = 'L';
+						}
+						// Convert to "line" for easier editing
+						addToD([[x, cury]]);
+						break;
+					case 14: // absolute vertical line (V)
+						y -= cury;
+					case 15: // relative vertical line (v)
+						if(toRel) {
+							cury += y;
+							letter = 'l';
+						} else {
+							y += cury;
+							cury = y;
+							letter = 'L';
+						}
+						// Convert to "line" for easier editing
+						addToD([[curx, y]]);
+						break;
+					case 2: // absolute move (M)
+					case 4: // absolute line (L)
+					case 18: // absolute smooth quad (T)
+						x -= curx;
+						y -= cury;
+					case 5: // relative line (l)
+					case 3: // relative move (m)
+						// If the last segment was a "z", this must be relative to 
+						if(last_m && segList.getItem(i-1).pathSegType === 1 && !toRel) {
+							curx = last_m[0];
+							cury = last_m[1];
+						}
+					
+					case 19: // relative smooth quad (t)
+						if(toRel) {
+							curx += x;
+							cury += y;
+						} else {
+							x += curx;
+							y += cury;
+							curx = x;
+							cury = y;
+						}
+						if(type === 3) last_m = [curx, cury];
+						
+						addToD([[x,y]]);
+						break;
+					case 6: // absolute cubic (C)
+						x -= curx; x1 -= curx; x2 -= curx;
+						y -= cury; y1 -= cury; y2 -= cury;
+					case 7: // relative cubic (c)
+						if(toRel) {
+							curx += x;
+							cury += y;
+						} else {
+							x += curx; x1 += curx; x2 += curx;
+							y += cury; y1 += cury; y2 += cury;
+							curx = x;
+							cury = y;
+						}
+						addToD([[x1,y1],[x2,y2],[x,y]]);
+						break;
+					case 8: // absolute quad (Q)
+						x -= curx; x1 -= curx;
+						y -= cury; y1 -= cury;
+					case 9: // relative quad (q) 
+						if(toRel) {
+							curx += x;
+							cury += y;
+						} else {
+							x += curx; x1 += curx;
+							y += cury; y1 += cury;
+							curx = x;
+							cury = y;
+						}
+						addToD([[x1,y1],[x,y]]);
+						break;
+					case 10: // absolute elliptical arc (A)
+						x -= curx;
+						y -= cury;
+					case 11: // relative elliptical arc (a)
+						if(toRel) {
+							curx += x;
+							cury += y;
+						} else {
+							x += curx;
+							y += cury;
+							curx = x;
+							cury = y;
+						}
+						addToD([[seg.r1,seg.r2]], [
+								seg.angle,
+								(seg.largeArcFlag ? 1 : 0),
+								(seg.sweepFlag ? 1 : 0)
+							],[x,y]
+						);
+						break;
+					case 16: // absolute smooth cubic (S)
+						x -= curx; x2 -= curx;
+						y -= cury; y2 -= cury;
+					case 17: // relative smooth cubic (s)
+						if(toRel) {
+							curx += x;
+							cury += y;
+						} else {
+							x += curx; x2 += curx;
+							y += cury; y2 += cury;
+							curx = x;
+							cury = y;
+						}
+						addToD([[x2,y2],[x,y]]);
+						break;
+				} // switch on path segment type
+			} // for each segment
+			return d;
+		}
+	}
+}();
+// end pathActions
+
+// Group: Serialization
+
+// Function: removeUnusedDefElems
+// Looks at DOM elements inside the <defs> to see if they are referred to,
+// removes them from the DOM if they are not.
+// 
+// Returns:
+// The amount of elements that were removed
+var removeUnusedDefElems = this.removeUnusedDefElems = function() {
+	var defs = svgcontent.getElementsByTagNameNS(svgns, "defs");
+	if(!defs || !defs.length) return 0;
+	
+// 	if(!defs.firstChild) return;
+	
+	var defelem_uses = [],
+		numRemoved = 0;
+	var attrs = ['fill', 'stroke', 'filter', 'marker-start', 'marker-mid', 'marker-end'];
+	var alen = attrs.length;
+	
+	var all_els = svgcontent.getElementsByTagNameNS(svgns, '*');
+	var all_len = all_els.length;
+	
+	for(var i=0; i<all_len; i++) {
+		var el = all_els[i];
+		for(var j = 0; j < alen; j++) {
+		  if(el) {
+  			var ref = getUrlFromAttr(el.getAttribute(attrs[j]));
+  			if(ref) {
+  				defelem_uses.push(ref.substr(1));
+  			}
+			}
+		}
+		
+		// gradients can refer to other gradients
+		var href = getHref(el);
+		if (href && href.indexOf('#') === 0) {
+			defelem_uses.push(href.substr(1));
+		}
+	};
+	
+	var defelems = $(defs).find("linearGradient, radialGradient, filter, marker, svg, symbol");
+		defelem_ids = [],
+		i = defelems.length;
+	while (i--) {
+		var defelem = defelems[i];
+		var id = defelem.id;
+		if(defelem_uses.indexOf(id) < 0) {
+			// Not found, so remove (but remember)
+			removedElements[id] = defelem;
+			defelem.parentNode.removeChild(defelem);
+			numRemoved++;
+		}
+	}
+
+	return numRemoved;
+}
+
+// Function: svgCanvasToString
+// Main function to set up the SVG content for output 
+//
+// Returns: 
+// String containing the SVG image for output
+this.svgCanvasToString = function() {
+	// keep calling it until there are none to remove
+	while (removeUnusedDefElems() > 0) {};
+	
+	pathActions.clear(true);
+	
+	// Keep SVG-Edit comment on top
+	$.each(svgcontent.childNodes, function(i, node) {
+		if(i && node.nodeType === 8 && node.data.indexOf('Created with') >= 0) {
+			svgcontent.insertBefore(node, svgcontent.firstChild);
+		}
+	});
+	
+	// Move out of in-group editing mode
+	if(current_group) {
+		leaveContext();
+		selectOnly([current_group]);
+	}
+	
+	//hide grid, otherwise shows a black canvas
+	$('#canvasGrid').attr('display', 'none');
+	
+	var naked_svgs = [];
+	
+	// Unwrap gsvg if it has no special attributes (only id and style)
+	$(svgcontent).find('g:data(gsvg)').each(function() {
+		var attrs = this.attributes;
+		var len = attrs.length;
+		for(var i=0; i<len; i++) {
+			if(attrs[i].nodeName == 'id' || attrs[i].nodeName == 'style') {
+				len--;
+			}
+		}
+		// No significant attributes, so ungroup
+		if(len <= 0) {
+			var svg = this.firstChild;
+			naked_svgs.push(svg);
+			$(this).replaceWith(svg);
+		}
+	});
+	var output = this.svgToString(svgcontent, 0);
+	
+	// Rewrap gsvg
+	if(naked_svgs.length) {
+		$(naked_svgs).each(function() {
+			groupSvgElem(this);
+		});
+	}
+	
+	return output;
+};
+
+// Function: svgToString
+// Sub function ran on each SVG element to convert it to a string as desired
+// 
+// Parameters: 
+// elem - The SVG element to convert
+// indent - Integer with the amount of spaces to indent this tag
+//
+// Returns: 
+// String with the given element as an SVG tag
+this.svgToString = function(elem, indent) {
+	var out = new Array(), toXml = svgedit.utilities.toXml;
+	var unit = curConfig.baseUnit;
+	var unit_re = new RegExp('^-?[\\d\\.]+' + unit + '$');
+
+	if (elem) {
+		cleanupElement(elem);
+		var attrs = elem.attributes,
+			attr,
+			i,
+			childs = elem.childNodes;
+		
+		for (var i=0; i<indent; i++) out.push(" ");
+		out.push("<"); out.push(elem.nodeName);
+		if(elem.id === 'svgcontent') {
+			// Process root element separately
+			var res = getResolution();
+			
+			var vb = "";
+			// TODO: Allow this by dividing all values by current baseVal
+			// Note that this also means we should properly deal with this on import
+// 			if(curConfig.baseUnit !== "px") {
+// 				var unit = curConfig.baseUnit;
+// 				var unit_m = svgedit.units.getTypeMap()[unit];
+// 				res.w = svgedit.units.shortFloat(res.w / unit_m)
+// 				res.h = svgedit.units.shortFloat(res.h / unit_m)
+// 				vb = ' viewBox="' + [0, 0, res.w, res.h].join(' ') + '"';				
+// 				res.w += unit;
+// 				res.h += unit;
+// 			}
+			
+			if(unit !== "px") {
+				res.w = svgedit.units.convertUnit(res.w, unit) + unit;
+				res.h = svgedit.units.convertUnit(res.h, unit) + unit;
+			}
+			
+			out.push(' width="' + res.w + '" height="' + res.h + '"' + vb + ' xmlns="'+svgns+'"');
+			
+			var nsuris = {};
+			
+			// Check elements for namespaces, add if found
+			$(elem).find('*').andSelf().each(function() {
+				var el = this;
+				$.each(this.attributes, function(i, attr) {
+					var uri = attr.namespaceURI;
+					if(uri && !nsuris[uri] && nsMap[uri] !== 'xmlns' && nsMap[uri] !== 'xml' ) {
+						nsuris[uri] = true;
+						out.push(" xmlns:" + nsMap[uri] + '="' + uri +'"');
+					}
+				});
+			});
+			
+			var i = attrs.length;
+			var attr_names = ['width','height','xmlns','x','y','viewBox','id','overflow'];
+			while (i--) {
+				attr = attrs.item(i);
+				var attrVal = toXml(attr.nodeValue);
+				
+				// Namespaces have already been dealt with, so skip
+				if(attr.nodeName.indexOf('xmlns:') === 0) continue;
+
+				// only serialize attributes we don't use internally
+				if (attrVal != "" && attr_names.indexOf(attr.localName) == -1) 
+				{
+
+					if(!attr.namespaceURI || nsMap[attr.namespaceURI]) {
+						out.push(' '); 
+						out.push(attr.nodeName); out.push("=\"");
+						out.push(attrVal); out.push("\"");
+					}
+				}
+			}
+		} else {
+			// Skip empty defs
+			if(elem.nodeName === 'defs' && !elem.firstChild) return;
+		
+			var moz_attrs = ['-moz-math-font-style', '_moz-math-font-style'];
+			for (var i=attrs.length-1; i>=0; i--) {
+				attr = attrs.item(i);
+				var attrVal = toXml(attr.nodeValue);
+				//remove bogus attributes added by Gecko
+				if (moz_attrs.indexOf(attr.localName) >= 0) continue;
+				if (attrVal != "") {
+					if(attrVal.indexOf('pointer-events') === 0) continue;
+					if(attr.localName === "class" && attrVal.indexOf('se_') === 0) continue;
+					out.push(" "); 
+					if(attr.localName === 'd') attrVal = pathActions.convertPath(elem, true);
+					if(!isNaN(attrVal)) {
+						attrVal = svgedit.units.shortFloat(attrVal);
+					} else if(unit_re.test(attrVal)) {
+						attrVal = svgedit.units.shortFloat(attrVal) + unit;
+					}
+					
+					// Embed images when saving 
+					if(save_options.apply
+						&& elem.nodeName === 'image' 
+						&& attr.localName === 'href'
+						&& save_options.images
+						&& save_options.images === 'embed') 
+					{
+						var img = encodableImages[attrVal];
+						if(img) attrVal = img;
+					}
+					
+					// map various namespaces to our fixed namespace prefixes
+					// (the default xmlns attribute itself does not get a prefix)
+					if(!attr.namespaceURI || attr.namespaceURI == svgns || nsMap[attr.namespaceURI]) {
+						out.push(attr.nodeName); out.push("=\"");
+						out.push(attrVal); out.push("\"");
+					}
+				}
+			}
+		}
+
+		if (elem.hasChildNodes()) {
+			out.push(">");
+			indent++;
+			var bOneLine = false;
+			
+			for (var i=0; i<childs.length; i++)
+			{
+				var child = childs.item(i);
+				switch(child.nodeType) {
+				case 1: // element node
+					out.push("\n");
+					out.push(this.svgToString(childs.item(i), indent));
+					break;
+				case 3: // text node
+					var str = child.nodeValue.replace(/^\s+|\s+$/g, "");
+					if (str != "") {
+						bOneLine = true;
+						out.push(toXml(str) + "");
+					}
+					break;
+				case 4: // cdata node
+					out.push("\n");
+					out.push(new Array(indent+1).join(" "));
+					out.push("<![CDATA[");
+					out.push(child.nodeValue);
+					out.push("]]>");
+					break;
+				case 8: // comment
+					out.push("\n");
+					out.push(new Array(indent+1).join(" "));
+					out.push("<!--");
+					out.push(child.data);
+					out.push("-->");
+					break;
+				} // switch on node type
+			}
+			indent--;
+			if (!bOneLine) {
+				out.push("\n");
+				for (var i=0; i<indent; i++) out.push(" ");
+			}
+			out.push("</"); out.push(elem.nodeName); out.push(">");
+		} else {
+			out.push("/>");
+		}
+	}
+	return out.join('');
+}; // end svgToString()
+
+// Function: embedImage
+// Converts a given image file to a data URL when possible, then runs a given callback
+//
+// Parameters: 
+// val - String with the path/URL of the image
+// callback - Optional function to run when image data is found, supplies the
+// result (data URL or false) as first parameter.
+this.embedImage = function(val, callback) {
+
+	// load in the image and once it's loaded, get the dimensions
+	$(new Image()).load(function() {
+		// create a canvas the same size as the raster image
+		var canvas = document.createElement("canvas");
+		canvas.width = this.width;
+		canvas.height = this.height;
+		// load the raster image into the canvas
+		canvas.getContext("2d").drawImage(this,0,0);
+		// retrieve the data: URL
+		try {
+			var urldata = ';svgedit_url=' + encodeURIComponent(val);
+			urldata = canvas.toDataURL().replace(';base64',urldata+';base64');
+			encodableImages[val] = urldata;
+		} catch(e) {
+			encodableImages[val] = false;
+		}
+		last_good_img_url = val;
+		if(callback) callback(encodableImages[val]);
+	}).attr('src',val);
+}
+
+// Function: setGoodImage
+// Sets a given URL to be a "last good image" URL
+this.setGoodImage = function(val) {
+	last_good_img_url = val;
+}
+
+this.open = function() {
+	// Nothing by default, handled by optional widget/extension
+};
+
+// Function: save
+// Serializes the current drawing into SVG XML text and returns it to the 'saved' handler.
+// This function also includes the XML prolog.  Clients of the SvgCanvas bind their save
+// function to the 'saved' event.
+//
+// Returns: 
+// Nothing
+this.save = function(opts) {
+	// remove the selected outline before serializing
+	clearSelection();
+	// Update save options if provided
+	if(opts) $.extend(save_options, opts);
+	save_options.apply = true;
+	
+	// no need for doctype, see http://jwatt.org/svg/authoring/#doctype-declaration
+	var str = this.svgCanvasToString();
+	call("saved", str);
+};
+
+// Function: rasterExport
+// Generates a PNG Data URL based on the current image, then calls "exported" 
+// with an object including the string and any issues found
+this.rasterExport = function() {
+	// remove the selected outline before serializing
+	clearSelection();
+	
+	// Check for known CanVG issues 
+	var issues = [];
+	
+	// Selector and notice
+	var issue_list = {
+		'feGaussianBlur': uiStrings.exportNoBlur,
+		'foreignObject': uiStrings.exportNoforeignObject,
+		'[stroke-dasharray]': uiStrings.exportNoDashArray
+	};
+	var content = $(svgcontent);
+	
+	// Add font/text check if Canvas Text API is not implemented
+	if(!("font" in $('<canvas>')[0].getContext('2d'))) {
+		issue_list['text'] = uiStrings.exportNoText;
+	}
+	
+	$.each(issue_list, function(sel, descr) {
+		if(content.find(sel).length) {
+			issues.push(descr);
+		}
+	});
+
+	var str = this.svgCanvasToString();
+	call("exported", {svg: str, issues: issues});
+};
+
+// Function: getSvgString
+// Returns the current drawing as raw SVG XML text.
+//
+// Returns:
+// The current drawing as raw SVG XML text.
+this.getSvgString = function() {
+	save_options.apply = false;
+	return this.svgCanvasToString();
+};
+
+// Function: randomizeIds
+// This function determines whether to use a nonce in the prefix, when
+// generating IDs for future documents in SVG-Edit.
+// 
+//  Parameters:
+//   an opional boolean, which, if true, adds a nonce to the prefix. Thus
+//     svgCanvas.randomizeIds()  <==> svgCanvas.randomizeIds(true)
+//
+// if you're controlling SVG-Edit externally, and want randomized IDs, call
+// this BEFORE calling svgCanvas.setSvgString
+//
+this.randomizeIds = function() {
+	if (arguments.length > 0 && arguments[0] == false) {
+		svgedit.draw.randomizeIds(false, getCurrentDrawing());
+	} else {
+		svgedit.draw.randomizeIds(true, getCurrentDrawing());
+	}
+};
+
+// Function: uniquifyElems
+// Ensure each element has a unique ID
+//
+// Parameters:
+// g - The parent element of the tree to give unique IDs
+var uniquifyElems = this.uniquifyElems = function(g) {
+	var ids = {};
+	// TODO: Handle markers and connectors.  These are not yet re-identified properly
+	// as their referring elements do not get remapped.
+	//
+	// <marker id='se_marker_end_svg_7'/>
+	// <polyline id='svg_7' se:connector='svg_1 svg_6' marker-end='url(#se_marker_end_svg_7)'/>
+	// 
+	// Problem #1: if svg_1 gets renamed, we do not update the polyline's se:connector attribute
+	// Problem #2: if the polyline svg_7 gets renamed, we do not update the marker id nor the polyline's marker-end attribute
+	var ref_elems = ["filter", "linearGradient", "pattern",	"radialGradient", "symbol", "textPath", "use"];
+	
+	svgedit.utilities.walkTree(g, function(n) {
+		// if it's an element node
+		if (n.nodeType == 1) {
+			// and the element has an ID
+			if (n.id) {
+				// and we haven't tracked this ID yet
+				if (!(n.id in ids)) {
+					// add this id to our map
+					ids[n.id] = {elem:null, attrs:[], hrefs:[]};
+				}
+				ids[n.id]["elem"] = n;
+			}
+			
+			// now search for all attributes on this element that might refer
+			// to other elements
+			$.each(ref_attrs,function(i,attr) {
+				var attrnode = n.getAttributeNode(attr);
+				if (attrnode) {
+					// the incoming file has been sanitized, so we should be able to safely just strip off the leading #
+					var url = svgedit.utilities.getUrlFromAttr(attrnode.value),
+						refid = url ? url.substr(1) : null;
+					if (refid) {
+						if (!(refid in ids)) {
+							// add this id to our map
+							ids[refid] = {elem:null, attrs:[], hrefs:[]};
+						}
+						ids[refid]["attrs"].push(attrnode);
+					}
+				}
+			});
+			
+			// check xlink:href now
+			var href = svgedit.utilities.getHref(n);
+			// TODO: what if an <image> or <a> element refers to an element internally?
+			if(href && ref_elems.indexOf(n.nodeName) >= 0)
+			{
+				var refid = href.substr(1);
+				if (refid) {
+					if (!(refid in ids)) {
+						// add this id to our map
+						ids[refid] = {elem:null, attrs:[], hrefs:[]};
+					}
+					ids[refid]["hrefs"].push(n);
+				}
+			}						
+		}
+	});
+	
+	// in ids, we now have a map of ids, elements and attributes, let's re-identify
+	for (var oldid in ids) {
+		if (!oldid) continue;
+		var elem = ids[oldid]["elem"];
+		if (elem) {
+			var newid = getNextId();
+			
+			// assign element its new id
+			elem.id = newid;
+			
+			// remap all url() attributes
+			var attrs = ids[oldid]["attrs"];
+			var j = attrs.length;
+			while (j--) {
+				var attr = attrs[j];
+				attr.ownerElement.setAttribute(attr.name, "url(#" + newid + ")");
+			}
+			
+			// remap all href attributes
+			var hreffers = ids[oldid]["hrefs"];
+			var k = hreffers.length;
+			while (k--) {
+				var hreffer = hreffers[k];
+				svgedit.utilities.setHref(hreffer, "#"+newid);
+			}
+		}
+	}
+}
+
+// Function setUseData
+// Assigns reference data for each use element
+var setUseData = this.setUseData = function(parent) {
+	var elems = $(parent);
+	
+	if(parent.tagName !== 'use') {
+		elems = elems.find('use');
+	}
+	
+	elems.each(function() {
+		var id = getHref(this).substr(1);
+		var ref_elem = getElem(id);
+		if(!ref_elem) return;
+		$(this).data('ref', ref_elem);
+		if(ref_elem.tagName == 'symbol' || ref_elem.tagName == 'svg') {
+			$(this).data('symbol', ref_elem).data('ref', ref_elem);
+		}
+	});
+}
+
+// Function convertGradients
+// Converts gradients from userSpaceOnUse to objectBoundingBox
+var convertGradients = this.convertGradients = function(elem) {
+	var elems = $(elem).find('linearGradient, radialGradient');
+	if(!elems.length && svgedit.browser.isWebkit()) {
+		// Bug in webkit prevents regular *Gradient selector search
+		elems = $(elem).find('*').filter(function() {
+			return (this.tagName.indexOf('Gradient') >= 0);
+		});
+	}
+	
+	elems.each(function() {
+		var grad = this;
+		if($(grad).attr('gradientUnits') === 'userSpaceOnUse') {
+			// TODO: Support more than one element with this ref by duplicating parent grad
+			var elems = $(svgcontent).find('[fill="url(#' + grad.id + ')"],[stroke="url(#' + grad.id + ')"]');
+			if(!elems.length) return;
+			
+			// get object's bounding box
+			var bb = svgedit.utilities.getBBox(elems[0]);
+			
+			// This will occur if the element is inside a <defs> or a <symbol>,
+			// in which we shouldn't need to convert anyway.
+			if(!bb) return;
+			
+			if(grad.tagName === 'linearGradient') {
+				var g_coords = $(grad).attr(['x1', 'y1', 'x2', 'y2']);
+				
+				// If has transform, convert
+				var tlist = grad.gradientTransform.baseVal;
+				if(tlist && tlist.numberOfItems > 0) {
+					var m = transformListToTransform(tlist).matrix;
+					var pt1 = transformPoint(g_coords.x1, g_coords.y1, m);
+					var pt2 = transformPoint(g_coords.x2, g_coords.y2, m);
+					
+					g_coords.x1 = pt1.x;
+					g_coords.y1 = pt1.y;
+					g_coords.x2 = pt2.x;
+					g_coords.y2 = pt2.y;
+					grad.removeAttribute('gradientTransform');
+				}
+				
+				$(grad).attr({
+					x1: (g_coords.x1 - bb.x) / bb.width,
+					y1: (g_coords.y1 - bb.y) / bb.height,
+					x2: (g_coords.x2 - bb.x) / bb.width,
+					y2: (g_coords.y2 - bb.y) / bb.height
+				});
+				grad.removeAttribute('gradientUnits');
+			} else {
+				// Note: radialGradient elements cannot be easily converted 
+				// because userSpaceOnUse will keep circular gradients, while
+				// objectBoundingBox will x/y scale the gradient according to
+				// its bbox. 
+				
+				// For now we'll do nothing, though we should probably have
+				// the gradient be updated as the element is moved, as 
+				// inkscape/illustrator do.
+			
+//         				var g_coords = $(grad).attr(['cx', 'cy', 'r']);
+//         				
+// 						$(grad).attr({
+// 							cx: (g_coords.cx - bb.x) / bb.width,
+// 							cy: (g_coords.cy - bb.y) / bb.height,
+// 							r: g_coords.r
+// 						});
+// 						
+// 	        			grad.removeAttribute('gradientUnits');
+			}
+			
+
+		}
+	});
+}
+
+// Function: convertToGroup
+// Converts selected/given <use> or child SVG element to a group
+var convertToGroup = this.convertToGroup = function(elem) {
+	if(!elem) {
+		elem = selectedElements[0];
+	}
+	var $elem = $(elem);
+	
+	var batchCmd = new BatchCommand();
+	
+	var ts;
+	
+	if($elem.data('gsvg')) {
+		// Use the gsvg as the new group
+		var svg = elem.firstChild;
+		var pt = $(svg).attr(['x', 'y']);
+		
+		$(elem.firstChild.firstChild).unwrap();
+		$(elem).removeData('gsvg');
+		
+		var tlist = getTransformList(elem);
+		var xform = svgroot.createSVGTransform();
+		xform.setTranslate(pt.x, pt.y);
+		tlist.appendItem(xform);
+		recalculateDimensions(elem);
+		call("selected", [elem]);
+	} else if($elem.data('symbol')) {
+		elem = $elem.data('symbol');
+		
+		ts = $elem.attr('transform');
+		var pos = $elem.attr(['x','y']);
+
+		var vb = elem.getAttribute('viewBox');
+		
+		if(vb) {
+			var nums = vb.split(' ');
+			pos.x -= +nums[0];
+			pos.y -= +nums[1];
+		}
+		
+		// Not ideal, but works
+		ts += " translate(" + (pos.x || 0) + "," + (pos.y || 0) + ")";
+		
+		var prev = $elem.prev();
+		
+		// Remove <use> element
+		batchCmd.addSubCommand(new RemoveElementCommand($elem[0], $elem[0].nextSibling, $elem[0].parentNode));
+		$elem.remove();
+		
+		// See if other elements reference this symbol
+		var has_more = $(svgcontent).find('use:data(symbol)').length;
+			
+		var g = svgdoc.createElementNS(svgns, "g");
+		var childs = elem.childNodes;
+		
+		for(var i = 0; i < childs.length; i++) {
+			g.appendChild(childs[i].cloneNode(true));
+		}
+		
+		// Duplicate the gradients for Gecko, since they weren't included in the <symbol>
+		if(svgedit.browser.isGecko()) {
+			var dupeGrads = $(findDefs()).children('linearGradient,radialGradient,pattern').clone();
+			$(g).append(dupeGrads);
+		}
+		
+		if (ts) {
+			g.setAttribute("transform", ts);
+		}
+		
+		var parent = elem.parentNode;
+		
+		uniquifyElems(g);
+		
+		// Put the dupe gradients back into <defs> (after uniquifying them)
+		if(svgedit.browser.isGecko()) {
+			$(findDefs()).append( $(g).find('linearGradient,radialGradient,pattern') );
+		}
+	
+		// now give the g itself a new id
+		g.id = getNextId();
+		
+		prev.after(g);
+		
+		if(parent) {
+			if(!has_more) {
+				// remove symbol/svg element
+				var nextSibling = elem.nextSibling;
+				parent.removeChild(elem);
+				batchCmd.addSubCommand(new RemoveElementCommand(elem, nextSibling, parent));
+			}
+			batchCmd.addSubCommand(new InsertElementCommand(g));
+		}
+		
+		setUseData(g);
+		
+		if(svgedit.browser.isGecko()) {
+			convertGradients(findDefs());
+		} else {
+			convertGradients(g);
+		}
+		
+		// recalculate dimensions on the top-level children so that unnecessary transforms
+		// are removed
+		svgedit.utilities.walkTreePost(g, function(n){try{recalculateDimensions(n)}catch(e){console.log(e)}});
+		
+		// Give ID for any visible element missing one
+		$(g).find(visElems).each(function() {
+			if(!this.id) this.id = getNextId();
+		});
+		
+		selectOnly([g]);
+		
+		var cm = pushGroupProperties(g, true);
+		if(cm) {
+			batchCmd.addSubCommand(cm);
+		}
+
+		addCommandToHistory(batchCmd);
+		
+	} else {
+		console.log('Unexpected element to ungroup:', elem);
+	}
+}
+
+//   
+// Function: setSvgString
+// This function sets the current drawing as the input SVG XML.
+//
+// Parameters:
+// xmlString - The SVG as XML text.
+//
+// Returns:
+// This function returns false if the set was unsuccessful, true otherwise.
+this.setSvgString = function(xmlString) {
+	try {
+		// convert string into XML document
+		var newDoc = svgedit.utilities.text2xml(xmlString);
+
+		this.prepareSvg(newDoc);
+
+		var batchCmd = new BatchCommand("Change Source");
+
+		// remove old svg document
+		var nextSibling = svgcontent.nextSibling;
+		var oldzoom = svgroot.removeChild(svgcontent);
+		batchCmd.addSubCommand(new RemoveElementCommand(oldzoom, nextSibling, svgroot));
+	
+		// set new svg document
+		// If DOM3 adoptNode() available, use it. Otherwise fall back to DOM2 importNode()
+		if(svgdoc.adoptNode) {
+			svgcontent = svgdoc.adoptNode(newDoc.documentElement);
+		}
+		else {
+			svgcontent = svgdoc.importNode(newDoc.documentElement, true);
+		}
+		
+		svgroot.appendChild(svgcontent);
+		var content = $(svgcontent);
+		
+		canvas.current_drawing_ = new svgedit.draw.Drawing(svgcontent, idprefix);
+		
+		// retrieve or set the nonce
+		var nonce = getCurrentDrawing().getNonce();
+		if (nonce) {
+			call("setnonce", nonce);
+		} else {
+			call("unsetnonce");
+		}
+		
+		// change image href vals if possible
+		content.find('image').each(function() {
+			var image = this;
+			preventClickDefault(image);
+			var val = getHref(this);
+			if(val.indexOf('data:') === 0) {
+				// Check if an SVG-edit data URI
+				var m = val.match(/svgedit_url=(.*?);/);
+				if(m) {
+					var url = decodeURIComponent(m[1]);
+					$(new Image()).load(function() {
+						image.setAttributeNS(xlinkns,'xlink:href',url);
+					}).attr('src',url);
+				}
+			}
+			// Add to encodableImages if it loads
+			canvas.embedImage(val);
+		});
+	
+		// Wrap child SVGs in group elements
+		content.find('svg').each(function() {
+			// Skip if it's in a <defs>
+			if($(this).closest('defs').length) return;
+		
+			uniquifyElems(this);
+		
+			// Check if it already has a gsvg group
+			var pa = this.parentNode;
+			if(pa.childNodes.length === 1 && pa.nodeName === 'g') {
+				$(pa).data('gsvg', this);
+				pa.id = pa.id || getNextId();
+			} else {
+				groupSvgElem(this);
+			}
+		});
+		
+		// Put all paint elems in defs
+		
+		content.find('linearGradient, radialGradient, pattern').appendTo(findDefs());
+		
+		// Set ref element for <use> elements
+		
+		// TODO: This should also be done if the object is re-added through "redo"
+		setUseData(content);
+		
+		convertGradients(content[0]);
+		
+		// recalculate dimensions on the top-level children so that unnecessary transforms
+		// are removed
+		svgedit.utilities.walkTreePost(svgcontent, function(n){try{recalculateDimensions(n)}catch(e){console.log(e)}});
+		
+		var attrs = {
+			id: 'svgcontent',
+			overflow: curConfig.show_outside_canvas?'visible':'hidden'
+		};
+		
+		var percs = false;
+		
+		// determine proper size
+		if (content.attr("viewBox")) {
+			var vb = content.attr("viewBox").split(' ');
+			attrs.width = vb[2];
+			attrs.height = vb[3];
+		}
+		// handle content that doesn't have a viewBox
+		else {
+			$.each(['width', 'height'], function(i, dim) {
+				// Set to 100 if not given
+				var val = content.attr(dim);
+				
+				if(!val) val = '100%';
+				
+				if((val+'').substr(-1) === "%") {
+					// Use user units if percentage given
+					percs = true;
+				} else {
+					attrs[dim] = convertToNum(dim, val);
+				}
+			});
+		}
+		
+		// identify layers
+		identifyLayers();
+		
+		// Give ID for any visible layer children missing one
+		content.children().find(visElems).each(function() {
+			if(!this.id) this.id = getNextId();
+		});
+		
+		// Percentage width/height, so let's base it on visible elements
+		if(percs) {
+			var bb = getStrokedBBox();
+			attrs.width = bb.width + bb.x;
+			attrs.height = bb.height + bb.y;
+		}
+		
+		// Just in case negative numbers are given or 
+		// result from the percs calculation
+		if(attrs.width <= 0) attrs.width = 200;
+		if(attrs.height <= 0) attrs.height = 200;
+		
+		content.attr(attrs);
+		this.contentW = attrs['width'];
+		this.contentH = attrs['height'];
+		
+		$("#canvas_width").val(this.contentW)
+		$("#canvas_height").val(this.contentH)
+		var background = $("#canvas_background")
+		if (background.length) {
+			var opacity = background.attr("fill-opacity")
+			opacity = opacity ? parseInt(opacity)*100 : 100
+			fill = this.getPaint(background.attr("fill"), opacity, "canvas")
+			methodDraw.paintBox.canvas.setPaint(fill)
+		}
+		else {
+			fill = this.getPaint("none", 100, "canvas")
+			methodDraw.paintBox.canvas.setPaint(fill)
+		}
+
+		batchCmd.addSubCommand(new InsertElementCommand(svgcontent));
+		// update root to the correct size
+		var changes = content.attr(["width", "height"]);
+		batchCmd.addSubCommand(new ChangeElementCommand(svgroot, changes));
+		
+		// reset zoom
+		current_zoom = 1;
+		
+		// reset transform lists
+		svgedit.transformlist.resetListMap();
+		clearSelection();
+		svgedit.path.clearData();
+		svgroot.appendChild(selectorManager.selectorParentGroup);
+		
+		addCommandToHistory(batchCmd);
+		call("changed", [svgcontent]);
+	} catch(e) {
+		console.log(e);
+		return false;
+	}
+
+	return true;
+};
+
+
+this.getPaint = function(color, opac, type) {
+	// update the editor's fill paint
+	var opts = null;
+	if (color.indexOf("url(#") === 0) {
+		var refElem = svgCanvas.getRefElem(color);
+		if(refElem) {
+			refElem = refElem.cloneNode(true);
+		} else {
+			refElem =  $("#" + type + "_color defs *")[0];
+		}
+
+		opts = { alpha: opac };
+		opts[refElem.tagName] = refElem;
+	} 
+	else if (color.indexOf("#") === 0) {
+		opts = {
+			alpha: opac,
+			solidColor: color.substr(1)
+		};
+	}
+	else {
+		opts = {
+			alpha: opac,
+			solidColor: 'none'
+		};
+	}
+	return new $.jGraduate.Paint(opts);
+};
+
+// Function: importSvgString
+// This function imports the input SVG XML as a <symbol> in the <defs>, then adds a
+// <use> to the current layer.
+//
+// Parameters:
+// xmlString - The SVG as XML text.
+//
+// Returns:
+// This function returns false if the import was unsuccessful, true otherwise.
+// TODO: 
+// * properly handle if namespace is introduced by imported content (must add to svgcontent
+// and update all prefixes in the imported node)
+// * properly handle recalculating dimensions, recalculateDimensions() doesn't handle
+// arbitrary transform lists, but makes some assumptions about how the transform list 
+// was obtained
+// * import should happen in top-left of current zoomed viewport	
+this.importSvgString = function(xmlString) {
+
+	try {
+		// Get unique ID
+		var uid = svgedit.utilities.encode64(xmlString.length + xmlString).substr(0,32);
+		
+		var useExisting = false;
+
+		// Look for symbol and make sure symbol exists in image
+		if(import_ids[uid]) {
+			if( $(import_ids[uid].symbol).parents('#svgroot').length ) {
+				useExisting = true;
+			}
+		}
+		
+		var batchCmd = new BatchCommand("Import SVG");
+	
+		if(useExisting) {
+			var symbol = import_ids[uid].symbol;
+			var ts = import_ids[uid].xform;
+		} else {
+			// convert string into XML document
+			var newDoc = svgedit.utilities.text2xml(xmlString);
+	
+			this.prepareSvg(newDoc);
+	
+			// import new svg document into our document
+			var svg;
+			// If DOM3 adoptNode() available, use it. Otherwise fall back to DOM2 importNode()
+			if(svgdoc.adoptNode) {
+				svg = svgdoc.adoptNode(newDoc.documentElement);
+			}
+			else {
+				svg = svgdoc.importNode(newDoc.documentElement, true);
+			}
+			
+			uniquifyElems(svg);
+			
+			var innerw = convertToNum('width', svg.getAttribute("width")),
+				innerh = convertToNum('height', svg.getAttribute("height")),
+				innervb = svg.getAttribute("viewBox"),
+				// if no explicit viewbox, create one out of the width and height
+				vb = innervb ? innervb.split(" ") : [0,0,innerw,innerh];
+			for (var j = 0; j < 4; ++j)
+				vb[j] = +(vb[j]);
+	
+			// TODO: properly handle preserveAspectRatio
+			var canvasw = +svgcontent.getAttribute("width"),
+				canvash = +svgcontent.getAttribute("height");
+			// imported content should be 1/3 of the canvas on its largest dimension
+			
+			if (innerh > innerw) {
+				var ts = "scale(" + (canvash/3)/vb[3] + ")";
+			}
+			else {
+				var ts = "scale(" + (canvash/3)/vb[2] + ")";
+			}
+			
+			// Hack to make recalculateDimensions understand how to scale
+			ts = "translate(0) " + ts + " translate(0)";
+			
+			var symbol = svgdoc.createElementNS(svgns, "symbol");
+			var defs = findDefs();
+			
+			if(svgedit.browser.isGecko()) {
+				// Move all gradients into root for Firefox, workaround for this bug:
+				// https://bugzilla.mozilla.org/show_bug.cgi?id=353575
+				// TODO: Make this properly undo-able.
+				$(svg).find('linearGradient, radialGradient, pattern').appendTo(defs);
+			}
+	
+			while (svg.firstChild) {
+				var first = svg.firstChild;
+				symbol.appendChild(first);
+			}
+			var attrs = svg.attributes;
+			for(var i=0; i < attrs.length; i++) {
+				var attr = attrs[i];
+				symbol.setAttribute(attr.nodeName, attr.nodeValue);
+			}
+			symbol.id = getNextId();
+			
+			// Store data
+			import_ids[uid] = {
+				symbol: symbol,
+				xform: ts
+			}
+			
+			findDefs().appendChild(symbol);
+			batchCmd.addSubCommand(new InsertElementCommand(symbol));
+		}
+		
+		
+		var use_el = svgdoc.createElementNS(svgns, "use");
+		use_el.id = getNextId();
+		setHref(use_el, "#" + symbol.id);
+		
+		(current_group || getCurrentDrawing().getCurrentLayer()).appendChild(use_el);
+		batchCmd.addSubCommand(new InsertElementCommand(use_el));
+		clearSelection();
+		
+		use_el.setAttribute("transform", ts);
+		recalculateDimensions(use_el);
+		$(use_el).data('symbol', symbol).data('ref', symbol);
+		addToSelection([use_el]);
+		
+		// TODO: Find way to add this in a recalculateDimensions-parsable way
+// 				if (vb[0] != 0 || vb[1] != 0)
+// 					ts = "translate(" + (-vb[0]) + "," + (-vb[1]) + ") " + ts;
+		addCommandToHistory(batchCmd);
+		call("changed", [svgcontent]);
+
+	} catch(e) {
+		console.log(e);
+		return false;
+	}
+
+	return true;
+};
+
+// TODO(codedread): Move all layer/context functions in draw.js
+// Layer API Functions
+
+// Group: Layers
+
+// Function: identifyLayers
+// Updates layer system
+var identifyLayers = canvas.identifyLayers = function() {
+	leaveContext();
+	getCurrentDrawing().identifyLayers();
+};
+
+// Function: createLayer
+// Creates a new top-level layer in the drawing with the given name, sets the current layer 
+// to it, and then clears the selection  This function then calls the 'changed' handler.
+// This is an undoable action.
+//
+// Parameters:
+// name - The given name
+this.createLayer = function(name) {
+	var batchCmd = new BatchCommand("Create Layer");
+	var new_layer = getCurrentDrawing().createLayer(name);
+	batchCmd.addSubCommand(new InsertElementCommand(new_layer));
+	addCommandToHistory(batchCmd);
+	clearSelection();
+	call("changed", [new_layer]);
+};
+
+// Function: cloneLayer
+// Creates a new top-level layer in the drawing with the given name, copies all the current layer's contents
+// to it, and then clears the selection  This function then calls the 'changed' handler.
+// This is an undoable action.
+//
+// Parameters:
+// name - The given name
+this.cloneLayer = function(name) {
+	var batchCmd = new BatchCommand("Duplicate Layer");
+	var new_layer = svgdoc.createElementNS(svgns, "g");
+	var layer_title = svgdoc.createElementNS(svgns, "title");
+	layer_title.textContent = name;
+	new_layer.appendChild(layer_title);
+	var current_layer = getCurrentDrawing().getCurrentLayer();
+	$(current_layer).after(new_layer);
+	var childs = current_layer.childNodes;
+	for(var i = 0; i < childs.length; i++) {
+		var ch = childs[i];
+		if(ch.localName == 'title') continue;
+		new_layer.appendChild(copyElem(ch));
+	}
+	
+	clearSelection();
+	identifyLayers();
+
+	batchCmd.addSubCommand(new InsertElementCommand(new_layer));
+	addCommandToHistory(batchCmd);
+	canvas.setCurrentLayer(name);
+	call("changed", [new_layer]);
+};
+
+// Function: deleteCurrentLayer
+// Deletes the current layer from the drawing and then clears the selection. This function 
+// then calls the 'changed' handler.  This is an undoable action.
+this.deleteCurrentLayer = function() {
+	var current_layer = getCurrentDrawing().getCurrentLayer();
+	var nextSibling = current_layer.nextSibling;
+	var parent = current_layer.parentNode;
+	current_layer = getCurrentDrawing().deleteCurrentLayer();
+	if (current_layer) {
+		var batchCmd = new BatchCommand("Delete Layer");
+		// store in our Undo History
+		batchCmd.addSubCommand(new RemoveElementCommand(current_layer, nextSibling, parent));
+		addCommandToHistory(batchCmd);
+		clearSelection();
+		call("changed", [parent]);
+		return true;
+	}
+	return false;
+};
+
+// Function: setCurrentLayer
+// Sets the current layer. If the name is not a valid layer name, then this function returns
+// false. Otherwise it returns true. This is not an undo-able action.
+//
+// Parameters:
+// name - the name of the layer you want to switch to.
+//
+// Returns:
+// true if the current layer was switched, otherwise false
+this.setCurrentLayer = function(name) {
+	var result = getCurrentDrawing().setCurrentLayer(svgedit.utilities.toXml(name));
+	if (result) {
+		clearSelection();
+	}
+	return result;
+};
+
+// Function: renameCurrentLayer
+// Renames the current layer. If the layer name is not valid (i.e. unique), then this function 
+// does nothing and returns false, otherwise it returns true. This is an undo-able action.
+// 
+// Parameters:
+// newname - the new name you want to give the current layer.  This name must be unique 
+// among all layer names.
+//
+// Returns:
+// true if the rename succeeded, false otherwise.
+this.renameCurrentLayer = function(newname) {
+	var drawing = getCurrentDrawing();
+	if (drawing.current_layer) {
+		var oldLayer = drawing.current_layer;
+		// setCurrentLayer will return false if the name doesn't already exist
+		// this means we are free to rename our oldLayer
+		if (!canvas.setCurrentLayer(newname)) {
+			var batchCmd = new BatchCommand("Rename Layer");
+			// find the index of the layer
+			for (var i = 0; i < drawing.getNumLayers(); ++i) {
+				if (drawing.all_layers[i][1] == oldLayer) break;
+			}
+			var oldname = drawing.getLayerName(i);
+			drawing.all_layers[i][0] = svgedit.utilities.toXml(newname);
+		
+			// now change the underlying title element contents
+			var len = oldLayer.childNodes.length;
+			for (var i = 0; i < len; ++i) {
+				var child = oldLayer.childNodes.item(i);
+				// found the <title> element, now append all the
+				if (child && child.tagName == "title") {
+					// wipe out old name 
+					while (child.firstChild) { child.removeChild(child.firstChild); }
+					child.textContent = newname;
+
+					batchCmd.addSubCommand(new ChangeElementCommand(child, {"#text":oldname}));
+					addCommandToHistory(batchCmd);
+					call("changed", [oldLayer]);
+					return true;
+				}
+			}
+		}
+		drawing.current_layer = oldLayer;
+	}
+	return false;
+};
+
+// Function: setCurrentLayerPosition
+// Changes the position of the current layer to the new value. If the new index is not valid, 
+// this function does nothing and returns false, otherwise it returns true. This is an
+// undo-able action.
+//
+// Parameters:
+// newpos - The zero-based index of the new position of the layer.  This should be between
+// 0 and (number of layers - 1)
+// 
+// Returns:
+// true if the current layer position was changed, false otherwise.
+this.setCurrentLayerPosition = function(newpos) {
+	var drawing = getCurrentDrawing();
+	if (drawing.current_layer && newpos >= 0 && newpos < drawing.getNumLayers()) {
+		for (var oldpos = 0; oldpos < drawing.getNumLayers(); ++oldpos) {
+			if (drawing.all_layers[oldpos][1] == drawing.current_layer) break;
+		}
+		// some unknown error condition (current_layer not in all_layers)
+		if (oldpos == drawing.getNumLayers()) { return false; }
+		
+		if (oldpos != newpos) {
+			// if our new position is below us, we need to insert before the node after newpos
+			var refLayer = null;
+			var oldNextSibling = drawing.current_layer.nextSibling;
+			if (newpos > oldpos ) {
+				if (newpos < drawing.getNumLayers()-1) {
+					refLayer = drawing.all_layers[newpos+1][1];
+				}
+			}
+			// if our new position is above us, we need to insert before the node at newpos
+			else {
+				refLayer = drawing.all_layers[newpos][1];
+			}
+			svgcontent.insertBefore(drawing.current_layer, refLayer);
+			addCommandToHistory(new MoveElementCommand(drawing.current_layer, oldNextSibling, svgcontent));
+			
+			identifyLayers();
+			canvas.setCurrentLayer(drawing.getLayerName(newpos));
+			
+			return true;
+		}
+	}
+	
+	return false;
+};
+
+// Function: setLayerVisibility
+// Sets the visibility of the layer. If the layer name is not valid, this function return 
+// false, otherwise it returns true. This is an undo-able action.
+//
+// Parameters:
+// layername - the name of the layer to change the visibility
+// bVisible - true/false, whether the layer should be visible
+//
+// Returns:
+// true if the layer's visibility was set, false otherwise
+this.setLayerVisibility = function(layername, bVisible) {
+	var drawing = getCurrentDrawing();
+	var prevVisibility = drawing.getLayerVisibility(layername);
+	var layer = drawing.setLayerVisibility(layername, bVisible);
+	if (layer) {
+		var oldDisplay = prevVisibility ? 'inline' : 'none';
+		addCommandToHistory(new ChangeElementCommand(layer, {'display':oldDisplay}, 'Layer Visibility'));
+	} else {
+		return false;
+	}
+	
+	if (layer == drawing.getCurrentLayer()) {
+		clearSelection();
+		pathActions.clear();
+	}
+//		call("changed", [selected]);	
+	return true;
+};
+
+// Function: moveSelectedToLayer
+// Moves the selected elements to layername. If the name is not a valid layer name, then false 
+// is returned.  Otherwise it returns true. This is an undo-able action.
+//
+// Parameters:
+// layername - the name of the layer you want to which you want to move the selected elements
+//
+// Returns:
+// true if the selected elements were moved to the layer, false otherwise.
+this.moveSelectedToLayer = function(layername) {
+	// find the layer
+	var layer = null;
+	var drawing = getCurrentDrawing();
+	for (var i = 0; i < drawing.getNumLayers(); ++i) {
+		if (drawing.getLayerName(i) == layername) {
+			layer = drawing.all_layers[i][1];
+			break;
+		}
+	}
+	if (!layer) return false;
+	
+	var batchCmd = new BatchCommand("Move Elements to Layer");
+	
+	// loop for each selected element and move it
+	var selElems = selectedElements;
+	var i = selElems.length;
+	while (i--) {
+		var elem = selElems[i];
+		if (!elem) continue;
+		var oldNextSibling = elem.nextSibling;
+		// TODO: this is pretty brittle!
+		var oldLayer = elem.parentNode;
+		layer.appendChild(elem);
+		batchCmd.addSubCommand(new MoveElementCommand(elem, oldNextSibling, oldLayer));
+	}
+	
+	addCommandToHistory(batchCmd);
+	
+	return true;
+};
+
+this.mergeLayer = function(skipHistory) {
+	var batchCmd = new BatchCommand("Merge Layer");
+	var drawing = getCurrentDrawing();
+	var prev = $(drawing.current_layer).prev()[0];
+	if(!prev) return;
+	var childs = drawing.current_layer.childNodes;
+	var len = childs.length;
+	var layerNextSibling = drawing.current_layer.nextSibling;
+	batchCmd.addSubCommand(new RemoveElementCommand(drawing.current_layer, layerNextSibling, svgcontent));
+
+	while(drawing.current_layer.firstChild) {
+		var ch = drawing.current_layer.firstChild;
+		if(ch.localName == 'title') {
+			var chNextSibling = ch.nextSibling;
+			batchCmd.addSubCommand(new RemoveElementCommand(ch, chNextSibling, drawing.current_layer));
+			drawing.current_layer.removeChild(ch);
+			continue;
+		}
+		var oldNextSibling = ch.nextSibling;
+		prev.appendChild(ch);
+		batchCmd.addSubCommand(new MoveElementCommand(ch, oldNextSibling, drawing.current_layer));
+	}
+	
+	// Remove current layer
+	svgcontent.removeChild(drawing.current_layer);
+	
+	if(!skipHistory) {
+		clearSelection();
+		identifyLayers();
+
+		call("changed", [svgcontent]);
+		
+		addCommandToHistory(batchCmd);
+	}
+	
+	drawing.current_layer = prev;
+	return batchCmd;
+}
+
+this.mergeAllLayers = function() {
+	var batchCmd = new BatchCommand("Merge all Layers");
+	var drawing = getCurrentDrawing();
+	drawing.current_layer = drawing.all_layers[drawing.getNumLayers()-1][1];
+	while($(svgcontent).children('g').length > 1) {
+		batchCmd.addSubCommand(canvas.mergeLayer(true));
+	}
+	
+	clearSelection();
+	identifyLayers();
+	call("changed", [svgcontent]);
+	addCommandToHistory(batchCmd);
+}
+
+// Function: leaveContext
+// Return from a group context to the regular kind, make any previously
+// disabled elements enabled again
+var leaveContext = this.leaveContext = function() {
+	var len = disabled_elems.length;
+	if(len) {
+		for(var i = 0; i < len; i++) {
+			var elem = disabled_elems[i];
+			
+			var orig = elData(elem, 'orig_opac');
+			if(orig !== 1) {
+				elem.setAttribute('opacity', orig);
+			} else {
+				elem.removeAttribute('opacity');
+			}
+			elem.setAttribute('style', 'pointer-events: inherit');
+		}
+		disabled_elems = [];
+		clearSelection(true);
+		call("contextset", null);
+	}
+	current_group = null;
+}
+
+// Function: setContext
+// Set the current context (for in-group editing)
+var setContext = this.setContext = function(elem) {
+	leaveContext();
+	if(typeof elem === 'string') {
+		elem = getElem(elem);
+	}
+
+	// Edit inside this group
+	current_group = elem;
+	
+	// Disable other elements
+	$(elem).parentsUntil('#svgcontent').andSelf().siblings().each(function() {
+		var opac = this.getAttribute('opacity') || 1;
+		// Store the original's opacity
+		elData(this, 'orig_opac', opac);
+		this.setAttribute('opacity', opac * .33);
+		this.setAttribute('style', 'pointer-events: none');
+		disabled_elems.push(this);
+	});
+
+	clearSelection();
+	call("contextset", current_group);
+}
+
+// Group: Document functions
+
+// Function: clear
+// Clears the current document.  This is not an undoable action.
+this.clear = function() {
+	pathActions.clear();
+
+	clearSelection();
+
+	// clear the svgcontent node
+	canvas.clearSvgContentElement();
+
+	// create new document
+	canvas.current_drawing_ = new svgedit.draw.Drawing(svgcontent);
+
+	// create empty first layer
+	canvas.createLayer("Layer 1");
+	
+	// clear the undo stack
+	canvas.undoMgr.resetUndoStack();
+
+	// reset the selector manager
+	selectorManager.initGroup();
+
+	// reset the rubber band box
+	rubberBox = selectorManager.getRubberBandBox();
+
+	call("cleared");
+};
+
+// Function: linkControlPoints
+// Alias function
+this.linkControlPoints = pathActions.linkControlPoints;
+
+// Function: getContentElem
+// Returns the content DOM element
+this.getContentElem = function() { return svgcontent; };
+
+// Function: getRootElem
+// Returns the root DOM element
+this.getRootElem = function() { return svgroot; };
+
+// Function: getSelectedElems
+// Returns the array with selected DOM elements
+this.getSelectedElems = function() { return selectedElements; };
+
+// Function: getResolution
+// Returns the current dimensions and zoom level in an object
+var getResolution = this.getResolution = function() {
+// 		var vb = svgcontent.getAttribute("viewBox").split(' ');
+// 		return {'w':vb[2], 'h':vb[3], 'zoom': current_zoom};
+	
+	var width = svgcontent.getAttribute("width")/current_zoom;
+	var height = svgcontent.getAttribute("height")/current_zoom;
+	
+	return {
+		'w': width,
+		'h': height,
+		'zoom': current_zoom
+	};
+};
+
+// Function: getZoom
+// Returns the current zoom level
+this.getZoom = function(){return current_zoom;};
+
+// Function: getVersion
+// Returns a string which describes the revision number of SvgCanvas.
+this.getVersion = function() {
+	return "svgcanvas.js ($Rev: 2082 $)";
+};
+
+// Function: setUiStrings
+// Update interface strings with given values
+//
+// Parameters:
+// strs - Object with strings (see uiStrings for examples)
+this.setUiStrings = function(strs) {
+	$.extend(uiStrings, strs.notification);
+}
+
+// Function: setConfig
+// Update configuration options with given values
+//
+// Parameters:
+// opts - Object with options (see curConfig for examples)
+this.setConfig = function(opts) {
+	$.extend(curConfig, opts);
+}
+
+// Function: getTitle
+// Returns the current group/SVG's title contents
+this.getTitle = function(elem) {
+	elem = elem || selectedElements[0];
+	if(!elem) return;
+	elem = $(elem).data('gsvg') || $(elem).data('symbol') || elem;
+	var childs = elem.childNodes;
+	for (var i=0; i<childs.length; i++) {
+		if(childs[i].nodeName == 'title') {
+			return childs[i].textContent;
+		}
+	}
+	return '';
+}
+
+// Function: setGroupTitle
+// Sets the group/SVG's title content
+// TODO: Combine this with setDocumentTitle
+this.setGroupTitle = function(val) {
+	var elem = selectedElements[0];
+	elem = $(elem).data('gsvg') || elem;
+	
+	var ts = $(elem).children('title');
+	
+	var batchCmd = new BatchCommand("Set Label");
+	
+	if(!val.length) {
+		// Remove title element
+		var tsNextSibling = ts.nextSibling;
+		batchCmd.addSubCommand(new RemoveElementCommand(ts[0], tsNextSibling, elem));
+		ts.remove();
+	} else if(ts.length) {
+		// Change title contents
+		var title = ts[0];
+		batchCmd.addSubCommand(new ChangeElementCommand(title, {'#text': title.textContent}));
+		title.textContent = val;
+	} else {
+		// Add title element
+		title = svgdoc.createElementNS(svgns, "title");
+		title.textContent = val;
+		$(elem).prepend(title);
+		batchCmd.addSubCommand(new InsertElementCommand(title));
+	}
+
+	addCommandToHistory(batchCmd);
+}
+
+// Function: getDocumentTitle
+// Returns the current document title or an empty string if not found
+this.getDocumentTitle = function() {
+	return canvas.getTitle(svgcontent);
+}
+
+// Function: setDocumentTitle
+// Adds/updates a title element for the document with the given name.
+// This is an undoable action
+//
+// Parameters:
+// newtitle - String with the new title
+this.setDocumentTitle = function(newtitle) {
+	var childs = svgcontent.childNodes, doc_title = false, old_title = '';
+	
+	var batchCmd = new BatchCommand("Change Image Title");
+	
+	for (var i=0; i<childs.length; i++) {
+		if(childs[i].nodeName == 'title') {
+			doc_title = childs[i];
+			old_title = doc_title.textContent;
+			break;
+		}
+	}
+	if(!doc_title) {
+		doc_title = svgdoc.createElementNS(svgns, "title");
+		svgcontent.insertBefore(doc_title, svgcontent.firstChild);
+	} 
+	
+	if(newtitle.length) {
+		doc_title.textContent = newtitle;
+	} else {
+		// No title given, so element is not necessary
+		doc_title.parentNode.removeChild(doc_title);
+	}
+	batchCmd.addSubCommand(new ChangeElementCommand(doc_title, {'#text': old_title}));
+	addCommandToHistory(batchCmd);
+}
+
+// Function: getEditorNS
+// Returns the editor's namespace URL, optionally adds it to root element
+//
+// Parameters:
+// add - Boolean to indicate whether or not to add the namespace value
+this.getEditorNS = function(add) {
+	if(add) {
+		svgcontent.setAttribute('xmlns:se', se_ns);
+	}
+	return se_ns;
+}
+
+// Function: setResolution
+// Changes the document's dimensions to the given size
+//
+// Parameters: 
+// x - Number with the width of the new dimensions in user units. 
+// Can also be the string "fit" to indicate "fit to content"
+// y - Number with the height of the new dimensions in user units. 
+//
+// Returns:
+// Boolean to indicate if resolution change was succesful. 
+// It will fail on "fit to content" option with no content to fit to.
+this.setResolution = function(x, y) {
+	var res = getResolution();
+	var w = res.w, h = res.h;
+	var batchCmd;
+
+	if(x == 'fit') {
+		// Get bounding box
+		var bbox = getStrokedBBox();
+		
+		if(bbox) {
+			batchCmd = new BatchCommand("Fit Canvas to Content");
+			var visEls = getVisibleElements();
+			addToSelection(visEls);
+			var dx = [], dy = [];
+			$.each(visEls, function(i, item) {
+				dx.push(bbox.x*-1);
+				dy.push(bbox.y*-1);
+			});
+			
+			var cmd = canvas.moveSelectedElements(dx, dy, true);
+			batchCmd.addSubCommand(cmd);
+			clearSelection();
+			
+			x = Math.round(bbox.width);
+			y = Math.round(bbox.height);
+		} else {
+			return false;
+		}
+	}
+	if (x != w || y != h) {
+		var handle = svgroot.suspendRedraw(1000);
+		if(!batchCmd) {
+			batchCmd = new BatchCommand("Change Image Dimensions");
+		}
+
+		x = convertToNum('width', x);
+		y = convertToNum('height', y);
+		
+		svgcontent.setAttribute('width', x);
+		svgcontent.setAttribute('height', y);
+		
+		this.contentW = x;
+		this.contentH = y;
+		batchCmd.addSubCommand(new ChangeElementCommand(svgcontent, {"width":w, "height":h}));
+
+		svgcontent.setAttribute("viewBox", [0, 0, x/current_zoom, y/current_zoom].join(' '));
+		batchCmd.addSubCommand(new ChangeElementCommand(svgcontent, {"viewBox": ["0 0", w, h].join(' ')}));
+	
+		addCommandToHistory(batchCmd);
+		svgroot.unsuspendRedraw(handle);
+		background = document.getElementById("canvas_background");
+	  if (background) {
+	    background.setAttribute("x", -1)
+	    background.setAttribute("y", -1)
+	    background.setAttribute("width", x+2)
+	    background.setAttribute("height", y+2)
+	  }
+		call("changed", [svgcontent]);
+	}
+	return [x,y];
+};
+
+// Function: getOffset
+// Returns an object with x, y values indicating the svgcontent element's
+// position in the editor's canvas.
+this.getOffset = function() {
+	return $(svgcontent).attr(['x', 'y']);
+}
+
+// Function: setBBoxZoom
+// Sets the zoom level on the canvas-side based on the given value
+// 
+// Parameters:
+// val - Bounding box object to zoom to or string indicating zoom option 
+// editor_w - Integer with the editor's workarea box's width
+// editor_h - Integer with the editor's workarea box's height
+this.setBBoxZoom = function(val, editor_w, editor_h) {
+	var spacer = .85;
+	var bb;
+	var calcZoom = function(bb) {
+		if(!bb) return false;
+		var w_zoom = Math.round((editor_w / bb.width)*100 * spacer)/100;
+		var h_zoom = Math.round((editor_h / bb.height)*100 * spacer)/100;	
+		var zoomlevel = Math.min(w_zoom,h_zoom);
+		canvas.setZoom(zoomlevel);
+		return {'zoom': zoomlevel, 'bbox': bb};
+	}
+	
+	if(typeof val == 'object') {
+		bb = val;
+		if(bb.width == 0 || bb.height == 0) {
+			var newzoom = bb.zoom?bb.zoom:current_zoom * bb.factor;
+			canvas.setZoom(newzoom);
+			return {'zoom': current_zoom, 'bbox': bb};
+		}
+		return calcZoom(bb);
+	}
+
+	switch (val) {
+		case 'selection':
+			if(!selectedElements[0]) return;
+			var sel_elems = $.map(selectedElements, function(n){ if(n) return n; });
+			bb = getStrokedBBox(sel_elems);
+			break;
+		case 'canvas':
+			var res = getResolution();
+			spacer = .95;
+			bb = {width:res.w, height:res.h ,x:0, y:0};
+			break;
+		case 'content':
+			bb = getStrokedBBox();
+			break;
+		case 'layer':
+			bb = getStrokedBBox(getVisibleElements(getCurrentDrawing().getCurrentLayer()));
+			break;
+		default:
+			return;
+	}
+	return calcZoom(bb);
+}
+
+// Function: setZoom
+// Sets the zoom to the given level
+//
+// Parameters:
+// zoomlevel - Float indicating the zoom level to change to
+this.setZoom = function(zoomlevel) {
+	var res = getResolution();
+	svgcontent.setAttribute("viewBox", "0 0 " + res.w/zoomlevel + " " + res.h/zoomlevel);
+	current_zoom = zoomlevel;
+	$.each(selectedElements, function(i, elem) {
+		if(!elem) return;
+		selectorManager.requestSelector(elem).resize();
+	});
+	pathActions.zoomChange();
+	runExtensions("zoomChanged", zoomlevel);
+}
+
+// Function: getMode
+// Returns the current editor mode string
+this.getMode = function() {
+	return current_mode;
+};
+
+// Function: setMode
+// Sets the editor's mode to the given string
+//
+// Parameters:
+// name - String with the new mode to change to
+this.setMode = function(name) {
+	
+	pathActions.clear();
+	textActions.clear();
+	$("#workarea").attr("class", name);
+	cur_properties = (selectedElements[0] && selectedElements[0].nodeName == 'text') ? cur_text : cur_shape;
+	current_mode = name;
+};
+
+// Group: Element Styling
+
+// Function: getColor
+// Returns the current fill/stroke option
+this.getColor = function(type) {
+	return cur_properties[type];
+};
+
+// Function: setColor
+// Change the current stroke/fill color/gradient value
+// 
+// Parameters:
+// type - String indicating fill or stroke
+// val - The value to set the stroke attribute to
+// preventUndo - Boolean indicating whether or not this should be and undoable option
+this.setColor = function(type, val, preventUndo) {
+	cur_shape[type] = val;
+	cur_properties[type + '_paint'] = {type:"solidColor"};
+	var elems = [];
+	var i = selectedElements.length;
+	while (i--) {
+		var elem = selectedElements[i];
+		if (elem) {
+			if (elem.tagName == "g")
+				svgedit.utilities.walkTree(elem, function(e){if(e.nodeName!="g") elems.push(e);});
+			else {
+				if(type == 'fill') {
+					if(elem.tagName != "polyline" && elem.tagName != "line") {
+						elems.push(elem);
+					}
+				} else {
+					elems.push(elem);
+				}
+			}
+		}
+	}
+	if (elems.length > 0) {
+		if (!preventUndo) {
+			changeSelectedAttribute(type, val, elems);
+			call("changed", elems);
+		} else 
+			changeSelectedAttributeNoUndo(type, val, elems);
+	}
+}
+
+
+// Function: findDefs
+// Return the document's <defs> element, create it first if necessary
+var findDefs = function() {
+	var defs = svgcontent.getElementsByTagNameNS(svgns, "defs");
+	if (defs.length > 0) {
+		defs = defs[0];
+	}
+	else {
+		defs = svgdoc.createElementNS(svgns, "defs" );
+		if(svgcontent.firstChild) {
+			// first child is a comment, so call nextSibling
+			svgcontent.insertBefore( defs, svgcontent.firstChild.nextSibling);
+		} else {
+			svgcontent.appendChild(defs);
+		}
+	}
+	return defs;
+};
+
+// Function: setGradient
+// Apply the current gradient to selected element's fill or stroke
+//
+// Parameters
+// type - String indicating "fill" or "stroke" to apply to an element
+var setGradient = this.setGradient = function(type) {
+	if(!cur_properties[type + '_paint'] || cur_properties[type + '_paint'].type == "solidColor") return;
+	var grad = canvas[type + 'Grad'];
+	// find out if there is a duplicate gradient already in the defs
+	var duplicate_grad = findDuplicateGradient(grad);
+	var defs = findDefs();
+	// no duplicate found, so import gradient into defs
+	if (!duplicate_grad) {
+		var orig_grad = grad;
+		grad = defs.appendChild( svgdoc.importNode(grad, true) );
+		// get next id and set it on the grad
+		grad.id = getNextId();
+	}
+	else { // use existing gradient
+		grad = duplicate_grad;
+	}
+	canvas.setColor(type, "url(#" + grad.id + ")");
+	if (type == "canvas") {
+	  var background = document.getElementById("canvas_background");
+	  if (background) {
+	    background.setAttribute('fill', "url(#" + grad.id + ")")
+	  }
+	}
+}
+
+// Function: findDuplicateGradient
+// Check if exact gradient already exists
+//
+// Parameters:
+// grad - The gradient DOM element to compare to others
+//
+// Returns:
+// The existing gradient if found, null if not
+var findDuplicateGradient = function(grad) {
+	var defs = findDefs();
+	var existing_grads = $(defs).find("linearGradient, radialGradient");
+	var i = existing_grads.length;
+	var rad_attrs = ['r','cx','cy','fx','fy'];
+	while (i--) {
+		var og = existing_grads[i];
+		if(grad.tagName == "linearGradient") {
+			if (grad.getAttribute('x1') != og.getAttribute('x1') ||
+				grad.getAttribute('y1') != og.getAttribute('y1') ||
+				grad.getAttribute('x2') != og.getAttribute('x2') ||
+				grad.getAttribute('y2') != og.getAttribute('y2')) 
+			{
+				continue;
+			}
+		} else {
+			var grad_attrs = $(grad).attr(rad_attrs);
+			var og_attrs = $(og).attr(rad_attrs);
+			
+			var diff = false;
+			$.each(rad_attrs, function(i, attr) {
+				if(grad_attrs[attr] != og_attrs[attr]) diff = true;
+			});
+			
+			if(diff) continue;
+		}
+		
+		// else could be a duplicate, iterate through stops
+		var stops = grad.getElementsByTagNameNS(svgns, "stop");
+		var ostops = og.getElementsByTagNameNS(svgns, "stop");
+
+		if (stops.length != ostops.length) {
+			continue;
+		}
+
+		var j = stops.length;
+		while(j--) {
+			var stop = stops[j];
+			var ostop = ostops[j];
+
+			if (stop.getAttribute('offset') != ostop.getAttribute('offset') ||
+				stop.getAttribute('stop-opacity') != ostop.getAttribute('stop-opacity') ||
+				stop.getAttribute('stop-color') != ostop.getAttribute('stop-color')) 
+			{
+				break;
+			}
+		}
+
+		if (j == -1) {
+			return og;
+		}
+	} // for each gradient in defs
+
+	return null;
+};
+
+function reorientGrads(elem, m) {
+	var bb = svgedit.utilities.getBBox(elem);
+	for(var i = 0; i < 2; i++) {
+		var type = i === 0 ? 'fill' : 'stroke';
+		var attrVal = elem.getAttribute(type);
+		if(attrVal && attrVal.indexOf('url(') === 0) {
+			var grad = getRefElem(attrVal);
+			if(grad.tagName === 'linearGradient') {
+				var x1 = grad.getAttribute('x1') || 0;
+				var y1 = grad.getAttribute('y1') || 0;
+				var x2 = grad.getAttribute('x2') || 1;
+				var y2 = grad.getAttribute('y2') || 0;
+				
+				// Convert to USOU points
+				x1 = (bb.width * x1) + bb.x;
+				y1 = (bb.height * y1) + bb.y;
+				x2 = (bb.width * x2) + bb.x;
+				y2 = (bb.height * y2) + bb.y;
+			
+				// Transform those points
+				var pt1 = transformPoint(x1, y1, m);
+				var pt2 = transformPoint(x2, y2, m);
+				
+				// Convert back to BB points
+				var g_coords = {};
+				
+				g_coords.x1 = (pt1.x - bb.x) / bb.width;
+				g_coords.y1 = (pt1.y - bb.y) / bb.height;
+				g_coords.x2 = (pt2.x - bb.x) / bb.width;
+				g_coords.y2 = (pt2.y - bb.y) / bb.height;
+		
+				var newgrad = grad.cloneNode(true);
+				$(newgrad).attr(g_coords);
+	
+				newgrad.id = getNextId();
+				findDefs().appendChild(newgrad);
+				elem.setAttribute(type, 'url(#' + newgrad.id + ')');
+			}
+		}
+	}
+}
+
+// Function: setPaint
+// Set a color/gradient to a fill/stroke
+//
+// Parameters: 
+// type - String with "fill" or "stroke"
+// paint - The jGraduate paint object to apply
+this.setPaint = function(type, paint) {
+	// make a copy
+	var p = new $.jGraduate.Paint(paint);
+	this.setPaintOpacity(type, p.alpha/100, true);
+	// now set the current paint object
+	cur_properties[type + '_paint'] = p;
+	switch ( p.type ) {
+		case "solidColor":
+		  
+			if (p.solidColor != "none" && p.solidColor != "#none") {
+			  this.setColor(type, "#"+p.solidColor)
+			}
+			else {
+			  this.setColor(type, "none");
+			  var selector = (type == "fill") ? "#fill_color rect" : "#stroke_color rect" 
+			  document.querySelector(selector).setAttribute('fill', 'none');
+			}
+			break;
+		case "linearGradient":
+		case "radialGradient":
+			canvas[type + 'Grad'] = p[p.type];
+			setGradient(type);
+			break;
+		default:
+//			console.log("none!");
+	}
+};
+
+
+// this.setStrokePaint = function(p) {
+// 	// make a copy
+// 	var p = new $.jGraduate.Paint(p);
+// 	this.setStrokeOpacity(p.alpha/100);
+// 
+// 	// now set the current paint object
+// 	cur_properties.stroke_paint = p;
+// 	switch ( p.type ) {
+// 		case "solidColor":
+// 			this.setColor('stroke', p.solidColor != "none" ? "#"+p.solidColor : "none");;
+// 			break;
+// 		case "linearGradient"
+// 		case "radialGradient"
+// 			canvas.strokeGrad = p[p.type];
+// 			setGradient(type); 
+// 		default:
+// //			console.log("none!");
+// 	}
+// };
+// 
+// this.setFillPaint = function(p, addGrad) {
+// 	// make a copy
+// 	var p = new $.jGraduate.Paint(p);
+// 	this.setFillOpacity(p.alpha/100, true);
+// 
+// 	// now set the current paint object
+// 	cur_properties.fill_paint = p;
+// 	if (p.type == "solidColor") {
+// 		this.setColor('fill', p.solidColor != "none" ? "#"+p.solidColor : "none");
+// 	}
+// 	else if(p.type == "linearGradient") {
+// 		canvas.fillGrad = p.linearGradient;
+// 		if(addGrad) setGradient(); 
+// 	}
+// 	else if(p.type == "radialGradient") {
+// 		canvas.fillGrad = p.radialGradient;
+// 		if(addGrad) setGradient(); 
+// 	}
+// 	else {
+// //			console.log("none!");
+// 	}
+// };
+
+// Function: getStrokeWidth
+// Returns the current stroke-width value
+this.getStrokeWidth = function() {
+	return cur_properties.stroke_width;
+};
+
+// Function: setStrokeWidth
+// Sets the stroke width for the current selected elements
+// When attempting to set a line's width to 0, this changes it to 1 instead
+//
+// Parameters:
+// val - A Float indicating the new stroke width value
+this.setStrokeWidth = function(val) {
+	if(val == 0 && ['line', 'path'].indexOf(current_mode) >= 0) {
+		canvas.setStrokeWidth(1);
+		return;
+	}
+	cur_properties.stroke_width = val;
+	
+	var elems = [];
+	var i = selectedElements.length;
+	while (i--) {
+		var elem = selectedElements[i];
+		if (elem) {
+			if (elem.tagName == "g")
+				svgedit.utilities.walkTree(elem, function(e){if(e.nodeName!="g") elems.push(e);});
+			else 
+				elems.push(elem);
+		}
+	}		
+	if (elems.length > 0) {
+		changeSelectedAttribute("stroke-width", val, elems);
+		call("changed", selectedElements);
+	}
+};
+
+// Function: setStrokeAttr
+// Set the given stroke-related attribute the given value for selected elements
+//
+// Parameters:
+// attr - String with the attribute name
+// val - String or number with the attribute value
+this.setStrokeAttr = function(attr, val) {
+	cur_shape[attr.replace('-','_')] = val;
+	var elems = [];
+	var i = selectedElements.length;
+	while (i--) {
+		var elem = selectedElements[i];
+		if (elem) {
+			if (elem.tagName == "g")
+				svgedit.utilities.walkTree(elem, function(e){if(e.nodeName!="g") elems.push(e);});
+			else 
+				elems.push(elem);
+		}
+	}		
+	if (elems.length > 0) {
+		changeSelectedAttribute(attr, val, elems);
+		call("changed", selectedElements);
+	}
+};
+
+// Function: getStyle
+// Returns current style options
+this.getStyle = function() {
+	return cur_shape;
+}
+
+// Function: getOpacity
+// Returns the current opacity
+this.getOpacity = function() {
+	return cur_shape.opacity;
+};
+
+// Function: setOpacity
+// Sets the given opacity to the current selected elements
+this.setOpacity = function(val) {
+	cur_shape.opacity = val;
+	changeSelectedAttribute("opacity", val);
+};
+
+// Function: getOpacity
+// Returns the current fill opacity
+this.getFillOpacity = function() {
+	return cur_shape.fill_opacity;
+};
+
+// Function: getStrokeOpacity
+// Returns the current stroke opacity
+this.getStrokeOpacity = function() {
+	return cur_shape.stroke_opacity;
+};
+
+// Function: setPaintOpacity
+// Sets the current fill/stroke opacity
+//
+// Parameters:
+// type - String with "fill" or "stroke"
+// val - Float with the new opacity value
+// preventUndo - Boolean indicating whether or not this should be an undoable action
+this.setPaintOpacity = function(type, val, preventUndo) {
+	cur_shape[type + '_opacity'] = val;
+	if (!preventUndo)
+		changeSelectedAttribute(type + "-opacity", val);
+	else
+		changeSelectedAttributeNoUndo(type + "-opacity", val);
+};
+
+// Function: getBlur
+// Gets the stdDeviation blur value of the given element
+//
+// Parameters:
+// elem - The element to check the blur value for
+this.getBlur = function(elem) {
+	var val = 0;
+// 		var elem = selectedElements[0];
+	
+	if(elem) {
+		var filter_url = elem.getAttribute('filter');
+		if(filter_url) {
+			var blur = getElem(elem.id + '_blur');
+			if(blur) {
+				val = blur.firstChild.getAttribute('stdDeviation');
+			}
+		}
+	}
+	return val;
+};
+
+(function() {
+	var cur_command = null;
+	var filter = null;
+	var filterHidden = false;
+	
+	// Function: setBlurNoUndo
+	// Sets the stdDeviation blur value on the selected element without being undoable
+	//
+	// Parameters:
+	// val - The new stdDeviation value
+	canvas.setBlurNoUndo = function(val) {
+		if(!filter) {
+			canvas.setBlur(val);
+			return;
+		}
+		if(val === 0) {
+			// Don't change the StdDev, as that will hide the element.
+			// Instead, just remove the value for "filter"
+			changeSelectedAttributeNoUndo("filter", "");
+			filterHidden = true;
+		} else {
+			var elem = selectedElements[0];
+			if(filterHidden) {
+				changeSelectedAttributeNoUndo("filter", 'url(#' + elem.id + '_blur)');
+			}
+			if(svgedit.browser.isWebkit()) {
+				elem.removeAttribute('filter');
+				elem.setAttribute('filter', 'url(#' + elem.id + '_blur)');
+			}
+			changeSelectedAttributeNoUndo("stdDeviation", val, [filter.firstChild]);
+			canvas.setBlurOffsets(filter, val);
+		}
+	}
+	
+	function finishChange() {
+		var bCmd = canvas.undoMgr.finishUndoableChange();
+		cur_command.addSubCommand(bCmd);
+		addCommandToHistory(cur_command);
+		cur_command = null;	
+		filter = null;
+	}
+
+	// Function: setBlurOffsets
+	// Sets the x, y, with, height values of the filter element in order to
+	// make the blur not be clipped. Removes them if not neeeded
+	//
+	// Parameters:
+	// filter - The filter DOM element to update
+	// stdDev - The standard deviation value on which to base the offset size
+	canvas.setBlurOffsets = function(filter, stdDev) {
+		if(stdDev > 3) {
+			// TODO: Create algorithm here where size is based on expected blur
+			assignAttributes(filter, {
+				x: '-50%',
+				y: '-50%',
+				width: '200%',
+				height: '200%'
+			}, 100);
+		} else {
+			// Removing these attributes hides text in Chrome (see Issue 579)
+			if(!svgedit.browser.isWebkit()) {
+				filter.removeAttribute('x');
+				filter.removeAttribute('y');
+				filter.removeAttribute('width');
+				filter.removeAttribute('height');
+			}
+		}
+	}
+
+	// Function: setBlur 
+	// Adds/updates the blur filter to the selected element
+	//
+	// Parameters:
+	// val - Float with the new stdDeviation blur value
+	// complete - Boolean indicating whether or not the action should be completed (to add to the undo manager)
+	canvas.setBlur = function(val, complete) {
+		if(cur_command) {
+			finishChange();
+			return;
+		}
+	
+		// Looks for associated blur, creates one if not found
+		var elem = selectedElements[0];
+		var elem_id = elem.id;
+		filter = getElem(elem_id + '_blur');
+		
+		val -= 0;
+		
+		var batchCmd = new BatchCommand();
+		
+		// Blur found!
+		if(filter) {
+			if(val === 0) {
+				filter = null;
+			}
+		} else {
+			// Not found, so create
+			var newblur = addSvgElementFromJson({ "element": "feGaussianBlur",
+				"attr": {
+					"in": 'SourceGraphic',
+					"stdDeviation": val
+				}
+			});
+			
+			filter = addSvgElementFromJson({ "element": "filter",
+				"attr": {
+					"id": elem_id + '_blur'
+				}
+			});
+			
+			filter.appendChild(newblur);
+			findDefs().appendChild(filter);
+			
+			batchCmd.addSubCommand(new InsertElementCommand(filter));
+		}
+
+		var changes = {filter: elem.getAttribute('filter')};
+		
+		if(val === 0) {
+			elem.removeAttribute("filter");
+			batchCmd.addSubCommand(new ChangeElementCommand(elem, changes));
+			return;
+		} else {
+			changeSelectedAttribute("filter", 'url(#' + elem_id + '_blur)');
+			
+			batchCmd.addSubCommand(new ChangeElementCommand(elem, changes));
+			
+			canvas.setBlurOffsets(filter, val);
+		}
+		
+		cur_command = batchCmd;
+		canvas.undoMgr.beginUndoableChange("stdDeviation", [filter?filter.firstChild:null]);
+		if(complete) {
+			canvas.setBlurNoUndo(val);
+			finishChange();
+		}
+	};
+}());
+
+// Function: getBold
+// Check whether selected element is bold or not
+//
+// Returns:
+// Boolean indicating whether or not element is bold
+this.getBold = function() {
+	var selectedElems = selectedElements.filter(Boolean)
+	var isBold = true
+	selectedElems.forEach(function(el){
+	  if (el.getAttribute("font-weight") != "bold") isBold = false;
+	});
+	return isBold;
+};
+
+// Function: setBold
+// Make the selected element bold or normal
+//
+// Parameters:
+// b - Boolean indicating bold (true) or normal (false)
+this.setBold = function(b) {
+	var selectedElems = selectedElements.filter(Boolean)
+	selectedElems.forEach(function(selected){
+	  if (selected != null && selected.tagName  == "text") changeSelectedAttribute("font-weight", b ? "bold" : "normal");
+  });
+	if (!selectedElems[0].textContent)	textActions.setCursor();
+};
+
+// Function: getItalic
+// Check whether selected element is italic or not
+//
+// Returns:
+// Boolean indicating whether or not element is italic
+this.getItalic = function() {
+	var selectedElems = selectedElements.filter(Boolean)
+	var isItalic = true
+	selectedElems.forEach(function(el){
+	  if (el.getAttribute("font-style") != "italic") isItalic = false;
+	});
+	return isItalic;
+};
+
+// Function: setItalic
+// Make the selected element italic or normal
+//
+// Parameters:
+// b - Boolean indicating italic (true) or normal (false)
+this.setItalic = function(i) {
+	var selectedElems = selectedElements.filter(Boolean)
+	selectedElems.forEach(function(selected){
+	  if (selected != null && selected.tagName  == "text") changeSelectedAttribute("font-style", i ? "italic" : "normal");
+  });
+	if (!selectedElems[0].textContent) textActions.setCursor();
+};
+
+// Function: getFontFamily
+// Returns the current font family
+this.getFontFamily = function() {
+	return cur_text.font_family;
+};
+
+// Function: setFontFamily
+// Set the new font family
+//
+// Parameters:
+// val - String with the new font family
+this.setFontFamily = function(val) {
+	cur_text.font_family = val;
+	changeSelectedAttribute("font-family", val);
+	if(selectedElements[0] && !selectedElements[0].textContent) {
+		textActions.setCursor();
+	}
+};
+
+
+// Function: setFontColor
+// Set the new font color
+//
+// Parameters:
+// val - String with the new font color
+this.setFontColor = function(val) {
+	cur_text.fill = val;
+	changeSelectedAttribute("fill", val);
+};
+
+// Function: getFontColor
+// Returns the current font color
+this.getFontSize = function() {
+	return cur_text.fill;
+};
+
+// Function: getFontSize
+// Returns the current font size
+this.getFontSize = function() {
+	return cur_text.font_size;
+};
+
+// Function: setFontSize
+// Applies the given font size to the selected element
+//
+// Parameters:
+// val - Float with the new font size
+this.setFontSize = function(val) {
+	cur_text.font_size = val;
+	changeSelectedAttribute("font-size", val);
+	if(!selectedElements[0].textContent) {
+		textActions.setCursor();
+	}
+};
+
+// Function: getText
+// Returns the current text (textContent) of the selected element
+this.getText = function() {
+	var selected = selectedElements[0];
+	if (selected == null) { return ""; }
+	return selected.textContent;
+};
+
+// Function: setTextContent
+// Updates the text element with the given string
+//
+// Parameters:
+// val - String with the new text
+this.setTextContent = function(val) {
+	changeSelectedAttribute("#text", val);
+	textActions.init(val);
+	textActions.setCursor();
+};
+
+// Function: setImageURL
+// Sets the new image URL for the selected image element. Updates its size if
+// a new URL is given
+// 
+// Parameters:
+// val - String with the image URL/path
+this.setImageURL = function(val) {
+	var elem = selectedElements[0];
+	if(!elem) return;
+	
+	var attrs = $(elem).attr(['width', 'height']);
+	var setsize = (!attrs.width || !attrs.height);
+
+	var cur_href = getHref(elem);
+	
+	// Do nothing if no URL change or size change
+	if(cur_href !== val) {
+		setsize = true;
+	} else if(!setsize) return;
+
+	var batchCmd = new BatchCommand("Change Image URL");
+
+	setHref(elem, val);
+	batchCmd.addSubCommand(new ChangeElementCommand(elem, {
+		"#href": cur_href
+	}));
+
+	if(setsize) {
+		$(new Image()).load(function() {
+			var changes = $(elem).attr(['width', 'height']);
+		
+			$(elem).attr({
+				width: this.width,
+				height: this.height
+			});
+			
+			selectorManager.requestSelector(elem).resize();
+			
+			batchCmd.addSubCommand(new ChangeElementCommand(elem, changes));
+			addCommandToHistory(batchCmd);
+			call("changed", [elem]);
+		}).attr('src',val);
+	} else {
+		addCommandToHistory(batchCmd);
+	}
+};
+
+// Function: setLinkURL
+// Sets the new link URL for the selected anchor element.
+// 
+// Parameters:
+// val - String with the link URL/path
+this.setLinkURL = function(val) {
+	var elem = selectedElements[0];
+	if(!elem) return;
+	if(elem.tagName !== 'a') {
+		// See if parent is an anchor
+		var parents_a = $(elem).parents('a');
+		if(parents_a.length) {
+			elem = parents_a[0];
+		} else {
+			return;
+		}
+	}
+	
+	var cur_href = getHref(elem);
+	
+	if(cur_href === val) return;
+	
+	var batchCmd = new BatchCommand("Change Link URL");
+
+	setHref(elem, val);
+	batchCmd.addSubCommand(new ChangeElementCommand(elem, {
+		"#href": cur_href
+	}));
+
+	addCommandToHistory(batchCmd);
+};
+
+
+// Function elementAreSame
+// Checks if all the selected Elements are the same type
+// 
+// Parameters:
+// None
+
+this.elementsAreSame = function(elements) {
+  if (!elements.length || elements[0] == null) return null
+	else {
+	  var isSameElement = function(el) { 
+	    if (el && selectedElements[0])
+	      return (el.nodeName == selectedElements[0].nodeName);
+	    else return null;
+	  }
+	  return selectedElements.every(isSameElement);
+	}
+}
+
+
+// Function: setRectRadius
+// Sets the rx & ry values to the selected rect element to change its corner radius
+// 
+// Parameters:
+// val - The new radius
+this.setRectRadius = function(val) {
+	if (canvas.elementsAreSame(selectedElements) && selectedElements[0].tagName == "rect") {
+		var assign_rr = function(selected){
+		var r = selected.getAttribute("rx");
+  		if (r != val) {
+  			selected.setAttribute("rx", val);
+  			selected.setAttribute("ry", val);
+  			addCommandToHistory(new ChangeElementCommand(selected, {"rx":r, "ry":r}, "Radius"));
+  			call("changed", [selected]);
+  		}
+    }
+		selectedElements.forEach(assign_rr)
+	}
+};
+
+// Function: makeHyperlink
+// Wraps the selected element(s) in an anchor element or converts group to one
+this.makeHyperlink = function(url) {
+	canvas.groupSelectedElements('a', url);
+	
+	// TODO: If element is a single "g", convert to "a"
+	//	if(selectedElements.length > 1 && selectedElements[1]) {
+
+}
+
+// Function: removeHyperlink
+this.removeHyperlink = function() {
+	canvas.ungroupSelectedElement();
+}
+
+// Group: Element manipulation
+
+// Function: setSegType
+// Sets the new segment type to the selected segment(s). 
+//
+// Parameters:
+// new_type - Integer with the new segment type
+// See http://www.w3.org/TR/SVG/paths.html#InterfaceSVGPathSeg for list
+this.setSegType = function(new_type) {
+	pathActions.setSegType(new_type);
+}
+
+// TODO(codedread): Remove the getBBox argument and split this function into two.
+// Function: convertToPath
+// Convert selected element to a path, or get the BBox of an element-as-path
+//
+// Parameters: 
+// elem - The DOM element to be converted
+// getBBox - Boolean on whether or not to only return the path's BBox
+//
+// Returns:
+// If the getBBox flag is true, the resulting path's bounding box object.
+// Otherwise the resulting path element is returned.
+this.convertToPath = function(elem, getBBox) {
+	if(elem == null) {
+		var elems = selectedElements;
+		$.each(selectedElements, function(i, elem) {
+			if(elem) canvas.convertToPath(elem);
+		});
+		return;
+	}
+	
+	if(!getBBox) {
+		var batchCmd = new BatchCommand("Convert element to Path");
+	}
+	
+	var attrs = getBBox?{}:{
+		"fill": cur_shape.fill,
+		"fill-opacity": cur_shape.fill_opacity,
+		"stroke": cur_shape.stroke,
+		"stroke-width": cur_shape.stroke_width,
+		"stroke-dasharray": cur_shape.stroke_dasharray,
+		"stroke-linejoin": cur_shape.stroke_linejoin,
+		"stroke-linecap": cur_shape.stroke_linecap,
+		"stroke-opacity": cur_shape.stroke_opacity,
+		"opacity": cur_shape.opacity,
+		"visibility":"hidden"
+	};
+	
+	// any attribute on the element not covered by the above
+	// TODO: make this list global so that we can properly maintain it
+	// TODO: what about @transform, @clip-rule, @fill-rule, etc?
+	$.each(['marker-start', 'marker-end', 'marker-mid', 'filter', 'clip-path'], function() {
+		if (elem.getAttribute(this)) {
+			attrs[this] = elem.getAttribute(this);
+		}
+	});
+	
+	var path = addSvgElementFromJson({
+		"element": "path",
+		"attr": attrs
+	});
+	
+	var eltrans = elem.getAttribute("transform");
+	if(eltrans) {
+		path.setAttribute("transform",eltrans);
+	}
+	
+	var id = elem.id;
+	var parent = elem.parentNode;
+	if(elem.nextSibling) {
+		parent.insertBefore(path, elem);
+	} else {
+		parent.appendChild(path);
+	}
+	
+	var d = '';
+	
+	var joinSegs = function(segs) {
+		$.each(segs, function(j, seg) {
+			var l = seg[0], pts = seg[1];
+			d += l;
+			for(var i=0; i < pts.length; i+=2) {
+				d += (pts[i] +','+pts[i+1]) + ' ';
+			}
+		});
+	}
+
+	// Possibly the cubed root of 6, but 1.81 works best
+	var num = 1.81;
+
+	switch (elem.tagName) {
+	case 'ellipse':
+	case 'circle':
+		var a = $(elem).attr(['rx', 'ry', 'cx', 'cy']);
+		var cx = a.cx, cy = a.cy, rx = a.rx, ry = a.ry;
+		if(elem.tagName == 'circle') {
+			rx = ry = $(elem).attr('r');
+		}
+	
+		joinSegs([
+			['M',[(cx-rx),(cy)]],
+			['C',[(cx-rx),(cy-ry/num), (cx-rx/num),(cy-ry), (cx),(cy-ry)]],
+			['C',[(cx+rx/num),(cy-ry), (cx+rx),(cy-ry/num), (cx+rx),(cy)]],
+			['C',[(cx+rx),(cy+ry/num), (cx+rx/num),(cy+ry), (cx),(cy+ry)]],
+			['C',[(cx-rx/num),(cy+ry), (cx-rx),(cy+ry/num), (cx-rx),(cy)]],
+			['Z',[]]
+		]);
+		break;
+	case 'path':
+		d = elem.getAttribute('d');
+		break;
+	case 'line':
+		var a = $(elem).attr(["x1", "y1", "x2", "y2"]);
+		d = "M"+a.x1+","+a.y1+"L"+a.x2+","+a.y2;
+		break;
+	case 'polyline':
+	case 'polygon':
+		d = "M" + elem.getAttribute('points');
+		break;
+	case 'rect':
+		var r = $(elem).attr(['rx', 'ry']);
+		var rx = r.rx, ry = r.ry;
+		var b = elem.getBBox();
+		var x = b.x, y = b.y, w = b.width, h = b.height;
+		var num = 4-num; // Why? Because!
+		if(!rx && !ry) {
+			// Regular rect
+			joinSegs([
+				['M',[x, y]],
+				['L',[x+w, y]],
+				['L',[x+w, y+h]],
+				['L',[x, y+h]],
+				['L',[x, y]],
+				['Z',[]]
+			]);
+		} else {
+		  if (!ry) ry = rx
+			joinSegs([
+				['M',[x, y+ry]],
+				['C',[x,y+ry/num, x+rx/num,y, x+rx,y]],
+				['L',[x+w-rx, y]],
+				['C',[x+w-rx/num,y, x+w,y+ry/num, x+w,y+ry]],
+				['L',[x+w, y+h-ry]],
+				['C',[x+w, y+h-ry/num, x+w-rx/num,y+h, x+w-rx,y+h]],
+				['L',[x+rx, y+h]],
+				['C',[x+rx/num, y+h, x,y+h-ry/num, x,y+h-ry]],
+				['L',[x, y+ry]],
+				['Z',[]]
+			]);
+		}
+		break;
+	default:
+		path.parentNode.removeChild(path);
+		break;
+	}
+	
+	if(d) {
+		path.setAttribute('d',d);
+	}
+	
+	if(!getBBox) {
+		// Replace the current element with the converted one
+		
+		// Reorient if it has a matrix
+		if(eltrans) {
+			var tlist = getTransformList(path);
+			if(hasMatrixTransform(tlist)) {
+				pathActions.resetOrientation(path);
+			}
+		}
+		
+		var nextSibling = elem.nextSibling;
+		batchCmd.addSubCommand(new RemoveElementCommand(elem, nextSibling, parent));
+		batchCmd.addSubCommand(new InsertElementCommand(path));
+
+		clearSelection();
+		elem.parentNode.removeChild(elem)
+		path.setAttribute('id', id);
+		path.removeAttribute("visibility");
+		addToSelection([path], true);
+		
+		addCommandToHistory(batchCmd);
+		
+	} else {
+		// Get the correct BBox of the new path, then discard it
+		pathActions.resetOrientation(path);
+		var bb = false;
+		try {
+			bb = path.getBBox();
+		} catch(e) {
+			// Firefox fails
+		}
+		path.parentNode.removeChild(path);
+		return bb;
+	}
+};
+
+
+// Function: changeSelectedAttributeNoUndo
+// This function makes the changes to the elements. It does not add the change
+// to the history stack. 
+// 
+// Parameters:
+// attr - String with the attribute name
+// newValue - String or number with the new attribute value
+// elems - The DOM elements to apply the change to
+var changeSelectedAttributeNoUndo = this.changeSelectedAttributeNoUndo = function(attr, newValue, elems) {
+  	var handle = svgroot.suspendRedraw(1000);
+  	if(current_mode == 'pathedit') {
+  		// Editing node
+  		pathActions.moveNode(attr, newValue);
+  	}
+  	var elems = elems || selectedElements;
+  	var i = elems.length;
+  	var no_xy_elems = ['g', 'polyline', 'path'];
+  	var good_g_attrs = ['transform', 'opacity', 'filter'];
+  	while (i--) {
+  		var elem = elems[i];
+  		if (elem == null) continue;
+  		// Go into "select" mode for text changes
+  		if(current_mode === "textedit" && attr !== "#text" && elem.textContent.length) {
+  			textActions.toSelectMode(elem);
+  		}
+
+  		// Set x,y vals on elements that don't have them
+  		if((attr === 'x' || attr === 'y') && no_xy_elems.indexOf(elem.tagName) >= 0) {
+  			var bbox = getStrokedBBox([elem]);
+  			var diff_x = attr === 'x' ? newValue - bbox.x : 0;
+  			var diff_y = attr === 'y' ? newValue - bbox.y : 0;
+  			canvas.moveSelectedElements(diff_x*current_zoom, diff_y*current_zoom, true);
+  			continue;
+  		}
+
+  		var oldval = attr === "#text" ? elem.textContent : elem.getAttribute(attr);
+  		if (oldval == null)  oldval = "";
+  		if (oldval !== String(newValue)) {
+  			if (attr == "#text") {
+  				var old_w = svgedit.utilities.getBBox(elem).width;
+  				elem.textContent = newValue;
+
+  			} else if (attr == "#href") {
+  				setHref(elem, newValue);
+  			}
+  			else elem.setAttribute(attr, newValue);
+
+  			// Timeout needed for Opera & Firefox
+  			// codedread: it is now possible for this function to be called with elements
+  			// that are not in the selectedElements array, we need to only request a
+  			// selector if the element is in that array
+  			if (selectedElements.indexOf(elem) >= 0) {
+  				setTimeout(function() {
+  					// Due to element replacement, this element may no longer
+  					// be part of the DOM
+  					if(!elem.parentNode) return;
+  					selectorManager.requestSelector(elem).resize();
+  				},0);
+  			}
+  			// if this element was rotated, and we changed the position of this element
+  			// we need to update the rotational transform attribute 
+  			var angle = getRotationAngle(elem);
+  			if (angle != 0 && attr != "transform") {
+  				var tlist = getTransformList(elem);
+  				var n = tlist.numberOfItems;
+  				while (n--) {
+  					var xform = tlist.getItem(n);
+  					if (xform.type == 4) {
+  						// remove old rotate
+  						tlist.removeItem(n);
+
+  						var box = svgedit.utilities.getBBox(elem);
+  						var center = transformPoint(box.x+box.width/2, box.y+box.height/2, transformListToTransform(tlist).matrix);
+  						var cx = center.x,
+  							cy = center.y;
+  						var newrot = svgroot.createSVGTransform();
+  						newrot.setRotate(angle, cx, cy);
+  						tlist.insertItemBefore(newrot, n);
+  						break;
+  					}
+  				}
+  			}
+  		} // if oldValue != newValue
+  	} // for each elem
+  	svgroot.unsuspendRedraw(handle);
+};
+
+// Function: changeSelectedAttribute
+// Change the given/selected element and add the original value to the history stack
+// If you want to change all selectedElements, ignore the elems argument.
+// If you want to change only a subset of selectedElements, then send the
+// subset to this function in the elems argument.
+// 
+// Parameters:
+// attr - String with the attribute name
+// newValue - String or number with the new attribute value
+// elems - The DOM elements to apply the change to
+var changeSelectedAttribute = this.changeSelectedAttribute = function(attr, val, elems) {
+	var elems = elems || selectedElements;
+	canvas.undoMgr.beginUndoableChange(attr, elems);
+	var i = elems.length;
+
+	changeSelectedAttributeNoUndo(attr, val, elems);
+
+	var batchCmd = canvas.undoMgr.finishUndoableChange();
+	if (!batchCmd.isEmpty()) { 
+		addCommandToHistory(batchCmd);
+	}
+};
+
+// Function: deleteSelectedElements
+// Removes all selected elements from the DOM and adds the change to the 
+// history stack
+this.deleteSelectedElements = function() {
+	var batchCmd = new BatchCommand("Delete Elements");
+	var len = selectedElements.length;
+	var selectedCopy = []; //selectedElements is being deleted
+	for (var i = 0; i < len; ++i) {
+		var selected = selectedElements[i];
+		if (selected == null) break;
+
+		var parent = selected.parentNode;
+		var t = selected;
+		
+		// this will unselect the element and remove the selectedOutline
+		selectorManager.releaseSelector(t);
+		
+		// Remove the path if present.
+		svgedit.path.removePath_(t.id);
+		
+		// Get the parent if it's a single-child anchor
+		if(parent.tagName === 'a' && parent.childNodes.length === 1) {
+			t = parent;
+			parent = parent.parentNode;
+		}
+		
+		var nextSibling = t.nextSibling;
+		var elem = parent.removeChild(t);
+		selectedCopy.push(selected); //for the copy
+		selectedElements[i] = null;
+		batchCmd.addSubCommand(new RemoveElementCommand(elem, nextSibling, parent));
+	}
+	if (!batchCmd.isEmpty()) addCommandToHistory(batchCmd);
+	call("changed", selectedCopy);
+	clearSelection();
+};
+
+// Function: cutSelectedElements
+// Removes all selected elements from the DOM and adds the change to the 
+// history stack. Remembers removed elements on the clipboard
+
+// TODO: Combine similar code with deleteSelectedElements
+this.cutSelectedElements = function() {
+	var batchCmd = new BatchCommand("Cut Elements");
+	var len = selectedElements.length;
+	var selectedCopy = []; //selectedElements is being deleted
+	for (var i = 0; i < len; ++i) {
+		var selected = selectedElements[i];
+		if (selected == null) break;
+
+		var parent = selected.parentNode;
+		var t = selected;
+
+		// this will unselect the element and remove the selectedOutline
+		selectorManager.releaseSelector(t);
+
+		// Remove the path if present.
+		svgedit.path.removePath_(t.id);
+
+		var nextSibling = t.nextSibling;
+		var elem = parent.removeChild(t);
+		selectedCopy.push(selected); //for the copy
+		selectedElements[i] = null;
+		batchCmd.addSubCommand(new RemoveElementCommand(elem, nextSibling, parent));
+	}
+	if (!batchCmd.isEmpty()) addCommandToHistory(batchCmd);
+	call("changed", selectedCopy);
+	clearSelection();
+	
+	canvas.clipBoard = selectedCopy;
+};
+
+// Function: copySelectedElements
+// Remembers the current selected elements on the clipboard
+this.copySelectedElements = function() {
+	canvas.clipBoard = $.merge([], selectedElements);
+};
+
+this.pasteElements = function(type, x, y) {
+	var cb = canvas.clipBoard;
+	var len = cb.length;
+	if(!len) return;
+	
+	var pasted = [];
+	var batchCmd = new BatchCommand('Paste elements');
+	
+	// Move elements to lastClickPoint
+
+	while (len--) {
+		var elem = cb[len];
+		if(!elem) continue;
+		var copy = copyElem(elem);
+
+		// See if elem with elem ID is in the DOM already
+		if(!getElem(elem.id)) copy.id = elem.id;
+		pasted.push(copy);
+		(current_group || getCurrentDrawing().getCurrentLayer()).appendChild(copy);
+		batchCmd.addSubCommand(new InsertElementCommand(copy));
+	}
+	svgCanvas.clearSelection();
+	setTimeout(function(){selectOnly(pasted)},100);
+	
+
+	
+	addCommandToHistory(batchCmd);
+	call("changed", pasted);
+}
+
+// Function: groupSelectedElements
+// Wraps all the selected elements in a group (g) element
+
+// Parameters: 
+// type - type of element to group into, defaults to <g>
+this.groupSelectedElements = function(type) {
+	if(!type) type = 'g';
+	var cmd_str = '';
+	
+	switch ( type ) {
+		case "a":
+			cmd_str = "Make hyperlink";
+			var url = '';
+			if(arguments.length > 1) {
+				url = arguments[1];
+			}
+			break;
+		default:
+			type = 'g';
+			cmd_str = "Group Elements";
+			break;
+	}
+	
+	var batchCmd = new BatchCommand(cmd_str);
+	
+	// create and insert the group element
+	var g = addSvgElementFromJson({
+							"element": type,
+							"attr": {
+								"id": getNextId()
+							}
+						});
+	if(type === 'a') {
+		setHref(g, url);
+	}
+	batchCmd.addSubCommand(new InsertElementCommand(g));
+	
+	// now move all children into the group
+	var i = selectedElements.length;
+	while (i--) {
+		var elem = selectedElements[i];
+		if (elem == null) continue;
+		
+		if (elem.parentNode.tagName === 'a' && elem.parentNode.childNodes.length === 1) {
+			elem = elem.parentNode;
+		}
+		
+		var oldNextSibling = elem.nextSibling;
+		var oldParent = elem.parentNode;
+		g.appendChild(elem);
+		batchCmd.addSubCommand(new MoveElementCommand(elem, oldNextSibling, oldParent));			
+	}
+	if (!batchCmd.isEmpty()) addCommandToHistory(batchCmd);
+	
+	// update selection
+	selectOnly([g], true);
+};
+
+
+// Function: pushGroupProperties
+// Pushes all appropriate parent group properties down to its children, then
+// removes them from the group
+var pushGroupProperties = this.pushGroupProperties = function(g, undoable) {
+
+	var children = g.childNodes;
+	var len = children.length;
+	var xform = g.getAttribute("transform");
+
+	var glist = getTransformList(g);
+	var m = transformListToTransform(glist).matrix;
+	
+	var batchCmd = new BatchCommand("Push group properties");
+
+	// TODO: get all fill/stroke properties from the group that we are about to destroy
+	// "fill", "fill-opacity", "fill-rule", "stroke", "stroke-dasharray", "stroke-dashoffset", 
+	// "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", 
+	// "stroke-width"
+	// and then for each child, if they do not have the attribute (or the value is 'inherit')
+	// then set the child's attribute
+	
+	var i = 0;
+	var gangle = getRotationAngle(g);
+	
+	var gattrs = $(g).attr(['filter', 'opacity']);
+	var gfilter, gblur;
+	
+	for(var i = 0; i < len; i++) {
+		var elem = children[i];
+		
+		if(elem.nodeType !== 1) continue;
+		
+		if(gattrs.opacity !== null && gattrs.opacity !== 1) {
+			var c_opac = elem.getAttribute('opacity') || 1;
+			var new_opac = Math.round((elem.getAttribute('opacity') || 1) * gattrs.opacity * 100)/100;
+			changeSelectedAttribute('opacity', new_opac, [elem]);
+		}
+
+		if(gattrs.filter) {
+			var cblur = this.getBlur(elem);
+			var orig_cblur = cblur;
+			if(!gblur) gblur = this.getBlur(g);
+			if(cblur) {
+				// Is this formula correct?
+				cblur = (gblur-0) + (cblur-0);
+			} else if(cblur === 0) {
+				cblur = gblur;
+			}
+			
+			// If child has no current filter, get group's filter or clone it.
+			if(!orig_cblur) {
+				// Set group's filter to use first child's ID
+				if(!gfilter) {
+					gfilter = getRefElem(gattrs.filter);
+				} else {
+					// Clone the group's filter
+					gfilter = copyElem(gfilter);
+					findDefs().appendChild(gfilter);
+				}
+			} else {
+				gfilter = getRefElem(elem.getAttribute('filter'));
+			}
+
+			// Change this in future for different filters
+			var suffix = (gfilter.firstChild.tagName === 'feGaussianBlur')?'blur':'filter'; 
+			gfilter.id = elem.id + '_' + suffix;
+			changeSelectedAttribute('filter', 'url(#' + gfilter.id + ')', [elem]);
+			
+			// Update blur value 
+			if(cblur) {
+				changeSelectedAttribute('stdDeviation', cblur, [gfilter.firstChild]);
+				canvas.setBlurOffsets(gfilter, cblur);
+			}
+		}
+		
+		var chtlist = getTransformList(elem);
+
+		// Don't process gradient transforms
+		if(~elem.tagName.indexOf('Gradient')) chtlist = null;
+		
+		// Hopefully not a problem to add this. Necessary for elements like <desc/>
+		if(!chtlist) continue;
+		
+		// Apparently <defs> can get get a transformlist, but we don't want it to have one!
+		if(elem.tagName === 'defs') continue;
+		
+		if (glist.numberOfItems) {
+			// TODO: if the group's transform is just a rotate, we can always transfer the
+			// rotate() down to the children (collapsing consecutive rotates and factoring
+			// out any translates)
+			if (gangle && glist.numberOfItems == 1) {
+				// [Rg] [Rc] [Mc]
+				// we want [Tr] [Rc2] [Mc] where:
+				// 	- [Rc2] is at the child's current center but has the 
+				//	  sum of the group and child's rotation angles
+				// 	- [Tr] is the equivalent translation that this child 
+				// 	  undergoes if the group wasn't there
+				
+				// [Tr] = [Rg] [Rc] [Rc2_inv]
+				
+				// get group's rotation matrix (Rg)
+				var rgm = glist.getItem(0).matrix;
+				
+				// get child's rotation matrix (Rc)
+				var rcm = svgroot.createSVGMatrix();
+				var cangle = getRotationAngle(elem);
+				if (cangle) {
+					rcm = chtlist.getItem(0).matrix;
+				}
+				
+				// get child's old center of rotation
+				var cbox = svgedit.utilities.getBBox(elem);
+				var ceqm = transformListToTransform(chtlist).matrix;
+				var coldc = transformPoint(cbox.x+cbox.width/2, cbox.y+cbox.height/2,ceqm);
+				
+				// sum group and child's angles
+				var sangle = gangle + cangle;
+				
+				// get child's rotation at the old center (Rc2_inv)
+				var r2 = svgroot.createSVGTransform();
+				r2.setRotate(sangle, coldc.x, coldc.y);
+				
+				// calculate equivalent translate
+				var trm = matrixMultiply(rgm, rcm, r2.matrix.inverse());
+				
+				// set up tlist
+				if (cangle) {
+					chtlist.removeItem(0);
+				}
+				
+				if (sangle) {
+					if(chtlist.numberOfItems) {
+						chtlist.insertItemBefore(r2, 0);
+					} else {
+						chtlist.appendItem(r2);
+					}
+				}
+
+				if (trm.e || trm.f) {
+					var tr = svgroot.createSVGTransform();
+					tr.setTranslate(trm.e, trm.f);
+					if(chtlist.numberOfItems) {
+						chtlist.insertItemBefore(tr, 0);
+					} else {
+						chtlist.appendItem(tr);
+					}
+				}
+			}
+			else { // more complicated than just a rotate
+			
+				// transfer the group's transform down to each child and then
+				// call recalculateDimensions()				
+				var oldxform = elem.getAttribute("transform");
+				var changes = {};
+				changes["transform"] = oldxform ? oldxform : "";
+
+				var newxform = svgroot.createSVGTransform();
+
+				// [ gm ] [ chm ] = [ chm ] [ gm' ]
+				// [ gm' ] = [ chm_inv ] [ gm ] [ chm ]
+				var chm = transformListToTransform(chtlist).matrix,
+					chm_inv = chm.inverse();
+				var gm = matrixMultiply( chm_inv, m, chm );
+				newxform.setMatrix(gm);
+				chtlist.appendItem(newxform);
+			}
+			var cmd = recalculateDimensions(elem);
+			if(cmd)	batchCmd.addSubCommand(cmd);
+		}
+	}
+
+	
+	// remove transform and make it undo-able
+	if (xform) {
+		var changes = {};
+		changes["transform"] = xform;
+		g.setAttribute("transform", "");
+		g.removeAttribute("transform");				
+		batchCmd.addSubCommand(new ChangeElementCommand(g, changes));
+	}
+	
+	if (undoable && !batchCmd.isEmpty()) {
+		return batchCmd;
+	}
+}
+
+
+// Function: ungroupSelectedElement
+// Unwraps all the elements in a selected group (g) element. This requires
+// significant recalculations to apply group's transforms, etc to its children
+this.ungroupSelectedElement = function() {
+	var g = selectedElements[0];
+	if($(g).data('gsvg') || $(g).data('symbol')) {
+		// Is svg, so actually convert to group
+
+		convertToGroup(g);
+		return;
+	} else if(g.tagName === 'use') {
+		// Somehow doesn't have data set, so retrieve
+		var symbol = getElem(getHref(g).substr(1));
+		$(g).data('symbol', symbol).data('ref', symbol);
+		convertToGroup(g);
+		return;
+	}
+	var parents_a = $(g).parents('a');
+	if(parents_a.length) {
+		g = parents_a[0];
+	}
+	
+	// Look for parent "a"
+	if (g.tagName === "g" || g.tagName === "a") {
+		
+		var batchCmd = new BatchCommand("Ungroup Elements");
+		var cmd = pushGroupProperties(g, true);
+		if(cmd) batchCmd.addSubCommand(cmd);
+		
+		var parent = g.parentNode;
+		var anchor = g.nextSibling;
+		var children = new Array(g.childNodes.length);
+		
+		var i = 0;
+		
+		while (g.firstChild) {
+			var elem = g.firstChild;
+			var oldNextSibling = elem.nextSibling;
+			var oldParent = elem.parentNode;
+			
+			// Remove child title elements
+			if(elem.tagName === 'title') {
+				var nextSibling = elem.nextSibling;
+				batchCmd.addSubCommand(new RemoveElementCommand(elem, nextSibling, oldParent));
+				oldParent.removeChild(elem);
+				continue;
+			}
+			
+			children[i++] = elem = parent.insertBefore(elem, anchor);
+			batchCmd.addSubCommand(new MoveElementCommand(elem, oldNextSibling, oldParent));
+		}
+
+		// remove the group from the selection			
+		clearSelection();
+		
+		// delete the group element (but make undo-able)
+		var gNextSibling = g.nextSibling;
+		g = parent.removeChild(g);
+		batchCmd.addSubCommand(new RemoveElementCommand(g, gNextSibling, parent));
+
+		if (!batchCmd.isEmpty()) addCommandToHistory(batchCmd);
+		
+		// update selection
+		addToSelection(children);
+	}
+};
+
+// Function: moveToTopSelectedElement
+// Repositions the selected element to the bottom in the DOM to appear on top of
+// other elements
+this.moveToTopSelectedElement = function() {
+	var selected = selectedElements.filter(Boolean).reverse();
+	var batchCmd = new BatchCommand("Move to top");
+	selected.forEach(function(element){
+		var t = element;
+		var oldParent = t.parentNode;
+		var oldNextSibling = t.nextSibling;
+		t = t.parentNode.appendChild(t);
+		// If the element actually moved position, add the command and fire the changed
+		// event handler.
+		if (oldNextSibling != t.nextSibling) {
+			batchCmd.addSubCommand(new MoveElementCommand(t, oldNextSibling, oldParent, "top"));
+			call("changed", [t]);
+		}
+		if (!batchCmd.isEmpty()) addCommandToHistory(batchCmd);
+	})
+};
+
+// Function: moveToBottomSelectedElement
+// Repositions the selected element to the top in the DOM to appear under 
+// other elements
+this.moveToBottomSelectedElement = function() {
+	var selected = selectedElements.filter(Boolean).reverse();
+	var batchCmd = new BatchCommand("Move to top");
+	selected.forEach(function(element){
+		var t = element;
+		var oldParent = t.parentNode;
+		var oldNextSibling = t.nextSibling;
+		var firstChild = t.parentNode.firstChild;
+		if (firstChild.tagName == 'title') {
+			firstChild = firstChild.nextSibling;
+		}
+		// This can probably be removed, as the defs should not ever apppear
+		// inside a layer group
+		if (firstChild.tagName == 'defs') {
+			firstChild = firstChild.nextSibling;
+		}
+		t = t.parentNode.insertBefore(t, firstChild);
+		// If the element actually moved position, add the command and fire the changed
+		// event handler.
+		if (oldNextSibling != t.nextSibling) {
+			batchCmd.addSubCommand(new MoveElementCommand(t, oldNextSibling, oldParent, "bottom"));
+			call("changed", [t]);
+		}
+	})
+	if (!batchCmd.isEmpty()) addCommandToHistory(batchCmd);
+};
+
+// Function: moveUpDownSelected
+// Moves the select element up or down the stack, based on the visibly
+// intersecting elements
+//
+// Parameters: 
+// dir - String that's either 'Up' or 'Down'
+this.moveUpDownSelected = function(dir) {
+	var selected = selectedElements.filter(Boolean);
+	if(dir == 'Down') selected.reverse();
+	var batchCmd = new BatchCommand("Move " + dir);
+	selected.forEach(function(selected){
+		curBBoxes = [];
+		var closest, found_cur;
+		// jQuery sorts this list
+		var list = $(getIntersectionList(getStrokedBBox([selected]))).toArray();
+		if(dir == 'Down') list.reverse();
+
+		$.each(list, function() {
+			if(!found_cur) {
+				if(this == selected) {
+					found_cur = true;
+				}
+				return;
+			}
+			closest = this;
+			return false;
+		});
+		if(!closest) return;
+		
+		var t = selected;
+		var oldParent = t.parentNode;
+		var oldNextSibling = t.nextSibling;
+		$(closest)[dir == 'Down'?'before':'after'](t);
+		// If the element actually moved position, add the command and fire the changed
+		// event handler.
+		if (oldNextSibling != t.nextSibling) {
+			batchCmd.addSubCommand(new MoveElementCommand(t, oldNextSibling, oldParent, "Move " + dir));
+			call("changed", [t]);
+		}
+	});
+	if (!batchCmd.isEmpty()) addCommandToHistory(batchCmd);
+};
+
+// Function: moveSelectedElements
+// Moves selected elements on the X/Y axis 
+//
+// Parameters:
+// dx - Float with the distance to move on the x-axis
+// dy - Float with the distance to move on the y-axis
+// undoable - Boolean indicating whether or not the action should be undoable
+//
+// Returns:
+// Batch command for the move
+this.moveSelectedElements = function(dx, dy, undoable) {
+	// if undoable is not sent, default to true
+	// if single values, scale them to the zoom
+	if (dx.constructor != Array) {
+		dx /= current_zoom;
+		dy /= current_zoom;
+	}
+	var undoable = undoable || true;
+	var batchCmd = new BatchCommand("position");
+	var i = selectedElements.length;
+	while (i--) {
+		var selected = selectedElements[i];
+		if (selected != null) {
+//			if (i==0)
+//				selectedBBoxes[0] = svgedit.utilities.getBBox(selected);
+			
+//			var b = {};
+//			for(var j in selectedBBoxes[i]) b[j] = selectedBBoxes[i][j];
+//			selectedBBoxes[i] = b;
+			
+			var xform = svgroot.createSVGTransform();
+			var tlist = getTransformList(selected);
+			
+			// dx and dy could be arrays
+			if (dx.constructor == Array) {
+//				if (i==0) {
+//					selectedBBoxes[0].x += dx[0];
+//					selectedBBoxes[0].y += dy[0];
+//				}
+				xform.setTranslate(dx[i],dy[i]);
+			} else {
+//				if (i==0) {
+//					selectedBBoxes[0].x += dx;
+//					selectedBBoxes[0].y += dy;
+//				}
+				xform.setTranslate(dx,dy);
+			}
+
+			if(tlist.numberOfItems) {
+				tlist.insertItemBefore(xform, 0);
+			} else {
+				tlist.appendItem(xform);
+			}
+			
+			var cmd = recalculateDimensions(selected);
+			if (cmd) {
+				batchCmd.addSubCommand(cmd);
+			}
+			
+			selectorManager.requestSelector(selected).resize();
+		}
+	}
+	if (!batchCmd.isEmpty()) {
+		if (undoable)
+			addCommandToHistory(batchCmd);
+		call("changed", selectedElements);
+		return batchCmd;
+	}
+};
+
+// Function: cloneSelectedElements
+// Create deep DOM copies (clones) of all selected elements and move them slightly 
+// from their originals
+this.cloneSelectedElements = function(x,y, drag) {
+	var batchCmd = new BatchCommand("Clone Elements");
+	// find all the elements selected (stop at first null)
+	var len = selectedElements.length;
+	for (var i = 0; i < len; ++i) {
+		var elem = selectedElements[i];
+		if (elem == null) break;
+	}
+	// use slice to quickly get the subset of elements we need
+	var copiedElements = selectedElements.slice(0,i);
+	this.clearSelection(true);
+	// note that we loop in the reverse way because of the way elements are added
+	// to the selectedElements array (top-first)
+	var i = copiedElements.length;
+	clones = []
+	while (i--) {
+		// clone each element and replace it within copiedElements
+		var elem = copiedElements[i] 
+		var clone = copyElem(copiedElements[i]);
+		var parent = (current_group || getCurrentDrawing().getCurrentLayer())
+		if (drag) {
+		  //removed the dragged transform until that moment
+		  tlist = getTransformList(clone)
+      	  tlist.removeItem(drag)
+		  recalculateDimensions(clone)
+		  parent.insertBefore(clone, elem);
+		}
+		else {
+			parent.appendChild(clone);
+		}
+		clones.push(clone)
+		batchCmd.addSubCommand(new InsertElementCommand(clone));
+	}
+	
+	if (!batchCmd.isEmpty()) {
+		addToSelection(copiedElements.reverse()); // Need to reverse for correct selection-adding
+		if (!drag) this.moveSelectedElements(x,y,false);
+		addCommandToHistory(batchCmd);
+	}
+	return clones
+};
+
+// Function: alignSelectedElements
+// Aligns selected elements
+//
+// Parameters:
+// type - String with single character indicating the alignment type
+// relative_to - String that must be one of the following: 
+// "selected", "largest", "smallest", "page"
+this.alignSelectedElements = function(type, relative_to) {
+	var bboxes = [], angles = [];
+	var minx = Number.MAX_VALUE, maxx = Number.MIN_VALUE, miny = Number.MAX_VALUE, maxy = Number.MIN_VALUE;
+	var curwidth = Number.MIN_VALUE, curheight = Number.MIN_VALUE;
+	var len = selectedElements.length;
+	if (!len) return;
+	for (var i = 0; i < len; ++i) {
+		if (selectedElements[i] == null) break;
+		var elem = selectedElements[i];
+		bboxes[i] = getStrokedBBox([elem]);
+		
+		// now bbox is axis-aligned and handles rotation
+		switch (relative_to) {
+			case 'smallest':
+				if ( (type == 'l' || type == 'c' || type == 'r') && (curwidth == Number.MIN_VALUE || curwidth > bboxes[i].width) ||
+					 (type == 't' || type == 'm' || type == 'b') && (curheight == Number.MIN_VALUE || curheight > bboxes[i].height) ) {
+					minx = bboxes[i].x;
+					miny = bboxes[i].y;
+					maxx = bboxes[i].x + bboxes[i].width;
+					maxy = bboxes[i].y + bboxes[i].height;
+					curwidth = bboxes[i].width;
+					curheight = bboxes[i].height;
+				}
+				break;
+			case 'largest':
+				if ( (type == 'l' || type == 'c' || type == 'r') && (curwidth == Number.MIN_VALUE || curwidth < bboxes[i].width) ||
+					 (type == 't' || type == 'm' || type == 'b') && (curheight == Number.MIN_VALUE || curheight < bboxes[i].height) ) {
+					minx = bboxes[i].x;
+					miny = bboxes[i].y;
+					maxx = bboxes[i].x + bboxes[i].width;
+					maxy = bboxes[i].y + bboxes[i].height;
+					curwidth = bboxes[i].width;
+					curheight = bboxes[i].height;
+				}
+				break;
+			default: // 'selected'
+				if (bboxes[i].x < minx) minx = bboxes[i].x;
+				if (bboxes[i].y < miny) miny = bboxes[i].y;
+				if (bboxes[i].x + bboxes[i].width > maxx) maxx = bboxes[i].x + bboxes[i].width;
+				if (bboxes[i].y + bboxes[i].height > maxy) maxy = bboxes[i].y + bboxes[i].height;
+				break;
+		}
+	} // loop for each element to find the bbox and adjust min/max
+
+	if (relative_to == 'page') {
+		minx = 0;
+		miny = 0;
+		maxx = canvas.contentW;
+		maxy = canvas.contentH;
+	}
+
+	var dx = new Array(len);
+	var dy = new Array(len);
+	for (var i = 0; i < len; ++i) {
+		if (selectedElements[i] == null) break;
+		var elem = selectedElements[i];
+		var bbox = bboxes[i];
+		dx[i] = 0;
+		dy[i] = 0;
+		switch (type) {
+			case 'l': // left (horizontal)
+				dx[i] = minx - bbox.x;
+				break;
+			case 'c': // center (horizontal)
+				dx[i] = (minx+maxx)/2 - (bbox.x + bbox.width/2);
+				break;
+			case 'r': // right (horizontal)
+				dx[i] = maxx - (bbox.x + bbox.width);
+				break;
+			case 't': // top (vertical)
+				dy[i] = miny - bbox.y;
+				break;
+			case 'm': // middle (vertical)
+				dy[i] = (miny+maxy)/2 - (bbox.y + bbox.height/2);
+				break;
+			case 'b': // bottom (vertical)
+				dy[i] = maxy - (bbox.y + bbox.height);
+				break;
+		}
+	}
+	this.moveSelectedElements(dx,dy);
+};
+
+// Group: Additional editor tools
+
+this.contentW = getResolution().w;
+this.contentH = getResolution().h;
+
+// Function: updateCanvas
+// Updates the editor canvas width/height/position after a zoom has occurred 
+//
+// Parameters:
+// w - Float with the new width
+// h - Float with the new height
+//
+// Returns: 
+// Object with the following values:
+// * x - The canvas' new x coordinate
+// * y - The canvas' new y coordinate
+// * old_x - The canvas' old x coordinate
+// * old_y - The canvas' old y coordinate
+// * d_x - The x position difference
+// * d_y - The y position difference
+this.updateCanvas = function(w, h) {
+	svgroot.setAttribute("width", w);
+	svgroot.setAttribute("height", h);
+	var bg = $('#canvasBackground')[0];
+	var old_x = svgcontent.getAttribute('x');
+	var old_y = svgcontent.getAttribute('y');
+	var x = (w/2 - this.contentW*current_zoom/2);
+	var y = (h/2 - this.contentH*current_zoom/2);
+
+	assignAttributes(svgcontent, {
+		width: this.contentW*current_zoom,
+		height: this.contentH*current_zoom,
+		'x': x,
+		'y': y,
+		"viewBox" : "0 0 " + this.contentW + " " + this.contentH
+	});
+	
+	assignAttributes(bg, {
+		width: svgcontent.getAttribute('width'),
+		height: svgcontent.getAttribute('height'),
+		x: x,
+		y: y
+	});
+
+	var bg_img = getElem('background_image');
+	if (bg_img) {
+		assignAttributes(bg_img, {
+			'width': '100%',
+			'height': '100%'
+		});
+	}
+	
+	selectorManager.selectorParentGroup.setAttribute("transform","translate(" + x + "," + y + ")");
+	
+	return {x:x, y:y, old_x:old_x, old_y:old_y, d_x:x - old_x, d_y:y - old_y};
+}
+
+// Function: setBackground
+// Set the background of the editor (NOT the actual document)
+//
+// Parameters:
+// color - String with fill color to apply
+// url - URL or path to image to use
+this.setBackground = function(color, url) {
+	var bg =  getElem('canvasBackground');
+	var border = $(bg).find('rect')[0];
+	var bg_img = getElem('background_image');
+	border.setAttribute('fill',color);
+	if(url) {
+		if(!bg_img) {
+			bg_img = svgdoc.createElementNS(svgns, "image");
+			assignAttributes(bg_img, {
+				'id': 'background_image',
+				'width': '100%',
+				'height': '100%',
+				'preserveAspectRatio': 'xMinYMin',
+				'style':'pointer-events:none'
+			});
+		}
+		setHref(bg_img, url);
+		bg.appendChild(bg_img);
+	} else if(bg_img) {
+		bg_img.parentNode.removeChild(bg_img);
+	}
+}
+
+// Function: cycleElement
+// Select the next/previous element within the current layer
+//
+// Parameters:
+// next - Boolean where true = next and false = previous element
+this.cycleElement = function(next) {
+	var cur_elem = selectedElements[0];
+	var elem = false;
+	var all_elems = getVisibleElements(current_group || getCurrentDrawing().getCurrentLayer());
+	if(!all_elems.length) return;
+	if (cur_elem == null) {
+		var num = next?all_elems.length-1:0;
+		elem = all_elems[num];
+	} else {
+		var i = all_elems.length;
+		while(i--) {
+			if(all_elems[i] == cur_elem) {
+				var num = next?i-1:i+1;
+				if(num >= all_elems.length) {
+					num = 0;
+				} else if(num < 0) {
+					num = all_elems.length-1;
+				} 
+				elem = all_elems[num];
+				break;
+			} 
+		}
+	}		
+	selectOnly([elem], true);
+	call("selected", selectedElements);
+}
+
+this.clear();
+
+
+// DEPRECATED: getPrivateMethods 
+// Since all methods are/should be public somehow, this function should be removed
+
+// Being able to access private methods publicly seems wrong somehow,
+// but currently appears to be the best way to allow testing and provide
+// access to them to plugins.
+this.getPrivateMethods = function() {
+	var obj = {
+		addCommandToHistory: addCommandToHistory,
+		setGradient: setGradient,
+		addSvgElementFromJson: addSvgElementFromJson,
+		assignAttributes: assignAttributes,
+		BatchCommand: BatchCommand,
+		call: call,
+		ChangeElementCommand: ChangeElementCommand,
+		copyElem: copyElem,
+		ffClone: ffClone,
+		findDefs: findDefs,
+		findDuplicateGradient: findDuplicateGradient,
+		getElem: getElem,
+		getId: getId,
+		getIntersectionList: getIntersectionList,
+		getMouseTarget: getMouseTarget,
+		getNextId: getNextId,
+		getPathBBox: getPathBBox,
+		getUrlFromAttr: getUrlFromAttr,
+		hasMatrixTransform: hasMatrixTransform,
+		identifyLayers: identifyLayers,
+		InsertElementCommand: InsertElementCommand,
+		isIdentity: svgedit.math.isIdentity,
+		logMatrix: logMatrix,
+		matrixMultiply: matrixMultiply,
+		MoveElementCommand: MoveElementCommand,
+		preventClickDefault: preventClickDefault,
+		recalculateAllSelectedDimensions: recalculateAllSelectedDimensions,
+		recalculateDimensions: recalculateDimensions,
+		remapElement: remapElement,
+		RemoveElementCommand: RemoveElementCommand,
+		removeUnusedDefElems: removeUnusedDefElems,
+		round: round,
+		runExtensions: runExtensions,
+		sanitizeSvg: sanitizeSvg,
+		SVGEditTransformList: svgedit.transformlist.SVGTransformList,
+		toString: toString,
+		transformBox: svgedit.math.transformBox,
+		transformListToTransform: transformListToTransform,
+		transformPoint: transformPoint,
+		walkTree: svgedit.utilities.walkTree
+	}
+	return obj;
+};
+
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/svgtransformlist.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/svgtransformlist.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/svgtransformlist.js	(revision 29468)
@@ -0,0 +1,291 @@
+/**
+ * SVGTransformList
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ * Copyright(c) 2010 Jeff Schiller
+ */
+
+// Dependencies:
+// 1) browser.js
+
+var svgedit = svgedit || {};
+
+(function() {
+
+if (!svgedit.transformlist) {
+	svgedit.transformlist = {};
+}
+
+var svgroot = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
+
+// Helper function.
+function transformToString(xform) {
+	var m = xform.matrix,
+		text = "";
+	switch(xform.type) {
+		case 1: // MATRIX
+			text = "matrix(" + [m.a,m.b,m.c,m.d,m.e,m.f].join(",") + ")";
+			break;
+		case 2: // TRANSLATE
+			text = "translate(" + m.e + "," + m.f + ")";
+			break;
+		case 3: // SCALE
+			if (m.a == m.d) text = "scale(" + m.a + ")";
+			else text = "scale(" + m.a + "," + m.d + ")";
+			break;
+		case 4: // ROTATE
+			var cx = 0, cy = 0;
+			// this prevents divide by zero
+			if (xform.angle != 0) {
+				var K = 1 - m.a;
+				cy = ( K * m.f + m.b*m.e ) / ( K*K + m.b*m.b );
+				cx = ( m.e - m.b * cy ) / K;
+			}
+			text = "rotate(" + xform.angle + " " + cx + "," + cy + ")";
+			break;
+	}
+	return text;
+};
+
+
+/**
+ * Map of SVGTransformList objects.
+ */
+var listMap_ = {};
+
+
+// **************************************************************************************
+// SVGTransformList implementation for Webkit 
+// These methods do not currently raise any exceptions.
+// These methods also do not check that transforms are being inserted.  This is basically
+// implementing as much of SVGTransformList that we need to get the job done.
+//
+//  interface SVGEditTransformList { 
+//		attribute unsigned long numberOfItems;
+//		void   clear (  )
+//		SVGTransform initialize ( in SVGTransform newItem )
+//		SVGTransform getItem ( in unsigned long index ) (DOES NOT THROW DOMException, INDEX_SIZE_ERR)
+//		SVGTransform insertItemBefore ( in SVGTransform newItem, in unsigned long index ) (DOES NOT THROW DOMException, INDEX_SIZE_ERR)
+//		SVGTransform replaceItem ( in SVGTransform newItem, in unsigned long index ) (DOES NOT THROW DOMException, INDEX_SIZE_ERR)
+//		SVGTransform removeItem ( in unsigned long index ) (DOES NOT THROW DOMException, INDEX_SIZE_ERR)
+//		SVGTransform appendItem ( in SVGTransform newItem )
+//		NOT IMPLEMENTED: SVGTransform createSVGTransformFromMatrix ( in SVGMatrix matrix );
+//		NOT IMPLEMENTED: SVGTransform consolidate (  );
+//	}
+// **************************************************************************************
+svgedit.transformlist.SVGTransformList = function(elem) {
+	this._elem = elem || null;
+	this._xforms = [];
+	// TODO: how do we capture the undo-ability in the changed transform list?
+	this._update = function() {
+		var tstr = "";
+		var concatMatrix = svgroot.createSVGMatrix();
+		for (var i = 0; i < this.numberOfItems; ++i) {
+			var xform = this._list.getItem(i);
+			tstr += transformToString(xform) + " ";
+		}
+		this._elem.setAttribute("transform", tstr);
+	};
+	this._list = this;
+	this._init = function() {
+		// Transform attribute parser
+		var str = this._elem.getAttribute("transform");
+		if(!str) return;
+		
+		// TODO: Add skew support in future
+		var re = /\s*((scale|matrix|rotate|translate)\s*\(.*?\))\s*,?\s*/;
+		var arr = [];
+		var m = true;
+		while(m) {
+			m = str.match(re);
+			str = str.replace(re,'');
+			if(m && m[1]) {
+				var x = m[1];
+				var bits = x.split(/\s*\(/);
+				var name = bits[0];
+				var val_bits = bits[1].match(/\s*(.*?)\s*\)/);
+				val_bits[1] = val_bits[1].replace(/(\d)-/g, "$1 -");
+				var val_arr = val_bits[1].split(/[, ]+/);
+				var letters = 'abcdef'.split('');
+				var mtx = svgroot.createSVGMatrix();
+				$.each(val_arr, function(i, item) {
+					val_arr[i] = parseFloat(item);
+					if(name == 'matrix') {
+						mtx[letters[i]] = val_arr[i];
+					}
+				});
+				var xform = svgroot.createSVGTransform();
+				var fname = 'set' + name.charAt(0).toUpperCase() + name.slice(1);
+				var values = name=='matrix'?[mtx]:val_arr;
+				
+				if (name == 'scale' && values.length == 1) {
+					values.push(values[0]);
+				} else if (name == 'translate' && values.length == 1) {
+					values.push(0);
+				} else if (name == 'rotate' && values.length == 1) {
+					values.push(0);
+					values.push(0);
+				}
+				xform[fname].apply(xform, values);
+				this._list.appendItem(xform);
+			}
+		}
+	};
+	this._removeFromOtherLists = function(item) {
+		if (item) {
+			// Check if this transform is already in a transformlist, and
+			// remove it if so.
+			var found = false;
+			for (var id in listMap_) {
+				var tl = listMap_[id];
+				for (var i = 0, len = tl._xforms.length; i < len; ++i) {
+					if(tl._xforms[i] == item) {
+						found = true;
+						tl.removeItem(i);
+						break;
+					}
+				}
+				if (found) {
+					break;
+				}
+			}
+		}
+	};
+	
+	this.numberOfItems = 0;
+	this.clear = function() { 
+		this.numberOfItems = 0;
+		this._xforms = [];
+	};
+	
+	this.initialize = function(newItem) {
+		this.numberOfItems = 1;
+		this._removeFromOtherLists(newItem);
+		this._xforms = [newItem];
+	};
+	
+	this.getItem = function(index) {
+		if (index < this.numberOfItems && index >= 0) {
+			return this._xforms[index];
+		}
+		throw {code: 1}; // DOMException with code=INDEX_SIZE_ERR
+	};
+	
+	this.insertItemBefore = function(newItem, index) {
+		var retValue = null;
+		if (index >= 0) {
+			if (index < this.numberOfItems) {
+				this._removeFromOtherLists(newItem);
+				var newxforms = new Array(this.numberOfItems + 1);
+				// TODO: use array copying and slicing
+				for ( var i = 0; i < index; ++i) {
+					newxforms[i] = this._xforms[i];
+				}
+				newxforms[i] = newItem;
+				for ( var j = i+1; i < this.numberOfItems; ++j, ++i) {
+					newxforms[j] = this._xforms[i];
+				}
+				this.numberOfItems++;
+				this._xforms = newxforms;
+				retValue = newItem;
+				this._list._update();
+			}
+			else {
+				retValue = this._list.appendItem(newItem);
+			}
+		}
+		return retValue;
+	};
+	
+	this.replaceItem = function(newItem, index) {
+		var retValue = null;
+		if (index < this.numberOfItems && index >= 0) {
+			this._removeFromOtherLists(newItem);
+			this._xforms[index] = newItem;
+			retValue = newItem;
+			this._list._update();
+		}
+		return retValue;
+	};
+	
+	this.removeItem = function(index) {
+		if (index < this.numberOfItems && index >= 0) {
+			var retValue = this._xforms[index];
+			var newxforms = new Array(this.numberOfItems - 1);
+			for (var i = 0; i < index; ++i) {
+				newxforms[i] = this._xforms[i];
+			}
+			for (var j = i; j < this.numberOfItems-1; ++j, ++i) {
+				newxforms[j] = this._xforms[i+1];
+			}
+			this.numberOfItems--;
+			this._xforms = newxforms;
+			this._list._update();
+			return retValue;
+		} else {
+			throw {code: 1}; // DOMException with code=INDEX_SIZE_ERR
+		}
+	};
+	
+	this.appendItem = function(newItem) {
+		this._removeFromOtherLists(newItem);
+		this._xforms.push(newItem);
+		this.numberOfItems++;
+		this._list._update();
+		return newItem;
+	};
+};
+
+
+svgedit.transformlist.resetListMap = function() {
+	listMap_ = {};
+};
+
+/**
+ * Removes transforms of the given element from the map.
+ * Parameters:
+ * elem - a DOM Element
+ */
+svgedit.transformlist.removeElementFromListMap = function(elem) {
+	if (elem.id && listMap_[elem.id]) {
+		delete listMap_[elem.id];
+	}
+};
+
+// Function: getTransformList
+// Returns an object that behaves like a SVGTransformList for the given DOM element
+//
+// Parameters:
+// elem - DOM element to get a transformlist from
+svgedit.transformlist.getTransformList = function(elem) {
+	if (!svgedit.browser.supportsNativeTransformLists()) {
+		var id = elem.id;
+		if(!id) {
+			// Get unique ID for temporary element
+			id = 'temp';
+		}
+		var t = listMap_[id];
+		if (!t || id == 'temp') {
+			listMap_[id] = new svgedit.transformlist.SVGTransformList(elem);
+			listMap_[id]._init();
+			t = listMap_[id];
+		}
+		return t;
+	}
+	else if (elem.transform) {
+		return elem.transform.baseVal;
+	}
+	else if (elem.gradientTransform) {
+		return elem.gradientTransform.baseVal;
+	}
+	else if (elem.patternTransform) {
+		return elem.patternTransform.baseVal;
+	}
+
+	return null;
+};
+
+
+})();
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/svgutils.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/svgutils.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/svgutils.js	(revision 29468)
@@ -0,0 +1,648 @@
+/**
+ * Package: svgedit.utilities
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ * Copyright(c) 2010 Jeff Schiller
+ */
+
+// Dependencies:
+// 1) jQuery
+// 2) browser.js
+// 3) svgtransformlist.js
+
+var svgedit = svgedit || {};
+
+(function() {
+
+if (!svgedit.utilities) {
+	svgedit.utilities = {};
+}
+
+// Constants
+
+// String used to encode base64.
+var KEYSTR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
+var SVGNS = 'http://www.w3.org/2000/svg';
+var XLINKNS = 'http://www.w3.org/1999/xlink';
+var XMLNS = "http://www.w3.org/XML/1998/namespace";
+
+// Much faster than running getBBox() every time
+var visElems = 'a,circle,ellipse,foreignObject,g,image,line,path,polygon,polyline,rect,svg,text,tspan,use';
+var visElems_arr = visElems.split(',');
+//var hidElems = 'clipPath,defs,desc,feGaussianBlur,filter,linearGradient,marker,mask,metadata,pattern,radialGradient,stop,switch,symbol,title,textPath';
+
+var editorContext_ = null;
+var domdoc_ = null;
+var domcontainer_ = null;
+var svgroot_ = null;
+
+svgedit.utilities.init = function(editorContext) {
+	editorContext_ = editorContext;
+	domdoc_ = editorContext.getDOMDocument();
+	domcontainer_ = editorContext.getDOMContainer();
+	svgroot_ = editorContext.getSVGRoot();
+};
+
+// Function: svgedit.utilities.toXml
+// Converts characters in a string to XML-friendly entities.
+//
+// Example: "&" becomes "&amp;"
+//
+// Parameters:
+// str - The string to be converted
+//
+// Returns:
+// The converted string
+svgedit.utilities.toXml = function(str) {
+	return $('<p/>').text(str).html();
+};
+	
+// Function: svgedit.utilities.fromXml
+// Converts XML entities in a string to single characters. 
+// Example: "&amp;" becomes "&"
+//
+// Parameters:
+// str - The string to be converted
+//
+// Returns: 
+// The converted string
+svgedit.utilities.fromXml = function(str) {
+	return $('<p/>').html(str).text();
+};
+
+// This code was written by Tyler Akins and has been placed in the
+// public domain.  It would be nice if you left this header intact.
+// Base64 code from Tyler Akins -- http://rumkin.com
+
+// schiller: Removed string concatenation in favour of Array.join() optimization,
+//           also precalculate the size of the array needed.
+
+// Function: svgedit.utilities.encode64
+// Converts a string to base64
+svgedit.utilities.encode64 = function(input) {
+	// base64 strings are 4/3 larger than the original string
+//	input = svgedit.utilities.encodeUTF8(input); // convert non-ASCII characters
+	input = svgedit.utilities.convertToXMLReferences(input);
+	if(window.btoa) return window.btoa(input); // Use native if available
+	var output = new Array( Math.floor( (input.length + 2) / 3 ) * 4 );
+	var chr1, chr2, chr3;
+	var enc1, enc2, enc3, enc4;
+	var i = 0, p = 0;
+
+	do {
+		chr1 = input.charCodeAt(i++);
+		chr2 = input.charCodeAt(i++);
+		chr3 = input.charCodeAt(i++);
+
+		enc1 = chr1 >> 2;
+		enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
+		enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
+		enc4 = chr3 & 63;
+
+		if (isNaN(chr2)) {
+			enc3 = enc4 = 64;
+		} else if (isNaN(chr3)) {
+			enc4 = 64;
+		}
+
+		output[p++] = KEYSTR.charAt(enc1);
+		output[p++] = KEYSTR.charAt(enc2);
+		output[p++] = KEYSTR.charAt(enc3);
+		output[p++] = KEYSTR.charAt(enc4);
+	} while (i < input.length);
+
+	return output.join('');
+};
+
+// Function: svgedit.utilities.decode64
+// Converts a string from base64
+svgedit.utilities.decode64 = function(input) {
+	if(window.atob) return window.atob(input);
+	var output = "";
+	var chr1, chr2, chr3 = "";
+	var enc1, enc2, enc3, enc4 = "";
+	var i = 0;
+
+	 // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
+	 input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
+
+	 do {
+		enc1 = KEYSTR.indexOf(input.charAt(i++));
+		enc2 = KEYSTR.indexOf(input.charAt(i++));
+		enc3 = KEYSTR.indexOf(input.charAt(i++));
+		enc4 = KEYSTR.indexOf(input.charAt(i++));
+
+		chr1 = (enc1 << 2) | (enc2 >> 4);
+		chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
+		chr3 = ((enc3 & 3) << 6) | enc4;
+
+		output = output + String.fromCharCode(chr1);
+
+		if (enc3 != 64) {
+		   output = output + String.fromCharCode(chr2);
+		}
+		if (enc4 != 64) {
+		   output = output + String.fromCharCode(chr3);
+		}
+
+		chr1 = chr2 = chr3 = "";
+		enc1 = enc2 = enc3 = enc4 = "";
+
+	 } while (i < input.length);
+	 return unescape(output);
+};
+
+// Currently not being used, so commented out for now
+// based on http://phpjs.org/functions/utf8_encode:577
+// codedread:does not seem to work with webkit-based browsers on OSX
+// 		"encodeUTF8": function(input) {
+// 			//return unescape(encodeURIComponent(input)); //may or may not work
+// 			var output = '';
+// 			for (var n = 0; n < input.length; n++){
+// 				var c = input.charCodeAt(n);
+// 				if (c < 128) {
+// 					output += input[n];
+// 				}
+// 				else if (c > 127) {
+// 					if (c < 2048){
+// 						output += String.fromCharCode((c >> 6) | 192);
+// 					} 
+// 					else {
+// 						output += String.fromCharCode((c >> 12) | 224) + String.fromCharCode((c >> 6) & 63 | 128);
+// 					}
+// 					output += String.fromCharCode((c & 63) | 128);
+// 				}
+// 			}
+// 			return output;
+// 		},
+
+// Function: svgedit.utilities.convertToXMLReferences 
+// Converts a string to use XML references
+svgedit.utilities.convertToXMLReferences = function(input) {
+	var output = '';
+	for (var n = 0; n < input.length; n++){
+		var c = input.charCodeAt(n);
+		if (c < 128) {
+			output += input[n];
+		} else if(c > 127) {
+			output += ("&#" + c + ";");
+		}
+	}
+	return output;
+};
+
+// Function: svgedit.utilities.text2xml
+// Cross-browser compatible method of converting a string to an XML tree
+// found this function here: http://groups.google.com/group/jquery-dev/browse_thread/thread/c6d11387c580a77f
+svgedit.utilities.text2xml = function(sXML) {
+	if(sXML.indexOf('<svg:svg') >= 0) {
+		sXML = sXML.replace(/<(\/?)svg:/g, '<$1').replace('xmlns:svg', 'xmlns');
+	}
+
+	var out;
+	try{
+		var dXML = (window.DOMParser)?new DOMParser():new ActiveXObject("Microsoft.XMLDOM");
+		dXML.async = false;
+	} catch(e){ 
+		throw new Error("XML Parser could not be instantiated"); 
+	};
+	try{
+		if(dXML.loadXML) out = (dXML.loadXML(sXML))?dXML:false;
+		else out = dXML.parseFromString(sXML, "text/xml");
+	}
+	catch(e){ throw new Error("Error parsing XML string"); };
+	return out;
+};
+
+// Function: svgedit.utilities.bboxToObj
+// Converts a SVGRect into an object.
+// 
+// Parameters:
+// bbox - a SVGRect
+// 
+// Returns:
+// An object with properties names x, y, width, height.
+svgedit.utilities.bboxToObj = function(bbox) {
+	return {
+		x: bbox.x,
+		y: bbox.y,
+		width: bbox.width,
+		height: bbox.height
+	}
+};
+
+// Function: svgedit.utilities.walkTree
+// Walks the tree and executes the callback on each element in a top-down fashion
+//
+// Parameters:
+// elem - DOM element to traverse
+// cbFn - Callback function to run on each element
+svgedit.utilities.walkTree = function(elem, cbFn){
+	if (elem && elem.nodeType == 1) {
+		cbFn(elem);
+		var i = elem.childNodes.length;
+		while (i--) {
+			svgedit.utilities.walkTree(elem.childNodes.item(i), cbFn);
+		}
+	}
+};
+
+// Function: svgedit.utilities.walkTreePost
+// Walks the tree and executes the callback on each element in a depth-first fashion
+// TODO: FIXME: Shouldn't this be calling walkTreePost?
+//
+// Parameters:
+// elem - DOM element to traverse
+// cbFn - Callback function to run on each element
+svgedit.utilities.walkTreePost = function(elem, cbFn) {
+	if (elem && elem.nodeType == 1) {
+		var i = elem.childNodes.length;
+		while (i--) {
+			svgedit.utilities.walkTree(elem.childNodes.item(i), cbFn);
+		}
+		cbFn(elem);
+	}
+};
+
+// Function: svgedit.utilities.getUrlFromAttr
+// Extracts the URL from the url(...) syntax of some attributes.  
+// Three variants:
+// 	* <circle fill="url(someFile.svg#foo)" />
+//  * <circle fill="url('someFile.svg#foo')" />
+//  * <circle fill='url("someFile.svg#foo")' />
+//
+// Parameters:
+// attrVal - The attribute value as a string
+// 
+// Returns:
+// String with just the URL, like someFile.svg#foo
+svgedit.utilities.getUrlFromAttr = function(attrVal) {
+	if (attrVal) {		
+		// url("#somegrad")
+		if (attrVal.indexOf('url("') === 0) {
+			return attrVal.substring(5,attrVal.indexOf('"',6));
+		}
+		// url('#somegrad')
+		else if (attrVal.indexOf("url('") === 0) {
+			return attrVal.substring(5,attrVal.indexOf("'",6));
+		}
+		else if (attrVal.indexOf("url(") === 0) {
+			return attrVal.substring(4,attrVal.indexOf(')'));
+		}
+	}
+	return null;
+};
+
+// Function: svgedit.utilities.getHref
+// Returns the given element's xlink:href value
+svgedit.utilities.getHref = function(elem) {
+	if (elem) return elem.getAttributeNS(XLINKNS, "href");
+}
+
+// Function: svgedit.utilities.setHref
+// Sets the given element's xlink:href value
+svgedit.utilities.setHref = function(elem, val) {
+	elem.setAttributeNS(XLINKNS, "xlink:href", val);
+}
+
+// Function: findDefs
+// Parameters:
+// svgElement - The <svg> element.
+//
+// Returns:
+// The document's <defs> element, create it first if necessary
+svgedit.utilities.findDefs = function(svgElement) {
+	var svgElement = editorContext_.getSVGContent().documentElement;
+	var defs = svgElement.getElementsByTagNameNS(SVGNS, "defs");
+	if (defs.length > 0) {
+		defs = defs[0];
+	}
+	else {
+		// first child is a comment, so call nextSibling
+		defs = svgElement.insertBefore( svgElement.ownerDocument.createElementNS(SVGNS, "defs" ), svgElement.firstChild.nextSibling);
+	}
+	return defs;
+};
+
+// TODO(codedread): Consider moving the next to functions to bbox.js
+
+// Function: svgedit.utilities.getPathBBox
+// Get correct BBox for a path in Webkit
+// Converted from code found here:
+// http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html
+// 
+// Parameters:
+// path - The path DOM element to get the BBox for
+//
+// Returns:
+// A BBox-like object
+svgedit.utilities.getPathBBox = function(path) {
+	var seglist = path.pathSegList;
+	var tot = seglist.numberOfItems;
+	
+	var bounds = [[], []];
+	var start = seglist.getItem(0);
+	var P0 = [start.x, start.y];
+
+	for(var i=0; i < tot; i++) {
+		var seg = seglist.getItem(i);
+
+		if(typeof seg.x == 'undefined') continue;
+
+		// Add actual points to limits
+		bounds[0].push(P0[0]);
+		bounds[1].push(P0[1]);
+		
+		if(seg.x1) {
+			var P1 = [seg.x1, seg.y1],
+				P2 = [seg.x2, seg.y2],
+				P3 = [seg.x, seg.y];
+
+			for(var j=0; j < 2; j++) {
+
+				var calc = function(t) {
+					return Math.pow(1-t,3) * P0[j] 
+						+ 3 * Math.pow(1-t,2) * t * P1[j]
+						+ 3 * (1-t) * Math.pow(t,2) * P2[j]
+						+ Math.pow(t,3) * P3[j];
+				};
+
+				var b = 6 * P0[j] - 12 * P1[j] + 6 * P2[j];
+				var a = -3 * P0[j] + 9 * P1[j] - 9 * P2[j] + 3 * P3[j];
+				var c = 3 * P1[j] - 3 * P0[j];
+				
+				if(a == 0) {
+					if(b == 0) {
+						continue;
+					}
+					var t = -c / b;
+					if(0 < t && t < 1) {
+						bounds[j].push(calc(t));
+					}
+					continue;
+				}
+				
+				var b2ac = Math.pow(b,2) - 4 * c * a;
+				if(b2ac < 0) continue;
+				var t1 = (-b + Math.sqrt(b2ac))/(2 * a);
+				if(0 < t1 && t1 < 1) bounds[j].push(calc(t1));
+				var t2 = (-b - Math.sqrt(b2ac))/(2 * a);
+				if(0 < t2 && t2 < 1) bounds[j].push(calc(t2));
+			}
+			P0 = P3;
+		} else {
+			bounds[0].push(seg.x);
+			bounds[1].push(seg.y);
+		}
+	}
+	
+	var x = Math.min.apply(null, bounds[0]);
+	var w = Math.max.apply(null, bounds[0]) - x;
+	var y = Math.min.apply(null, bounds[1]);
+	var h = Math.max.apply(null, bounds[1]) - y;
+	return {
+		'x': x,
+		'y': y,
+		'width': w,
+		'height': h
+	};
+};
+
+// Function: groupBBFix
+// Get the given/selected element's bounding box object, checking for
+// horizontal/vertical lines (see issue 717)
+// Note that performance is currently terrible, so some way to improve would
+// be great.
+//
+// Parameters: 
+// selected - Container or <use> DOM element
+function groupBBFix(selected) {
+	if(svgedit.browser.supportsHVLineContainerBBox()) {
+		try { return selected.getBBox();} catch(e){} 
+	}
+	var ref = $.data(selected, 'ref');
+	var matched = null;
+	
+	if(ref) {
+		var copy = $(ref).children().clone().attr('visibility', 'hidden');
+		$(svgroot_).append(copy);
+		matched = copy.filter('line, path');
+	} else {
+		matched = $(selected).find('line, path');
+	}
+	
+	var issue = false;
+	if(matched.length) {
+		matched.each(function() {
+			var bb = this.getBBox();
+			if(!bb.width || !bb.height) {
+				issue = true;
+			}
+		});
+		if(issue) {
+			var elems = ref ? copy : $(selected).children();
+			ret = getStrokedBBox(elems);
+		} else {
+			ret = selected.getBBox();
+		}
+	} else {
+		ret = selected.getBBox();
+	}
+	if(ref) {
+		copy.remove();
+	}
+	return ret;
+}
+
+// Function: svgedit.utilities.getBBox
+// Get the given/selected element's bounding box object, convert it to be more
+// usable when necessary
+//
+// Parameters:
+// elem - Optional DOM element to get the BBox for
+svgedit.utilities.getBBox = function(elem) {
+	var selected = elem || editorContext_.getSelectedElements()[0];
+	if (elem.nodeType != 1) return null;
+	var ret = null;
+	var elname = selected.nodeName;
+	
+	switch ( elname ) {
+	case 'text':
+		if(selected.textContent === '') {
+			selected.textContent = 'a'; // Some character needed for the selector to use.
+			ret = selected.getBBox();
+			selected.textContent = '';
+		} else {
+			try { ret = selected.getBBox();} catch(e){}
+		}
+		break;
+	case 'path':
+		if(!svgedit.browser.supportsPathBBox()) {
+			ret = svgedit.utilities.getPathBBox(selected);
+		} else {
+			try { ret = selected.getBBox();} catch(e){}
+		}
+		break;
+	case 'g':
+	case 'a':
+		ret = groupBBFix(selected);
+		break;
+	default:
+
+		if(elname === 'use') {
+			ret = groupBBFix(selected, true);
+		}
+		
+		if(elname === 'use') {
+			if(!ret) ret = selected.getBBox();
+			//if(!svgedit.browser.isWebkit()) {
+			//	var bb = {};
+			//	bb.width = ret.width;
+			//	bb.height = ret.height;
+			//	bb.x = ret.x + parseFloat(selected.getAttribute('x')||0);
+			//	bb.y = ret.y + parseFloat(selected.getAttribute('y')||0);
+			//	ret = bb;
+			//}
+		} else if(~visElems_arr.indexOf(elname)) {
+			try { ret = selected.getBBox();} 
+			catch(e) { 
+				// Check if element is child of a foreignObject
+				var fo = $(selected).closest("foreignObject");
+				if(fo.length) {
+					try {
+						ret = fo[0].getBBox();
+					} catch(e) {
+						ret = null;
+					}
+				} else {
+					ret = null;
+				}
+			}
+		}
+	}
+	
+	if(ret) {
+		ret = svgedit.utilities.bboxToObj(ret);
+	}
+
+	// get the bounding box from the DOM (which is in that element's coordinate system)
+	return ret;
+};
+
+// Function: svgedit.utilities.getRotationAngle
+// Get the rotation angle of the given/selected DOM element
+//
+// Parameters:
+// elem - Optional DOM element to get the angle for
+// to_rad - Boolean that when true returns the value in radians rather than degrees
+//
+// Returns:
+// Float with the angle in degrees or radians
+svgedit.utilities.getRotationAngle = function(elem, to_rad) {
+	var selected = elem || editorContext_.getSelectedElements()[0];
+	// find the rotation transform (if any) and set it
+	var tlist = svgedit.transformlist.getTransformList(selected);
+	if(!tlist) return 0; // <svg> elements have no tlist
+	var N = tlist.numberOfItems;
+	for (var i = 0; i < N; ++i) {
+		var xform = tlist.getItem(i);
+		if (xform.type == 4) {
+			return to_rad ? xform.angle * Math.PI / 180.0 : xform.angle;
+		}
+	}
+	return 0.0;
+};
+
+// Function: getElem
+// Get a DOM element by ID within the SVG root element.
+//
+// Parameters:
+// id - String with the element's new ID
+if (svgedit.browser.supportsSelectors()) {
+	svgedit.utilities.getElem = function(id) {
+		// querySelector lookup
+		return svgroot_.querySelector('#'+id);
+	};
+} else if (svgedit.browser.supportsXpath()) {
+	svgedit.utilities.getElem = function(id) {
+		// xpath lookup
+		return domdoc_.evaluate(
+			'svg:svg[@id="svgroot"]//svg:*[@id="'+id+'"]',
+			domcontainer_, 
+			function() { return "http://www.w3.org/2000/svg"; },
+			9,
+			null).singleNodeValue;
+	};
+} else {
+	svgedit.utilities.getElem = function(id) {
+		// jQuery lookup: twice as slow as xpath in FF
+		return $(svgroot_).find('[id=' + id + ']')[0];
+	};
+}
+
+// Function: assignAttributes
+// Assigns multiple attributes to an element.
+//
+// Parameters: 
+// node - DOM element to apply new attribute values to
+// attrs - Object with attribute keys/values
+// suspendLength - Optional integer of milliseconds to suspend redraw
+// unitCheck - Boolean to indicate the need to use svgedit.units.setUnitAttr
+svgedit.utilities.assignAttributes = function(node, attrs, suspendLength, unitCheck) {
+	if(!suspendLength) suspendLength = 0;
+	// Opera has a problem with suspendRedraw() apparently
+	var handle = null;
+	if (!svgedit.browser.isOpera()) svgroot_.suspendRedraw(suspendLength);
+
+	for (var i in attrs) {
+		var ns = (i.substr(0,4) === "xml:" ? XMLNS : 
+			i.substr(0,6) === "xlink:" ? XLINKNS : null);
+			
+		if(ns) {
+			node.setAttributeNS(ns, i, attrs[i]);
+		} else if(!unitCheck) {
+			node.setAttribute(i, attrs[i]);
+		} else {
+			svgedit.units.setUnitAttr(node, i, attrs[i]);
+		}
+		
+	}
+	
+	if (!svgedit.browser.isOpera()) svgroot_.unsuspendRedraw(handle);
+};
+
+// Function: cleanupElement
+// Remove unneeded (default) attributes, makes resulting SVG smaller
+//
+// Parameters:
+// element - DOM element to clean up
+svgedit.utilities.cleanupElement = function(element) {
+	var handle = svgroot_.suspendRedraw(60);
+	var defaults = {
+		'fill-opacity':1,
+		'stop-opacity':1,
+		'opacity':1,
+		'stroke':'none',
+		'stroke-dasharray':'none',
+		'stroke-linejoin':'miter',
+		'stroke-linecap':'butt',
+		'stroke-opacity':1,
+		'stroke-width':1,
+		'rx':0,
+		'ry':0
+	}
+	
+	for(var attr in defaults) {
+		var val = defaults[attr];
+		if(element.getAttribute(attr) == val) {
+			element.removeAttribute(attr);
+		}
+	}
+	
+	svgroot_.unsuspendRedraw(handle);
+};
+
+
+})();
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/units.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/units.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/src/units.js	(revision 29468)
@@ -0,0 +1,281 @@
+/**
+ * Package: svgedit.units
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ * Copyright(c) 2010 Jeff Schiller
+ */
+
+// Dependencies:
+// 1) jQuery
+
+var svgedit = svgedit || {};
+
+(function() {
+
+if (!svgedit.units) {
+	svgedit.units = {};
+}
+
+var w_attrs = ['x', 'x1', 'cx', 'rx', 'width'];
+var h_attrs = ['y', 'y1', 'cy', 'ry', 'height'];
+var unit_attrs = $.merge(['r','radius'], w_attrs);
+
+var unitNumMap = {
+	'%':  2,
+	'em': 3,
+	'ex': 4,
+	'px': 5,
+	'cm': 6,
+	'mm': 7,
+	'in': 8,
+	'pt': 9,
+	'pc': 10
+};
+
+$.merge(unit_attrs, h_attrs);
+
+// Container of elements.
+var elementContainer_;
+
+/**
+ * Stores mapping of unit type to user coordinates.
+ */
+var typeMap_ = {px: 1};
+
+/**
+ * ElementContainer interface
+ *
+ * function getBaseUnit() - returns a string of the base unit type of the container ("em")
+ * function getElement() - returns an element in the container given an id
+ * function getHeight() - returns the container's height
+ * function getWidth() - returns the container's width
+ * function getRoundDigits() - returns the number of digits number should be rounded to
+ */
+
+/**
+ * Function: svgedit.units.init()
+ * Initializes this module.
+ *
+ * Parameters:
+ * elementContainer - an object implementing the ElementContainer interface.
+ */
+svgedit.units.init = function(elementContainer) {
+	elementContainer_ = elementContainer;
+
+	var svgns = 'http://www.w3.org/2000/svg';
+
+	// Get correct em/ex values by creating a temporary SVG.
+	var svg = document.createElementNS(svgns, 'svg');
+	document.body.appendChild(svg);
+	var rect = document.createElementNS(svgns,'rect');
+	rect.setAttribute('width',"1em");
+	rect.setAttribute('height',"1ex");
+	rect.setAttribute('x',"1in");
+	svg.appendChild(rect);
+	var bb = rect.getBBox();
+	document.body.removeChild(svg);
+
+	var inch = bb.x;
+	typeMap_['em'] = bb.width;
+	typeMap_['ex'] = bb.height;
+	typeMap_['in'] = inch;
+	typeMap_['cm'] = inch / 2.54;
+	typeMap_['mm'] = inch / 25.4;
+	typeMap_['pt'] = inch / 72;
+	typeMap_['pc'] = inch / 6;
+	typeMap_['%'] = 0;
+};
+
+// Group: Unit conversion functions
+
+// Function: svgedit.units.getTypeMap
+// Returns the unit object with values for each unit
+svgedit.units.getTypeMap = function() {
+	return typeMap_;
+};
+
+// Function: svgedit.units.shortFloat
+// Rounds a given value to a float with number of digits defined in save_options
+//
+// Parameters: 
+// val - The value as a String, Number or Array of two numbers to be rounded
+//
+// Returns:
+// If a string/number was given, returns a Float. If an array, return a string
+// with comma-seperated floats
+svgedit.units.shortFloat = function(val) {
+	var digits = elementContainer_.getRoundDigits();
+	if(!isNaN(val)) {
+		// Note that + converts to Number
+		return +((+val).toFixed(digits));
+	} else if($.isArray(val)) {
+		return svgedit.units.shortFloat(val[0]) + ',' + svgedit.units.shortFloat(val[1]);
+	}
+	return parseFloat(val).toFixed(digits) - 0;
+};
+
+// Function: svgedit.units.convertUnit
+// Converts the number to given unit or baseUnit
+svgedit.units.convertUnit = function(val, unit) {
+	unit = unit || elementContainer_.getBaseUnit();
+//	baseVal.convertToSpecifiedUnits(unitNumMap[unit]);
+//	var val = baseVal.valueInSpecifiedUnits;
+//	baseVal.convertToSpecifiedUnits(1);
+	return svgedit.unit.shortFloat(val / typeMap_[unit]);
+};
+
+// Function: svgedit.units.setUnitAttr
+// Sets an element's attribute based on the unit in its current value.
+//
+// Parameters: 
+// elem - DOM element to be changed
+// attr - String with the name of the attribute associated with the value
+// val - String with the attribute value to convert
+svgedit.units.setUnitAttr = function(elem, attr, val) {
+	if(!isNaN(val)) {
+		// New value is a number, so check currently used unit
+		var old_val = elem.getAttribute(attr);
+		
+		// Enable this for alternate mode
+//		if(old_val !== null && (isNaN(old_val) || elementContainer_.getBaseUnit() !== 'px')) {
+//			// Old value was a number, so get unit, then convert
+//			var unit;
+//			if(old_val.substr(-1) === '%') {
+//				var res = getResolution();
+//				unit = '%';
+//				val *= 100;
+//				if(w_attrs.indexOf(attr) >= 0) {
+//					val = val / res.w;
+//				} else if(h_attrs.indexOf(attr) >= 0) {
+//					val = val / res.h;
+//				} else {
+//					return val / Math.sqrt((res.w*res.w) + (res.h*res.h))/Math.sqrt(2);
+//				}
+//			} else {
+//				if(elementContainer_.getBaseUnit() !== 'px') {
+//					unit = elementContainer_.getBaseUnit();
+//				} else {
+//					unit = old_val.substr(-2);
+//				}
+//				val = val / typeMap_[unit];
+//			}
+//		
+//		val += unit;
+//		}
+	}
+	elem.setAttribute(attr, val);
+};
+
+var attrsToConvert = {
+	"line": ['x1', 'x2', 'y1', 'y2'],
+	"circle": ['cx', 'cy', 'r'],
+	"ellipse": ['cx', 'cy', 'rx', 'ry'],
+	"foreignObject": ['x', 'y', 'width', 'height'],
+	"rect": ['x', 'y', 'width', 'height'],
+	"image": ['x', 'y', 'width', 'height'],
+	"use": ['x', 'y', 'width', 'height'],
+	"text": ['x', 'y']
+};
+
+// Function: svgedit.units.convertAttrs
+// Converts all applicable attributes to the configured baseUnit
+//
+// Parameters:
+// element - a DOM element whose attributes should be converted
+svgedit.units.convertAttrs = function(element) {
+	var elName = element.tagName;
+	var unit = elementContainer_.getBaseUnit();
+	var attrs = attrsToConvert[elName];
+	if(!attrs) return;
+	var len = attrs.length
+	for(var i = 0; i < len; i++) {
+		var attr = attrs[i];
+		var cur = element.getAttribute(attr);
+		if(cur) {
+			if(!isNaN(cur)) {
+				element.setAttribute(attr, (cur / typeMap_[unit]) + unit);
+			} else {
+				// Convert existing?
+			}
+		}
+	}
+};
+
+// Function: svgedit.units.convertToNum
+// Converts given values to numbers. Attributes must be supplied in 
+// case a percentage is given
+//
+// Parameters:
+// attr - String with the name of the attribute associated with the value
+// val - String with the attribute value to convert
+svgedit.units.convertToNum = function(attr, val) {
+	// Return a number if that's what it already is
+	if(!isNaN(val)) return val-0;
+	
+	if(val.substr(-1) === '%') {
+		// Deal with percentage, depends on attribute
+		var num = val.substr(0, val.length-1)/100;
+		var width = elementContainer_.getWidth();
+		var height = elementContainer_.getHeight();
+		
+		if(w_attrs.indexOf(attr) >= 0) {
+			return num * width;
+		} else if(h_attrs.indexOf(attr) >= 0) {
+			return num * height;
+		} else {
+			return num * Math.sqrt((width*width) + (height*height))/Math.sqrt(2);
+		}
+	} else {
+		var unit = val.substr(-2);
+		var num = val.substr(0, val.length-2);
+		// Note that this multiplication turns the string into a number
+		return num * typeMap_[unit];
+	}
+};
+
+// Function: svgedit.units.isValidUnit
+// Check if an attribute's value is in a valid format
+//
+// Parameters: 
+// attr - String with the name of the attribute associated with the value
+// val - String with the attribute value to check
+svgedit.units.isValidUnit = function(attr, val, selectedElement) {
+	var valid = false;
+	if(unit_attrs.indexOf(attr) >= 0) {
+		// True if it's just a number
+		if(!isNaN(val)) {
+			valid = true;
+		} else {
+		// Not a number, check if it has a valid unit
+			val = val.toLowerCase();
+			$.each(typeMap_, function(unit) {
+				if(valid) return;
+				var re = new RegExp('^-?[\\d\\.]+' + unit + '$');
+				if(re.test(val)) valid = true;
+			});
+		}
+	} else if (attr == "id") {
+		// if we're trying to change the id, make sure it's not already present in the doc
+		// and the id value is valid.
+
+		var result = false;
+		// because getElem() can throw an exception in the case of an invalid id
+		// (according to http://www.w3.org/TR/xml-id/ IDs must be a NCName)
+		// we wrap it in an exception and only return true if the ID was valid and
+		// not already present
+		try {
+			var elem = elementContainer_.getElement(val);
+			result = (elem == null || elem === selectedElement);
+		} catch(e) {}
+		return result;
+	} else {
+		valid = true;
+	}
+	
+	return valid;
+};
+
+
+})();
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/svgedit.compiled.css
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/svgedit.compiled.css	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/svgedit.compiled.css	(revision 29468)
@@ -0,0 +1,417 @@
+#svg_editor .jPicker .Icon{display:inline-block;height:24px;position:relative;text-align:left;width:25px}
+#svg_editor .jPicker .Icon span.Color,#svg_editor .jPicker .Icon span.Alpha{background-position:2px 2px;display:block;height:100%;left:0;position:absolute;top:0;width:100%}
+#svg_editor .jPicker .Icon span.Image{background-repeat:no-repeat;cursor:pointer;display:block;height:100%;left:0;position:absolute;top:0;width:100%}
+#svg_editor .jPicker.Container{z-index:10}
+table#svg_editor .jPicker{width:545px;z-index:20}
+#svg_editor .jPicker .Move{background-color:#ddd;border-color:#fff #666 #666 #fff;border-style:solid;border-width:1px;cursor:move;height:12px;padding:0}
+#svg_editor .jPicker .Title{display:none}
+#svg_editor .jPicker div.Map{border:solid #000 1px;cursor:crosshair;height:260px;margin:0;overflow:hidden;padding:0;position:relative;width:260px}
+#svg_editor .jPicker div[class="Map"]{height:256px;width:256px}
+#svg_editor .jPicker div.Bar{border:solid #000 1px;cursor:n-resize;height:260px;margin:0 15px;overflow:hidden;padding:0;position:relative;width:24px}
+#svg_editor .jPicker div[class="Bar"]{height:256px;width:20px}
+#svg_editor .jPicker .Map .Map1,#svg_editor .jPicker .Map .Map2,#svg_editor .jPicker .Map .Map3,#svg_editor .jPicker .Bar .Map1,#svg_editor .jPicker .Bar .Map2,#svg_editor .jPicker .Bar .Map3,#svg_editor .jPicker .Bar .Map4,#svg_editor .jPicker .Bar .Map5,#svg_editor .jPicker .Bar .Map6{background-color:transparent;background-image:none;display:block;left:0;position:absolute;top:0}
+#svg_editor .jPicker .Map .Map1,#svg_editor .jPicker .Map .Map2,#svg_editor .jPicker .Map .Map3{height:2596px;width:256px}
+#svg_editor .jPicker .Bar .Map1,#svg_editor .jPicker .Bar .Map2,#svg_editor .jPicker .Bar .Map3,#svg_editor .jPicker .Bar .Map4{height:3896px;width:20px}
+#svg_editor .jPicker .Bar .Map5,#svg_editor .jPicker .Bar .Map6{height:256px;width:20px}
+#svg_editor .jPicker .Map .Map1,#svg_editor .jPicker .Map .Map2,#svg_editor .jPicker .Bar .Map6{background-repeat:no-repeat}
+#svg_editor .jPicker .Map .Map3,#svg_editor .jPicker .Bar .Map5{background-repeat:repeat}
+#svg_editor .jPicker .Bar .Map1,#svg_editor .jPicker .Bar .Map2,#svg_editor .jPicker .Bar .Map3,#svg_editor .jPicker .Bar .Map4{background-repeat:repeat-x}
+#svg_editor .jPicker .Map .Arrow{display:block;position:absolute}
+#svg_editor .jPicker .Bar .Arrow{display:block;left:0;position:absolute}
+#svg_editor .jPicker .Preview{font-size:9px;text-align:center}
+#svg_editor .jPicker .Preview div.bgt{height:62px;margin:0 auto;padding:0;width:62px}
+#svg_editor .jPicker .Preview div span{border:1px solid #000;display:block;height:30px;margin:0 auto;padding:0;width:60px}
+#svg_editor .jPicker .Preview .Active{border-bottom-width:0}
+#svg_editor .jPicker .Preview .Current{border-top-width:0;cursor:pointer}
+#svg_editor .jPicker .Button{text-align:center;width:115px}
+#svg_editor .jPicker .Button input{width:100px}
+#svg_editor .jPicker td.Radio{margin:0;padding:0;width:31px}
+#svg_editor .jPicker td.Radio input{margin:0 5px 0 0;padding:0}
+#svg_editor .jPicker td.Text{font-size:12px!important;height:22px;margin:0;padding:0;text-align:left;width:70px}
+#svg_editor .jPicker tr.Hex td.Text{width:100px;color:#666}
+#svg_editor .jPicker tr.Hex td.Text span{width:100px;color:#333}
+#svg_editor .jPicker td.Text input{background-color:#fff;border:1px inset #aaa;height:15px;margin:0 0 0 5px;text-align:left;width:30px;color:#333}
+#svg_editor #color_picker .jPicker tr.Hex td.Text input.Hex{width:50px;display:inline-block;float:none}
+#svg_editor .jPicker tr.Hex td.Text input.AHex{width:20px;display:none}
+#svg_editor .jPicker .Grid{text-align:center;float:right;width:108px}
+#svg_editor .jPicker .Grid span.QuickColor{cursor:pointer;display:inline-block;height:15px;line-height:15px;margin:0;padding:0;width:18px}
+#svg_editor .jPicker td{vertical-align:top}
+#svg_editor .jPicker td.colorsquare{width:275px}
+#svg_editor .jPicker .prev_div{margin-top:-15px}
+#svg_editor .jPicker .actions{position:absolute;bottom:20px;left:20px;right:20px}
+#svg_editor .jPicker .actions .Ok{position:absolute;top:0;right:0}
+#svg_editor .jPicker .actions .Cancel{position:absolute;top:0;left:0}
+#svg_editor .jPicker .color_preview{width:62px;margin:0 auto}
+h2.jGraduate_Title{display:none}
+.jGraduate_Picker{position:absolute;padding:20px}
+.jGraduate_tabs li{display:inline-block;padding:5px 10px;margin-right:5px;cursor:pointer}
+li.jGraduate_tab_current{background:#fff;border-radius:3px 3px 0 0}
+.jGraduate_colPick{display:none}
+.jGraduate_gradPick{display:none;overflow:visible}
+.jGraduate_tabs{position:relative;background-color:#ddd;padding:10px 10px 0 10px;margin:-20px -20px 20px -20px;border-radius:3px 3px 0 0}
+div.jGraduate_Swatch{float:left;margin:0 15px 0 0}
+div.jGraduate_GradContainer{border:solid #000 1px;background-image:url(../images/map-opacity.png);background-position:0 0;height:256px;width:256px;position:relative}
+div.jGraduate_GradContainer div.grad_coord{background:rgba(0,0,0,0.8);border:2px solid white;border-radius:15px;-moz-border-radius:5px;width:14px;height:14px;position:absolute;margin:-7px -7px;top:0;left:0;text-align:center;font-size:8px;line-height:14px;color:white;text-decoration:none;cursor:pointer;-moz-user-select:none;-webkit-user-select:none}
+.jGraduate_AlphaArrows{position:absolute;margin-top:-10px;margin-left:250.5px}
+div.jGraduate_Opacity{border:2px inset #eee;margin-top:14px;background-color:black;background-image:url(../images/Maps.png);background-position:0 -2816px;height:20px;cursor:ew-resize}
+div.jGraduate_StopSlider{margin:-10px 0 0 -10px;width:276px;overflow:visible;background:white;height:45px;cursor:pointer}
+div.jGraduate_StopSection{width:120px;float:left}
+div.jGraduate_StopSection.jGraduate_SpreadMethod{display:none}
+input.jGraduate_Ok,input.jGraduate_Cancel{display:block;width:100px}
+input.jGraduate_Ok{margin:0 0 5px 0}
+.colorBox{float:left;height:16px;width:16px;border:1px solid #808080;cursor:pointer;margin:4px 4px 4px 30px}
+.colorBox+label{float:left;margin-top:7px}
+label.jGraduate_Form_Heading{color:#333;padding:2px;font-weight:bold;font-size:13px}
+div.jGraduate_Form_Section{-moz-border-radius:5px;-webkit-border-radius:5px;padding:15px 5px 5px 5px;margin:5px 2px;width:100px;text-align:center;overflow:auto;background:#eee}
+div.jGraduate_Form label{padding:0 2px;color:#333}
+div.jGraduate_StopSection input[type=text],div.jGraduate_Slider input[type=text]{width:33px;color:#333}
+div.jGraduate_LightBox{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#000;opacity:.5;display:none}
+div.jGraduate_stopPicker{position:absolute;display:none;background:white;padding:20px;border-radius:3px;width:530px;height:300px;box-shadow:0 5px 25px black}
+.jGraduate_gradPick{width:526px}
+.jGraduate_gradPick div.jGraduate_Slider{line-height:160%}
+.jGraduate_gradPick div.jGraduate_Slider label:last-child{position:absolute;right:10px;top:0;color:#999;font-weight:bold}
+.jGraduate_gradPick div.jGraduate_Slider label:last-child input{margin:0 3px 0 0;color:#333}
+.jGraduate_gradPick .jGraduate_Form{float:left;width:270px;position:absolute;left:284px;width:266px;height:200px;top:195px;margin:-3px 3px 0 10px;line-height:200%}
+.jGraduate_gradPick .jGraduate_Form label,.jGraduate_gradPick .jGraduate_Form input{width:auto;float:left}
+.jGraduate_gradPick .jGraduate_Form.jGraduate_rg_field label,.jGraduate_gradPick .jGraduate_Form.jGraduate_rg_field input{width:auto;float:left;font-size:11px}
+.jGraduate_gradPick .jGraduate_Form.jGraduate_rg_field #color_picker_jGraduate_match_ctr{float:none}
+.jGraduate_gradPick .jGraduate_Form label{clear:left}
+.jGraduate_gradPick .jGraduate_Points{position:static;float:left;margin:0;width:auto}
+.jGraduate_Colorblocks{display:table;border-spacing:0 5px}
+.jGraduate_colorblock{display:table-row}
+.jGraduate_Colorblocks .jGraduate_colorblock>*{display:table-cell;vertical-align:middle;margin:0;float:none}
+.jGraduate_gradPick .jGraduate_Form_Section{padding-top:9px}
+.jGraduate_Slider{text-align:center;float:left;width:100%;position:relative;margin:5px 0}
+.jGraduate_Slider .jGraduate_Form_Section{border:0;width:250px;padding:0 2px;overflow:visible}
+.jGraduate_Slider label.prelabel{width:40px;text-align:left}
+.jGraduate_SliderBar{width:140px;float:left;margin:0 5px;border:1px solid #BBB;height:20px;position:relative}
+div.jGraduate_Slider input{margin-top:5px}
+div.jGraduate_Slider img{top:0;left:0;position:absolute;cursor:ew-resize}
+.jPicker .Button .Ok,.jGraduate_Picker .jGraduate_OkCancel .jGraduate_Ok{-webkit-appearance:none;margin:0;position:absolute;bottom:5px;right:5px}
+.jPicker .Button .Cancel,.jGraduate_Picker .jGraduate_OkCancel .jGraduate_Cancel{margin:0;position:absolute;bottom:5px;left:5px}
+body{background:#3f3f3c;font:13px/120% 'Lucida Sans','Lucida Grande','Lucida Sans Unicode',sans-serif;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin:0;padding:0}
+::selection{background:#000;color:#fff}
+::-moz-selection{background:#000;color:#fff}
+html,body{overflow:hidden;width:100%;height:100%}
+::-webkit-scrollbar{width:5px;height:5px;background:#444}
+::-webkit-scrollbar-track{border-radius:10px;background:#444}
+::-webkit-scrollbar-thumb{border-radius:10px;background:#666}
+::-webkit-scrollbar-corner{background:#444}
+#browser-not-supported{font-size:.8em;font-family:Verdana,Helvetica,Arial;color:#000}
+#svgroot{-moz-user-select:none;-webkit-user-select:none;position:absolute;top:0;left:0}
+#svg_editor{background:#2f2f2c}
+#menu_bar{padding:0 0 0 50px;background:#2f2f2c;position:relative;z-index:2}
+#menu_bar.active .menu.open .menu_list{display:block}
+.menu{position:relative;z-index:5;color:#333;display:inline-block}
+.menu_title{cursor:pointer;display:inline-block;padding:7px 10px;z-index:10;color:#fff;position:relative;height:16px;vertical-align:top}
+.touch .menu_title{padding:7px 17px;height:26px;line-height:26px}
+.menu .menu_title:hover{background:rgba(255,255,255,0.1)}
+.menu_list .separator{margin:5px 0;border-top:solid #ddd 1px}
+.menu_list{display:none;position:absolute;top:28px;left:0;white-space:nowrap;background:white;padding:7px 0;border-radius:0 3px 3px 3px;box-shadow:0 0 20px rgba(0,0,0,0.8)}
+.touch .menu_list{top:38px}
+#menu_bar.active .menu.open .menu_title{background:white;color:#333}
+.menu_list .menu_item{position:relative;overflow:hidden;line-height:22px;padding:5px 69px 5px 25px;cursor:default;color:#333}
+.menu_list .menu_item.tool_button{background:transparent;border:0;margin:0;padding:5px 55px 5px 25px;height:auto;width:auto}
+.menu_list .menu_item.push_button_pressed:before{content:'â';position:absolute;display:block;left:7px;top:3px;width:20px;height:20px}
+.menu_list .menu_item:hover,.menu_list .menu_item.push_button_pressed:hover{background:rgba(0,0,0,0.1);color:#000}
+.menu_list .menu_item.disabled:hover,.menu_list .menu_item.push_button_pressed.disabled:hover{background:transparent;color:#333}
+.menu_list .menu_item.push_button_pressed{background:transparent;border:0;width:auto;height:auto;margin:0}
+.menu_list .menu_item span{display:block;position:absolute;right:10px;padding:5px;background:rgba(0,0,0,0.1);top:6px;height:10px;text-align:center;font-size:10px;line-height:120%}
+#svgcanvas{line-height:normal;display:inline-block;background-color:#a0a0a0;text-align:center;vertical-align:middle;width:640px;height:480px;position:relative;background:#3f3f3c}
+#rulers>div{position:absolute;background:#2f2f2c;z-index:1;overflow:hidden;-webkit-font-smoothing:none}
+#rulers #ruler_corner{top:30px;left:50px;width:15px;height:15px;border:solid #444 1px;z-index:2}
+#ruler_x{height:15px;top:30px;left:66px;right:175px;border-top:solid #444 1px;border-right:solid #444 1px}
+#ruler_x_cursor{height:15px;border-right:dotted #999 1px;position:absolute;background:#2f2f2c}
+#ruler_y_cursor{width:15px;border-top:dotted #999 1px;position:absolute;background:#2f2f2c}
+#rulers.moved #ruler_corner,#rulers.moved #ruler_x{top:101px}
+#ruler_y{width:15px;top:46px;left:50px;bottom:40px;border-left:solid #444 1px;border-bottom:solid #444 1px}
+#rulers.moved #ruler_y{top:116px}
+#ruler_x canvas:first-child{margin-left:-16px}
+#ruler_x canvas{float:left}
+#ruler_y canvas{margin-top:-16px}
+#ruler_x>div,#ruler_y>div{overflow:hidden}
+#palette{display:block;position:absolute;z-index:2;left:10px;bottom:5px;width:410px;right:145px;height:30px}
+.palette_item{height:20%;width:5.2%;float:left;cursor:url(../images/eyedropper.png) 0 16,crosshair}
+.palette_item.transparent,.palette_item.white,.palette_item.black{background:#fff;position:absolute;width:10px;height:10px;left:-10px;top:0}
+.palette_item.transparent{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNXG14zYAAAAVdEVYdENyZWF0aW9uIFRpbWUAOC8yMi8xMg1cp6sAAABESURBVBiVjdBBCgAgCETRr/e/87SJKFPLnfIcQRMIwMBIShIAvgZzoSrfkzrs8WyF1+kX9r3p8AE7nL7kSpSshN+JEQ8GixkF0mSevgAAAABJRU5ErkJggg==)}
+.palette_item.black{background:#000;top:10px}
+.palette_item.white{background:#fff;top:20px}
+#color_tools{position:relative;width:48px;height:48px;margin:6px 6px 0 6px}
+.touch #color_tools{width:auto;height:auto}
+#tool_fill{position:absolute;top:0;left:0;z-index:1}
+.touch #tool_fill{position:static;width:36px;height:36px;margin-bottom:10px}
+#tool_fill.active,#tool_stroke.active{z-index:2}
+#tool_stroke{top:14px;left:14px}
+.touch #tool_fill.active,.touch #tool_stroke.active{outline:4px solid #09f}
+#tool_fill,#tool_stroke,#tool_canvas{box-shadow:0 0 0 1px #2f2f2c;position:absolute}
+.touch #tool_fill,.touch #tool_stroke,.touch #tool_canvas{position:relative;top:0;left:0}
+#color_canvas_tools{float:left;cursor:pointer}
+#tool_fill .color_block{width:24px;height:24px;overflow:hidden;border:solid #ccc 1px}
+.touch #tool_eyedropper{margin-top:6px}
+.touch #tool_fill .color_block{width:36px;height:36px}
+.touch #tool_fill .color_block svg{width:36px!important;height:36px!important}
+.touch #tool_switch{display:none}
+#use_panel .tool_button,#path_node_panel .tool_button{color:#999;border:solid #3f3f3c 1px;border-radius:3px;padding:3px 10px 3px 40px;background:transparent;position:relative;margin-top:10px;width:90px;height:23px;line-height:24px}
+#use_panel .tool_button{padding-left:10px;margin-bottom:10px;width:124px}
+#path_node_panel .tool_button img,#path_node_panel .tool_button svg{position:absolute;left:5px;top:3px}
+#color_tools #tool_fill .color_block:hover,#color_tools #tool_stroke .color_block:hover{border-color:#fff}
+#color_tools #tool_fill .color_block>div{position:absolute;top:0;left:0}
+.touch #color_tools #tool_fill .color_block>div{position:relative}
+#color_tools #tool_fill .color_block #fill_bg,#color_tools #tool_stroke .color_block #stroke_bg{position:absolute;top:1px;left:1px;bottom:1px;right:1px}
+.touch #color_tools #tool_fill .color_block #fill_bg,.touch #color_tools #tool_stroke .color_block #stroke_bg{width:36px;height:36px;right:auto;bottom:auto}
+.touch #tool_stroke{position:relative;top:0;left:0;z-index:0}
+#stroke_color:after{content:'';position:absolute;display:block;width:8px;height:8px;left:8px;top:8px;background:#ccc;box-shadow:0 0 0 1px #000}
+.touch #stroke_color:after{height:14px;left:10px;position:absolute;top:10px;width:14px}
+#color_tools #tool_switch{cursor:pointer;opacity:.7;width:11px;height:11px;background:transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABV0RVh0Q3JlYXRpb24gVGltZQA2LzE0LzEyP6j5+gAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNXG14zYAAAB4SURBVBiVjZHRCYUwDEVvxIF0kZKN7EjiIrrReR/PSNSKXiikcE5JUtMeADMzXQIcdRfgFWqlyyB7ap1wL+0HAnIv1DqRJUBxTkLUWXIvh9AHkIeb58UkIUnDMH4ZR0otCfhv4ynbtp7ut722ZniFG8L9xx4Ek6QfN9huARmYwR0AAAAASUVORK5CYII=) top left no-repeat;position:absolute;top:-2px;left:28px}
+#color_tools #cross:hover{opacity:1}
+#color_tools #tool_stroke:hover #stroke_color:after{background:#fff}
+#color_tools #tool_stroke .color_block{width:24px;height:24px;overflow:hidden;border:solid #ccc 1px}
+.touch #color_tools #tool_stroke .color_block{width:36px;height:36px}
+#color_tools #tool_stroke .color_block>div{position:absolute;bottom:0;right:0}
+.touch #color_tools #tool_stroke .color_block>div{position:relative}
+#color_tools .icon_label{padding:0;width:24px;height:100%;cursor:pointer;position:absolute}
+#linkLabel>svg{height:20px;padding-top:4px}
+div#workarea{display:inline-table-cell;position:absolute;top:30px;left:50px;bottom:40px;right:175px;background-color:#444;overflow:auto;text-align:center;-webkit-transition:-webkit-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);-moz-transition:-moz-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);-o-transition:-o-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);-ms-transition:-ms-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);transition:transform 500ms cubic-bezier(0.13,0.66,0.24,0.92)}
+.touch div#workarea{top:40px}
+.menu .menu_list{display:none;position:absolute}
+.tool_button,.tool_button_current,.tool_button_pressed{cursor:pointer}
+.tool_button:hover,.push_button:hover,.buttonup:hover,.buttondown,.tool_button_current,.push_button_pressed{background-color:#fff}
+.tool_button.disabled,.tool_button.disabled:hover{opacity:.3;background-color:#aaa}
+#tools_left .tool_button{background:#2f2f2c;position:relative}
+#tools_left .tool_button.loaded{background:#ccc}
+#tools_left .tool_button.loaded:hover{background:#fff}
+#tools_left .tool_button:after,#tools_left .tool_button_current:after{position:absolute;content:'';border:solid #2f2f2c 2px;top:-1px;left:-1px;width:26px;height:26px;z-index:0}
+#tools_left .tool_button_current{background-color:#0cf}
+#main_icon span{position:absolute;width:100%;height:100%;display:block;z-index:2}
+#tools_top{position:absolute;width:160px;height:100%;background:#2f2f2c;right:0;top:20px;border-bottom:0;overflow:visible;padding:0 0 0 15px}
+.touch #tools_top{top:30px}
+label{display:block;color:#999}
+div#font-selector{width:140px;height:300px;overflow:auto;margin:0 auto;position:absolute;top:27px;right:0;border:1px solid black;padding:10px;display:none;background-color:white;z-index:10;border-radius:3px;box-shadow:0 5px 10px rgba(0,0,0,0.7)}
+div#font-selector img{width:100%}
+div#font-selector .font-item{border-bottom:solid #ddd 1px;padding:5px 10px;margin:0 -10px}
+div#font-selector .font-item:hover{background-color:#eee}
+#tools_top #marker_panel *{float:left}
+#tools_top #marker_panel h4{float:none}
+#tools_top #marker_panel .dropdown .icon_label{width:36px;height:20px;margin-top:2px;border:solid #3f3f3c 1px;text-align:center}
+#tools_top #marker_panel .dropdown button{margin-top:2px}
+#tools_top #marker_panel #marker_panel_title{float:none;color:#fff;margin-bottom:3px}
+#tools_top #marker_panel .dropdown .icon_label img{float:none}
+#color_picker input[type=text],#color_picker input[type=number]{width:30px;background:#fff}
+.dropdown_set input[type=text],.dropdown_set input[type=number]{width:50px}
+input[type=text].wide,input[type=number].wide{width:110px}
+input[type=text].tuco,input[type=number].tuco{width:150px}
+input[type=submit],input[type=button],button{background:#4f80ff;color:#fff;border-radius:3px;padding:7px 17px;border:0;line-height:140%;font-size:14px;font-weight:bold;font-family:sans-serif}
+input[type=submit]:hover,button:hover{box-shadow:inset 0 3px 10px rgba(255,255,255,0.1),inset 0 -3px 10px rgba(0,0,0,0.2)}
+input[type=submit]:hover,button:hover{background:#2f84c1}
+input[type=submit]:active,button:active{box-shadow:inset 0 2px 2px rgba(0,0,0,0.2);border-bottom:solid rgba(255,255,255,0.1) 1px}
+#tools_left{position:absolute;border-right:0;width:50px;top:30px;bottom:0;left:0;background:#2f2f2c;z-index:4}
+#workarea.wireframe #svgcontent *{fill:none;stroke:#000;stroke-width:1px;stroke-opacity:1.0;stroke-dasharray:0;opacity:1;pointer-events:stroke;vector-effect:non-scaling-stroke;filter:none}
+#workarea.wireframe #svgcontent text{fill:#000;stroke:none}
+#workarea.wireframe #canvasBackground>rect{fill:#FFF!important}
+#workarea #canvasBackground>rect{stroke:transparent!important}
+.context_panel{display:none}
+#canvas_panel{display:block}
+#multiselected_panel .selected_tool{vertical-align:12px}
+#cur_context_panel{position:absolute;top:47px;left:68px;line-height:22px;overflow:auto;border-bottom:0;border-right:0;padding-left:5px;font-size:12px;background:black;color:#999;opacity:.5;padding:0 10px;border-radius:0 10px 10px 0}
+#cur_context_panel a{float:none;text-decoration:none;color:#fff}
+#cur_context_panel a:hover{text-decoration:underline}
+#tools_left .tool_button,#tools_left .tool_button_current{position:relative;z-index:11}
+.flyout_arrow_horiz{position:absolute;bottom:-1px;right:0;z-index:10}
+.dropdown{position:relative;float:left}
+.dropdown button{width:21px;height:22px;padding:0 3px 0 3px;border:0;background-color:#555;border-radius:0 2px 2px 0;margin-left:-1px;position:relative}
+.dropdown button:hover{background-color:#666}
+.dropdown button:after{content:'';position:absolute;border:solid transparent 4px;border-top-color:#999;top:9px;left:6px}
+.dropdown button.down{border-left:1px solid #808080;border-top:1px solid #808080;border-right:1px solid #fff;border-bottom:1px solid #fff;background-color:#b0b0b0}
+.dropdown ul{list-style:none;position:absolute;margin:0;padding:0;left:-80px;top:26px;z-index:4;display:none}
+.dropup ul{top:auto;bottom:26px;border-radius:3px;box-shadow:0 5px 10px #000}
+.dropup ul:after{content:'';display:block;position:absolute;bottom:-10px;right:50%;top:auto;width:0;height:0;border:solid transparent 5px;border-top-color:#fff}
+.dropdown li{display:block;width:120px;padding:5px 10px;color:#333;background:#fff;margin:0;line-height:16px}
+.dropdown li:first-child{border-radius:3px 3px 0 0}
+.dropdown li:last-child{border-radius:0 0 3px 3px}
+.dropdown li:hover{background-color:#ddd;color:#000}
+.dropdown li.special{padding:10px;background:white;border:0;box-shadow:0 3px 10px black;border-radius:3px!important}
+.dropdown li.special:after{content:'';display:block;position:absolute;top:-10px;right:50%;border:solid transparent 5px;border-bottom-color:#fff}
+.dropdown li.special.down:after{bottom:-10px;right:50%;top:auto;border:solid transparent 5px;border-top-color:#fff}
+.tool_button,.push_button,.tool_button_current,.push_button_pressed{height:27px;width:27px;border:solid #2f2f2c 8px;border-left-width:13px;margin:0;background-color:#ddd;cursor:pointer}
+#main_menu li#tool_open,#main_menu li#tool_import{position:relative;overflow:hidden}
+#tool_image{overflow:hidden}
+#tool_open input,#tool_import input,#tool_import_bitmap input{position:absolute;opacity:0;font-size:10em;top:-5px;right:-5px;margin:0;cursor:pointer}
+.disabled{opacity:.5;cursor:default}
+.width_label{padding-right:5px}
+#text{position:absolute;left:-9999px}
+#tool_bold span,#tool_italic span{position:absolute;width:100%;height:100%;top:0;left:0;background:#ccc;opacity:0}
+#url_notice{padding-top:4px;display:none}
+#color_picker{position:absolute;display:none;background:#fff;height:350px;border-radius:3px;z-index:5;box-shadow:0 5px 10px #000;width:530px}
+.tools_flyout{position:absolute;display:none;cursor:pointer;width:385px;z-index:10;left:47px!important;height:324px;background:#fff;border-radius:5px;box-shadow:0 5px 10px rgba(0,0,0,0.5)}
+.tools_flyout_v{position:absolute;display:none;cursor:pointer;width:30px}
+.tools_flyout .tool_button{float:left;background-color:#fff;height:24px;width:24px}
+#tools_bottom{position:absolute;left:50px;right:0;bottom:0;height:40px;overflow:visible;background:#2f2f2c}
+#tools_bottom_1{width:115px;float:left}
+#tools_bottom_2{position:relative;float:left;margin-top:5px}
+#tools_bottom input[type=text]{width:3.2em}
+#tools_top h4{color:#fff;font-weight:normal;margin:0;padding:10px 0 5px 0}
+#tools_top .dropdown .icon_label{border:1px solid transparent;height:auto}
+#tools_top.multiselected #align_tools{display:none}
+#tools_top.multiselected #multiselected_panel{display:block!important}
+#tools_top.multiselected #multiselected_panel .hidable{display:none}
+.draginput_cell{float:left;height:26px;height:26px;border:solid #3f3f3c 10px;outline:solid #2f2f2c 1px;background:#ddd;cursor:pointer;position:relative}
+.draginput_cell:hover{background:#fff}
+.draginput_cell:after{content:'';position:absolute;top:0;left:0;border:solid #3f3f3c 1px;height:26px;width:26px;z-index:0}
+.align_buttons .draginput_cell:nth-child(1){border-radius:3px 0 0 0}
+.align_buttons .draginput_cell:nth-child(3){border-radius:0 3px 0 0}
+.align_buttons .draginput_cell:nth-child(4){border-radius:0 0 0 3px}
+.align_buttons .draginput_cell:nth-child(6){border-radius:0 0 3px 0}
+.align_buttons .push_button{display:block;float:left}
+#option_lists ul{display:none;position:absolute;height:auto;z-index:3;margin:0;list-style:none;padding-left:0}
+#option_lists .optcols2{width:70px;margin-left:-15px}
+#option_lists .optcols3{width:192px;margin-left:-105px;margin-top:-25px;background:#fff;padding:5px;box-shadow:0 5px 10px #000;border-radius:3px}
+#option_lists .optcols3:after{content:'';display:block;position:absolute;top:-10px;right:70px;border:solid transparent 5px;border-bottom-color:#fff}
+#option_lists .tool_button,#option_lists .push_button,#option_lists .tool_button_current,#option_lists .push_button_pressed{border:0;background:transparent}
+#option_lists .tool_button:hover{background:#ddd}
+#option_lists ul li.current{background-color:#f4e284}
+#option_lists .optcols4{width:130px;margin-left:-44px}
+#option_lists ul[class^=optcols] li{float:left}
+ul li.current{background-color:#f4e284}
+#option_lists ul li{margin:0;border-radius:0;-moz-border-radius:0;-webkit-border-radius:0}
+#copyright{text-align:right;padding-right:.3em}
+#svg_source_editor{display:none}
+#svg_source_editor #svg_source_overlay{position:absolute;top:0;right:0;left:0;bottom:0;background-color:black;opacity:.6;z-index:5}
+#svg_source_editor #svg_source_container{position:absolute;top:30px;left:100px;right:100px;bottom:30px;background-color:#fff;border-radius:3px;opacity:1.0;text-align:center;z-index:6;padding:15px 0}
+#svg_source_editor form{position:absolute;display:block;top:15px;bottom:55px;left:15px;right:12px;padding:5px;font-size:12px}
+#svg_source_textarea{width:100%;height:100%;line-height:140%;font-family:'Lucida Sans','Lucida Grande','Lucida Sans Unicode',sans-serif;font-size:12px}
+#svg_source_editor #tool_source_back{position:absolute;bottom:45px;left:15px;right:15px}
+#svg_source_editor #tool_source_back #tool_source_save{display:block;position:absolute;right:0}
+#svg_source_editor #tool_source_back #tool_source_cancel{display:block;position:absolute;left:0}
+button.cancel,input.Cancel,input.cancel,input.jGraduate_Cancel,button.cancel{-webkit-appearance:none;background-color:#999;box-shadow:0 0 1px rgba(0,0,0,0.5);margin:0}
+#shape_buttons{overflow:auto;top:0;bottom:0;left:110px;right:0;position:absolute;vertical-align:top}
+#shape_cats{min-width:110px;display:block;position:absolute;left:0;top:0;height:300px;background:#eee;border-radius:3px 0 0 3px;z-index:2}
+#shape_cats>div{line-height:1em;padding:0 .5em;border-bottom:1px solid #ddd;background:#e8e8e8;color:#444;height:26px;line-height:26px}
+#shape_cats>div:first-child{border-radius:3px 0 0 0}
+#shape_cats>div:last-child{border-radius:0 0 0 3px}
+#shape_cats div:hover{background:#efefef;color:#000}
+#shape_cats div.current{font-weight:bold;background:#3f3f3c;color:#fff;position:relative}
+#shape_cats div.current:after{content:'';position:absolute;right:-26px;top:0;border:solid transparent 13px;border-left-color:#3f3f3c}
+.toolbar_button button .svg_icon{display:none}
+#dialog_box{display:none}
+#dialog_box_overlay{background:black;opacity:.5;height:100%;left:0;position:absolute;top:0;width:100%;z-index:6}
+#dialog_content{height:95px;margin:10px 10px 5px 10px;overflow:auto;text-align:left;font-size:13px}
+#dialog_buttons input:last-child{background:#999!important;position:absolute;left:10px;bottom:10px}
+#dialog_buttons input:first-child{position:absolute;right:10px;bottom:10px}
+#dialog_content.prompt{height:75px}
+#dialog_content p{margin:10px;line-height:1.3em}
+#dialog_container{position:absolute;left:50%;top:50%;width:300px;margin-left:-150px;height:150px;margin-top:-80px;position:fixed;z-index:50001;background:#fff}
+#dialog_container,#dialog_content{border-radius:3px}
+#dialog_buttons input[type=text]{width:90%;display:block;margin:0 0 5px 11px}
+#dialog_buttons input[type=button]{margin:0 1em}
+.invisible{visibility:none}
+.ui-slider{position:relative;text-align:left}
+.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}
+.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0}
+.ui-slider-horizontal{height:.8em}
+.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}
+.ui-slider-horizontal .ui-slider-range{top:0;height:100%}
+.ui-slider-horizontal .ui-slider-range-min{left:0}
+.ui-slider-horizontal .ui-slider-range-max{right:0}
+.ui-slider-vertical{width:.8em;height:100px}
+.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}
+.ui-slider-vertical .ui-slider-range{left:0;width:100%}
+.ui-slider-vertical .ui-slider-range-min{bottom:0}
+.ui-slider-vertical .ui-slider-range-max{top:0}
+.ui-slider{background:#3f3f3c;border-radius:10px}
+.ui-slider-handle{box-shadow:0 3px 3px rgba(0,0,0,0.3);border-radius:30px;background:#fff;background-image:-ms-linear-gradient(top,#ccc 0,#fff 100%);background-image:-moz-linear-gradient(top,#ccc 0,#fff 100%);background-image:-o-linear-gradient(top,#ccc 0,#fff 100%);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#ccc),color-stop(1,#fff));background-image:-webkit-linear-gradient(top,#ccc 0,#fff 100%);background-image:linear-gradient(top,#ccc 0,#fff 100%)}
+.ui-slider-handle:focus{outline:0}
+#shape_buttons{background:#fff;border-radius:0 3px 3px 0;padding:10px}
+.tools_flyout .tool_button,.tools_flyout .tool_flyout{background:#fff;width:40px;height:40px;margin:5px;border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;border-width:0}
+.contextMenu{position:absolute;z-index:99999;border:solid 1px rgba(0,0,0,.33);background:rgba(255,255,255,.95);padding:5px 0;margin:0;display:none;font:12px/15px 'Lucida Sans','Lucida Grande',Helvetica,Verdana,sans-serif;border-radius:5px;-moz-border-radius:5px;-moz-box-shadow:2px 5px 10px rgba(0,0,0,.3);-webkit-box-shadow:2px 5px 10px rgba(0,0,0,.3);box-shadow:2px 5px 10px rgba(0,0,0,.3)}
+.touch .contextMenu{border:solid 5px rgba(0,0,0,.7);padding:0;margin:0 0 0 20px;font:18px/24px sans-serif;border-radius:5px;-webkit-box-shadow:2px 5px 20px 3px #000;box-shadow:2px 5px 20px rgba(0,0,0,0.5)}
+.touch .contextMenu:after{content:'';width:0;height:0;border:solid transparent 10px;border-right-color:rgba(0,0,0,.7);position:absolute;top:50%;left:-25px;margin-top:-10px;z-index:1000}
+.contextMenu LI{list-style:none;padding:0;margin:0}
+.contextMenu .shortcut{width:115px;text-align:right;float:right}
+.touch .contextMenu .shortcut{display:none}
+.touch .shortcut{display:none}
+.contextMenu A{-moz-user-select:none;-webkit-user-select:none;color:#222;text-decoration:none;display:block;line-height:20px;height:20px;background-position:6px center;background-repeat:no-repeat;outline:0;padding:0 15px 1px 20px}
+.touch .contextMenu A{padding:0 15px;border-bottom:#;font-weight:bold;border-top:solid 1px #e3e3e3;height:40px;line-height:40px;min-width:200px}
+.contextMenu LI.hover A{background-color:#2e5dea;color:white;cursor:default}
+.contextMenu LI.disabled A{color:#999}
+.touch .contextMenu LI.disabled A{display:none}
+.contextMenu LI.hover.disabled A{background-color:transparent}
+.contextMenu LI.separator{border-top:solid 1px #e3e3e3;padding-top:5px;margin-top:5px}
+.touch .contextMenu LI.separator{border-top:0;margin:0;padding:0}
+#menu{display:none;position:absolute;top:0;left:0;right:0;height:30px;background:#000;z-index:10;color:#fff}
+#workarea.rect,#workarea.line,#workarea.ellipse,#workarea.path,#workarea.shapelib{cursor:crosshair}
+#workarea.text{cursor:text}
+#workarea.eyedropper{cursor:url(../images/eyedropper.png) 0 16,crosshair}
+#workarea.fhpath{cursor:url(../images/pencil_cursor.png) 0 20,crosshair}
+#workarea.rotate *{cursor:url(../images/rotate.png) 12 12,auto}
+#workarea.select text,#workarea.multiselect text{cursor:default}
+#workarea.n-resize *{cursor:n-resize!important}
+#workarea.e-resize *{cursor:e-resize!important}
+#workarea.w-resize *{cursor:w-resize!important}
+#workarea.s-resize *{cursor:s-resize!important}
+#workarea.ne-resize *{cursor:ne-resize!important}
+#workarea.se-resize *{cursor:se-resize!important}
+#workarea.nw-resize *{cursor:nw-resize!important}
+#workarea.sw-resize *{cursor:sw-resize!important}
+#workarea.copy{cursor:copy}
+#workarea.zoom{cursor:crosshair;cursor:-moz-zoom-in;cursor:-webkit-zoom-in}
+#workarea.zoom.out{cursor:crosshair;cursor:-moz-zoom-out;cursor:-webkit-zoom-out}
+#selectorRubberBand{shape-rendering:crispEdges}
+.clearfix:before,.clearfix:after{content:"";display:table}
+.clearfix:after{clear:both}
+.clearfix{*zoom:1}
+#group_title{display:none}
+#base_unit_container{display:none;position:absolute;z-index:20}
+.draginput{background:#3f3f3c;border-radius:3px;-webkit-font-smoothing:antialiased;width:70px;height:70px;display:block;position:relative;float:left;margin:0 5px 5px 0}
+.draginput .caret{border:solid transparent 5px;border-top-color:#999;position:absolute;width:0;height:0;right:5px;margin-top:-2px;top:50%}
+.draginput label{margin:28px 10px 0 5px;font-size:14px;color:white;font-weight:bold;font-family:sans-serif}
+.draginput label#resolution_label,.draginput label#seg_type_label{font:bold 12px/110% sans-serif;position:absolute;left:auto;right:10px;z-index:0;text-align:right}
+.draginput label#seg_type_label{margin-top:40px}
+.draginput label#seg_type_label .caret{top:66%}
+.draginput label#resolution_label .pull{position:relative;left:-15px}
+.draginput label#resolution_label span{right:-13px;left:auto;font-size:16px;top:2px;font-weight:bold;color:white}
+.touch .draginput.active:after{content:attr(data-value);display:block;position:absolute;background:#fff;font-size:16px;top:0;width:30px;left:-50px;padding:0 5px;color:#333;z-index:10;font-family:sans-serif;font-weight:bold;text-align:right;padding-right:10px;height:20px;line-height:20px;letter-spacing:-1px}
+.touch .draginput.active:before{content:'';height:0;width:0;position:absolute;top:5px;left:-5px;border:solid transparent 5px;border-left-color:#fff}
+.draginput input{border:0;background:transparent;font:24px/normal sans-serif;text-align:center;color:#4f80ff;padding:30px 0 16px;width:100%;height:24px;position:relative;z-index:2}
+.draginput.twocol{width:145px}
+#tool_font_family .caret{right:40px;top:55%}
+#tool_font_family select{width:110px}
+#tool_bold,#tool_italic{font:bold 20px/35px serif;text-align:center;position:absolute;padding:0;color:#ccc;background:transparent;border:0;width:35px;height:35px;margin:0;top:0;right:0}
+#tool_italic{border-top:solid #2f2f2c 2px;top:35px;font-weight:bold;font-style:italic;font-size:24px}
+#tool_bold:hover,#tool_italic:hover{color:#fff}
+#tool_bold.active,#tool_italic.active{color:#50a0ff}
+#preview_font{font-size:20px;color:#fff;height:70px;line-height:75px;padding:0 0 0 10px;white-space:nowrap;width:100px;overflow:hidden;border-right:solid #2f2f2c 2px;position:relative}
+#preview_font:after{content:'';position:absolute;right:0;top:3px;bottom:3px;width:15px;border-right:solid #3f3f3c 10px;background:transparent url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAxIDEiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxsaW5lYXJHcmFkaWVudCBpZD0iZzU4MCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIwJSIgeTE9IjAlIiB4Mj0iMTAwJSIgeTI9IjAlIj48c3RvcCBzdG9wLWNvbG9yPSIjM2YzZjNjIiBzdG9wLW9wYWNpdHk9IjAiIG9mZnNldD0iMCIvPjxzdG9wIHN0b3AtY29sb3I9IiMzZjNmM2MiIG9mZnNldD0iMC43Ii8+PC9saW5lYXJHcmFkaWVudD48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBmaWxsPSJ1cmwoI2c1ODApIiAvPjwvc3ZnPg==)}
+.draginput input,.draginput input:hover,.draginput input:active{cursor:url(../images/drag.png),move;cursor:-webkit-grab;cursor:-moz-grab}
+.draginput input[type="checkbox"],.draginput input[type="checkbox"]:hover,.draginput input[type="checkbox"]:active{cursor:pointer}
+.draginput.checkbox{cursor:pointer}
+.draginput.active input,.draginput.active input:hover,.draginput.active input:active{cursor:url(../images/dragging.png),move;cursor:-webkit-grabbing;cursor:-moz-grabbing}
+.draginput span{font:11px/130% sans-serif;color:#ccc;display:block;position:absolute;top:5px;left:5px;text-align:left}
+.draginput.error{background:#900}
+.draginput.error input{color:#fff}
+.draginput.stroke_tool{text-align:center}
+.draginput select{-webkit-appearance:none;opacity:0;display:block;position:absolute;height:100%;width:100%;margin:0;z-index:1;top:0;left:0}
+.draginput_cursor{position:absolute;top:50%;width:100%;border-top:solid rgba(50,100,200,0.25) 3px;margin-top:-2px;z-index:0}
+.draginput input[readonly=readonly]{-webkit-appearance:none;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
+.draginput input:focus{background:#50a0ff;color:#fff;outline:0;box-shadow:0 0 5px 2px #50a0ff}
+.draginput input:focus+span{z-index:10;color:#fff}
+.draginput .push_bottom{bottom:0;position:absolute}
+#zoom_label{height:20px;background:transparent;cursor:default!important;width:auto;padding:0 10px;margin:0}
+#zoom_panel{padding:9px 0;right:175px;position:absolute}
+#zoom_label img,#zoom_label svg{width:16px;height:16px}
+#logo svg{pointer-events:none}
+#zoomLabel{width:16px;height:16px;cursor:pointer;background:#ccc}
+#zoomLabel:after{content:'';position:absolute;border-left:solid #2f2f2c 1px;left:0;height:16px}
+#zoom_label input{color:#ccc;font-size:13px;height:auto;width:auto;padding:0;cursor:default;position:static}
+#zoom_label span{top:0;left:0}
+body.dragging *{cursor:url(../images/dragging.png),move;cursor:-webkit-grabbing;cursor:-moz-grabbing}
+body.drag *{cursor:url(../images/dragging.png),move;cursor:-webkit-grabbing;cursor:-moz-grabbing}
+input[readonly=readonly]:focus{box-shadow:none}
+#color_canvas_tools,#fill_bg,#stroke_bg{background:#fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMAQMAAABsu86kAAAAA3NCSVQICAjb4U/gAAAABlBMVEXu7u7///8o06qaAAAACXBIWXMAAAsSAAALEgHS3X78AAAAFXRFWHRDcmVhdGlvbiBUaW1lADcvMjIvMTL7FNdCAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M1cbXjNgAAABFJREFUCJljYP7AgIb+MKAhAM8/C5vWL6zSAAAAAElFTkSuQmCC) top left repeat}
+#color_canvas_tools{width:60px;height:40px;margin:23px 5px 5px 5px;position:relative;overflow:hidden}
+#color_canvas_tools{display:block}
+#tool_angle_indicator{width:50px;height:50px;border-radius:50px;background:rgba(255,255,255,0.05);position:absolute;bottom:2px;left:10px}
+#tool_angle_indicator_cursor{width:4px;height:25px;border-top:solid #50a0ff 3px;position:absolute;margin:0 0 0 23px;-webkit-transform-origin:50% 0;-moz-transform-origin:50% 0;-o-transform-origin:50% 0;-ms-transform-origin:50% 0;transform-origin:50% 0}
+#stroke_style_label{font-size:30px;margin-top:33px;letter-spacing:-1px}
+.stroke_tool .caret{top:60%}
+#tool_align_relative{position:absolute;top:-5px;left:0;right:20px;display:block}
+#tool_align_relative select{width:100%;display:block}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/svgedit.compiled.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/svgedit.compiled.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/svgedit.compiled.js	(revision 29468)
@@ -0,0 +1,691 @@
+function touchHandler(a){var s=a.changedTouches,g=s[0],b="";switch(a.type){case "touchstart":b="mousedown";break;case "touchmove":b="mousemove";break;case "touchend":b="mouseup";break;default:return}var p=document.createEvent("MouseEvent");p.initMouseEvent(b,true,true,window,1,g.screenX,g.screenY,g.clientX,g.clientY,false,false,false,false,0,null);if(s.length<2){g.target.dispatchEvent(p);a.preventDefault()}};(function(a){function s(g){if(typeof g.data==="string"){var b=g.handler,p=g.data.toLowerCase().split(" ");g.handler=function(w){if(!(this!==w.target&&(/textarea|select/i.test(w.target.nodeName)||w.target.type==="text"))){var c=w.type!=="keypress"&&a.hotkeys.specialKeys[w.which],f=String.fromCharCode(w.which).toLowerCase(),d="",n={};if(w.altKey&&c!=="alt")d+="alt+";if(w.ctrlKey&&c!=="ctrl")d+="ctrl+";if(w.metaKey&&!w.ctrlKey&&c!=="meta")d+="meta+";if(w.shiftKey&&c!=="shift")d+="shift+";if(c)n[d+c]=
+true;else{n[d+f]=true;n[d+a.hotkeys.shiftNums[f]]=true;if(d==="shift+")n[a.hotkeys.shiftNums[f]]=true}c=0;for(f=p.length;c<f;c++)if(n[p[c]])return b.apply(this,arguments)}}}}a.hotkeys={version:"0.8",specialKeys:{8:"backspace",9:"tab",13:"return",16:"shift",17:"ctrl",18:"alt",19:"pause",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"insert",46:"del",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9",
+106:"*",107:"+",109:"-",110:".",111:"/",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12",144:"numlock",145:"scroll",191:"/",224:"meta",219:"[",221:"]"},shiftNums:{"`":"~","1":"!","2":"@","3":"#","4":"$","5":"%","6":"^","7":"&","8":"*","9":"(","0":")","-":"_","=":"+",";":": ","'":'"',",":"<",".":">","/":"?","\\":"|"}};a.each(["keydown","keyup","keypress"],function(){a.event.special[this]={add:s}})})(jQuery);(function(a,s){function g(ca){return typeof ca==="string"}function b(ca){var U=d.call(arguments,1);return function(){return ca.apply(this,U.concat(d.call(arguments)))}}function p(ca,U,Z,na,pa){var ma;if(na!==f){U=Z.match(ca?/^([^#]*)\#?(.*)$/:/^([^#?]*)\??([^#]*)(#?.*)/);Z=U[3]||"";if(pa===2&&g(na))na=na.replace(ca?ea:V,"");else{ma=q(U[2]);na=g(na)?q[ca?ga:N](na):na;na=pa===2?na:pa===1?a.extend({},na,ma):a.extend({},ma,na);na=v(na);if(ca)na=na.replace(Ba,n)}ca=U[1]+(ca?"#":na||!U[1]?"?":"")+na+Z}else ca=
+U(Z!==f?Z:s[oa][Y]);return ca}function w(ca,U,Z){if(U===f||typeof U==="boolean"){Z=U;U=v[ca?ga:N]()}else U=g(U)?U.replace(ca?ea:V,""):U;return q(U,Z)}function c(ca,U,Z,na){if(!g(Z)&&typeof Z!=="object"){na=Z;Z=U;U=f}return this.each(function(){var pa=a(this),ma=U||S()[(this.nodeName||"").toLowerCase()]||"",la=ma&&pa.attr(ma)||"";pa.attr(ma,v[ca](la,Z,na))})}var f,d=Array.prototype.slice,n=decodeURIComponent,v=a.param,B,q,L,Q=a.bbq=a.bbq||{},K,I,S,R=a.event.special,N="querystring",ga="fragment",oa=
+"location",Y="href",V=/^.*\?|#.*$/g,ea=/^.*\#/,Ba,ja={};v[N]=b(p,0,function(ca){return ca.replace(/(?:^[^?#]*\?([^#]*).*$)?.*/,"$1")});v[ga]=B=b(p,1,function(ca){return ca.replace(/^[^#]*#?(.*)$/,"$1")});B.noEscape=function(ca){ca=ca||"";ca=a.map(ca.split(""),encodeURIComponent);Ba=RegExp(ca.join("|"),"g")};B.noEscape(",/");a.deparam=q=function(ca,U){var Z={},na={"true":true,"false":false,"null":null};a.each(ca.replace(/\+/g," ").split("&"),function(pa,ma){var la=ma.split("="),ya=n(la[0]),za=Z,Ja=
+0,Ia=ya.split("]["),Ha=Ia.length-1;if(/\[/.test(Ia[0])&&/\]$/.test(Ia[Ha])){Ia[Ha]=Ia[Ha].replace(/\]$/,"");Ia=Ia.shift().split("[").concat(Ia);Ha=Ia.length-1}else Ha=0;if(la.length===2){la=n(la[1]);if(U)la=la&&!isNaN(la)?+la:la==="undefined"?f:na[la]!==f?na[la]:la;if(Ha)for(;Ja<=Ha;Ja++){ya=Ia[Ja]===""?za.length:Ia[Ja];za=za[ya]=Ja<Ha?za[ya]||(Ia[Ja+1]&&isNaN(Ia[Ja+1])?{}:[]):la}else if(a.isArray(Z[ya]))Z[ya].push(la);else Z[ya]=Z[ya]!==f?[Z[ya],la]:la}else if(ya)Z[ya]=U?f:""});return Z};q[N]=b(w,
+0);q[ga]=L=b(w,1);a.elemUrlAttr||(a.elemUrlAttr=function(ca){return a.extend(ja,ca)})({a:Y,base:Y,iframe:"src",img:"src",input:"src",form:"action",link:Y,script:"src"});S=a.elemUrlAttr;a.fn[N]=b(c,N);a.fn[ga]=b(c,ga);Q.pushState=K=function(ca,U){if(g(ca)&&/^#/.test(ca)&&U===f)U=2;var Z=ca!==f;Z=B(s[oa][Y],Z?ca:{},Z?U:2);s[oa][Y]=Z+(/#/.test(Z)?"":"#")};Q.getState=I=function(ca,U){return ca===f||typeof ca==="boolean"?L(ca):L(U)[ca]};Q.removeState=function(ca){var U={};if(ca!==f){U=I();a.each(a.isArray(ca)?
+ca:arguments,function(Z,na){delete U[na]})}K(U,2)};R.hashchange=a.extend(R.hashchange,{add:function(ca){function U(na){var pa=na[ga]=B();na.getState=function(ma,la){return ma===f||typeof ma==="boolean"?q(pa,ma):q(pa,la)[ma]};Z.apply(this,arguments)}var Z;if(a.isFunction(ca)){Z=ca;return U}else{Z=ca.handler;ca.handler=U}}})})(jQuery,this);
+(function(a,s,g){function b(B){B=B||s[c][f];return B.replace(/^[^#]*#?(.*)$/,"$1")}var p,w=a.event.special,c="location",f="href",d=document.documentMode,n=a.browser.msie&&(d===g||d<8),v="onhashchange"in s&&!n;a.hashchangeDelay=100;w.hashchange=a.extend(w.hashchange,{setup:function(){if(v)return false;a(p.start)},teardown:function(){if(v)return false;a(p.stop)}});p=function(){function B(){K=I=function(S){return S};if(n){Q=a('<iframe src="javascript:0"/>').hide().insertAfter("body")[0].contentWindow;
+I=function(){return b(Q.document[c][f])};K=function(S,R){if(S!==R){var N=Q.document;N.open().close();N[c].hash="#"+S}};K(b())}}var q={},L,Q,K,I;q.start=function(){if(!L){var S=b();K||B();(function R(){var N=b(),ga=I(S);if(N!==S){K(S=N,ga);a(s).trigger("hashchange")}else if(ga!==S)s[c][f]=s[c][f].replace(/#.*/,"")+"#"+ga;L=setTimeout(R,a.hashchangeDelay)})()}};q.stop=function(){if(!Q){L&&clearTimeout(L);L=0}};return q}()})(jQuery,this);(function(a){var s={},g;a.svgIcons=function(b,p){function w(ca,U){if(ca!=="ajax"){if(S)return;var Z=(Q=Y[0].contentDocument)&&Q.getElementById("svg_eof");if(!Z&&!(U&&Z)){R++;if(R<50)setTimeout(w,20);else{f();S=true}return}S=true}L=a(Q.firstChild).children();if(p.no_img)setTimeout(function(){I||c()},500);else{Z=oa+"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNzUiIGhlaWdodD0iMjc1Ij48L3N2Zz4%3D";K=a(new Image).attr({src:Z,width:0,height:0}).appendTo("body").load(function(){c(true)}).error(function(){c()})}}
+function c(ca,U){if(!I){if(p.no_img)ca=false;if(ca){var Z=a(document.createElement("div"));Z.hide().appendTo("body")}if(U){var na=p.fallback_path?p.fallback_path:"";a.each(U,function(Ha,Ma){a("#"+Ha);var Da=a(new Image).attr({"class":"svg_icon",src:na+Ma,width:B,height:q,alt:"icon"});ja(Da,Ha)})}else for(var pa=L.length,ma=0;ma<pa;ma++){var la=L[ma],ya=la.id;if(ya==="svg_eof")break;a("#"+ya);la=la.getElementsByTagNameNS(n,"svg")[0];var za=document.createElementNS(n,"svg");za.setAttributeNS(n,"viewBox",
+[0,0,B,q].join(" "));var Ja=la.getAttribute("width"),Ia=la.getAttribute("height");la.removeAttribute("width");la.removeAttribute("height");la.getAttribute("viewBox")||la.setAttribute("viewBox",[0,0,Ja,Ia].join(" "));za.setAttribute("xmlns",n);za.setAttribute("width",B);za.setAttribute("height",q);za.setAttribute("xmlns:xlink",v);za.setAttribute("class","svg_icon");ga||(la=la.cloneNode(true));za.appendChild(la);if(ca){ga||za.cloneNode(true);Z.empty().append(za);la=oa+d(Z.html());la=a(new Image).attr({"class":"svg_icon",
+src:la})}else la=g(a(za),ma);ja(la,ya)}p.placement&&a.each(p.placement,function(Ha,Ma){s[Ma]&&a(Ha).each(function(Da){var wa=s[Ma].clone();if(Da>0&&!ca)wa=g(wa,Da,true);Ba(a(this),wa,Ma)})});if(!U){ca&&Z.remove();Y&&Y.remove();K&&K.remove()}p.resize&&a.resizeSvgIcons(p.resize);I=true;p.callback&&p.callback(s)}}function f(){if(b.indexOf(".svgz")!=-1){var ca=b.replace(".svgz",".svg");window.console&&console.log(".svgz failed, trying with .svg");a.svgIcons(ca,p)}else p.fallback&&c(false,p.fallback)}
+function d(ca){if(window.btoa)return window.btoa(ca);var U=Array(Math.floor((ca.length+2)/3)*4),Z,na,pa,ma,la,ya,za=0,Ja=0;do{Z=ca.charCodeAt(za++);na=ca.charCodeAt(za++);pa=ca.charCodeAt(za++);ma=Z>>2;Z=(Z&3)<<4|na>>4;la=(na&15)<<2|pa>>6;ya=pa&63;if(isNaN(na))la=ya=64;else if(isNaN(pa))ya=64;U[Ja++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(ma);U[Ja++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(Z);U[Ja++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(la);
+U[Ja++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(ya)}while(za<ca.length);return U.join("")}var n="http://www.w3.org/2000/svg",v="http://www.w3.org/1999/xlink",B=p.w?p.w:24,q=p.h?p.h:24,L,Q,K,I=false,S=false,R=0,N=navigator.userAgent,ga=!!window.opera;N.indexOf("Safari/")>-1&&N.indexOf("Chrome/");var oa="data:image/svg+xml;charset=utf-8;base64,";if(p.svgz){var Y=a('<object data="'+b+'" type=image/svg+xml>').appendTo("body").hide();try{Q=Y[0].contentDocument;Y.load(w);
+w(0,true)}catch(V){f()}}else{var ea=new DOMParser;a.ajax({url:b,dataType:"string",success:function(ca){if(ca){Q=ea.parseFromString(ca,"text/xml");a(function(){w("ajax")})}else a(f)},error:function(ca){if(window.opera)a(function(){f()});else if(ca.responseText){Q=ea.parseFromString(ca.responseText,"text/xml");Q.childNodes.length||a(f);a(function(){w("ajax")})}else a(f)}})}var Ba=function(ca,U,Z,na){ga&&U.css("visibility","hidden");if(p.replace){na&&U.attr("id",Z);(Z=ca.attr("class"))&&U.attr("class",
+"svg_icon "+Z);ca.replaceWith(U)}else ca.append(U);ga&&setTimeout(function(){U.removeAttr("style")},1)},ja=function(ca,U){if(p.id_match===undefined||p.id_match!==false)Ba(holder,ca,U,true);s[U]=ca};g=function(ca,U){var Z=ca.find("defs");if(!Z.length)return ca;Z=ga?Z.find("*").filter(function(){return!!this.id}):Z.find("[id]");var na=ca[0].getElementsByTagName("*"),pa=na.length;Z.each(function(ma){var la=this.id;a(Q).find("#"+la);this.id=ma="x"+la+U+ma;la="url(#"+la+")";var ya="url(#"+ma+")";for(ma=
+0;ma<pa;ma++){var za=na[ma];za.getAttribute("fill")===la&&za.setAttribute("fill",ya);za.getAttribute("stroke")===la&&za.setAttribute("stroke",ya);za.getAttribute("filter")===la&&za.setAttribute("filter",ya)}});return ca}};a.getSvgIcon=function(b,p){var w=s[b];if(p&&w)w=g(w,0,true).clone(true);return w};a.resizeSvgIcons=function(b){var p=!a(".svg_icon:first").length;a.each(b,function(w,c){var f=a.isArray(c),d=f?c[0]:c,n=f?c[1]:c;if(p)w=w.replace(/\.svg_icon/g,"svg");a(w).each(function(){this.setAttribute("width",
+d);this.setAttribute("height",n);if(window.opera&&window.widget){this.parentNode.style.width=d+"px";this.parentNode.style.height=n+"px"}})})}})(jQuery);(function(){function a(b,p,w){b=document.createElementNS(s.svg,b);if(g)for(var c in p)b.setAttribute(c,p[c]);else for(c in p){var f=p[c],d=b[c];if(d&&d.constructor==="SVGLength")d.baseVal.value=f;else b.setAttribute(c,f)}w&&w.appendChild(b);return b}var s={svg:"http://www.w3.org/2000/svg",xlink:"http://www.w3.org/1999/xlink"};if(!window.console)window.console=new function(){this.log=function(){};this.dir=function(){}};$.jGraduate={Paint:function(b){b=b||{};this.alpha=isNaN(b.alpha)?100:b.alpha;if(b.copy){this.type=
+b.copy.type;this.alpha=b.copy.alpha;this.radialGradient=this.linearGradient=this.solidColor=null;switch(this.type){case "solidColor":this.solidColor=b.copy.solidColor;break;case "linearGradient":this.linearGradient=b.copy.linearGradient.cloneNode(true);break;case "radialGradient":this.radialGradient=b.copy.radialGradient.cloneNode(true)}}else if(b.linearGradient){this.type="linearGradient";this.radialGradient=this.solidColor=null;this.linearGradient=b.linearGradient.cloneNode(true)}else if(b.radialGradient){this.type=
+"radialGradient";this.linearGradient=this.solidColor=null;this.radialGradient=b.radialGradient.cloneNode(true)}else if(b.solidColor){this.type="solidColor";this.solidColor=b.solidColor}else{this.type="none";this.radialGradient=this.linearGradient=this.solidColor=null}}};jQuery.fn.jGraduateDefaults={paint:new $.jGraduate.Paint,window:{pickerTitle:"Drag markers to pick a paint"},images:{clientPath:"images/"},newstop:"inverse"};var g=navigator.userAgent.indexOf("Gecko/")>=0;jQuery.fn.jGraduate=function(b){var p=
+arguments;return this.each(function(){function w(ia,aa,ka,M,P){var da=P||a("stop",{"stop-color":aa,"stop-opacity":ka,offset:ia},ea);if(P){aa=P.getAttribute("stop-color");ka=P.getAttribute("stop-opacity");ia=P.getAttribute("offset")}else ea.appendChild(da);if(ka===null)ka=1;P=a("path",{d:"M-6.2,0.9c3.6-4,6.7-4.3,6.7-12.4c-0.2,7.9,3.1,8.8,6.5,12.4c3.5,3.8,2.9,9.6,0,12.3c-3.1,2.8-10.4,2.7-13.2,0C-9.6,9.9-9.4,4.4-6.2,0.9z",fill:"url(#jGraduate_trans)",transform:"translate("+(10+ia*ga)+", 26)"},kb);var Ea=
+a("path",{d:"M-6.2,0.9c3.6-4,6.7-4.3,6.7-12.4c-0.2,7.9,3.1,8.8,6.5,12.4c3.5,3.8,2.9,9.6,0,12.3c-3.1,2.8-10.4,2.7-13.2,0C-9.6,9.9-9.4,4.4-6.2,0.9z",fill:aa,"fill-opacity":ka,transform:"translate("+(10+ia*ga)+", 26)",stroke:"#000","stroke-width":1.5},kb);$(Ea).mousedown(function(Oa){c(this);Va=cb;S.mousemove(n).mouseup(f);ta=vb.offset();Oa.preventDefault();return false}).data("stop",da).data("bg",P).dblclick(function(){$("div.jGraduate_LightBox").show();for(var Oa=this,Wa=+da.getAttribute("stop-opacity")||
+1,Za=da.getAttribute("stop-color")||1,nb=(parseFloat(Wa)*255).toString(16);nb.length<2;)nb="0"+nb;aa=Za.substr(1)+nb;$("#"+q+"_jGraduate_stopPicker").css({left:100,bottom:15}).jPicker({window:{title:"Pick the start color and opacity for the gradient"},images:{clientPath:B.images.clientPath},color:{active:aa,alphaSupport:true}},function(Ra){Za=Ra.val("hex")?"#"+Ra.val("hex"):"none";Wa=Ra.val("a")!==null?Ra.val("a")/256:1;Oa.setAttribute("fill",Za);Oa.setAttribute("fill-opacity",Wa);da.setAttribute("stop-color",
+Za);da.setAttribute("stop-opacity",Wa);$("div.jGraduate_LightBox").hide();$("#"+q+"_jGraduate_stopPicker").hide()},null,function(){$("div.jGraduate_LightBox").hide();$("#"+q+"_jGraduate_stopPicker").hide()})});$(ea).find("stop").each(function(){var Oa=$(this);if(+this.getAttribute("offset")>ia){if(!aa){var Wa=this.getAttribute("stop-color"),Za=this.getAttribute("stop-opacity");da.setAttribute("stop-color",Wa);Ea.setAttribute("fill",Wa);da.setAttribute("stop-opacity",Za===null?1:Za);Ea.setAttribute("fill-opacity",
+Za===null?1:Za)}Oa.before(da);return false}});M&&c(Ea);return da}function c(ia){cb&&cb.setAttribute("stroke","#000");ia.setAttribute("stroke","blue");cb=ia;cb.parentNode.appendChild(cb)}function f(){S.unbind("mousemove",n);if(Fa.getAttribute("display")!=="none"){Fa.setAttribute("display","none");var ia=$(cb),aa=ia.data("stop");ia=ia.data("bg");$([cb,aa,ia]).remove()}Va=null}function d(){var ia=Sa?"rotate("+Sa+","+Ga+","+db+") ":"";$a===1&&Ka===1?ea.removeAttribute("gradientTransform"):ea.setAttribute("gradientTransform",
+ia+"translate("+-Ga*($a-1)+","+-db*(Ka-1)+") scale("+$a+","+Ka+")")}function n(ia){var aa=ia.pageX-ta.left;ia=ia.pageY-ta.top;aa=aa<10?10:aa>ga+10?ga+10:aa;var ka="translate("+aa+", 26)";if(ia<-60||ia>130){Fa.setAttribute("display","block");Fa.setAttribute("transform",ka)}else Fa.setAttribute("display","none");Va.setAttribute("transform",ka);$.data(Va,"bg").setAttribute("transform",ka);$.data(Va,"stop").setAttribute("offset",(aa-10)/ga);var M=0;$(ea).find("stop").each(function(){var P=this.getAttribute("offset"),
+da=$(this);if(P<M){da.prev().before(da);va=$(ea).find("stop")}M=P})}var v=$(this),B=$.extend(true,{},jQuery.fn.jGraduateDefaults,b),q=v.attr("id"),L="#"+v.attr("id")+" ";if(L){var Q=function(){switch(v.paint.type){case "radialGradient":v.paint.linearGradient=null;break;case "linearGradient":v.paint.radialGradient=null;break;case "solidColor":v.paint.radialGradient=v.paint.linearGradient=null}$.isFunction(v.okCallback)&&v.okCallback(v.paint);v.hide()},K=function(){$.isFunction(v.cancelCallback)&&v.cancelCallback();
+v.hide()};$.extend(true,v,{paint:new $.jGraduate.Paint({copy:B.paint}),okCallback:$.isFunction(p[1])&&p[1]||null,cancelCallback:$.isFunction(p[2])&&p[2]||null});v.position();var I=null,S=$(window);if(v.paint.type=="none")v.paint=$.jGraduate.Paint({solidColor:"ffffff"});v.addClass("jGraduate_Picker");v.html('<ul class="jGraduate_tabs"><li class="jGraduate_tab_color jGraduate_tab_current" data-type="col">Solid Color</li><li class="jGraduate_tab_lingrad" data-type="lg">Linear Gradient</li><li class="jGraduate_tab_radgrad" data-type="rg">Radial Gradient</li></ul><div class="jGraduate_colPick"></div><div class="jGraduate_gradPick"></div><div class="jGraduate_LightBox"></div><div id="'+
+q+'_jGraduate_stopPicker" class="jGraduate_stopPicker"></div>');var R=$(L+"> .jGraduate_colPick"),N=$(L+"> .jGraduate_gradPick");N.html('<div id="'+q+'_jGraduate_Swatch" class="jGraduate_Swatch"><h2 class="jGraduate_Title">'+B.window.pickerTitle+'</h2><div id="'+q+'_jGraduate_GradContainer" class="jGraduate_GradContainer"></div><div id="'+q+'_jGraduate_StopSlider" class="jGraduate_StopSlider"></div></div><div class="jGraduate_Form jGraduate_Points jGraduate_lg_field"><div class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">Begin Point</label><div class="jGraduate_Form_Section"><label>x:</label><input type="text" id="'+
+q+'_jGraduate_x1" size="3" title="Enter starting x value between 0.0 and 1.0"/><label> y:</label><input type="text" id="'+q+'_jGraduate_y1" size="3" title="Enter starting y value between 0.0 and 1.0"/></div></div><div class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">End Point</label><div class="jGraduate_Form_Section"><label>x:</label><input type="text" id="'+q+'_jGraduate_x2" size="3" title="Enter ending x value between 0.0 and 1.0"/><label> y:</label><input type="text" id="'+
+q+'_jGraduate_y2" size="3" title="Enter ending y value between 0.0 and 1.0"/></div></div></div><div class="jGraduate_Form jGraduate_Points jGraduate_rg_field"><div class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">Center Point</label><div class="jGraduate_Form_Section"><label>x:</label><input type="text" id="'+q+'_jGraduate_cx" size="3" title="Enter x value between 0.0 and 1.0"/><label> y:</label><input type="text" id="'+q+'_jGraduate_cy" size="3" title="Enter y value between 0.0 and 1.0"/></div></div><div class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">Focal Point</label><div class="jGraduate_Form_Section"><label>Match center: <input type="checkbox" checked="checked" id="'+
+q+'_jGraduate_match_ctr"/></label><br/><label>x:</label><input type="text" id="'+q+'_jGraduate_fx" size="3" title="Enter x value between 0.0 and 1.0"/><label> y:</label><input type="text" id="'+q+'_jGraduate_fy" size="3" title="Enter y value between 0.0 and 1.0"/></div></div></div><div class="jGraduate_StopSection jGraduate_SpreadMethod"><label class="jGraduate_Form_Heading">Spread method</label><div class="jGraduate_Form_Section"><select class="jGraduate_spreadMethod"><option value=pad selected>Pad</option><option value=reflect>Reflect</option><option value=repeat>Repeat</option></select></div></div><div class="jGraduate_Form"><div class="jGraduate_Slider jGraduate_RadiusField jGraduate_rg_field"><label class="prelabel">Radius:</label><div id="'+
+q+'_jGraduate_Radius" class="jGraduate_SliderBar jGraduate_Radius" title="Click to set radius"><img id="'+q+'_jGraduate_RadiusArrows" class="jGraduate_RadiusArrows" src="'+B.images.clientPath+'rangearrows2.gif"></div><label><input type="text" id="'+q+'_jGraduate_RadiusInput" size="3" value="100"/>%</label></div><div class="jGraduate_Slider jGraduate_EllipField jGraduate_rg_field"><label class="prelabel">Ellip:</label><div id="'+q+'_jGraduate_Ellip" class="jGraduate_SliderBar jGraduate_Ellip" title="Click to set Ellip"><img id="'+
+q+'_jGraduate_EllipArrows" class="jGraduate_EllipArrows" src="'+B.images.clientPath+'rangearrows2.gif"></div><label><input type="text" id="'+q+'_jGraduate_EllipInput" size="3" value="0"/>%</label></div><div class="jGraduate_Slider jGraduate_AngleField jGraduate_rg_field"><label class="prelabel">Angle:</label><div id="'+q+'_jGraduate_Angle" class="jGraduate_SliderBar jGraduate_Angle" title="Click to set Angle"><img id="'+q+'_jGraduate_AngleArrows" class="jGraduate_AngleArrows" src="'+B.images.clientPath+
+'rangearrows2.gif"></div><label><input type="text" id="'+q+'_jGraduate_AngleInput" size="3" value="0"/>\u00ba&nbsp;</label></div><div class="jGraduate_Slider jGraduate_OpacField"><label class="prelabel">Opac:</label><div id="'+q+'_jGraduate_Opac" class="jGraduate_SliderBar jGraduate_Opac" title="Click to set Opac"><img id="'+q+'_jGraduate_OpacArrows" class="jGraduate_OpacArrows" src="'+B.images.clientPath+'rangearrows2.gif"></div><label><input type="text" id="'+q+'_jGraduate_OpacInput" size="3" value="100"/>%</label></div></div><div class="jGraduate_OkCancel"><input type="button" id="'+
+q+'_jGraduate_Ok" class="jGraduate_Ok" value="OK"/><input type="button" id="'+q+'_jGraduate_Cancel" class="jGraduate_Cancel" value="Cancel"/></div>');var ga=256,oa=ga-0,Y=ga-0,V,ea,Ba,ja={};$(".jGraduate_SliderBar").width(145);var ca=$("#"+q+"_jGraduate_GradContainer")[0],U=a("svg",{id:q+"_jgraduate_svg",width:ga,height:ga,xmlns:s.svg},ca);V=V||v.paint.type;var Z=ea=v.paint[V],na=v.paint.alpha,pa=V==="solidColor";switch(V){case "solidColor":case "linearGradient":if(!pa){ea.id=q+"_lg_jgraduate_grad";
+Z=ea=U.appendChild(ea)}a("radialGradient",{id:q+"_rg_jgraduate_grad"},U);if(V==="linearGradient")break;case "radialGradient":if(!pa){ea.id=q+"_rg_jgraduate_grad";Z=ea=U.appendChild(ea)}a("linearGradient",{id:q+"_lg_jgraduate_grad"},U)}if(pa){Z=ea=$("#"+q+"_lg_jgraduate_grad")[0];I=v.paint[V];w(0,"#"+I,1);var ma=typeof B.newstop;if(ma==="string")switch(B.newstop){case "same":w(1,"#"+I,1);break;case "inverse":ma="";for(var la=0;la<6;la+=2){I.substr(la,2);var ya=(255-parseInt(I.substr(la,2),16)).toString(16);
+if(ya.length<2)ya=0+ya;ma+=ya}w(1,"#"+ma,1);break;case "white":w(1,"#ffffff",1);break;case "black":w(1,"#000000",1)}else if(ma==="object")w(1,B.newstop.color||"#"+I,"opac"in B.newstop?B.newstop.opac:1)}I=parseFloat(Z.getAttribute("x1")||0);ma=parseFloat(Z.getAttribute("y1")||0);la=parseFloat(Z.getAttribute("x2")||1);ya=parseFloat(Z.getAttribute("y2")||0);var za=parseFloat(Z.getAttribute("cx")||0.5),Ja=parseFloat(Z.getAttribute("cy")||0.5),Ia=parseFloat(Z.getAttribute("fx")||za),Ha=parseFloat(Z.getAttribute("fy")||
+Ja);Ba=a("rect",{id:q+"_jgraduate_rect",x:0,y:0,width:oa,height:Y,fill:"url(#"+q+"_jgraduate_grad)","fill-opacity":na/100},U);var Ma=$("<div/>").attr({"class":"grad_coord jGraduate_lg_field",title:"Begin Stop"}).text(1).css({top:ma*ga,left:I*ga}).data("coord","start").appendTo(ca),Da=Ma.clone().text(2).css({top:ya*ga,left:la*ga}).attr("title","End stop").data("coord","end").appendTo(ca),wa=$("<div/>").attr({"class":"grad_coord jGraduate_rg_field",title:"Center stop"}).text("C").css({top:Ja*ga,left:za*
+ga}).data("coord","center").appendTo(ca),ra=wa.clone().text("F").css({top:Ha*ga,left:Ia*ga,display:"none"}).attr("title","Focus point").data("coord","focus").appendTo(ca);ra[0].id=q+"_jGraduate_focusCoord";$(L+" .grad_coord");$.each(["x1","y1","x2","y2","cx","cy","fx","fy"],function(ia,aa){var ka=ea.getAttribute(aa),M=isNaN(aa[1]);ka||(ka=M?"0.5":aa==="x2"?"1.0":"0.0");ja[aa]=$("#"+q+"_jGraduate_"+aa).val(ka).change(function(){if(isNaN(parseFloat(this.value))||this.value<0)this.value=0;else if(this.value>
+1)this.value=1;if(!(aa[0]==="f"&&!eb))if(M&&V==="radialGradient"||!M&&V==="linearGradient")ea.setAttribute(aa,this.value);var P=M?aa[0]==="c"?wa:ra:aa[1]==="1"?Ma:Da,da=aa.indexOf("x")>=0?"left":"top";P.css(da,this.value*ga)}).change()});var va,kb,vb=$("#"+q+"_jGraduate_StopSlider"),cb,Ta,Va,Fa=a("path",{d:"m9.75,-6l-19.5,19.5m0,-19.5l19.5,19.5",fill:"none",stroke:"#D00","stroke-width":5,display:"none"},Ta),ta,$a=1,Ka=1,Sa=0,Ga=za,db=Ja;Ta=a("svg",{width:"100%",height:45},vb[0]);ca=a("pattern",{width:16,
+height:16,patternUnits:"userSpaceOnUse",id:"jGraduate_trans"},Ta);a("image",{width:16,height:16},ca).setAttributeNS(s.xlink,"xlink:href",B.images.clientPath+"map-opacity.png");$(Ta).on("click touchstart",function(ia){ta=vb.offset();if(ia.target.tagName!=="path"){var aa=ia.pageX-ta.left-8;aa=aa<10?10:aa>ga+10?ga+10:aa;w(aa/ga,0,0,true);ia.stopPropagation()}});$(Ta).mouseover(function(){Ta.appendChild(Fa)});kb=a("g",{},Ta);a("line",{x1:10,y1:15,x2:ga+10,y2:15,"stroke-width":2,stroke:"#000"},Ta);var lb=
+N.find(".jGraduate_spreadMethod").change(function(){ea.setAttribute("spreadMethod",$(this).val())}),Ua=null,Xa=function(ia){var aa=ia.pageX-hb.left,ka=ia.pageY-hb.top;aa=aa<0?0:aa>ga?ga:aa;ka=ka<0?0:ka>ga?ga:ka;Ua.css("left",aa).css("top",ka);aa=aa/oa;ka=ka/Y;var M=Ua.data("coord"),P=ea;switch(M){case "start":ja.x1.val(aa);ja.y1.val(ka);P.setAttribute("x1",aa);P.setAttribute("y1",ka);break;case "end":ja.x2.val(aa);ja.y2.val(ka);P.setAttribute("x2",aa);P.setAttribute("y2",ka);break;case "center":ja.cx.val(aa);
+ja.cy.val(ka);P.setAttribute("cx",aa);P.setAttribute("cy",ka);Ga=aa;db=ka;d();break;case "focus":ja.fx.val(aa);ja.fy.val(ka);P.setAttribute("fx",aa);P.setAttribute("fy",ka);d()}ia.preventDefault()},wb=function(){Ua=null;S.unbind("mousemove",Xa).unbind("mouseup",wb)};va=ea.getElementsByTagNameNS(s.svg,"stop");if(sa<2){for(;sa<2;){ea.appendChild(document.createElementNS(s.svg,"stop"));++sa}va=ea.getElementsByTagNameNS(s.svg,"stop")}var sa=va.length;for(la=0;la<sa;la++)w(0,0,0,0,va[la]);lb.val(ea.getAttribute("spreadMethod")||
+"pad");var hb,eb=false;Ba.setAttribute("fill-opacity",na/100);$("#"+q+" div.grad_coord").mousedown(function(ia){ia.preventDefault();Ua=$(this);Ua.offset();hb=Ua.parent().offset();S.mousemove(Xa).mouseup(wb)});$("#"+q+"_jGraduate_Ok").bind("click touchstart",function(){v.paint.type=V;v.paint[V]=ea.cloneNode(true);v.paint.solidColor=null;Q()});$("#"+q+"_jGraduate_Cancel").bind("click touchstart",function(){K()});if(V==="radialGradient")if(eb)ra.show();else{ra.hide();ja.fx.val("");ja.fy.val("")}$("#"+
+q+"_jGraduate_match_ctr")[0].checked=!eb;var sb,ib;$("#"+q+"_jGraduate_match_ctr").change(function(){eb=!this.checked;ra.toggle(eb);ja.fx.val("");ja.fy.val("");var ia=ea;if(eb){var aa=sb||0.5,ka=ib||0.5;ia.setAttribute("fx",aa);ia.setAttribute("fy",ka);ja.fx.val(aa);ja.fy.val(ka)}else{sb=ia.getAttribute("fx");ib=ia.getAttribute("fy");ia.removeAttribute("fx");ia.removeAttribute("fy")}});va=ea.getElementsByTagNameNS(s.svg,"stop");sa=va.length;if(sa<2){for(;sa<2;){ea.appendChild(document.createElementNS(s.svg,
+"stop"));++sa}va=ea.getElementsByTagNameNS(s.svg,"stop")}var ab;na=N=0;if(V==="radialGradient"){U=ea.gradientTransform.baseVal;if(U.numberOfItems===2){sa=U.getItem(0);U=U.getItem(1);if(sa.type===2&&U.type===3){sa=U.matrix;if(sa.a!==1)N=Math.round(-(1-sa.a)*100);else if(sa.d!==1)N=Math.round((1-sa.d)*100)}}else if(U.numberOfItems===3){ca=U.getItem(0);sa=U.getItem(1);U=U.getItem(2);if(ca.type===4&&sa.type===2&&U.type===3){na=Math.round(ca.angle);sa=U.matrix;if(sa.a!==1)N=Math.round(-(1-sa.a)*100);else if(sa.d!==
+1)N=Math.round((1-sa.d)*100)}}}N={radius:{handle:"#"+q+"_jGraduate_RadiusArrows",input:"#"+q+"_jGraduate_RadiusInput",val:(ea.getAttribute("r")||0.5)*100},opacity:{handle:"#"+q+"_jGraduate_OpacArrows",input:"#"+q+"_jGraduate_OpacInput",val:v.paint.alpha||100},ellip:{handle:"#"+q+"_jGraduate_EllipArrows",input:"#"+q+"_jGraduate_EllipInput",val:N},angle:{handle:"#"+q+"_jGraduate_AngleArrows",input:"#"+q+"_jGraduate_AngleInput",val:na}};$.each(N,function(ia,aa){var ka=$(aa.handle);ka.mousedown(function(M){var P=
+ka.parent();ab={type:ia,elem:ka,input:$(aa.input),parent:P,offset:P.offset()};S.mousemove(ob).mouseup(pb);M.preventDefault()});$(aa.input).val(aa.val).change(function(){var M=+this.value,P=0,da=V==="radialGradient";switch(ia){case "radius":da&&ea.setAttribute("r",M/100);P=Math.pow(M/100,0.4)/2*145;break;case "opacity":v.paint.alpha=M;Ba.setAttribute("fill-opacity",M/100);P=M*1.45;break;case "ellip":$a=Ka=1;if(M===0){P=72.5;break}if(M>99.5)M=99.5;if(M>0)Ka=1-M/100;else $a=-(M/100)-1;P=145*((M+100)/
+2)/100;da&&d();break;case "angle":Sa=M;P=Sa/180;P+=0.5;P*=145;da&&d()}if(P>145)P=145;else if(P<0)P=0;ka.css({"margin-left":P-5})}).change()});var ob=function(ia){var aa=ia.pageX-ab.offset.left-parseInt(ab.parent.css("border-left-width"));if(aa>145)aa=145;if(aa<=0)aa=0;var ka=aa-5;aa/=145;switch(ab.type){case "radius":aa=Math.pow(aa*2,2.5);if(aa>0.98&&aa<1.02)aa=1;if(aa<=0.01)aa=0.01;ea.setAttribute("r",aa);break;case "opacity":v.paint.alpha=parseInt(aa*100);Ba.setAttribute("fill-opacity",aa);break;
+case "ellip":Ka=$a=1;if(aa<0.5){aa/=0.5;$a=aa<=0?0.01:aa}else if(aa>0.5){aa/=0.5;aa=2-aa;Ka=aa<=0?0.01:aa}d();aa-=1;if(Ka===aa+1)aa=Math.abs(aa);break;case "angle":aa-=0.5;Sa=aa*=180;d();aa/=100}ab.elem.css({"margin-left":ka});aa=Math.round(aa*100);ab.input.val(aa);ia.preventDefault()},pb=function(){S.unbind("mousemove",ob).unbind("mouseup",pb);ab=null};for(N=(v.paint.alpha*255/100).toString(16);N.length<2;)N="0"+N;N=N.split(".")[0];I=v.paint.solidColor=="none"?"":v.paint.solidColor+N;pa||(I=va[0].getAttribute("stop-color"));
+$.extend($.fn.jPicker.defaults.window,{alphaSupport:true,effects:{type:"show",speed:0}});R.jPicker({window:{title:B.window.pickerTitle},images:{clientPath:B.images.clientPath},color:{active:I,alphaSupport:true}},function(ia){v.paint.type="solidColor";v.paint.alpha=ia.val("ahex")?Math.round(ia.val("a")/255*100):100;v.paint.solidColor=ia.val("hex")?ia.val("hex"):"none";v.paint.radialGradient=null;Q()},null,function(){K()});var fb=$(L+" .jGraduate_tabs li");fb.on("click touchstart",function(){fb.removeClass("jGraduate_tab_current");
+$(this).addClass("jGraduate_tab_current");$(L+" > div").hide();var ia=$(this).attr("data-type");$(L+" .jGraduate_gradPick").show();if(ia==="rg"||ia==="lg"){$(".jGraduate_"+ia+"_field").show();$(".jGraduate_"+(ia==="lg"?"rg":"lg")+"_field").hide();$("#"+q+"_jgraduate_rect")[0].setAttribute("fill","url(#"+q+"_"+ia+"_jgraduate_grad)");V=ia==="lg"?"linearGradient":"radialGradient";$("#"+q+"_jGraduate_OpacInput").val(v.paint.alpha).change();var aa=$("#"+q+"_"+ia+"_jgraduate_grad")[0];if(ea!==aa){var ka=
+$(ea).find("stop");$(aa).empty().append(ka);ea=aa;aa=lb.val();ea.setAttribute("spreadMethod",aa)}eb=ia==="rg"&&ea.getAttribute("fx")!=null&&!(za==Ia&&Ja==Ha);$("#"+q+"_jGraduate_focusCoord").toggle(eb);if(eb)$("#"+q+"_jGraduate_match_ctr")[0].checked=false}else{$(L+" .jGraduate_gradPick").hide();$(L+" .jGraduate_colPick").show()}});$(L+" > div").hide();fb.removeClass("jGraduate_tab_current");var tb;switch(v.paint.type){case "linearGradient":tb=$(L+" .jGraduate_tab_lingrad");break;case "radialGradient":tb=
+$(L+" .jGraduate_tab_radgrad");break;default:tb=$(L+" .jGraduate_tab_color")}v.show();setTimeout(function(){tb.addClass("jGraduate_tab_current").click()},10)}else alert("Container element must have an id attribute to maintain unique id strings for sub-elements.")})}})();jQuery&&function(){var a=$(window),s=$(document);$.extend($.fn,{contextMenu:function(g,b){if(g.menu==undefined)return false;if(g.inSpeed==undefined)g.inSpeed=150;if(g.outSpeed==undefined)g.outSpeed=75;if(g.inSpeed==0)g.inSpeed=-1;if(g.outSpeed==0)g.outSpeed=-1;$(this).each(function(){var p=$(this),w=$(p).offset(),c=$("#"+g.menu);c.addClass("contextMenu");$(this).bind("mousedown",function(d){$(this).on("mouseup",function(n){var v=$(this);v.unbind("mouseup");$(".contextMenu").hide();if(d.button===2||
+g.allowLeft||d.ctrlKey&&svgedit.browser.isMac())svgedit.browser.isTouch()||f(n,d,v)})});svgedit.browser.isTouch()&&$(this).bind("taphold",function(d){var n=$(this);n.unbind("mouseup");f(d,d,n)});var f=function(d,n,v){if(typeof n=="undefined")n=d;d.stopPropagation();if(p.hasClass("disabled")||n.altKey)return false;var B=d.pageX,q=d.pageY;if(svgedit.browser.isTouch()){B=d.originalEvent.touches[0].pageX;q=d.originalEvent.touches[0].pageY}d=a.width()-c.width();n=a.height()-c.height();if(B>d-15)B=d-15;
+if(q>n-30)q=n-30;if(svgedit.browser.isTouch())q-=c.height()/2;s.unbind("click");c.css({top:q,left:B}).fadeIn(g.inSpeed);c.find("A").mouseover(function(){c.find("LI.hover").removeClass("hover");$(this).parent().addClass("hover")}).mouseout(function(){c.find("LI.hover").removeClass("hover")});s.keypress(function(L){switch(L.keyCode){case 38:if(c.find("LI.hover").length){c.find("LI.hover").removeClass("hover").prevAll("LI:not(.disabled)").eq(0).addClass("hover");c.find("LI.hover").length||c.find("LI:last").addClass("hover")}else c.find("LI:last").addClass("hover");
+break;case 40:if(c.find("LI.hover").length==0)c.find("LI:first").addClass("hover");else{c.find("LI.hover").removeClass("hover").nextAll("LI:not(.disabled)").eq(0).addClass("hover");c.find("LI.hover").length||c.find("LI:first").addClass("hover")}break;case 13:c.find("LI.hover A").trigger("click");break;case 27:s.trigger("click")}});c.find("A").unbind("mouseup");c.find("LI:not(.disabled) A").mouseup(function(){s.unbind("click").unbind("keypress");$(".contextMenu").hide();b&&b($(this).attr("href").substr(1),
+$(v),{x:B-w.left,y:q-w.top,docX:B,docY:q});return false});setTimeout(function(){s.click(function(){s.unbind("click").unbind("keypress");c.fadeOut(g.outSpeed);return false})},0)};if($.browser.mozilla)$("#"+g.menu).each(function(){$(this).css({MozUserSelect:"none"})});else $.browser.msie?$("#"+g.menu).each(function(){$(this).bind("selectstart.disableTextSelect",function(){return false})}):$("#"+g.menu).each(function(){$(this).bind("mousedown.disableTextSelect",function(){return false})});$(p).add($("UL.contextMenu")).bind("contextmenu",
+function(){return false})});return $(this)},disableContextMenuItems:function(g){if(g==undefined){$(this).find("LI").addClass("disabled");return $(this)}$(this).each(function(){if(g!=undefined)for(var b=g.split(","),p=0;p<b.length;p++)$(this).find('A[href="'+b[p]+'"]').parent().addClass("disabled")});return $(this)},enableContextMenuItems:function(g){if(g==undefined){$(this).find("LI.disabled").removeClass("disabled");return $(this)}$(this).each(function(){if(g!=undefined)for(var b=g.split(","),p=
+0;p<b.length;p++)$(this).find('A[href="'+b[p]+'"]').parent().removeClass("disabled")});return $(this)},disableContextMenu:function(){$(this).each(function(){$(this).addClass("disabled")});return $(this)},enableContextMenu:function(){$(this).each(function(){$(this).removeClass("disabled")});return $(this)},destroyContextMenu:function(){$(this).each(function(){$(this).unbind("mousedown").unbind("mouseup")});return $(this)}})}(jQuery);var svgedit=svgedit||{};
+(function(){if(!svgedit.browser)svgedit.browser={};var a=!!document.createElementNS&&!!document.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect;svgedit.browser.supportsSvg=function(){return a};if(svgedit.browser.supportsSvg()){var s=navigator.userAgent,g=document.createElementNS("http://www.w3.org/2000/svg","svg"),b=!!window.opera,p=s.indexOf("AppleWebKit")>=0,w=s.indexOf("Gecko/")>=0,c=s.indexOf("MSIE")>=0,f=s.indexOf("Chrome/")>=0,d=s.indexOf("Windows")>=0,n=s.indexOf("Macintosh")>=
+0,v="ontouchstart"in window,B=!!g.querySelector,q=!!document.evaluate,L=function(){var oa=document.createElementNS("http://www.w3.org/2000/svg","path");oa.setAttribute("d","M0,0 10,10");var Y=oa.pathSegList;oa=oa.createSVGPathSegLinetoAbs(5,5);try{Y.replaceItem(oa,0);return true}catch(V){}return false}(),Q=function(){var oa=document.createElementNS("http://www.w3.org/2000/svg","path");oa.setAttribute("d","M0,0 10,10");var Y=oa.pathSegList;oa=oa.createSVGPathSegLinetoAbs(5,5);try{Y.insertItemBefore(oa,
+0);return true}catch(V){}return false}(),K=function(){var oa=document.createElementNS("http://www.w3.org/2000/svg","svg"),Y=document.createElementNS("http://www.w3.org/2000/svg","svg");document.documentElement.appendChild(oa);Y.setAttribute("x",5);oa.appendChild(Y);var V=document.createElementNS("http://www.w3.org/2000/svg","text");V.textContent="a";Y.appendChild(V);Y=V.getStartPositionOfChar(0);Y=Y.x;document.documentElement.removeChild(oa);return Y===0}(),I=function(){var oa=document.createElementNS("http://www.w3.org/2000/svg",
+"svg");document.documentElement.appendChild(oa);var Y=document.createElementNS("http://www.w3.org/2000/svg","path");Y.setAttribute("d","M0,0 C0,0 10,10 10,0");oa.appendChild(Y);Y=Y.getBBox();document.documentElement.removeChild(oa);return Y.height>4&&Y.height<5}(),S=function(){var oa=document.createElementNS("http://www.w3.org/2000/svg","svg");document.documentElement.appendChild(oa);var Y=document.createElementNS("http://www.w3.org/2000/svg","path");Y.setAttribute("d","M0,0 10,0");var V=document.createElementNS("http://www.w3.org/2000/svg",
+"path");V.setAttribute("d","M5,0 15,0");var ea=document.createElementNS("http://www.w3.org/2000/svg","g");ea.appendChild(Y);ea.appendChild(V);oa.appendChild(ea);Y=ea.getBBox();document.documentElement.removeChild(oa);return Y.width==15}(),R=function(){var oa=document.createElementNS("http://www.w3.org/2000/svg","rect");oa.setAttribute("x",0.1);(oa=oa.cloneNode(false).getAttribute("x").indexOf(",")==-1)||$.alert("NOTE: This version of Opera is known to contain bugs in SVG-edit.\n\t\tPlease upgrade to the <a href='http://opera.com'>latest version</a> in which the problems have been fixed.");
+return oa}(),N=function(){var oa=document.createElementNS("http://www.w3.org/2000/svg","rect");oa.setAttribute("style","vector-effect:non-scaling-stroke");return oa.style.vectorEffect==="non-scaling-stroke"}(),ga=function(){var oa=document.createElementNS("http://www.w3.org/2000/svg","rect").transform.baseVal,Y=g.createSVGTransform();oa.appendItem(Y);return oa.getItem(0)==Y}();svgedit.browser.isOpera=function(){return b};svgedit.browser.isWebkit=function(){return p};svgedit.browser.isGecko=function(){return w};
+svgedit.browser.isIE=function(){return c};svgedit.browser.isChrome=function(){return f};svgedit.browser.isWindows=function(){return d};svgedit.browser.isMac=function(){return n};svgedit.browser.isTouch=function(){return v};svgedit.browser.supportsSelectors=function(){return B};svgedit.browser.supportsXpath=function(){return q};svgedit.browser.supportsPathReplaceItem=function(){return L};svgedit.browser.supportsPathInsertItemBefore=function(){return Q};svgedit.browser.supportsPathBBox=function(){return I};
+svgedit.browser.supportsHVLineContainerBBox=function(){return S};svgedit.browser.supportsGoodTextCharPos=function(){return K};svgedit.browser.supportsEditableText=function(){return b};svgedit.browser.supportsGoodDecimals=function(){return R};svgedit.browser.supportsNonScalingStroke=function(){return N};svgedit.browser.supportsNativeTransformLists=function(){return ga}}else window.location="browser-not-supported.html"})();svgedit=svgedit||{};
+(function(){if(!svgedit.transformlist)svgedit.transformlist={};var a=document.createElementNS("http://www.w3.org/2000/svg","svg"),s={};svgedit.transformlist.SVGTransformList=function(g){this._elem=g||null;this._xforms=[];this._update=function(){var b="";a.createSVGMatrix();for(var p=0;p<this.numberOfItems;++p){var w=this._list.getItem(p);b=b;w=w;var c=w.matrix,f="";switch(w.type){case 1:f="matrix("+[c.a,c.b,c.c,c.d,c.e,c.f].join(",")+")";break;case 2:f="translate("+c.e+","+c.f+")";break;case 3:f=
+c.a==c.d?"scale("+c.a+")":"scale("+c.a+","+c.d+")";break;case 4:var d=0;f=0;if(w.angle!=0){d=1-c.a;f=(d*c.f+c.b*c.e)/(d*d+c.b*c.b);d=(c.e-c.b*f)/d}f="rotate("+w.angle+" "+d+","+f+")"}b=b+(f+" ")}this._elem.setAttribute("transform",b)};this._list=this;this._init=function(){var b=this._elem.getAttribute("transform");if(b)for(var p=/\s*((scale|matrix|rotate|translate)\s*\(.*?\))\s*,?\s*/,w=true;w;){w=b.match(p);b=b.replace(p,"");if(w&&w[1]){var c=w[1].split(/\s*\(/),f=c[0];c=c[1].match(/\s*(.*?)\s*\)/);
+c[1]=c[1].replace(/(\d)-/g,"$1 -");var d=c[1].split(/[, ]+/),n="abcdef".split(""),v=a.createSVGMatrix();$.each(d,function(L,Q){d[L]=parseFloat(Q);if(f=="matrix")v[n[L]]=d[L]});c=a.createSVGTransform();var B="set"+f.charAt(0).toUpperCase()+f.slice(1),q=f=="matrix"?[v]:d;if(f=="scale"&&q.length==1)q.push(q[0]);else if(f=="translate"&&q.length==1)q.push(0);else if(f=="rotate"&&q.length==1){q.push(0);q.push(0)}c[B].apply(c,q);this._list.appendItem(c)}}};this._removeFromOtherLists=function(b){if(b){var p=
+false,w;for(w in s){for(var c=s[w],f=0,d=c._xforms.length;f<d;++f)if(c._xforms[f]==b){p=true;c.removeItem(f);break}if(p)break}}};this.numberOfItems=0;this.clear=function(){this.numberOfItems=0;this._xforms=[]};this.initialize=function(b){this.numberOfItems=1;this._removeFromOtherLists(b);this._xforms=[b]};this.getItem=function(b){if(b<this.numberOfItems&&b>=0)return this._xforms[b];throw{code:1};};this.insertItemBefore=function(b,p){var w=null;if(p>=0)if(p<this.numberOfItems){this._removeFromOtherLists(b);
+w=Array(this.numberOfItems+1);for(var c=0;c<p;++c)w[c]=this._xforms[c];w[c]=b;for(var f=c+1;c<this.numberOfItems;++f,++c)w[f]=this._xforms[c];this.numberOfItems++;this._xforms=w;w=b;this._list._update()}else w=this._list.appendItem(b);return w};this.replaceItem=function(b,p){var w=null;if(p<this.numberOfItems&&p>=0){this._removeFromOtherLists(b);w=this._xforms[p]=b;this._list._update()}return w};this.removeItem=function(b){if(b<this.numberOfItems&&b>=0){for(var p=this._xforms[b],w=Array(this.numberOfItems-
+1),c=0;c<b;++c)w[c]=this._xforms[c];for(b=c;b<this.numberOfItems-1;++b,++c)w[b]=this._xforms[c+1];this.numberOfItems--;this._xforms=w;this._list._update();return p}else throw{code:1};};this.appendItem=function(b){this._removeFromOtherLists(b);this._xforms.push(b);this.numberOfItems++;this._list._update();return b}};svgedit.transformlist.resetListMap=function(){s={}};svgedit.transformlist.removeElementFromListMap=function(g){g.id&&s[g.id]&&delete s[g.id]};svgedit.transformlist.getTransformList=function(g){if(svgedit.browser.supportsNativeTransformLists())if(g.transform)return g.transform.baseVal;
+else if(g.gradientTransform)return g.gradientTransform.baseVal;else{if(g.patternTransform)return g.patternTransform.baseVal}else{var b=g.id;b||(b="temp");var p=s[b];if(!p||b=="temp"){s[b]=new svgedit.transformlist.SVGTransformList(g);s[b]._init();p=s[b]}return p}return null}})();svgedit=svgedit||{};
+(function(){if(!svgedit.math)svgedit.math={};var a=document.createElementNS("http://www.w3.org/2000/svg","svg");svgedit.math.transformPoint=function(s,g,b){return{x:b.a*s+b.c*g+b.e,y:b.b*s+b.d*g+b.f}};svgedit.math.isIdentity=function(s){return s.a===1&&s.b===0&&s.c===0&&s.d===1&&s.e===0&&s.f===0};svgedit.math.matrixMultiply=function(){for(var s=arguments,g=s.length,b=s[g-1];g-- >1;)b=s[g-1].multiply(b);if(Math.abs(b.a)<1.0E-14)b.a=0;if(Math.abs(b.b)<1.0E-14)b.b=0;if(Math.abs(b.c)<1.0E-14)b.c=0;if(Math.abs(b.d)<
+1.0E-14)b.d=0;if(Math.abs(b.e)<1.0E-14)b.e=0;if(Math.abs(b.f)<1.0E-14)b.f=0;return b};svgedit.math.hasMatrixTransform=function(s){if(!s)return false;for(var g=s.numberOfItems;g--;){var b=s.getItem(g);if(b.type==1&&!svgedit.math.isIdentity(b.matrix))return true}return false};svgedit.math.transformBox=function(s,g,b,p,w){var c={x:s,y:g},f={x:s+b,y:g};b={x:s+b,y:g+p};s={x:s,y:g+p};g=svgedit.math.transformPoint;c=g(c.x,c.y,w);var d=p=c.x,n=c.y,v=c.y;f=g(f.x,f.y,w);p=Math.min(p,f.x);d=Math.max(d,f.x);
+n=Math.min(n,f.y);v=Math.max(v,f.y);s=g(s.x,s.y,w);p=Math.min(p,s.x);d=Math.max(d,s.x);n=Math.min(n,s.y);v=Math.max(v,s.y);b=g(b.x,b.y,w);p=Math.min(p,b.x);d=Math.max(d,b.x);n=Math.min(n,b.y);v=Math.max(v,b.y);return{tl:c,tr:f,bl:s,br:b,aabox:{x:p,y:n,width:d-p,height:v-n}}};svgedit.math.transformListToTransform=function(s,g,b){if(s==null)return a.createSVGTransformFromMatrix(a.createSVGMatrix());g=g==undefined?0:g;b=b==undefined?s.numberOfItems-1:b;g=parseInt(g);b=parseInt(b);if(g>b){var p=b;b=g;
+g=p}p=a.createSVGMatrix();for(g=g;g<=b;++g){var w=g>=0&&g<s.numberOfItems?s.getItem(g).matrix:a.createSVGMatrix();p=svgedit.math.matrixMultiply(p,w)}return a.createSVGTransformFromMatrix(p)};svgedit.math.getMatrix=function(s){s=svgedit.transformlist.getTransformList(s);return svgedit.math.transformListToTransform(s).matrix};svgedit.math.snapToAngle=function(s,g,b,p){var w=Math.PI/4;b=b-s;var c=p-g;p=Math.sqrt(b*b+c*c);w=Math.round(Math.atan2(c,b)/w)*w;return{x:s+p*Math.cos(w),y:g+p*Math.sin(w),a:w}};
+svgedit.math.rectsIntersect=function(s,g){if(!s||!g)return false;return g.x<s.x+s.width&&g.x+g.width>s.x&&g.y<s.y+s.height&&g.y+g.height>s.y}})();svgedit=svgedit||{};
+(function(){if(!svgedit.units)svgedit.units={};var a=["x","x1","cx","rx","width"],s=["y","y1","cy","ry","height"],g=$.merge(["r","radius"],a);$.merge(g,s);var b,p={px:1};svgedit.units.init=function(c){b=c;c=document.createElementNS("http://www.w3.org/2000/svg","svg");document.body.appendChild(c);var f=document.createElementNS("http://www.w3.org/2000/svg","rect");f.setAttribute("width","1em");f.setAttribute("height","1ex");f.setAttribute("x","1in");c.appendChild(f);f=f.getBBox();document.body.removeChild(c);
+c=f.x;p.em=f.width;p.ex=f.height;p["in"]=c;p.cm=c/2.54;p.mm=c/25.4;p.pt=c/72;p.pc=c/6;p["%"]=0};svgedit.units.getTypeMap=function(){return p};svgedit.units.shortFloat=function(c){var f=b.getRoundDigits();if(isNaN(c)){if($.isArray(c))return svgedit.units.shortFloat(c[0])+","+svgedit.units.shortFloat(c[1])}else return+(+c).toFixed(f);return parseFloat(c).toFixed(f)-0};svgedit.units.convertUnit=function(c,f){f=f||b.getBaseUnit();return svgedit.unit.shortFloat(c/p[f])};svgedit.units.setUnitAttr=function(c,
+f,d){isNaN(d)||c.getAttribute(f);c.setAttribute(f,d)};var w={line:["x1","x2","y1","y2"],circle:["cx","cy","r"],ellipse:["cx","cy","rx","ry"],foreignObject:["x","y","width","height"],rect:["x","y","width","height"],image:["x","y","width","height"],use:["x","y","width","height"],text:["x","y"]};svgedit.units.convertAttrs=function(c){var f=c.tagName,d=b.getBaseUnit();if(f=w[f])for(var n=f.length,v=0;v<n;v++){var B=f[v],q=c.getAttribute(B);if(q)isNaN(q)||c.setAttribute(B,q/p[d]+d)}};svgedit.units.convertToNum=
+function(c,f){if(!isNaN(f))return f-0;if(f.substr(-1)==="%"){var d=f.substr(0,f.length-1)/100,n=b.getWidth(),v=b.getHeight();return a.indexOf(c)>=0?d*n:s.indexOf(c)>=0?d*v:d*Math.sqrt(n*n+v*v)/Math.sqrt(2)}else{n=f.substr(-2);d=f.substr(0,f.length-2);return d*p[n]}};svgedit.units.isValidUnit=function(c,f,d){var n=false;if(g.indexOf(c)>=0)if(isNaN(f)){f=f.toLowerCase();$.each(p,function(q){if(!n)if(RegExp("^-?[\\d\\.]+"+q+"$").test(f))n=true})}else n=true;else if(c=="id"){c=false;try{var v=b.getElement(f);
+c=v==null||v===d}catch(B){}return c}else n=true;return n}})();svgedit=svgedit||{};
+(function(){function a(c){if(svgedit.browser.supportsHVLineContainerBBox())try{return c.getBBox()}catch(f){}var d=$.data(c,"ref"),n=null;if(d){var v=$(d).children().clone().attr("visibility","hidden");$(w).append(v);n=v.filter("line, path")}else n=$(c).find("line, path");var B=false;if(n.length){n.each(function(){var q=this.getBBox();if(!q.width||!q.height)B=true});if(B){c=d?v:$(c).children();ret=getStrokedBBox(c)}else ret=c.getBBox()}else ret=c.getBBox();d&&v.remove();return ret}if(!svgedit.utilities)svgedit.utilities=
+{};var s="a,circle,ellipse,foreignObject,g,image,line,path,polygon,polyline,rect,svg,text,tspan,use".split(","),g=null,b=null,p=null,w=null;svgedit.utilities.init=function(c){g=c;b=c.getDOMDocument();p=c.getDOMContainer();w=c.getSVGRoot()};svgedit.utilities.toXml=function(c){return $("<p/>").text(c).html()};svgedit.utilities.fromXml=function(c){return $("<p/>").html(c).text()};svgedit.utilities.encode64=function(c){c=svgedit.utilities.convertToXMLReferences(c);if(window.btoa)return window.btoa(c);
+var f=Array(Math.floor((c.length+2)/3)*4),d,n,v,B,q,L,Q=0,K=0;do{d=c.charCodeAt(Q++);n=c.charCodeAt(Q++);v=c.charCodeAt(Q++);B=d>>2;d=(d&3)<<4|n>>4;q=(n&15)<<2|v>>6;L=v&63;if(isNaN(n))q=L=64;else if(isNaN(v))L=64;f[K++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(B);f[K++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(d);f[K++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(q);f[K++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(L)}while(Q<
+c.length);return f.join("")};svgedit.utilities.decode64=function(c){if(window.atob)return window.atob(c);var f="",d,n,v="",B,q="",L=0;c=c.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(c.charAt(L++));n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(c.charAt(L++));B="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(c.charAt(L++));q="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(c.charAt(L++));
+d=d<<2|n>>4;n=(n&15)<<4|B>>2;v=(B&3)<<6|q;f+=String.fromCharCode(d);if(B!=64)f+=String.fromCharCode(n);if(q!=64)f+=String.fromCharCode(v)}while(L<c.length);return unescape(f)};svgedit.utilities.convertToXMLReferences=function(c){for(var f="",d=0;d<c.length;d++){var n=c.charCodeAt(d);if(n<128)f+=c[d];else if(n>127)f+="&#"+n+";"}return f};svgedit.utilities.text2xml=function(c){if(c.indexOf("<svg:svg")>=0)c=c.replace(/<(\/?)svg:/g,"<$1").replace("xmlns:svg","xmlns");var f;try{var d=window.DOMParser?
+new DOMParser:new ActiveXObject("Microsoft.XMLDOM");d.async=false}catch(n){throw Error("XML Parser could not be instantiated");}try{f=d.loadXML?d.loadXML(c)?d:false:d.parseFromString(c,"text/xml")}catch(v){throw Error("Error parsing XML string");}return f};svgedit.utilities.bboxToObj=function(c){return{x:c.x,y:c.y,width:c.width,height:c.height}};svgedit.utilities.walkTree=function(c,f){if(c&&c.nodeType==1){f(c);for(var d=c.childNodes.length;d--;)svgedit.utilities.walkTree(c.childNodes.item(d),f)}};
+svgedit.utilities.walkTreePost=function(c,f){if(c&&c.nodeType==1){for(var d=c.childNodes.length;d--;)svgedit.utilities.walkTree(c.childNodes.item(d),f);f(c)}};svgedit.utilities.getUrlFromAttr=function(c){if(c)if(c.indexOf('url("')===0)return c.substring(5,c.indexOf('"',6));else if(c.indexOf("url('")===0)return c.substring(5,c.indexOf("'",6));else if(c.indexOf("url(")===0)return c.substring(4,c.indexOf(")"));return null};svgedit.utilities.getHref=function(c){if(c)return c.getAttributeNS("http://www.w3.org/1999/xlink",
+"href")};svgedit.utilities.setHref=function(c,f){c.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",f)};svgedit.utilities.findDefs=function(c){c=g.getSVGContent().documentElement;var f=c.getElementsByTagNameNS("http://www.w3.org/2000/svg","defs");return f=f.length>0?f[0]:c.insertBefore(c.ownerDocument.createElementNS("http://www.w3.org/2000/svg","defs"),c.firstChild.nextSibling)};svgedit.utilities.getPathBBox=function(c){var f=c.pathSegList,d=f.numberOfItems;c=[[],[]];var n=f.getItem(0),
+v=[n.x,n.y];for(n=0;n<d;n++){var B=f.getItem(n);if(typeof B.x!="undefined"){c[0].push(v[0]);c[1].push(v[1]);if(B.x1){for(var q=[B.x1,B.y1],L=[B.x2,B.y2],Q=[B.x,B.y],K=0;K<2;K++){B=function(ga){return Math.pow(1-ga,3)*v[K]+3*Math.pow(1-ga,2)*ga*q[K]+3*(1-ga)*Math.pow(ga,2)*L[K]+Math.pow(ga,3)*Q[K]};var I=6*v[K]-12*q[K]+6*L[K],S=-3*v[K]+9*q[K]-9*L[K]+3*Q[K],R=3*q[K]-3*v[K];if(S==0){if(I!=0){I=-R/I;0<I&&I<1&&c[K].push(B(I))}}else{R=Math.pow(I,2)-4*R*S;if(!(R<0)){var N=(-I+Math.sqrt(R))/(2*S);0<N&&N<
+1&&c[K].push(B(N));I=(-I-Math.sqrt(R))/(2*S);0<I&&I<1&&c[K].push(B(I))}}}v=Q}else{c[0].push(B.x);c[1].push(B.y)}}}f=Math.min.apply(null,c[0]);d=Math.max.apply(null,c[0])-f;n=Math.min.apply(null,c[1]);c=Math.max.apply(null,c[1])-n;return{x:f,y:n,width:d,height:c}};svgedit.utilities.getBBox=function(c){var f=c||g.getSelectedElements()[0];if(c.nodeType!=1)return null;c=null;var d=f.nodeName;switch(d){case "text":if(f.textContent===""){f.textContent="a";c=f.getBBox();f.textContent=""}else try{c=f.getBBox()}catch(n){}break;
+case "path":if(svgedit.browser.supportsPathBBox())try{c=f.getBBox()}catch(v){}else c=svgedit.utilities.getPathBBox(f);break;case "g":case "a":c=a(f);break;default:if(d==="use")c=a(f,true);if(d==="use")c||(c=f.getBBox());else if(~s.indexOf(d))try{c=f.getBBox()}catch(B){f=$(f).closest("foreignObject");if(f.length)try{c=f[0].getBBox()}catch(q){c=null}else c=null}}if(c)c=svgedit.utilities.bboxToObj(c);return c};svgedit.utilities.getRotationAngle=function(c,f){var d=c||g.getSelectedElements()[0];d=svgedit.transformlist.getTransformList(d);
+if(!d)return 0;for(var n=d.numberOfItems,v=0;v<n;++v){var B=d.getItem(v);if(B.type==4)return f?B.angle*Math.PI/180:B.angle}return 0};svgedit.utilities.getElem=svgedit.browser.supportsSelectors()?function(c){return w.querySelector("#"+c)}:svgedit.browser.supportsXpath()?function(c){return b.evaluate('svg:svg[@id="svgroot"]//svg:*[@id="'+c+'"]',p,function(){return"http://www.w3.org/2000/svg"},9,null).singleNodeValue}:function(c){return $(w).find("[id="+c+"]")[0]};svgedit.utilities.assignAttributes=
+function(c,f,d,n){d||(d=0);svgedit.browser.isOpera()||w.suspendRedraw(d);for(var v in f)if(d=v.substr(0,4)==="xml:"?"http://www.w3.org/XML/1998/namespace":v.substr(0,6)==="xlink:"?"http://www.w3.org/1999/xlink":null)c.setAttributeNS(d,v,f[v]);else n?svgedit.units.setUnitAttr(c,v,f[v]):c.setAttribute(v,f[v]);svgedit.browser.isOpera()||w.unsuspendRedraw(null)};svgedit.utilities.cleanupElement=function(c){var f=w.suspendRedraw(60),d={"fill-opacity":1,"stop-opacity":1,opacity:1,stroke:"none","stroke-dasharray":"none",
+"stroke-linejoin":"miter","stroke-linecap":"butt","stroke-opacity":1,"stroke-width":1,rx:0,ry:0},n;for(n in d){var v=d[n];c.getAttribute(n)==v&&c.removeAttribute(n)}w.unsuspendRedraw(f)}})();svgedit=svgedit||{};
+(function(){if(!svgedit.sanitize)svgedit.sanitize={};var a={};a["http://www.w3.org/1999/xlink"]="xlink";a["http://www.w3.org/XML/1998/namespace"]="xml";a["http://www.w3.org/2000/xmlns/"]="xmlns";a["http://svg-edit.googlecode.com"]="se";a["http://www.w3.org/1999/xhtml"]="xhtml";a["http://www.w3.org/1998/Math/MathML"]="mathml";var s={};$.each(a,function(p,w){s[w]=p});var g={a:["class","clip-path","clip-rule","fill","fill-opacity","fill-rule","filter","id","mask","opacity","stroke","stroke-dasharray",
+"stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform","xlink:href","xlink:title"],circle:["class","clip-path","clip-rule","cx","cy","fill","fill-opacity","fill-rule","filter","id","mask","opacity","r","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform"],clipPath:["class",
+"clipPathUnits","id"],defs:[],style:["type"],desc:[],ellipse:["class","clip-path","clip-rule","cx","cy","fill","fill-opacity","fill-rule","filter","id","mask","opacity","requiredFeatures","rx","ry","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform"],feGaussianBlur:["class","color-interpolation-filters","id","requiredFeatures","stdDeviation"],filter:["class","color-interpolation-filters",
+"filterRes","filterUnits","height","id","primitiveUnits","requiredFeatures","width","x","xlink:href","y"],foreignObject:["class","font-size","height","id","opacity","requiredFeatures","style","transform","width","x","y"],g:["class","clip-path","clip-rule","id","display","fill","fill-opacity","fill-rule","filter","mask","opacity","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage",
+"transform","font-family","font-size","font-style","font-weight","text-anchor","data-locked"],image:["class","clip-path","clip-rule","filter","height","id","mask","opacity","requiredFeatures","style","systemLanguage","transform","width","x","xlink:href","xlink:title","y"],line:["shape-rendering","class","clip-path","clip-rule","fill","fill-opacity","fill-rule","filter","id","marker-end","marker-mid","marker-start","mask","opacity","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset",
+"stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform","x1","x2","y1","y2"],linearGradient:["class","id","gradientTransform","gradientUnits","requiredFeatures","spreadMethod","systemLanguage","x1","x2","xlink:href","y1","y2"],marker:["id","class","markerHeight","markerUnits","markerWidth","orient","preserveAspectRatio","refX","refY","systemLanguage","viewBox"],mask:["class","height","id","maskContentUnits","maskUnits","width","x",
+"y"],metadata:["class","id"],path:["class","clip-path","clip-rule","d","fill","fill-opacity","fill-rule","filter","id","marker-end","marker-mid","marker-start","mask","opacity","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform"],pattern:["class","height","id","patternContentUnits","patternTransform","patternUnits","requiredFeatures","style","systemLanguage","viewBox",
+"width","x","xlink:href","y"],polygon:["class","clip-path","clip-rule","id","fill","fill-opacity","fill-rule","filter","id","class","marker-end","marker-mid","marker-start","mask","opacity","points","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform"],polyline:["class","clip-path","clip-rule","id","fill","fill-opacity","fill-rule","filter","marker-end","marker-mid",
+"marker-start","mask","opacity","points","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform"],radialGradient:["class","cx","cy","fx","fy","gradientTransform","gradientUnits","id","r","requiredFeatures","spreadMethod","systemLanguage","xlink:href"],rect:["shape-rendering","class","clip-path","clip-rule","fill","fill-opacity","fill-rule","filter","height","id","mask",
+"opacity","requiredFeatures","rx","ry","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform","width","x","y"],stop:["class","id","offset","requiredFeatures","stop-color","stop-opacity","style","systemLanguage"],svg:["class","clip-path","clip-rule","filter","id","height","mask","preserveAspectRatio","requiredFeatures","style","systemLanguage","viewBox","width","x","xmlns","xmlns:se",
+"xmlns:xlink","y"],"switch":["class","id","requiredFeatures","systemLanguage"],symbol:["class","fill","fill-opacity","fill-rule","filter","font-family","font-size","font-style","font-weight","id","opacity","preserveAspectRatio","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform","viewBox"],text:["class","clip-path","clip-rule","fill","fill-opacity","fill-rule",
+"filter","font-family","font-size","font-style","font-weight","id","mask","opacity","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","text-anchor","transform","x","xml:space","y"],textPath:["class","id","method","requiredFeatures","spacing","startOffset","style","systemLanguage","transform","xlink:href"],title:[],tspan:["class","clip-path","clip-rule","dx","dy","fill",
+"fill-opacity","fill-rule","filter","font-family","font-size","font-style","font-weight","id","mask","opacity","requiredFeatures","rotate","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","text-anchor","textLength","transform","x","xml:space","y"],use:["class","clip-path","clip-rule","fill","fill-opacity","fill-rule","filter","height","id","mask","stroke","stroke-dasharray","stroke-dashoffset",
+"stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","transform","width","x","xlink:href","y"],annotation:["encoding"],"annotation-xml":["encoding"],maction:["actiontype","other","selection"],math:["class","id","display","xmlns"],menclose:["notation"],merror:[],mfrac:["linethickness"],mi:["mathvariant"],mmultiscripts:[],mn:[],mo:["fence","lspace","maxsize","minsize","rspace","stretchy"],mover:[],mpadded:["lspace","width","height","depth","voffset"],mphantom:[],
+mprescripts:[],mroot:[],mrow:["xlink:href","xlink:type","xmlns:xlink"],mspace:["depth","height","width"],msqrt:[],mstyle:["displaystyle","mathbackground","mathcolor","mathvariant","scriptlevel"],msub:[],msubsup:[],msup:[],mtable:["align","columnalign","columnlines","columnspacing","displaystyle","equalcolumns","equalrows","frame","rowalign","rowlines","rowspacing","width"],mtd:["columnalign","columnspan","rowalign","rowspan"],mtext:[],mtr:["columnalign","rowalign"],munder:[],munderover:[],none:[],
+semantics:[]},b={};$.each(g,function(p,w){var c={};$.each(w,function(f,d){if(d.indexOf(":")>=0){var n=d.split(":");c[n[1]]=s[n[0]]}else c[d]=d=="xmlns"?"http://www.w3.org/2000/xmlns/":null});b[p]=c});svgedit.sanitize.getNSMap=function(){return a};svgedit.sanitize.sanitizeSvg=function(p){if(p.nodeType==3){p.nodeValue=p.nodeValue.replace(/^\s+|\s+$/g,"");p.nodeValue.length||p.parentNode.removeChild(p)}if(p.nodeType==1){var w=p.parentNode;if(p.ownerDocument&&w){var c=g[p.nodeName],f=b[p.nodeName];if(c!=
+undefined){for(var d=[],n=p.attributes.length;n--;){var v=p.attributes.item(n),B=v.nodeName,q=v.localName,L=v.namespaceURI;if(!(f.hasOwnProperty(q)&&L==f[q]&&L!="http://www.w3.org/2000/xmlns/")&&!(L=="http://www.w3.org/2000/xmlns/"&&a[v.nodeValue])){B.indexOf("se:")==0&&d.push([B,v.nodeValue]);p.removeAttributeNS(L,q)}if(svgedit.browser.isGecko())switch(B){case "transform":case "gradientTransform":case "patternTransform":q=v.nodeValue.replace(/(\d)-/g,"$1 -");p.setAttribute(B,q)}if(B=="style"){v=
+v.nodeValue.split(";");for(B=v.length;B--;){q=v[B].split(":");c.indexOf(q[0])>=0&&p.setAttribute(q[0],q[1])}p.removeAttribute("style")}}$.each(d,function(Q,K){p.setAttributeNS("http://svg-edit.googlecode.com",K[0],K[1])});if((n=svgedit.utilities.getHref(p))&&["filter","linearGradient","pattern","radialGradient","textPath","use"].indexOf(p.nodeName)>=0)if(n[0]!="#"){svgedit.utilities.setHref(p,"");p.removeAttributeNS("http://www.w3.org/1999/xlink","href")}if(p.nodeName=="use"&&!svgedit.utilities.getHref(p))w.removeChild(p);
+else{$.each(["clip-path","fill","filter","marker-end","marker-mid","marker-start","mask","stroke"],function(Q,K){var I=p.getAttribute(K);if(I)if((I=svgedit.utilities.getUrlFromAttr(I))&&I[0]!=="#"){p.setAttribute(K,"");p.removeAttribute(K)}});for(n=p.childNodes.length;n--;)svgedit.sanitize.sanitizeSvg(p.childNodes.item(n))}}else{for(c=[];p.hasChildNodes();)c.push(w.insertBefore(p.firstChild,p));w.removeChild(p);for(n=c.length;n--;)svgedit.sanitize.sanitizeSvg(c[n])}}}}})();svgedit=svgedit||{};
+(function(){if(!svgedit.history)svgedit.history={};svgedit.history.HistoryEventTypes={BEFORE_APPLY:"before_apply",AFTER_APPLY:"after_apply",BEFORE_UNAPPLY:"before_unapply",AFTER_UNAPPLY:"after_unapply"};svgedit.history.MoveElementCommand=function(a,s,g,b){this.elem=a;this.text=b?"Move "+a.tagName+" to "+b:"Move "+a.tagName;this.oldNextSibling=s;this.oldParent=g;this.newNextSibling=a.nextSibling;this.newParent=a.parentNode};svgedit.history.MoveElementCommand.type=function(){return"svgedit.history.MoveElementCommand"};svgedit.history.MoveElementCommand.prototype.type=
+svgedit.history.MoveElementCommand.type;svgedit.history.MoveElementCommand.prototype.getText=function(){return this.text};svgedit.history.MoveElementCommand.prototype.apply=function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_APPLY,this);this.elem=this.newParent.insertBefore(this.elem,this.newNextSibling);a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_APPLY,this)};svgedit.history.MoveElementCommand.prototype.unapply=function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_UNAPPLY,
+this);this.elem=this.oldParent.insertBefore(this.elem,this.oldNextSibling);a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_UNAPPLY,this)};svgedit.history.MoveElementCommand.prototype.elements=function(){return[this.elem]};svgedit.history.InsertElementCommand=function(a,s){this.elem=a;this.text=s||"Create "+a.tagName;this.parent=a.parentNode;this.nextSibling=this.elem.nextSibling};svgedit.history.InsertElementCommand.type=function(){return"svgedit.history.InsertElementCommand"};svgedit.history.InsertElementCommand.prototype.type=
+svgedit.history.InsertElementCommand.type;svgedit.history.InsertElementCommand.prototype.getText=function(){return this.text};svgedit.history.InsertElementCommand.prototype.apply=function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_APPLY,this);this.elem=this.parent.insertBefore(this.elem,this.nextSibling);a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_APPLY,this)};svgedit.history.InsertElementCommand.prototype.unapply=function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_UNAPPLY,
+this);this.parent=this.elem.parentNode;this.elem=this.elem.parentNode.removeChild(this.elem);a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_UNAPPLY,this)};svgedit.history.InsertElementCommand.prototype.elements=function(){return[this.elem]};svgedit.history.RemoveElementCommand=function(a,s,g,b){this.elem=a;this.text=b||"Delete "+a.tagName;this.nextSibling=s;this.parent=g;svgedit.transformlist.removeElementFromListMap(a)};svgedit.history.RemoveElementCommand.type=function(){return"svgedit.history.RemoveElementCommand"};
+svgedit.history.RemoveElementCommand.prototype.type=svgedit.history.RemoveElementCommand.type;svgedit.history.RemoveElementCommand.prototype.getText=function(){return this.text};svgedit.history.RemoveElementCommand.prototype.apply=function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_APPLY,this);svgedit.transformlist.removeElementFromListMap(this.elem);this.parent=this.elem.parentNode;this.elem=this.parent.removeChild(this.elem);a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_APPLY,
+this)};svgedit.history.RemoveElementCommand.prototype.unapply=function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_UNAPPLY,this);svgedit.transformlist.removeElementFromListMap(this.elem);this.nextSibling==null&&window.console&&console.log("Error: reference element was lost");this.parent.insertBefore(this.elem,this.nextSibling);a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_UNAPPLY,this)};svgedit.history.RemoveElementCommand.prototype.elements=function(){return[this.elem]};
+svgedit.history.ChangeElementCommand=function(a,s,g){this.elem=a;this.text=g?"Change "+a.tagName+" "+g:"Change "+a.tagName;this.newValues={};this.oldValues=s;for(var b in s)this.newValues[b]=b=="#text"?a.textContent:b=="#href"?svgedit.utilities.getHref(a):a.getAttribute(b)};svgedit.history.ChangeElementCommand.type=function(){return"svgedit.history.ChangeElementCommand"};svgedit.history.ChangeElementCommand.prototype.type=svgedit.history.ChangeElementCommand.type;svgedit.history.ChangeElementCommand.prototype.getText=
+function(){return this.text};svgedit.history.ChangeElementCommand.prototype.apply=function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_APPLY,this);var s=false,g;for(g in this.newValues){if(this.newValues[g])if(g=="#text")this.elem.textContent=this.newValues[g];else g=="#href"?svgedit.utilities.setHref(this.elem,this.newValues[g]):this.elem.setAttribute(g,this.newValues[g]);else if(g=="#text")this.elem.textContent="";else{this.elem.setAttribute(g,"");this.elem.removeAttribute(g)}if(g==
+"transform")s=true}if(!s)if(s=svgedit.utilities.getRotationAngle(this.elem)){g=elem.getBBox();s=["rotate(",s," ",g.x+g.width/2,",",g.y+g.height/2,")"].join("");s!=elem.getAttribute("transform")&&elem.setAttribute("transform",s)}a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_APPLY,this);return true};svgedit.history.ChangeElementCommand.prototype.unapply=function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_UNAPPLY,this);var s=false,g;for(g in this.oldValues){if(this.oldValues[g])if(g==
+"#text")this.elem.textContent=this.oldValues[g];else g=="#href"?svgedit.utilities.setHref(this.elem,this.oldValues[g]):this.elem.setAttribute(g,this.oldValues[g]);else if(g=="#text")this.elem.textContent="";else this.elem.removeAttribute(g);if(g=="transform")s=true}if(!s)if(s=svgedit.utilities.getRotationAngle(this.elem)){g=this.elem.getBBox();s=["rotate(",s," ",g.x+g.width/2,",",g.y+g.height/2,")"].join("");s!=this.elem.getAttribute("transform")&&this.elem.setAttribute("transform",s)}svgedit.transformlist.removeElementFromListMap(this.elem);
+a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_UNAPPLY,this);return true};svgedit.history.ChangeElementCommand.prototype.elements=function(){return[this.elem]};svgedit.history.BatchCommand=function(a){this.text=a||"Batch Command";this.stack=[]};svgedit.history.BatchCommand.type=function(){return"svgedit.history.BatchCommand"};svgedit.history.BatchCommand.prototype.type=svgedit.history.BatchCommand.type;svgedit.history.BatchCommand.prototype.getText=function(){return this.text};svgedit.history.BatchCommand.prototype.apply=
+function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_APPLY,this);for(var s=this.stack.length,g=0;g<s;++g)this.stack[g].apply(a);a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_APPLY,this)};svgedit.history.BatchCommand.prototype.unapply=function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_UNAPPLY,this);for(var s=this.stack.length-1;s>=0;s--)this.stack[s].unapply(a);a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_UNAPPLY,
+this)};svgedit.history.BatchCommand.prototype.elements=function(){for(var a=[],s=this.stack.length;s--;)for(var g=this.stack[s].elements(),b=g.length;b--;)a.indexOf(g[b])==-1&&a.push(g[b]);return a};svgedit.history.BatchCommand.prototype.addSubCommand=function(a){this.stack.push(a)};svgedit.history.BatchCommand.prototype.isEmpty=function(){return this.stack.length==0};svgedit.history.UndoManager=function(a){this.handler_=a||null;this.undoStackPointer=0;this.undoStack=[];this.undoChangeStackPointer=
+-1;this.undoableChangeStack=[]};svgedit.history.UndoManager.prototype.resetUndoStack=function(){this.undoStack=[];this.undoStackPointer=0};svgedit.history.UndoManager.prototype.getUndoStackSize=function(){return this.undoStackPointer};svgedit.history.UndoManager.prototype.getRedoStackSize=function(){return this.undoStack.length-this.undoStackPointer};svgedit.history.UndoManager.prototype.getNextUndoCommandText=function(){return this.undoStackPointer>0?this.undoStack[this.undoStackPointer-1].getText():
+""};svgedit.history.UndoManager.prototype.getNextRedoCommandText=function(){return this.undoStackPointer<this.undoStack.length?this.undoStack[this.undoStackPointer].getText():""};svgedit.history.UndoManager.prototype.undo=function(){this.undoStackPointer>0&&this.undoStack[--this.undoStackPointer].unapply(this.handler_)};svgedit.history.UndoManager.prototype.redo=function(){this.undoStackPointer<this.undoStack.length&&this.undoStack.length>0&&this.undoStack[this.undoStackPointer++].apply(this.handler_)};
+svgedit.history.UndoManager.prototype.addCommandToHistory=function(a){if(this.undoStackPointer<this.undoStack.length&&this.undoStack.length>0)this.undoStack=this.undoStack.splice(0,this.undoStackPointer);this.undoStack.push(a);this.undoStackPointer=this.undoStack.length};svgedit.history.UndoManager.prototype.beginUndoableChange=function(a,s){for(var g=++this.undoChangeStackPointer,b=s.length,p=Array(b),w=Array(b);b--;){var c=s[b];if(c!=null){w[b]=c;p[b]=c.getAttribute(a)}}this.undoableChangeStack[g]=
+{attrName:a,oldValues:p,elements:w}};svgedit.history.UndoManager.prototype.finishUndoableChange=function(){for(var a=this.undoChangeStackPointer--,s=this.undoableChangeStack[a],g=s.elements.length,b=s.attrName,p=new svgedit.history.BatchCommand("Change "+b);g--;){var w=s.elements[g];if(w!=null){var c={};c[b]=s.oldValues[g];c[b]!=w.getAttribute(b)&&p.addSubCommand(new svgedit.history.ChangeElementCommand(w,c,b))}}this.undoableChangeStack[a]=null;return p}})();svgedit=svgedit||{};
+(function(){if(!svgedit.select)svgedit.select={};var a,s,g;svgedit.select.Selector=function(b,p){this.id=b;this.selectedElement=p;this.locked=true;this.selectorGroup=a.createSVGElement({element:"g",attr:{id:"selectorGroup"+this.id}});this.selectorRect=this.selectorGroup.appendChild(a.createSVGElement({element:"path",attr:{id:"selectedBox"+this.id,fill:"none",stroke:"#4F80FF","stroke-width":"1","shape-rendering":"crispEdges",style:"pointer-events:none"}}));svgedit.browser.isTouch()&&this.selectorRect.setAttribute("stroke-opacity",
+0.3);this.gripCoords={nw:null,n:null,ne:null,e:null,se:null,s:null,sw:null,w:null};this.reset(this.selectedElement)};svgedit.select.Selector.prototype.reset=function(b){this.locked=true;this.selectedElement=b;this.resize();this.selectorGroup.setAttribute("display","inline")};svgedit.select.Selector.prototype.updateGripCursors=function(b){var p=[];b=Math.round(b/45);if(b<0)b+=8;for(var w in g.selectorGrips)p.push(w);for(;b>0;){p.push(p.shift());b--}b=0;for(w in g.selectorGrips){g.selectorGrips[w].setAttribute("style",
+"cursor:"+p[b]+"-resize");b++}};svgedit.select.Selector.prototype.showGrips=function(b){g.selectorGripsGroup.setAttribute("display",b?"inline":"none");var p=this.selectedElement;this.hasGrips=b;if(p&&b){this.selectorGroup.appendChild(g.selectorGripsGroup);this.updateGripCursors(svgedit.utilities.getRotationAngle(p))}};svgedit.select.Selector.prototype.resize=function(){var b=this.selectorRect,p=g,w=p.selectorGrips,c=this.selectedElement,f=c.getAttribute("stroke-width"),d=a.currentZoom(),n=1/d;if(c.getAttribute("stroke")!==
+"none"&&!isNaN(f))n+=f/2;var v=c.tagName;if(v==="text")n+=2/d;f=svgedit.transformlist.getTransformList(c);f=svgedit.math.transformListToTransform(f).matrix;f.e*=d;f.f*=d;var B=svgedit.utilities.getBBox(c);if(v==="g"&&!$.data(c,"gsvg"))if(v=a.getStrokedBBox(c.childNodes))B=v;v=B.x;var q=B.y,L=B.width;B=B.height;n*=d;d=svgedit.math.transformBox(v*d,q*d,L*d,B*d,f);f=d.aabox;v=f.x-n;q=f.y-n;L=f.width+n*2;var Q=f.height+n*2;f=v+L/2;B=q+Q/2;if(c=svgedit.utilities.getRotationAngle(c)){v=a.svgRoot().createSVGTransform();
+v.setRotate(-c,f,B);v=v.matrix;d.tl=svgedit.math.transformPoint(d.tl.x,d.tl.y,v);d.tr=svgedit.math.transformPoint(d.tr.x,d.tr.y,v);d.bl=svgedit.math.transformPoint(d.bl.x,d.bl.y,v);d.br=svgedit.math.transformPoint(d.br.x,d.br.y,v);v=d.tl;L=v.x;Q=v.y;var K=v.x,I=v.y;v=Math.min;q=Math.max;L=v(L,v(d.tr.x,v(d.bl.x,d.br.x)))-n;Q=v(Q,v(d.tr.y,v(d.bl.y,d.br.y)))-n;K=q(K,q(d.tr.x,q(d.bl.x,d.br.x)))+n;I=q(I,q(d.tr.y,q(d.bl.y,d.br.y)))+n;v=L;q=Q;L=K-L;Q=I-Q}n=a.svgRoot().suspendRedraw(100);b.setAttribute("d",
+"M"+v+","+q+" L"+(v+L)+","+q+" "+(v+L)+","+(q+Q)+" "+v+","+(q+Q)+"z");this.selectorGroup.setAttribute("transform",c?"rotate("+[c,f,B].join(",")+")":"");if(svgedit.browser.isTouch()){v-=15.75;q-=15.75}else{v-=4;q-=4}this.gripCoords={nw:[v,q].map(Math.round),ne:[v+L,q].map(Math.round),sw:[v,q+Q].map(Math.round),se:[v+L,q+Q].map(Math.round),n:[v+L/2,q].map(Math.round),w:[v,q+Q/2].map(Math.round),e:[v+L,q+Q/2].map(Math.round),s:[v+L/2,q+Q].map(Math.round)};for(var S in this.gripCoords){b=this.gripCoords[S];
+w[S].setAttribute("x",b[0]);w[S].setAttribute("y",b[1])}this.rotateCoords={nw:[v,q],ne:[v+L+8,q],sw:[v,q+Q+8],se:[v+L+8,q+Q+8]};for(S in this.rotateCoords){b=this.rotateCoords[S];p.rotateGrips[S].setAttribute("cx",b[0]);p.rotateGrips[S].setAttribute("cy",b[1])}a.svgRoot().unsuspendRedraw(n)};svgedit.select.SelectorManager=function(){this.rubberBandBox=this.selectorParentGroup=null;this.selectors=[];this.selectorMap={};this.selectorGrips={nw:null,n:null,ne:null,e:null,se:null,s:null,sw:null,w:null};
+this.selectorGripsGroup=null;this.rotateGrips={nw:null,ne:null,se:null,sw:null};this.initGroup()};svgedit.select.SelectorManager.prototype.initGroup=function(){this.selectorParentGroup&&this.selectorParentGroup.parentNode&&this.selectorParentGroup.parentNode.removeChild(this.selectorParentGroup);this.selectorParentGroup=a.createSVGElement({element:"g",attr:{id:"selectorParentGroup"}});this.selectorGripsGroup=a.createSVGElement({element:"g",attr:{display:"none"}});this.selectorParentGroup.appendChild(this.selectorGripsGroup);
+a.svgRoot().appendChild(this.selectorParentGroup);this.selectorMap={};this.selectors=[];this.rubberBandBox=null;for(var b in this.rotateGrips){var p=a.createSVGElement({element:"circle",attr:{id:"selectorGrip_rotate_"+b,fill:"#000",r:8,stroke:"#000","fill-opacity":0,"stroke-opacity":0,"stroke-width":0,style:"cursor:url("+s.imgPath+"rotate.png) 12 12, auto;"}});$.data(p,"dir",b);$.data(p,"type","rotate");this.rotateGrips[b]=this.selectorGripsGroup.appendChild(p)}for(b in this.selectorGrips){p=a.createSVGElement({element:"rect",
+attr:{id:"selectorGrip_resize_"+b,width:8,height:8,fill:"#4F80FF",stroke:"rgba(0,0,0,0)","stroke-width":1,style:"cursor:"+b+"-resize","pointer-events":"all"}});if(svgedit.browser.isTouch()){p.setAttribute("width",30.5);p.setAttribute("height",30.5);p.setAttribute("fill-opacity",0.3)}$.data(p,"dir",b);$.data(p,"type","resize");this.selectorGrips[b]=this.selectorGripsGroup.appendChild(p)}if(!$("#canvasBackground").length){b=s.dimensions;b=a.createSVGElement({element:"svg",attr:{id:"canvasBackground",
+width:b[0],height:b[1],x:0,y:0,overflow:svgedit.browser.isWebkit()?"none":"visible",style:"pointer-events:none"}});p=a.createSVGElement({element:"defs",attr:{id:"placeholder_defs"}});var w=a.createSVGElement({element:"pattern",attr:{id:"checkerPattern",patternUnits:"userSpaceOnUse",x:0,y:0,width:20,height:20,viewBox:"0 0 10 10"}}),c=a.createSVGElement({element:"rect",attr:{x:0,y:0,width:10,height:10,fill:"#fff"}}),f=a.createSVGElement({element:"rect",attr:{x:0,y:0,width:5,height:5,fill:"#eee"}}),
+d=a.createSVGElement({element:"rect",attr:{x:5,y:5,width:5,height:5,fill:"#eee"}}),n=a.createSVGElement({element:"rect",attr:{width:"100%",height:"100%",x:0,y:0,"stroke-width":1,stroke:"#000",fill:"url(#checkerPattern)",style:"pointer-events:none"}});b.appendChild(p);p.appendChild(w);w.appendChild(c);w.appendChild(f);w.appendChild(d);b.appendChild(n);a.svgRoot().insertBefore(b,a.svgContent())}};svgedit.select.SelectorManager.prototype.requestSelector=function(b){if(b==null)return null;var p=this.selectors.length;
+if(typeof this.selectorMap[b.id]=="object"){this.selectorMap[b.id].locked=true;return this.selectorMap[b.id]}for(var w=0;w<p;++w)if(this.selectors[w]&&!this.selectors[w].locked){this.selectors[w].locked=true;this.selectors[w].reset(b);this.selectorMap[b.id]=this.selectors[w];return this.selectors[w]}this.selectors[p]=new svgedit.select.Selector(p,b);this.selectorParentGroup.appendChild(this.selectors[p].selectorGroup);this.selectorMap[b.id]=this.selectors[p];return this.selectors[p]};svgedit.select.SelectorManager.prototype.releaseSelector=
+function(b){if(b!=null)for(var p=this.selectors.length,w=this.selectorMap[b.id],c=0;c<p;++c)if(this.selectors[c]&&this.selectors[c]==w){w.locked==false&&console.log("WARNING! selector was released but was already unlocked");delete this.selectorMap[b.id];w.locked=false;w.selectedElement=null;w.showGrips(false);try{w.selectorGroup.setAttribute("display","none")}catch(f){}break}};svgedit.select.SelectorManager.prototype.getRubberBandBox=function(){if(!this.rubberBandBox)this.rubberBandBox=this.selectorParentGroup.appendChild(a.createSVGElement({element:"rect",
+attr:{id:"selectorRubberBand",fill:"none",stroke:"#666","stroke-width":1,"stroke-dasharray":"3,2",display:"none",style:"pointer-events:none"}}));return this.rubberBandBox};svgedit.select.init=function(b,p){s=b;a=p;g=new svgedit.select.SelectorManager;a.createSVGElement({element:"g",attr:{id:"hover_group"}})};svgedit.select.getSelectorManager=function(){return g}})();svgedit=svgedit||{};
+(function(){if(!svgedit.draw)svgedit.draw={};var a="a,circle,ellipse,foreignObject,g,image,line,path,polygon,polyline,rect,svg,text,tspan,use".split(","),s={LET_DOCUMENT_DECIDE:0,ALWAYS_RANDOMIZE:1,NEVER_RANDOMIZE:2},g=s.LET_DOCUMENT_DECIDE;svgedit.draw.Layer=function(b,p){this.name_=b;this.group_=p};svgedit.draw.Layer.prototype.getName=function(){return this.name_};svgedit.draw.Layer.prototype.getGroup=function(){return this.group_};svgedit.draw.randomizeIds=function(b,p){g=b==false?s.NEVER_RANDOMIZE:
+s.ALWAYS_RANDOMIZE;if(g==s.ALWAYS_RANDOMIZE&&!p.getNonce())p.setNonce(Math.floor(Math.random()*100001));else g==s.NEVER_RANDOMIZE&&p.getNonce()&&p.clearNonce()};svgedit.draw.Drawing=function(b,p){if(!b||!b.tagName||!b.namespaceURI||b.tagName!="svg"||b.namespaceURI!="http://www.w3.org/2000/svg")throw"Error: svgedit.draw.Drawing instance initialized without a <svg> element";this.svgElem_=b;this.obj_num=0;this.idPrefix=p||"svg_";this.releasedNums=[];this.all_layers=[];this.current_layer=null;this.nonce_=
+"";var w=this.svgElem_.getAttributeNS("http://svg-edit.googlecode.com","nonce");if(w&&g!=s.NEVER_RANDOMIZE)this.nonce_=w;else g==s.ALWAYS_RANDOMIZE&&this.setNonce(Math.floor(Math.random()*100001))};svgedit.draw.Drawing.prototype.getElem_=function(b){return this.svgElem_.querySelector?this.svgElem_.querySelector("#"+b):$(this.svgElem_).find("[id="+b+"]")[0]};svgedit.draw.Drawing.prototype.getSvgElem=function(){return this.svgElem_};svgedit.draw.Drawing.prototype.getNonce=function(){return this.nonce_};
+svgedit.draw.Drawing.prototype.setNonce=function(b){this.svgElem_.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:se","http://svg-edit.googlecode.com");this.svgElem_.setAttributeNS("http://svg-edit.googlecode.com","se:nonce",b);this.nonce_=b};svgedit.draw.Drawing.prototype.clearNonce=function(){this.nonce_=""};svgedit.draw.Drawing.prototype.getId=function(){return this.nonce_?this.idPrefix+this.nonce_+"_"+this.obj_num:this.idPrefix+this.obj_num};svgedit.draw.Drawing.prototype.getNextId=function(){var b=
+this.obj_num,p=false;if(this.releasedNums.length>0){this.obj_num=this.releasedNums.pop();p=true}else this.obj_num++;for(var w=this.getId();this.getElem_(w);){if(p){this.obj_num=b;p=false}this.obj_num++;w=this.getId()}if(p)this.obj_num=b;return w};svgedit.draw.Drawing.prototype.releaseId=function(b){var p=this.idPrefix+(this.nonce_?this.nonce_+"_":"");if(typeof b!="string"||b.indexOf(p)!=0)return false;b=parseInt(b.substr(p.length));if(typeof b!="number"||b<=0||this.releasedNums.indexOf(b)!=-1)return false;
+this.releasedNums.push(b);return true};svgedit.draw.Drawing.prototype.getNumLayers=function(){return this.all_layers.length};svgedit.draw.Drawing.prototype.hasLayer=function(b){for(var p=0;p<this.getNumLayers();p++)if(this.all_layers[p][0]==b)return true;return false};svgedit.draw.Drawing.prototype.getLayerName=function(b){if(b>=0&&b<this.getNumLayers())return this.all_layers[b][0];return""};svgedit.draw.Drawing.prototype.getCurrentLayer=function(){return this.current_layer};svgedit.draw.Drawing.prototype.getCurrentLayerName=
+function(){for(var b=0;b<this.getNumLayers();++b)if(this.all_layers[b][1]==this.current_layer)return this.getLayerName(b);return""};svgedit.draw.Drawing.prototype.setCurrentLayer=function(b){for(var p=0;p<this.getNumLayers();++p)if(b==this.getLayerName(p)){if(this.current_layer!=this.all_layers[p][1]){this.current_layer.setAttribute("style","pointer-events:none");this.current_layer=this.all_layers[p][1];this.current_layer.setAttribute("style","pointer-events:all")}return true}return false};svgedit.draw.Drawing.prototype.deleteCurrentLayer=
+function(){if(this.current_layer&&this.getNumLayers()>1){var b=this.current_layer.parentNode.removeChild(this.current_layer);this.identifyLayers();return b}return null};svgedit.draw.Drawing.prototype.identifyLayers=function(){this.all_layers=[];for(var b=this.svgElem_.childNodes.length,p=[],w=[],c=null,f=false,d=0;d<b;++d){var n=this.svgElem_.childNodes.item(d);if(n&&n.nodeType==1)if(n.tagName=="g"){f=true;var v=$("title",n).text();if(!v&&svgedit.browser.isOpera()&&n.querySelectorAll)v=$(n.querySelectorAll("title")).text();
+if(v){w.push(v);this.all_layers.push([v,n]);c=n;svgedit.utilities.walkTree(n,function(B){B.setAttribute("style","pointer-events:inherit")});c.setAttribute("style","pointer-events:none")}else p.push(n)}else if(~a.indexOf(n.nodeName)){svgedit.utilities.getBBox(n);p.push(n)}}b=this.svgElem_.ownerDocument;if(p.length>0||!f){for(d=1;w.indexOf("Layer "+d)>=0;)d++;w="Layer "+d;c=b.createElementNS("http://www.w3.org/2000/svg","g");f=b.createElementNS("http://www.w3.org/2000/svg","title");f.textContent=w;
+c.appendChild(f);for(f=0;f<p.length;++f)c.appendChild(p[f]);this.svgElem_.appendChild(c);this.all_layers.push([w,c])}svgedit.utilities.walkTree(c,function(B){B.setAttribute("style","pointer-events:inherit")});this.current_layer=c.getAttribute("data-locked")==="true"?this.all_layers.slice(-2)[0][1]:c;this.current_layer.setAttribute("style","pointer-events:all")};svgedit.draw.Drawing.prototype.createLayer=function(b){var p=this.svgElem_.ownerDocument,w=p.createElementNS("http://www.w3.org/2000/svg",
+"g");p=p.createElementNS("http://www.w3.org/2000/svg","title");p.textContent=b;w.appendChild(p);this.svgElem_.appendChild(w);this.identifyLayers();return w};svgedit.draw.Drawing.prototype.getLayerVisibility=function(b){for(var p=null,w=0;w<this.getNumLayers();++w)if(this.getLayerName(w)==b){p=this.all_layers[w][1];break}if(!p)return false;return p.getAttribute("display")!="none"};svgedit.draw.Drawing.prototype.setLayerVisibility=function(b,p){if(typeof p!="boolean")return null;for(var w=null,c=0;c<
+this.getNumLayers();++c)if(this.getLayerName(c)==b){w=this.all_layers[c][1];break}if(!w)return null;w.getAttribute("display");w.setAttribute("display",p?"inline":"none");return w};svgedit.draw.Drawing.prototype.getLayerOpacity=function(b){for(var p=0;p<this.getNumLayers();++p)if(this.getLayerName(p)==b){(b=this.all_layers[p][1].getAttribute("opacity"))||(b="1.0");return parseFloat(b)}return null};svgedit.draw.Drawing.prototype.setLayerOpacity=function(b,p){if(!(typeof p!="number"||p<0||p>1))for(var w=
+0;w<this.getNumLayers();++w)if(this.getLayerName(w)==b){this.all_layers[w][1].setAttribute("opacity",p);break}}})();svgedit=svgedit||{};
+(function(){if(!svgedit.path)svgedit.path={};var a={pathNodeTooltip:"Drag node to move it. Double-click node to change segment type",pathCtrlPtTooltip:"Drag control point to adjust curve properties"},s={2:["x","y"],4:["x","y"],6:["x","y","x1","y1","x2","y2"],8:["x","y","x1","y1"],10:["x","y","r1","r2","angle","largeArcFlag","sweepFlag"],12:["x"],14:["y"],16:["x","y","x2","y2"],18:["x","y"]},g=[],b=false,p={};svgedit.path.setLinkControlPoints=function(f){b=f};var w=svgedit.path.path=null;svgedit.path.init=
+function(f){w=f;g=[0,"ClosePath"];$.each(["Moveto","Lineto","CurvetoCubic","CurvetoQuadratic","Arc","LinetoHorizontal","LinetoVertical","CurvetoCubicSmooth","CurvetoQuadraticSmooth"],function(d,n){g.push(n+"Abs");g.push(n+"Rel")})};svgedit.path.insertItemBefore=function(f,d,n){f=f.pathSegList;if(svgedit.browser.supportsPathInsertItemBefore())f.insertItemBefore(d,n);else{for(var v=f.numberOfItems,B=[],q=0;q<v;q++){var L=f.getItem(q);B.push(L)}f.clear();for(q=0;q<v;q++){q==n&&f.appendItem(d);f.appendItem(B[q])}}};
+svgedit.path.ptObjToArr=function(f,d){for(var n=s[f],v=n.length,B=Array(v),q=0;q<v;q++)B[q]=d[n[q]];return B};svgedit.path.getGripPt=function(f,d){var n={x:d?d.x:f.item.x,y:d?d.y:f.item.y},v=f.path;if(v.matrix)n=svgedit.math.transformPoint(n.x,n.y,v.matrix);n.x*=w.getCurrentZoom();n.y*=w.getCurrentZoom();return n};svgedit.path.getPointFromGrip=function(f,d){var n={x:f.x,y:f.y};if(d.matrix){f=svgedit.math.transformPoint(n.x,n.y,d.imatrix);n.x=f.x;n.y=f.y}n.x/=w.getCurrentZoom();n.y/=w.getCurrentZoom();
+return n};svgedit.path.addPointGrip=function(f,d,n){var v=svgedit.path.getGripContainer(),B=svgedit.utilities.getElem("pathpointgrip_"+f);if(!B){B=document.createElementNS("http://www.w3.org/2000/svg","rect");svgedit.utilities.assignAttributes(B,{id:"pathpointgrip_"+f,display:"none",width:svgedit.browser.isTouch()?30:5,height:svgedit.browser.isTouch()?30:5,fill:"#fff",stroke:"#4F80FF","shape-rendering":"crispEdges","stroke-width":1,cursor:"move",style:"pointer-events:all","xlink:title":a.pathNodeTooltip});
+B=v.appendChild(B);$("#pathpointgrip_"+f).dblclick(function(){svgedit.path.path&&svgedit.path.path.setSegType()})}if(d&&n)svgedit.utilities.assignAttributes(B,{x:d-(svgedit.browser.isTouch()?15:2.5),y:n-(svgedit.browser.isTouch()?15:2.5),display:"inline"});return B};svgedit.path.getGripContainer=function(){var f=svgedit.utilities.getElem("pathpointgrip_container");if(!f){f=svgedit.utilities.getElem("selectorParentGroup").appendChild(document.createElementNS("http://www.w3.org/2000/svg","g"));f.id=
+"pathpointgrip_container"}return f};svgedit.path.addCtrlGrip=function(f){var d=svgedit.utilities.getElem("ctrlpointgrip_"+f);if(d)return d;d=document.createElementNS("http://www.w3.org/2000/svg","circle");svgedit.utilities.assignAttributes(d,{id:"ctrlpointgrip_"+f,display:"none",r:svgedit.browser.isTouch()?15:3,fill:"#4F80FF",stroke:"#4F80FF","stroke-opacity":0,"stroke-width":"3",cursor:"move",style:"pointer-events:all","xlink:title":a.pathCtrlPtTooltip});svgedit.path.getGripContainer().appendChild(d);
+return d};svgedit.path.getCtrlLine=function(f){var d=svgedit.utilities.getElem("ctrlLine_"+f);if(d)return d;d=document.createElementNS("http://www.w3.org/2000/svg","line");svgedit.utilities.assignAttributes(d,{id:"ctrlLine_"+f,stroke:"#4F80FF","stroke-width":1,style:"pointer-events:none"});svgedit.path.getGripContainer().appendChild(d);return d};svgedit.path.getPointGrip=function(f,d){var n=svgedit.path.addPointGrip(f.index);if(d){var v=svgedit.path.getGripPt(f);svgedit.utilities.assignAttributes(n,
+{x:v.x-(svgedit.browser.isTouch()?15:2.5),y:v.y-(svgedit.browser.isTouch()?15:2.5),display:"inline"})}return n};svgedit.path.getControlPoints=function(f){var d=f.item,n=f.index;if(!d||!("x1"in d)||!("x2"in d))return null;var v={};svgedit.path.getGripContainer();for(var B=[svgedit.path.path.segs[n-1].item,d],q=1;q<3;q++){var L=n+"c"+q,Q=v["c"+q+"_line"]=svgedit.path.getCtrlLine(L),K=svgedit.path.getGripPt(f,{x:d["x"+q],y:d["y"+q]}),I=svgedit.path.getGripPt(f,{x:B[q-1].x,y:B[q-1].y});svgedit.utilities.assignAttributes(Q,
+{x1:K.x,y1:K.y,x2:I.x,y2:I.y,display:"inline"});v["c"+q+"_line"]=Q;pointGrip=v["c"+q]=svgedit.path.addCtrlGrip(L);svgedit.utilities.assignAttributes(pointGrip,{cx:K.x,cy:K.y,display:"inline"});v["c"+q]=pointGrip}return v};svgedit.path.replacePathSeg=function(f,d,n,v){v=v||svgedit.path.path.elem;f=v["createSVGPathSeg"+g[f]].apply(v,n);if(svgedit.browser.supportsPathReplaceItem())v.pathSegList.replaceItem(f,d);else{n=v.pathSegList;v=n.numberOfItems;for(var B=[],q=0;q<v;q++){var L=n.getItem(q);B.push(L)}n.clear();
+for(q=0;q<v;q++)q==d?n.appendItem(f):n.appendItem(B[q])}};svgedit.path.getSegSelector=function(f,d){var n=f.index,v=svgedit.utilities.getElem("segline_"+n);if(!v){var B=svgedit.path.getGripContainer();v=document.createElementNS("http://www.w3.org/2000/svg","path");svgedit.utilities.assignAttributes(v,{id:"segline_"+n,display:"none",fill:"none",stroke:"#0ff","stroke-opacity":1,"shape-rendering":"crispEdges","stroke-width":2,style:"pointer-events:none",d:"M0,0 0,0"});B.appendChild(v)}if(d){n=f.prev;
+if(!n){v.setAttribute("display","none");return v}n=svgedit.path.getGripPt(n);svgedit.path.replacePathSeg(2,0,[n.x,n.y],v);B=svgedit.path.ptObjToArr(f.type,f.item,true);for(var q=0;q<B.length;q+=2){n=svgedit.path.getGripPt(f,{x:B[q],y:B[q+1]});B[q]=n.x;B[q+1]=n.y}svgedit.path.replacePathSeg(f.type,1,B,v)}return v};svgedit.path.smoothControlPoints=this.smoothControlPoints=function(f,d,n){var v=f.x-n.x,B=f.y-n.y,q=d.x-n.x,L=d.y-n.y;if((v!=0||B!=0)&&(q!=0||L!=0)){f=Math.atan2(B,v);d=Math.atan2(L,q);v=
+Math.sqrt(v*v+B*B);q=Math.sqrt(q*q+L*L);B=w.getSVGRoot().createSVGPoint();L=w.getSVGRoot().createSVGPoint();if(f<0)f+=2*Math.PI;if(d<0)d+=2*Math.PI;var Q=Math.abs(f-d),K=Math.abs(Math.PI-Q)/2;if(f-d>0){f=Q<Math.PI?f+K:f-K;d=Q<Math.PI?d-K:d+K}else{f=Q<Math.PI?f-K:f+K;d=Q<Math.PI?d+K:d-K}B.x=v*Math.cos(f)+n.x;B.y=v*Math.sin(f)+n.y;L.x=q*Math.cos(d)+n.x;L.y=q*Math.sin(d)+n.y;return[B,L]}};svgedit.path.Segment=function(f,d){this.selected=false;this.index=f;this.item=d;this.type=d.pathSegType;this.ctrlpts=
+[];this.segsel=this.ptgrip=null};svgedit.path.Segment.prototype.showCtrlPts=function(f){for(var d in this.ctrlpts)this.ctrlpts[d].setAttribute("display",f?"inline":"none")};svgedit.path.Segment.prototype.selectCtrls=function(){$("#ctrlpointgrip_"+this.index+"c1, #ctrlpointgrip_"+this.index+"c2").attr("fill","#4F80FF")};svgedit.path.Segment.prototype.show=function(f){if(this.ptgrip){this.ptgrip.setAttribute("display",f?"inline":"none");this.segsel.setAttribute("display",f?"inline":"none");this.showCtrlPts(f)}};
+svgedit.path.Segment.prototype.select=function(f){if(this.ptgrip){this.ptgrip.setAttribute("stroke",f?"#4F80FF":"#4F80FF");this.ptgrip.setAttribute("fill",f?"#4F80FF":"#fff");this.segsel.setAttribute("display",f?"inline":"none");this.ctrlpts&&this.selectCtrls(f);this.selected=f}};svgedit.path.Segment.prototype.addGrip=function(){this.ptgrip=svgedit.path.getPointGrip(this,true);this.ctrlpts=svgedit.path.getControlPoints(this,true);this.segsel=svgedit.path.getSegSelector(this,true)};svgedit.path.Segment.prototype.update=
+function(f){if(this.ptgrip){var d=svgedit.path.getGripPt(this),n=svgedit.browser.isTouch()?15:2.5;svgedit.utilities.assignAttributes(this.ptgrip,this.ptgrip.nodeName=="rect"?{x:d.x-n,y:d.y-n}:{cx:d.x,cy:d.y});svgedit.path.getSegSelector(this,true);if(this.ctrlpts){if(f){this.item=svgedit.path.path.elem.pathSegList.getItem(this.index);this.type=this.item.pathSegType}svgedit.path.getControlPoints(this)}}};svgedit.path.Segment.prototype.move=function(f,d){var n=this.item;n=this.ctrlpts?[n.x+=f,n.y+=
+d,n.x1,n.y1,n.x2+=f,n.y2+=d]:[n.x+=f,n.y+=d];svgedit.path.replacePathSeg(this.type,this.index,n);if(this.next&&this.next.ctrlpts){n=this.next.item;n=[n.x,n.y,n.x1+=f,n.y1+=d,n.x2,n.y2];svgedit.path.replacePathSeg(this.next.type,this.next.index,n)}if(this.mate){n=this.mate.item;n=[n.x+=f,n.y+=d];svgedit.path.replacePathSeg(this.mate.type,this.mate.index,n)}this.update(true);this.next&&this.next.update(true)};svgedit.path.Segment.prototype.setLinked=function(f){var d,n,v;if(f==2){n=1;d=this.next;if(!d)return;
+v=this.item}else{n=2;d=this.prev;if(!d)return;v=d.item}var B=d.item;B["x"+n]=v.x+v.x-this.item["x"+f];B["y"+n]=v.y+v.y-this.item["y"+f];svgedit.path.replacePathSeg(d.type,d.index,[B.x,B.y,B.x1,B.y1,B.x2,B.y2]);d.update(true)};svgedit.path.Segment.prototype.moveCtrl=function(f,d,n){var v=this.item;v["x"+f]+=d;v["y"+f]+=n;svgedit.path.replacePathSeg(this.type,this.index,[v.x,v.y,v.x1,v.y1,v.x2,v.y2]);this.update(true)};svgedit.path.Segment.prototype.setType=function(f,d){svgedit.path.replacePathSeg(f,
+this.index,d);this.type=f;this.item=svgedit.path.path.elem.pathSegList.getItem(this.index);this.showCtrlPts(f===6);this.ctrlpts=svgedit.path.getControlPoints(this);this.update(true)};svgedit.path.Path=function(f){if(!f||f.tagName!=="path")throw"svgedit.path.Path constructed without a <path> element";this.elem=f;this.segs=[];this.selected_pts=[];svgedit.path.path=this;this.init()};svgedit.path.Path.prototype.init=function(){$(svgedit.path.getGripContainer()).find("*").attr("display","none");var f=
+this.elem.pathSegList,d=f.numberOfItems;this.segs=[];this.selected_pts=[];this.first_seg=null;for(var n=0;n<d;n++){var v=f.getItem(n);v=new svgedit.path.Segment(n,v);v.path=this;this.segs.push(v)}f=this.segs;v=null;for(n=0;n<d;n++){var B=f[n],q=n+1>=d?null:f[n+1],L=n-1<0?null:f[n-1];if(B.type===2){if(L&&L.type!==1){q=f[v];q.next=f[v+1];q.next.prev=q;q.addGrip()}v=n}else if(q&&q.type===1){B.next=f[v+1];B.next.prev=B;B.mate=f[v];B.addGrip();if(this.first_seg==null)this.first_seg=B}else if(q){if(B.type!==
+1){B.addGrip();if(q&&q.type!==2){B.next=q;B.next.prev=B}}}else if(B.type!==1){q=f[v];q.next=f[v+1];q.next.prev=q;q.addGrip();B.addGrip();if(!this.first_seg)this.first_seg=f[v]}}return this};svgedit.path.Path.prototype.eachSeg=function(f){for(var d=this.segs.length,n=0;n<d;n++)if(f.call(this.segs[n],n)===false)break};svgedit.path.Path.prototype.addSeg=function(f){var d=this.segs[f];if(d.prev){var n=d.prev,v;switch(d.item.pathSegType){case 4:var B=(d.item.x+n.item.x)/2,q=(d.item.y+n.item.y)/2;v=this.elem.createSVGPathSegLinetoAbs(B,
+q);break;case 6:v=(n.item.x+d.item.x1)/2;var L=(d.item.x1+d.item.x2)/2,Q=(d.item.x2+d.item.x)/2,K=(v+L)/2;L=(L+Q)/2;B=(K+L)/2;var I=(n.item.y+d.item.y1)/2,S=(d.item.y1+d.item.y2)/2;n=(d.item.y2+d.item.y)/2;var R=(I+S)/2;S=(S+n)/2;q=(R+S)/2;v=this.elem.createSVGPathSegCurvetoCubicAbs(B,q,v,I,K,R);svgedit.path.replacePathSeg(d.type,f,[d.item.x,d.item.y,L,S,Q,n])}svgedit.path.insertItemBefore(this.elem,v,f)}};svgedit.path.Path.prototype.deleteSeg=function(f){var d=this.segs[f],n=this.elem.pathSegList;
+d.show(false);var v=d.next;if(d.mate){var B=[v.item.x,v.item.y];svgedit.path.replacePathSeg(2,v.index,B);svgedit.path.replacePathSeg(4,d.index,B);n.removeItem(d.mate.index)}else{if(!d.prev){B=[v.item.x,v.item.y];svgedit.path.replacePathSeg(2,d.next.index,B)}n.removeItem(f)}};svgedit.path.Path.prototype.subpathIsClosed=function(f){var d=false;svgedit.path.path.eachSeg(function(n){if(n<=f)return true;if(this.type===2)return false;else if(this.type===1){d=true;return false}});return d};svgedit.path.Path.prototype.removePtFromSelection=
+function(f){var d=this.selected_pts.indexOf(f);if(d!=-1){this.segs[f].select(false);this.selected_pts.splice(d,1)}};svgedit.path.Path.prototype.clearSelection=function(){this.eachSeg(function(){this.select(false)});this.selected_pts=[]};svgedit.path.Path.prototype.storeD=function(){this.last_d=this.elem.getAttribute("d")};svgedit.path.Path.prototype.show=function(f){this.eachSeg(function(){this.show(f)});f&&this.selectPt(this.first_seg.index);return this};svgedit.path.Path.prototype.movePts=function(f,
+d){for(var n=this.selected_pts.length;n--;)this.segs[this.selected_pts[n]].move(f,d)};svgedit.path.Path.prototype.moveCtrl=function(f,d){var n=this.segs[this.selected_pts[0]];n.moveCtrl(this.dragctrl,f,d);b&&n.setLinked(this.dragctrl)};svgedit.path.Path.prototype.setSegType=function(f){this.storeD();for(var d=this.selected_pts.length,n;d--;){var v=this.segs[this.selected_pts[d]],B=v.prev;if(B){if(!f){n="Toggle Path Segment Type";f=v.type==6?4:6}f-=0;var q=v.item.x,L=v.item.y,Q=B.item.x;B=B.item.y;
+var K;switch(f){case 6:if(v.olditem){Q=v.olditem;K=[q,L,Q.x1,Q.y1,Q.x2,Q.y2]}else{K=q-Q;var I=L-B;K=[q,L,Q+K/3,B+I/3,q-K/3,L-I/3]}break;case 4:K=[q,L];v.olditem=v.item}v.setType(f,K)}}svgedit.path.path.endChanges(n)};svgedit.path.Path.prototype.selectPt=function(f,d){this.clearSelection();f==null&&this.eachSeg(function(n){if(this.prev)f=n});this.addPtsToSelection(f);if(d){this.dragctrl=d;b&&this.segs[f].setLinked(d)}};svgedit.path.Path.prototype.update=function(){var f=this.elem;if(svgedit.utilities.getRotationAngle(f)){this.matrix=
+svgedit.math.getMatrix(f);this.imatrix=this.matrix.inverse()}else this.imatrix=this.matrix=null;this.eachSeg(function(d){this.item=f.pathSegList.getItem(d);this.update()});return this};svgedit.path.getPath_=function(f){var d=p[f.id];d||(d=p[f.id]=new svgedit.path.Path(f));return d};svgedit.path.removePath_=function(f){f in p&&delete p[f]};var c=function(f,d,n,v,B,q,L){dx=f-n;dy=d-v;r=Math.sqrt(dx*dx+dy*dy);theta=Math.atan2(dy,dx)+L;dx=r*Math.cos(theta)+n;dy=r*Math.sin(theta)+v;dx-=B;dy-=q;r=Math.sqrt(dx*
+dx+dy*dy);theta=Math.atan2(dy,dx)-L;return{x:(r*Math.cos(theta)+B)/1,y:(r*Math.sin(theta)+q)/1}};svgedit.path.recalcRotatedPath=function(){var f=svgedit.path.path.elem,d=svgedit.utilities.getRotationAngle(f,true);if(d){var n=svgedit.utilities.getBBox(f),v=svgedit.path.path.oldbbox,B=v.x+v.width/2;v=v.y+v.height/2;var q=n.x+n.width/2;n=n.y+n.height/2;q=q-B;var L=n-v;n=Math.sqrt(q*q+L*L);L=Math.atan2(L,q)+d;q=n*Math.cos(L)+B;n=n*Math.sin(L)+v;L=f.pathSegList;for(var Q=L.numberOfItems;Q;){Q-=1;var K=
+L.getItem(Q),I=K.pathSegType;if(I!=1){var S=c(K.x,K.y,B,v,q,n,d);S=[S.x,S.y];if(K.x1!=null&&K.x2!=null){c_vals1=c(K.x1,K.y1,B,v,q,n,d);c_vals2=c(K.x2,K.y2,B,v,q,n,d);S.splice(S.length,0,c_vals1.x,c_vals1.y,c_vals2.x,c_vals2.y)}svgedit.path.replacePathSeg(I,Q,S)}}svgedit.utilities.getBBox(f);B=svgroot.createSVGTransform();f=svgedit.transformlist.getTransformList(f);B.setRotate(d*180/Math.PI,q,n);f.replaceItem(B,0)}};svgedit.path.clearData=function(){p={}}})();if(!window.console){window.console={};window.console.log=function(){};window.console.dir=function(){}}if(window.opera){window.console.log=function(a){opera.postError(a)};window.console.dir=function(){}}
+(function(){var a=jQuery.fn.attr;jQuery.fn.attr=function(s,g){var b=this.length;if(!b)return a.apply(this,arguments);for(var p=0;p<b;p++){var w=this[p];if(w.namespaceURI==="http://www.w3.org/2000/svg")if(g!==undefined)w.setAttribute(s,g);else if($.isArray(s)){b=s.length;for(p={};b--;){var c=s[b],f=w.getAttribute(c);if(f||f==="0")f=isNaN(f)?f:f-0;p[c]=f}return p}else if(typeof s==="object")for(c in s)w.setAttribute(c,s[c]);else{if((f=w.getAttribute(s))||f==="0")f=isNaN(f)?f:f-0;return f}else return a.apply(this,
+arguments)}return this}})();
+$.SvgCanvas=function(a,s){function g(e,k){for(var l=svgedit.utilities.getBBox(e),C=0;C<2;C++){var A=C===0?"fill":"stroke",G=e.getAttribute(A);if(G&&G.indexOf("url(")===0){G=P(G);if(G.tagName==="linearGradient"){var D=G.getAttribute("x1")||0,z=G.getAttribute("y1")||0,F=G.getAttribute("x2")||1,h=G.getAttribute("y2")||0;D=l.width*D+l.x;z=l.height*z+l.y;F=l.width*F+l.x;h=l.height*h+l.y;D=N(D,z,k);h=N(F,h,k);F={};F.x1=(D.x-l.x)/l.width;F.y1=(D.y-l.y)/l.height;F.x2=(h.x-l.x)/l.width;F.y2=(h.y-l.y)/l.height;
+G=G.cloneNode(true);$(G).attr(F);G.id=ka();gb().appendChild(G);e.setAttribute(A,"url(#"+G.id+")")}}}}var b="http://www.w3.org/2000/svg",p={show_outside_canvas:true,selectNew:true,dimensions:[640,480]};s&&$.extend(p,s);var w=p.dimensions,c=this,f=a.ownerDocument,d=f.importNode(svgedit.utilities.text2xml('<svg id="svgroot" xmlns="'+b+'" xlinkns="http://www.w3.org/1999/xlink" width="'+w[0]+'" height="'+w[1]+'" x="'+w[0]+'" y="'+w[1]+'" overflow="visible"><defs><filter id="canvashadow" filterUnits="objectBoundingBox"><feGaussianBlur in="SourceAlpha" stdDeviation="4" result="blur"/><feOffset in="blur" dx="5" dy="5" result="offsetBlur"/><feMerge><feMergeNode in="offsetBlur"/><feMergeNode in="SourceGraphic"/></feMerge></filter></defs></svg>').documentElement,
+true);a.appendChild(d);var n=f.createElementNS(b,"svg");(c.clearSvgContentElement=function(){for(;n.firstChild;)n.removeChild(n.firstChild);$(n).attr({id:"svgcontent",width:w[0],height:w[1],x:w[0],y:w[1],overflow:p.show_outside_canvas?"visible":"hidden",xmlns:b,"xmlns:se":"http://svg-edit.googlecode.com","xmlns:xlink":"http://www.w3.org/1999/xlink"}).appendTo(d);var e=f.createComment(" Created with Method Draw - http://github.com/duopixel/Method-Draw/ ");n.appendChild(e)})();var v="svg_";c.setIdPrefix=
+function(e){v=e};c.current_drawing_=new svgedit.draw.Drawing(n,v);var B=c.getCurrentDrawing=function(){return c.current_drawing_},q=1,L=null,Q={shape:{fill:(p.initFill.color=="none"?"":"#")+p.initFill.color,fill_paint:null,fill_opacity:p.initFill.opacity,stroke:"#"+p.initStroke.color,stroke_paint:null,stroke_opacity:p.initStroke.opacity,stroke_width:p.initStroke.width,stroke_dasharray:"none",opacity:p.initOpacity}};Q.text=$.extend(true,{},Q.shape);$.extend(Q.text,{fill:"#000000",stroke_width:0,font_size:24,
+font_family:"Helvetica, Arial, sans-serif"});var K=Q.shape,I=Array(1),S=this.addSvgElementFromJson=function(e){var k=svgedit.utilities.getElem(e.attr.id),l=B().getCurrentLayer();if(k&&e.element!=k.tagName){l.removeChild(k);k=null}if(!k){k=f.createElementNS(b,e.element);if(l)(L||l).appendChild(k)}e.curStyles&&svgedit.utilities.assignAttributes(k,{fill:K.fill,stroke:K.stroke,"stroke-width":K.stroke_width,"stroke-dasharray":K.stroke_dasharray,"stroke-opacity":K.stroke_opacity,"fill-opacity":K.fill_opacity,
+opacity:K.opacity/2,style:"pointer-events:inherit"},100);svgedit.utilities.assignAttributes(k,e.attr,100);svgedit.utilities.cleanupElement(k);return k},R=c.getTransformList=svgedit.transformlist.getTransformList,N=svgedit.math.transformPoint,ga=c.matrixMultiply=svgedit.math.matrixMultiply,oa=c.hasMatrixTransform=svgedit.math.hasMatrixTransform,Y=c.transformListToTransform=svgedit.math.transformListToTransform,V=svgedit.math.snapToAngle,ea=svgedit.math.getMatrix;svgedit.units.init({getBaseUnit:function(){return p.baseUnit},
+getElement:svgedit.utilities.getElem,getHeight:function(){return n.getAttribute("height")/q},getWidth:function(){return n.getAttribute("width")/q},getRoundDigits:function(){return $a.round_digits}});var Ba=c.convertToNum=svgedit.units.convertToNum;svgedit.utilities.init({getDOMDocument:function(){return f},getDOMContainer:function(){return a},getSVGRoot:function(){return d},getSelectedElements:function(){return I},getSVGContent:function(){return n}});var ja=c.getUrlFromAttr=svgedit.utilities.getUrlFromAttr,
+ca=c.getHref=svgedit.utilities.getHref,U=c.setHref=svgedit.utilities.setHref,Z=svgedit.utilities.getPathBBox;c.getBBox=svgedit.utilities.getBBox;var na=c.getRotationAngle=svgedit.utilities.getRotationAngle,pa=c.getElem=svgedit.utilities.getElem,ma=c.assignAttributes=svgedit.utilities.assignAttributes,la=this.cleanupElement=svgedit.utilities.cleanupElement,ya=svgedit.sanitize.getNSMap(),za=c.sanitizeSvg=svgedit.sanitize.sanitizeSvg,Ja=svgedit.history.MoveElementCommand,Ia=svgedit.history.InsertElementCommand,
+Ha=svgedit.history.RemoveElementCommand,Ma=svgedit.history.ChangeElementCommand,Da=svgedit.history.BatchCommand;c.undoMgr=new svgedit.history.UndoManager({handleHistoryEvent:function(e,k){var l=svgedit.history.HistoryEventTypes;if(e==l.BEFORE_UNAPPLY||e==l.BEFORE_APPLY)c.clearSelection();else if(e==l.AFTER_APPLY||e==l.AFTER_UNAPPLY){var C=k.elements();c.pathActions.clear();M("changed",C);C=k.type();l=e==l.AFTER_APPLY;if(C==Ja.type())(l?k.newParent:k.oldParent)==n&&c.identifyLayers();else if(C==Ia.type()||
+C==Ha.type()){k.parent==n&&c.identifyLayers();if(C==Ia.type())l&&Ta(k.elem);else l||Ta(k.elem);k.elem.tagName==="use"&&Gb(k.elem)}else if(C==Ma.type()){k.elem.tagName=="title"&&k.elem.parentNode.parentNode==n&&c.identifyLayers();l=l?k.newValues:k.oldValues;l.stdDeviation&&c.setBlurOffsets(k.elem.parentNode,l.stdDeviation)}}}});var wa=function(e){c.undoMgr.addCommandToHistory(e)};svgedit.select.init(p,{createSVGElement:function(e){return c.addSvgElementFromJson(e)},svgRoot:function(){return d},svgContent:function(){return n},
+currentZoom:function(){return q},getStrokedBBox:function(e){return c.getStrokedBBox([e])}});var ra=this.selectorManager=svgedit.select.getSelectorManager();svgedit.path.init({getCurrentZoom:function(){return q},getSVGRoot:function(){return d}});svgedit.utilities.snapToGrid=function(e){var k=p.snappingStep,l=p.baseUnit;if(l!=="px")k*=svgedit.units.getTypeMap()[l];return e=Math.round(e/k)*k};var va=svgedit.utilities.snapToGrid,kb={exportNoBlur:"Blurred elements will appear as un-blurred",exportNoforeignObject:"foreignObject elements will not appear",
+exportNoDashArray:"Strokes will appear filled",exportNoText:"Text may not appear as expected"},vb=["clip-path","fill","filter","marker-end","marker-mid","marker-start","mask","stroke"],cb=$.data,Ta=function(e){var k=$(e).attr(vb),l;for(l in k){var C=k[l];if(C&&C.indexOf("url(")===0){C=ja(C).substr(1);if(!pa(C)){gb().appendChild(sb[C]);delete sb[C]}}}e=e.getElementsByTagName("*");if(e.length){k=0;for(l=e.length;k<l;k++)Ta(e[k])}},Va={},Fa=p.imgPath+"logo.png",ta=[],$a={round_digits:5},Ka=false,Sa=
+null,Ga="select",db="none",lb={},Ua=Q.text,Xa=K,wb=null,sa=null,hb=[],eb={},sb={};c.clipBoard=[];var ib=this.runExtensions=function(e,k,l){var C=false;if(l)C=[];$.each(eb,function(A,G){if(e in G)if(l)C.push(G[e](k));else C=G[e](k)});return C};this.addExtension=function(e,k){if(e in eb)console.log('Cannot add extension "'+e+'", an extension by that name already exists"');else{var l=$.isFunction(k)?k($.extend(c.getPrivateMethods(),{svgroot:d,svgcontent:n,nonce:B().getNonce(),selectorManager:ra})):k;
+eb[e]=l;M("extension_added",l)}};var ab=this.round=function(e){return parseInt(e*q)/q},ob=this.getIntersectionList=function(e){if(sa==null)return null;var k=L||B().getCurrentLayer();hb.length||(hb=fb(k));var l=null;try{l=k.getIntersectionList(e,null)}catch(C){}if(l==null||typeof l.item!="function"){l=[];if(e)e=e;else{e=sa.getBBox();k={};for(var A in e)k[A]=e[A]/q;e=k}for(A=hb.length;A--;)e.width&&e.width&&svgedit.math.rectsIntersect(e,hb[A].bbox)&&l.push(hb[A].elem)}return l};getStrokedBBox=this.getStrokedBBox=
+function(e){e||(e=pb());if(!e.length)return false;var k=function(h){try{var m=svgedit.utilities.getBBox(h),o=svgedit.utilities.getRotationAngle(h);if(o&&o%90||svgedit.math.hasMatrixTransform(svgedit.transformlist.getTransformList(h))){o=false;if(["ellipse","path","line","polyline","polygon"].indexOf(h.tagName)>=0)m=o=c.convertToPath(h,true);else if(h.tagName=="rect"){var u=h.getAttribute("rx"),E=h.getAttribute("ry");if(u||E)m=o=c.convertToPath(h,true)}if(!o){var H=h.cloneNode(true),J=document.createElementNS(b,
+"g"),O=h.parentNode;O.appendChild(J);J.appendChild(H);m=svgedit.utilities.bboxToObj(J.getBBox());O.removeChild(J)}}return m}catch(X){console.log(h,X)}},l;$.each(e,function(){if(!l)if(this.parentNode)l=k(this)});if(l==null)return null;var C=l.x+l.width,A=l.y+l.height,G=l.x,D=l.y,z=function(h){var m=h.getAttribute("stroke-width"),o=0;if(h.getAttribute("stroke")!="none"&&!isNaN(m))o+=m/2;return o},F=[];$.each(e,function(h,m){var o=k(m);if(o){var u=z(m);G=Math.min(G,o.x-u);D=Math.min(D,o.y-u);F.push(o)}});
+l.x=G;l.y=D;$.each(e,function(h,m){var o=F[h];if(o&&m.nodeType==1){var u=z(m);C=Math.max(C,o.x+o.width+u);A=Math.max(A,o.y+o.height+u)}});l.width=C-G;l.height=A-D;return l};var pb=this.getVisibleElements=function(e){e||(e=$(n).children());e.find("#canvas_background").length&&e.splice(0,1);var k=[];$(e).children().each(function(l,C){try{C.getBBox()&&k.push(C)}catch(A){}});return k.reverse()},fb=this.getVisibleElementsAndBBoxes=function(e){e||(e=$(n).children());var k=[];$(e).children().each(function(l,
+C){try{C.getBBox()&&k.push({elem:C,bbox:getStrokedBBox([C])})}catch(A){}});return k.reverse()},tb=this.groupSvgElem=function(e){var k=document.createElementNS(b,"g");e.parentNode.replaceChild(k,e);$(k).append(e).data("gsvg",e)[0].id=ka()},ia=function(e){var k=document.createElementNS(e.namespaceURI,e.nodeName);k.removeAttribute("id");$.each(e.attributes,function(C,A){A.localName!="-moz-math-font-style"&&k.setAttributeNS(A.namespaceURI,A.nodeName,A.nodeValue)});if(svgedit.browser.isWebkit()&&e.nodeName==
+"path"){var l=La.convertPath(e);k.setAttribute("d",l)}$.each(e.childNodes,function(C,A){switch(A.nodeType){case 1:k.appendChild(ia(A));break;case 3:k.textContent=A.nodeValue}});if($(e).data("gsvg"))$(k).data("gsvg",k.firstChild);else if($(e).data("symbol")){e=$(e).data("symbol");$(k).data("ref",e).data("symbol",e)}else k.tagName=="image"&&Fb(k);k.id=ka();return k},aa,ka,M;(function(e){var k={};aa=e.getId=function(){return B().getId()};ka=e.getNextId=function(){return B().getNextId()};M=e.call=function(l,
+C){if(k[l])return k[l](this,C)};e.bind=function(l,C){var A=k[l];k[l]=C;return A}})(c);this.prepareSvg=function(e){this.sanitizeSvg(e.documentElement);e=e.getElementsByTagNameNS(b,"path");for(var k=0,l=e.length;k<l;++k){var C=e[k];C.setAttribute("d",La.convertPath(C));La.fixEnd(C)}};var P=this.getRefElem=function(e){return pa(ja(e).substr(1))},da=function(e){if(!svgedit.browser.isGecko())return e;var k=e.cloneNode(true);e.parentNode.insertBefore(k,e);e.parentNode.removeChild(e);ra.releaseSelector(e);
+I[0]=k;ra.requestSelector(k).showGrips(true);return k};this.setRotationAngle=function(e,k){e=parseFloat(e);var l=I[0];if(l){var C=l.getAttribute("transform"),A=svgedit.utilities.getBBox(l),G=A.x+A.width/2,D=A.y+A.height/2;A=R(l);A.numberOfItems>0&&A.getItem(0).type==4&&A.removeItem(0);if(e!=0){G=N(G,D,Y(A).matrix);D=d.createSVGTransform();D.setRotate(e,G.x,G.y);A.numberOfItems?A.insertItemBefore(D,0):A.appendItem(D)}else A.numberOfItems==0&&l.removeAttribute("transform");if(!k){A=l.getAttribute("transform");
+l.setAttribute("transform",C);Ya("transform",A,I);M("changed",I)}pa("pathpointgrip_container");l=ra.requestSelector(I[0]);l.resize();l.updateGripCursors(e)}};var Ea=this.recalculateAllSelectedDimensions=function(){for(var e=new Da(db=="none"?"position":"size"),k=I.length;k--;){var l=Ra(I[k]);l&&e.addSubCommand(l)}if(!e.isEmpty()){wa(e);M("changed",I)}},Oa=[0,"z","M","m","L","l","C","c","Q","q","A","a","H","h","V","v","S","s","T","t"],Wa=function(e){console.log([e.a,e.b,e.c,e.d,e.e,e.f])},Za=this.remapElement=
+function(e,k,l){var C=p.gridSnapping&&e.parentNode.parentNode.localName==="svg",A=function(){if(C)for(var o in k)k[o]=va(k[o]);ma(e,k,1E3,true)};box=svgedit.utilities.getBBox(e);for(var G=0;G<2;G++){var D=G===0?"fill":"stroke",z=e.getAttribute(D);if(z&&z.indexOf("url(")===0)if(l.a<0||l.d<0){z=P(z).cloneNode(true);if(l.a<0){var F=z.getAttribute("x1"),h=z.getAttribute("x2");z.setAttribute("x1",-(F-1));z.setAttribute("x2",-(h-1))}if(l.d<0){F=z.getAttribute("y1");h=z.getAttribute("y2");z.setAttribute("y1",
+-(F-1));z.setAttribute("y2",-(h-1))}z.id=ka();gb().appendChild(z);e.setAttribute(D,"url(#"+z.id+")")}}G=e.tagName;if(G==="g"||G==="text"||G==="use")if(l.a==1&&l.b==0&&l.c==0&&l.d==1&&(l.e!=0||l.f!=0)){D=Y(e).matrix;D=ga(D.inverse(),l,D);k.x=parseFloat(k.x)+D.e;k.y=parseFloat(k.y)+D.f}else{D=R(e);z=d.createSVGTransform();z.setMatrix(ga(Y(D).matrix,l));D.clear();D.appendItem(z)}switch(G){case "foreignObject":case "rect":case "image":if(G==="image"&&(l.a<0||l.d<0)){D=R(e);z=d.createSVGTransform();z.setMatrix(ga(Y(D).matrix,
+l));D.clear();D.appendItem(z)}else{D=N(k.x,k.y,l);k.width=l.a*k.width;k.height=l.d*k.height;k.x=D.x+Math.min(0,k.width);k.y=D.y+Math.min(0,k.height);k.width=Math.abs(k.width);k.height=Math.abs(k.height)}A();break;case "ellipse":G=N(k.cx,k.cy,l);k.cx=G.x;k.cy=G.y;k.rx=l.a*k.rx;k.ry=l.d*k.ry;k.rx=Math.abs(k.rx);k.ry=Math.abs(k.ry);A();break;case "circle":G=N(k.cx,k.cy,l);k.cx=G.x;k.cy=G.y;G=svgedit.math.transformBox(box.x,box.y,box.width,box.height,l);k.r=Math.min((G.tr.x-G.tl.x)/2,(G.bl.y-G.tl.y)/
+2);if(k.r)k.r=Math.abs(k.r);A();break;case "line":D=N(k.x1,k.y1,l);F=N(k.x2,k.y2,l);k.x1=D.x;k.y1=D.y;k.x2=F.x;k.y2=F.y;case "text":l=e.querySelectorAll("tspan");for(G=l.length;G--;){D=Ba("x",e.getAttribute("x"));z=Ba("x",l[G].getAttribute("x"));F=Ba("y",e.getAttribute("y"));h=Ba("y",l[G].getAttribute("y"));var m={};if(!isNaN(D)&&!isNaN(z)&&D!=0&&z!=0&&k.x)m.x=k.x-(D-z);if(!isNaN(F)&&!isNaN(h)&&F!=0&&h!=0&&k.y)m.y=k.y-(F-h);if(m.x||m.y)ma(l[G],m,1E3,true)}A();break;case "use":A();break;case "g":(A=
+$(e).data("gsvg"))&&ma(A,k,1E3,true);break;case "polyline":case "polygon":A=k.points.length;for(G=0;G<A;++G){h=k.points[G];h=N(h.x,h.y,l);k.points[G].x=h.x;k.points[G].y=h.y}A=k.points.length;l="";for(G=0;G<A;++G){h=k.points[G];l+=h.x+","+h.y+" "}e.setAttribute("points",l);break;case "path":D=e.pathSegList;A=D.numberOfItems;k.d=Array(A);for(G=0;G<A;++G){z=D.getItem(G);k.d[G]={type:z.pathSegType,x:z.x,y:z.y,x1:z.x1,y1:z.y1,x2:z.x2,y2:z.y2,r1:z.r1,r2:z.r2,angle:z.angle,largeArcFlag:z.largeArcFlag,sweepFlag:z.sweepFlag}}A=
+k.d.length;G=k.d[0];m=N(G.x,G.y,l);k.d[0].x=m.x;k.d[0].y=m.y;for(G=1;G<A;++G){z=k.d[G];D=z.type;if(D%2==0){h=N(z.x!=undefined?z.x:m.x,z.y!=undefined?z.y:m.y,l);D=N(z.x1,z.y1,l);F=N(z.x2,z.y2,l);z.x=h.x;z.y=h.y;z.x1=D.x;z.y1=D.y;z.x2=F.x;z.y2=F.y}else{z.x=l.a*z.x;z.y=l.d*z.y;z.x1=l.a*z.x1;z.y1=l.d*z.y1;z.x2=l.a*z.x2;z.y2=l.d*z.y2}z.r1=l.a*z.r1;z.r2=l.d*z.r2}l="";A=k.d.length;for(G=0;G<A;++G){z=k.d[G];D=z.type;l+=Oa[D];switch(D){case 13:case 12:l+=z.x+" ";break;case 15:case 14:l+=z.y+" ";break;case 3:case 5:case 19:case 2:case 4:case 18:l+=
+z.x+","+z.y+" ";break;case 7:case 6:l+=z.x1+","+z.y1+" "+z.x2+","+z.y2+" "+z.x+","+z.y+" ";break;case 9:case 8:l+=z.x1+","+z.y1+" "+z.x+","+z.y+" ";break;case 11:case 10:l+=z.r1+","+z.r2+" "+z.angle+" "+ +z.largeArcFlag+" "+ +z.sweepFlag+" "+z.x+","+z.y+" ";break;case 17:case 16:l+=z.x2+","+z.y2+" "+z.x+","+z.y+" "}}e.setAttribute("d",l)}},nb=function(e,k,l){e=P(e).firstChild;var C=R(e),A=d.createSVGTransform();A.setTranslate(k,l);C.appendItem(A);Ra(e)},Ra=this.recalculateDimensions=function(e){if(e==
+null)return null;var k=R(e);if(k&&k.numberOfItems>0){for(var l=k.numberOfItems;l--;){var C=k.getItem(l);if(C.type===0)k.removeItem(l);else if(C.type===1)svgedit.math.isIdentity(C.matrix)&&k.removeItem(l);else C.type===4&&C.angle===0&&k.removeItem(l)}if(k.numberOfItems===1&&na(e))return null}if(!k||k.numberOfItems==0){e.removeAttribute("transform");return null}if(k){l=k.numberOfItems;for(var A=[];l--;){C=k.getItem(l);if(C.type===1)A.push([C.matrix,l]);else if(A.length)A=[]}if(A.length===2){l=d.createSVGTransformFromMatrix(ga(A[1][0],
+A[0][0]));k.removeItem(A[0][1]);k.removeItem(A[1][1]);k.insertItemBefore(l,A[1][1])}l=k.numberOfItems;if(l>=2&&k.getItem(l-2).type===1&&k.getItem(l-1).type===2){A=d.createSVGTransform();C=ga(k.getItem(l-2).matrix,k.getItem(l-1).matrix);A.setMatrix(C);k.removeItem(l-2);k.removeItem(l-2);k.appendItem(A)}}switch(e.tagName){case "line":case "polyline":case "polygon":case "path":break;default:if(k.numberOfItems===1&&k.getItem(0).type===1||k.numberOfItems===2&&k.getItem(0).type===1&&k.getItem(0).type===
+4)return null}var G=$(e).data("gsvg");l=new Da("Transform");var D={},z=null;C=[];switch(e.tagName){case "line":C=["x1","y1","x2","y2"];break;case "circle":C=["cx","cy","r"];break;case "ellipse":C=["cx","cy","rx","ry"];break;case "foreignObject":case "rect":case "image":C=["width","height","x","y"];break;case "use":case "text":case "tspan":C=["x","y"];break;case "polygon":case "polyline":z={};z.points=e.getAttribute("points");A=e.points;var F=A.numberOfItems;D.points=Array(F);for(var h=0;h<F;++h){var m=
+A.getItem(h);D.points[h]={x:m.x,y:m.y}}break;case "path":z={};z.d=e.getAttribute("d");D.d=e.getAttribute("d")}if(C.length){D=$(e).attr(C);$.each(D,function(Ca,Pa){D[Ca]=Ba(Ca,Pa)})}else if(G)D={x:$(G).attr("x")||0,y:$(G).attr("y")||0};if(z==null){z=$.extend(true,{},D);$.each(z,function(Ca,Pa){z[Ca]=Ba(Ca,Pa)})}z.transform=Sa?Sa:"";if(e.tagName=="g"&&!G||e.tagName=="a"){A=svgedit.utilities.getBBox(e);var o={x:A.x+A.width/2,y:A.y+A.height/2},u=N(A.x+A.width/2,A.y+A.height/2,Y(k).matrix);C=d.createSVGMatrix();
+if(A=na(e)){h=A*Math.PI/180;F=Math.abs(h)>1.0E-10?Math.sin(h)/(1-Math.cos(h)):2/h;for(h=0;h<k.numberOfItems;++h){C=k.getItem(h);if(C.type==4){C=C.matrix;o.y=(F*C.e+C.f)/2;o.x=(C.e-F*C.f)/2;k.removeItem(h);break}}}h=C=G=0;var E=k.numberOfItems;if(E)var H=k.getItem(0).matrix;if(E>=3&&k.getItem(E-2).type==3&&k.getItem(E-3).type==2&&k.getItem(E-1).type==2){h=3;var J=k.getItem(E-3).matrix,O=k.getItem(E-2).matrix,X=k.getItem(E-1).matrix;F=e.childNodes;for(m=F.length;m--;){var ba=F.item(m);C=G=0;if(ba.nodeType==
+1){var T=R(ba);if(T){C=Y(T).matrix;G=na(ba);var fa=Sa,ha=[];Sa=ba.getAttribute("transform");if(G||oa(T)){var W=d.createSVGTransform();W.setMatrix(ga(J,O,X,C));T.clear();T.appendItem(W);ha.push(W)}else{G=ga(C.inverse(),X,C);W=d.createSVGMatrix();W.e=-G.e;W.f=-G.f;C=ga(W.inverse(),C.inverse(),J,O,X,C,G.inverse());var qa=d.createSVGTransform(),ua=d.createSVGTransform(),Aa=d.createSVGTransform();qa.setTranslate(G.e,G.f);ua.setScale(C.a,C.d);Aa.setTranslate(W.e,W.f);T.appendItem(Aa);T.appendItem(ua);T.appendItem(qa);
+ha.push(Aa);ha.push(ua);ha.push(qa)}l.addSubCommand(Ra(ba));Sa=fa}}}k.removeItem(E-1);k.removeItem(E-2);k.removeItem(E-3)}else if(E>=3&&k.getItem(E-1).type==1){h=3;C=Y(k).matrix;W=d.createSVGTransform();W.setMatrix(C);k.clear();k.appendItem(W)}else if((E==1||E>1&&k.getItem(1).type!=3)&&k.getItem(0).type==2){h=2;G=Y(k).matrix;k.removeItem(0);C=Y(k).matrix.inverse();C=ga(C,G);G=C.e;C=C.f;if(G!=0||C!=0){F=e.childNodes;m=F.length;for(E=[];m--;){ba=F.item(m);if(ba.nodeType==1){if(ba.getAttribute("clip-path")){fa=
+ba.getAttribute("clip-path");if(E.indexOf(fa)===-1){nb(fa,G,C);E.push(fa)}}fa=Sa;Sa=ba.getAttribute("transform");if(T=R(ba)){J=d.createSVGTransform();J.setTranslate(G,C);T.numberOfItems?T.insertItemBefore(J,0):T.appendItem(J);l.addSubCommand(Ra(ba));T=e.getElementsByTagNameNS(b,"use");ba="#"+ba.id;for(J=T.length;J--;){O=T.item(J);if(ba==ca(O)){X=d.createSVGTransform();X.setTranslate(-G,-C);R(O).insertItemBefore(X,0);l.addSubCommand(Ra(O))}}Sa=fa}}}E=[];Sa=fa}}else if(E==1&&k.getItem(0).type==1&&!A){h=
+1;C=k.getItem(0).matrix;F=e.childNodes;for(m=F.length;m--;){ba=F.item(m);if(ba.nodeType==1){fa=Sa;Sa=ba.getAttribute("transform");if(T=R(ba)){G=ga(C,Y(T).matrix);E=d.createSVGTransform();E.setMatrix(G);T.clear();T.appendItem(E,0);l.addSubCommand(Ra(ba));Sa=fa;fa=ba.getAttribute("stroke-width");ba.getAttribute("stroke")!=="none"&&!isNaN(fa)&&ba.setAttribute("stroke-width",fa*((Math.abs(G.a)+Math.abs(G.d))/2))}}}k.clear()}else{if(A){o=d.createSVGTransform();o.setRotate(A,u.x,u.y);k.numberOfItems?k.insertItemBefore(o,
+0):k.appendItem(o)}k.numberOfItems==0&&e.removeAttribute("transform");return null}if(h==2){if(A){u={x:o.x+H.e,y:o.y+H.f};o=d.createSVGTransform();o.setRotate(A,u.x,u.y);k.numberOfItems?k.insertItemBefore(o,0):k.appendItem(o)}}else if(h==3){C=Y(k).matrix;H=d.createSVGTransform();H.setRotate(A,o.x,o.y);H=H.matrix;o=d.createSVGTransform();o.setRotate(A,u.x,u.y);u=o.matrix.inverse();fa=C.inverse();u=ga(fa,u,H,C);G=u.e;C=u.f;if(G!=0||C!=0){F=e.childNodes;for(m=F.length;m--;){ba=F.item(m);if(ba.nodeType==
+1){fa=Sa;Sa=ba.getAttribute("transform");T=R(ba);J=d.createSVGTransform();J.setTranslate(G,C);T.numberOfItems?T.insertItemBefore(J,0):T.appendItem(J);l.addSubCommand(Ra(ba));Sa=fa}}}if(A)k.numberOfItems?k.insertItemBefore(o,0):k.appendItem(o)}}else{A=svgedit.utilities.getBBox(e);if(!A&&e.tagName!="path")return null;C=d.createSVGMatrix();if(G=na(e)){o={x:A.x+A.width/2,y:A.y+A.height/2};u=N(A.x+A.width/2,A.y+A.height/2,Y(k).matrix);h=G*Math.PI/180;F=Math.abs(h)>1.0E-10?Math.sin(h)/(1-Math.cos(h)):2/
+h;for(h=0;h<k.numberOfItems;++h){C=k.getItem(h);if(C.type==4){C=C.matrix;o.y=(F*C.e+C.f)/2;o.x=(C.e-F*C.f)/2;k.removeItem(h);break}}}h=0;E=k.numberOfItems;if(!svgedit.browser.isWebkit())if((H=e.getAttribute("fill"))&&H.indexOf("url(")===0){H=P(H);fa="pattern";if(H.tagName!==fa)fa="gradient";if(H.getAttribute(fa+"Units")==="userSpaceOnUse"){C=Y(k).matrix;A=R(H);A=Y(A).matrix;C=ga(C,A);A="matrix("+[C.a,C.b,C.c,C.d,C.e,C.f].join(",")+")";H.setAttribute(fa+"Transform",A)}}if(E>=3&&k.getItem(E-2).type==
+3&&k.getItem(E-3).type==2&&k.getItem(E-1).type==2){h=3;C=Y(k,E-3,E-1).matrix;k.removeItem(E-1);k.removeItem(E-2);k.removeItem(E-3)}else if(E==4&&k.getItem(E-1).type==1){h=3;C=Y(k).matrix;W=d.createSVGTransform();W.setMatrix(C);k.clear();k.appendItem(W);C=d.createSVGMatrix()}else if((E==1||E>1&&k.getItem(1).type!=3)&&k.getItem(0).type==2){h=2;H=k.getItem(0).matrix;fa=Y(k,1).matrix;A=fa.inverse();C=ga(A,H,fa);k.removeItem(0)}else if(E==1&&k.getItem(0).type==1&&!G){C=Y(k).matrix;switch(e.tagName){case "line":D=
+$(e).attr(["x1","y1","x2","y2"]);case "polyline":case "polygon":D.points=e.getAttribute("points");if(D.points){A=e.points;F=A.numberOfItems;D.points=Array(F);for(h=0;h<F;++h){m=A.getItem(h);D.points[h]={x:m.x,y:m.y}}}case "path":D.d=e.getAttribute("d");h=1;k.clear()}}else{h=4;if(G){o=d.createSVGTransform();o.setRotate(G,u.x,u.y);k.numberOfItems?k.insertItemBefore(o,0):k.appendItem(o)}k.numberOfItems==0&&e.removeAttribute("transform");return null}if(h==1||h==2||h==3)Za(e,D,C);if(h==2){if(G){oa(k)||
+(u={x:o.x+C.e,y:o.y+C.f});o=d.createSVGTransform();o.setRotate(G,u.x,u.y);k.numberOfItems?k.insertItemBefore(o,0):k.appendItem(o)}}else if(h==3&&G){C=Y(k).matrix;H=d.createSVGTransform();H.setRotate(G,o.x,o.y);H=H.matrix;o=d.createSVGTransform();o.setRotate(G,u.x,u.y);u=o.matrix.inverse();fa=C.inverse();u=ga(fa,u,H,C);Za(e,D,u);if(G)k.numberOfItems?k.insertItemBefore(o,0):k.appendItem(o)}}k.numberOfItems==0&&e.removeAttribute("transform");l.addSubCommand(new Ma(e,z));return l},mb=null,xa=this.clearSelection=
+function(e){if(I[0]!=null)for(var k=I.length,l=0;l<k;++l){var C=I[l];if(C==null)break;ra.releaseSelector(C);I[l]=null}e||M("selected",I)},qb=this.addToSelection=function(e,k){if(e.length!=0){for(var l=0;l<I.length;){if(I[l]==null)break;++l}for(var C=e.length;C--;){var A=e[C];if(A&&svgedit.utilities.getBBox(A)){if(A.tagName==="a"&&A.childNodes.length===1)A=A.firstChild;if(I.indexOf(A)==-1){I[l]=A;l++;A=ra.requestSelector(A);I.length>1&&A.showGrips(false)}}}M("selected",I);k||I.length==1?ra.requestSelector(I[0]).showGrips(true):
+ra.requestSelector(I[0]).showGrips(false);for(I.sort(function(G,D){if(G&&D&&G.compareDocumentPosition)return 3-(D.compareDocumentPosition(G)&6);else if(G==null)return 1});I[0]==null;)I.shift(0)}},rb=this.selectOnly=function(e,k){xa(true);qb(e,k)};this.removeFromSelection=function(e){if(I[0]!=null)if(e.length!=0){var k=Array(I.length);j=0;len=I.length;for(var l=0;l<len;++l){var C=I[l];if(C)if(e.indexOf(C)==-1){k[j]=C;j++}else ra.releaseSelector(C)}I=k}};this.selectAllInCurrentLayer=function(){var e=
+B().getCurrentLayer();if(e){Ga="select";rb($(L||e).children())}};var Bb=this.getMouseTarget=function(e){if(e==null||e.target==null)return null;e=e.target;if(e.correspondingUseElement)e=e.correspondingUseElement;if(["http://www.w3.org/1998/Math/MathML","http://www.w3.org/1999/xhtml"].indexOf(e.namespaceURI)>=0&&e.id!="svgcanvas")for(;e.nodeName!="foreignObject";){e=e.parentNode;if(!e)return d}var k=B().getCurrentLayer();if([d,a,n,k].indexOf(e)>=0)return d;if($(e).closest("#selectorParentGroup").length)return ra.selectorParentGroup;
+for(;e.parentNode&&e.parentNode!==(L||k);)e=e.parentNode;return e};(function(){var e=null,k=null,l=null,C=null,A=null,G={},D={minx:null,miny:null,maxx:null,maxy:null};$(a).mousedown(function(z){if(!c.spaceKey){var F=z.button===2;mb=n.getScreenCTM().inverse();isBotchedZoom=svgedit.browser.isGecko();var h=N(z.pageX,z.pageY,mb),m=h.x*(isBotchedZoom?1:q);h=h.y*(isBotchedZoom?1:q);z.preventDefault();if(F)Ga="select";m=m/q;h=h/q;var o=Bb(z);if(o.tagName==="a"&&o.childNodes.length===1)o=o.firstChild;var u=
+C=k=m,E=A=l=h;if(p.gridSnapping){m=va(m);h=va(h);k=va(k);l=va(l)}if(o==ra.selectorParentGroup&&I[0]!=null){o=z.target;var H=cb(o,"type");if(H=="rotate"){Ga="rotate";current_rotate_mode=cb(o,"dir")}else if(H=="resize"){Ga="resize";db=cb(o,"dir")}o=I[0]}Sa=o.getAttribute("transform");H=R(o);switch(Ga){case "select":Ka=true;db="none";if(F)Ka=false;if(o!=d){if(I.indexOf(o)==-1){z.shiftKey||xa(true);qb([o]);wb=o;La.clear()}if(!F)for(F=0;F<I.length;++F)if(I[F]!=null){var J=R(I[F]);J.numberOfItems?J.insertItemBefore(d.createSVGTransform(),
+0):J.appendItem(d.createSVGTransform())}}else if(!F){xa();Ga="multiselect";if(sa==null)sa=ra.getRubberBandBox();C*=q;A*=q;ma(sa,{x:C,y:A,width:0,height:0,display:"inline"},100)}break;case "zoom":Ka=true;if(sa==null)sa=ra.getRubberBandBox();ma(sa,{x:u*q,y:u*q,width:0,height:0,display:"inline"},100);break;case "resize":Ka=true;k=m;l=h;G=svgedit.utilities.getBBox($("#selectedBox0")[0]);var O={};$.each(G,function(X,ba){O[X]=ba/q});G=O;F=na(o)?1:0;if(oa(H)){H.insertItemBefore(d.createSVGTransform(),F);
+H.insertItemBefore(d.createSVGTransform(),F);H.insertItemBefore(d.createSVGTransform(),F)}else{H.appendItem(d.createSVGTransform());H.appendItem(d.createSVGTransform());H.appendItem(d.createSVGTransform());if(svgedit.browser.supportsNonScalingStroke()){if(m=svgedit.browser.isWebkit())J=function(X){var ba=X.getAttributeNS(null,"stroke");X.removeAttributeNS(null,"stroke");setTimeout(function(){X.setAttributeNS(null,"stroke",ba)},0)};o.style.vectorEffect="non-scaling-stroke";m&&J(o);h=o.getElementsByTagName("*");
+u=h.length;for(F=0;F<u;F++){h[F].style.vectorEffect="non-scaling-stroke";m&&J(h[F])}}}break;case "fhellipse":case "fhrect":case "fhpath":Ka=true;e=u+","+E+" ";J=K.stroke_width==0?1:K.stroke_width;S({element:"polyline",curStyles:true,attr:{points:e,id:ka(),fill:"none",opacity:K.opacity/2,"stroke-linecap":"round",style:"pointer-events:none"}});D.minx=u;D.maxx=u;D.miny=E;D.maxy=E;break;case "image":Ka=true;J=S({element:"image",attr:{x:m,y:h,width:0,height:0,id:ka(),opacity:K.opacity/2,style:"pointer-events:inherit"}});
+U(J,Fa);Fb(J);break;case "square":case "rect":Ka=true;k=m;l=h;S({element:"rect",curStyles:true,attr:{x:m,y:h,width:0,height:0,id:ka(),opacity:K.opacity/2}});break;case "line":Ka=true;J=K.stroke_width==0?1:K.stroke_width;S({element:"line",curStyles:true,attr:{x1:m,y1:h,x2:m,y2:h,id:ka(),stroke:K.stroke,"stroke-width":J,"stroke-dasharray":K.stroke_dasharray,"stroke-linejoin":K.stroke_linejoin,"stroke-linecap":K.stroke_linecap,"stroke-opacity":K.stroke_opacity,fill:"none",opacity:K.opacity/2,style:"pointer-events:none"}});
+break;case "circle":Ka=true;S({element:"circle",curStyles:true,attr:{cx:m,cy:h,r:0,id:ka(),opacity:K.opacity/2}});break;case "ellipse":Ka=true;S({element:"ellipse",curStyles:true,attr:{cx:m,cy:h,rx:0,ry:0,id:ka(),opacity:K.opacity/2}});break;case "text":Ka=true;S({element:"text",curStyles:true,attr:{x:m,y:h,id:ka(),fill:Ua.fill,"stroke-width":Ua.stroke_width,"font-size":Ua.font_size,"font-family":Ua.font_family,"text-anchor":"left","xml:space":"preserve",opacity:K.opacity}});break;case "path":case "pathedit":k*=
+q;l*=q;La.mouseDown(z,o,k,l);Ka=true;break;case "textedit":k*=q;l*=q;bb.mouseDown(z,o,k,l);Ka=true;break;case "rotate":Ka=true;c.undoMgr.beginUndoableChange("transform",I);document.getElementById("workarea").className="rotate"}J=ib("mouseDown",{event:z,start_x:k,start_y:l,selectedElements:I},true);$.each(J,function(X,ba){if(ba&&ba.started)Ka=true});if(Ga)document.getElementById("workarea").className=Ga=="resize"?z.target.style.cursor:Ga}}).mousemove(function(z){if(!(z.originalEvent.touches&&z.originalEvent.touches.length>
+1))if(Ka)if(!(z.button===1||c.spaceKey)){var F=I[0],h=N(z.pageX,z.pageY,mb),m=h.x*(isBotchedZoom?1:q);h=h.y*(isBotchedZoom?1:q);var o=pa(aa()),u=x=m/q,E=y=h/q;if(p.gridSnapping){x=va(x);y=va(y)}z.preventDefault();switch(Ga){case "select":if(I[0]!==null){u=x-k;var H=y-l;if(p.gridSnapping){u=va(u);H=va(H)}if(z.shiftKey){var J=V(k,l,x,y);x=J.x;y=J.y}if(u!=0||H!=0){E=I.length;for(var O=0;O<E;++O){F=I[O];if(F==null)break;var X=d.createSVGTransform();o=R(F);if(J){u=J.x-k;H=J.y-l}X.setTranslate(u,H);o.numberOfItems?
+o.replaceItem(X,0):o.appendItem(X);ra.requestSelector(F).resize()}if(z.altKey)if(!c.addClones){c.addClones=c.cloneSelectedElements(0,0,X);c.removeClones=function(){c.addClones&&c.addClones.forEach(function(ua){ua.parentNode&&ua.parentNode.removeChild(ua);c.addClones=false})};window.addEventListener("keyup",c.removeClones)}M("transition",I)}}break;case "multiselect":u*=q;E*=q;ma(sa,{x:Math.min(C,u),y:Math.min(A,E),width:Math.abs(u-C),height:Math.abs(E-A)},100);o=[];u=[];J=ob();E=I.length;for(O=0;O<
+E;++O){H=J.indexOf(I[O]);if(H==-1)o.push(I[O]);else J[H]=null}E=J.length;for(O=0;O<E;++O)J[O]&&u.push(J[O]);o.length>0&&c.removeFromSelection(o);u.length>0&&qb(u);break;case "resize":o=R(F);u=(J=oa(o))?G:svgedit.utilities.getBBox(F);E=u.x;O=u.y;var ba=u.width,T=u.height;u=x-k;H=y-l;if(p.gridSnapping){u=va(u);H=va(H);T=va(T);ba=va(ba)}if(X=na(F)){var fa=Math.sqrt(u*u+H*H);H=Math.atan2(H,u)-X*Math.PI/180;u=fa*Math.cos(H);H=fa*Math.sin(H)}if(db.indexOf("n")==-1&&db.indexOf("s")==-1)H=0;if(db.indexOf("e")==
+-1&&db.indexOf("w")==-1)u=0;var ha=fa=0,W=T?(T+H)/T:1,qa=ba?(ba+u)/ba:1;if(db.indexOf("n")>=0){W=T?(T-H)/T:1;ha=T}if(db.indexOf("w")>=0){qa=ba?(ba-u)/ba:1;fa=ba}u=d.createSVGTransform();H=d.createSVGTransform();ba=d.createSVGTransform();if(p.gridSnapping){E=va(E);fa=va(fa);O=va(O);ha=va(ha)}u.setTranslate(-(E+fa),-(O+ha));if(z.shiftKey)if(qa==1)qa=W;else W=qa;H.setScale(qa,W);ba.setTranslate(E+fa,O+ha);if(J){J=X?1:0;o.replaceItem(u,2+J);o.replaceItem(H,1+J);o.replaceItem(ba,0+J)}else{J=o.numberOfItems;
+o.replaceItem(ba,J-3);o.replaceItem(H,J-2);o.replaceItem(u,J-1)}ra.requestSelector(F).resize();M("transition",I);break;case "zoom":u*=q;E*=q;ma(sa,{x:Math.min(C*q,u),y:Math.min(A*q,E),width:Math.abs(u-C*q),height:Math.abs(E-A*q)},100);break;case "text":ma(o,{x:x,y:y},1E3);break;case "line":u=null;window.opera||d.suspendRedraw(1E3);if(p.gridSnapping){x=va(x);y=va(y)}E=x;J=y;if(z.shiftKey){J=V(k,l,E,J);E=J.x;J=J.y}o.setAttributeNS(null,"x2",E);o.setAttributeNS(null,"y2",J);window.opera||d.unsuspendRedraw(u);
+break;case "foreignObject":case "square":case "rect":case "image":u=Math.abs(x-k);J=Math.abs(y-l);if(Ga=="square"||z.shiftKey){u=J=Math.max(u,J);E=k<x?k:k-u;O=l<y?l:l-J}else{E=Math.min(k,x);O=Math.min(l,y)}if(z.altKey){u*=2;J*=2;E=k-u/2;O=l-J/2}if(p.gridSnapping){u=va(u);J=va(J);E=va(E);O=va(O)}ma(o,{width:u,height:J,x:E,y:O},1E3);break;case "circle":u=$(o).attr(["cx","cy"]);J=u.cx;E=u.cy;u=Math.sqrt((x-J)*(x-J)+(y-E)*(y-E));if(p.gridSnapping)u=va(u);o.setAttributeNS(null,"r",u);break;case "ellipse":u=
+$(o).attr(["cx","cy"]);J=Math.abs(k+(x-k)/2);E=Math.abs(l+(y-l)/2);u=null;window.opera||d.suspendRedraw(1E3);if(p.gridSnapping){x=va(x);J=va(J);y=va(y);E=va(E)}O=Math.abs(k-J);H=Math.abs(l-E);if(z.shiftKey){H=O;E=y>l?l+O:l-O}if(z.altKey){J=k;E=l;O=Math.abs(x-J);H=z.shiftKey?O:Math.abs(y-E)}o.setAttributeNS(null,"rx",O);o.setAttributeNS(null,"ry",H);o.setAttributeNS(null,"cx",J);o.setAttributeNS(null,"cy",E);window.opera||d.unsuspendRedraw(u);break;case "fhellipse":case "fhrect":D.minx=Math.min(u,
+D.minx);D.maxx=Math.max(u,D.maxx);D.miny=Math.min(E,D.miny);D.maxy=Math.max(E,D.maxy);case "fhpath":e+=+u+","+E+" ";o.setAttributeNS(null,"points",e);break;case "path":case "pathedit":x*=q;y*=q;if(p.gridSnapping){x=va(x);y=va(y);k=va(k);l=va(l)}if(z.shiftKey){if(J=svgedit.path.path){o=J.dragging?J.dragging[0]:k;J=J.dragging?J.dragging[1]:l}else{o=k;J=l}J=V(o,J,x,y);x=J.x;y=J.y}if(sa&&sa.getAttribute("display")!=="none"){u*=q;E*=q;ma(sa,{x:Math.min(C*q,u),y:Math.min(A*q,E),width:Math.abs(u-C*q),height:Math.abs(E-
+A*q)},100)}La.mouseMove(z,x,y);break;case "textedit":x*=q;y*=q;bb.mouseMove(m,h);break;case "rotate":u=svgedit.utilities.getBBox(F);J=u.x+u.width/2;E=u.y+u.height/2;o=ea(F);o=N(J,E,o);J=o.x;E=o.y;o=u.x;O=u.y;if(current_rotate_mode=="nw")o=u.x+u.width;if(current_rotate_mode=="se")O=u.y+u.height;if(current_rotate_mode=="sw"){o=u.x+u.width;O=u.y+u.height}compensation_angle=(Math.atan2(E-O,J-o)*(180/Math.PI)-90)%360;X=(Math.atan2(E-y,J-x)*(180/Math.PI)-90)%360;X+=compensation_angle;if(p.gridSnapping)X=
+va(X);if(z.shiftKey)X=Math.round(X/45)*45;c.setRotationAngle(X<-180?360+X:X,true);M("transition",I)}ib("mouseMove",{event:z,mouse_x:m,mouse_y:h,selected:F})}}).click(function(z){z.preventDefault();return false}).dblclick(function(z){var F=z.target.parentNode,h=Bb(z),m=h.tagName;if(F!==L){if(m==="text"&&Ga!=="textedit"){z=N(z.pageX,z.pageY,mb);bb.select(h,z.x,z.y)}if((m==="g"||m==="a")&&na(h)){Db(h);h=I[0];xa(true)}L&&Eb();F.tagName!=="g"&&F.tagName!=="a"||F===B().getCurrentLayer()||h===ra.selectorParentGroup||
+Kb(h)}}).mouseup(function(z){c.addClones=false;window.removeEventListener("keyup",c.removeClones);I=I.filter(Boolean);if(z.button!==2){var F=wb;wb=null;if(Ka){var h=N(z.pageX,z.pageY,mb),m=h.x*q;h=h.y*q;var o=m/q,u=h/q,E=pa(aa()),H=false;Ka=false;switch(Ga){case "resize":case "multiselect":if(sa!=null){sa.setAttribute("display","none");hb=[]}Ga="select";case "select":if(I[0]!=null){if(I.length==1){m=I[0];switch(m.tagName){case "g":case "use":case "image":case "foreignObject":break;default:Xa.fill=
+m.getAttribute("fill");Xa.fill_opacity=m.getAttribute("fill-opacity");Xa.stroke=m.getAttribute("stroke");Xa.stroke_opacity=m.getAttribute("stroke-opacity");Xa.stroke_width=m.getAttribute("stroke-width");Xa.stroke_dasharray=m.getAttribute("stroke-dasharray");Xa.stroke_linejoin=m.getAttribute("stroke-linejoin");Xa.stroke_linecap=m.getAttribute("stroke-linecap")}if(m.tagName=="text"){Ua.font_size=m.getAttribute("font-size");Ua.font_family=m.getAttribute("font-family")}ra.requestSelector(m).showGrips(true)}Ea();
+C=(m=svgedit.browser.isGecko())?C*q:C;A=m?A*q:A;m=Math.abs(u-A);if(m>1||m>1){z=I.length;for(m=0;m<z;++m){if(I[m]==null)break;I[m].firstChild||ra.requestSelector(I[m]).resize()}}else{m=z.target;if(I[0].nodeName==="path"&&I[1]==null)La.select(I[0]);else z.shiftKey&&F!=m&&c.removeFromSelection([m])}if(svgedit.browser.supportsNonScalingStroke())if(z=I[0]){z.removeAttribute("style");svgedit.utilities.walkTree(z,function(X){X.removeAttribute("style")})}}return;case "zoom":sa!=null&&sa.setAttribute("display",
+"none");M("zoomed",{x:Math.min(C,o),y:Math.min(A,u),width:Math.abs(o-C),height:Math.abs(u-A),factor:z.altKey?0.5:2});return;case "fhpath":F=E.getAttribute("points");u=F.indexOf(",");if(H=u>=0?F.indexOf(",",u+1)>=0:F.indexOf(" ",F.indexOf(" ")+1)>=0)E=La.smoothPolylineIntoPath(E);break;case "line":F=$(E).attr(["x1","x2","y1","y2"]);H=F.x1!=F.x2||F.y1!=F.y2;break;case "foreignObject":case "square":case "rect":case "image":F=$(E).attr(["width","height"]);H=F.width!=0||F.height!=0||Ga==="image";break;
+case "circle":H=E.getAttribute("r")!=0;break;case "ellipse":F=$(E).attr(["rx","ry"]);H=F.rx!=null||F.ry!=null;break;case "fhellipse":if(D.maxx-D.minx>0&&D.maxy-D.miny>0){E=S({element:"ellipse",curStyles:true,attr:{cx:(D.minx+D.maxx)/2,cy:(D.miny+D.maxy)/2,rx:(D.maxx-D.minx)/2,ry:(D.maxy-D.miny)/2,id:aa()}});M("changed",[E]);H=true}break;case "fhrect":if(D.maxx-D.minx>0&&D.maxy-D.miny>0){E=S({element:"rect",curStyles:true,attr:{x:D.minx,y:D.miny,width:D.maxx-D.minx,height:D.maxy-D.miny,id:aa()}});
+M("changed",[E]);H=true}break;case "text":H=true;rb([E]);bb.start(E);break;case "path":E=null;Ka=true;F=La.mouseUp(z,E,m,h);E=F.element;H=F.keep;break;case "pathedit":H=true;E=null;La.mouseUp(z);break;case "textedit":H=false;E=null;bb.mouseUp(z,m,h);break;case "rotate":H=true;E=null;Ga="select";F=c.undoMgr.finishUndoableChange();F.isEmpty()||wa(F);Ea();M("changed",I)}m=ib("mouseUp",{event:z,mouse_x:m,mouse_y:h},true);$.each(m,function(X,ba){if(ba){H=ba.keep||H;E=ba.element;Ka=ba.started||Ka}});if(!H&&
+E!=null){B().releaseId(aa());E.parentNode.removeChild(E);E=null;for(m=z.target;m.parentNode.parentNode.tagName=="g";)m=m.parentNode;if((Ga!="path"||!drawn_path)&&m.parentNode.id!="selectorParentGroup"&&m.id!="svgcanvas"&&m.id!="svgroot"){c.setMode("select");rb([m],true)}}else if(E!=null){c.addedNew=true;z=0.2;var J;if(false.beginElement&&E.getAttribute("opacity")!=K.opacity){J=$(false).clone().attr({to:K.opacity,dur:z}).appendTo(E);try{J[0].beginElement()}catch(O){}}else z=0;setTimeout(function(){J&&
+J.remove();E.setAttribute("opacity",K.opacity);E.setAttribute("style","pointer-events:inherit");la(E);if(Ga==="path")La.toEditMode(E);else p.selectNew&&rb([E],true);wa(new Ia(E));M("changed",[E])},z*1E3)}Sa=null}}});$(a).bind("mousewheel DOMMouseScroll",function(z){if(z.shiftKey){z.preventDefault();mb=n.getScreenCTM().inverse();var F=N(z.pageX,z.pageY,mb);F={x:F.x,y:F.y,width:0,height:0};if(z.wheelDelta)if(z.wheelDelta>=120)F.factor=2;else{if(z.wheelDelta<=-120)F.factor=0.5}else if(z.detail)if(z.detail>
+0)F.factor=0.5;else if(z.detail<0)F.factor=2;F.factor&&M("zoomed",F)}})})();var Fb=function(e){$(e).click(function(k){k.preventDefault()})},bb=c.textActions=function(){function e(T){var fa=h.value==="";$(h).focus();if(!arguments.length)if(fa)T=0;else{if(h.selectionEnd!==h.selectionStart)return;T=h.selectionEnd}var ha;ha=E[T];fa||h.setSelectionRange(T,T);m=pa("text_cursor");if(!m){m=document.createElementNS(b,"line");ma(m,{id:"text_cursor",stroke:"#333","stroke-width":1});m=pa("selectorParentGroup").appendChild(m)}u||
+(u=setInterval(function(){var W=m.getAttribute("display")==="none";m.setAttribute("display",W?"inline":"none")},600));fa=G(ha.x,H.y);ha=G(ha.x,H.y+H.height);ma(m,{x1:fa.x,y1:fa.y,x2:ha.x,y2:ha.y,visibility:"visible",display:"inline"});o&&o.setAttribute("d","M 0 0")}function k(T,fa,ha){if(T===fa)e(fa);else{ha||h.setSelectionRange(T,fa);o=pa("text_selectblock");if(!o){o=document.createElementNS(b,"path");ma(o,{id:"text_selectblock",fill:"green",opacity:0.5,style:"pointer-events:none"});pa("selectorParentGroup").appendChild(o)}T=
+E[T];var W=E[fa];m.setAttribute("visibility","hidden");fa=G(T.x,H.y);ha=G(T.x+(W.x-T.x),H.y);var qa=G(T.x,H.y+H.height);T=G(T.x+(W.x-T.x),H.y+H.height);ma(o,{d:"M"+fa.x+","+fa.y+" L"+ha.x+","+ha.y+" "+T.x+","+T.y+" "+qa.x+","+qa.y+"z",display:"inline"})}}function l(T,fa){var ha=d.createSVGPoint();ha.x=T;ha.y=fa;if(E.length==1)return 0;ha=F.getCharNumAtPosition(ha);if(ha<0){ha=E.length-2;if(T<=E[0].x)ha=0}else if(ha>=E.length-2)ha=E.length-2;var W=E[ha];T>W.x+W.width/2&&ha++;return ha}function C(T,
+fa,ha){var W=h.selectionStart;T=l(T,fa);k(Math.min(W,T),Math.max(W,T),!ha)}function A(T,fa){var ha={x:T,y:fa};ha.x/=q;ha.y/=q;if(J){var W=N(ha.x,ha.y,J.inverse());ha.x=W.x;ha.y=W.y}return ha}function G(T,fa){var ha={x:T,y:fa};if(J){var W=N(ha.x,ha.y,J);ha.x=W.x;ha.y=W.y}ha.x*=q;ha.y*=q;return ha}function D(T){k(0,F.textContent.length);$(this).unbind(T)}function z(T){if(ba&&F){var fa=N(T.pageX,T.pageY,mb);fa=A(fa.x*q,fa.y*q);fa=l(fa.x,fa.y);var ha=F.textContent,W=ha.substr(0,fa).replace(/[a-z0-9]+$/i,
+"").length;ha=ha.substr(fa).match(/^[a-z0-9]+/i);k(W,(ha?ha[0].length:0)+fa);$(T.target).click(D);setTimeout(function(){$(T.target).unbind("click",D)},300)}}var F,h,m,o,u,E=[],H,J,O,X,ba;return{select:function(T,fa,ha){F=T;bb.toEditMode(fa,ha)},start:function(T){F=T;bb.toEditMode()},mouseDown:function(T,fa,ha,W){T=A(ha,W);h.focus();e(l(T.x,T.y));O=ha;X=W},mouseMove:function(T,fa){var ha=A(T,fa);C(ha.x,ha.y)},mouseUp:function(T,fa,ha){var W=A(fa,ha);C(W.x,W.y,true);T.target!==F&&fa<O+2&&fa>O-2&&ha<
+X+2&&ha>X-2&&bb.toSelectMode(true)},setCursor:e,toEditMode:function(T,fa){rb([F],false);ba=false;Ga="textedit";ra.requestSelector(F).showGrips(false);ra.requestSelector(F);bb.init();$(F).css("cursor","text");if(arguments.length){var ha=A(T,fa);e(l(ha.x,ha.y))}else e();setTimeout(function(){ba=true},300)},toSelectMode:function(T){Ga="select";clearInterval(u);u=null;o&&$(o).attr("display","none");m&&$(m).attr("visibility","hidden");$(F).css("cursor","move");if(T){xa();$(F).css("cursor","move");M("selected",
+[F]);qb([F],true)}F&&!F.textContent.length&&c.deleteSelectedElements();$(h).blur();F=false},setInputElem:function(T){h=T},clear:function(){Ga=="textedit"&&bb.toSelectMode()},init:function(){if(F){if(!F.parentNode){F=I[0];ra.requestSelector(F).showGrips(false)}var T=F.textContent.length,fa=F.getAttribute("transform");H=svgedit.utilities.getBBox(F);J=fa?ea(F):null;E=Array(T);h.focus();$(F).unbind("dblclick",z).dblclick(z);if(!T)var ha={x:H.x+H.width/2,width:0};for(fa=0;fa<T;fa++){var W=F.getStartPositionOfChar(fa);
+ha=F.getEndPositionOfChar(fa);if(!svgedit.browser.supportsGoodTextCharPos()){var qa=c.contentW*q;W.x-=qa;ha.x-=qa;W.x/=q;ha.x/=q}E[fa]={x:W.x,y:H.y,width:ha.x-W.x,height:H.height}}E.push({x:ha.x,width:0});k(h.selectionStart,h.selectionEnd,true)}}}}(),La=c.pathActions=function(){var e=false,k,l,C;svgedit.path.Path.prototype.endChanges=function(D){if(svgedit.browser.isWebkit()){var z=this.elem;z.setAttribute("d",La.convertPath(z))}D=new Ma(this.elem,{d:this.last_d},D);wa(D);M("changed",[this.elem])};
+svgedit.path.Path.prototype.addPtsToSelection=function(D){$.isArray(D)||(D=[D]);for(var z=0;z<D.length;z++){var F=D[z],h=this.segs[F];h.ptgrip&&this.selected_pts.indexOf(F)==-1&&F>=0&&this.selected_pts.push(F)}this.selected_pts.sort();z=this.selected_pts.length;for(D=Array(z);z--;){h=this.segs[this.selected_pts[z]];h.select(true);D[z]=h.ptgrip}La.canDeleteNodes=true;La.closed_subpath=this.subpathIsClosed(this.selected_pts[0]);M("selected",D)};var A=k=null,G=false;this.lastCtrlPoint=[0,0];return{mouseDown:function(D,
+z,F,h){if(Ga==="path"){mouse_x=F;mouse_y=h;F=mouse_x/q;z=mouse_y/q;h=pa("path_stretch_line");l=[F,z];if(p.gridSnapping){F=va(F);z=va(z);mouse_x=va(mouse_x);mouse_y=va(mouse_y)}if(!h){h=document.createElementNS(b,"path");ma(h,{id:"path_stretch_line",stroke:"#22C","stroke-width":"0.5",fill:"none"});h=pa("selectorParentGroup").appendChild(h)}h.setAttribute("display","inline");this.stretchy=h;var m=null;if(A){m=A.pathSegList;for(var o=m.numberOfItems,u=6/q,E=false;o;){o--;var H=m.getItem(o),J=H.x;H=H.y;
+if(F>=J-u&&F<=J+u&&z>=H-u&&z<=H+u){E=true;break}}u=aa();svgedit.path.removePath_(u);u=pa(u);J=m.numberOfItems;if(E){if(o<=1&&J>=2){F=m.getItem(0).x;z=m.getItem(0).y;o=svgedit.path.first_grip?svgedit.path.first_grip[0]/q:m.getItem(0).x;E=svgedit.path.first_grip?svgedit.path.first_grip[1]/q:m.getItem(0).y;D=h.pathSegList.getItem(1);D=D.pathSegType===4?A.createSVGPathSegLinetoAbs(F,z):A.createSVGPathSegCurvetoCubicAbs(F,z,D.x1/q,D.y1/q,o,E);F=A.createSVGPathSegClosePath();m.appendItem(D);m.appendItem(F)}else if(J<
+3)return m=false;$(h).remove();element=u;A=null;Ka=false;if(e){svgedit.path.path.matrix&&Za(u,{},svgedit.path.path.matrix.inverse());F=u.getAttribute("d");h=$(svgedit.path.path.elem).attr("d");$(svgedit.path.path.elem).attr("d",h+F);$(u).remove();svgedit.path.path.matrix&&svgedit.path.recalcRotatedPath();svgedit.path.path.init();La.toEditMode(svgedit.path.path.elem);svgedit.path.path.selectPt();return false}}else{if(!$.contains(a,Bb(D))){console.log("Clicked outside canvas");return false}m=A.pathSegList.numberOfItems;
+o=A.pathSegList.getItem(m-1);u=o.x;o=o.y;if(D.shiftKey){z=V(u,o,F,z);F=z.x;z=z.y}D=h.pathSegList.getItem(1);D=D.pathSegType===4?A.createSVGPathSegLinetoAbs(ab(F),ab(z)):A.createSVGPathSegCurvetoCubicAbs(ab(F),ab(z),D.x1/q,D.y1/q,D.x2/q,D.y2/q);A.pathSegList.appendItem(D);F*=q;z*=q;h.setAttribute("d",["M",F,z,F,z].join(" "));h=svgedit.path.addCtrlGrip("1c1");D=svgedit.path.addCtrlGrip("0c2");u=svgedit.path.getCtrlLine(1);o=svgedit.path.getCtrlLine(2);h.setAttribute("cx",F);h.setAttribute("cy",z);D.setAttribute("cx",
+F);D.setAttribute("cy",z);u.setAttribute("x1",F);u.setAttribute("x2",F);u.setAttribute("y1",z);u.setAttribute("y2",z);o.setAttribute("x1",F);o.setAttribute("x2",F);o.setAttribute("y1",z);o.setAttribute("y2",z);h=m;if(e)h+=svgedit.path.path.segs.length;svgedit.path.addPointGrip(h,F,z)}m=true}else{d_attr="M"+F+","+z+" ";A=S({element:"path",curStyles:true,attr:{d:d_attr,id:ka(),opacity:K.opacity/2}});h.setAttribute("d",["M",mouse_x,mouse_y,mouse_x,mouse_y].join(" "));h=e?svgedit.path.path.segs.length:
+0;svgedit.path.addPointGrip(h,mouse_x,mouse_y);svgedit.path.first_grip=null}}else if(svgedit.path.path){svgedit.path.path.storeD();u=D.target.id;if(u.substr(0,14)=="pathpointgrip_"){z=svgedit.path.path.cur_pt=parseInt(u.substr(14));svgedit.path.path.dragging=[F,h];u=svgedit.path.path.segs[z];if(D.shiftKey)u.selected?svgedit.path.path.removePtFromSelection(z):svgedit.path.path.addPtsToSelection(z);else{if(svgedit.path.path.selected_pts.length<=1||!u.selected)svgedit.path.path.clearSelection();svgedit.path.path.addPtsToSelection(z)}}else if(u.indexOf("ctrlpointgrip_")==
+0){svgedit.path.path.dragging=[F,h];D=u.split("_")[1].split("c");z=D[0]-0;m=D=D[1]-0;o=svgedit.path.path.segs[z];svgedit.path.path.selectPt(z,D);if(m==2){E=1;u=o.next}else{E=2;u=o.prev}if(!u)return;D=function(O,X){return Math.sqrt(Math.pow(O.x-X.x,2)+Math.pow(O.y-X.y,2))};z={x:o.item["x"+m],y:o.item["y"+m]};m=m==2?{x:o.item.x,y:o.item.y}:{x:u.item.x,y:u.item.y};o={x:u.item["x"+E],y:u.item["y"+E]};u=D(z,m);D=D(o,m);z=Math.abs(Math.round(Math.atan2(z.y-m.y,z.x-m.x)*(180/Math.PI),0)-Math.round(Math.atan2(o.y-
+m.y,o.x-m.x)*(180/Math.PI),0))==180;if(Math.abs(u-D)<5&&z){svgedit.path.setLinkControlPoints(true);svgedit.path.is_linked=true}else{svgedit.path.setLinkControlPoints(false);svgedit.path.is_linked=false}}if(!svgedit.path.path.dragging){if(sa==null)sa=ra.getRubberBandBox();ma(sa,{x:F*q,y:h*q,width:0,height:0,display:"inline"},100)}}},mouseMove:function(D,z,F){G=true;var h=!D.altKey;if(Ga==="path"){if(A){var m=A.pathSegList,o=m.numberOfItems-1,u=svgedit.path.addCtrlGrip("1c1"),E=svgedit.path.addCtrlGrip("0c2");
+if(l){var H=E.getAttribute("cx")/q||0,J=E.getAttribute("cy")/q||0;u.setAttribute("cx",z);u.setAttribute("cy",F);u.setAttribute("display","inline");D=l[0];u=l[1];m.getItem(o);var O=z/q,X=F/q;H=h?D+(D-O):H;h=h?u+(u-X):J;E.setAttribute("cx",H*q);E.setAttribute("cy",h*q);E.setAttribute("display","inline");E=svgedit.path.getCtrlLine(1);J=svgedit.path.getCtrlLine(2);ma(E,{x1:z,y1:F,x2:D*q,y2:u*q,display:"inline"});ma(J,{x1:H*q,y1:h*q,x2:D*q,y2:u*q,display:"inline"});if(o===0)C=[z,F];else{m=m.getItem(o-
+1);z=m.x;F=m.y;if(m.pathSegType===6){z+=z-m.x2;F+=F-m.y2}else if(C){z=C[0]/q;F=C[1]/q}svgedit.path.replacePathSeg(6,o,[D,u,this.lastCtrlPoint[0]/q,this.lastCtrlPoint[1]/q,H,h],A)}}else if(h=this.stretchy){o=m.getItem(o);m=z;u=F;if(D.target.id==="pathpointgrip_0"&&svgedit.path.first_grip){m=svgedit.path.first_grip[0];u=svgedit.path.first_grip[1]}if(o.pathSegType===6)svgedit.path.replacePathSeg(6,1,[z,F,(this.lastCtrlPoint[0]/q||o.x+(o.x-o.x2))*q,(this.lastCtrlPoint[1]/q||o.y+(o.y-o.y2))*q,m,u],h);
+else C?svgedit.path.replacePathSeg(6,1,[z,F,C[0],C[1],z,F],h):svgedit.path.replacePathSeg(4,1,[z,F],h)}}}else if(svgedit.path.path.dragging){m=svgedit.path.getPointFromGrip({x:svgedit.path.path.dragging[0],y:svgedit.path.path.dragging[1]},svgedit.path.path);D=svgedit.path.getPointFromGrip({x:z,y:F},svgedit.path.path);o=D.x-m.x;m=D.y-m.y;svgedit.path.path.dragging=[z,F];!h||!svgedit.path.is_linked?svgedit.path.setLinkControlPoints(false):svgedit.path.setLinkControlPoints(true);svgedit.path.path.dragctrl?
+svgedit.path.path.moveCtrl(o,m):svgedit.path.path.movePts(o,m)}else{svgedit.path.path.selected_pts=[];svgedit.path.path.eachSeg(function(){if(this.next||this.prev){var ba=sa.getBBox(),T=svgedit.path.getGripPt(this);ba=svgedit.math.rectsIntersect(ba,{x:T.x,y:T.y,width:0,height:0});this.select(ba);ba&&svgedit.path.path.selected_pts.push(this.index)}})}},mouseUp:function(D,z,F,h){var m=pa("ctrlpointgrip_1c1"),o=pa("ctrlpointgrip_0c2");this.lastCtrlPoint=m?[m.getAttribute("cx"),m.getAttribute("cy")]:
+[F,h];if(!svgedit.path.first_grip&&o)svgedit.path.first_grip=[o.getAttribute("cx"),o.getAttribute("cy")];if(Ga==="path"){l=null;if(!A){z=pa(aa());Ka=false;C=null}return{keep:true,element:z}}if(svgedit.path.path.dragging){z=svgedit.path.path.cur_pt;svgedit.path.path.dragging=false;svgedit.path.path.dragctrl=false;svgedit.path.path.update();G&&svgedit.path.path.endChanges("Move path point(s)");!D.shiftKey&&!G&&svgedit.path.path.selectPt(z)}else if(sa&&sa.getAttribute("display")!="none"){sa.setAttribute("display",
+"none");sa.getAttribute("width")<=2&&sa.getAttribute("height")<=2&&La.toSelectMode(D.target)}else La.toSelectMode(D.target);G=false},toEditMode:function(D){svgedit.path.path=svgedit.path.getPath_(D);Ga="pathedit";xa();svgedit.path.path.show(true).update();svgedit.path.path.oldbbox=svgedit.utilities.getBBox(svgedit.path.path.elem);e=false},toSelectMode:function(D){var z=D==svgedit.path.path.elem;Ga="select";svgedit.path.path.show(false);k=false;xa();svgedit.path.path.matrix&&svgedit.path.recalcRotatedPath();
+if(z){M("selected",[D]);qb([D],true)}},addSubPath:function(D){if(D){Ga="path";e=true}else{La.clear(true);La.toEditMode(svgedit.path.path.elem)}},select:function(D){if(k===D){La.toEditMode(D);Ga="pathedit"}else k=D},reorient:function(){var D=I[0];if(D)if(na(D)!=0){var z=new Da("Reorient path"),F={d:D.getAttribute("d"),transform:D.getAttribute("transform")};z.addSubCommand(new Ma(D,F));xa();this.resetOrientation(D);wa(z);svgedit.path.getPath_(D).show(false).matrix=null;this.clear();qb([D],true);M("changed",
+I)}},clear:function(D){k=null;if(A){var z=pa(aa());$(pa("path_stretch_line")).remove();D&&$(z).remove();$(pa("pathpointgrip_container")).find("*").attr("display","none");A=C=null;Ka=false}else Ga=="pathedit"&&this.toSelectMode();svgedit.path.path&&svgedit.path.path.init().show(false)},resetOrientation:function(D){if(D==null||D.nodeName!="path")return false;var z=R(D),F=Y(z).matrix;z.clear();D.removeAttribute("transform");z=D.pathSegList;for(var h=z.numberOfItems,m=0;m<h;++m){var o=z.getItem(m),u=
+o.pathSegType;if(u!=1){var E=[];$.each(["",1,2],function(H,J){var O=o["x"+J],X=o["y"+J];if(O!==undefined&&X!==undefined){O=N(O,X,F);E.splice(E.length,0,O.x,O.y)}});svgedit.path.replacePathSeg(u,m,E,D)}}g(D,F)},zoomChange:function(){Ga=="pathedit"&&svgedit.path.path.update()},getNodePoint:function(){if(svgedit.path.path){var D=svgedit.path.path.segs[svgedit.path.path.selected_pts.length?svgedit.path.path.selected_pts[0]:1];return{x:D.item.x,y:D.item.y,type:D.type}}},linkControlPoints:function(D){svgedit.path.setLinkControlPoints(D)},
+clonePathNode:function(){svgedit.path.path.storeD();for(var D=svgedit.path.path.selected_pts,z=D.length,F=[];z--;){var h=D[z];svgedit.path.path.addSeg(h);F.push(h+z);F.push(h+z+1)}svgedit.path.path.init().addPtsToSelection(F);svgedit.path.path.endChanges("Clone path node(s)")},opencloseSubPath:function(){var D=svgedit.path.path.selected_pts;if(D.length===1){var z=svgedit.path.path.elem,F=z.pathSegList,h=D[0],m=null,o=null;svgedit.path.path.eachSeg(function(J){if(this.type===2&&J<=h)o=this.item;if(J<=
+h)return true;if(this.type===2){m=J;return false}else if(this.type===1)return m=false});if(m==null)m=svgedit.path.path.segs.length-1;if(m!==false){var u=z.createSVGPathSegLinetoAbs(o.x,o.y),E=z.createSVGPathSegClosePath();if(m==svgedit.path.path.segs.length){F.appendItem(u);F.appendItem(E)}else{svgedit.path.insertItemBefore(z,E,m);svgedit.path.insertItemBefore(z,u,m)}svgedit.path.path.init().selectPt(m+1)}else if(svgedit.path.path.segs[h].mate){F.removeItem(h);F.removeItem(h);svgedit.path.path.init().selectPt(h-
+1)}else{for(D=0;D<F.numberOfItems;D++){var H=F.getItem(D);if(H.pathSegType===2)u=D;else if(D===h)F.removeItem(u);else if(H.pathSegType===1&&h<D){E=D-1;F.removeItem(D);break}}for(D=h-u-1;D--;)svgedit.path.insertItemBefore(z,F.getItem(u),E);z=F.getItem(u);svgedit.path.replacePathSeg(2,u,[z.x,z.y]);D=h;svgedit.path.path.init().selectPt(0)}}},deletePathNode:function(){if(La.canDeleteNodes){svgedit.path.path.storeD();for(var D=svgedit.path.path.selected_pts,z=D.length;z--;)svgedit.path.path.deleteSeg(D[z]);
+var F=function(){var h=svgedit.path.path.elem.pathSegList,m=h.numberOfItems,o=function(H,J){for(;J--;)h.removeItem(H)};if(m<=1)return true;for(;m--;){var u=h.getItem(m);if(u.pathSegType===1){u=h.getItem(m-1);var E=h.getItem(m-2);if(u.pathSegType===2){o(m-1,2);F();break}else if(E.pathSegType===2){o(m-2,3);F();break}}else if(u.pathSegType===2)if(m>0){u=h.getItem(m-1).pathSegType;if(u===2){o(m-1,1);F();break}else if(u===1&&h.numberOfItems-1===m){o(m,1);F();break}}}return false};F();if(svgedit.path.path.elem.pathSegList.numberOfItems<=
+1){c.setMode("select");c.deleteSelectedElements()}else{svgedit.path.path.init();svgedit.path.path.clearSelection();if(window.opera){D=$(svgedit.path.path.elem);D.attr("d",D.attr("d"))}svgedit.path.path.endChanges("Delete path node(s)")}}},smoothPolylineIntoPath:function(D){var z=D.points,F=z.numberOfItems;if(F>=4){var h=z.getItem(0),m=null;D=[];D.push(["M",h.x,",",h.y," C"].join(""));for(var o=1;o<=F-4;o+=3){var u=z.getItem(o),E=z.getItem(o+1),H=z.getItem(o+2);if(m)if((h=svgedit.path.smoothControlPoints(m,
+u,h))&&h.length==2){u=D[D.length-1].split(",");u[2]=h[0].x;u[3]=h[0].y;D[D.length-1]=u.join(",");u=h[1]}D.push([u.x,u.y,E.x,E.y,H.x,H.y].join(","));h=H;m=E}for(D.push("L");o<F;++o){E=z.getItem(o);D.push([E.x,E.y].join(","))}D=D.join(" ");D=S({element:"path",curStyles:true,attr:{id:aa(),d:D,fill:"none"}})}return D},setSegType:function(D){svgedit.path.path.setSegType(D)},moveNode:function(D,z){var F=svgedit.path.path.selected_pts;if(F.length){svgedit.path.path.storeD();F=svgedit.path.path.segs[F[0]];
+var h={x:0,y:0};h[D]=z-F.item[D];F.move(h.x,h.y);svgedit.path.path.endChanges("Move path point")}},fixEnd:function(D){for(var z=D.pathSegList,F=z.numberOfItems,h,m=0;m<F;++m){var o=z.getItem(m);if(o.pathSegType===2)h=o;if(o.pathSegType===1){o=z.getItem(m-1);if(o.x!=h.x||o.y!=h.y){z=D.createSVGPathSegLinetoAbs(h.x,h.y);svgedit.path.insertItemBefore(D,z,m);La.fixEnd(D);break}}}svgedit.browser.isWebkit()&&D.setAttribute("d",La.convertPath(D))},convertPath:function(D,z){for(var F=D.pathSegList,h=F.numberOfItems,
+m=0,o=0,u="",E=null,H=0;H<h;++H){var J=F.getItem(H),O=J.x||0,X=J.y||0,ba=J.x1||0,T=J.y1||0,fa=J.x2||0,ha=J.y2||0,W=J.pathSegType,qa=Oa[W]["to"+(z?"Lower":"Upper")+"Case"](),ua=function(Aa,Ca,Pa){Ca=Ca?" "+Ca.join(" "):"";Pa=Pa?" "+svgedit.units.shortFloat(Pa):"";$.each(Aa,function(Qa,Na){Aa[Qa]=svgedit.units.shortFloat(Na)});u+=qa+Aa.join(" ")+Ca+Pa};switch(W){case 1:u+="z";break;case 12:O-=m;case 13:if(z){m+=O;qa="l"}else{O+=m;m=O;qa="L"}ua([[O,o]]);break;case 14:X-=o;case 15:if(z){o+=X;qa="l"}else{X+=
+o;o=X;qa="L"}ua([[m,X]]);break;case 2:case 4:case 18:O-=m;X-=o;case 5:case 3:if(E&&F.getItem(H-1).pathSegType===1&&!z){m=E[0];o=E[1]}case 19:if(z){m+=O;o+=X}else{O+=m;X+=o;m=O;o=X}if(W===3)E=[m,o];ua([[O,X]]);break;case 6:O-=m;ba-=m;fa-=m;X-=o;T-=o;ha-=o;case 7:if(z){m+=O;o+=X}else{O+=m;ba+=m;fa+=m;X+=o;T+=o;ha+=o;m=O;o=X}ua([[ba,T],[fa,ha],[O,X]]);break;case 8:O-=m;ba-=m;X-=o;T-=o;case 9:if(z){m+=O;o+=X}else{O+=m;ba+=m;X+=o;T+=o;m=O;o=X}ua([[ba,T],[O,X]]);break;case 10:O-=m;X-=o;case 11:if(z){m+=
+O;o+=X}else{O+=m;X+=o;m=O;o=X}ua([[J.r1,J.r2]],[J.angle,J.largeArcFlag?1:0,J.sweepFlag?1:0],[O,X]);break;case 16:O-=m;fa-=m;X-=o;ha-=o;case 17:if(z){m+=O;o+=X}else{O+=m;fa+=m;X+=o;ha+=o;m=O;o=X}ua([[fa,ha],[O,X]])}}return u}}}(),yb=this.removeUnusedDefElems=function(){var e=n.getElementsByTagNameNS(b,"defs");if(!e||!e.length)return 0;for(var k=[],l=0,C=["fill","stroke","filter","marker-start","marker-mid","marker-end"],A=C.length,G=n.getElementsByTagNameNS(b,"*"),D=G.length,z=0;z<D;z++){for(var F=
+G[z],h=0;h<A;h++)if(F){var m=ja(F.getAttribute(C[h]));m&&k.push(m.substr(1))}(F=ca(F))&&F.indexOf("#")===0&&k.push(F.substr(1))}e=$(e).find("linearGradient, radialGradient, filter, marker, svg, symbol");defelem_ids=[];for(z=e.length;z--;){C=e[z];A=C.id;if(k.indexOf(A)<0){sb[A]=C;C.parentNode.removeChild(C);l++}}return l};this.svgCanvasToString=function(){for(;yb()>0;);La.clear(true);$.each(n.childNodes,function(l,C){l&&C.nodeType===8&&C.data.indexOf("Created with")>=0&&n.insertBefore(C,n.firstChild)});
+if(L){Eb();rb([L])}$("#canvasGrid").attr("display","none");var e=[];$(n).find("g:data(gsvg)").each(function(){for(var l=this.attributes,C=l.length,A=0;A<C;A++)if(l[A].nodeName=="id"||l[A].nodeName=="style")C--;if(C<=0){l=this.firstChild;e.push(l);$(this).replaceWith(l)}});var k=this.svgToString(n,0);e.length&&$(e).each(function(){tb(this)});return k};this.svgToString=function(e,k){var l=[],C=svgedit.utilities.toXml,A=p.baseUnit,G=RegExp("^-?[\\d\\.]+"+A+"$");if(e){la(e);var D=e.attributes,z,F,h=e.childNodes;
+for(F=0;F<k;F++)l.push(" ");l.push("<");l.push(e.nodeName);if(e.id==="svgcontent"){F=zb();if(A!=="px"){F.w=svgedit.units.convertUnit(F.w,A)+A;F.h=svgedit.units.convertUnit(F.h,A)+A}l.push(' width="'+F.w+'" height="'+F.h+'" xmlns="'+b+'"');var m={};$(e).find("*").andSelf().each(function(){$.each(this.attributes,function(H,J){var O=J.namespaceURI;if(O&&!m[O]&&ya[O]!=="xmlns"&&ya[O]!=="xml"){m[O]=true;l.push(" xmlns:"+ya[O]+'="'+O+'"')}})});F=D.length;for(A=["width","height","xmlns","x","y","viewBox",
+"id","overflow"];F--;){z=D.item(F);var o=C(z.nodeValue);if(z.nodeName.indexOf("xmlns:")!==0)if(o!=""&&A.indexOf(z.localName)==-1)if(!z.namespaceURI||ya[z.namespaceURI]){l.push(" ");l.push(z.nodeName);l.push('="');l.push(o);l.push('"')}}}else{if(e.nodeName==="defs"&&!e.firstChild)return;var u=["-moz-math-font-style","_moz-math-font-style"];for(F=D.length-1;F>=0;F--){z=D.item(F);o=C(z.nodeValue);if(!(u.indexOf(z.localName)>=0))if(o!="")if(o.indexOf("pointer-events")!==0)if(!(z.localName==="class"&&
+o.indexOf("se_")===0)){l.push(" ");if(z.localName==="d")o=La.convertPath(e,true);if(isNaN(o)){if(G.test(o))o=svgedit.units.shortFloat(o)+A}else o=svgedit.units.shortFloat(o);if($a.apply&&e.nodeName==="image"&&z.localName==="href"&&$a.images&&$a.images==="embed"){var E=Va[o];if(E)o=E}if(!z.namespaceURI||z.namespaceURI==b||ya[z.namespaceURI]){l.push(z.nodeName);l.push('="');l.push(o);l.push('"')}}}}if(e.hasChildNodes()){l.push(">");k++;D=false;for(F=0;F<h.length;F++){A=h.item(F);switch(A.nodeType){case 1:l.push("\n");
+l.push(this.svgToString(h.item(F),k));break;case 3:A=A.nodeValue.replace(/^\s+|\s+$/g,"");if(A!=""){D=true;l.push(C(A)+"")}break;case 4:l.push("\n");l.push(Array(k+1).join(" "));l.push("<![CDATA[");l.push(A.nodeValue);l.push("]]\>");break;case 8:l.push("\n");l.push(Array(k+1).join(" "));l.push("<!--");l.push(A.data);l.push("--\>")}}k--;if(!D){l.push("\n");for(F=0;F<k;F++)l.push(" ")}l.push("</");l.push(e.nodeName);l.push(">")}else l.push("/>")}return l.join("")};this.embedImage=function(e,k){$(new Image).load(function(){var l=
+document.createElement("canvas");l.width=this.width;l.height=this.height;l.getContext("2d").drawImage(this,0,0);try{var C=";svgedit_url="+encodeURIComponent(e);C=l.toDataURL().replace(";base64",C+";base64");Va[e]=C}catch(A){Va[e]=false}Fa=e;k&&k(Va[e])}).attr("src",e)};this.setGoodImage=function(e){Fa=e};this.open=function(){};this.save=function(e){xa();e&&$.extend($a,e);$a.apply=true;e=this.svgCanvasToString();M("saved",e)};this.rasterExport=function(){xa();var e=[],k={feGaussianBlur:kb.exportNoBlur,
+foreignObject:kb.exportNoforeignObject,"[stroke-dasharray]":kb.exportNoDashArray},l=$(n);if(!("font"in $("<canvas>")[0].getContext("2d")))k.text=kb.exportNoText;$.each(k,function(C,A){l.find(C).length&&e.push(A)});k=this.svgCanvasToString();M("exported",{svg:k,issues:e})};this.getSvgString=function(){$a.apply=false;return this.svgCanvasToString()};this.randomizeIds=function(){arguments.length>0&&arguments[0]==false?svgedit.draw.randomizeIds(false,B()):svgedit.draw.randomizeIds(true,B())};var Hb=this.uniquifyElems=
+function(e){var k={},l=["filter","linearGradient","pattern","radialGradient","symbol","textPath","use"];svgedit.utilities.walkTree(e,function(z){if(z.nodeType==1){if(z.id){z.id in k||(k[z.id]={elem:null,attrs:[],hrefs:[]});k[z.id].elem=z}$.each(vb,function(h,m){var o=z.getAttributeNode(m);if(o){var u=svgedit.utilities.getUrlFromAttr(o.value);if(u=u?u.substr(1):null){u in k||(k[u]={elem:null,attrs:[],hrefs:[]});k[u].attrs.push(o)}}});var F=svgedit.utilities.getHref(z);if(F&&l.indexOf(z.nodeName)>=
+0)if(F=F.substr(1)){F in k||(k[F]={elem:null,attrs:[],hrefs:[]});k[F].hrefs.push(z)}}});for(var C in k)if(C){var A=k[C].elem;if(A){e=ka();A.id=e;A=k[C].attrs;for(var G=A.length;G--;){var D=A[G];D.ownerElement.setAttribute(D.name,"url(#"+e+")")}A=k[C].hrefs;for(G=A.length;G--;)svgedit.utilities.setHref(A[G],"#"+e)}}},Gb=this.setUseData=function(e){var k=$(e);if(e.tagName!=="use")k=k.find("use");k.each(function(){var l=ca(this).substr(1);if(l=pa(l)){$(this).data("ref",l);if(l.tagName=="symbol"||l.tagName==
+"svg")$(this).data("symbol",l).data("ref",l)}})},Ib=this.convertGradients=function(e){var k=$(e).find("linearGradient, radialGradient");if(!k.length&&svgedit.browser.isWebkit())k=$(e).find("*").filter(function(){return this.tagName.indexOf("Gradient")>=0});k.each(function(){if($(this).attr("gradientUnits")==="userSpaceOnUse"){var l=$(n).find('[fill="url(#'+this.id+')"],[stroke="url(#'+this.id+')"]');if(l.length)if(l=svgedit.utilities.getBBox(l[0]))if(this.tagName==="linearGradient"){var C=$(this).attr(["x1",
+"y1","x2","y2"]),A=this.gradientTransform.baseVal;if(A&&A.numberOfItems>0){var G=Y(A).matrix;A=N(C.x1,C.y1,G);G=N(C.x2,C.y2,G);C.x1=A.x;C.y1=A.y;C.x2=G.x;C.y2=G.y;this.removeAttribute("gradientTransform")}$(this).attr({x1:(C.x1-l.x)/l.width,y1:(C.y1-l.y)/l.height,x2:(C.x2-l.x)/l.width,y2:(C.y2-l.y)/l.height});this.removeAttribute("gradientUnits")}}})},Lb=this.convertToGroup=function(e){e||(e=I[0]);var k=$(e),l=new Da,C;if(k.data("gsvg")){l=$(e.firstChild).attr(["x","y"]);$(e.firstChild.firstChild).unwrap();
+$(e).removeData("gsvg");C=R(e);var A=d.createSVGTransform();A.setTranslate(l.x,l.y);C.appendItem(A);Ra(e);M("selected",[e])}else if(k.data("symbol")){e=k.data("symbol");C=k.attr("transform");A=k.attr(["x","y"]);var G=e.getAttribute("viewBox");if(G){G=G.split(" ");A.x-=+G[0];A.y-=+G[1]}C+=" translate("+(A.x||0)+","+(A.y||0)+")";A=k.prev();l.addSubCommand(new Ha(k[0],k[0].nextSibling,k[0].parentNode));k.remove();G=$(n).find("use:data(symbol)").length;k=f.createElementNS(b,"g");for(var D=e.childNodes,
+z=0;z<D.length;z++)k.appendChild(D[z].cloneNode(true));if(svgedit.browser.isGecko()){D=$(gb()).children("linearGradient,radialGradient,pattern").clone();$(k).append(D)}C&&k.setAttribute("transform",C);C=e.parentNode;Hb(k);svgedit.browser.isGecko()&&$(gb()).append($(k).find("linearGradient,radialGradient,pattern"));k.id=ka();A.after(k);if(C){if(!G){A=e.nextSibling;C.removeChild(e);l.addSubCommand(new Ha(e,A,C))}l.addSubCommand(new Ia(k))}Gb(k);svgedit.browser.isGecko()?Ib(gb()):Ib(k);svgedit.utilities.walkTreePost(k,
+function(F){try{Ra(F)}catch(h){console.log(h)}});$(k).find("a,circle,ellipse,foreignObject,g,image,line,path,polygon,polyline,rect,svg,text,tspan,use").each(function(){if(!this.id)this.id=ka()});rb([k]);(e=Db(k,true))&&l.addSubCommand(e);wa(l)}else console.log("Unexpected element to ungroup:",e)};this.setSvgString=function(e){try{var k=svgedit.utilities.text2xml(e);this.prepareSvg(k);var l=new Da("Change Source"),C=n.nextSibling,A=d.removeChild(n);l.addSubCommand(new Ha(A,C,d));n=f.adoptNode?f.adoptNode(k.documentElement):
+f.importNode(k.documentElement,true);d.appendChild(n);var G=$(n);c.current_drawing_=new svgedit.draw.Drawing(n,v);var D=B().getNonce();D?M("setnonce",D):M("unsetnonce");G.find("image").each(function(){var J=this;Fb(J);var O=ca(this);if(O.indexOf("data:")===0){var X=O.match(/svgedit_url=(.*?);/);if(X){var ba=decodeURIComponent(X[1]);$(new Image).load(function(){J.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",ba)}).attr("src",ba)}}c.embedImage(O)});G.find("svg").each(function(){if(!$(this).closest("defs").length){Hb(this);
+var J=this.parentNode;if(J.childNodes.length===1&&J.nodeName==="g"){$(J).data("gsvg",this);J.id=J.id||ka()}else tb(this)}});G.find("linearGradient, radialGradient, pattern").appendTo(gb());Gb(G);Ib(G[0]);svgedit.utilities.walkTreePost(n,function(J){try{Ra(J)}catch(O){console.log(O)}});var z={id:"svgcontent",overflow:p.show_outside_canvas?"visible":"hidden"},F=false;if(G.attr("viewBox")){var h=G.attr("viewBox").split(" ");z.width=h[2];z.height=h[3]}else $.each(["width","height"],function(J,O){var X=
+G.attr(O);X||(X="100%");if((X+"").substr(-1)==="%")F=true;else z[O]=Ba(O,X)});xb();G.children().find("a,circle,ellipse,foreignObject,g,image,line,path,polygon,polyline,rect,svg,text,tspan,use").each(function(){if(!this.id)this.id=ka()});if(F){var m=getStrokedBBox();z.width=m.width+m.x;z.height=m.height+m.y}if(z.width<=0)z.width=200;if(z.height<=0)z.height=200;G.attr(z);this.contentW=z.width;this.contentH=z.height;$("#canvas_width").val(this.contentW);$("#canvas_height").val(this.contentH);var o=$("#canvas_background");
+if(o.length){var u=o.attr("fill-opacity");u=u?parseInt(u)*100:100;fill=this.getPaint(o.attr("fill"),u,"canvas")}else fill=this.getPaint("none",100,"canvas");methodDraw.paintBox.canvas.setPaint(fill);l.addSubCommand(new Ia(n));var E=G.attr(["width","height"]);l.addSubCommand(new Ma(d,E));q=1;svgedit.transformlist.resetListMap();xa();svgedit.path.clearData();d.appendChild(ra.selectorParentGroup);wa(l);M("changed",[n])}catch(H){console.log(H);return false}return true};this.getPaint=function(e,k,l){var C=
+null;if(e.indexOf("url(#")===0){e=(e=svgCanvas.getRefElem(e))?e.cloneNode(true):$("#"+l+"_color defs *")[0];C={alpha:k};C[e.tagName]=e}else C=e.indexOf("#")===0?{alpha:k,solidColor:e.substr(1)}:{alpha:k,solidColor:"none"};return new $.jGraduate.Paint(C)};this.importSvgString=function(e){try{var k=svgedit.utilities.encode64(e.length+e).substr(0,32),l=false;if(lb[k])if($(lb[k].symbol).parents("#svgroot").length)l=true;var C=new Da("Import SVG");if(l)var A=lb[k].symbol,G=lb[k].xform;else{var D=svgedit.utilities.text2xml(e);
+this.prepareSvg(D);var z;z=f.adoptNode?f.adoptNode(D.documentElement):f.importNode(D.documentElement,true);Hb(z);var F=Ba("width",z.getAttribute("width")),h=Ba("height",z.getAttribute("height")),m=z.getAttribute("viewBox"),o=m?m.split(" "):[0,0,F,h];for(e=0;e<4;++e)o[e]=+o[e];n.getAttribute("width");var u=+n.getAttribute("height");G=h>F?"scale("+u/3/o[3]+")":"scale("+u/3/o[2]+")";G="translate(0) "+G+" translate(0)";A=f.createElementNS(b,"symbol");var E=gb();for(svgedit.browser.isGecko()&&$(z).find("linearGradient, radialGradient, pattern").appendTo(E);z.firstChild;)A.appendChild(z.firstChild);
+var H=z.attributes;for(z=0;z<H.length;z++){var J=H[z];A.setAttribute(J.nodeName,J.nodeValue)}A.id=ka();lb[k]={symbol:A,xform:G};gb().appendChild(A);C.addSubCommand(new Ia(A))}var O=f.createElementNS(b,"use");O.id=ka();U(O,"#"+A.id);(L||B().getCurrentLayer()).appendChild(O);C.addSubCommand(new Ia(O));xa();O.setAttribute("transform",G);Ra(O);$(O).data("symbol",A).data("ref",A);qb([O]);wa(C);M("changed",[n])}catch(X){console.log(X);return false}return true};var xb=c.identifyLayers=function(){Eb();B().identifyLayers()};
+this.createLayer=function(e){var k=new Da("Create Layer");e=B().createLayer(e);k.addSubCommand(new Ia(e));wa(k);xa();M("changed",[e])};this.cloneLayer=function(e){var k=new Da("Duplicate Layer"),l=f.createElementNS(b,"g"),C=f.createElementNS(b,"title");C.textContent=e;l.appendChild(C);C=B().getCurrentLayer();$(C).after(l);C=C.childNodes;for(var A=0;A<C.length;A++){var G=C[A];G.localName!="title"&&l.appendChild(ia(G))}xa();xb();k.addSubCommand(new Ia(l));wa(k);c.setCurrentLayer(e);M("changed",[l])};
+this.deleteCurrentLayer=function(){var e=B().getCurrentLayer(),k=e.nextSibling,l=e.parentNode;if(e=B().deleteCurrentLayer()){var C=new Da("Delete Layer");C.addSubCommand(new Ha(e,k,l));wa(C);xa();M("changed",[l]);return true}return false};this.setCurrentLayer=function(e){(e=B().setCurrentLayer(svgedit.utilities.toXml(e)))&&xa();return e};this.renameCurrentLayer=function(e){var k=B();if(k.current_layer){var l=k.current_layer;if(!c.setCurrentLayer(e)){for(var C=new Da("Rename Layer"),A=0;A<k.getNumLayers();++A)if(k.all_layers[A][1]==
+l)break;var G=k.getLayerName(A);k.all_layers[A][0]=svgedit.utilities.toXml(e);var D=l.childNodes.length;for(A=0;A<D;++A){var z=l.childNodes.item(A);if(z&&z.tagName=="title"){for(;z.firstChild;)z.removeChild(z.firstChild);z.textContent=e;C.addSubCommand(new Ma(z,{"#text":G}));wa(C);M("changed",[l]);return true}}}k.current_layer=l}return false};this.setCurrentLayerPosition=function(e){var k=B();if(k.current_layer&&e>=0&&e<k.getNumLayers()){for(var l=0;l<k.getNumLayers();++l)if(k.all_layers[l][1]==k.current_layer)break;
+if(l==k.getNumLayers())return false;if(l!=e){var C=null,A=k.current_layer.nextSibling;if(e>l){if(e<k.getNumLayers()-1)C=k.all_layers[e+1][1]}else C=k.all_layers[e][1];n.insertBefore(k.current_layer,C);wa(new Ja(k.current_layer,A,n));xb();c.setCurrentLayer(k.getLayerName(e));return true}}return false};this.setLayerVisibility=function(e,k){var l=B(),C=l.getLayerVisibility(e),A=l.setLayerVisibility(e,k);if(A)wa(new Ma(A,{display:C?"inline":"none"},"Layer Visibility"));else return false;if(A==l.getCurrentLayer()){xa();
+La.clear()}return true};this.moveSelectedToLayer=function(e){for(var k=null,l=B(),C=0;C<l.getNumLayers();++C)if(l.getLayerName(C)==e){k=l.all_layers[C][1];break}if(!k)return false;e=new Da("Move Elements to Layer");l=I;for(C=l.length;C--;){var A=l[C];if(A){var G=A.nextSibling,D=A.parentNode;k.appendChild(A);e.addSubCommand(new Ja(A,G,D))}}wa(e);return true};this.mergeLayer=function(e){var k=new Da("Merge Layer"),l=B(),C=$(l.current_layer).prev()[0];if(C){for(k.addSubCommand(new Ha(l.current_layer,
+l.current_layer.nextSibling,n));l.current_layer.firstChild;){var A=l.current_layer.firstChild;if(A.localName=="title"){k.addSubCommand(new Ha(A,A.nextSibling,l.current_layer));l.current_layer.removeChild(A)}else{var G=A.nextSibling;C.appendChild(A);k.addSubCommand(new Ja(A,G,l.current_layer))}}n.removeChild(l.current_layer);if(!e){xa();xb();M("changed",[n]);wa(k)}l.current_layer=C;return k}};this.mergeAllLayers=function(){var e=new Da("Merge all Layers"),k=B();for(k.current_layer=k.all_layers[k.getNumLayers()-
+1][1];$(n).children("g").length>1;)e.addSubCommand(c.mergeLayer(true));xa();xb();M("changed",[n]);wa(e)};var Eb=this.leaveContext=function(){var e=ta.length;if(e){for(var k=0;k<e;k++){var l=ta[k],C=cb(l,"orig_opac");C!==1?l.setAttribute("opacity",C):l.removeAttribute("opacity");l.setAttribute("style","pointer-events: inherit")}ta=[];xa(true);M("contextset",null)}L=null},Kb=this.setContext=function(e){Eb();if(typeof e==="string")e=pa(e);L=e;$(e).parentsUntil("#svgcontent").andSelf().siblings().each(function(){var k=
+this.getAttribute("opacity")||1;cb(this,"orig_opac",k);this.setAttribute("opacity",k*0.33);this.setAttribute("style","pointer-events: none");ta.push(this)});xa();M("contextset",L)};this.clear=function(){La.clear();xa();c.clearSvgContentElement();c.current_drawing_=new svgedit.draw.Drawing(n);c.createLayer("Layer 1");c.undoMgr.resetUndoStack();ra.initGroup();sa=ra.getRubberBandBox();M("cleared")};this.linkControlPoints=La.linkControlPoints;this.getContentElem=function(){return n};this.getRootElem=
+function(){return d};this.getSelectedElems=function(){return I};var zb=this.getResolution=function(){var e=n.getAttribute("width")/q,k=n.getAttribute("height")/q;return{w:e,h:k,zoom:q}};this.getZoom=function(){return q};this.getVersion=function(){return"svgcanvas.js ($Rev: 2082 $)"};this.setUiStrings=function(e){$.extend(kb,e.notification)};this.setConfig=function(e){$.extend(p,e)};this.getTitle=function(e){if(e=e||I[0]){e=$(e).data("gsvg")||$(e).data("symbol")||e;e=e.childNodes;for(var k=0;k<e.length;k++)if(e[k].nodeName==
+"title")return e[k].textContent;return""}};this.setGroupTitle=function(e){var k=I[0];k=$(k).data("gsvg")||k;var l=$(k).children("title"),C=new Da("Set Label");if(e.length)if(l.length){l=l[0];C.addSubCommand(new Ma(l,{"#text":l.textContent}));l.textContent=e}else{l=f.createElementNS(b,"title");l.textContent=e;$(k).prepend(l);C.addSubCommand(new Ia(l))}else{C.addSubCommand(new Ha(l[0],l.nextSibling,k));l.remove()}wa(C)};this.getDocumentTitle=function(){return c.getTitle(n)};this.setDocumentTitle=function(e){for(var k=
+n.childNodes,l=false,C="",A=new Da("Change Image Title"),G=0;G<k.length;G++)if(k[G].nodeName=="title"){l=k[G];C=l.textContent;break}if(!l){l=f.createElementNS(b,"title");n.insertBefore(l,n.firstChild)}if(e.length)l.textContent=e;else l.parentNode.removeChild(l);A.addSubCommand(new Ma(l,{"#text":C}));wa(A)};this.getEditorNS=function(e){e&&n.setAttribute("xmlns:se","http://svg-edit.googlecode.com");return"http://svg-edit.googlecode.com"};this.setResolution=function(e,k){var l=zb(),C=l.w;l=l.h;var A;
+if(e=="fit"){var G=getStrokedBBox();if(G){A=new Da("Fit Canvas to Content");var D=pb();qb(D);var z=[],F=[];$.each(D,function(){z.push(G.x*-1);F.push(G.y*-1)});D=c.moveSelectedElements(z,F,true);A.addSubCommand(D);xa();e=Math.round(G.width);k=Math.round(G.height)}else return false}if(e!=C||k!=l){D=d.suspendRedraw(1E3);A||(A=new Da("Change Image Dimensions"));e=Ba("width",e);k=Ba("height",k);n.setAttribute("width",e);n.setAttribute("height",k);this.contentW=e;this.contentH=k;A.addSubCommand(new Ma(n,
+{width:C,height:l}));n.setAttribute("viewBox",[0,0,e/q,k/q].join(" "));A.addSubCommand(new Ma(n,{viewBox:["0 0",C,l].join(" ")}));wa(A);d.unsuspendRedraw(D);if(background=document.getElementById("canvas_background")){background.setAttribute("x",-1);background.setAttribute("y",-1);background.setAttribute("width",e+2);background.setAttribute("height",k+2)}M("changed",[n])}return[e,k]};this.getOffset=function(){return $(n).attr(["x","y"])};this.setBBoxZoom=function(e,k,l){var C=0.85,A=function(G){if(!G)return false;
+var D=Math.min(Math.round(k/G.width*100*C)/100,Math.round(l/G.height*100*C)/100);c.setZoom(D);return{zoom:D,bbox:G}};if(typeof e=="object"){e=e;if(e.width==0||e.height==0){c.setZoom(e.zoom?e.zoom:q*e.factor);return{zoom:q,bbox:e}}return A(e)}switch(e){case "selection":if(!I[0])return;e=$.map(I,function(G){if(G)return G});e=getStrokedBBox(e);break;case "canvas":e=zb();C=0.95;e={width:e.w,height:e.h,x:0,y:0};break;case "content":e=getStrokedBBox();break;case "layer":e=getStrokedBBox(pb(B().getCurrentLayer()));
+break;default:return}return A(e)};this.setZoom=function(e){var k=zb();n.setAttribute("viewBox","0 0 "+k.w/e+" "+k.h/e);q=e;$.each(I,function(l,C){C&&ra.requestSelector(C).resize()});La.zoomChange();ib("zoomChanged",e)};this.getMode=function(){return Ga};this.setMode=function(e){La.clear();bb.clear();$("#workarea").attr("class",e);Xa=I[0]&&I[0].nodeName=="text"?Ua:K;Ga=e};this.getColor=function(e){return Xa[e]};this.setColor=function(e,k,l){K[e]=k;Xa[e+"_paint"]={type:"solidColor"};for(var C=[],A=
+I.length;A--;){var G=I[A];if(G)if(G.tagName=="g")svgedit.utilities.walkTree(G,function(D){D.nodeName!="g"&&C.push(D)});else if(e=="fill")G.tagName!="polyline"&&G.tagName!="line"&&C.push(G);else C.push(G)}if(C.length>0)if(l)Ab(e,k,C);else{Ya(e,k,C);M("changed",C)}};var gb=function(){var e=n.getElementsByTagNameNS(b,"defs");if(e.length>0)e=e[0];else{e=f.createElementNS(b,"defs");n.firstChild?n.insertBefore(e,n.firstChild.nextSibling):n.appendChild(e)}return e},Nb=this.setGradient=function(e){if(!(!Xa[e+
+"_paint"]||Xa[e+"_paint"].type=="solidColor")){var k=c[e+"Grad"],l=Mb(k),C=gb();if(l)k=l;else{k=C.appendChild(f.importNode(k,true));k.id=ka()}c.setColor(e,"url(#"+k.id+")");if(e=="canvas")(e=document.getElementById("canvas_background"))&&e.setAttribute("fill","url(#"+k.id+")")}},Mb=function(e){var k=gb();k=$(k).find("linearGradient, radialGradient");for(var l=k.length,C=["r","cx","cy","fx","fy"];l--;){var A=k[l];if(e.tagName=="linearGradient"){if(e.getAttribute("x1")!=A.getAttribute("x1")||e.getAttribute("y1")!=
+A.getAttribute("y1")||e.getAttribute("x2")!=A.getAttribute("x2")||e.getAttribute("y2")!=A.getAttribute("y2"))continue}else{var G=$(e).attr(C),D=$(A).attr(C),z=false;$.each(C,function(E,H){if(G[H]!=D[H])z=true});if(z)continue}var F=e.getElementsByTagNameNS(b,"stop"),h=A.getElementsByTagNameNS(b,"stop");if(F.length==h.length){for(var m=F.length;m--;){var o=F[m],u=h[m];if(o.getAttribute("offset")!=u.getAttribute("offset")||o.getAttribute("stop-opacity")!=u.getAttribute("stop-opacity")||o.getAttribute("stop-color")!=
+u.getAttribute("stop-color"))break}if(m==-1)return A}}return null};this.setPaint=function(e,k){var l=new $.jGraduate.Paint(k);this.setPaintOpacity(e,l.alpha/100,true);Xa[e+"_paint"]=l;switch(l.type){case "solidColor":if(l.solidColor!="none"&&l.solidColor!="#none")this.setColor(e,"#"+l.solidColor);else{this.setColor(e,"none");document.querySelector(e=="fill"?"#fill_color rect":"#stroke_color rect").setAttribute("fill","none")}break;case "linearGradient":case "radialGradient":c[e+"Grad"]=l[l.type];
+Nb(e)}};this.getStrokeWidth=function(){return Xa.stroke_width};this.setStrokeWidth=function(e){if(e==0&&["line","path"].indexOf(Ga)>=0)c.setStrokeWidth(1);else{Xa.stroke_width=e;for(var k=[],l=I.length;l--;){var C=I[l];if(C)C.tagName=="g"?svgedit.utilities.walkTree(C,function(A){A.nodeName!="g"&&k.push(A)}):k.push(C)}if(k.length>0){Ya("stroke-width",e,k);M("changed",I)}}};this.setStrokeAttr=function(e,k){K[e.replace("-","_")]=k;for(var l=[],C=I.length;C--;){var A=I[C];if(A)A.tagName=="g"?svgedit.utilities.walkTree(A,
+function(G){G.nodeName!="g"&&l.push(G)}):l.push(A)}if(l.length>0){Ya(e,k,l);M("changed",I)}};this.getStyle=function(){return K};this.getOpacity=function(){return K.opacity};this.setOpacity=function(e){K.opacity=e;Ya("opacity",e)};this.getFillOpacity=function(){return K.fill_opacity};this.getStrokeOpacity=function(){return K.stroke_opacity};this.setPaintOpacity=function(e,k,l){K[e+"_opacity"]=k;l?Ab(e+"-opacity",k):Ya(e+"-opacity",k)};this.getBlur=function(e){var k=0;if(e)if(e.getAttribute("filter"))if(e=
+pa(e.id+"_blur"))k=e.firstChild.getAttribute("stdDeviation");return k};(function(){function e(){var A=c.undoMgr.finishUndoableChange();k.addSubCommand(A);wa(k);l=k=null}var k=null,l=null,C=false;c.setBlurNoUndo=function(A){if(l)if(A===0){Ab("filter","");C=true}else{var G=I[0];C&&Ab("filter","url(#"+G.id+"_blur)");if(svgedit.browser.isWebkit()){G.removeAttribute("filter");G.setAttribute("filter","url(#"+G.id+"_blur)")}Ab("stdDeviation",A,[l.firstChild]);c.setBlurOffsets(l,A)}else c.setBlur(A)};c.setBlurOffsets=
+function(A,G){if(G>3)ma(A,{x:"-50%",y:"-50%",width:"200%",height:"200%"},100);else if(!svgedit.browser.isWebkit()){A.removeAttribute("x");A.removeAttribute("y");A.removeAttribute("width");A.removeAttribute("height")}};c.setBlur=function(A,G){if(k)e();else{var D=I[0],z=D.id;l=pa(z+"_blur");A-=0;var F=new Da;if(l){if(A===0)l=null}else{var h=S({element:"feGaussianBlur",attr:{"in":"SourceGraphic",stdDeviation:A}});l=S({element:"filter",attr:{id:z+"_blur"}});l.appendChild(h);gb().appendChild(l);F.addSubCommand(new Ia(l))}h=
+{filter:D.getAttribute("filter")};if(A===0){D.removeAttribute("filter");F.addSubCommand(new Ma(D,h))}else{Ya("filter","url(#"+z+"_blur)");F.addSubCommand(new Ma(D,h));c.setBlurOffsets(l,A);k=F;c.undoMgr.beginUndoableChange("stdDeviation",[l?l.firstChild:null]);if(G){c.setBlurNoUndo(A);e()}}}}})();this.getBold=function(){var e=true;I.filter(Boolean).forEach(function(k){if(k.getAttribute("font-weight")!="bold")e=false});return e};this.setBold=function(e){var k=I.filter(Boolean);k.forEach(function(l){if(l!=
+null&&l.tagName=="text")Ya("font-weight",e?"bold":"normal")});k[0].textContent||bb.setCursor()};this.getItalic=function(){var e=true;I.filter(Boolean).forEach(function(k){if(k.getAttribute("font-style")!="italic")e=false});return e};this.setItalic=function(e){var k=I.filter(Boolean);k.forEach(function(l){if(l!=null&&l.tagName=="text")Ya("font-style",e?"italic":"normal")});k[0].textContent||bb.setCursor()};this.getFontFamily=function(){return Ua.font_family};this.setFontFamily=function(e){Ua.font_family=
+e;Ya("font-family",e);I[0]&&!I[0].textContent&&bb.setCursor()};this.setFontColor=function(e){Ua.fill=e;Ya("fill",e)};this.getFontSize=function(){return Ua.fill};this.getFontSize=function(){return Ua.font_size};this.setFontSize=function(e){Ua.font_size=e;Ya("font-size",e);I[0].textContent||bb.setCursor()};this.getText=function(){var e=I[0];if(e==null)return"";return e.textContent};this.setTextContent=function(e){Ya("#text",e);bb.init(e);bb.setCursor()};this.setImageURL=function(e){var k=I[0];if(k){var l=
+$(k).attr(["width","height"]);l=!l.width||!l.height;var C=ca(k);if(C!==e)l=true;else if(!l)return;var A=new Da("Change Image URL");U(k,e);A.addSubCommand(new Ma(k,{"#href":C}));l?$(new Image).load(function(){var G=$(k).attr(["width","height"]);$(k).attr({width:this.width,height:this.height});ra.requestSelector(k).resize();A.addSubCommand(new Ma(k,G));wa(A);M("changed",[k])}).attr("src",e):wa(A)}};this.setLinkURL=function(e){var k=I[0];if(k){if(k.tagName!=="a"){k=$(k).parents("a");if(k.length)k=k[0];
+else return}var l=ca(k);if(l!==e){var C=new Da("Change Link URL");U(k,e);C.addSubCommand(new Ma(k,{"#href":l}));wa(C)}}};this.elementsAreSame=function(e){return!e.length||e[0]==null?null:I.every(function(k){return k&&I[0]?k.nodeName==I[0].nodeName:null})};this.setRectRadius=function(e){c.elementsAreSame(I)&&I[0].tagName=="rect"&&I.forEach(function(k){var l=k.getAttribute("rx");if(l!=e){k.setAttribute("rx",e);k.setAttribute("ry",e);wa(new Ma(k,{rx:l,ry:l},"Radius"));M("changed",[k])}})};this.makeHyperlink=
+function(e){c.groupSelectedElements("a",e)};this.removeHyperlink=function(){c.ungroupSelectedElement()};this.setSegType=function(e){La.setSegType(e)};this.convertToPath=function(e,k){if(e==null)$.each(I,function(ba,T){T&&c.convertToPath(T)});else{if(!k)var l=new Da("Convert element to Path");var C=k?{}:{fill:K.fill,"fill-opacity":K.fill_opacity,stroke:K.stroke,"stroke-width":K.stroke_width,"stroke-dasharray":K.stroke_dasharray,"stroke-linejoin":K.stroke_linejoin,"stroke-linecap":K.stroke_linecap,
+"stroke-opacity":K.stroke_opacity,opacity:K.opacity,visibility:"hidden"};$.each(["marker-start","marker-end","marker-mid","filter","clip-path"],function(){if(e.getAttribute(this))C[this]=e.getAttribute(this)});var A=S({element:"path",attr:C}),G=e.getAttribute("transform");G&&A.setAttribute("transform",G);var D=e.id,z=e.parentNode;e.nextSibling?z.insertBefore(A,e):z.appendChild(A);var F="",h=function(ba){$.each(ba,function(T,fa){var ha=fa[1];F+=fa[0];for(var W=0;W<ha.length;W+=2)F+=ha[W]+","+ha[W+
+1]+" "})},m=1.81;switch(e.tagName){case "ellipse":case "circle":var o=$(e).attr(["rx","ry","cx","cy"]),u=o.cx,E=o.cy,H=o.rx;o=o.ry;if(e.tagName=="circle")H=o=$(e).attr("r");h([["M",[u-H,E]],["C",[u-H,E-o/m,u-H/m,E-o,u,E-o]],["C",[u+H/m,E-o,u+H,E-o/m,u+H,E]],["C",[u+H,E+o/m,u+H/m,E+o,u,E+o]],["C",[u-H/m,E+o,u-H,E+o/m,u-H,E]],["Z",[]]]);break;case "path":F=e.getAttribute("d");break;case "line":o=$(e).attr(["x1","y1","x2","y2"]);F="M"+o.x1+","+o.y1+"L"+o.x2+","+o.y2;break;case "polyline":case "polygon":F=
+"M"+e.getAttribute("points");break;case "rect":o=$(e).attr(["rx","ry"]);H=o.rx;o=o.ry;var J=e.getBBox();u=J.x;E=J.y;var O=J.width;J=J.height;m=4-m;if(!H&&!o)h([["M",[u,E]],["L",[u+O,E]],["L",[u+O,E+J]],["L",[u,E+J]],["L",[u,E]],["Z",[]]]);else{o||(o=H);h([["M",[u,E+o]],["C",[u,E+o/m,u+H/m,E,u+H,E]],["L",[u+O-H,E]],["C",[u+O-H/m,E,u+O,E+o/m,u+O,E+o]],["L",[u+O,E+J-o]],["C",[u+O,E+J-o/m,u+O-H/m,E+J,u+O-H,E+J]],["L",[u+H,E+J]],["C",[u+H/m,E+J,u,E+J-o/m,u,E+J-o]],["L",[u,E+o]],["Z",[]]])}break;default:A.parentNode.removeChild(A)}F&&
+A.setAttribute("d",F);if(k){La.resetOrientation(A);l=false;try{l=A.getBBox()}catch(X){}A.parentNode.removeChild(A);return l}else{if(G){G=R(A);oa(G)&&La.resetOrientation(A)}l.addSubCommand(new Ha(e,e.nextSibling,z));l.addSubCommand(new Ia(A));xa();e.parentNode.removeChild(e);A.setAttribute("id",D);A.removeAttribute("visibility");qb([A],true);wa(l)}}};var Ab=this.changeSelectedAttributeNoUndo=function(e,k,l){var C=d.suspendRedraw(1E3);Ga=="pathedit"&&La.moveNode(e,k);l=l||I;for(var A=l.length,G=["g",
+"polyline","path"];A--;){var D=l[A];if(D!=null){Ga==="textedit"&&e!=="#text"&&D.textContent.length&&bb.toSelectMode(D);if((e==="x"||e==="y")&&G.indexOf(D.tagName)>=0){var z=getStrokedBBox([D]);c.moveSelectedElements((e==="x"?k-z.x:0)*q,(e==="y"?k-z.y:0)*q,true)}else{z=e==="#text"?D.textContent:D.getAttribute(e);if(z==null)z="";if(z!==String(k)){if(e=="#text"){svgedit.utilities.getBBox(D);D.textContent=k}else e=="#href"?U(D,k):D.setAttribute(e,k);I.indexOf(D)>=0&&setTimeout(function(){D.parentNode&&
+ra.requestSelector(D).resize()},0);z=na(D);if(z!=0&&e!="transform")for(var F=R(D),h=F.numberOfItems;h--;)if(F.getItem(h).type==4){F.removeItem(h);var m=svgedit.utilities.getBBox(D),o=N(m.x+m.width/2,m.y+m.height/2,Y(F).matrix);m=o.x;o=o.y;var u=d.createSVGTransform();u.setRotate(z,m,o);F.insertItemBefore(u,h);break}}}}}d.unsuspendRedraw(C)},Ya=this.changeSelectedAttribute=function(e,k,l){l=l||I;c.undoMgr.beginUndoableChange(e,l);Ab(e,k,l);e=c.undoMgr.finishUndoableChange();e.isEmpty()||wa(e)};this.deleteSelectedElements=
+function(){for(var e=new Da("Delete Elements"),k=I.length,l=[],C=0;C<k;++C){var A=I[C];if(A==null)break;var G=A.parentNode,D=A;ra.releaseSelector(D);svgedit.path.removePath_(D.id);if(G.tagName==="a"&&G.childNodes.length===1){D=G;G=G.parentNode}var z=D.nextSibling;D=G.removeChild(D);l.push(A);I[C]=null;e.addSubCommand(new Ha(D,z,G))}e.isEmpty()||wa(e);M("changed",l);xa()};this.cutSelectedElements=function(){for(var e=new Da("Cut Elements"),k=I.length,l=[],C=0;C<k;++C){var A=I[C];if(A==null)break;var G=
+A.parentNode,D=A;ra.releaseSelector(D);svgedit.path.removePath_(D.id);var z=D.nextSibling;D=G.removeChild(D);l.push(A);I[C]=null;e.addSubCommand(new Ha(D,z,G))}e.isEmpty()||wa(e);M("changed",l);xa();c.clipBoard=l};this.copySelectedElements=function(){c.clipBoard=$.merge([],I)};this.pasteElements=function(){var e=c.clipBoard,k=e.length;if(k){for(var l=[],C=new Da("Paste elements");k--;){var A=e[k];if(A){var G=ia(A);if(!pa(A.id))G.id=A.id;l.push(G);(L||B().getCurrentLayer()).appendChild(G);C.addSubCommand(new Ia(G))}}svgCanvas.clearSelection();
+setTimeout(function(){rb(l)},100);wa(C);M("changed",l)}};this.groupSelectedElements=function(e){e||(e="g");var k="";switch(e){case "a":k="Make hyperlink";var l="";if(arguments.length>1)l=arguments[1];break;default:e="g";k="Group Elements"}k=new Da(k);var C=S({element:e,attr:{id:ka()}});e==="a"&&U(C,l);k.addSubCommand(new Ia(C));for(l=I.length;l--;){var A=I[l];if(A!=null){if(A.parentNode.tagName==="a"&&A.parentNode.childNodes.length===1)A=A.parentNode;var G=A.nextSibling,D=A.parentNode;C.appendChild(A);
+k.addSubCommand(new Ja(A,G,D))}}k.isEmpty()||wa(k);rb([C],true)};var Db=this.pushGroupProperties=function(e,k){var l=e.childNodes,C=l.length,A=e.getAttribute("transform"),G=R(e),D=Y(G).matrix,z=new Da("Push group properties"),F=0,h=na(e),m=$(e).attr(["filter","opacity"]),o,u;for(F=0;F<C;F++){var E=l[F];if(E.nodeType===1){if(m.opacity!==null&&m.opacity!==1){E.getAttribute("opacity");var H=Math.round((E.getAttribute("opacity")||1)*m.opacity*100)/100;Ya("opacity",H,[E])}if(m.filter){var J=H=this.getBlur(E);
+u||(u=this.getBlur(e));if(H)H=u-0+(H-0);else if(H===0)H=u;if(J)o=P(E.getAttribute("filter"));else if(o){o=ia(o);gb().appendChild(o)}else o=P(m.filter);o.id=E.id+"_"+(o.firstChild.tagName==="feGaussianBlur"?"blur":"filter");Ya("filter","url(#"+o.id+")",[E]);if(H){Ya("stdDeviation",H,[o.firstChild]);c.setBlurOffsets(o,H)}}H=R(E);if(~E.tagName.indexOf("Gradient"))H=null;if(H)if(E.tagName!=="defs")if(G.numberOfItems){if(h&&G.numberOfItems==1){var O=G.getItem(0).matrix,X=d.createSVGMatrix();if(J=na(E))X=
+H.getItem(0).matrix;var ba=svgedit.utilities.getBBox(E),T=Y(H).matrix,fa=N(ba.x+ba.width/2,ba.y+ba.height/2,T);ba=h+J;T=d.createSVGTransform();T.setRotate(ba,fa.x,fa.y);O=ga(O,X,T.matrix.inverse());J&&H.removeItem(0);if(ba)H.numberOfItems?H.insertItemBefore(T,0):H.appendItem(T);if(O.e||O.f){J=d.createSVGTransform();J.setTranslate(O.e,O.f);H.numberOfItems?H.insertItemBefore(J,0):H.appendItem(J)}}else{J=E.getAttribute("transform");O={};O.transform=J?J:"";J=d.createSVGTransform();O=Y(H).matrix;X=O.inverse();
+O=ga(X,D,O);J.setMatrix(O);H.appendItem(J)}(E=Ra(E))&&z.addSubCommand(E)}}}if(A){O={};O.transform=A;e.setAttribute("transform","");e.removeAttribute("transform");z.addSubCommand(new Ma(e,O))}if(k&&!z.isEmpty())return z};this.ungroupSelectedElement=function(){var e=I[0];if($(e).data("gsvg")||$(e).data("symbol"))Lb(e);else if(e.tagName==="use"){var k=pa(ca(e).substr(1));$(e).data("symbol",k).data("ref",k);Lb(e)}else{k=$(e).parents("a");if(k.length)e=k[0];if(e.tagName==="g"||e.tagName==="a"){k=new Da("Ungroup Elements");
+var l=Db(e,true);l&&k.addSubCommand(l);l=e.parentNode;for(var C=e.nextSibling,A=Array(e.childNodes.length),G=0;e.firstChild;){var D=e.firstChild,z=D.nextSibling,F=D.parentNode;if(D.tagName==="title"){k.addSubCommand(new Ha(D,D.nextSibling,F));F.removeChild(D)}else{A[G++]=D=l.insertBefore(D,C);k.addSubCommand(new Ja(D,z,F))}}xa();C=e.nextSibling;e=l.removeChild(e);k.addSubCommand(new Ha(e,C,l));k.isEmpty()||wa(k);qb(A)}}};this.moveToTopSelectedElement=function(){var e=I.filter(Boolean).reverse(),k=
+new Da("Move to top");e.forEach(function(l){l=l;var C=l.parentNode,A=l.nextSibling;l=l.parentNode.appendChild(l);if(A!=l.nextSibling){k.addSubCommand(new Ja(l,A,C,"top"));M("changed",[l])}k.isEmpty()||wa(k)})};this.moveToBottomSelectedElement=function(){var e=I.filter(Boolean).reverse(),k=new Da("Move to top");e.forEach(function(l){l=l;var C=l.parentNode,A=l.nextSibling,G=l.parentNode.firstChild;if(G.tagName=="title")G=G.nextSibling;if(G.tagName=="defs")G=G.nextSibling;l=l.parentNode.insertBefore(l,
+G);if(A!=l.nextSibling){k.addSubCommand(new Ja(l,A,C,"bottom"));M("changed",[l])}});k.isEmpty()||wa(k)};this.moveUpDownSelected=function(e){var k=I.filter(Boolean);e=="Down"&&k.reverse();var l=new Da("Move "+e);k.forEach(function(C){hb=[];var A,G,D=$(ob(getStrokedBBox([C]))).toArray();e=="Down"&&D.reverse();$.each(D,function(){if(G){A=this;return false}else if(this==C)G=true});if(A){D=C.parentNode;var z=C.nextSibling;$(A)[e=="Down"?"before":"after"](C);if(z!=C.nextSibling){l.addSubCommand(new Ja(C,
+z,D,"Move "+e));M("changed",[C])}}});l.isEmpty()||wa(l)};this.moveSelectedElements=function(e,k,l){if(e.constructor!=Array){e/=q;k/=q}l=l||true;for(var C=new Da("position"),A=I.length;A--;){var G=I[A];if(G!=null){var D=d.createSVGTransform(),z=R(G);e.constructor==Array?D.setTranslate(e[A],k[A]):D.setTranslate(e,k);z.numberOfItems?z.insertItemBefore(D,0):z.appendItem(D);(D=Ra(G))&&C.addSubCommand(D);ra.requestSelector(G).resize()}}if(!C.isEmpty()){l&&wa(C);M("changed",I);return C}};this.cloneSelectedElements=
+function(e,k,l){for(var C=new Da("Clone Elements"),A=I.length,G=0;G<A;++G){var D=I[G];if(D==null)break}A=I.slice(0,G);this.clearSelection(true);G=A.length;for(clones=[];G--;){D=A[G];var z=ia(A[G]),F=L||B().getCurrentLayer();if(l){tlist=R(z);tlist.removeItem(l);Ra(z);F.insertBefore(z,D)}else F.appendChild(z);clones.push(z);C.addSubCommand(new Ia(z))}if(!C.isEmpty()){qb(A.reverse());l||this.moveSelectedElements(e,k,false);wa(C)}return clones};this.alignSelectedElements=function(e,k){var l=[],C=Number.MAX_VALUE,
+A=Number.MIN_VALUE,G=Number.MAX_VALUE,D=Number.MIN_VALUE,z=Number.MIN_VALUE,F=Number.MIN_VALUE,h=I.length;if(h){for(var m=0;m<h;++m){if(I[m]==null)break;l[m]=getStrokedBBox([I[m]]);switch(k){case "smallest":if((e=="l"||e=="c"||e=="r")&&(z==Number.MIN_VALUE||z>l[m].width)||(e=="t"||e=="m"||e=="b")&&(F==Number.MIN_VALUE||F>l[m].height)){C=l[m].x;G=l[m].y;A=l[m].x+l[m].width;D=l[m].y+l[m].height;z=l[m].width;F=l[m].height}break;case "largest":if((e=="l"||e=="c"||e=="r")&&(z==Number.MIN_VALUE||z<l[m].width)||
+(e=="t"||e=="m"||e=="b")&&(F==Number.MIN_VALUE||F<l[m].height)){C=l[m].x;G=l[m].y;A=l[m].x+l[m].width;D=l[m].y+l[m].height;z=l[m].width;F=l[m].height}break;default:if(l[m].x<C)C=l[m].x;if(l[m].y<G)G=l[m].y;if(l[m].x+l[m].width>A)A=l[m].x+l[m].width;if(l[m].y+l[m].height>D)D=l[m].y+l[m].height}}if(k=="page"){G=C=0;A=c.contentW;D=c.contentH}z=Array(h);F=Array(h);for(m=0;m<h;++m){if(I[m]==null)break;var o=l[m];z[m]=0;F[m]=0;switch(e){case "l":z[m]=C-o.x;break;case "c":z[m]=(C+A)/2-(o.x+o.width/2);break;
+case "r":z[m]=A-(o.x+o.width);break;case "t":F[m]=G-o.y;break;case "m":F[m]=(G+D)/2-(o.y+o.height/2);break;case "b":F[m]=D-(o.y+o.height)}}this.moveSelectedElements(z,F)}};this.contentW=zb().w;this.contentH=zb().h;this.updateCanvas=function(e,k){d.setAttribute("width",e);d.setAttribute("height",k);var l=$("#canvasBackground")[0],C=n.getAttribute("x"),A=n.getAttribute("y"),G=e/2-this.contentW*q/2,D=k/2-this.contentH*q/2;ma(n,{width:this.contentW*q,height:this.contentH*q,x:G,y:D,viewBox:"0 0 "+this.contentW+
+" "+this.contentH});ma(l,{width:n.getAttribute("width"),height:n.getAttribute("height"),x:G,y:D});(l=pa("background_image"))&&ma(l,{width:"100%",height:"100%"});ra.selectorParentGroup.setAttribute("transform","translate("+G+","+D+")");return{x:G,y:D,old_x:C,old_y:A,d_x:G-C,d_y:D-A}};this.setBackground=function(e,k){var l=pa("canvasBackground"),C=$(l).find("rect")[0],A=pa("background_image");C.setAttribute("fill",e);if(k){if(!A){A=f.createElementNS(b,"image");ma(A,{id:"background_image",width:"100%",
+height:"100%",preserveAspectRatio:"xMinYMin",style:"pointer-events:none"})}U(A,k);l.appendChild(A)}else A&&A.parentNode.removeChild(A)};this.cycleElement=function(e){var k=I[0],l=false,C=pb(L||B().getCurrentLayer());if(C.length){if(k==null){e=e?C.length-1:0;l=C[e]}else for(var A=C.length;A--;)if(C[A]==k){e=e?A-1:A+1;if(e>=C.length)e=0;else if(e<0)e=C.length-1;l=C[e];break}rb([l],true);M("selected",I)}};this.clear();this.getPrivateMethods=function(){return{addCommandToHistory:wa,setGradient:Nb,addSvgElementFromJson:S,
+assignAttributes:ma,BatchCommand:Da,call:M,ChangeElementCommand:Ma,copyElem:ia,ffClone:da,findDefs:gb,findDuplicateGradient:Mb,getElem:pa,getId:aa,getIntersectionList:ob,getMouseTarget:Bb,getNextId:ka,getPathBBox:Z,getUrlFromAttr:ja,hasMatrixTransform:oa,identifyLayers:xb,InsertElementCommand:Ia,isIdentity:svgedit.math.isIdentity,logMatrix:Wa,matrixMultiply:ga,MoveElementCommand:Ja,preventClickDefault:Fb,recalculateAllSelectedDimensions:Ea,recalculateDimensions:Ra,remapElement:Za,RemoveElementCommand:Ha,
+removeUnusedDefElems:yb,round:ab,runExtensions:ib,sanitizeSvg:za,SVGEditTransformList:svgedit.transformlist.SVGTransformList,toString:toString,transformBox:svgedit.math.transformBox,transformListToTransform:Y,transformPoint:N,walkTree:svgedit.utilities.walkTree}}};(function(){document.addEventListener("touchstart",touchHandler,true);document.addEventListener("touchmove",touchHandler,true);document.addEventListener("touchend",touchHandler,true);document.addEventListener("touchcancel",touchHandler,true);if(!window.methodDraw)window.methodDraw=function(a){function s(d,n){var v=g.setSvgString(d)!==false;n=n||a.noop;v?n(true):a.alert(uiStrings.notification.errorLoadingSVG,function(){n(false)})}var g,b={},p=false;curConfig={canvas_expansion:1,dimensions:[580,400],
+initFill:{color:"fff",opacity:1},initStroke:{width:1.5,color:"000",opacity:1},initOpacity:1,imgPath:"images/",extPath:"extensions/",jGraduatePath:"jgraduate/images/",extensions:[],initTool:"select",wireframe:false,colorPickerCSS:false,gridSnapping:false,gridColor:"#000",baseUnit:"px",snappingStep:10,showRulers:svgedit.browser.isTouch()?false:true,show_outside_canvas:false,no_save_warning:true,initFont:"Helvetica, Arial, sans-serif"};uiStrings=b.uiStrings={common:{ok:"OK",cancel:"Cancel",key_up:"Up",
+key_down:"Down",key_backspace:"Backspace",key_del:"Del"},layers:{layer:"Layer"},notification:{invalidAttrValGiven:"Invalid value given",noContentToFitTo:"No content to fit to",dupeLayerName:"There is already a layer named that!",enterUniqueLayerName:"Please enter a unique layer name",enterNewLayerName:"Please enter the new layer name",layerHasThatName:"Layer already has that name",QmoveElemsToLayer:'Move selected elements to layer "%s"?',QwantToClear:"<strong>Do you want to clear the drawing?</strong>\nThis will also erase your undo history",
+QwantToOpen:"Do you want to open a new file?\nThis will also erase your undo history",QerrorsRevertToSource:"There were parsing errors in your SVG source.\nRevert back to original SVG source?",QignoreSourceChanges:"Ignore changes made to SVG source?",featNotSupported:"Feature not supported",enterNewImgURL:"Enter the new image URL",defsFailOnSave:"NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",loadingImage:"Loading image, please wait...",
+saveFromBrowser:'Select "Save As..." in your browser to save this image as a %s file.',noteTheseIssues:"Also note the following issues: ",unsavedChanges:"There are unsaved changes.",enterNewLinkURL:"Enter the new hyperlink URL",errorLoadingSVG:"Error: Unable to load SVG data",URLloadFail:"Unable to load from URL",retrieving:'Retrieving "%s" ...'}};var w={},c={};b.curConfig=curConfig;b.tool_scale=1;b.setConfig=function(d){a.extend(true,curConfig,d);if(d.extensions)curConfig.extensions=d.extensions};
+b.setCustomHandlers=function(d){b.ready(function(){if(d.open){a('#tool_open > input[type="file"]').remove();a("#tool_open").show();g.open=d.open}if(d.save){b.show_save_warning=false;g.bind("saved",d.save)}d.pngsave&&g.bind("exported",d.pngsave);c=d})};b.randomizeIds=function(){g.randomizeIds(arguments)};b.init=function(){(function(){var h=window.opener;if(h)try{var m=h.document.createEvent("Event");m.initEvent("methodDrawReady",true,true);h.document.documentElement.dispatchEvent(m)}catch(o){}})();
+(function(){a("body").toggleClass("touch",svgedit.browser.isTouch());var h=a.deparam.querystring(true);if(!a.isEmptyObject(h)){if(h.dimensions)h.dimensions=h.dimensions.split(",");if(h.extensions)h.extensions=h.extensions.split(",");if(h.bkgd_color)h.bkgd_color="#"+h.bkgd_color;methodDraw.setConfig(h);var m=h.source,o=a.param.querystring();if(!m)if(o.indexOf("source=data:")>=0)m=o.match(/source=(data:[^&]*)/)[1];if(m)if(m.indexOf("data:")===0){m=m.replace(/ /g,"+");b.loadFromDataURI(m)}else b.loadFromString(m);
+else if(o.indexOf("paramurl=")!==-1)methodDraw.loadFromURL(o.substr(9));else h.url&&methodDraw.loadFromURL(h.url)}})();a("#canvas_width").val(curConfig.dimensions[0]);a("#canvas_height").val(curConfig.dimensions[1]);var d=function(){a.each(curConfig.extensions,function(){var h=this;a.getScript(curConfig.extPath+h,function(m){if(!m){m=document.createElement("script");m.src=curConfig.extPath+h;document.querySelector("head").appendChild(m)}})})};document.location.protocol==="file:"?setTimeout(d,100):
+d();a.svgIcons(curConfig.imgPath+"svg_edit_icons.svg",{w:27,h:27,id_match:false,no_img:true,fallback_path:curConfig.imgPath,fallback:{logo:"logo.png",select:"select.png",select_node:"select_node.png",pencil:"pencil.png",pen:"line.png",rect:"square.png",ellipse:"ellipse.png",path:"path.png",text:"text.png",image:"image.png",zoom:"zoom.png","delete":"delete.png",spapelib:"shapelib.png",node_delete:"node_delete.png",align_left:"align-left.png",align_center:"align-center.png",align_right:"align-right.png",
+align_top:"align-top.png",align_middle:"align-middle.png",align_bottom:"align-bottom.png",arrow_right:"flyouth.png",arrow_down:"dropdown.gif"},placement:{"#logo":"logo","#tool_select":"select","#tool_fhpath":"pencil","#tool_line":"pen","#tool_rect,#tools_rect_show":"rect","#tool_ellipse,#tools_ellipse_show":"ellipse","#tool_path":"path","#tool_text,#layer_rename":"text","#tool_image":"image","#tool_zoom":"zoom","#tool_node_clone":"node_clone","#tool_node_delete":"node_delete","#tool_add_subpath":"add_subpath",
+"#tool_openclose_path":"open_path","#tool_alignleft, #tool_posleft":"align_left","#tool_aligncenter, #tool_poscenter":"align_center","#tool_alignright, #tool_posright":"align_right","#tool_aligntop, #tool_postop":"align_top","#tool_alignmiddle, #tool_posmiddle":"align_middle","#tool_alignbottom, #tool_posbottom":"align_bottom","#cur_position":"align","#zoomLabel":"zoom"},resize:{"#logo .svg_icon":15,".flyout_arrow_horiz .svg_icon":5,"#fill_bg .svg_icon, #stroke_bg .svg_icon":svgedit.browser.isTouch()?
+24:24,".palette_item:first .svg_icon":svgedit.browser.isTouch()?30:16,"#zoomLabel .svg_icon":16,"#zoom_dropdown .svg_icon":7},callback:function(){a(".toolbar_button button > svg, .toolbar_button button > img").each(function(){a(this).parent().prepend(this)});a(".tool_button, .tool_button_current").addClass("loaded");var h=a("#tools_left");if(h.length!=0){h.offset();h.outerHeight()}a(".tools_flyout").each(function(){var m=a("#"+this.id+"_show"),o=m.attr("data-curopt");if(!m.children("svg, img").length){o=
+a(o).children().clone();if(o.length){o[0].removeAttribute("style");m.append(o)}}});methodDraw.runCallbacks();setTimeout(function(){a(".flyout_arrow_horiz:empty").each(function(){a(this).append(a.getSvgIcon("arrow_right").width(5).height(5))})},1)}});a("#rulers").on("dblclick",function(h){a("#base_unit_container").css({top:h.pageY-10,left:h.pageX-50,display:"block"})});a("#base_unit_container").on("mouseleave mouseenter",function(){t=setTimeout(function(){a("#base_unit_container").fadeOut(500)},200);
+event.type=="mouseover"&&clearTimeout(t)});a("#base_unit").on("change",function(){savePreferences()});b.canvas=g=new a.SvgCanvas(document.getElementById("svgcanvas"),curConfig);b.show_save_warning=false;b.paintBox={fill:null,stroke:null,canvas:null};d=navigator.platform.indexOf("Mac")>=0;var n=navigator.userAgent.indexOf("AppleWebKit")>=0,v=d?"meta+":"ctrl+",B=g.pathActions,q=g.undoMgr,L=svgedit.utilities,Q=curConfig.imgPath+"placeholder.svg",K=a("#workarea"),I=a("#cmenu_canvas"),S=null,R=1,N="toolbars",
+ga="";d||a(".shortcut").each(function(){var h=a(this).text();a(this).text(h.split("\u2318").join("Ctrl+"))});(function(){a("#dialog_container").draggable({cancel:"#dialog_content, #dialog_buttons *",containment:"window"});var h=a("#dialog_box"),m=a("#dialog_buttons"),o=function(u,E,H,J){a("#dialog_content").html("<p>"+E.replace(/\n/g,"</p><p>")+"</p>").toggleClass("prompt",u=="prompt");m.empty();var O=a('<input type="button" value="'+uiStrings.common.ok+'">').appendTo(m);u!="alert"&&a('<input type="button" value="'+
+uiStrings.common.cancel+'">').appendTo(m).on("click touchstart",function(){h.hide();H(false)});if(u=="prompt"){var X=a('<input type="text">').prependTo(m);X.val(J||"");X.bind("keydown","return",function(){O.trigger("click touchstart")})}u=="process"&&O.hide();h.show();O.on("click touchstart",function(){h.hide();var ba=u=="prompt"?X.val():true;H&&H(ba)}).focus();u=="prompt"&&X.focus()};a.alert=function(u,E){o("alert",u,E)};a.confirm=function(u,E){o("confirm",u,E)};a.process_cancel=function(u,E){o("process",
+u,E)};a.prompt=function(u,E,H){o("prompt",u,H,E)}})();var oa=function(){var h=a(".tool_button_current");if(h.length&&h[0].id!=="tool_select"){h.removeClass("tool_button_current").addClass("tool_button");a("#tool_select").addClass("tool_button_current").removeClass("tool_button")}g.setMode("select")},Y=null,V=false,ea=false,Ba="",ja=function(h,m){var o=g.getResolution(),u=K;a("#svgcanvas").position();if(u=g.setBBoxZoom(m,u.width()-15,u.height()-15)){var E=u.zoom;u=u.bbox;if(E<0.0010)wa({value:0.1});
+else{typeof animatedZoom!="undefined"&&h.cancelAnimationFrame(animatedZoom);var H=Date.now(),J=E-o.zoom;a("#zoom");var O=o.zoom,X=function(ba){ba=(ba-H)/500;ba=Math.pow(ba-1,3)+1;g.setZoom(O+J*ba);G();if(ba<1)h.animatedZoom=requestAnimationFrame(X);else{a("#zoom").val(parseInt(E*100));a("option","#zoom_select").removeAttr("selected");a("option[value="+parseInt(E*100)+"]","#zoom_select").attr("selected","selected")}};X(Date.now());g.getMode()=="zoom"&&u.width&&oa();xb()}}};a("#cur_context_panel").delegate("a",
+"click",function(){var h=a(this);h.attr("data-root")?g.leaveContext():g.setContext(h.text());g.clearSelection();return false});var ca=function(){b.paintBox.fill.prep();b.paintBox.stroke.prep()},U={},Z=function(h){a.each(h,function(m,o){var u=a(m).children(),E=m+"_show",H=a(E),J=false;u.addClass("tool_button").unbind("click mousedown mouseup").each(function(ba){var T=o[ba];U[T.sel]=T.fn;if(T.isDefault)J=ba;ba=function(fa){var ha=T;if(fa.type==="keydown"){var W=a(ha.parent+"_show").hasClass("tool_button_current"),
+qa=a(ha.parent+"_show").attr("data-curopt");a.each(h[T.parent],function(Aa,Ca){if(Ca.sel==qa)ha=!fa.shiftKey||!W?Ca:h[T.parent][Aa+1]||h[T.parent][0]})}if(a(this).hasClass("disabled"))return false;ra(E)&&ha.fn();var ua=ha.icon?a.getSvgIcon(ha.icon,true):a(ha.sel).children().eq(0).clone();ua[0].setAttribute("width",H.width());ua[0].setAttribute("height",H.height());H.children(":not(.flyout_arrow_horiz)").remove();H.append(ua).attr("data-curopt",ha.sel)};a(this).mouseup(ba);T.key&&a(document).bind("keydown",
+T.key[0]+" shift+"+T.key[0],ba)});if(J)H.attr("data-curopt",o[J].sel);else H.attr("data-curopt")||H.attr("data-curopt",o[0].sel);var O,X=a(E).position();a(m).css({left:X.left+34,top:X.top+77});H.mousedown(function(ba){a("#workarea").one("mousedown",function(){a("#tools_shapelib").hide()});a("#tools_shapelib").is(":visible")&&ra(E,false);if(H.hasClass("disabled"))return false;var T=a(m),fa=X.left+34,ha=T.width()*-1,W=T.data("shown_popop")?200:0;O=setTimeout(function(){H.data("isLibrary")?T.css("left",
+fa).show():T.css("left",ha).show().animate({left:fa},50);T.data("shown_popop",true)},W);ba.preventDefault()}).mouseup(function(){clearTimeout(O);var ba=a(this).attr("data-curopt");if(H.data("isLibrary")&&a(E.replace("_show","")).is(":visible"))ra(E,true);else ra(E)&&ba in U&&U[ba]()})});ma()},na=function(h,m){return a("<div>",{"class":"tools_flyout",id:h}).appendTo("#svg_editor").append(m)},pa=function(){a(".tools_flyout").each(function(){var h=a("#"+this.id+"_show"),m=h.offset();h=h.outerWidth();
+a(this).css({left:(m.left+h)*R,top:m.top})})},ma=function(){a(".tools_flyout").each(function(){var h=a("#"+this.id+"_show");if(!h.data("isLibrary")){var m=[];a(this).children().each(function(){m.push(this.title)});h[0].title=m.join(" / ")}})},la,ya=function(h,m,o){var u=null;if(h.indexOf("url(#")===0){h=(h=g.getRefElem(h))?h.cloneNode(true):a("#"+o+"_color defs *")[0];u={alpha:m};u[h.tagName]=h}else u=h.indexOf("#")===0?{alpha:m,solidColor:h.substr(1)}:{alpha:m,solidColor:"none"};return new a.jGraduate.Paint(u)},
+za=g.getResolution();if(curConfig.baseUnit!=="px"){za.w=svgedit.units.convertUnit(za.w)+curConfig.baseUnit;za.h=svgedit.units.convertUnit(za.h)+curConfig.baseUnit}var Ja=function(h){g.createLayer("background");cur_shape=g.addSvgElementFromJson({element:"rect",attr:{x:-1,y:-1,width:za.w+2,height:za.h+2,stroke:"none",id:"canvas_background",opacity:1,fill:h||"#fff",style:"pointer-events:none"}});g.setCurrentLayer("Layer 1");g.setCurrentLayerPosition("1")};document.getElementById("canvas_background")||
+Ja();document.getElementById("canvas_background").getAttribute("fill");var Ia=b.setImageURL=function(h){h||(h=Q);g.setImageURL(h);a("#image_url").val(h)},Ha=function(){var h=Y;if(h!=null&&!h.parentNode)h=null;if(V&&V[0]!=null&&!V[0].parentNode)V=false;var m=g.getCurrentDrawing().getCurrentLayerName(),o=g.getMode(),u=curConfig.baseUnit!=="px"?curConfig.baseUnit:null,E=o=="pathedit";if(E){a(".context_panel").hide();a("#path_node_panel").show();a("#stroke_panel").hide();m=B.getNodePoint();a("#tool_add_subpath").removeClass("push_button_pressed").addClass("tool_button");
+a("#tool_node_delete").toggleClass("disabled",!B.canDeleteNodes);zb("#tool_openclose_path",B.closed_subpath?"open_path":"close_path");if(m){E=a("#seg_type");if(u){m.x=svgedit.units.convertUnit(m.x);m.y=svgedit.units.convertUnit(m.y)}a("#path_node_x").val(Math.round(m.x));a("#path_node_y").val(Math.round(m.y));if(m.type){E.val(m.type).removeAttr("disabled");a("#seg_type_label").html(m.type==4?"Straight":"Curve")}else E.val(4).attr("disabled","disabled")}a("#tools_top").removeClass("multiselected");
+a("#stroke_panel").hide();a("#canvas_panel").hide()}else{var H=a("#cmenu_canvas li");a(".context_panel").hide();a(".menu_item","#edit_menu").addClass("disabled");a(".menu_item","#object_menu").addClass("disabled");if(V){V=V.filter(Boolean);(h=g.elementsAreSame(V)?V[0]:null)&&a("#tools_top").addClass("multiselected")}if(!h&&!V){a("#tools_top").removeClass("multiselected");a("#stroke_panel").hide();a("#canvas_panel").show()}if(h!=null){a("#stroke_panel").show();var J=h.nodeName,O=g.getRotationAngle(h);
+a("#angle").val(Math.round(O));O=g.getBlur(h);a("#blur").val(O);if(!E&&o!="pathedit"){a("#selected_panel").show();a(".action_selected").removeClass("disabled");var X,ba;if(["g","polyline","path"].indexOf(J)>=0)if(o=g.getStrokedBBox([h])){X=o.x;ba=o.y}if(u){X=svgedit.units.convertUnit(X);ba=svgedit.units.convertUnit(ba)}a("#"+J+"_x").val(Math.round(X));a("#"+J+"_y").val(Math.round(ba));if(J==="polyline"){a("#path_x").val(Math.round(X));a("#path_y").val(Math.round(ba))}["image","text","path","g","use"].indexOf(J)==
+-1&&a(".action_path_convert_selected").removeClass("disabled");J==="path"&&a(".action_path_selected").removeClass("disabled")}u=null;if(T==="a"){u=g.getHref(h);a("#g_panel").show()}if(h.parentNode.tagName==="a")if(!a(h).siblings().length){a("#a_panel").show();u=g.getHref(h.parentNode)}a("#tool_make_link, #tool_make_link").toggle(!u);u&&a("#link_url").val(u);u={g:[],a:[],rect:["rx","width","height","x","y"],image:["width","height","x","y"],circle:["cx","cy","r"],ellipse:["cx","cy","rx","ry"],line:["x1",
+"y1","x2","y2"],text:["x","y"],use:[],path:[]};var T=h.tagName;a(h).data("gsvg")&&a("#g_panel").show();if(T=="path"||T=="polyline")a("#path_panel").show();if(u[T]){u=u[T];a("#"+T+"_panel").show();T=="rect"?a("#cornerRadiusLabel").show():a("#cornerRadiusLabel").hide();a.each(u,function(fa,ha){var W=h.getAttribute(ha);if(curConfig.baseUnit!=="px"&&h[ha])W=svgedit.units.convertUnit(h[ha].baseVal.value);var qa=document.getElementById(T+"_"+ha);qa.value=Math.round(W)||0;qa.getAttribute("data-cursor")===
+"true"&&a.fn.dragInput.updateCursor(qa)});if(T=="text"){u=h.getAttribute("font-family");document.getElementById("font_family_dropdown").selectedIndex=3;a("#text_panel").css("display","inline");a("#tool_italic").toggleClass("active",g.getItalic());a("#tool_bold").toggleClass("active",g.getBold());a("#font_family").val(u);a("#font_size").val(h.getAttribute("font-size"));a("#text").val(h.textContent);a("#preview_font").text(u.split(",")[0].replace(/'/g,"")).css("font-family",u);g.addedNew&&setTimeout(function(){a("#text").focus().select()},
+100)}else if(T=="image")Ia(g.getHref(h));else if(T==="g"||T==="use"){a("#container_panel").show();a(".action_group_selected").removeClass("disabled");g.getTitle()}}H[(T==="g"?"en":"dis")+"ableContextMenuItems"]("#ungroup");H[(T==="g"||!V?"dis":"en")+"ableContextMenuItems"]("#group")}if(V){a("#multiselected_panel").show();a(".action_multi_selected").removeClass("disabled");H.enableContextMenuItems("#group").disableContextMenuItems("#ungroup")}h||H.disableContextMenuItems("#delete,#cut,#copy,#group,#ungroup,#move_front,#move_up,#move_down,#move_back");
+q.getUndoStackSize()>0?a("#tool_undo").removeClass("disabled"):a("#tool_undo").addClass("disabled");q.getRedoStackSize()>0?a("#tool_redo").removeClass("disabled"):a("#tool_redo").addClass("disabled");g.addedNew=false;if(h&&!E||V){a("#selLayerNames").removeAttr("disabled").val(m);I.enableContextMenuItems("#delete,#cut,#copy,#move_front,#move_up,#move_down,#move_back")}}};a("#text").on("focus",function(){});a("#text").on("blur",function(){});g.bind("selected",function(h,m){var o=g.getMode();o==="select"&&
+oa();if(o==="pathedit")return Ha();Y=m.length==1||m[1]==null?m[0]:null;m=m.filter(Boolean);V=m.length>=2?m:false;if(g.elementsAreSame(V))Y=V[0];if(Y!=null){a("#multiselected_panel").hide();if(Y!=null)switch(Y.tagName){case "use":a(".context_panel").hide();a("#use_panel").show();break;case "image":a(".context_panel").hide();a("#image_panel").show();break;case "foreignObject":a(".context_panel").hide();break;case "g":case "a":o=null;for(var u=Y.getElementsByTagName("*"),E=0,H=u.length;E<H;E++){var J=
+u[E].getAttribute("stroke-width");if(E===0)o=J;else if(o!==J)o=null}a("#stroke_width").val(o===null?"0":o);Ha();break;default:a("#stroke_width").val(Y.getAttribute("stroke-width")||0);o=Y.getAttribute("stroke-dasharray")||"none";a("option","#stroke_style").removeAttr("selected");a('#stroke_style option[value="'+o+'"]').attr("selected","selected");a("#stroke_style").trigger("change");a.fn.dragInput.updateCursor(a("#stroke_width")[0]);a.fn.dragInput.updateCursor(a("#blur")[0])}if(Y!=null){o=(Y.getAttribute("opacity")||
+1)*100;a("#group_opacity").val(o);a.fn.dragInput.updateCursor(a("#group_opacity")[0])}V.length&&a("#tools_top").addClass("multiselected")}else if(V.length){a(".context_panel").hide();a("#tools_top").removeClass("multiselected");a("#multiselected_panel").show()}else{a(".context_panel").hide();a("#canvas_panel").show();a("#tools_top").removeClass("multiselected")}g.runExtensions("selectedChanged",{elems:m,selectedElement:Y,multiselected:V})});g.bind("transition",function(h,m){var o=g.getMode(),u=m[0];
+if(u){V=m.length>=2&&m[1]!=null?m:null;if(!V)switch(o){case "rotate":o=g.getRotationAngle(u);a("#angle").val(Math.round(o));rotateCursor(o);a("#tool_reorient").toggleClass("disabled",o==0)}g.runExtensions("elementTransition",{elems:m})}});g.bind("changed",function(h,m){var o=g.getMode();o==="select"&&oa();for(var u=0;u<m.length;++u){var E=m[u];if(E&&E.tagName==="svg")G();else if(E&&Y&&Y.parentNode==null)Y=E}b.show_save_warning=true;Ha();if(Y&&o==="select"){b.paintBox.fill.update();b.paintBox.stroke.update()}g.runExtensions("elementChanged",
+{elems:m})});g.bind("saved",function(h,m){b.show_save_warning=false;m='<?xml version="1.0"?>\n'+m;var o=navigator.userAgent;if(~o.indexOf("MSIE"))Eb(0,true);else{var u=h.open("data:image/svg+xml;base64,"+L.encode64(m)),E=a.pref("save_notice_done");if(E!=="all"){var H=uiStrings.notification.saveFromBrowser.replace("%s","SVG");if(o.indexOf("Gecko/")!==-1)if(m.indexOf("<defs")!==-1){H+="\n\n"+uiStrings.notification.defsFailOnSave;a.pref("save_notice_done","all");E="all"}else a.pref("save_notice_done",
+"part");else a.pref("save_notice_done","all");E!=="part"&&u.alert(H)}}});g.bind("exported",function(h,m){var o=m.issues;a("#export_canvas").length||a("<canvas>",{id:"export_canvas"}).hide().appendTo("body");var u=a("#export_canvas")[0];u.width=g.contentW;u.height=g.contentH;canvg(u,m.svg,{renderCallback:function(){var E=u.toDataURL("image/png");S.location.href=E;if(a.pref("export_notice_done")!=="all"){E=uiStrings.notification.saveFromBrowser.replace("%s","PNG");if(o.length)E+="\n\n"+uiStrings.notification.noteTheseIssues+
+"\n \u2022 "+o.join("\n \u2022 ");a.pref("export_notice_done","all");S.alert(E)}}})});g.bind("zoomed",ja);g.bind("contextset",function(h,m){var o="";if(m){var u="";o='<a href="#" data-root="y">'+g.getCurrentDrawing().getCurrentLayerName()+"</a>";a(m).parentsUntil("#svgcontent > g").andSelf().each(function(){if(this.id){u+=" > "+this.id;o+=this!==m?' > <a href="#">'+this.id+"</a>":" > "+this.id}});Ba=u}else Ba=null;a("#cur_context_panel").toggle(!!m).html(o)});g.bind("extension_added",function(h,m){function o(){if(la){clearTimeout(la);
+la=null}E||(la=setTimeout(function(){E=true;Mb(w.iconsize)},50))}var u=false,E=false,H=true,J=function(){if(m.callback&&!u&&H){u=true;m.callback()}},O=[];m.context_tools&&a.each(m.context_tools,function(ha,W){var qa=W.container_id?' id="'+W.container_id+'"':"",ua=a("#"+W.panel);ua.length||(ua=a("<div>",{id:W.panel}).appendTo("#tools_top").hide());switch(W.type){case "tool_button":var Aa='<div class="tool_button">'+W.id+"</div>",Ca=a(Aa).appendTo(ua);W.events&&a.each(W.events,function(Na,jb){a(Ca).bind(Na,
+jb)});break;case "select":Aa="<label"+qa+'><select id="'+W.id+'">';a.each(W.options,function(Na,jb){Aa+='<option value="'+Na+'"'+(Na==W.defval?" selected":"")+">"+jb+"</option>"});Aa+="</select></label>";var Pa=a(Aa).appendTo(ua).find("select");a.each(W.events,function(Na,jb){a(Pa).bind(Na,jb)});break;case "button-select":Aa='<div id="'+W.id+'" class="dropdown toolset" title="'+W.title+'"><div id="cur_'+W.id+'" class="icon_label"></div><button></button></div>';qa=a('<ul id="'+W.id+'_opts"></ul>').appendTo("#option_lists");
+W.colnum&&qa.addClass("optcols"+W.colnum);a(Aa).appendTo(ua).children();O.push({elem:"#"+W.id,list:"#"+W.id+"_opts",title:W.title,callback:W.events.change,cur:"#cur_"+W.id});break;case "input":Aa="<label"+qa+'><span id="'+W.id+'_label">'+W.label+':</span><input id="'+W.id+'" title="'+W.title+'" size="'+(W.size||"4")+'" value="'+(W.defval||"")+'" type="text"/></label>';var Qa=a(Aa).appendTo(ua).find("input");W.spindata&&Qa.SpinButton(W.spindata);W.events&&a.each(W.events,function(Na,jb){Qa.bind(Na,
+jb)})}});if(m.buttons){var X={},ba={},T=m.svgicons,fa={};a.each(m.buttons,function(ha,W){for(var qa,ua=W.id,Aa=ha;a("#"+ua).length;)ua=W.id+"_"+ ++Aa;if(T){X[ua]=W.icon;Aa=W.svgicon?W.svgicon:W.id;if(W.type=="app_menu")ba["#"+ua+" > div"]=Aa;else ba["#"+ua]=Aa}else qa=W.type=="menu"?"":a('<img src="'+W.icon+'">');var Ca,Pa;switch(W.type){case "mode_flyout":case "mode":Ca="tool_button";if(W.cls)Ca+=" "+W.cls;Pa="#tools_left";break;case "context":Ca="tool_button";Pa="#"+W.panel;a(Pa).length||a("<div>",
+{id:W.panel}).appendTo("#tools_top");break;case "menu":Ca="menu_item tool_button";Pa="#"+(W.after||W.panel);break;case "app_menu":Ca="";Pa=W.parent||"#main_menu ul";a(Pa).length||a("<div>",{id:W.panel}).appendTo("#tools_top")}var Qa=a(W.list||W.type=="app_menu"?"<li/>":"<div/>").attr("id",ua).attr("title",W.title).addClass(Ca);if(!W.includeWith&&!W.list){if("position"in W)a(Pa).children().eq(W.position).before(Qa);else W.type!="menu"||!W.after?Qa.appendTo(Pa):a(Pa).after(Qa);if(W.type=="mode_flyout"){Aa=
+a(Qa);Ca=Aa.parent();if(!Aa.parent().hasClass("tools_flyout")){var Na=Aa[0].id.replace("tool_","tools_"),jb=Aa.clone().attr("id",Na+"_show").append(a("<div>",{"class":"flyout_arrow_horiz"}));Aa.before(jb);Ca=na(Na,Aa);Ca.data("isLibrary",true);jb.data("isLibrary",true)}ba["#"+Na+"_show"]=W.id;ua=fa["#"+Ca[0].id]=[{sel:"#"+ua,fn:W.events.click,icon:W.id,isDefault:true},ub]}else if(W.type=="app_menu"||W.type=="menu")Qa.append(W.title)}else if(W.list){Qa.addClass("push_button");a("#"+W.list+"_opts").append(Qa);
+if(W.isDefault){a("#cur_"+W.list).append(Qa.children().clone());Aa=W.svgicon?W.svgicon:W.id;ba["#cur_"+W.list]=Aa}}else if(W.includeWith){Pa=W.includeWith;Aa=a(Pa.button);Ca=Aa.parent();if(!Aa.parent().hasClass("tools_flyout")){Na=Aa[0].id.replace("tool_","tools_");jb=Aa.clone().attr("id",Na+"_show").append(a("<div>",{"class":"flyout_arrow_horiz"}));Aa.before(jb);Ca=na(Na,Aa)}var ub=C.getButtonData(Pa.button);if(Pa.isDefault)ba["#"+Na+"_show"]=W.id;ua=fa["#"+Ca[0].id]=[{sel:"#"+ua,fn:W.events.click,
+icon:W.id,key:W.key,isDefault:W.includeWith?W.includeWith.isDefault:0},ub];Na="position"in Pa?Pa.position:"last";ub=Ca.children().length;if(!isNaN(Na)&&Na>=0&&Na<ub)Ca.children().eq(Na).before(Qa);else{Ca.append(Qa);ua.reverse()}}T||Qa.append(qa);W.list||a.each(W.events,function(Cb,Jb){if(Cb=="click")if(W.type=="mode"){W.includeWith?Qa.bind(Cb,Jb):Qa.bind(Cb,function(){ra(Qa)&&Jb()});if(W.key){a(document).bind("keydown",W.key,Jb);W.title&&Qa.attr("title",W.title+" ["+W.key+"]")}}else Qa.bind(Cb,Jb);
+else Qa.bind(Cb,Jb)});Z(fa)});a.each(O,function(){vb(this.elem,this.list,this.callback,{seticon:true})});if(T)H=false;a.svgIcons(T,{w:27,h:27,id_match:false,no_img:!n,fallback:X,placement:ba,callback:function(){w.iconsize&&w.iconsize!="m"&&o();H=true;J()}})}J()});g.textActions.setInputElem(a("#text")[0]);var Ma='<div class="palette_item transparent" data-rgb="none"></div>\t\t\t\t\t\t\t\t<div class="palette_item black" data-rgb="#000000"></div>\t\t\t\t\t\t\t\t<div class="palette_item white" data-rgb="#ffffff"></div>';
+["#444444","#482816","#422C10","#3B2F0E","#32320F","#293414","#1F361B","#153723","#0C372C","#083734","#0E353B","#1A333F","#273141","#332D40","#3E2A3C","#462735","#4B252D","#4D2425","#4C261D","#666666","#845335","#7B572D","#6F5C2A","#62612C","#546433","#46673D","#396849","#306856","#2D6862","#33666C","#426373","#535F75","#645A73","#74556D","#805064","#884D58","#8B4D4B","#894F3F","#999999","#C48157","#B8874D","#A98E49","#97944B","#849854","#729C62","#619E73","#559E84","#529D94","#5B9BA2","#6D97AB",
+"#8391AE","#9A8AAB","#AF84A3","#BF7E96","#C97A86","#CE7975","#CC7C65","#BBBBBB","#FFB27C","#FABA6F","#E6C36A","#CFCA6D","#B8D078","#A0D58A","#8CD79F","#7DD8B5","#7AD6CA","#84D3DB","#9ACEE6","#B6C7EA","#D3BEE7","#EDB6DC","#FFAFCC","#FFAAB8","#FFA9A2","#FFAC8D","#DDDDDD","#FFE7A2","#FFF093","#FFFA8D","#FFFF91","#EEFF9F","#D1FFB4","#B9FFCE","#A8FFE9","#A4FFFF","#B1FFFF","#CBFFFF","#EDFFFF","#FFF5FF","#FFEBFF","#FFE2FF","#FFDCEC","#FFDBD2","#FFDFB8"].forEach(function(h){Ma+='<div class="palette_item" style="background-color: '+
+h+';" data-rgb="'+h+'"></div>'});a("#palette").append(Ma);var Da=a("#tool_angle_indicator");a("#tool_reorient");rotateCursor=function(h){h="rotate("+h+"deg)";Da.css({"-webkit-transform":h,"-moz-transform":h,"-o-transform":h,"-ms-transform":h,transform:h})};var wa=function(h){var m=h.value/100;if(m<0.0010)h.value=0.1;else{h=g.getZoom();var o=K;ja(window,{width:0,height:0,x:(o[0].scrollLeft+o.width()/2)/h,y:(o[0].scrollTop+o.height()/2)/h,zoom:m},true)}};a("#stroke_style").change(function(){g.setStrokeAttr("stroke-dasharray",
+a(this).val());a("#stroke_style_label").html(this.options[this.selectedIndex].text);window.opera&&a("<p/>").hide().appendTo("body").remove()});a("#seg_type").change(function(){g.setSegType(a(this).val());a("#seg_type_label").html(this.options[this.selectedIndex].text)});a("select").change(function(){a(this).blur()});a("#font_family").change(function(){g.setFontFamily(this.value)});a("#text").keyup(function(){g.setTextContent(this.value)});changeAttribute=function(h){var m=h.getAttribute("data-attr"),
+o=h.getAttribute("data-multiplier")||1;o=parseFloat(o);o=h.value*o;if(!svgedit.units.isValidUnit(m,o,Y)){a.alert(uiStrings.notification.invalidAttrValGiven);h.value=Y.getAttribute(m);return false}g.changeSelectedAttributeNoUndo(m,o)};picking=false;a(document).on("mouseup",function(){picking=false});a("#palette").on("mousemove mousedown touchstart touchmove",".palette_item",function(h){h.preventDefault();if(h.type=="mousedown")picking=true;if(picking){var m=a("#tool_stroke").hasClass("active"),o=m?
+"stroke":"fill",u=a(this).attr("data-rgb"),E=null,H=true;if(h.type=="mousedown")H=false;if(u==="transparent"||u==="initial"||u==="#none"){u="none";E=new a.jGraduate.Paint}else E=new a.jGraduate.Paint({alpha:100,solidColor:u.substr(1)});b.paintBox[o].setPaint(E);if(m){g.setColor("stroke",u,H);u!="none"&&g.getStrokeOpacity()!=1&&g.setPaintOpacity("stroke",1)}else{g.setColor("fill",u,H);u!="none"&&g.getFillOpacity()!=1&&g.setPaintOpacity("fill",1)}}}).bind("contextmenu",function(h){h.preventDefault()});
+a("#toggle_stroke_tools").toggle(function(){a(".stroke_tool").css("display","table-cell");a(this).addClass("expanded");Db()},function(){a(".stroke_tool").css("display","none");a(this).removeClass("expanded");Db()});var ra=function(h,m){if(a(h).hasClass("disabled"))return false;if(a(h).parent().hasClass("tools_flyout"))return true;var o=o||"normal";m||a(".tools_flyout").fadeOut(o);a("#styleoverrides").text("");a(".tool_button_current").removeClass("tool_button_current").addClass("tool_button");a(h).addClass("tool_button_current").removeClass("tool_button");
+return true};(function(){var h=null,m=null,o=K[0],u=false,E=false;a("#svgcanvas").on("mousemove mouseup touchend",function(H){if(u!==false){o.scrollLeft-=H.clientX-h;o.scrollTop-=H.clientY-m;h=H.clientX;m=H.clientY;if(H.type==="mouseup"||H.type==="touchend")u=false;return false}}).on("mousedown touchmove",function(H){if(H.button===1||E===true||H.originalEvent.touches&&H.originalEvent.touches.length>=2){u=true;h=H.clientX;m=H.clientY;return false}});a(window).mouseup(function(){u=false});a(document).bind("keydown",
+"space",function(H){H.preventDefault();g.spaceKey=E=true}).bind("keyup","space",function(H){H.preventDefault();g.spaceKey=E=false}).bind("keydown","alt",function(){g.getMode()==="zoom"&&K.addClass("out")}).bind("keyup","alt",function(){g.getMode()==="zoom"&&K.removeClass("out")})})();var va=a(".menu"),kb=function(h){h.target.style.background="#fff";setTimeout(function(){h.target.style.background="#ddd"},50);setTimeout(function(){h.target.style.background="#fff"},150);setTimeout(function(){h.target.style.background=
+"#ddd"},200);setTimeout(function(){h.target.style.background=""},200);setTimeout(function(){a("#menu_bar").removeClass("active")},220);return false};a(".menu_item").on("mousedown touchstart",function(h){kb(h)});a("svg, body").on("mousedown  touchstart",function(h){if(!(h.target.nodeName&&h.target.nodeName.toLowerCase()==="input"))if(!a(h.target).hasClass("menu_title")&&!a(h.target).parent().hasClass("menu_title"))!a(h.target).hasClass("disabled")&&a(h.target).hasClass("menu_item")?kb(h):a("#menu_bar").removeClass("active")});
+a("#workarea").on("mousewheel",function(h,m,o,u){if(h.altKey){h.preventDefault();zoom=parseInt(a("#zoom").val());a("#zoom").val(parseInt(zoom+u*10)).change()}});a(".menu_title").on("mousedown",function(){a("#tools_shapelib").hide();a("#menu_bar").toggleClass("active");va.removeClass("open");a(this).parent().addClass("open")}).on("mouseover",function(){va.removeClass("open");a(this).parent().addClass("open")});b.addDropDown=function(h,m,o){if(a(h).length!=0){var u=a(h).find("button"),E=a(h).find("ul").attr("id",
+a(h)[0].id+"-list");o||a("#option_lists").append(E);var H=false;o&&a(h).addClass("dropup");E.find("li").bind("mouseup",m);a(window).mouseup(function(){if(!H){u.removeClass("down");E.hide()}H=false});u.bind("mousedown",function(){if(u.hasClass("down")){u.removeClass("down");E.hide()}else{u.addClass("down");if(!o){var J=a(h).offset();E.css({top:J.top,left:J.left-110})}E.show();H=true}}).hover(function(){H=true}).mouseout(function(){H=false})}};var vb=function(h,m,o,u){var E=a(h);m=a(m);var H=false,
+J=u.dropUp;J&&a(h).addClass("dropup");m.find("li").bind("mouseup",function(){if(u.seticon){zb("#cur_"+E[0].id,a(this).children());a(this).addClass("current").siblings().removeClass("current")}o.apply(this,arguments)});a(window).mouseup(function(){if(!H){E.removeClass("down");m.hide();m.css({top:0,left:0})}H=false});m.height();a(h).bind("mousedown",function(){var O=a(h).offset();if(J){O.top-=m.height();O.left+=8}else O.top+=a(h).height();a(m).offset(O);if(E.hasClass("down")){E.removeClass("down");
+m.hide();m.css({top:0,left:0})}else{E.addClass("down");m.show();H=true;return false}}).hover(function(){H=true}).mouseout(function(){H=false});u.multiclick&&m.mousedown(function(){H=true})};a("#font_family_dropdown").change(function(){var h=this.options[this.selectedIndex].value,m=this.options[this.selectedIndex].text;a("#preview_font").html(m).css("font-family",h);a("#font_family").val(h).change()});a("div","#position_opts").each(function(){this.addEventListener("mouseup",function(){var h=this.id.replace("tool_pos",
+"").charAt(0);g.alignSelectedElements(h,"page")})});(function(){var h,m=function(){a(h).blur()};a("#svg_editor").find("button, select, input:not(#text)").focus(function(){h=this;N="toolbars";K.mousedown(m)}).blur(function(){N="canvas";K.unbind("mousedown",m);g.getMode()=="textedit"&&a("#text").focus()})})();var cb=function(){ra("#tool_select")&&g.setMode("select")},Ta=function(){ra("#tool_fhpath")&&g.setMode("fhpath")},Va=function(){ra("#tool_line")&&g.setMode("line")},Fa=function(){ra("#tool_rect")&&
+g.setMode("rect")},ta=function(){ra("#tool_ellipse")&&g.setMode("ellipse")},$a=function(){ra("#tool_image")&&g.setMode("image")},Ka=function(){ra("#tool_zoom")&&g.setMode("zoom")},Sa=function(){if(ra("#tool_zoom")){yb();oa()}},Ga=function(){ra("#tool_text")&&g.setMode("text")},db=function(){ra("#tool_path")&&g.setMode("path")},lb=function(){if(Y!=null||V)g.deleteSelectedElements();B.getNodePoint()&&B.deletePathNode()},Ua=function(){if(Y!=null||V){xa(a("#edit_menu"));g.cutSelectedElements()}},Xa=function(){if(Y!=
+null||V){xa(a("#edit_menu"));g.copySelectedElements()}},wb=function(){xa(a("#edit_menu"));var h=g.getZoom(),m=(K[0].scrollLeft+K.width()/2)/h-g.contentW;h=(K[0].scrollTop+K.height()/2)/h-g.contentH;g.pasteElements("point",m,h)},sa=function(){if(Y!=null){xa(a("#object_menu"));g.moveToTopSelectedElement()}},hb=function(){if(Y!=null){xa(a("#object_menu"));g.moveToBottomSelectedElement()}},eb=function(){if(Y!=null){xa(a("#object_menu"));g.moveUpDownSelected("Up")}},sb=function(){if(Y!=null){xa(a("#object_menu"));
+g.moveUpDownSelected("Down")}},ib=function(h){if(Y!=null){xa(a("#object_menu"));g.moveUpDownSelected(h)}},ab=function(){if(Y!=null){g.convertToPath();var h=g.getSelectedElems();g.selectorManager.requestSelector(h[0]).reset(h[0]);g.selectorManager.requestSelector(h[0]).selectorRect.setAttribute("display","none");g.setMode("pathedit");B.toEditMode(h[0]);g.clearSelection();Ha()}},ob=function(){Y!=null&&B.reorient()},pb=function(){if(Y!=null||V)a.prompt(uiStrings.notification.enterNewLinkURL,"http://",
+function(h){h&&g.makeHyperlink(h)})},fb=function(h,m){if(Y!=null||V){if(curConfig.gridSnapping){var o=g.getZoom()*curConfig.snappingStep;h*=o;m*=o}a("input").blur();g.moveSelectedElements(h,m)}},tb=function(){},ia=function(){B.getNodePoint()&&B.clonePathNode()},aa=function(){B.getNodePoint()&&B.deletePathNode()},ka=function(){var h=a("#tool_add_subpath"),m=!h.hasClass("push_button_pressed");m?h.addClass("push_button_pressed").removeClass("tool_button"):h.removeClass("push_button_pressed").addClass("tool_button");
+B.addSubPath(m)},M=function(){B.opencloseSubPath()},P=function(){g.cycleElement(1)},da=function(){g.cycleElement(0)},Ea=function(h,m){if(!(Y==null||V)){h||(m*=-1);var o=a("#angle").val()*1+m;g.setRotationAngle(o);Ha()}},Oa=function(){var h=curConfig.dimensions;a.confirm(uiStrings.notification.QwantToClear,function(m){if(m){oa();g.clear();g.setResolution(h[0],h[1]);G(true);yb();Ha();ca();g.runExtensions("onNewDocument")}})},Wa=function(){g.setBold(!g.getBold());Ha()},Za=function(){g.setItalic(!g.getItalic());
+Ha()},nb=function(){if(!c.pngsave){var h=uiStrings.notification.loadingImage;S=window.open("data:text/html;charset=utf-8,<title>"+h+"</title><h1>"+h+"</h1>")}window.canvg?g.rasterExport():a.getScript("canvg/rgbcolor.js",function(){a.getScript("canvg/canvg.js",function(){g.rasterExport()})})},Ra=function(){g.open()},mb=function(){},xa=function(h){var m=h.prev();m.css({background:"white",color:"black"});setTimeout(function(){m.removeAttr("style")},200)},qb=function(){if(q.getUndoStackSize()>0){xa(a("#edit_menu"));
+q.undo()}},rb=function(){if(q.getRedoStackSize()>0){xa(a("#edit_menu"));q.redo()}},Bb=function(){if(V){xa(a("#object_menu"));g.groupSelectedElements()}else if(Y){xa(a("#object_menu"));g.ungroupSelectedElement()}},Fb=function(){xa(a("#edit_menu"));g.cloneSelectedElements(20,20)},bb=function(){var h=this.id.replace("tool_align","").charAt(0);g.alignSelectedElements(h,a("#align_relative_to").val())},La=function(){var h=document.querySelector("#tool_stroke rect");a("#tool_stroke").toggleClass("active");
+a("#tool_fill").toggleClass("active");var m=document.querySelector("#tool_fill rect"),o=m.getAttribute("fill"),u=h.getAttribute("fill");h=parseFloat(h.getAttribute("stroke-opacity"));if(isNaN(h))h=100;m=parseFloat(m.getAttribute("fill-opacity"));if(isNaN(m))m=100;u=ya(u,h,"stroke");o=ya(o,m,"fill");b.paintBox.fill.setPaint(u,true);b.paintBox.stroke.setPaint(o,true)},yb=function(h){var m=g.getResolution();h=h?m.zoom*h:1;a("#zoom").val(h*100);g.setZoom(h);xb();G(true)},Hb=function(){xa(a("#view_menu"));
+!a("#tool_wireframe").hasClass("push_button_pressed")?a("#tool_wireframe").addClass("push_button_pressed"):a("#tool_wireframe").removeClass("push_button_pressed");K.toggleClass("wireframe");if(!k){var h=a("#wireframe_rules");h.length?h.empty():a('<style id="wireframe_rules"></style>').appendTo("head");xb()}},Gb=function(){xa(a("#view_menu"));var h=!a("#tool_snap").hasClass("push_button_pressed");h?a("#tool_snap").addClass("push_button_pressed"):a("#tool_snap").removeClass("push_button_pressed");curConfig.gridSnapping=
+h},Ib=function(){window.self!=window.top&&top.exit_fullscreen()},Lb=function(){xa(a("#view_menu"));if(a("#tool_rulers").hasClass("push_button_pressed")){a("#tool_rulers").removeClass("push_button_pressed");a("#show_rulers").attr("checked",false);curConfig.showRulers=false}else{a("#tool_rulers").addClass("push_button_pressed");a("#show_rulers").attr("checked",true);curConfig.showRulers=true}a("#rulers").toggle(!!curConfig.showRulers)},xb=function(){if(!k){var h="#workarea.wireframe #svgcontent * { stroke-width: "+
+1/g.getZoom()+"px; }";a("#wireframe_rules").text(K.hasClass("wireframe")?h:"")}},Eb=function(h,m){if(!ea){xa(a("#view_menu"));ea=true;a("#save_output_btns").toggle(!!m);a("#tool_source_back").toggle(!m);var o=ga=g.getSvgString();a("#svg_source_textarea").val(o);a("#svg_source_editor").fadeIn();a("#svg_source_textarea").focus().select()}},Kb=function(){if(ea){if(g.setSvgString(a("#svg_source_textarea").val())){g.clearSelection();Ya();yb();ca()}else a.confirm(uiStrings.notification.QerrorsRevertToSource,
+function(h){if(!h)return false;g.clearSelection();Ya();yb();ca()});oa()}},zb=b.setIcon=function(h,m){var o=typeof m==="string"?a.getSvgIcon(m,true):m.clone();o?a(h).find("img").replaceWith(o):console.log("NOTE: Icon image missing: "+m)},gb;gb=function(){var h=/^(Moz|Webkit|Khtml|O|ms|Icab)(?=[A-Z])/,m=document.getElementsByTagName("script")[0],o;for(o in m.style)if(h.test(o))return o.match(h)[0];if("WebkitOpacity"in m.style)return"Webkit";if("KhtmlOpacity"in m.style)return"Khtml";return""}();var Nb=
+function(h,m){gb.toLowerCase();var o=["top","left","bottom","right"];h.each(function(){for(var u=a(this),E=u.outerWidth()*(m-1),H=u.outerHeight()*(m-1),J=0;J<4;J++){var O=o[J],X=u.data("orig_margin-"+O);if(X==null){X=parseInt(u.css("margin-"+O));u.data("orig_margin-"+O,X)}X=X*m;if(O==="right")X+=E;else if(O==="bottom")X+=H;u.css("margin-"+O,X)}})},Mb=b.setIconSize=function(h,m){if(!(h==w.size&&!m)){var o=a("#tools_top .toolset, #editor_panel > *, #history_panel > *,\t\t\t\t#main_button, #tools_left > *, #path_node_panel > *, #multiselected_panel > *,\t\t\t\t#g_panel > *, #tool_font_size > *, .tools_flyout"),
+u=1;u=typeof h=="number"?h:{s:0.75,m:1,l:1.25,xl:1.5}[h];b.tool_scale=R=u;pa();var E=o.parents(":hidden");E.css("visibility","hidden").show();Nb(o,u);E.css("visibility","visible").hide();o=a("#tool_size_rules");if(o.length)o.empty();else o=a('<style id="tool_size_rules"></style>').appendTo("head");if(h!="m"){var H="";a.each(cssResizeRules,function(J,O){J="#svg_editor "+J.replace(/,/g,", #svg_editor");H+=J+"{";a.each(O,function(X,ba){if(typeof ba==="number")var T=ba*u+"px";else if(ba[h]||ba.all)T=
+ba[h]||ba.all;H+=X+":"+T+";"});H+="}"});E="-"+gb.toLowerCase()+"-";H+="#tools_top .toolset, #editor_panel > *, #history_panel > *,\t\t\t\t#main_button, #tools_left > *, #path_node_panel > *, #multiselected_panel > *,\t\t\t\t#g_panel > *, #tool_font_size > *, .tools_flyout{"+E+"transform: scale("+u+");} #svg_editor div.toolset .toolset {"+E+"transform: scale(1); margin: 1px !important;} #svg_editor .ui-slider {"+E+"transform: scale("+1/u+");}";o.text(H)}pa()}},Ab=function(){a("#dialog_box").hide();
+if(ea){if(ea)ga!==a("#svg_source_textarea").val()?a.confirm(uiStrings.notification.QignoreSourceChanges,function(h){h&&Ya()}):Ya();Db()}else Ba&&g.leaveContext()},Ya=function(){a("#svg_source_editor").hide();ea=false;a("#svg_source_textarea").blur()};a(window).width();a(window).height();var Db=a.noop;a(window).resize(function(){G()});(function(){K.scroll(function(){if(a("#ruler_x").length!=0)a("#ruler_x")[0].scrollLeft=K[0].scrollLeft;if(a("#ruler_y").length!=0)a("#ruler_y")[0].scrollTop=K[0].scrollTop})})();
+a("#url_notice").click(function(){a.alert(this.title)});a("#change_image_url").click(function(){var h=g.getHref(Y);h=h.indexOf("data:")===0?"":h;a.prompt(uiStrings.notification.enterNewImgURL,h,function(m){m&&Ia(m)})});var e=function(h){var m=h[0].id=="stroke_color"?"stroke":"fill",o=h[0].id=="canvas_color";if(o)m="canvas";var u=b.paintBox[m].paint;h=m=="stroke"?"Pick a Stroke Paint and Opacity":"Pick a Fill Paint and Opacity";o=o?{right:175,top:50}:{left:50,bottom:50};a("#color_picker").draggable({cancel:".jGraduate_tabs, .jGraduate_colPick, .jGraduate_gradPick, .jPicker",
+containment:"window"}).removeAttr("style").css(o).jGraduate({paint:u,window:{pickerTitle:h},images:{clientPath:curConfig.jGraduatePath},newstop:"inverse"},function(E){u=new a.jGraduate.Paint(E);b.paintBox[m].setPaint(u);g.setPaint(m,u);a("#color_picker").hide()},function(){a("#color_picker").hide()})};d=function(h,m){var o=document.getElementById("canvas_background"),u={color:"fff",opacity:1};if(m=="stroke")u=curConfig.initStroke;if(m=="fill")u=curConfig.initFill;if(m=="canvas"&&o)if(o=o.getAttribute("fill").match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/))u=
+{color:("0"+parseInt(o[1],10).toString(16)).slice(-2)+("0"+parseInt(o[2],10).toString(16)).slice(-2)+("0"+parseInt(o[3],10).toString(16)).slice(-2),opacity:1};o=(new DOMParser).parseFromString('<svg xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"\t\t\t\t\tfill="#'+u.color+'" opacity="'+u.opacity+'"/>\t\t\t\t\t<defs><linearGradient id="gradbox_"/></defs></svg>',"text/xml").documentElement;o=a(h)[0].appendChild(document.importNode(o,true));m==="canvas"?o.setAttribute("width",60.5):
+o.setAttribute("width","100%");this.rect=o.firstChild;this.defs=o.getElementsByTagName("defs")[0];this.grad=this.defs.firstChild;this.paint=new a.jGraduate.Paint({solidColor:u.color});this.type=m;this.setPaint=function(E,H){this.paint=E;var J="none",O=E.type,X=E.alpha/100;switch(O){case "solidColor":J=E[O]=="none"||E[O]=="one"?"none":"#"+E[O];break;case "linearGradient":case "radialGradient":this.defs.removeChild(this.grad);this.grad=this.defs.appendChild(E[O]);J="url(#"+(this.grad.id="gradbox_"+
+this.type)+")"}this.rect.setAttribute("fill",J);this.rect.setAttribute("opacity",X);if(this.type=="canvas")if(O=document.getElementById("canvas_background")){za=g.getResolution();O.setAttribute("x",-1);O.setAttribute("y",-1);O.setAttribute("width",za.w+2);O.setAttribute("height",za.h+2);J.indexOf("url")==-1&&O.setAttribute("fill",J)}else Ja(J);if(H){g.setColor(this.type,J,true);g.setPaintOpacity(this.type,X,true)}};this.update=function(E){if(Y){var H=this.type;switch(Y.tagName){case "use":case "image":case "foreignObject":return;
+case "g":case "a":for(var J=null,O=Y.getElementsByTagName("*"),X=0,ba=O.length;X<ba;X++){var T=O[X].getAttribute(H);if(X===0)J=T;else if(J!==T){J=null;break}}if(J===null){O=null;return}O=J;J=1;break;default:J=parseFloat(Y.getAttribute(H+"-opacity"));if(isNaN(J))J=1;O=H==="fill"?"black":"none";O=Y.getAttribute(H)||O}if(E){g.setColor(H,O,true);g.setPaintOpacity(H,J,true)}J*=100;this.setPaint(ya(O,J,H))}};this.prep=function(){switch(this.paint.type){case "linearGradient":case "radialGradient":var E=
+new a.jGraduate.Paint({copy:this.paint});g.setPaint(m,E)}}};b.paintBox.fill=new d("#fill_color","fill");b.paintBox.stroke=new d("#stroke_color","stroke");b.paintBox.canvas=new d("#canvas_color","canvas");a("#stroke_width").val(curConfig.initStroke.width);a("#group_opacity").val(curConfig.initOpacity*100);d=b.paintBox.fill.rect.cloneNode(false);d.setAttribute("style","vector-effect:non-scaling-stroke");var k=d.style.vectorEffect==="non-scaling-stroke";d.removeAttribute("style");d=b.paintBox.fill.rect.ownerDocument.createElementNS("http://www.w3.org/2000/svg",
+"feGaussianBlur");typeof d.stdDeviationX==="undefined"&&a("#tool_blur").hide();a(d).remove();setTimeout(function(){g.embedImage("images/placeholder.svg",function(h){if(!h){a("#image_save_opts [value=embed]").attr("disabled","disabled");a("#image_save_opts input").val(["ref"]);w.img_save="ref";a("#image_opt_embed").css("color","#666").attr("title",uiStrings.notification.featNotSupported)}})},1E3);a("#tool_fill").click(function(){if(a("#tool_fill").hasClass("active"))e(a("#fill_color"));else{a("#tool_fill").addClass("active");
+a("#tool_stroke").removeClass("active")}});a("#tool_stroke").on("click",function(){if(a("#tool_stroke").hasClass("active"))e(a("#stroke_color"));else{a("#tool_stroke").addClass("active");a("#tool_fill").removeClass("active")}});a("#tool_canvas").on("click touchstart",function(){e(a("#canvas_color"))});a("#tool_stroke").on("touchstart",function(){a("#tool_stroke").addClass("active");a("#tool_fill").removeClass("active");e(a("#stroke_color"))});a("#tool_fill").on("touchstart",function(){a("#tool_fill").addClass("active");
+a("#tool_stroke").removeClass("active");e(a("#fill_color"))});a("#zoom_select").on("change",function(){var h=this.options[this.selectedIndex].text;h=h.split("%")[0];a("#zoom").val(h).trigger("change")});a(".push_button").mousedown(function(){a(this).hasClass("disabled")||a(this).addClass("push_button_pressed").removeClass("push_button")}).mouseout(function(){a(this).removeClass("push_button_pressed").addClass("push_button")}).mouseup(function(){a(this).removeClass("push_button_pressed").addClass("push_button")});
+a(window).bind("load resize",function(){K.css("line-height",K.height()+"px")});var l=function(){var h=a("#canvas_width"),m=a("#canvas_height"),o=h.val(),u=m.val();if(o!="fit"&&!svgedit.units.isValidUnit("width",o)){a.alert(uiStrings.notification.invalidAttrValGiven);h.parent().addClass("error");return false}h.parent().removeClass("error");if(u!="fit"&&!svgedit.units.isValidUnit("height",u)){a.alert(uiStrings.notification.invalidAttrValGiven);m.parent().addClass("error");return false}m.parent().removeClass("error");
+if(!g.setResolution(o,u)){a.alert(uiStrings.notification.noContentToFitTo);o=g.getResolution();h.val(o.w);m.val(o.h);return false}G()};a("#resolution").change(function(){var h=a("#canvas_width")[0],m=a("#canvas_height")[0];if(this.selectedIndex)if(this.value=="content"){h.value="fit";m.value="fit";l();var o=g.getResolution();h.value=o.w;m.value=o.h}else{var u=this.value.split("x");u[0]=parseInt(u[0]);u[1]=parseInt(u[1]);var E=u[0]-h.value,H=u[1]-m.value,J=Date.now(),O=function(X){X=(X-J)/1E3;X=Math.pow(X-
+1,3)+1;h.value=(u[0]-E+X*E).toFixed(0);m.value=(u[1]-H+X*H).toFixed(0);l();if(X>=1){X=g.getResolution();a("#canvas_width").val(X.w.toFixed());a("#canvas_height").val(X.h.toFixed());a("#resolution_label").html("<div class='pull'>"+X.w+"<span>\u00d7</span></br>"+X.h+"</div>")}else requestAnimationFrame(O)};O(Date.now())}else{a("#resolution_label").html("Custom");h.removeAttribute("readonly");h.focus();h.select();if(h.value=="fit"){h.value=100;m.value=100}}});a("#zoom").change(function(){wa(this)});
+a("input,select").attr("autocomplete","off");var C=function(){var h=[{sel:"#tool_select",fn:cb,evt:"click",key:["V",true]},{sel:"#tool_fhpath",fn:Ta,evt:"click",key:["Q",true]},{sel:"#tool_line",fn:Va,evt:"click",key:["L",true]},{sel:"#tool_rect",fn:Fa,evt:"click",key:["R",true],icon:"rect"},{sel:"#tool_ellipse",fn:ta,evt:"mouseup",key:["C",true],icon:"ellipse"},{sel:"#tool_path",fn:db,evt:"click",key:["P",true]},{sel:"#tool_text",fn:Ga,evt:"click",key:["T",true]},{sel:"#tool_image",fn:$a,evt:"mouseup"},
+{sel:"#tool_zoom",fn:Ka,evt:"mouseup",key:["Z",true]},{sel:"#tool_clear",fn:Oa,evt:"mouseup",key:[v+"N",true]},{sel:"#tool_save",fn:function(){if(ea)Kb();else{xa(a("#file_menu"));g.save({images:w.img_save,round_digits:6})}},evt:"mouseup",key:[v+"S",true]},{sel:"#tool_export",fn:nb,evt:"mouseup"},{sel:"#tool_open",fn:Ra,evt:"mouseup"},{sel:"#tool_import",fn:mb,evt:"mouseup"},{sel:"#tool_source",fn:Eb,evt:"click",key:[v+"U",true]},{sel:"#tool_wireframe",fn:Hb,evt:"click"},{sel:"#tool_snap",fn:Gb,evt:"click"},
+{sel:"#tool_rulers",fn:Lb,evt:"click"},{sel:"#tool_source_cancel,#svg_source_overlay,#tool_docprops_cancel,#tool_prefs_cancel",fn:Ab,evt:"click",key:["esc",false,false],hidekey:true},{sel:"#tool_source_save",fn:Kb,evt:"click"},{sel:"#tool_delete,#tool_delete_multi",fn:lb,evt:"click",key:["del/backspace",true]},{sel:"#tool_reorient",fn:ob,evt:"click"},{sel:"#tool_node_link",fn:tb,evt:"change"},{sel:"#tool_node_clone",fn:ia,evt:"click"},{sel:"#tool_node_delete",fn:aa,evt:"click"},{sel:"#tool_openclose_path",
+fn:M,evt:"click"},{sel:"#tool_add_subpath",fn:ka,evt:"click"},{sel:"#tool_move_top",fn:sa,evt:"click",key:v+"shift+up"},{sel:"#tool_move_bottom",fn:hb,evt:"click",key:v+"shift+down"},{sel:"#tool_move_up",fn:eb,evt:"click",key:[v+"up",true]},{sel:"#tool_move_down",fn:sb,evt:"click",key:[v+"down",true]},{sel:"#tool_topath",fn:ab,evt:"click"},{sel:"#tool_make_link,#tool_make_link_multi",fn:pb,evt:"click"},{sel:"#tool_clone,#tool_clone_multi",fn:Fb,evt:"click",key:[v+"D",true]},{sel:"#tool_group",fn:Bb,
+evt:"click",key:[v+"G",true]},{sel:"#tool_ungroup",fn:Bb,evt:"click",key:v+"shift+G"},{sel:"#tool_unlink_use",fn:Bb,evt:"click"},{sel:"[id^=tool_align]",fn:bb,evt:"click"},{sel:"#tool_undo",fn:qb,evt:"click",key:v+"z"},{sel:"#tool_redo",fn:rb,evt:"click",key:["y",true]},{sel:"#tool_cut",fn:Ua,evt:"click",key:[v+"x",true]},{sel:"#tool_copy",fn:Xa,evt:"click",key:v+"c"},{sel:"#tool_paste",fn:wb,evt:"click",key:v+"v"},{sel:"#tool_switch",fn:La,evt:"click",key:["x",true]},{sel:"#tool_bold",fn:Wa,evt:"mousedown",
+key:[v+"B",true]},{sel:"#tool_italic",fn:Za,evt:"mousedown",key:[v+"I",true]},{sel:"#copy_save_done",fn:Ab,evt:"click"},{key:"ctrl+left",fn:function(){Ea(0,1)}},{key:"ctrl+right",fn:function(){Ea(1,1)}},{key:"ctrl+shift+left",fn:function(){Ea(0,5)}},{key:"ctrl+shift+right",fn:function(){Ea(1,5)}},{key:"shift+O",fn:da},{key:"shift+P",fn:P},{key:[v+"+",true],fn:function(){yb(2)}},{key:[v+"-",true],fn:function(){yb(0.5)}},{key:["up",true],fn:function(){fb(0,-1)}},{key:["down",true],fn:function(){fb(0,
+1)}},{key:["left",true],fn:function(){fb(-1,0)}},{key:["right",true],fn:function(){fb(1,0)}},{key:"shift+up",fn:function(){fb(0,-10)}},{key:"shift+down",fn:function(){fb(0,10)}},{key:"shift+left",fn:function(){fb(-10,0)}},{key:"shift+right",fn:function(){fb(10,0)}},{key:["alt+up",true],fn:function(){g.cloneSelectedElements(0,-1)}},{key:["alt+down",true],fn:function(){g.cloneSelectedElements(0,1)}},{key:["alt+left",true],fn:function(){g.cloneSelectedElements(-1,0)}},{key:["alt+right",true],fn:function(){g.cloneSelectedElements(1,
+0)}},{key:["alt+shift+up",true],fn:function(){g.cloneSelectedElements(0,-10)}},{key:["alt+shift+down",true],fn:function(){g.cloneSelectedElements(0,10)}},{key:["alt+shift+left",true],fn:function(){g.cloneSelectedElements(-10,0)}},{key:["alt+shift+right",true],fn:function(){g.cloneSelectedElements(10,0)}},{key:v+"A",fn:function(){g.selectAllInCurrentLayer()}},{key:"I",fn:function(){var o=a(".tool_button_current");if(o.length&&o[0].id!=="tool_eyedropper"){o.removeClass("tool_button_current").addClass("tool_button");
+a("#tool_eyedropper").addClass("tool_button_current").removeClass("tool_button")}g.setMode("eyedropper")}},{key:v+"shift+z",fn:rb},{key:"esc",fn:Ib}],m={"4/Shift+4":"#tools_rect_show","5/Shift+5":"#tools_ellipse_show"};return{setAll:function(){var o={};a.each(h,function(u,E){if(E.sel){var H=a(E.sel);if(H.length==0)return true;if(E.evt){if(svgedit.browser.isTouch()&&E.evt==="click")E.evt="mousedown";H[E.evt](E.fn)}if(E.parent&&a(E.parent+"_show").length!=0){var J=a(E.parent);J.length||(J=na(E.parent.substr(1)));
+J.append(H);a.isArray(o[E.parent])||(o[E.parent]=[]);o[E.parent].push(E)}}if(E.key){var O=E.fn,X=false;if(a.isArray(E.key)){J=E.key[0];if(E.key.length>1)X=E.key[1]}else J=E.key;J+="";svgedit.browser.isMac&&J.indexOf("+")!=-1&&J.split("+")[0]=="ctrl"&&J.replace("ctrl","cmd");a.each(J.split("/"),function(T,fa){a(document).bind("keydown",fa,function(ha){O();X&&ha.preventDefault();return false})});if(E.sel&&!E.hidekey&&H.attr("title")){var ba=H.attr("title").split("[")[0]+" ("+J+")";m[J]=E.sel;H.parents("#main_menu").length||
+H.attr("title",ba)}}});Z(o);a(window).bind("keydown","tab",function(u){if(N==="canvas"){u.preventDefault();P()}}).bind("keydown","shift+tab",function(u){if(N==="canvas"){u.preventDefault();da()}});a("#tool_zoom").dblclick(Sa)},setTitles:function(){a.each(m,function(o,u){var E=a(u).parents("#main_menu").length;a(u).each(function(){var H=E?a(this).text().split(" [")[0]:this.title.split(" [")[0],J="";a.each(o.split("/"),function(O,X){var ba=X.split("+"),T="";if(ba.length>1){T=ba[0]+"+";X=ba[1]}J+=(O?
+"/":"")+T+(uiStrings["key_"+X]||X)});if(E)this.lastChild.textContent=H+" ["+J+"]";else this.title=H+" ["+J+"]"})})},getButtonData:function(o){var u;a.each(h,function(E,H){if(H.sel===o)u=H});return u}}}();C.setAll();b.ready(function(){var h=curConfig.initTool,m=a("#tools_left, #svg_editor .tools_flyout"),o=m.find("#tool_"+h);h=m.find("#"+h);(o.length?o:h.length?h:a("#tool_select")).click().mouseup();curConfig.wireframe&&a("#tool_wireframe").click();curConfig.showlayers&&toggleSidePanel();a("#rulers").toggle(!!curConfig.showRulers)});
+a("#canvas_height").dragInput({min:10,max:null,step:10,callback:l,cursor:false,dragAdjust:0.1});a("#canvas_width").dragInput({min:10,max:null,step:10,callback:l,cursor:false,dragAdjust:0.1});a("#rect_width").dragInput({min:1,max:null,step:1,callback:changeAttribute,cursor:false});a("#rect_height").dragInput({min:1,max:null,step:1,callback:changeAttribute,cursor:false});a("#ellipse_cx").dragInput({min:1,max:null,step:1,callback:changeAttribute,cursor:false});a("#ellipse_cy").dragInput({min:1,max:null,
+step:1,callback:changeAttribute,cursor:false});a("#ellipse_rx").dragInput({min:1,max:null,step:1,callback:changeAttribute,cursor:false});a("#ellipse_ry").dragInput({min:1,max:null,step:1,callback:changeAttribute,cursor:false});a("#image_height").dragInput({min:1,max:null,step:1,callback:changeAttribute,cursor:false});a("#circle_cx").dragInput({min:1,max:null,step:1,callback:changeAttribute,cursor:false});a("#circle_cy").dragInput({min:1,max:null,step:1,callback:changeAttribute,cursor:false});a("#circle_r").dragInput({min:1,
+max:null,step:1,callback:changeAttribute,cursor:false});a("#image_height").dragInput({min:0,max:null,step:1,callback:changeAttribute,cursor:false});a("#selected_x").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#selected_y").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#path_node_x").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#path_node_y").dragInput({min:null,max:null,step:1,callback:changeAttribute,
+cursor:false});a("#image_width").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#line_x1").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#line_x2").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#line_y1").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#line_y2").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#path_x").dragInput({min:null,
+max:null,step:1,callback:changeAttribute,cursor:false});a("#path_y").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#rect_x").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#rect_y").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#g_x").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#g_y").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#image_x").dragInput({min:null,
+max:null,step:1,callback:changeAttribute,cursor:false});a("#text_y").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#text_x").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#image_y").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#rect_rx").dragInput({min:0,max:100,step:1,callback:changeAttribute,cursor:true});a("#stroke_width").dragInput({min:0,max:99,step:1,callback:function(h){var m=h.value;if(m==0&&
+Y&&["line","polyline"].indexOf(Y.nodeName)>=0)m=h.value=1;g.setStrokeWidth(m)},cursor:true,smallStep:0.1,start:1.5});a("#angle").dragInput({min:-180,max:180,step:1,callback:function(h){g.setRotationAngle(h.value,true);rotateCursor(h.value);a("#tool_reorient").toggleClass("disabled",h.value==0)},cursor:false,dragAdjust:0.5});a("#font_size").dragInput({min:1,max:250,step:1,callback:function(h){g.setFontSize(h.value)},cursor:true,stepfunc:function(h,m){var o=h.value-0,u=o+m,E=u>=o;if(m===0)return o;
+return o>=24?E?Math.round(o*1.1):Math.round(o/1.1):o<=1?E?o*2:o/2:u},dragAdjust:0.15});a("#group_opacity").dragInput({min:0,max:100,step:5,callback:changeAttribute,cursor:true,start:100});a("#blur").dragInput({min:0,max:10,step:0.1,callback:function(h,m){val=h.value;a("#blur").val(val);m?g.setBlur(val,true):g.setBlurNoUndo(val)},cursor:true,start:0});a("#zoom").val(g.getZoom()*100);a("#workarea").contextMenu({menu:"cmenu_canvas",inSpeed:0},function(h){switch(h){case "delete":lb();break;case "cut":Ua();
+break;case "copy":Xa();break;case "paste":g.pasteElements();break;case "paste_in_place":g.pasteElements("in_place");break;case "group":g.groupSelectedElements();break;case "ungroup":g.ungroupSelectedElement();break;case "move_front":sa();break;case "move_up":ib("Up");break;case "move_down":ib("Down");break;case "move_back":hb();break;default:svgedit.contextmenu&&svgedit.contextmenu.hasCustomHandler(h)&&svgedit.contextmenu.getCustomHandler(h).call()}});a(".contextMenu li").mousedown(function(h){h.preventDefault()});
+a("#cmenu_canvas li").disableContextMenu();I.enableContextMenuItems("#delete,#cut,#copy");window.onbeforeunload=function(){if(q.getUndoStackSize()===0)b.show_save_warning=false;if(!curConfig.no_save_warning&&b.show_save_warning)return uiStrings.notification.unsavedChanges};b.openPrep=function(h){a("#main_menu").hide();q.getUndoStackSize()===0?h(true):a.confirm(uiStrings.notification.QwantToOpen,h)};if(window.FileReader){d=function(h){h.stopPropagation();h.preventDefault();a("#workarea").removeAttr("style");
+a("#main_menu").hide();var m=null;if(m=h.type=="drop"?h.dataTransfer.files[0]:this.files[0])if(m.type.indexOf("image")!=-1)if(m.type.indexOf("svg")!=-1){h=new FileReader;h.onloadend=function(o){g.importSvgString(o.target.result,true);g.ungroupSelectedElement();g.ungroupSelectedElement();g.groupSelectedElements();g.alignSelectedElements("m","page");g.alignSelectedElements("c","page")};h.readAsText(m)}else alert("sorry, bitmap import is temporalily disabled")};K=a("#workarea");K[0].addEventListener("dragenter",
+function(h){h.stopPropagation();h.preventDefault();K.css({"-webkit-transform":"scale3d(1.1,1.1,1)","-moz-transform":"scale3d(1.1,1.1,1)","-o-transform":"scale(1.1)","-ms-transform":"scale3d(1.1,1.1,1)",transform:"scale3d(1.1,1.1,1)"})},false);K[0].addEventListener("dragover",function(h){h.stopPropagation();h.preventDefault()},false);K[0].addEventListener("dragleave",function(h){K.removeAttr("style");h.stopPropagation();h.preventDefault()},false);K[0].addEventListener("drop",d,false);var A=a('<input type="file">').change(function(){var h=
+this;b.openPrep(function(m){if(m){g.clear();if(h.files.length==1){m=new FileReader;m.onloadend=function(o){s(o.target.result);G()};m.readAsText(h.files[0])}}})});a("#tool_open").show().prepend(A);d=a('<input type="file">').change(d);a("#tool_import").show().prepend(d)}var G=b.updateCanvas=function(h,m){var o=K.width(),u=K.height(),E=o,H=u,J=g.getZoom(),O=K,X=a("#svgcanvas"),ba={x:O[0].scrollLeft+E/2,y:O[0].scrollTop+H/2},T=curConfig.canvas_expansion;o=Math.max(E,g.contentW*J*T);u=Math.max(H,g.contentH*
+J*T);o==E&&u==H?K.css("overflow","hidden"):K.css("overflow","scroll");T=X.height()/2;var fa=X.width()/2;X.width(o).height(u);var ha=u/2,W=o/2,qa=g.updateCanvas(o,u),ua=W/fa;o=o/2-E/2;u=u/2-H/2;if(m){m.x+=qa.x;m.y+=qa.y}else m={x:W+(ba.x-fa)*ua,y:ha+(ba.y-T)*ua};if(h)if(g.contentW>O.width()){K[0].scrollLeft=qa.x-10;K[0].scrollTop=qa.y-10}else{O[0].scrollLeft=o;O[0].scrollTop=u}else{O[0].scrollLeft=m.x-E/2;O[0].scrollTop=m.y-H/2}if(curConfig.showRulers){E=X;J=J;document.getElementById("workarea");document.getElementById("title_show");
+J||(J=g.getZoom());E||(E=a("#svgcanvas"));H=g.getContentElem();O=svgedit.units.getTypeMap()[curConfig.baseUnit];for(X=0;X<2;X++){fa=(ba=X===0)?"x":"y";ua=ba?"width":"height";T=H.getAttribute(fa)-0;fa=a("#ruler_"+fa+" canvas:first");$hcanv=fa.clone();fa.replaceWith($hcanv);o=$hcanv[0];ha=fa=E[ua]()*2;o.parentNode.style[ua]=ha+"px";W=0;var Aa;qa=o.getContext("2d");qa.fillStyle="rgb(200,0,0)";qa.fillRect(0,0,o.width,o.height);$hcanv.siblings().remove();if(fa>=3E4){var Ca=parseInt(fa/3E4)+1;Aa=Array(Ca);
+Aa[0]=qa;for(u=1;u<Ca;u++){o[ua]=3E4;var Pa=o.cloneNode(true);o.parentNode.appendChild(Pa);Aa[u]=Pa.getContext("2d")}Pa[ua]=fa%3E4;fa=3E4}o[ua]=fa;ua=O*J;var Qa=50/ua;o=1;for(u=0;u<D.length;u++){o=Ca=D[u];if(Qa<=Ca)break}Qa=o*ua;qa.font="normal 9px 'Lucida Grande', sans-serif";qa.fillStyle="#777";for(var Na=T/ua%o*ua,jb=Na-Qa;Na<ha;Na+=Qa){jb+=Qa;u=Math.round(Na)+0.5;if(ba){qa.moveTo(u,15);qa.lineTo(u,0)}else{qa.moveTo(15,u);qa.lineTo(0,u)}Ca=(jb-T)/ua;if(o>=1)u=Math.round(Ca);else{u=(o+"").split(".")[1].length;
+u=Ca.toFixed(u)-0}if(u!==0&&u!==1E3&&u%1E3===0)u=u/1E3+"K";if(ba){qa.fillText(u,Na+2,8);qa.fillStyle="#777"}else{Ca=(u+"").split("");for(u=0;u<Ca.length;u++){qa.fillText(Ca[u],1,Na+9+u*9);qa.fillStyle="#777"}}Ca=Qa/10;for(u=1;u<10;u++){var ub=Math.round(Na+Ca*u)+0.5;if(Aa&&ub>fa){W++;qa.stroke();if(W>=Aa.length){u=10;Na=ha;continue}qa=Aa[W];Na-=3E4;ub=Math.round(Na+Ca*u)+0.5}var Cb=u%2?12:10;if(ba){qa.moveTo(ub,15);qa.lineTo(ub,Cb)}else{qa.moveTo(15,ub);qa.lineTo(Cb,ub)}}}qa.strokeStyle="#666";qa.stroke()}K.scroll()}},
+D=[];for(d=0.1;d<1E5;d*=10){D.push(1*d);D.push(2*d);D.push(5*d)}G(true);try{var z=function(h){if(window.JSON&&JSON.stringify)return JSON.stringify(h);var m=arguments.callee;if(typeof h=="boolean"||typeof h=="number")return h+"";else if(typeof h=="string")return'"'+h.replace(/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,function(E){return"\\u"+("0000"+E.charCodeAt(0).toString(16)).slice(-4)})+'"';else if(h.length){for(var o=
+0;o<h.length;o++)h[o]=m(h[o]);return"["+h.join(",")+"]"}else{o=[];for(var u in h)o.push(m(u)+":"+m(h[u]));return"{"+o.join(",")+"}"}};window.addEventListener("message",function(h){var m=parseInt(h.data.substr(0,h.data.indexOf(";")));try{h.source.postMessage("SVGe"+m+";"+z(eval(h.data)),"*")}catch(o){h.source.postMessage("SVGe"+m+";error:"+o.message,"*")}},false)}catch(F){window.embed_error=F}a(function(){window.svgCanvas=g;g.ready=methodDraw.ready});b.setLang=function(h,m){a.pref("lang",h);a("#lang_select").val(h);
+if(m){g.runExtensions("langChanged",h);ma();a.each({"#stroke_color":"#tool_stroke .icon_label, #tool_stroke .color_block","#fill_color":"#tool_fill label, #tool_fill .color_block","#linejoin_miter":"#cur_linejoin","#linecap_butt":"#cur_linecap"},function(o,u){a(u).attr("title",a(o)[0].title)});a("#multiselected_panel div[id^=tool_align]").each(function(){a("#tool_pos"+this.id.substr(10))[0].title=this.title})}}};var f=[];b.ready=function(d){p?d():f.push(d)};b.runCallbacks=function(){a.each(f,function(){this()});
+p=true};b.loadFromString=function(d){b.ready(function(){s(d)})};b.loadFromURL=function(d,n){n||(n={});var v=n.cache,B=n.callback;b.ready(function(){a.ajax({url:d,dataType:"text",cache:!!v,success:function(q){s(q,B)},error:function(q,L,Q){q.status!=404&&q.responseText?s(q.responseText,B):a.alert(uiStrings.notification.URLloadFail+": \n"+Q+"",B)}})})};b.loadFromDataURI=function(d){b.ready(function(){var n=d.substring(26);s(svgedit.utilities.decode64(n))})};b.addExtension=function(){var d=arguments;
+a(function(){g&&g.addExtension.apply(this,d)})};return b}(jQuery);$(methodDraw.init)})();$.fn.dragInput=function(a){return this.each(function(){this.repeating=false;this.dragCfg={min:a&&!isNaN(parseFloat(a.min))?Number(a.min):null,max:a&&!isNaN(parseFloat(a.max))?Number(a.max):null,step:a&&Number(a.step)?a.step:1,stepfunc:a&&a.stepfunc?a.stepfunc:false,dragAdjust:a&&a.dragAdjust?a.dragAdjust:1,height:70,cursor:a&&a.cursor?Boolean(a.cursor):false,start:a&&a.start?Number(a.start):0,_btn_width:20,_direction:null,_delay:null,_repeat:null,callback:a&&a.callback?a.callback:null};this.dragCfg.smallStep=
+a&&a.smallStep?a.smallStep:this.dragCfg.step/2;var s=this.dragCfg.dragAdjust,g=$(this).parent(),b=$(this),p=this.dragCfg.height,w=this.dragCfg.min,c=this.dragCfg.max,f=this.dragCfg.step,d=c-w>0?(c-w)/f:200,n=d/p*f,v=0,B=this.getAttribute("data-attr"),q=methodDraw.canvas,L=svgedit.browser.isTouch(),Q=true,K=d&&this.dragCfg.cursor?$("<div class='draginput_cursor' />").appendTo(g):false;b.attr("readonly","readonly");K&&!isNaN(this.dragCfg.start)&&K.css("top",this.dragCfg.start*-1/n+p);this.adjustValue=
+function(I,S){var R;I=parseFloat(I);R=isNaN(this.value)?this.dragCfg.reset:$.isFunction(this.dragCfg.stepfunc)?this.dragCfg.stepfunc(this,I):Number((Number(this.value)+Number(I)).toFixed(5));if(c!==null)R=Math.min(R,c);if(w!==null)R=Math.max(R,w);K&&this.updateCursor(R);this.value=R;g.attr("data-value",R);$.isFunction(this.dragCfg.callback)&&this.dragCfg.callback(this,S)};g.toggleClass("draginput",g.is("label"));this.move=function(I,S,R){if(L)I=I.originalEvent.touches[0];if(v===0)v=S;S=(I.pageY-v)*
+-1;v=I.pageY;R=S*n*s;this.adjustValue(R.toFixed(f<1?1:0))};this.stop=function(){var I=q.getSelectedElems();$("body").removeClass("dragging");g.removeClass("active");Q=true;$(window).unbind("mousemove.draginput touchmove.draginput mouseup.draginput touchend.draginput");v=0;if(I[0]){I=q.undoMgr.finishUndoableChange();I.isEmpty()||q.undoMgr.addCommandToHistory(I)}this.adjustValue(0,Q)};this.updateCursor=function(){var I=parseFloat(this.value)*-1/n+p;K.css("top",I)};this.launch=function(I){var S=q.getSelectedElems();
+if(L)I=I.originalEvent.touches[0];var R=I.pageY,N=this.value,ga=this;q.undoMgr.beginUndoableChange(B,S);$("body").addClass("dragging");g.addClass("active");$(window).bind("mousemove.draginput touchmove.draginput",function(oa){ga.move(oa,R,parseFloat(N))});$(window).bind("mouseup.draginput touchend.draginput",function(){ga.stop()})};$(this).attr("readonly","readonly").attr("data-scale",n).attr("data-domain",p).attr("data-cursor",K!=false).bind("mousedown touchstart",function(I){this.blur();this.launch(I)}).bind("dblclick taphold",
+function(){this.removeAttribute("readonly","readonly");this.focus();this.select()}).keydown(function(I){switch(I.keyCode){case 13:this.adjustValue(0);this.blur()}}).focus(function(){this.getAttribute("readonly")==="readonly"&&this.blur()}).blur(function(){this.setAttribute("readonly","readonly")}).bind("mousewheel",function(I,S,R,N){S=q.getSelectedElems();Q&&q.undoMgr.beginUndoableChange(B,S);Q=false;clearTimeout(window.undoTimeout);window.undoTimeout=setTimeout(function(){ga.stop()},200);var ga=
+this;if(N>0)this.adjustValue(this.dragCfg.step);else N<0&&this.adjustValue(-this.dragCfg.step);I.preventDefault()})})};$.fn.dragInput.updateCursor=function(a){var s=parseFloat(a.value),g=parseFloat(a.getAttribute("data-scale")),b=parseFloat(a.getAttribute("data-domain"));s=s*-1/g+b+"px";a=a.parentNode.lastChild;if(a.className=="draginput_cursor")a.style.top=s};svgedit=svgedit||{};
+(function(){var a=this;if(!svgedit.contextmenu)svgedit.contextmenu={};a.contextMenuExtensions={};methodDraw.ready(function(){for(menuItem in contextMenuExtensions){var s=contextMenuExtensions[menuItem];Object.keys(a.contextMenuExtensions).length==0&&$("#cmenu_canvas").append("<li class='separator'>");var g=s.shortcut||"";$("#cmenu_canvas").append("<li class='disabled'><a href='#"+s.id+"'>"+s.label+"<span class='shortcut'>"+g+"</span></a></li>")}});svgedit.contextmenu.resetCustomMenus=function(){a.contextMenuExtensions=
+{}};svgedit.contextmenu.add=function(s){if(s&&s.id&&s.label&&s.action&&typeof s.action=="function")if(s.id in a.contextMenuExtensions)console.error('Cannot add extension "'+s.id+'", an extension by that name already exists"');else{console.log("Registed contextmenu item: {id:"+s.id+", label:"+s.label+"}");a.contextMenuExtensions[s.id]=s}else console.error("Menu items must be defined and have at least properties: id, label, action, where action must be a function")};svgedit.contextmenu.hasCustomHandler=
+function(s){return a.contextMenuExtensions[s]&&true};svgedit.contextmenu.getCustomHandler=function(s){return a.contextMenuExtensions[s].action}})();(function(a,s){function g(p){return!a(p).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}function b(p,w){var c=p.nodeName.toLowerCase();if("area"===c){c=p.parentNode;var f=c.name;if(!p.href||!f||c.nodeName.toLowerCase()!=="map")return false;c=a("img[usemap=#"+f+"]")[0];return!!c&&g(c)}return(/input|select|textarea|button|object/.test(c)?!p.disabled:"a"==c?p.href||w:w)&&g(p)}a.ui=a.ui||{};a.ui.version||(a.extend(a.ui,{version:"1.8.17",
+keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,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,WINDOWS:91}}),a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(p,w){return typeof p=="number"?this.each(function(){var c=
+this;setTimeout(function(){a(c).focus();w&&w.call(c)},p)}):this._focus.apply(this,arguments)},scrollParent:function(){var p;a.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?p=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(a.curCSS(this,"position",1))&&/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0):p=this.parents().filter(function(){return/(auto|scroll)/.test(a.curCSS(this,
+"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!p.length?a(document):p},zIndex:function(p){if(p!==s)return this.css("zIndex",p);if(this.length){p=a(this[0]);for(var w;p.length&&p[0]!==document;){w=p.css("position");if(w==="absolute"||w==="relative"||w==="fixed"){w=parseInt(p.css("zIndex"),10);if(!isNaN(w)&&w!==0)return w}p=p.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":
+"mousedown")+".ui-disableSelection",function(p){p.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),a.each(["Width","Height"],function(p,w){function c(v,B,q,L){a.each(f,function(){B-=parseFloat(a.curCSS(v,"padding"+this,true))||0;q&&(B-=parseFloat(a.curCSS(v,"border"+this+"Width",true))||0);L&&(B-=parseFloat(a.curCSS(v,"margin"+this,true))||0)});return B}var f=w==="Width"?["Left","Right"]:["Top","Bottom"],d=w.toLowerCase(),n={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,
+outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};a.fn["inner"+w]=function(v){if(v===s)return n["inner"+w].call(this);return this.each(function(){a(this).css(d,c(this,v)+"px")})};a.fn["outer"+w]=function(v,B){if(typeof v!="number")return n["outer"+w].call(this,v);return this.each(function(){a(this).css(d,c(this,v,true,B)+"px")})}}),a.extend(a.expr[":"],{data:function(p,w,c){return!!a.data(p,c[3])},focusable:function(p){return b(p,!isNaN(a.attr(p,"tabindex")))},tabbable:function(p){var w=a.attr(p,
+"tabindex"),c=isNaN(w);return(c||w>=0)&&b(p,!c)}}),a(function(){var p=document.body,w=p.appendChild(w=document.createElement("div"));a.extend(w.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=w.offsetHeight===100;a.support.selectstart="onselectstart"in w;p.removeChild(w).style.display="none"}),a.extend(a.ui,{plugin:{add:function(p,w,c){p=a.ui[p].prototype;for(var f in c){p.plugins[f]=p.plugins[f]||[];p.plugins[f].push([w,c[f]])}},call:function(p,w,c){if((w=p.plugins[w])&&
+p.element[0].parentNode)for(var f=0;f<w.length;f++)p.options[w[f][0]]&&w[f][1].apply(p.element,c)}},contains:function(p,w){return document.compareDocumentPosition?p.compareDocumentPosition(w)&16:p!==w&&p.contains(w)},hasScroll:function(p,w){if(a(p).css("overflow")==="hidden")return false;var c=w&&w==="left"?"scrollLeft":"scrollTop",f=false;if(p[c]>0)return true;p[c]=1;f=p[c]>0;p[c]=0;return f},isOverAxis:function(p,w,c){return p>w&&p<w+c},isOver:function(p,w,c,f,d,n){return a.ui.isOverAxis(p,c,d)&&
+a.ui.isOverAxis(w,f,n)}}))})(jQuery);
+(function(a,s){if(a.cleanData){var g=a.cleanData;a.cleanData=function(p){for(var w=0,c;(c=p[w])!=null;w++)try{a(c).triggerHandler("remove")}catch(f){}g(p)}}else{var b=a.fn.remove;a.fn.remove=function(p,w){return this.each(function(){w||(!p||a.filter(p,[this]).length)&&a("*",this).add([this]).each(function(){try{a(this).triggerHandler("remove")}catch(c){}});return b.call(a(this),p,w)})}}a.widget=function(p,w,c){var f=p.split(".")[0],d;p=p.split(".")[1];d=f+"-"+p;c||(c=w,w=a.Widget);a.expr[":"][d]=
+function(n){return!!a.data(n,p)};a[f]=a[f]||{};a[f][p]=function(n,v){arguments.length&&this._createWidget(n,v)};w=new w;w.options=a.extend(true,{},w.options);a[f][p].prototype=a.extend(true,w,{namespace:f,widgetName:p,widgetEventPrefix:a[f][p].prototype.widgetEventPrefix||p,widgetBaseClass:d},c);a.widget.bridge(p,a[f][p])};a.widget.bridge=function(p,w){a.fn[p]=function(c){var f=typeof c=="string",d=Array.prototype.slice.call(arguments,1),n=this;c=!f&&d.length?a.extend.apply(null,[true,c].concat(d)):
+c;if(f&&c.charAt(0)==="_")return n;f?this.each(function(){var v=a.data(this,p),B=v&&a.isFunction(v[c])?v[c].apply(v,d):v;if(B!==v&&B!==s){n=B;return false}}):this.each(function(){var v=a.data(this,p);v?v.option(c||{})._init():a.data(this,p,new w(c,this))});return n}};a.Widget=function(p,w){arguments.length&&this._createWidget(p,w)};a.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(p,w){a.data(w,this.widgetName,this);this.element=a(w);this.options=
+a.extend(true,{},this.options,this._getCreateOptions(),p);var c=this;this.element.bind("remove."+this.widgetName,function(){c.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return a.metadata&&a.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+
+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(p,w){var c=p;if(arguments.length===0)return a.extend({},this.options);if(typeof p=="string"){if(w===s)return this.options[p];c={};c[p]=w}this._setOptions(c);return this},_setOptions:function(p){var w=this;a.each(p,function(c,f){w._setOption(c,f)});return this},_setOption:function(p,w){this.options[p]=w;p==="disabled"&&this.widget()[w?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",
+w);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(p,w,c){var f,d=this.options[p];c=c||{};w=a.Event(w);w.type=(p===this.widgetEventPrefix?p:this.widgetEventPrefix+p).toLowerCase();w.target=this.element[0];if(p=w.originalEvent)for(f in p)f in w||(w[f]=p[f]);this.element.trigger(w,c);return!(a.isFunction(d)&&d.call(this.element[0],w,c)===false||w.isDefaultPrevented())}}})(jQuery);
+(function(a){var s=false;a(document).mouseup(function(){s=false});a.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var g=this;this.element.bind("mousedown."+this.widgetName,function(b){return g._mouseDown(b)}).bind("click."+this.widgetName,function(b){if(true===a.data(b.target,g.widgetName+".preventClickEvent")){a.removeData(b.target,g.widgetName+".preventClickEvent");b.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+
+this.widgetName)},_mouseDown:function(g){if(!s){this._mouseStarted&&this._mouseUp(g);this._mouseDownEvent=g;var b=this,p=g.which==1,w=typeof this.options.cancel=="string"&&g.target.nodeName?a(g.target).closest(this.options.cancel).length:false;if(!p||w||!this._mouseCapture(g))return true;(this.mouseDelayMet=!this.options.delay)||(this._mouseDelayTimer=setTimeout(function(){b.mouseDelayMet=true},this.options.delay));if(this._mouseDistanceMet(g)&&this._mouseDelayMet(g)){this._mouseStarted=this._mouseStart(g)!==
+false;if(!this._mouseStarted){g.preventDefault();return true}}true===a.data(g.target,this.widgetName+".preventClickEvent")&&a.removeData(g.target,this.widgetName+".preventClickEvent");this._mouseMoveDelegate=function(c){return b._mouseMove(c)};this._mouseUpDelegate=function(c){return b._mouseUp(c)};a(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);g.preventDefault();return s=true}},_mouseMove:function(g){if(a.browser.msie&&
+!(document.documentMode>=9)&&!g.button)return this._mouseUp(g);if(this._mouseStarted){this._mouseDrag(g);return g.preventDefault()}this._mouseDistanceMet(g)&&this._mouseDelayMet(g)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,g)!==false,this._mouseStarted?this._mouseDrag(g):this._mouseUp(g));return!this._mouseStarted},_mouseUp:function(g){a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);this._mouseStarted&&
+(this._mouseStarted=false,g.target==this._mouseDownEvent.target&&a.data(g.target,this.widgetName+".preventClickEvent",true),this._mouseStop(g));return false},_mouseDistanceMet:function(g){return Math.max(Math.abs(this._mouseDownEvent.pageX-g.pageX),Math.abs(this._mouseDownEvent.pageY-g.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery);
+(function(a){a.widget("ui.draggable",a.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){this.options.helper=="original"&&
+!/^(?:r|a|f)/.test(this.element.css("position"))&&(this.element[0].style.position="relative");this.options.addClasses&&this.element.addClass("ui-draggable");this.options.disabled&&this.element.addClass("ui-draggable-disabled");this._mouseInit()},destroy:function(){if(this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this}},_mouseCapture:function(s){var g=this.options;
+if(this.helper||g.disabled||a(s.target).is(".ui-resizable-handle"))return false;this.handle=this._getHandle(s);if(!this.handle)return false;g.iframeFix&&a(g.iframeFix===true?"iframe":g.iframeFix).each(function(){a('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(a(this).offset()).appendTo("body")});return true},_mouseStart:function(s){var g=this.options;this.helper=
+this._createHelper(s);this._cacheHelperProportions();a.ui.ddmanager&&(a.ui.ddmanager.current=this);this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};a.extend(this.offset,{click:{left:s.pageX-this.offset.left,top:s.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});
+this.originalPosition=this.position=this._generatePosition(s);this.originalPageX=s.pageX;this.originalPageY=s.pageY;g.cursorAt&&this._adjustOffsetFromHelper(g.cursorAt);g.containment&&this._setContainment();if(this._trigger("start",s)===false){this._clear();return false}this._cacheHelperProportions();a.ui.ddmanager&&!g.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,s);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(s,true);a.ui.ddmanager&&a.ui.ddmanager.dragStart(this,s);return true},
+_mouseDrag:function(s,g){this.position=this._generatePosition(s);this.positionAbs=this._convertPositionTo("absolute");if(!g){var b=this._uiHash();if(this._trigger("drag",s,b)===false){this._mouseUp({});return false}this.position=b.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";a.ui.ddmanager&&a.ui.ddmanager.drag(this,s);return false},_mouseStop:function(s){var g=
+false;a.ui.ddmanager&&!this.options.dropBehaviour&&(g=a.ui.ddmanager.drop(this,s));this.dropped&&(g=this.dropped,this.dropped=false);if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper=="original")return false;if(this.options.revert=="invalid"&&!g||this.options.revert=="valid"&&g||this.options.revert===true||a.isFunction(this.options.revert)&&this.options.revert.call(this.element,g)){var b=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),
+function(){b._trigger("stop",s)!==false&&b._clear()})}else this._trigger("stop",s)!==false&&this._clear();return false},_mouseUp:function(s){this.options.iframeFix===true&&a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)});a.ui.ddmanager&&a.ui.ddmanager.dragStop(this,s);return a.ui.mouse.prototype._mouseUp.call(this,s)},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(s){var g=!this.options.handle||
+!a(this.options.handle,this.element).length?true:false;a(this.options.handle,this.element).find("*").andSelf().each(function(){this==s.target&&(g=true)});return g},_createHelper:function(s){var g=this.options;s=a.isFunction(g.helper)?a(g.helper.apply(this.element[0],[s])):g.helper=="clone"?this.element.clone().removeAttr("id"):this.element;s.parents("body").length||s.appendTo(g.appendTo=="parent"?this.element[0].parentNode:g.appendTo);s[0]!=this.element[0]&&!/(fixed|absolute)/.test(s.css("position"))&&
+s.css("position","absolute");return s},_adjustOffsetFromHelper:function(s){typeof s=="string"&&(s=s.split(" "));a.isArray(s)&&(s={left:+s[0],top:+s[1]||0});"left"in s&&(this.offset.click.left=s.left+this.margins.left);"right"in s&&(this.offset.click.left=this.helperProportions.width-s.right+this.margins.left);"top"in s&&(this.offset.click.top=s.top+this.margins.top);"bottom"in s&&(this.offset.click.top=this.helperProportions.height-s.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=
+this.helper.offsetParent();var s=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])&&(s.left+=this.scrollParent.scrollLeft(),s.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)s={top:0,left:0};return{top:s.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:s.left+(parseInt(this.offsetParent.css("borderLeftWidth"),
+10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var s=this.element.position();return{top:s.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:s.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),
+10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var s=this.options;s.containment=="parent"&&(s.containment=this.helper[0].parentNode);if(s.containment=="document"||s.containment=="window")this.containment=[s.containment=="document"?0:a(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,s.containment=="document"?0:a(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,
+(s.containment=="document"?0:a(window).scrollLeft())+a(s.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(s.containment=="document"?0:a(window).scrollTop())+(a(s.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(s.containment)&&s.containment.constructor!=Array){s=a(s.containment);var g=s[0];if(g){s.offset();var b=a(g).css("overflow")!=
+"hidden";this.containment=[(parseInt(a(g).css("borderLeftWidth"),10)||0)+(parseInt(a(g).css("paddingLeft"),10)||0),(parseInt(a(g).css("borderTopWidth"),10)||0)+(parseInt(a(g).css("paddingTop"),10)||0),(b?Math.max(g.scrollWidth,g.offsetWidth):g.offsetWidth)-(parseInt(a(g).css("borderLeftWidth"),10)||0)-(parseInt(a(g).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(b?Math.max(g.scrollHeight,g.offsetHeight):g.offsetHeight)-(parseInt(a(g).css("borderTopWidth"),
+10)||0)-(parseInt(a(g).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom];this.relative_container=s}}else s.containment.constructor==Array&&(this.containment=s.containment)},_convertPositionTo:function(s,g){g||(g=this.position);var b=s=="absolute"?1:-1,p=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,w=/(html|body)/i.test(p[0].tagName);return{top:g.top+
+this.offset.relative.top*b+this.offset.parent.top*b-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():w?0:p.scrollTop())*b),left:g.left+this.offset.relative.left*b+this.offset.parent.left*b-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():w?0:p.scrollLeft())*b)}},_generatePosition:function(s){var g=this.options,b=this.cssPosition=="absolute"&&
+(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,p=/(html|body)/i.test(b[0].tagName),w=s.pageX,c=s.pageY;if(this.originalPosition){var f;if(this.containment){if(this.relative_container){f=this.relative_container.offset();f=[this.containment[0]+f.left,this.containment[1]+f.top,this.containment[2]+f.left,this.containment[3]+f.top]}else f=this.containment;s.pageX-this.offset.click.left<f[0]&&(w=f[0]+this.offset.click.left);
+s.pageY-this.offset.click.top<f[1]&&(c=f[1]+this.offset.click.top);s.pageX-this.offset.click.left>f[2]&&(w=f[2]+this.offset.click.left);s.pageY-this.offset.click.top>f[3]&&(c=f[3]+this.offset.click.top)}if(g.grid){c=g.grid[1]?this.originalPageY+Math.round((c-this.originalPageY)/g.grid[1])*g.grid[1]:this.originalPageY;c=f?c-this.offset.click.top<f[1]||c-this.offset.click.top>f[3]?c-this.offset.click.top<f[1]?c+g.grid[1]:c-g.grid[1]:c:c;w=g.grid[0]?this.originalPageX+Math.round((w-this.originalPageX)/
+g.grid[0])*g.grid[0]:this.originalPageX;w=f?w-this.offset.click.left<f[0]||w-this.offset.click.left>f[2]?w-this.offset.click.left<f[0]?w+g.grid[0]:w-g.grid[0]:w:w}}return{top:c-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():p?0:b.scrollTop()),left:w-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&a.browser.version<
+526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():p?0:b.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging");this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove();this.helper=null;this.cancelHelperRemoval=false},_trigger:function(s,g,b){b=b||this._uiHash();a.ui.plugin.call(this,s,[g,b]);s=="drag"&&(this.positionAbs=this._convertPositionTo("absolute"));return a.Widget.prototype._trigger.call(this,s,g,
+b)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}});a.extend(a.ui.draggable,{version:"1.8.17"});a.ui.plugin.add("draggable","connectToSortable",{start:function(s,g){var b=a(this).data("draggable"),p=b.options,w=a.extend({},g,{item:b.element});b.sortables=[];a(p.connectToSortable).each(function(){var c=a.data(this,"sortable");c&&!c.options.disabled&&(b.sortables.push({instance:c,shouldRevert:c.options.revert}),
+c.refreshPositions(),c._trigger("activate",s,w))})},stop:function(s,g){var b=a(this).data("draggable"),p=a.extend({},g,{item:b.element});a.each(b.sortables,function(){this.instance.isOver?(this.instance.isOver=0,b.cancelHelperRemoval=true,this.instance.cancelHelperRemoval=false,this.shouldRevert&&(this.instance.options.revert=true),this.instance._mouseStop(s),this.instance.options.helper=this.instance.options._helper,b.options.helper=="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})):
+(this.instance.cancelHelperRemoval=false,this.instance._trigger("deactivate",s,p))})},drag:function(s,g){var b=a(this).data("draggable"),p=this;a.each(b.sortables,function(){this.instance.positionAbs=b.positionAbs;this.instance.helperProportions=b.helperProportions;this.instance.offset.click=b.offset.click;this.instance._intersectsWith(this.instance.containerCache)?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=a(p).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item",
+true),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return g.helper[0]},s.target=this.instance.currentItem[0],this.instance._mouseCapture(s,true),this.instance._mouseStart(s,true,true),this.instance.offset.click.top=b.offset.click.top,this.instance.offset.click.left=b.offset.click.left,this.instance.offset.parent.left-=b.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=b.offset.parent.top-this.instance.offset.parent.top,
+b._trigger("toSortable",s),b.dropped=this.instance.element,b.currentItem=b.element,this.instance.fromOutside=b),this.instance.currentItem&&this.instance._mouseDrag(s)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=true,this.instance.options.revert=false,this.instance._trigger("out",s,this.instance._uiHash(this.instance)),this.instance._mouseStop(s,true),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&
+this.instance.placeholder.remove(),b._trigger("fromSortable",s),b.dropped=false)})}});a.ui.plugin.add("draggable","cursor",{start:function(){var s=a("body"),g=a(this).data("draggable").options;s.css("cursor")&&(g._cursor=s.css("cursor"));s.css("cursor",g.cursor)},stop:function(){var s=a(this).data("draggable").options;s._cursor&&a("body").css("cursor",s._cursor)}});a.ui.plugin.add("draggable","opacity",{start:function(s,g){var b=a(g.helper),p=a(this).data("draggable").options;b.css("opacity")&&(p._opacity=
+b.css("opacity"));b.css("opacity",p.opacity)},stop:function(s,g){var b=a(this).data("draggable").options;b._opacity&&a(g.helper).css("opacity",b._opacity)}});a.ui.plugin.add("draggable","scroll",{start:function(){var s=a(this).data("draggable");s.scrollParent[0]!=document&&s.scrollParent[0].tagName!="HTML"&&(s.overflowOffset=s.scrollParent.offset())},drag:function(s){var g=a(this).data("draggable"),b=g.options,p=false;if(g.scrollParent[0]!=document&&g.scrollParent[0].tagName!="HTML"){if(!b.axis||
+b.axis!="x")g.overflowOffset.top+g.scrollParent[0].offsetHeight-s.pageY<b.scrollSensitivity?g.scrollParent[0].scrollTop=p=g.scrollParent[0].scrollTop+b.scrollSpeed:s.pageY-g.overflowOffset.top<b.scrollSensitivity&&(g.scrollParent[0].scrollTop=p=g.scrollParent[0].scrollTop-b.scrollSpeed);if(!b.axis||b.axis!="y")g.overflowOffset.left+g.scrollParent[0].offsetWidth-s.pageX<b.scrollSensitivity?g.scrollParent[0].scrollLeft=p=g.scrollParent[0].scrollLeft+b.scrollSpeed:s.pageX-g.overflowOffset.left<b.scrollSensitivity&&
+(g.scrollParent[0].scrollLeft=p=g.scrollParent[0].scrollLeft-b.scrollSpeed)}else{if(!b.axis||b.axis!="x")s.pageY-a(document).scrollTop()<b.scrollSensitivity?p=a(document).scrollTop(a(document).scrollTop()-b.scrollSpeed):a(window).height()-(s.pageY-a(document).scrollTop())<b.scrollSensitivity&&(p=a(document).scrollTop(a(document).scrollTop()+b.scrollSpeed));if(!b.axis||b.axis!="y")s.pageX-a(document).scrollLeft()<b.scrollSensitivity?p=a(document).scrollLeft(a(document).scrollLeft()-b.scrollSpeed):
+a(window).width()-(s.pageX-a(document).scrollLeft())<b.scrollSensitivity&&(p=a(document).scrollLeft(a(document).scrollLeft()+b.scrollSpeed))}p!==false&&a.ui.ddmanager&&!b.dropBehaviour&&a.ui.ddmanager.prepareOffsets(g,s)}});a.ui.plugin.add("draggable","snap",{start:function(){var s=a(this).data("draggable"),g=s.options;s.snapElements=[];a(g.snap.constructor!=String?g.snap.items||":data(draggable)":g.snap).each(function(){var b=a(this),p=b.offset();this!=s.element[0]&&s.snapElements.push({item:this,
+width:b.outerWidth(),height:b.outerHeight(),top:p.top,left:p.left})})},drag:function(s,g){for(var b=a(this).data("draggable"),p=b.options,w=p.snapTolerance,c=g.offset.left,f=c+b.helperProportions.width,d=g.offset.top,n=d+b.helperProportions.height,v=b.snapElements.length-1;v>=0;v--){var B=b.snapElements[v].left,q=B+b.snapElements[v].width,L=b.snapElements[v].top,Q=L+b.snapElements[v].height;if(B-w<c&&c<q+w&&L-w<d&&d<Q+w||B-w<c&&c<q+w&&L-w<n&&n<Q+w||B-w<f&&f<q+w&&L-w<d&&d<Q+w||B-w<f&&f<q+w&&L-w<n&&
+n<Q+w){if(p.snapMode!="inner"){var K=Math.abs(L-n)<=w,I=Math.abs(Q-d)<=w,S=Math.abs(B-f)<=w,R=Math.abs(q-c)<=w;K&&(g.position.top=b._convertPositionTo("relative",{top:L-b.helperProportions.height,left:0}).top-b.margins.top);I&&(g.position.top=b._convertPositionTo("relative",{top:Q,left:0}).top-b.margins.top);S&&(g.position.left=b._convertPositionTo("relative",{top:0,left:B-b.helperProportions.width}).left-b.margins.left);R&&(g.position.left=b._convertPositionTo("relative",{top:0,left:q}).left-b.margins.left)}var N=
+K||I||S||R;if(p.snapMode!="outer"){K=Math.abs(L-d)<=w;I=Math.abs(Q-n)<=w;S=Math.abs(B-c)<=w;R=Math.abs(q-f)<=w;K&&(g.position.top=b._convertPositionTo("relative",{top:L,left:0}).top-b.margins.top);I&&(g.position.top=b._convertPositionTo("relative",{top:Q-b.helperProportions.height,left:0}).top-b.margins.top);S&&(g.position.left=b._convertPositionTo("relative",{top:0,left:B}).left-b.margins.left);R&&(g.position.left=b._convertPositionTo("relative",{top:0,left:q-b.helperProportions.width}).left-b.margins.left)}!b.snapElements[v].snapping&&
+(K||I||S||R||N)&&b.options.snap.snap&&b.options.snap.snap.call(b.element,s,a.extend(b._uiHash(),{snapItem:b.snapElements[v].item}));b.snapElements[v].snapping=K||I||S||R||N}else{b.snapElements[v].snapping&&b.options.snap.release&&b.options.snap.release.call(b.element,s,a.extend(b._uiHash(),{snapItem:b.snapElements[v].item}));b.snapElements[v].snapping=false}}}});a.ui.plugin.add("draggable","stack",{start:function(){var s=a(this).data("draggable").options;s=a.makeArray(a(s.stack)).sort(function(b,
+p){return(parseInt(a(b).css("zIndex"),10)||0)-(parseInt(a(p).css("zIndex"),10)||0)});if(s.length){var g=parseInt(s[0].style.zIndex)||0;a(s).each(function(b){this.style.zIndex=g+b});this[0].style.zIndex=g+s.length}}});a.ui.plugin.add("draggable","zIndex",{start:function(s,g){var b=a(g.helper),p=a(this).data("draggable").options;b.css("zIndex")&&(p._zIndex=b.css("zIndex"));b.css("zIndex",p.zIndex)},stop:function(s,g){var b=a(this).data("draggable").options;b._zIndex&&a(g.helper).css("zIndex",b._zIndex)}})})(jQuery);
+(function(a){a.widget("ui.slider",a.ui.mouse,{widgetEventPrefix:"slide",options:{animate:false,distance:0,max:100,min:0,orientation:"horizontal",range:false,step:1,value:0,values:null},_create:function(){var s=this,g=this.options,b=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),p=g.values&&g.values.length||1,w=[];this._mouseSliding=this._keySliding=false;this._animateOff=true;this._handleIndex=null;this._detectOrientation();this._mouseInit();this.element.addClass("ui-slider ui-slider-"+
+this.orientation+" ui-widget ui-widget-content ui-corner-all"+(g.disabled?" ui-slider-disabled ui-disabled":""));this.range=a([]);g.range&&(g.range===true&&(g.values||(g.values=[this._valueMin(),this._valueMin()]),g.values.length&&g.values.length!==2&&(g.values=[g.values[0],g.values[0]])),this.range=a("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(g.range==="min"||g.range==="max"?" ui-slider-range-"+g.range:"")));for(var c=b.length;c<p;c+=1)w.push("<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>");
+this.handles=b.add(a(w.join("")).appendTo(s.element));this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(f){f.preventDefault()}).hover(function(){g.disabled||a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")}).focus(function(){g.disabled?a(this).blur():(a(".ui-slider .ui-state-focus").removeClass("ui-state-focus"),a(this).addClass("ui-state-focus"))}).blur(function(){a(this).removeClass("ui-state-focus")});this.handles.each(function(f){a(this).data("index.ui-slider-handle",
+f)});this.handles.keydown(function(f){var d=true,n=a(this).data("index.ui-slider-handle"),v,B,q;if(!s.options.disabled){switch(f.keyCode){case a.ui.keyCode.HOME:case a.ui.keyCode.END:case a.ui.keyCode.PAGE_UP:case a.ui.keyCode.PAGE_DOWN:case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:d=false;if(!s._keySliding){s._keySliding=true;a(this).addClass("ui-state-active");v=s._start(f,n);if(v===false)return}}v=s.options.step;s.options.values&&s.options.values.length?
+B=q=s.values(n):B=q=s.value();switch(f.keyCode){case a.ui.keyCode.HOME:q=s._valueMin();break;case a.ui.keyCode.END:q=s._valueMax();break;case a.ui.keyCode.PAGE_UP:q=s._trimAlignValue(B+(s._valueMax()-s._valueMin())/5);break;case a.ui.keyCode.PAGE_DOWN:q=s._trimAlignValue(B-(s._valueMax()-s._valueMin())/5);break;case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:if(B===s._valueMax())return;q=s._trimAlignValue(B+v);break;case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:if(B===s._valueMin())return;q=s._trimAlignValue(B-
+v)}s._slide(f,n,q);return d}}).keyup(function(f){var d=a(this).data("index.ui-slider-handle");s._keySliding&&(s._keySliding=false,s._stop(f,d),s._change(f,d),a(this).removeClass("ui-state-active"))});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");this._mouseDestroy();
+return this},_mouseCapture:function(s){var g=this.options,b,p,w,c,f;if(g.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();b=this._normValueFromMouse({x:s.pageX,y:s.pageY});p=this._valueMax()-this._valueMin()+1;c=this;this.handles.each(function(d){var n=Math.abs(b-c.values(d));p>n&&(p=n,w=a(this),f=d)});g.range===true&&this.values(1)===g.min&&(f+=1,w=a(this.handles[f]));if(this._start(s,f)===false)return false;
+this._mouseSliding=true;c._handleIndex=f;w.addClass("ui-state-active").focus();g=w.offset();this._clickOffset=!a(s.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:s.pageX-g.left-w.width()/2,top:s.pageY-g.top-w.height()/2-(parseInt(w.css("borderTopWidth"),10)||0)-(parseInt(w.css("borderBottomWidth"),10)||0)+(parseInt(w.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(s,f,b);return this._animateOff=true},_mouseStart:function(){return true},_mouseDrag:function(s){var g=
+this._normValueFromMouse({x:s.pageX,y:s.pageY});this._slide(s,this._handleIndex,g);return false},_mouseStop:function(s){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(s,this._handleIndex);this._change(s,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(s){var g,b;this.orientation==="horizontal"?
+(g=this.elementSize.width,b=s.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(g=this.elementSize.height,b=s.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0));s=b/g;s>1&&(s=1);s<0&&(s=0);this.orientation==="vertical"&&(s=1-s);g=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+s*g)},_start:function(s,g){var b={handle:this.handles[g],value:this.value()};this.options.values&&this.options.values.length&&(b.value=this.values(g),
+b.values=this.values());return this._trigger("start",s,b)},_slide:function(s,g,b){var p,w,c;this.options.values&&this.options.values.length?(p=this.values(g?0:1),this.options.values.length===2&&this.options.range===true&&(g===0&&b>p||g===1&&b<p)&&(b=p),b!==this.values(g)&&(w=this.values(),w[g]=b,c=this._trigger("slide",s,{handle:this.handles[g],value:b,values:w}),this.values(g?0:1),c!==false&&this.values(g,b,true))):b!==this.value()&&(c=this._trigger("slide",s,{handle:this.handles[g],value:b}),c!==
+false&&this.value(b))},_stop:function(s,g){var b={handle:this.handles[g],value:this.value()};this.options.values&&this.options.values.length&&(b.value=this.values(g),b.values=this.values());this._trigger("stop",s,b)},_change:function(s,g){if(!this._keySliding&&!this._mouseSliding){var b={handle:this.handles[g],value:this.value()};this.options.values&&this.options.values.length&&(b.value=this.values(g),b.values=this.values());this._trigger("change",s,b)}},value:function(s){if(arguments.length){this.options.value=
+this._trimAlignValue(s);this._refreshValue();this._change(null,0)}else return this._value()},values:function(s,g){var b,p,w;if(arguments.length>1){this.options.values[s]=this._trimAlignValue(g);this._refreshValue();this._change(null,s)}else{if(!arguments.length)return this._values();if(!a.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(s):this.value();b=this.options.values;p=arguments[0];for(w=0;w<b.length;w+=1){b[w]=this._trimAlignValue(p[w]);this._change(null,
+w)}this._refreshValue()}},_setOption:function(s,g){var b,p=0;a.isArray(this.options.values)&&(p=this.options.values.length);a.Widget.prototype._setOption.apply(this,arguments);switch(s){case "disabled":g?(this.handles.filter(".ui-state-focus").blur(),this.handles.removeClass("ui-state-hover"),this.handles.propAttr("disabled",true),this.element.addClass("ui-disabled")):(this.handles.propAttr("disabled",false),this.element.removeClass("ui-disabled"));break;case "orientation":this._detectOrientation();
+this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation);this._refreshValue();break;case "value":this._animateOff=true;this._refreshValue();this._change(null,0);this._animateOff=false;break;case "values":this._animateOff=true;this._refreshValue();for(b=0;b<p;b+=1)this._change(null,b);this._animateOff=false}},_value:function(){var s=this.options.value;return s=this._trimAlignValue(s)},_values:function(s){var g,b;if(arguments.length){g=this.options.values[s];
+return g=this._trimAlignValue(g)}g=this.options.values.slice();for(b=0;b<g.length;b+=1)g[b]=this._trimAlignValue(g[b]);return g},_trimAlignValue:function(s){if(s<=this._valueMin())return this._valueMin();if(s>=this._valueMax())return this._valueMax();var g=this.options.step>0?this.options.step:1,b=(s-this._valueMin())%g;s=s-b;Math.abs(b)*2>=g&&(s+=b>0?g:-g);return parseFloat(s.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var s=
+this.options.range,g=this.options,b=this,p=this._animateOff?false:g.animate,w,c={},f,d,n,v;this.options.values&&this.options.values.length?this.handles.each(function(B){w=(b.values(B)-b._valueMin())/(b._valueMax()-b._valueMin())*100;c[b.orientation==="horizontal"?"left":"bottom"]=w+"%";a(this).stop(1,1)[p?"animate":"css"](c,g.animate);b.options.range===true&&(b.orientation==="horizontal"?(B===0&&b.range.stop(1,1)[p?"animate":"css"]({left:w+"%"},g.animate),B===1&&b.range[p?"animate":"css"]({width:w-
+f+"%"},{queue:false,duration:g.animate})):(B===0&&b.range.stop(1,1)[p?"animate":"css"]({bottom:w+"%"},g.animate),B===1&&b.range[p?"animate":"css"]({height:w-f+"%"},{queue:false,duration:g.animate})));f=w}):(d=this.value(),n=this._valueMin(),v=this._valueMax(),w=v!==n?(d-n)/(v-n)*100:0,c[b.orientation==="horizontal"?"left":"bottom"]=w+"%",this.handle.stop(1,1)[p?"animate":"css"](c,g.animate),s==="min"&&this.orientation==="horizontal"&&this.range.stop(1,1)[p?"animate":"css"]({width:w+"%"},g.animate),
+s==="max"&&this.orientation==="horizontal"&&this.range[p?"animate":"css"]({width:100-w+"%"},{queue:false,duration:g.animate}),s==="min"&&this.orientation==="vertical"&&this.range.stop(1,1)[p?"animate":"css"]({height:w+"%"},g.animate),s==="max"&&this.orientation==="vertical"&&this.range[p?"animate":"css"]({height:100-w+"%"},{queue:false,duration:g.animate}))}});a.extend(a.ui.slider,{version:"1.8.17"})})(jQuery);(function(a){Math.precision=function(c,f){if(f===undefined)f=0;return Math.round(c*Math.pow(10,f))/Math.pow(10,f)};var s=function(c,f){var d=this,n=c.find("img:first"),v=0,B=100,q=100,L=0,Q=100,K=100,I=0,S=0,R,N,ga=[],oa=function(U){for(var Z=0;Z<ga.length;Z++)ga[Z].call(d,d,U)},Y=function(U){var Z=c.offset();R={l:Z.left|0,t:Z.top|0};clearTimeout(N);N=setTimeout(function(){Ba.call(d,U)},0);a(document).bind("mousemove",V).bind("mouseup",ea);U.preventDefault()},V=function(U){clearTimeout(N);N=setTimeout(function(){Ba.call(d,
+U)},0);U.stopPropagation();U.preventDefault();return false},ea=function(U){a(document).unbind("mouseup",ea).unbind("mousemove",V);U.stopPropagation();U.preventDefault();return false},Ba=function(U){var Z=U.pageX-R.l;U=U.pageY-R.t;var na=c.w,pa=c.h;if(Z<0)Z=0;else if(Z>na)Z=na;if(U<0)U=0;else if(U>pa)U=pa;ja.call(d,"xy",{x:Z/na*q+v,y:U/pa*K+L})},ja=function(U,Z,na){if(Z===undefined){if(U===undefined||U==null)U="xy";switch(U.toLowerCase()){case "x":return I;case "y":return S;default:return{x:I,y:S}}}if(!(na!=
+null&&na==d)){var pa=false,ma,la;if(U==null)U="xy";switch(U.toLowerCase()){case "x":ma=Z&&(Z.x&&Z.x|0||Z|0)||0;break;case "y":la=Z&&(Z.y&&Z.y|0||Z|0)||0;break;default:ma=Z&&Z.x&&Z.x|0||0;la=Z&&Z.y&&Z.y|0||0}if(ma!=null){if(ma<v)ma=v;else if(ma>B)ma=B;if(I!=ma){I=ma;pa=true}}if(la!=null){if(la<L)la=L;else if(la>Q)la=Q;if(S!=la){S=la;pa=true}}pa&&oa.call(d,na||d)}},ca=function(U){a.isFunction(U)&&ga.push(U)};a.extend(true,d,{val:ja,range:function(U,Z){if(Z===undefined){if(U===undefined||U==null)U="all";
+switch(U.toLowerCase()){case "minx":return v;case "maxx":return B;case "rangex":return{minX:v,maxX:B,rangeX:q};case "miny":return L;case "maxy":return Q;case "rangey":return{minY:L,maxY:Q,rangeY:K};default:return{minX:v,maxX:B,rangeX:q,minY:L,maxY:Q,rangeY:K}}}var na,pa,ma,la;if(U==null)U="all";switch(U.toLowerCase()){case "minx":na=Z&&(Z.minX&&Z.minX|0||Z|0)||0;break;case "maxx":pa=Z&&(Z.maxX&&Z.maxX|0||Z|0)||0;break;case "rangex":na=Z&&Z.minX&&Z.minX|0||0;pa=Z&&Z.maxX&&Z.maxX|0||0;break;case "miny":ma=
+Z&&(Z.minY&&Z.minY|0||Z|0)||0;break;case "maxy":la=Z&&(Z.maxY&&Z.maxY|0||Z|0)||0;break;case "rangey":ma=Z&&Z.minY&&Z.minY|0||0;la=Z&&Z.maxY&&Z.maxY|0||0;break;default:na=Z&&Z.minX&&Z.minX|0||0;pa=Z&&Z.maxX&&Z.maxX|0||0;ma=Z&&Z.minY&&Z.minY|0||0;la=Z&&Z.maxY&&Z.maxY|0||0}if(na!=null&&v!=na){v=na;q=B-v}if(pa!=null&&B!=pa){B=pa;q=B-v}if(ma!=null&&L!=ma){L=ma;K=Q-L}if(la!=null&&Q!=la){Q=la;K=Q-L}},bind:ca,unbind:function(U){if(a.isFunction(U))for(var Z;(Z=a.inArray(U,ga))!=-1;)ga.splice(Z,1)},destroy:function(){a(document).unbind("mouseup",
+ea).unbind("mousemove",V);c.unbind("mousedown",Y);ga=n=c=null}});n.src=f.arrow&&f.arrow.image;n.w=f.arrow&&f.arrow.width||n.width();n.h=f.arrow&&f.arrow.height||n.height();c.w=f.map&&f.map.width||c.width();c.h=f.map&&f.map.height||c.height();c.bind("mousedown",Y);ca.call(d,function(){var U=0,Z=0,na=c.w,pa=c.h,ma=n.w,la=n.h;setTimeout(function(){if(q>0)U=I==B?na:I/q*na|0;if(K>0)Z=S==Q?pa:S/K*pa|0;if(ma>=na)U=(na>>1)-(ma>>1);else U-=ma>>1;if(la>=pa)Z=(pa>>1)-(la>>1);else Z-=la>>1;n.css({left:U+"px",
+top:Z+"px"})},0)})},g=function(c,f,d,n){var v=this;c=c.find("td.Text input");var B=c.eq(3),q=c.eq(4),L=c.eq(5),Q=c.length>7?c.eq(6):null,K=c.eq(0),I=c.eq(1),S=c.eq(2),R=c.eq(c.length>7?7:6),N=c.length>7?c.eq(8):null,ga=function(ja){if(!(ja.target.value==""&&ja.target!=R.get(0)&&(d!=null&&ja.target!=d.get(0)||d==null))){if(!V(ja))return ja;switch(ja.target){case B.get(0):switch(ja.keyCode){case 38:B.val(ea.call(v,(B.val()<<0)+1,0,255));f.val("r",B.val(),ja.target);return false;case 40:B.val(ea.call(v,
+(B.val()<<0)-1,0,255));f.val("r",B.val(),ja.target);return false}break;case q.get(0):switch(ja.keyCode){case 38:q.val(ea.call(v,(q.val()<<0)+1,0,255));f.val("g",q.val(),ja.target);return false;case 40:q.val(ea.call(v,(q.val()<<0)-1,0,255));f.val("g",q.val(),ja.target);return false}break;case L.get(0):switch(ja.keyCode){case 38:L.val(ea.call(v,(L.val()<<0)+1,0,255));f.val("b",L.val(),ja.target);return false;case 40:L.val(ea.call(v,(L.val()<<0)-1,0,255));f.val("b",L.val(),ja.target);return false}break;
+case Q&&Q.get(0):switch(ja.keyCode){case 38:Q.val(ea.call(v,parseFloat(Q.val())+1,0,100));f.val("a",Math.precision(Q.val()*255/100,n),ja.target);return false;case 40:Q.val(ea.call(v,parseFloat(Q.val())-1,0,100));f.val("a",Math.precision(Q.val()*255/100,n),ja.target);return false}break;case K.get(0):switch(ja.keyCode){case 38:K.val(ea.call(v,(K.val()<<0)+1,0,360));f.val("h",K.val(),ja.target);return false;case 40:K.val(ea.call(v,(K.val()<<0)-1,0,360));f.val("h",K.val(),ja.target);return false}break;
+case I.get(0):switch(ja.keyCode){case 38:I.val(ea.call(v,(I.val()<<0)+1,0,100));f.val("s",I.val(),ja.target);return false;case 40:I.val(ea.call(v,(I.val()<<0)-1,0,100));f.val("s",I.val(),ja.target);return false}break;case S.get(0):switch(ja.keyCode){case 38:S.val(ea.call(v,(S.val()<<0)+1,0,100));f.val("v",S.val(),ja.target);return false;case 40:S.val(ea.call(v,(S.val()<<0)-1,0,100));f.val("v",S.val(),ja.target);return false}}}},oa=function(ja){if(!(ja.target.value==""&&ja.target!=R.get(0)&&(d!=null&&
+ja.target!=d.get(0)||d==null))){if(!V(ja))return ja;switch(ja.target){case B.get(0):B.val(ea.call(v,B.val(),0,255));f.val("r",B.val(),ja.target);break;case q.get(0):q.val(ea.call(v,q.val(),0,255));f.val("g",q.val(),ja.target);break;case L.get(0):L.val(ea.call(v,L.val(),0,255));f.val("b",L.val(),ja.target);break;case Q&&Q.get(0):Q.val(ea.call(v,Q.val(),0,100));f.val("a",Math.precision(Q.val()*255/100,n),ja.target);break;case K.get(0):K.val(ea.call(v,K.val(),0,360));f.val("h",K.val(),ja.target);break;
+case I.get(0):I.val(ea.call(v,I.val(),0,100));f.val("s",I.val(),ja.target);break;case S.get(0):S.val(ea.call(v,S.val(),0,100));f.val("v",S.val(),ja.target);break;case R.get(0):R.val(R.val().replace(/[^a-fA-F0-9]/g,"").toLowerCase().substring(0,6));d&&d.val(R.val());f.val("hex",R.val()!=""?R.val():null,ja.target);break;case d&&d.get(0):d.val(d.val().replace(/[^a-fA-F0-9]/g,"").toLowerCase().substring(0,6));R.val(d.val());f.val("hex",d.val()!=""?d.val():null,ja.target);break;case N&&N.get(0):N.val(N.val().replace(/[^a-fA-F0-9]/g,
+"").toLowerCase().substring(0,2));f.val("a",N.val()!=null?parseInt(N.val(),16):null,ja.target)}}},Y=function(ja){if(f.val()!=null)switch(ja.target){case B.get(0):B.val(f.val("r"));break;case q.get(0):q.val(f.val("g"));break;case L.get(0):L.val(f.val("b"));break;case Q&&Q.get(0):Q.val(Math.precision(f.val("a")*100/255,n));break;case K.get(0):K.val(f.val("h"));break;case I.get(0):I.val(f.val("s"));break;case S.get(0):S.val(f.val("v"));break;case R.get(0):case d&&d.get(0):R.val(f.val("hex"));d&&d.val(f.val("hex"));
+break;case N&&N.get(0):N.val(f.val("ahex").substring(6))}},V=function(ja){switch(ja.keyCode){case 9:case 16:case 29:case 37:case 39:return false;case "c".charCodeAt():case "v".charCodeAt():if(ja.ctrlKey)return false}return true},ea=function(ja,ca,U){if(ja==""||isNaN(ja))return ca;if(ja>U)return U;if(ja<ca)return ca;return ja},Ba=function(ja,ca){var U=ja.val("all");if(ca!=B.get(0))B.val(U!=null?U.r:"");if(ca!=q.get(0))q.val(U!=null?U.g:"");if(ca!=L.get(0))L.val(U!=null?U.b:"");if(Q&&ca!=Q.get(0))Q.val(U!=
+null?Math.precision(U.a*100/255,n):"");if(ca!=K.get(0))K.val(U!=null?U.h:"");if(ca!=I.get(0))I.val(U!=null?U.s:"");if(ca!=S.get(0))S.val(U!=null?U.v:"");if(ca!=R.get(0)&&(d&&ca!=d.get(0)||!d))R.val(U!=null?U.hex:"");if(d&&ca!=d.get(0)&&ca!=R.get(0))d.val(U!=null?U.hex:"");if(N&&ca!=N.get(0))N.val(U!=null?U.ahex.substring(6):"")};a.extend(true,v,{destroy:function(){B.add(q).add(L).add(Q).add(K).add(I).add(S).add(R).add(d).add(N).unbind("keyup",oa).unbind("blur",Y);B.add(q).add(L).add(Q).add(K).add(I).add(S).unbind("keydown",
+ga);f.unbind(Ba);N=R=S=I=K=Q=L=q=B=null}});B.add(q).add(L).add(Q).add(K).add(I).add(S).add(R).add(d).add(N).bind("keyup",oa).bind("blur",Y);B.add(q).add(L).add(Q).add(K).add(I).add(S).bind("keydown",ga);f.bind(Ba)};a.jPicker={List:[],Color:function(c){var f=this,d,n,v,B,q,L,Q,K=[],I=function(R){for(var N=0;N<K.length;N++)K[N].call(f,f,R)},S=function(R,N,ga){if(N===undefined){if(R===undefined||R==null||R=="")R="all";if(d==null)return null;switch(R.toLowerCase()){case "ahex":return w.rgbaToHex({r:d,
+g:n,b:v,a:B});case "hex":return S("ahex").substring(0,6);case "all":return{r:d,g:n,b:v,a:B,h:q,s:L,v:Q,hex:S.call(f,"hex"),ahex:S.call(f,"ahex")};default:N={};for(var oa=0;oa<R.length;oa++)switch(R.charAt(oa)){case "r":if(R.length==1)N=d;else N.r=d;break;case "g":if(R.length==1)N=n;else N.g=n;break;case "b":if(R.length==1)N=v;else N.b=v;break;case "a":if(R.length==1)N=B;else N.a=B;break;case "h":if(R.length==1)N=q;else N.h=q;break;case "s":if(R.length==1)N=L;else N.s=L;break;case "v":if(R.length==
+1)N=Q;else N.v=Q}return N=={}?S.call(f,"all"):N}}if(!(ga!=null&&ga==f)){var Y=false;if(R==null)R="";if(N==null){if(d!=null){d=null;Y=true}if(n!=null){n=null;Y=true}if(v!=null){v=null;Y=true}if(B!=null){B=null;Y=true}if(q!=null){q=null;Y=true}if(L!=null){L=null;Y=true}if(Q!=null){Q=null;Y=true}Y&&I.call(f,ga||f)}else switch(R.toLowerCase()){case "ahex":case "hex":N=w.hexToRgba(N&&(N.ahex||N.hex)||N||"00000000");S.call(f,"rgba",{r:N.r,g:N.g,b:N.b,a:R=="ahex"?N.a:B!=null?B:255},ga);break;default:if(N&&
+(N.ahex!=null||N.hex!=null)){S.call(f,"ahex",N.ahex||N.hex||"00000000",ga);break}var V={},ea=false,Ba=false;if(N.r!==undefined&&!R.indexOf("r")==-1)R+="r";if(N.g!==undefined&&!R.indexOf("g")==-1)R+="g";if(N.b!==undefined&&!R.indexOf("b")==-1)R+="b";if(N.a!==undefined&&!R.indexOf("a")==-1)R+="a";if(N.h!==undefined&&!R.indexOf("h")==-1)R+="h";if(N.s!==undefined&&!R.indexOf("s")==-1)R+="s";if(N.v!==undefined&&!R.indexOf("v")==-1)R+="v";for(oa=0;oa<R.length;oa++)switch(R.charAt(oa)){case "r":if(Ba)continue;
+ea=true;V.r=N&&N.r&&N.r|0||N&&N|0||0;if(V.r<0)V.r=0;else if(V.r>255)V.r=255;if(d!=V.r){d=V.r;Y=true}break;case "g":if(Ba)continue;ea=true;V.g=N&&N.g&&N.g|0||N&&N|0||0;if(V.g<0)V.g=0;else if(V.g>255)V.g=255;if(n!=V.g){n=V.g;Y=true}break;case "b":if(Ba)continue;ea=true;V.b=N&&N.b&&N.b|0||N&&N|0||0;if(V.b<0)V.b=0;else if(V.b>255)V.b=255;if(v!=V.b){v=V.b;Y=true}break;case "a":V.a=N&&N.a!=null?N.a|0:N!=null?N|0:255;if(V.a<0)V.a=0;else if(V.a>255)V.a=255;if(B!=V.a){B=V.a;Y=true}break;case "h":if(ea)continue;
+Ba=true;V.h=N&&N.h&&N.h|0||N&&N|0||0;if(V.h<0)V.h=0;else if(V.h>360)V.h=360;if(q!=V.h){q=V.h;Y=true}break;case "s":if(ea)continue;Ba=true;V.s=N&&N.s!=null?N.s|0:N!=null?N|0:100;if(V.s<0)V.s=0;else if(V.s>100)V.s=100;if(L!=V.s){L=V.s;Y=true}break;case "v":if(ea)continue;Ba=true;V.v=N&&N.v!=null?N.v|0:N!=null?N|0:100;if(V.v<0)V.v=0;else if(V.v>100)V.v=100;if(Q!=V.v){Q=V.v;Y=true}}if(Y){if(ea){d=d||0;n=n||0;v=v||0;N=w.rgbToHsv({r:d,g:n,b:v});q=N.h;L=N.s;Q=N.v}else if(Ba){q=q||0;L=L!=null?L:100;Q=Q!=
+null?Q:100;N=w.hsvToRgb({h:q,s:L,v:Q});d=N.r;n=N.g;v=N.b}B=B!=null?B:255;I.call(f,ga||f)}}}};a.extend(true,f,{val:S,bind:function(R){a.isFunction(R)&&K.push(R)},unbind:function(R){if(a.isFunction(R))for(var N;(N=a.inArray(R,K))!=-1;)K.splice(N,1)},destroy:function(){K=null}});if(c)if(c.ahex!=null)S("ahex",c);else if(c.hex!=null)S((c.a!=null?"a":"")+"hex",c.a!=null?{ahex:c.hex+w.intToHex(c.a)}:c);else if(c.r!=null&&c.g!=null&&c.b!=null)S("rgb"+(c.a!=null?"a":""),c);else if(c.h!=null&&c.s!=null&&c.v!=
+null)S("hsv"+(c.a!=null?"a":""),c)},ColorMethods:{hexToRgba:function(c){c=this.validateHex(c);if(c=="")return{r:null,g:null,b:null,a:null};var f="00",d="00",n="00",v="255";if(c.length==6)c+="ff";if(c.length>6){f=c.substring(0,2);d=c.substring(2,4);n=c.substring(4,6);v=c.substring(6,c.length)}else{if(c.length>4){f=c.substring(4,c.length);c=c.substring(0,4)}if(c.length>2){d=c.substring(2,c.length);c=c.substring(0,2)}if(c.length>0)n=c.substring(0,c.length)}return{r:this.hexToInt(f),g:this.hexToInt(d),
+b:this.hexToInt(n),a:this.hexToInt(v)}},validateHex:function(c){if(typeof c=="object")return"";c=c.toLowerCase().replace(/[^a-f0-9]/g,"");if(c.length>8)c=c.substring(0,8);return c},rgbaToHex:function(c){return this.intToHex(c.r)+this.intToHex(c.g)+this.intToHex(c.b)+this.intToHex(c.a)},intToHex:function(c){c=(c|0).toString(16);if(c.length==1)c="0"+c;return c.toLowerCase()},hexToInt:function(c){return parseInt(c,16)},rgbToHsv:function(c){var f=c.r/255,d=c.g/255;c=c.b/255;var n={h:0,s:0,v:0},v=0,B=
+0;if(f>=d&&f>=c){B=f;v=d>c?c:d}else if(d>=c&&d>=f){B=d;v=f>c?c:f}else{B=c;v=d>f?f:d}n.v=B;n.s=B?(B-v)/B:0;if(n.s){v=B-v;n.h=f==B?(d-c)/v:d==B?2+(c-f)/v:4+(f-d)/v;n.h=parseInt(n.h*60);if(n.h<0)n.h+=360}else n.h=0;n.s=n.s*100|0;n.v=n.v*100|0;return n},hsvToRgb:function(c){var f={r:0,g:0,b:0,a:100},d=c.h,n=c.s;c=c.v;if(n==0)f.r=c==0?f.g=f.b=0:f.g=f.b=c*255/100|0;else{if(d==360)d=0;d/=60;n/=100;c/=100;var v=d|0,B=d-v;d=c*(1-n);var q=c*(1-n*B);n=c*(1-n*(1-B));switch(v){case 0:f.r=c;f.g=n;f.b=d;break;case 1:f.r=
+q;f.g=c;f.b=d;break;case 2:f.r=d;f.g=c;f.b=n;break;case 3:f.r=d;f.g=q;f.b=c;break;case 4:f.r=n;f.g=d;f.b=c;break;case 5:f.r=c;f.g=d;f.b=q}f.r=f.r*255|0;f.g=f.g*255|0;f.b=f.b*255|0}return f}}};var b=a.jPicker.Color,p=a.jPicker.List,w=a.jPicker.ColorMethods;a.fn.jPicker=function(c){var f=arguments;return this.each(function(){var d=this,n=a.extend(true,{},a.fn.jPicker.defaults,c);if(a(d).get(0).nodeName.toLowerCase()=="input"){a.extend(true,n,{window:{bindToInput:true,expandable:true,input:a(d)}});if(a(d).val()==
+""){n.color.active=new b({hex:null});n.color.current=new b({hex:null})}else if(w.validateHex(a(d).val())){n.color.active=new b({hex:a(d).val(),a:n.color.active.val("a")});n.color.current=new b({hex:a(d).val(),a:n.color.active.val("a")})}}if(n.window.expandable)a(d).after('<span class="jPicker"><span class="Icon"><span class="Color">&nbsp;</span><span class="Alpha">&nbsp;</span><span class="Image" title="Click To Open Color Picker">&nbsp;</span><span class="Container">&nbsp;</span></span></span>');
+else n.window.liveUpdate=false;var v=parseFloat(navigator.appVersion.split("MSIE")[1])<7&&document.body.filters,B=null,q=null,L=null,Q=null,K=null,I=null,S=null,R=null,N=null,ga=null,oa=null,Y=null,V=null,ea=null,Ba=null,ja=null,ca=null,U=null,Z=null,na=null,pa=null,ma=null,la=null,ya=null,za=null,Ja=null,Ia=null,Ha=null,Ma=function(M){var P=ka.active,da=P.val("hex"),Ea,Oa;n.color.mode=M;switch(M){case "h":setTimeout(function(){Ta.call(d,q,"transparent");Fa.call(d,Q,0);ta.call(d,Q,100);Fa.call(d,
+K,260);ta.call(d,K,100);Ta.call(d,L,"transparent");Fa.call(d,S,0);ta.call(d,S,100);Fa.call(d,R,260);ta.call(d,R,100);Fa.call(d,N,260);ta.call(d,N,100);Fa.call(d,ga,260);ta.call(d,ga,100);Fa.call(d,Y,260);ta.call(d,Y,100)},0);V.range("all",{minX:0,maxX:100,minY:0,maxY:100});ea.range("rangeY",{minY:0,maxY:360});if(P.val("ahex")==null)break;V.val("xy",{x:P.val("s"),y:100-P.val("v")},V);ea.val("y",360-P.val("h"),ea);break;case "s":setTimeout(function(){Ta.call(d,q,"transparent");Fa.call(d,Q,-260);Fa.call(d,
+K,-520);Fa.call(d,S,-260);Fa.call(d,R,-520);Fa.call(d,Y,260);ta.call(d,Y,100)},0);V.range("all",{minX:0,maxX:360,minY:0,maxY:100});ea.range("rangeY",{minY:0,maxY:100});if(P.val("ahex")==null)break;V.val("xy",{x:P.val("h"),y:100-P.val("v")},V);ea.val("y",100-P.val("s"),ea);break;case "v":setTimeout(function(){Ta.call(d,q,"000000");Fa.call(d,Q,-780);Fa.call(d,K,260);Ta.call(d,L,da);Fa.call(d,S,-520);Fa.call(d,R,260);ta.call(d,R,100);Fa.call(d,Y,260);ta.call(d,Y,100)},0);V.range("all",{minX:0,maxX:360,
+minY:0,maxY:100});ea.range("rangeY",{minY:0,maxY:100});if(P.val("ahex")==null)break;V.val("xy",{x:P.val("h"),y:100-P.val("s")},V);ea.val("y",100-P.val("v"),ea);break;case "r":Ea=-1040;Oa=-780;V.range("all",{minX:0,maxX:255,minY:0,maxY:255});ea.range("rangeY",{minY:0,maxY:255});if(P.val("ahex")==null)break;V.val("xy",{x:P.val("b"),y:255-P.val("g")},V);ea.val("y",255-P.val("r"),ea);break;case "g":Ea=-1560;Oa=-1820;V.range("all",{minX:0,maxX:255,minY:0,maxY:255});ea.range("rangeY",{minY:0,maxY:255});
+if(P.val("ahex")==null)break;V.val("xy",{x:P.val("b"),y:255-P.val("r")},V);ea.val("y",255-P.val("g"),ea);break;case "b":Ea=-2080;Oa=-2860;V.range("all",{minX:0,maxX:255,minY:0,maxY:255});ea.range("rangeY",{minY:0,maxY:255});if(P.val("ahex")==null)break;V.val("xy",{x:P.val("r"),y:255-P.val("g")},V);ea.val("y",255-P.val("b"),ea);break;case "a":setTimeout(function(){Ta.call(d,q,"transparent");Fa.call(d,Q,-260);Fa.call(d,K,-520);Fa.call(d,S,260);Fa.call(d,R,260);ta.call(d,R,100);Fa.call(d,Y,0);ta.call(d,
+Y,100)},0);V.range("all",{minX:0,maxX:360,minY:0,maxY:100});ea.range("rangeY",{minY:0,maxY:255});if(P.val("ahex")==null)break;V.val("xy",{x:P.val("h"),y:100-P.val("v")},V);ea.val("y",255-P.val("a"),ea);break;default:throw"Invalid Mode";}switch(M){case "s":case "v":case "a":setTimeout(function(){ta.call(d,Q,100);ta.call(d,S,100);Fa.call(d,N,260);ta.call(d,N,100);Fa.call(d,ga,260);ta.call(d,ga,100)},0);break;case "r":case "g":case "b":setTimeout(function(){Ta.call(d,q,"transparent");Ta.call(d,L,"transparent");
+ta.call(d,S,100);ta.call(d,Q,100);Fa.call(d,Q,Ea);Fa.call(d,K,Ea-260);Fa.call(d,S,Oa-780);Fa.call(d,R,Oa-520);Fa.call(d,N,Oa);Fa.call(d,ga,Oa-260);Fa.call(d,Y,260);ta.call(d,Y,100)},0)}P.val("ahex")!=null&&Da.call(d,P)},Da=function(M,P){if(P==null||P!=ea&&P!=V)va.call(d,M,P);setTimeout(function(){kb.call(d,M);vb.call(d,M);cb.call(d,M)},0)},wa=function(M,P){var da=ka.active;if(!(P!=V&&da.val()==null)){var Ea=M.val("all");switch(n.color.mode){case "h":da.val("sv",{s:Ea.x,v:100-Ea.y},P);break;case "s":case "a":da.val("hv",
+{h:Ea.x,v:100-Ea.y},P);break;case "v":da.val("hs",{h:Ea.x,s:100-Ea.y},P);break;case "r":da.val("gb",{g:255-Ea.y,b:Ea.x},P);break;case "g":da.val("rb",{r:255-Ea.y,b:Ea.x},P);break;case "b":da.val("rg",{r:Ea.x,g:255-Ea.y},P)}}},ra=function(M,P){var da=ka.active;if(!(P!=ea&&da.val()==null))switch(n.color.mode){case "h":da.val("h",{h:360-M.val("y")},P);break;case "s":da.val("s",{s:100-M.val("y")},P);break;case "v":da.val("v",{v:100-M.val("y")},P);break;case "r":da.val("r",{r:255-M.val("y")},P);break;
+case "g":da.val("g",{g:255-M.val("y")},P);break;case "b":da.val("b",{b:255-M.val("y")},P);break;case "a":da.val("a",255-M.val("y"),P)}},va=function(M,P){if(P!=V)switch(n.color.mode){case "h":var da=M.val("sv");V.val("xy",{x:da!=null?da.s:100,y:100-(da!=null?da.v:100)},P);break;case "s":case "a":da=M.val("hv");V.val("xy",{x:da&&da.h||0,y:100-(da!=null?da.v:100)},P);break;case "v":da=M.val("hs");V.val("xy",{x:da&&da.h||0,y:100-(da!=null?da.s:100)},P);break;case "r":da=M.val("bg");V.val("xy",{x:da&&
+da.b||0,y:255-(da&&da.g||0)},P);break;case "g":da=M.val("br");V.val("xy",{x:da&&da.b||0,y:255-(da&&da.r||0)},P);break;case "b":da=M.val("rg");V.val("xy",{x:da&&da.r||0,y:255-(da&&da.g||0)},P)}if(P!=ea)switch(n.color.mode){case "h":ea.val("y",360-(M.val("h")||0),P);break;case "s":da=M.val("s");ea.val("y",100-(da!=null?da:100),P);break;case "v":da=M.val("v");ea.val("y",100-(da!=null?da:100),P);break;case "r":ea.val("y",255-(M.val("r")||0),P);break;case "g":ea.val("y",255-(M.val("g")||0),P);break;case "b":ea.val("y",
+255-(M.val("b")||0),P);break;case "a":da=M.val("a");ea.val("y",255-(da!=null?da:255),P)}},kb=function(M){try{var P=M.val("all");na.css({backgroundColor:P&&"#"+P.hex||"transparent"});ta.call(d,na,P&&Math.precision(P.a*100/255,4)||0)}catch(da){}},vb=function(M){switch(n.color.mode){case "h":Ta.call(d,q,(new b({h:M.val("h")||0,s:100,v:100})).val("hex"));break;case "s":case "a":var P=M.val("s");ta.call(d,K,100-(P!=null?P:100));break;case "v":P=M.val("v");ta.call(d,Q,P!=null?P:100);break;case "r":ta.call(d,
+K,Math.precision((M.val("r")||0)/255*100,4));break;case "g":ta.call(d,K,Math.precision((M.val("g")||0)/255*100,4));break;case "b":ta.call(d,K,Math.precision((M.val("b")||0)/255*100))}M=M.val("a");ta.call(d,I,Math.precision((255-(M||0))*100/255,4))},cb=function(M){switch(n.color.mode){case "h":var P=M.val("a");ta.call(d,oa,Math.precision((255-(P||0))*100/255,4));break;case "s":P=M.val("hva");var da=new b({h:P&&P.h||0,s:100,v:P!=null?P.v:100});Ta.call(d,L,da.val("hex"));ta.call(d,R,100-(P!=null?P.v:
+100));ta.call(d,oa,Math.precision((255-(P&&P.a||0))*100/255,4));break;case "v":P=M.val("hsa");da=new b({h:P&&P.h||0,s:P!=null?P.s:100,v:100});Ta.call(d,L,da.val("hex"));ta.call(d,oa,Math.precision((255-(P&&P.a||0))*100/255,4));break;case "r":case "g":case "b":da=P=0;M=M.val("rgba");if(n.color.mode=="r"){P=M&&M.b||0;da=M&&M.g||0}else if(n.color.mode=="g"){P=M&&M.b||0;da=M&&M.r||0}else if(n.color.mode=="b"){P=M&&M.r||0;da=M&&M.g||0}var Ea=da>P?P:da;ta.call(d,R,P>da?Math.precision((P-da)/(255-da)*100,
+4):0);ta.call(d,N,da>P?Math.precision((da-P)/(255-P)*100,4):0);ta.call(d,ga,Math.precision(Ea/255*100,4));ta.call(d,oa,Math.precision((255-(M&&M.a||0))*100/255,4));break;case "a":P=M.val("a");Ta.call(d,L,M.val("hex")||"000000");ta.call(d,oa,P!=null?0:100);ta.call(d,Y,P!=null?100:0)}},Ta=function(M,P){M.css({backgroundColor:P&&P.length==6&&"#"+P||"transparent"})},Va=function(M,P){if(v&&(P.indexOf("AlphaBar.png")!=-1||P.indexOf("Bars.png")!=-1||P.indexOf("Maps.png")!=-1)){M.attr("pngSrc",P);M.css({backgroundImage:"none",
+filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+P+"', sizingMethod='scale')"})}else M.css({backgroundImage:"url('"+P+"')"})},Fa=function(M,P){M.css({top:P+"px"})},ta=function(M,P){M.css({visibility:P>0?"visible":"hidden"});if(P>0&&P<100)if(v){var da=M.attr("pngSrc");da!=null&&(da.indexOf("AlphaBar.png")!=-1||da.indexOf("Bars.png")!=-1||da.indexOf("Maps.png")!=-1)?M.css({filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+da+"', sizingMethod='scale') progid:DXImageTransform.Microsoft.Alpha(opacity="+
+P+")"}):M.css({opacity:Math.precision(P/100,4)})}else M.css({opacity:Math.precision(P/100,4)});else if(P==0||P==100)if(v){da=M.attr("pngSrc");da!=null&&(da.indexOf("AlphaBar.png")!=-1||da.indexOf("Bars.png")!=-1||da.indexOf("Maps.png")!=-1)?M.css({filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+da+"', sizingMethod='scale')"}):M.css({opacity:""})}else M.css({opacity:""})},$a=function(){ka.active.val("ahex",ka.current.val("ahex"))},Ka=function(){ka.current.val("ahex",ka.active.val("ahex"))},
+Sa=function(M){a(this).parents("tbody:first").find('input:radio[value!="'+M.target.value+'"]').removeAttr("checked");Ma.call(d,M.target.value)},Ga=function(){$a.call(d)},db=function(){$a.call(d);n.window.expandable&&fb.call(d);a.isFunction(ob)&&ob.call(d,ka.active,la)},lb=function(){Ka.call(d);n.window.expandable&&fb.call(d);a.isFunction(ib)&&ib.call(d,ka.active,ma)},Ua=function(){pb.call(d)},Xa=function(M){var P=M.val("hex");pa.css({backgroundColor:P&&"#"+P||"transparent"});ta.call(d,pa,Math.precision((M.val("a")||
+0)*100/255,4))},wb=function(M){var P=M.val("hex");M=M.val("va");za.css({backgroundColor:P&&"#"+P||"transparent"});ta.call(d,Ja,Math.precision((255-(M&&M.a||0))*100/255,4));if(n.window.bindToInput&&n.window.updateInputColor)n.window.input.css({backgroundColor:P&&"#"+P||"transparent",color:M==null||M.v>75?"#000000":"#ffffff"})},sa=function(M){ja=parseInt(B.css("left"));ca=parseInt(B.css("top"));U=M.pageX;Z=M.pageY;a(document).bind("mousemove",hb).bind("mouseup",eb);M.preventDefault()},hb=function(M){B.css({left:ja-
+(U-M.pageX)+"px",top:ca-(Z-M.pageY)+"px"});n.window.expandable&&!a.support.boxModel&&B.prev().css({left:B.css("left"),top:B.css("top")});M.stopPropagation();M.preventDefault();return false},eb=function(M){a(document).unbind("mousemove",hb).unbind("mouseup",eb);M.stopPropagation();M.preventDefault();return false},sb=function(M){M.preventDefault();M.stopPropagation();ka.active.val("ahex",a(this).attr("title")||null,M.target);return false},ib=a.isFunction(f[1])&&f[1]||null,ab=a.isFunction(f[2])&&f[2]||
+null,ob=a.isFunction(f[3])&&f[3]||null,pb=function(){ka.current.val("ahex",ka.active.val("ahex"));var M=function(){if(!(!n.window.expandable||a.support.boxModel)){var P=B.find("table:first");B.before("<iframe/>");B.prev().css({width:P.width(),height:B.height(),opacity:0,position:"absolute",left:B.css("left"),top:B.css("top")})}};if(n.window.expandable){a(document.body).children("div.jPicker.Container").css({zIndex:10});B.css({zIndex:20})}switch(n.window.effects.type){case "fade":B.fadeIn(n.window.effects.speed.show,
+M);break;case "slide":B.slideDown(n.window.effects.speed.show,M);break;default:B.show(n.window.effects.speed.show,M)}},fb=function(){var M=function(){n.window.expandable&&B.css({zIndex:10});!n.window.expandable||a.support.boxModel||B.prev().remove()};switch(n.window.effects.type){case "fade":B.fadeOut(n.window.effects.speed.hide,M);break;case "slide":B.slideUp(n.window.effects.speed.hide,M);break;default:B.hide(n.window.effects.speed.hide,M)}},tb=function(){var M=n.window,P=M.expandable?a(d).next().find(".Container:first"):
+null;B=M.expandable?a("<div/>"):a(d);B.addClass("jPicker Container");M.expandable&&B.hide();B.get(0).onselectstart=function(xa){if(xa.target.nodeName.toLowerCase()!=="input")return false};var da=ka.active.val("all");if(M.alphaPrecision<0)M.alphaPrecision=0;else if(M.alphaPrecision>2)M.alphaPrecision=2;var Ea='<table class="jPicker" cellpadding="0" cellspacing="0"><tbody>'+(M.expandable?'<tr><td class="Move" colspan="5">&nbsp;</td></tr>':"")+'<tr><td rowspan="9"><h2 class="Title">'+(M.title||aa.text.title)+
+'</h2><div class="Map"><span class="Map1">&nbsp;</span><span class="Map2">&nbsp;</span><span class="Map3">&nbsp;</span><img src="'+ia.clientPath+ia.colorMap.arrow.file+'" class="Arrow"/></div></td><td rowspan="9"><div class="Bar"><span class="Map1">&nbsp;</span><span class="Map2">&nbsp;</span><span class="Map3">&nbsp;</span><span class="Map4">&nbsp;</span><span class="Map5">&nbsp;</span><span class="Map6">&nbsp;</span><img src="'+ia.clientPath+ia.colorBar.arrow.file+'" class="Arrow"/></div></td><td colspan="2" class="Preview"><div class="prev_div">'+
+aa.text.newColor+'<div class="color_preview"><span class="Active" title="'+aa.tooltips.colors.newColor+'">&nbsp;</span><span class="Current" title="'+aa.tooltips.colors.currentColor+'">&nbsp;</span></div></div>'+aa.text.currentColor+'</td><td rowspan="9" class="Button"><input type="button" class="Ok" value="'+aa.text.ok+'" title="'+aa.tooltips.buttons.ok+'"/><input type="button" class="Cancel" value="'+aa.text.cancel+'" title="'+aa.tooltips.buttons.cancel+'"/><div class="Grid">&nbsp;</div></td></tr><tr class="Hue"><td class="Radio"><label title="'+
+aa.tooltips.hue.radio+'"><input type="radio" value="h"'+(n.color.mode=="h"?' checked="checked"':"")+'/>H:</label></td><td class="Text"><input type="text" maxlength="3" value="'+(da!=null?da.h:"")+'" title="'+aa.tooltips.hue.textbox+'"/>&nbsp;\u00ba</td></tr><tr class="Saturation"><td class="Radio"><label title="'+aa.tooltips.saturation.radio+'"><input type="radio" value="s"'+(n.color.mode=="s"?' checked="checked"':"")+'/>S:</label></td><td class="Text"><input type="text" maxlength="3" value="'+(da!=
+null?da.s:"")+'" title="'+aa.tooltips.saturation.textbox+'"/>&nbsp;%</td></tr><tr class="Value"><td class="Radio"><label title="'+aa.tooltips.value.radio+'"><input type="radio" value="v"'+(n.color.mode=="v"?' checked="checked"':"")+'/>V:</label></td><td class="Text"><input type="text" maxlength="3" value="'+(da!=null?da.v:"")+'" title="'+aa.tooltips.value.textbox+'"/>&nbsp;%<br/><br/></td></tr><tr class="Red"><td class="Radio"><label title="'+aa.tooltips.red.radio+'"><input type="radio" value="r"'+
+(n.color.mode=="r"?' checked="checked"':"")+'/>R:</label></td><td class="Text"><input type="text" maxlength="3" value="'+(da!=null?da.r:"")+'" title="'+aa.tooltips.red.textbox+'"/></td></tr><tr class="Green"><td class="Radio"><label title="'+aa.tooltips.green.radio+'"><input type="radio" value="g"'+(n.color.mode=="g"?' checked="checked"':"")+'/>G:</label></td><td class="Text"><input type="text" maxlength="3" value="'+(da!=null?da.g:"")+'" title="'+aa.tooltips.green.textbox+'"/></td></tr><tr class="Blue"><td class="Radio"><label title="'+
+aa.tooltips.blue.radio+'"><input type="radio" value="b"'+(n.color.mode=="b"?' checked="checked"':"")+'/>B:</label></td><td class="Text"><input type="text" maxlength="3" value="'+(da!=null?da.b:"")+'" title="'+aa.tooltips.blue.textbox+'"/></td></tr><tr class="Alpha"><td class="Radio">'+(M.alphaSupport?'<label title="'+aa.tooltips.alpha.radio+'"><input type="radio" value="a"'+(n.color.mode=="a"?' checked="checked"':"")+"/>A:</label>":"&nbsp;")+'</td><td class="Text">'+(M.alphaSupport?'<input type="text" maxlength="'+
+(3+M.alphaPrecision)+'" value="'+(da!=null?Math.precision(da.a*100/255,M.alphaPrecision):"")+'" title="'+aa.tooltips.alpha.textbox+'"/>&nbsp;%':"&nbsp;")+'</td></tr><tr class="Hex"><td colspan="2" class="Text"><label title="'+aa.tooltips.hex.textbox+'">#:<input type="text" maxlength="6" class="Hex" value="'+(da!=null?da.hex:"")+'"/></label>'+(M.alphaSupport?'<input type="text" maxlength="2" class="AHex" value="'+(da!=null?da.ahex.substring(6):"")+'" title="'+aa.tooltips.hex.alpha+'"/></td>':"&nbsp;")+
+"</tr></tbody></table>";if(M.expandable){B.html(Ea);a(document.body).children("div.jPicker.Container").length==0?a(document.body).prepend(B):a(document.body).children("div.jPicker.Container:last").after(B);B.mousedown(function(){a(document.body).children("div.jPicker.Container").css({zIndex:10});B.css({zIndex:20})});B.css({left:M.position.x=="left"?P.offset().left-530-(M.position.y=="center"?25:0)+"px":M.position.x=="center"?P.offset().left-260+"px":M.position.x=="right"?P.offset().left-10+(M.position.y==
+"center"?25:0)+"px":M.position.x=="screenCenter"?(a(document).width()>>1)-260+"px":P.offset().left+parseInt(M.position.x)+"px",position:"absolute",top:M.position.y=="top"?P.offset().top-312+"px":M.position.y=="center"?P.offset().top-156+"px":M.position.y=="bottom"?P.offset().top+25+"px":P.offset().top+parseInt(M.position.y)+"px"})}else{B=a(d);B.html(Ea)}Ea=B.find("tbody:first");q=Ea.find("div.Map:first");L=Ea.find("div.Bar:first");var Oa=q.find("span"),Wa=L.find("span");Q=Oa.filter(".Map1:first");
+K=Oa.filter(".Map2:first");I=Oa.filter(".Map3:first");S=Wa.filter(".Map1:first");R=Wa.filter(".Map2:first");N=Wa.filter(".Map3:first");ga=Wa.filter(".Map4:first");oa=Wa.filter(".Map5:first");Y=Wa.filter(".Map6:first");V=new s(q,{map:{width:ia.colorMap.width,height:ia.colorMap.height},arrow:{image:ia.clientPath+ia.colorMap.arrow.file,width:ia.colorMap.arrow.width,height:ia.colorMap.arrow.height}});V.bind(wa);ea=new s(L,{map:{width:ia.colorBar.width,height:ia.colorBar.height},arrow:{image:ia.clientPath+
+ia.colorBar.arrow.file,width:ia.colorBar.arrow.width,height:ia.colorBar.arrow.height}});ea.bind(ra);Ba=new g(Ea,ka.active,M.expandable&&M.bindToInput?M.input:null,M.alphaPrecision);Oa=da!=null?da.hex:null;var Za=Ea.find(".Preview");Wa=Ea.find(".Button");na=Za.find(".Active:first").css({backgroundColor:Oa&&"#"+Oa||"transparent"});pa=Za.find(".Current:first").css({backgroundColor:Oa&&"#"+Oa||"transparent"}).bind("click",Ga);ta.call(d,pa,Math.precision(ka.current.val("a")*100)/255,4);ma=Wa.find(".Ok:first").bind("click touchstart",
+lb);la=Wa.find(".Cancel:first").bind("click touchstart",db);ya=Wa.find(".Grid:first");setTimeout(function(){Va.call(d,Q,ia.clientPath+"Maps.png");Va.call(d,K,ia.clientPath+"Maps.png");Va.call(d,I,ia.clientPath+"map-opacity.png");Va.call(d,S,ia.clientPath+"Bars.png");Va.call(d,R,ia.clientPath+"Bars.png");Va.call(d,N,ia.clientPath+"Bars.png");Va.call(d,ga,ia.clientPath+"Bars.png");Va.call(d,oa,ia.clientPath+"bar-opacity.png");Va.call(d,Y,ia.clientPath+"AlphaBar.png");Va.call(d,Za.find("div:last"),ia.clientPath+
+"preview-opacity.png")},0);Ea.find("td.Radio input").bind("click  touchstart",Sa);if(ka.quickList&&ka.quickList.length>0){Wa="";for(i=0;i<ka.quickList.length;i++){if((typeof ka.quickList[i]).toString().toLowerCase()=="string")ka.quickList[i]=new b({hex:ka.quickList[i]});var nb=ka.quickList[i].val("a"),Ra=ka.quickList[i].val("ahex");if(!M.alphaSupport&&Ra)Ra=Ra.substring(0,6)+"ff";var mb=ka.quickList[i].val("hex");Wa+='<span class="QuickColor"'+(Ra&&' title="#'+Ra+'"'||"")+' style="background-color:'+
+(mb&&"#"+mb||"")+";"+(mb?"":"background-image:url("+ia.clientPath+"NoColor.png)")+(M.alphaSupport&&nb&&nb<255?";opacity:"+Math.precision(nb/255,4)+";filter:Alpha(opacity="+Math.precision(nb/2.55,4)+")":"")+'">&nbsp;</span>'}Va.call(d,ya,ia.clientPath+"bar-opacity.png");ya.html(Wa);ya.find(".QuickColor").click(sb)}Ma.call(d,n.color.mode);ka.active.bind(Da);a.isFunction(ab)&&ka.active.bind(ab);ka.current.bind(Xa);if(M.expandable){d.icon=P.parents(".Icon:first");za=d.icon.find(".Color:first").css({backgroundColor:Oa&&
+"#"+Oa||"transparent"});Ja=d.icon.find(".Alpha:first");Va.call(d,Ja,ia.clientPath+"bar-opacity.png");ta.call(d,Ja,Math.precision((255-(da!=null?da.a:0))*100/255,4));Ia=d.icon.find(".Image:first").css({backgroundImage:"url('"+ia.clientPath+ia.picker.file+"')"}).bind("click",Ua);if(M.bindToInput&&M.updateInputColor)M.input.css({backgroundColor:Oa&&"#"+Oa||"transparent",color:da==null||da.v>75?"#000000":"#ffffff"});Ha=Ea.find(".Move:first").bind("mousedown",sa);ka.active.bind(wb)}else pb.call(d)},ia=
+n.images,aa=n.localization,ka={active:(typeof n.color.active).toString().toLowerCase()=="string"?new b({ahex:!n.window.alphaSupport&&n.color.active?n.color.active.substring(0,6)+"ff":n.color.active}):new b({ahex:!n.window.alphaSupport&&n.color.active.val("ahex")?n.color.active.val("ahex").substring(0,6)+"ff":n.color.active.val("ahex")}),current:(typeof n.color.active).toString().toLowerCase()=="string"?new b({ahex:!n.window.alphaSupport&&n.color.active?n.color.active.substring(0,6)+"ff":n.color.active}):
+new b({ahex:!n.window.alphaSupport&&n.color.active.val("ahex")?n.color.active.val("ahex").substring(0,6)+"ff":n.color.active.val("ahex")}),quickList:n.color.quickList};a.extend(true,d,{commitCallback:ib,liveCallback:ab,cancelCallback:ob,color:ka,show:pb,hide:fb,destroy:function(){B.find("td.Radio input  touchstart").unbind("click",Sa);pa.unbind("click  touchstart",Ga);la.unbind("click  touchstart",db);ma.unbind("click  touchstart",lb);if(n.window.expandable){Ia.unbind("click",Ua);Ha.unbind("mousedown",
+sa);d.icon=null}B.find(".QuickColor").unbind("click",sb);Y=oa=ga=N=R=S=I=K=Q=L=q=null;V.destroy();V=null;ea.destroy();ea=null;Ba.destroy();ab=ob=ib=ya=la=ma=pa=na=Ba=null;B.html("");for(i=0;i<p.length;i++)p[i]==d&&p.splice(i,1)}});p.push(d);setTimeout(function(){tb.call(d)},0)})};a.fn.jPicker.defaults={window:{title:null,effects:{type:"slide",speed:{show:"slow",hide:"fast"}},position:{x:"screenCenter",y:"top"},expandable:false,liveUpdate:true,alphaSupport:false,alphaPrecision:0,updateInputColor:true},
+color:{mode:"h",active:new b({ahex:"#ffcc00ff"}),quickList:[new b({h:360,s:33,v:100}),new b({h:360,s:66,v:100}),new b({h:360,s:100,v:100}),new b({h:360,s:100,v:75}),new b({h:360,s:100,v:50}),new b({h:180,s:0,v:100}),new b({h:30,s:33,v:100}),new b({h:30,s:66,v:100}),new b({h:30,s:100,v:100}),new b({h:30,s:100,v:75}),new b({h:30,s:100,v:50}),new b({h:180,s:0,v:90}),new b({h:60,s:33,v:100}),new b({h:60,s:66,v:100}),new b({h:60,s:100,v:100}),new b({h:60,s:100,v:75}),new b({h:60,s:100,v:50}),new b({h:180,
+s:0,v:80}),new b({h:90,s:33,v:100}),new b({h:90,s:66,v:100}),new b({h:90,s:100,v:100}),new b({h:90,s:100,v:75}),new b({h:90,s:100,v:50}),new b({h:180,s:0,v:70}),new b({h:120,s:33,v:100}),new b({h:120,s:66,v:100}),new b({h:120,s:100,v:100}),new b({h:120,s:100,v:75}),new b({h:120,s:100,v:50}),new b({h:180,s:0,v:60}),new b({h:150,s:33,v:100}),new b({h:150,s:66,v:100}),new b({h:150,s:100,v:100}),new b({h:150,s:100,v:75}),new b({h:150,s:100,v:50}),new b({h:180,s:0,v:50}),new b({h:180,s:33,v:100}),new b({h:180,
+s:66,v:100}),new b({h:180,s:100,v:100}),new b({h:180,s:100,v:75}),new b({h:180,s:100,v:50}),new b({h:180,s:0,v:40}),new b({h:210,s:33,v:100}),new b({h:210,s:66,v:100}),new b({h:210,s:100,v:100}),new b({h:210,s:100,v:75}),new b({h:210,s:100,v:50}),new b({h:180,s:0,v:30}),new b({h:240,s:33,v:100}),new b({h:240,s:66,v:100}),new b({h:240,s:100,v:100}),new b({h:240,s:100,v:75}),new b({h:240,s:100,v:50}),new b({h:180,s:0,v:20}),new b({h:270,s:33,v:100}),new b({h:270,s:66,v:100}),new b({h:270,s:100,v:100}),
+new b({h:270,s:100,v:75}),new b({h:270,s:100,v:50}),new b({h:180,s:0,v:10}),new b({h:300,s:33,v:100}),new b({h:300,s:66,v:100}),new b({h:300,s:100,v:100}),new b({h:300,s:100,v:75}),new b({h:300,s:100,v:50}),new b({h:180,s:0,v:0}),new b({h:330,s:33,v:100}),new b({h:330,s:66,v:100}),new b({h:330,s:100,v:100}),new b({h:330,s:100,v:75}),new b({h:330,s:100,v:50}),new b]},images:{clientPath:"/jPicker/images/",colorMap:{width:256,height:256,arrow:{file:"mappoint.gif",width:15,height:15}},colorBar:{width:20,
+height:256,arrow:{file:"rangearrows.gif",width:20,height:7}},picker:{file:"picker.gif",width:25,height:24}},localization:{text:{title:"Drag Markers To Pick A Color",newColor:"new",currentColor:"current",ok:"OK",cancel:"Cancel"},tooltips:{colors:{newColor:"New Color - Press &ldquo;OK&rdquo; To Commit",currentColor:"Click To Revert To Original Color"},buttons:{ok:"Commit To This Color Selection",cancel:"Cancel And Revert To Original Color"},hue:{radio:"Set To &ldquo;Hue&rdquo; Color Mode",textbox:"Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)"},
+saturation:{radio:"Set To &ldquo;Saturation&rdquo; Color Mode",textbox:"Enter A &ldquo;Saturation&rdquo; Value (0-100%)"},value:{radio:"Set To &ldquo;Value&rdquo; Color Mode",textbox:"Enter A &ldquo;Value&rdquo; Value (0-100%)"},red:{radio:"Set To &ldquo;Red&rdquo; Color Mode",textbox:"Enter A &ldquo;Red&rdquo; Value (0-255)"},green:{radio:"Set To &ldquo;Green&rdquo; Color Mode",textbox:"Enter A &ldquo;Green&rdquo; Value (0-255)"},blue:{radio:"Set To &ldquo;Blue&rdquo; Color Mode",textbox:"Enter A &ldquo;Blue&rdquo; Value (0-255)"},
+alpha:{radio:"Set To &ldquo;Alpha&rdquo; Color Mode",textbox:"Enter A &ldquo;Alpha&rdquo; Value (0-100)"},hex:{textbox:"Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)",alpha:"Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)"}}}}})(jQuery,"1.1.6");(function(a){function s(p){var w=p||window.event,c=[].slice.call(arguments,1),f=0,d=0,n=0;p=a.event.fix(w);p.type="mousewheel";if(w.wheelDelta)f=w.wheelDelta/120;if(w.detail)f=-w.detail/3;n=f;if(w.axis!==undefined&&w.axis===w.HORIZONTAL_AXIS){n=0;d=-1*f}if(w.wheelDeltaY!==undefined)n=w.wheelDeltaY/120;if(w.wheelDeltaX!==undefined)d=-1*w.wheelDeltaX/120;c.unshift(p,f,d,n);return(a.event.dispatch||a.event.handle).apply(this,c)}var g=["DOMMouseScroll","mousewheel"];if(a.event.fixHooks)for(var b=g.length;b;)a.event.fixHooks[g[--b]]=
+a.event.mouseHooks;a.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var p=g.length;p;)this.addEventListener(g[--p],s,false);else this.onmousewheel=s},teardown:function(){if(this.removeEventListener)for(var p=g.length;p;)this.removeEventListener(g[--p],s,false);else this.onmousewheel=null}};a.fn.extend({mousewheel:function(p){return p?this.bind("mousewheel",p):this.trigger("mousewheel")},unmousewheel:function(p){return this.unbind("mousewheel",p)}})})(jQuery);methodDraw.addExtension("eyedropper",function(a){var s=methodDraw.canvas,g=svgedit.history.ChangeElementCommand,b={fillPaint:"red",fillOpacity:1,strokePaint:"black",strokeOpacity:1,strokeWidth:5,strokeDashArray:null,opacity:1,strokeLinecap:"butt",strokeLinejoin:"miter"},p=function(w,c,f){var d=null;if(w.indexOf("url(#")===0){w=(w=s.getRefElem(w))?w.cloneNode(true):$("#"+f+"_color defs *")[0];d={alpha:c};d[w.tagName]=w}else d=w.indexOf("#")===0?{alpha:c,solidColor:w.substr(1)}:{alpha:c,solidColor:"none"};
+return new $.jGraduate.Paint(d)};return{name:"eyedropper",svgicons:"extensions/eyedropper-icon.xml",buttons:[{id:"tool_eyedropper",type:"mode",title:"Eye Dropper Tool",position:8,key:"I",icon:"extensions/eyedropper.png",events:{click:function(){s.setMode("eyedropper")}}}],mouseDown:function(w){var c=s.getMode(),f=w.event;f=f.target.id==="svgroot"?document.getElementById("canvas_background"):f.target;if(c=="eyedropper"&&f){b.fillPaint=f.getAttribute("fill")||"white";b.fillOpacity=f.getAttribute("fill-opacity")||
+1;b.strokePaint=f.getAttribute("stroke")||"none";b.strokeOpacity=f.getAttribute("stroke-opacity")||1;b.strokeWidth=f.getAttribute("stroke-width");b.strokeDashArray=f.getAttribute("stroke-dasharray");b.strokeLinecap=f.getAttribute("stroke-linecap");b.strokeLinejoin=f.getAttribute("stroke-linejoin");b.opacity=f.getAttribute("opacity")||1;w.selectedElements=w.selectedElements.filter(Boolean);if(w.selectedElements.length){if($.inArray(w.selectedElements.nodeName,["g","use"])==-1){var d={},n=function(B,
+q,L){d[q]=B.getAttribute(q);B.setAttribute(q,L)},v=new a.BatchCommand;w.selectedElements.forEach(function(B){b.fillPaint&&n(B,"fill",b.fillPaint);b.fillOpacity&&n(B,"fill-opacity",b.fillOpacity);b.strokePaint&&n(B,"stroke",b.strokePaint);b.strokeOpacity&&n(B,"stroke-opacity",b.strokeOpacity);b.strokeWidth&&n(B,"stroke-width",b.strokeWidth);b.strokeDashArray&&n(B,"stroke-dasharray",b.strokeDashArray);b.opacity&&n(B,"opacity",b.opacity);b.strokeLinecap&&n(B,"stroke-linecap",b.strokeLinecap);b.strokeLinejoin&&
+n(B,"stroke-linejoin",b.strokeLinejoin);v.addSubCommand(new g(B,d));d={}});w=p(b.fillPaint,b.fillOpacity*100,"fill");c=p(b.strokePaint,b.strokeOpacity*100,"stroke");methodDraw.paintBox.fill.update(true);methodDraw.paintBox.stroke.update(true);s.undoMgr.addCommandToHistory(v)}}else{w=p(b.fillPaint,b.fillOpacity*100,"fill");c=p(b.strokePaint,b.strokeOpacity*100,"stroke");methodDraw.paintBox.fill.setPaint(w);methodDraw.paintBox.stroke.setPaint(c)}}}}});methodDraw.addExtension("view_grid",function(a){function s(n){f.attr("width");f.attr("height");var v=svgedit.units.getTypeMap()[methodDraw.curConfig.baseUnit],B=[0.01,0.1,1,10,100,1E3];b.getContentElem().getAttribute("x");var q=w;v=v*n;var L=100/v,Q=1;for(n=0;n<B.length;n++){var K=B[n];Q=K;if(L<=K)break}B=Q*v;q.width=B;q.height=B;v=q.getContext("2d");L=B/10;v.globalAlpha=0.2;v.strokeStyle="#000";for(n=1;n<10;n++){Q=Math.round(L*n)+0.5;v.moveTo(Q,B);v.lineTo(Q,0);v.moveTo(B,Q);v.lineTo(0,Q)}v.stroke();
+v.beginPath();v.globalAlpha=0.5;v.moveTo(0.5,B);v.lineTo(0.5,0);v.moveTo(B,0.5);v.lineTo(0,0.5);v.stroke();q=q.toDataURL("image/png");d.setAttribute("width",B);d.setAttribute("height",B);d.parentNode.setAttribute("width",B);d.parentNode.setAttribute("height",B);b.setHref(d,q)}if(!document.getElementById("canvasGrid")){var g=document.getElementById("svgcanvas").ownerDocument,b=methodDraw.canvas,p=false;a=a.assignAttributes;var w=document.createElement("canvas");$(w).hide().appendTo("body");var c=g.createElementNS("http://www.w3.org/2000/svg",
+"g");a(c,{id:"canvasGrid",width:"100%",height:"100%",x:0,y:0,overflow:"visible",display:"none"});var f=$("#canvas_background");f.after(c);c=g.createElementNS("http://www.w3.org/2000/svg","pattern");a(c,{id:"gridpattern",patternUnits:"userSpaceOnUse",x:0,y:0,width:100,height:100});var d=g.createElementNS("http://www.w3.org/2000/svg","image");a(d,{x:0,y:0,width:100,height:100});c.appendChild(d);$("#svgroot defs").append(c);g=g.createElementNS("http://www.w3.org/2000/svg","rect");a(g,{width:"100%",height:"100%",
+x:0,y:0,"stroke-width":0,stroke:"none",fill:"url(#gridpattern)",style:"pointer-events: none; display:visible;"});$("#canvasGrid").append(g)}return{name:"view_grid",zoomChanged:function(n){p&&s(n)},buttons:[{id:"view_grid",type:"menu",after:"tool_wireframe",panel:"view_menu",title:"View Grid",events:{click:function(){if($("#view_grid").hasClass("push_button_pressed")){methodDraw.curConfig.showGrid=p=false;$("#view_grid").removeClass("push_button_pressed");$("#canvasGrid").attr("display","none")}else{methodDraw.curConfig.showGrid=
+p=true;$("#view_grid").addClass("push_button_pressed");$("#canvasGrid").attr("display","inline");s(b.getZoom())}}}}]}});methodDraw.addExtension("shapes",function(){function a(){$("#shape_buttons").empty();$("#shape_buttons").append(L.buttons)}function s(K){var I=q[K];if(I){L=I;I.buttons.length||g(K,I);a()}else{$("#shape_buttons").html("Loading...");$.getJSON("extensions/shapelib/"+K+".json",function(S){L=q[K]={data:S.data,size:S.size,fill:S.fill};g(K,S);a()})}}function g(K,I){var S=L.size||300,R=L.fill||false,N=S*0.05;N=[-N,-N,S+N*2,S+N*2].join(" ");S=R?0:S/30;S=(new DOMParser).parseFromString('<svg xmlns="http://www.w3.org/2000/svg"><svg viewBox="'+
+N+'"><path fill="#333" stroke="transparent" stroke-width="'+S+'" /></svg></svg>',"text/xml");S.documentElement.setAttribute("width",40);S.documentElement.setAttribute("height",40);S=$(document.importNode(S.documentElement,true));R=I.data;L.buttons=[];for(var ga in R){N=R[ga];var oa=S.clone();oa.find("path").attr("d",N);N=oa.wrap('<div class="tool_button">').parent().attr({id:Q+"_"+ga,title:ga});L.buttons.push(N[0])}}var b,p,w=methodDraw.canvas,c,f,d,n=w.getRootElem(),v={},B={basic:"Basic",object:"Objects",
+symbol:"Symbols",arrow:"Arrows",flowchart:"Flowchart",nature:"Nature",game:"Cards & Chess",dialog_balloon:"Dialog balloons",music:"Music",weather:"Weather &amp; Time",ui:"User Interface",social:"Social Web"},q={basic:{data:{star_points_5:"m1,116.58409l113.82668,0l35.17332,-108.13487l35.17334,108.13487l113.82666,0l-92.08755,66.83026l35.17514,108.13487l-92.08759,-66.83208l-92.08757,66.83208l35.17515,-108.13487l-92.08758,-66.83026z",donut:"m1,150l0,0c0,-82.29042 66.70958,-149 149,-149l0,0c39.51724,0 77.41599,15.69816 105.35889,43.64108c27.94293,27.94293 43.64111,65.84165 43.64111,105.35892l0,0c0,82.29041 -66.70958,149 -149,149l0,0c-82.29041,0 -149,-66.70959 -149,-149zm74.5,0l0,0c0,41.1452 33.35481,74.5 74.5,74.5c41.14522,0 74.5,-33.3548 74.5,-74.5c0,-41.1452 -33.3548,-74.5 -74.5,-74.5l0,0c-41.14519,0 -74.5,33.35481 -74.5,74.5z",
+triangle:"m1,280.375l149,-260.75l149,260.75z",right_triangle:"m1,299l0,-298l298,298z",diamond:"m1,150l149,-149l149,149l-149,149l-149,-149z",pentagon:"m1.00035,116.97758l148.99963,-108.4053l148.99998,108.4053l-56.91267,175.4042l-184.1741,0l-56.91284,-175.4042z",hexagon:"m1,149.99944l63.85715,-127.71428l170.28572,0l63.85713,127.71428l-63.85713,127.71428l-170.28572,0l-63.85715,-127.71428z",septagon1:"m0.99917,191.06511l29.51249,-127.7108l119.48833,-56.83673l119.48836,56.83673l29.51303,127.7108l-82.69087,102.41679l-132.62103,0l-82.69031,-102.41679z",
+heptagon:"m1,88.28171l87.28172,-87.28171l123.43653,0l87.28172,87.28171l0,123.43654l-87.28172,87.28172l-123.43653,0l-87.28172,-87.28172l0,-123.43654z",decagon:"m1,150.00093l28.45646,-88.40318l74.49956,-54.63682l92.08794,0l74.50002,54.63682l28.45599,88.40318l-28.45599,88.40318l-74.50002,54.63681l-92.08794,0l-74.49956,-54.63681l-28.45646,-88.40318z",dodecagon:"m1,110.07421l39.92579,-69.14842l69.14842,-39.92579l79.85159,0l69.14842,39.92579l39.92578,69.14842l0,79.85159l-39.92578,69.14842l-69.14842,39.92578l-79.85159,0l-69.14842,-39.92578l-39.92579,-69.14842l0,-79.85159z",
+trapezoid:"m1,299l55.875,-298l186.25001,0l55.87498,298z",dialog_balloon_1:"m0.99786,35.96579l0,0c0,-19.31077 15.28761,-34.96524 34.14583,-34.96524l15.52084,0l0,0l74.50001,0l139.68748,0c9.05606,0 17.74118,3.68382 24.14478,10.24108c6.40356,6.55726 10.00107,15.45081 10.00107,24.72416l0,87.41311l0,0l0,52.44785l0,0c0,19.31078 -15.2876,34.96524 -34.14584,34.96524l-139.68748,0l-97.32507,88.90848l22.82506,-88.90848l-15.52084,0c-18.85822,0 -34.14583,-15.65446 -34.14583,-34.96524l0,0l0,-52.44785l0,0z",heart:"m150,73c61,-175 300,0 0,225c-300,-225 -61,-400 0,-225z",
+cylinder:"m299.0007,83.77844c0,18.28676 -66.70958,33.11111 -149.00002,33.11111m149.00002,-33.11111l0,0c0,18.28676 -66.70958,33.11111 -149.00002,33.11111c-82.29041,0 -148.99997,-14.82432 -148.99997,-33.11111m0,0l0,0c0,-18.28674 66.70956,-33.1111 148.99997,-33.1111c82.29044,0 149.00002,14.82436 149.00002,33.1111l0,132.44449c0,18.28674 -66.70958,33.11105 -149.00002,33.11105c-82.29041,0 -148.99997,-14.82431 -148.99997,-33.11105z",arrow_up:"m1.49805,149.64304l148.50121,-148.00241l148.50121,148.00241l-74.25061,0l0,148.71457l-148.5012,0l0,-148.71457z",
+arrow_u_turn:"m1.00059,299.00055l0,-167.62497l0,0c0,-72.00411 58.37087,-130.37499 130.375,-130.37499l0,0l0,0c34.57759,0 67.73898,13.7359 92.18906,38.18595c24.45006,24.45005 38.18593,57.61144 38.18593,92.18904l0,18.625l37.24997,0l-74.49995,74.50002l-74.50002,-74.50002l37.25,0l0,-18.625c0,-30.8589 -25.0161,-55.87498 -55.87498,-55.87498l0,0l0,0c-30.85892,0 -55.875,25.01608 -55.875,55.87498l0,167.62497z",arrow_left_up:"m0.99865,224.5l74.50004,-74.5l0,37.25l111.74991,0l0,-111.75l-37.25,0l74.5,-74.5l74.5,74.5l-37.25,0l0,186.25l-186.24989,0l0,37.25l-74.50005,-74.5z",
+plaque:"m-0.00197,49.94376l0,0c27.5829,0 49.94327,-22.36036 49.94327,-49.94327l199.76709,0l0,0c0,27.5829 22.36037,49.94327 49.94325,49.94327l0,199.7671l0,0c-27.58289,0 -49.94325,22.36034 -49.94325,49.94325l-199.76709,0c0,-27.58292 -22.36037,-49.94325 -49.94327,-49.94325z",page:"m249.3298,298.99744l9.9335,-39.73413l39.73413,-9.93355l-49.66763,49.66768l-248.33237,0l0,-298.00001l298.00001,0l0,248.33234",cross:"m0.99844,99.71339l98.71494,0l0,-98.71495l101.26279,0l0,98.71495l98.71495,0l0,101.2628l-98.71495,0l0,98.71494l-101.26279,0l0,-98.71494l-98.71494,0z",
+divide:"m150,0.99785l0,0c25.17819,0 45.58916,20.41097 45.58916,45.58916c0,25.17821 -20.41096,45.58916 -45.58916,45.58916c-25.17822,0 -45.58916,-20.41093 -45.58916,-45.58916c0,-25.1782 20.41093,-45.58916 45.58916,-45.58916zm0,296.25203c-25.17822,0 -45.58916,-20.41095 -45.58916,-45.58917c0,-25.17819 20.41093,-45.58916 45.58916,-45.58916c25.17819,0 45.58916,20.41096 45.58916,45.58916c0,25.17822 -20.41096,45.58917 -45.58916,45.58917zm-134.06754,-193.71518l268.13507,0l0,91.17833l-268.13507,0z",minus:"m0.99887,102.39503l297.49445,0l0,95.2112l-297.49445,0z",
+times:"m1.00089,73.36786l72.36697,-72.36697l76.87431,76.87368l76.87431,-76.87368l72.36765,72.36697l-76.87433,76.87431l76.87433,76.87431l-72.36765,72.36765l-76.87431,-76.87433l-76.87431,76.87433l-72.36697,-72.36765l76.87368,-76.87431l-76.87368,-76.87431z"},buttons:[]}},L=q.basic,Q="shapelib";return{svgicons:"extensions/ext-shapes.xml",buttons:[{id:"tool_shapelib",type:"mode_flyout",position:6,title:"Shape library",icon:"extensions/ext-shapes.png",events:{click:function(){w.setMode(Q)}}}],callback:function(){var K=
+$('<div id="shape_buttons">');$("#tools_shapelib > *").wrapAll(K);var I=$("#tools_shapelib");s("basic");$("#shape_buttons").mouseup(function(R){R=$(R.target).closest("div.tool_button");if(R.length){var N=R.children().clone().attr({width:24,height:24});I.children(":not(.flyout_arrow_horiz)").remove();I.append(N).attr("data-curopt","#"+R[0].id).mouseup();w.setMode(Q);p=R[0].id.substr((Q+"_").length);b=L.data[p];$(".tools_flyout").fadeOut()}});K=$('<div id="shape_cats">');var S="";$.each(B,function(R,
+N){S+="<div data-cat="+R+">"+N+"</div>"});K.html(S).children().bind("mouseup",function(){var R=$(this);R.siblings().removeClass("current");R.addClass("current");s(R.attr("data-cat"));return false});K.children().eq(0).addClass("current");$("#tools_shapelib").prepend(K);I.mouseup(function(){w.setMode(b?Q:"select")});$("#tool_shapelib").remove();K=$("#tools_shapelib").height();$("#tools_shapelib").css({"margin-top":-(K/2),"margin-left":3})},mouseDown:function(K){if(w.getMode()===Q){var I=f=K.start_x;
+K=d=K.start_y;var S=w.getStyle();c=w.addSvgElementFromJson({element:"path",curStyles:true,attr:{d:b,id:w.getNextId(),opacity:S.opacity/2,style:"pointer-events:none"}});c.setAttribute("d",b);if(/[a-z]/.test(b)){b=L.data[p]=w.pathActions.convertPath(c);c.setAttribute("d",b);w.pathActions.fixEnd(c)}c.setAttribute("transform","translate("+I+","+K+") scale(0.005) translate("+-I+","+-K+")");w.recalculateDimensions(c);w.getTransformList(c);v=c.getBBox();totalScale={sx:1,sy:1};return{started:true}}},mouseMove:function(K){if(w.getMode()===
+Q){var I=w.getZoom(),S=K.event,R=K.mouse_x/I,N=K.mouse_y/I;K=w.getTransformList(c);var ga=c.getBBox();I=ga.x;var oa=ga.y,Y=ga.width,V=ga.height,ea=R-f,Ba=N-d,ja={x:Math.min(f,R),y:Math.min(d,N),width:Math.abs(R-f),height:Math.abs(N-d)},ca=ga=0;V=V?(V+Ba)/V:1;Y=Y?(Y+ea)/Y:1;Y=ja.width/v.width;V=ja.height/v.height;Y=Y||1;V=V||1;if(R<f)ga=v.width;if(N<d)ca=v.height;R=n.createSVGTransform();N=n.createSVGTransform();ja=n.createSVGTransform();R.setTranslate(-(I+ga),-(oa+ca));if(S.shiftKey){replaced=true;
+S=Math.min(Math.abs(Y),Math.abs(V));Y=S*(Y<0?-1:1);V=S*(V<0?-1:1);if(totalScale.sx!=totalScale.sy){S=totalScale.sx>totalScale.sy?1:totalScale.sx/totalScale.sy;Y*=totalScale.sy>totalScale.sx?1:totalScale.sy/totalScale.sx;V*=S}}totalScale.sx*=Y;totalScale.sy*=V;N.setScale(Y,V);ja.setTranslate(I+ga,oa+ca);K.appendItem(ja);K.appendItem(N);K.appendItem(R);w.recalculateDimensions(c);v=c.getBBox()}},mouseUp:function(K){if(w.getMode()===Q){if(K.mouse_x==f&&K.mouse_y==d)return{keep:false,element:c,started:false};
+w.setMode("select");return{keep:true,element:c,started:false}}}}});(function(){for(var a=0,s=["ms","moz","webkit","o"],g=0;g<s.length&&!window.requestAnimationFrame;++g){window.requestAnimationFrame=window[s[g]+"RequestAnimationFrame"];window.cancelAnimationFrame=window[s[g]+"CancelAnimationFrame"]||window[s[g]+"CancelRequestAnimationFrame"]}if(!window.requestAnimationFrame)window.requestAnimationFrame=function(b){var p=(new Date).getTime(),w=Math.max(0,16-(p-a)),c=window.setTimeout(function(){b(p+w)},w);a=p+w;return c};if(!window.cancelAnimationFrame)window.cancelAnimationFrame=
+function(b){clearTimeout(b)}})();(function(a){function s(q){var L=q.originalEvent;if(!L.touches||L.targetTouches.length===1&&L.touches.length===1){c.call(this,q);q=a(this);q.bind(v,g);q.bind(n,b)}else{clearTimeout(B);w.call(this)}}function g(q){if(B!=null){var L=q.originalEvent;q=L.changedTouches?L.changedTouches[0].pageX:L.pageX;L=L.changedTouches?L.changedTouches[0].pageY:L.pageY;var Q=a(this).data("taphold.point");q=q-Q.x;L=L-Q.y;if(Math.sqrt(q*q+L*L)>d){clearTimeout(B);w.call(this)}}}function b(){clearTimeout(B);w.call(this)}
+function p(q){w.call(this);a(this).data("taphold.handler").call(this,q)}function w(){B=null;a(this).unbind(v,g);a(this).unbind(n,b)}function c(q){if(B==null){var L=this;B=setTimeout(function(){p.call(L,q)},f);var Q=q.originalEvent,K={};K.x=Q.changedTouches?Q.changedTouches[0].pageX:Q.pageX;K.y=Q.changedTouches?Q.changedTouches[0].pageY:Q.pageY;a(this).data("taphold.point",K)}}var f=1E3,d=5,n="touchend",v="touchmove",B=null;a.event.special.taphold={setup:function(){},add:function(q){a(this).data("taphold.handler",
+q.handler);q.data?a(this).bind("touchstart",q.data,s):a(this).bind("touchstart",s)},remove:function(q){clearTimeout(B);w.call(this);q.data?a(this).unbind("touchstart",q.data,s):a(this).unbind("touchstart",s)},teardown:function(){}}})(jQuery);
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/temp.css
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/temp.css	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/editor/temp.css	(revision 29468)
@@ -0,0 +1,2665 @@
+#svg_editor .jPicker .Icon {
+    display: inline-block;
+    height: 24px;
+    position: relative;
+    text-align: left;
+    width: 25px;
+}
+#svg_editor .jPicker .Icon span.Color, #svg_editor .jPicker .Icon span.Alpha {
+    background-position: 2px 2px;
+    display: block;
+    height: 100%;
+    left: 0;
+    position: absolute;
+    top: 0;
+    width: 100%}
+#svg_editor .jPicker .Icon span.Image {
+    background-repeat: no-repeat;
+    cursor: pointer;
+    display: block;
+    height: 100%;
+    left: 0;
+    position: absolute;
+    top: 0;
+    width: 100%}
+#svg_editor .jPicker.Container {
+    z-index: 10;
+}
+
+table#svg_editor .jPicker {
+    width: 545px;
+     z-index: 20;
+}
+
+#svg_editor .jPicker .Move {
+    background-color: #ddd;
+    border-color: #fff #666 #666 #fff;
+    border-style: solid;
+    border-width: 1px;
+    cursor: move;
+    height: 12px;
+    padding: 0;
+}
+#svg_editor .jPicker .Title {
+    display:  none;
+}
+
+#svg_editor .jPicker div.Map {
+    
+  border:  solid #000 1px;
+     
+  cursor: crosshair;
+    
+  height: 260px;
+    
+  margin: 0;
+    
+  overflow: hidden;
+    
+  padding: 0;
+    
+  position: relative;
+    
+  width: 260px;
+    
+}
+#svg_editor .jPicker div[class="Map"] {
+    height: 256px;
+    width: 256px;
+}
+#svg_editor .jPicker div.Bar {
+    border:  solid #000 1px;
+     cursor: n-resize;
+    height: 260px;
+    margin: 0 15px;
+    overflow: hidden;
+    padding: 0;
+    position: relative;
+    width: 24px;
+}
+#svg_editor .jPicker div[class="Bar"] {
+    height: 256px;
+    width: 20px;
+}
+#svg_editor .jPicker .Map .Map1, #svg_editor .jPicker .Map .Map2, #svg_editor .jPicker .Map .Map3, #svg_editor .jPicker .Bar .Map1, #svg_editor .jPicker .Bar .Map2, #svg_editor .jPicker .Bar .Map3, #svg_editor .jPicker .Bar .Map4, #svg_editor .jPicker .Bar .Map5, #svg_editor .jPicker .Bar .Map6 {
+    background-color: transparent;
+    background-image: none;
+    display: block;
+    left: 0;
+    position: absolute;
+    top: 0;
+}
+#svg_editor .jPicker .Map .Map1, #svg_editor .jPicker .Map .Map2, #svg_editor .jPicker .Map .Map3 {
+    height: 2596px;
+    width: 256px;
+}
+#svg_editor .jPicker .Bar .Map1, #svg_editor .jPicker .Bar .Map2, #svg_editor .jPicker .Bar .Map3, #svg_editor .jPicker .Bar .Map4 {
+    height: 3896px;
+    width: 20px;
+}
+#svg_editor .jPicker .Bar .Map5, #svg_editor .jPicker .Bar .Map6 {
+    height: 256px;
+    width: 20px;
+}
+#svg_editor .jPicker .Map .Map1, #svg_editor .jPicker .Map .Map2, #svg_editor .jPicker .Bar .Map6 {
+    background-repeat: no-repeat;
+}
+#svg_editor .jPicker .Map .Map3, #svg_editor .jPicker .Bar .Map5 {
+    background-repeat: repeat;
+}
+#svg_editor .jPicker .Bar .Map1, #svg_editor .jPicker .Bar .Map2, #svg_editor .jPicker .Bar .Map3, #svg_editor .jPicker .Bar .Map4 {
+    background-repeat: repeat-x;
+}
+#svg_editor .jPicker .Map .Arrow {
+    display: block;
+    position: absolute;
+}
+#svg_editor .jPicker .Bar .Arrow {
+    display: block;
+    left: 0;
+    position: absolute;
+}
+#svg_editor .jPicker .Preview {
+    font-size: 9px;
+    text-align: center;
+}
+#svg_editor .jPicker .Preview div.bgt  {
+    height: 62px;
+    margin: 0 auto;
+    padding: 0;
+    width: 62px;
+}
+
+
+#svg_editor .jPicker .Preview div span {
+    border: 1px solid #000;
+    display: block;
+    height: 30px;
+    margin: 0 auto;
+    padding: 0;
+    width: 60px;
+}
+#svg_editor .jPicker .Preview .Active {
+    border-bottom-width: 0;
+}
+#svg_editor .jPicker .Preview .Current {
+    border-top-width: 0;
+    cursor: pointer;
+}
+#svg_editor .jPicker .Button {
+    text-align: center;
+    width: 115px;
+}
+#svg_editor .jPicker .Button input {
+    width: 100px;
+}
+
+#svg_editor .jPicker td.Radio {
+    margin: 0;
+    padding: 0;
+    width: 31px;
+}
+#svg_editor .jPicker td.Radio input {
+    margin: 0 5px 0 0;
+    padding: 0;
+}
+#svg_editor .jPicker td.Text {
+    font-size: 12px!important;
+    height: 22px;
+    margin: 0;
+    padding: 0;
+    text-align: left;
+    width: 70px;
+}
+#svg_editor .jPicker tr.Hex td.Text {
+    width: 100px;
+    color: #666;
+}
+
+#svg_editor .jPicker tr.Hex td.Text span {
+    width: 100px;
+    color: #333;
+}
+#svg_editor .jPicker td.Text input {
+    background-color: #fff;
+    border: 1px inset #aaa;
+    height: 15px;
+    margin: 0 0 0 5px;
+    text-align: left;
+    width: 30px;
+    color: #333;
+}
+
+#svg_editor #color_picker .jPicker tr.Hex td.Text input.Hex {
+    width: 50px;
+    display: inline-block;
+    float: none;
+}
+
+#svg_editor .jPicker tr.Hex td.Text input.AHex {
+    width: 20px;
+    display: none;
+}
+#svg_editor .jPicker .Grid {
+    text-align: center;
+    float: right;
+    width: 108px;
+}
+#svg_editor .jPicker .Grid span.QuickColor {
+    cursor: pointer;
+    display: inline-block;
+    height: 15px;
+    line-height: 15px;
+    margin: 0;
+    padding: 0;
+    width: 18px;
+}
+#svg_editor .jPicker td  {
+  vertical-align:  top;
+}
+#svg_editor .jPicker td.colorsquare  {
+  width:  275px;
+}
+
+#svg_editor .jPicker .prev_div  {
+  margin-top:  -15px;
+}
+
+#svg_editor .jPicker .actions {
+  position: absolute;
+  bottom: 20px;
+  left: 20px;
+  right: 20px;
+}
+
+#svg_editor .jPicker .actions .Ok{
+  position: absolute;
+  top: 0;
+  right: 0px;
+}
+
+#svg_editor .jPicker .actions .Cancel{
+  position: absolute;
+  top: 0;
+  left: 0px;
+}
+
+#svg_editor .jPicker .color_preview {
+  width: 62px;
+  margin: 0 auto;
+}
+/* 
+ * jGraduate Default CSS
+ * 
+ * Copyright (c) 2010 Jeff Schiller
+ * http://blog.codedread.com/
+ *
+ * Copyright (c) 2010 Alexis Deveria
+ * http://a.deveria.com/
+ *
+ * Licensed under the Apache License Version 2
+ */
+
+h2.jGraduate_Title {
+  display: none;
+}
+
+.jGraduate_Picker {
+	position: absolute;
+	padding: 20px;
+}
+
+.jGraduate_tabs li {
+	display: inline-block;
+	padding: 5px 10px;
+	margin-right: 5px;
+	cursor: pointer;
+}
+
+li.jGraduate_tab_current {
+  background: #fff;
+  border-radius: 3px 3px 0 0;
+}
+
+.jGraduate_colPick {
+	display: none;
+}
+
+.jGraduate_gradPick {	
+	display: none;
+	overflow: visible;
+/*	position: relative;*/
+}
+
+.jGraduate_tabs {
+	position: relative;
+	background-color: #ddd;
+	padding: 10px 10px 0 10px;
+	margin: -20px -20px 20px -20px;
+	border-radius: 3px 3px 0 0;
+}
+
+div.jGraduate_Swatch {
+	float: left;
+	margin: 0 15px 0 0;
+}
+div.jGraduate_GradContainer {
+	border: solid #000 1px;
+	background-image: url(../images/map-opacity.png); 
+	background-position: 0px 0px;
+	height: 256px;
+	width: 256px;
+	position: relative;
+}
+
+div.jGraduate_GradContainer div.grad_coord {
+  background: rgba(0,0,0,0.8);
+  border: 2px solid white;
+  border-radius: 15px;
+  -moz-border-radius: 5px;
+  width: 14px;
+  height: 14px;
+  position: absolute;
+  margin: -7px -7px;
+  top: 0;
+  left: 0;
+  text-align: center;
+  font-size: 8px;
+  line-height: 14px;
+  color: white;
+  text-decoration: none;
+  cursor: pointer;
+  -moz-user-select: none;
+  -webkit-user-select: none;
+}
+
+.jGraduate_AlphaArrows {
+	position: absolute;
+	margin-top: -10px;
+	margin-left: 250.5px;
+}
+
+div.jGraduate_Opacity {
+	border: 2px inset #eee;
+	margin-top: 14px;
+	background-color: black;
+	background-image: url(../images/Maps.png);
+	background-position: 0px -2816px;
+	height: 20px;
+	cursor: ew-resize;
+}
+
+div.jGraduate_StopSlider {
+	margin: -10px 0 0 -10px;
+	width: 276px;
+	overflow: visible;
+	background: white;
+	height: 45px;
+	cursor: pointer;
+}
+
+div.jGraduate_StopSection {
+	width: 120px;
+	float: left;
+}
+
+div.jGraduate_StopSection.jGraduate_SpreadMethod {
+  display: none;
+}
+
+input.jGraduate_Ok, input.jGraduate_Cancel {
+	display: block;
+	width: 100px;
+}
+input.jGraduate_Ok {
+	margin: 0 0 5px 0;
+}
+
+.colorBox {
+	float: left;
+	height: 16px;
+	width: 16px;
+	border: 1px solid #808080;
+	cursor: pointer;
+	margin: 4px 4px 4px 30px;
+}
+
+.colorBox + label {
+	float: left;
+	margin-top: 7px;
+}
+
+label.jGraduate_Form_Heading {
+
+  color: #333;
+	padding: 2px;
+	font-weight: bold;
+	font-size: 13px;
+}
+
+div.jGraduate_Form_Section {
+	-moz-border-radius: 5px;
+	-webkit-border-radius: 5px;
+	padding: 15px 5px 5px 5px;
+	margin: 5px 2px;
+	width: 100px;
+	text-align: center;
+	overflow: auto;
+	background: #eee;
+}
+
+div.jGraduate_Form label {
+	padding: 0 2px;
+	color: #333;
+}
+
+div.jGraduate_StopSection input[type=text],
+div.jGraduate_Slider input[type=text] {
+	width: 33px;
+	color: #333;
+}
+
+div.jGraduate_LightBox {
+	position: fixed;
+	top: 0px;
+	left: 0px;
+	right: 0px;
+	bottom: 0px;
+	background-color: #000;
+	opacity: 0.5;
+	display: none;
+}
+
+div.jGraduate_stopPicker {
+  position: absolute;
+  display: none;
+  background: 
+  white;
+  padding: 20px;
+  border-radius: 3px;
+  width: 530px;
+  height: 300px;
+  box-shadow: 0 5px 25px 
+  black;
+}
+
+
+.jGraduate_gradPick {
+	width: 526px;
+}
+
+.jGraduate_gradPick div.jGraduate_Slider {
+	line-height: 160%
+}
+
+.jGraduate_gradPick div.jGraduate_Slider label:last-child {
+	position: absolute;
+	right: 10px;
+	top: 0;
+	color: #999;
+	font-weight: bold;
+}
+
+.jGraduate_gradPick div.jGraduate_Slider label:last-child input {
+  margin: 0 3px 0 0;
+  color: #333;
+}
+
+.jGraduate_gradPick .jGraduate_Form {
+	float: left;
+	width: 270px;
+	position: absolute;
+	left: 284px;
+	width: 266px;
+	height: 200px;
+	top: 195px;
+	margin: -3px 3px 0px 10px;
+	line-height: 200%;
+}
+
+.jGraduate_gradPick .jGraduate_Form label,
+.jGraduate_gradPick .jGraduate_Form input {
+  width: auto;
+  float: left;
+}
+
+.jGraduate_gradPick .jGraduate_Form.jGraduate_rg_field label, .jGraduate_gradPick .jGraduate_Form.jGraduate_rg_field input {
+width: auto;
+float: left;
+font-size: 11px;
+}
+
+.jGraduate_gradPick .jGraduate_Form.jGraduate_rg_field #color_picker_jGraduate_match_ctr {
+  float: none;
+}
+
+.jGraduate_gradPick .jGraduate_Form label {
+  clear: left;
+}
+
+.jGraduate_gradPick .jGraduate_Points {
+	position: static;
+	float: left;
+  margin: 0;
+  width: auto;
+	}
+
+.jGraduate_Colorblocks {
+	display: table;
+	border-spacing: 0 5px;
+}
+
+.jGraduate_colorblock {
+	display: table-row;
+}
+
+.jGraduate_Colorblocks .jGraduate_colorblock > * {
+	display: table-cell;
+	vertical-align: middle;
+	margin: 0;
+	float: none;
+}
+
+.jGraduate_gradPick .jGraduate_Form_Section {
+	padding-top: 9px;
+}
+
+
+.jGraduate_Slider {
+	text-align: center;
+	float: left;
+	width: 100%;
+  position: relative;
+  margin: 5px 0;
+}
+
+.jGraduate_Slider .jGraduate_Form_Section {
+	border: none;
+	width: 250px;
+	padding: 0 2px;
+	overflow: visible;
+}
+
+
+.jGraduate_Slider label.prelabel {
+	width: 40px;
+	text-align: left;
+}
+
+.jGraduate_SliderBar {
+	width: 140px;
+	float: left;
+	margin: 0 5px;
+	border:1px solid #BBB;
+	height:20px;
+	position: relative;
+}
+
+div.jGraduate_Slider input {
+	margin-top: 5px;
+}
+
+div.jGraduate_Slider img {
+	top: 0;
+	left: 0;
+	position: absolute;
+	cursor:ew-resize;
+}
+
+.jPicker .Button .Ok, .jGraduate_Picker .jGraduate_OkCancel .jGraduate_Ok  {
+  -webkit-appearance: none;
+	margin: 0;
+  position: absolute;
+  bottom: 5px;
+  right: 5px;
+}
+
+.jPicker .Button .Cancel, .jGraduate_Picker .jGraduate_OkCancel .jGraduate_Cancel {
+  margin: 0;
+  position: absolute;
+	bottom: 5px;
+	left: 5px;
+}
+/* Comment to prevent wrong concat */
+
+body {
+	background: #3f3f3c;
+	font: 13px/120% 'Lucida Sans', 'Lucida Grande', 'Lucida Sans Unicode', sans-serif;
+	-webkit-touch-callout: none;
+  -webkit-user-select: none;
+  -khtml-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+	margin: 0;
+	padding: 0;
+}
+
+::selection {background: #000; color: #fff; /* Safari */}
+::-moz-selection {background: #000; color: #fff; /* Firefox */}
+
+html, body {
+  	overflow: hidden;
+  	width: 100%;
+  	height: 100%;
+}
+
+::-webkit-scrollbar {
+    width: 5px;
+    height: 5px;
+    background: #444;
+}
+
+::-webkit-scrollbar-track {
+    border-radius: 10px;
+    background: #444;
+}
+
+::-webkit-scrollbar-thumb {
+    border-radius: 10px;
+    background: #666;
+}
+
+::-webkit-scrollbar-corner {
+	background: #444;
+}
+
+#browser-not-supported {
+        font-size: 0.8em;
+        font-family: Verdana, Helvetica, Arial;
+        color: #000000;
+}
+
+ #svgroot {
+	-moz-user-select: none;
+	-webkit-user-select: none;
+	position: absolute;
+	top: 0;
+	left: 0;
+}
+
+#svg_editor {
+	background: #2f2f2c;
+}
+
+ #menu_bar {
+  padding: 0 0 0 50px;
+	background: #2f2f2c;
+	position: relative;
+	z-index: 2;
+}
+
+ #menu_bar.active .menu.open .menu_list {
+  display: block;
+}
+
+ .menu {
+  position: relative;
+  z-index: 5;
+  color: #333;
+  display: inline-block;
+}
+
+ .menu_title {
+  cursor: pointer;
+  display: inline-block;
+  padding: 7px 10px;
+  z-index: 10;
+  color: #fff;
+  position: relative;
+  height: 16px;
+  vertical-align: top;
+}
+
+.touch   .menu_title { 
+	padding: 7px 17px;
+	height: 26px;
+	line-height: 26px;
+}
+
+ .menu .menu_title:hover {
+  background: rgba(255,255,255,0.1);
+}
+
+ .menu_list .separator {
+  margin: 5px 0;
+  border-top: solid #ddd 1px;
+}
+
+ .menu_list {
+  display: none;
+  position: absolute;
+  top: 28px;
+  left: 0;
+  white-space: nowrap;
+  background: white;
+  padding: 7px 0;
+  border-radius: 0 3px 3px 3px;
+  box-shadow: 0 0 20px rgba(0,0,0,0.8);
+}
+
+.touch  .menu_list {
+	top: 38px;
+}
+
+ #menu_bar.active .menu.open .menu_title {
+  background: white;
+  color: #333;
+}
+
+ .menu_list .menu_item {
+  position: relative;
+  overflow: hidden;
+	line-height: 22px;
+	padding: 5px 69px 5px 25px;
+	cursor: default;
+	color: #333;
+}
+
+ .menu_list .menu_item.tool_button {
+  background: transparent;
+  border: none;
+  margin: 0;
+  padding: 5px 55px 5px 25px;
+  height: auto;
+  width: auto;
+}
+
+ .menu_list .menu_item.push_button_pressed:before {
+  content: 'â';
+  position: absolute;
+  display: block;
+  left: 7px;
+  top: 3px;
+  width: 20px;
+  height: 20px;
+}
+
+ .menu_list .menu_item:hover,
+ .menu_list .menu_item.push_button_pressed:hover {
+	background: rgba(0,0,0,0.1);
+	color: #000;
+}
+
+ .menu_list .menu_item.disabled:hover,
+ .menu_list .menu_item.push_button_pressed.disabled:hover {
+	background: transparent;
+	color: #333;
+}
+
+ .menu_list .menu_item.push_button_pressed {
+ background: transparent;
+ border: none; 
+ width: auto;
+ height: auto;
+ margin: 0;
+}
+
+ .menu_list .menu_item span {
+  display: block;
+  position: absolute;
+  right: 10px;
+  padding: 5px;
+  background: rgba(0,0,0, 0.1);
+  top: 6px;
+  height: 10px;
+  text-align: center;
+  font-size: 10px;
+  line-height: 120%;
+}
+
+ #svgcanvas {
+	line-height: normal;
+	display: inline-block;
+	background-color: #A0A0A0;
+	text-align: center;
+	vertical-align: middle;
+	width: 640px;
+	height: 480px;
+	position: relative;
+	background: #3F3F3C;
+}
+
+#rulers > div {
+	position: absolute;
+	background: #2f2f2c;
+	z-index: 1;
+	overflow: hidden;
+  -webkit-font-smoothing: none;
+}
+
+#rulers #ruler_corner {
+	top: 30px;
+	left: 50px;
+	width: 15px;
+	height: 15px;
+  border: solid #444 1px;
+	z-index: 2;
+}
+
+#ruler_x {
+	height: 15px;
+	top: 30px;
+	left: 66px;
+	right: 175px;
+	border-top: solid #444 1px;
+	border-right: solid #444 1px;
+}
+
+#ruler_x_cursor {
+  height: 15px;
+  border-right: dotted #999 1px;
+  position: absolute;
+  background: #2f2f2c;
+}
+
+#ruler_y_cursor {
+  width: 15px;
+  border-top: dotted #999 1px;
+  position: absolute;
+  background: #2f2f2c;
+}
+
+#rulers.moved #ruler_corner,
+#rulers.moved #ruler_x {
+	top: 101px;
+}
+
+#ruler_y {
+	width: 15px;
+	top: 46px;
+	left: 50px;
+	bottom: 40px;
+	border-left: solid #444 1px;
+	border-bottom: solid #444 1px;
+}
+
+#rulers.moved #ruler_y {
+	top: 116px;
+}
+
+
+#ruler_x canvas:first-child {
+	margin-left: -16px;
+}
+
+#ruler_x canvas {
+	float: left;
+}
+
+#ruler_y canvas {
+	margin-top: -16px;
+}
+
+#ruler_x > div, 
+#ruler_y > div {
+	overflow: hidden;
+}
+
+ #palette {
+	display: block;
+	position: absolute;
+	z-index: 2;
+	left: 10px;
+	bottom: 5px;
+	width: 410px;
+	right: 145px;
+	height: 30px;
+}
+
+ .palette_item {
+	height: 20%;
+	width: 5.2%;
+	float: left;
+	cursor: url(../images/eyedropper.png) 0 16, crosshair;
+}
+
+.palette_item.transparent, .palette_item.white, .palette_item.black {
+  background: #fff;
+  position: absolute;
+  width: 10px;
+  height: 10px;
+  left: -10px;
+  top: 0;
+}
+
+.palette_item.transparent {
+	background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNXG14zYAAAAVdEVYdENyZWF0aW9uIFRpbWUAOC8yMi8xMg1cp6sAAABESURBVBiVjdBBCgAgCETRr/e/87SJKFPLnfIcQRMIwMBIShIAvgZzoSrfkzrs8WyF1+kX9r3p8AE7nL7kSpSshN+JEQ8GixkF0mSevgAAAABJRU5ErkJggg==);
+}
+
+.palette_item.black {
+  background: #000;
+  top: 10px;
+}
+
+.palette_item.white {
+  background: #fff;
+  top: 20px;
+}
+
+ #color_tools {
+  position: relative;
+  width: 48px;
+  height: 48px;
+  margin: 6px 6px 0 6px;
+}
+
+.touch  #color_tools {
+	width: auto;
+	height: auto;
+}
+
+#tool_fill {
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: 1;
+}
+
+.touch #tool_fill {
+		position: static;
+		width: 36px;
+		height: 36px;
+		margin-bottom: 10px;
+}
+
+
+#tool_fill.active, #tool_stroke.active {
+  z-index: 2;
+}
+
+#tool_stroke {
+	top: 14px;
+	left: 14px;
+}
+
+.touch #tool_fill.active, .touch #tool_stroke.active {
+	outline: 4px solid #09f;
+}
+
+#tool_fill, #tool_stroke, #tool_canvas {
+  box-shadow: 0 0 0 1px #2f2f2c;
+  position: absolute;
+}
+
+.touch #tool_fill, .touch #tool_stroke, .touch #tool_canvas {
+	position: relative;
+	top: 0;
+	left: 0;
+}
+
+#color_canvas_tools {
+	float: left;
+	cursor: pointer;
+}
+
+#tool_fill .color_block {
+  width: 24px;
+  height: 24px;
+  overflow: hidden;
+  border: solid #ccc 1px;
+}
+
+.touch  #tool_eyedropper {
+	margin-top: 6px;
+}
+
+.touch #tool_fill .color_block {
+  width: 36px;
+  height: 36px;
+}
+
+.touch #tool_fill .color_block svg {
+  width: 36px !important;
+  height: 36px !important;
+}
+
+.touch  #tool_switch {
+	display: none;
+} 
+
+#use_panel .tool_button, #path_node_panel .tool_button {
+	color: #999;
+	border: solid #3F3F3C 1px;
+	border-radius: 3px;
+	padding: 3px 10px 3px 40px;
+	background: 
+	transparent;
+	position: relative;
+	margin-top: 10px;
+	width: 90px;
+	height: 23px;
+	line-height: 24px;
+}
+
+#use_panel .tool_button {
+	padding-left: 10px;
+	margin-bottom: 10px;
+	width: 124px;
+}
+
+ #path_node_panel .tool_button img,  #path_node_panel .tool_button svg {
+	position: absolute;
+	left: 5px;
+	top: 3px;
+}
+
+ #color_tools #tool_fill .color_block:hover,  #color_tools #tool_stroke .color_block:hover {
+  border-color: #fff;
+}
+
+ #color_tools #tool_fill .color_block > div {
+  position: absolute;
+  top: 0;
+  left: 0;
+}
+
+.touch  #color_tools #tool_fill .color_block > div {
+	position: relative;
+}
+
+ #color_tools #tool_fill .color_block #fill_bg,  #color_tools #tool_stroke .color_block #stroke_bg {
+  position: absolute;
+  top: 1px;
+  left: 1px;
+  bottom: 1px;
+  right: 1px;
+}
+
+.touch  #color_tools #tool_fill .color_block #fill_bg, .touch  #color_tools #tool_stroke .color_block #stroke_bg {
+	width: 36px;
+	height: 36px;
+	right: auto;
+	bottom: auto;
+}
+
+.touch #tool_stroke {
+  position: relative;
+  top: 0;
+  left: 0;
+  z-index: 0;
+}
+
+#stroke_color:after {
+  content: '';
+  position: absolute;
+  display: block;
+  width: 8px;
+  height: 8px;
+  left: 8px;
+  top: 8px;
+  background: #ccc;
+  box-shadow: 0 0 0 1px #000;
+}
+
+.touch #stroke_color:after {
+	height: 14px;
+   left: 10px;
+   position: absolute;
+   top: 10px;
+   width: 14px;
+	 
+}
+
+ #color_tools #tool_switch {
+  cursor: pointer;
+  opacity: 0.7;
+  width: 11px;
+  height: 11px;
+  background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABV0RVh0Q3JlYXRpb24gVGltZQA2LzE0LzEyP6j5+gAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNXG14zYAAAB4SURBVBiVjZHRCYUwDEVvxIF0kZKN7EjiIrrReR/PSNSKXiikcE5JUtMeADMzXQIcdRfgFWqlyyB7ap1wL+0HAnIv1DqRJUBxTkLUWXIvh9AHkIeb58UkIUnDMH4ZR0otCfhv4ynbtp7ut722ZniFG8L9xx4Ek6QfN9huARmYwR0AAAAASUVORK5CYII=) top left no-repeat;
+  position: absolute;
+  top: -2px;
+  left: 28px;
+}
+
+ #color_tools #cross:hover {
+  opacity: 1;
+}
+
+ #color_tools #tool_stroke:hover #stroke_color:after {
+  background: #fff;
+}
+
+ #color_tools #tool_stroke .color_block {
+  width: 24px;
+  height: 24px;
+  overflow: hidden;
+  border: solid #ccc 1px;
+}
+
+.touch  #color_tools #tool_stroke .color_block {
+  width: 36px;
+  height: 36px;
+}
+
+ #color_tools #tool_stroke .color_block > div {
+  position: absolute;
+  bottom: 0;
+  right: 0;
+}
+
+.touch  #color_tools #tool_stroke .color_block > div {
+  position: relative;
+}
+
+
+
+ #color_tools .icon_label {
+	padding: 0;
+	width: 24px;
+	height: 100%;
+	cursor: pointer;
+	position: absolute;
+}
+
+ #linkLabel > svg {
+	height: 20px;
+	padding-top: 4px;
+}
+
+ div#workarea {
+	display: inline-table-cell;
+	position:absolute;
+	top: 30px;
+	left: 50px;
+	bottom: 40px;
+	right: 175px;
+	background-color: #444;
+	overflow: auto;
+	text-align: center;
+	-webkit-transition: -webkit-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);
+	-moz-transition: -moz-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);
+	-o-transition: -o-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);
+	-ms-transition: -ms-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);
+	transition: transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);
+}
+
+.touch  div#workarea {
+	top: 40px;
+}
+
+ .menu .menu_list {
+  display: none;
+  position: absolute;
+}
+
+.tool_button, 
+.tool_button_current,
+.tool_button_pressed {
+  cursor: pointer;
+}
+
+ .tool_button:hover, 
+ .push_button:hover,
+ .buttonup:hover,
+ .buttondown,
+ .tool_button_current,
+ .push_button_pressed
+{
+  background-color: #fff;
+}
+
+ .tool_button.disabled,
+ .tool_button.disabled:hover {
+  opacity: 0.3;
+  background-color: #aaa;
+}
+
+ #tools_left .tool_button { background: #2f2f2c; position: relative;}
+ #tools_left .tool_button.loaded { background: #ccc;}
+ #tools_left .tool_button.loaded:hover { background: #fff;}
+ #tools_left .tool_button:after,  #tools_left .tool_button_current:after {
+	position: absolute;
+	content: '';
+	border: solid #2f2f2c 2px;
+	top: -1px;
+	left: -1px;
+	width: 26px;
+	height: 26px;
+	z-index: 0;
+}
+
+ #tools_left .tool_button_current {
+	background-color: #0cf;
+}
+
+ #main_icon span {
+	position: absolute;
+	width: 100%;
+	height: 100%;
+	display: block;
+	z-index: 2;
+}
+
+ #tools_top {
+	position: absolute;
+	width: 160px;
+	height: 100%;
+	background: #2f2f2c;
+	right: 0;
+	top: 20px;
+	border-bottom: none;
+	overflow: visible;
+	padding: 0 0 0 15px;
+}
+
+.touch  #tools_top {
+	top: 30px;
+}
+
+ label {
+  display: block;
+  color: #999;
+}
+
+div#font-selector { 
+    width:140px; 
+    height:300px; 
+    overflow:auto;  
+    margin:0 auto; 
+    position:absolute; 
+    top:27px;
+    right:0;
+    border:1px solid black; 
+    padding:10px; 
+    display:none; 
+    background-color:white;
+    z-index: 10;
+    border-radius: 3px;
+    box-shadow: 0 5px 10px rgba(0,0,0,0.7);
+}
+
+div#font-selector img {
+  width: 100%;
+}
+
+div#font-selector .font-item {
+  border-bottom: solid #ddd 1px;
+  padding: 5px 10px;
+  margin: 0 -10px;
+}
+
+div#font-selector .font-item:hover {
+  background-color: #eee;
+}
+
+ #tools_top #marker_panel * {
+  float: left;
+}
+
+ #tools_top #marker_panel h4 {
+  float: none;
+}
+
+ #tools_top #marker_panel .dropdown .icon_label {
+  width: 36px;
+  height: 20px;
+  margin-top: 2px;
+  border: solid #3f3f3c 1px;
+  text-align: center;
+}
+
+ #tools_top #marker_panel .dropdown button {
+  margin-top: 2px;
+}
+
+ #tools_top #marker_panel #marker_panel_title {
+  float: none;
+  color: #fff;
+  margin-bottom: 3px;
+}
+
+ #tools_top #marker_panel .dropdown .icon_label img {
+  float: none;
+}
+
+
+ #color_picker input[type=text], #color_picker  input[type=number] {
+  width: 30px;
+  background: #fff;
+}
+
+ .dropdown_set input[type=text],  .dropdown_set input[type=number] {
+  width: 50px;
+}
+
+ input[type=text].wide,  input[type=number].wide {width: 110px;}
+ input[type=text].tuco,  input[type=number].tuco {width: 150px;}
+
+ input[type=submit],  input[type=button], button {
+  background: #4F80FF;
+  color: #fff;
+  border-radius: 3px;
+  padding: 7px 17px;
+  border: none;
+  line-height: 140%;
+	font-size: 14px;
+	font-weight: bold;
+	font-family: sans-serif;
+
+}
+
+ input[type=submit]:hover,  button:hover {
+box-shadow: inset 0 3px 10px rgba(255, 255, 255, 0.1),
+            inset 0 -3px 10px rgba(0, 0, 0, 0.2);
+}
+
+ input[type=submit]:hover,  button:hover {background: #2F84C1;}
+ input[type=submit]:active,  button:active { box-shadow: inset 0 2px 2px rgba(0,0,0,0.2); border-bottom: solid rgba(255,255,255,0.1) 1px;}
+
+
+ #tools_left {
+	position: absolute;
+	border-right: none;
+	width: 50px;
+	top: 30px;
+	bottom: 0;
+	left: 0;
+	background: #2F2F2C; /* Needed so flyout icons don't appear on the left */
+	z-index: 4;
+}
+
+#workarea.wireframe #svgcontent * {
+	fill: none;
+	stroke: #000;
+	stroke-width: 1px;
+	stroke-opacity: 1.0;
+	stroke-dasharray: 0;
+	opacity: 1;
+	pointer-events: stroke;
+	vector-effect: non-scaling-stroke;
+	filter: none;
+}
+
+#workarea.wireframe #svgcontent text {
+	fill: #000;
+	stroke: none;
+}
+
+#workarea.wireframe #canvasBackground > rect {
+	fill: #FFF !important;
+}
+
+#workarea #canvasBackground > rect {
+  stroke: transparent !important;
+}
+
+.context_panel {
+	display: none;
+}
+
+#canvas_panel {
+	display: block;
+}
+
+ #multiselected_panel .selected_tool {
+	vertical-align: 12px;
+}
+
+#cur_context_panel {
+	position: absolute;
+  top: 47px;
+  left: 68px;
+	line-height: 22px;
+	overflow: auto;
+	border-bottom: none;
+	border-right: none;
+	padding-left: 5px;
+	font-size: 12px;
+	background: black;
+  color: #999;
+  opacity: 0.5;
+  padding: 0 10px;
+  border-radius: 0 10px 10px 0;
+}
+
+ #cur_context_panel a {
+	float: none;
+	text-decoration: none;
+	color: #fff;
+}
+
+ #cur_context_panel a:hover {
+	text-decoration: underline;
+}
+
+
+ #tools_left .tool_button,
+ #tools_left .tool_button_current {
+	position: relative;
+	z-index: 11;
+}
+
+ .flyout_arrow_horiz {
+	position: absolute;
+	bottom: -1px;
+	right: 0;
+	z-index: 10;
+}
+
+.dropdown {
+	position: relative;
+	float: left;
+}
+
+ .dropdown button {
+  width: 21px;
+  height: 22px;
+  padding: 0 3px 0 3px;
+  border: none;
+  background-color: #555;
+  border-radius: 0 2px 2px 0;
+  margin-left: -1px;
+  position: relative;
+}
+
+ .dropdown button:hover {
+  background-color: #666;
+}
+
+ .dropdown button:after {
+  content: '';
+  position: absolute;
+  border: solid transparent 4px;
+  border-top-color: #999;
+  top: 9px;
+  left: 6px;
+}
+
+
+
+.dropdown button.down {
+	border-left: 1px solid #808080;
+	border-top: 1px solid #808080;
+	border-right: 1px solid #FFFFFF;
+	border-bottom: 1px solid #FFFFFF;
+	background-color: #B0B0B0;
+}
+
+.dropdown ul {
+	list-style: none;
+	position: absolute;
+	margin: 0;
+	padding: 0;
+	left: -80px;
+	top: 26px;
+	z-index: 4;
+	display: none;
+}
+
+.dropup ul {
+	top: auto;
+	bottom: 26px;
+	border-radius: 3px;
+	box-shadow: 0 5px 10px #000;
+}
+
+.dropup ul:after {
+  content: '';
+  display: block;
+  position: absolute;
+  bottom: -10px;
+  right: 50%;
+  top: auto;
+  width: 0;
+  height: 0;
+  border: solid transparent 5px;
+  border-top-color: #fff;
+}
+
+.dropdown li {
+	display: block;
+	width: 120px;
+	padding: 5px 10px;
+	color: #333;
+	background: #fff;
+	margin: 0;
+	line-height: 16px;
+}
+
+.dropdown li:first-child {border-radius: 3px 3px 0 0;}
+.dropdown li:last-child {border-radius: 0 0 3px 3px;}
+
+
+.dropdown li:hover {
+	background-color: #ddd;
+	color: #000;
+}
+
+.dropdown li.special {
+	padding: 10px;
+  background: white;
+  border: none;
+  box-shadow: 0 3px 10px black;
+  border-radius: 3px !important;
+}
+
+.dropdown li.special:after {
+  content: '';
+  display: block;
+  position: absolute;
+  top: -10px;
+  right: 50%;
+  border: solid transparent 5px;
+  border-bottom-color: #fff;
+  
+}
+
+.dropdown li.special.down:after {
+  bottom: -10px;
+  right: 50%;
+  top: auto;
+  border: solid transparent 5px;
+  border-top-color: #fff;
+  
+}
+
+ .tool_button, 
+ .push_button,
+ .tool_button_current,
+ .push_button_pressed 
+{
+	height: 27px;
+	width: 27px;
+	border: solid #2f2f2c 8px;
+	border-left-width: 13px;
+	margin: 0;
+	background-color: #ddd;
+	cursor: pointer;
+}
+
+ #main_menu li#tool_open,  #main_menu li#tool_import {
+	position: relative;
+	overflow: hidden;
+}
+
+#tool_image {
+	overflow: hidden;
+}
+
+#tool_open input, 
+#tool_import input,
+#tool_import_bitmap input {
+	position: absolute;
+	opacity: 0;
+	font-size: 10em;
+	top: -5px;
+	right: -5px;
+	margin: 0;
+	cursor: pointer; /* Sadly doesn't appear to have an effect */
+}
+
+ .disabled {
+	opacity: 0.5;
+	cursor: default;
+}
+
+ .width_label {
+	padding-right: 5px;
+}
+
+#text {
+	position: absolute;
+	left: -9999px;
+}
+
+ #tool_bold span,  #tool_italic span { 
+	position: absolute;
+	width: 100%;
+	height: 100%;
+	top: 0; left: 0;
+	background: #ccc;
+	opacity: 0;
+}
+
+
+
+#url_notice {
+	padding-top: 4px;
+	display: none;
+}
+
+ #color_picker {
+	position: absolute;
+	display: none;
+	background: #fff;
+	height: 350px;
+	border-radius: 3px;
+	z-index: 5;
+	box-shadow: 0 5px 10px #000;
+	width: 530px;
+}
+
+ .tools_flyout {
+	position: absolute;
+	display: none;
+	cursor: pointer;
+	width: 385px;
+	z-index: 10;
+	left: 47px !important;
+	height: 324px;
+	background: #fff;
+	border-radius: 5px;
+  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.5);
+}
+
+ .tools_flyout_v {
+	position: absolute;
+	display: none;
+	cursor: pointer;
+	width: 30px;
+}
+
+ .tools_flyout .tool_button {
+	float: left;
+	background-color: #fff;
+	height: 24px;
+	width: 24px;
+}
+
+ #tools_bottom {
+	position: absolute;
+	left: 50px;
+	right: 0;
+	bottom: 0;
+	height: 40px;
+	overflow: visible;
+	background: #2f2f2c;
+}
+
+ #tools_bottom_1 {
+	width: 115px;
+	float: left;
+}
+
+ #tools_bottom_2 {
+	position: relative;
+	float: left;
+	margin-top: 5px;
+}
+
+#tools_bottom input[type=text] {
+	width: 3.2em;
+}
+
+ #tools_top h4 {
+  color: #fff;
+  font-weight: normal;
+  margin: 0;
+  padding: 10px 0 5px 0;
+}
+
+#tools_top .dropdown .icon_label {
+	border: 1px solid transparent;
+/*	margin-top: 3px;*/
+	height: auto;
+}
+
+#tools_top.multiselected #align_tools {
+	display: none;
+}
+
+#tools_top.multiselected #multiselected_panel {
+	display: block !important;
+}
+
+#tools_top.multiselected #multiselected_panel .hidable {
+	display: none;
+}
+
+ .draginput_cell {
+	float: left;
+	height: 26px;
+	height: 26px;
+	border: solid #3f3f3c 10px;
+	outline: solid #2f2f2c 1px;
+	background: #ddd;
+	cursor: pointer;
+	position: relative;
+}
+
+ .draginput_cell:hover {
+	background: #fff;
+}
+
+ .draginput_cell:after {
+	content: '';
+	position: absolute;
+	top: 0;
+	left: 0;
+	border: solid #3f3f3c 1px;
+	height: 26px;
+	width: 26px;
+	z-index: 0;
+}
+
+
+ .align_buttons  .draginput_cell:nth-child(1) {border-radius: 3px 0 0 0;}
+ .align_buttons  .draginput_cell:nth-child(3) {border-radius: 0 3px 0 0;}
+ .align_buttons  .draginput_cell:nth-child(4) {border-radius: 0 0 0 3px;}
+ .align_buttons  .draginput_cell:nth-child(6) {border-radius: 0 0 3px 0;}
+
+
+.align_buttons .push_button {
+  display: block;
+  float: left;
+}
+
+#option_lists ul {
+	display: none;
+	position: absolute;
+	height: auto;
+	z-index: 3;
+	margin: 0;
+	list-style: none;
+	padding-left: 0;
+}
+
+#option_lists .optcols2 {
+	width: 70px;
+	margin-left: -15px;
+}
+
+#option_lists .optcols3 {
+	width: 192px;
+	margin-left: -105px;
+	margin-top: -25px;
+	background: #fff;
+	padding: 5px;
+	box-shadow: 0 5px 10px #000;
+	border-radius: 3px;
+}
+
+#option_lists .optcols3:after {
+  content: '';
+  display: block;
+  position: absolute;
+  top: -10px;
+  right: 70px;
+  border: solid transparent 5px;
+  border-bottom-color: #fff;
+}
+
+
+ #option_lists .tool_button,  #option_lists .push_button,  #option_lists .tool_button_current,  #option_lists .push_button_pressed {
+  border: none;
+  background: transparent;
+}
+
+ #option_lists .tool_button:hover {
+  background: #ddd;
+}
+
+ #option_lists ul li.current {
+	background-color: #F4E284;
+}
+
+#option_lists .optcols4 {
+	width: 130px;
+	margin-left: -44px;
+}
+
+#option_lists ul[class^=optcols] li {
+	float: left;
+}
+
+ ul li.current {
+	background-color: #F4E284;
+}
+
+ #option_lists ul li {
+	margin: 0;
+	border-radius: 0;
+	-moz-border-radius: 0;
+	-webkit-border-radius: 0;
+}
+
+ #copyright {
+	text-align: right;
+	padding-right: .3em;
+}
+
+#svg_source_editor {
+	display: none;
+}
+
+#svg_source_editor #svg_source_overlay {
+	position: absolute;
+	top: 0px;
+	right: 0px;
+	left: 0px;
+	bottom: 0px;
+	background-color: black;
+	opacity: 0.6;
+	z-index: 5;
+}
+
+#svg_source_editor #svg_source_container {
+	position: absolute;
+	top: 30px;
+	left: 100px;
+	right: 100px;
+	bottom: 30px;
+	background-color: #fff;
+	border-radius: 3px;
+	opacity: 1.0;
+	text-align: center;
+	z-index: 6;
+	padding: 15px 0;
+}
+
+#svg_source_editor form {
+	position: absolute;
+	display: block;
+	top: 15px;
+	bottom: 55px;
+	left: 15px;
+	right: 12px;
+	padding: 5px;
+	font-size: 12px;
+}
+
+#svg_source_textarea {
+  width: 100%;
+  height: 100%;
+  line-height: 140%;
+  font-family: 'Lucida Sans', 'Lucida Grande', 'Lucida Sans Unicode', sans-serif;
+  font-size: 12px;
+}
+
+#svg_source_editor #tool_source_back {
+  position: absolute;
+  bottom: 45px;
+  left: 15px;
+	right: 15px;
+}
+
+#svg_source_editor #tool_source_back #tool_source_save {
+	display: block;
+	position: absolute;
+	right: 0;
+}
+
+
+#svg_source_editor #tool_source_back #tool_source_cancel {
+	display: block;
+	position: absolute;
+	left: 0;
+}
+
+
+ button.cancel,  input.Cancel,  input.cancel,  input.jGraduate_Cancel, button.cancel {
+	-webkit-appearance: none;
+	background-color: #999;
+	box-shadow: 0 0 1px rgba(0,0,0,0.5);
+	margin: 0;
+}
+
+
+#shape_buttons {
+	overflow: auto;
+	top: 0;
+	bottom: 0;
+	left: 110px;
+	right: 0;
+	position: absolute;
+	vertical-align: top;
+}
+
+#shape_cats {
+	min-width: 110px;
+	display: block;
+	position: absolute;
+	left: 0;
+	top: 0;
+	height: 300px;
+	background: #eee;
+	border-radius: 3px 0 0 3px;
+	z-index: 2;
+}
+#shape_cats > div {
+	line-height: 1em;
+	padding: 0 .5em;
+	border-bottom: 1px solid #ddd;
+	background: #E8E8E8;
+	color: #444;
+	height: 26px;
+	line-height: 26px;
+}
+
+#shape_cats > div:first-child {
+  border-radius: 3px 0 0 0;
+}
+
+#shape_cats > div:last-child {
+  border-radius: 0 0 0 3px;
+}
+
+#shape_cats div:hover {
+	background: #efefef;
+	color: #000;
+}
+#shape_cats div.current {
+	font-weight: bold;
+	background: #3f3f3c;
+	color: #fff;
+	position: relative;
+}
+
+#shape_cats div.current:after {
+  content: '';
+  position: absolute;
+  right: -26px;
+  top: 0;
+  border: solid transparent 13px;
+  border-left-color: #3f3f3c;
+}
+
+.toolbar_button button .svg_icon {
+    display: none;
+}
+
+#dialog_box {
+	display: none;
+}
+
+#dialog_box_overlay {
+	background: black;
+	opacity: .5;
+	height:100%;
+	left:0;
+	position:absolute;
+	top:0;
+	width:100%;
+	z-index: 6;
+}
+
+#dialog_content {
+	height: 95px;
+	margin: 10px 10px 5px 10px;
+	overflow: auto;
+	text-align: left;
+	font-size: 13px;
+}
+
+#dialog_buttons input:last-child {
+	background: #999 !important;
+	position: absolute;
+	left: 10px;
+	bottom: 10px;
+}
+
+#dialog_buttons input:first-child {
+	position: absolute;
+	right: 10px;
+	bottom: 10px;
+}
+
+#dialog_content.prompt {
+	height: 75px;
+}
+
+#dialog_content p {
+	margin: 10px;
+	line-height: 1.3em;
+}
+
+#dialog_container {
+	position: absolute;
+	left: 50%;
+	top: 50%;
+	width: 300px;
+	margin-left: -150px;
+	height: 150px;
+	margin-top: -80px;
+	position:fixed;
+	z-index:50001;
+	background: #fff;
+}
+
+
+#dialog_container, #dialog_content {
+	border-radius: 3px;
+}
+
+#dialog_buttons input[type=text] {
+	width: 90%;
+	display: block;
+	margin: 0 0 5px 11px;
+}
+
+#dialog_buttons input[type=button] {
+	margin: 0 1em;
+}
+
+.invisible {
+  visibility: none;
+}
+
+
+/* Slider
+----------------------------------*/
+.ui-slider { position: relative; text-align: left; }
+.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; }
+
+.ui-slider-horizontal { height: .8em; }
+.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.ui-slider-vertical { width: .8em; height: 100px; }
+.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.ui-slider-vertical .ui-slider-range-max { top: 0; }
+
+.ui-slider {
+	background: #3F3F3C;
+  border-radius: 10px;
+}
+
+.ui-slider-handle {
+	box-shadow: 0 3px 3px rgba(0,0,0,0.3);
+	border-radius: 30px;
+	background: #fff;
+  background-image: -ms-linear-gradient(top, #ccc 0%, #fff 100%);
+  background-image: -moz-linear-gradient(top, #ccc 0%, #fff 100%);
+  background-image: -o-linear-gradient(top, #ccc 0%, #fff 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ccc), color-stop(1, #fff));
+  background-image: -webkit-linear-gradient(top, #ccc 0%, #fff 100%);
+  background-image: linear-gradient(top, #ccc 0%, #fff 100%);
+}
+
+.ui-slider-handle:focus {
+  outline: none;
+}
+
+/* Necessary to keep the flyouts sized properly */
+#shape_buttons {background: #fff; border-radius: 0 3px 3px 0; padding: 10px}
+
+ .tools_flyout .tool_button,
+ .tools_flyout .tool_flyout {
+  background: #fff;
+	width: 40px;
+	height: 40px;
+	margin: 5px;
+	border-radius: 0px;
+	-moz-border-radius: 0px;
+	-webkit-border-radius: 0px;	
+	border-width: 0;
+}
+
+/* Generic context menu styles */
+.contextMenu {
+	position: absolute;
+	z-index: 99999;
+	border: solid 1px rgba(0,0,0,.33);
+	background: rgba(255,255,255,.95);
+	padding: 5px 0;
+	margin: 0px;
+	display: none;
+	font: 12px/15px 'Lucida Sans', 'Lucida Grande', Helvetica, Verdana, sans-serif;
+	border-radius: 5px;
+	-moz-border-radius: 5px;
+	-moz-box-shadow: 2px 5px 10px rgba(0,0,0,.3);
+	-webkit-box-shadow: 2px 5px 10px rgba(0,0,0,.3);
+	box-shadow: 2px 5px 10px rgba(0,0,0,.3);
+}
+
+.touch .contextMenu {
+	border: solid 5px rgba(0,0,0,.7);
+	padding: 0;
+	margin: 0 0 0 20px;
+	font: 18px/24px sans-serif;
+	border-radius: 5px;
+	-webkit-box-shadow: 2px 5px 20px 3px #000;
+	box-shadow: 2px 5px 20px rgba(0,0,0,0.5);
+}
+
+.touch .contextMenu:after {
+	content: '';
+	width: 0;
+	height: 0;
+	border: solid transparent 10px;
+	border-right-color: rgba(0,0,0,.7);
+	position: absolute;
+	top: 50%;
+	left: -25px;
+	margin-top: -10px;
+	z-index: 1000;
+}
+
+.contextMenu LI {
+	list-style: none;
+	padding: 0px;
+	margin: 0px;
+}
+
+.contextMenu .shortcut {
+	width: 115px;           
+	text-align:right;
+	float:right;
+}
+
+.touch .contextMenu .shortcut {
+	display: none;
+}
+
+
+.touch .shortcut {
+	display: none;
+}
+
+
+.contextMenu A {
+	-moz-user-select: none;
+	-webkit-user-select: none;
+	color: #222;
+	text-decoration: none;
+	display: block;
+	line-height: 20px;
+	height: 20px;
+	background-position: 6px center;
+	background-repeat: no-repeat;
+	outline: none;
+	padding: 0px 15px 1px 20px;
+}
+
+.touch .contextMenu A {
+	padding: 0 15px;
+	border-bottom: #;
+	font-weight: bold;
+	border-top: solid 1px #E3E3E3;
+	height: 40px;
+	line-height: 40px;
+	min-width: 200px;
+}
+
+.contextMenu LI.hover A {
+	background-color: #2e5dea;
+	color: white;
+	cursor: default;
+}
+
+.contextMenu LI.disabled A {
+	color: #999;
+
+}
+
+.touch .contextMenu LI.disabled A {
+	display: none;
+}
+
+.contextMenu LI.hover.disabled A {
+	background-color: transparent;
+}
+
+.contextMenu LI.separator {
+	border-top: solid 1px #E3E3E3;
+	padding-top: 5px;
+	margin-top: 5px;
+}
+
+.touch .contextMenu LI.separator {
+	border-top: none;
+	margin: 0;
+	padding: 0;
+}
+
+#menu {
+  display: none;
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  height: 30px;
+  background: #000;
+  z-index: 10;
+  color: #fff;
+}
+
+#workarea.rect, #workarea.line, #workarea.ellipse, #workarea.path, #workarea.shapelib {
+  cursor: crosshair;
+}
+
+#workarea.text {
+  cursor: text;
+}
+
+#workarea.eyedropper {
+  cursor: url(../images/eyedropper.png) 0 16, crosshair;
+}
+
+#workarea.fhpath {
+  cursor: url(../images/pencil_cursor.png) 0 20, crosshair;
+}
+
+#workarea.rotate * {
+  cursor: url(../images/rotate.png) 12 12, auto;
+}
+
+#workarea.select text, #workarea.multiselect text {
+	cursor: default;
+}
+
+#workarea.n-resize * {cursor: n-resize !important;}
+#workarea.e-resize * {cursor: e-resize !important;}
+#workarea.w-resize * {cursor: w-resize !important;}
+#workarea.s-resize * {cursor: s-resize !important;}
+
+#workarea.ne-resize * {cursor: ne-resize !important;}
+#workarea.se-resize * {cursor: se-resize !important;}
+#workarea.nw-resize * {cursor: nw-resize !important;}
+#workarea.sw-resize * {cursor: sw-resize !important;}
+
+#workarea.copy {
+	cursor: copy;
+}
+
+#workarea.zoom {
+  cursor: crosshair;
+  cursor:-moz-zoom-in;
+  cursor:-webkit-zoom-in;
+}
+#workarea.zoom.out {
+  cursor: crosshair;
+  cursor:-moz-zoom-out;
+  cursor:-webkit-zoom-out;
+}
+
+#selectorRubberBand {
+	shape-rendering: crispEdges;
+}
+
+/* For modern browsers */
+.clearfix:before,
+.clearfix:after {
+    content:"";
+    display:table;
+}
+
+.clearfix:after {
+    clear:both;
+}
+
+/* For IE 6/7 (trigger hasLayout) */
+.clearfix {
+    *zoom:1;
+}
+
+
+ #group_title {display: none;}
+
+#base_unit_container {
+	display: none;
+	position: absolute;
+	z-index: 20;
+}
+
+ .draginput {
+  background: #3f3f3c;
+  border-radius: 3px;
+  -webkit-font-smoothing: antialiased;
+  width: 70px;
+  height: 70px;
+  display: block;
+  position: relative;
+  float: left;
+  margin: 0 5px 5px 0;
+}
+
+ .draginput .caret {
+  border: solid transparent 5px;
+  border-top-color: #999;
+  position: absolute;
+  width: 0;
+	height: 0;
+	right: 5px;
+	margin-top: -2px;
+	top: 50%;
+}
+
+ .draginput label {
+	margin: 28px 10px 0 5px;
+	font-size: 14px;
+	color: white;
+	font-weight: bold;
+	font-family: sans-serif;
+}
+
+ .draginput label#resolution_label,  .draginput label#seg_type_label {
+	font: bold 12px/110% sans-serif;
+	position: absolute;
+	left: auto;
+	right: 10px;
+	z-index: 0;
+	text-align: right;
+}
+
+  .draginput label#seg_type_label {
+	margin-top: 40px;
+}
+
+  .draginput label#seg_type_label .caret {
+	top: 66%;
+}
+
+ .draginput label#resolution_label .pull {
+	position: relative;
+	left: -15px;
+}
+
+ .draginput label#resolution_label span {
+	right: -13px;
+	left: auto;
+	font-size: 16px;
+	top: 2px;
+	font-weight: bold;
+	color: white;
+}
+
+.touch  .draginput.active:after {
+	content: attr(data-value);
+	display: block;
+	position: absolute;
+	background: #fff;
+	font-size: 16px;
+	top: 0;
+	width: 30px;
+	left: -50px;
+	padding: 0 5px;
+	color: #333;
+	z-index: 10;
+	font-family: sans-serif;
+	font-weight: bold;
+	text-align: right;
+	padding-right: 10px;
+	height: 20px;
+	line-height: 20px;
+	letter-spacing: -1px;
+}
+
+.touch  .draginput.active:before {
+	content: '';
+	height: 0;
+	width: 0;
+	position: absolute;
+	top: 5px;
+	left: -5px;
+	border: solid transparent 5px;
+	border-left-color: #fff;
+}
+
+ .draginput input {
+  border: none;
+  background: transparent;
+  font: 24px/normal sans-serif;
+  text-align: center;
+  color: #4F80FF;
+  padding: 30px 0 16px;
+  width: 100%;
+  height: 24px;
+	position: relative;
+	z-index: 2;
+}
+
+.draginput.twocol {
+	width: 145px;
+}
+
+#tool_font_family .caret {
+	right: 40px;
+	top: 55%;
+}
+
+#tool_font_family select {
+	width: 110px;
+}
+
+
+ #tool_bold,   #tool_italic { 
+	font: bold 20px/35px serif;
+	text-align: center;
+	position: absolute;
+	padding: 0 0 0 0;
+	color: #ccc;
+	background: transparent;
+	border: none;
+	width: 35px;
+	height: 35px;
+	margin: 0;
+	top: 0;
+	right: 0;
+}
+
+#tool_italic {
+	border-top: solid #2f2f2c 2px;
+	top: 35px;
+	font-weight: bold;
+	font-style: italic;
+	font-size: 24px;
+}
+
+
+ #tool_bold:hover,   #tool_italic:hover {
+  color: #fff;
+}
+
+ #tool_bold.active,   #tool_italic.active {
+  color: #50A0FF;
+}
+
+#preview_font {
+	font-size: 20px;
+	color: #fff;
+	height: 70px;
+	line-height: 75px;
+	padding: 0 0 0 10px;
+	white-space: nowrap;
+	width: 100px;
+	overflow: hidden;
+	border-right: solid #2f2f2c 2px;
+	position: relative;
+}
+
+#preview_font:after {
+	content: '';
+	position: absolute;
+	right: 0;
+	top: 3px;
+	bottom: 3px;
+	width: 15px;
+	border-right: solid #3f3f3c 10px;
+	background: transparent url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAxIDEiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxsaW5lYXJHcmFkaWVudCBpZD0iZzU4MCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIwJSIgeTE9IjAlIiB4Mj0iMTAwJSIgeTI9IjAlIj48c3RvcCBzdG9wLWNvbG9yPSIjM2YzZjNjIiBzdG9wLW9wYWNpdHk9IjAiIG9mZnNldD0iMCIvPjxzdG9wIHN0b3AtY29sb3I9IiMzZjNmM2MiIG9mZnNldD0iMC43Ii8+PC9saW5lYXJHcmFkaWVudD48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBmaWxsPSJ1cmwoI2c1ODApIiAvPjwvc3ZnPg==);
+}
+
+
+.draginput input, .draginput input:hover, .draginput input:active {  
+	  cursor: url(../images/drag.png), move;
+	  cursor: -webkit-grab;
+		cursor: -moz-grab;
+}
+
+.draginput input[type="checkbox"], .draginput input[type="checkbox"]:hover, .draginput input[type="checkbox"]:active {  
+	  cursor: pointer;
+}
+
+.draginput.checkbox {
+	cursor: pointer;
+}
+
+.draginput.active input, .draginput.active input:hover, .draginput.active input:active {  
+	  cursor: url(../images/dragging.png), move;
+	  cursor: -webkit-grabbing;
+		cursor: -moz-grabbing;
+}
+
+
+
+ .draginput span {
+  font: 11px/130% sans-serif;
+  color: #ccc;
+  display: block;
+  position: absolute;
+  top: 5px;
+  left: 5px;
+  text-align: left;
+}
+
+ .draginput.error {
+	background: #900;
+}
+
+ .draginput.error input {
+	color: #fff;
+}
+
+ .draginput.stroke_tool {
+	text-align: center;
+}
+
+ .draginput select {
+	-webkit-appearance: none;
+	opacity: 0;
+	display: block;
+	position: absolute;
+	height: 100%;
+	width: 100%;
+	margin: 0;
+	z-index: 1;
+	top: 0;
+	left: 0;	
+}
+
+
+.draginput_cursor{
+  position: absolute;
+  top: 50%;
+  width: 100%;
+  border-top: solid rgba(50,100,200,0.25) 3px;
+	margin-top: -2px;
+	z-index: 0;
+}
+
+ .draginput input[readonly=readonly] {
+  -webkit-appearance: none;
+  -webkit-touch-callout: none;
+  -webkit-user-select: none;
+  -khtml-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+
+
+ .draginput input:focus {
+	background: #50A0FF;
+	color: #fff;
+	outline: none;
+	box-shadow: 0 0 5px 2px #50A0FF;
+}
+
+ .draginput input:focus+span {
+	z-index: 10;
+	color:#fff;
+}
+
+.draginput .push_bottom {
+	bottom: 0;
+	position: absolute;
+}
+
+#zoom_label {
+	height: 20px;
+	background: transparent;
+	cursor: default !important;
+	width: auto;
+	padding: 0 10px;
+	margin: 0;
+}
+
+#zoom_panel {
+	padding: 9px 0;
+	right: 175px;
+  position: absolute;
+}
+
+#zoom_label img, #zoom_label svg {
+	width: 16px;
+	height: 16px;
+}
+
+#logo svg {
+	pointer-events: none;
+}
+
+#zoomLabel {
+	width: 16px;
+	height: 16px;
+	cursor: pointer;
+	background: #ccc;
+}
+
+#zoomLabel:after {
+	content: '';
+	position: absolute;
+	border-left: solid #2f2f2c 1px;
+	left: 0;
+	height: 16px;
+}
+
+#zoom_label input {
+	color: #ccc;
+	font-size: 13px;
+	height: auto;
+	width: auto;
+	padding: 0;
+	cursor: default;
+	position: static;
+}
+
+#zoom_label span {
+	top: 0;
+	left: 0;
+}
+
+body.dragging * {
+	cursor: url(../images/dragging.png), move;
+	cursor: -webkit-grabbing;
+	cursor: -moz-grabbing;
+}
+
+body.drag * {
+	cursor: url(../images/dragging.png), move;
+	cursor: -webkit-grabbing;
+	cursor: -moz-grabbing;
+}
+
+input[readonly=readonly]:focus {
+	box-shadow: none;
+}
+
+#color_canvas_tools, #fill_bg, #stroke_bg {
+	background: #fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMAQMAAABsu86kAAAAA3NCSVQICAjb4U/gAAAABlBMVEXu7u7///8o06qaAAAACXBIWXMAAAsSAAALEgHS3X78AAAAFXRFWHRDcmVhdGlvbiBUaW1lADcvMjIvMTL7FNdCAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M1cbXjNgAAABFJREFUCJljYP7AgIb+MKAhAM8/C5vWL6zSAAAAAElFTkSuQmCC) top left repeat;
+}
+
+#color_canvas_tools {
+	width: 60px;
+	height: 40px;
+	margin: 23px 5px 5px 5px;
+	position: relative;
+	overflow: hidden;
+}
+
+#color_canvas_tools  {
+	display: block;
+}
+
+
+#tool_angle_indicator {
+	width: 				 50px;
+	height: 			 50px;
+	border-radius: 50px;
+	background: rgba(255,255,255,0.05);
+	position: absolute;
+	bottom: 2px;
+	left: 10px;
+}
+
+#tool_angle_indicator_cursor {
+	width: 				 4px;
+	height: 			 25px;
+	border-top: solid #50A0FF 3px;
+	position: absolute;
+	margin: 0 0 0 23px;
+	-webkit-transform-origin: 50% 0;
+	-moz-transform-origin: 50% 0;
+	-o-transform-origin: 50% 0;
+	-ms-transform-origin: 50% 0;
+	transform-origin: 50% 0;
+}
+
+#stroke_style_label {
+	font-size: 30px;
+	margin-top: 33px;
+	letter-spacing: -1px;
+}
+
+.stroke_tool .caret {
+	top: 60%;
+}
+
+#tool_align_relative {
+	position: absolute;
+	top: -5px;
+	left: 0;
+	right: 20px;
+	display: block;
+}
+
+#tool_align_relative select {
+	width: 100%;
+	display: block;
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/browser-not-supported.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/browser-not-supported.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/browser-not-supported.html	(revision 29468)
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
+<meta http-equiv="X-UA-Compatible" content="chrome=1"/>
+<link rel="icon" type="image/png" href="images/logo.png"/>
+<link rel="stylesheet" href="svg-editor.css" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<title>Browser does not support SVG | SVG-edit</title>
+</head>
+<body>
+
+<div id="browser-not-supported">
+<img style="float:left;padding:10px;" src="images/logo.png" width="48" height="48" alt="SVG-edit logo" /><br />
+<p>Sorry, but your browser does not support SVG. Below is a list of alternate browsers and versions that support SVG and SVG-edit (from <a href="http://caniuse.com/#cats=SVG">caniuse.com</a>).</p>
+<p>Try the latest version of <a href="http://www.getfirefox.com">Firefox</a>, <a href="http://www.google.com/chrome/">Google Chrome</a>, <a href="http://www.apple.com/safari/download/">Safari</a>, <a href="http://www.opera.com/download/">Opera</a> or <a href="http://windows.microsoft.com/ie9">Internet Explorer<a/>.</p>
+<p>If you are unable to install one of these and must use an old version of Internet Explorer, you can install the <a href="http://code.google.com/chrome/chromeframe/">Google Chrome Frame plugin</a>.</p>
+
+<script type="text/javascript">
+var viewportHeight =(window.innerHeight ? window.innerHeight : $(window).height()) - 140;
+document.write('<iframe width="100%" height="'+viewportHeight+'" src="http://caniuse.com/#cats=SVG"></iframe>');
+</script>
+
+</div>
+
+</body>
+</html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/css/font-files/Arvo-Regular-webfont.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/css/font-files/Arvo-Regular-webfont.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/css/font-files/Arvo-Regular-webfont.svg	(revision 29468)
@@ -0,0 +1,145 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Copyright 2010 Anton Koovit
+Designer    : Anton Koovit
+Foundry     : Anton Koovit
+Foundry URL : httpwwwkorkorkcom
+</metadata>
+<defs>
+<font id="ArvoRegular" horiz-adv-x="721" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="448" />
+<glyph unicode=" " horiz-adv-x="448" d="M0 0z" />
+<glyph unicode="!" horiz-adv-x="682" d="M211 121q0 26 10.5 49.5t28 41t41.5 28t51 10.5q26 0 49.5 -10.5t41 -28t28 -41t10.5 -49.5q0 -27 -10.5 -51t-28 -42.5t-41 -29t-49.5 -10.5q-27 0 -51 10.5t-41.5 29t-28 42.5t-10.5 51zM211 1577h260l-41 -1167h-178z" />
+<glyph unicode="&#x22;" horiz-adv-x="651" d="M41 1577h228l-18 -518h-169zM405 1577h230l-47 -518h-169z" />
+<glyph unicode="#" horiz-adv-x="1423" d="M20 389l41 195h239l82 415h-253l41 199h252l63 318h191l-62 -318h351l63 318h191l-62 -318h225l-39 -199h-225l-81 -415h239l-37 -195h-240l-75 -389h-193l76 389h-351l-75 -389h-197l77 389h-241zM494 584h351l81 415h-351z" />
+<glyph unicode="$" horiz-adv-x="1210" d="M150 303v172h251v-11l2 1q0 -81 56 -123.5t166 -42.5q100 0 158.5 39t58.5 111q0 37 -19.5 62t-49 41.5t-65.5 26.5t-69 19l-176 47q-57 15 -105 39.5t-82.5 60.5t-53.5 85t-19 114q0 58 21 107.5t61 87.5t98.5 63t132.5 36v341h197v-342q85 -15 147 -54t100 -93h101 v-172h-209l-23 -3v3h-2v22q-10 65 -65 105t-146 40q-109 0 -166 -35.5t-57 -97.5q0 -42 18.5 -67t46.5 -40.5t61.5 -24t64.5 -17.5l174 -53q66 -20 118.5 -45.5t88.5 -59.5t55.5 -79.5t19.5 -106.5q0 -62 -23.5 -115.5t-66.5 -95.5t-103.5 -71t-133.5 -41v-322h-197v322 q-99 16 -156.5 61t-90.5 106h-119z" />
+<glyph unicode="%" horiz-adv-x="1730" d="M75 1167q0 67 25 127.5t70.5 106t108.5 72t138 26.5t138 -26.5t108 -72t70.5 -106t25.5 -127.5q0 -68 -24.5 -128t-69.5 -106t-108 -72.5t-140 -26.5q-78 0 -141 26.5t-107.5 72.5t-69 106t-24.5 128zM212 -16l1040 1556h195l-1041 -1556h-194zM244 1167 q0 -35 13.5 -66.5t37 -55t55 -37t67.5 -13.5q35 0 66 13.5t54 36.5t36.5 54.5t13.5 67.5t-13.5 67t-36.5 53.5t-54 35t-66 12.5q-36 0 -67.5 -12.5t-55 -35t-37 -53.5t-13.5 -67zM941 323q0 67 25 127t70.5 105.5t108.5 72.5t138 27t138 -27t108.5 -72.5t70.5 -105.5 t25 -127q0 -68 -24.5 -128.5t-69 -106t-107.5 -72.5t-141 -27t-141 27t-107.5 72.5t-69 106t-24.5 128.5zM1111 323q0 -35 13.5 -66.5t37 -55t55 -37t66.5 -13.5t66 13.5t54 36.5t36.5 54.5t13.5 67.5t-13.5 66.5t-36.5 53t-54 35.5t-66 13t-66.5 -13t-55 -35.5t-37 -53 t-13.5 -66.5z" />
+<glyph unicode="&#x26;" horiz-adv-x="1468" d="M143 426q0 61 18.5 118.5t51 107.5t76 90t135.5 87l-66 64q-26 24 -50.5 55t-43 67t-30 75t-11.5 77q0 80 31 149t84.5 120t125.5 80.5t154 29.5q87 0 161.5 -31t128.5 -83t85 -121t31 -144q0 -60 -12 -105.5t-34 -81.5t-52.5 -65.5t-65 -54.5t-70.5 -45.5t-74 -39.5 l306 -285q32 73 51.5 144.5t30.5 129.5h188q-17 -94 -52 -195t-89 -198l276 -256l-139 -121l-236 228q-42 -52 -91 -95t-104.5 -74.5t-118 -49t-132.5 -17.5q-97 0 -181.5 34t-147 93t-98.5 139.5t-36 173.5zM322 430q0 -58 22.5 -107.5t62 -85.5t93 -56.5t114.5 -20.5 q52 0 98 13t86 36.5t73.5 56t62.5 70.5l-380 367l-81 -37q-34 -14 -61.5 -38.5t-47.5 -56t-31 -68t-11 -73.5zM397 1169q0 -42 20.5 -88.5t74.5 -97.5l89 -83q59 26 111 56t92 70q26 28 44 64.5t18 76.5q0 42 -18.5 81t-49.5 69t-72.5 47.5t-87.5 17.5q-50 0 -90.5 -16.5 t-69.5 -45.5t-45 -67.5t-16 -83.5z" />
+<glyph unicode="'" horiz-adv-x="340" d="M37 1059v518l227 16l-48 -534h-179z" />
+<glyph unicode="(" d="M141 590q0 142 27 280.5t77.5 269.5t122.5 254.5t162 235.5l138 -110q-79 -100 -140.5 -211t-103.5 -229t-64 -241.5t-22 -248.5t22 -248.5t64 -242t103.5 -229t140.5 -210.5l-138 -111q-90 112 -162 235.5t-122.5 255t-77.5 270t-27 280.5z" />
+<glyph unicode=")" d="M53 -340q79 100 140.5 210.5t103.5 229t64 242t22 248.5t-22 248.5t-64 241.5t-103.5 229t-140.5 211l137 110q90 -112 162 -235.5t123 -254.5t78 -269.5t27 -280.5t-27 -280.5t-78 -270t-123 -255t-162 -235.5z" />
+<glyph unicode="*" horiz-adv-x="836" d="M59 1257l39 125l252 -82v246h133v-251l248 81l37 -119l-249 -80l157 -214l-109 -72l-149 206l-148 -204l-108 70l155 212z" />
+<glyph unicode="+" horiz-adv-x="1311" d="M143 608v183h420v419h182v-419h422v-183h-422v-422h-182v422h-420z" />
+<glyph unicode="," horiz-adv-x="569" d="M20 -287l185 570l219 -86l-260 -537z" />
+<glyph unicode="-" horiz-adv-x="737" d="M94 496v172h551v-172h-551z" />
+<glyph unicode="." horiz-adv-x="456" d="M96 121q0 26 10.5 49.5t28.5 41t41.5 28t50.5 10.5q26 0 49.5 -10.5t41 -28t28 -41t10.5 -49.5q0 -27 -10.5 -51t-28 -42.5t-41 -29t-49.5 -10.5q-27 0 -50.5 10.5t-41.5 29t-28.5 42.5t-10.5 51z" />
+<glyph unicode="/" horiz-adv-x="848" d="M37 -29l600 1598h174l-600 -1598h-174z" />
+<glyph unicode="0" horiz-adv-x="1330" d="M88 756q0 173 38 323.5t102 241.5t161.5 155t267.5 64q161 0 268 -51t176.5 -156.5t97.5 -254.5t28 -316q0 -163 -28 -305t-94.5 -247.5t-176.5 -166.5t-273 -61q-162 0 -271 60t-174.5 165t-93.5 246t-28 303zM293 762q0 -124 12.5 -233.5t51 -191.5t110 -129.5 t188.5 -47.5t188.5 47.5t108 129.5t54.5 191.5t18 233.5q0 119 -14 228.5t-54 193.5t-112 134t-187 50q-119 0 -188 -50t-103 -120.5t-53.5 -193.5t-19.5 -242z" />
+<glyph unicode="1" horiz-adv-x="858" d="M82 1114v209l422 236h80v-1387h149v-172h-491v172h147v1109z" />
+<glyph unicode="2" horiz-adv-x="1100" d="M86 1104q1 95 37 175.5t96.5 139t140.5 91t168 32.5q102 0 185 -32.5t142 -89.5t91.5 -135t32.5 -169q0 -36 -8.5 -76.5t-29 -87t-54 -99.5t-84.5 -114l-473 -563h647v-176h-889v147l533 644q27 32 56.5 69t55 78t42 85.5t16.5 92.5q0 50 -20 94t-55 77t-83.5 52 t-106.5 19q-52 0 -98.5 -16.5t-81.5 -48.5t-56.5 -79.5t-23.5 -109.5h-180z" />
+<glyph unicode="3" horiz-adv-x="1110" d="M41 365h192q29 -93 103.5 -146t189.5 -53q52 0 101.5 21t87.5 58.5t61 88t23 110.5q0 63 -23 114t-62 86.5t-90.5 55t-109.5 19.5h-86v151h70q66 0 118.5 19.5t88.5 53.5t55.5 79.5t19.5 97.5q0 39 -16.5 83.5t-51 82t-87 62t-123.5 24.5q-59 0 -107.5 -20.5t-96.5 -76.5 t-52 -124h-190q5 87 43.5 157t97.5 123t138 84t165 31q107 0 194 -35.5t148.5 -94t95 -133.5t33.5 -153q0 -48 -12 -96t-37.5 -91.5t-65.5 -80.5t-97 -65q47 -18 88.5 -50.5t72.5 -77.5t49 -102t18 -125q0 -98 -38 -181.5t-103 -144.5t-152.5 -95.5t-187.5 -34.5 q-92 0 -182.5 32.5t-153.5 92.5t-93 125t-36 129z" />
+<glyph unicode="4" horiz-adv-x="1251" d="M90 438l2 158l539 920h213l-513 -906h388v250l196 14v-264h226v-172h-226v-266h150v-172h-492v172h146v266h-629z" />
+<glyph unicode="5" horiz-adv-x="1139" d="M74 289l164 82q16 -51 47 -94.5t73 -75t93 -49t108 -17.5q72 0 133.5 26.5t107 72.5t71.5 107.5t26 131.5q0 71 -26 131.5t-72 105t-107.5 70t-132.5 25.5q-80 0 -147.5 -28.5t-112.5 -76.5l-147 23v793h854v-166h-689v-456q56 38 115 57.5t135 19.5q112 0 206 -40 t161.5 -108t105 -158.5t37.5 -191.5q0 -102 -37 -193.5t-105 -160.5t-163.5 -109.5t-212.5 -40.5q-89 0 -166 23.5t-139 66t-107.5 101.5t-72.5 129z" />
+<glyph unicode="6" horiz-adv-x="1249" d="M94 488q0 88 33.5 174t83.5 180l371 674h233l-340 -567q61 26 110.5 30t88.5 4q92 0 178 -34.5t152.5 -97t106.5 -149t40 -190.5q0 -127 -43 -226t-116 -167t-169.5 -103.5t-204.5 -35.5q-102 0 -196.5 37t-167.5 103.5t-116.5 160t-43.5 207.5zM281 486q0 -78 26 -140 t72 -104.5t108.5 -65t135.5 -22.5q68 0 130 24t109 68t75 105t28 135q0 82 -30 144.5t-80.5 104.5t-117.5 63t-141 21q-72 0 -122.5 -22.5t-95.5 -63t-71 -103t-26 -144.5z" />
+<glyph unicode="7" horiz-adv-x="1077" d="M41 1206v310h995v-150q-66 -130 -138 -275.5t-142.5 -298.5t-136.5 -310t-120 -310h126v-172h-443v172h117q54 154 119 312.5t132 308.5t132 285.5t119 244.5h-568v-117h-192z" />
+<glyph unicode="8" horiz-adv-x="1276" d="M139 442q0 61 16.5 118.5t47 107t73 91t94.5 71.5q-76 55 -120.5 137.5t-44.5 179.5q0 82 33 154.5t90.5 126.5t135.5 85t167 31q86 0 162.5 -31t134.5 -85t91.5 -126.5t33.5 -154.5q0 -98 -46 -181t-123 -137q51 -30 93 -71.5t72 -91t46.5 -106.5t16.5 -118 q0 -95 -38.5 -178t-104.5 -145.5t-154 -98.5t-188 -36q-101 0 -190 36t-155 98.5t-104.5 145.5t-38.5 178zM322 446q0 -59 24 -111.5t65.5 -91.5t97 -62t118.5 -23q62 0 117 23t96.5 62t65.5 91.5t24 111.5q0 58 -24 110t-65.5 91t-96.5 61.5t-117 22.5q-63 0 -118.5 -22.5 t-97 -61.5t-65.5 -91t-24 -110zM377 1143q0 -50 19 -93.5t53 -76t80.5 -51.5t101.5 -19q51 0 96 19t79.5 51.5t54.5 76t20 93.5q0 49 -20 92.5t-54.5 76t-79.5 51.5t-96 19q-55 0 -101.5 -19t-80.5 -51.5t-53 -76t-19 -92.5z" />
+<glyph unicode="9" horiz-adv-x="1270" d="M103 1009q0 127 43 226t116 167t169.5 103.5t204.5 35.5t201.5 -36t166.5 -103.5t114.5 -161t41.5 -207.5q0 -88 -33.5 -174t-83.5 -180l-380 -679h-233l349 572q-50 -20 -91 -27t-88 -7q-88 0 -182.5 34.5t-161 97t-110 154t-43.5 185.5zM289 1035q0 -82 30 -144.5 t80.5 -104.5t113 -63t125.5 -21q92 0 142.5 22.5t95.5 63t71 103t26 144.5q0 78 -26 140t-72 104.5t-108.5 65t-135.5 22.5q-68 0 -130 -24t-109 -68t-75 -105t-28 -135z" />
+<glyph unicode=":" horiz-adv-x="524" d="M96 121q0 26 10.5 49.5t28.5 41t41.5 28t50.5 10.5q26 0 49.5 -10.5t41 -28t28 -41t10.5 -49.5q0 -27 -10.5 -51t-28 -42.5t-41 -29t-49.5 -10.5q-27 0 -50.5 10.5t-41.5 29t-28.5 42.5t-10.5 51zM96 907q0 26 10.5 49.5t28.5 41t41.5 28t50.5 10.5q26 0 49.5 -10.5 t41 -28t28 -41t10.5 -49.5q0 -27 -10.5 -51t-28 -42t-41 -29t-49.5 -11q-27 0 -50.5 11t-41.5 29t-28.5 42t-10.5 51z" />
+<glyph unicode=";" horiz-adv-x="524" d="M-20 -287l184 570l219 -86l-260 -537zM96 907q0 26 10.5 49.5t28.5 41t41.5 28t50.5 10.5q26 0 49.5 -10.5t41 -28t28 -41t10.5 -49.5q0 -27 -10.5 -51t-28 -42t-41 -29t-49.5 -11q-27 0 -50.5 11t-41.5 29t-28.5 42t-10.5 51z" />
+<glyph unicode="&#x3c;" horiz-adv-x="1001" d="M10 605v156l843 423v-185l-678 -315l678 -315v-185z" />
+<glyph unicode="=" horiz-adv-x="922" d="M86 305v141h750v-141h-750zM86 643v141h750v-141h-750z" />
+<glyph unicode="&#x3e;" horiz-adv-x="1147" d="M164 184v185l678 315l-678 315v185l843 -423v-156z" />
+<glyph unicode="?" horiz-adv-x="1065" d="M121 1137q5 84 40.5 159t95.5 131.5t142 90t181 33.5q100 0 177.5 -33t130.5 -88t80 -127.5t27 -151.5q0 -102 -52 -188t-155 -158q-47 -33 -107.5 -85t-86 -128.5t-29.5 -128t-4 -127.5h-180q0 104 7.5 176.5t28.5 133t58 105.5t96 95q53 45 96.5 78t74.5 64.5t48 68 t17 88.5q0 45 -18 87t-48.5 74.5t-72 52.5t-88.5 20q-81 0 -135 -28t-87 -67.5t-47 -83.5t-14 -75zM338 121q0 26 10.5 49.5t28 41t41.5 28t51 10.5q26 0 49.5 -10.5t41 -28t28 -41t10.5 -49.5q0 -27 -10.5 -51t-28 -42.5t-41 -29t-49.5 -10.5q-27 0 -51 10.5t-41.5 29 t-28 42.5t-10.5 51z" />
+<glyph unicode="@" horiz-adv-x="2310" d="M145 494q0 137 35.5 264.5t100.5 238.5t156.5 202t202.5 156t239 100.5t266 35.5q140 0 268.5 -34.5t239.5 -96.5t202 -149t155.5 -192t100 -224.5t35.5 -247.5q0 -68 -13 -137t-39 -132t-63.5 -118t-87 -95.5t-109.5 -64t-130 -23.5q-92 0 -154 40t-97 103 q-63 -52 -142 -81t-170 -29q-105 0 -192.5 36.5t-151.5 100.5t-99.5 149t-35.5 183q0 97 37 182.5t101.5 149.5t152 101.5t188.5 37.5q73 0 140 -20t124 -57v83h184v-663q0 -61 17.5 -92t41.5 -45.5t61 -14.5q74 0 123 40.5t78 97.5t40.5 117.5t11.5 150.5q0 102 -29 197.5 t-81.5 180t-126.5 155t-165 121t-196 78.5t-219 28q-113 0 -217.5 -29t-195 -82t-165 -127t-127 -164.5t-81.5 -194.5t-29 -216q0 -113 29 -217.5t81.5 -195.5t127 -165t165 -127t195 -82t217.5 -29q115 0 222 30.5t200 86.5l94 -157q-113 -69 -243.5 -106.5t-272.5 -37.5 q-138 0 -266 35.5t-239 100.5t-202.5 156.5t-156.5 202.5t-100.5 239t-35.5 266zM846 479q0 -59 21 -110.5t59.5 -90t93 -61t121.5 -22.5q94 0 162 43.5t102 112.5v253q-17 35 -43.5 65t-60.5 51.5t-74.5 33.5t-85.5 12q-64 0 -118 -23t-93.5 -62t-61.5 -91.5t-22 -110.5z " />
+<glyph unicode="A" horiz-adv-x="1542" d="M10 0v172h132l472 1344h295l471 -1344h152v-172h-492v172h126l-120 344h-583l-117 -344h156v-172h-492zM520 682h468l-236 678z" />
+<glyph unicode="B" horiz-adv-x="1352" d="M143 0v172h144v1171h-144v175l682 -2q92 0 173 -34.5t141 -94t94.5 -140.5t34.5 -174q0 -97 -54 -177t-154 -128q49 -26 89 -60.5t68 -75.5t43.5 -87t15.5 -94q0 -95 -34.5 -177t-94.5 -143t-140.5 -96t-172.5 -35h-691zM483 172h353q48 0 89 24t72 62.5t48.5 87.5 t17.5 100q0 44 -18 85t-48.5 73t-72 51t-88.5 19h-353v-502zM483 848h344q48 0 89.5 19t72 51t48.5 74t18 87q0 49 -18 96.5t-49 84.5t-72.5 60t-88.5 23h-344v-495z" />
+<glyph unicode="C" horiz-adv-x="1509" d="M72 760q0 162 53.5 306t150 250.5t230 168t289.5 61.5q139 0 240 -39.5t171.5 -94t121.5 -118.5h106v-178h-215q-67 114 -177.5 179t-246.5 65q-116 0 -212 -49t-164.5 -131.5t-106.5 -191t-38 -228.5q0 -142 42 -251.5t109.5 -182t160.5 -121t209 -48.5q158 0 275 76.5 t200 251.5l176 -83q-38 -108 -129 -208.5t-224.5 -162t-295.5 -61.5q-155 0 -285 58.5t-231.5 166.5t-155 256t-53.5 309z" />
+<glyph unicode="D" horiz-adv-x="1507" d="M143 0v172h144v1171h-144v173h564q104 0 198 -27t175 -76t147 -117.5t112.5 -152.5t71.5 -180.5t25 -200.5q0 -106 -25 -203t-71.5 -182t-112.5 -154.5t-147 -119t-175 -76.5t-198 -27h-564zM483 172h236q105 0 197.5 46t161.5 125.5t109 187t40 231.5q0 122 -40 228 t-109 184.5t-161.5 123.5t-197.5 45h-236v-1171z" />
+<glyph unicode="E" horiz-adv-x="1286" d="M143 0v172h144v1171h-144v173h1086v-429h-205v256h-541v-485h455v-172h-455v-514h541v256h205v-428h-1086z" />
+<glyph unicode="F" horiz-adv-x="1243" d="M143 0v172h144v1171h-144v173h1086v-429h-205v256h-541v-487h521v-168h-521v-516h152v-172h-492z" />
+<glyph unicode="G" horiz-adv-x="1683" d="M72 760q0 162 53.5 306t150 251t230 168t289.5 61q144 0 247.5 -41t177 -99.5t117.5 -111.5h97v-178h-215q-67 114 -177 180q-108 64 -240 64h-8q-115 0 -211 -49t-164.5 -132t-106.5 -191t-38 -228q0 -133 42 -247t107 -185t160.5 -117.5t211.5 -46.5q192 0 315 93.5 t172 291.5h-424v172h641v-727h-186v304q-38 -79 -95 -137.5t-127 -96.5t-149.5 -57t-161.5 -19q-148 0 -273 49.5t-226.5 157.5t-155 256t-53.5 309z" />
+<glyph unicode="H" horiz-adv-x="1843" d="M143 0v172h144v1172h-144v172h492v-172h-152v-459h877v459h-152v172h492v-172h-144v-1172h144v-172h-492v172h152v545h-877v-545h152v-172h-492z" />
+<glyph unicode="I" horiz-adv-x="770" d="M143 0v172h144v1171h-144v173h484v-173h-144v-1171h144v-172h-484z" />
+<glyph unicode="J" horiz-adv-x="682" d="M102 -223q59 90 106 172q20 35 39 71.5t34 70.5t24.5 63.5t9.5 50.5v1138h-165v173h491v-173h-127v-1171q0 -22 -10.5 -51.5t-27 -62.5t-38.5 -67.5t-44 -67.5q-53 -77 -120 -161z" />
+<glyph unicode="K" horiz-adv-x="1567" d="M143 0v172h144v1171h-142v173h492v-173h-154v-1171h152v-172h-492zM485 774l662 569v173h348v-173h-119l-664 -559l621 -612h162v-172h-408v172z" />
+<glyph unicode="L" horiz-adv-x="1296" d="M143 0v172h144v1171h-144v173h492v-173h-152v-1171h523q16 0 32 7.5t29 19.5t21 27.5t8 31.5v191h190v-449h-1143z" />
+<glyph unicode="M" horiz-adv-x="2189" d="M143 0v172h144v1153h-144v191h480l481 -1309l487 1309h455v-191h-143v-1153h143v-172h-492v172h162v1164l-530 -1336h-170l-537 1339v-1167h156v-172h-492z" />
+<glyph unicode="N" horiz-adv-x="1624" d="M143 1343v175h408l692 -1245l8 48v1022h-170v173h492v-173h-129v-1343h-256l-705 1257v-1085h156v-172h-492v172h140v1171h-144z" />
+<glyph unicode="O" horiz-adv-x="1597" d="M72 758q0 164 53.5 308t150 250.5t230 168t293.5 61.5q161 0 295 -61.5t230 -168t149 -250.5t53 -308t-53.5 -307.5t-150 -250.5t-230 -168.5t-293.5 -61.5q-157 0 -287 58.5t-232 166.5t-155 256t-53 307zM276 758q0 -140 41 -249.5t108.5 -182t161 -121.5t212.5 -49 t215.5 49t164.5 131.5t105 191.5t37 230q0 124 -40.5 239.5t-113 195.5t-168.5 123.5t-200 43.5q-119 0 -216 -49t-165 -131.5t-105 -192t-37 -229.5z" />
+<glyph unicode="P" horiz-adv-x="1272" d="M143 0v172h144v1171h-144v173h613q102 0 187.5 -26.5t148 -78t97 -128.5t34.5 -177q0 -83 -34 -156.5t-96 -128.5t-148.5 -87t-192.5 -32h-269v-530h152v-172h-492zM483 866h273q57 0 104.5 15.5t82 45.5t54 75t19.5 104q0 112 -68 174.5t-217 62.5h-248v-477z" />
+<glyph unicode="Q" horiz-adv-x="1597" d="M72 758q0 164 53.5 308t150 250.5t230 168t293.5 61.5q161 0 295 -61.5t230 -168t149 -250.5t53 -308q0 -152 -46.5 -286.5t-130.5 -239t-201 -172.5t-258 -85q65 -17 104 -40t98 -52.5t118 -29.5q57 0 101.5 28.5t58.5 87.5l152 -69q-12 -56 -44.5 -98.5t-76 -71 t-93.5 -42.5t-98 -14q-77 0 -144.5 28t-141.5 68t-142 40q-41 0 -84 -13v179q-140 19 -255.5 87t-198 172.5t-127.5 238.5t-45 284zM276 758q0 -137 40.5 -247t107.5 -183.5t166.5 -122.5t208.5 -49q119 0 215.5 49t164.5 131.5t105 191.5t37 230q0 124 -40.5 238.5 t-113.5 195.5t-166 124.5t-202 43.5q-119 0 -216 -49t-165 -131.5t-105 -192t-37 -229.5z" />
+<glyph unicode="R" horiz-adv-x="1458" d="M143 0v172h144v1171h-144v173h631q101 0 186.5 -26.5t148 -78t97.5 -128.5t35 -177q0 -57 -20.5 -112.5t-57 -103t-86.5 -84.5t-109 -57q25 -11 50.5 -31.5t48 -50t41 -67t29.5 -80.5l84 -330h131l2 -190h-295l-113 461q-31 124 -94.5 182.5t-173.5 58.5h-195v-530h152 v-172h-492zM483 866h291q57 0 104.5 15t82 45t54 74.5t19.5 103.5q0 113 -68 176t-216 63h-267v-477z" />
+<glyph unicode="S" horiz-adv-x="1210" d="M80 283v172h252q0 -111 23.5 -157t65.5 -76.5t100 -46t128 -15.5q68 0 122.5 16t93 46.5t59 74t20.5 98.5q0 61 -25.5 103.5t-65.5 72.5t-87.5 49t-91.5 33l-219 62q-72 22 -131.5 56t-102 83t-65.5 114.5t-23 151.5q0 87 34 163t100 133t161.5 89.5t218.5 32.5 q81 0 149.5 -19t124 -53.5t98 -83t71.5 -106.5h75v-172h-245q0 88 -32 132t-70.5 67.5t-84.5 36t-92 12.5q-76 0 -133 -17.5t-94.5 -47.5t-56.5 -70t-19 -84q0 -66 23.5 -106.5t59.5 -65t79.5 -38.5t83.5 -28l202 -66q91 -29 160.5 -66t116.5 -87.5t71.5 -116.5t24.5 -153 q0 -94 -38.5 -174t-107.5 -139t-164.5 -92.5t-209.5 -33.5q-117 0 -200 26.5t-139.5 71t-90.5 101.5t-53 117h-76z" />
+<glyph unicode="T" horiz-adv-x="1434" d="M41 1116v400h1352v-400h-205v236h-400v-1180h156v-172h-491v172h139v1180h-346v-236h-205z" />
+<glyph unicode="U" horiz-adv-x="1550" d="M113 1343v173h491v-173h-155v-706q0 -127 28.5 -216.5t79 -146t120 -82.5t152.5 -26q86 0 158 23t123.5 77.5t80 145t28.5 225.5v706h-164v173h491v-173h-135v-684q0 -164 -45.5 -291t-124.5 -213t-186 -130.5t-230 -44.5q-120 0 -224.5 44t-182 129t-122 207.5 t-44.5 280.5v702h-139z" />
+<glyph unicode="V" horiz-adv-x="1485" d="M-10 1343v173h492v-173h-132l389 -1169l417 1169h-143v173h492v-173h-131l-491 -1343h-275l-484 1343h-134z" />
+<glyph unicode="W" horiz-adv-x="2560" d="M10 1343v173h492v-173h-132l367 -1165l387 1338h299l412 -1338l374 1165h-151v173h492v-173h-132l-433 -1343h-306l-411 1321l-379 -1321h-303l-442 1343h-134z" />
+<glyph unicode="X" horiz-adv-x="1500" d="M170 0v172h99l432 603l-408 568h-123v173h492v-173h-146l295 -415l298 415h-159v173h492v-173h-112l-410 -569l428 -602h94v-172h-492v172h185l-324 451l-326 -451h177v-172h-492z" />
+<glyph unicode="Y" horiz-adv-x="1354" d="M51 1343v173h492v-173h-144l285 -487l305 487h-158v173h492v-173h-129l-426 -646v-525h156v-172h-492v172h139v530l-402 641h-118z" />
+<glyph unicode="Z" horiz-adv-x="1214" d="M51 0v227l900 1116h-687v-256h-196v429h1095v-224l-913 -1120h711v252h196v-424h-1106z" />
+<glyph unicode="[" d="M238 -377v2083h403v-151h-219v-1780h219v-152h-403z" />
+<glyph unicode="\" horiz-adv-x="948" d="M41 1581h162l704 -1606h-162z" />
+<glyph unicode="]" d="M80 -225h219v1780h-219v151h403v-2083h-403v152z" />
+<glyph unicode="^" horiz-adv-x="1229" d="M156 723l403 790h113l403 -790h-143l-315 626l-320 -626h-141z" />
+<glyph unicode="_" horiz-adv-x="1024" d="M0 -154h1024v-102h-1024v102z" />
+<glyph unicode="`" horiz-adv-x="590" d="M100 1460v17h248l184 -299h-145z" />
+<glyph unicode="a" horiz-adv-x="1120" d="M70 274q0 66 19.5 117t52 88.5t76 63t91 41t97 22t94.5 6.5q72 0 121 -4.5t89 -12.5l1 85q0 55 -16 95.5t-45 67t-69.5 39.5t-90.5 13q-47 0 -90 -6.5t-80.5 -17t-69 -24t-53.5 -28.5l-61 129q37 24 81 44.5t92.5 35t99 23t99.5 8.5q90 0 162 -21.5t122 -66.5t77 -114.5 t27 -166.5l-1 -518h115v-172h-301v96q-59 -55 -130.5 -90t-162.5 -35q-76 0 -139.5 24t-109.5 65.5t-71.5 96.5t-25.5 117zM250 291q0 -41 15 -71.5t42.5 -51t65.5 -31t84 -10.5q37 0 74 9t70 24.5t61 36t47 42.5l1 234h-216q-54 0 -98.5 -12t-77 -35t-50.5 -57t-18 -78z " />
+<glyph unicode="b" horiz-adv-x="1253" d="M57 1384v172h336v-606q66 51 144 81t161 30q102 0 187 -38t146.5 -107t95.5 -165.5t34 -213.5q0 -125 -38 -226.5t-105.5 -174.5t-160.5 -112.5t-204 -39.5q-77 0 -144.5 22.5t-115.5 58.5v-65h-186v1384h-150zM393 229q32 -33 94 -58.5t156 -25.5q64 0 123 24t104 72.5 t72 120.5t27 168q0 88 -25.5 156t-69 115t-101.5 71.5t-124 24.5q-73 0 -140 -30t-116 -81v-557z" />
+<glyph unicode="c" horiz-adv-x="1118" d="M92 520q0 120 39 221t107 173.5t159 113.5t195 41q98 0 185.5 -34t153.5 -103h105v-172h-188q-42 75 -106.5 110t-149.5 35q-65 0 -122 -27t-99.5 -77t-67 -121.5t-24.5 -159.5q0 -87 24.5 -157t67.5 -119.5t99.5 -76t121.5 -26.5q96 0 167 46.5t113 136.5l154 -76 q-30 -64 -74 -115t-99.5 -87t-122 -55.5t-140.5 -19.5q-108 0 -199.5 40.5t-158 113.5t-103.5 174t-37 221z" />
+<glyph unicode="d" horiz-adv-x="1268" d="M92 528q0 120 36 218.5t102 168t159 108t207 38.5q75 0 137 -16.5t119 -57.5v397h-141v172h327v-1384h152v-172h-338v85q-50 -51 -116 -79.5t-150 -28.5q-105 0 -195.5 36.5t-157 107t-104 173t-37.5 234.5zM285 530q0 -96 24 -169t67 -122.5t103 -74.5t131 -25 q83 0 139 24.5t103 73.5v580q-50 42 -115 61t-133 19q-66 0 -124 -24.5t-101.5 -71.5t-68.5 -115t-25 -156z" />
+<glyph unicode="e" horiz-adv-x="1175" d="M92 522q0 111 31 209.5t92.5 172t152.5 116.5t212 43q117 0 195.5 -35.5t128 -94t75 -133.5t35.5 -153q5 -38 6.5 -77t1.5 -76h-746q0 -44 6.5 -80.5t18.5 -69.5q37 -100 118.5 -150.5t184.5 -50.5q81 0 157.5 22.5t160.5 70.5l75 -127q-102 -70 -205 -104t-214 -34 q-105 0 -194.5 35t-154 104t-101 172t-36.5 240zM286 639h537q-4 58 -18.5 107t-44.5 85t-77 56t-116 20q-65 0 -113.5 -18.5t-82.5 -53t-54.5 -84.5t-30.5 -112z" />
+<glyph unicode="f" horiz-adv-x="745" d="M85 885v151h171v162q2 90 26 157t68 112t106 67t138 22q53 0 95 -5t75 -13.5t58.5 -18.5t45.5 -20l-57 -133q-32 17 -83.5 29t-107.5 12q-83 0 -130.5 -51.5t-47.5 -151.5v-168h240v-151h-240v-713h162v-172h-504v172h156v713h-171z" />
+<glyph unicode="g" horiz-adv-x="1200" d="M92 528q0 120 36 218.5t102 168t159 108t207 38.5q78 0 140.5 -17.5t121.5 -60.5v53h186v-995q0 -246 -116.5 -372t-362.5 -126q-54 0 -113 8t-116.5 25.5t-112 44.5t-100.5 66l100 151q30 -26 68.5 -48t82.5 -37.5t91 -24.5t94 -9q77 0 133.5 16t93 56.5t54.5 109.5 t18 175v15q-51 -54 -118.5 -84t-153.5 -30q-105 0 -195.5 36.5t-157 107t-104 173t-37.5 234.5zM285 530q0 -96 24 -169t67 -122.5t103 -74.5t131 -25q46 0 84 9t69 23.5t54.5 33.5t40.5 40v567q-51 45 -117.5 65t-136.5 20q-66 0 -124 -24.5t-101.5 -71.5t-68.5 -115 t-25 -156z" />
+<glyph unicode="h" horiz-adv-x="1354" d="M100 0v172h156v1212h-142v172h328v-634h6q28 28 64.5 52.5t76.5 42.5t83 28t90 10q83 0 150 -23t114 -70t72.5 -120.5t25.5 -173.5v-496h156v-172h-492v172h142v473q0 119 -60.5 180.5t-173.5 61.5q-64 0 -130 -30.5t-124 -76.5v-608h150v-172h-492z" />
+<glyph unicode="i" horiz-adv-x="657" d="M92 864v172h338v-864h156v-172h-492v172h148v692h-150zM207 1403q0 26 10.5 49.5t28 41t41.5 28t51 10.5q26 0 49.5 -10.5t41 -28t28 -41t10.5 -49.5q0 -27 -10.5 -51t-28 -42.5t-41 -29t-49.5 -10.5q-27 0 -51 10.5t-41.5 29t-28 42.5t-10.5 51z" />
+<glyph unicode="j" horiz-adv-x="604" d="M61 -332q89 13 129.5 84.5t40.5 188.5v923h-147v172h336v-1116q0 -89 -23 -160.5t-66.5 -122t-106.5 -78.5t-144 -30zM207 1403q0 24 9.5 45t25.5 37t37.5 25.5t46.5 9.5q24 0 45.5 -9.5t37.5 -25.5t25.5 -37t9.5 -45q0 -25 -9.5 -47t-25.5 -38.5t-37.5 -26t-45.5 -9.5 q-25 0 -46.5 9.5t-37.5 26t-25.5 38.5t-9.5 47z" />
+<glyph unicode="k" horiz-adv-x="1286" d="M92 1384v172h365v-172h-2v-774h180l246 254h-62v172h393v-172h-131l-315 -325l344 -367h125v-172h-219l-424 463h-137v-291h86v-172h-443v172h170v1212h-176z" />
+<glyph unicode="l" horiz-adv-x="666" d="M92 0v172h150v1212h-150v172h336v-1384h156v-172h-492z" />
+<glyph unicode="m" horiz-adv-x="2050" d="M100 0v172h144v692h-144v172h330v-121h2q34 29 71.5 54.5t78.5 44.5t85.5 30t92.5 11q112 0 193 -41.5t125 -129.5q38 34 80 65.5t87.5 54.5t95.5 37t104 14q84 0 151 -23t114 -70t71.5 -120.5t24.5 -173.5v-496h144v-172h-484v172h146v473q0 119 -60 180.5t-173 61.5 q-67 0 -137 -32t-120 -81v-602h143v-172h-483v172h146v473q0 119 -60.5 180.5t-173.5 61.5q-65 0 -131 -31t-125 -77v-607h146v-172h-484z" />
+<glyph unicode="n" horiz-adv-x="1366" d="M100 0v172h144v692h-144v172h330v-122h2q33 29 70.5 55t78.5 45t85.5 30t93.5 11q83 0 150 -23t114 -70t72.5 -120.5t25.5 -173.5v-496h144v-172h-484v172h146v473q0 119 -60.5 180.5t-173.5 61.5q-65 0 -131 -31t-125 -77v-607h146v-172h-484z" />
+<glyph unicode="o" horiz-adv-x="1225" d="M86 518q1 123 39.5 224t107.5 173.5t164 111.5t209 39q115 0 210.5 -39t163.5 -110.5t106 -172.5t38 -224q0 -121 -38 -222.5t-106 -174.5t-163.5 -113.5t-210.5 -40.5q-117 0 -212 40t-163 112.5t-106 173.5t-39 223zM283 518q0 -89 25.5 -161t70 -122.5t103 -78 t124.5 -27.5q69 0 128.5 27t103.5 77.5t69 122.5t25 162q0 94 -25 167t-68.5 122t-103.5 74t-129 25q-66 0 -124.5 -25t-103 -74t-70 -122t-25.5 -167z" />
+<glyph unicode="p" horiz-adv-x="1249" d="M59 864v172h330v-86q66 51 144 81t161 30q102 0 187 -38t146.5 -107t95.5 -165.5t34 -213.5q0 -125 -38 -228t-105.5 -176.5t-160.5 -114.5t-204 -41q-79 0 -140.5 16.5t-117.5 42.5v-335h162v-172h-492v172h142v1163h-144zM391 227q33 -34 94.5 -61t153.5 -27 q64 0 123 25t104 74.5t72 122.5t27 169q0 88 -25.5 156t-69 115t-101.5 71.5t-124 24.5q-72 0 -138.5 -29t-115.5 -80v-561z" />
+<glyph unicode="q" horiz-adv-x="1206" d="M92 528q0 120 36 218.5t102 168t159 108t207 38.5q75 0 135 -16.5t117 -54.5v46h186v-1335h156v-172h-492v172h150v380q-50 -49 -115 -76.5t-147 -27.5q-105 0 -195.5 36.5t-157 107t-104 173t-37.5 234.5zM285 530q0 -96 24 -169t67 -122.5t103 -74.5t131 -25 q85 0 144 28t94 66v587q-50 41 -113.5 59t-130.5 18q-66 0 -124 -24.5t-101.5 -72t-68.5 -115.5t-25 -155z" />
+<glyph unicode="r" horiz-adv-x="960" d="M100 0v172h143l1 692h-144v172h331v-143q18 32 40.5 59.5t50 48t61 32t72.5 11.5h98q46 0 92 -2v-225h-190v64q-33 0 -67.5 -12.5t-64.5 -38t-52.5 -65t-32.5 -93.5v-500h176v-172h-514z" />
+<glyph unicode="s" horiz-adv-x="993" d="M82 111v172h207q0 -43 18.5 -73.5t49 -49.5t69 -28t78.5 -9q39 0 75 9.5t63.5 28t43.5 44.5t16 59q0 50 -32.5 85t-110.5 63l-198 74q-121 43 -179.5 109.5t-58.5 166.5q0 66 24.5 122t71 96.5t113.5 63.5t153 23q111 0 186 -31t135 -106h97v-172h-205q0 42 -19.5 71.5 t-50.5 48t-69 27t-74 8.5q-40 0 -73.5 -9t-57.5 -26t-37.5 -41.5t-13.5 -54.5q0 -52 31.5 -82.5t105.5 -56.5l199 -70q128 -43 187 -117t59 -177q0 -69 -27.5 -126.5t-78 -98t-121.5 -63t-158 -22.5q-121 0 -197 39t-117 103h-104z" />
+<glyph unicode="t" horiz-adv-x="762" d="M51 885v151h167v248l182 86v-334h243v-151h-245l-3 -598q0 -61 14 -99t45 -52.5t70 -14.5q42 0 74 7.5t70 25.5l43 -125q-48 -25 -101 -39.5t-125 -14.5q-68 0 -118.5 16.5t-85 55.5t-51.5 104.5t-17 163.5l3 570h-165z" />
+<glyph unicode="u" horiz-adv-x="1350" d="M60 864v172h334v-645q0 -119 55 -180t158 -61q61 0 128.5 22t127.5 61v631h-139v172h334v-864h115v-172h-302v96q-70 -54 -152.5 -84t-176.5 -30q-78 0 -141.5 22.5t-108 70t-68.5 120.5t-24 174v495h-140z" />
+<glyph unicode="v" horiz-adv-x="1100" d="M20 864v172h358v-172h-97l256 -714l250 714h-63v172h328v-172h-89l-339 -880h-184l-338 880h-82z" />
+<glyph unicode="w" horiz-adv-x="1640" d="M20 864v172h328v-172h-48l181 -661l248 833h156l237 -831l189 659h-60v172h328v-172h-89l-284 -880h-172l-235 827l-234 -827h-174l-282 880h-89z" />
+<glyph unicode="x" horiz-adv-x="1090" d="M51 864v172h344v-172h-39l191 -246l193 246h-50v172h344v-172h-89l-293 -338l310 -354h76v-172h-344v172h59l-206 256l-201 -256h51v-172h-344v172h84l315 367l-296 325h-105z" />
+<glyph unicode="y" horiz-adv-x="1176" d="M31 864v172h393v-172h-123l243 -661l254 661h-122v172h393v-172h-107l-461 -1163h142v-172h-418v172h126l110 285l-346 878h-84z" />
+<glyph unicode="z" horiz-adv-x="924" d="M76 0v115l525 766h-331v-146h-184v301h741v-118l-524 -762h354v176h193v-332h-774z" />
+<glyph unicode="{" d="M133 596v127q42 0 73.5 23t52.5 60.5t31.5 85.5t10.5 98v452q0 63 18.5 112t48 83t67.5 51.5t77 17.5h137v-126h-69q-54 0 -74.5 -52.5t-20.5 -146.5v-428q0 -62 -13 -110t-35.5 -84t-53 -60t-66.5 -37v-4q36 -13 66.5 -37t53 -60t35.5 -84.5t13 -109.5v-418 q0 -94 20.5 -146.5t74.5 -52.5h69v-127h-137q-39 0 -77 17.5t-67.5 51.5t-48 83t-18.5 112v443q0 50 -10.5 97.5t-31.5 85t-52.5 60.5t-73.5 23z" />
+<glyph unicode="|" horiz-adv-x="455" d="M152 -270v1996h155v-1996h-155z" />
+<glyph unicode="}" d="M72 -250h69q54 0 74.5 52.5t20.5 146.5v418q0 61 13 109.5t35.5 84.5t53 60t65.5 37v4q-35 13 -65.5 37t-53 60t-35.5 84t-13 110v428q0 94 -20.5 146.5t-74.5 52.5h-69v126h137q39 0 77 -17.5t67.5 -51.5t48 -83t18.5 -112v-452q0 -50 10.5 -98t31.5 -85.5t52.5 -60.5 t73.5 -23v-127q-42 0 -73.5 -23t-52.5 -60.5t-31.5 -85t-10.5 -97.5v-443q0 -63 -18.5 -112t-48 -83t-67.5 -51.5t-77 -17.5h-137v127z" />
+<glyph unicode="~" horiz-adv-x="1229" d="M141 483q45 84 106 130t150 46q58 0 119.5 -22.5t119.5 -49t109 -49t89 -22.5q43 0 86.5 34.5t93.5 117.5l73 -115q-45 -84 -105.5 -130t-150.5 -46q-39 0 -79 10.5t-80.5 26.5t-79 34.5t-74 34.5t-67 26.5t-56.5 10.5q-43 0 -86.5 -34t-93.5 -117z" />
+<glyph unicode="&#xa0;" horiz-adv-x="448" d="M0 0z" />
+<glyph unicode="&#xa2;" horiz-adv-x="1210" d="M111 684q0 106 31 197t85 161.5t128 117.5t161 64v355h197v-356q68 -14 128 -45t108 -82h106v-172h-183l-4 -2q-1 0 -1 2h-1v1q-43 74 -107 109t-149 35q-65 0 -122 -27t-99.5 -77t-67 -121.5t-24.5 -159.5q0 -87 24.5 -157t67.5 -119.5t99.5 -76t121.5 -26.5 q96 0 167.5 46.5t113.5 135.5l153 -75q-49 -105 -134 -174.5t-197 -92.5v-331h-197v329q-90 16 -164.5 62t-128 116.5t-83 162.5t-29.5 200z" />
+<glyph unicode="&#xa3;" horiz-adv-x="932" d="M33 662v145h195q-26 69 -45 142t-19 155q0 78 27 143t76 112t117 73t151 26q74 0 136 -26.5t106 -73.5t66.5 -112t18.5 -142l-166 -10q-1 38 -11.5 74t-30.5 64t-49.5 45t-67.5 17q-43 0 -76 -12.5t-55.5 -34t-35 -50.5t-14.5 -62q-2 -25 0 -48.5t7 -49t14 -55.5t20 -67 q7 -27 15 -54l16 -54h279v-145h-234q14 -43 24.5 -81.5t18.5 -70.5q9 -38 4.5 -83t-22 -91t-48.5 -88.5t-76 -75.5h486v-168h-799v168h110q61 35 98 83.5t52 106t9.5 123t-29.5 133.5l-16 44h-252z" />
+<glyph unicode="&#xa5;" horiz-adv-x="1354" d="M51 1344v172h492v-172h-145l286 -488l305 488h-157v172h492v-172h-129l-328 -496h184v-141h-283v-148h283v-141h-283v-246h156v-172h-492v172h139v246h-270v141h270v148h-270v141h178l-311 496h-117z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1919" d="M102 831q0 118 30.5 227.5t86 204.5t133.5 173t173 133.5t204.5 86t228.5 30.5q118 0 228 -30.5t205.5 -86t174 -133.5t134.5 -173t86.5 -204.5t30.5 -227.5q0 -119 -30.5 -228.5t-86.5 -204.5t-134.5 -173t-174 -133.5t-205.5 -86t-228 -30.5q-119 0 -228.5 30.5 t-204.5 86t-173 133.5t-133.5 173t-86 204.5t-30.5 228.5zM283 831q0 -142 52.5 -265.5t144 -215t214.5 -144t264 -52.5t263.5 52.5t215 144t145 215t52.5 265.5q0 140 -52.5 269.5t-145 215.5t-215 138.5t-263.5 52.5t-264 -52.5t-214.5 -138.5t-144 -215.5t-52.5 -269.5z M477 834q0 104 39 195.5t107 160t159.5 108t196.5 39.5q58 0 109.5 -12.5t96 -33t81 -47t65.5 -54.5l-141 -131q-48 46 -100.5 67t-110.5 21q-64 0 -120 -24.5t-97.5 -67.5t-65.5 -100t-24 -121t24 -120t65.5 -98t97.5 -66t120 -24q56 0 108.5 22.5t83.5 57.5l134 -129 q-23 -30 -59 -56.5t-79 -46t-91.5 -31t-96.5 -11.5q-105 0 -196.5 39t-159.5 107t-107 159.5t-39 196.5z" />
+<glyph unicode="&#xad;" horiz-adv-x="737" d="M94 496v172h551v-172h-551z" />
+<glyph unicode="&#xae;" horiz-adv-x="1919" d="M102 831q0 118 30.5 227.5t86 204.5t133.5 173t173 133.5t204.5 86t228.5 30.5q118 0 228 -30.5t205.5 -86t174 -133.5t134.5 -173t86.5 -204.5t30.5 -227.5q0 -119 -30.5 -228.5t-86.5 -204.5t-134.5 -173t-174 -133.5t-205.5 -86t-228 -30.5q-119 0 -228.5 30.5 t-204.5 86t-173 133.5t-133.5 173t-86 204.5t-30.5 228.5zM283 831q0 -142 52.5 -265.5t144 -215t214.5 -144t264 -52.5t263.5 52.5t215 144t145 215t52.5 265.5q0 94 -52.5 246.5t-145 238.5t-215 138.5t-263.5 52.5t-264 -52.5t-214.5 -138.5t-144 -215.5t-52.5 -269.5z M551 1188v158h483q73 0 132 -21t100 -58t63.5 -87.5t22.5 -108.5q0 -49 -10 -87t-30.5 -67.5t-50.5 -51.5t-69 -39q31 -17 55.5 -52.5t36.5 -87.5l41 -168h82l2 -158h-256l-51 254q-14 84 -64 121t-129 37h-67v-254h92v-158h-379v158h98v670h-102zM842 928h143 q74 0 118 30.5t44 98.5q0 62 -41.5 96.5t-128.5 34.5h-135v-260z" />
+<glyph unicode="&#xb4;" horiz-adv-x="645" d="M84 1178l213 299h240v-17l-299 -282h-154z" />
+<glyph unicode="&#x2000;" horiz-adv-x="863" />
+<glyph unicode="&#x2001;" horiz-adv-x="1726" />
+<glyph unicode="&#x2002;" horiz-adv-x="863" />
+<glyph unicode="&#x2003;" horiz-adv-x="1726" />
+<glyph unicode="&#x2004;" horiz-adv-x="575" />
+<glyph unicode="&#x2005;" horiz-adv-x="431" />
+<glyph unicode="&#x2006;" horiz-adv-x="287" />
+<glyph unicode="&#x2007;" horiz-adv-x="287" />
+<glyph unicode="&#x2008;" horiz-adv-x="215" />
+<glyph unicode="&#x2009;" horiz-adv-x="345" />
+<glyph unicode="&#x200a;" horiz-adv-x="95" />
+<glyph unicode="&#x2010;" horiz-adv-x="737" d="M94 496v172h551v-172h-551z" />
+<glyph unicode="&#x2011;" horiz-adv-x="737" d="M94 496v172h551v-172h-551z" />
+<glyph unicode="&#x2012;" horiz-adv-x="737" d="M94 496v172h551v-172h-551z" />
+<glyph unicode="&#x2013;" horiz-adv-x="1024" d="M0 485v162h1024v-162h-1024z" />
+<glyph unicode="&#x2014;" horiz-adv-x="2048" d="M0 485v162h2048v-162h-2048z" />
+<glyph unicode="&#x2018;" horiz-adv-x="606" d="M113 1057l249 499l132 -63l-191 -514z" />
+<glyph unicode="&#x2019;" horiz-adv-x="606" d="M92 995l184 570l220 -86l-260 -537z" />
+<glyph unicode="&#x201c;" horiz-adv-x="1065" d="M129 1057l250 499l131 -63l-191 -514zM555 1057l250 499l131 -63l-191 -514z" />
+<glyph unicode="&#x201d;" horiz-adv-x="1028" d="M92 1042l191 514l190 -77l-250 -500zM518 1042l191 514l190 -77l-250 -500z" />
+<glyph unicode="&#x2022;" horiz-adv-x="811" d="M154 780q0 52 19.5 98t53.5 80.5t80 54t99 19.5q52 0 98 -19.5t80 -53.5t53.5 -80t19.5 -99t-19.5 -99t-53.5 -80t-80 -53.5t-98 -19.5q-53 0 -99 19.5t-80 53.5t-53.5 80t-19.5 99z" />
+<glyph unicode="&#x2026;" horiz-adv-x="2048" d="M205 123q0 30 11.5 56.5t32 47t47 32t56.5 11.5q31 0 58 -11.5t47.5 -32t32.5 -47t12 -56.5t-12 -57t-32.5 -47t-47.5 -32t-58 -12q-30 0 -56.5 12t-47 32t-32 47t-11.5 57zM877 123q0 30 11.5 56.5t32 47t47 32t56.5 11.5q31 0 58 -11.5t47.5 -32t32.5 -47t12 -56.5 t-12 -57t-32.5 -47t-47.5 -32t-58 -12q-30 0 -56.5 12t-47 32t-32 47t-11.5 57zM1548 123q0 30 12 56.5t32 47t47 32t57 11.5q31 0 58 -11.5t47 -32t32 -47t12 -56.5t-12 -57t-32 -47t-47 -32t-58 -12q-30 0 -57 12t-47 32t-32 47t-12 57z" />
+<glyph unicode="&#x202f;" horiz-adv-x="345" />
+<glyph unicode="&#x205f;" horiz-adv-x="431" />
+<glyph unicode="&#x2122;" horiz-adv-x="3623" d="M1577 0v172h144v1153h-144v191h480l481 -1309l487 1309h455v-191h-143v-1153h143v-172h-492v172h162v1164l-530 -1336h-170l-537 1339v-1167h156v-172h-492zM41 1116v400h1352v-400h-205v236h-400v-1180h156v-172h-491v172h139v1180h-346v-236h-205z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1035" d="M0 1035h1035v-1035h-1035v1035z" />
+</font>
+</defs></svg> 
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/css/font-files/Junction-webfont.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/css/font-files/Junction-webfont.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/css/font-files/Junction-webfont.svg	(revision 29468)
@@ -0,0 +1,133 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Generated in 2009 by FontLab Studio Copyright info pending
+</metadata>
+<defs>
+<font id="webfont2B4HRL5F" horiz-adv-x="708" >
+<font-face units-per-em="2048" ascent="1536" descent="-512" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode=" "  horiz-adv-x="532" />
+<glyph unicode="&#x09;" horiz-adv-x="532" />
+<glyph unicode="&#xa0;" horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="575" d="M174 100.5q0 49.5 33 81t82 31.5t80.5 -31.5t31.5 -81t-31.5 -82t-80.5 -32.5t-82 32.5t-33 82zM195 1679h188l-27 -1302h-135z" />
+<glyph unicode="&#x22;" horiz-adv-x="774" d="M92 1464q0 49 33 81t82 32q61 0 93 -50t32 -118q-2 -147 -152 -332l-86 29q102 127 121 244q-55 0 -89 32.5t-34 81.5zM442 1464q0 49 33 81t82 32q59 0 92 -50t33 -118q-2 -147 -152 -332l-86 29q102 127 121 244q-55 0 -89 32.5t-34 81.5z" />
+<glyph unicode="#" horiz-adv-x="1689" d="M82 489l35 148h338l88 362h-348l34 148h351l106 430h152l-107 -430h361l106 430h152l-107 -430h365l-35 -148h-367l-88 -362h377l-35 -148h-379l-118 -489h-152l119 489h-361l-118 -489h-152l119 489h-336zM606 637h361l88 362h-361z" />
+<glyph unicode="$" horiz-adv-x="1341" d="M117 281l125 118q131 -213 387 -252v607q-78 25 -129 44t-111.5 54t-95.5 75t-59.5 100t-24.5 136q0 117 42 204t109.5 133t133 68.5t135.5 28.5v125h131v-127q260 -25 411 -186l-127 -111q-106 109 -284 132v-537q109 -35 176.5 -63.5t145 -82t116.5 -132t39 -183.5 q0 -205 -138 -322.5t-339 -129.5v-119h-131v123q-336 39 -512 297zM381 1163q0 -86 64.5 -138t183.5 -91v498q-98 -14 -173 -76t-75 -193zM760 143q129 12 217 87t88 202q0 113 -79 173.5t-226 107.5v-570z" />
+<glyph unicode="%" horiz-adv-x="2066" d="M123 1167.5q0 118.5 35 205.5t93 133t122.5 67.5t136.5 21.5q74 0 138.5 -20.5t123.5 -67.5t93 -135t34 -209q-2 -227 -115.5 -326.5t-271.5 -99.5q-72 0 -136.5 21.5t-123.5 67.5t-94 134.5t-35 207zM276 1167q0 -168 70 -241.5t166 -73.5t163.5 72.5t69.5 238.5 q0 170 -68.5 244t-166.5 74q-96 -2 -165 -75t-69 -239zM350 -96l1188 1763h176l-1188 -1763h-176zM1167 416q2 227 115 327.5t272 102.5q74 0 138.5 -21.5t124 -67.5t93.5 -135.5t34 -209.5q-2 -227 -116 -326.5t-272 -99.5q-72 0 -136 21.5t-123.5 67.5t-94.5 134t-35 207z M1323 412q0 -166 68.5 -239t165 -73t164 73t69.5 239q0 168 -67.5 242.5t-163.5 76.5q-96 0 -166 -74.5t-70 -244.5z" />
+<glyph unicode="&#x26;" horiz-adv-x="1802" d="M123 410q0 150 95 254t267 200q-104 115 -157.5 203t-53.5 174q0 92 38 159.5t103.5 104.5t138.5 54.5t155 17.5q178 0 302 -80t124 -256q0 -121 -102.5 -210t-295.5 -187l377 -404q31 47 58 102l69 138l55 113l127 -78q-162 -324 -200 -387q182 -180 211 -174q37 0 53 3 t41.5 29.5t50.5 81.5l111 -65q-35 -78 -66 -124t-66.5 -63.5t-57 -21.5t-66.5 -4q-72 -8 -306 207q-184 -211 -491 -211q-59 0 -140 23.5t-168 70.5t-146.5 134t-59.5 196zM295 410q0 -84 68.5 -144.5t142.5 -84t131 -23.5q227 2 377 151l-432 455q-135 -74 -211 -157.5 t-76 -196.5zM446 1241q0 -90 195 -295q100 51 160.5 88t111 93.5t50.5 113.5q0 113 -74 163t-180 50q-109 0 -186 -51t-77 -162z" />
+<glyph unicode="'" horiz-adv-x="423" d="M92 1464q0 49 33 81t82 32q61 0 93 -50t32 -118q-2 -147 -152 -332l-86 29q102 127 121 244q-55 0 -89 32.5t-34 81.5z" />
+<glyph unicode="(" horiz-adv-x="692" d="M123 520q0 98 13.5 220t49 269.5t89 267.5t143.5 205t200 95l13 -143q-96 -35 -167 -144.5t-104.5 -255t-49 -273.5t-15.5 -241q0 -111 15.5 -238.5t49 -273t104.5 -256t167 -143.5l-13 -144q-113 12 -202.5 98.5t-142 205t-88 264t-49 266.5t-13.5 221z" />
+<glyph unicode=")" horiz-adv-x="692" d="M61 -391q96 33 167 143.5t105 256t49 273.5t15 238q0 113 -15 241t-49 273.5t-104.5 255t-167.5 144.5l13 143q111 -10 201 -95t143 -205t89 -267.5t49 -269.5t13 -220q0 -100 -13 -221t-49 -266.5t-88 -264t-142.5 -204.5t-202.5 -99z" />
+<glyph unicode="*" horiz-adv-x="1265" d="M100 1161l52 133l413 -166l-4 449h144l-5 -449l414 166l51 -133l-424 -166l295 -327l-118 -101l-285 353l-283 -353l-123 101l295 327z" />
+<glyph unicode="+" horiz-adv-x="1331" d="M102 496v137h484v493h137v-493h506v-137h-506v-496h-137v496h-484z" />
+<glyph unicode="," horiz-adv-x="413" d="M82 100.5q0 49.5 32.5 81t82.5 31.5q61 0 93 -50t32 -118q-2 -147 -152 -332l-86 29q102 127 121 244q-55 0 -89 32.5t-34 82z" />
+<glyph unicode="-" d="M113 492v143h483v-143h-483z" />
+<glyph unicode="." horiz-adv-x="411" d="M92 100.5q0 49.5 33 81t82 31.5t80.5 -31.5t31.5 -81t-31.5 -82t-80.5 -32.5t-82 32.5t-33 82z" />
+<glyph unicode="/" horiz-adv-x="884" d="M41 -532l633 2109h170l-633 -2109h-170z" />
+<glyph unicode="0" horiz-adv-x="1253" d="M123 579.5q0 165.5 44 287.5t118.5 187.5t159.5 96.5t181.5 31t181.5 -31t159.5 -96.5t118.5 -187.5t44 -287.5t-44 -287.5t-118.5 -187.5t-159.5 -96.5t-181.5 -31t-181.5 31t-159.5 96.5t-118.5 187.5t-44 287.5zM295 579.5q0 -237.5 96 -344t235.5 -106.5t235.5 106.5 t96 344t-96 344t-235.5 106.5t-235.5 -106.5t-96 -344z" />
+<glyph unicode="1" horiz-adv-x="731" d="M102 936l293 221h166v-1157h-166v983l-182 -154z" />
+<glyph unicode="2" horiz-adv-x="1126" d="M102 0v131l71 49q44 31 155.5 120t196.5 169t156 176t71 162q0 109 -56.5 161t-152.5 50q-53 0 -104.5 -19.5t-85.5 -46t-59.5 -54.5t-37.5 -46l-12 -18q-104 98 -105 100q43 78 155 162t251 86q180 0 280.5 -92.5t100.5 -270.5q0 -139 -165 -323.5t-376 -345.5h627 l2 -150h-912z" />
+<glyph unicode="3" horiz-adv-x="1142" d="M82 -313l108 106q10 -8 28 -20.5t80 -30.5t130 -16q92 0 184.5 43t164 147t71.5 250q0 98 -74 173t-174 75q-41 0 -86 -6.5t-80 -13.5t-62.5 -15t-43.5 -14l-17 -5v144q166 68 262.5 148.5t96.5 197.5q0 74 -52.5 120t-125.5 46q-53 0 -99.5 -14.5t-76 -36t-51 -43 t-32.5 -35.5l-8 -15l-96 95q4 8 13.5 22.5t41 52t69.5 65.5t102.5 51.5t133.5 23.5q145 0 247 -93.5t102 -238.5q0 -158 -183 -293q152 -18 257.5 -126.5t109.5 -264.5q0 -147 -57.5 -268t-148.5 -192t-191.5 -108.5t-196.5 -37.5q-88 0 -175 31.5t-130 64.5z" />
+<glyph unicode="4" horiz-adv-x="1286" d="M82 0v90l803 1067h108v-1007h232v-150h-232v-440h-166v440h-745zM307 141l39 9h481v688l-491 -666l-29 -29v-2z" />
+<glyph unicode="5" horiz-adv-x="1208" d="M143 -301l107 104q8 -8 24.5 -21t79 -34.5t135.5 -21.5q150 0 281 115.5t131 328.5q0 115 -84 218.5t-203 103.5q-158 0 -270 -76h-166v741h770v-156h-604v-413q119 53 270 53q180 0 317.5 -143.5t145.5 -327.5q0 -147 -57 -268t-146.5 -192.5t-188.5 -110.5t-196 -39 q-104 0 -190 34.5t-121 69.5z" />
+<glyph unicode="6" horiz-adv-x="1269" d="M131 727q0 360 170 620.5t424 260.5q188 0 356 -135l-110 -107q-100 84 -240 84q-115 0 -202 -76t-134 -195.5t-71.5 -240.5t-26.5 -236q176 268 414 269q193 0 314.5 -111.5t121.5 -353.5q0 -80 -25.5 -164t-78 -167t-151.5 -136t-230 -53q-254 0 -392.5 191.5 t-138.5 549.5zM319 481q35 -168 123 -256t220 -88q111 0 185.5 66.5t101 145.5t26.5 157q0 164 -74 238.5t-190 74.5q-230 0 -392 -338z" />
+<glyph unicode="7" horiz-adv-x="1058" d="M10 -328q86 53 339 497.5t437 823.5h-696v164h907v-121q-195 -410 -478 -918.5t-394 -557.5z" />
+<glyph unicode="8" horiz-adv-x="1216" d="M133 350q2 143 97.5 263t224.5 208q-281 223 -281 439q0 92 38 160.5t103.5 106.5t138 55t154.5 17t155 -17t138.5 -55t103 -106.5t37.5 -160.5q0 -143 -98 -255t-221 -186q86 -63 137 -106t109.5 -104.5t86 -125t27.5 -133.5q0 -78 -24.5 -140.5t-59 -100t-87 -65.5 t-93.5 -40t-93 -19.5t-72 -7.5h-42h-4h-36q-13 0 -68 6.5t-95 18.5t-95.5 40t-91.5 65.5t-62.5 101t-26.5 141.5zM307 350q0 -55 19.5 -98t55.5 -66.5t67.5 -39t74.5 -19.5l55 -5q11 -1 29 -1h2q23 0 45.5 1t72.5 13t86 33.5t65.5 69t29.5 112.5q0 86 -86 174t-254 209 q-248 -160 -262 -383zM348 1260q0 -90 67.5 -174.5t188.5 -178.5q53 29 105.5 68t105.5 119t53 166q0 111 -75.5 159.5t-184 48.5t-184.5 -48.5t-76 -159.5z" />
+<glyph unicode="9" horiz-adv-x="1269" d="M123 662q0 80 25.5 163.5t78 166.5t151.5 136.5t230 53.5q254 0 392.5 -191.5t138.5 -550.5q0 -109 -20.5 -224.5t-69 -234t-116 -212t-171 -151.5t-225.5 -58q-117 0 -217.5 37.5t-155.5 76.5l112 109q119 -66 259 -66q115 0 202.5 75t136 194.5t72 239.5t27.5 237 q-180 -266 -414 -266q-193 0 -314.5 111.5t-121.5 353.5zM295 662q0 -164 73.5 -239t190.5 -75q227 0 391 336q-35 170 -123 258t-219 88q-111 0 -185.5 -66.5t-101 -145t-26.5 -156.5z" />
+<glyph unicode=":" horiz-adv-x="514" d="M143 100.5q0 49.5 33 81t82 31.5t81 -31.5t32 -81t-32 -82t-81 -32.5t-82 32.5t-33 82zM143 850q0 49 33 81t82 32t81 -32t32 -81t-32 -82t-81 -33t-82 33t-33 82z" />
+<glyph unicode=";" horiz-adv-x="526" d="M143 100.5q0 49.5 33 81t82 31.5q61 0 93 -50t32 -118q-2 -147 -152 -332l-86 29q102 127 121 244q-55 0 -89 32.5t-34 82zM143 850q0 49 33 81t82 32t81 -32t32 -81t-32 -82t-81 -33t-82 33t-33 82z" />
+<glyph unicode="&#x3c;" horiz-adv-x="1433" d="M154 500v147l1136 514v-147l-975 -441l975 -440v-147z" />
+<glyph unicode="=" horiz-adv-x="1394" d="M133 344v137h1129v-137h-1129zM133 672v137h1129v-137h-1129z" />
+<glyph unicode="&#x3e;" horiz-adv-x="1433" d="M143 -14v147l973 440l-973 441v147l1137 -514v-147z" />
+<glyph unicode="?" horiz-adv-x="1032" d="M84 1393q6 12 19.5 31.5t56.5 68.5t91 87t125 68.5t156 30.5q104 0 184.5 -25.5t125.5 -64.5t72.5 -91t35.5 -96t8 -91q0 -78 -24.5 -147.5t-81.5 -139.5t-93 -104l-114 -107q-164 -150 -164 -213q0 -88 94 -172l-104 -90q-53 47 -78.5 76.5t-47 79t-21.5 108.5 q0 90 52 164t161 170q74 68 118.5 116t86.5 119.5t44 139.5q0 225 -254 225q-59 0 -115.5 -25.5t-95 -61.5t-69.5 -72t-45 -62l-14 -25zM399 100.5q0 49.5 33 81t82 31.5t81 -31.5t32 -81t-32 -82t-81 -32.5t-82 32.5t-33 82z" />
+<glyph unicode="@" horiz-adv-x="2195" d="M123 535q0 266 141.5 507.5t378 388t502.5 146.5q215 0 395 -76t294 -199.5t176.5 -276.5t62.5 -312q0 -158 -54.5 -283t-133.5 -195.5t-175 -117.5t-170 -62.5t-129 -15.5q-166 0 -127 182q-209 -184 -412 -182q-276 2 -276 383q0 162 56.5 308.5t141.5 243.5t183 154.5 t184 57.5q190 0 297 -164l29 121l160 -37q-209 -928 -209 -938q6 -6 57 4t123 46t139.5 94.5t112.5 164t39 236.5q0 127 -51.5 249.5t-145.5 224t-242.5 164t-324.5 62.5q-221 0 -421 -125t-318.5 -328.5t-118.5 -424.5q0 -330 255 -552.5t603 -222.5q182 0 321.5 48.5 t341.5 216.5l103 -127q-231 -190 -392 -245.5t-374 -55.5q-270 0 -503.5 119.5t-376 337t-142.5 481.5zM760 422q0 -254 112 -260q78 -2 160 39t147.5 105.5t100.5 105.5t61 77l76 345q-55 135 -117.5 182t-138.5 47q-135 0 -268 -188.5t-133 -452.5z" />
+<glyph unicode="A" horiz-adv-x="1474" d="M61 0l582 1577h188l582 -1577h-190l-199 537h-575l-197 -537h-191zM506 692h461l-230 627z" />
+<glyph unicode="B" horiz-adv-x="1308" d="M174 0v1577h180v-115q117 76 190.5 106.5t164.5 30.5q166 0 284.5 -111.5t118.5 -344.5q-2 -223 -160 -324q129 -59 180.5 -154.5t51.5 -179.5v-10q0 -43 -1 -70.5t-11.5 -85t-29 -97.5t-57 -90t-94 -82t-142.5 -53.5t-198 -21.5q-137 4 -297 117v-92h-180zM354 236 q147 -92 297 -93q78 0 138.5 16.5t97.5 36t63.5 58.5t37.5 61.5t17.5 67.5t6.5 56v46q0 31 -13.5 65t-46 77t-106.5 72.5t-178 33.5q-59 -4 -314 -4v-493zM354 877h112q32 0 102.5 3t102.5 10l85 19q53 12 78.5 32t54.5 47.5t40 67.5t11 91q-2 145 -69.5 215t-161.5 70 q-160 0 -355 -119v-436z" />
+<glyph unicode="C" horiz-adv-x="1357" d="M123 752q0 203 59.5 369.5t154.5 267t208.5 154.5t228.5 54q92 0 174 -22.5t134.5 -53t92 -62.5t58.5 -54l16 -23l-125 -120l-11 17q-7 11 -38 40t-66.5 50.5t-99 38.5t-137.5 17q-186 0 -325.5 -174t-139.5 -499q0 -256 131 -430.5t320 -174.5q45 0 89 6.5t81 16.5 t70.5 23.5t61 28t50.5 28.5t40 27.5l29.5 23.5t18.5 16l6 7l111 -107q-61 -76 -117 -115q-176 -127 -436 -127q-274 0 -456.5 222.5t-182.5 554.5z" />
+<glyph unicode="D" horiz-adv-x="1503" d="M174 0v1577h180v-174q205 193 465 194q111 0 207 -45t178 -137t129 -256t47 -381q0 -342 -179 -572.5t-443 -230.5q-190 4 -404 142v-117h-180zM354 281q197 -129 404 -129q188 0 315 177t127 449q0 315 -111.5 477t-263.5 166q-281 0 -471 -194v-946z" />
+<glyph unicode="E" horiz-adv-x="1150" d="M174 0v1577h651l215 10v-186h-686v-508h584v-156h-584v-561h500l215 10v-186h-895z" />
+<glyph unicode="F" horiz-adv-x="1112" d="M174 0v1577h651l215 10v-186h-686v-508h584v-156h-584v-737h-180z" />
+<glyph unicode="G" horiz-adv-x="1525" d="M123 764q0 184 48 330.5t122 237.5t173 152.5t194.5 86t191.5 26.5q90 0 173 -24.5t138.5 -60t98.5 -71.5t61 -61l20 -24l-124 -121q-4 8 -14.5 21.5t-43.5 47t-70.5 59.5t-100 47.5t-130.5 23.5q-90 0 -180 -35t-176 -108.5t-140.5 -210t-54.5 -316.5q0 -100 30 -201.5 t90 -196t171 -153.5t254 -61q98 0 217 54t119 113v306h-211q-109 0 -166 30v164q74 -18 172 -18h365v-490q0 -135 -150.5 -233t-337.5 -103q-160 0 -290 51.5t-211.5 132.5t-137 187.5t-78 210t-22.5 207.5z" />
+<glyph unicode="H" horiz-adv-x="1519" d="M174 0v1577h180v-684h811v684h181v-1577h-181v737h-811v-737h-180z" />
+<glyph unicode="I" horiz-adv-x="528" d="M174 0v1577h180v-1577h-180z" />
+<glyph unicode="J" horiz-adv-x="585" d="M-20 -369q109 31 181 113t72 221v1612h181v-1612q0 -94 -26 -173t-63.5 -131t-90 -93t-96.5 -61.5t-93 -36.5z" />
+<glyph unicode="K" horiz-adv-x="1265" d="M174 0v1577h180v-711l541 711h227l-590 -737q45 -6 112 -38t106 -77q45 -45 244.5 -365.5t230.5 -355.5v-4h-219q-35 37 -188.5 295t-190.5 297q-82 90 -185 90q-61 0 -88 -6v-676h-180z" />
+<glyph unicode="L" horiz-adv-x="1202" d="M174 0v1577h180v-1401h561l215 10v-186h-956z" />
+<glyph unicode="M" horiz-adv-x="1742" d="M174 0v1577h180l514 -1352l2 -14l2 14l517 1352h180v-1577h-180v1106l2 31l-9 -31l-424 -1106h-174l-424 1106l-8 31l2 -31v-1106h-180z" />
+<glyph unicode="N" horiz-adv-x="1482" d="M174 0v1577h180v-2l762 -1239l14 -29l-2 29v1241h181v-1577h-181v2l-761 1243l-15 29l2 -29v-1245h-180z" />
+<glyph unicode="O" horiz-adv-x="1554" d="M123 790.5q0 225.5 55 389t152.5 252t208 127t241.5 38.5q102 -2 192.5 -25.5t176.5 -80.5t146.5 -146.5t98.5 -229.5t38 -320q0 -227 -55.5 -391t-152 -252.5t-207 -127t-241.5 -38.5t-240.5 38.5t-206 126t-151.5 251t-55 389zM303 795q0 -180 40 -310.5t109.5 -200 t149.5 -100t174 -30.5t174 30.5t149.5 99t110.5 198.5t41 309q0 176 -40 305t-109.5 198.5t-148.5 101t-173 34.5q-94 0 -175 -31t-151.5 -100.5t-110.5 -197.5t-40 -306z" />
+<glyph unicode="P" horiz-adv-x="1265" d="M174 0v1577h180v-123q190 143 365 143q160 -6 301 -140t143 -355q0 -287 -138 -458t-349 -171q-170 2 -322 107v-580h-180zM354 760q166 -129 330 -131q133 4 220 131t87 342q-2 145 -88 233t-184 95q-98 0 -176 -29t-189 -98v-543z" />
+<glyph unicode="Q" horiz-adv-x="1554" d="M123 780q0 182 38 325.5t99.5 235t148.5 150.5t178 82.5t193 23.5q129 -2 239.5 -44t206 -131t151 -253.5t55.5 -388.5q0 -207 -47.5 -362.5t-131.5 -244.5t-181 -135t-214 -58q70 -82 232 -82q53 0 192 32l49 -161q-88 -39 -241 -39q-96 0 -174 25.5t-124.5 68.5t-73 80 t-42.5 78q-244 29 -398.5 218t-154.5 580zM303 784q0 -180 40 -310t109.5 -199.5t149.5 -100.5t174 -31t174 31t149.5 99.5t110.5 198.5t41 308q0 143 -26.5 256t-71.5 184.5t-106.5 120t-127 67.5t-139.5 22q-94 0 -175 -33t-150.5 -103.5t-110.5 -201t-41 -308.5z" />
+<glyph unicode="R" horiz-adv-x="1349" d="M174 0v1577h180v-115q111 70 187.5 102.5t169.5 32.5q168 -4 295 -112.5t127 -335.5q0 -152 -54.5 -258.5t-128 -155.5t-170.5 -69q82 -70 271.5 -338.5t267.5 -323.5v-4h-223q-53 39 -134 146.5t-149 211t-150.5 192.5t-148.5 101q-113 0 -160 2v-653h-180zM354 799h303 q121 2 211 82t93 268q0 139 -76 207.5t-174 73.5q-100 0 -176 -27t-181 -88v-516z" />
+<glyph unicode="S" horiz-adv-x="1361" d="M117 281l125 118q78 -125 202.5 -189.5t272.5 -68.5q143 0 245.5 76t102.5 215q0 53 -22.5 97t-50 71t-84 53.5t-95.5 40t-108 33.5l-21 6q-94 29 -144.5 46.5t-124 55t-111.5 77.5t-66.5 104.5t-28.5 146.5q0 106 36 187.5t88 127.5t119.5 74.5t122 37.5t105.5 9 q150 0 280 -51t211 -139l-127 -111q-131 137 -364 138q-43 0 -87 -11.5t-95.5 -38t-84 -84t-32.5 -139.5q0 -45 22.5 -82t48 -59.5t85 -48t90 -35.5t106.5 -33q90 -29 146.5 -49t132 -60t119 -86t75 -118t31.5 -160q0 -217 -153.5 -336t-370.5 -119q-397 13 -596 304z" />
+<glyph unicode="T" horiz-adv-x="1150" d="M20 1421v156h1110v-156h-468v-1421h-181v1421h-461z" />
+<glyph unicode="U" horiz-adv-x="1460" d="M174 489v1088h180v-1083q0 -94 29 -163t70 -106t96 -59.5t97 -27.5t85 -5t84 5t96.5 27.5t95.5 58.5t69.5 104.5t29.5 160.5v1088h180v-1088q0 -133 -43 -232t-102.5 -151.5t-141 -83t-143 -39t-125.5 -8.5q-66 0 -126 8.5t-143 39t-142.5 83t-102.5 151.5t-43 232z" />
+<glyph unicode="V" horiz-adv-x="1433" d="M61 1577h191l459 -1296l6 -27l6 27l459 1296h190l-561 -1577h-188z" />
+<glyph unicode="W" horiz-adv-x="2019" d="M61 1577h189l328 -1270l4 -24l4 24l327 1270h191l328 -1270l4 -24l4 24l327 1270h191l-447 -1577h-149l-348 1217l-6 36l-7 -36l-344 -1217h-149z" />
+<glyph unicode="X" horiz-adv-x="1345" d="M61 0l500 786l-500 791h220l391 -616l393 616h219l-502 -791l502 -786h-221l-391 612l-389 -612h-222z" />
+<glyph unicode="Y" horiz-adv-x="1263" d="M20 1577h218l397 -627l399 627h209l-520 -821v-756h-178v756z" />
+<glyph unicode="Z" horiz-adv-x="1257" d="M104 0v168l789 1241h-768v168h987v-164l-788 -1245h594q23 -1 44 -1q154 0 193 40v-174q-18 -16 -78.5 -24.5t-111.5 -8.5h-52h-809z" />
+<glyph unicode="[" horiz-adv-x="735" d="M174 -532v2109h418v-123h-246v-1864h246v-122h-418z" />
+<glyph unicode="\" horiz-adv-x="905" d="M51 1577h170l633 -2109h-170z" />
+<glyph unicode="]" horiz-adv-x="735" d="M143 -410h246v1864h-246v123h418v-2109h-418v122z" />
+<glyph unicode="^" horiz-adv-x="1339" d="M82 0l514 1126h147l514 -1126h-147l-440 965l-441 -965h-147z" />
+<glyph unicode="_" horiz-adv-x="1353" d="M113 0h1128v-131h-1128v131z" />
+<glyph unicode="`" horiz-adv-x="729" d="M113 1432l43 145l460 -229l-43 -97z" />
+<glyph unicode="a" horiz-adv-x="1155" d="M123 283q0 72 14.5 124t53 103t120.5 87t207 54q213 29 285 47v129q0 51 -32 117t-95 66q-219 0 -344 -107q-18 -20 -16.5 -39.5t16.5 -34.5l-164 -30q-20 26 -20 64q0 24 8 52q20 74 92 115q218 121 445 121h7q100 0 165 -61.5t84.5 -129t19.5 -133.5v-555 q0 -16 4 -40.5t32.5 -73.5t77.5 -80l-110 -103q-119 47 -158 199q-186 -199 -385 -199q-20 0 -49 4.5t-77 22.5t-86 49t-66.5 91.5t-28.5 140.5zM293 283q0 -49 17.5 -85t42 -51.5t42 -21.5t29.5 -6q104 0 204.5 66.5t174.5 158.5v207q-100 -20 -266 -43 q-152 -20 -198 -74.5t-46 -150.5z" />
+<glyph unicode="b" horiz-adv-x="1292" d="M174 0v1679h172v-770q189 242 414 242h4q180 -2 292.5 -170t112.5 -399q0 -287 -125.5 -447t-347.5 -160q-156 0 -350 156v-131h-172zM346 319q76 -76 174 -126t176 -50q137 0 219 117t82 322q0 162 -64.5 280.5t-168.5 120.5h-4q-243 0 -414 -266v-398z" />
+<glyph unicode="c" horiz-adv-x="1044" d="M113 543q0 295 149 454q144 154 320 154h14q66 -2 125 -21.5t97 -46t67.5 -52t44.5 -44.5l12 -16l-108 -103q-2 4 -8.5 12.5t-27 28t-46 34.5t-68.5 28.5t-92 15.5h-8q-114 0 -205 -113q-94 -117 -94 -331q0 -172 82 -288t215 -116q51 0 81.5 4t83 32t109.5 81l107 -102 q-82 -82 -156 -124t-116 -48.5t-109 -6.5q-209 0 -339 162t-130 406z" />
+<glyph unicode="d" horiz-adv-x="1333" d="M123 545q0 287 126 446.5t347 159.5q156 0 350 -156v684h172v-1409q2 -16 7 -39.5t39 -77t87 -79.5l-141 -99q-143 78 -164 242q-189 -242 -414 -242h-4q-180 2 -292.5 170.5t-112.5 399.5zM295 545q0 -162 64.5 -281t168.5 -121h8q243 0 410 267v397q-80 76 -176 126 t-174 50q-137 0 -219 -116.5t-82 -321.5z" />
+<glyph unicode="e" horiz-adv-x="1187" d="M113 551q0 242 138 421t347 179q119 0 209 -46t136 -107.5t73.5 -139.5t35 -127t7.5 -84v-76h-774q0 -193 85 -318.5t236 -125.5q115 0 195 49q80 47 153 146l105 -101q-72 -88 -141.5 -144.5t-135 -74.5t-95.5 -22.5t-81 -4.5q-227 0 -360 167t-133 409zM309 723h570 q-10 47 -27.5 89t-48.5 87t-84 72.5t-121 27.5q-100 0 -177 -76.5t-112 -199.5z" />
+<glyph unicode="f" horiz-adv-x="825" d="M61 983v143h146v197q0 367 317 367q207 0 363 -129l-111 -107q-119 92 -252 92q-49 0 -79.5 -15t-45 -51t-18.5 -68t-4 -89v-197h332v-143h-332v-983h-170v983h-146z" />
+<glyph unicode="g" horiz-adv-x="1261" d="M123 -221q2 125 45 200.5t127 137.5q-96 41 -105 133q0 96 146 213q-170 96 -170 332q0 92 44 165.5t113.5 113.5t142.5 60.5t140 20.5q63 0 137 -18q133 121 310 120q55 0 123 -20l-29 -143q-37 12 -94 12q-88 0 -166 -33q160 -102 160 -278q0 -115 -44.5 -197 t-115 -122t-140 -56.5t-141.5 -16.5q-70 0 -123 11q-121 -86 -121 -164q6 -6 52.5 -9t120.5 -5l73 -3q119 -6 207 -21t179 -49t140.5 -101.5t49.5 -163.5q0 -199 -144.5 -330t-425.5 -131q-199 0 -345 98.5t-146 243.5zM297 -221q0 -82 94 -135.5t223 -53.5q197 0 301.5 87 t104.5 221q0 53 -36 90t-103.5 55t-128 26.5t-146.5 12.5q-119 0 -147 2q-84 -51 -123 -113.5t-39 -191.5zM338 795q0 -80 26.5 -135.5t70.5 -81t85 -34.5t86 -9t87 11t85 37.5t69.5 81t26.5 130.5q0 113 -86 171t-182 58t-182 -58t-86 -171z" />
+<glyph unicode="h" horiz-adv-x="1241" d="M174 0v1679h172v-790q270 262 492 262q260 0 260 -350v-801h-172v801q0 178 -88 178q-233 0 -492 -268v-711h-172z" />
+<glyph unicode="i" horiz-adv-x="555" d="M174 1475q0 45 29.5 73.5t75 28.5t74 -28.5t28.5 -73.5t-28.5 -75t-74 -30t-75 30t-29.5 75zM193 0v1126h169v-1126h-169z" />
+<glyph unicode="j" horiz-adv-x="452" d="M-72 -401q61 8 111.5 101t50.5 212v1214h170v-1214q0 -178 -87 -308t-193 -167zM72 1475q0 45 29.5 73.5t74.5 28.5t74 -28.5t29 -73.5t-29 -75t-74 -30t-74.5 30t-29.5 75z" />
+<glyph unicode="k" horiz-adv-x="1157" d="M174 0v1679h172v-950q383 268 449 397h174q-35 -133 -467 -458q66 -27 114 -80l338 -381q190 -207 213 -207h-231q-25 8 -102.5 91l-192.5 217l-147 169q-61 63 -99 74q-20 6 -49 -2v-549h-172z" />
+<glyph unicode="l" horiz-adv-x="573" d="M174 299v1380h170v-1380q0 -111 23 -133q45 -45 135 -45l-6 -146q-180 0 -250 70q-72 72 -72 254z" />
+<glyph unicode="m" horiz-adv-x="1882" d="M174 0v1126h172v-223q225 248 426 248q221 0 254 -254q227 254 432 254q260 0 260 -350v-801h-172v801q0 178 -88 178q-74 0 -140.5 -24.5t-123.5 -74t-87 -80t-75 -85.5v-715h-172v801q0 178 -88 178q-74 0 -140.5 -24.5t-123.5 -74t-87 -80t-75 -85.5v-715h-172z" />
+<glyph unicode="n" horiz-adv-x="1261" d="M174 0v1126h172v-237q270 262 492 262q260 0 260 -350v-801h-172v801q0 178 -88 178q-227 0 -492 -268v-711h-172z" />
+<glyph unicode="o" horiz-adv-x="1224" d="M123 563q0 166 41 285t112.5 182.5t154.5 92t181.5 28.5t181.5 -28.5t154.5 -92t112.5 -182.5t41 -285t-41 -284.5t-112.5 -182t-154.5 -92.5t-181.5 -29t-181.5 29t-154.5 92.5t-112.5 182t-41 284.5zM295 563.5q0 -237.5 91 -341t226.5 -103.5t226.5 103.5t91 341 t-91 341t-226.5 103.5t-226.5 -103.5t-91 -341z" />
+<glyph unicode="p" horiz-adv-x="1292" d="M174 -532v1658h172v-217q189 242 414 242h4q180 -2 292.5 -170t112.5 -399q0 -287 -125.5 -447t-347.5 -160q-156 0 -350 156v-663h-172zM346 319q76 -76 174 -126t176 -50q137 0 219 117t82 322q0 162 -64.5 280.5t-168.5 120.5h-4q-243 0 -414 -266v-398z" />
+<glyph unicode="q" horiz-adv-x="1292" d="M123 545q0 287 126 446.5t347 159.5q156 0 350 -156v131h172v-1658h-172v747q-193 -240 -414 -240h-4q-180 2 -292.5 170.5t-112.5 399.5zM295 545q0 -162 64.5 -281t168.5 -121h8q243 0 410 267v397q-80 76 -176 126t-174 50q-137 0 -219 -116.5t-82 -321.5z" />
+<glyph unicode="r" horiz-adv-x="940" d="M174 0v1126h172v-217q141 242 285 242q78 0 146.5 -28.5t96.5 -57.5l29 -27l-119 -114q-49 63 -145 63q-158 0 -293 -282v-705h-172z" />
+<glyph unicode="s" horiz-adv-x="1026" d="M92 205l119 96q45 -82 135 -131t191 -51q92 0 157.5 49t65.5 141q0 55 -43 96t-87 58.5t-124 42t-129 44t-106.5 56.5t-85 92.5t-27.5 130.5q0 78 26.5 138.5t65.5 94.5t90 55.5t91 27.5t79 6q223 0 354 -131l-110 -107q-88 94 -244 95q-39 0 -77 -11.5t-74.5 -54.5 t-36.5 -113q0 -35 17 -60.5t57 -46t70 -31.5t89 -29q74 -23 110.5 -35.5t95 -43t87.5 -62.5t52.5 -87t23.5 -125q0 -162 -115 -248t-277 -86q-131 0 -250.5 59.5t-189.5 170.5z" />
+<glyph unicode="t" horiz-adv-x="819" d="M92 983v143h144v308h172v-308h270v-143h-270v-655q0 -41 2 -66.5t11 -64.5t32.5 -58.5t60.5 -19.5q96 0 178 78l96 -93q-135 -129 -319 -129q-233 0 -233 353v655h-144z" />
+<glyph unicode="u" horiz-adv-x="1261" d="M164 326v800h172v-800q0 -178 88 -179q233 0 491 269v710h172v-1126h-172v236q-272 -260 -491 -261q-260 1 -260 351z" />
+<glyph unicode="v" horiz-adv-x="1144" d="M72 1126h198l293 -870l6 -39l4 19q2 18 2 20q246 813 312 870h186q-35 -43 -140.5 -324.5t-193.5 -541.5l-88 -260h-149z" />
+<glyph unicode="w" horiz-adv-x="1632" d="M72 1126h186l223 -839l6 -43l7 43l239 839h148l239 -839l8 -43l7 43q217 817 258 839h168q-25 -25 -114 -306t-165 -550l-78 -270h-145l-252 868l-248 -868h-162z" />
+<glyph unicode="x" horiz-adv-x="1216" d="M82 0q29 12 187.5 226t250.5 349l-397 551h217l278 -407q266 395 304 407h213q-49 -23 -420 -548l409 -578h-217l-291 434q-295 -426 -321 -434h-213z" />
+<glyph unicode="y" horiz-adv-x="1126" d="M59 -414q137 8 217 88q39 39 74 98.5t90 192.5l56 137l-394 1024h183l305 -790q307 754 352 790h195q-45 -43 -130 -232t-405 -974l-55 -131q-20 -47 -62.5 -113.5t-91.5 -113.5q-119 -115 -291 -125z" />
+<glyph unicode="z" horiz-adv-x="1060" d="M102 0v145l635 838h-635v143h842v-143l-635 -838h525q113 0 145 35v-145q-12 -14 -49 -22.5t-68 -10.5l-31 -2h-729z" />
+<glyph unicode="{" horiz-adv-x="962" d="M164 526v103q88 0 137 38t55 74l4 37v611q0 47 9.5 94t31 99t68.5 85t113 33q59 0 118.5 -16.5t90.5 -32.5l28 -19l-57 -143q-57 39 -180 39q-49 0 -50 -139v-613q0 -6 -1 -16t-9 -35t-20.5 -48.5t-39 -51t-61.5 -47.5q37 -20 64 -48t39 -50.5t19 -48t8 -36t1 -16.5v-612 q0 -139 50 -140q55 0 100 10.5t63 18.5l17 10l57 -143q-102 -68 -237 -68q-66 0 -113 33t-68.5 85t-31 99t-9.5 95v610q0 6 -1 16t-12 36t-29.5 45.5t-58.5 35.5t-95 16z" />
+<glyph unicode="|" horiz-adv-x="503" d="M174 -532v2232h156v-2232h-156z" />
+<glyph unicode="}" horiz-adv-x="962" d="M143 -477l58 143q57 -39 180 -39q49 0 49 140v610q0 14 4 37.5t36 77t89 86.5q-57 33 -89 83t-36 74.5t-4 40.5v613q0 139 -49 139q-55 0 -100 -10.5t-64 -18.5l-16 -10l-58 143q102 68 238 68q66 0 113 -33t68.5 -85t30.5 -99t9 -94v-611q0 -6 1 -16t11.5 -36t29 -45 t59 -35.5t96.5 -16.5v-103q-53 0 -93 -14t-58.5 -33.5t-30 -44t-13.5 -36t-2 -19.5v-612q0 -47 -9 -94.5t-30.5 -99.5t-69 -85t-112.5 -33q-59 0 -118.5 16.5t-90.5 32.5z" />
+<glyph unicode="~" horiz-adv-x="1349" d="M123 709q10 8 31.5 20t99.5 32.5t168 20.5q82 0 256 -63q176 -61 262 -62q72 0 130 11.5t81 23.5l23 13l53 -103q-106 -68 -287 -67q-94 0 -295 69q-154 55 -223 55q-78 0 -137.5 -12t-79.5 -24l-21 -13z" />
+<glyph unicode="&#xad;" d="M113 492v143h483v-143h-483z" />
+<glyph unicode="&#x2000;" horiz-adv-x="860" />
+<glyph unicode="&#x2001;" horiz-adv-x="1722" />
+<glyph unicode="&#x2002;" horiz-adv-x="860" />
+<glyph unicode="&#x2003;" horiz-adv-x="1722" />
+<glyph unicode="&#x2004;" horiz-adv-x="573" />
+<glyph unicode="&#x2005;" horiz-adv-x="430" />
+<glyph unicode="&#x2006;" horiz-adv-x="286" />
+<glyph unicode="&#x2007;" horiz-adv-x="286" />
+<glyph unicode="&#x2008;" horiz-adv-x="215" />
+<glyph unicode="&#x2009;" horiz-adv-x="344" />
+<glyph unicode="&#x200a;" horiz-adv-x="94" />
+<glyph unicode="&#x2010;" d="M113 492v143h483v-143h-483z" />
+<glyph unicode="&#x2011;" d="M113 492v143h483v-143h-483z" />
+<glyph unicode="&#x2012;" d="M113 492v143h483v-143h-483z" />
+<glyph unicode="&#x2013;" horiz-adv-x="1312" d="M61 498v133h1129v-133h-1129z" />
+<glyph unicode="&#x2014;" horiz-adv-x="1558" d="M82 498v133h1395v-133h-1395z" />
+<glyph unicode="&#x201c;" horiz-adv-x="774" d="M92 1245q2 147 152 332l86 -29q-102 -127 -123 -243q55 0 90 -33t35 -82t-33 -81t-82 -32q-61 0 -93 50t-32 118zM442 1245q2 147 152 332l86 -29q-102 -127 -123 -243q55 0 90 -33t35 -82t-33 -81t-82 -32q-61 0 -93 50t-32 118z" />
+<glyph unicode="&#x201d;" horiz-adv-x="774" d="M92 1464q0 49 33 81t82 32q61 0 93 -50t32 -118q-2 -147 -152 -332l-86 29q102 127 121 244q-55 0 -89 32.5t-34 81.5zM442 1464q0 49 33 81t82 32q59 0 92 -50t33 -118q-2 -147 -152 -332l-86 29q102 127 121 244q-55 0 -89 32.5t-34 81.5z" />
+<glyph unicode="&#x202f;" horiz-adv-x="344" />
+<glyph unicode="&#x205f;" horiz-adv-x="430" />
+<glyph unicode="&#x2212;" horiz-adv-x="1331" d="M102 496v137h1127v-137h-1127z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1125" d="M0 1125h1125v-1125h-1125v1125z" />
+</font>
+</defs></svg> 
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/css/font-files/League_Gothic-webfont.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/css/font-files/League_Gothic-webfont.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/css/font-files/League_Gothic-webfont.svg	(revision 29468)
@@ -0,0 +1,235 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Generated in 2009 by FontLab Studio Copyright info pending
+</metadata>
+<defs>
+<font id="webfontbDMP4rcs" horiz-adv-x="724" >
+<font-face units-per-em="2048" ascent="1505" descent="-543" />
+<missing-glyph horiz-adv-x="315" />
+<glyph unicode=" "  horiz-adv-x="315" />
+<glyph unicode="&#x09;" horiz-adv-x="315" />
+<glyph unicode="&#xa0;" horiz-adv-x="315" />
+<glyph unicode="!" horiz-adv-x="387" d="M74 1505h239l-55 -1099h-129zM86 0v227h215v-227h-215z" />
+<glyph unicode="&#x22;" horiz-adv-x="329" d="M57 1505h215l-30 -551h-154z" />
+<glyph unicode="#" horiz-adv-x="1232" d="M49 438l27 195h198l37 258h-196l26 194h197l57 420h197l-57 -420h260l57 420h197l-58 -420h193l-27 -194h-192l-37 -258h190l-26 -195h-191l-59 -438h-197l60 438h-261l-59 -438h-197l60 438h-199zM471 633h260l37 258h-260z" />
+<glyph unicode="$" horiz-adv-x="692" d="M37 358l192 13q12 -186 129 -187q88 0 93 185q0 29 -8.5 59.5t-19.5 55t-32.5 60.5t-34.5 53l-40 55q-28 38 -35 50q-68 92 -101 141.5t-70.5 141.5t-37.5 170q4 293 215 342v131h123v-125q201 -23 235 -282l-192 -25q-6 57 -28 92t-65 33q-80 -2 -84 -162 q0 -29 8.5 -60.5t18.5 -54t32.5 -59.5t34.5 -53l41 -59q30 -42 38 -52q6 -10 32 -48l37 -52q10 -14 33.5 -51t34.5 -58l26 -55q16 -35 23.5 -61.5t13.5 -60.5t6 -64q-4 -338 -245 -369v-217h-123v221q-236 41 -250 352z" />
+<glyph unicode="%" horiz-adv-x="1001" d="M55 911v437q0 6 1 18t9.5 42t23.5 53.5t48 42t78 18.5q70 0 110 -44t44 -87l4 -43v-437q0 -6 -1 -18t-9.5 -43t-23.5 -53.5t-47 -42t-77 -19.5q-72 0 -112 44t-44 89zM158 0l553 1505h131l-547 -1505h-137zM178 911q-4 -55 37 -55q16 0 25.5 14.5t9.5 26.5v14v437 q2 55 -35 55q-18 0 -27.5 -13.5t-9.5 -27.5v-14v-437zM631 158v436q0 6 1 18.5t9 43t23.5 53t48 42t78.5 19.5q70 0 109.5 -44t43.5 -87l4 -45v-436q0 -6 -1 -18.5t-9 -42t-23.5 -53.5t-47 -42t-76.5 -18q-72 0 -112 43t-44 88zM754 158q-4 -57 37 -58q16 0 24 14.5t8 28.5 l2 15v436q2 55 -34 55q-18 0 -27.5 -13t-9.5 -28v-14v-436z" />
+<glyph unicode="&#x26;" horiz-adv-x="854" d="M49 315q0 115 44 214.5t126 222.5q-106 225 -106 442v18q0 12 5 46t13 65t28.5 69t48.5 65.5t73 46t102 18.5q78 0 134 -34t80 -82t37 -96t13 -81v-35q0 -162 -205 -434q76 -174 148 -285q33 96 47 211l176 -33q-16 -213 -92 -358q55 -63 92 -76v-235q-23 0 -86 37.5 t-123 101.5q-123 -139 -252 -139t-216 97t-87 234zM262 326q2 -66 29.5 -108t70.5 -42q59 0 125 86q-88 139 -174 295q-6 -10 -14 -28.5t-22.5 -77.5t-14.5 -125zM305 1194q0 -111 55 -246q100 156 101 252q-2 2 0 15.5t-2 36t-11.5 43t-23.5 36t-41 15.5q-39 0 -58.5 -38 t-19.5 -75v-39z" />
+<glyph unicode="'" horiz-adv-x="309" d="M45 1012l72 266h-72v227h215v-227l-113 -266h-102z" />
+<glyph unicode="(" horiz-adv-x="561" d="M66 645q0 143 29.5 292.5t72.5 261.5t87 204t73 139l30 47l162 -84l-27.5 -40.5t-62.5 -114.5t-79 -182.5t-61.5 -238t-27.5 -284.5t26.5 -282.5t64.5 -240.5t76 -178t65 -118l26 -39l-162 -84q-12 18 -31.5 50t-69.5 133.5t-89 207t-70.5 257t-31.5 294.5z" />
+<glyph unicode=")" horiz-adv-x="561" d="M41 -213q10 14 27.5 41t62.5 115t79 181t61.5 236.5t27.5 284.5t-26.5 282.5t-64.5 241t-76 179t-64 118.5l-27 39l162 84q12 -18 31.5 -50t69.5 -134t89 -206.5t71 -257.5t32 -296t-30 -292.5t-74 -261t-87 -203t-72 -138.5l-30 -47z" />
+<glyph unicode="*" horiz-adv-x="677" d="M74 1251l43 148l164 -70l-19 176h154l-19 -176l164 70l43 -148l-172 -34l115 -138l-131 -80l-78 152l-76 -152l-131 80l115 138z" />
+<glyph unicode="+" horiz-adv-x="1060" d="M74 649v172h370v346h172v-346h371v-172h-371v-346h-172v346h-370z" />
+<glyph unicode="," horiz-adv-x="309" d="M45 0v227h215v-227l-113 -266h-102l72 266h-72z" />
+<glyph unicode="-" horiz-adv-x="444" d="M74 455v194h297v-194h-297z" />
+<glyph unicode="." horiz-adv-x="321" d="M53 0v227h215v-227h-215z" />
+<glyph unicode="/" horiz-adv-x="720" d="M8 -147l543 1652h162l-537 -1652h-168z" />
+<glyph unicode="0" d="M68 309v887q0 12 2 34.5t17 79t43 99.5t88.5 78t144 35t144 -34t88.5 -81t43 -95t17 -83l2 -33v-887q0 -12 -2 -34.5t-17 -79t-43 -99.5t-88.5 -77.5t-144 -34.5t-144 33.5t-88.5 80.5t-43 95.5t-17 80.5zM289 309q0 -12 1 -30.5t19.5 -49t53 -30.5t53 27.5t18.5 56.5 l2 26v887q0 12 -1 30.5t-19.5 49.5t-53 31t-53 -28t-18.5 -54l-2 -29v-887z" />
+<glyph unicode="1" horiz-adv-x="475" d="M25 1180v141q82 16 140 62.5t77 82.5l18 39h133v-1505h-221v1180h-147z" />
+<glyph unicode="2" horiz-adv-x="731" d="M55 0v219l39 62q25 39 88.5 152.5t112.5 220t91 241.5t44 238q0 184 -73.5 184t-73.5 -184v-105h-222v105q0 389 295 389t295 -375q0 -336 -346 -928h350v-219h-600z" />
+<glyph unicode="3" horiz-adv-x="686" d="M45 1071q0 70 2 115t17.5 115.5t44 112.5t84 75t135.5 33q78 0 135 -31t84.5 -71t44 -92t19.5 -79.5t3 -50.5q0 -291 -106 -397l-2 -2q127 -100 127 -414q0 -25 -3 -58.5t-19.5 -99t-44 -116t-85 -89t-135.5 -38.5q-80 0 -136 31.5t-86 75.5t-47.5 112.5t-20.5 118 t-3 112.5h217q2 -150 17.5 -203t58.5 -53q45 0 57.5 50.5t12.5 140.5q0 18 1 66t0 62.5t-4 49.5t-10 46l-18 33q-12 22 -29.5 29t-45 15t-62.5 10h-19v184q37 2 62.5 7.5t45 14.5t31 21.5t17.5 29.5t9 39.5t3 51.5v62v43q0 45 -1 68.5t-7 58t-21.5 51t-39.5 16.5 q-41 0 -52.5 -49t-13.5 -207h-217z" />
+<glyph unicode="4" horiz-adv-x="684" d="M25 328v194l323 983h221v-983h103v-194h-103v-328h-202v328h-342zM213 522h154v471v45h-13l-12 -45z" />
+<glyph unicode="5" horiz-adv-x="704" d="M74 438h221v-59q0 -115 14.5 -159t52.5 -44q37 0 52.5 45t15.5 156v336q0 111 -70 110q-33 0 -59.5 -40t-26.5 -70h-186v792h535v-219h-344v-313q8 6 21 15t47 23.5t59 12.5q78 0 133 -40t76.5 -99.5t28.5 -100.5t7 -71v-336q0 -393 -289 -393q-78 0 -133 29.5 t-84.5 71.5t-46 108.5t-20.5 118.5t-4 126z" />
+<glyph unicode="6" horiz-adv-x="700" d="M66 309v856q0 356 288.5 356.5t288.5 -356.5v-94h-221q0 162 -11.5 210t-56.5 48q-39 0 -53 -37t-14 -127v-268q59 37 110 37q80 0 133.5 -36t76 -93t29.5 -101.5t7 -87.5v-307q0 -41 -8 -84t-34 -103.5t-89 -99t-157.5 -38.5t-158 38.5t-89 99t-33.5 103.5t-8 84z M287 244q0 -20 17.5 -44t49.5 -24q31 0 49.5 24.5t18.5 43.5v450q0 18 -18.5 43t-49 25t-48 -20.5t-19.5 -41.5v-456z" />
+<glyph unicode="7" horiz-adv-x="589" d="M8 1286v219h557v-221l-221 -1284h-229l225 1286h-332z" />
+<glyph unicode="8" horiz-adv-x="696" d="M53 322v176q0 188 115 297q-102 102 -102 276v127q0 23 2 49.5t18 79.5t43 93t84 71t135 31t135.5 -31t84 -71t43 -93t18.5 -79.5t2 -49.5v-127q0 -174 -103 -276q115 -109 115 -297v-176q0 -25 -2 -52.5t-18.5 -83t-45 -96.5t-88 -73.5t-141.5 -32.5t-141.5 32.5 t-88 73.5t-45 96.5t-18.5 83t-2 52.5zM268 410q2 -127 17.5 -175.5t62.5 -48.5q37 0 54.5 30t21.5 71t4 123q0 152 -13.5 209t-66.5 57t-66.5 -57t-13.5 -209zM283 1120q0 -127 12 -177t53 -50t53.5 50t12.5 177q0 113 -12.5 160t-53.5 47q-37 0 -50 -44t-15 -163z" />
+<glyph unicode="9" horiz-adv-x="700" d="M57 340v94h222q0 -162 11 -210t56 -48q39 0 53.5 37t14.5 127v283q-59 -37 -111 -37q-80 0 -133 35.5t-75.5 93t-30 101.5t-7.5 87v293q0 41 8.5 84t34 103.5t89 99.5t157.5 39t157.5 -39t89 -99.5t34 -103.5t8.5 -84v-856q0 -356 -289 -356t-289 356zM279 825 q0 -18 18 -42.5t49 -24.5t48.5 20.5t19.5 40.5v443q0 20 -17.5 43.5t-50.5 23.5q-31 0 -49 -24.5t-18 -42.5v-437z" />
+<glyph unicode=":" horiz-adv-x="362" d="M74 0v227h215v-227h-215zM74 893v227h215v-227h-215z" />
+<glyph unicode=";" horiz-adv-x="362" d="M74 0v227h215v-227l-113 -266h-102l71 266h-71zM74 893v227h215v-227h-215z" />
+<glyph unicode="&#x3c;" horiz-adv-x="1058" d="M74 649v160l911 475v-199l-698 -356l698 -356v-199z" />
+<glyph unicode="=" horiz-adv-x="1058" d="M74 477v172h911v-172h-911zM74 864v172h911v-172h-911z" />
+<glyph unicode="&#x3e;" horiz-adv-x="1058" d="M74 174v199l698 356l-698 356v199l911 -475v-160z" />
+<glyph unicode="?" horiz-adv-x="645" d="M25 1260q12 33 33.5 68.5t59.5 81.5t96 76t124 27q82 -2 138 -33.5t82 -81.5t36 -91t10 -80q0 -82 -80 -219l-57 -96q-18 -32 -42 -106.5t-24 -143.5v-256h-190v256q0 102 24.5 195t48 140t64.5 117q43 72 53 113q6 27 -11 60.5t-56 33.5q-47 2 -82 -47t-49 -98zM199 0 h215v227h-215v-227z" />
+<glyph unicode="@" horiz-adv-x="872" d="M66 303v889q0 43 17 94t56 106.5t117 92.5t184.5 37t184 -37t116.5 -92.5t56.5 -106.5t17.5 -94v-793h-164l-20 56q-4 -8 -11.5 -19.5t-37 -30t-64.5 -18.5q-145 0 -145 172v485q0 170 145 170q35 0 63.5 -17t39.5 -34l10 -16v45q0 51 -45 104.5t-145.5 53.5 t-145.5 -53.5t-45 -104.5v-889q0 -53 44 -103t146 -50q117 0 168 63l152 -86q-109 -143 -320 -143q-106 0 -184 35.5t-117 90t-56 103.5t-17 90zM535 573q0 -53 47 -53q49 0 49 53v455q0 53 -49 53q-47 0 -47 -53v-455z" />
+<glyph unicode="A" horiz-adv-x="765" d="M20 0l228 1505h270l227 -1505h-215l-41 307h-213l-40 -307h-216zM307 541h152l-64 475l-6 39h-12l-6 -39z" />
+<glyph unicode="B" horiz-adv-x="745" d="M82 0v1505h194q205 0 304.5 -91t99.5 -308q0 -106 -29.5 -175t-107.5 -136q6 -2 16 -9.5t37 -35t47.5 -65.5t36.5 -106.5t16 -152.5q0 -414 -342 -426h-272zM303 219q74 0 109 31q55 55 55 201q0 82 -16.5 134t-46 70.5t-48 22.5t-45.5 4h-8v-463zM303 885q23 0 34 1 t40 10t45 28.5t30.5 60.5t14.5 100.5t-14.5 100.5t-30.5 60.5t-45 28.5t-40 10t-34 1v-401z" />
+<glyph unicode="C" horiz-adv-x="708" d="M68 309v887q0 12 2 34.5t17 79t43 99.5t88.5 78t144 35t144 -34t88.5 -81t43 -95t17 -83l2 -33v-207h-206v207q-2 0 0 11.5t-3.5 27.5t-12.5 32.5t-24.5 28t-43.5 11.5q-35 0 -54.5 -28t-21.5 -54l-2 -29v-887q0 -12 2 -30.5t21.5 -49t54.5 -30.5q41 0 62.5 27.5 t21.5 56.5v26v207h206v-207q0 -12 -2 -34.5t-17 -79t-43 -99.5t-88.5 -77.5t-144 -34.5t-144 33.5t-88.5 80.5t-43 95.5t-17 80.5z" />
+<glyph unicode="D" horiz-adv-x="761" d="M82 0v1505h174q90 0 153.5 -12t112.5 -33.5t80 -67.5t50.5 -95.5t28.5 -139.5t12 -177t3 -228.5t-3 -228.5t-12 -176t-28.5 -138t-50.5 -95t-80 -67.5t-112.5 -34t-153.5 -12.5h-174zM303 221q94 0 123 41q39 55 41 320v172v52q0 330 -25 402q-23 66 -92 74q-18 2 -47 2 v-1063z" />
+<glyph unicode="E" horiz-adv-x="628" d="M82 0v1505h506v-227h-285v-395h205v-242h-205v-414h285v-227h-506z" />
+<glyph unicode="F" horiz-adv-x="616" d="M82 0v1505h526v-227h-305v-395h205v-228h-205v-655h-221z" />
+<glyph unicode="G" horiz-adv-x="737" d="M68 274v35v887q0 12 2 34.5t17 79t43 99.5t88.5 78t144 35t144 -34t88.5 -81t43 -95t17 -83l2 -33v-231h-221v231q0 12 -1 30.5t-19.5 49.5t-53 31t-53 -28t-18.5 -54l-2 -29v-905q0 -12 1 -30.5t19.5 -49.5t53 -31t53 28t18.5 54l2 29v272h-88v187h309v-750h-131l-26 72 q-70 -88 -172 -88q-78 0 -134.5 33.5t-80 80.5t-34.5 95t-11 81z" />
+<glyph unicode="H" horiz-adv-x="778" d="M82 0v1505h221v-622h172v622h221v-1505h-221v655h-172v-655h-221z" />
+<glyph unicode="I" horiz-adv-x="385" d="M82 0v1505h221v-1505h-221z" />
+<glyph unicode="J" horiz-adv-x="423" d="M12 -14v217q4 0 12.5 -1t29 2t35.5 12t28.5 34.5t13.5 62.5v1192h221v-1226q0 -137 -79 -221q-70 -74 -222 -73q-19 0 -39 1z" />
+<glyph unicode="K" horiz-adv-x="768" d="M82 0v1505h221v-501v-25h8l11 25l184 501h215l-203 -495l230 -1010h-216l-153 655l-6 31h-6l-13 -31l-51 -123v-532h-221z" />
+<glyph unicode="L" horiz-adv-x="604" d="M82 0v1505h221v-1300h293v-205h-514z" />
+<glyph unicode="M" horiz-adv-x="991" d="M82 0v1505h270l131 -688l11 -80h4l10 80l131 688h270v-1505h-204v946v64h-13l-8 -64l-141 -946h-94l-142 946l-8 64h-12v-64v-946h-205z" />
+<glyph unicode="N" horiz-adv-x="808" d="M82 0v1505h197l215 -784l18 -70h12v70v784h203v-1505h-197l-215 784l-18 70h-12v-70v-784h-203z" />
+<glyph unicode="O" d="M68 309v887q0 12 2 34.5t17 79t43 99.5t88.5 78t144 35t144 -34t88.5 -81t43 -95t17 -83l2 -33v-887q0 -12 -2 -34.5t-17 -79t-43 -99.5t-88.5 -77.5t-144 -34.5t-144 33.5t-88.5 80.5t-43 95.5t-17 80.5zM289 309q0 -12 1 -30.5t19.5 -49t53 -30.5t53 27.5t18.5 56.5 l2 26v887q0 12 -1 30.5t-19.5 49.5t-53 31t-53 -28t-18.5 -54l-2 -29v-887z" />
+<glyph unicode="P" horiz-adv-x="720" d="M82 0v1505h221q166 0 277.5 -105.5t111.5 -345t-111.5 -346t-277.5 -106.5v-602h-221zM303 827q102 0 134 45.5t32 174.5q0 131 -33 182t-133 51v-453z" />
+<glyph unicode="Q" horiz-adv-x="729" d="M68 309v887q0 12 2 34.5t17 79t43 99.5t88.5 78t144 35t144 -34t88.5 -81t43 -95t17 -83l2 -33v-887q0 -94 -45 -182q33 -43 88 -53v-189q-160 0 -227 117q-55 -18 -111 -18q-84 0 -144 33.5t-88 80.5t-43 95.5t-17 80.5zM289 309q0 -12 1 -30.5t19.5 -49t53 -30.5 t53 27.5t18.5 56.5l2 26v887q0 12 -1 30.5t-19.5 49.5t-53 31t-53 -28t-18.5 -54l-2 -29v-887z" />
+<glyph unicode="R" horiz-adv-x="739" d="M82 0v1505h221q377 0 377 -434q0 -258 -123 -342l141 -729h-221l-115 635h-59v-635h-221zM303 840q31 0 52.5 5t51 24.5t45 68.5t15.5 125t-15.5 125t-45 68.5t-51 24.5t-52.5 5v-446z" />
+<glyph unicode="S" horiz-adv-x="702" d="M37 422l217 20q0 -256 104 -256q90 0 91 166q0 29 -8.5 59.5t-32 73.5t-36.5 64l-54 79q-40 58 -48 72q-66 96 -102.5 158t-68 149t-31.5 162q0 139 71.5 245t216.5 108h10q88 0 150 -35q66 -37 95.5 -101.5t42 -127t12.5 -136.5l-217 -20q0 217 -89 217q-76 -2 -75 -150 q0 -18 4 -39.5t10 -39t18.5 -43t20.5 -40t28 -43.5l28 -43l33 -48l32 -46l104 -159q31 -49 67 -139.5t36 -166.5q0 -379 -308 -378q-82 0 -142 25.5t-94 63.5t-53.5 99t-25.5 117.5t-6 132.5z" />
+<glyph unicode="T" horiz-adv-x="647" d="M4 1278v227h639v-227h-209v-1278h-221v1278h-209z" />
+<glyph unicode="U" horiz-adv-x="749" d="M80 309v1196h221v-1196q0 -12 1 -30.5t19.5 -49t53.5 -30.5t53 27.5t18 56.5l3 26v1196h221v-1196q0 -12 -2 -34.5t-17.5 -79t-43 -99.5t-88 -77.5t-144.5 -34.5t-144.5 33.5t-88 80.5t-43 95.5t-17.5 80.5z" />
+<glyph unicode="V" horiz-adv-x="716" d="M18 1505h215l111 -827l8 -64h13l8 64l110 827h215l-229 -1505h-221z" />
+<glyph unicode="W" horiz-adv-x="1036" d="M25 1505h204l88 -782l5 -49h16l6 49l94 782h160l94 -782l6 -49h17l4 49l88 782h205l-203 -1505h-172l-102 713l-13 88h-8l-12 -88l-103 -713h-172z" />
+<glyph unicode="X" horiz-adv-x="737" d="M16 0l244 791l-240 714h218l120 -381l7 -18h8l6 18l121 381h217l-240 -714l244 -791h-217l-127 449l-4 18h-8l-5 -18l-127 -449h-217z" />
+<glyph unicode="Y" horiz-adv-x="700" d="M14 1505h217l111 -481l6 -14h4l6 14l111 481h217l-225 -864v-641h-221v641z" />
+<glyph unicode="Z" horiz-adv-x="626" d="M20 0v238l347 1048h-297v219h536v-219l-352 -1067h352v-219h-586z" />
+<glyph unicode="[" horiz-adv-x="538" d="M82 -16v1521h399v-196h-202v-1325h202v-197h-399v197z" />
+<glyph unicode="\" horiz-adv-x="792" d="M8 1692h162l614 -1872h-168z" />
+<glyph unicode="]" horiz-adv-x="538" d="M57 -16h203v1325h-203v196h400v-1521v-197h-400v197z" />
+<glyph unicode="^" horiz-adv-x="1101" d="M53 809l381 696h234l381 -696h-199l-299 543l-299 -543h-199z" />
+<glyph unicode="_" horiz-adv-x="1210" d="M74 -154h1063v-172h-1063v172z" />
+<glyph unicode="`" horiz-adv-x="1024" d="M293 1489h215l106 -184h-159z" />
+<glyph unicode="a" horiz-adv-x="681" d="M49 260q0 106 34 187t83 124t98 73t88 50.5t43 36.5v37v86q0 102 -57 102q-20 0 -32.5 -9t-17.5 -32.5t-7 -37t-2 -47.5v-39h-207v47q0 123 80.5 211t197.5 88q102 0 177 -74t75 -180v-351v-337q0 -109 14 -195h-202q-18 20 -19 90h-14q-20 -37 -65.5 -71.5t-100.5 -34.5 q-59 0 -112.5 60t-53.5 216zM252 291q0 -104 57 -105q35 0 60.5 19.5t25.5 48.5v287q-143 -62 -143 -250z" />
+<glyph unicode="b" horiz-adv-x="686" d="M82 0v1505h207v-458q88 90 164 90q78 0 118.5 -69t40.5 -150v-715q0 -82 -41 -150.5t-118 -68.5q-33 0 -74 22.5t-66 44.5l-24 23v-74h-207zM289 246q0 -29 19.5 -48.5t42 -19.5t39 19.5t16.5 48.5v628q0 29 -16.5 48.5t-39 19.5t-42 -21.5t-19.5 -46.5v-628z" />
+<glyph unicode="c" horiz-adv-x="645" d="M66 315v490q0 332 264 332q137 0 201.5 -71t64.5 -251v-88h-207v135q0 51 -12 70.5t-47 19.5q-57 0 -58 -90v-604q0 -90 58 -90q35 0 47 19.5t12 70.5v156h207v-109q0 -180 -64.5 -250.5t-201.5 -70.5q-264 -1 -264 331z" />
+<glyph unicode="d" horiz-adv-x="686" d="M74 203v715q0 82 41 150.5t118 68.5q33 0 74 -22.5t66 -45.5l24 -22v458h207v-1505h-207v74q-88 -90 -164 -90q-78 0 -118.5 68.5t-40.5 150.5zM281 246q0 -29 16 -48.5t38.5 -19.5t42 19.5t19.5 48.5v628q0 25 -19.5 46.5t-42 21.5t-38.5 -19.5t-16 -48.5v-628z" />
+<glyph unicode="e" horiz-adv-x="659" d="M66 279v563q0 12 2 31.5t16 70.5t40 90t81 71t129 32q76 0 130 -30t79.5 -73t40 -85t14.5 -72l2 -29v-326h-342v-243v-13q0 -8 4 -27.5t11.5 -34t23.5 -26.5t37 -12q35 0 53.5 27.5t18.5 56.5l2 29v122h192v-129q0 -12 -2 -31.5t-16.5 -68.5t-39 -88t-79.5 -69.5 t-131 -30.5q-74 0 -129.5 30.5t-80 73.5t-38.5 86t-16 74zM258 684h150v158q0 12 -1 31.5t-19.5 51t-53.5 31.5q-33 0 -52.5 -28.5t-21.5 -57.5l-2 -28v-158z" />
+<glyph unicode="f" horiz-adv-x="475" d="M20 934v186h105v17v14q0 51 2 84t14.5 92t35 94t70.5 63.5t115 28.5q29 0 53.5 -3t35.5 -7l8 -4v-178q-27 8 -62 8q-66 0 -65 -180v-16v-13h104v-186h-104v-934h-207v934h-105z" />
+<glyph unicode="g" horiz-adv-x="700" d="M12 -184q0 94 162 170q-125 35 -125 149q0 45 40 93t89 75q-51 35 -80.5 95.5t-34.5 105.5l-4 43v305q0 12 2 30.5t16.5 67.5t39 87t79 69t126.5 31q135 0 206 -103q102 102 170 103v-185q-72 0 -120 -24l10 -70v-317q0 -10 -2 -29.5t-17.5 -67t-40 -84t-79 -66.5 t-127.5 -30q-27 0 -39 2q-29 -25 -29 -51q0 -16 11 -28.5t42 -20.5t45.5 -10t59.5 -11q57 -8 101 -21t89 -41t70.5 -78t25.5 -120q0 -152 -103 -219t-251 -67q-164 4 -248 52t-84 165zM213 -150q0 -78 135 -77q59 0 108.5 19.5t49.5 55.5q0 33 -20.5 50.5t-90.5 29.5 l-106 21q-76 -44 -76 -99zM262 509q0 -17 15.5 -45t44.5 -28q31 0 47 25.5t16 50.5v25v307q-1 1 -1 3.5t1 7.5t1 6q0 8 -3 19q-4 15 -9 30.5t-18.5 25.5t-33.5 10q-29 0 -44.5 -25.5t-15.5 -52.5v-24v-307v-28z" />
+<glyph unicode="h" horiz-adv-x="690" d="M82 0v1505h207v-479l32 32q30 30 66.5 54.5t69.5 24.5q76 0 115.5 -69t39.5 -150v-918h-206v887q0 49 -50 49q-18 0 -34.5 -13.5t-24.5 -25.5l-8 -14v-883h-207z" />
+<glyph unicode="i" horiz-adv-x="370" d="M82 0v1120h207v-1120h-207zM82 1298v207h207v-207h-207z" />
+<glyph unicode="j" horiz-adv-x="364" d="M-45 -182q29 -8 57 -8q64 0 64 142v10.5v10.5v1147h207v-1149q0 -51 -2 -83.5t-14.5 -90t-35 -92.5t-70.5 -62.5t-116 -27.5q-29 0 -51.5 3t-30.5 5l-8 4v191zM76 1298v207h207v-207h-207z" />
+<glyph unicode="k" horiz-adv-x="641" d="M82 0v1505h207v-678v-36h10l12 36l101 293h186l-149 -364l188 -756h-199l-102 453l-4 16h-10l-7 -16l-26 -66v-387h-207z" />
+<glyph unicode="l" horiz-adv-x="370" d="M82 0v1505h207v-1505h-207z" />
+<glyph unicode="m" horiz-adv-x="1021" d="M82 0v1120h207v-94q2 0 32.5 30.5t68.5 55.5t71 25q100 0 139 -125l43 41t76 60.5t69 23.5q76 0 116 -69t40 -150v-918h-194v887q0 49 -56 49q-18 0 -37.5 -13.5t-29.5 -25.5l-11 -14v-883h-194v887q0 49 -55 49q-18 0 -38 -13.5t-30 -25.5l-10 -14v-883h-207z" />
+<glyph unicode="n" horiz-adv-x="690" d="M82 0v1120h207v-94l32 32q30 30 66.5 54.5t69.5 24.5q76 0 115.5 -69t39.5 -150v-918h-206v887q0 49 -50 49q-18 0 -34.5 -13.5t-24.5 -25.5l-8 -14v-883h-207z" />
+<glyph unicode="o" horiz-adv-x="657" d="M63 279v563q0 12 1.5 31.5t15.5 70.5t38.5 90t80 71t129.5 32q76 0 130 -30t79.5 -73t40 -85t16.5 -72v-29v-576q0 -12 -1 -31.5t-15.5 -68.5t-40 -88t-80 -69.5t-129.5 -30.5q-74 0 -129.5 30.5t-80 73.5t-38.5 86t-14 74zM257 259q0 -9 3 -20q4 -17 10 -34t21.5 -28 t36.5 -11q35 0 52 27.5t17 56.5l2 29v563q-2 0 0 11q1 4 1 8q0 9 -3 21q-4 17 -10 33.5t-21.5 28.5t-37.5 12q-33 0 -50.5 -28.5t-19.5 -57.5v-28v-563q1 -1 1 -4t-1 -9t-1 -7z" />
+<glyph unicode="p" horiz-adv-x="686" d="M82 -385v1505h207v-73q88 90 164 90q78 0 118.5 -69t40.5 -150v-715q0 -82 -41 -150.5t-118 -68.5q-33 0 -74 22.5t-66 44.5l-24 23v-459h-207zM289 246q0 -25 19.5 -46.5t42 -21.5t39 19.5t16.5 48.5v628q0 29 -16.5 48.5t-39 19.5t-42 -19.5t-19.5 -48.5v-628z" />
+<glyph unicode="q" horiz-adv-x="686" d="M74 203v715q0 82 41 150.5t118 68.5q33 0 74 -22.5t66 -45.5l24 -22v73h207v-1505h-207v459q-88 -90 -164 -90q-78 0 -118.5 68.5t-40.5 150.5zM281 246q0 -29 16 -48.5t38.5 -19.5t42 21.5t19.5 46.5v628q0 29 -19.5 48.5t-42 19.5t-38.5 -19.5t-16 -48.5v-628z" />
+<glyph unicode="r" horiz-adv-x="503" d="M82 0v1120h207v-125q8 41 58 91.5t149 50.5v-230q-34 11 -64 11q-56 0 -98 -37q-45 -41 -45 -103v-778h-207z" />
+<glyph unicode="s" horiz-adv-x="630" d="M37 326h192q0 -170 97 -170q72 0 71 135q0 74 -129 198q-68 66 -98.5 99t-64 101.5t-33.5 144.5q0 55 12 104t39 95t78 74t123 30h11q78 0 131 -26q56 -28 80.5 -79t33 -95t8.5 -103h-193q0 131 -67 131q-63 -2 -64 -131q0 -33 23.5 -73t45 -62.5t66.5 -65.5 q190 -182 191 -342q0 -123 -64.5 -215t-199.5 -92q-72 0 -126.5 24.5t-85 60t-49 85t-23.5 89.5t-5 83z" />
+<glyph unicode="t" horiz-adv-x="501" d="M20 934v186h105v277h207v-277h141v-186h-141v-557q0 -184 65 -184l76 8v-203q-45 -14 -111 -14q-68 0 -115.5 28.5t-70 64.5t-35 96t-14.5 95t-2 92v574h-105z" />
+<glyph unicode="u" horiz-adv-x="690" d="M78 203v917h207v-887q0 -49 49 -49q18 0 34.5 13.5t24.5 27.5l8 13v882h207v-1120h-207v94l-31 -32q-30 -30 -67 -54t-70 -24q-76 0 -115.5 68.5t-39.5 150.5z" />
+<glyph unicode="v" horiz-adv-x="602" d="M16 1120h201l68 -649l8 -72h16l8 72l68 649h201l-183 -1120h-204z" />
+<glyph unicode="w" horiz-adv-x="905" d="M20 1120h189l65 -585l9 -64h12l10 64l86 585h123l86 -585l10 -64h13l8 64l65 585h189l-166 -1120h-172l-80 535l-10 63h-8l-11 -63l-80 -535h-172z" />
+<glyph unicode="x" horiz-adv-x="618" d="M16 0l193 578l-176 542h194l74 -262l6 -31h4l6 31l74 262h195l-176 -542l192 -578h-201l-84 283l-6 30h-4l-6 -30l-84 -283h-201z" />
+<glyph unicode="y" horiz-adv-x="634" d="M25 1120h202l82 -688l4 -57h9l4 57l82 688h202l-198 -1204q-16 -127 -94 -222t-193 -95l-92 4v184q16 -4 49 -4q61 6 97 61.5t36 122.5z" />
+<glyph unicode="z" horiz-adv-x="532" d="M12 0v168l285 764h-240v188h459v-168l-285 -764h285v-188h-504z" />
+<glyph unicode="{" horiz-adv-x="688" d="M61 453v163q72 0 102 49.5t30 90.5v397q0 223 96 298t342 71v-172q-135 2 -188.5 -38t-53.5 -159v-397q0 -143 -127 -221q127 -82 127 -222v-397q0 -119 53.5 -159t188.5 -38v-172q-246 -4 -342 71t-96 298v397q0 20 -8.5 47t-41.5 59t-82 34z" />
+<glyph unicode="|" horiz-adv-x="356" d="M82 -512v2204h192v-2204h-192z" />
+<glyph unicode="}" horiz-adv-x="688" d="M57 -281q135 -2 188.5 38t53.5 159v397q0 139 127 222q-127 78 -127 221v397q0 119 -53 159t-189 38v172q246 4 342.5 -71t96.5 -298v-397q0 -23 8 -50.5t41 -58.5t82 -31v-163q-72 -4 -101.5 -52.5t-29.5 -87.5v-397q0 -223 -96.5 -298t-342.5 -71v172z" />
+<glyph unicode="~" horiz-adv-x="1280" d="M113 1352q4 12 12 32.5t38 73.5t64.5 94t95 74t126.5 33q55 0 111 -18.5t82 -33t83 -51.5q106 -72 174 -71q57 0 105.5 46t66.5 91l19 45l135 -57q-4 -12 -12.5 -34t-38 -75t-64.5 -93t-91 -74t-120 -34q-121 0 -272 101q-115 74 -178.5 74t-113.5 -45.5t-69 -90.5 l-18 -45z" />
+<glyph unicode="&#xa1;" horiz-adv-x="387" d="M74 -385l55 1100h129l55 -1100h-239zM86 893v227h215v-227h-215z" />
+<glyph unicode="&#xa2;" horiz-adv-x="636" d="M66 508v489q0 297 208 328v242h123v-244q98 -16 144.5 -88t46.5 -227v-88h-189v135q0 90 -73 90q-72 0 -72 -90v-604q0 -90 72 -91q74 0 73 91v155h189v-108q0 -156 -46 -228.5t-145 -89.5v-303h-123v301q-208 31 -208 330z" />
+<glyph unicode="&#xa3;" horiz-adv-x="817" d="M4 63q8 20 23.5 53.5t70 91.5t117.5 68q37 111 37 199q0 68 -31 174h-188v137h147l-6 21q-78 254 -78 342q0 70 15.5 131t48.5 116.5t92 89.5t139 36q96 2 164 -32t103.5 -93.5t50 -127t14.5 -149.5h-213q0 86 -25.5 142.5t-89.5 54.5q-47 -2 -68.5 -51t-21.5 -117 q0 -113 70 -338l6 -25h211v-137h-174q25 -100 24 -174q0 -104 -57 -219q16 -8 44 -24.5t48.5 -25.5t40.5 -9q74 4 82 190l188 -22q-12 -182 -81.5 -281.5t-169.5 -99.5q-51 0 -143.5 51t-129.5 51q-33 0 -61.5 -25.5t-40.5 -52.5l-12 -24z" />
+<glyph unicode="&#xa5;" horiz-adv-x="720" d="M25 1505h217l110 -481l6 -14h4l7 14l110 481h217l-196 -753h147v-138h-176v-137h176v-137h-176v-340h-221v340h-176v137h176v137h-176v138h147z" />
+<glyph unicode="&#xa8;" horiz-adv-x="1024" d="M272 1305v200h191v-200h-191zM561 1305v200h191v-200h-191z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1644" d="M53 751.5q0 317.5 225.5 544t543 226.5t543.5 -226.5t226 -544t-226 -542.5t-543.5 -225t-543 225t-225.5 542.5zM172 751.5q0 -266.5 191.5 -458t457.5 -191.5t459 191.5t193 458.5q0 268 -191.5 459.5t-460.5 191.5q-266 0 -457.5 -192.5t-191.5 -459zM627 487v531 q0 8 1 21.5t11 47t27.5 59t57.5 47t95 21.5q53 0 92 -20t56.5 -49t28 -57.5t12.5 -49.5v-20v-125h-138v125v17q0 11 -12 28.5t-37 17.5q-23 0 -35 -16t-12 -33l-2 -14v-531q0 -63 49 -63q25 0 37 15.5t12 31.5v16v125h138v-125q0 -8 -1 -21t-11.5 -47t-28 -59.5t-56.5 -47 t-92 -21.5q-86 0 -134 49t-54 98z" />
+<glyph unicode="&#xad;" horiz-adv-x="444" d="M74 455v194h297v-194h-297z" />
+<glyph unicode="&#xae;" horiz-adv-x="1644" d="M53 751.5q0 317.5 225.5 544t543 226.5t543.5 -226.5t226 -544t-226 -542.5t-543.5 -225t-543 225t-225.5 542.5zM172 751.5q0 -266.5 191.5 -458t457.5 -191.5t459 191.5t193 458.5q0 268 -191.5 459.5t-460.5 191.5q-266 0 -457.5 -192.5t-191.5 -459zM625 313v879h196 q231 0 232 -258q0 -76 -16.5 -125t-71.5 -96l106 -400h-151l-95 365h-55v-365h-145zM770 805h45q43 0 65.5 21.5t27.5 45t5 60.5q0 39 -5 63.5t-27.5 46t-65.5 21.5h-45v-258z" />
+<glyph unicode="&#xaf;" horiz-adv-x="1024" d="M313 1315v162h398v-162h-398z" />
+<glyph unicode="&#xb4;" horiz-adv-x="1024" d="M410 1305l106 184h215l-162 -184h-159z" />
+<glyph unicode="&#xb7;" horiz-adv-x="215" d="M0 649v228h215v-228h-215z" />
+<glyph unicode="&#xb8;" horiz-adv-x="1024" d="M426 -111h172v-141l-45 -133h-104l40 133h-63v141z" />
+<glyph unicode="&#xbf;" horiz-adv-x="645" d="M41 -106q0 82 80 219l57 95q18 32 42 106.5t24 144.5v256h190v-256q0 -102 -24.5 -195.5t-48 -140.5t-64.5 -117q-43 -72 -53 -112q-6 -27 11 -61t56 -34q47 -2 82 47.5t49 98.5l179 -84q-12 -33 -34 -69t-60 -82t-96 -75.5t-124 -27.5q-82 2 -138 33.5t-82 82t-36 91.5 t-10 80zM231 893v227h215v-227h-215z" />
+<glyph unicode="&#xc0;" horiz-adv-x="765" d="M20 0l228 1505h270l227 -1505h-215l-41 307h-213l-40 -307h-216zM141 1823h215l107 -185h-160zM307 541h152l-64 475l-6 39h-12l-6 -39z" />
+<glyph unicode="&#xc1;" horiz-adv-x="765" d="M20 0l228 1505h270l227 -1505h-215l-41 307h-213l-40 -307h-216zM293 1638l106 185h215l-161 -185h-160zM307 541h152l-64 475l-6 39h-12l-6 -39z" />
+<glyph unicode="&#xc2;" horiz-adv-x="765" d="M20 0l228 1505h270l227 -1505h-215l-41 307h-213l-40 -307h-216zM133 1638l141 185h220l141 -185h-189l-63 72l-61 -72h-189zM307 541h152l-64 475l-6 39h-12l-6 -39z" />
+<glyph unicode="&#xc3;" horiz-adv-x="765" d="M20 0l228 1505h270l227 -1505h-215l-41 307h-213l-40 -307h-216zM184 1632v152q49 39 109 39q33 0 91 -18.5t89 -20.5q25 0 52.5 8t41.5 16l15 9v-152q-51 -39 -109 -39q-31 0 -89 19.5t-91 19.5q-25 0 -52.5 -8t-41.5 -17zM307 541h152l-64 475l-6 39h-12l-6 -39z" />
+<glyph unicode="&#xc4;" horiz-adv-x="765" d="M20 0l228 1505h270l227 -1505h-215l-41 307h-213l-40 -307h-216zM143 1638v201h191v-201h-191zM307 541h152l-64 475l-6 39h-12l-6 -39zM432 1638v201h191v-201h-191z" />
+<glyph unicode="&#xc5;" horiz-adv-x="765" d="M20 0l228 1505h270l227 -1505h-215l-41 307h-213l-40 -307h-216zM231 1761.5q0 61.5 45.5 102.5t109 41t107.5 -41t44 -102.5t-44 -102.5t-107.5 -41t-109 41t-45.5 102.5zM307 541h152l-64 475l-6 39h-12l-6 -39zM309 1761.5q0 -28.5 23.5 -50t52.5 -21.5t52.5 21.5 t23.5 50t-23.5 50t-52.5 21.5t-52.5 -21.5t-23.5 -50z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1099" d="M16 0l420 1505h623v-227h-285v-395h205v-242h-205v-414h285v-227h-506v307h-227l-90 -307h-220zM393 541h160v514h-10z" />
+<glyph unicode="&#xc7;" horiz-adv-x="708" d="M68 309v887q0 12 2 34.5t17 79t43 99.5t88.5 78t144 35t144 -34t88.5 -81t43 -95t17 -83l2 -33v-207h-206v207q-2 0 0 11.5t-3.5 27.5t-12.5 32.5t-24.5 28t-43.5 11.5q-35 0 -54.5 -28t-21.5 -54l-2 -29v-887q0 -12 2 -30.5t21.5 -49t54.5 -30.5q41 0 62.5 27.5 t21.5 56.5v26v207h206v-207q0 -12 -2 -34.5t-17 -79t-43 -99.5t-88.5 -77.5t-144 -34.5t-144 33.5t-88.5 80.5t-43 95.5t-17 80.5zM268 -111v-141h64l-41 -133h104l45 133v141h-172z" />
+<glyph unicode="&#xc8;" horiz-adv-x="628" d="M82 0v1505h506v-227h-285v-395h205v-242h-205v-414h285v-227h-506zM111 1823h215l106 -185h-160z" />
+<glyph unicode="&#xc9;" horiz-adv-x="628" d="M82 0v1505h506v-227h-285v-395h205v-242h-205v-414h285v-227h-506zM236 1638l106 185h215l-162 -185h-159z" />
+<glyph unicode="&#xca;" horiz-adv-x="628" d="M82 0v1505h506v-227h-285v-395h205v-242h-205v-414h285v-227h-506zM84 1638l141 185h219l142 -185h-189l-63 72l-62 -72h-188z" />
+<glyph unicode="&#xcb;" horiz-adv-x="628" d="M82 0v1505h506v-227h-285v-395h205v-242h-205v-414h285v-227h-506zM94 1638v201h191v-201h-191zM383 1638v201h190v-201h-190z" />
+<glyph unicode="&#xcc;" horiz-adv-x="401" d="M-6 1823h215l106 -185h-159zM98 0v1505h221v-1505h-221z" />
+<glyph unicode="&#xcd;" horiz-adv-x="401" d="M82 0v1505h221v-1505h-221zM86 1638l107 185h215l-162 -185h-160z" />
+<glyph unicode="&#xce;" horiz-adv-x="370" d="M-66 1638l142 185h219l141 -185h-188l-64 72l-61 -72h-189zM74 0v1505h221v-1505h-221z" />
+<glyph unicode="&#xcf;" horiz-adv-x="372" d="M-53 1638v201h190v-201h-190zM76 0v1505h221v-1505h-221zM236 1638v201h190v-201h-190z" />
+<glyph unicode="&#xd0;" horiz-adv-x="761" d="M20 655v228h62v622h174q90 0 153.5 -12t112.5 -33.5t80 -67.5t50.5 -95.5t28.5 -139.5t12 -177t3 -228.5t-3 -228.5t-12 -176t-28.5 -138t-50.5 -95t-80 -67.5t-112.5 -34t-153.5 -12.5h-174v655h-62zM303 221q94 0 123 41q39 55 41 320v172q2 377 -25 454q-23 66 -92 74 q-18 2 -47 2v-401h84v-228h-84v-434z" />
+<glyph unicode="&#xd1;" horiz-adv-x="808" d="M82 0v1505h197l215 -784l18 -70h12v70v784h203v-1505h-197l-215 784l-18 70h-12v-70v-784h-203zM207 1632v152q49 39 108 39q33 0 91.5 -18.5t89.5 -20.5q25 0 52 8t42 16l14 9v-152q-51 -39 -108 -39q-31 0 -89.5 19.5t-91.5 19.5q-25 0 -52 -8t-42 -17z" />
+<glyph unicode="&#xd2;" d="M68 309v887q0 12 2 34.5t17 79t43 99.5t88.5 78t144 35t144 -34t88.5 -81t43 -95t17 -83l2 -33v-887q0 -12 -2 -34.5t-17 -79t-43 -99.5t-88.5 -77.5t-144 -34.5t-144 33.5t-88.5 80.5t-43 95.5t-17 80.5zM121 1823h215l106 -185h-159zM289 309q0 -12 1 -30.5t19.5 -49 t53 -30.5t53 27.5t18.5 56.5l2 26v887q0 12 -1 30.5t-19.5 49.5t-53 31t-53 -28t-18.5 -54l-2 -29v-887z" />
+<glyph unicode="&#xd3;" d="M68 309v887q0 12 2 34.5t17 79t43 99.5t88.5 78t144 35t144 -34t88.5 -81t43 -95t17 -83l2 -33v-887q0 -12 -2 -34.5t-17 -79t-43 -99.5t-88.5 -77.5t-144 -34.5t-144 33.5t-88.5 80.5t-43 95.5t-17 80.5zM285 1638l106 185h215l-162 -185h-159zM289 309q0 -12 1 -30.5 t19.5 -49t53 -30.5t53 27.5t18.5 56.5l2 26v887q0 12 -1 30.5t-19.5 49.5t-53 31t-53 -28t-18.5 -54l-2 -29v-887z" />
+<glyph unicode="&#xd4;" d="M68 309v887q0 12 2 34.5t17 79t43 99.5t88.5 78t144 35t144 -34t88.5 -81t43 -95t17 -83l2 -33v-887q0 -12 -2 -34.5t-17 -79t-43 -99.5t-88.5 -77.5t-144 -34.5t-144 33.5t-88.5 80.5t-43 95.5t-17 80.5zM113 1638l141 185h219l141 -185h-188l-64 72l-61 -72h-188z M289 309q0 -12 1 -30.5t19.5 -49t53 -30.5t53 27.5t18.5 56.5l2 26v887q0 12 -1 30.5t-19.5 49.5t-53 31t-53 -28t-18.5 -54l-2 -29v-887z" />
+<glyph unicode="&#xd5;" d="M68 309v887q0 12 2 34.5t17 79t43 99.5t88.5 78t144 35t144 -34t88.5 -81t43 -95t17 -83l2 -33v-887q0 -12 -2 -34.5t-17 -79t-43 -99.5t-88.5 -77.5t-144 -34.5t-144 33.5t-88.5 80.5t-43 95.5t-17 80.5zM164 1632v152q49 39 108 39q33 0 91.5 -18.5t89.5 -20.5 q25 0 52 8t42 16l14 9v-152q-51 -39 -108 -39q-31 0 -89.5 19.5t-91.5 19.5q-25 0 -52 -8t-42 -17zM289 309q0 -12 1 -30.5t19.5 -49t53 -30.5t53 27.5t18.5 56.5l2 26v887q0 12 -1 30.5t-19.5 49.5t-53 31t-53 -28t-18.5 -54l-2 -29v-887z" />
+<glyph unicode="&#xd6;" d="M68 309v887q0 12 2 34.5t17 79t43 99.5t88.5 78t144 35t144 -34t88.5 -81t43 -95t17 -83l2 -33v-887q0 -12 -2 -34.5t-17 -79t-43 -99.5t-88.5 -77.5t-144 -34.5t-144 33.5t-88.5 80.5t-43 95.5t-17 80.5zM123 1638v201h190v-201h-190zM289 309q0 -12 1 -30.5t19.5 -49 t53 -30.5t53 27.5t18.5 56.5l2 26v887q0 12 -1 30.5t-19.5 49.5t-53 31t-53 -28t-18.5 -54l-2 -29v-887zM412 1638v201h190v-201h-190z" />
+<glyph unicode="&#xd8;" d="M59 -20l47 157q-18 37 -27 80t-9 68l-2 24v887q0 12 2 34.5t17 79t43 99.5t88.5 78t143.5 35q92 0 158 -43l15 47h122l-45 -150q20 -39 31.5 -84t11.5 -71l2 -25v-887q0 -12 -2 -34.5t-17 -79t-43 -99.5t-88.5 -77.5t-144.5 -34.5q-96 0 -159 43l-15 -47h-129zM289 309 q0 -12 1 -30.5t19.5 -49t53 -30.5t53 27.5t18.5 56.5l2 26v488zM289 727l147 479q-8 100 -74 101q-35 0 -53 -28t-18 -54l-2 -29v-469z" />
+<glyph unicode="&#xd9;" horiz-adv-x="749" d="M80 309q0 -12 2 -34.5t17.5 -79t43 -99.5t88 -77.5t144.5 -34.5t144.5 33.5t88 80.5t43 95.5t17.5 80.5l2 35v1196h-221v-1196q0 -12 -1.5 -30.5t-19.5 -49t-53 -30.5t-53.5 27.5t-18.5 56.5l-2 26v1196h-221v-1196zM145 1823h215l107 -185h-160z" />
+<glyph unicode="&#xda;" horiz-adv-x="749" d="M80 309q0 -12 2 -34.5t17.5 -79t43 -99.5t88 -77.5t144.5 -34.5t144.5 33.5t88 80.5t43 95.5t17.5 80.5l2 35v1196h-221v-1196q0 -12 -1.5 -30.5t-19.5 -49t-53 -30.5t-53.5 27.5t-18.5 56.5l-2 26v1196h-221v-1196zM307 1638l107 185h215l-162 -185h-160z" />
+<glyph unicode="&#xdb;" horiz-adv-x="749" d="M80 309q0 -12 2 -34.5t17.5 -79t43 -99.5t88 -77.5t144.5 -34.5t144.5 33.5t88 80.5t43 95.5t17.5 80.5l2 35v1196h-221v-1196q0 -12 -1.5 -30.5t-19.5 -49t-53 -30.5t-53.5 27.5t-18.5 56.5l-2 26v1196h-221v-1196zM125 1638l141 185h219l142 -185h-189l-63 72l-62 -72 h-188z" />
+<glyph unicode="&#xdc;" horiz-adv-x="749" d="M80 309v1196h221v-1196q0 -12 1 -30.5t19.5 -49t53.5 -30.5t53 27.5t18 56.5l3 26v1196h221v-1196q0 -12 -2 -34.5t-17.5 -79t-43 -99.5t-88 -77.5t-144.5 -34.5t-144.5 33.5t-88 80.5t-43 95.5t-17.5 80.5zM135 1638v201h191v-201h-191zM424 1638v201h190v-201h-190z " />
+<glyph unicode="&#xdd;" horiz-adv-x="704" d="M16 1505l226 -864v-641h221v641l225 864h-217l-111 -481l-6 -14h-4l-6 14l-111 481h-217zM254 1638l106 185h215l-161 -185h-160z" />
+<glyph unicode="&#xde;" d="M82 0v1505h219v-241h2q166 0 277.5 -105.5t111.5 -345.5t-111.5 -346.5t-277.5 -106.5v-360h-221zM303 586q102 0 134 45t32 174q0 131 -33 182t-133 51v-452z" />
+<glyph unicode="&#xdf;" horiz-adv-x="733" d="M66 0v1235q0 123 70.5 205t209.5 82q133 0 201.5 -81t68.5 -204q0 -109 -88 -174q152 -88 152 -488q0 -182 -20.5 -298.5t-66.5 -176t-102.5 -80t-144.5 -20.5v193q45 0 70.5 25.5t41 111.5t15.5 245q0 170 -15.5 259.5t-41 117t-70.5 27.5v141q35 0 60.5 33t25.5 84 q0 45 -21.5 72.5t-64.5 27.5q-74 0 -74 -102v-1235h-206z" />
+<glyph unicode="&#xe0;" horiz-adv-x="681" d="M49 260q0 106 34 187t83 124t98 73t88 50.5t43 36.5v37v86q0 102 -57 102q-20 0 -32.5 -9t-17.5 -32.5t-7 -37t-2 -47.5v-39h-207v47q0 123 80.5 211t197.5 88q102 0 177 -74t75 -180v-351v-337q0 -109 14 -195h-202q-18 20 -19 90h-14q-20 -37 -65.5 -71.5t-100.5 -34.5 q-59 0 -112.5 60t-53.5 216zM102 1489h215l107 -184h-160zM252 291q0 -104 57 -105q35 0 60.5 19.5t25.5 48.5v287q-143 -62 -143 -250z" />
+<glyph unicode="&#xe1;" horiz-adv-x="681" d="M49 260q0 106 34 187t83 124t98 73t88 50.5t43 36.5v37v86q0 102 -57 102q-20 0 -32.5 -9t-17.5 -32.5t-7 -37t-2 -47.5v-39h-207v47q0 123 80.5 211t197.5 88q102 0 177 -74t75 -180v-351v-337q0 -109 14 -195h-202q-18 20 -19 90h-14q-20 -37 -65.5 -71.5t-100.5 -34.5 q-59 0 -112.5 60t-53.5 216zM252 291q0 -104 57 -105q35 0 60.5 19.5t25.5 48.5v287q-143 -62 -143 -250zM264 1305l107 184h215l-162 -184h-160z" />
+<glyph unicode="&#xe2;" horiz-adv-x="681" d="M49 260q0 106 34 187t83 124t98 73t88 50.5t43 36.5v37v86q0 102 -57 102q-20 0 -32.5 -9t-17.5 -32.5t-7 -37t-2 -47.5v-39h-207v47q0 123 80.5 211t197.5 88q102 0 177 -74t75 -180v-351v-337q0 -109 14 -195h-202q-18 20 -19 90h-14q-20 -37 -65.5 -71.5t-100.5 -34.5 q-59 0 -112.5 60t-53.5 216zM90 1305l141 184h220l141 -184h-189l-63 71l-61 -71h-189zM252 291q0 -104 57 -105q35 0 60.5 19.5t25.5 48.5v287q-143 -62 -143 -250z" />
+<glyph unicode="&#xe3;" horiz-adv-x="681" d="M49 260q0 106 34 187t83 124t98 73t88 50.5t43 36.5v37v86q0 102 -57 102q-20 0 -32.5 -9t-17.5 -32.5t-7 -37t-2 -47.5v-39h-207v47q0 123 80.5 211t197.5 88q102 0 177 -74t75 -180v-351v-337q0 -109 14 -195h-202q-18 20 -19 90h-14q-20 -37 -65.5 -71.5t-100.5 -34.5 q-59 0 -112.5 60t-53.5 216zM143 1305v151q49 39 109 39q33 0 91 -18.5t89 -20.5q25 0 52.5 8.5t41.5 16.5l15 8v-152q-51 -39 -109 -39q-31 0 -89 19.5t-91 19.5q-25 0 -52.5 -8t-41.5 -16zM252 291q0 -104 57 -105q35 0 60.5 19.5t25.5 48.5v287q-143 -62 -143 -250z" />
+<glyph unicode="&#xe4;" horiz-adv-x="681" d="M49 260q0 106 34 187t83 124t98 73t88 50.5t43 36.5v37v86q0 102 -57 102q-20 0 -32.5 -9t-17.5 -32.5t-7 -37t-2 -47.5v-39h-207v47q0 123 80.5 211t197.5 88q102 0 177 -74t75 -180v-351v-337q0 -109 14 -195h-202q-18 20 -19 90h-14q-20 -37 -65.5 -71.5t-100.5 -34.5 q-59 0 -112.5 60t-53.5 216zM102 1305v200h191v-200h-191zM252 291q0 -104 57 -105q35 0 60.5 19.5t25.5 48.5v287q-143 -62 -143 -250zM391 1305v200h191v-200h-191z" />
+<glyph unicode="&#xe5;" horiz-adv-x="681" d="M49 260q0 106 34 187t83 124t98 73t88 50.5t43 36.5v37v86q0 102 -57 102q-20 0 -32.5 -9t-17.5 -32.5t-7 -37t-2 -47.5v-39h-207v47q0 123 80.5 211t197.5 88q102 0 177 -74t75 -180v-351v-337q0 -109 14 -195h-202q-18 20 -19 90h-14q-20 -37 -65.5 -71.5t-100.5 -34.5 q-59 0 -112.5 60t-53.5 216zM188 1421.5q0 61.5 45.5 102.5t109 41t107.5 -41t44 -102.5t-44 -102.5t-107.5 -41t-109 41t-45.5 102.5zM252 291q0 -104 57 -105q35 0 60.5 19.5t25.5 48.5v287q-143 -62 -143 -250zM266 1421.5q0 -28.5 23.5 -50t52.5 -21.5t52.5 21.5 t23.5 50t-23.5 50t-52.5 21.5t-52.5 -21.5t-23.5 -50z" />
+<glyph unicode="&#xe6;" horiz-adv-x="989" d="M49 260q0 106 34 187t83 124t98 73t88 50.5t43 36.5v123q0 102 -57 102q-20 0 -32.5 -9t-17.5 -32.5t-7 -37t-2 -47.5v-39h-207v47q0 123 80.5 211t197.5 88q84 0 152 -52q66 51 162 52q76 0 130 -30t79.5 -73t40 -85t16.5 -72v-29v-326h-342v-243v-13q0 -8 4 -27.5 t11 -34t23.5 -26.5t37.5 -12q35 0 53 27.5t20 56.5v29v122h193v-129q0 -12 -2 -31.5t-16.5 -68.5t-39 -88t-80 -69.5t-130.5 -30.5q-158 0 -226 131q-102 -131 -221 -131q-59 0 -112.5 60t-53.5 216zM252 291q0 -104 57 -105q35 0 60.5 19.5t25.5 48.5v287 q-143 -62 -143 -250zM588 684h149v158q0 12 -1 31.5t-19.5 51t-52.5 31.5q-33 0 -52.5 -28.5t-21.5 -57.5l-2 -28v-158z" />
+<glyph unicode="&#xe7;" horiz-adv-x="645" d="M66 315v490q0 332 264 332q137 0 201.5 -71t64.5 -251v-88h-207v135q0 51 -12 70.5t-47 19.5q-57 0 -58 -90v-604q0 -90 58 -90q35 0 47 19.5t12 70.5v156h207v-109q0 -180 -64.5 -250.5t-201.5 -70.5q-264 -1 -264 331zM238 -111v-141h63l-41 -133h105l45 133v141h-172z " />
+<glyph unicode="&#xe8;" horiz-adv-x="659" d="M66 279v563q0 12 2 31.5t16 70.5t40 90t81 71t129 32q76 0 130 -30t79.5 -73t40 -85t14.5 -72l2 -29v-326h-342v-243v-13q0 -8 4 -27.5t11.5 -34t23.5 -26.5t37 -12q35 0 53.5 27.5t18.5 56.5l2 29v122h192v-129q0 -12 -2 -31.5t-16.5 -68.5t-39 -88t-79.5 -69.5 t-131 -30.5q-74 0 -129.5 30.5t-80 73.5t-38.5 86t-16 74zM102 1489h215l107 -184h-160zM258 684h150v158q0 12 -1 31.5t-19.5 51t-53.5 31.5q-33 0 -52.5 -28.5t-21.5 -57.5l-2 -28v-158z" />
+<glyph unicode="&#xe9;" horiz-adv-x="659" d="M66 279v563q0 12 2 31.5t16 70.5t40 90t81 71t129 32q76 0 130 -30t79.5 -73t40 -85t14.5 -72l2 -29v-326h-342v-243v-13q0 -8 4 -27.5t11.5 -34t23.5 -26.5t37 -12q35 0 53.5 27.5t18.5 56.5l2 29v122h192v-129q0 -12 -2 -31.5t-16.5 -68.5t-39 -88t-79.5 -69.5 t-131 -30.5q-74 0 -129.5 30.5t-80 73.5t-38.5 86t-16 74zM258 684h150v158q0 12 -1 31.5t-19.5 51t-53.5 31.5q-33 0 -52.5 -28.5t-21.5 -57.5l-2 -28v-158zM264 1305l107 184h215l-162 -184h-160z" />
+<glyph unicode="&#xea;" horiz-adv-x="659" d="M66 279v563q0 12 2 31.5t16 70.5t40 90t81 71t129 32q76 0 130 -30t79.5 -73t40 -85t14.5 -72l2 -29v-326h-342v-243v-13q0 -8 4 -27.5t11.5 -34t23.5 -26.5t37 -12q35 0 53.5 27.5t18.5 56.5l2 29v122h192v-129q0 -12 -2 -31.5t-16.5 -68.5t-39 -88t-79.5 -69.5 t-131 -30.5q-74 0 -129.5 30.5t-80 73.5t-38.5 86t-16 74zM80 1305l141 184h219l142 -184h-189l-63 71l-62 -71h-188zM258 684h150v158q0 12 -1 31.5t-19.5 51t-53.5 31.5q-33 0 -52.5 -28.5t-21.5 -57.5l-2 -28v-158z" />
+<glyph unicode="&#xeb;" horiz-adv-x="659" d="M66 279v563q0 12 2 31.5t16 70.5t40 90t81 71t129 32q76 0 130 -30t79.5 -73t40 -85t14.5 -72l2 -29v-326h-342v-243v-13q0 -8 4 -27.5t11.5 -34t23.5 -26.5t37 -12q35 0 53.5 27.5t18.5 56.5l2 29v122h192v-129q0 -12 -2 -31.5t-16.5 -68.5t-39 -88t-79.5 -69.5 t-131 -30.5q-74 0 -129.5 30.5t-80 73.5t-38.5 86t-16 74zM90 1305v200h191v-200h-191zM258 684h150v158q0 12 -1 31.5t-19.5 51t-53.5 31.5q-33 0 -52.5 -28.5t-21.5 -57.5l-2 -28v-158zM379 1305v200h190v-200h-190z" />
+<glyph unicode="&#xec;" horiz-adv-x="370" d="M-33 1489h215l107 -184h-160zM82 0h207v1120h-207v-1120z" />
+<glyph unicode="&#xed;" horiz-adv-x="370" d="M82 0h207v1120h-207v-1120zM82 1305l106 184h215l-161 -184h-160z" />
+<glyph unicode="&#xee;" horiz-adv-x="370" d="M-66 1305l142 184h219l141 -184h-188l-64 71l-61 -71h-189zM82 0h207v1120h-207v-1120z" />
+<glyph unicode="&#xef;" horiz-adv-x="372" d="M-53 1305v200h190v-200h-190zM82 0v1120h207v-1120h-207zM236 1305v200h190v-200h-190z" />
+<glyph unicode="&#xf0;" horiz-adv-x="673" d="M76 279v579q0 279 172 279q63 0 155 -78q-12 109 -51 203l-82 -72l-55 63l100 88l-45 66l109 100q25 -27 53 -61l94 82l56 -66l-101 -88q125 -201 125 -446v-656q0 -12 -1 -31.5t-15.5 -68.5t-40 -88t-79.5 -69.5t-130 -30.5q-74 0 -129 30.5t-80 73.5t-39 86t-14 74z M270 267.5q-2 -11.5 2 -29t10.5 -34t21.5 -27.5t36 -11q35 0 52.5 27.5t17.5 56.5l2 29v563q-2 0 0 11t-2 28.5t-10.5 34t-22 28.5t-37.5 12q-33 0 -50.5 -28.5t-19.5 -57.5v-28v-563q2 0 0 -11.5z" />
+<glyph unicode="&#xf1;" horiz-adv-x="690" d="M82 0v1120h207v-94l32 32q30 30 66.5 54.5t69.5 24.5q76 0 115.5 -69t39.5 -150v-918h-206v887q0 49 -50 49q-18 0 -34.5 -13.5t-24.5 -25.5l-8 -14v-883h-207zM147 1305v151q49 39 109 39q33 0 91.5 -18.5t88.5 -20.5q25 0 52.5 8.5t41.5 16.5l15 8v-152 q-51 -39 -109 -39q-31 0 -89 19.5t-91 19.5q-25 0 -52.5 -8t-41.5 -16z" />
+<glyph unicode="&#xf2;" horiz-adv-x="657" d="M63 279v563q0 12 1.5 31.5t15.5 70.5t38.5 90t80 71t129.5 32q76 0 130 -30t79.5 -73t40 -85t16.5 -72v-29v-576q0 -12 -1 -31.5t-15.5 -68.5t-40 -88t-80 -69.5t-129.5 -30.5q-74 0 -129.5 30.5t-80 73.5t-38.5 86t-14 74zM98 1489h215l107 -184h-160zM258 267.5 q-2 -11.5 2 -29t10 -34t21.5 -27.5t36.5 -11q35 0 52 27.5t17 56.5l2 29v563q-2 0 0 11t-2 28.5t-10 34t-21.5 28.5t-37.5 12q-33 0 -50.5 -28.5t-19.5 -57.5v-28v-563q2 0 0 -11.5z" />
+<glyph unicode="&#xf3;" horiz-adv-x="657" d="M63 279v563q0 12 1.5 31.5t15.5 70.5t38.5 90t80 71t129.5 32q76 0 130 -30t79.5 -73t40 -85t16.5 -72v-29v-576q0 -12 -1 -31.5t-15.5 -68.5t-40 -88t-80 -69.5t-129.5 -30.5q-74 0 -129.5 30.5t-80 73.5t-38.5 86t-14 74zM258 267.5q-2 -11.5 2 -29t10 -34t21.5 -27.5 t36.5 -11q35 0 52 27.5t17 56.5l2 29v563q-2 0 0 11t-2 28.5t-10 34t-21.5 28.5t-37.5 12q-33 0 -50.5 -28.5t-19.5 -57.5v-28v-563q2 0 0 -11.5zM260 1305l107 184h215l-162 -184h-160z" />
+<glyph unicode="&#xf4;" horiz-adv-x="657" d="M63 279v563q0 12 1.5 31.5t15.5 70.5t38.5 90t80 71t129.5 32q76 0 130 -30t79.5 -73t40 -85t16.5 -72v-29v-576q0 -12 -1 -31.5t-15.5 -68.5t-40 -88t-80 -69.5t-129.5 -30.5q-74 0 -129.5 30.5t-80 73.5t-38.5 86t-14 74zM78 1305l141 184h219l142 -184h-189l-63 71 l-62 -71h-188zM258 267.5q-2 -11.5 2 -29t10 -34t21.5 -27.5t36.5 -11q35 0 52 27.5t17 56.5l2 29v563q-2 0 0 11t-2 28.5t-10 34t-21.5 28.5t-37.5 12q-33 0 -50.5 -28.5t-19.5 -57.5v-28v-563q2 0 0 -11.5z" />
+<glyph unicode="&#xf5;" horiz-adv-x="657" d="M63 279v563q0 12 1.5 31.5t15.5 70.5t38.5 90t80 71t129.5 32q76 0 130 -30t79.5 -73t40 -85t16.5 -72v-29v-576q0 -12 -1 -31.5t-15.5 -68.5t-40 -88t-80 -69.5t-129.5 -30.5q-74 0 -129.5 30.5t-80 73.5t-38.5 86t-14 74zM131 1305v151q49 39 109 39q33 0 91 -18.5 t89 -20.5q25 0 52.5 8.5t41.5 16.5l14 8v-152q-51 -39 -108 -39q-31 0 -89.5 19.5t-90.5 19.5q-25 0 -52.5 -8t-42.5 -16zM258 267.5q-2 -11.5 2 -29t10 -34t21.5 -27.5t36.5 -11q35 0 52 27.5t17 56.5l2 29v563q-2 0 0 11t-2 28.5t-10 34t-21.5 28.5t-37.5 12 q-33 0 -50.5 -28.5t-19.5 -57.5v-28v-563q2 0 0 -11.5z" />
+<glyph unicode="&#xf6;" horiz-adv-x="657" d="M63 279v563q0 12 1.5 31.5t15.5 70.5t38.5 90t80 71t129.5 32q76 0 130 -30t79.5 -73t40 -85t16.5 -72v-29v-576q0 -12 -1 -31.5t-15.5 -68.5t-40 -88t-80 -69.5t-129.5 -30.5q-74 0 -129.5 30.5t-80 73.5t-38.5 86t-14 74zM90 1305v200h191v-200h-191zM258 267.5 q-2 -11.5 2 -29t10 -34t21.5 -27.5t36.5 -11q35 0 52 27.5t17 56.5l2 29v563q-2 0 0 11t-2 28.5t-10 34t-21.5 28.5t-37.5 12q-33 0 -50.5 -28.5t-19.5 -57.5v-28v-563q2 0 0 -11.5zM379 1305v200h190v-200h-190z" />
+<glyph unicode="&#xf8;" horiz-adv-x="657" d="M63 279v563q0 12 1.5 31.5t15.5 70.5t38.5 90t80 71t129.5 32q51 0 106 -19l21 80h75l-30 -121q41 -37 64.5 -94t25.5 -96l4 -39v-576q0 -12 -1 -31.5t-15.5 -68.5t-40 -88t-80 -69.5t-129.5 -30.5q-57 0 -103 16l-20 -78h-80l31 121q-41 39 -64.5 97.5t-25.5 97.5z M258 436l125 486q-18 35 -55 34q-33 0 -50.5 -28.5t-19.5 -57.5v-28v-406zM274 197q16 -31 54 -31q35 0 52 27.5t17 56.5l2 29v403z" />
+<glyph unicode="&#xf9;" horiz-adv-x="690" d="M78 203v917h207v-887q0 -49 49 -49q18 0 34.5 13.5t24.5 27.5l8 13v882h207v-1120h-207v94l-31 -32q-30 -30 -67 -54t-70 -24q-76 0 -115.5 68.5t-39.5 150.5zM113 1489h215l106 -184h-160z" />
+<glyph unicode="&#xfa;" horiz-adv-x="690" d="M78 203v917h207v-887q0 -49 49 -49q18 0 34.5 13.5t24.5 27.5l8 13v882h207v-1120h-207v94l-31 -32q-30 -30 -67 -54t-70 -24q-76 0 -115.5 68.5t-39.5 150.5zM274 1305l107 184h215l-162 -184h-160z" />
+<glyph unicode="&#xfb;" horiz-adv-x="690" d="M78 203v917h207v-887q0 -49 49 -49q18 0 34.5 13.5t24.5 27.5l8 13v882h207v-1120h-207v94l-31 -32q-30 -30 -67 -54t-70 -24q-76 0 -115.5 68.5t-39.5 150.5zM94 1305l142 184h219l141 -184h-188l-64 71l-61 -71h-189z" />
+<glyph unicode="&#xfc;" horiz-adv-x="690" d="M78 203v917h207v-887q0 -49 49 -49q18 0 34.5 13.5t24.5 27.5l8 13v882h207v-1120h-207v94l-31 -32q-30 -30 -67 -54t-70 -24q-76 0 -115.5 68.5t-39.5 150.5zM106 1305v200h191v-200h-191zM395 1305v200h191v-200h-191z" />
+<glyph unicode="&#xfd;" horiz-adv-x="634" d="M25 1120l190 -1153q0 -68 -36 -123t-97 -61l-49 4v-184q70 -4 92 -4q115 0 192.5 95t94.5 222l198 1204h-202l-82 -688l-4 -57h-9l-4 57l-82 688h-202zM231 1305l107 184h215l-162 -184h-160z" />
+<glyph unicode="&#xfe;" horiz-adv-x="686" d="M82 -385v1890h207v-458q88 90 164 90q78 0 118.5 -69t40.5 -150v-715q0 -82 -41 -150.5t-118 -68.5q-33 0 -74 22.5t-66 44.5l-24 23v-459h-207zM289 246q0 -25 19.5 -46.5t42 -21.5t39 19.5t16.5 48.5v628q0 29 -16.5 48.5t-39 19.5t-42 -19.5t-19.5 -48.5v-628z" />
+<glyph unicode="&#xff;" horiz-adv-x="634" d="M25 1120h202l82 -688l4 -57h9l4 57l82 688h202l-198 -1204q-16 -127 -94 -222t-193 -95l-92 4v184q16 -4 49 -4q61 6 97 61.5t36 122.5zM78 1305v200h190v-200h-190zM367 1305v200h190v-200h-190z" />
+<glyph unicode="&#x131;" horiz-adv-x="370" d="M82 0v1120h207v-1120h-207z" />
+<glyph unicode="&#x141;" horiz-adv-x="628" d="M41 561v221l65 52v671h222v-499l121 94v-221l-121 -95v-579h293v-205h-515v612z" />
+<glyph unicode="&#x142;" horiz-adv-x="468" d="M31 561v221l100 78v645h207v-483l100 78v-221l-100 -78v-801h-207v639z" />
+<glyph unicode="&#x152;" horiz-adv-x="983" d="M68 309v887q0 12 2 33.5t17 75t43 93.5t88.5 73.5t143.5 33.5h580v-227h-285v-395h205v-242h-205v-414h285v-227h-580q-84 0 -144 31.5t-88 77t-43 91.5t-17 79zM289 309q0 -12 1 -30.5t19.5 -49t53 -30.5t53 27.5t18.5 56.5l2 26v901q-6 96 -74 97q-35 0 -53 -28 t-18 -54l-2 -29v-887z" />
+<glyph unicode="&#x153;" horiz-adv-x="995" d="M63 279v563q0 12 1.5 31.5t15.5 70.5t38.5 90t80 71t129.5 32q106 0 172 -60q66 59 170 60q76 0 130 -30t79.5 -73t40 -85t14.5 -72l2 -29v-326h-342v-250q0 -16 4 -36.5t22.5 -45t49.5 -24.5q35 0 53 27.5t18 56.5l2 29v122h193v-129q0 -12 -2 -31.5t-16.5 -68.5 t-39 -88t-80 -69.5t-130.5 -30.5q-106 0 -170 57q-68 -57 -170 -57q-74 0 -129.5 30.5t-80 73.5t-38.5 86t-14 74zM258 267.5q-2 -11.5 2 -29t10 -34t21.5 -27.5t36.5 -11q35 0 52 27.5t17 56.5l2 29v563q-2 0 0 11t-2 28.5t-10 34t-21.5 28.5t-37.5 12q-33 0 -50.5 -28.5 t-19.5 -57.5v-28v-563q2 0 0 -11.5zM594 684h149v158q0 12 -1 31.5t-19 51t-53 31.5q-43 0 -59.5 -37.5t-16.5 -70.5v-164z" />
+<glyph unicode="&#x160;" horiz-adv-x="702" d="M37 422l217 20q0 -256 104 -256q90 0 91 166q0 29 -8.5 59.5t-32 73.5t-36.5 64l-54 79q-40 58 -48 72q-66 96 -102.5 158t-68 149t-31.5 162q0 139 71.5 245t216.5 108q94 2 160 -35t95.5 -101.5t42 -127t12.5 -136.5l-217 -20q0 217 -89 217q-76 -2 -75 -150 q0 -18 4 -39.5t10 -39t18.5 -43t20.5 -40t28 -43.5l28 -43l33 -48l32 -46l104 -159q31 -49 67 -139.5t36 -166.5q0 -379 -308 -378q-82 0 -142 25.5t-94 63.5t-53.5 99t-25.5 117.5t-6 132.5zM100 1823h189l61 -72l64 72h188l-141 -185h-219z" />
+<glyph unicode="&#x161;" horiz-adv-x="630" d="M37 326h192q0 -170 97 -170q72 0 71 135q0 74 -129 198q-68 66 -98.5 99t-64 101.5t-33.5 144.5q0 55 12 104t39 95t78 74t123 30q86 2 142 -26t80.5 -79t33 -95t8.5 -103h-193q0 131 -67 131q-63 -2 -64 -131q0 -33 23.5 -73t45 -62.5t66.5 -65.5q190 -182 191 -342 q0 -123 -64.5 -215t-199.5 -92q-72 0 -126.5 24.5t-85 60t-49 85t-23.5 89.5t-5 83zM66 1489h188l61 -72l64 72h188l-141 -184h-219z" />
+<glyph unicode="&#x178;" horiz-adv-x="704" d="M16 1505h217l111 -481l6 -14h4l6 14l111 481h217l-225 -864v-641h-221v641zM113 1638v201h190v-201h-190zM401 1638v201h191v-201h-191z" />
+<glyph unicode="&#x17d;" horiz-adv-x="626" d="M20 0v238l347 1048h-297v219h536v-219l-352 -1067h352v-219h-586zM88 1823h188l62 -72l63 72h189l-141 -185h-220z" />
+<glyph unicode="&#x17e;" horiz-adv-x="532" d="M12 0v168l285 764h-240v188h459v-168l-285 -764h285v-188h-504zM25 1489h188l61 -72l64 72h188l-141 -184h-219z" />
+<glyph unicode="&#x2c6;" horiz-adv-x="1021" d="M260 1305l141 184h220l141 -184h-189l-63 71l-61 -71h-189z" />
+<glyph unicode="&#x2c7;" horiz-adv-x="1021" d="M260 1489h189l61 -72l63 72h189l-141 -184h-220z" />
+<glyph unicode="&#x2d8;" horiz-adv-x="1024" d="M287 1399l110 94q41 -47 115 -47q35 0 64.5 12t41.5 25l13 10l106 -94l-27 -27q-17 -16 -77 -42.5t-121 -26.5q-63 0 -119.5 24.5t-81.5 48.5z" />
+<glyph unicode="&#x2d9;" horiz-adv-x="1021" d="M408 1298v207h206v-207h-206z" />
+<glyph unicode="&#x2da;" horiz-adv-x="1021" d="M358 1421.5q0 61.5 45.5 102.5t108.5 41t107.5 -41t44.5 -102.5t-44.5 -102.5t-107.5 -41t-108.5 41t-45.5 102.5zM436 1421.5q0 -28.5 23.5 -50t52.5 -21.5t52.5 21.5t23.5 50t-23.5 50t-52.5 21.5t-52.5 -21.5t-23.5 -50z" />
+<glyph unicode="&#x2db;" horiz-adv-x="1024" d="M348 -211q0 51 34 103.5t69 78.5l32 29h99q-10 -8 -25.5 -22.5t-41.5 -59.5t-26 -88q0 -41 31 -59.5t72 -18.5t86 19l-16 -138q-55 -18 -105 -18q-96 0 -152.5 51t-56.5 123z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="1024" d="M313 1305v151q49 39 109 39q33 0 91 -18.5t89 -20.5q25 0 52.5 8.5t41.5 16.5l15 8v-152q-51 -39 -109 -39q-31 0 -89 19.5t-91 19.5q-25 0 -52.5 -8t-41.5 -16z" />
+<glyph unicode="&#x2dd;" horiz-adv-x="1024" d="M215 1305l107 184h215l-162 -184h-160zM518 1305l107 184h215l-162 -184h-160z" />
+<glyph unicode="&#x2000;" horiz-adv-x="952" />
+<glyph unicode="&#x2001;" horiz-adv-x="1904" />
+<glyph unicode="&#x2002;" horiz-adv-x="952" />
+<glyph unicode="&#x2003;" horiz-adv-x="1904" />
+<glyph unicode="&#x2004;" horiz-adv-x="634" />
+<glyph unicode="&#x2005;" horiz-adv-x="475" />
+<glyph unicode="&#x2006;" horiz-adv-x="317" />
+<glyph unicode="&#x2007;" horiz-adv-x="317" />
+<glyph unicode="&#x2008;" horiz-adv-x="237" />
+<glyph unicode="&#x2009;" horiz-adv-x="380" />
+<glyph unicode="&#x200a;" horiz-adv-x="104" />
+<glyph unicode="&#x2010;" horiz-adv-x="444" d="M74 455v194h297v-194h-297z" />
+<glyph unicode="&#x2011;" horiz-adv-x="444" d="M74 455v194h297v-194h-297z" />
+<glyph unicode="&#x2012;" horiz-adv-x="444" d="M74 455v194h297v-194h-297z" />
+<glyph unicode="&#x2013;" horiz-adv-x="806" d="M74 649v195h659v-195h-659z" />
+<glyph unicode="&#x2014;" horiz-adv-x="972" d="M74 649v195h825v-195h-825z" />
+<glyph unicode="&#x2018;" horiz-adv-x="309" d="M49 1012v227l113 266h102l-71 -266h71v-227h-215z" />
+<glyph unicode="&#x2019;" horiz-adv-x="309" d="M45 1012l72 266h-72v227h215v-227l-113 -266h-102z" />
+<glyph unicode="&#x201a;" horiz-adv-x="309" d="M45 0v227h215v-227l-113 -266h-102l72 266h-72z" />
+<glyph unicode="&#x201c;" horiz-adv-x="624" d="M53 1012v227l113 266h102l-71 -266h71v-227h-215zM356 1012v227l113 266h102l-71 -266h71v-227h-215z" />
+<glyph unicode="&#x201d;" horiz-adv-x="624" d="M53 1012l72 266h-72v227h215v-227l-112 -266h-103zM356 1012l72 266h-72v227h215v-227l-112 -266h-103z" />
+<glyph unicode="&#x201e;" horiz-adv-x="624" d="M53 0v227h215v-227l-112 -266h-103l72 266h-72zM356 0v227h215v-227l-112 -266h-103l72 266h-72z" />
+<glyph unicode="&#x2022;" horiz-adv-x="663" d="M82 817q0 102 72.5 175t179.5 73q102 0 175 -72.5t73 -175.5q0 -106 -73 -179t-175 -73q-106 0 -179 73t-73 179z" />
+<glyph unicode="&#x2026;" horiz-adv-x="964" d="M53 0v227h215v-227h-215zM375 0v227h215v-227h-215zM696 0v227h215v-227h-215z" />
+<glyph unicode="&#x202f;" horiz-adv-x="380" />
+<glyph unicode="&#x205f;" horiz-adv-x="475" />
+<glyph unicode="&#x20ac;" horiz-adv-x="813" d="M53 547v137h107v137h-107v137h107v238q0 12 2 34.5t17.5 79t43 99.5t88 78t144.5 35t144 -34t88 -81t43 -95t18 -83l2 -33v-84h-207v84q-2 0 0 11.5t-3 27.5t-12.5 32.5t-25 28t-43.5 11.5q-35 0 -54.5 -28t-21.5 -54l-2 -29v-238h233v-137h-233v-137h233v-137h-233v-238 q0 -12 2 -30.5t21.5 -49t54.5 -30.5q41 0 61.5 27.5t20.5 56.5l2 26v84h207v-84q0 -12 -2.5 -34.5t-17.5 -79t-43 -99.5t-88 -77.5t-144 -34.5t-144.5 33.5t-88 80.5t-43 95.5t-17.5 80.5l-2 35v238h-107z" />
+<glyph unicode="&#x2122;" horiz-adv-x="937" d="M74 1401v104h321v-104h-104v-580h-113v580h-104zM440 821v684h138l67 -319h6l68 319h137v-684h-104v449l-78 -449h-51l-80 449v-449h-103z" />
+<glyph unicode="&#x2212;" horiz-adv-x="776" d="M74 649v172h628v-172h-628z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1120" d="M0 1120h1120v-1120h-1120v1120z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="772" d="M20 934v186h105v31q0 45 1 69.5t7 77t22.5 84t43 67.5t72.5 53.5t108 17.5q33 0 69.5 -4.5t57.5 -8.5l20 -2v-184q-41 12 -110 12q-31 0 -50.5 -18.5t-25.5 -58t-7 -54t-1 -53.5v-29h358v-1120h-207v934h-151v-934h-207v934h-105z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="772" d="M20 934v186h105v31q0 45 1 69.5t7 77t22.5 84t43 67.5t72.5 53.5t108 17.5q33 0 69.5 -4.5t57.5 -8.5l20 -2h164v-1505h-207v1329q-37 4 -67.5 4t-50 -18.5t-25.5 -58t-7 -54t-1 -53.5v-29h104v-186h-104v-934h-207v934h-105z" />
+</font>
+</defs></svg> 
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/css/font-files/fanwood-webfont.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/css/font-files/fanwood-webfont.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/css/font-files/fanwood-webfont.svg	(revision 29468)
@@ -0,0 +1,939 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Copyright c 2011 Barry Schwartz
+</metadata>
+<defs>
+<font id="FanwoodRegular" horiz-adv-x="500" >
+<font-face units-per-em="1000" ascent="690" descent="-310" />
+<missing-glyph horiz-adv-x="200" />
+<glyph unicode="fi" horiz-adv-x="499" d="M35 12q0 13 12 13h40q4 0 4 63q0 20 -0.5 51t-0.5 33v80q0 94 -2 94h-33q-9 0 -11.5 2t-2.5 11t2 11t9 2h29q6 0 7.5 1t1.5 7q0 66 6 125q8 82 53.5 127.5t113.5 45.5q57 0 92 -29t35 -59q0 -16 -17 -30.5t-29 -14.5t-13 9q-4 62 -22 82t-51 20t-54.5 -22t-30.5 -63 t-12 -76.5t-3 -85.5v-24q0 -9 3 -11t16 -2h117q11 0 59 2.5t54 2.5q7 0 7 -6v-170q0 -107 3 -164q0 -5 0.5 -7t2.5 -3.5t7 -1.5h31q11 0 11 -13q0 -8 -1.5 -11t-9.5 -3q-9 0 -37.5 1t-41.5 1t-44 -1t-40 -1q-8 0 -9.5 2.5t-1.5 11.5q0 7 2.5 10t11.5 3h36q8 0 9.5 2t1.5 10 q1 29 1 82q0 117 -4 214q-1 9 -2.5 11.5t-7.5 2.5h-157q-11 0 -14 -2t-3 -10v-166q0 -144 10 -144h59q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -44 1t-52 1q-12 0 -39.5 -1t-43.5 -1q-9 0 -11 2.5t-2 11.5z" />
+<glyph unicode="fl" horiz-adv-x="501" d="M33 12q0 13 12 13h40q6 0 6 63q0 20 -0.5 51t-0.5 33v60q0 114 -2 114h-35q-9 0 -11.5 2t-2.5 11t2 11t9 2h27q7 0 9.5 2t2.5 10q0 24 -0.5 47t-0.5 50q0 84 45.5 140.5t132.5 56.5q36 0 74 -22q12 -7 27 -5q9 1 18.5 3t15 3t6.5 1q5 0 6 -2.5t1 -12.5q-4 -181 -4 -348 q0 -270 4 -270h48q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -38 1t-46 1q-12 0 -42 -1t-46 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h47q4 0 4 85v219q0 12 -2.5 15t-11.5 3h-150q-11 0 -15 -2.5t-4 -9.5v-226q0 -84 8 -84h55q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8 t-3.5 -4t-9 -2q-8 0 -41.5 1t-49.5 1q-12 0 -39.5 -1t-43.5 -1q-9 0 -11 2.5t-2 11.5zM155 389q0 -12 3 -14.5t18 -2.5h148q10 0 13 3.5t3 16.5q0 61 -2 157q0 13 -13 33q-5 7 -13.5 23.5t-14.5 25.5t-19 17t-32 8q-29 0 -48.5 -15.5t-28 -45.5t-11.5 -59t-3 -69v-78z" />
+<glyph unicode="ff" horiz-adv-x="558" d="M38 12q0 13 12 13h37q4 0 4 63q0 20 -0.5 51t-0.5 33v60q0 114 -2 114h-35q-9 0 -11.5 2t-2.5 11t2 11t9 2h29q7 0 8.5 2t1.5 10q0 40 2.5 69t11.5 71t32.5 73.5t59.5 48.5q37 18 74 18q55 0 98 -41q7 -5 10 -1q38 56 112 56q37 0 63 -18.5t26 -48.5q0 -16 -18 -31.5 t-30 -15.5t-13 9q-3 23 -5 33t-7 24.5t-13.5 20t-21.5 5.5q-17 0 -28.5 -8t-17.5 -19t-9.5 -31.5t-4 -36t-0.5 -42.5v-130v-7.5t1 -5t3.5 -3t6 -1t9.5 -0.5h116q7 0 7 -5t-2.5 -12.5t-5.5 -7.5h-115q-11 0 -14 -2t-3 -10v-166q0 -144 10 -144h66q8 0 10.5 -3t2.5 -10 q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -49 1t-57 1q-12 0 -37 -1t-41 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h37q4 0 4 63q0 20 -0.5 51t-0.5 33v60q0 26 -0.5 62t-0.5 40q0 8 -3.5 10.5t-14.5 2.5h-149q-11 0 -14 -2t-3 -10v-166q0 -144 10 -144h56q8 0 10.5 -3t2.5 -10 q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -44 1t-52 1q-12 0 -37 -1t-41 -1q-9 0 -11 2.5t-2 11.5zM156 386q0 -9 3.5 -11.5t16.5 -2.5h147q13 0 15.5 2t2.5 11q0 19 -0.5 39t-0.5 40q0 24 2 46.5t4 35.5l3 12q0 4 -3 7q-16 13 -24 27q-9 15 -15.5 24t-20 17t-29.5 8q-24 0 -42 -10 t-28.5 -30t-17.5 -39t-9.5 -48t-3 -46t-0.5 -43v-39z" />
+<glyph unicode="ffi" horiz-adv-x="753" d="M38 12q0 13 12 13h37q4 0 4 63q0 20 -0.5 51t-0.5 33v66q0 108 -2 108h-35q-9 0 -11.5 2t-2.5 11t2 11t9 2h29q7 0 8.5 2t1.5 10q0 36 1 59.5t6.5 58.5t16.5 59t31.5 47.5t50.5 37.5q37 18 74 18q33 0 63.5 -16t49.5 -43q47 73 135 73q57 0 92 -29t35 -59 q0 -16 -17 -30.5t-29 -14.5t-13 9q-4 62 -22 82t-51 20t-54.5 -22t-30.5 -63t-12 -76.5t-3 -85.5v-24q0 -9 3 -11t16 -2h117q11 0 59 2.5t54 2.5q7 0 7 -6v-170q0 -107 3 -164q0 -5 0.5 -7t2.5 -3.5t7 -1.5h31q11 0 11 -13q0 -8 -1.5 -11t-9.5 -3q-9 0 -37.5 1t-41.5 1 t-44 -1t-40 -1q-8 0 -9.5 2.5t-1.5 11.5q0 7 2.5 10t11.5 3h36q8 0 9.5 2t1.5 10q1 29 1 82q0 117 -4 214q-1 9 -2.5 11.5t-7.5 2.5h-157q-11 0 -14 -2t-3 -10v-166q0 -144 10 -144h49q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -39 1t-47 1q-12 0 -39.5 -1 t-43.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h40q4 0 4 63q0 20 -0.5 51t-0.5 33v80q0 94 -2 94q-6 0 -21.5 0.5t-20.5 0.5h-124q-11 0 -14 -2t-3 -10v-166q0 -144 10 -144h56q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -44 1t-52 1q-12 0 -37 -1t-41 -1 q-9 0 -11 2.5t-2 11.5zM155 389q0 -12 3 -14.5t18 -2.5h159q6 0 7.5 1t1.5 7q0 105 10 150q4 18 4 19q0 4 -9 10q-13 9 -30 38q-25 44 -62 44q-20 0 -36 -7t-26.5 -16.5t-18 -28t-11.5 -33t-6 -40.5t-2.5 -41t-1 -44.5t-0.5 -41.5z" />
+<glyph unicode="ffl" horiz-adv-x="754" d="M38 12q0 13 12 13h37q4 0 4 63q0 20 -0.5 51t-0.5 33v60q0 114 -2 114h-35q-9 0 -11.5 2t-2.5 11t2 11t9 2h29q7 0 8.5 2t1.5 10q0 213 106 262q37 18 74 18q66 0 106 -50q3 -4 7 1q50 63 138 63q36 0 74 -22q12 -7 27 -5q9 1 18.5 3t15 3t6.5 1q5 0 6 -2.5t1 -12.5 q-4 -181 -4 -375q0 -243 4 -243h48q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -38 1t-46 1q-12 0 -42 -1t-46 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h47q4 0 4 85v219q0 12 -2.5 15t-11.5 3h-150q-11 0 -15 -2.5t-4 -9.5v-226q0 -84 8 -84h50q8 0 10.5 -3t2.5 -10 q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -39 1t-47 1q-12 0 -39.5 -1t-43.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h40q6 0 6 63q0 20 -0.5 51t-0.5 33v165q0 7 -2.5 8.5t-11.5 1.5h-154q-11 0 -14 -2t-3 -10v-166q0 -144 10 -144h56q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4 t-9 -2q-8 0 -44 1t-52 1q-12 0 -37 -1t-41 -1q-9 0 -11 2.5t-2 11.5zM156 384q0 -8 3.5 -10t16.5 -2h157q7 0 8.5 2t1.5 13q0 21 -0.5 44.5t-0.5 49.5q0 47 8 73q1 3 1 5t-5 6q-16 13 -24 27q-9 15 -15.5 24t-20 17t-29.5 8q-27 0 -47 -15t-30 -36t-16 -54t-7 -57t-1 -58 v-37zM409 389q0 -12 3 -14.5t18 -2.5h148q10 0 13 3.5t3 16.5q0 61 -2 157q0 13 -13 33q-5 7 -13.5 23.5t-14.5 25.5t-19 17t-32 8q-29 0 -48.5 -15.5t-28 -45.5t-11.5 -59t-3 -69v-78z" />
+<glyph unicode="fj" horiz-adv-x="506" d="M35 12q0 13 12 13h40q4 0 4 63q0 20 -0.5 51t-0.5 33v80q0 94 -2 94h-33q-9 0 -11.5 2t-2.5 11t2 11t9 2h29q6 0 7.5 1t1.5 7q0 66 6 125q8 82 53.5 127.5t113.5 45.5q57 0 92 -29t35 -59q0 -16 -17 -30.5t-29 -14.5t-13 9q-4 62 -22 82t-51 20t-54.5 -22t-30.5 -63 t-12 -76.5t-3 -85.5v-24q0 -9 3 -11t16 -2h117q11 0 57.5 3t52.5 3q7 0 7 -23q0 -20 2.5 -136.5t2.5 -191.5q0 -90 -10.5 -145t-43.5 -98q-13 -17 -57.5 -38t-66.5 -21q-19 0 -19 20q0 16 14.5 34.5t26.5 18.5t31.5 -2t23.5 -2q19 0 28.5 9.5t9.5 23.5q0 9 -2.5 56.5 t-4.5 145t-2 229.5q0 49 -2 76q-1 13 -10 13h-157q-11 0 -14 -2t-3 -10v-166q0 -144 10 -144h59q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -44 1t-52 1q-12 0 -39.5 -1t-43.5 -1q-9 0 -11 2.5t-2 11.5z" />
+<glyph unicode="ffj" horiz-adv-x="760" d="M38 12q0 13 12 13h37q4 0 4 63q0 20 -0.5 51t-0.5 33v66q0 108 -2 108h-35q-9 0 -11.5 2t-2.5 11t2 11t9 2h29q7 0 8.5 2t1.5 10q0 36 1 59.5t6.5 58.5t16.5 59t31.5 47.5t50.5 37.5q37 18 74 18q33 0 63.5 -16t49.5 -43q47 73 135 73q57 0 92 -29t35 -59 q0 -16 -17 -30.5t-29 -14.5t-13 9q-4 62 -22 82t-51 20t-54.5 -22t-30.5 -63t-12 -76.5t-3 -85.5v-24q0 -9 3 -11t16 -2h117q11 0 57.5 3t52.5 3q7 0 7 -23q0 -20 2.5 -136.5t2.5 -191.5q0 -90 -10.5 -145t-43.5 -98q-13 -17 -57.5 -38t-66.5 -21q-19 0 -19 20 q0 16 14.5 34.5t26.5 18.5t31.5 -2t23.5 -2q19 0 28.5 9.5t9.5 23.5q0 9 -2.5 56.5t-4.5 145t-2 229.5q0 49 -2 76q-1 13 -10 13h-157q-11 0 -14 -2t-3 -10v-166q0 -144 10 -144h49q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -39 1t-47 1q-12 0 -39.5 -1 t-43.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h40q4 0 4 63q0 20 -0.5 51t-0.5 33v80q0 94 -2 94q-6 0 -21.5 0.5t-20.5 0.5h-124q-11 0 -14 -2t-3 -10v-166q0 -144 10 -144h56q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -44 1t-52 1q-12 0 -37 -1t-41 -1 q-9 0 -11 2.5t-2 11.5zM155 389q0 -12 3 -14.5t18 -2.5h159q6 0 7.5 1t1.5 7q0 105 10 150q4 18 4 19q0 4 -9 10q-13 9 -30 38q-25 44 -62 44q-20 0 -36 -7t-26.5 -16.5t-18 -28t-11.5 -33t-6 -40.5t-2.5 -41t-1 -44.5t-0.5 -41.5z" />
+<glyph unicode="fb" horiz-adv-x="739" d="M33 12q0 13 12 13h40q6 0 6 63q0 20 -0.5 51t-0.5 33v60q0 114 -2 114h-35q-9 0 -11.5 2t-2.5 11t2 11t9 2h27q7 0 9.5 2t2.5 10q0 24 -0.5 47t-0.5 50q0 84 45.5 140.5t132.5 56.5q36 0 74 -22q12 -7 27 -5q9 1 18.5 3t15 3t6.5 1q5 0 6 -2.5t1 -12.5q0 -3 -1 -48 t-2.5 -104t-1.5 -97t1 -38t7.5 3t17.5 7.5t23.5 9t28.5 7.5t30 3q83 0 137.5 -57.5t54.5 -140.5q0 -92 -65 -146.5t-156 -54.5q-19 0 -47.5 9.5t-41.5 9.5q-11 0 -28 -9t-21 -9q-12 0 -12 13q0 1 1 36.5t1.5 82.5t0.5 77q0 304 -1 352q0 6 -1.5 11t-3 8t-5 7t-5.5 7 q-5 7 -13.5 23.5t-14.5 25.5t-19 17t-32 8q-29 0 -48.5 -15.5t-28 -45.5t-11.5 -59t-3 -69v-78q0 -12 3 -14.5t18 -2.5h116q7 0 7 -5t-2.5 -12.5t-5.5 -7.5h-115q-11 0 -15 -2.5t-4 -9.5v-226q0 -84 8 -84h55q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -41.5 1 t-49.5 1q-12 0 -39.5 -1t-43.5 -1q-9 0 -11 2.5t-2 11.5zM407 64q0 -50 84 -50q67 0 106.5 51t39.5 122q0 67 -47.5 118.5t-112.5 51.5q-16 0 -32.5 -5.5t-26 -11t-9.5 -8.5q0 -59 -1 -159.5t-1 -108.5z" />
+<glyph unicode="fh" horiz-adv-x="755" d="M33 12q0 13 12 13h40q6 0 6 63q0 20 -0.5 51t-0.5 33v60q0 114 -2 114h-35q-9 0 -11.5 2t-2.5 11t2 11t9 2h27q7 0 9.5 2t2.5 10q0 24 -0.5 47t-0.5 50q0 84 45.5 140.5t132.5 56.5q36 0 74 -22q12 -7 27 -5q9 1 18.5 3t15 3t6.5 1q5 0 6 -2.5t1 -12.5q-4 -83 -4 -289 v-10t2 -3t3 0.5t6 3.5q73 40 133 40q40 0 66.5 -16t38.5 -47t16 -63t4 -79v-143q0 -8 1.5 -10t9.5 -2h26q14 0 14 -13q0 -14 -14 -14q-8 0 -31.5 1t-39.5 1q-12 0 -41 -1t-45 -1q-9 0 -11 2.5t-2 11.5q0 13 13 13h39q8 0 9 1.5t2 9.5q2 40 2 176q0 58 -24 95t-72 37 q-47 0 -89 -21q-16 -8 -16 -15l1 -150q0 -89 1 -115q1 -10 1.5 -13t2 -4t7.5 -1h38q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -37.5 1t-45.5 1q-12 0 -41 -1t-45 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h39q7 0 8.5 3t1.5 15q1 94 1 220q0 238 -1 286q0 6 -1.5 11 t-3 8t-5 7t-5.5 7q-5 7 -13.5 23.5t-14.5 25.5t-19 17t-32 8q-29 0 -48.5 -15.5t-28 -45.5t-11.5 -59t-3 -69v-78q0 -12 3 -14.5t18 -2.5h116q7 0 7 -5t-2.5 -12.5t-5.5 -7.5h-115q-11 0 -15 -2.5t-4 -9.5v-226q0 -84 8 -84h55q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4 t-9 -2q-8 0 -41.5 1t-49.5 1q-12 0 -39.5 -1t-43.5 -1q-9 0 -11 2.5t-2 11.5z" />
+<glyph unicode="fk" horiz-adv-x="705" d="M33 12q0 13 12 13h40q6 0 6 63q0 20 -0.5 51t-0.5 33v60q0 114 -2 114h-35q-9 0 -11.5 2t-2.5 11t2 11t9 2h27q7 0 9.5 2t2.5 10q0 24 -0.5 47t-0.5 50q0 84 45.5 140.5t132.5 56.5q36 0 74 -22q12 -7 27 -5q9 1 18.5 3t15 3t6.5 1q5 0 6 -2.5t1 -12.5l-9 -423 q0 -8 2.5 -9.5t13.5 -1.5h22q4 0 7.5 1t7 4.5l5 5t5.5 6t4 5.5q53 70 79 113q3 5 3.5 6.5t1.5 4t-0.5 3.5t-5 1.5t-9.5 0.5h-20q-8 0 -10.5 3t-2.5 10q0 14 14 14q4 0 25 -1t33 -1q10 0 30 1t27 1q13 0 13 -14q0 -13 -12 -13h-32q-11 0 -107 -123q-2 -2 -5 -6q-3 -3 -4 -4.5 t0.5 -4t3.5 -4.5l5 -5l151 -175q11 -13 22 -13h10q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2t-29.5 1t-37.5 1t-38 -1t-30 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h11q17 0 5 15l-110 136q-2 2 -4 5q-9 12 -18 12h-14q-8 0 -9.5 -3t-1.5 -13v-134q0 -13 1.5 -15.5 t9.5 -2.5h23q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -30 1t-38 1q-19 0 -48 -1t-32 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h41q7 0 8.5 3t1.5 15v193q0 265 -1 313q0 6 -1.5 11t-3 8t-5 7t-5.5 7q-5 7 -13.5 23.5t-14.5 25.5t-19 17t-32 8q-29 0 -48.5 -15.5 t-28 -45.5t-11.5 -59t-3 -69v-78q0 -12 3 -14.5t18 -2.5h116q7 0 7 -5t-2.5 -12.5t-5.5 -7.5h-115q-11 0 -15 -2.5t-4 -9.5v-226q0 -84 8 -84h55q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -41.5 1t-49.5 1q-12 0 -39.5 -1t-43.5 -1q-9 0 -11 2.5t-2 11.5z" />
+<glyph unicode="ffb" horiz-adv-x="992" d="M38 12q0 13 12 13h37q4 0 4 63q0 20 -0.5 51t-0.5 33v60q0 114 -2 114h-35q-9 0 -11.5 2t-2.5 11t2 11t9 2h29q7 0 8.5 2t1.5 10q0 40 2.5 69t11.5 71t32.5 73.5t59.5 48.5q37 18 74 18q66 0 106 -50q3 -4 7 1q50 63 138 63q36 0 74 -22q12 -7 27 -5q9 1 18.5 3t15 3 t6.5 1q5 0 6 -2.5t1 -12.5q0 -4 -3 -104.5t-3 -144.5q0 -38 1 -38t7.5 3t17.5 7.5t23.5 9t28.5 7.5t30 3q83 0 137.5 -57.5t54.5 -140.5q0 -92 -65 -146.5t-156 -54.5q-19 0 -47.5 9.5t-41.5 9.5q-11 0 -28 -9t-21 -9q-12 0 -12 13q0 1 0.5 36.5t1.5 82.5t1 77q0 256 -2 352 q0 13 -13 33q-5 7 -13.5 23.5t-14.5 25.5t-19 17t-32 8q-29 0 -48.5 -15.5t-28 -45.5t-11.5 -59t-3 -69v-78q0 -12 3 -14.5t18 -2.5h116q7 0 7 -5t-2.5 -12.5t-5.5 -7.5h-115q-11 0 -15 -2.5t-4 -9.5v-226q0 -84 8 -84h50q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2 q-8 0 -39 1t-47 1q-12 0 -39.5 -1t-43.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h40q6 0 6 63q0 20 -0.5 51t-0.5 33v165q0 7 -2.5 8.5t-11.5 1.5h-154q-11 0 -14 -2t-3 -10v-166q0 -144 10 -144h56q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -44 1t-52 1 q-12 0 -37 -1t-41 -1q-9 0 -11 2.5t-2 11.5zM156 384q0 -8 3 -10t17 -2h157q7 0 8.5 2t1.5 13q0 21 -0.5 44.5t-0.5 49.5q0 47 8 73q1 3 1 5t-5 6q-16 13 -24 27q-9 15 -15.5 24t-20 17t-29.5 8q-28 0 -48 -15.5t-30 -36.5t-15.5 -55t-6.5 -57.5t-1 -57.5v-35zM660 64 q0 -50 84 -50q67 0 106.5 51t39.5 122q0 67 -47.5 118.5t-112.5 51.5q-16 0 -32.5 -5.5t-26 -11t-9.5 -8.5q0 -59 -1 -159.5t-1 -108.5z" />
+<glyph unicode="ffh" horiz-adv-x="1008" d="M38 12q0 13 12 13h37q4 0 4 63q0 20 -0.5 51t-0.5 33v60q0 114 -2 114h-35q-9 0 -11.5 2t-2.5 11t2 11t9 2h29q7 0 8.5 2t1.5 10q0 39 2.5 68t11.5 71.5t32.5 74t59.5 48.5q37 18 74 18q66 0 106 -50q3 -4 7 1q50 63 138 63q36 0 74 -22q12 -7 27 -5q9 1 18.5 3t15 3 t6.5 1q5 0 6 -2.5t1 -12.5q-5 -104 -5 -289v-10t2 -3t3 0.5t6 3.5q73 40 133 40q40 0 66.5 -16t38.5 -47t16 -63t4 -79v-143q0 -8 1.5 -10t9.5 -2h26q14 0 14 -13q0 -14 -14 -14q-8 0 -31.5 1t-39.5 1q-12 0 -41 -1t-45 -1q-9 0 -11 2.5t-2 11.5q0 13 13 13h39q7 0 8.5 1.5 t2.5 9.5q2 40 2 176q0 58 -24 95t-72 37q-47 0 -89 -21q-16 -8 -16 -15l1 -150q0 -89 1 -115q1 -13 2 -15.5t9 -2.5h38q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -37.5 1t-45.5 1q-12 0 -41 -1t-45 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h39q7 0 8.5 3t1.5 15 q1 94 1 220q0 190 -2 286q0 13 -13 33q-5 7 -13.5 23.5t-14.5 25.5t-19 17t-32 8q-29 0 -48.5 -15.5t-28 -45.5t-11.5 -59t-3 -69v-78q0 -12 3 -14.5t18 -2.5h116q7 0 7 -5t-2.5 -12.5t-5.5 -7.5h-115q-11 0 -15 -2.5t-4 -9.5v-226q0 -84 8 -84h50q8 0 10.5 -3t2.5 -10 q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -39 1t-47 1q-12 0 -39.5 -1t-43.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h40q6 0 6 63q0 20 -0.5 51t-0.5 33v165q0 7 -2.5 8.5t-11.5 1.5h-154q-11 0 -14 -2t-3 -10v-166q0 -144 10 -144h56q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4 t-9 -2q-8 0 -44 1t-52 1q-12 0 -37 -1t-41 -1q-9 0 -11 2.5t-2 11.5zM156 385q0 -8 3.5 -10.5t16.5 -2.5h157q7 0 8.5 2t1.5 13q0 21 -0.5 44.5t-0.5 49.5q0 47 8 73q1 3 1 5t-5 6q-16 13 -24 27q-9 15 -15.5 24t-20 17t-29.5 8q-34 0 -56 -20t-31 -57t-11.5 -67.5 t-2.5 -74.5v-37z" />
+<glyph unicode="ffk" horiz-adv-x="957" d="M38 12q0 13 12 13h37q4 0 4 63q0 20 -0.5 51t-0.5 33v60q0 114 -2 114h-35q-9 0 -11.5 2t-2.5 11t2 11t9 2h29q7 0 8.5 2t1.5 10q0 39 2.5 68t11.5 71.5t32.5 74t59.5 48.5q37 18 74 18q66 0 106 -50q3 -4 7 1q50 63 138 63q36 0 74 -22q12 -7 27 -5q9 1 18.5 3t15 3 t6.5 1q5 0 6 -2.5t1 -12.5l-11 -423q0 -8 2.5 -9.5t13.5 -1.5h22q4 0 7.5 1t7 4.5l5 5t5.5 6t4 5.5q53 70 79 113q3 5 3.5 6.5t1.5 4t-0.5 3.5t-5 1.5t-9.5 0.5h-20q-8 0 -10.5 3t-2.5 10q0 14 14 14q4 0 25 -1t33 -1q10 0 30 1t27 1q13 0 13 -14q0 -13 -12 -13h-32 q-11 0 -107 -123q-2 -2 -5 -6q-3 -3 -4 -4.5t0.5 -4t3.5 -4.5l5 -5l151 -175q11 -13 22 -13h10q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2t-29.5 1t-37.5 1t-38 -1t-30 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h11q17 0 5 15l-110 136q-2 2 -4 5q-9 12 -18 12h-14 q-8 0 -9.5 -3t-1.5 -13v-134q0 -13 1.5 -15.5t9.5 -2.5h23q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -30 1t-38 1q-19 0 -48 -1t-32 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h41q7 0 8.5 3t1.5 15v193q0 265 -1 313q0 13 -13 33q-5 7 -13.5 23.5t-14.5 25.5t-19 17 t-32 8q-29 0 -48.5 -15.5t-28 -45.5t-11.5 -59t-3 -69v-78q0 -12 3 -14.5t18 -2.5h116q7 0 7 -5t-2.5 -12.5t-5.5 -7.5h-115q-11 0 -15 -2.5t-4 -9.5v-226q0 -84 8 -84h50q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -39 1t-47 1q-12 0 -39.5 -1t-43.5 -1 q-9 0 -11 2.5t-2 11.5q0 13 12 13h40q6 0 6 63q0 20 -0.5 51t-0.5 33v165q0 7 -2.5 8.5t-11.5 1.5h-154q-11 0 -14 -2t-3 -10v-166q0 -144 10 -144h56q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -44 1t-52 1q-12 0 -37 -1t-41 -1q-9 0 -11 2.5t-2 11.5zM156 387 q0 -10 3 -12.5t17 -2.5h157q7 0 8.5 2t1.5 13q0 21 -1.5 44.5t-1.5 49.5q0 40 10 73q1 3 1 5t-5 6q-16 13 -24 27q-9 15 -15.5 24t-20 17t-29.5 8q-29 0 -49.5 -17t-30 -38t-15 -57.5t-6 -57t-0.5 -55.5v-29z" />
+<glyph unicode="f&#x125;" horiz-adv-x="755" d="M330 731l4 6l79 89q12 13 16 13h24q4 0 16 -13l79 -89q4 -4 4 -6t-6 -2h-9q-1 0 -11 6l-81 45q-4 2 -8 0l-81 -45q-10 -6 -11 -6h-9q-6 0 -6 2zM33 12q0 13 12 13h40q6 0 6 63q0 20 -0.5 51t-0.5 33v60q0 114 -2 114h-35q-9 0 -11.5 2t-2.5 11t2 11t9 2h27q7 0 9.5 2 t2.5 10q0 24 -0.5 47t-0.5 50q0 84 45.5 140.5t132.5 56.5q36 0 74 -22q12 -7 27 -5q9 1 18.5 3t15 3t6.5 1q5 0 6 -2.5t1 -12.5q-4 -83 -4 -289v-10t2 -3t3 0.5t6 3.5q73 40 133 40q40 0 66.5 -16t38.5 -47t16 -63t4 -79v-143q0 -8 1.5 -10t9.5 -2h26q14 0 14 -13 q0 -14 -14 -14q-8 0 -31.5 1t-39.5 1q-12 0 -41 -1t-45 -1q-9 0 -11 2.5t-2 11.5q0 13 13 13h39q8 0 9 1.5t2 9.5q2 40 2 176q0 58 -24 95t-72 37q-47 0 -89 -21q-16 -8 -16 -15l1 -150q0 -89 1 -115q1 -10 1.5 -13t2 -4t7.5 -1h38q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8 t-3.5 -4t-9 -2q-8 0 -37.5 1t-45.5 1q-12 0 -41 -1t-45 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h39q7 0 8.5 3t1.5 15q1 94 1 220q0 238 -1 286q0 6 -1.5 11t-3 8t-5 7t-5.5 7q-5 7 -13.5 23.5t-14.5 25.5t-19 17t-32 8q-29 0 -48.5 -15.5t-28 -45.5t-11.5 -59t-3 -69v-78 q0 -12 3 -14.5t18 -2.5h116q7 0 7 -5t-2.5 -12.5t-5.5 -7.5h-115q-11 0 -15 -2.5t-4 -9.5v-226q0 -84 8 -84h55q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -41.5 1t-49.5 1q-12 0 -39.5 -1t-43.5 -1q-9 0 -11 2.5t-2 11.5z" />
+<glyph unicode="ff&#x125;" horiz-adv-x="1008" d="M583 731l4 6l79 89q12 13 16 13h24q4 0 16 -13l79 -89q4 -4 4 -6t-6 -2h-9q-1 0 -11 6l-81 45q-4 2 -8 0l-81 -45q-10 -6 -11 -6h-9q-6 0 -6 2zM38 12q0 13 12 13h37q4 0 4 63q0 20 -0.5 51t-0.5 33v60q0 114 -2 114h-35q-9 0 -11.5 2t-2.5 11t2 11t9 2h29q7 0 8.5 2 t1.5 10q0 39 2.5 68t11.5 71.5t32.5 74t59.5 48.5q37 18 74 18q66 0 106 -50q3 -4 7 1q50 63 138 63q36 0 74 -22q12 -7 27 -5q9 1 18.5 3t15 3t6.5 1q5 0 6 -2.5t1 -12.5q-5 -104 -5 -289v-10t2 -3t3 0.5t6 3.5q73 40 133 40q40 0 66.5 -16t38.5 -47t16 -63t4 -79v-143 q0 -8 1.5 -10t9.5 -2h26q14 0 14 -13q0 -14 -14 -14q-8 0 -31.5 1t-39.5 1q-12 0 -41 -1t-45 -1q-9 0 -11 2.5t-2 11.5q0 13 13 13h39q7 0 8.5 1.5t2.5 9.5q2 40 2 176q0 58 -24 95t-72 37q-47 0 -89 -21q-16 -8 -16 -15l1 -150q0 -89 1 -115q1 -13 2 -15.5t9 -2.5h38 q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -37.5 1t-45.5 1q-12 0 -41 -1t-45 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h39q7 0 8.5 3t1.5 15q1 94 1 220q0 190 -2 286q0 13 -13 33q-5 7 -13.5 23.5t-14.5 25.5t-19 17t-32 8q-29 0 -48.5 -15.5t-28 -45.5t-11.5 -59 t-3 -69v-78q0 -12 3 -14.5t18 -2.5h116q7 0 7 -5t-2.5 -12.5t-5.5 -7.5h-115q-11 0 -15 -2.5t-4 -9.5v-226q0 -84 8 -84h50q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -39 1t-47 1q-12 0 -39.5 -1t-43.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h40q6 0 6 63 q0 20 -0.5 51t-0.5 33v165q0 7 -2.5 8.5t-11.5 1.5h-154q-11 0 -14 -2t-3 -10v-166q0 -144 10 -144h56q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -44 1t-52 1q-12 0 -37 -1t-41 -1q-9 0 -11 2.5t-2 11.5zM156 385q0 -8 3.5 -10.5t16.5 -2.5h157q7 0 8.5 2 t1.5 13q0 21 -0.5 44.5t-0.5 49.5q0 47 8 73q1 3 1 5t-5 6q-16 13 -24 27q-9 15 -15.5 24t-20 17t-29.5 8q-34 0 -56 -20t-31 -57t-11.5 -67.5t-2.5 -74.5v-37z" />
+<glyph unicode="f&#xfe;" horiz-adv-x="747" d="M33 12q0 13 12 13h40q6 0 6 63q0 20 -0.5 51t-0.5 33v60q0 114 -2 114h-35q-9 0 -11.5 2t-2.5 11t2 11t9 2h27q7 0 9.5 2t2.5 10q0 24 -0.5 47t-0.5 50q0 84 45.5 140.5t132.5 56.5q36 0 74 -22q12 -7 27 -5q9 1 18.5 3t15 3t6.5 1q5 0 6 -2.5t1 -12.5q-2 -42 -2 -173 v-128q0 -10 2 -10q1 0 19 14q50 37 108 37q83 0 127 -53t44 -136q0 -81 -57.5 -142t-151.5 -61q-31 0 -66 11l-7.5 2.5t-6.5 2.5t-5 1t-4 -1.5t-1 -4.5l3 -189q2 -67 6 -67h70q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -49 1t-57 1q-12 0 -46.5 -1t-50.5 -1 q-9 0 -11 2.5t-2 11.5q0 13 12 13h55q3 0 3 160l-1 204q0 322 -5 439q0 6 -2 11t-3.5 7.5t-4.5 7l-5 7.5q-5 7 -13.5 23.5t-14.5 25.5t-19 17t-32 8q-29 0 -48.5 -15.5t-28 -45.5t-11.5 -59t-3 -69v-78q0 -12 3 -14.5t18 -2.5h116q7 0 7 -5t-2.5 -12.5t-5.5 -7.5h-115 q-11 0 -15 -2.5t-4 -9.5v-226q0 -84 8 -84h55q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -41.5 1t-49.5 1q-12 0 -39.5 -1t-43.5 -1q-9 0 -11 2.5t-2 11.5zM413 52q0 -17 30 -29.5t57 -12.5q66 0 103 55t37 122q0 72 -37 116.5t-93 44.5q-36 0 -64 -13 q-33 -17 -33 -33v-250z" />
+<glyph unicode="ff&#xfe;" horiz-adv-x="1001" d="M38 12q0 13 12 13h37q4 0 4 63q0 20 -0.5 51t-0.5 33v60q0 114 -2 114h-35q-9 0 -11.5 2t-2.5 11t2 11t9 2h29q7 0 8.5 2t1.5 10q0 39 2.5 68t11.5 71.5t32.5 74t59.5 48.5q37 18 74 18q66 0 106 -50q3 -4 7 1q50 63 138 63q36 0 74 -22q12 -7 27 -5q9 1 18.5 3t15 3 t6.5 1q5 0 6 -2.5t1 -12.5q-2 -42 -2 -173v-128q0 -10 2 -10q1 0 19 14q50 37 108 37q83 0 127 -53t44 -136q0 -81 -57.5 -142t-151.5 -61q-31 0 -66 11l-7.5 2.5t-6.5 2.5t-5 1t-4 -1.5t-1 -4.5l3 -189q2 -67 6 -67h70q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2 q-8 0 -49 1t-57 1q-12 0 -46.5 -1t-50.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h55q3 0 3 160l-1 204q0 322 -5 439q0 6 -2 11t-3.5 7.5t-4.5 7l-5 7.5q-5 7 -13.5 23.5t-14.5 25.5t-19 17t-32 8q-29 0 -48.5 -15.5t-28 -45.5t-11.5 -59t-3 -69v-78q0 -12 3 -14.5t18 -2.5h116 q7 0 7 -5t-2.5 -12.5t-5.5 -7.5h-115q-11 0 -15 -2.5t-4 -9.5v-226q0 -84 8 -84h50q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -39 1t-47 1q-12 0 -39.5 -1t-43.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h40q6 0 6 63q0 20 -0.5 51t-0.5 33v165q0 7 -2.5 8.5 t-11.5 1.5h-154q-11 0 -14 -2t-3 -10v-166q0 -144 10 -144h56q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -44 1t-52 1q-12 0 -37 -1t-41 -1q-9 0 -11 2.5t-2 11.5zM156 385q0 -8 3.5 -10.5t16.5 -2.5h157q7 0 8.5 2t1.5 13q0 21 -0.5 44.5t-0.5 49.5q0 47 8 73 q1 3 1 5t-5 6q-16 13 -24 27q-9 15 -15.5 24t-20 17t-29.5 8q-34 0 -56 -20t-31 -57t-11.5 -67.5t-2.5 -74.5v-37zM667 52q0 -17 30 -29.5t57 -12.5q66 0 103 55t37 122q0 72 -37 116.5t-93 44.5q-36 0 -64 -13q-33 -17 -33 -33v-250z" />
+<glyph unicode=" "  horiz-adv-x="200" />
+<glyph unicode="&#x09;" horiz-adv-x="200" />
+<glyph unicode="&#xa0;" horiz-adv-x="200" />
+<glyph unicode="!" horiz-adv-x="261" d="M80 38q0 16 16 37.5t28 21.5q16 0 36.5 -15t20.5 -32q0 -21 -16 -39.5t-26 -18.5q-20 0 -39.5 17t-19.5 29zM97 648q0 25 41 25q18 0 24.5 -4t6.5 -17q0 -3 -4 -63t-10.5 -175.5t-11.5 -231.5q0 -10 -14 -10q-13 0 -13 10q-3 95 -7.5 202t-8 175t-3.5 89z" />
+<glyph unicode="&#x22;" horiz-adv-x="261" d="M30 511q0 1 2 32.5l4.5 68.5t3.5 47q4 29 32 29q29 0 29 -25q0 -4 -2 -14l-12.5 -43l-17.5 -57.5t-10 -32.5q-1 -3 -2 -7t-1.5 -5l-1.5 -3t-2.5 -2.5t-3.5 -1t-6 -0.5q-12 0 -12 14zM160 511q0 1 2 32.5l4.5 68.5t3.5 47q4 29 32 29q29 0 29 -25q0 -4 -2 -14l-12.5 -43 l-17.5 -57.5t-10 -32.5q-1 -3 -2 -7t-1.5 -5l-1.5 -3t-2.5 -2.5t-3.5 -1t-6 -0.5q-12 0 -12 14z" />
+<glyph unicode="#" horiz-adv-x="442" d="M30 169v4q0 8 2 10.5t9 2.5h73q5 0 5.5 1t1.5 6q16 115 16 126q0 4 -5 4h-95q-7 0 -7 13v6q0 11 7 11h100q9 0 9 6l21 148q2 16 3 18q4 6 6.5 6.5t14.5 0.5q19 0 19 -11q0 -3 -12.5 -81t-12.5 -82q0 -5 6 -5h90q7 0 8 7q25 161 26 165q3 7 14 7q24 0 24 -10 q0 -5 -12 -82.5t-12 -81.5q0 -5 4 -5h64q10 0 12.5 -2.5t2.5 -13.5q0 -10 -3 -12t-10 -2h-72q-6 0 -6 -5q-19 -120 -19 -126t7 -6h92q7 0 9 -3t2 -14q0 -10 -2.5 -12t-11.5 -2h-86q-15 -2 -15 -5q-21 -150 -22 -152q0 -1 -1 -3q-1 -5 -21 -5h-10.5t-5 1.5l-2 2t0 4t0.5 5.5 q0 4 11 74.5t11 73.5q0 4 -7 4h-86q-11 -2 -12 -5q-21 -150 -22 -152q-4 -7 -9 -8h-13q-11 0 -14.5 2.5t-3.5 10.5q0 4 11 74.5t11 73.5q0 4 -3 4h-68q-8 0 -10 3t-2 11zM158 193q0 -5 9 -5h90q7 0 7 6l9.5 67t7 44t2.5 16q0 4 -7 4h-90q-6 0 -8 -5v-1q-2 -16 -7.5 -47.5 t-9 -53.5t-3.5 -25z" />
+<glyph unicode="$" d="M58 92q0 7 12.5 12.5t22.5 5.5q5 0 10 -4t13 -15.5t13 -17.5q39 -47 97 -52q8 -1 10.5 0.5t2.5 8.5v240q0 11 -2.5 15.5t-11.5 8.5q-37 16 -60 29t-49.5 34.5t-40 49.5t-13.5 63q0 63 49.5 107t119.5 50q6 1 7 2t1 8v36q0 9 7 9h9q7 0 7 -9v-36q0 -7 1 -7.5t7 -1.5 q65 -5 106.5 -37t41.5 -59q0 -10 -14 -18.5t-21 -8.5q-9 0 -14 14.5t-9.5 32.5t-26.5 35t-60 21q-11 2 -11 -6v-237q0 -13 2 -16t10 -7q31 -14 48.5 -23t43.5 -26t40 -33t25 -40t11 -51q0 -72 -43.5 -117t-122.5 -52q-13 -1 -13 -5q-1 -3 -1 -9v-122q0 -9 -1.5 -10.5 t-10.5 -1.5q-8 0 -9.5 2t-1.5 10v122q0 10 -1.5 11.5t-11.5 2.5q-67 4 -117.5 33t-50.5 59zM117 480q0 -45 28.5 -70.5t80.5 -47.5l6 -3t4.5 -1.5t1.5 2.5t1 8v234q0 6 -5 6q-25 0 -58 -19q-59 -35 -59 -109zM262 38q0 -16 6 -16q4 0 8 1q47 10 78 46t31 78q0 46 -29.5 75 t-81.5 52q-6 3 -9 3t-3 -12v-227z" />
+<glyph unicode="%" horiz-adv-x="657" d="M50 362q0 62 52.5 131.5t124.5 69.5q40 0 71 -31q24 -24 58 -24q46 0 93 28q17 10 31.5 22t35.5 33.5l22 22.5t4.5 5t7.5 8l3 4q6 0 12 -4t6 -8q0 -3 -5 -11q-360 -527 -434 -643q-4 -6 -19 -6q-16 0 -16 10q0 2 2 6l80 114l169.5 245.5t112.5 170.5q9 15 8 16 q-2 1 -8 -2q-47 -28 -105 -28q-16 0 -35 3v-16v-14q0 -17 -1 -25q-6 -72 -57.5 -130.5t-112.5 -58.5q-47 0 -73.5 32t-26.5 80zM99 336q0 -29 13.5 -50t40.5 -21q51 0 95 58.5t44 137.5q0 70 -52 70q-46 0 -93.5 -64t-47.5 -131zM336 103q0 71 56 137t125 66q42 0 66 -29.5 t24 -79.5q0 -79 -53 -142.5t-118 -63.5q-47 0 -73.5 31.5t-26.5 80.5zM385 78q0 -30 13 -50.5t41 -20.5q51 0 95 58.5t44 136.5q0 71 -53 71q-45 0 -92.5 -64t-47.5 -131z" />
+<glyph unicode="&#x26;" horiz-adv-x="657" d="M40 155q0 98 124 185q14 10 14 12l-16 18q-56 64 -56 116q0 65 47.5 110.5t112.5 45.5q55 0 97 -26t42 -74q0 -74 -125 -160q-14 -9 -14 -11q0 -3 13 -14q58 -49 156 -154q11 -12 13 -12t10 14l18 31.5l21 36.5t15 30t7 24q0 5 -19 5h-60q-9 0 -11 2t-2 13t1.5 13t11.5 2 q6 0 48.5 -1.5t59.5 -1.5q16 0 41.5 1.5t28.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-30q-8 0 -20 -18q-97 -139 -97 -144q0 -3 10 -16q31 -39 64 -98q7 -13 11.5 -17.5t18.5 -8t41 -3.5q7 0 8 -1.5t1 -10.5q0 -11 -2.5 -13t-13.5 -2q-40 -1 -77 -5.5t-38 -4.5 q-12 0 -15 10q-15 51 -48 98q-8 10 -10 10t-10 -9q-99 -109 -188 -109q-81 0 -130 46.5t-49 118.5zM102 197q0 -59 45.5 -102t103.5 -43q77 0 144 67q7 8 7 11l-9 13q-27 37 -78 89t-96 89q-13 12 -18 12q-6 0 -26 -15q-73 -54 -73 -121zM171 518q0 -46 51 -107 q16 -19 22 -19q4 0 22 13q71 53 71 121q0 34 -23 60t-57 26q-42 0 -64 -27.5t-22 -66.5z" />
+<glyph unicode="'" horiz-adv-x="131" d="M30 511q0 1 2 32.5l4.5 68.5t3.5 47q4 29 32 29q29 0 29 -25q0 -4 -2 -14l-12.5 -43l-17.5 -57.5t-10 -32.5q-1 -3 -2 -7t-1.5 -5l-1.5 -3t-2.5 -2.5t-3.5 -1t-6 -0.5q-12 0 -12 14z" />
+<glyph unicode="(" horiz-adv-x="279" d="M40 285q0 73 19 142t45 114.5t53.5 80.5t45.5 51t20 16q6 0 11 -4t5 -9l-8 -8q-8 -9 -20.5 -25.5t-27.5 -39t-30 -54.5t-27.5 -68.5t-20.5 -84.5t-8 -99q0 -79 14 -150t34.5 -117.5t41 -80.5t34.5 -53t14 -22q0 -14 -16 -14q-4 0 -22.5 21.5t-45 62.5t-51.5 91.5 t-42.5 117.5t-17.5 132z" />
+<glyph unicode=")" horiz-adv-x="279" d="M40 -127l8 9q8 8 20.5 24.5t27.5 39t30 54.5t27.5 68.5t20.5 84.5t8 99q0 79 -14 150t-34.5 117.5t-41 80.5t-34.5 53t-14 22q0 14 16 14q4 0 22.5 -21.5t45 -62.5t51.5 -91.5t42.5 -117.5t17.5 -132q0 -73 -19 -142t-45 -114.5t-53.5 -80.5t-45.5 -51t-20 -16 q-6 0 -11 4t-5 9z" />
+<glyph unicode="*" horiz-adv-x="391" d="M30 447q0 21 23 31q10 4 48.5 17.5t52.5 19.5q19 7 19 13q0 4 -15 15q-6 5 -42.5 28t-45.5 32q-13 15 -13 29q0 11 7.5 19t20.5 8q18 0 31 -15q7 -8 18 -25l24 -39l18 -30q8 -13 11 -13q2 0 8 13q4 9 12.5 34t16 45t12.5 27q13 19 32 19q11 0 19 -9t8 -19q0 -13 -9 -26 q-8 -12 -39 -39.5t-39 -35.5q-10 -12 -10 -15q0 -6 18 -7q8 -1 56 -2t60 -5q29 -10 29 -31q0 -14 -9.5 -21.5t-22.5 -7.5q-7 0 -15 3t-46.5 22.5t-51.5 25.5q-12 6 -16 6q-5 0 -5 -4t3 -14q2 -10 15.5 -52.5t13.5 -56.5q0 -15 -7.5 -27t-22.5 -12q-16 0 -24.5 12t-8.5 26 q0 11 8 52.5t10 53.5q1 4 1 10q0 11 -4 11q-6 0 -17 -11l-36 -37.5t-41 -37.5q-12 -7 -25 -7t-21.5 7.5t-8.5 19.5z" />
+<glyph unicode="+" horiz-adv-x="527" d="M31 212q0 8 0.5 11.5t4.5 6t13 2.5h170q22 0 22 19v176q0 7 2.5 10.5t6 4t12.5 0.5t13 -0.5t7.5 -5.5t3.5 -14v-163q0 -27 17 -27h177q8 0 11.5 -2.5t4 -6t0.5 -12.5q0 -14 -3 -18.5t-18 -4.5h-172q-12 0 -14.5 -4t-2.5 -14v-175q0 -11 -5 -14t-15 -3q-16 0 -20.5 2.5 t-4.5 15.5v174q0 12 -4.5 15t-19.5 3h-169q-12 0 -14.5 5t-2.5 19z" />
+<glyph unicode="," horiz-adv-x="203" d="M40 -139l18 16q17 16 34.5 41t17.5 48q0 16 -10 30.5t-22.5 22.5t-22.5 15.5t-10 12.5q0 14 19.5 27.5t27.5 13.5q14 0 42.5 -23t28.5 -40q0 -38 -26.5 -83t-53 -71.5t-32.5 -26.5q-4 0 -7.5 5.5t-3.5 11.5z" />
+<glyph unicode="-" horiz-adv-x="258" d="M25 201q0 12 6 25.5t12 14.5t91.5 4t91.5 3q2 0 2 -9q0 -33 -8 -33q-104 -8 -191 -8q-4 0 -4 3z" />
+<glyph unicode="." horiz-adv-x="221" d="M60 38q0 16 16 37.5t28 21.5q16 0 36.5 -15t20.5 -32q0 -21 -16 -39.5t-26 -18.5q-20 0 -39.5 17t-19.5 29z" />
+<glyph unicode="/" horiz-adv-x="406" d="M10 -220q0 2 19 57q315 843 317 850q4 11 9.5 14.5t19.5 3.5q21 0 21 -12q0 -8 -14 -44l-314 -851q-8 -22 -13.5 -26.5t-18.5 -4.5q-26 0 -26 13z" />
+<glyph unicode="0" d="M58 189q0 82 56 136.5t137 54.5q88 0 139.5 -55.5t51.5 -136.5q0 -84 -57 -138.5t-140 -54.5q-77 0 -132 57.5t-55 136.5zM91 189q0 -65 44.5 -105.5t108.5 -40.5q80 0 120.5 45t40.5 114q0 59 -47.5 98.5t-110.5 39.5t-109.5 -44.5t-46.5 -106.5z" />
+<glyph unicode="1" d="M150 12q0 7 2.5 10t11.5 3h42q8 0 9.5 2t1.5 10q1 29 1 88v89q0 93 -2 137q0 5 -0.5 7t-2.5 3.5t-7 1.5h-42q-11 0 -11 13q0 8 1.5 11t9.5 3q9 0 43.5 -1t47.5 -1t47 1t43 1q8 0 9.5 -2.5t1.5 -11.5q0 -7 -2.5 -10t-11.5 -3h-39q-7 0 -9 -1.5t-2 -7.5v-3q-3 -58 -3 -234 q0 -53 1 -80q0 -12 12 -12h40q11 0 11 -13q0 -8 -1.5 -11t-9.5 -3q-9 0 -43.5 1t-47.5 1t-47 -1t-43 -1q-8 0 -9.5 2.5t-1.5 11.5z" />
+<glyph unicode="2" d="M60 323q0 8 26 27.5t68 37.5t76 18q55 0 91.5 -36t36.5 -90q0 -39 -35 -83t-71 -70.5t-75 -49.5q-28 -16 -28 -18q0 -1 7 -1h232q4 0 19.5 33t17.5 33q4 0 11 -2.5t7 -4.5q0 -15 -27 -111q-2 -6 -11 -6h-326q-15 0 -15 11q0 7 12 17q13 12 54.5 41t73.5 53.5t59 65 t27 82.5q0 44 -23 69t-61 25q-30 0 -61 -15t-49 -31l-19 -15q-4 0 -10.5 7.5t-6.5 12.5z" />
+<glyph unicode="3" d="M80 -164q0 8 11.5 14t26.5 6q16 0 41 -15q4 -2 14 -9t15.5 -10.5t18 -6.5t26.5 -3q48 0 87 45.5t39 103.5q0 70 -36.5 100.5t-114.5 30.5q-12 0 -32 -1.5t-21 -1.5q-3 0 -5.5 1t-3.5 3t-2 3.5t-1.5 5t-1.5 5.5q-2 6 -2 9q0 11 21 17q78 22 114.5 54t36.5 85 q0 40 -24 68.5t-61 28.5q-33 0 -59.5 -12.5t-39 -25t-13.5 -12.5q-6 0 -12 5.5t-6 11.5q0 7 19.5 23.5t54.5 32t68 15.5q61 0 97.5 -33.5t36.5 -89.5q0 -82 -91 -122q-48 -20 -48 -23q0 -2 42 -5q147 -12 147 -161q0 -80 -60.5 -133t-138.5 -53q-42 0 -92.5 15t-50.5 34z " />
+<glyph unicode="4" d="M40 8q0 32 84 130l133 160q85 96 96 96q13 0 13 -26v-296q0 -13 2 -15.5t13 -2.5h58q7 0 7 -10v-34q0 -8 -1.5 -9t-10.5 -1h-52q-11 0 -13 -2t-1 -12q9 -183 9 -185q0 -10 -16 -11l-45 -4q-11 0 -11 13v186q0 11 -2.5 13t-13.5 2h-231q-18 0 -18 8zM93 60q0 -6 25 -6h168 q14 0 16.5 3t2.5 17v216q0 26 -3 26q-1 0 -18 -21l-174 -210q-17 -21 -17 -25z" />
+<glyph unicode="5" d="M100 158q0 6 8.5 44.5l20.5 94t18 88.5q1 6 15 6q2 0 41 -2.5t88.5 -4.5t77.5 -2q22 0 24 5q8 24 10 24h4q13 0 13 -6q-3 -45 -4 -69q-1 -17 -37 -17q-35 0 -64.5 1.5t-66 4.5t-65.5 4q-19 0 -21 -10q-20 -100 -20 -107q0 -4 1.5 -5.5t5.5 -1.5h4q107 -10 167 -52 t60 -134q0 -60 -36 -109.5t-85 -76t-88.5 -40.5t-57.5 -14q-8 0 -8 18q0 13 8 14q22 4 46 13t51.5 25t49 37t35.5 51.5t14 65.5q0 73 -54.5 108t-139.5 35q-15 0 -15 12z" />
+<glyph unicode="6" d="M48 231q0 65 21.5 126.5t55.5 106t73 82t75 61t61 36t33 12.5q5 0 10 -7t5 -13q0 -4 -5 -6q-49 -20 -91.5 -54.5t-70.5 -73.5t-44.5 -69t-26.5 -57q-9 -25 -9 -27q3 -3 4.5 -3t10.5 2t12 3q43 8 91 8q79 0 133.5 -47.5t54.5 -121.5q0 -89 -56.5 -141.5t-140.5 -52.5 q-88 0 -142 61.5t-54 174.5zM115 201q0 -69 36.5 -122t106.5 -53q49 0 82 44t33 98q0 75 -40 121.5t-116 46.5q-30 0 -66 -6q-9 -2 -13 -3t-7 -6.5t-3.5 -7.5t-3.5 -15q-9 -43 -9 -97z" />
+<glyph unicode="7" d="M84 278q0 4 1.5 19.5t5 45.5t5.5 56q1 13 4.5 15.5t11.5 2.5q13 0 13 -20q0 -4 164 -4h166q17 0 17 -9q0 -2 -4 -10l-129 -246.5l-128 -248.5t-52 -95q-13 0 -24.5 9t-11.5 19q0 1 288 502q9 16 9 17q0 4 -18 4h-199q-84 0 -85 -9l-9 -51q-1 -6 -13 -5t-12 8z" />
+<glyph unicode="8" d="M71 154q0 37 11.5 66.5t32.5 49t35 28.5t34 19q5 3 9.5 4.5t6.5 2.5h2l-2 2q-3 1 -8 4t-11 7q-101 69 -101 158q0 68 49.5 115.5t120.5 47.5q67 0 112.5 -42t45.5 -108q0 -16 -2 -30t-7 -26.5t-9.5 -22.5t-13.5 -20t-14 -16.5t-15.5 -15t-14.5 -12t-15 -11t-12 -8.5 q-9 -7 -9 -8t9 -6q1 -1 17 -9.5t23 -14l22.5 -17t24 -24t19 -29.5t15 -38.5t4.5 -45.5q0 -72 -50 -116t-132 -44q-73 0 -125 45t-52 115zM124 164q0 -63 35 -102.5t93 -39.5q50 0 81.5 39t31.5 92q0 40 -19.5 70.5t-40 45t-59.5 35.5q-22 12 -27 12q-3 0 -33 -21 q-62 -46 -62 -131zM138 507q0 -64 69 -118q34 -26 54 -35l16 -7q3 0 14 10q26 23 49 65t23 78q0 64 -32 100t-83 36q-50 0 -80 -37.5t-30 -91.5z" />
+<glyph unicode="9" d="M60 204q0 89 55 141.5t138 52.5q87 0 143.5 -62t56.5 -174q0 -70 -26.5 -130t-68 -99.5t-88.5 -70.5t-91 -47.5t-71.5 -24.5t-34.5 -8q-4 0 -7 9t-3 16q0 2 24 9.5t62 24t79 42t80 71t59 102.5l3 7l3 10.5t0 3.5q-2 0 -20 -12q-54 -33 -125 -33q-77 0 -122.5 47.5 t-45.5 124.5zM125 214q0 -60 35 -105.5t95 -45.5q96 0 126 52q6 11 6 57q0 50 -13 92.5t-43.5 73t-74.5 30.5q-64 0 -97.5 -43.5t-33.5 -110.5z" />
+<glyph unicode=":" horiz-adv-x="221" d="M60 38q0 16 16 37.5t28 21.5q16 0 36.5 -15t20.5 -32q0 -21 -16 -39.5t-26 -18.5q-20 0 -39.5 17t-19.5 29zM60 313q0 16 16 37.5t28 21.5q16 0 36.5 -15t20.5 -32q0 -21 -16 -39.5t-26 -18.5q-20 0 -39.5 17t-19.5 29z" />
+<glyph unicode=";" horiz-adv-x="223" d="M50 -139l18 16q17 16 34.5 41t17.5 48q0 16 -10 30.5t-22.5 22.5t-22.5 15.5t-10 12.5q0 14 19.5 27.5t27.5 13.5q14 0 42.5 -23t28.5 -40q0 -38 -26.5 -83t-53 -71.5t-32.5 -26.5q-4 0 -7.5 5.5t-3.5 11.5zM61 313q0 16 16 37.5t28 21.5q16 0 36.5 -15t20.5 -32 q0 -21 -16 -39.5t-26 -18.5q-20 0 -39.5 17t-19.5 29z" />
+<glyph unicode="&#x3c;" horiz-adv-x="527" d="M41 211q0 6 0.5 8.5t4 5.5t10.5 6l361 132q48 18 51 18q19 0 19 -25q0 -10 -16 -16l-315 -111q-42 -15 -42 -21q0 -3 42 -18l320 -112q11 -4 11 -13q0 -8 -6 -16t-18 -8q-3 0 -408 147q-10 4 -12 8t-2 15z" />
+<glyph unicode="=" horiz-adv-x="527" d="M31 134q0 8 0.5 11.5t4.5 6.5t13 3h431q8 0 11.5 -2.5t4 -6t0.5 -12.5q0 -14 -3 -19t-18 -5h-427q-9 0 -12.5 3t-4 6.5t-0.5 14.5zM31 290q0 8 0.5 11.5t4.5 6t13 2.5h431q8 0 11.5 -2.5t4 -6t0.5 -12.5q0 -14 -3 -18.5t-18 -4.5h-427q-9 0 -12.5 3t-4 6.5t-0.5 14.5z " />
+<glyph unicode="&#x3e;" horiz-adv-x="527" d="M41 65q0 10 10 13l321 112q42 15 42 18q0 6 -42 21l-316 111q-15 6 -15 16q0 25 18 25q3 0 51 -18l361 -132q16 -6 16 -20q0 -11 -2.5 -15t-12.5 -8q-405 -147 -408 -147q-12 0 -17.5 8t-5.5 16z" />
+<glyph unicode="?" horiz-adv-x="364" d="M60 605v45q0 17 9 17q6 0 10 -12t9 -13q24 -4 37.5 -6.5t42.5 -10.5t48 -17.5t43.5 -27t39 -39t25 -53t10.5 -69.5q0 -79 -29 -126t-106 -48q-15 0 -20 -4t-6 -13q-1 -16 -4 -45t-4 -45q0 -9 -12 -9q-10 0 -13 4.5t-3 17.5q0 119 2 147q1 12 7 15t21 3h57q87 0 87 88 q0 72 -57.5 122t-170.5 64q-2 0 -5.5 0.5t-5 1t-4 1t-3.5 1.5l-2.5 2.5t-2 3.5t-0.5 5zM96 38q0 16 16 37.5t28 21.5q16 0 36.5 -15t20.5 -32q0 -21 -16 -39.5t-26 -18.5q-20 0 -39.5 17t-19.5 29z" />
+<glyph unicode="@" horiz-adv-x="795" d="M50 187q0 110 61 203.5t157 145.5t200 52q56 0 103.5 -13t87.5 -41t63 -76.5t23 -113.5q0 -69 -31.5 -126t-81.5 -91.5t-108 -53.5t-115 -19q-35 0 -35 22l6 47q-7 -8 -18.5 -19t-43 -29.5t-56.5 -18.5q-28 0 -43 24t-15 59q0 36 31.5 95t92 110t126.5 51q8 0 20 -3 l11 -3q1 0 14 15q13 16 28 16q25 0 25 -13q0 -8 -3 -14q-110 -237 -110 -278q0 -11 0.5 -16t5.5 -10t14 -5q42 0 93 25t95 69q68 68 68 159q0 112 -66.5 167.5t-177.5 55.5q-157 0 -272 -108.5t-115 -270.5q0 -119 80.5 -192t191.5 -73q97 0 169.5 32.5t140.5 95.5q8 8 13 8 q6 0 10 -5.5t4 -8.5q0 -7 -4 -11q-62 -67 -150 -103.5t-186 -36.5q-125 0 -214 80t-89 220zM271 147q0 -18 11.5 -32t30.5 -14q31 0 67.5 57.5t58 116t21.5 75.5q0 11 -10 17.5t-22 6.5q-42 0 -99.5 -75.5t-57.5 -151.5z" />
+<glyph unicode="A" horiz-adv-x="698" d="M30 15q0 9 3 10.5t15 1.5h28q3 0 17.5 30.5t34.5 77.5l39 92l35.5 84.5l19.5 46.5l106 246q4 9 17 25.5t19 30.5q12 27 19 27t9 -7l120 -337l19 -53l21.5 -60.5l21 -58.5l21 -56.5t17.5 -44t15 -32.5t8 -11h32q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5 t-50.5 1.5q-16 0 -58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h54q1 0 1 3q0 30 -70 226q-6 17 -10 18q-3 1 -10 1h-201q-5 0 -8 -0.5t-5 -1t-4 -3t-2 -3t-2 -5t-2 -5.5q-81 -206 -81 -227q0 -3 1 -3h78q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3 q-11 0 -43.5 1.5t-48.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5zM231 305q0 -6 16 -6h179q13 0 13 5q0 1 -4 13l-83 243q-6 19 -8 19t-10 -19l-98 -240q-5 -12 -5 -15z" />
+<glyph unicode="B" horiz-adv-x="592" d="M40 649q0 7 2.5 10.5t6 4t11.5 0.5q6 0 51 -1t62 -1q19 0 60.5 1.5t62.5 1.5q99 0 160.5 -38t61.5 -123q0 -101 -150 -156l-17 -7q0 -1 11 -2.5t28 -5t38 -9.5t42 -18t38 -29.5t28 -45t11 -62.5q0 -171 -280 -171q-27 0 -60.5 1t-35.5 1q-18 0 -61 -1.5t-45 -1.5 q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h53q5 0 5 42v323q0 242 -10 242l-57 -2q-20 0 -20 17zM209 315q0 -288 9 -288h61q180 0 180 149q0 111 -87 140q-31 10 -118 10h-34q-11 0 -11 -11zM209 358q0 -6 3 -8t13 -2h57q10 0 20.5 -0.5t12.5 -0.5q11 0 20 3 q41 12 70 46.5t29 91.5q0 73 -49.5 114.5t-127.5 41.5q-29 0 -43 -4q-5 -1 -5 -234v-48z" />
+<glyph unicode="C" horiz-adv-x="731" d="M45 335q0 154 101.5 249.5t255.5 95.5q19 0 37.5 -2t34.5 -5.5t29.5 -8t27 -10.5l23 -10.5t19.5 -11l15 -10l12.5 -8.5t8.5 -6q5 -4 6.5 -5t5 -2t4.5 1.5t1 8.5v27q0 9 2 11t13 2q12 0 16 -2t4 -11q0 -5 -2 -84t-2 -109q0 -9 -3 -12.5t-13 -3.5q-13 0 -16 2.5t-3 9.5 q0 1 2 43t2 47t-11 18t-32.5 30t-48.5 33t-64.5 27t-74.5 11q-108 0 -178 -90t-70 -227q0 -127 81 -218.5t196 -91.5q51 0 99 15t71.5 30.5t24.5 22.5l13 113q1 10 5.5 13t16.5 1q12 -1 12 -13q0 -13 -16 -133q-1 -10 -36.5 -30.5t-97.5 -39t-120 -18.5q-71 0 -133 21.5 t-111.5 63t-78 110.5t-28.5 156z" />
+<glyph unicode="D" horiz-adv-x="758" d="M35 10q0 11 3 13t14 2h66q4 0 8.5 200t4.5 338q0 78 -2 78l-70 -2q-5 0 -7.5 0.5t-4 3t-1.5 8.5v7.5t1.5 5t4 3t7.5 0.5q1 0 11.5 -0.5t26.5 -0.5h31q41 0 114.5 6t89.5 6q166 0 273.5 -93t107.5 -250q0 -105 -49.5 -183.5t-126.5 -116.5t-169 -39q-32 0 -97 2t-98 2 q-16 0 -70 -2t-57 -2q-8 0 -9.5 2t-1.5 12zM213 86q0 -59 2 -60q6 -4 57 -4q69 0 124.5 14t90 34.5t60 53t37.5 59t19 63.5t8 56t1 46q0 73 -35.5 141.5t-106.5 115.5t-159 47q-67 0 -90 -6q-7 -2 -7 -146q-1 -138 -1 -414z" />
+<glyph unicode="E" horiz-adv-x="605" d="M40 15q0 9 2.5 10.5t14.5 1.5h61q7 0 7 75v96q0 31 -0.5 72t-1 78t-1 69.5t-1 53t-0.5 21.5q0 144 -11 144h-43q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l43 -1q43 -2 64 -2q28 0 128.5 1.5t120.5 1.5q47 0 56.5 1.5t10.5 10.5v1q1 12 13 12q11 0 14 -2t3 -9 q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 7 -272 7q-7 0 -7 -128q0 -42 2 -142q0 -10 1.5 -13t10.5 -3h167q55 0 55 16v50q0 9 17 9q14 0 14 -8q0 -1 -1 -29t-1 -49t1 -50t1 -33q0 -8 -13 -8q-18 0 -18 9v46q0 7 -2 10t-15 6.5t-38 3.5 h-163q-12 0 -14 -2t-2 -13q6 -276 12 -276q27 0 68 0.5l79.5 1t73.5 0.5t57 0.5t23 0.5q12 0 15 3t4 20q1 14 3 87q0 8 14 8q17 0 17 -9q0 -28 -1.5 -77t-1.5 -61q0 -11 -22 -11q-11 0 -182.5 1.5t-187.5 1.5t-63.5 -1.5t-58.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="F" horiz-adv-x="550" d="M40 651q0 14 12 14l43 -1q43 -2 64 -2q28 0 133.5 1.5t125.5 1.5q47 0 56.5 1.5t10.5 10.5v1q1 12 13 12q11 0 14 -2t3 -9q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 7 -282 7q-7 0 -7 -114q0 -110 2 -156q0 -12 2 -14t14 -2h173 q55 0 55 16v50q0 9 17 9q14 0 14 -8q0 -1 -1 -29t-1 -49t1 -55t1 -38q0 -8 -13 -8q-18 0 -18 9v56q0 7 -2 10t-15 6.5t-38 3.5h-173q-11 0 -13.5 -3t-2.5 -17q1 -49 1.5 -128.5t1.5 -114.5t4 -35h83q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5 t-54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h43q7 0 7 75v96q0 31 -0.5 72t-1 78t-1 69.5t-1 53t-0.5 21.5q0 144 -11 144h-43q-7 0 -10.5 0.5t-6 4t-2.5 10.5z" />
+<glyph unicode="G" horiz-adv-x="764" d="M45 335q0 160 102.5 251t260.5 91q117 0 201 -59q5 -4 6.5 -5t5 -2t4.5 1.5t1 8.5v25q0 9 2 11t13 2q12 0 15.5 -2t3.5 -11q0 -2 -1.5 -76.5t-1.5 -104.5q0 -9 -3 -12.5t-13 -3.5q-13 0 -16 2.5t-3 9.5q0 1 2 38t2 42t-9.5 17t-29.5 27.5t-45.5 30t-62.5 24.5t-75 10 q-109 0 -183 -91t-74 -226q0 -130 79 -225.5t198 -95.5q51 0 91 12t55.5 24.5t16.5 19.5q3 26 3 94q0 58 -10 58h-87q-8 0 -8 12q0 18 9 18q15 0 64.5 -1.5t67.5 -1.5q17 0 42.5 1.5t47.5 1.5q8 0 8 -14q0 -16 -8 -16h-31q-9 0 -11 -13t-2 -45q0 -12 -0.5 -42t-0.5 -47 q0 -10 -39 -31.5t-106.5 -40.5t-129.5 -19q-71 0 -133 21t-111.5 62.5t-78 110.5t-28.5 159z" />
+<glyph unicode="H" horiz-adv-x="791" d="M40 15q0 9 3 10.5t15 1.5h57q7 0 7 258v102q0 252 -6 252h-43q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 39.5 -1.5t50.5 -1.5q16 0 55.5 1.5t50.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-54q-7 0 -7 -134q0 -27 0.5 -73t0.5 -59t2 -15.5 t13 -2.5h365q11 0 13 2t2 13v122q0 147 -10 147h-57q-10 0 -12.5 2t-2.5 13t2.5 13t12.5 2q6 0 47 -1.5t58 -1.5q18 0 55 1.5t40 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-46q-2 0 -2 -242q0 -370 4 -370h55q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3 q-11 0 -44.5 1.5t-49.5 1.5t-58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h55q6 0 6 165v124q0 11 -1 13t-8 2h-374q-8 0 -10 -2.5t-2 -14.5q0 -287 11 -287h65q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -52.5 1.5t-57.5 1.5t-61 -1.5t-56 -1.5 q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="I" horiz-adv-x="333" d="M30 15q0 9 3 10.5t15 1.5h68q10 0 10 367v98q0 147 -10 147h-62q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 54.5 -1.5t65.5 -1.5q16 0 60 1.5t55 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-63q-11 0 -11 -158v-135q0 -319 10 -319h71 q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-66.5 -1.5t-61.5 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="J" horiz-adv-x="333" d="M-30 -188q0 23 28.5 43.5t38.5 20.5q7 0 24 -10.5t28 -10.5q26 0 33 32t7 108v497q0 147 -10 147h-65q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 56 -1.5t67 -1.5q16 0 53.5 1.5t48.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-50q-7 0 -7 -269 v-240q0 -84 -17 -153t-69 -125q-60 -64 -109 -64q-19 0 -36 7t-17 17z" />
+<glyph unicode="K" horiz-adv-x="650" d="M40 15q0 9 3 10.5t15 1.5h55q8 0 8 170v290q0 147 -8 147h-44q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 45.5 -1.5t56.5 -1.5q16 0 55.5 1.5t50.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-54q-14 0 -14 -158v-125q0 -8 0.5 -11.5t3.5 -6 t9 -2.5h22q11 0 57 56t107.5 139l64.5 87q9 13 9 16q0 5 -15 5h-37q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 37 -1.5t48 -1.5q16 0 42.5 1.5t37.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-49l-40 -48l-97.5 -116l-78.5 -94q-3 -3 -4 -5t-2 -3 t0 -2.5t1.5 -2.5t3 -4t4.5 -5l269 -310q15 -17 31 -17h14q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -47.5 1.5t-52.5 1.5t-52.5 -1.5t-47.5 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h30q17 0 17 4l-12 14l-217 257q-7 8 -22 8h-20q-9 0 -11.5 -1.5 t-2.5 -10.5q0 -271 11 -271h73q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-60 -1.5t-55 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="L" horiz-adv-x="592" d="M40 15q0 9 2.5 10.5t14.5 1.5h62q9 0 9 292v231q0 89 -7 89h-58q-10 0 -13 2.5t-3 12.5t3.5 12.5t16.5 2.5q6 0 49.5 -1.5t60.5 -1.5q16 0 61.5 1.5t56.5 1.5q12 0 14.5 -2t2.5 -13q0 -9 -3 -12t-15 -3h-70q-9 0 -9 -215v-277q0 -116 8 -116q227 0 293 6q13 1 17 4t6 19 l12 84q2 8 11 8q20 0 20 -10q0 -3 -4.5 -30l-9.5 -60t-7 -44q-1 -11 -22 -11q-11 0 -179.5 1.5t-184.5 1.5t-63.5 -1.5t-58.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="M" horiz-adv-x="895" d="M35 15q0 9 2.5 10.5t15.5 1.5h42q2 0 3.5 4.5t2 14.5l1 20t1 29.5t1.5 33.5q18 366 18 497q0 8 -4 10.5t-18 2.5h-46q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q6 0 51 -1.5t56 -1.5q13 0 35.5 1.5t23.5 1.5q15 0 20 -13l210 -524q9 -22 11 -22q3 0 11 22l196 511q6 16 10 19.5 t15 3.5h46q16 0 52.5 1.5t47.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-46q-7 0 -7 -80v-90q0 -153 4.5 -297.5t11.5 -144.5h54q8 0 10.5 -2t2.5 -11q0 -11 -2 -14t-9 -3q-11 0 -51 1.5t-56 1.5t-55.5 -1.5t-50.5 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5 t15.5 1.5h46q9 0 9 177q0 98 -2.5 257.5t-4.5 159.5t-36 -88l-85 -219.5l-81 -204.5q-10 -25 -27.5 -50t-28.5 -47q-9 -19 -15 -19q-5 0 -17 28l-233 575q-13 30 -16 30q-2 0 -4 -32q-8 -211 -8 -465q0 -102 5 -102h72q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3 q-11 0 -41.5 1.5t-46.5 1.5t-43.5 -1.5t-38.5 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="N" horiz-adv-x="814" d="M40 15q0 9 3 10.5t15 1.5h44q3 0 5 2.5t3 7.5t1.5 11t1 15.5t0.5 18.5t0.5 22.5t0.5 24.5l8 510h-68q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q6 0 53.5 -1.5t58.5 -1.5q13 0 33.5 1.5t21.5 1.5q10 0 20 -13l406 -499q16 -20 18 -20q4 0 4 28v42q0 49 -1 187t-1 189 q0 56 -1 56h-94q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q11 0 50.5 -1.5t55.5 -1.5t43.5 1.5t38.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-47q-4 0 -4 -59q0 -68 -3.5 -209.5l-6.5 -253t-3 -113.5q0 -22 -10 -22q-4 0 -18 16l-492 598q-14 18 -16 18q-3 0 -3 -20 q-1 -25 -1 -122q0 -54 -0.5 -175.5t-0.5 -167.5q0 -102 5 -102h86q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -50.5 1.5t-55.5 1.5t-43.5 -1.5t-38.5 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="O" horiz-adv-x="752" d="M45 318q0 158 99 257.5t241 99.5q145 0 233.5 -101t88.5 -250t-94.5 -242t-242.5 -93q-83 0 -155.5 36.5t-121 113.5t-48.5 179zM139 345q0 -140 63 -234t169 -94q79 0 136 48t82.5 118t25.5 150t-25 149.5t-81 117t-134 47.5q-103 0 -169.5 -91t-66.5 -211z" />
+<glyph unicode="P" horiz-adv-x="564" d="M40 649q0 7 2.5 10.5t6 4t11.5 0.5q6 0 51 -1t62 -1q16 0 68 2.5t63 2.5q108 0 174 -49.5t66 -146.5q0 -92 -64 -136.5t-175 -44.5q-19 0 -46.5 1.5t-40.5 1.5q-10 0 -10 -11v-66q0 -189 5 -189h73q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -55 1.5t-60 1.5 q-18 0 -61.5 -1.5t-45.5 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h51q9 0 9 447v52q0 108 -5 108l-63 -2q-20 0 -20 17zM209 325q0 -13 38 -13q94 0 152.5 41.5t58.5 132.5q0 71 -59.5 113t-151.5 42q-22 0 -33 -1q-5 0 -5 -54v-261z" />
+<glyph unicode="Q" horiz-adv-x="783" d="M45 340q0 155 101 245t246 90q149 0 247.5 -95t98.5 -240q0 -119 -67.5 -207t-176.5 -119q-15 -4 -62 -24l-87 -38t-40 -19q0 -2 25.5 -3t64.5 -4t64 -9q24 -5 64 -16.5t68.5 -18t47.5 -6.5q30 0 55 7.5t37.5 15t13.5 7.5q3 0 8.5 -6t5.5 -11q0 -7 -23 -25t-61 -34.5 t-72 -16.5q-59 0 -134.5 20.5t-135 41.5t-79.5 21q-15 0 -40 -9t-27 -9q-9 0 -22.5 16.5t-13.5 25.5q0 15 25 15q4 0 11 -0.5t11 -0.5q32 0 57 6q16 4 50.5 18.5t62.5 27.5t28 15l-14 2q-70 9 -128.5 31.5t-106.5 61.5t-75 101.5t-27 142.5zM132 356q0 -140 85 -237 q37 -42 113 -71.5t104 -29.5q15 0 46 18.5t68 53.5t64.5 99.5t27.5 142.5q0 123 -71 219t-187 96q-105 0 -177.5 -87t-72.5 -204z" />
+<glyph unicode="R" horiz-adv-x="641" d="M40 649q0 7 2.5 10.5t6 4t11.5 0.5q6 0 51 -1t62 -1q16 0 75 3t70 3q42 0 77 -7.5t68.5 -25t53 -52.5t19.5 -85q0 -32 -14.5 -61t-37.5 -49t-42.5 -32t-39.5 -21q-5 -3 -10.5 -4.5t-7.5 -2.5l-2 -1l2 -1q2 0 7 -1t11 -3q160 -48 167 -230q2 -44 4 -54.5t10 -10.5h46 q7 0 9.5 -3.5t2.5 -18.5q0 -8 -17 -8l-133 3q-5 0 -6.5 1t-1.5 7v58q0 43 -2 72t-12 64.5t-27.5 57t-51 36.5t-80.5 16q-10 0 -43.5 0.5t-48.5 0.5q-11 0 -11 -11q0 -62 3.5 -168.5t7.5 -106.5h61q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -51.5 1.5t-56.5 1.5 q-18 0 -57 -1.5t-41 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h45q5 0 5 129v133q0 345 -12 345l-55 -2q-20 0 -20 17zM207 345q0 -6 3 -8t13 -2q20 0 65 -0.5t63 -1.5q10 0 12 1q88 40 88 150q0 71 -55.5 114.5t-129.5 43.5q-18 0 -52 -2q-7 0 -7 -54v-241z" />
+<glyph unicode="S" horiz-adv-x="528" d="M55 488q0 81 65 135t149 54q73 0 135 -42q10 -8 16 -8t7 10l1 11q0 9 2 11.5t13 2.5q12 0 15.5 -2.5t3.5 -11.5l-2 -63q-3 -63 -3 -94q0 -9 -3 -12.5t-13 -3.5q-13 0 -16 2.5t-3 9.5q0 1 1.5 30t1.5 34q0 22 -51.5 60t-102.5 38q-57 0 -95 -37t-38 -92q0 -43 26.5 -73.5 t65.5 -46l85.5 -34t85.5 -37.5t65.5 -58t26.5 -93q0 -88 -67.5 -140.5t-156.5 -52.5q-51 0 -99 9.5t-73 20t-26 16.5l-3.5 48l-4.5 62t-2 34q0 14 12 14h5q15 0 16 -16l6 -92q1 -21 65.5 -42t112.5 -21q54 0 93.5 35t39.5 86q0 42 -26.5 72t-66 46.5l-85.5 36.5t-85.5 40 t-66 60t-26.5 94z" />
+<glyph unicode="T" horiz-adv-x="690" d="M20 544l4 22q3 21 7 52.5t6 53.5q1 10 3 12t13 2q13 0 13 -6v-11q0 -6 108 -6h357q108 0 109 11q1 12 13 12q11 0 14 -2t3 -9q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 8 -113 8h-116q-3 0 -5 -10t-3 -30.5t-1 -36t-0.5 -44 t-0.5 -37.5l-1 -29q0 -28 -1 -72.5t-2 -94.5t-1.5 -102t-0.5 -87q0 -65 2 -65h74q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-63 -1.5t-58 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h62q7 0 10.5 192.5t3.5 325.5q0 90 -7 90h-144 q-96 0 -97 -13l-7 -70q-1 -17 -13 -17q-20 0 -20 9z" />
+<glyph unicode="U" horiz-adv-x="755" d="M40 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 59.5 1.5t54.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-65q-6 0 -10 -166.5t-4 -239.5q0 -97 48 -145.5t153 -48.5q92 0 172 54q17 11 20 23q5 17 5 136v305q0 82 -7 82h-49q-8 0 -11 0.5t-6 4 t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 44.5 -1.5t55.5 -1.5t46 1.5t32 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-24q-3 0 -5 -17t-3 -51t-1.5 -69t-1.5 -88.5t-2 -91.5q-1 -57 -3 -128t-3 -113t-1 -51q0 -32 -21 -32q-10 0 -30 36.5t-32 36.5q-10 0 -46 -20 q-40 -23 -96.5 -40t-109.5 -17q-59 0 -100.5 14t-64 34t-35.5 54t-16 63.5t-3 72.5q0 11 0.5 157t0.5 191q0 59 -5 59h-37q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="V" horiz-adv-x="685" d="M10 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 67.5 1.5t62.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-71q-2 0 -2 -5q0 -19 12 -51q68 -199 159 -436q19 -48 22 -48q6 0 23 46l37 95.5l46.5 119l42.5 111t34 98.5t12 54q0 16 -9 16h-71h-5.5 t-4 0.5t-4 1.5t-2.5 2.5t-1.5 4t-0.5 6.5q0 11 2.5 13t12.5 2q6 0 47 -1.5t58 -1.5t46 1.5t32 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5t-19.5 -2.5t-9 -6t-7.5 -14.5l-231 -543q-3 -8 -27 -42q-6 -9 -12.5 -20.5t-10 -17t-8 -9.5t-10.5 -4q-5 0 -10 15l-17 51 t-27 69q0 1 -51.5 133.5l-103 261.5t-54.5 129h-31q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="W" horiz-adv-x="1008" d="M10 649q0 7 2.5 10.5t6 4t11.5 0.5q6 0 41 -1.5t52 -1.5q16 0 54.5 1.5t49.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-50q-10 0 -10 -9t27 -99l47.5 -155l50.5 -158t23 -71q12 -36 13 -36q2 0 16 36l143 365q5 13 5 18q0 4 -3.5 14t-5.5 17q-22 78 -27 78 h-60q-7 0 -10 0.5t-5 4t-2 10.5q0 11 3 13t14 2q6 0 50 -1.5t61 -1.5q16 0 62.5 1.5t57.5 1.5q10 0 12 -2.5t2 -15.5q0 -8 -3 -10t-14 -2h-64q-3 0 -3 -9q0 -27 18 -99l32.5 -116l34.5 -120.5l28.5 -98.5t14.5 -49l4 -14t3.5 -11.5l3 -9l2.5 -7.5t2 -5.5t2 -3.5t2 -1 q2 0 22 50l35.5 93.5l46 122l39 108t33.5 102t11 52.5q0 16 -9 16h-65q-7 0 -10 0.5t-5 4t-2 10.5q0 11 3 13t14 2q6 0 46 -1.5t57 -1.5q18 0 42 1.5t26 1.5q10 0 12 -2.5t2 -13.5q0 -9 -3 -11.5t-15 -2.5q-13 0 -19.5 -2.5t-9 -6t-7.5 -14.5l-221 -543q-4 -11 -8 -17.5 t-9.5 -13l-9.5 -11.5l-11 -17t-9 -14t-7 -10.5t-7 -7.5t-7 -2q-8 0 -14.5 14t-18 55.5t-19.5 65.5q0 1 -14 51l-37 132l-41 147q-7 25 -10 25t-12 -25l-142 -372q-4 -11 -8 -17.5t-9.5 -13l-9.5 -11.5l-11 -17t-9 -14t-7 -10.5t-7 -7.5t-7 -2q-8 0 -14.5 14t-18 55.5 t-19.5 65.5q0 1 -16.5 56.5l-39.5 131.5l-46.5 152.5l-40.5 130t-19 53.5h-35q-8 0 -11 0.5t-6 4t-3 10.5z" />
+<glyph unicode="X" horiz-adv-x="638" d="M10 12q0 6 0.5 9t3 4.5t4.5 1.5h8h37q2 0 6.5 4.5t12.5 16l14.5 20.5t19.5 28.5t21 30.5l42.5 59.5t56 72t45.5 57.5q7 9 0 20q0 2 -92 150t-97 148h-39h-5.5t-4 0.5t-4 1.5t-2.5 2.5t-1.5 4t-0.5 6.5q0 7 2 10.5t5 4t11 0.5q6 0 53 -1.5t64 -1.5q16 0 51 1.5t46 1.5 q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-41q-11 0 -12 -2t4 -13q27 -65 121 -227q2 -2 3.5 -4.5t2.5 -3.5l1 -2q3 0 89 133q63 94 63 115q0 4 -3 4h-56q-13 0 -15.5 1.5t-2.5 10.5q0 13 2 15.5t12 2.5q11 0 36.5 -1.5t41.5 -1.5q17 0 43.5 1.5t32.5 1.5 q11 0 13.5 -2t2.5 -13t-3 -13t-13 -2h-26q-4 0 -46 -60q-33 -48 -88.5 -121.5t-63.5 -85.5q-4 -6 -4 -7t4 -7q205 -326 214 -326h35q6 0 8 -0.5t5 -1.5t4 -4t1 -9q0 -7 -2 -10.5t-5 -4t-11 -0.5q-6 0 -45.5 1.5t-56.5 1.5q-16 0 -60.5 -1.5t-55.5 -1.5q-10 0 -12 2.5 t-2 15.5q0 9 3 10.5t15 1.5h50q6 0 8.5 0.5t3.5 2t0 4t-4 8.5q-18 37 -145 250l-6 9q-2 1 -7 -7q-110 -155 -163 -242l-12 -21q0 -4 13 -4h54q12 0 15 -1.5t3 -10.5q0 -13 -2 -15.5t-12 -2.5q-11 0 -39 1.5t-44 1.5q-17 0 -47 -1.5t-36 -1.5q-10 0 -13 2t-3 13z" />
+<glyph unicode="Y" horiz-adv-x="597" d="M10 654q0 7 2 10.5t5 4t11 0.5q6 0 46 -1.5t57 -1.5q16 0 60 1.5t55 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-59q-11 0 -12 -2.5t4 -12.5q9 -23 37 -76.5l62.5 -117t42.5 -79.5q9 -17 11 -17q3 0 11 14l27 52l38 72.5l35.5 69.5t29 62t10.5 32q0 3 -2 3h-56 q-13 0 -15.5 1.5t-2.5 10.5q0 13 2 15.5t12 2.5q11 0 36.5 -1.5t41.5 -1.5q17 0 43.5 1.5t32.5 1.5q11 0 13.5 -2t2.5 -13q0 -6 -0.5 -9t-3 -4.5t-5 -1.5h-7.5h-36q-2 0 -37.5 -62l-81.5 -142l-65 -111q-3 -5 -3 -11q0 -286 10 -286h71q8 0 9.5 -2t1.5 -11q0 -11 -2 -14 t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-58.5 -1.5t-53.5 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h52q10 0 10 244q0 11 -7 23q-189 345 -199 345h-29q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="Z" horiz-adv-x="601" d="M40 15q0 5 61 98.5l163.5 249.5l165.5 254q5 7 5 9q0 3 -24 3h-302q-9 0 -10 -7q-1 -2 -1 -3q-2 -9 -5 -28.5t-5.5 -33.5t-2.5 -16q-4 -15 -9 -15q-24 0 -24 9q0 3 3.5 24.5l9 56t8.5 60.5q0 6 16 6q13 0 13 -6v-6q0 -3 1.5 -4.5t8 -2.5t18 -1.5t31.5 -0.5h381 q10 0 13.5 -3t3.5 -12q0 -6 -62.5 -98l-159 -238t-157.5 -250q-10 -16 -10 -18q0 -5 11 -5h337h5.5t4 0.5t2.5 1t1 3t1 4t0.5 6t0.5 8.5q1 14 3 87q0 8 18 8q17 0 17 -9q0 -28 -1.5 -77t-1.5 -61q0 -11 -22 -11q-57 0 -252 1.5t-246 1.5q-5 0 -6.5 2.5t-1.5 12.5z" />
+<glyph unicode="[" horiz-adv-x="296" d="M80 -126v801q0 9 2 12t10 3h151q9 0 11 -1.5t2 -7.5v-14q0 -9 -2 -11t-11 -2h-105q-9 0 -11 -2t-2 -10v-735q0 -12 13 -12h105q6 0 8.5 -0.5t3.5 -3t1 -9.5v-12q0 -6 -2 -8.5t-11 -2.5h-150q-9 0 -11 2.5t-2 12.5z" />
+<glyph unicode="\" horiz-adv-x="406" d="M10 693q0 12 21 12q14 0 19.5 -3.5t9.5 -14.5l317 -850q19 -55 19 -57q0 -13 -26 -13q-13 0 -18.5 4.5t-13.5 26.5l-314 851q-14 36 -14 44z" />
+<glyph unicode="]" horiz-adv-x="296" d="M40 -118q0 9 2 11t11 2h105q9 0 11 2t2 10v735v6t-1.5 3.5t-4 2t-7.5 0.5h-105q-6 0 -8.5 0.5t-3.5 3t-1 9.5v12q0 7 2 9t11 2h150q9 0 11 -2.5t2 -12.5v-801q0 -9 -2 -12t-10 -3h-151q-9 0 -11 1.5t-2 7.5v14z" />
+<glyph unicode="^" horiz-adv-x="402" d="M51 311l146 320q2 1 6 1t6 -1l146 -320q-15 -3 -26 -3q-9 0 -26 3l-102 232l-98 -232q-18 -3 -28 -3q-11 0 -24 3z" />
+<glyph unicode="_" horiz-adv-x="410" d="M25 -43q0 18 16 18h331q13 0 13 -17v-5q0 -23 -13 -23h-334q-13 0 -13 19v8z" />
+<glyph unicode="`" horiz-adv-x="400" d="M98 582q0 13 9.5 21.5t26.5 8.5q21 0 30 -25l49 -130q2 -4 2 -6t-4 -2h-16q-3 0 -8 6l-82 107q-7 10 -7 20z" />
+<glyph unicode="a" horiz-adv-x="419" d="M35 71q0 42 37 74t83.5 48t103.5 26q8 1 8 16q0 27 -0.5 42t-5 36.5t-13.5 32.5t-26 19.5t-42 8.5q-18 0 -31 -5q-20 -9 -25.5 -22t-6.5 -45q0 -16 -7 -21q-11 -8 -30.5 -18t-22.5 -10q-8 0 -8 15q0 57 49 94t103 37q72 0 101.5 -33.5t29.5 -97.5q0 -29 -3 -113t-3 -91 q0 -30 22 -30q2 0 19.5 12t18.5 12q3 0 8 -5.5t5 -9.5q0 -5 -65 -49q-15 -11 -26 -11q-10 0 -17.5 6t-11.5 14t-6.5 16t-3.5 14l-1 6q-1 0 -4 -2t-8 -5t-8 -5q-68 -41 -115 -41q-46 0 -72 23t-26 62zM105 99q0 -26 17.5 -47.5t47.5 -21.5q20 0 44 6t38.5 12.5t14.5 9.5v134 q0 11 -6 11q-14 0 -62 -15q-94 -30 -94 -89z" />
+<glyph unicode="b" horiz-adv-x="485" d="M5 639q0 21 5 21q20 2 55.5 6l60 7t26.5 3q6 0 6 -15q-3 -185 -3 -267q0 -38 1 -38t7.5 3t17.5 7.5t23.5 9t28.5 7.5t30 3q83 0 137.5 -57.5t54.5 -140.5q0 -92 -65 -146.5t-156 -54.5q-19 0 -47.5 9.5t-41.5 9.5q-11 0 -28 -9t-21 -9q-12 0 -12 13q0 1 1 36.5t2.5 82.5 t1.5 77q0 87 -4.5 264.5t-12.5 177.5q-2 0 -30.5 -3t-30.5 -3q-6 0 -6 6zM153 64q0 -50 84 -50q67 0 106.5 51t39.5 122q0 67 -47.5 118.5t-112.5 51.5q-16 0 -32.5 -5.5t-26 -11t-9.5 -8.5q0 -59 -1 -159.5t-1 -108.5z" />
+<glyph unicode="c" horiz-adv-x="412" d="M35 177q0 104 63 163t143 59q50 0 91.5 -29t41.5 -67q0 -13 -10 -20q-17 -13 -30 -13t-17 11q-2 5 -8.5 25.5t-10 27t-12 18.5t-21 16t-30.5 4q-60 0 -97.5 -53t-37.5 -117q0 -68 40.5 -118t113.5 -50q30 0 58.5 7.5t44.5 15t18 7.5q7 0 7 -8q0 -2 -6.5 -9t-20.5 -17 t-32 -18.5t-44.5 -15t-54.5 -6.5q-87 0 -138 51t-51 136z" />
+<glyph unicode="d" horiz-adv-x="499" d="M30 181q0 85 58.5 141.5t144.5 56.5q17 0 33.5 -2.5t28.5 -6.5t21 -8t14 -6l6 -3q6 0 6 18q0 48 -2 113.5t-4.5 112t-3.5 46.5t-32 -4.5t-35 -4.5t-5 2t1 13q2 12 8 13q24 3 56.5 7.5t52.5 7.5t22 3q7 0 8.5 -3.5t1.5 -19.5q0 -7 -1.5 -62.5t-3 -164.5t-1.5 -246 q0 -48 2 -120q1 -29 6 -39t17 -10q4 0 34 4q6 1 8.5 0t2.5 -8q0 -8 -0.5 -11t-3 -5t-9.5 -3l-115 -15q-6 0 -6 9q0 1 0.5 17.5t0.5 18.5q0 8 -2.5 9t-12.5 -5q-63 -39 -120 -39q-75 0 -125.5 47t-50.5 147zM103 188q0 -74 37.5 -119t114.5 -45q23 0 55 10.5t32 22.5v250 q0 12 -31 32t-66 20q-64 0 -103 -50.5t-39 -120.5z" />
+<glyph unicode="e" horiz-adv-x="424" d="M30 182q0 91 57 152.5t147 61.5q71 0 110 -46t39 -113q0 -5 -20.5 -8.5t-33.5 -3.5q-6 0 -113 2.5t-111 2.5q-5 0 -5 -36q0 -76 44.5 -120.5t104.5 -44.5q22 0 43.5 6.5t36 16.5t25.5 19.5t18 16.5l6 6q2 0 9 -6.5t7 -8.5q0 -5 -21 -26.5t-64 -44.5t-88 -23 q-91 0 -141 53.5t-50 143.5zM105 255q0 -8 12 -8q57 0 157 4q40 1 40 4q0 65 -29.5 92t-62.5 27q-46 0 -80 -38.5t-37 -80.5z" />
+<glyph unicode="f" horiz-adv-x="306" d="M35 12q0 13 12 13h40q4 0 4 63q0 20 -0.5 51t-0.5 33v60q0 114 -2 114h-33q-9 0 -11.5 2t-2.5 11t2 11t9 2h27q7 0 8.5 2t1.5 10q0 24 -1 47t-1 50q0 87 37 142t119 55q31 0 57 -19t26 -48q0 -16 -18 -31.5t-30 -15.5t-13 9q-3 23 -5 33t-7 24.5t-13.5 20t-21.5 5.5 q-59 0 -59 -164q0 -17 -2 -103q0 -12 3 -14.5t18 -2.5h116q7 0 7 -5t-2.5 -12.5t-5.5 -7.5h-115q-11 0 -14 -2t-3 -10v-166q0 -144 10 -144h66q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -49 1t-57 1q-12 0 -39.5 -1t-43.5 -1q-9 0 -11 2.5t-2 11.5z" />
+<glyph unicode="g" horiz-adv-x="425" d="M15 -173q0 32 25.5 58t54 38.5t57.5 18.5q23 5 23 6t-21 1h-57q-31 0 -40 19q-9 21 -9 48q0 28 18 32q33 8 76 20q38 11 38 12l-2 1q-3 1 -8 2t-9 2q-127 38 -127 161q0 64 53.5 106.5t122.5 42.5q22 0 42 -5.5t33.5 -12.5t24 -14.5t16.5 -12.5l6 -6q2 0 14.5 4.5t29.5 9 t31 5.5q2 0 5.5 -9.5t3.5 -18.5q0 -6 -3 -6q-11 -1 -35 -6t-24 -8q0 -1 3 -10.5t6.5 -26t3.5 -35.5q0 -60 -29 -95t-86 -57q-27 -11 -173 -52q-4 -1 -4 -9t5.5 -18.5t8.5 -11.5q17 -1 57.5 -2.5t64.5 -3t60.5 -6t59 -12.5t45 -20.5t33.5 -32.5t11 -47q0 -76 -61 -121 t-159 -45q-44 0 -85 12t-70.5 39.5t-29.5 65.5zM60 -166q0 -46 44 -72t95 -26q66 0 115 28t49 88q0 27 -29 46t-67 26.5t-78 7.5q-43 0 -86 -26.5t-43 -71.5zM98 250q0 -65 41 -110t68 -45q33 0 65.5 43t32.5 106q0 59 -27 92.5t-73 33.5q-43 0 -75 -35.5t-32 -84.5z" />
+<glyph unicode="h" horiz-adv-x="503" d="M10 640q0 16 5 17q138 18 146 18q5 0 5 -20q-8 -166 -8 -301v-10t2 -3t3 0.5t6 3.5q73 40 133 40q40 0 66.5 -16t38.5 -47t16 -63t4 -79v-143q0 -8 1.5 -10t9.5 -2h26q14 0 14 -13q0 -14 -14 -14q-8 0 -31.5 1t-39.5 1q-12 0 -41 -1t-45 -1q-9 0 -11 2.5t-2 11.5 q0 13 13 13h39q8 0 9 1.5t2 9.5q2 40 2 176q0 58 -24 95t-72 37q-47 0 -89 -21q-16 -8 -16 -15l1 -150q0 -89 1 -115q1 -10 1.5 -13t2 -4t7.5 -1h38q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -37.5 1t-45.5 1q-12 0 -41 -1t-45 -1q-9 0 -11 2.5t-2 11.5 q0 13 12 13h39q7 0 8.5 3t1.5 15q1 94 1 220q0 202 -8 356q-1 17 -6 17q-1 0 -30 -3.5t-31 -3.5q-4 0 -4 11z" />
+<glyph unicode="i" horiz-adv-x="249" d="M25 357q0 5 4 13q3 6 4.5 6.5t10.5 1.5q95 5 113 5q7 0 7 -6v-170q0 -113 3 -170q0 -5 0.5 -7t2.5 -3.5t7 -1.5h36q11 0 11 -13q0 -8 -1.5 -11t-9.5 -3q-9 0 -40 1t-44 1t-46.5 -1t-42.5 -1q-8 0 -9.5 2.5t-1.5 11.5q0 7 2.5 10t11.5 3h41q8 0 9.5 2t1.5 10q1 29 1 88 q0 117 -4 214q-1 11 -3 13.5t-10 2.5q-1 0 -24.5 -1t-25.5 -1q-4 0 -4 4zM77 553q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5z" />
+<glyph unicode="j" horiz-adv-x="292" d="M5 -255q0 16 14.5 34.5t26.5 18.5t31.5 -2t23.5 -2q19 0 28.5 9.5t9.5 23.5q0 9 -2.5 56.5t-4.5 145t-2 229.5q0 49 -2 76q-1 14 -9 14q-3 0 -34 -1.5t-36 -1.5q-3 0 -3 4q0 5 4 15q0 1 1 3q2 6 14 6q22 0 52.5 1.5l51 2.5t21.5 1q7 0 7 -23q0 -20 2.5 -136.5t2.5 -191.5 q0 -90 -10.5 -145t-43.5 -98q-13 -17 -57.5 -38t-66.5 -21q-19 0 -19 20zM80 580q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5z" />
+<glyph unicode="k" horiz-adv-x="449" d="M10 649v9q0 13 12 14q114 9 131 9q5 0 6 -2t1 -11l-11 -448q0 -8 2.5 -9.5t13.5 -1.5h22q4 0 7.5 1t7 4.5l5 5t5.5 6t4 5.5q53 70 79 113q3 5 3.5 6.5t1.5 4t-0.5 3.5t-5 1.5t-9.5 0.5h-20q-8 0 -10.5 3t-2.5 10q0 14 14 14q4 0 25 -1t33 -1q10 0 30 1t27 1q13 0 13 -14 q0 -13 -12 -13h-32q-11 0 -107 -123q-2 -2 -5 -6q-3 -3 -4 -4.5t0.5 -4t3.5 -4.5l5 -5l151 -175q11 -13 22 -13h10q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2t-29.5 1t-37.5 1t-38 -1t-30 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h11q17 0 5 15l-110 136q-2 2 -4 5 q-9 12 -18 12h-14q-8 0 -9.5 -3t-1.5 -13v-134q0 -13 1.5 -15.5t9.5 -2.5h23q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -30 1t-38 1q-19 0 -48 -1t-32 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h41q7 0 8.5 3t1.5 15v193q0 408 -9 408q-2 0 -26 -1.5t-30 -1.5 q-7 0 -8.5 1.5t-1.5 6.5z" />
+<glyph unicode="l" horiz-adv-x="257" d="M20 645q0 2 2 16q1 6 2 6.5t8 1.5q120 9 123 9q5 0 6 -2.5t1 -12.5q1 -160 3.5 -332t2.5 -267q0 -39 8 -39h39q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -35.5 1t-43.5 1q-12 0 -44.5 -1t-48.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h52q4 0 4 85 q0 395 -11 517q-7 18 -11 19q-3 0 -24.5 -2t-23.5 -2q-8 0 -8 3z" />
+<glyph unicode="m" horiz-adv-x="739" d="M25 350q0 6 4 18q2 6 3.5 6.5t11.5 1.5q16 1 41.5 2t41 2t17.5 1q11 0 13 -1.5t2 -9.5v-28q0 -14 2 -15l8 6q79 55 141 55q21 0 37.5 -5.5t25.5 -13t14.5 -14.5t8.5 -13l2 -5q3 0 13 7q25 16 61.5 29t63.5 13q69 0 96.5 -38t27.5 -108q0 -46 -1 -116t-1 -89q0 -10 10 -10 h32q14 0 14 -13q0 -14 -14 -14q-8 0 -34 1t-42 1q-12 0 -40.5 -1t-44.5 -1q-9 0 -11 2.5t-2 11.5q0 13 15 13h40q9 0 9 191q0 128 -89 128q-23 0 -47 -7t-37 -14t-13 -9t1.5 -9.5t3 -25t1.5 -43.5v-170q0 -41 3 -41h34q14 0 14 -13q0 -14 -14 -14q-8 0 -32.5 1t-40.5 1 q-12 0 -34.5 -1t-38.5 -1q-9 0 -12 3t-3 11q0 13 12 13h39q7 0 7 97v41t-0.5 36.5t-0.5 16.5q0 25 -1 40t-4.5 34t-11 29t-21.5 17.5t-34 7.5q-60 0 -100 -30q-11 -9 -11 -18v-228q0 -30 2.5 -36.5t16.5 -6.5h21q14 0 14 -13q0 -14 -14 -14q-9 0 -36 1t-40 1q-14 0 -45.5 -1 t-38.5 -1q-12 0 -12 13q0 14 11 14h39q10 0 13 32q2 20 2 106v109q0 78 -4 78q-1 0 -28.5 -1.5t-30.5 -1.5q-5 0 -5 3z" />
+<glyph unicode="n" horiz-adv-x="514" d="M25 350q0 4 5 16q2 6 3.5 6.5t11.5 1.5q5 0 47 3t58 4q9 1 11 -0.5t2 -7.5v-3v-42q0 -6 13 3l2 2l18 12t23 14.5t23 11.5t31 10t33 3q42 0 69.5 -13t41 -39.5t18 -55t4.5 -69.5q0 -33 -2.5 -100t-2.5 -70q0 -8 1.5 -10t9.5 -2h30q9 0 11.5 -2t2.5 -11q0 -6 -0.5 -8t-3 -4 t-8.5 -2q-8 0 -33.5 1t-41.5 1q-12 0 -40.5 -1t-44.5 -1q-10 0 -12 2t-2 11t2.5 11.5t10.5 2.5h37q7 0 8.5 1.5t2.5 9.5q4 48 4 176q0 130 -96 130q-33 0 -89 -28q-18 -9 -18 -23q0 -41 -0.5 -123.5t-0.5 -123.5q0 -9 0.5 -12.5t3 -5t9.5 -1.5h36q8 0 10.5 -3t2.5 -10 q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -36.5 1t-44.5 1q-12 0 -42 -1t-46 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h39q6 0 7.5 2.5t2.5 11.5v4q5 98 5 194q0 68 -2 99q-1 11 -2.5 12.5t-9.5 1.5q-1 0 -27 -2t-28 -2q-3 0 -3 4z" />
+<glyph unicode="o" horiz-adv-x="446" d="M30 183q0 90 57 151.5t148 61.5q80 0 130.5 -57.5t50.5 -141.5q0 -94 -53 -153t-144 -59q-80 0 -134.5 58t-54.5 140zM101 169q0 -62 31.5 -110t86.5 -48q36 0 61.5 17t38.5 46.5t18.5 61t5.5 68.5q0 66 -31 116t-89 50q-122 0 -122 -201z" />
+<glyph unicode="p" horiz-adv-x="512" d="M25 352q0 4 3.5 13t5.5 9q29 1 61.5 2.5t51 2.5t19.5 1q7 0 9 -2t2 -12v-24q0 -10 2 -10q1 0 19 14q50 37 108 37q83 0 127 -53t44 -136q0 -81 -57.5 -142t-151.5 -61q-31 0 -66 11l-7.5 2.5t-6.5 2.5t-5 1t-4 -1.5t-1 -4.5l3 -189q2 -67 6 -67h70q8 0 10.5 -3t2.5 -10 q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -49 1t-57 1q-12 0 -46.5 -1t-50.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h55q3 0 3 160v142q0 191 -7 287q-1 10 -3 12t-13 2q-3 0 -25.5 -1t-24.5 -1q-13 0 -13 5zM178 52q0 -17 30 -29.5t57 -12.5q66 0 103 55t37 122q0 72 -37 116.5 t-93 44.5q-36 0 -64 -13q-33 -17 -33 -33v-250z" />
+<glyph unicode="q" horiz-adv-x="490" d="M35 180q0 87 59.5 144t148.5 57q33 0 72 -13t45 -13q9 0 20 16.5t18 16.5q16 0 16 -13q-5 -149 -5 -298v-165q0 -163 3 -163h41q12 0 12 -15q0 -6 -0.5 -8.5t-3.5 -4t-9 -1.5h-27q-24 0 -48.5 -1t-42.5 -3l-32.5 -3.5t-23 -2.5t-9.5 -1q-9 0 -12 2.5t-3 9.5q0 16 13 17 q9 1 20 2t16 1t12 1.5t9 2t5.5 3t4 4t1.5 6t1 8.5v12l2 223q0 9 -4 9q-1 0 -15 -4q-65 -19 -110 -19q-68 0 -121 48t-53 145zM106 191q0 -66 39.5 -119t104.5 -53q29 0 59 5.5t30 16.5v250q0 30 -28 46.5t-76 16.5q-62 0 -95.5 -49t-33.5 -114z" />
+<glyph unicode="r" horiz-adv-x="329" d="M25 353q0 5 3 12q2 6 3.5 6.5t11.5 1.5q42 3 105 3q10 0 11 -0.5t1 -4.5v-5q0 -10 -0.5 -32t-0.5 -32q0 -18 1 -18t2.5 4t3 10.5t3.5 10.5q17 39 43 62t50 23q20 0 38.5 -16t18.5 -27q0 -9 -13 -25t-24 -16q-12 0 -31 15.5t-29 15.5q-57 0 -57 -204q0 -112 12 -112h63 q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -49 1t-57 1q-12 0 -41 -1t-45 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h43q9 0 9 137q0 189 -7 189q-1 0 -31.5 -1t-32.5 -1q-3 0 -3 4z" />
+<glyph unicode="s" horiz-adv-x="337" d="M35 50q0 11 11.5 24.5t18.5 13.5q3 0 5 -3.5t5.5 -10.5t8.5 -13q42 -50 93 -50q28 0 47 16.5t19 48.5t-23 51.5t-66 37.5q-2 1 -18 8t-19 8.5t-17 8t-17.5 10t-13.5 11t-13.5 14t-9 15t-7 18.5t-1.5 22q0 48 44 80.5t100 32.5q51 0 77.5 -22.5t26.5 -44.5q0 -7 -15 -13 t-25 -6q-7 0 -12.5 10t-10 22.5t-18.5 22.5t-36 10q-29 0 -51 -17t-22 -53q0 -15 5.5 -27t21 -22.5t24 -15t31.5 -15.5q33 -16 45.5 -22.5t36 -22.5t33 -33t9.5 -38q0 -53 -41.5 -85.5t-99.5 -32.5q-46 0 -86 19.5t-40 42.5z" />
+<glyph unicode="t" horiz-adv-x="289" d="M35 344q0 5 3 8l91 127q3 5 9 5q10 0 10 -10q0 -1 -1.5 -20.5t-3 -42t-1.5 -29.5t2 -8.5t9 -1.5h95q9 0 10.5 -2t-1.5 -16q-4 -16 -13 -16h-99q-3 0 -3 -46v-192q0 -20 2 -31t13 -21t33 -10q23 0 52 8l28 8q4 0 4 -16q0 -3 -22.5 -14t-53.5 -22t-50 -11q-39 0 -55.5 20.5 t-16.5 48.5q2 144 2 216q0 61 -12 61h-25q-6 0 -6 7z" />
+<glyph unicode="u" horiz-adv-x="510" d="M15 360q0 4 3 11q2 6 4 7t11 2q88 4 110 4q7 0 7 -6v-272q0 -67 111 -67q91 0 91 16v118q0 186 -8 186q-1 0 -25.5 -1t-26.5 -1q-4 0 -4 4q2 17 6 19q2 1 7 1q95 5 113 5q7 0 7 -6q-1 -239 -1 -301q0 -37 3.5 -48t15.5 -11q2 0 21 3t20 3q5 0 5 -10t-2 -12t-12 -4 q-102 -15 -104 -15q-10 0 -11 13q-3 38 -4 38l-26 -12q-25 -12 -64.5 -23.5t-72.5 -11.5q-34 0 -57 11t-33.5 31t-14.5 41t-4 50v157q0 77 -12 77q-1 0 -24 -0.5t-25 -0.5q-4 0 -4 5z" />
+<glyph unicode="v" horiz-adv-x="461" d="M25 368q0 6 0.5 8t3.5 4t9 2q8 0 29.5 -1t37.5 -1q13 0 45 1t40 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-30q-18 0 -18 -8q0 -2 17 -52.5l40.5 -115t36.5 -95.5q8 -18 12 -18q3 0 9 16q94 223 94 257q0 16 -10 16h-26q-8 0 -10.5 3t-2.5 10q0 14 14 14q3 0 24 -1t33 -1 t28 1t23 1t9 -2.5t2 -11.5q0 -13 -12 -13h-16q-7 0 -13 -10q-11 -19 -57.5 -132t-69.5 -161q-7 -14 -13 -22.5t-16 -20.5t-20 -27q-6 -7 -11 -7q-4 0 -7.5 4.5t-7 13t-6 16t-5.5 18t-4 14.5q-32 98 -109 299q-4 11 -7.5 13t-14.5 2h-9q-8 0 -10.5 3t-2.5 10z" />
+<glyph unicode="w" horiz-adv-x="697" d="M25 368q0 6 0.5 8t3.5 4t9 2q8 0 29.5 -1t37.5 -1q13 0 45 1t40 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-25q-18 0 -18 -8q0 -2 15.5 -52.5t37.5 -115t35 -95.5q7 -16 9 -16q4 0 13 23q68 172 80 206q7 18 7 27q0 6 -5 16q-8 15 -34 15h-10q-8 0 -10.5 3t-2.5 10 q0 6 0.5 8t3.5 4t9 2q11 0 33 -1t40 -1q13 0 35.5 1t34.5 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-21q-13 0 -13 -8q0 -2 14.5 -52.5t35 -115t32.5 -95.5q10 -23 12 -23t11 22q18 43 51 143.5t33 117.5q0 11 -12 11h-31q-8 0 -10.5 3t-2.5 10q0 14 14 14q3 0 24 -1t33 -1 q13 0 31 1t20 1q7 0 9 -2.5t2 -11.5q0 -13 -12 -13h-6q-9 0 -14 -10q-9 -18 -50.5 -130t-66.5 -163q-8 -17 -21.5 -34t-24.5 -36q-3 -7 -11 -7q-11 0 -30 66q-22 80 -69 224q-6 18 -8 18q-3 0 -9 -18q-67 -177 -84 -212q-8 -16 -22 -33t-26 -38q-4 -7 -12 -7q-12 0 -31 66 q-4 15 -21 63.5l-42 119.5l-41 116q-4 11 -7.5 13t-14.5 2h-11q-8 0 -10.5 3t-2.5 10z" />
+<glyph unicode="x" horiz-adv-x="468" d="M25 12q0 13 12 13q14 0 21 4.5t26 24.5l120 123q8 7 8 9.5t-5 9.5l-107 144q-8 11 -11.5 13t-14.5 2h-16q-8 0 -10.5 3t-2.5 10q0 6 0.5 8t3.5 4t9 2q8 0 35.5 -1t43.5 -1q13 0 31.5 1t26.5 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13q-20 0 -20 -6q0 -4 10 -18l63 -92 q9 -11 9.5 -11t11.5 11q64 71 85 98q6 10 6 11q0 7 -26 7h-13q-8 0 -10.5 3t-2.5 10q0 14 14 14q9 0 26.5 -1t27.5 -1q12 0 29 1t24 1q13 0 13 -14q0 -13 -12 -13q-7 0 -13.5 -3t-9.5 -5.5t-10.5 -10.5t-10.5 -10q-13 -12 -105 -104q-10 -10 -10 -12t10 -15 q78 -109 116 -157q13 -13 18 -13h12q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -30.5 1t-38.5 1q-13 0 -36.5 -1t-31.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h11q20 0 20 8q0 1 -21 33q-24 38 -65 93q-7 9 -9.5 9.5t-10.5 -8.5q-89 -105 -94 -113 q-10 -14 -10 -16q0 -6 18 -6h28q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -27.5 1t-35.5 1q-14 0 -32 -1t-24 -1q-8 0 -10.5 3t-2.5 11z" />
+<glyph unicode="y" horiz-adv-x="467" d="M25 368q0 6 0.5 8t3.5 4t9 2q8 0 33 -1t41 -1q13 0 46.5 1t41.5 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-19q-26 0 -26 -10q0 -12 31 -97.5t58 -151.5q16 -40 19 -40t17 40q82 231 82 252q0 7 -31 7h-23q-8 0 -10.5 3t-2.5 10q0 14 14 14q9 0 31.5 -1t32.5 -1q12 0 30 1 t25 1q13 0 13 -14q0 -13 -12 -13h-14q-10 0 -13 -10q-38 -105 -133 -342q-1 -3 -7 -19.5t-15.5 -46t-17.5 -51.5q-2 -4 -5.5 -15.5t-5 -14.5t-4.5 -11.5t-5 -12t-5.5 -11t-7 -12.5t-8 -12.5t-10.5 -14.5t-13 -16q-17 -22 -26 -27q-6 -4 -15 -8q-54 -26 -62 -26q-18 0 -18 20 q0 15 19 42q7 11 28 18l22.5 7.5t29.5 11t22 13.5t16 19q44 109 44 121q0 8 -28 77l-72.5 174l-55.5 132q-4 11 -7 13t-14 2h-11q-8 0 -10.5 3t-2.5 10z" />
+<glyph unicode="z" horiz-adv-x="413" d="M35 10q0 7 10 20l214 315q2 3 5 7t5 7t2 4q0 3 -14 3l-155 -5q-17 -1 -20.5 -3.5t-6.5 -15.5l-10 -40q-3 -12 -13 -12q-16 0 -16 6q0 2 9 80q1 9 3 11t11 2h281q23 0 23 -9q0 -1 -9 -15l-210 -310q-9 -13 -9 -18q0 -10 15 -10l174 4q10 0 12 1.5t4 11.5l7 58q1 9 3 10.5 t14 1.5q9 0 9 -6q0 -20 -5 -93q-1 -11 -3 -13t-13 -2h-295q-22 0 -22 10z" />
+<glyph unicode="{" horiz-adv-x="307" d="M40 274q0 6 5.5 9t14.5 4t18.5 7.5t18.5 18t14.5 38t5.5 65.5v80q0 36 0.5 53.5t3 42.5t8 36.5t15 26t24.5 20t36.5 10t50.5 4.5q8 0 10 -2t2 -11t-2.5 -11t-11.5 -2q-43 0 -63.5 -19t-20.5 -73v-149q0 -72 -9.5 -100t-48.5 -41q-15 -6 -15 -7t15 -7q39 -13 48.5 -41 t9.5 -100v-149q0 -54 20.5 -73t63.5 -19q6 0 8.5 -0.5t4 -3.5t1.5 -9q0 -9 -2 -11t-10 -2q-29 0 -50.5 4.5t-36.5 10t-24.5 20t-15 26t-8 36.5t-3 42.5t-0.5 53.5v80q0 39 -5.5 65.5t-14.5 38t-18.5 18t-18.5 7.5t-14.5 4t-5.5 9z" />
+<glyph unicode="|" horiz-adv-x="247" d="M100 -187v933q0 10 4 13t14 3h7q15 0 18.5 -2.5t3.5 -14.5v-932q0 -9 -0.5 -12.5t-3 -6.5t-8.5 -3h-21q-10 0 -12 3t-2 19z" />
+<glyph unicode="}" horiz-adv-x="307" d="M40 -128q0 9 3 11t11 2q43 0 63.5 19t20.5 73v149q0 72 9.5 100t48.5 41q15 6 15 7t-15 7q-39 13 -48.5 41t-9.5 100v149q0 54 -20.5 73t-63.5 19q-6 0 -8.5 0.5t-4 3.5t-1.5 9q0 9 2 11t10 2q29 0 50.5 -4.5t36.5 -10t24.5 -20t15 -26t8 -36.5t3 -42.5t0.5 -53.5v-80 q0 -39 5.5 -65.5t14.5 -38t18.5 -18t18.5 -7.5t14.5 -4t5.5 -9t-5.5 -9t-14.5 -4t-18.5 -7.5t-18.5 -18t-14.5 -38t-5.5 -65.5v-80q0 -36 -0.5 -53.5t-3 -42.5t-8 -36.5t-15 -26t-24.5 -20t-36.5 -10t-50.5 -4.5q-8 0 -10 2t-2 11z" />
+<glyph unicode="~" horiz-adv-x="793" d="M45 117q0 5 4 17q6 23 17 46t31.5 51.5t54.5 46.5t76 18q48 0 101.5 -22.5t93 -49.5t88 -49.5t86.5 -22.5q26 0 48.5 16t37 41.5t22 43t12.5 34.5q2 8 4.5 8.5t10.5 -1.5q11 -3 11 -7q0 -3 -1 -6q-7 -28 -19.5 -54.5t-33 -54.5t-54 -45t-73.5 -17q-50 0 -104.5 21.5 t-95 47.5t-89.5 47.5t-89 21.5q-27 0 -48 -14t-34 -36.5t-19.5 -40t-10.5 -35.5q-4 -14 -7 -14q-2 0 -10 2q-10 2 -10 7z" />
+<glyph unicode="&#xa1;" horiz-adv-x="261" d="M80 615q0 21 16 39.5t26 18.5q20 0 39.5 -17t19.5 -29q0 -16 -16 -37.5t-28 -21.5q-16 0 -36.5 15t-20.5 32zM92 13q0 3 4 63t10.5 175.5t11.5 231.5q0 10 14 10q13 0 13 -10q3 -95 7.5 -202t8 -175t3.5 -89q0 -25 -41 -25q-18 0 -24.5 4t-6.5 17z" />
+<glyph unicode="&#xa2;" horiz-adv-x="407" d="M30 177q0 96 54 153.5t128 66.5q7 1 8.5 3t2.5 8v3q1 15 2.5 32.5t2.5 28t1 15.5q0 6 2 6q20 0 20 -3l-7 -79v-6q0 -5 7 -6q3 -1 5 -1q45 -7 79 -34.5t34 -60.5q0 -13 -10 -20q-17 -13 -30 -13t-17 11q-2 7 -7 22.5t-8 23t-9.5 18t-15 16.5t-20.5 9q-2 1 -5 1 q-5 0 -7 -11l-26 -312q0 -10 6 -11q14 -3 29 -3q30 0 58.5 7.5t44.5 15t18 7.5q7 0 7 -8q0 -2 -6.5 -9t-20.5 -17t-32 -18.5t-44.5 -15t-54.5 -6.5h-4q-7 0 -8 -8q-10 -112 -11 -112q-18 0 -18 2q0 1 1 14.5t3.5 41.5t4.5 54q0 5 -1 7.5t-1.5 2.5t-5.5 1q-2 1 -4 1 q-68 12 -106.5 60.5t-38.5 122.5zM95 202q0 -49 22.5 -91.5t64.5 -62.5q6 -3 8 -3q3 0 3 7l25 308v6q0 5 -3 5q-4 0 -8 -1q-51 -11 -81.5 -60.5t-30.5 -107.5z" />
+<glyph unicode="&#xa3;" horiz-adv-x="510" d="M40 -56q0 10 9 19t30.5 22.5t28.5 18.5q10 7 11.5 9t2.5 10q4 70 4 105q0 50 -3 104q-1 12 -3 14t-13 2h-51q-6 0 -7.5 2t-1.5 11q0 11 8 11h50q11 0 13.5 1.5t2.5 7.5q0 1 -1.5 33.5t-3.5 84.5t-2 101q0 73 49.5 119t117.5 46q48 0 81.5 -21t33.5 -57q0 -17 -11.5 -29 t-28.5 -12q-16 0 -16 8q0 34 -15 61t-51 27q-31 0 -50.5 -14t-28 -43t-11 -55.5t-2.5 -69.5v-170q0 -13 3 -15.5t15 -2.5h121q6 0 7.5 -2t1.5 -10t-1.5 -10t-7.5 -2h-121q-12 0 -14.5 -2t-3.5 -14q-5 -105 -35 -190q-4 -9 -4 -12l1 1q2 1 4.5 2.5t5.5 2.5q36 17 76 17 q27 0 87.5 -8.5t81.5 -8.5q52 0 52 37q0 11 -21.5 29t-21.5 22q0 7 10.5 19.5t21.5 12.5q14 0 29.5 -16.5t15.5 -38.5q0 -43 -35 -76t-77 -33q-32 0 -130 7t-103 7q-7 0 -10.5 -5t-7.5 -15q-1 -3 -1 -4t-3 -8.5t-3.5 -10t-3.5 -9t-4.5 -9l-5 -8t-6.5 -7.5t-7 -5t-9 -4 t-11 -1q-28 0 -28 24z" />
+<glyph unicode="&#xa4;" horiz-adv-x="494" d="M25 8q0 10 17 27l61 62q-35 48 -35 107q0 60 34 105l-60 62q-17 17 -17 27t7.5 17t16.5 7q12 0 28 -16l62 -62q46 35 105 35t106 -35l62 62q16 16 27 16q10 0 17.5 -7.5t7.5 -16.5q0 -10 -17 -27l-62 -63q37 -50 37 -106q0 -55 -37 -104l62 -63q17 -17 17 -27t-8 -17.5 t-17 -7.5q-10 0 -27 17l-62 62q-47 -36 -106 -36t-105 35l-62 -61q-16 -16 -28 -16q-10 0 -17 7.5t-7 16.5zM119 202q0 -53 37 -89.5t88 -36.5t88.5 37.5t37.5 89.5t-37.5 90.5t-88.5 38.5q-52 0 -88.5 -38.5t-36.5 -91.5z" />
+<glyph unicode="&#xa5;" horiz-adv-x="597" d="M10 654q0 7 2 10.5t5 4t11 0.5q6 0 46 -1.5t57 -1.5q16 0 60 1.5t55 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-59q-11 0 -12 -2.5t4 -12.5q9 -23 37 -76.5l62.5 -117t42.5 -79.5q9 -17 11 -17q3 0 11 14l27 52l38 72.5l35.5 69.5t29 62t10.5 32q0 3 -2 3h-56 q-13 0 -15.5 1.5t-2.5 10.5q0 13 2 15.5t12 2.5q11 0 36.5 -1.5t41.5 -1.5q17 0 43.5 1.5t32.5 1.5q11 0 13.5 -2t2.5 -13q0 -6 -0.5 -9t-3 -4.5t-5 -1.5h-7.5h-36q-2 0 -27.5 -44.5l-66 -116l-63.5 -109.5h150q3 0 3 -12t-3 -12h-164l-13 -21q-3 -5 -3 -11v-66h180 q3 0 3 -12t-3 -12h-180q2 -196 10 -196h71q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-58.5 -1.5t-53.5 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h52q10 0 10 196h-176q-2 0 -2.5 12t2.5 12h176v24q0 11 -7 23l-28 51h-141q-2 0 -2.5 12 t2.5 12h128q-150 270 -158 270h-29q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#xa6;" horiz-adv-x="247" d="M100 -187v376q0 14 11 14h25q11 0 11 -14v-376q0 -9 -0.5 -12.5t-3 -6.5t-8.5 -3h-21q-10 0 -12 3t-2 19zM100 379v367q0 10 4 13t14 3h7q15 0 18.5 -2.5t3.5 -14.5v-366q0 -12 -2.5 -15.5t-11.5 -3.5h-18q-10 0 -12.5 3t-2.5 16z" />
+<glyph unicode="&#xa7;" horiz-adv-x="381" d="M40 310q0 67 69 118q7 5 -2 18q-44 68 -44 110q0 52 34 86.5t91 34.5q41 0 77.5 -11t36.5 -34q0 -27 -37 -27q-22 0 -54.5 15.5t-54.5 15.5q-58 0 -58 -42q0 -28 38 -84t83.5 -111.5t83.5 -130t38 -136.5q0 -43 -66 -94q-10 -9 -10 -12q0 -2 7 -14q42 -76 42 -114 q0 -56 -39 -90t-107 -34q-103 0 -103 44q0 10 8.5 16.5t19.5 6.5q7 0 43 -13q34 -12 72 -12q32 0 52 13t20 39q0 25 -37.5 80t-82.5 111t-82.5 127t-37.5 124zM78 357q0 -33 37 -102.5t69 -117t61 -85.5q7 -10 10 -10t14 10q33 31 33 50q0 21 -11 51t-25 56.5t-37.5 63 t-37.5 56l-36.5 50.5t-23.5 32t-3 4t-2.5 3.5t-2.5 0.5t-4 -1.5l-6 -4.5q-35 -27 -35 -56z" />
+<glyph unicode="&#xa8;" horiz-adv-x="400" d="M69 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM229 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5z" />
+<glyph unicode="&#xa9;" horiz-adv-x="843" d="M54 189q0 156 105.5 264t260.5 108t260.5 -107.5t105.5 -264.5q0 -156 -105.5 -264t-260.5 -108t-260.5 108t-105.5 264zM88 189q0 -142 96 -241t236 -99t236 99t96 241t-96 241t-236 99t-236 -99t-96 -241zM196 201q0 99 65 159.5t164 60.5q14 0 27 -1.5t23.5 -4 t21 -6.5t18 -7.5t15.5 -8t11.5 -7.5t9 -7t6.5 -4q10 -2 11 2v17q0 9 15 9q8 0 10 -1.5t2 -7.5q0 -3 -1 -53.5t-1 -69.5q0 -10 -10 -10q-18 0 -18 7q0 1 1.5 27t1.5 29q0 6 -18 23.5t-55 35.5t-75 18q-69 0 -114 -57.5t-45 -144.5q0 -81 52 -138.5t126 -57.5q27 0 51 5 t39.5 12.5t26.5 15t17 12.5t7 5t6.5 -9t5.5 -10q0 -5 -18 -18.5t-60 -28t-93 -14.5q-95 0 -160 59t-65 169z" />
+<glyph unicode="&#xaa;" horiz-adv-x="352" d="M35 407q0 49 55 78.5t132 42.5q6 1 6 12q0 27 -1.5 41.5t-7.5 32.5t-21 26.5t-39 8.5q-13 0 -24 -4q-16 -6 -20.5 -16.5t-5.5 -35.5q0 -13 -6 -17q-33 -21 -47 -21q-8 0 -8 12q0 46 41.5 75.5t87.5 29.5q60 0 85 -26.5t25 -77.5q0 -23 -2.5 -90t-2.5 -73q0 -24 18 -24 q2 0 16 9.5t15 9.5q2 0 6 -4.5t4 -8.5t-54 -43q-13 -9 -22 -9q-13 0 -21 12.5t-10 24.5l-3 13q-1 0 -3.5 -2t-6.5 -4.5l-7 -4.5q-56 -36 -96 -36q-39 0 -61 18.5t-22 50.5zM98 431q0 -21 14.5 -37.5t38.5 -16.5q16 0 35 4.5t30.5 10t11.5 7.5v104q0 9 -4 9q-11 0 -50 -12 q-76 -24 -76 -69z" />
+<glyph unicode="&#xab;" horiz-adv-x="408" d="M50 193q0 4 55 55l36 34.5l31 30.5l12 11q2 0 8 -5.5t6 -6.5q0 -4 -31 -58t-31 -61t31 -61t31 -58q0 -1 -6 -6.5t-8 -5.5l-12 11l-31 30.5l-36 34.5q-55 51 -55 55zM200 193q0 4 55 55l36 34.5l31 30.5l12 11q2 0 8 -5.5t6 -6.5q0 -4 -31 -58t-31 -61t31 -61t31 -58 q0 -1 -6 -6.5t-8 -5.5l-12 11l-31 30.5l-36 34.5q-55 51 -55 55z" />
+<glyph unicode="&#xac;" horiz-adv-x="527" d="M31 215q0 17 19 17h427q13 0 16.5 -3t3.5 -16v-158q0 -15 -16 -15q-12 0 -16.5 0.5t-8.5 5t-4 14.5v111q0 17 -26 17h-376q-13 0 -16 5.5t-3 21.5z" />
+<glyph unicode="&#xad;" horiz-adv-x="258" d="M25 201q0 12 6 25.5t12 14.5t91.5 4t91.5 3q2 0 2 -9q0 -33 -8 -33q-104 -8 -191 -8q-4 0 -4 3z" />
+<glyph unicode="&#xae;" horiz-adv-x="536" d="M25 470q0 104 70 175.5t173 71.5t173 -71.5t70 -175.5t-70 -175.5t-173 -71.5t-173 71.5t-70 175.5zM50 470q0 -94 63 -159t155 -65t155 65t63 159t-63 159t-155 65t-155 -65t-63 -159zM142 628q0 9 11 9q3 0 23.5 -0.5t27.5 -0.5t34.5 1.5t32.5 1.5q101 0 101 -80 q0 -49 -64 -78q77 -23 80 -107q1 -28 4 -28h20q8 0 8 -12q0 -6 -10 -6l-60 1q-7 0 -7 7v27q0 31 -3 50t-18 36.5t-43 20.5q-15 2 -52 2q-5 0 -5 -3q0 -99 4 -123h27q7 0 7 -7q0 -11 -7 -11q-5 0 -24 0.5t-26 0.5t-25 -0.5t-19 -0.5q-9 0 -9 11q0 7 11 7h19q2 16 2 58v60 q0 141 -5 155l-24 -1q-11 0 -11 10zM222 489q0 -2 5 -2q12 0 33.5 -0.5t29.5 -0.5q39 19 39 67q0 32 -24.5 51t-57.5 19q-4 0 -11.5 -0.5t-11.5 -0.5q-2 -8 -2 -23v-110z" />
+<glyph unicode="&#xaf;" horiz-adv-x="400" d="M98 518v23q0 6 1.5 7t7.5 1h187q6 0 7 -1t1 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8z" />
+<glyph unicode="&#xb0;" horiz-adv-x="256" d="M40 535q0 36 26 62t62 26t62 -26t26 -62t-26 -62t-62 -26t-62 26t-26 62zM71 535q0 -24 16.5 -40.5t40.5 -16.5t40.5 16.5t16.5 40.5t-16.5 40.5t-40.5 16.5t-40.5 -16.5t-16.5 -40.5z" />
+<glyph unicode="&#xb1;" horiz-adv-x="527" d="M31 90q0 11 0.5 15.5t4.5 8t13 3.5h429q11 0 14.5 -4t3.5 -16q0 -13 -3.5 -18.5t-17.5 -5.5h-427q-9 0 -13 3t-4 14zM31 324q0 22 18 22h181q11 0 11 10v9v130q0 15 16 15q18 0 23 -3t5 -14v-128v-8q0 -11 12 -11h183q16 0 16 -15q0 -12 -1 -17t-5.5 -9t-14.5 -4h-178 q-12 0 -12 -17v-132q0 -14 -16 -14q-17 0 -22.5 2.5t-5.5 11.5v132q0 10 -2.5 13.5t-13.5 3.5h-177q-12 0 -14.5 5t-2.5 18z" />
+<glyph unicode="&#xb2;" horiz-adv-x="360" d="M40 671q0 7 16.5 28t49 41.5t67.5 20.5q57 0 86.5 -37.5t29.5 -79.5q0 -102 -160 -219q-18 -14 -24 -25h185q3 10 7 52q0 6 10 5q11 0 11 -5q0 -2 -2.5 -20l-6 -41.5t-4.5 -34.5q-1 -6 -12 -6h-230q-13 0 -13 9q0 5 20 36.5t24 34.5q1 1 16.5 14t21.5 18.5l22 21t24.5 26 t20.5 27.5t18.5 31t11.5 32.5t5 35.5q0 33 -19.5 58t-54.5 25q-29 0 -53.5 -15.5t-38.5 -30.5t-15 -15q-4 0 -8.5 4.5t-4.5 8.5z" />
+<glyph unicode="&#xb3;" horiz-adv-x="360" d="M65 368q0 29 32 29q11 0 29 -7q5 -2 24.5 -13t29.5 -11q32 0 56 26t24 64q0 79 -74 79q-12 0 -41.5 -2t-31.5 -2q-13 0 -13 21q0 10 17 13q63 13 87.5 33t24.5 64q0 32 -17.5 49t-45.5 17q-23 0 -42 -8t-29 -16.5t-13 -8.5q-4 0 -8.5 4.5t-4.5 8.5q0 6 13.5 18t39.5 23.5 t53 11.5q48 0 79.5 -25.5t31.5 -63.5q0 -22 -9 -39t-26.5 -29.5t-32.5 -20t-38 -16.5q58 0 96.5 -25.5t38.5 -71.5q0 -55 -47 -91.5t-103 -36.5q-34 0 -67 6.5t-33 19.5z" />
+<glyph unicode="&#xb4;" horiz-adv-x="400" d="M185 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2z" />
+<glyph unicode="&#xb5;" horiz-adv-x="509" d="M25 -136q0 41 8.5 85t26 106t25.5 100q23 101 36 150.5t18 60t11 10.5q39 0 39 -17q0 -7 -9.5 -40.5t-22.5 -87.5t-19 -103q-3 -36 -3 -43q0 -47 29 -47q32 0 74 53.5t73 114t56 123.5q19 48 23 48q13 0 26.5 -4.5t13.5 -10.5q0 -2 -25 -133.5t-25 -158.5 q0 -11 7.5 -18.5t17.5 -7.5q16 0 28 17t20 33.5t13 16.5q8 0 8 -13q0 -32 -37 -73.5t-83 -41.5q-34 0 -34 64q0 24 8 79.5t8 57.5q0 8 -4 8l-8 -12q-7 -13 -21.5 -36l-27.5 -42q-1 -1 -13 -19.5t-16 -23.5l-16 -20.5t-20.5 -22l-21 -15.5t-25.5 -12.5t-27 -3.5 q-17 0 -28.5 17.5t-16 34.5t-5.5 17q-4 0 -12.5 -54t-8.5 -79q0 -19 12 -47.5t12 -29.5q0 -3 -2 -9t-9.5 -12t-18.5 -6q-14 0 -24 12t-10 35z" />
+<glyph unicode="&#xb6;" horiz-adv-x="492" d="M40 417q0 48 16 87.5t41 64.5t56.5 42.5t61.5 25t58 7.5q8 0 10 -3t2 -11v-468q0 -8 -5 -8q-23 0 -52 8t-62.5 28.5t-61 49t-46 75t-18.5 102.5zM280 -205q0 8 10 8h58q7 0 9 1.5t2 6.5v831q0 8 2.5 10t8.5 2h70q8 0 10 -2t2 -9v-14q0 -6 -2 -7.5t-10 -1.5h-46 q-5 0 -6.5 -1.5t-1.5 -8.5v-832q0 -6 -2 -7.5t-12 -1.5h-82q-10 0 -10 8v18z" />
+<glyph unicode="&#xb7;" horiz-adv-x="147" d="M25 333q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5z" />
+<glyph unicode="&#xb8;" horiz-adv-x="400" d="M117 -200q0 11 8 11l9 -3q8 -4 22 -8t29 -4q34 0 50 13.5t16 42.5q0 45 -55 45q-8 0 -16.5 -2.5t-14 -4.5t-6.5 -2q-8 0 -8 5t41 107h17l-24 -65q-2 -9 0 -9l5 2l14.5 2.5t16.5 1.5q40 0 62.5 -21t22.5 -47q0 -35 -29.5 -63.5t-76.5 -28.5q-23 0 -43.5 6.5t-30 12.5 t-9.5 9z" />
+<glyph unicode="&#xb9;" horiz-adv-x="360" d="M95 364q0 7 2.5 8.5t11.5 1.5h60q1 9 1 50v75q0 181 -2 217q-1 8 -5 8q-1 0 -29.5 -1.5t-30.5 -1.5q-8 0 -8 6v12q0 6 11 6q28 1 49.5 3l33 3t18.5 2.5t10 2t4 0.5q7 0 7 -14q0 -65 -0.5 -176.5t-0.5 -169.5q0 -21 1 -22h44q7 0 7 -10q0 -16 -8 -16q-1 0 -23.5 1t-47.5 1 q-27 0 -58 -1t-36 -1q-7 0 -9 3t-2 13z" />
+<glyph unicode="&#xba;" horiz-adv-x="384" d="M30 497q0 73 48 122.5t124 49.5q67 0 109.5 -46.5t42.5 -114.5q0 -76 -44 -123.5t-121 -47.5q-67 0 -113 47t-46 113zM94 486q0 -49 25.5 -87.5t69.5 -38.5q99 0 99 154q0 52 -24.5 92t-71.5 40q-98 0 -98 -160z" />
+<glyph unicode="&#xbb;" horiz-adv-x="408" d="M60 74q0 4 31 58t31 61t-31 61t-31 58q0 1 6 6.5t8 5.5l12 -11l31 -30.5l36 -34.5q55 -51 55 -55t-55 -55l-36 -34.5l-31 -30.5l-12 -11q-2 0 -8 5.5t-6 6.5zM210 74q0 4 31 58t31 61t-31 61t-31 58q0 1 6 6.5t8 5.5l12 -11l31 -30.5l36 -34.5q55 -51 55 -55t-55 -55 l-36 -34.5l-31 -30.5l-12 -11q-2 0 -8 5.5t-6 6.5z" />
+<glyph unicode="&#xbc;" horiz-adv-x="774" d="M449 138q0 20 11 39q44 77 149 190q7 8 27 22q6 5 13 12.5t10.5 10t7.5 2.5q13 0 13 -22v-212q0 -5 1 -6t6 -1h51q7 0 7 -10v-22q0 -10 -12 -10h-46q-6 0 -6 -6v-123q0 -8 -6 -8l-43 -4q-6 0 -6 8l3 125q0 8 -10 8h-153q-17 0 -17 7zM487 173h131q7 0 9 1.5t2 6.5v173 q-19 -19 -73 -86t-69 -95zM200 -8q0 1 4 9l408 657q7 10 23 10q17 0 17 -6q0 -2 -1 -4l-410 -659q-3 -5 -4 -6t-3.5 -3t-6 -2.5t-9.5 -0.5q-18 0 -18 5zM95 264q0 7 2.5 8.5t11.5 1.5h60q1 9 1 50v75q0 181 -2 217q-1 8 -5 8q-1 0 -29.5 -1.5t-30.5 -1.5q-8 0 -8 6v12 q0 6 11 6q28 1 49.5 3l33 3t18.5 2.5t10 2t4 0.5q7 0 7 -14q0 -65 -0.5 -176.5t-0.5 -169.5q0 -21 1 -22h44q7 0 7 -10q0 -16 -8 -16q-1 0 -23.5 1t-47.5 1q-27 0 -58 -1t-36 -1q-7 0 -9 3t-2 13z" />
+<glyph unicode="&#xbd;" horiz-adv-x="844" d="M524 321q0 7 16.5 28t49 41.5t67.5 20.5q57 0 86.5 -37.5t29.5 -79.5q0 -102 -160 -219q-18 -14 -24 -25h185q3 10 7 52q0 6 10 5q11 0 11 -5q0 -2 -2.5 -20l-6 -41.5t-4.5 -34.5q-1 -6 -12 -6h-230q-13 0 -13 9q0 5 20 36.5t24 34.5q1 1 16.5 14t21.5 18.5l22 21 t24.5 26t20.5 27.5t18.5 31t11.5 32.5t5 35.5q0 33 -19.5 58t-54.5 25q-29 0 -53.5 -15.5t-38.5 -30.5t-15 -15q-4 0 -8.5 4.5t-4.5 8.5zM200 -8q0 1 4 9l408 657q7 10 23 10q17 0 17 -6q0 -2 -1 -4l-410 -659q-3 -5 -4 -6t-3.5 -3t-6 -2.5t-9.5 -0.5q-18 0 -18 5zM95 264 q0 7 2.5 8.5t11.5 1.5h60q1 9 1 50v75q0 181 -2 217q-1 8 -5 8q-1 0 -29.5 -1.5t-30.5 -1.5q-8 0 -8 6v12q0 6 11 6q28 1 49.5 3l33 3t18.5 2.5t10 2t4 0.5q7 0 7 -14q0 -65 -0.5 -176.5t-0.5 -169.5q0 -21 1 -22h44q7 0 7 -10q0 -16 -8 -16q-1 0 -23.5 1t-47.5 1 q-27 0 -58 -1t-36 -1q-7 0 -9 3t-2 13z" />
+<glyph unicode="&#xbe;" horiz-adv-x="774" d="M449 138q0 20 11 39q44 77 149 190q7 8 27 22q6 5 13 12.5t10.5 10t7.5 2.5q13 0 13 -22v-212q0 -5 1 -6t6 -1h51q7 0 7 -10v-22q0 -10 -12 -10h-46q-6 0 -6 -6v-123q0 -8 -6 -8l-43 -4q-6 0 -6 8l3 125q0 8 -10 8h-153q-17 0 -17 7zM487 173h131q7 0 9 1.5t2 6.5v173 q-19 -19 -73 -86t-69 -95zM200 -8q0 1 4 9l408 657q7 10 23 10q17 0 17 -6q0 -2 -1 -4l-410 -659q-3 -5 -4 -6t-3.5 -3t-6 -2.5t-9.5 -0.5q-18 0 -18 5zM65 268q0 29 32 29q11 0 29 -7q5 -2 24.5 -13t29.5 -11q32 0 56 26t24 64q0 79 -74 79q-12 0 -41.5 -2t-31.5 -2 q-13 0 -13 21q0 10 17 13q63 13 87.5 33t24.5 64q0 32 -17.5 49t-45.5 17q-23 0 -42 -8t-29 -16.5t-13 -8.5q-4 0 -8.5 4.5t-4.5 8.5q0 6 13.5 18t39.5 23.5t53 11.5q48 0 79.5 -25.5t31.5 -63.5q0 -22 -9 -39t-26.5 -29.5t-32.5 -20t-38 -16.5q58 0 96.5 -25.5t38.5 -71.5 q0 -55 -47 -91.5t-103 -36.5q-34 0 -67 6.5t-33 19.5z" />
+<glyph unicode="&#xbf;" horiz-adv-x="364" d="M30 240q0 79 29 126t106 48q15 0 20 4t6 13q1 16 4 45t4 45q0 9 12 9q10 0 13 -4.5t3 -17.5q0 -119 -2 -147q-1 -12 -7 -15t-21 -3h-57q-87 0 -87 -88q0 -72 57.5 -122t170.5 -64q2 0 5.5 -0.5t5 -1t4 -1t3.5 -1.5l2.5 -2.5t2 -3.5t0.5 -5v-45q0 -17 -9 -17q-6 0 -10 12 t-9 13q-24 4 -37.5 6.5t-42.5 10.5t-48 17.5t-43.5 27t-39 39t-25 53t-10.5 69.5zM167 609q0 21 16 39.5t26 18.5q20 0 39.5 -17t19.5 -29q0 -16 -16 -37.5t-28 -21.5q-16 0 -36.5 15t-20.5 32z" />
+<glyph unicode="&#xc0;" horiz-adv-x="698" d="M262 822q0 25 30 25q18 0 34 -25l53 -85q2 -4 2 -6t-4 -2h-21l-8 6l-72 60q-14 11 -14 27zM30 15q0 9 3 10.5t15 1.5h28q3 0 17.5 30.5t34.5 77.5l39 92l35.5 84.5l19.5 46.5l106 246q4 9 17 25.5t19 30.5q12 27 19 27t9 -7l120 -337l19 -53l21.5 -60.5l21 -58.5 l21 -56.5t17.5 -44t15 -32.5t8 -11h32q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5t-50.5 1.5q-16 0 -58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h54q1 0 1 3q0 30 -70 226q-6 17 -10 18q-3 1 -10 1h-201q-5 0 -8 -0.5t-5 -1t-4 -3t-2 -3t-2 -5 t-2 -5.5q-81 -206 -81 -227q0 -3 1 -3h78q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -43.5 1.5t-48.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5zM231 305q0 -6 16 -6h179q13 0 13 5q0 1 -4 13l-83 243q-6 19 -8 19t-10 -19l-98 -240q-5 -12 -5 -15z" />
+<glyph unicode="&#xc1;" horiz-adv-x="698" d="M361 731q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2zM30 15q0 9 3 10.5t15 1.5h28q3 0 17.5 30.5t34.5 77.5l39 92l35.5 84.5l19.5 46.5l106 246q4 9 17 25.5t19 30.5q12 27 19 27t9 -7l120 -337l19 -53l21.5 -60.5l21 -58.5 l21 -56.5t17.5 -44t15 -32.5t8 -11h32q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5t-50.5 1.5q-16 0 -58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h54q1 0 1 3q0 30 -70 226q-6 17 -10 18q-3 1 -10 1h-201q-5 0 -8 -0.5t-5 -1t-4 -3t-2 -3t-2 -5 t-2 -5.5q-81 -206 -81 -227q0 -3 1 -3h78q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -43.5 1.5t-48.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5zM231 305q0 -6 16 -6h179q13 0 13 5q0 1 -4 13l-83 243q-6 19 -8 19t-10 -19l-98 -240q-5 -12 -5 -15z" />
+<glyph unicode="&#xc2;" horiz-adv-x="698" d="M260 731l4 6l79 89q12 13 16 13h24q4 0 16 -13l79 -89q4 -4 4 -6t-6 -2h-9q-1 0 -11 6l-81 45q-4 2 -8 0l-81 -45q-10 -6 -11 -6h-9q-6 0 -6 2zM30 15q0 9 3 10.5t15 1.5h28q3 0 17.5 30.5t34.5 77.5l39 92l35.5 84.5l19.5 46.5l106 246q4 9 17 25.5t19 30.5q12 27 19 27 t9 -7l120 -337l19 -53l21.5 -60.5l21 -58.5l21 -56.5t17.5 -44t15 -32.5t8 -11h32q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5t-50.5 1.5q-16 0 -58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h54q1 0 1 3q0 30 -70 226q-6 17 -10 18q-3 1 -10 1 h-201q-5 0 -8 -0.5t-5 -1t-4 -3t-2 -3t-2 -5t-2 -5.5q-81 -206 -81 -227q0 -3 1 -3h78q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -43.5 1.5t-48.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5zM231 305q0 -6 16 -6h179q13 0 13 5q0 1 -4 13l-83 243q-6 19 -8 19 t-10 -19l-98 -240q-5 -12 -5 -15z" />
+<glyph unicode="&#xc3;" horiz-adv-x="698" d="M266 748q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM30 15q0 9 3 10.5t15 1.5h28q3 0 17.5 30.5t34.5 77.5l39 92l35.5 84.5l19.5 46.5 l106 246q4 9 17 25.5t19 30.5q12 27 19 27t9 -7l120 -337l19 -53l21.5 -60.5l21 -58.5l21 -56.5t17.5 -44t15 -32.5t8 -11h32q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5t-50.5 1.5q-16 0 -58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h54 q1 0 1 3q0 30 -70 226q-6 17 -10 18q-3 1 -10 1h-201q-5 0 -8 -0.5t-5 -1t-4 -3t-2 -3t-2 -5t-2 -5.5q-81 -206 -81 -227q0 -3 1 -3h78q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -43.5 1.5t-48.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5zM231 305q0 -6 16 -6h179 q13 0 13 5q0 1 -4 13l-83 243q-6 19 -8 19t-10 -19l-98 -240q-5 -12 -5 -15z" />
+<glyph unicode="&#xc4;" horiz-adv-x="698" d="M240 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM400 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM30 15q0 9 3 10.5t15 1.5h28q3 0 17.5 30.5t34.5 77.5l39 92 l35.5 84.5l19.5 46.5l106 246q4 9 17 25.5t19 30.5q12 27 19 27t9 -7l120 -337l19 -53l21.5 -60.5l21 -58.5l21 -56.5t17.5 -44t15 -32.5t8 -11h32q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5t-50.5 1.5q-16 0 -58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5 q0 9 3 10.5t15 1.5h54q1 0 1 3q0 30 -70 226q-6 17 -10 18q-3 1 -10 1h-201q-5 0 -8 -0.5t-5 -1t-4 -3t-2 -3t-2 -5t-2 -5.5q-81 -206 -81 -227q0 -3 1 -3h78q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -43.5 1.5t-48.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5z M231 305q0 -6 16 -6h179q13 0 13 5q0 1 -4 13l-83 243q-6 19 -8 19t-10 -19l-98 -240q-5 -12 -5 -15z" />
+<glyph unicode="&#xc5;" horiz-adv-x="698" d="M300 785q0 29 21 50t50 21t50 -21t21 -50t-21 -50t-50 -21t-50 21t-21 50zM328 785q0 -18 12.5 -30.5t30.5 -12.5t30.5 12.5t12.5 30.5t-12.5 30.5t-30.5 12.5t-30.5 -12.5t-12.5 -30.5zM30 15q0 9 3 10.5t15 1.5h28q3 0 17.5 30.5t34.5 77.5l39 92l35.5 84.5l19.5 46.5 l106 246q4 9 17 25.5t19 30.5q12 27 19 27t9 -7l120 -337l19 -53l21.5 -60.5l21 -58.5l21 -56.5t17.5 -44t15 -32.5t8 -11h32q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5t-50.5 1.5q-16 0 -58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h54 q1 0 1 3q0 30 -70 226q-6 17 -10 18q-3 1 -10 1h-201q-5 0 -8 -0.5t-5 -1t-4 -3t-2 -3t-2 -5t-2 -5.5q-81 -206 -81 -227q0 -3 1 -3h78q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -43.5 1.5t-48.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5zM231 305q0 -6 16 -6h179 q13 0 13 5q0 1 -4 13l-83 243q-6 19 -8 19t-10 -19l-98 -240q-5 -12 -5 -15z" />
+<glyph unicode="&#xc6;" horiz-adv-x="973" d="M20 15q0 9 3 10.5t15 1.5h28q4 0 13 11.5t24.5 36l30.5 50.5l40 67.5l45 73.5l221 360q5 8 4 9t-13 1h-45q-7 0 -9.5 3t-2.5 12q0 14 12 14l18 -1q18 0 53 -1t78 -1q28 0 128.5 1.5t120.5 1.5q47 0 56.5 1.5t10.5 10.5v1q1 12 13 12q11 0 14 -2t3 -9q0 -2 -2 -43t-2 -87 q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 7 -272 7q-7 0 -7 -128q0 -42 2 -142q0 -10 1.5 -13t10.5 -3h167q55 0 55 16v50q0 9 17 9q14 0 14 -8q0 -1 -1 -29t-1 -49t1 -50t1 -33q0 -8 -13 -8q-18 0 -18 9v46q0 7 -2 10t-15 6.5t-38 3.5h-163q-12 0 -14 -2 t-2 -13q6 -276 12 -276q27 0 68 0.5l79.5 1t73.5 0.5t57 0.5t23 0.5q12 0 15 3t4 20q1 14 3 87q0 8 14 8q17 0 17 -9q0 -28 -1.5 -77t-1.5 -61q0 -11 -22 -11q-11 0 -182.5 1.5t-187.5 1.5t-63.5 -1.5t-58.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5q0 9 2.5 10.5t14.5 1.5h61 q7 0 7 75v158q0 7 -4.5 10.5t-9.5 4t-16 0.5h-201q-4 0 -64 -105t-75 -137l-2 -6h7h64q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -41 1.5t-46 1.5t-38 -1.5t-33 -1.5q-10 0 -12 2.5t-2 15.5zM279 306q0 -7 16 -7h169q20 0 24.5 3.5t4.5 16.5v92q0 225 -14 225h-1 q-5 0 -11 -10l-182 -306q-6 -12 -6 -14z" />
+<glyph unicode="&#xc7;" horiz-adv-x="731" d="M45 335q0 154 101.5 249.5t255.5 95.5q19 0 37.5 -2t34.5 -5.5t29.5 -8t27 -10.5l23 -10.5t19.5 -11l15 -10l12.5 -8.5t8.5 -6q5 -4 6.5 -5t5 -2t4.5 1.5t1 8.5v27q0 9 2 11t13 2q12 0 16 -2t4 -11q0 -5 -2 -84t-2 -109q0 -9 -3 -12.5t-13 -3.5q-13 0 -16 2.5t-3 9.5 q0 1 2 43t2 47t-11 18t-32.5 30t-48.5 33t-64.5 27t-74.5 11q-108 0 -178 -90t-70 -227q0 -127 81 -218.5t196 -91.5q51 0 99 15t71.5 30.5t24.5 22.5l13 113q1 10 5.5 13t16.5 1q12 -1 12 -13q0 -13 -16 -133q-1 -10 -36 -30.5t-96 -39t-119 -18.5l-18 -49q-2 -9 0 -9l5 2 l14.5 2.5t16.5 1.5q40 0 62.5 -21t22.5 -47q0 -35 -29.5 -63.5t-76.5 -28.5q-23 0 -43.5 6.5t-30 12.5t-9.5 9q0 11 8 11l9 -3q8 -4 22 -8t29 -4q34 0 50 13.5t16 42.5q0 45 -55 45q-8 0 -16.5 -2.5t-14 -4.5t-6.5 -2q-8 0 -8 5q0 2 35 91q-68 2 -128 24.5t-107 64.5 t-74.5 109.5t-27.5 152.5z" />
+<glyph unicode="&#xc8;" horiz-adv-x="605" d="M207 822q0 25 30 25q18 0 34 -25l53 -85q2 -4 2 -6t-4 -2h-21l-8 6l-72 60q-14 11 -14 27zM40 15q0 9 2.5 10.5t14.5 1.5h61q7 0 7 75v96q0 31 -0.5 72t-1 78t-1 69.5t-1 53t-0.5 21.5q0 144 -11 144h-43q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l43 -1q43 -2 64 -2 q28 0 128.5 1.5t120.5 1.5q47 0 56.5 1.5t10.5 10.5v1q1 12 13 12q11 0 14 -2t3 -9q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 7 -272 7q-7 0 -7 -128q0 -42 2 -142q0 -10 1.5 -13t10.5 -3h167q55 0 55 16v50q0 9 17 9q14 0 14 -8 q0 -1 -1 -29t-1 -49t1 -50t1 -33q0 -8 -13 -8q-18 0 -18 9v46q0 7 -2 10t-15 6.5t-38 3.5h-163q-12 0 -14 -2t-2 -13q6 -276 12 -276q27 0 68 0.5l79.5 1t73.5 0.5t57 0.5t23 0.5q12 0 15 3t4 20q1 14 3 87q0 8 14 8q17 0 17 -9q0 -28 -1.5 -77t-1.5 -61q0 -11 -22 -11 q-11 0 -182.5 1.5t-187.5 1.5t-63.5 -1.5t-58.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="&#xc9;" horiz-adv-x="605" d="M306 731q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2zM40 15q0 9 2.5 10.5t14.5 1.5h61q7 0 7 75v96q0 31 -0.5 72t-1 78t-1 69.5t-1 53t-0.5 21.5q0 144 -11 144h-43q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l43 -1 q43 -2 64 -2q28 0 128.5 1.5t120.5 1.5q47 0 56.5 1.5t10.5 10.5v1q1 12 13 12q11 0 14 -2t3 -9q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 7 -272 7q-7 0 -7 -128q0 -42 2 -142q0 -10 1.5 -13t10.5 -3h167q55 0 55 16v50q0 9 17 9 q14 0 14 -8q0 -1 -1 -29t-1 -49t1 -50t1 -33q0 -8 -13 -8q-18 0 -18 9v46q0 7 -2 10t-15 6.5t-38 3.5h-163q-12 0 -14 -2t-2 -13q6 -276 12 -276q27 0 68 0.5l79.5 1t73.5 0.5t57 0.5t23 0.5q12 0 15 3t4 20q1 14 3 87q0 8 14 8q17 0 17 -9q0 -28 -1.5 -77t-1.5 -61 q0 -11 -22 -11q-11 0 -182.5 1.5t-187.5 1.5t-63.5 -1.5t-58.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="&#xca;" horiz-adv-x="605" d="M205 731l4 6l79 89q12 13 16 13h24q4 0 16 -13l79 -89q4 -4 4 -6t-6 -2h-9q-1 0 -11 6l-81 45q-4 2 -8 0l-81 -45q-10 -6 -11 -6h-9q-6 0 -6 2zM40 15q0 9 2.5 10.5t14.5 1.5h61q7 0 7 75v96q0 31 -0.5 72t-1 78t-1 69.5t-1 53t-0.5 21.5q0 144 -11 144h-43 q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l43 -1q43 -2 64 -2q28 0 128.5 1.5t120.5 1.5q47 0 56.5 1.5t10.5 10.5v1q1 12 13 12q11 0 14 -2t3 -9q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 7 -272 7q-7 0 -7 -128q0 -42 2 -142 q0 -10 1.5 -13t10.5 -3h167q55 0 55 16v50q0 9 17 9q14 0 14 -8q0 -1 -1 -29t-1 -49t1 -50t1 -33q0 -8 -13 -8q-18 0 -18 9v46q0 7 -2 10t-15 6.5t-38 3.5h-163q-12 0 -14 -2t-2 -13q6 -276 12 -276q27 0 68 0.5l79.5 1t73.5 0.5t57 0.5t23 0.5q12 0 15 3t4 20q1 14 3 87 q0 8 14 8q17 0 17 -9q0 -28 -1.5 -77t-1.5 -61q0 -11 -22 -11q-11 0 -182.5 1.5t-187.5 1.5t-63.5 -1.5t-58.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="&#xcb;" horiz-adv-x="605" d="M185 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM345 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM40 15q0 9 2.5 10.5t14.5 1.5h61q7 0 7 75v96q0 31 -0.5 72 t-1 78t-1 69.5t-1 53t-0.5 21.5q0 144 -11 144h-43q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l43 -1q43 -2 64 -2q28 0 128.5 1.5t120.5 1.5q47 0 56.5 1.5t10.5 10.5v1q1 12 13 12q11 0 14 -2t3 -9q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 1.5 38.5 t1.5 39.5q0 7 -272 7q-7 0 -7 -128q0 -42 2 -142q0 -10 1.5 -13t10.5 -3h167q55 0 55 16v50q0 9 17 9q14 0 14 -8q0 -1 -1 -29t-1 -49t1 -50t1 -33q0 -8 -13 -8q-18 0 -18 9v46q0 7 -2 10t-15 6.5t-38 3.5h-163q-12 0 -14 -2t-2 -13q6 -276 12 -276q27 0 68 0.5l79.5 1 t73.5 0.5t57 0.5t23 0.5q12 0 15 3t4 20q1 14 3 87q0 8 14 8q17 0 17 -9q0 -28 -1.5 -77t-1.5 -61q0 -11 -22 -11q-11 0 -182.5 1.5t-187.5 1.5t-63.5 -1.5t-58.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="&#xcc;" horiz-adv-x="333" d="M59 822q0 25 30 25q18 0 34 -25l53 -85q2 -4 2 -6t-4 -2h-21l-8 6l-72 60q-14 11 -14 27zM30 15q0 9 3 10.5t15 1.5h68q10 0 10 367v98q0 147 -10 147h-62q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 54.5 -1.5t65.5 -1.5q16 0 60 1.5t55 1.5q10 0 12 -2.5 t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-63q-11 0 -11 -158v-135q0 -319 10 -319h71q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-66.5 -1.5t-61.5 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#xcd;" horiz-adv-x="333" d="M158 731q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2zM30 15q0 9 3 10.5t15 1.5h68q10 0 10 367v98q0 147 -10 147h-62q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 54.5 -1.5t65.5 -1.5q16 0 60 1.5t55 1.5 q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-63q-11 0 -11 -158v-135q0 -319 10 -319h71q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-66.5 -1.5t-61.5 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#xce;" horiz-adv-x="333" d="M57 731l4 6l79 89q12 13 16 13h24q4 0 16 -13l79 -89q4 -4 4 -6t-6 -2h-9q-1 0 -11 6l-81 45q-4 2 -8 0l-81 -45q-10 -6 -11 -6h-9q-6 0 -6 2zM30 15q0 9 3 10.5t15 1.5h68q10 0 10 367v98q0 147 -10 147h-62q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5 q6 0 54.5 -1.5t65.5 -1.5q16 0 60 1.5t55 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-63q-11 0 -11 -158v-135q0 -319 10 -319h71q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-66.5 -1.5t-61.5 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#xcf;" horiz-adv-x="333" d="M37 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM197 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM30 15q0 9 3 10.5t15 1.5h68q10 0 10 367v98q0 147 -10 147h-62 q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 54.5 -1.5t65.5 -1.5q16 0 60 1.5t55 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-63q-11 0 -11 -158v-135q0 -319 10 -319h71q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5 t-66.5 -1.5t-61.5 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#xd0;" horiz-adv-x="758" d="M35 10q0 11 3 13t14 2h66q5 0 11 298q0 8 -7 8h-79q-2 0 -2.5 12t2.5 12h76q10 0 10 10q2 148 2 198q0 78 -2 78l-70 -2q-5 0 -7.5 0.5t-4 3t-1.5 8.5v7.5t1.5 5t4 3t7.5 0.5q1 0 11.5 -0.5t26.5 -0.5h31q41 0 114.5 6t89.5 6q166 0 273.5 -93t107.5 -250 q0 -105 -49.5 -183.5t-126.5 -116.5t-169 -39q-32 0 -97 2t-98 2q-16 0 -70 -2t-57 -2q-8 0 -9.5 2t-1.5 12zM213 86q0 -59 2 -60q6 -4 57 -4q69 0 124.5 14t90 34.5t60 53t37.5 59t19 63.5t8 56t1 46q0 73 -35.5 141.5t-106.5 115.5t-159 47q-67 0 -90 -6q-7 -2 -7 -146 q0 -22 -0.5 -67t-0.5 -68q0 -7 1.5 -8.5t9.5 -1.5h208q3 0 3 -12t-3 -12h-212q-7 0 -7 -8v-237z" />
+<glyph unicode="&#xd1;" horiz-adv-x="814" d="M316 748q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM40 15q0 9 3 10.5t15 1.5h44q3 0 5 2.5t3 7.5t1.5 11t1 15.5t0.5 18.5t0.5 22.5 t0.5 24.5l8 510h-68q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q6 0 53.5 -1.5t58.5 -1.5q13 0 33.5 1.5t21.5 1.5q10 0 20 -13l406 -499q16 -20 18 -20q4 0 4 28v42q0 49 -1 187t-1 189q0 56 -1 56h-94q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q11 0 50.5 -1.5t55.5 -1.5t43.5 1.5 t38.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-47q-4 0 -4 -59q0 -68 -3.5 -209.5l-6.5 -253t-3 -113.5q0 -22 -10 -22q-4 0 -18 16l-492 598q-14 18 -16 18q-3 0 -3 -20q-1 -25 -1 -122q0 -54 -0.5 -175.5t-0.5 -167.5q0 -102 5 -102h86q8 0 9.5 -2t1.5 -11 q0 -11 -2 -14t-9 -3q-11 0 -50.5 1.5t-55.5 1.5t-43.5 -1.5t-38.5 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#xd2;" horiz-adv-x="752" d="M266 822q0 25 30 25q18 0 34 -25l53 -85q2 -4 2 -6t-4 -2h-21l-8 6l-72 60q-14 11 -14 27zM45 318q0 158 99 257.5t241 99.5q145 0 233.5 -101t88.5 -250t-94.5 -242t-242.5 -93q-83 0 -155.5 36.5t-121 113.5t-48.5 179zM139 345q0 -140 63 -234t169 -94q79 0 136 48 t82.5 118t25.5 150t-25 149.5t-81 117t-134 47.5q-103 0 -169.5 -91t-66.5 -211z" />
+<glyph unicode="&#xd3;" horiz-adv-x="752" d="M365 731q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2zM45 318q0 158 99 257.5t241 99.5q145 0 233.5 -101t88.5 -250t-94.5 -242t-242.5 -93q-83 0 -155.5 36.5t-121 113.5t-48.5 179zM139 345q0 -140 63 -234t169 -94 q79 0 136 48t82.5 118t25.5 150t-25 149.5t-81 117t-134 47.5q-103 0 -169.5 -91t-66.5 -211z" />
+<glyph unicode="&#xd4;" horiz-adv-x="752" d="M264 731l4 6l79 89q12 13 16 13h24q4 0 16 -13l79 -89q4 -4 4 -6t-6 -2h-9q-1 0 -11 6l-81 45q-4 2 -8 0l-81 -45q-10 -6 -11 -6h-9q-6 0 -6 2zM45 318q0 158 99 257.5t241 99.5q145 0 233.5 -101t88.5 -250t-94.5 -242t-242.5 -93q-83 0 -155.5 36.5t-121 113.5 t-48.5 179zM139 345q0 -140 63 -234t169 -94q79 0 136 48t82.5 118t25.5 150t-25 149.5t-81 117t-134 47.5q-103 0 -169.5 -91t-66.5 -211z" />
+<glyph unicode="&#xd5;" horiz-adv-x="752" d="M270 748q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM45 318q0 158 99 257.5t241 99.5q145 0 233.5 -101t88.5 -250t-94.5 -242 t-242.5 -93q-83 0 -155.5 36.5t-121 113.5t-48.5 179zM139 345q0 -140 63 -234t169 -94q79 0 136 48t82.5 118t25.5 150t-25 149.5t-81 117t-134 47.5q-103 0 -169.5 -91t-66.5 -211z" />
+<glyph unicode="&#xd6;" horiz-adv-x="752" d="M244 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM404 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM45 318q0 158 99 257.5t241 99.5q145 0 233.5 -101t88.5 -250 t-94.5 -242t-242.5 -93q-83 0 -155.5 36.5t-121 113.5t-48.5 179zM139 345q0 -140 63 -234t169 -94q79 0 136 48t82.5 118t25.5 150t-25 149.5t-81 117t-134 47.5q-103 0 -169.5 -91t-66.5 -211z" />
+<glyph unicode="&#xd7;" horiz-adv-x="527" d="M88 358q0 5 10.5 15.5t17.5 10.5q6 0 14 -8l116 -115q12 -12 19 -12q6 0 11 5l125 125q6 6 12 6q5 0 15 -10t10 -17q0 -5 -9 -14l-121 -121q-8 -8 -8 -13q0 -4 8 -12l124 -124q6 -6 6 -12t-10.5 -16.5t-15.5 -10.5q-6 0 -13 7l-123 124q-7 7 -13 7q-5 0 -16 -11 l-120 -120q-7 -7 -12 -7t-15.5 10t-10.5 16q0 5 8 13l120 121q9 9 9 15t-7 13l-124 124q-7 7 -7 11z" />
+<glyph unicode="&#xd8;" horiz-adv-x="752" d="M45 318q0 158 99 257.5t241 99.5q78 0 142 -31q6 -3 8 -2.5t5 6.5l42 74q1 1 3 1q5 0 12 -5.5t6 -7.5l-44 -75q-4 -7 2 -11q69 -46 107.5 -125.5t38.5 -174.5q0 -149 -94.5 -242t-242.5 -93q-82 0 -152 36q-8 4 -12 -2l-44 -76q-2 -2 -3 -2q-4 0 -8.5 2.5t-8 5.5t-2.5 4 l46 79q3 5 -4 10q-63 43 -100 112t-37 160zM139 345q0 -154 73 -247l5 -5q1 0 4 5l286 494q3 4 3 6t-6 7q-54 42 -129 42q-103 0 -169.5 -91t-66.5 -211zM238 79q-3 -6 2 -11q57 -51 131 -51q79 0 136 48t82.5 118t25.5 150q0 153 -80 243q-5 5 -7 3q-1 -1 -2 -3z" />
+<glyph unicode="&#xd9;" horiz-adv-x="755" d="M275 822q0 25 30 25q18 0 34 -25l53 -85q2 -4 2 -6t-4 -2h-21l-8 6l-72 60q-14 11 -14 27zM40 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 59.5 1.5t54.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-65q-6 0 -10 -166.5t-4 -239.5q0 -97 48 -145.5 t153 -48.5q92 0 172 54q17 11 20 23q5 17 5 136v305q0 82 -7 82h-49q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 44.5 -1.5t55.5 -1.5t46 1.5t32 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-24q-3 0 -5 -17t-3 -51t-1.5 -69t-1.5 -88.5t-2 -91.5 q-1 -57 -3 -128t-3 -113t-1 -51q0 -32 -21 -32q-10 0 -30 36.5t-32 36.5q-10 0 -46 -20q-40 -23 -96.5 -40t-109.5 -17q-59 0 -100.5 14t-64 34t-35.5 54t-16 63.5t-3 72.5q0 11 0.5 157t0.5 191q0 59 -5 59h-37q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#xda;" horiz-adv-x="755" d="M374 731q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2zM40 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 59.5 1.5t54.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-65q-6 0 -10 -166.5t-4 -239.5 q0 -97 48 -145.5t153 -48.5q92 0 172 54q17 11 20 23q5 17 5 136v305q0 82 -7 82h-49q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 44.5 -1.5t55.5 -1.5t46 1.5t32 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-24q-3 0 -5 -17t-3 -51t-1.5 -69 t-1.5 -88.5t-2 -91.5q-1 -57 -3 -128t-3 -113t-1 -51q0 -32 -21 -32q-10 0 -30 36.5t-32 36.5q-10 0 -46 -20q-40 -23 -96.5 -40t-109.5 -17q-59 0 -100.5 14t-64 34t-35.5 54t-16 63.5t-3 72.5q0 11 0.5 157t0.5 191q0 59 -5 59h-37q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#xdb;" horiz-adv-x="755" d="M273 731l4 6l79 89q12 13 16 13h24q4 0 16 -13l79 -89q4 -4 4 -6t-6 -2h-9q-1 0 -11 6l-81 45q-4 2 -8 0l-81 -45q-10 -6 -11 -6h-9q-6 0 -6 2zM40 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 59.5 1.5t54.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5 t-15 -1.5h-65q-6 0 -10 -166.5t-4 -239.5q0 -97 48 -145.5t153 -48.5q92 0 172 54q17 11 20 23q5 17 5 136v305q0 82 -7 82h-49q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 44.5 -1.5t55.5 -1.5t46 1.5t32 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5 h-24q-3 0 -5 -17t-3 -51t-1.5 -69t-1.5 -88.5t-2 -91.5q-1 -57 -3 -128t-3 -113t-1 -51q0 -32 -21 -32q-10 0 -30 36.5t-32 36.5q-10 0 -46 -20q-40 -23 -96.5 -40t-109.5 -17q-59 0 -100.5 14t-64 34t-35.5 54t-16 63.5t-3 72.5q0 11 0.5 157t0.5 191q0 59 -5 59h-37 q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#xdc;" horiz-adv-x="755" d="M253 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM413 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM40 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5 q16 0 59.5 1.5t54.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-65q-6 0 -10 -166.5t-4 -239.5q0 -97 48 -145.5t153 -48.5q92 0 172 54q17 11 20 23q5 17 5 136v305q0 82 -7 82h-49q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 44.5 -1.5t55.5 -1.5 t46 1.5t32 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-24q-3 0 -5 -17t-3 -51t-1.5 -69t-1.5 -88.5t-2 -91.5q-1 -57 -3 -128t-3 -113t-1 -51q0 -32 -21 -32q-10 0 -30 36.5t-32 36.5q-10 0 -46 -20q-40 -23 -96.5 -40t-109.5 -17q-59 0 -100.5 14t-64 34 t-35.5 54t-16 63.5t-3 72.5q0 11 0.5 157t0.5 191q0 59 -5 59h-37q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#xdd;" horiz-adv-x="597" d="M318 731q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2zM10 654q0 7 2 10.5t5 4t11 0.5q6 0 46 -1.5t57 -1.5q16 0 60 1.5t55 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-59q-11 0 -12 -2.5t4 -12.5q9 -23 37 -76.5 l62.5 -117t42.5 -79.5q9 -17 11 -17q3 0 11 14l27 52l38 72.5l35.5 69.5t29 62t10.5 32q0 3 -2 3h-56q-13 0 -15.5 1.5t-2.5 10.5q0 13 2 15.5t12 2.5q11 0 36.5 -1.5t41.5 -1.5q17 0 43.5 1.5t32.5 1.5q11 0 13.5 -2t2.5 -13q0 -6 -0.5 -9t-3 -4.5t-5 -1.5h-7.5h-36 q-2 0 -37.5 -62l-81.5 -142l-65 -111q-3 -5 -3 -11q0 -286 10 -286h71q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-58.5 -1.5t-53.5 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h52q10 0 10 244q0 11 -7 23q-189 345 -199 345h-29 q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#xde;" horiz-adv-x="591" d="M30 15q0 9 3 10.5t15 1.5h68q10 0 10 367v98q0 147 -10 147h-62q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 54.5 -1.5t65.5 -1.5q16 0 60 1.5t55 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-63q-9 0 -11 -102q0 -13 2 -15t15 -1q14 0 42.5 1.5 t35.5 1.5q108 0 174 -49.5t66 -146.5q0 -92 -64 -136.5t-175 -44.5q-5 0 -77 3h-4h-7t-4 -1.5t-2.5 -4t-0.5 -7.5q2 -110 9 -110h71q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-66.5 -1.5t-61.5 -1.5q-10 0 -12 2.5t-2 15.5zM211 188q0 -15 14 -17 q7 -2 24 -2q94 0 152.5 41.5t58.5 132.5q0 71 -59.5 113t-151.5 42q-24 0 -35 -1q-3 0 -3 -27v-282z" />
+<glyph unicode="&#xdf;" horiz-adv-x="482" d="M30 12q0 13 12 13h38q6 0 6 178q0 70 -1 174l-1 104q0 86 42 141.5t130 55.5q68 0 106.5 -37t38.5 -102q0 -64 -34.5 -103.5t-76.5 -55.5q-6 -3 -12.5 -4.5t-9.5 -1.5l-2 -1l2 -1q2 0 7 -1t11 -3q18 -5 36 -12.5t43 -24t43 -37.5t31 -55t13 -75q0 -72 -38 -123t-101 -51 q-46 0 -76 21t-30 57q0 18 7.5 26.5t27.5 14.5q16 5 18 -8q0 -4 1 -18.5l1.5 -21.5t4 -19t9 -18t15.5 -11t24 -5q31 0 47 44t16 102q0 54 -12 94t-26.5 60t-40.5 33t-40 16t-39 6q-7 1 -7 10.5t7 9.5q46 2 82 41.5t36 117.5q0 53 -20.5 83.5t-76.5 30.5q-23 0 -40 -12 t-25 -27.5t-12.5 -41t-5.5 -42t-1 -41.5v-475q0 -18 -8 -18q-2 0 -12.5 0.5t-15.5 0.5q-12 0 -37 -1t-41 -1q-9 0 -11 2.5t-2 11.5z" />
+<glyph unicode="&#xe0;" horiz-adv-x="419" d="M99 582q0 13 9.5 21.5t26.5 8.5q21 0 30 -25l49 -130q2 -4 2 -6t-4 -2h-16q-4 0 -8 6l-82 107q-7 10 -7 20zM35 71q0 42 37 74t83.5 48t103.5 26q8 1 8 16q0 27 -0.5 42t-5 36.5t-13.5 32.5t-26 19.5t-42 8.5q-18 0 -31 -5q-20 -9 -25.5 -22t-6.5 -45q0 -16 -7 -21 q-11 -8 -30.5 -18t-22.5 -10q-8 0 -8 15q0 57 49 94t103 37q72 0 101.5 -33.5t29.5 -97.5q0 -29 -3 -113t-3 -91q0 -30 22 -30q2 0 19.5 12t18.5 12q3 0 8 -5.5t5 -9.5q0 -5 -65 -49q-15 -11 -26 -11q-10 0 -17.5 6t-11.5 14t-6.5 16t-3.5 14l-1 6q-1 0 -4 -2t-8 -5t-8 -5 q-68 -41 -115 -41q-46 0 -72 23t-26 62zM105 99q0 -26 17.5 -47.5t47.5 -21.5q20 0 44 6t38.5 12.5t14.5 9.5v134q0 11 -6 11q-14 0 -62 -15q-94 -30 -94 -89z" />
+<glyph unicode="&#xe1;" horiz-adv-x="419" d="M186 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM35 71q0 42 37 74t83.5 48t103.5 26q8 1 8 16q0 27 -0.5 42t-5 36.5t-13.5 32.5t-26 19.5t-42 8.5q-18 0 -31 -5q-20 -9 -25.5 -22t-6.5 -45 q0 -16 -7 -21q-11 -8 -30.5 -18t-22.5 -10q-8 0 -8 15q0 57 49 94t103 37q72 0 101.5 -33.5t29.5 -97.5q0 -29 -3 -113t-3 -91q0 -30 22 -30q2 0 19.5 12t18.5 12q3 0 8 -5.5t5 -9.5q0 -5 -65 -49q-15 -11 -26 -11q-10 0 -17.5 6t-11.5 14t-6.5 16t-3.5 14l-1 6q-1 0 -4 -2 t-8 -5t-8 -5q-68 -41 -115 -41q-46 0 -72 23t-26 62zM105 99q0 -26 17.5 -47.5t47.5 -21.5q20 0 44 6t38.5 12.5t14.5 9.5v134q0 11 -6 11q-14 0 -62 -15q-94 -30 -94 -89z" />
+<glyph unicode="&#xe2;" horiz-adv-x="419" d="M91 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM35 71q0 42 37 74t83.5 48t103.5 26q8 1 8 16q0 27 -0.5 42t-5 36.5t-13.5 32.5t-26 19.5 t-42 8.5q-18 0 -31 -5q-20 -9 -25.5 -22t-6.5 -45q0 -16 -7 -21q-11 -8 -30.5 -18t-22.5 -10q-8 0 -8 15q0 57 49 94t103 37q72 0 101.5 -33.5t29.5 -97.5q0 -29 -3 -113t-3 -91q0 -30 22 -30q2 0 19.5 12t18.5 12q3 0 8 -5.5t5 -9.5q0 -5 -65 -49q-15 -11 -26 -11 q-10 0 -17.5 6t-11.5 14t-6.5 16t-3.5 14l-1 6q-1 0 -4 -2t-8 -5t-8 -5q-68 -41 -115 -41q-46 0 -72 23t-26 62zM105 99q0 -26 17.5 -47.5t47.5 -21.5q20 0 44 6t38.5 12.5t14.5 9.5v134q0 11 -6 11q-14 0 -62 -15q-94 -30 -94 -89z" />
+<glyph unicode="&#xe3;" horiz-adv-x="419" d="M96 498q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM35 71q0 42 37 74t83.5 48t103.5 26q8 1 8 16q0 27 -0.5 42t-5 36.5t-13.5 32.5 t-26 19.5t-42 8.5q-18 0 -31 -5q-20 -9 -25.5 -22t-6.5 -45q0 -16 -7 -21q-11 -8 -30.5 -18t-22.5 -10q-8 0 -8 15q0 57 49 94t103 37q72 0 101.5 -33.5t29.5 -97.5q0 -29 -3 -113t-3 -91q0 -30 22 -30q2 0 19.5 12t18.5 12q3 0 8 -5.5t5 -9.5q0 -5 -65 -49q-15 -11 -26 -11 q-10 0 -17.5 6t-11.5 14t-6.5 16t-3.5 14l-1 6q-1 0 -4 -2t-8 -5t-8 -5q-68 -41 -115 -41q-46 0 -72 23t-26 62zM105 99q0 -26 17.5 -47.5t47.5 -21.5q20 0 44 6t38.5 12.5t14.5 9.5v134q0 11 -6 11q-14 0 -62 -15q-94 -30 -94 -89z" />
+<glyph unicode="&#xe4;" horiz-adv-x="419" d="M70 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM230 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM35 71q0 42 37 74t83.5 48t103.5 26q8 1 8 16q0 27 -0.5 42 t-5 36.5t-13.5 32.5t-26 19.5t-42 8.5q-18 0 -31 -5q-20 -9 -25.5 -22t-6.5 -45q0 -16 -7 -21q-11 -8 -30.5 -18t-22.5 -10q-8 0 -8 15q0 57 49 94t103 37q72 0 101.5 -33.5t29.5 -97.5q0 -29 -3 -113t-3 -91q0 -30 22 -30q2 0 19.5 12t18.5 12q3 0 8 -5.5t5 -9.5 q0 -5 -65 -49q-15 -11 -26 -11q-10 0 -17.5 6t-11.5 14t-6.5 16t-3.5 14l-1 6q-1 0 -4 -2t-8 -5t-8 -5q-68 -41 -115 -41q-46 0 -72 23t-26 62zM105 99q0 -26 17.5 -47.5t47.5 -21.5q20 0 44 6t38.5 12.5t14.5 9.5v134q0 11 -6 11q-14 0 -62 -15q-94 -30 -94 -89z" />
+<glyph unicode="&#xe5;" horiz-adv-x="419" d="M130 535q0 29 21 50t50 21t50 -21t21 -50t-21 -50t-50 -21t-50 21t-21 50zM158 535q0 -18 12.5 -30.5t30.5 -12.5t30.5 12.5t12.5 30.5t-12.5 30.5t-30.5 12.5t-30.5 -12.5t-12.5 -30.5zM35 71q0 42 37 74t83.5 48t103.5 26q8 1 8 16q0 27 -0.5 42t-5 36.5t-13.5 32.5 t-26 19.5t-42 8.5q-18 0 -31 -5q-20 -9 -25.5 -22t-6.5 -45q0 -16 -7 -21q-11 -8 -30.5 -18t-22.5 -10q-8 0 -8 15q0 57 49 94t103 37q72 0 101.5 -33.5t29.5 -97.5q0 -29 -3 -113t-3 -91q0 -30 22 -30q2 0 19.5 12t18.5 12q3 0 8 -5.5t5 -9.5q0 -5 -65 -49q-15 -11 -26 -11 q-10 0 -17.5 6t-11.5 14t-6.5 16t-3.5 14l-1 6q-1 0 -4 -2t-8 -5t-8 -5q-68 -41 -115 -41q-46 0 -72 23t-26 62zM105 99q0 -26 17.5 -47.5t47.5 -21.5q20 0 44 6t38.5 12.5t14.5 9.5v134q0 11 -6 11q-14 0 -62 -15q-94 -30 -94 -89z" />
+<glyph unicode="&#xe6;" horiz-adv-x="649" d="M35 70q0 42 37 74t83.5 48t103.5 26q8 1 8 16q0 27 -0.5 42t-5 36.5t-13.5 32.5t-26 19.5t-42 8.5q-18 0 -31 -5q-20 -9 -25.5 -22t-6.5 -45q0 -16 -7 -21q-11 -8 -30.5 -18t-22.5 -10q-8 0 -8 15q0 57 49 94t103 37q80 0 111 -45q7 -11 10 -9q1 0 9 7q55 45 128 45 q71 0 110 -46t39 -113q0 -5 -20 -8.5t-34 -3.5q-6 0 -113 2.5t-111 2.5q-5 0 -5 -36q0 -76 44.5 -120.5t104.5 -44.5q22 0 43.5 6.5t36 16.5t25.5 19.5t17 16.5l7 6q2 0 9 -6.5t7 -8.5q0 -5 -21 -26.5t-64 -44.5t-88 -23q-90 0 -141 54q-7 6 -8.5 6t-10.5 -6 q-87 -54 -153 -54q-46 0 -72 23t-26 62zM105 98q0 -26 17.5 -47.5t47.5 -21.5q39 0 79 17q12 5 15 8.5t3 11.5v125q0 11 -6 11q-14 0 -62 -15q-94 -30 -94 -89zM330 255q0 -8 12 -8q57 0 157 4q40 1 40 4q0 65 -29.5 92t-62.5 27q-46 0 -80 -38.5t-37 -80.5z" />
+<glyph unicode="&#xe7;" horiz-adv-x="412" d="M35 177q0 104 63 163t143 59q50 0 91.5 -29t41.5 -67q0 -13 -10 -20q-17 -13 -30 -13t-17 11q-2 5 -8.5 25.5t-10 27t-12 18.5t-21 16t-30.5 4q-60 0 -97.5 -53t-37.5 -117q0 -68 40.5 -118t113.5 -50q30 0 58.5 7.5t44.5 15t18 7.5q7 0 7 -8q0 -5 -16.5 -19t-52.5 -29.5 t-77 -17.5l-20 -55q-2 -9 0 -9l6 2q5 1 13.5 2.5t16.5 1.5q40 0 62.5 -21t22.5 -47q0 -35 -29.5 -63.5t-76.5 -28.5q-23 0 -43.5 6.5t-30 12.5t-9.5 9q0 11 8 11l8 -3q9 -4 23 -8t29 -4q34 0 50 13.5t16 42.5q0 45 -55 45q-8 0 -16.5 -2.5t-14 -4.5t-6.5 -2q-8 0 -8 5 q0 1 6.5 17.5l16 42t14.5 37.5q-85 1 -134.5 52t-49.5 135z" />
+<glyph unicode="&#xe8;" horiz-adv-x="424" d="M126 582q0 13 9.5 21.5t26.5 8.5q21 0 30 -25l49 -130q2 -4 2 -6t-4 -2h-16q-3 0 -8 6l-82 107q-7 10 -7 20zM30 182q0 91 57 152.5t147 61.5q71 0 110 -46t39 -113q0 -5 -20.5 -8.5t-33.5 -3.5q-6 0 -113 2.5t-111 2.5q-5 0 -5 -36q0 -76 44.5 -120.5t104.5 -44.5 q22 0 43.5 6.5t36 16.5t25.5 19.5t18 16.5l6 6q2 0 9 -6.5t7 -8.5q0 -5 -21 -26.5t-64 -44.5t-88 -23q-91 0 -141 53.5t-50 143.5zM105 255q0 -8 12 -8q57 0 157 4q40 1 40 4q0 65 -29.5 92t-62.5 27q-46 0 -80 -38.5t-37 -80.5z" />
+<glyph unicode="&#xe9;" horiz-adv-x="424" d="M213 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM30 182q0 91 57 152.5t147 61.5q71 0 110 -46t39 -113q0 -5 -20.5 -8.5t-33.5 -3.5q-6 0 -113 2.5t-111 2.5q-5 0 -5 -36q0 -76 44.5 -120.5t104.5 -44.5 q22 0 43.5 6.5t36 16.5t25.5 19.5t18 16.5l6 6q2 0 9 -6.5t7 -8.5q0 -5 -21 -26.5t-64 -44.5t-88 -23q-91 0 -141 53.5t-50 143.5zM105 255q0 -8 12 -8q57 0 157 4q40 1 40 4q0 65 -29.5 92t-62.5 27q-46 0 -80 -38.5t-37 -80.5z" />
+<glyph unicode="&#xea;" horiz-adv-x="424" d="M118 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12q-1 0 -8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM30 182q0 91 57 152.5t147 61.5q71 0 110 -46t39 -113q0 -5 -20.5 -8.5t-33.5 -3.5 q-6 0 -113 2.5t-111 2.5q-5 0 -5 -36q0 -76 44.5 -120.5t104.5 -44.5q22 0 43.5 6.5t36 16.5t25.5 19.5t18 16.5l6 6q2 0 9 -6.5t7 -8.5q0 -5 -21 -26.5t-64 -44.5t-88 -23q-91 0 -141 53.5t-50 143.5zM105 255q0 -8 12 -8q57 0 157 4q40 1 40 4q0 65 -29.5 92t-62.5 27 q-46 0 -80 -38.5t-37 -80.5z" />
+<glyph unicode="&#xeb;" horiz-adv-x="424" d="M97 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM257 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM30 182q0 91 57 152.5t147 61.5q71 0 110 -46t39 -113 q0 -5 -20.5 -8.5t-33.5 -3.5q-6 0 -113 2.5t-111 2.5q-5 0 -5 -36q0 -76 44.5 -120.5t104.5 -44.5q22 0 43.5 6.5t36 16.5t25.5 19.5t18 16.5l6 6q2 0 9 -6.5t7 -8.5q0 -5 -21 -26.5t-64 -44.5t-88 -23q-91 0 -141 53.5t-50 143.5zM105 255q0 -8 12 -8q57 0 157 4q40 1 40 4 q0 65 -29.5 92t-62.5 27q-46 0 -80 -38.5t-37 -80.5z" />
+<glyph unicode="&#xec;" horiz-adv-x="249" d="M13 582q0 13 9.5 21.5t26.5 8.5q21 0 30 -25l49 -130q2 -4 2 -6t-4 -2h-16q-4 0 -8 6l-82 107q-7 10 -7 20zM25 357q0 5 4 13q3 6 4.5 6.5t10.5 1.5q95 5 113 5q7 0 7 -6v-170q0 -113 3 -170q0 -5 0.5 -7t2.5 -3.5t7 -1.5h36q11 0 11 -13q0 -8 -1.5 -11t-9.5 -3 q-9 0 -40 1t-44 1t-46.5 -1t-42.5 -1q-8 0 -9.5 2.5t-1.5 11.5q0 7 2.5 10t11.5 3h41q8 0 9.5 2t1.5 10q1 29 1 88q0 117 -4 214q-1 11 -3 13.5t-10 2.5q-1 0 -24.5 -1t-25.5 -1q-4 0 -4 4z" />
+<glyph unicode="&#xed;" horiz-adv-x="249" d="M100 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM25 357q0 5 4 13q3 6 4.5 6.5t10.5 1.5q95 5 113 5q7 0 7 -6v-170q0 -113 3 -170q0 -5 0.5 -7t2.5 -3.5t7 -1.5h36q11 0 11 -13q0 -8 -1.5 -11t-9.5 -3 q-9 0 -40 1t-44 1t-46.5 -1t-42.5 -1q-8 0 -9.5 2.5t-1.5 11.5q0 7 2.5 10t11.5 3h41q8 0 9.5 2t1.5 10q1 29 1 88q0 117 -4 214q-1 11 -3 13.5t-10 2.5q-1 0 -24.5 -1t-25.5 -1q-4 0 -4 4z" />
+<glyph unicode="&#xee;" horiz-adv-x="249" d="M5 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM25 357q0 5 4 13q3 6 4.5 6.5t10.5 1.5q95 5 113 5q7 0 7 -6v-170q0 -113 3 -170q0 -5 0.5 -7 t2.5 -3.5t7 -1.5h36q11 0 11 -13q0 -8 -1.5 -11t-9.5 -3q-9 0 -40 1t-44 1t-46.5 -1t-42.5 -1q-8 0 -9.5 2.5t-1.5 11.5q0 7 2.5 10t11.5 3h41q8 0 9.5 2t1.5 10q1 29 1 88q0 117 -4 214q-1 11 -3 13.5t-10 2.5q-1 0 -24.5 -1t-25.5 -1q-4 0 -4 4z" />
+<glyph unicode="&#xef;" horiz-adv-x="249" d="M-6 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM134 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 357q0 5 4 13q3 6 4.5 6.5t10.5 1.5q95 5 113 5q7 0 7 -6v-170 q0 -113 3 -170q0 -5 0.5 -7t2.5 -3.5t7 -1.5h36q11 0 11 -13q0 -8 -1.5 -11t-9.5 -3q-9 0 -40 1t-44 1t-46.5 -1t-42.5 -1q-8 0 -9.5 2.5t-1.5 11.5q0 7 2.5 10t11.5 3h41q8 0 9.5 2t1.5 10q1 29 1 88q0 117 -4 214q-1 11 -3 13.5t-10 2.5q-1 0 -24.5 -1t-25.5 -1q-4 0 -4 4 z" />
+<glyph unicode="&#xf0;" horiz-adv-x="438" d="M30 183q0 95 52.5 153.5t135.5 58.5q47 0 73 -17q16 -10 17 -10q1 1 0.5 5.5t-3 11l-4.5 11.5q-33 74 -68 123q-2 3 -9 2l-114 -30q-1 0 -4 4t-5.5 10t-2.5 8l25 7q25 7 52.5 14l31.5 8q8 1 3 6q-57 69 -106 107q-9 5 -8 6q0 2 8 2h44q9 0 39 -28t68 -74q4 -5 11 -3 q94 26 98 26q2 0 8 -8t6 -12q0 -1 -44 -12.5l-52 -13.5q-3 -1 -4 -4t1 -4q52 -70 90.5 -160.5t38.5 -172.5q0 -93 -51.5 -152.5t-136.5 -59.5q-81 0 -135.5 57t-54.5 141zM103 192q0 -73 31 -127t91 -54q116 0 116 182q0 74 -28 125.5t-89 51.5q-58 0 -89.5 -49t-31.5 -129z " />
+<glyph unicode="&#xf1;" horiz-adv-x="514" d="M167 498q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM25 350q0 4 5 16q2 6 3.5 6.5t11.5 1.5q5 0 47 3t58 4q9 1 11 -0.5t2 -7.5v-3v-42 q0 -6 13 3l2 2l18 12t23 14.5t23 11.5t31 10t33 3q42 0 69.5 -13t41 -39.5t18 -55t4.5 -69.5q0 -33 -2.5 -100t-2.5 -70q0 -8 1.5 -10t9.5 -2h30q9 0 11.5 -2t2.5 -11q0 -6 -0.5 -8t-3 -4t-8.5 -2q-8 0 -33.5 1t-41.5 1q-12 0 -40.5 -1t-44.5 -1q-10 0 -12 2t-2 11t2.5 11.5 t10.5 2.5h37q7 0 8.5 1.5t2.5 9.5q4 48 4 176q0 130 -96 130q-33 0 -89 -28q-18 -9 -18 -23q0 -41 -0.5 -123.5t-0.5 -123.5q0 -9 0.5 -12.5t3 -5t9.5 -1.5h36q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -36.5 1t-44.5 1q-12 0 -42 -1t-46 -1q-9 0 -11 2.5 t-2 11.5q0 13 12 13h39q6 0 7.5 2.5t2.5 11.5v4q5 98 5 194q0 68 -2 99q-1 11 -2.5 12.5t-9.5 1.5q-1 0 -27 -2t-28 -2q-3 0 -3 4z" />
+<glyph unicode="&#xf2;" horiz-adv-x="446" d="M128 582q0 13 9.5 21.5t26.5 8.5q21 0 30 -25l49 -130q2 -4 2 -6t-4 -2h-16q-3 0 -8 6l-82 107q-7 10 -7 20zM30 183q0 90 57 151.5t148 61.5q80 0 130.5 -57.5t50.5 -141.5q0 -94 -53 -153t-144 -59q-80 0 -134.5 58t-54.5 140zM101 169q0 -62 31.5 -110t86.5 -48 q36 0 61.5 17t38.5 46.5t18.5 61t5.5 68.5q0 66 -31 116t-89 50q-122 0 -122 -201z" />
+<glyph unicode="&#xf3;" horiz-adv-x="446" d="M215 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM30 183q0 90 57 151.5t148 61.5q80 0 130.5 -57.5t50.5 -141.5q0 -94 -53 -153t-144 -59q-80 0 -134.5 58t-54.5 140zM101 169q0 -62 31.5 -110t86.5 -48 q36 0 61.5 17t38.5 46.5t18.5 61t5.5 68.5q0 66 -31 116t-89 50q-122 0 -122 -201z" />
+<glyph unicode="&#xf4;" horiz-adv-x="446" d="M120 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12q-1 0 -8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM30 183q0 90 57 151.5t148 61.5q80 0 130.5 -57.5t50.5 -141.5q0 -94 -53 -153t-144 -59 q-80 0 -134.5 58t-54.5 140zM101 169q0 -62 31.5 -110t86.5 -48q36 0 61.5 17t38.5 46.5t18.5 61t5.5 68.5q0 66 -31 116t-89 50q-122 0 -122 -201z" />
+<glyph unicode="&#xf5;" horiz-adv-x="446" d="M125 498q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM30 183q0 90 57 151.5t148 61.5q80 0 130.5 -57.5t50.5 -141.5q0 -94 -53 -153 t-144 -59q-80 0 -134.5 58t-54.5 140zM101 169q0 -62 31.5 -110t86.5 -48q36 0 61.5 17t38.5 46.5t18.5 61t5.5 68.5q0 66 -31 116t-89 50q-122 0 -122 -201z" />
+<glyph unicode="&#xf6;" horiz-adv-x="446" d="M99 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM259 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM30 183q0 90 57 151.5t148 61.5q80 0 130.5 -57.5t50.5 -141.5 q0 -94 -53 -153t-144 -59q-80 0 -134.5 58t-54.5 140zM101 169q0 -62 31.5 -110t86.5 -48q36 0 61.5 17t38.5 46.5t18.5 61t5.5 68.5q0 66 -31 116t-89 50q-122 0 -122 -201z" />
+<glyph unicode="&#xf7;" horiz-adv-x="527" d="M31 212q0 8 0.5 11.5t4.5 6t13 2.5h431q8 0 11.5 -2.5t4 -6t0.5 -12.5q0 -14 -3 -18.5t-18 -4.5h-427q-9 0 -12.5 3t-4 6.5t-0.5 14.5zM212 320q0 16 12.5 28.5t29.5 12.5q16 0 28 -11.5t12 -28.5t-12 -29t-29 -12t-29 12t-12 28zM217 101q0 16 12 28t29 12 q16 0 28.5 -12.5t12.5 -28.5t-11.5 -28t-28.5 -12t-29.5 12t-12.5 29z" />
+<glyph unicode="&#xf8;" horiz-adv-x="446" d="M30 183q0 90 57 151.5t148 61.5q35 0 67 -13q8 -3 10 0q1 1 3 4l38 65q1 2 4 2q5 0 12 -5t6 -7l-39 -67q-4 -7 0 -10q38 -26 59 -70.5t21 -97.5q0 -94 -53 -153t-144 -59q-47 0 -88 22q-5 3 -8 -2l-38 -66q-2 -2 -3 -2q-4 0 -11 5t-7 7l1 3l38 66q3 5 -4 11 q-69 58 -69 154zM101 169q0 -54 25 -99q3 -7 8 2l154 267q4 6 -4 11q-28 20 -61 20q-122 0 -122 -201zM146 44q0 -1 3 -4q29 -29 70 -29q36 0 61.5 17t38.5 46.5t18.5 61t5.5 68.5q0 69 -31 116q-1 1 -2 3q0 1 -1 1l-4 -4l-156 -270q-3 -4 -3 -6z" />
+<glyph unicode="&#xf9;" horiz-adv-x="510" d="M138 582q0 13 9.5 21.5t26.5 8.5q21 0 30 -25l49 -130q2 -4 2 -6t-4 -2h-16q-3 0 -8 6l-82 107q-7 10 -7 20zM15 360q0 4 3 11q2 6 4 7t11 2q88 4 110 4q7 0 7 -6v-272q0 -67 111 -67q91 0 91 16v118q0 186 -8 186q-1 0 -25.5 -1t-26.5 -1q-4 0 -4 4q2 17 6 19q2 1 7 1 q95 5 113 5q7 0 7 -6q-1 -239 -1 -301q0 -37 3.5 -48t15.5 -11q2 0 21 3t20 3q5 0 5 -10t-2 -12t-12 -4q-102 -15 -104 -15q-10 0 -11 13q-3 38 -4 38l-26 -12q-25 -12 -64.5 -23.5t-72.5 -11.5q-34 0 -57 11t-33.5 31t-14.5 41t-4 50v157q0 77 -12 77q-1 0 -24 -0.5 t-25 -0.5q-4 0 -4 5z" />
+<glyph unicode="&#xfa;" horiz-adv-x="510" d="M225 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM15 360q0 4 3 11q2 6 4 7t11 2q88 4 110 4q7 0 7 -6v-272q0 -67 111 -67q91 0 91 16v118q0 186 -8 186q-1 0 -25.5 -1t-26.5 -1q-4 0 -4 4q2 17 6 19 q2 1 7 1q95 5 113 5q7 0 7 -6q-1 -239 -1 -301q0 -37 3.5 -48t15.5 -11q2 0 21 3t20 3q5 0 5 -10t-2 -12t-12 -4q-102 -15 -104 -15q-10 0 -11 13q-3 38 -4 38l-26 -12q-25 -12 -64.5 -23.5t-72.5 -11.5q-34 0 -57 11t-33.5 31t-14.5 41t-4 50v157q0 77 -12 77 q-1 0 -24 -0.5t-25 -0.5q-4 0 -4 5z" />
+<glyph unicode="&#xfb;" horiz-adv-x="510" d="M130 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12q-1 0 -8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM15 360q0 4 3 11q2 6 4 7t11 2q88 4 110 4q7 0 7 -6v-272q0 -67 111 -67q91 0 91 16v118 q0 186 -8 186q-1 0 -25.5 -1t-26.5 -1q-4 0 -4 4q2 17 6 19q2 1 7 1q95 5 113 5q7 0 7 -6q-1 -239 -1 -301q0 -37 3.5 -48t15.5 -11q2 0 21 3t20 3q5 0 5 -10t-2 -12t-12 -4q-102 -15 -104 -15q-10 0 -11 13q-3 38 -4 38l-26 -12q-25 -12 -64.5 -23.5t-72.5 -11.5 q-34 0 -57 11t-33.5 31t-14.5 41t-4 50v157q0 77 -12 77q-1 0 -24 -0.5t-25 -0.5q-4 0 -4 5z" />
+<glyph unicode="&#xfc;" horiz-adv-x="510" d="M109 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM269 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM15 360q0 4 3 11q2 6 4 7t11 2q88 4 110 4q7 0 7 -6v-272 q0 -67 111 -67q91 0 91 16v118q0 186 -8 186q-1 0 -25.5 -1t-26.5 -1q-4 0 -4 4q2 17 6 19q2 1 7 1q95 5 113 5q7 0 7 -6q-1 -239 -1 -301q0 -37 3.5 -48t15.5 -11q2 0 21 3t20 3q5 0 5 -10t-2 -12t-12 -4q-102 -15 -104 -15q-10 0 -11 13q-3 38 -4 38l-26 -12 q-25 -12 -64.5 -23.5t-72.5 -11.5q-34 0 -57 11t-33.5 31t-14.5 41t-4 50v157q0 77 -12 77q-1 0 -24 -0.5t-25 -0.5q-4 0 -4 5z" />
+<glyph unicode="&#xfd;" horiz-adv-x="467" d="M236 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM25 368q0 6 0.5 8t3.5 4t9 2q8 0 33 -1t41 -1q13 0 46.5 1t41.5 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-19q-26 0 -26 -10q0 -12 31 -97.5t58 -151.5 q16 -40 19 -40t17 40q82 231 82 252q0 7 -31 7h-23q-8 0 -10.5 3t-2.5 10q0 14 14 14q9 0 31.5 -1t32.5 -1q12 0 30 1t25 1q13 0 13 -14q0 -13 -12 -13h-14q-10 0 -13 -10q-38 -105 -133 -342q-1 -3 -7 -19.5t-15.5 -46t-17.5 -51.5q-2 -4 -5.5 -15.5t-5 -14.5t-4.5 -11.5 t-5 -12t-5.5 -11t-7 -12.5t-8 -12.5t-10.5 -14.5t-13 -16q-17 -22 -26 -27q-6 -4 -15 -8q-54 -26 -62 -26q-18 0 -18 20q0 15 19 42q7 11 28 18l22.5 7.5t29.5 11t22 13.5t16 19q44 109 44 121q0 8 -28 77l-72.5 174l-55.5 132q-4 11 -7 13t-14 2h-11q-8 0 -10.5 3t-2.5 10z " />
+<glyph unicode="&#xfe;" horiz-adv-x="498" d="M20 645q0 2 2 16q1 6 2 6.5t8 1.5q120 9 123 9q5 0 6 -2.5t1 -12.5q1 -130 1 -321q0 -10 2 -10q1 0 19 14q50 37 108 37q83 0 127 -53t44 -136q0 -81 -57.5 -142t-151.5 -61q-31 0 -66 11l-7.5 2.5t-6.5 2.5t-5 1t-4 -1.5t-1 -4.5l3 -189q2 -67 6 -67h70q8 0 10.5 -3 t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -49 1t-57 1q-12 0 -46.5 -1t-50.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h55q3 0 3 160l-1 204q0 417 -9 517q-7 18 -11 19q-3 0 -24.5 -2t-23.5 -2q-8 0 -8 3zM164 52q0 -17 30 -29.5t57 -12.5q66 0 103 55t37 122q0 72 -37 116.5 t-93 44.5q-36 0 -64 -13q-33 -17 -33 -33v-250z" />
+<glyph unicode="&#xff;" horiz-adv-x="467" d="M120 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM280 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 368q0 6 0.5 8t3.5 4t9 2q8 0 33 -1t41 -1q13 0 46.5 1 t41.5 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-19q-26 0 -26 -10q0 -12 31 -97.5t58 -151.5q16 -40 19 -40t17 40q82 231 82 252q0 7 -31 7h-23q-8 0 -10.5 3t-2.5 10q0 14 14 14q9 0 31.5 -1t32.5 -1q12 0 30 1t25 1q13 0 13 -14q0 -13 -12 -13h-14q-10 0 -13 -10 q-38 -105 -133 -342q-1 -3 -7 -19.5t-15.5 -46t-17.5 -51.5q-2 -4 -5.5 -15.5t-5 -14.5t-4.5 -11.5t-5 -12t-5.5 -11t-7 -12.5t-8 -12.5t-10.5 -14.5t-13 -16q-17 -22 -26 -27q-6 -4 -15 -8q-54 -26 -62 -26q-18 0 -18 20q0 15 19 42q7 11 28 18l22.5 7.5t29.5 11t22 13.5 t16 19q44 109 44 121q0 8 -28 77l-72.5 174l-55.5 132q-4 11 -7 13t-14 2h-11q-8 0 -10.5 3t-2.5 10z" />
+<glyph unicode="&#x100;" horiz-adv-x="698" d="M269 788v23q0 6 1.5 7t7.5 1h187q5 0 6.5 -1t1.5 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM30 15q0 9 3 10.5t15 1.5h28q3 0 17.5 30.5t34.5 77.5l39 92l35.5 84.5l19.5 46.5l106 246q4 9 17 25.5t19 30.5q12 27 19 27t9 -7l120 -337l19 -53l21.5 -60.5l21 -58.5 l21 -56.5t17.5 -44t15 -32.5t8 -11h32q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5t-50.5 1.5q-16 0 -58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h54q1 0 1 3q0 30 -70 226q-6 17 -10 18q-3 1 -10 1h-201q-5 0 -8 -0.5t-5 -1t-4 -3t-2 -3t-2 -5 t-2 -5.5q-81 -206 -81 -227q0 -3 1 -3h78q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -43.5 1.5t-48.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5zM231 305q0 -6 16 -6h179q13 0 13 5q0 1 -4 13l-83 243q-6 19 -8 19t-10 -19l-98 -240q-5 -12 -5 -15z" />
+<glyph unicode="&#x101;" horiz-adv-x="419" d="M99 518v23q0 6 1.5 7t7.5 1h187q5 0 6.5 -1t1.5 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM35 71q0 42 37 74t83.5 48t103.5 26q8 1 8 16q0 27 -0.5 42t-5 36.5t-13.5 32.5t-26 19.5t-42 8.5q-18 0 -31 -5q-20 -9 -25.5 -22t-6.5 -45q0 -16 -7 -21q-11 -8 -30.5 -18 t-22.5 -10q-8 0 -8 15q0 57 49 94t103 37q72 0 101.5 -33.5t29.5 -97.5q0 -29 -3 -113t-3 -91q0 -30 22 -30q2 0 19.5 12t18.5 12q3 0 8 -5.5t5 -9.5q0 -5 -65 -49q-15 -11 -26 -11q-10 0 -17.5 6t-11.5 14t-6.5 16t-3.5 14l-1 6q-1 0 -4 -2t-8 -5t-8 -5q-68 -41 -115 -41 q-46 0 -72 23t-26 62zM105 99q0 -26 17.5 -47.5t47.5 -21.5q20 0 44 6t38.5 12.5t14.5 9.5v134q0 11 -6 11q-14 0 -62 -15q-94 -30 -94 -89z" />
+<glyph unicode="&#x102;" horiz-adv-x="698" d="M268 832q0 6 1 6h17q1 0 2 -6t4.5 -15t10.5 -17.5t24.5 -14.5t43.5 -6t43.5 6t24.5 14.5t10.5 17.5t4.5 15t2 6h17q1 0 1 -6q0 -45 -26 -74t-77 -29t-77 29t-26 74zM30 15q0 9 3 10.5t15 1.5h28q3 0 17.5 30.5t34.5 77.5l39 92l35.5 84.5l19.5 46.5l106 246q4 9 17 25.5 t19 30.5q12 27 19 27t9 -7l120 -337l19 -53l21.5 -60.5l21 -58.5l21 -56.5t17.5 -44t15 -32.5t8 -11h32q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5t-50.5 1.5q-16 0 -58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h54q1 0 1 3q0 30 -70 226 q-6 17 -10 18q-3 1 -10 1h-201q-5 0 -8 -0.5t-5 -1t-4 -3t-2 -3t-2 -5t-2 -5.5q-81 -206 -81 -227q0 -3 1 -3h78q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -43.5 1.5t-48.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5zM231 305q0 -6 16 -6h179q13 0 13 5q0 1 -4 13 l-83 243q-6 19 -8 19t-10 -19l-98 -240q-5 -12 -5 -15z" />
+<glyph unicode="&#x103;" horiz-adv-x="419" d="M98 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84zM35 71q0 42 37 74t83.5 48t103.5 26q8 1 8 16q0 27 -0.5 42t-5 36.5t-13.5 32.5t-26 19.5t-42 8.5 q-18 0 -31 -5q-20 -9 -25.5 -22t-6.5 -45q0 -16 -7 -21q-11 -8 -30.5 -18t-22.5 -10q-8 0 -8 15q0 57 49 94t103 37q72 0 101.5 -33.5t29.5 -97.5q0 -29 -3 -113t-3 -91q0 -30 22 -30q2 0 19.5 12t18.5 12q3 0 8 -5.5t5 -9.5q0 -5 -65 -49q-15 -11 -26 -11q-10 0 -17.5 6 t-11.5 14t-6.5 16t-3.5 14l-1 6q-1 0 -4 -2t-8 -5t-8 -5q-68 -41 -115 -41q-46 0 -72 23t-26 62zM105 99q0 -26 17.5 -47.5t47.5 -21.5q20 0 44 6t38.5 12.5t14.5 9.5v134q0 11 -6 11q-14 0 -62 -15q-94 -30 -94 -89z" />
+<glyph unicode="&#x104;" horiz-adv-x="698" d="M30 15q0 9 3 10.5t15 1.5h28q4 0 23.5 44l60 140l62.5 147l106 246q4 9 17 25.5t19 30.5q12 27 19 27t9 -7l120 -337l19 -53l21.5 -60.5l21 -58.5l21 -56.5t17.5 -44t15 -32.5t8 -11h32q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5t-50.5 1.5q-4 0 -8 -4 q-84 -86 -84 -163q0 -33 20 -56.5t44 -23.5q23 0 43 11t31 22l11 11q1 0 6 -6t5 -7q0 -3 -15 -19t-47.5 -34t-68.5 -18q-32 0 -62.5 29.5t-30.5 63.5q0 12 1.5 23.5t6.5 23.5t9 20.5t13.5 21l14.5 19.5t18 20.5l18.5 19l22 21.5t22.5 21q3 3 -1 3q-58 -2 -80 -2 q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h54q1 0 1 3q0 30 -70 226q-6 17 -10 18q-3 1 -10 1h-201q-5 0 -8 -0.5t-5 -1t-4 -3t-2 -3t-2 -5t-2 -5.5q-81 -206 -81 -227q0 -3 1 -3h78q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -43.5 1.5t-48.5 1.5t-39 -1.5t-34 -1.5 q-10 0 -12 2.5t-2 15.5zM231 305q0 -6 16 -6h179q13 0 13 5q0 1 -4 13l-83 243q-6 19 -8 19t-10 -19l-98 -240q-5 -12 -5 -15z" />
+<glyph unicode="&#x105;" horiz-adv-x="419" d="M35 71q0 42 37 74t83.5 48t103.5 26q8 1 8 16q0 27 -0.5 42t-5 36.5t-13.5 32.5t-26 19.5t-42 8.5q-18 0 -31 -5q-20 -9 -25.5 -22t-6.5 -45q0 -16 -7 -21q-11 -8 -30.5 -18t-22.5 -10q-8 0 -8 15q0 57 49 94t103 37q72 0 101.5 -33.5t29.5 -97.5q0 -29 -3 -113t-3 -91 q0 -30 22 -30q2 0 19.5 12t18.5 12q3 0 8 -5.5t5 -9.5q0 -1 -47 -37q-28 -21 -41.5 -32.5t-38.5 -36t-36.5 -50.5t-11.5 -54q0 -33 20 -56.5t44 -23.5q23 0 43 11t31 22l11 11q1 0 6 -6t5 -7q0 -3 -15 -19t-47.5 -34t-68.5 -18q-32 0 -62.5 29.5t-30.5 63.5q0 74 126 173 l7 7l-7 7q-7 7 -11 18.5t-5 19.5t-2 8t-4 -2t-8 -5t-8 -5q-68 -41 -115 -41q-46 0 -72 23t-26 62zM105 99q0 -26 17.5 -47.5t47.5 -21.5q20 0 44 6t38.5 12.5t14.5 9.5v134q0 11 -6 11q-14 0 -62 -15q-94 -30 -94 -89z" />
+<glyph unicode="&#x106;" horiz-adv-x="731" d="M385 731q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2zM45 335q0 154 101.5 249.5t255.5 95.5q19 0 37.5 -2t34.5 -5.5t29.5 -8t27 -10.5l23 -10.5t19.5 -11l15 -10l12.5 -8.5t8.5 -6q5 -4 6.5 -5t5 -2t4.5 1.5t1 8.5v27q0 9 2 11 t13 2q12 0 16 -2t4 -11q0 -5 -2 -84t-2 -109q0 -9 -3 -12.5t-13 -3.5q-13 0 -16 2.5t-3 9.5q0 1 2 43t2 47t-11 18t-32.5 30t-48.5 33t-64.5 27t-74.5 11q-108 0 -178 -90t-70 -227q0 -127 81 -218.5t196 -91.5q51 0 99 15t71.5 30.5t24.5 22.5l13 113q1 10 5.5 13t16.5 1 q12 -1 12 -13q0 -13 -16 -133q-1 -10 -36.5 -30.5t-97.5 -39t-120 -18.5q-71 0 -133 21.5t-111.5 63t-78 110.5t-28.5 156z" />
+<glyph unicode="&#x107;" horiz-adv-x="412" d="M216 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM35 177q0 104 63 163t143 59q50 0 91.5 -29t41.5 -67q0 -13 -10 -20q-17 -13 -30 -13t-17 11q-2 5 -8.5 25.5t-10 27t-12 18.5t-21 16t-30.5 4 q-60 0 -97.5 -53t-37.5 -117q0 -68 40.5 -118t113.5 -50q30 0 58.5 7.5t44.5 15t18 7.5q7 0 7 -8q0 -2 -6.5 -9t-20.5 -17t-32 -18.5t-44.5 -15t-54.5 -6.5q-87 0 -138 51t-51 136z" />
+<glyph unicode="&#x108;" horiz-adv-x="731" d="M284 731l4 6l79 89q12 13 16 13h24q4 0 16 -13l79 -89q4 -4 4 -6t-6 -2h-9q-1 0 -11 6l-81 45q-4 2 -8 0l-81 -45q-10 -6 -11 -6h-9q-6 0 -6 2zM45 335q0 154 101.5 249.5t255.5 95.5q19 0 37.5 -2t34.5 -5.5t29.5 -8t27 -10.5l23 -10.5t19.5 -11l15 -10l12.5 -8.5 t8.5 -6q5 -4 6.5 -5t5 -2t4.5 1.5t1 8.5v27q0 9 2 11t13 2q12 0 16 -2t4 -11q0 -5 -2 -84t-2 -109q0 -9 -3 -12.5t-13 -3.5q-13 0 -16 2.5t-3 9.5q0 1 2 43t2 47t-11 18t-32.5 30t-48.5 33t-64.5 27t-74.5 11q-108 0 -178 -90t-70 -227q0 -127 81 -218.5t196 -91.5 q51 0 99 15t71.5 30.5t24.5 22.5l13 113q1 10 5.5 13t16.5 1q12 -1 12 -13q0 -13 -16 -133q-1 -10 -36.5 -30.5t-97.5 -39t-120 -18.5q-71 0 -133 21.5t-111.5 63t-78 110.5t-28.5 156z" />
+<glyph unicode="&#x109;" horiz-adv-x="412" d="M121 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM35 177q0 104 63 163t143 59q50 0 91.5 -29t41.5 -67q0 -13 -10 -20q-17 -13 -30 -13t-17 11 q-2 5 -8.5 25.5t-10 27t-12 18.5t-21 16t-30.5 4q-60 0 -97.5 -53t-37.5 -117q0 -68 40.5 -118t113.5 -50q30 0 58.5 7.5t44.5 15t18 7.5q7 0 7 -8q0 -2 -6.5 -9t-20.5 -17t-32 -18.5t-44.5 -15t-54.5 -6.5q-87 0 -138 51t-51 136z" />
+<glyph unicode="&#x10a;" horiz-adv-x="731" d="M344 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM45 335q0 154 101.5 249.5t255.5 95.5q19 0 37.5 -2t34.5 -5.5t29.5 -8t27 -10.5l23 -10.5t19.5 -11l15 -10l12.5 -8.5t8.5 -6q5 -4 6.5 -5t5 -2t4.5 1.5t1 8.5v27 q0 9 2 11t13 2q12 0 16 -2t4 -11q0 -5 -2 -84t-2 -109q0 -9 -3 -12.5t-13 -3.5q-13 0 -16 2.5t-3 9.5q0 1 2 43t2 47t-11 18t-32.5 30t-48.5 33t-64.5 27t-74.5 11q-108 0 -178 -90t-70 -227q0 -127 81 -218.5t196 -91.5q51 0 99 15t71.5 30.5t24.5 22.5l13 113q1 10 5.5 13 t16.5 1q12 -1 12 -13q0 -13 -16 -133q-1 -10 -36.5 -30.5t-97.5 -39t-120 -18.5q-71 0 -133 21.5t-111.5 63t-78 110.5t-28.5 156z" />
+<glyph unicode="&#x10b;" horiz-adv-x="412" d="M180 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM35 177q0 104 63 163t143 59q50 0 91.5 -29t41.5 -67q0 -13 -10 -20q-17 -13 -30 -13t-17 11q-2 5 -8.5 25.5t-10 27t-12 18.5t-21 16t-30.5 4q-60 0 -97.5 -53 t-37.5 -117q0 -68 40.5 -118t113.5 -50q30 0 58.5 7.5t44.5 15t18 7.5q7 0 7 -8q0 -2 -6.5 -9t-20.5 -17t-32 -18.5t-44.5 -15t-54.5 -6.5q-87 0 -138 51t-51 136z" />
+<glyph unicode="&#x10c;" horiz-adv-x="731" d="M284 837q0 2 6 2h9q1 0 11 -6l81 -45q4 -2 8 0l81 45q10 6 11 6h9q6 0 6 -2l-4 -6l-79 -89q-12 -13 -16 -13h-24q-4 0 -16 13l-79 89q-4 4 -4 6zM45 335q0 154 101.5 249.5t255.5 95.5q19 0 37.5 -2t34.5 -5.5t29.5 -8t27 -10.5l23 -10.5t19.5 -11l15 -10l12.5 -8.5 t8.5 -6q5 -4 6.5 -5t5 -2t4.5 1.5t1 8.5v27q0 9 2 11t13 2q12 0 16 -2t4 -11q0 -5 -2 -84t-2 -109q0 -9 -3 -12.5t-13 -3.5q-13 0 -16 2.5t-3 9.5q0 1 2 43t2 47t-11 18t-32.5 30t-48.5 33t-64.5 27t-74.5 11q-108 0 -178 -90t-70 -227q0 -127 81 -218.5t196 -91.5 q51 0 99 15t71.5 30.5t24.5 22.5l13 113q1 10 5.5 13t16.5 1q12 -1 12 -13q0 -13 -16 -133q-1 -10 -36.5 -30.5t-97.5 -39t-120 -18.5q-71 0 -133 21.5t-111.5 63t-78 110.5t-28.5 156z" />
+<glyph unicode="&#x10d;" horiz-adv-x="412" d="M121 597q0 2 5 2h12l8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM35 177q0 104 63 163t143 59q50 0 91.5 -29t41.5 -67q0 -13 -10 -20q-17 -13 -30 -13t-17 11 q-2 5 -8.5 25.5t-10 27t-12 18.5t-21 16t-30.5 4q-60 0 -97.5 -53t-37.5 -117q0 -68 40.5 -118t113.5 -50q30 0 58.5 7.5t44.5 15t18 7.5q7 0 7 -8q0 -2 -6.5 -9t-20.5 -17t-32 -18.5t-44.5 -15t-54.5 -6.5q-87 0 -138 51t-51 136z" />
+<glyph unicode="&#x10e;" horiz-adv-x="758" d="M231 837q0 2 6 2h9q1 0 11 -6l81 -45q4 -2 8 0l81 45q10 6 11 6h9q6 0 6 -2l-4 -6l-79 -89q-12 -13 -16 -13h-24q-4 0 -16 13l-79 89q-4 4 -4 6zM35 10q0 11 3 13t14 2h66q4 0 8.5 200t4.5 338q0 78 -2 78l-70 -2q-5 0 -7.5 0.5t-4 3t-1.5 8.5v7.5t1.5 5t4 3t7.5 0.5 q1 0 11.5 -0.5t26.5 -0.5h31q41 0 114.5 6t89.5 6q166 0 273.5 -93t107.5 -250q0 -105 -49.5 -183.5t-126.5 -116.5t-169 -39q-32 0 -97 2t-98 2q-16 0 -70 -2t-57 -2q-8 0 -9.5 2t-1.5 12zM213 86q0 -59 2 -60q6 -4 57 -4q69 0 124.5 14t90 34.5t60 53t37.5 59t19 63.5 t8 56t1 46q0 73 -35.5 141.5t-106.5 115.5t-159 47q-67 0 -90 -6q-7 -2 -7 -146q-1 -138 -1 -414z" />
+<glyph unicode="&#x10f;" horiz-adv-x="499" d="M458 491q0 2 2.5 27t5.5 60.5t5 54.5q3 33 35 33t32 -29q0 -5 -3 -13l-51 -124q-6 -12 -8 -12h-15q-3 0 -3 3zM30 181q0 85 58.5 141.5t144.5 56.5q17 0 33.5 -2.5t28.5 -6.5t21 -8t14 -6l6 -3q6 0 6 18q0 48 -2 113.5t-4.5 112t-3.5 46.5t-32 -4.5t-35 -4.5t-5 2t1 13 q2 12 8 13q24 3 56.5 7.5t52.5 7.5t22 3q7 0 8.5 -3.5t1.5 -19.5q0 -7 -1.5 -62.5t-3 -164.5t-1.5 -246q0 -48 2 -120q1 -29 6 -39t17 -10q4 0 34 4q6 1 8.5 0t2.5 -8q0 -8 -0.5 -11t-3 -5t-9.5 -3l-115 -15q-6 0 -6 9q0 1 0.5 17.5t0.5 18.5q0 8 -2.5 9t-12.5 -5 q-63 -39 -120 -39q-75 0 -125.5 47t-50.5 147zM103 188q0 -74 37.5 -119t114.5 -45q23 0 55 10.5t32 22.5v250q0 12 -31 32t-66 20q-64 0 -103 -50.5t-39 -120.5z" />
+<glyph unicode="&#x110;" horiz-adv-x="758" d="M35 10q0 11 3 13t14 2h66q5 0 11 298q0 8 -7 8h-79q-2 0 -2.5 12t2.5 12h76q10 0 10 10q2 148 2 198q0 78 -2 78l-70 -2q-5 0 -7.5 0.5t-4 3t-1.5 8.5v7.5t1.5 5t4 3t7.5 0.5q1 0 11.5 -0.5t26.5 -0.5h31q41 0 114.5 6t89.5 6q166 0 273.5 -93t107.5 -250 q0 -105 -49.5 -183.5t-126.5 -116.5t-169 -39q-32 0 -97 2t-98 2q-16 0 -70 -2t-57 -2q-8 0 -9.5 2t-1.5 12zM213 86q0 -59 2 -60q6 -4 57 -4q69 0 124.5 14t90 34.5t60 53t37.5 59t19 63.5t8 56t1 46q0 73 -35.5 141.5t-106.5 115.5t-159 47q-67 0 -90 -6q-7 -2 -7 -146 q0 -22 -0.5 -67t-0.5 -68q0 -7 1.5 -8.5t9.5 -1.5h208q3 0 3 -12t-3 -12h-212q-7 0 -7 -8v-237z" />
+<glyph unicode="&#x111;" horiz-adv-x="499" d="M30 181q0 85 58.5 141.5t144.5 56.5q17 0 33.5 -2.5t28.5 -6.5t21 -8t14 -6l6 -3q6 0 6 18q0 36 -2 116q0 6 -9 6h-151q-2 0 -2.5 12t2.5 12h152q5 0 6 1.5t1 7.5q-4 117 -7 117q-1 0 -32 -4.5t-35 -4.5t-5 2t1 13q2 12 8 13q24 3 56.5 7.5t52.5 7.5t22 3q7 0 8.5 -3.5 t1.5 -19.5q0 -6 -0.5 -23t-1.5 -46.5t-1 -61.5q0 -9 6 -9h58q3 0 3 -12t-3 -12h-58q-7 0 -7 -6q-2 -146 -2 -303q0 -48 2 -120q1 -29 6 -39t17 -10q4 0 34 4q6 1 8.5 0t2.5 -8q0 -8 -0.5 -11t-3 -5t-9.5 -3l-115 -15q-6 0 -6 9q0 1 0.5 17.5t0.5 18.5q0 8 -2.5 9t-12.5 -5 q-63 -39 -120 -39q-75 0 -125.5 47t-50.5 147zM103 188q0 -74 37.5 -119t114.5 -45q23 0 55 10.5t32 22.5v250q0 12 -31 32t-66 20q-64 0 -103 -50.5t-39 -120.5z" />
+<glyph unicode="&#x112;" horiz-adv-x="605" d="M214 788v23q0 6 1.5 7t7.5 1h187q6 0 7 -1t1 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM40 15q0 9 2.5 10.5t14.5 1.5h61q7 0 7 75v96q0 31 -0.5 72t-1 78t-1 69.5t-1 53t-0.5 21.5q0 144 -11 144h-43q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l43 -1q43 -2 64 -2 q28 0 128.5 1.5t120.5 1.5q47 0 56.5 1.5t10.5 10.5v1q1 12 13 12q11 0 14 -2t3 -9q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 7 -272 7q-7 0 -7 -128q0 -42 2 -142q0 -10 1.5 -13t10.5 -3h167q55 0 55 16v50q0 9 17 9q14 0 14 -8 q0 -1 -1 -29t-1 -49t1 -50t1 -33q0 -8 -13 -8q-18 0 -18 9v46q0 7 -2 10t-15 6.5t-38 3.5h-163q-12 0 -14 -2t-2 -13q6 -276 12 -276q27 0 68 0.5l79.5 1t73.5 0.5t57 0.5t23 0.5q12 0 15 3t4 20q1 14 3 87q0 8 14 8q17 0 17 -9q0 -28 -1.5 -77t-1.5 -61q0 -11 -22 -11 q-11 0 -182.5 1.5t-187.5 1.5t-63.5 -1.5t-58.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="&#x113;" horiz-adv-x="424" d="M126 518v23q0 6 1.5 7t7.5 1h187q6 0 7 -1t1 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM30 182q0 91 57 152.5t147 61.5q71 0 110 -46t39 -113q0 -5 -20.5 -8.5t-33.5 -3.5q-6 0 -113 2.5t-111 2.5q-5 0 -5 -36q0 -76 44.5 -120.5t104.5 -44.5q22 0 43.5 6.5 t36 16.5t25.5 19.5t18 16.5l6 6q2 0 9 -6.5t7 -8.5q0 -5 -21 -26.5t-64 -44.5t-88 -23q-91 0 -141 53.5t-50 143.5zM105 255q0 -8 12 -8q57 0 157 4q40 1 40 4q0 65 -29.5 92t-62.5 27q-46 0 -80 -38.5t-37 -80.5z" />
+<glyph unicode="&#x114;" horiz-adv-x="605" d="M213 832q0 6 1 6h17q1 0 2 -6t4.5 -15t10.5 -17.5t24.5 -14.5t43.5 -6t43.5 6t24.5 14.5t10.5 17.5t4.5 15t2 6h17q1 0 1 -6q0 -45 -26 -74t-77 -29t-77 29t-26 74zM40 15q0 9 2.5 10.5t14.5 1.5h61q7 0 7 75v96q0 31 -0.5 72t-1 78t-1 69.5t-1 53t-0.5 21.5 q0 144 -11 144h-43q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l43 -1q43 -2 64 -2q28 0 128.5 1.5t120.5 1.5q47 0 56.5 1.5t10.5 10.5v1q1 12 13 12q11 0 14 -2t3 -9q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 7 -272 7q-7 0 -7 -128 q0 -42 2 -142q0 -10 1.5 -13t10.5 -3h167q55 0 55 16v50q0 9 17 9q14 0 14 -8q0 -1 -1 -29t-1 -49t1 -50t1 -33q0 -8 -13 -8q-18 0 -18 9v46q0 7 -2 10t-15 6.5t-38 3.5h-163q-12 0 -14 -2t-2 -13q6 -276 12 -276q27 0 68 0.5l79.5 1t73.5 0.5t57 0.5t23 0.5q12 0 15 3t4 20 q1 14 3 87q0 8 14 8q17 0 17 -9q0 -28 -1.5 -77t-1.5 -61q0 -11 -22 -11q-11 0 -182.5 1.5t-187.5 1.5t-63.5 -1.5t-58.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="&#x115;" horiz-adv-x="424" d="M125 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84zM30 182q0 91 57 152.5t147 61.5q71 0 110 -46t39 -113q0 -5 -20.5 -8.5t-33.5 -3.5q-6 0 -113 2.5 t-111 2.5q-5 0 -5 -36q0 -76 44.5 -120.5t104.5 -44.5q22 0 43.5 6.5t36 16.5t25.5 19.5t18 16.5l6 6q2 0 9 -6.5t7 -8.5q0 -5 -21 -26.5t-64 -44.5t-88 -23q-91 0 -141 53.5t-50 143.5zM105 255q0 -8 12 -8q57 0 157 4q40 1 40 4q0 65 -29.5 92t-62.5 27q-46 0 -80 -38.5 t-37 -80.5z" />
+<glyph unicode="&#x116;" horiz-adv-x="605" d="M265 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM40 15q0 9 2.5 10.5t14.5 1.5h61q7 0 7 75v96q0 31 -0.5 72t-1 78t-1 69.5t-1 53t-0.5 21.5q0 144 -11 144h-43q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l43 -1 q43 -2 64 -2q28 0 128.5 1.5t120.5 1.5q47 0 56.5 1.5t10.5 10.5v1q1 12 13 12q11 0 14 -2t3 -9q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 7 -272 7q-7 0 -7 -128q0 -42 2 -142q0 -10 1.5 -13t10.5 -3h167q55 0 55 16v50q0 9 17 9 q14 0 14 -8q0 -1 -1 -29t-1 -49t1 -50t1 -33q0 -8 -13 -8q-18 0 -18 9v46q0 7 -2 10t-15 6.5t-38 3.5h-163q-12 0 -14 -2t-2 -13q6 -276 12 -276q27 0 68 0.5l79.5 1t73.5 0.5t57 0.5t23 0.5q12 0 15 3t4 20q1 14 3 87q0 8 14 8q17 0 17 -9q0 -28 -1.5 -77t-1.5 -61 q0 -11 -22 -11q-11 0 -182.5 1.5t-187.5 1.5t-63.5 -1.5t-58.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="&#x117;" horiz-adv-x="424" d="M177 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM30 182q0 91 57 152.5t147 61.5q71 0 110 -46t39 -113q0 -5 -20.5 -8.5t-33.5 -3.5q-6 0 -113 2.5t-111 2.5q-5 0 -5 -36q0 -76 44.5 -120.5t104.5 -44.5 q22 0 43.5 6.5t36 16.5t25.5 19.5t18 16.5l6 6q2 0 9 -6.5t7 -8.5q0 -5 -21 -26.5t-64 -44.5t-88 -23q-91 0 -141 53.5t-50 143.5zM105 255q0 -8 12 -8q57 0 157 4q40 1 40 4q0 65 -29.5 92t-62.5 27q-46 0 -80 -38.5t-37 -80.5z" />
+<glyph unicode="&#x118;" horiz-adv-x="605" d="M40 15q0 9 2.5 10.5t14.5 1.5h61q7 0 7 75v96q0 31 -0.5 72t-1 78t-1 69.5t-1 53t-0.5 21.5q0 144 -11 144h-43q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l43 -1q43 -2 64 -2q28 0 128.5 1.5t120.5 1.5q47 0 56.5 1.5t10.5 10.5v1q1 12 13 12q11 0 14 -2t3 -9 q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 7 -272 7q-7 0 -7 -128q0 -42 2 -142q0 -10 1.5 -13t10.5 -3h167q55 0 55 16v50q0 9 17 9q14 0 14 -8q0 -1 -1 -29t-1 -49t1 -50t1 -33q0 -8 -13 -8q-18 0 -18 9v46q0 7 -2 10t-15 6.5t-38 3.5 h-163q-12 0 -14 -2t-2 -13q6 -276 12 -276q27 0 68 0.5l79.5 1t73.5 0.5t57 0.5t23 0.5q12 0 15 3t4 20q1 14 3 87q0 8 14 8q17 0 17 -9q0 -28 -1.5 -77t-1.5 -61q0 -11 -22 -11h-62q-14 0 -23 -9q-76 -82 -76 -155q0 -33 20 -56.5t44 -23.5q23 0 43 11t31 22l11 11 q1 0 6 -6t5 -7q0 -3 -15 -19t-47.5 -34t-68.5 -18q-32 0 -62.5 29.5t-30.5 63.5q0 21 7.5 42t13.5 33.5t29 37.5t29.5 31.5l38.5 37.5q8 6 7.5 8t-13.5 2l-257 2q-16 0 -63.5 -1.5t-58.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="&#x119;" horiz-adv-x="424" d="M30 182q0 91 57 152.5t147 61.5q71 0 110 -46t39 -113q0 -5 -20.5 -8.5t-33.5 -3.5q-6 0 -113 2.5t-111 2.5q-5 0 -5 -36q0 -76 44.5 -120.5t104.5 -44.5q22 0 43.5 6.5t36 16.5t25.5 19.5t18 16.5l6 6q2 0 9 -6.5t7 -8.5q0 -10 -48 -49q-45 -35 -83.5 -89t-38.5 -108 q0 -33 20 -56.5t44 -23.5q23 0 43 11t31 22l11 11q1 0 6 -6t5 -7q0 -3 -15 -19t-47.5 -34t-68.5 -18q-32 0 -62.5 29.5t-30.5 63.5q0 16 2 29.5t8.5 27t11 22t17.5 23.5l19 21.5t25 25.5l27 27q2 2 9 7q12 9 7 8q-1 0 -3 -1q-31 -11 -62 -11q-91 0 -141 53.5t-50 143.5z M105 255q0 -8 12 -8q57 0 157 4q40 1 40 4q0 65 -29.5 92t-62.5 27q-46 0 -80 -38.5t-37 -80.5z" />
+<glyph unicode="&#x11a;" horiz-adv-x="605" d="M205 837q0 2 6 2h9q1 0 11 -6l81 -45q4 -2 8 0l81 45q10 6 11 6h9q6 0 6 -2l-4 -6l-79 -89q-12 -13 -16 -13h-24q-4 0 -16 13l-79 89q-4 4 -4 6zM40 15q0 9 2.5 10.5t14.5 1.5h61q7 0 7 75v96q0 31 -0.5 72t-1 78t-1 69.5t-1 53t-0.5 21.5q0 144 -11 144h-43 q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l43 -1q43 -2 64 -2q28 0 128.5 1.5t120.5 1.5q47 0 56.5 1.5t10.5 10.5v1q1 12 13 12q11 0 14 -2t3 -9q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 7 -272 7q-7 0 -7 -128q0 -42 2 -142 q0 -10 1.5 -13t10.5 -3h167q55 0 55 16v50q0 9 17 9q14 0 14 -8q0 -1 -1 -29t-1 -49t1 -50t1 -33q0 -8 -13 -8q-18 0 -18 9v46q0 7 -2 10t-15 6.5t-38 3.5h-163q-12 0 -14 -2t-2 -13q6 -276 12 -276q27 0 68 0.5l79.5 1t73.5 0.5t57 0.5t23 0.5q12 0 15 3t4 20q1 14 3 87 q0 8 14 8q17 0 17 -9q0 -28 -1.5 -77t-1.5 -61q0 -11 -22 -11q-11 0 -182.5 1.5t-187.5 1.5t-63.5 -1.5t-58.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="&#x11b;" horiz-adv-x="424" d="M118 597q0 2 5 2h12q1 0 8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM30 182q0 91 57 152.5t147 61.5q71 0 110 -46t39 -113q0 -5 -20.5 -8.5t-33.5 -3.5 q-6 0 -113 2.5t-111 2.5q-5 0 -5 -36q0 -76 44.5 -120.5t104.5 -44.5q22 0 43.5 6.5t36 16.5t25.5 19.5t18 16.5l6 6q2 0 9 -6.5t7 -8.5q0 -5 -21 -26.5t-64 -44.5t-88 -23q-91 0 -141 53.5t-50 143.5zM105 255q0 -8 12 -8q57 0 157 4q40 1 40 4q0 65 -29.5 92t-62.5 27 q-46 0 -80 -38.5t-37 -80.5z" />
+<glyph unicode="&#x11c;" horiz-adv-x="764" d="M293 731l4 6l79 89q12 13 16 13h24q4 0 16 -13l79 -89q4 -4 4 -6t-6 -2h-9q-1 0 -11 6l-81 45q-4 2 -8 0l-81 -45q-10 -6 -11 -6h-9q-6 0 -6 2zM45 335q0 160 102.5 251t260.5 91q117 0 201 -59q5 -4 6.5 -5t5 -2t4.5 1.5t1 8.5v25q0 9 2 11t13 2q12 0 15.5 -2t3.5 -11 q0 -2 -1.5 -76.5t-1.5 -104.5q0 -9 -3 -12.5t-13 -3.5q-13 0 -16 2.5t-3 9.5q0 1 2 38t2 42t-9.5 17t-29.5 27.5t-45.5 30t-62.5 24.5t-75 10q-109 0 -183 -91t-74 -226q0 -130 79 -225.5t198 -95.5q51 0 91 12t55.5 24.5t16.5 19.5q3 26 3 94q0 58 -10 58h-87q-8 0 -8 12 q0 18 9 18q15 0 64.5 -1.5t67.5 -1.5q17 0 42.5 1.5t47.5 1.5q8 0 8 -14q0 -16 -8 -16h-31q-9 0 -11 -13t-2 -45q0 -12 -0.5 -42t-0.5 -47q0 -10 -39 -31.5t-106.5 -40.5t-129.5 -19q-71 0 -133 21t-111.5 62.5t-78 110.5t-28.5 159z" />
+<glyph unicode="&#x11d;" horiz-adv-x="425" d="M95 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM15 -173q0 32 25.5 58t54 38.5t57.5 18.5q23 5 23 6t-21 1h-57q-31 0 -40 19q-9 21 -9 48 q0 28 18 32q33 8 76 20q38 11 38 12l-2 1q-3 1 -8 2t-9 2q-127 38 -127 161q0 64 53.5 106.5t122.5 42.5q22 0 42 -5.5t33.5 -12.5t24 -14.5t16.5 -12.5l6 -6q2 0 14.5 4.5t29.5 9t31 5.5q2 0 5.5 -9.5t3.5 -18.5q0 -6 -3 -6q-11 -1 -35 -6t-24 -8q0 -1 3 -10.5t6.5 -26 t3.5 -35.5q0 -60 -29 -95t-86 -57q-27 -11 -173 -52q-4 -1 -4 -9t5.5 -18.5t8.5 -11.5q17 -1 57.5 -2.5t64.5 -3t60.5 -6t59 -12.5t45 -20.5t33.5 -32.5t11 -47q0 -76 -61 -121t-159 -45q-44 0 -85 12t-70.5 39.5t-29.5 65.5zM60 -166q0 -46 44 -72t95 -26q66 0 115 28 t49 88q0 27 -29 46t-67 26.5t-78 7.5q-43 0 -86 -26.5t-43 -71.5zM98 250q0 -65 41 -110t68 -45q33 0 65.5 43t32.5 106q0 59 -27 92.5t-73 33.5q-43 0 -75 -35.5t-32 -84.5z" />
+<glyph unicode="&#x11e;" horiz-adv-x="764" d="M301 832q0 6 1 6h17q1 0 2 -6t4.5 -15t10.5 -17.5t24.5 -14.5t43.5 -6t43.5 6t24.5 14.5t10.5 17.5t4.5 15t2 6h17q1 0 1 -6q0 -45 -26 -74t-77 -29t-77 29t-26 74zM45 335q0 160 102.5 251t260.5 91q117 0 201 -59q5 -4 6.5 -5t5 -2t4.5 1.5t1 8.5v25q0 9 2 11t13 2 q12 0 15.5 -2t3.5 -11q0 -2 -1.5 -76.5t-1.5 -104.5q0 -9 -3 -12.5t-13 -3.5q-13 0 -16 2.5t-3 9.5q0 1 2 38t2 42t-9.5 17t-29.5 27.5t-45.5 30t-62.5 24.5t-75 10q-109 0 -183 -91t-74 -226q0 -130 79 -225.5t198 -95.5q51 0 91 12t55.5 24.5t16.5 19.5q3 26 3 94 q0 58 -10 58h-87q-8 0 -8 12q0 18 9 18q15 0 64.5 -1.5t67.5 -1.5q17 0 42.5 1.5t47.5 1.5q8 0 8 -14q0 -16 -8 -16h-31q-9 0 -11 -13t-2 -45q0 -12 -0.5 -42t-0.5 -47q0 -10 -39 -31.5t-106.5 -40.5t-129.5 -19q-71 0 -133 21t-111.5 62.5t-78 110.5t-28.5 159z" />
+<glyph unicode="&#x11f;" horiz-adv-x="425" d="M102 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84zM15 -173q0 32 25.5 58t54 38.5t57.5 18.5q23 5 23 6t-21 1h-57q-31 0 -40 19q-9 21 -9 48 q0 28 18 32q33 8 76 20q38 11 38 12l-2 1q-3 1 -8 2t-9 2q-127 38 -127 161q0 64 53.5 106.5t122.5 42.5q22 0 42 -5.5t33.5 -12.5t24 -14.5t16.5 -12.5l6 -6q2 0 14.5 4.5t29.5 9t31 5.5q2 0 5.5 -9.5t3.5 -18.5q0 -6 -3 -6q-11 -1 -35 -6t-24 -8q0 -1 3 -10.5t6.5 -26 t3.5 -35.5q0 -60 -29 -95t-86 -57q-27 -11 -173 -52q-4 -1 -4 -9t5.5 -18.5t8.5 -11.5q17 -1 57.5 -2.5t64.5 -3t60.5 -6t59 -12.5t45 -20.5t33.5 -32.5t11 -47q0 -76 -61 -121t-159 -45q-44 0 -85 12t-70.5 39.5t-29.5 65.5zM60 -166q0 -46 44 -72t95 -26q66 0 115 28 t49 88q0 27 -29 46t-67 26.5t-78 7.5q-43 0 -86 -26.5t-43 -71.5zM98 250q0 -65 41 -110t68 -45q33 0 65.5 43t32.5 106q0 59 -27 92.5t-73 33.5q-43 0 -75 -35.5t-32 -84.5z" />
+<glyph unicode="&#x120;" horiz-adv-x="764" d="M353 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM45 335q0 160 102.5 251t260.5 91q117 0 201 -59q5 -4 6.5 -5t5 -2t4.5 1.5t1 8.5v25q0 9 2 11t13 2q12 0 15.5 -2t3.5 -11q0 -2 -1.5 -76.5t-1.5 -104.5 q0 -9 -3 -12.5t-13 -3.5q-13 0 -16 2.5t-3 9.5q0 1 2 38t2 42t-9.5 17t-29.5 27.5t-45.5 30t-62.5 24.5t-75 10q-109 0 -183 -91t-74 -226q0 -130 79 -225.5t198 -95.5q51 0 91 12t55.5 24.5t16.5 19.5q3 26 3 94q0 58 -10 58h-87q-8 0 -8 12q0 18 9 18q15 0 64.5 -1.5 t67.5 -1.5q17 0 42.5 1.5t47.5 1.5q8 0 8 -14q0 -16 -8 -16h-31q-9 0 -11 -13t-2 -45q0 -12 -0.5 -42t-0.5 -47q0 -10 -39 -31.5t-106.5 -40.5t-129.5 -19q-71 0 -133 21t-111.5 62.5t-78 110.5t-28.5 159z" />
+<glyph unicode="&#x121;" horiz-adv-x="425" d="M154 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM15 -173q0 32 25.5 58t54 38.5t57.5 18.5q23 5 23 6t-21 1h-57q-31 0 -40 19q-9 21 -9 48q0 28 18 32q33 8 76 20q38 11 38 12l-2 1q-3 1 -8 2t-9 2q-127 38 -127 161 q0 64 53.5 106.5t122.5 42.5q22 0 42 -5.5t33.5 -12.5t24 -14.5t16.5 -12.5l6 -6q2 0 14.5 4.5t29.5 9t31 5.5q2 0 5.5 -9.5t3.5 -18.5q0 -6 -3 -6q-11 -1 -35 -6t-24 -8q0 -1 3 -10.5t6.5 -26t3.5 -35.5q0 -60 -29 -95t-86 -57q-27 -11 -173 -52q-4 -1 -4 -9t5.5 -18.5 t8.5 -11.5q17 -1 57.5 -2.5t64.5 -3t60.5 -6t59 -12.5t45 -20.5t33.5 -32.5t11 -47q0 -76 -61 -121t-159 -45q-44 0 -85 12t-70.5 39.5t-29.5 65.5zM60 -166q0 -46 44 -72t95 -26q66 0 115 28t49 88q0 27 -29 46t-67 26.5t-78 7.5q-43 0 -86 -26.5t-43 -71.5zM98 250 q0 -65 41 -110t68 -45q33 0 65.5 43t32.5 106q0 59 -27 92.5t-73 33.5q-43 0 -75 -35.5t-32 -84.5z" />
+<glyph unicode="&#x122;" horiz-adv-x="764" d="M362 -225l15 10q15 10 29.5 25.5t14.5 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM45 335q0 160 102.5 251t260.5 91q117 0 201 -59q5 -4 6.5 -5t5 -2 t4.5 1.5t1 8.5v25q0 9 2 11t13 2q12 0 15.5 -2t3.5 -11q0 -2 -1.5 -76.5t-1.5 -104.5q0 -9 -3 -12.5t-13 -3.5q-13 0 -16 2.5t-3 9.5q0 1 2 38t2 42t-9.5 17t-29.5 27.5t-45.5 30t-62.5 24.5t-75 10q-109 0 -183 -91t-74 -226q0 -130 79 -225.5t198 -95.5q51 0 91 12 t55.5 24.5t16.5 19.5q3 26 3 94q0 58 -10 58h-87q-8 0 -8 12q0 18 9 18q15 0 64.5 -1.5t67.5 -1.5q17 0 42.5 1.5t47.5 1.5q8 0 8 -14q0 -16 -8 -16h-31q-9 0 -11 -13t-2 -45q0 -12 -0.5 -42t-0.5 -47q0 -10 -39 -31.5t-106.5 -40.5t-129.5 -19q-71 0 -133 21t-111.5 62.5 t-78 110.5t-28.5 159z" />
+<glyph unicode="&#x123;" horiz-adv-x="425" d="M148 502q0 31 24.5 62.5t48 48t29.5 16.5q4 0 7 -5.5t3 -10.5l-15 -10q-15 -10 -29.5 -25.5t-14.5 -29.5q0 -17 13.5 -30t26.5 -21.5t13 -12.5q0 -11 -18.5 -23t-24.5 -12q-12 0 -37.5 19.5t-25.5 33.5zM15 -173q0 32 25.5 58t54 38.5t57.5 18.5q23 5 23 6t-21 1h-57 q-31 0 -40 19q-9 21 -9 48q0 28 18 32q33 8 76 20q38 11 38 12l-2 1q-3 1 -8 2t-9 2q-127 38 -127 161q0 64 53.5 106.5t122.5 42.5q22 0 42 -5.5t33.5 -12.5t24 -14.5t16.5 -12.5l6 -6q2 0 14.5 4.5t29.5 9t31 5.5q2 0 5.5 -9.5t3.5 -18.5q0 -6 -3 -6q-11 -1 -35 -6t-24 -8 q0 -1 3 -10.5t6.5 -26t3.5 -35.5q0 -60 -29 -95t-86 -57q-27 -11 -173 -52q-4 -1 -4 -9t5.5 -18.5t8.5 -11.5q17 -1 57.5 -2.5t64.5 -3t60.5 -6t59 -12.5t45 -20.5t33.5 -32.5t11 -47q0 -76 -61 -121t-159 -45q-44 0 -85 12t-70.5 39.5t-29.5 65.5zM60 -166q0 -46 44 -72 t95 -26q66 0 115 28t49 88q0 27 -29 46t-67 26.5t-78 7.5q-43 0 -86 -26.5t-43 -71.5zM98 250q0 -65 41 -110t68 -45q33 0 65.5 43t32.5 106q0 59 -27 92.5t-73 33.5q-43 0 -75 -35.5t-32 -84.5z" />
+<glyph unicode="&#x124;" horiz-adv-x="791" d="M291 731l4 6l79 89q12 13 16 13h24q4 0 16 -13l79 -89q4 -4 4 -6t-6 -2h-9q-1 0 -11 6l-81 45q-4 2 -8 0l-81 -45q-10 -6 -11 -6h-9q-6 0 -6 2zM40 15q0 9 3 10.5t15 1.5h57q7 0 7 258v102q0 252 -6 252h-43q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5 q6 0 39.5 -1.5t50.5 -1.5q16 0 55.5 1.5t50.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-54q-7 0 -7 -134q0 -27 0.5 -73t0.5 -59t2 -15.5t13 -2.5h365q11 0 13 2t2 13v122q0 147 -10 147h-57q-10 0 -12.5 2t-2.5 13t2.5 13t12.5 2q6 0 47 -1.5t58 -1.5 q18 0 55 1.5t40 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-46q-2 0 -2 -242q0 -370 4 -370h55q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -44.5 1.5t-49.5 1.5t-58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h55q6 0 6 165v124 q0 11 -1 13t-8 2h-374q-8 0 -10 -2.5t-2 -14.5q0 -287 11 -287h65q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -52.5 1.5t-57.5 1.5t-61 -1.5t-56 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x125;" horiz-adv-x="503" d="M18 731l4 6l79 89q12 13 16 13h24q4 0 16 -13l79 -89q4 -4 4 -6t-6 -2h-9q-1 0 -11 6l-81 45q-4 2 -8 0l-81 -45q-10 -6 -11 -6h-9q-6 0 -6 2zM10 640q0 16 5 17q138 18 146 18q5 0 5 -20q-8 -166 -8 -301v-10t2 -3t3 0.5t6 3.5q73 40 133 40q40 0 66.5 -16t38.5 -47 t16 -63t4 -79v-143q0 -8 1.5 -10t9.5 -2h26q14 0 14 -13q0 -14 -14 -14q-8 0 -31.5 1t-39.5 1q-12 0 -41 -1t-45 -1q-9 0 -11 2.5t-2 11.5q0 13 13 13h39q8 0 9 1.5t2 9.5q2 40 2 176q0 58 -24 95t-72 37q-47 0 -89 -21q-16 -8 -16 -15l1 -150q0 -89 1 -115q1 -10 1.5 -13 t2 -4t7.5 -1h38q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -37.5 1t-45.5 1q-12 0 -41 -1t-45 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h39q7 0 8.5 3t1.5 15q1 94 1 220q0 202 -8 356q-1 17 -6 17q-1 0 -30 -3.5t-31 -3.5q-4 0 -4 11z" />
+<glyph unicode="&#x126;" horiz-adv-x="791" d="M40 15q0 9 3 10.5t15 1.5h57q7 0 7 258v197q0 6 -9 6h-60q-2 0 -2.5 12t2.5 12h60q6 0 7.5 1.5t1.5 8.5q-2 117 -6 117h-43q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 39.5 -1.5t50.5 -1.5q16 0 55.5 1.5t50.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5 t-15.5 -1.5h-54q-7 0 -7 -117q0 -7 1 -8.5t8 -1.5h375q9 0 10.5 2t1.5 11q-2 114 -10 114h-57q-10 0 -12.5 2t-2.5 13t2.5 13t12.5 2q6 0 47 -1.5t58 -1.5q18 0 55 1.5t40 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-46q-2 0 -2 -114q0 -6 0.5 -8.5t2.5 -3.5 t7 -1h58q3 0 3 -12t-3 -12h-58q-10 0 -10 -8v-83q0 -370 4 -370h55q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -44.5 1.5t-49.5 1.5t-58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h55q6 0 6 165v124q0 11 -1 13t-8 2h-374q-8 0 -10 -2.5t-2 -14.5 q0 -287 11 -287h65q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -52.5 1.5t-57.5 1.5t-61 -1.5t-56 -1.5q-10 0 -12 2.5t-2 15.5zM204 482q0 -23 0.5 -60.5t0.5 -48.5q0 -13 2 -15.5t13 -2.5h365q11 0 13 2t2 13v110q0 6 -2 7t-10 1h-379q-5 0 -5 -6z" />
+<glyph unicode="&#x127;" horiz-adv-x="503" d="M10 640q0 16 5 17q138 18 146 18q5 0 5 -20q-4 -68 -5 -133q0 -10 7 -10h143q3 0 3 -12t-3 -12h-143q-6 0 -7 -1t-1 -7q-2 -90 -2 -126v-10t2 -3t3 0.5t6 3.5q73 40 133 40q40 0 66.5 -16t38.5 -47t16 -63t4 -79v-143q0 -8 1.5 -10t9.5 -2h26q14 0 14 -13q0 -14 -14 -14 q-8 0 -31.5 1t-39.5 1q-12 0 -41 -1t-45 -1q-9 0 -11 2.5t-2 11.5q0 13 13 13h39q8 0 9 1.5t2 9.5q2 40 2 176q0 58 -24 95t-72 37q-47 0 -89 -21q-16 -8 -16 -15l1 -150q0 -89 1 -115q1 -10 1.5 -13t2 -4t7.5 -1h38q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2 q-8 0 -37.5 1t-45.5 1q-12 0 -41 -1t-45 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h39q7 0 8.5 3t1.5 15q1 94 1 220q0 111 -3 217q0 6 -1 7t-6 1h-64q-2 0 -2.5 12t2.5 12h64q6 0 6 10q0 17 -1 35l-2 36t-1 26q-1 17 -6 17q-1 0 -30 -3.5t-31 -3.5q-4 0 -4 11z" />
+<glyph unicode="&#x128;" horiz-adv-x="333" d="M63 748q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM30 15q0 9 3 10.5t15 1.5h68q10 0 10 367v98q0 147 -10 147h-62q-8 0 -11 0.5t-6 4 t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 54.5 -1.5t65.5 -1.5q16 0 60 1.5t55 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-63q-11 0 -11 -158v-135q0 -319 10 -319h71q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-66.5 -1.5t-61.5 -1.5 q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x129;" horiz-adv-x="249" d="M10 498q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM25 357q0 5 4 13q3 6 4.5 6.5t10.5 1.5q95 5 113 5q7 0 7 -6v-170q0 -113 3 -170 q0 -5 0.5 -7t2.5 -3.5t7 -1.5h36q11 0 11 -13q0 -8 -1.5 -11t-9.5 -3q-9 0 -40 1t-44 1t-46.5 -1t-42.5 -1q-8 0 -9.5 2.5t-1.5 11.5q0 7 2.5 10t11.5 3h41q8 0 9.5 2t1.5 10q1 29 1 88q0 117 -4 214q-1 11 -3 13.5t-10 2.5q-1 0 -24.5 -1t-25.5 -1q-4 0 -4 4z" />
+<glyph unicode="&#x12a;" horiz-adv-x="333" d="M66 788v23q0 6 1.5 7t7.5 1h187q6 0 7 -1t1 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM30 15q0 9 3 10.5t15 1.5h68q10 0 10 367v98q0 147 -10 147h-62q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 54.5 -1.5t65.5 -1.5q16 0 60 1.5t55 1.5q10 0 12 -2.5 t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-63q-11 0 -11 -158v-135q0 -319 10 -319h71q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-66.5 -1.5t-61.5 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x12b;" horiz-adv-x="249" d="M13 518v23q0 6 1.5 7t7.5 1h187q5 0 6.5 -1t1.5 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM25 357q0 5 4 13q3 6 4.5 6.5t10.5 1.5q95 5 113 5q7 0 7 -6v-170q0 -113 3 -170q0 -5 0.5 -7t2.5 -3.5t7 -1.5h36q11 0 11 -13q0 -8 -1.5 -11t-9.5 -3q-9 0 -40 1t-44 1 t-46.5 -1t-42.5 -1q-8 0 -9.5 2.5t-1.5 11.5q0 7 2.5 10t11.5 3h41q8 0 9.5 2t1.5 10q1 29 1 88q0 117 -4 214q-1 11 -3 13.5t-10 2.5q-1 0 -24.5 -1t-25.5 -1q-4 0 -4 4z" />
+<glyph unicode="&#x12c;" horiz-adv-x="333" d="M65 832q0 6 1 6h17q1 0 2 -6t4.5 -15t10.5 -17.5t24.5 -14.5t43.5 -6t43.5 6t24.5 14.5t10.5 17.5t4.5 15t2 6h17q1 0 1 -6q0 -45 -26 -74t-77 -29t-77 29t-26 74zM30 15q0 9 3 10.5t15 1.5h68q10 0 10 367v98q0 147 -10 147h-62q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4 t11.5 0.5q6 0 54.5 -1.5t65.5 -1.5q16 0 60 1.5t55 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-63q-11 0 -11 -158v-135q0 -319 10 -319h71q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-66.5 -1.5t-61.5 -1.5q-10 0 -12 2.5t-2 15.5z " />
+<glyph unicode="&#x12d;" horiz-adv-x="249" d="M12 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84zM25 357q0 5 4 13q3 6 4.5 6.5t10.5 1.5q95 5 113 5q7 0 7 -6v-170q0 -113 3 -170q0 -5 0.5 -7 t2.5 -3.5t7 -1.5h36q11 0 11 -13q0 -8 -1.5 -11t-9.5 -3q-9 0 -40 1t-44 1t-46.5 -1t-42.5 -1q-8 0 -9.5 2.5t-1.5 11.5q0 7 2.5 10t11.5 3h41q8 0 9.5 2t1.5 10q1 29 1 88q0 117 -4 214q-1 11 -3 13.5t-10 2.5q-1 0 -24.5 -1t-25.5 -1q-4 0 -4 4z" />
+<glyph unicode="&#x12e;" horiz-adv-x="333" d="M30 15q0 9 3 10.5t15 1.5h68q10 0 10 367v98q0 147 -10 147h-62q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 54.5 -1.5t65.5 -1.5q16 0 60 1.5t55 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-63q-11 0 -11 -158v-135q0 -319 10 -319h71 q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-17 0 -73 2q-12 0 -17 -5q-82 -86 -82 -161q0 -33 20 -56.5t44 -23.5q23 0 43 11t31 22l11 11q1 0 6 -6t5 -7q0 -3 -15 -19t-47.5 -34t-68.5 -18q-32 0 -62.5 29.5t-30.5 63.5q0 12 1.5 23.5t6.5 23.5l8.5 20t13.5 21l14 18.5 t18 20.5t18 19l22 21l22 21q6 6 -1 6h-7q-16 0 -66.5 -1.5t-61.5 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x12f;" horiz-adv-x="249" d="M25 357q0 5 4 13q3 6 4.5 6.5t10.5 1.5q95 5 113 5q7 0 7 -6v-170q0 -113 3 -170q0 -5 0.5 -7t2.5 -3.5t7 -1.5h36q11 0 11 -13q0 -8 -1.5 -11t-9.5 -3q-17 0 -63 2q-8 0 -13 -8q-45 -75 -45 -159q0 -38 15.5 -59.5t45.5 -21.5q18 0 32 6t20.5 12.5t7.5 6.5t6 -6t5 -7 q0 -3 -12 -14t-41 -24t-63 -13q-30 0 -52.5 26t-22.5 59q0 67 82 194q-2 7 -6 8l-69 -2q-8 0 -9.5 2.5t-1.5 11.5q0 7 2.5 10t11.5 3h41q8 0 9.5 2t1.5 10q1 29 1 88q0 117 -4 214q-1 11 -3 13.5t-10 2.5q-1 0 -24.5 -1t-25.5 -1q-4 0 -4 4zM77 553q0 25 19.5 40t40.5 15 q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5z" />
+<glyph unicode="&#x130;" horiz-adv-x="333" d="M117 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM30 15q0 9 3 10.5t15 1.5h68q10 0 10 367v98q0 147 -10 147h-62q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 54.5 -1.5t65.5 -1.5q16 0 60 1.5t55 1.5 q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-63q-11 0 -11 -158v-135q0 -319 10 -319h71q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-66.5 -1.5t-61.5 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x131;" horiz-adv-x="249" d="M25 357q0 5 4 13q3 6 4.5 6.5t10.5 1.5q95 5 113 5q7 0 7 -6v-170q0 -113 3 -170q0 -5 0.5 -7t2.5 -3.5t7 -1.5h36q11 0 11 -13q0 -8 -1.5 -11t-9.5 -3q-9 0 -40 1t-44 1t-46.5 -1t-42.5 -1q-8 0 -9.5 2.5t-1.5 11.5q0 7 2.5 10t11.5 3h41q8 0 9.5 2t1.5 10q1 29 1 88 q0 117 -4 214q-1 11 -3 13.5t-10 2.5q-1 0 -24.5 -1t-25.5 -1q-4 0 -4 4z" />
+<glyph unicode="&#x132;" horiz-adv-x="666" d="M303 -188q0 23 28.5 43.5t38.5 20.5q7 0 24 -10.5t28 -10.5q26 0 33 32t7 108v497q0 147 -10 147h-65q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 56 -1.5t67 -1.5q16 0 53.5 1.5t48.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-50q-7 0 -7 -269 v-240q0 -84 -17 -153t-69 -125q-60 -64 -109 -64q-19 0 -36 7t-17 17zM30 15q0 9 3 10.5t15 1.5h68q10 0 10 367v98q0 147 -10 147h-62q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 54.5 -1.5t65.5 -1.5q16 0 60 1.5t55 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5 t-15.5 -1.5h-63q-11 0 -11 -158v-135q0 -319 10 -319h71q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-66.5 -1.5t-61.5 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x133;" horiz-adv-x="541" d="M254 -255q0 16 14.5 34.5t26.5 18.5t31.5 -2t23.5 -2q19 0 28.5 9.5t9.5 23.5q0 9 -2 56.5t-4.5 145t-2.5 229.5q0 49 -2 76q-1 14 -9 14q-3 0 -34 -1.5t-36 -1.5q-3 0 -3 4q0 5 4 15q0 1 1 3q2 6 14 6q22 0 52.5 1.5l51 2.5t21.5 1q7 0 7 -23q0 -20 2.5 -136.5 t2.5 -191.5q0 -90 -10.5 -145t-43.5 -98q-13 -17 -57.5 -38t-66.5 -21q-19 0 -19 20zM329 580q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 357q0 5 4 13q3 6 4.5 6.5t10.5 1.5q95 5 113 5q7 0 7 -6v-170q0 -113 3 -170 q0 -5 0.5 -7t2.5 -3.5t7 -1.5h36q11 0 11 -13q0 -8 -1.5 -11t-9.5 -3q-9 0 -40 1t-44 1t-46.5 -1t-42.5 -1q-8 0 -9.5 2.5t-1.5 11.5q0 7 2.5 10t11.5 3h41q8 0 9.5 2t1.5 10q1 29 1 88q0 117 -4 214q-1 11 -3 13.5t-10 2.5q-1 0 -24.5 -1t-25.5 -1q-4 0 -4 4zM77 553 q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5z" />
+<glyph unicode="&#x134;" horiz-adv-x="333" d="M56 731l4 6l79 89q12 13 16 13h24q4 0 16 -13l79 -89q4 -4 4 -6t-6 -2h-9q-1 0 -11 6l-81 45q-4 2 -8 0l-81 -45q-10 -6 -11 -6h-9q-6 0 -6 2zM-30 -188q0 23 28.5 43.5t38.5 20.5q7 0 24 -10.5t28 -10.5q26 0 33 32t7 108v497q0 147 -10 147h-65q-8 0 -11 0.5t-6 4 t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 56 -1.5t67 -1.5q16 0 53.5 1.5t48.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-50q-7 0 -7 -269v-240q0 -84 -17 -153t-69 -125q-60 -64 -109 -64q-19 0 -36 7t-17 17z" />
+<glyph unicode="&#x135;" horiz-adv-x="292" d="M27 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM5 -255q0 16 14.5 34.5t26.5 18.5t31.5 -2t23.5 -2q19 0 28.5 9.5t9.5 23.5q0 9 -2.5 56.5 t-4.5 145t-2 229.5q0 49 -2 76q-1 14 -9 14q-3 0 -34 -1.5t-36 -1.5q-3 0 -3 4q0 5 4 15q0 1 1 3q2 6 14 6q22 0 52.5 1.5l51 2.5t21.5 1q7 0 7 -23q0 -20 2.5 -136.5t2.5 -191.5q0 -90 -10.5 -145t-43.5 -98q-13 -17 -57.5 -38t-66.5 -21q-19 0 -19 20z" />
+<glyph unicode="&#x136;" horiz-adv-x="650" d="M282 -225l15 10q15 10 29.5 25.5t14.5 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM40 15q0 9 3 10.5t15 1.5h55q8 0 8 170v290q0 147 -8 147h-44 q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 45.5 -1.5t56.5 -1.5q16 0 55.5 1.5t50.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-54q-14 0 -14 -158v-125q0 -8 0.5 -11.5t3.5 -6t9 -2.5h22q11 0 57 56t107.5 139l64.5 87q9 13 9 16q0 5 -15 5h-37 q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 37 -1.5t48 -1.5q16 0 42.5 1.5t37.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-49l-40 -48l-97.5 -116l-78.5 -94q-3 -3 -4 -5t-2 -3t0 -2.5t1.5 -2.5t3 -4t4.5 -5l269 -310q15 -17 31 -17h14 q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -47.5 1.5t-52.5 1.5t-52.5 -1.5t-47.5 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h30q17 0 17 4l-12 14l-217 257q-7 8 -22 8h-20q-9 0 -11.5 -1.5t-2.5 -10.5q0 -271 11 -271h73q8 0 9.5 -2t1.5 -11q0 -11 -2 -14 t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-60 -1.5t-55 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x137;" horiz-adv-x="449" d="M174 -225l15 10q15 10 29.5 25.5t14.5 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM10 649v9q0 13 12 14q114 9 131 9q5 0 6 -2t1 -11l-11 -448 q0 -8 2.5 -9.5t13.5 -1.5h22q4 0 7.5 1t7 4.5l5 5t5.5 6t4 5.5q53 70 79 113q3 5 3.5 6.5t1.5 4t-0.5 3.5t-5 1.5t-9.5 0.5h-20q-8 0 -10.5 3t-2.5 10q0 14 14 14q4 0 25 -1t33 -1q10 0 30 1t27 1q13 0 13 -14q0 -13 -12 -13h-32q-11 0 -107 -123q-2 -2 -5 -6q-3 -3 -4 -4.5 t0.5 -4t3.5 -4.5l5 -5l151 -175q11 -13 22 -13h10q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2t-29.5 1t-37.5 1t-38 -1t-30 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h11q17 0 5 15l-110 136q-2 2 -4 5q-9 12 -18 12h-14q-8 0 -9.5 -3t-1.5 -13v-134q0 -13 1.5 -15.5 t9.5 -2.5h23q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -30 1t-38 1q-19 0 -48 -1t-32 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h41q7 0 8.5 3t1.5 15v193q0 408 -9 408q-2 0 -26 -1.5t-30 -1.5q-7 0 -8.5 1.5t-1.5 6.5z" />
+<glyph unicode="&#x138;" horiz-adv-x="449" d="M12 350q0 6 4 16q2 6 3.5 6.5t11.5 1.5q5 0 47 3t58 4q9 1 11 -0.5t2 -7.5v-3v-150q0 -8 2.5 -9.5t13.5 -1.5h22q4 0 7.5 1t7 4.5l5 5t5.5 6t4 5.5q53 70 79 113q3 5 3.5 6.5t1.5 4t-0.5 3.5t-5 1.5t-9.5 0.5h-20q-8 0 -10.5 3t-2.5 10q0 14 14 14q4 0 25 -1t33 -1 q10 0 30 1t27 1q13 0 13 -14q0 -13 -12 -13h-32q-11 0 -107 -123q-2 -2 -5 -6q-3 -3 -4 -4.5t0.5 -4t3.5 -4.5l5 -5l151 -175q11 -13 22 -13h10q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2t-29.5 1t-37.5 1t-38 -1t-30 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h11 q17 0 5 15l-110 136q-2 2 -4 5q-9 12 -18 12h-14q-8 0 -9.5 -3t-1.5 -13v-134q0 -13 1.5 -15.5t9.5 -2.5h23q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -30 1t-38 1q-19 0 -48 -1t-32 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h41q7 0 8.5 3t1.5 15v119q0 115 -4 174 q-1 11 -2.5 12.5t-9.5 1.5q-1 0 -26.5 -2t-27.5 -2q-3 0 -3 4z" />
+<glyph unicode="&#x139;" horiz-adv-x="592" d="M162 731q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2zM40 15q0 9 2.5 10.5t14.5 1.5h62q9 0 9 292v231q0 89 -7 89h-58q-10 0 -13 2.5t-3 12.5t3.5 12.5t16.5 2.5q6 0 49.5 -1.5t60.5 -1.5q16 0 61.5 1.5t56.5 1.5q12 0 14.5 -2 t2.5 -13q0 -9 -3 -12t-15 -3h-70q-9 0 -9 -215v-277q0 -116 8 -116q227 0 293 6q13 1 17 4t6 19l12 84q2 8 11 8q20 0 20 -10q0 -3 -4.5 -30l-9.5 -60t-7 -44q-1 -11 -22 -11q-11 0 -179.5 1.5t-184.5 1.5t-63.5 -1.5t-58.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="&#x13a;" horiz-adv-x="257" d="M106 731q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2zM20 645q0 2 2 16q1 6 2 6.5t8 1.5q120 9 123 9q5 0 6 -2.5t1 -12.5q1 -160 3.5 -332t2.5 -267q0 -39 8 -39h39q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2 q-8 0 -35.5 1t-43.5 1q-12 0 -44.5 -1t-48.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h52q4 0 4 85q0 395 -11 517q-7 18 -11 19q-3 0 -24.5 -2t-23.5 -2q-8 0 -8 3z" />
+<glyph unicode="&#x13b;" horiz-adv-x="592" d="M278 -225l15 10q15 10 29.5 25.5t14.5 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM40 15q0 9 2.5 10.5t14.5 1.5h62q9 0 9 292v231q0 89 -7 89h-58 q-10 0 -13 2.5t-3 12.5t3.5 12.5t16.5 2.5q6 0 49.5 -1.5t60.5 -1.5q16 0 61.5 1.5t56.5 1.5q12 0 14.5 -2t2.5 -13q0 -9 -3 -12t-15 -3h-70q-9 0 -9 -215v-277q0 -116 8 -116q227 0 293 6q13 1 17 4t6 19l12 84q2 8 11 8q20 0 20 -10q0 -3 -4.5 -30l-9.5 -60t-7 -44 q-1 -11 -22 -11q-11 0 -179.5 1.5t-184.5 1.5t-63.5 -1.5t-58.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="&#x13c;" horiz-adv-x="257" d="M83 -225l15 10q14 10 29 25.5t15 29.5q0 17 -13 30t-26.5 21.5t-13.5 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM20 645q0 2 2 16q1 6 2 6.5t8 1.5q120 9 123 9q5 0 6 -2.5t1 -12.5 q1 -160 3.5 -332t2.5 -267q0 -39 8 -39h39q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -35.5 1t-43.5 1q-12 0 -44.5 -1t-48.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h52q4 0 4 85q0 395 -11 517q-7 18 -11 19q-3 0 -24.5 -2t-23.5 -2q-8 0 -8 3z" />
+<glyph unicode="&#x13d;" horiz-adv-x="592" d="M345 491q0 2 2.5 27t5.5 60.5t5 54.5q3 33 35 33t32 -29q0 -5 -3 -13l-51 -124q-6 -12 -8 -12h-15q-3 0 -3 3zM40 15q0 9 2.5 10.5t14.5 1.5h62q9 0 9 292v231q0 89 -7 89h-58q-10 0 -13 2.5t-3 12.5t3.5 12.5t16.5 2.5q6 0 49.5 -1.5t60.5 -1.5q16 0 61.5 1.5t56.5 1.5 q12 0 14.5 -2t2.5 -13q0 -9 -3 -12t-15 -3h-70q-9 0 -9 -215v-277q0 -116 8 -116q227 0 293 6q13 1 17 4t6 19l12 84q2 8 11 8q20 0 20 -10q0 -3 -4.5 -30l-9.5 -60t-7 -44q-1 -11 -22 -11q-11 0 -179.5 1.5t-184.5 1.5t-63.5 -1.5t-58.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z " />
+<glyph unicode="&#x13e;" horiz-adv-x="257" d="M210 491q0 2 2.5 27t5.5 60.5t5 54.5q3 33 35 33t32 -29q0 -5 -3 -13l-51 -124q-6 -12 -8 -12h-15q-3 0 -3 3zM20 645q0 2 2 16q1 6 2 6.5t8 1.5q120 9 123 9q5 0 6 -2.5t1 -12.5q1 -160 3.5 -332t2.5 -267q0 -39 8 -39h39q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4 t-9 -2q-8 0 -35.5 1t-43.5 1q-12 0 -44.5 -1t-48.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h52q4 0 4 85q0 395 -11 517q-7 18 -11 19q-3 0 -24.5 -2t-23.5 -2q-8 0 -8 3z" />
+<glyph unicode="&#x13f;" horiz-adv-x="592" d="M40 15q0 9 2.5 10.5t14.5 1.5h62q9 0 9 292v231q0 89 -7 89h-58q-10 0 -13 2.5t-3 12.5t3.5 12.5t16.5 2.5q6 0 49.5 -1.5t60.5 -1.5q16 0 61.5 1.5t56.5 1.5q12 0 14.5 -2t2.5 -13q0 -9 -3 -12t-15 -3h-70q-9 0 -9 -215v-277q0 -116 8 -116q227 0 293 6q13 1 17 4t6 19 l12 84q2 8 11 8q20 0 20 -10q0 -3 -4.5 -30l-9.5 -60t-7 -44q-1 -11 -22 -11q-11 0 -179.5 1.5t-184.5 1.5t-63.5 -1.5t-58.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5zM417 333q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5z" />
+<glyph unicode="&#x140;" horiz-adv-x="404" d="M282 333q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM20 645q0 2 2 16q1 6 2 6.5t8 1.5q120 9 123 9q5 0 6 -2.5t1 -12.5q1 -160 3.5 -332t2.5 -267q0 -39 8 -39h39q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2 q-8 0 -35.5 1t-43.5 1q-12 0 -44.5 -1t-48.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h52q4 0 4 85q0 395 -11 517q-7 18 -11 19q-3 0 -24.5 -2t-23.5 -2q-8 0 -8 3z" />
+<glyph unicode="&#x141;" horiz-adv-x="592" d="M40 15q0 9 2.5 10.5t14.5 1.5h62q7 0 9 194q0 7 -8 4q-76 -36 -77 -36q-3 0 -3 16q0 8 2 10l78 36q8 3 8 15v284q0 89 -7 89h-58q-10 0 -13 2.5t-3 12.5t3.5 12.5t16.5 2.5q6 0 49.5 -1.5t60.5 -1.5q16 0 61.5 1.5t56.5 1.5q12 0 14.5 -2t2.5 -13q0 -9 -3 -12t-15 -3h-70 q-9 0 -9 -215v-117q0 -8 2.5 -9t9.5 3l95.5 44.5l120.5 56.5l51 23q2 0 2 -12q0 -14 -2 -14l-267 -124q-10 -5 -11 -9q-1 -2 -1 -7v-112q0 -116 8 -116q227 0 293 6q13 1 17 4t6 19l12 84q2 8 11 8q20 0 20 -10q0 -3 -4.5 -30l-9.5 -60t-7 -44q-1 -11 -22 -11 q-11 0 -179.5 1.5t-184.5 1.5t-63.5 -1.5t-58.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="&#x142;" horiz-adv-x="257" d="M20 645q0 2 2 16q1 6 2 6.5t8 1.5q120 9 123 9q5 0 6 -2.5t1 -12.5q0 -131 2 -275q0 -7 2 -7.5t6 2.5q51 30 52 30q3 0 3 -18q0 -8 -1 -9l-52 -30q-9 -5 -9 -12q0 -32 1 -85.5t1.5 -100t0.5 -94.5q0 -39 8 -39h39q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2 q-8 0 -35.5 1t-43.5 1q-12 0 -44.5 -1t-48.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h52q4 0 4 85q0 9 -2 193q0 8 -8 4l-19.5 -11.5l-26.5 -15.5l-11 -6q-2 0 -2 10q0 16 3 18l56 32q8 5 8 16q-4 219 -9 277q-7 18 -11 19q-3 0 -24.5 -2t-23.5 -2q-8 0 -8 3z" />
+<glyph unicode="&#x143;" horiz-adv-x="814" d="M411 731q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2zM40 15q0 9 3 10.5t15 1.5h44q3 0 5 2.5t3 7.5t1.5 11t1 15.5t0.5 18.5t0.5 22.5t0.5 24.5l8 510h-68q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q6 0 53.5 -1.5t58.5 -1.5 q13 0 33.5 1.5t21.5 1.5q10 0 20 -13l406 -499q16 -20 18 -20q4 0 4 28v42q0 49 -1 187t-1 189q0 56 -1 56h-94q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q11 0 50.5 -1.5t55.5 -1.5t43.5 1.5t38.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-47q-4 0 -4 -59 q0 -68 -3.5 -209.5l-6.5 -253t-3 -113.5q0 -22 -10 -22q-4 0 -18 16l-492 598q-14 18 -16 18q-3 0 -3 -20q-1 -25 -1 -122q0 -54 -0.5 -175.5t-0.5 -167.5q0 -102 5 -102h86q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -50.5 1.5t-55.5 1.5t-43.5 -1.5t-38.5 -1.5 q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x144;" horiz-adv-x="514" d="M257 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM25 350q0 4 5 16q2 6 3.5 6.5t11.5 1.5q5 0 47 3t58 4q9 1 11 -0.5t2 -7.5v-3v-42q0 -6 13 3l2 2l18 12t23 14.5t23 11.5t31 10t33 3q42 0 69.5 -13 t41 -39.5t18 -55t4.5 -69.5q0 -33 -2.5 -100t-2.5 -70q0 -8 1.5 -10t9.5 -2h30q9 0 11.5 -2t2.5 -11q0 -6 -0.5 -8t-3 -4t-8.5 -2q-8 0 -33.5 1t-41.5 1q-12 0 -40.5 -1t-44.5 -1q-10 0 -12 2t-2 11t2.5 11.5t10.5 2.5h37q7 0 8.5 1.5t2.5 9.5q4 48 4 176q0 130 -96 130 q-33 0 -89 -28q-18 -9 -18 -23q0 -41 -0.5 -123.5t-0.5 -123.5q0 -9 0.5 -12.5t3 -5t9.5 -1.5h36q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -36.5 1t-44.5 1q-12 0 -42 -1t-46 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h39q6 0 7.5 2.5t2.5 11.5v4q5 98 5 194 q0 68 -2 99q-1 11 -2.5 12.5t-9.5 1.5q-1 0 -27 -2t-28 -2q-3 0 -3 4z" />
+<glyph unicode="&#x145;" horiz-adv-x="814" d="M360 -225l15 10q15 10 29.5 25.5t14.5 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM40 15q0 9 3 10.5t15 1.5h44q3 0 5 2.5t3 7.5t1.5 11t1 15.5t0.5 18.5 t0.5 22.5t0.5 24.5l8 510h-68q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q6 0 53.5 -1.5t58.5 -1.5q13 0 33.5 1.5t21.5 1.5q10 0 20 -13l406 -499q16 -20 18 -20q4 0 4 28v42q0 49 -1 187t-1 189q0 56 -1 56h-94q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q11 0 50.5 -1.5t55.5 -1.5 t43.5 1.5t38.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-47q-4 0 -4 -59q0 -68 -3.5 -209.5l-6.5 -253t-3 -113.5q0 -22 -10 -22q-4 0 -18 16l-492 598q-14 18 -16 18q-3 0 -3 -20q-1 -25 -1 -122q0 -54 -0.5 -175.5t-0.5 -167.5q0 -102 5 -102h86q8 0 9.5 -2 t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -50.5 1.5t-55.5 1.5t-43.5 -1.5t-38.5 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x146;" horiz-adv-x="514" d="M210 -225l15 10q15 10 29.5 25.5t14.5 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM25 350q0 4 5 16q2 6 3.5 6.5t11.5 1.5q5 0 47 3t58 4q9 1 11 -0.5 t2 -7.5v-3v-42q0 -6 13 3l2 2l18 12t23 14.5t23 11.5t31 10t33 3q42 0 69.5 -13t41 -39.5t18 -55t4.5 -69.5q0 -33 -2.5 -100t-2.5 -70q0 -8 1.5 -10t9.5 -2h30q9 0 11.5 -2t2.5 -11q0 -6 -0.5 -8t-3 -4t-8.5 -2q-8 0 -33.5 1t-41.5 1q-12 0 -40.5 -1t-44.5 -1q-10 0 -12 2 t-2 11t2.5 11.5t10.5 2.5h37q7 0 8.5 1.5t2.5 9.5q4 48 4 176q0 130 -96 130q-33 0 -89 -28q-18 -9 -18 -23q0 -41 -0.5 -123.5t-0.5 -123.5q0 -9 0.5 -12.5t3 -5t9.5 -1.5h36q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -36.5 1t-44.5 1q-12 0 -42 -1t-46 -1 q-9 0 -11 2.5t-2 11.5q0 13 12 13h39q6 0 7.5 2.5t2.5 11.5v4q5 98 5 194q0 68 -2 99q-1 11 -2.5 12.5t-9.5 1.5q-1 0 -27 -2t-28 -2q-3 0 -3 4z" />
+<glyph unicode="&#x147;" horiz-adv-x="814" d="M310 837q0 2 6 2h9q1 0 11 -6l81 -45q4 -2 8 0l81 45q10 6 11 6h9q6 0 6 -2l-4 -6l-79 -89q-12 -13 -16 -13h-24q-4 0 -16 13l-79 89q-4 4 -4 6zM40 15q0 9 3 10.5t15 1.5h44q3 0 5 2.5t3 7.5t1.5 11t1 15.5t0.5 18.5t0.5 22.5t0.5 24.5l8 510h-68q-8 0 -9.5 2t-1.5 11 q0 11 2 14t9 3q6 0 53.5 -1.5t58.5 -1.5q13 0 33.5 1.5t21.5 1.5q10 0 20 -13l406 -499q16 -20 18 -20q4 0 4 28v42q0 49 -1 187t-1 189q0 56 -1 56h-94q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q11 0 50.5 -1.5t55.5 -1.5t43.5 1.5t38.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5 t-15 -1.5h-47q-4 0 -4 -59q0 -68 -3.5 -209.5l-6.5 -253t-3 -113.5q0 -22 -10 -22q-4 0 -18 16l-492 598q-14 18 -16 18q-3 0 -3 -20q-1 -25 -1 -122q0 -54 -0.5 -175.5t-0.5 -167.5q0 -102 5 -102h86q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -50.5 1.5t-55.5 1.5 t-43.5 -1.5t-38.5 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x148;" horiz-adv-x="514" d="M162 597q0 2 5 2h12q1 0 8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM25 350q0 4 5 16q2 6 3.5 6.5t11.5 1.5q5 0 47 3t58 4q9 1 11 -0.5t2 -7.5v-3v-42 q0 -6 13 3l2 2l18 12t23 14.5t23 11.5t31 10t33 3q42 0 69.5 -13t41 -39.5t18 -55t4.5 -69.5q0 -33 -2.5 -100t-2.5 -70q0 -8 1.5 -10t9.5 -2h30q9 0 11.5 -2t2.5 -11q0 -6 -0.5 -8t-3 -4t-8.5 -2q-8 0 -33.5 1t-41.5 1q-12 0 -40.5 -1t-44.5 -1q-10 0 -12 2t-2 11t2.5 11.5 t10.5 2.5h37q7 0 8.5 1.5t2.5 9.5q4 48 4 176q0 130 -96 130q-33 0 -89 -28q-18 -9 -18 -23q0 -41 -0.5 -123.5t-0.5 -123.5q0 -9 0.5 -12.5t3 -5t9.5 -1.5h36q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -36.5 1t-44.5 1q-12 0 -42 -1t-46 -1q-9 0 -11 2.5 t-2 11.5q0 13 12 13h39q6 0 7.5 2.5t2.5 11.5v4q5 98 5 194q0 68 -2 99q-1 11 -2.5 12.5t-9.5 1.5q-1 0 -27 -2t-28 -2q-3 0 -3 4z" />
+<glyph unicode="&#x149;" horiz-adv-x="723" d="M234 350q0 4 5 16q2 6 3.5 6.5t11.5 1.5q5 0 47 3t58 4q9 1 11 -0.5t2 -7.5v-3v-42q0 -6 13 3l2 2l18 12t23 14.5t23 11.5t31 10t33 3q42 0 69.5 -13t41 -39.5t18 -55t4.5 -69.5q0 -33 -2.5 -100t-2.5 -70q0 -8 1.5 -10t9.5 -2h30q9 0 11.5 -2t2.5 -11q0 -6 -0.5 -8 t-3 -4t-8.5 -2q-8 0 -33.5 1t-41.5 1q-12 0 -40.5 -1t-44.5 -1q-10 0 -12 2t-2 11t2.5 11.5t10.5 2.5h37q8 0 9 1.5t2 9.5q4 48 4 176q0 130 -96 130q-33 0 -89 -28q-18 -9 -18 -23q0 -41 -0.5 -123.5t-0.5 -123.5q0 -9 0.5 -12.5t3 -5t9.5 -1.5h36q8 0 10.5 -3t2.5 -10 q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -36.5 1t-44.5 1q-12 0 -42 -1t-46 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h39q6 0 7.5 2.5t2.5 11.5v4q5 98 5 194q0 68 -2 99q-1 11 -2.5 12.5t-9.5 1.5q-1 0 -27 -2t-28 -2q-3 0 -3 4zM60 453q0 1 17 17t34.5 37t17.5 36q0 13 -24 39 t-24 39q0 16 17 39t30 23q7 0 29 -34t22 -51q0 -32 -24.5 -72.5t-49 -65.5t-29.5 -25t-10.5 6.5t-5.5 11.5z" />
+<glyph unicode="&#x14a;" horiz-adv-x="814" d="M40 15q0 9 3 10.5t15 1.5h44q3 0 5 2.5t3 7.5t1.5 11t1 15.5t0.5 18.5t0.5 22.5t0.5 24.5l8 510h-68q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q6 0 53.5 -1.5t58.5 -1.5q13 0 33.5 1.5t21.5 1.5q10 0 20 -13l406 -499q16 -20 18 -20q4 0 4 28v42q0 49 -1 187t-1 189 q0 56 -1 56h-94q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q11 0 50.5 -1.5t55.5 -1.5t43.5 1.5t38.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-47q-4 0 -4 -59q0 -68 -3.5 -209.5l-6.5 -253t-3 -113.5q0 -152 -52 -220q-13 -17 -57.5 -38t-66.5 -21q-19 0 -19 20 q0 16 14.5 34.5t26.5 18.5t31.5 -2t23.5 -2q19 0 28.5 9.5t9.5 23.5q0 11 -1 40.5l-2.5 71.5l-2.5 71q-1 37 -15 54l-438 532q-14 18 -16 18q-3 0 -3 -20q-1 -25 -1 -122q0 -54 -0.5 -175.5t-0.5 -167.5q0 -102 5 -102h86q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3 q-11 0 -50.5 1.5t-55.5 1.5t-43.5 -1.5t-38.5 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x14b;" horiz-adv-x="514" d="M25 350q0 4 5 16q2 6 3.5 6.5t11.5 1.5q5 0 47 3t58 4q9 1 11 -0.5t2 -7.5v-3v-42q0 -6 13 3l2 2l18 12t23 14.5t23 11.5t31 10t33 3q42 0 69.5 -13t41 -39.5t18 -55t4.5 -69.5v-174q0 -91 -10.5 -148.5t-43.5 -100.5q-13 -17 -57.5 -38t-66.5 -21q-19 0 -19 20 q0 16 14.5 34.5t26.5 18.5t31.5 -2t23.5 -2q19 0 28.5 9.5t9.5 23.5q0 10 -2.5 76.5t-3.5 106.5q-2 79 -2 202q0 130 -96 130q-33 0 -89 -28q-18 -9 -18 -23q0 -41 -0.5 -123.5t-0.5 -123.5q0 -9 0.5 -12.5t3 -5t9.5 -1.5h36q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4 t-9 -2q-8 0 -36.5 1t-44.5 1q-12 0 -42 -1t-46 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h39q6 0 7.5 2.5t2.5 11.5v4q5 98 5 194q0 68 -2 99q-1 11 -2.5 12.5t-9.5 1.5q-1 0 -27 -2t-28 -2q-3 0 -3 4z" />
+<glyph unicode="&#x14c;" horiz-adv-x="752" d="M273 788v23q0 6 1.5 7t7.5 1h187q5 0 6.5 -1t1.5 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM45 318q0 158 99 257.5t241 99.5q145 0 233.5 -101t88.5 -250t-94.5 -242t-242.5 -93q-83 0 -155.5 36.5t-121 113.5t-48.5 179zM139 345q0 -140 63 -234t169 -94 q79 0 136 48t82.5 118t25.5 150t-25 149.5t-81 117t-134 47.5q-103 0 -169.5 -91t-66.5 -211z" />
+<glyph unicode="&#x14d;" horiz-adv-x="446" d="M128 518v23q0 6 1.5 7t7.5 1h187q6 0 7 -1t1 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM30 183q0 90 57 151.5t148 61.5q80 0 130.5 -57.5t50.5 -141.5q0 -94 -53 -153t-144 -59q-80 0 -134.5 58t-54.5 140zM101 169q0 -62 31.5 -110t86.5 -48q36 0 61.5 17 t38.5 46.5t18.5 61t5.5 68.5q0 66 -31 116t-89 50q-122 0 -122 -201z" />
+<glyph unicode="&#x14e;" horiz-adv-x="752" d="M272 832q0 6 1 6h17q1 0 2 -6t4.5 -15t10.5 -17.5t24.5 -14.5t43.5 -6t43.5 6t24.5 14.5t10.5 17.5t4.5 15t2 6h17q1 0 1 -6q0 -45 -26 -74t-77 -29t-77 29t-26 74zM45 318q0 158 99 257.5t241 99.5q145 0 233.5 -101t88.5 -250t-94.5 -242t-242.5 -93q-83 0 -155.5 36.5 t-121 113.5t-48.5 179zM139 345q0 -140 63 -234t169 -94q79 0 136 48t82.5 118t25.5 150t-25 149.5t-81 117t-134 47.5q-103 0 -169.5 -91t-66.5 -211z" />
+<glyph unicode="&#x14f;" horiz-adv-x="446" d="M127 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84zM30 183q0 90 57 151.5t148 61.5q80 0 130.5 -57.5t50.5 -141.5q0 -94 -53 -153t-144 -59 q-80 0 -134.5 58t-54.5 140zM101 169q0 -62 31.5 -110t86.5 -48q36 0 61.5 17t38.5 46.5t18.5 61t5.5 68.5q0 66 -31 116t-89 50q-122 0 -122 -201z" />
+<glyph unicode="&#x150;" horiz-adv-x="752" d="M298 731q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2zM418 731q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2zM45 318q0 158 99 257.5t241 99.5q145 0 233.5 -101t88.5 -250t-94.5 -242 t-242.5 -93q-83 0 -155.5 36.5t-121 113.5t-48.5 179zM139 345q0 -140 63 -234t169 -94q79 0 136 48t82.5 118t25.5 150t-25 149.5t-81 117t-134 47.5q-103 0 -169.5 -91t-66.5 -211z" />
+<glyph unicode="&#x151;" horiz-adv-x="446" d="M150 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM260 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM30 183q0 90 57 151.5t148 61.5 q80 0 130.5 -57.5t50.5 -141.5q0 -94 -53 -153t-144 -59q-80 0 -134.5 58t-54.5 140zM101 169q0 -62 31.5 -110t86.5 -48q36 0 61.5 17t38.5 46.5t18.5 61t5.5 68.5q0 66 -31 116t-89 50q-122 0 -122 -201z" />
+<glyph unicode="&#x152;" horiz-adv-x="996" d="M45 318q0 158 99 257.5t241 99.5q33 0 92 -6.5t81 -6.5q28 0 128.5 1.5t120.5 1.5q47 0 56.5 1.5t10.5 10.5v1q1 12 13 12q11 0 14 -2t3 -9q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 7 -272 7q-7 0 -7 -128q0 -42 2 -142 q0 -10 1.5 -13t10.5 -3h167q55 0 55 16v50q0 9 17 9q14 0 14 -8q0 -1 -1 -29t-1 -49t1 -50t1 -33q0 -8 -13 -8q-18 0 -18 9v46q0 7 -2 10t-15 6.5t-38 3.5h-163q-12 0 -14 -2t-2 -13q1 -53 1.5 -130t1 -111.5t3.5 -34.5q27 0 68.5 0.5l81 1t75 0.5t58.5 0.5t24 0.5 q12 0 15 3t4 20q1 14 3 87q0 8 14 8q17 0 17 -9q0 -28 -1.5 -77t-1.5 -61q0 -11 -22 -11q-11 0 -182.5 1.5t-187.5 1.5q-45 0 -100 -5.5t-96 -5.5q-83 0 -155.5 36.5t-121 113.5t-48.5 179zM139 345q0 -110 40.5 -193.5t112.5 -116.5q41 -19 133 -19q29 0 51 5.5t31.5 11.5 t9.5 12q0 21 -0.5 75t-0.5 78q0 31 -0.5 72t-1 78t-1 69.5t-1 53t-0.5 21.5v93q0 15 -1.5 24.5t-2 15t-8.5 9t-10 4.5t-17 3t-21 3q-18 3 -74 3q-104 0 -171.5 -90.5t-67.5 -211.5z" />
+<glyph unicode="&#x153;" horiz-adv-x="733" d="M30 183q0 90 57 151.5t148 61.5q83 0 136 -64q9 -11 11 -11q1 0 12 11q58 64 149 64q71 0 110 -46t39 -113q0 -5 -20 -8.5t-34 -3.5q-6 0 -113 2.5t-111 2.5q-5 0 -5 -36q0 -76 44.5 -120.5t104.5 -44.5q22 0 43.5 6.5t36 16.5t25.5 19.5t17 16.5l7 6q2 0 9 -6.5t7 -8.5 q0 -5 -21 -26.5t-64 -44.5t-88 -23q-95 0 -144 62l-12 15q-1 0 -10 -12q-46 -65 -145 -65q-80 0 -134.5 58t-54.5 140zM101 169q0 -62 31.5 -110t86.5 -48q36 0 61.5 17t38.5 46.5t18.5 61t5.5 68.5q0 66 -31 116t-89 50q-122 0 -122 -201zM414 255q0 -8 12 -8q57 0 157 4 q40 1 40 4q0 65 -29.5 92t-62.5 27q-46 0 -80 -38.5t-37 -80.5z" />
+<glyph unicode="&#x154;" horiz-adv-x="641" d="M287 731q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2zM40 649q0 7 2.5 10.5t6 4t11.5 0.5q6 0 51 -1t62 -1q16 0 75 3t70 3q42 0 77 -7.5t68.5 -25t53 -52.5t19.5 -85q0 -32 -14.5 -61t-37.5 -49t-42.5 -32t-39.5 -21 q-5 -3 -10.5 -4.5t-7.5 -2.5l-2 -1l2 -1q2 0 7 -1t11 -3q160 -48 167 -230q2 -44 4 -54.5t10 -10.5h46q7 0 9.5 -3.5t2.5 -18.5q0 -8 -17 -8l-133 3q-5 0 -6.5 1t-1.5 7v58q0 43 -2 72t-12 64.5t-27.5 57t-51 36.5t-80.5 16q-10 0 -43.5 0.5t-48.5 0.5q-11 0 -11 -11 q0 -62 3.5 -168.5t7.5 -106.5h61q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -51.5 1.5t-56.5 1.5q-18 0 -57 -1.5t-41 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h45q5 0 5 129v133q0 345 -12 345l-55 -2q-20 0 -20 17zM207 345q0 -6 3 -8t13 -2q20 0 65 -0.5 t63 -1.5q10 0 12 1q88 40 88 150q0 71 -55.5 114.5t-129.5 43.5q-18 0 -52 -2q-7 0 -7 -54v-241z" />
+<glyph unicode="&#x155;" horiz-adv-x="329" d="M166 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM25 353q0 5 3 12q2 6 3.5 6.5t11.5 1.5q42 3 105 3q10 0 11 -0.5t1 -4.5v-5q0 -10 -0.5 -32t-0.5 -32q0 -18 1 -18t2.5 4t3 10.5t3.5 10.5q17 39 43 62 t50 23q20 0 38.5 -16t18.5 -27q0 -9 -13 -25t-24 -16q-12 0 -31 15.5t-29 15.5q-57 0 -57 -204q0 -112 12 -112h63q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -49 1t-57 1q-12 0 -41 -1t-45 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h43q9 0 9 137q0 189 -7 189 q-1 0 -31.5 -1t-32.5 -1q-3 0 -3 4z" />
+<glyph unicode="&#x156;" horiz-adv-x="641" d="M308 -225l15 10q15 10 29.5 25.5t14.5 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM40 649q0 7 2.5 10.5t6 4t11.5 0.5q6 0 51 -1t62 -1q16 0 75 3t70 3 q42 0 77 -7.5t68.5 -25t53 -52.5t19.5 -85q0 -32 -14.5 -61t-37.5 -49t-42.5 -32t-39.5 -21q-5 -3 -10.5 -4.5t-7.5 -2.5l-2 -1l2 -1q2 0 7 -1t11 -3q160 -48 167 -230q2 -44 4 -54.5t10 -10.5h46q7 0 9.5 -3.5t2.5 -18.5q0 -8 -17 -8l-133 3q-5 0 -6.5 1t-1.5 7v58 q0 43 -2 72t-12 64.5t-27.5 57t-51 36.5t-80.5 16q-10 0 -43.5 0.5t-48.5 0.5q-11 0 -11 -11q0 -62 3.5 -168.5t7.5 -106.5h61q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -51.5 1.5t-56.5 1.5q-18 0 -57 -1.5t-41 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h45 q5 0 5 129v133q0 345 -12 345l-55 -2q-20 0 -20 17zM207 345q0 -6 3 -8t13 -2q20 0 65 -0.5t63 -1.5q10 0 12 1q88 40 88 150q0 71 -55.5 114.5t-129.5 43.5q-18 0 -52 -2q-7 0 -7 -54v-241z" />
+<glyph unicode="&#x157;" horiz-adv-x="329" d="M90 -225l14 10q15 10 30 25.5t15 29.5q0 17 -13 30t-26.5 21.5t-13.5 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM25 353q0 5 3 12q2 6 3.5 6.5t11.5 1.5q42 3 105 3q10 0 11 -0.5t1 -4.5v-5 q0 -10 -0.5 -32t-0.5 -32q0 -18 1 -18t2.5 4t3 10.5t3.5 10.5q17 39 43 62t50 23q20 0 38.5 -16t18.5 -27q0 -9 -13 -25t-24 -16q-12 0 -31 15.5t-29 15.5q-57 0 -57 -204q0 -112 12 -112h63q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -49 1t-57 1q-12 0 -41 -1 t-45 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h43q9 0 9 137q0 189 -7 189q-1 0 -31.5 -1t-32.5 -1q-3 0 -3 4z" />
+<glyph unicode="&#x158;" horiz-adv-x="641" d="M186 837q0 2 6 2h9q1 0 11 -6l81 -45q4 -2 8 0l81 45q10 6 11 6h9q6 0 6 -2l-4 -6l-79 -89q-12 -13 -16 -13h-24q-4 0 -16 13l-79 89q-4 4 -4 6zM40 649q0 7 2.5 10.5t6 4t11.5 0.5q6 0 51 -1t62 -1q16 0 75 3t70 3q42 0 77 -7.5t68.5 -25t53 -52.5t19.5 -85 q0 -32 -14.5 -61t-37.5 -49t-42.5 -32t-39.5 -21q-5 -3 -10.5 -4.5t-7.5 -2.5l-2 -1l2 -1q2 0 7 -1t11 -3q160 -48 167 -230q2 -44 4 -54.5t10 -10.5h46q7 0 9.5 -3.5t2.5 -18.5q0 -8 -17 -8l-133 3q-5 0 -6.5 1t-1.5 7v58q0 43 -2 72t-12 64.5t-27.5 57t-51 36.5t-80.5 16 q-10 0 -43.5 0.5t-48.5 0.5q-11 0 -11 -11q0 -62 3.5 -168.5t7.5 -106.5h61q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -51.5 1.5t-56.5 1.5q-18 0 -57 -1.5t-41 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h45q5 0 5 129v133q0 345 -12 345l-55 -2q-20 0 -20 17 zM207 345q0 -6 3 -8t13 -2q20 0 65 -0.5t63 -1.5q10 0 12 1q88 40 88 150q0 71 -55.5 114.5t-129.5 43.5q-18 0 -52 -2q-7 0 -7 -54v-241z" />
+<glyph unicode="&#x159;" horiz-adv-x="329" d="M71 597q0 2 5 2h12l8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM25 353q0 5 3 12q2 6 3.5 6.5t11.5 1.5q42 3 105 3q10 0 11 -0.5t1 -4.5v-5q0 -10 -0.5 -32 t-0.5 -32q0 -18 1 -18t2.5 4t3 10.5t3.5 10.5q17 39 43 62t50 23q20 0 38.5 -16t18.5 -27q0 -9 -13 -25t-24 -16q-12 0 -31 15.5t-29 15.5q-57 0 -57 -204q0 -112 12 -112h63q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -49 1t-57 1q-12 0 -41 -1t-45 -1 q-9 0 -11 2.5t-2 11.5q0 13 12 13h43q9 0 9 137q0 189 -7 189q-1 0 -31.5 -1t-32.5 -1q-3 0 -3 4z" />
+<glyph unicode="&#x15a;" horiz-adv-x="528" d="M259 731q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2zM55 488q0 81 65 135t149 54q73 0 135 -42q10 -8 16 -8t7 10l1 11q0 9 2 11.5t13 2.5q12 0 15.5 -2.5t3.5 -11.5l-2 -63q-3 -63 -3 -94q0 -9 -3 -12.5t-13 -3.5q-13 0 -16 2.5 t-3 9.5q0 1 1.5 30t1.5 34q0 22 -51.5 60t-102.5 38q-57 0 -95 -37t-38 -92q0 -43 26.5 -73.5t65.5 -46l85.5 -34t85.5 -37.5t65.5 -58t26.5 -93q0 -88 -67.5 -140.5t-156.5 -52.5q-51 0 -99 9.5t-73 20t-26 16.5l-3.5 48l-4.5 62t-2 34q0 14 12 14h5q15 0 16 -16l6 -92 q1 -21 65.5 -42t112.5 -21q54 0 93.5 35t39.5 86q0 42 -26.5 72t-66 46.5l-85.5 36.5t-85.5 40t-66 60t-26.5 94z" />
+<glyph unicode="&#x15b;" horiz-adv-x="337" d="M154 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM35 50q0 11 11.5 24.5t18.5 13.5q3 0 5 -3.5t5.5 -10.5t8.5 -13q42 -50 93 -50q28 0 47 16.5t19 48.5t-23 51.5t-66 37.5q-2 1 -18 8t-19 8.5t-17 8 t-17.5 10t-13.5 11t-13.5 14t-9 15t-7 18.5t-1.5 22q0 48 44 80.5t100 32.5q51 0 77.5 -22.5t26.5 -44.5q0 -7 -15 -13t-25 -6q-7 0 -12.5 10t-10 22.5t-18.5 22.5t-36 10q-29 0 -51 -17t-22 -53q0 -15 5.5 -27t21 -22.5t24 -15t31.5 -15.5q33 -16 45.5 -22.5t36 -22.5 t33 -33t9.5 -38q0 -53 -41.5 -85.5t-99.5 -32.5q-46 0 -86 19.5t-40 42.5z" />
+<glyph unicode="&#x15c;" horiz-adv-x="528" d="M158 731l4 6l79 89q12 13 16 13h24q4 0 16 -13l79 -89q4 -4 4 -6t-6 -2h-9q-1 0 -11 6l-81 45q-4 2 -8 0l-81 -45q-10 -6 -11 -6h-9q-6 0 -6 2zM55 488q0 81 65 135t149 54q73 0 135 -42q10 -8 16 -8t7 10l1 11q0 9 2 11.5t13 2.5q12 0 15.5 -2.5t3.5 -11.5l-2 -63 q-3 -63 -3 -94q0 -9 -3 -12.5t-13 -3.5q-13 0 -16 2.5t-3 9.5q0 1 1.5 30t1.5 34q0 22 -51.5 60t-102.5 38q-57 0 -95 -37t-38 -92q0 -43 26.5 -73.5t65.5 -46l85.5 -34t85.5 -37.5t65.5 -58t26.5 -93q0 -88 -67.5 -140.5t-156.5 -52.5q-51 0 -99 9.5t-73 20t-26 16.5 l-3.5 48l-4.5 62t-2 34q0 14 12 14h5q15 0 16 -16l6 -92q1 -21 65.5 -42t112.5 -21q54 0 93.5 35t39.5 86q0 42 -26.5 72t-66 46.5l-85.5 36.5t-85.5 40t-66 60t-26.5 94z" />
+<glyph unicode="&#x15d;" horiz-adv-x="337" d="M59 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM35 50q0 11 11.5 24.5t18.5 13.5q3 0 5 -3.5t5.5 -10.5t8.5 -13q42 -50 93 -50q28 0 47 16.5 t19 48.5t-23 51.5t-66 37.5q-2 1 -18 8t-19 8.5t-17 8t-17.5 10t-13.5 11t-13.5 14t-9 15t-7 18.5t-1.5 22q0 48 44 80.5t100 32.5q51 0 77.5 -22.5t26.5 -44.5q0 -7 -15 -13t-25 -6q-7 0 -12.5 10t-10 22.5t-18.5 22.5t-36 10q-29 0 -51 -17t-22 -53q0 -15 5.5 -27 t21 -22.5t24 -15t31.5 -15.5q33 -16 45.5 -22.5t36 -22.5t33 -33t9.5 -38q0 -53 -41.5 -85.5t-99.5 -32.5q-46 0 -86 19.5t-40 42.5z" />
+<glyph unicode="&#x15e;" horiz-adv-x="528" d="M55 488q0 81 65 135t149 54q73 0 135 -42q10 -8 16 -8t7 10l1 11q0 9 2 11.5t13 2.5q12 0 15.5 -2.5t3.5 -11.5l-2 -63q-3 -63 -3 -94q0 -9 -3 -12.5t-13 -3.5q-13 0 -16 2.5t-3 9.5q0 1 1.5 30t1.5 34q0 22 -51.5 60t-102.5 38q-57 0 -95 -37t-38 -92q0 -43 26.5 -73.5 t65.5 -46l85.5 -34t85.5 -37.5t65.5 -58t26.5 -93q0 -85 -62.5 -137t-148.5 -56l-19 -50q-2 -9 0 -9l5 2l14.5 2.5t16.5 1.5q40 0 62.5 -21t22.5 -47q0 -35 -29.5 -63.5t-76.5 -28.5q-23 0 -43.5 6.5t-30 12.5t-9.5 9q0 11 8 11l9 -3q8 -4 22 -8t29 -4q34 0 50 13.5t16 42.5 q0 45 -55 45q-8 0 -16.5 -2.5t-14 -4.5t-6.5 -2q-8 0 -8 5q0 3 35 92q-50 0 -97 10t-71 20t-25 16l-3.5 48l-4.5 62t-2 34q0 14 12 14h5q15 0 16 -16l6 -92q1 -21 65.5 -42t112.5 -21q54 0 93.5 35t39.5 86q0 42 -26.5 72t-66 46.5l-85.5 36.5t-85.5 40t-66 60t-26.5 94z " />
+<glyph unicode="&#x15f;" horiz-adv-x="337" d="M35 50q0 11 11.5 24.5t18.5 13.5q3 0 5 -3.5t5.5 -10.5t8.5 -13q42 -50 93 -50q28 0 47 16.5t19 48.5t-23 51.5t-66 37.5q-2 1 -18 8t-19 8.5t-17 8t-17.5 10t-13.5 11t-13.5 14t-9 15t-7 18.5t-1.5 22q0 48 44 80.5t100 32.5q51 0 77.5 -22.5t26.5 -44.5q0 -7 -15 -13 t-25 -6q-7 0 -12.5 10t-10 22.5t-18.5 22.5t-36 10q-29 0 -51 -17t-22 -53q0 -15 5.5 -27t21 -22.5t24 -15t31.5 -15.5q33 -16 45.5 -22.5t36 -22.5t33 -33t9.5 -38q0 -48 -35 -80t-87 -37l-20 -54q-2 -9 0 -9l6 2q5 1 13.5 2.5t16.5 1.5q40 0 62.5 -21t22.5 -47 q0 -35 -29.5 -63.5t-76.5 -28.5q-23 0 -43.5 6.5t-30 12.5t-9.5 9q0 11 8 11l8 -3q9 -4 23 -8t29 -4q34 0 50 13.5t16 42.5q0 45 -55 45q-8 0 -16.5 -2.5t-14 -4.5t-6.5 -2q-8 0 -8 5q0 6 36 95h-1q-46 0 -86 19.5t-40 42.5z" />
+<glyph unicode="&#x160;" horiz-adv-x="528" d="M158 837q0 2 6 2h9q1 0 11 -6l81 -45q4 -2 8 0l81 45q10 6 11 6h9q6 0 6 -2l-4 -6l-79 -89q-12 -13 -16 -13h-24q-4 0 -16 13l-79 89q-4 4 -4 6zM55 488q0 81 65 135t149 54q73 0 135 -42q10 -8 16 -8t7 10l1 11q0 9 2 11.5t13 2.5q12 0 15.5 -2.5t3.5 -11.5l-2 -63 q-3 -63 -3 -94q0 -9 -3 -12.5t-13 -3.5q-13 0 -16 2.5t-3 9.5q0 1 1.5 30t1.5 34q0 22 -51.5 60t-102.5 38q-57 0 -95 -37t-38 -92q0 -43 26.5 -73.5t65.5 -46l85.5 -34t85.5 -37.5t65.5 -58t26.5 -93q0 -88 -67.5 -140.5t-156.5 -52.5q-51 0 -99 9.5t-73 20t-26 16.5 l-3.5 48l-4.5 62t-2 34q0 14 12 14h5q15 0 16 -16l6 -92q1 -21 65.5 -42t112.5 -21q54 0 93.5 35t39.5 86q0 42 -26.5 72t-66 46.5l-85.5 36.5t-85.5 40t-66 60t-26.5 94z" />
+<glyph unicode="&#x161;" horiz-adv-x="337" d="M59 597q0 2 5 2h12l8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM35 50q0 11 11.5 24.5t18.5 13.5q3 0 5 -3.5t5.5 -10.5t8.5 -13q42 -50 93 -50q28 0 47 16.5 t19 48.5t-23 51.5t-66 37.5q-2 1 -18 8t-19 8.5t-17 8t-17.5 10t-13.5 11t-13.5 14t-9 15t-7 18.5t-1.5 22q0 48 44 80.5t100 32.5q51 0 77.5 -22.5t26.5 -44.5q0 -7 -15 -13t-25 -6q-7 0 -12.5 10t-10 22.5t-18.5 22.5t-36 10q-29 0 -51 -17t-22 -53q0 -15 5.5 -27 t21 -22.5t24 -15t31.5 -15.5q33 -16 45.5 -22.5t36 -22.5t33 -33t9.5 -38q0 -53 -41.5 -85.5t-99.5 -32.5q-46 0 -86 19.5t-40 42.5z" />
+<glyph unicode="&#x162;" horiz-adv-x="690" d="M20 544l4 22q3 21 7 52.5t6 53.5q1 10 3 12t13 2q13 0 13 -6v-11q0 -6 108 -6h357q108 0 109 11q1 12 13 12q11 0 14 -2t3 -9q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 8 -113 8h-116q-3 0 -5 -10t-3 -30.5t-1 -36t-0.5 -44 t-0.5 -37.5l-1 -29q0 -28 -1 -72.5t-2 -94.5t-1.5 -102t-0.5 -87q0 -65 2 -65h74q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-9 0 -50.5 1.5t-59.5 1.5l-24 -65q-2 -9 0 -9l5 2l14.5 2.5t16.5 1.5q40 0 62.5 -21t22.5 -47q0 -35 -29.5 -63.5t-76.5 -28.5q-23 0 -43.5 6.5 t-30 12.5t-9.5 9q0 11 8 11l9 -3q8 -4 22 -8t29 -4q34 0 50 13.5t16 42.5q0 45 -55 45q-8 0 -16.5 -2.5t-14 -4.5t-6.5 -2q-8 0 -8 5t41 107q-18 0 -61.5 -1.5t-52.5 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h62q7 0 10.5 192.5t3.5 325.5q0 90 -7 90h-144 q-96 0 -97 -13l-7 -70q-1 -17 -13 -17q-20 0 -20 9z" />
+<glyph unicode="&#x163;" horiz-adv-x="289" d="M35 344q0 5 3 8l91 127q3 5 9 5q10 0 10 -10q0 -1 -1.5 -20.5t-3 -42t-1.5 -29.5t2 -8.5t9 -1.5h95q9 0 10.5 -2t-1.5 -16q-4 -16 -13 -16h-99q-3 0 -3 -46v-192q0 -20 2 -31t13 -21t33 -10q23 0 52 8l28 8q4 0 4 -16q0 -3 -18.5 -12.5t-46.5 -20t-48 -13.5l-21 -57 q-2 -9 0 -9l6 2q5 1 13.5 2.5t16.5 1.5q40 0 62.5 -21t22.5 -47q0 -35 -29.5 -63.5t-76.5 -28.5q-23 0 -43.5 6.5t-30 12.5t-9.5 9q0 11 8 11l8 -3q9 -4 23 -8t29 -4q34 0 50 13.5t16 42.5q0 45 -55 45q-8 0 -16.5 -2.5t-14 -4.5t-6.5 -2q-8 0 -8 5q0 2 37 98 q-36 1 -51.5 21.5t-15.5 47.5q2 144 2 216q0 61 -12 61h-25q-6 0 -6 7z" />
+<glyph unicode="&#x164;" horiz-adv-x="690" d="M234 834q0 2 6 2h9q1 0 11 -6l81 -45q4 -2 8 0l81 45q10 6 11 6h9q6 0 6 -2l-4 -6l-79 -89q-12 -13 -16 -13h-24q-4 0 -16 13l-79 89q-4 4 -4 6zM20 544l4 22q3 21 7 52.5t6 53.5q1 10 3 12t13 2q13 0 13 -6v-11q0 -6 108 -6h357q108 0 109 11q1 12 13 12q11 0 14 -2 t3 -9q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 8 -113 8h-116q-3 0 -5 -10t-3 -30.5t-1 -36t-0.5 -44t-0.5 -37.5l-1 -29q0 -28 -1 -72.5t-2 -94.5t-1.5 -102t-0.5 -87q0 -65 2 -65h74q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3 q-11 0 -57.5 1.5t-62.5 1.5t-63 -1.5t-58 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h62q7 0 10.5 192.5t3.5 325.5q0 90 -7 90h-144q-96 0 -97 -13l-7 -70q-1 -17 -13 -17q-20 0 -20 9z" />
+<glyph unicode="&#x165;" horiz-adv-x="289" d="M189 491q0 2 2.5 27t5.5 60.5t5 54.5q3 33 35 33t32 -29q0 -5 -3 -13l-51 -124q-6 -12 -8 -12h-15q-3 0 -3 3zM35 344q0 5 3 8l91 127q3 5 9 5q10 0 10 -10q0 -1 -1.5 -20.5t-3 -42t-1.5 -29.5t2 -8.5t9 -1.5h95q9 0 10.5 -2t-1.5 -16q-4 -16 -13 -16h-99q-3 0 -3 -46 v-192q0 -20 2 -31t13 -21t33 -10q23 0 52 8l28 8q4 0 4 -16q0 -3 -22.5 -14t-53.5 -22t-50 -11q-39 0 -55.5 20.5t-16.5 48.5q2 144 2 216q0 61 -12 61h-25q-6 0 -6 7z" />
+<glyph unicode="&#x166;" horiz-adv-x="690" d="M20 544l4 22q3 21 7 52.5t6 53.5q1 10 3 12t13 2q13 0 13 -6v-11q0 -6 108 -6h357q108 0 109 11q1 12 13 12q11 0 14 -2t3 -9q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 8 -113 8h-116q-3 0 -5 -10t-3 -30.5t-1 -36t-0.5 -44 t-0.5 -37.5l-1 -15q0 -14 -0.5 -42t-0.5 -56q0 -7 1 -8t8 -1h156q3 0 3 -12t-3 -12h-156q-7 0 -8.5 -2t-1.5 -9q0 -27 -1 -76.5t-1.5 -87t-0.5 -64.5q0 -65 2 -65h74q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-63 -1.5t-58 -1.5q-10 0 -12 2.5 t-2 15.5q0 9 3 10.5t15 1.5h62q8 0 12 293q0 7 -1.5 9t-8.5 2h-153q-2 0 -2.5 12t2.5 12h157q7 0 7 9q1 76 1 181q0 90 -7 90h-144q-96 0 -97 -13l-7 -70q-1 -17 -13 -17q-20 0 -20 9z" />
+<glyph unicode="&#x167;" horiz-adv-x="289" d="M35 344q0 5 3 8l91 127q3 5 9 5q10 0 10 -10q0 -1 -1.5 -20.5t-3 -42t-1.5 -29.5t2 -8.5t9 -1.5h95q9 0 10.5 -2t-1.5 -16q-4 -16 -13 -16h-99q-3 0 -3 -46v-68q0 -7 1 -8t8 -1h101q3 0 3 -12t-3 -12h-101q-9 0 -9 -7v-84q0 -20 2 -31t13 -21t33 -10q23 0 52 8l28 8 q4 0 4 -16q0 -3 -22.5 -14t-53.5 -22t-50 -11q-39 0 -55.5 20.5t-16.5 48.5q0 17 0.5 60t0.5 64q0 7 -10 7h-29q-2 0 -2.5 12t2.5 12h29q8 0 9.5 1t1.5 8v52q0 61 -12 61h-25q-6 0 -6 7z" />
+<glyph unicode="&#x168;" horiz-adv-x="755" d="M279 748q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM40 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 59.5 1.5t54.5 1.5 q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-65q-6 0 -10 -166.5t-4 -239.5q0 -97 48 -145.5t153 -48.5q92 0 172 54q17 11 20 23q5 17 5 136v305q0 82 -7 82h-49q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 44.5 -1.5t55.5 -1.5t46 1.5t32 1.5q10 0 12 -2.5 t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-24q-3 0 -5 -17t-3 -51t-1.5 -69t-1.5 -88.5t-2 -91.5q-1 -57 -3 -128t-3 -113t-1 -51q0 -32 -21 -32q-10 0 -30 36.5t-32 36.5q-10 0 -46 -20q-40 -23 -96.5 -40t-109.5 -17q-59 0 -100.5 14t-64 34t-35.5 54t-16 63.5t-3 72.5 q0 11 0.5 157t0.5 191q0 59 -5 59h-37q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#x169;" horiz-adv-x="510" d="M135 498q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM15 360q0 4 3 11q2 6 4 7t11 2q88 4 110 4q7 0 7 -6v-272q0 -67 111 -67 q91 0 91 16v118q0 186 -8 186q-1 0 -25.5 -1t-26.5 -1q-4 0 -4 4q2 17 6 19q2 1 7 1q95 5 113 5q7 0 7 -6q-1 -239 -1 -301q0 -37 3.5 -48t15.5 -11q2 0 21 3t20 3q5 0 5 -10t-2 -12t-12 -4q-102 -15 -104 -15q-10 0 -11 13q-3 38 -4 38l-26 -12q-25 -12 -64.5 -23.5 t-72.5 -11.5q-34 0 -57 11t-33.5 31t-14.5 41t-4 50v157q0 77 -12 77q-1 0 -24 -0.5t-25 -0.5q-4 0 -4 5z" />
+<glyph unicode="&#x16a;" horiz-adv-x="755" d="M282 788v23q0 6 1.5 7t7.5 1h187q6 0 7 -1t1 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM40 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 59.5 1.5t54.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-65q-6 0 -10 -166.5t-4 -239.5 q0 -97 48 -145.5t153 -48.5q92 0 172 54q17 11 20 23q5 17 5 136v305q0 82 -7 82h-49q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 44.5 -1.5t55.5 -1.5t46 1.5t32 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-24q-3 0 -5 -17t-3 -51t-1.5 -69 t-1.5 -88.5t-2 -91.5q-1 -57 -3 -128t-3 -113t-1 -51q0 -32 -21 -32q-10 0 -30 36.5t-32 36.5q-10 0 -46 -20q-40 -23 -96.5 -40t-109.5 -17q-59 0 -100.5 14t-64 34t-35.5 54t-16 63.5t-3 72.5q0 11 0.5 157t0.5 191q0 59 -5 59h-37q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#x16b;" horiz-adv-x="510" d="M138 518v23q0 6 1.5 7t7.5 1h187q6 0 7 -1t1 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM15 360q0 4 3 11q2 6 4 7t11 2q88 4 110 4q7 0 7 -6v-272q0 -67 111 -67q91 0 91 16v118q0 186 -8 186q-1 0 -25.5 -1t-26.5 -1q-4 0 -4 4q2 17 6 19q2 1 7 1q95 5 113 5 q7 0 7 -6q-1 -239 -1 -301q0 -37 3.5 -48t15.5 -11q2 0 21 3t20 3q5 0 5 -10t-2 -12t-12 -4q-102 -15 -104 -15q-10 0 -11 13q-3 38 -4 38l-26 -12q-25 -12 -64.5 -23.5t-72.5 -11.5q-34 0 -57 11t-33.5 31t-14.5 41t-4 50v157q0 77 -12 77q-1 0 -24 -0.5t-25 -0.5 q-4 0 -4 5z" />
+<glyph unicode="&#x16c;" horiz-adv-x="755" d="M281 832q0 6 1 6h17q1 0 2 -6t4.5 -15t10.5 -17.5t24.5 -14.5t43.5 -6t43.5 6t24.5 14.5t10.5 17.5t4.5 15t2 6h17q1 0 1 -6q0 -45 -26 -74t-77 -29t-77 29t-26 74zM40 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 59.5 1.5t54.5 1.5q10 0 12 -2.5t2 -15.5 q0 -9 -3 -10.5t-15 -1.5h-65q-6 0 -10 -166.5t-4 -239.5q0 -97 48 -145.5t153 -48.5q92 0 172 54q17 11 20 23q5 17 5 136v305q0 82 -7 82h-49q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 44.5 -1.5t55.5 -1.5t46 1.5t32 1.5q10 0 12 -2.5t2 -15.5 q0 -9 -2.5 -10.5t-15.5 -1.5h-24q-3 0 -5 -17t-3 -51t-1.5 -69t-1.5 -88.5t-2 -91.5q-1 -57 -3 -128t-3 -113t-1 -51q0 -32 -21 -32q-10 0 -30 36.5t-32 36.5q-10 0 -46 -20q-40 -23 -96.5 -40t-109.5 -17q-59 0 -100.5 14t-64 34t-35.5 54t-16 63.5t-3 72.5q0 11 0.5 157 t0.5 191q0 59 -5 59h-37q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#x16d;" horiz-adv-x="510" d="M137 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84zM15 360q0 4 3 11q2 6 4 7t11 2q88 4 110 4q7 0 7 -6v-272q0 -67 111 -67q91 0 91 16v118 q0 186 -8 186q-1 0 -25.5 -1t-26.5 -1q-4 0 -4 4q2 17 6 19q2 1 7 1q95 5 113 5q7 0 7 -6q-1 -239 -1 -301q0 -37 3.5 -48t15.5 -11q2 0 21 3t20 3q5 0 5 -10t-2 -12t-12 -4q-102 -15 -104 -15q-10 0 -11 13q-3 38 -4 38l-26 -12q-25 -12 -64.5 -23.5t-72.5 -11.5 q-34 0 -57 11t-33.5 31t-14.5 41t-4 50v157q0 77 -12 77q-1 0 -24 -0.5t-25 -0.5q-4 0 -4 5z" />
+<glyph unicode="&#x16e;" horiz-adv-x="755" d="M313 785q0 29 21 50t50 21t50 -21t21 -50t-21 -50t-50 -21t-50 21t-21 50zM341 785q0 -18 12.5 -30.5t30.5 -12.5t30.5 12.5t12.5 30.5t-12.5 30.5t-30.5 12.5t-30.5 -12.5t-12.5 -30.5zM40 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 59.5 1.5t54.5 1.5 q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-65q-6 0 -10 -166.5t-4 -239.5q0 -97 48 -145.5t153 -48.5q92 0 172 54q17 11 20 23q5 17 5 136v305q0 82 -7 82h-49q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 44.5 -1.5t55.5 -1.5t46 1.5t32 1.5q10 0 12 -2.5 t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-24q-3 0 -5 -17t-3 -51t-1.5 -69t-1.5 -88.5t-2 -91.5q-1 -57 -3 -128t-3 -113t-1 -51q0 -32 -21 -32q-10 0 -30 36.5t-32 36.5q-10 0 -46 -20q-40 -23 -96.5 -40t-109.5 -17q-59 0 -100.5 14t-64 34t-35.5 54t-16 63.5t-3 72.5 q0 11 0.5 157t0.5 191q0 59 -5 59h-37q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#x16f;" horiz-adv-x="510" d="M169 535q0 29 21 50t50 21t50 -21t21 -50t-21 -50t-50 -21t-50 21t-21 50zM197 535q0 -18 12.5 -30.5t30.5 -12.5t30.5 12.5t12.5 30.5t-12.5 30.5t-30.5 12.5t-30.5 -12.5t-12.5 -30.5zM15 360q0 4 3 11q2 6 4 7t11 2q88 4 110 4q7 0 7 -6v-272q0 -67 111 -67 q91 0 91 16v118q0 186 -8 186q-1 0 -25.5 -1t-26.5 -1q-4 0 -4 4q2 17 6 19q2 1 7 1q95 5 113 5q7 0 7 -6q-1 -239 -1 -301q0 -37 3.5 -48t15.5 -11q2 0 21 3t20 3q5 0 5 -10t-2 -12t-12 -4q-102 -15 -104 -15q-10 0 -11 13q-3 38 -4 38l-26 -12q-25 -12 -64.5 -23.5 t-72.5 -11.5q-34 0 -57 11t-33.5 31t-14.5 41t-4 50v157q0 77 -12 77q-1 0 -24 -0.5t-25 -0.5q-4 0 -4 5z" />
+<glyph unicode="&#x170;" horiz-adv-x="755" d="M307 731q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2zM427 731q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2zM40 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 59.5 1.5 t54.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-65q-6 0 -10 -166.5t-4 -239.5q0 -97 48 -145.5t153 -48.5q92 0 172 54q17 11 20 23q5 17 5 136v305q0 82 -7 82h-49q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 44.5 -1.5t55.5 -1.5t46 1.5t32 1.5 q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-24q-3 0 -5 -17t-3 -51t-1.5 -69t-1.5 -88.5t-2 -91.5q-1 -57 -3 -128t-3 -113t-1 -51q0 -32 -21 -32q-10 0 -30 36.5t-32 36.5q-10 0 -46 -20q-40 -23 -96.5 -40t-109.5 -17q-59 0 -100.5 14t-64 34t-35.5 54t-16 63.5 t-3 72.5q0 11 0.5 157t0.5 191q0 59 -5 59h-37q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#x171;" horiz-adv-x="510" d="M160 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM270 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM15 360q0 4 3 11q2 6 4 7t11 2 q88 4 110 4q7 0 7 -6v-272q0 -67 111 -67q91 0 91 16v118q0 186 -8 186q-1 0 -25.5 -1t-26.5 -1q-4 0 -4 4q2 17 6 19q2 1 7 1q95 5 113 5q7 0 7 -6q-1 -239 -1 -301q0 -37 3.5 -48t15.5 -11q2 0 21 3t20 3q5 0 5 -10t-2 -12t-12 -4q-102 -15 -104 -15q-10 0 -11 13 q-3 38 -4 38l-26 -12q-25 -12 -64.5 -23.5t-72.5 -11.5q-34 0 -57 11t-33.5 31t-14.5 41t-4 50v157q0 77 -12 77q-1 0 -24 -0.5t-25 -0.5q-4 0 -4 5z" />
+<glyph unicode="&#x172;" horiz-adv-x="755" d="M40 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 59.5 1.5t54.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-65q-6 0 -10 -166.5t-4 -239.5q0 -97 48 -145.5t153 -48.5q92 0 172 54q17 11 20 23q5 17 5 136v305q0 82 -7 82h-49q-8 0 -11 0.5t-6 4 t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 44.5 -1.5t55.5 -1.5t46 1.5t32 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-24q-3 0 -5 -17t-3 -51t-1.5 -69t-1.5 -88.5t-2 -91.5q-1 -57 -3 -128t-3 -113t-1 -51q0 -32 -21 -32q-10 0 -30 36.5t-32 36.5q-10 0 -46 -20 q-10 -6 -60.5 -28t-69.5 -45q-63 -74 -63 -140q0 -33 20 -56.5t44 -23.5q23 0 43 11t31 22l11 11q1 0 6 -6t5 -7q0 -3 -15 -19t-47.5 -34t-68.5 -18q-32 0 -62.5 29.5t-30.5 63.5t19 68.5t36.5 52.5t63.5 62q9 8 5 8q-2 0 -11 -2q-32 -6 -62 -6q-59 0 -100.5 14t-64 34 t-35.5 54t-16 63.5t-3 72.5q0 11 0.5 157t0.5 191q0 59 -5 59h-37q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#x173;" horiz-adv-x="510" d="M15 360q0 4 3 11q2 6 4 7t11 2q88 4 110 4q7 0 7 -6v-272q0 -67 111 -67q91 0 91 16v118q0 186 -8 186q-1 0 -25.5 -1t-26.5 -1q-4 0 -4 4q2 17 6 19q2 1 7 1q95 5 113 5q7 0 7 -6q-1 -239 -1 -301q0 -37 3.5 -48t15.5 -11q2 0 21 3t20 3q5 0 5 -10t-2 -12t-12 -4l-37 -6 q-44 -6 -58 -20q-58 -61 -58 -141q0 -33 20 -56.5t44 -23.5q23 0 43 11t31 22l11 11q1 0 6 -6t5 -7q0 -3 -15 -19t-47.5 -34t-68.5 -18q-32 0 -62.5 29.5t-30.5 63.5q0 29 15 60t30 49t50 57q7 9 7 15q0 49 -4 49l-26 -12q-25 -12 -64.5 -23.5t-72.5 -11.5q-34 0 -57 11 t-33.5 31t-14.5 41t-4 50v157q0 77 -12 77q-1 0 -24 -0.5t-25 -0.5q-4 0 -4 5z" />
+<glyph unicode="&#x174;" horiz-adv-x="1008" d="M391 731l4 6l79 89q12 13 16 13h24q4 0 16 -13l79 -89q4 -4 4 -6t-6 -2h-9q-1 0 -11 6l-81 45q-4 2 -8 0l-81 -45q-10 -6 -11 -6h-9q-6 0 -6 2zM10 649q0 7 2.5 10.5t6 4t11.5 0.5q6 0 41 -1.5t52 -1.5q16 0 54.5 1.5t49.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5 t-15.5 -1.5h-50q-10 0 -10 -9t27 -99l47.5 -155l50.5 -158t23 -71q12 -36 13 -36q2 0 16 36l143 365q5 13 5 18q0 4 -3.5 14t-5.5 17q-22 78 -27 78h-60q-7 0 -10 0.5t-5 4t-2 10.5q0 11 3 13t14 2q6 0 50 -1.5t61 -1.5q16 0 62.5 1.5t57.5 1.5q10 0 12 -2.5t2 -15.5 q0 -8 -3 -10t-14 -2h-64q-3 0 -3 -9q0 -27 18 -99l32.5 -116l34.5 -120.5l28.5 -98.5t14.5 -49l4 -14t3.5 -11.5l3 -9l2.5 -7.5t2 -5.5t2 -3.5t2 -1q2 0 22 50l35.5 93.5l46 122l39 108t33.5 102t11 52.5q0 16 -9 16h-65q-7 0 -10 0.5t-5 4t-2 10.5q0 11 3 13t14 2 q6 0 46 -1.5t57 -1.5q18 0 42 1.5t26 1.5q10 0 12 -2.5t2 -13.5q0 -9 -3 -11.5t-15 -2.5q-13 0 -19.5 -2.5t-9 -6t-7.5 -14.5l-221 -543q-4 -11 -8 -17.5t-9.5 -13l-9.5 -11.5l-11 -17t-9 -14t-7 -10.5t-7 -7.5t-7 -2q-8 0 -14.5 14t-18 55.5t-19.5 65.5q0 1 -14 51l-37 132 l-41 147q-7 25 -10 25t-12 -25l-142 -372q-4 -11 -8 -17.5t-9.5 -13l-9.5 -11.5l-11 -17t-9 -14t-7 -10.5t-7 -7.5t-7 -2q-8 0 -14.5 14t-18 55.5t-19.5 65.5q0 1 -16.5 56.5l-39.5 131.5l-46.5 152.5l-40.5 130t-19 53.5h-35q-8 0 -11 0.5t-6 4t-3 10.5z" />
+<glyph unicode="&#x175;" horiz-adv-x="697" d="M257 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM25 368q0 6 0.5 8t3.5 4t9 2q8 0 29.5 -1t37.5 -1q13 0 45 1t40 1q9 0 11 -2.5t2 -11.5 q0 -13 -12 -13h-25q-18 0 -18 -8q0 -2 15.5 -52.5t37.5 -115t35 -95.5q7 -16 9 -16q4 0 13 23q68 172 80 206q7 18 7 27q0 6 -5 16q-8 15 -34 15h-10q-8 0 -10.5 3t-2.5 10q0 6 0.5 8t3.5 4t9 2q11 0 33 -1t40 -1q13 0 35.5 1t34.5 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-21 q-13 0 -13 -8q0 -2 14.5 -52.5t35 -115t32.5 -95.5q10 -23 12 -23t11 22q18 43 51 143.5t33 117.5q0 11 -12 11h-31q-8 0 -10.5 3t-2.5 10q0 14 14 14q3 0 24 -1t33 -1q13 0 31 1t20 1q7 0 9 -2.5t2 -11.5q0 -13 -12 -13h-6q-9 0 -14 -10q-9 -18 -50.5 -130t-66.5 -163 q-8 -17 -21.5 -34t-24.5 -36q-3 -7 -11 -7q-11 0 -30 66q-22 80 -69 224q-6 18 -8 18q-3 0 -9 -18q-67 -177 -84 -212q-8 -16 -22 -33t-26 -38q-4 -7 -12 -7q-12 0 -31 66q-4 15 -21 63.5l-42 119.5l-41 116q-4 11 -7.5 13t-14.5 2h-11q-8 0 -10.5 3t-2.5 10z" />
+<glyph unicode="&#x176;" horiz-adv-x="597" d="M217 731l4 6l79 89q12 13 16 13h24q4 0 16 -13l79 -89q4 -4 4 -6t-6 -2h-9q-1 0 -11 6l-81 45q-4 2 -8 0l-81 -45q-10 -6 -11 -6h-9q-6 0 -6 2zM10 654q0 7 2 10.5t5 4t11 0.5q6 0 46 -1.5t57 -1.5q16 0 60 1.5t55 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-59 q-11 0 -12 -2.5t4 -12.5q9 -23 37 -76.5l62.5 -117t42.5 -79.5q9 -17 11 -17q3 0 11 14l27 52l38 72.5l35.5 69.5t29 62t10.5 32q0 3 -2 3h-56q-13 0 -15.5 1.5t-2.5 10.5q0 13 2 15.5t12 2.5q11 0 36.5 -1.5t41.5 -1.5q17 0 43.5 1.5t32.5 1.5q11 0 13.5 -2t2.5 -13 q0 -6 -0.5 -9t-3 -4.5t-5 -1.5h-7.5h-36q-2 0 -37.5 -62l-81.5 -142l-65 -111q-3 -5 -3 -11q0 -286 10 -286h71q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-58.5 -1.5t-53.5 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h52q10 0 10 244 q0 11 -7 23q-189 345 -199 345h-29q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#x177;" horiz-adv-x="467" d="M141 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM25 368q0 6 0.5 8t3.5 4t9 2q8 0 33 -1t41 -1q13 0 46.5 1t41.5 1q9 0 11 -2.5t2 -11.5 q0 -13 -12 -13h-19q-26 0 -26 -10q0 -12 31 -97.5t58 -151.5q16 -40 19 -40t17 40q82 231 82 252q0 7 -31 7h-23q-8 0 -10.5 3t-2.5 10q0 14 14 14q9 0 31.5 -1t32.5 -1q12 0 30 1t25 1q13 0 13 -14q0 -13 -12 -13h-14q-10 0 -13 -10q-38 -105 -133 -342q-1 -3 -7 -19.5 t-15.5 -46t-17.5 -51.5q-2 -4 -5.5 -15.5t-5 -14.5t-4.5 -11.5t-5 -12t-5.5 -11t-7 -12.5t-8 -12.5t-10.5 -14.5t-13 -16q-17 -22 -26 -27q-6 -4 -15 -8q-54 -26 -62 -26q-18 0 -18 20q0 15 19 42q7 11 28 18l22.5 7.5t29.5 11t22 13.5t16 19q44 109 44 121q0 8 -28 77 l-72.5 174l-55.5 132q-4 11 -7 13t-14 2h-11q-8 0 -10.5 3t-2.5 10z" />
+<glyph unicode="&#x178;" horiz-adv-x="597" d="M197 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM357 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM10 654q0 7 2 10.5t5 4t11 0.5q6 0 46 -1.5t57 -1.5q16 0 60 1.5 t55 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-59q-11 0 -12 -2.5t4 -12.5q9 -23 37 -76.5l62.5 -117t42.5 -79.5q9 -17 11 -17q3 0 11 14l27 52l38 72.5l35.5 69.5t29 62t10.5 32q0 3 -2 3h-56q-13 0 -15.5 1.5t-2.5 10.5q0 13 2 15.5t12 2.5q11 0 36.5 -1.5 t41.5 -1.5q17 0 43.5 1.5t32.5 1.5q11 0 13.5 -2t2.5 -13q0 -6 -0.5 -9t-3 -4.5t-5 -1.5h-7.5h-36q-2 0 -37.5 -62l-81.5 -142l-65 -111q-3 -5 -3 -11q0 -286 10 -286h71q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-58.5 -1.5t-53.5 -1.5 q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h52q10 0 10 244q0 11 -7 23q-189 345 -199 345h-29q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#x179;" horiz-adv-x="601" d="M304 731q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2zM40 15q0 5 61 98.5l163.5 249.5l165.5 254q5 7 5 9q0 3 -24 3h-302q-9 0 -10 -7q-1 -2 -1 -3q-2 -9 -5 -28.5t-5.5 -33.5t-2.5 -16q-4 -15 -9 -15q-24 0 -24 9q0 3 3.5 24.5 l9 56t8.5 60.5q0 6 16 6q13 0 13 -6v-6q0 -3 1.5 -4.5t8 -2.5t18 -1.5t31.5 -0.5h381q10 0 13.5 -3t3.5 -12q0 -6 -62.5 -98l-159 -238t-157.5 -250q-10 -16 -10 -18q0 -5 11 -5h337h5.5t4 0.5t2.5 1t1 3t1 4t0.5 6t0.5 8.5q1 14 3 87q0 8 18 8q17 0 17 -9q0 -28 -1.5 -77 t-1.5 -61q0 -11 -22 -11q-57 0 -252 1.5t-246 1.5q-5 0 -6.5 2.5t-1.5 12.5z" />
+<glyph unicode="&#x17a;" horiz-adv-x="413" d="M185 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM35 10q0 7 10 20l214 315q2 3 5 7t5 7t2 4q0 3 -14 3l-155 -5q-17 -1 -20.5 -3.5t-6.5 -15.5l-10 -40q-3 -12 -13 -12q-16 0 -16 6q0 2 9 80q1 9 3 11 t11 2h281q23 0 23 -9q0 -1 -9 -15l-210 -310q-9 -13 -9 -18q0 -10 15 -10l174 4q10 0 12 1.5t4 11.5l7 58q1 9 3 10.5t14 1.5q9 0 9 -6q0 -20 -5 -93q-1 -11 -3 -13t-13 -2h-295q-22 0 -22 10z" />
+<glyph unicode="&#x17b;" horiz-adv-x="601" d="M263 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM40 15q0 5 61 98.5l163.5 249.5l165.5 254q5 7 5 9q0 3 -24 3h-302q-9 0 -10 -7q-1 -2 -1 -3q-2 -9 -5 -28.5t-5.5 -33.5t-2.5 -16q-4 -15 -9 -15q-24 0 -24 9 q0 3 3.5 24.5l9 56t8.5 60.5q0 6 16 6q13 0 13 -6v-6q0 -3 1.5 -4.5t8 -2.5t18 -1.5t31.5 -0.5h381q10 0 13.5 -3t3.5 -12q0 -6 -62.5 -98l-159 -238t-157.5 -250q-10 -16 -10 -18q0 -5 11 -5h337h5.5t4 0.5t2.5 1t1 3t1 4t0.5 6t0.5 8.5q1 14 3 87q0 8 18 8q17 0 17 -9 q0 -28 -1.5 -77t-1.5 -61q0 -11 -22 -11q-57 0 -252 1.5t-246 1.5q-5 0 -6.5 2.5t-1.5 12.5z" />
+<glyph unicode="&#x17c;" horiz-adv-x="413" d="M149 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM35 10q0 7 10 20l214 315q2 3 5 7t5 7t2 4q0 3 -14 3l-155 -5q-17 -1 -20.5 -3.5t-6.5 -15.5l-10 -40q-3 -12 -13 -12q-16 0 -16 6q0 2 9 80q1 9 3 11t11 2h281 q23 0 23 -9q0 -1 -9 -15l-210 -310q-9 -13 -9 -18q0 -10 15 -10l174 4q10 0 12 1.5t4 11.5l7 58q1 9 3 10.5t14 1.5q9 0 9 -6q0 -20 -5 -93q-1 -11 -3 -13t-13 -2h-295q-22 0 -22 10z" />
+<glyph unicode="&#x17d;" horiz-adv-x="601" d="M203 837q0 2 6 2h9q1 0 11 -6l81 -45q4 -2 8 0l81 45q10 6 11 6h9q6 0 6 -2l-4 -6l-79 -89q-12 -13 -16 -13h-24q-4 0 -16 13l-79 89q-4 4 -4 6zM40 15q0 5 61 98.5l163.5 249.5l165.5 254q5 7 5 9q0 3 -24 3h-302q-9 0 -10 -7q-1 -2 -1 -3q-2 -9 -5 -28.5t-5.5 -33.5 t-2.5 -16q-4 -15 -9 -15q-24 0 -24 9q0 3 3.5 24.5l9 56t8.5 60.5q0 6 16 6q13 0 13 -6v-6q0 -3 1.5 -4.5t8 -2.5t18 -1.5t31.5 -0.5h381q10 0 13.5 -3t3.5 -12q0 -6 -62.5 -98l-159 -238t-157.5 -250q-10 -16 -10 -18q0 -5 11 -5h337h5.5t4 0.5t2.5 1t1 3t1 4t0.5 6 t0.5 8.5q1 14 3 87q0 8 18 8q17 0 17 -9q0 -28 -1.5 -77t-1.5 -61q0 -11 -22 -11q-57 0 -252 1.5t-246 1.5q-5 0 -6.5 2.5t-1.5 12.5z" />
+<glyph unicode="&#x17e;" horiz-adv-x="413" d="M90 597q0 2 5 2h12q1 0 8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM35 10q0 7 10 20l214 315q2 3 5 7t5 7t2 4q0 3 -14 3l-155 -5q-17 -1 -20.5 -3.5t-6.5 -15.5 l-10 -40q-3 -12 -13 -12q-16 0 -16 6q0 2 9 80q1 9 3 11t11 2h281q23 0 23 -9q0 -1 -9 -15l-210 -310q-9 -13 -9 -18q0 -10 15 -10l174 4q10 0 12 1.5t4 11.5l7 58q1 9 3 10.5t14 1.5q9 0 9 -6q0 -20 -5 -93q-1 -11 -3 -13t-13 -2h-295q-22 0 -22 10z" />
+<glyph unicode="&#x17f;" horiz-adv-x="274" d="M32 12q0 13 12 13h40q4 0 4 63q0 116 -2 296q0 18 -0.5 33t-1 27.5t-0.5 36.5q0 87 37 142t119 55q31 0 57 -19t26 -48q0 -16 -18 -31.5t-30 -15.5t-13 9q-3 23 -5 33t-7 24.5t-13.5 20t-21.5 5.5q-59 0 -59 -164q0 -107 2 -323q2 -144 10 -144h66q8 0 10.5 -3t2.5 -10 q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -49 1t-57 1q-12 0 -39.5 -1t-43.5 -1q-9 0 -11 2.5t-2 11.5z" />
+<glyph unicode="&#x218;" horiz-adv-x="528" d="M224 -225l15 10q15 10 29.5 25.5t14.5 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM55 488q0 81 65 135t149 54q73 0 135 -42q10 -8 16 -8t7 10l1 11 q0 9 2 11.5t13 2.5q12 0 15.5 -2.5t3.5 -11.5l-2 -63q-3 -63 -3 -94q0 -9 -3 -12.5t-13 -3.5q-13 0 -16 2.5t-3 9.5q0 1 1.5 30t1.5 34q0 22 -51.5 60t-102.5 38q-57 0 -95 -37t-38 -92q0 -43 26.5 -73.5t65.5 -46l85.5 -34t85.5 -37.5t65.5 -58t26.5 -93 q0 -88 -67.5 -140.5t-156.5 -52.5q-51 0 -99 9.5t-73 20t-26 16.5l-3.5 48l-4.5 62t-2 34q0 14 12 14h5q15 0 16 -16l6 -92q1 -21 65.5 -42t112.5 -21q54 0 93.5 35t39.5 86q0 42 -26.5 72t-66 46.5l-85.5 36.5t-85.5 40t-66 60t-26.5 94z" />
+<glyph unicode="&#x219;" horiz-adv-x="337" d="M121 -225l15 10q14 10 29 25.5t15 29.5q0 17 -13 30t-26.5 21.5t-13.5 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM35 50q0 11 11.5 24.5t18.5 13.5q3 0 5 -3.5t5.5 -10.5t8.5 -13 q42 -50 93 -50q28 0 47 16.5t19 48.5t-23 51.5t-66 37.5q-2 1 -18 8t-19 8.5t-17 8t-17.5 10t-13.5 11t-13.5 14t-9 15t-7 18.5t-1.5 22q0 48 44 80.5t100 32.5q51 0 77.5 -22.5t26.5 -44.5q0 -7 -15 -13t-25 -6q-7 0 -12.5 10t-10 22.5t-18.5 22.5t-36 10q-29 0 -51 -17 t-22 -53q0 -15 5.5 -27t21 -22.5t24 -15t31.5 -15.5q33 -16 45.5 -22.5t36 -22.5t33 -33t9.5 -38q0 -53 -41.5 -85.5t-99.5 -32.5q-46 0 -86 19.5t-40 42.5z" />
+<glyph unicode="&#x21a;" horiz-adv-x="690" d="M296 -225l15 10q15 10 29.5 25.5t14.5 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM20 544l4 22q3 21 7 52.5t6 53.5q1 10 3 12t13 2q13 0 13 -6v-11 q0 -6 108 -6h357q108 0 109 11q1 12 13 12q11 0 14 -2t3 -9q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 8 -113 8h-116q-3 0 -5 -10t-3 -30.5t-1 -36t-0.5 -44t-0.5 -37.5l-1 -29q0 -28 -1 -72.5t-2 -94.5t-1.5 -102t-0.5 -87q0 -65 2 -65 h74q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-63 -1.5t-58 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h62q7 0 10.5 192.5t3.5 325.5q0 90 -7 90h-144q-96 0 -97 -13l-7 -70q-1 -17 -13 -17q-20 0 -20 9z" />
+<glyph unicode="&#x21b;" horiz-adv-x="289" d="M101 -225l15 10q14 10 29 25.5t15 29.5q0 17 -13 30t-26.5 21.5t-13.5 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM35 344q0 5 3 8l91 127q3 5 9 5q10 0 10 -10q0 -1 -1.5 -20.5t-3 -42 t-1.5 -29.5t2 -8.5t9 -1.5h95q9 0 10.5 -2t-1.5 -16q-4 -16 -13 -16h-99q-3 0 -3 -46v-192q0 -20 2 -31t13 -21t33 -10q23 0 52 8l28 8q4 0 4 -16q0 -3 -22.5 -14t-53.5 -22t-50 -11q-39 0 -55.5 20.5t-16.5 48.5q2 144 2 216q0 61 -12 61h-25q-6 0 -6 7z" />
+<glyph unicode="&#x237;" horiz-adv-x="292" d="M5 -255q0 16 14.5 34.5t26.5 18.5t31.5 -2t23.5 -2q19 0 28.5 9.5t9.5 23.5q0 9 -2.5 56.5t-4.5 145t-2 229.5q0 49 -2 76q-1 14 -9 14q-3 0 -34 -1.5t-36 -1.5q-3 0 -3 4q0 5 4 15q0 1 1 3q2 6 14 6q22 0 52.5 1.5l51 2.5t21.5 1q7 0 7 -23q0 -20 2.5 -136.5t2.5 -191.5 q0 -90 -10.5 -145t-43.5 -98q-13 -17 -57.5 -38t-66.5 -21q-19 0 -19 20z" />
+<glyph unicode="&#x2bb;" horiz-adv-x="400" d="M143 502q0 31 24.5 62.5t48 48t29.5 16.5q4 0 7 -5.5t3 -10.5l-15 -10q-14 -10 -29 -25.5t-15 -29.5q0 -17 13 -30t26.5 -21.5t13.5 -12.5q0 -11 -18.5 -23t-24.5 -12q-12 0 -37.5 19.5t-25.5 33.5z" />
+<glyph unicode="&#x2bc;" horiz-adv-x="400" d="M408 491q0 2 2.5 27t5.5 60.5t5 54.5q3 33 35 33t32 -29q0 -5 -3 -13l-51 -124q-6 -12 -8 -12h-15q-3 0 -3 3z" />
+<glyph unicode="&#x2c0;" horiz-adv-x="400" />
+<glyph unicode="&#x2c6;" horiz-adv-x="400" d="M90 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12q-1 0 -8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2z" />
+<glyph unicode="&#x2c7;" horiz-adv-x="400" d="M90 597q0 2 5 2h12q1 0 8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6z" />
+<glyph unicode="&#x2d8;" horiz-adv-x="400" d="M97 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84z" />
+<glyph unicode="&#x2d9;" horiz-adv-x="400" d="M149 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5z" />
+<glyph unicode="&#x2da;" horiz-adv-x="400" d="M129 535q0 29 21 50t50 21t50 -21t21 -50t-21 -50t-50 -21t-50 21t-21 50zM157 535q0 -18 12.5 -30.5t30.5 -12.5t30.5 12.5t12.5 30.5t-12.5 30.5t-30.5 12.5t-30.5 -12.5t-12.5 -30.5z" />
+<glyph unicode="&#x2db;" horiz-adv-x="400" d="M107 -194q0 14 3 28t6.5 24.5t13.5 25l15 22t20 23.5l21 22l25.5 24.5l25.5 24.5h22q-88 -88 -88 -167q0 -33 20 -56.5t44 -23.5q23 0 43 11t31 22l11 11q1 0 6 -6t5 -7q0 -3 -15 -19t-47.5 -34t-68.5 -18q-32 0 -62.5 29.5t-30.5 63.5z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="400" d="M95 498q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2z" />
+<glyph unicode="&#x2dd;" horiz-adv-x="400" d="M120 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM230 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2z" />
+<glyph unicode="&#x300;" horiz-adv-x="0" d="M-302 582q0 13 9.5 21.5t26.5 8.5q21 0 30 -25l49 -130q2 -4 2 -6t-4 -2h-16q-3 0 -8 6l-82 107q-7 10 -7 20z" />
+<glyph unicode="&#x301;" horiz-adv-x="0" d="M-215 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2z" />
+<glyph unicode="&#x302;" horiz-adv-x="0" d="M-310 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12q-1 0 -8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2z" />
+<glyph unicode="&#x303;" horiz-adv-x="0" d="M-305 498q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2z" />
+<glyph unicode="&#x304;" horiz-adv-x="0" d="M-302 518v23q0 6 1.5 7t7.5 1h187q6 0 7 -1t1 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8z" />
+<glyph unicode="&#x306;" horiz-adv-x="0" d="M-303 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84z" />
+<glyph unicode="&#x307;" horiz-adv-x="0" d="M-251 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5z" />
+<glyph unicode="&#x308;" horiz-adv-x="0" d="M-331 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM-171 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5z" />
+<glyph unicode="&#x30a;" horiz-adv-x="0" d="M-271 535q0 29 21 50t50 21t50 -21t21 -50t-21 -50t-50 -21t-50 21t-21 50zM-243 535q0 -18 12.5 -30.5t30.5 -12.5t30.5 12.5t12.5 30.5t-12.5 30.5t-30.5 12.5t-30.5 -12.5t-12.5 -30.5z" />
+<glyph unicode="&#x30b;" horiz-adv-x="0" d="M-280 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM-170 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2z" />
+<glyph unicode="&#x30c;" horiz-adv-x="0" d="M-310 597q0 2 5 2h12q1 0 8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6z" />
+<glyph unicode="&#x312;" horiz-adv-x="0" d="M-257 502q0 31 24.5 62.5t48 48t29.5 16.5q4 0 7 -5.5t3 -10.5l-15 -10q-14 -10 -29 -25.5t-15 -29.5q0 -17 13 -30t26.5 -21.5t13.5 -12.5q0 -11 -18.5 -23t-24.5 -12q-12 0 -37.5 19.5t-25.5 33.5z" />
+<glyph unicode="&#x315;" horiz-adv-x="0" d="M8 491q0 2 2.5 27t5.5 60.5t5 54.5q3 33 35 33t32 -29q0 -5 -3 -13l-51 -124q-6 -12 -8 -12h-15q-3 0 -3 3z" />
+<glyph unicode="&#x326;" horiz-adv-x="0" d="M-254 -225l15 10q15 10 29.5 25.5t14.5 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5z" />
+<glyph unicode="&#x327;" horiz-adv-x="0" d="M-283 -200q0 11 8 11l9 -3q8 -4 22 -8t29 -4q34 0 50 13.5t16 42.5q0 45 -55 45q-8 0 -16.5 -2.5t-14 -4.5t-6.5 -2q-8 0 -8 5t41 107h17l-24 -65q-2 -9 0 -9l5 2l14.5 2.5t16.5 1.5q40 0 62.5 -21t22.5 -47q0 -35 -29.5 -63.5t-76.5 -28.5q-23 0 -43.5 6.5t-30 12.5 t-9.5 9z" />
+<glyph unicode="&#x328;" horiz-adv-x="0" d="M-293 -194q0 14 3 28t6.5 24.5t13.5 25l15 22t20 23.5l21 22l25.5 24.5l25.5 24.5h22q-88 -88 -88 -167q0 -33 20 -56.5t44 -23.5q23 0 43 11t31 22l11 11q1 0 6 -6t5 -7q0 -3 -15 -19t-47.5 -34t-68.5 -18q-32 0 -62.5 29.5t-30.5 63.5z" />
+<glyph unicode="&#x1e02;" horiz-adv-x="592" d="M240 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM40 649q0 7 2.5 10.5t6 4t11.5 0.5q6 0 51 -1t62 -1q19 0 60.5 1.5t62.5 1.5q99 0 160.5 -38t61.5 -123q0 -101 -150 -156l-17 -7q0 -1 11 -2.5t28 -5t38 -9.5t42 -18 t38 -29.5t28 -45t11 -62.5q0 -171 -280 -171q-27 0 -60.5 1t-35.5 1q-18 0 -61 -1.5t-45 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h53q5 0 5 42v323q0 242 -10 242l-57 -2q-20 0 -20 17zM209 315q0 -288 9 -288h61q180 0 180 149q0 111 -87 140q-31 10 -118 10 h-34q-11 0 -11 -11zM209 358q0 -6 3 -8t13 -2h57q10 0 20.5 -0.5t12.5 -0.5q11 0 20 3q41 12 70 46.5t29 91.5q0 73 -49.5 114.5t-127.5 41.5q-29 0 -43 -4q-5 -1 -5 -234v-48z" />
+<glyph unicode="&#x1e03;" horiz-adv-x="485" d="M78 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM5 639q0 21 5 21q20 2 55.5 6l60 7t26.5 3q6 0 6 -15q-3 -185 -3 -267q0 -38 1 -38t7.5 3t17.5 7.5t23.5 9t28.5 7.5t30 3q83 0 137.5 -57.5t54.5 -140.5 q0 -92 -65 -146.5t-156 -54.5q-19 0 -47.5 9.5t-41.5 9.5q-11 0 -28 -9t-21 -9q-12 0 -12 13q0 1 1 36.5t2.5 82.5t1.5 77q0 87 -4.5 264.5t-12.5 177.5q-2 0 -30.5 -3t-30.5 -3q-6 0 -6 6zM153 64q0 -50 84 -50q67 0 106.5 51t39.5 122q0 67 -47.5 118.5t-112.5 51.5 q-16 0 -32.5 -5.5t-26 -11t-9.5 -8.5q0 -59 -1 -159.5t-1 -108.5z" />
+<glyph unicode="&#x1e0a;" horiz-adv-x="758" d="M291 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM35 10q0 11 3 13t14 2h66q4 0 8.5 200t4.5 338q0 78 -2 78l-70 -2q-5 0 -7.5 0.5t-4 3t-1.5 8.5v7.5t1.5 5t4 3t7.5 0.5q1 0 11.5 -0.5t26.5 -0.5h31q41 0 114.5 6 t89.5 6q166 0 273.5 -93t107.5 -250q0 -105 -49.5 -183.5t-126.5 -116.5t-169 -39q-32 0 -97 2t-98 2q-16 0 -70 -2t-57 -2q-8 0 -9.5 2t-1.5 12zM213 86q0 -59 2 -60q6 -4 57 -4q69 0 124.5 14t90 34.5t60 53t37.5 59t19 63.5t8 56t1 46q0 73 -35.5 141.5t-106.5 115.5 t-159 47q-67 0 -90 -6q-7 -2 -7 -146q-1 -138 -1 -414z" />
+<glyph unicode="&#x1e0b;" horiz-adv-x="499" d="M311 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM30 181q0 85 58.5 141.5t144.5 56.5q17 0 33.5 -2.5t28.5 -6.5t21 -8t14 -6l6 -3q6 0 6 18q0 48 -2 113.5t-4.5 112t-3.5 46.5t-32 -4.5t-35 -4.5t-5 2t1 13q2 12 8 13 q24 3 56.5 7.5t52.5 7.5t22 3q7 0 8.5 -3.5t1.5 -19.5q0 -7 -1.5 -62.5t-3 -164.5t-1.5 -246q0 -48 2 -120q1 -29 6 -39t17 -10q4 0 34 4q6 1 8.5 0t2.5 -8q0 -8 -0.5 -11t-3 -5t-9.5 -3l-115 -15q-6 0 -6 9q0 1 0.5 17.5t0.5 18.5q0 8 -2.5 9t-12.5 -5q-63 -39 -120 -39 q-75 0 -125.5 47t-50.5 147zM103 188q0 -74 37.5 -119t114.5 -45q23 0 55 10.5t32 22.5v250q0 12 -31 32t-66 20q-64 0 -103 -50.5t-39 -120.5z" />
+<glyph unicode="&#x1e1e;" horiz-adv-x="550" d="M257 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM40 651q0 14 12 14l43 -1q43 -2 64 -2q28 0 133.5 1.5t125.5 1.5q47 0 56.5 1.5t10.5 10.5v1q1 12 13 12q11 0 14 -2t3 -9q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2 q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 7 -282 7q-7 0 -7 -114q0 -110 2 -156q0 -12 2 -14t14 -2h173q55 0 55 16v50q0 9 17 9q14 0 14 -8q0 -1 -1 -29t-1 -49t1 -55t1 -38q0 -8 -13 -8q-18 0 -18 9v56q0 7 -2 10t-15 6.5t-38 3.5h-173q-11 0 -13.5 -3t-2.5 -17 q1 -49 1.5 -128.5t1.5 -114.5t4 -35h83q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h43q7 0 7 75v96q0 31 -0.5 72t-1 78t-1 69.5t-1 53t-0.5 21.5q0 144 -11 144h-43q-7 0 -10.5 0.5 t-6 4t-2.5 10.5z" />
+<glyph unicode="&#x1e1f;" horiz-adv-x="306" d="M167 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM35 12q0 13 12 13h40q4 0 4 63q0 20 -0.5 51t-0.5 33v60q0 114 -2 114h-33q-9 0 -11.5 2t-2.5 11t2 11t9 2h27q7 0 8.5 2t1.5 10q0 24 -1 47t-1 50q0 87 37 142t119 55 q31 0 57 -19t26 -48q0 -16 -18 -31.5t-30 -15.5t-13 9q-3 23 -5 33t-7 24.5t-13.5 20t-21.5 5.5q-59 0 -59 -164q0 -17 -2 -103q0 -12 3 -14.5t18 -2.5h116q7 0 7 -5t-2.5 -12.5t-5.5 -7.5h-115q-11 0 -14 -2t-3 -10v-166q0 -144 10 -144h66q8 0 10.5 -3t2.5 -10 q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -49 1t-57 1q-12 0 -39.5 -1t-43.5 -1q-9 0 -11 2.5t-2 11.5z" />
+<glyph unicode="&#x1e22;" horiz-adv-x="791" d="M351 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM40 15q0 9 3 10.5t15 1.5h57q7 0 7 258v102q0 252 -6 252h-43q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 39.5 -1.5t50.5 -1.5q16 0 55.5 1.5t50.5 1.5 q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-54q-7 0 -7 -134q0 -27 0.5 -73t0.5 -59t2 -15.5t13 -2.5h365q11 0 13 2t2 13v122q0 147 -10 147h-57q-10 0 -12.5 2t-2.5 13t2.5 13t12.5 2q6 0 47 -1.5t58 -1.5q18 0 55 1.5t40 1.5q10 0 12 -2.5t2 -15.5 q0 -9 -2.5 -10.5t-15.5 -1.5h-46q-2 0 -2 -242q0 -370 4 -370h55q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -44.5 1.5t-49.5 1.5t-58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h55q6 0 6 165v124q0 11 -1 13t-8 2h-374q-8 0 -10 -2.5t-2 -14.5 q0 -287 11 -287h65q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -52.5 1.5t-57.5 1.5t-61 -1.5t-56 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x1e23;" horiz-adv-x="503" d="M78 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM10 640q0 16 5 17q138 18 146 18q5 0 5 -20q-8 -166 -8 -301v-10t2 -3t3 0.5t6 3.5q73 40 133 40q40 0 66.5 -16t38.5 -47t16 -63t4 -79v-143q0 -8 1.5 -10t9.5 -2h26 q14 0 14 -13q0 -14 -14 -14q-8 0 -31.5 1t-39.5 1q-12 0 -41 -1t-45 -1q-9 0 -11 2.5t-2 11.5q0 13 13 13h39q8 0 9 1.5t2 9.5q2 40 2 176q0 58 -24 95t-72 37q-47 0 -89 -21q-16 -8 -16 -15l1 -150q0 -89 1 -115q1 -10 1.5 -13t2 -4t7.5 -1h38q8 0 10.5 -3t2.5 -10 q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -37.5 1t-45.5 1q-12 0 -41 -1t-45 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h39q7 0 8.5 3t1.5 15q1 94 1 220q0 202 -8 356q-1 17 -6 17q-1 0 -30 -3.5t-31 -3.5q-4 0 -4 11z" />
+<glyph unicode="&#x1e40;" horiz-adv-x="895" d="M407 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM35 15q0 9 2.5 10.5t15.5 1.5h42q2 0 3.5 4.5t2 14.5l1 20t1 29.5t1.5 33.5q18 366 18 497q0 8 -4 10.5t-18 2.5h-46q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q6 0 51 -1.5 t56 -1.5q13 0 35.5 1.5t23.5 1.5q15 0 20 -13l210 -524q9 -22 11 -22q3 0 11 22l196 511q6 16 10 19.5t15 3.5h46q16 0 52.5 1.5t47.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-46q-7 0 -7 -80v-90q0 -153 4.5 -297.5t11.5 -144.5h54q8 0 10.5 -2t2.5 -11 q0 -11 -2 -14t-9 -3q-11 0 -51 1.5t-56 1.5t-55.5 -1.5t-50.5 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h46q9 0 9 177q0 98 -2.5 257.5t-4.5 159.5t-36 -88l-85 -219.5l-81 -204.5q-10 -25 -27.5 -50t-28.5 -47q-9 -19 -15 -19q-5 0 -17 28l-233 575 q-13 30 -16 30q-2 0 -4 -32q-8 -211 -8 -465q0 -102 5 -102h72q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -41.5 1.5t-46.5 1.5t-43.5 -1.5t-38.5 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x1e41;" horiz-adv-x="739" d="M330 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 350q0 6 4 18q2 6 3.5 6.5t11.5 1.5q16 1 41.5 2t41 2t17.5 1q11 0 13 -1.5t2 -9.5v-28q0 -14 2 -15l8 6q79 55 141 55q21 0 37.5 -5.5t25.5 -13t14.5 -14.5 t8.5 -13l2 -5q3 0 13 7q25 16 61.5 29t63.5 13q69 0 96.5 -38t27.5 -108q0 -46 -1 -116t-1 -89q0 -10 10 -10h32q14 0 14 -13q0 -14 -14 -14q-8 0 -34 1t-42 1q-12 0 -40.5 -1t-44.5 -1q-9 0 -11 2.5t-2 11.5q0 13 15 13h40q9 0 9 191q0 128 -89 128q-23 0 -47 -7t-37 -14 t-13 -9t1.5 -9.5t3 -25t1.5 -43.5v-170q0 -41 3 -41h34q14 0 14 -13q0 -14 -14 -14q-8 0 -32.5 1t-40.5 1q-12 0 -34.5 -1t-38.5 -1q-9 0 -12 3t-3 11q0 13 12 13h39q7 0 7 97v41t-0.5 36.5t-0.5 16.5q0 25 -1 40t-4.5 34t-11 29t-21.5 17.5t-34 7.5q-60 0 -100 -30 q-11 -9 -11 -18v-228q0 -30 2.5 -36.5t16.5 -6.5h21q14 0 14 -13q0 -14 -14 -14q-9 0 -36 1t-40 1q-14 0 -45.5 -1t-38.5 -1q-12 0 -12 13q0 14 11 14h39q10 0 13 32q2 20 2 106v109q0 78 -4 78q-1 0 -28.5 -1.5t-30.5 -1.5q-5 0 -5 3z" />
+<glyph unicode="&#x1e56;" horiz-adv-x="564" d="M253 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM40 649q0 7 2.5 10.5t6 4t11.5 0.5q6 0 51 -1t62 -1q16 0 68 2.5t63 2.5q108 0 174 -49.5t66 -146.5q0 -92 -64 -136.5t-175 -44.5q-19 0 -46.5 1.5t-40.5 1.5 q-10 0 -10 -11v-66q0 -189 5 -189h73q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -55 1.5t-60 1.5q-18 0 -61.5 -1.5t-45.5 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h51q9 0 9 447v52q0 108 -5 108l-63 -2q-20 0 -20 17zM209 325q0 -13 38 -13q94 0 152.5 41.5 t58.5 132.5q0 71 -59.5 113t-151.5 42q-22 0 -33 -1q-5 0 -5 -54v-261z" />
+<glyph unicode="&#x1e57;" horiz-adv-x="512" d="M229 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 352q0 4 3.5 13t5.5 9q29 1 61.5 2.5t51 2.5t19.5 1q7 0 9 -2t2 -12v-24q0 -10 2 -10q1 0 19 14q50 37 108 37q83 0 127 -53t44 -136q0 -81 -57.5 -142t-151.5 -61 q-31 0 -66 11l-7.5 2.5t-6.5 2.5t-5 1t-4 -1.5t-1 -4.5l3 -189q2 -67 6 -67h70q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -49 1t-57 1q-12 0 -46.5 -1t-50.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h55q3 0 3 160v142q0 191 -7 287q-1 10 -3 12t-13 2 q-3 0 -25.5 -1t-24.5 -1q-13 0 -13 5zM178 52q0 -17 30 -29.5t57 -12.5q66 0 103 55t37 122q0 72 -37 116.5t-93 44.5q-36 0 -64 -13q-33 -17 -33 -33v-250z" />
+<glyph unicode="&#x1e60;" horiz-adv-x="528" d="M218 783q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM55 488q0 81 65 135t149 54q73 0 135 -42q10 -8 16 -8t7 10l1 11q0 9 2 11.5t13 2.5q12 0 15.5 -2.5t3.5 -11.5l-2 -63q-3 -63 -3 -94q0 -9 -3 -12.5t-13 -3.5 q-13 0 -16 2.5t-3 9.5q0 1 1.5 30t1.5 34q0 22 -51.5 60t-102.5 38q-57 0 -95 -37t-38 -92q0 -43 26.5 -73.5t65.5 -46l85.5 -34t85.5 -37.5t65.5 -58t26.5 -93q0 -88 -67.5 -140.5t-156.5 -52.5q-51 0 -99 9.5t-73 20t-26 16.5l-3.5 48l-4.5 62t-2 34q0 14 12 14h5 q15 0 16 -16l6 -92q1 -21 65.5 -42t112.5 -21q54 0 93.5 35t39.5 86q0 42 -26.5 72t-66 46.5l-85.5 36.5t-85.5 40t-66 60t-26.5 94z" />
+<glyph unicode="&#x1e61;" horiz-adv-x="337" d="M118 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM35 50q0 11 11.5 24.5t18.5 13.5q3 0 5 -3.5t5.5 -10.5t8.5 -13q42 -50 93 -50q28 0 47 16.5t19 48.5t-23 51.5t-66 37.5q-2 1 -18 8t-19 8.5t-17 8t-17.5 10t-13.5 11 t-13.5 14t-9 15t-7 18.5t-1.5 22q0 48 44 80.5t100 32.5q51 0 77.5 -22.5t26.5 -44.5q0 -7 -15 -13t-25 -6q-7 0 -12.5 10t-10 22.5t-18.5 22.5t-36 10q-29 0 -51 -17t-22 -53q0 -15 5.5 -27t21 -22.5t24 -15t31.5 -15.5q33 -16 45.5 -22.5t36 -22.5t33 -33t9.5 -38 q0 -53 -41.5 -85.5t-99.5 -32.5q-46 0 -86 19.5t-40 42.5z" />
+<glyph unicode="&#x1e6a;" horiz-adv-x="690" d="M294 767q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM20 544l4 22q3 21 7 52.5t6 53.5q1 10 3 12t13 2q13 0 13 -6v-11q0 -6 108 -6h357q108 0 109 11q1 12 13 12q11 0 14 -2t3 -9q0 -2 -2 -43t-2 -87q0 -6 -3 -8t-13 -2 q-15 0 -15 14q0 2 1.5 38.5t1.5 39.5q0 8 -113 8h-116q-3 0 -5 -10t-3 -30.5t-1 -36t-0.5 -44t-0.5 -37.5l-1 -29q0 -28 -1 -72.5t-2 -94.5t-1.5 -102t-0.5 -87q0 -65 2 -65h74q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5t-63 -1.5t-58 -1.5 q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h62q7 0 10.5 192.5t3.5 325.5q0 90 -7 90h-144q-96 0 -97 -13l-7 -70q-1 -17 -13 -17q-20 0 -20 9z" />
+<glyph unicode="&#x1e6b;" horiz-adv-x="289" d="M91 573q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM35 344q0 5 3 8l91 127q3 5 9 5q10 0 10 -10q0 -1 -1.5 -20.5t-3 -42t-1.5 -29.5t2 -8.5t9 -1.5h95q9 0 10.5 -2t-1.5 -16q-4 -16 -13 -16h-99q-3 0 -3 -46v-192 q0 -20 2 -31t13 -21t33 -10q23 0 52 8l28 8q4 0 4 -16q0 -3 -22.5 -14t-53.5 -22t-50 -11q-39 0 -55.5 20.5t-16.5 48.5q2 144 2 216q0 61 -12 61h-25q-6 0 -6 7z" />
+<glyph unicode="&#x2000;" />
+<glyph unicode="&#x2001;" horiz-adv-x="1000" />
+<glyph unicode="&#x2002;" />
+<glyph unicode="&#x2003;" horiz-adv-x="1000" />
+<glyph unicode="&#x2004;" horiz-adv-x="333" />
+<glyph unicode="&#x2005;" horiz-adv-x="250" />
+<glyph unicode="&#x2006;" horiz-adv-x="166" />
+<glyph unicode="&#x2007;" />
+<glyph unicode="&#x2008;" horiz-adv-x="221" />
+<glyph unicode="&#x2009;" horiz-adv-x="166" />
+<glyph unicode="&#x200a;" horiz-adv-x="100" />
+<glyph unicode="&#x200b;" horiz-adv-x="0" />
+<glyph unicode="&#x200c;" horiz-adv-x="0" />
+<glyph unicode="&#x200d;" horiz-adv-x="0" />
+<glyph unicode="&#x200e;" horiz-adv-x="0" />
+<glyph unicode="&#x200f;" horiz-adv-x="0" />
+<glyph unicode="&#x2010;" horiz-adv-x="258" d="M25 201q0 12 6 25.5t12 14.5t91.5 4t91.5 3q2 0 2 -9q0 -33 -8 -33q-104 -8 -191 -8q-4 0 -4 3z" />
+<glyph unicode="&#x2011;" horiz-adv-x="258" d="M25 201q0 12 6 25.5t12 14.5t91.5 4t91.5 3q2 0 2 -9q0 -33 -8 -33q-104 -8 -191 -8q-4 0 -4 3z" />
+<glyph unicode="&#x2012;" d="M98 201q0 12 6 25.5t12 14.5t141 4t143 3q2 0 2 -9q0 -33 -8 -33q-9 -1 -145 -4.5t-147 -3.5q-4 0 -4 3z" />
+<glyph unicode="&#x2013;" d="M10 195q0 12 2 14.5t11 2.5h451q11 0 13.5 -2t2.5 -10v-12q0 -9 -2.5 -11t-13.5 -2h-444q-15 0 -17.5 2.5t-2.5 17.5z" />
+<glyph unicode="&#x2014;" horiz-adv-x="750" d="M10 195q0 12 2 14.5t11 2.5h701q11 0 13.5 -2t2.5 -10v-12q0 -9 -2.5 -11t-13.5 -2h-694q-15 0 -17.5 2.5t-2.5 17.5z" />
+<glyph unicode="&#x2015;" horiz-adv-x="750" d="M10 195q0 12 2 14.5t11 2.5h701q11 0 13.5 -2t2.5 -10v-12q0 -9 -2.5 -11t-13.5 -2h-694q-15 0 -17.5 2.5t-2.5 17.5z" />
+<glyph unicode="&#x2018;" horiz-adv-x="209" d="M30 520q0 32 24.5 72.5t49 65.5t29.5 25t10.5 -6.5t5.5 -11.5q0 -1 -17.5 -17t-34.5 -37t-17 -36q0 -13 24 -39t24 -39q0 -16 -17 -39t-30 -23q-7 0 -29 34t-22 51z" />
+<glyph unicode="&#x2019;" horiz-adv-x="209" d="M60 453q0 1 17 17t34.5 37t17.5 36q0 13 -24 39t-24 39q0 16 17 39t30 23q7 0 29 -34t22 -51q0 -32 -24.5 -72.5t-49 -65.5t-29.5 -25t-10.5 6.5t-5.5 11.5z" />
+<glyph unicode="&#x201a;" horiz-adv-x="209" d="M60 -118q0 1 17 17t34.5 37t17.5 36q0 13 -24 39t-24 39q0 16 17 39t30 23q7 0 29 -34t22 -51q0 -32 -24.5 -72.5t-49 -65.5t-29.5 -25t-10.5 6.5t-5.5 11.5z" />
+<glyph unicode="&#x201b;" horiz-adv-x="209" d="M30 598q0 17 22 51t29 34q13 0 30 -23t17 -39q0 -13 -24 -39t-24 -39q0 -15 17 -36t34.5 -37t17.5 -17q0 -5 -5.5 -11.5t-10.5 -6.5t-29.5 25t-49 65.5t-24.5 72.5z" />
+<glyph unicode="&#x201c;" horiz-adv-x="394" d="M30 520q0 32 24.5 72.5t49 65.5t29.5 25t10.5 -6.5t5.5 -11.5q0 -1 -17.5 -17t-34.5 -37t-17 -36q0 -13 24 -39t24 -39q0 -16 -17 -39t-30 -23q-7 0 -29 34t-22 51zM215 520q0 32 24.5 72.5t49 65.5t29.5 25t10.5 -6.5t5.5 -11.5q0 -1 -17 -17t-34.5 -37t-17.5 -36 q0 -13 24 -39t24 -39q0 -16 -17 -39t-30 -23q-7 0 -29 34t-22 51z" />
+<glyph unicode="&#x201d;" horiz-adv-x="394" d="M60 453q0 1 17 17t34.5 37t17.5 36q0 13 -24 39t-24 39q0 16 17 39t30 23q7 0 29 -34t22 -51q0 -32 -24.5 -72.5t-49 -65.5t-29.5 -25t-10.5 6.5t-5.5 11.5zM245 453q0 1 17.5 17t34.5 37t17 36q0 13 -24 39t-24 39q0 16 17 39t30 23q7 0 29 -34t22 -51 q0 -32 -24.5 -72.5t-49 -65.5t-29.5 -25t-10.5 6.5t-5.5 11.5z" />
+<glyph unicode="&#x201e;" horiz-adv-x="394" d="M60 -118q0 1 17 17t34.5 37t17.5 36q0 13 -24 39t-24 39q0 16 17 39t30 23q7 0 29 -34t22 -51q0 -32 -24.5 -72.5t-49 -65.5t-29.5 -25t-10.5 6.5t-5.5 11.5zM245 -118q0 1 17.5 17t34.5 37t17 36q0 13 -24 39t-24 39q0 16 17 39t30 23q7 0 29 -34t22 -51 q0 -32 -24.5 -72.5t-49 -65.5t-29.5 -25t-10.5 6.5t-5.5 11.5z" />
+<glyph unicode="&#x201f;" horiz-adv-x="394" d="M30 598q0 17 22 51t29 34q13 0 30 -23t17 -39q0 -13 -24 -39t-24 -39q0 -15 17 -36t34.5 -37t17.5 -17q0 -5 -5.5 -11.5t-10.5 -6.5t-29.5 25t-49 65.5t-24.5 72.5zM215 598q0 17 22 51t29 34q13 0 30 -23t17 -39q0 -13 -24 -39t-24 -39q0 -15 17.5 -36t34.5 -37t17 -17 q0 -5 -5.5 -11.5t-10.5 -6.5t-29.5 25t-49 65.5t-24.5 72.5z" />
+<glyph unicode="&#x2020;" horiz-adv-x="463" d="M25 423q0 17 15.5 25t36.5 8q27 0 64 -9.5t58 -9.5q9 0 16.5 6.5t7.5 15.5q0 3 -16 76t-16 92t11 34t29 15q20 0 30.5 -15t10.5 -33q0 -24 -11.5 -96t-11.5 -78q0 -8 8 -14t17 -6q21 0 61.5 11t52.5 11q50 0 50 -33t-48 -33q-17 0 -58.5 13t-51.5 13q-8 0 -15 -5.5 t-7 -12.5q0 -10 5 -25.5t5 -19.5q0 -2 -1 -19t-2.5 -54.5t-3 -96t-2.5 -163.5t-1 -237q0 -10 -17 -10h-6q-17 0 -17 10q0 131 -2 236.5t-5 164t-5.5 96.5t-4.5 54.5t-2 18.5t6 20.5t6 24.5q0 16 -15 16q-6 0 -48 -12t-71 -12q-52 0 -52 33z" />
+<glyph unicode="&#x2021;" horiz-adv-x="401" d="M25 -36q0 26 39 26q14 0 52 -10t46 -10q6 0 11.5 4t5.5 10q0 8 -3.5 15.5t-3.5 10.5q0 1 9.5 81t9.5 115q0 6 9 6t9 -6q0 -26 4 -72.5t8 -83.5t4 -40q0 -2 -4 -12t-4 -14q0 -13 12 -13q5 0 43.5 9.5t61.5 9.5q42 0 42 -26t-42 -26q-22 0 -56.5 7.5t-51.5 7.5 q-8 0 -13.5 -5.5t-5.5 -12.5q0 -2 12 -51.5t12 -64.5t-7.5 -27t-22.5 -12q-16 0 -23.5 12t-7.5 26q0 19 8 67.5t8 53.5q0 6 -6.5 11t-13.5 5q-17 0 -54 -8.5t-47 -8.5q-40 0 -40 26zM25 492q0 26 42 26q22 0 56.5 -7.5t51.5 -7.5q8 0 13.5 5.5t5.5 12.5q0 2 -12 49t-12 62 t7.5 27t22.5 12q16 0 23.5 -12t7.5 -26q0 -19 -8 -65t-8 -51q0 -6 6.5 -11t13.5 -5q17 0 54 8.5t47 8.5q40 0 40 -26t-39 -26q-14 0 -52 10t-46 10q-6 0 -11.5 -4t-5.5 -10q0 -8 3.5 -15.5t3.5 -10.5q0 -1 -8 -76t-8 -110q0 -7 -10 -7q-9 0 -9 7q0 26 -4.5 70t-9 78.5 t-4.5 37.5q0 2 4 12t4 14q0 13 -12 13q-5 0 -43.5 -9.5t-61.5 -9.5q-42 0 -42 26z" />
+<glyph unicode="&#x2022;" horiz-adv-x="356" d="M60 327q0 49 34.5 83.5t83.5 34.5t83.5 -34.5t34.5 -83.5t-34.5 -83.5t-83.5 -34.5t-83.5 34.5t-34.5 83.5z" />
+<glyph unicode="&#x2026;" horiz-adv-x="663" d="M502 38q0 16 16 37.5t28 21.5q16 0 36.5 -15t20.5 -32q0 -21 -16 -39.5t-26 -18.5q-20 0 -39.5 17t-19.5 29zM281 38q0 16 16 37.5t28 21.5q16 0 36.5 -15t20.5 -32q0 -21 -16 -39.5t-26 -18.5q-20 0 -39.5 17t-19.5 29zM60 38q0 16 16 37.5t28 21.5q16 0 36.5 -15 t20.5 -32q0 -21 -16 -39.5t-26 -18.5q-20 0 -39.5 17t-19.5 29z" />
+<glyph unicode="&#x202f;" horiz-adv-x="166" />
+<glyph unicode="&#x2030;" horiz-adv-x="952" d="M50 362q0 62 52.5 131.5t124.5 69.5q40 0 71 -31q24 -24 58 -24q46 0 93 28q17 10 31.5 22t35.5 33.5l22 22.5t4.5 5t7.5 8l3 4q6 0 12 -4t6 -8q0 -3 -5 -11q-360 -527 -434 -643q-4 -6 -19 -6q-16 0 -16 10q0 2 2 6l80 114l169.5 245.5t112.5 170.5q9 15 8 16 q-2 1 -8 -2q-47 -28 -105 -28q-16 0 -35 3v-16v-14q0 -17 -1 -25q-6 -72 -57.5 -130.5t-112.5 -58.5q-47 0 -73.5 32t-26.5 80zM99 336q0 -29 13.5 -50t40.5 -21q51 0 95 58.5t44 137.5q0 70 -52 70q-46 0 -93.5 -64t-47.5 -131zM336 103q0 71 56 137t125 66q42 0 66 -29.5 t24 -79.5q0 -79 -53 -142.5t-118 -63.5q-47 0 -73.5 31.5t-26.5 80.5zM385 78q0 -30 13 -50.5t41 -20.5q51 0 95 58.5t44 136.5q0 71 -53 71q-45 0 -92.5 -64t-47.5 -131zM631 103q0 71 56 137t125 66q42 0 66 -29.5t24 -79.5q0 -79 -53 -142.5t-118 -63.5q-47 0 -73.5 31.5 t-26.5 80.5zM680 78q0 -30 13 -50.5t41 -20.5q51 0 95 58.5t44 136.5q0 71 -53 71q-45 0 -92.5 -64t-47.5 -131z" />
+<glyph unicode="&#x2032;" horiz-adv-x="131" d="M30 511q0 1 2 32.5l4.5 68.5t3.5 47q4 29 32 29q29 0 29 -25q0 -4 -2 -14l-12.5 -43l-17.5 -57.5t-10 -32.5q-1 -3 -2 -7t-1.5 -5l-1.5 -3t-2.5 -2.5t-3.5 -1t-6 -0.5q-12 0 -12 14z" />
+<glyph unicode="&#x2033;" horiz-adv-x="261" d="M30 511q0 1 2 32.5l4.5 68.5t3.5 47q4 29 32 29q29 0 29 -25q0 -4 -2 -14l-12.5 -43l-17.5 -57.5t-10 -32.5q-1 -3 -2 -7t-1.5 -5l-1.5 -3t-2.5 -2.5t-3.5 -1t-6 -0.5q-12 0 -12 14zM160 511q0 1 2 32.5l4.5 68.5t3.5 47q4 29 32 29q29 0 29 -25q0 -4 -2 -14l-12.5 -43 l-17.5 -57.5t-10 -32.5q-1 -3 -2 -7t-1.5 -5l-1.5 -3t-2.5 -2.5t-3.5 -1t-6 -0.5q-12 0 -12 14z" />
+<glyph unicode="&#x2039;" horiz-adv-x="258" d="M50 193q0 4 55 55l36 34.5l31 30.5l12 11q2 0 8 -5.5t6 -6.5q0 -4 -31 -58t-31 -61t31 -61t31 -58q0 -1 -6 -6.5t-8 -5.5l-12 11l-31 30.5l-36 34.5q-55 51 -55 55z" />
+<glyph unicode="&#x203a;" horiz-adv-x="258" d="M60 74q0 4 31 58t31 61t-31 61t-31 58q0 1 6 6.5t8 5.5l12 -11l31 -30.5l36 -34.5q55 -51 55 -55t-55 -55l-36 -34.5l-31 -30.5l-12 -11q-2 0 -8 5.5t-6 6.5z" />
+<glyph unicode="&#x203e;" horiz-adv-x="400" />
+<glyph unicode="&#x2044;" horiz-adv-x="144" d="M-150 -8q0 1 4 9l408 657q7 10 23 10q17 0 17 -6q0 -2 -1 -4l-410 -659q-3 -5 -4 -6t-3.5 -3t-6 -2.5t-9.5 -0.5q-18 0 -18 5z" />
+<glyph unicode="&#x2053;" horiz-adv-x="793" d="M45 117q0 5 4 17q6 23 17 46t31.5 51.5t54.5 46.5t76 18q48 0 101.5 -22.5t93 -49.5t88 -49.5t86.5 -22.5q26 0 48.5 16t37 41.5t22 43t12.5 34.5q2 8 4.5 8.5t10.5 -1.5q11 -3 11 -7q0 -3 -1 -6q-7 -28 -19.5 -54.5t-33 -54.5t-54 -45t-73.5 -17q-50 0 -104.5 21.5 t-95 47.5t-89.5 47.5t-89 21.5q-27 0 -48 -14t-34 -36.5t-19.5 -40t-10.5 -35.5q-4 -14 -7 -14q-2 0 -10 2q-10 2 -10 7z" />
+<glyph unicode="&#x205f;" horiz-adv-x="222" />
+<glyph unicode="&#x2060;" horiz-adv-x="0" />
+<glyph unicode="&#x20ac;" horiz-adv-x="606" d="M30 282l15 37h70q14 55 45.5 97t70 63.5t74 32t65.5 10.5q60 0 105.5 -18t90.5 -60q-4 -9 -18 -38q-23 29 -67 54.5t-107 25.5q-33 0 -63 -7t-61.5 -24.5t-56.5 -52t-39 -83.5h358l-15 -37h-348q-2 -12 -2 -27l2 -27h325l-16 -38h-303q31 -81 91.5 -123.5t126.5 -42.5 q101 0 173 72v-48q-77 -61 -170 -61q-48 0 -97 17t-97.5 65t-66.5 121h-82l15 38h61q-2 12 -2 27l2 27h-79z" />
+<glyph unicode="&#x2122;" horiz-adv-x="797" d="M40 579q0 1 1.5 10.5t3.5 23.5t3 24q2 11 9 11q11 0 11 -10q7 -1 43 -1h161q37 0 45 2q3 9 11 9q9 0 9 -10q0 -1 -1 -19.5t-1 -39.5q0 -9 -9 -9q-11 0 -11 11l1 14v19q-18 2 -46 2h-50q-2 -10 -2 -67v-7q0 -7 -0.5 -19t-1 -26.5t-0.5 -31.5t-0.5 -33.5t-0.5 -32.5v-27 v-25h30q9 0 9 -9q0 -11 -9 -11q-5 0 -26.5 1t-28.5 1t-28 -1t-26 -1q-11 0 -11 11q0 9 13 9h24q5 35 5 232q0 33 -1 37h-62q-27 0 -39 -3l-3 -31q-2 -12 -11 -12q-11 0 -11 9zM373 337q0 10 13 10h21q0 3 0.5 9.5t1 17t0.5 18.5q8 224 8 228h-30q-10 0 -10 11q0 9 10 9 q3 0 23 -0.5t25 -0.5q6 0 16 0.5t11 0.5q9 0 13 -9l97 -243l92 237q6 14 16 14h16q7 0 23.5 0.5t21.5 0.5q11 0 11 -10t-13 -10h-18q-1 -6 -1 -34v-41q0 -160 6 -198h21q10 0 10 -10t-9 -10q-5 0 -23.5 1t-25.5 1t-24.5 -1t-22.5 -1q-12 0 -12 10t13 10h18q2 10 2 79 q0 88 -2 166l-83 -211q-5 -12 -12.5 -23t-12.5 -21q-7 -11 -11 -11q-7 0 -12 15l-105 259q-4 -122 -4 -208q0 -39 1 -45h29q10 0 10 -10t-10 -10q-5 0 -19 1t-21 1t-19.5 -1t-17.5 -1q-11 0 -11 10z" />
+<glyph unicode="&#x2212;" horiz-adv-x="527" d="M31 212q0 8 0.5 11.5t4.5 6t13 2.5h431q8 0 11.5 -2.5t4 -6t0.5 -12.5q0 -14 -3 -18.5t-18 -4.5h-427q-9 0 -12.5 3t-4 6.5t-0.5 14.5z" />
+<glyph unicode="&#xe000;" horiz-adv-x="380" d="M0 380h380v-380h-380v380z" />
+<glyph unicode="&#xfeff;" horiz-adv-x="0" />
+<glyph d="M38 305q0 149 65 236t149 87q93 0 151.5 -85t58.5 -231q0 -88 -24.5 -164t-74.5 -124.5t-115 -48.5q-93 0 -151.5 92t-58.5 238zM108 288q0 -141 39 -209t103 -68q39 0 69 29.5t46.5 77t24.5 98t8 100.5q0 45 -8.5 91.5t-25.5 88.5t-46.5 68.5t-66.5 26.5 q-63 0 -103 -86.5t-40 -216.5z" />
+<glyph d="M150 589v13q0 6 1 6.5t9 1.5q120 9 143 9q5 0 6 -2.5t1 -12.5q0 -101 -0.5 -274.5t-0.5 -263.5q0 -39 8 -39h46q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -38 1.5t-49 1.5q-16 0 -57 -1.5t-52 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h64q4 0 4 83v118 q0 226 -4 340q-1 10 -1.5 13t-2.5 5t-7 2q-3 0 -34.5 -2.5t-33.5 -2.5q-6 0 -6 6z" />
+<glyph d="M40 493q0 10 25 39.5t74 59.5t99 30q57 0 98.5 -29.5t59 -68t17.5 -77.5q0 -24 -6.5 -48.5t-20 -48.5t-27.5 -45t-36 -44l-37.5 -39.5t-40 -37l-36 -30l-33 -26t-23.5 -18.5q-8 -6 -16 -18.5t-12.5 -22t-4.5 -10.5t7 -1h292q2 0 9 42t9 42q21 0 21 -3q0 -31 -21 -133 q-1 -6 -11 -6h-346q-14 0 -14 11q0 4 28.5 53.5t32.5 52.5q4 4 33.5 29.5t46 41t45 47.5t44.5 58.5t29 63t13 71.5q0 57 -31 101.5t-88 44.5q-27 0 -53 -10t-44 -24t-31.5 -28t-21 -24t-8.5 -10q-5 0 -13 5t-8 10z" />
+<glyph d="M90 17q0 8 12.5 19t27.5 11q14 0 37 -13q42 -26 70 -26q63 0 99.5 43t36.5 107q0 128 -133 128q-15 0 -49.5 -2.5t-36.5 -2.5q-4 0 -6.5 1.5t-3.5 3.5t-1.5 6t-1.5 6q-2 6 -2 12q0 4 2 7t4 3.5t7.5 1.5t7.5 2q86 20 125.5 58t39.5 110q0 41 -28.5 74t-68.5 33 q-31 0 -58.5 -15.5t-42.5 -30.5t-16 -15q-6 0 -12.5 6t-6.5 12q0 8 20 25.5t57 34.5t75 17q64 0 107 -37.5t43 -93.5q0 -50 -31.5 -90t-76.5 -61q-10 -5 -24 -10.5l-20 -8t-6 -3.5t4 -1.5t16.5 -0.5t23.5 -1q73 -5 115 -38.5t42 -112.5q0 -84 -64.5 -138.5t-146.5 -54.5 q-136 0 -136 35z" />
+<glyph d="M40 209q0 27 16 55q68 119 204 295q8 11 22 20l17 11l11.5 11.5l10.5 10.5t8.5 8t8 6t5.5 2q11 0 11 -29v-326q0 -13 2 -15.5t13 -2.5h68q7 0 7 -10v-34q0 -7 -1.5 -8.5t-10.5 -1.5h-62q-11 0 -13 -2t-1 -12q4 -81 4 -185q0 -8 -4 -9q-12 -4 -61 -4q-5 0 -5 13l3 184 q0 11 -2.5 13t-13.5 2h-219q-18 0 -18 8zM87 259q0 -4 20 -4h167q14 0 16.5 3t2.5 17v243q0 26 -3 26q-8 0 -190 -263q-13 -18 -13 -22z" />
+<glyph d="M100 -18q0 13 8 14q4 1 31 4t38 5t37.5 9t39.5 15t33 23.5t30 34t17.5 46t7.5 61.5q0 144 -197 144q-5 0 -14.5 -0.5t-14.5 -0.5q-14 0 -14 10q0 49 27 265q1 6 16 6q1 0 9.5 -1l26 -3t42 -3.5t65 -2.5t86.5 -1q3 0 6 28q0 5 11 5h8q7 0 8.5 -1.5t1.5 -7.5q0 -2 -0.5 -13 t-1.5 -28t-1 -27q-1 -11 -7.5 -14t-26.5 -3q-88 0 -210 12q-5 2 -7 1t-2 -2t-1 -6q-14 -119 -14 -149q0 -11 11 -11q11 1 34 1q225 0 225 -194q0 -59 -28.5 -104t-66.5 -68.5t-85 -38t-75 -18t-45 -3.5q-8 0 -8 16z" />
+<glyph d="M45 218q0 83 31.5 156.5t75 119.5t91 80t78.5 48.5t39 14.5q3 0 8.5 -9t5.5 -12q0 -2 -0.5 -3.5t-1.5 -3t-3.5 -2.5t-4 -2t-5 -3t-5.5 -3q-88 -51 -137 -107t-76 -125q-10 -30 -10 -35q0 -3 6 -1q4 1 6 2q61 19 109 19q84 0 136 -48.5t52 -132.5q0 -86 -54.5 -139.5 t-136.5 -53.5q-90 0 -147 59.5t-57 180.5zM116 222q0 -218 142 -218q52 0 82.5 46t30.5 108q0 164 -143 164q-42 0 -75 -9q-27 -7 -29 -16q-8 -34 -8 -75z" />
+<glyph d="M80 491v25.5t0.5 55t0.5 59.5q0 13 3 16t16 3q11 0 13.5 -3t2.5 -17v-8q0 -4 166 -4h166q17 0 17 -12q0 -4 -4 -14l-63 -137l-53 -112.5l-53.5 -115.5t-38.5 -96t-39 -117q-8 -31 -9.5 -35t-7.5 -4q-19 0 -33 7t-14 17q0 46 101 255q53 110 153 285q9 16 9 18q0 3 -18 3 h-199q-83 0 -83 -9v-58q0 -8 -16 -8q-17 0 -17 6z" />
+<glyph d="M67 140q0 57 36 97.5t75 60.5q18 9 18 11l-2 1q-3 2 -8 5t-11 7q-96 66 -96 159q0 68 49 114.5t118 46.5q68 0 118.5 -41.5t50.5 -106.5q0 -34 -9 -60.5t-30 -49t-28.5 -28.5t-31.5 -24q-6 -5 -7.5 -7t0 -4t7.5 -6q2 -1 16.5 -9t22 -13.5l21.5 -16t22.5 -22.5t17.5 -28 t13.5 -36.5t4.5 -44.5q0 -71 -56 -120.5t-138 -49.5q-75 0 -124 47t-49 118zM120 150q0 -64 35 -104.5t92 -40.5q60 0 91.5 37.5t31.5 89.5q0 31 -9 55t-30 42.5t-35.5 28t-44.5 25.5q-7 4 -11 6q-20 11 -25 11q-3 0 -35 -22q-60 -44 -60 -128zM134 493q0 -64 69 -118 q17 -13 44.5 -29t32.5 -16q1 0 15 12q27 24 47 62t20 82q0 61 -36 92.5t-83 31.5q-43 0 -76 -33.5t-33 -83.5z" />
+<glyph d="M55 439q0 84 61.5 140.5t129.5 56.5q88 0 150 -70.5t62 -190.5q0 -76 -19 -139t-47.5 -102.5t-66.5 -70t-72.5 -46t-69 -25t-52 -11.5t-25.5 -2q-7 0 -7 23q0 9 20 11q6 1 10 2q46 7 88.5 26.5t84.5 62.5t61 103q13 44 16 84q0 14 -2 14q-3 0 -27 -16q-57 -37 -127 -37 q-73 0 -120.5 55.5t-47.5 131.5zM123 440q0 -60 38 -104.5t101 -44.5q39 0 71 13.5t45 30.5q8 10 8 56q0 86 -34.5 147.5t-101.5 61.5q-56 0 -91.5 -45t-35.5 -115z" />
+<glyph horiz-adv-x="249" d="M25 357q0 5 4 13q3 6 4.5 6.5t10.5 1.5q95 5 113 5q7 0 7 -6v-170q0 -113 3 -170q0 -5 0.5 -7t2.5 -3.5t7 -1.5h36q11 0 11 -13q0 -8 -1.5 -11t-9.5 -3q-9 0 -40 1t-44 1t-46.5 -1t-42.5 -1q-8 0 -9.5 2.5t-1.5 11.5q0 7 2.5 10t11.5 3h41q8 0 9.5 2t1.5 10q1 29 1 88 q0 117 -4 214q-1 11 -3 13.5t-10 2.5q-1 0 -24.5 -1t-25.5 -1q-4 0 -4 4zM77 553q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5z" />
+<glyph horiz-adv-x="0" d="M-309 542q0 25 30 25q18 0 34 -25l53 -85q2 -4 2 -6t-4 -2h-21l-8 6l-72 60q-14 11 -14 27z" />
+<glyph horiz-adv-x="0" d="M-210 451q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2z" />
+<glyph horiz-adv-x="0" d="M-311 451l4 6l79 89q12 13 16 13h24q4 0 16 -13l79 -89q4 -4 4 -6t-6 -2h-9q-1 0 -11 6l-81 45q-4 2 -8 0l-81 -45q-10 -6 -11 -6h-9q-6 0 -6 2z" />
+<glyph horiz-adv-x="0" d="M-311 557q0 2 6 2h9q1 0 11 -6l81 -45q4 -2 8 0l81 45q10 6 11 6h9q6 0 6 -2l-4 -6l-79 -89q-12 -13 -16 -13h-24q-4 0 -16 13l-79 89q-4 4 -4 6z" />
+<glyph horiz-adv-x="0" d="M-302 508v23q0 6 1.5 7t7.5 1h187q6 0 7 -1t1 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8z" />
+<glyph horiz-adv-x="0" d="M-303 552q0 6 1 6h17q1 0 2 -6t4.5 -15t10.5 -17.5t24.5 -14.5t43.5 -6t43.5 6t24.5 14.5t10.5 17.5t4.5 15t2 6h17q1 0 1 -6q0 -45 -26 -74t-77 -29t-77 29t-26 74z" />
+<glyph horiz-adv-x="0" d="M-277 451q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2zM-157 451q0 2 2 6l53 85q16 25 34 25q30 0 30 -25q0 -16 -14 -27l-72 -60l-8 -6h-21q-4 0 -4 2z" />
+<glyph horiz-adv-x="0" d="M-251 503q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5z" />
+<glyph horiz-adv-x="0" d="M-331 503q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM-171 503q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5z" />
+<glyph horiz-adv-x="0" d="M-321 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM-181 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5z" />
+<glyph horiz-adv-x="0" d="M-271 505q0 29 21 50t50 21t50 -21t21 -50t-21 -50t-50 -21t-50 21t-21 50zM-243 505q0 -18 12.5 -30.5t30.5 -12.5t30.5 12.5t12.5 30.5t-12.5 30.5t-30.5 12.5t-30.5 -12.5t-12.5 -30.5z" />
+<glyph horiz-adv-x="0" d="M-305 468q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2z" />
+<glyph horiz-adv-x="486" d="M20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14t19.5 44q6 19 19 19q3 0 5 -1.5t4 -5.5t3 -8t4 -12t6 -15q139 -362 147 -362h31q7 0 7 -13q0 -14 -10 -14q-4 0 -36 1t-43 1q-10 0 -52.5 -1t-48.5 -1t-6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5 q-3 8 -5 10t-7 2h-114q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12q0 -15 -12 -15q-7 0 -40.5 1t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182q0 -3 7 -3h94q9 0 9 4t-2 7q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="463" d="M25 388q0 14 10 14q2 0 44 -0.5t59 -0.5q18 0 58 1t50 1q31 0 54 -3t49 -12t40 -30t14 -53q0 -23 -10.5 -41.5t-25.5 -28.5t-30.5 -16.5t-26 -9t-10.5 -3.5l12 -3q13 -3 31.5 -9t36.5 -16.5t30.5 -30.5t12.5 -46q0 -102 -177 -102q-14 0 -54 0.5t-55 0.5 q-19 0 -42.5 -0.5t-39.5 -1t-17 -0.5q-9 0 -9 12q0 15 9 15h61q6 0 6 54v158q0 139 -8 139h-61q-11 0 -11 12zM178 129q0 -104 8 -104h47q60 0 88.5 23t28.5 56q0 89 -120 89h-45q-7 0 -7 -7v-57zM178 220q0 -6 10 -6h50q6 0 18 -0.5t13 -0.5q29 0 45.5 24.5t16.5 59.5 q0 41 -30 63t-79 22q-32 0 -41 -2q-3 -2 -3 -66v-94z" />
+<glyph horiz-adv-x="487" d="M30 208q0 80 67.5 142.5t156.5 62.5q40 0 80 -12t60 -24l19 -12l2 13q1 11 13 11q14 0 14 -9q0 -4 -2 -62t-2 -76q0 -8 -16 -8q-15 0 -15 7q0 1 1.5 33t1.5 35q0 4 -11 15q-60 60 -138 60q-60 0 -101 -51.5t-41 -129.5q0 -76 44 -130t113 -54q93 0 138 45q2 12 3 25 t1 28.5t1 25.5q1 9 12 9q16 0 16 -11q0 -45 -4 -101q-1 -6 -29 -19t-72 -24.5t-79 -11.5q-107 0 -170 56.5t-63 166.5z" />
+<glyph horiz-adv-x="502" d="M25 8q0 17 8 17h59q7 0 7 316v35h-60q-8 0 -8 14q0 13 8 13h6q6 0 16 -0.5t22 -1t26 -0.5h27q23 0 58 1.5t45 1.5q102 0 162.5 -54t60.5 -156q0 -95 -63 -145.5t-150 -50.5q-19 0 -59 1t-59 1q-17 0 -39.5 -0.5t-39 -1t-18.5 -0.5q-9 0 -9 10zM172 63q0 -35 3 -38 q4 -2 35 -2q50 0 85.5 16t53.5 43.5t25.5 55.5t7.5 60q0 80 -43 131.5t-136 51.5q-17 0 -25 -1q-6 0 -6 -70v-247z" />
+<glyph horiz-adv-x="458" d="M25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13q0 14 5 14l17 -1q17 0 42.5 -0.5t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34 q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57 q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5t-100.5 1t-139 0.5q-27 0 -68 -1t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="444" d="M25 389q0 15 9 15q1 0 17.5 -1t41 -1.5t44.5 -0.5q176 0 202 1q30 1 35.5 2.5t6.5 7.5q0 3 0.5 6t0.5 4.5t0.5 3.5t1.5 2.5t3 1t5 0.5q17 0 17 -6q0 -2 -1.5 -41t-1.5 -67q0 -5 -16 -5q-12 0 -12 9q0 1 0.5 24t0.5 25q0 7 -118 7h-82q-4 0 -4 -65q0 -69 1 -84v-6t1 -3.5 t3 -1.5h6h27q143 0 143 7v38q0 4 12 4q13 0 13 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28t0.5 -30q0 -6 -13 -6q-12 0 -12 7v41q0 7 -101 7h-69q-7 0 -8.5 -2t-1.5 -9q0 -159 4 -159h77q7 0 7 -15q0 -12 -7 -12t-57 1t-59 1t-50 -1t-48 -1q-8 0 -8 13q0 14 10 14h53 q5 0 5 117v96q0 138 -9 138h-57q-12 0 -12 13z" />
+<glyph horiz-adv-x="485" d="M25 200q0 96 65.5 155.5t158.5 59.5q39 0 76 -13.5t53 -26.5q10 -8 10 3l1 22q0 11 11 11q18 0 18 -8q0 -1 -3 -57t-3 -79q0 -7 -15 -7q-14 0 -14 8q0 1 1 24.5t1 26.5q0 4 -15.5 20.5t-47 33.5t-64.5 17q-65 0 -106.5 -47t-41.5 -131q0 -83 44.5 -137.5t118.5 -54.5 q36 0 60.5 8.5t26.5 18.5q2 18 2 28v29q0 24 -7 24h-55q-5 0 -5 15q0 12 5 12q7 0 36 -1t46 -1q13 0 36.5 1t37.5 1q4 0 4 -10q0 -17 -4 -17h-19q-8 0 -8 -34q0 -7 -0.5 -21t-0.5 -25q0 -8 -27.5 -21.5t-71.5 -24.5t-82 -11q-93 0 -157.5 50.5t-64.5 158.5z" />
+<glyph horiz-adv-x="567" d="M25 13q0 12 9 12h60q4 0 4 144v62q0 145 -4 145h-55q-13 0 -13 15q0 7 2 9.5t10 2.5l34 -1q34 -1 60 -1q19 0 62 1t46 1q9 0 9 -13q0 -14 -12 -14h-59q-4 0 -4 -74v-74q0 -7 1.5 -9t7.5 -2h208q7 0 8 1t1 8v68q0 82 -6 82h-57q-10 0 -10 16q0 11 10 11q3 0 16.5 -0.5 t34.5 -1t43 -0.5q24 0 47 0.5t36.5 1t14.5 0.5q7 0 7 -13q0 -14 -10 -14h-49q-1 0 -1 -138q0 -213 3 -213h57q6 0 6 -15q0 -12 -6 -12l-33 1q-33 1 -67 1q-33 0 -68 -1t-36 -1q-8 0 -8 13q0 14 9 14h63q4 0 4 88v73q0 7 -0.5 8t-4.5 1h-213h-4t-2.5 -1t-1.5 -3v-6 q0 -160 7 -160h59q7 0 7 -12q0 -15 -7 -15l-35 1q-35 1 -69 1q-31 0 -66.5 -1t-36.5 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="283" d="M25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74v-189q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="291" d="M-20 -153q0 21 22 41.5t30 20.5q10 0 29.5 -11.5t28.5 -11.5q18 0 24 16t6 51q0 44 -1.5 138t-1.5 140v72q0 73 -2 73h-77q-13 0 -13 15q0 12 13 12l44 -1q45 -1 71 -1q30 0 66.5 1t37.5 1q9 0 9 -13q0 -14 -10 -14h-57q-5 0 -5 -74v-217q0 -44 -2.5 -71.5t-17.5 -66.5 t-44 -70q-48 -52 -99 -52q-17 0 -34 6.5t-17 15.5z" />
+<glyph horiz-adv-x="493" d="M25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1q24 0 59.5 1t37.5 1q9 0 9 -13q0 -14 -12 -14h-48q-6 0 -6 -75v-82q0 -13 9 -13h16q6 0 128 157q7 7 6.5 10t-12.5 3h-22q-13 0 -13 15q0 12 13 12q1 0 22.5 -1t42.5 -1 q23 0 46 1t26 1q9 0 9 -13q0 -14 -12 -14h-39q-3 0 -50 -49.5l-80 -85.5q-6 -6 0 -12l174 -194q10 -10 19 -10h16q7 0 7 -12q0 -15 -7 -15q-2 0 -30.5 1t-54.5 1q-27 0 -56.5 -1t-31.5 -1q-8 0 -8 15q0 12 9 12h37q10 0 10 1.5t-5 7.5l-129 148q-3 3 -12 3h-16q-7 0 -9.5 -1 t-2.5 -7v-94q0 -58 7 -58h55q7 0 7 -12q0 -15 -7 -15q-1 0 -33 1t-65 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="445" d="M25 13q0 12 9 12h60q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l36 -1q36 -1 62 -1q30 0 73.5 1t44.5 1q9 0 9 -14q0 -13 -11 -13h-70q-6 0 -6 -74v-189q0 -83 8 -83q98 0 186 8q12 1 16.5 5t5.5 18l7 57q1 9 15 7t14 -9q0 -3 -1.5 -16.5l-4.5 -39.5l-6 -52 q-1 -11 -19 -11q-11 0 -126 1.5t-131 1.5q-36 0 -72 -1l-37 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="705" d="M25 13q0 12 9 12h62q3 0 6.5 87.5t5.5 175.5l1 88h-70q-13 0 -13 15q0 12 13 12l36 -1q36 -1 62 -1h59q7 0 10 -6q150 -301 155 -301q2 0 15.5 26.5t32 68l36 80.5l33.5 75.5t18 41.5q5 11 6.5 13t7.5 2h51q30 0 62.5 1t33.5 1q9 0 9 -13q0 -14 -12 -14h-53q-5 0 -5 -74 q0 -277 10 -277h67q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15q0 12 9 12h62q5 0 5 120q0 225 -7 225q-5 0 -140 -303q-6 -14 -15.5 -29.5t-16.5 -29.5q-5 -8 -10 -8q-7 0 -13 10l-167 327q-12 24 -15 24q-4 0 -4 -29q0 -307 11 -307h69 q7 0 7 -12q0 -15 -7 -15q-1 0 -31 1t-63 1q-36 0 -62 -1l-26 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="569" d="M25 13q0 12 9 12h59l16 351h-70q-13 0 -13 15q0 12 13 12l35 -1q34 -1 60 -1h51q5 0 10 -6l240 -271q7 -9 10 -9q2 0 2 10q0 251 -9 251h-74q-7 0 -7 12q0 15 7 15q1 0 35 -1t64 -1q21 0 45.5 1t27.5 1q8 0 8 -15q0 -12 -9 -12h-47q-6 0 -10 -120.5t-4 -181.5l2 -77 q0 -10 -7 -10q-8 0 -17 9l-305 337q-3 3 -6 6.5t-4.5 5t-2.5 1.5q-2 0 -2 -14v-69q0 -238 9 -238h76q7 0 7 -12q0 -15 -7 -15q-1 0 -33 1t-66 1q-26 0 -44.5 -0.5t-27.5 -1t-13 -0.5q-8 0 -8 15z" />
+<glyph d="M30 190q0 94 60.5 159t175.5 65q91 0 147.5 -64.5t56.5 -148.5q0 -91 -54 -151.5t-175 -60.5q-99 0 -155 58t-56 143zM113 210q0 -88 35.5 -143t95.5 -55q73 0 108.5 55t35.5 129q0 78 -39.5 137t-100.5 59q-56 0 -95.5 -54.5t-39.5 -127.5z" />
+<glyph horiz-adv-x="446" d="M25 388q0 14 10 14q2 0 45 -0.5t60 -0.5q18 0 58 1t50 1q168 0 168 -113q0 -118 -172 -118q-14 0 -34.5 1t-23.5 1q-7 0 -7 -7v-38q0 -104 9 -104h74q7 0 7 -12q0 -15 -7 -15l-42 1q-42 1 -76 1q-19 0 -43.5 -0.5t-42 -1t-18.5 -0.5q-9 0 -9 12q0 15 9 15h61q6 0 6 54 v158q0 139 -8 139h-63q-11 0 -11 12zM179 200q0 -9 10 -9q76 0 115.5 19.5t39.5 69.5q0 47 -32 72.5t-88 25.5q-33 0 -42 -2q-3 -2 -3 -62v-114z" />
+<glyph horiz-adv-x="494" d="M30 198q0 93 57.5 154.5t172.5 61.5q89 0 146.5 -60.5t57.5 -142.5q0 -71 -45 -128.5t-118 -72.5q-2 0 -11.5 -2t-14.5 -4q-9 -3 -25.5 -13l-29.5 -18.5t-13 -9.5t13.5 -3.5t36.5 -6t37 -6.5q11 -3 27 -7t24 -6.5t19 -4t20 -1.5q18 0 38.5 6.5t34 13t14.5 6.5q2 0 5 -4.5 t3 -7.5q0 -4 -22 -20t-54 -31t-52 -15q-37 0 -81.5 15t-75.5 30t-34 15q-6 0 -25.5 -9t-26.5 -9q-13 0 -21.5 10.5t-8.5 21.5q0 3 2.5 5.5t7 4t8 2.5t10.5 2t8 1q3 1 25.5 3t30.5 4q15 5 39 18.5t24 15.5t-18 5q-85 14 -135 64t-50 123zM113 206q0 -78 49.5 -131.5 t92.5 -53.5q56 0 91.5 53.5t35.5 121.5q0 90 -39 142.5t-100 52.5q-57 0 -93.5 -48.5t-36.5 -136.5z" />
+<glyph horiz-adv-x="478" d="M20 388q0 14 10 14q2 0 40 -0.5t55 -0.5q18 0 59.5 1t51.5 1q156 0 156 -98q0 -23 -11 -42.5t-26.5 -30.5t-31 -18.5t-26.5 -11t-11 -4.5l13 -3q13 -3 31 -11.5t36.5 -22t31.5 -40t14 -61.5q0 -16 2 -24t3.5 -9.5t5.5 -1.5h31q7 0 7 -16q0 -11 -10 -11l-110 2q-5 0 -5 5 v37q0 35 -3 55.5t-13.5 44t-35 34t-64.5 10.5h-48q-7 0 -7 -7v-50q0 -104 8 -104h61q7 0 7 -12q0 -15 -7 -15l-36 1q-36 1 -70 1q-19 0 -41.5 -0.5t-37.5 -1t-16 -0.5q-9 0 -9 12q0 15 9 15h53q6 0 6 54v158q0 139 -8 139h-53q-11 0 -11 12zM165 208q0 -6 10 -6h68 q37 0 56 25.5t19 62.5q0 40 -32.5 66t-73.5 26q-35 0 -44 -2q-3 -2 -3 -66v-106z" />
+<glyph horiz-adv-x="369" d="M40 292q0 53 39 87t96 34q46 0 99 -24q1 0 5.5 -2.5t6 -1.5t1.5 7l1 9q0 7 12 7q17 0 17 -8q0 -2 -1.5 -21t-3 -44.5t-1.5 -43.5q0 -7 -10 -7h-3q-14 0 -14 7q0 1 1 20t1 22q0 6 -14.5 19t-41 25t-52.5 12t-51 -18.5t-25 -50.5q0 -29 24.5 -48t59.5 -30t69.5 -24 t59 -40.5t24.5 -69.5q0 -63 -45.5 -91.5t-117.5 -28.5q-29 0 -59.5 6t-48 12.5t-18.5 9.5q-4 92 -4 106q0 3 14 5q10 1 12 -0.5t2 -8.5v-4l3 -49q1 -17 40 -32t77 -15q86 0 86 68q0 25 -24.5 41.5t-60 27.5t-71 24.5t-60 42t-24.5 70.5z" />
+<glyph horiz-adv-x="464" d="M20 307q0 11 13 111q0 3 11 3q12 0 12 -4v-14q0 -2 24 -2h275q62 0 63 5q1 3 1.5 10t0.5 11q0 3 12 3q11 0 11 -7l1 -107q0 -7 -14 -7q-11 0 -11 9v54q0 4 -65 4h-73q-9 0 -9 -101v-184q0 -66 10 -66h69q7 0 7 -12q0 -15 -7 -15q-1 0 -41 1t-74 1q-36 0 -74 -1l-39 -1 q-8 0 -8 15q0 12 9 12h65q4 0 6 84l3 210q0 57 -5 57h-45q-95 0 -96 -10l-7 -60q-1 -4 -13 -4t-12 5z" />
+<glyph horiz-adv-x="551" d="M25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-62q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14 h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17t-5 5.5l-10 -6q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="452" d="M10 389q0 6 0.5 8t3.5 4t9 2q8 0 34.5 -1t42.5 -1q28 0 58.5 1t35.5 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-38q-18 0 -18 -8q0 -3 46 -119t67 -165q6 -14 7 -14q2 -1 5 8q1 1 2 4q19 47 54 152.5t35 133.5q0 8 -3 8h-46q-8 0 -10.5 3t-2.5 10q0 14 14 14q2 0 11.5 -0.5 t26 -1t34.5 -0.5q12 0 28.5 1t23.5 1t9 -2.5t2 -11.5q0 -13 -12 -13h-15q-9 0 -13 -10q-6 -15 -50.5 -135t-66.5 -173q-6 -15 -12 -23.5t-16.5 -20t-20.5 -26.5q-6 -7 -11 -7q-12 0 -32 60q-5 16 -58 141t-74 179q-4 11 -7.5 13t-14.5 2h-16q-8 0 -10.5 3t-2.5 10z" />
+<glyph horiz-adv-x="709" d="M10 389q0 6 0.5 8t3.5 4t9 2q8 0 35.5 -1t43.5 -1q13 0 46 1t41 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-35q-19 0 -19 -8q0 -2 18 -55l42.5 -119.5t38.5 -97.5q6 -13 8 -13t10 17l89 197q2 5 2 23q0 7 -13 42q-4 11 -7.5 12.5t-15.5 1.5h-23q-8 0 -10.5 3t-2.5 10 q0 6 0.5 8t3.5 4t9 2q3 0 31 -1t48 -1q28 0 59 1t36 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-43q-13 0 -13 -8q0 -2 18 -57.5l42 -124.5t36 -100q6 -15 7 -15l8 17q97 228 97 277q0 11 -4 11h-45q-8 0 -10.5 3t-2.5 10q0 14 14 14q2 0 27 -1t36 -1q13 0 36 1t25 1q7 0 9 -2.5 t2 -11.5q0 -13 -12 -13h-13q-9 0 -14 -10q-4 -9 -31 -74l-55 -128.5l-48 -105.5q-8 -17 -22 -34t-25 -36q-2 -4 -7 -4q-14 0 -31 63q-3 11 -15.5 44.5l-30.5 83.5t-31 90q-1 4 -3 9q-1 3 -2 0l-4 -10l-92 -205q-8 -17 -22.5 -33.5t-25.5 -37.5q-2 -4 -7 -4q-4 0 -7.5 3.5 t-7 10.5t-5.5 12.5t-5.5 16t-4.5 14.5q-4 12 -26.5 71.5l-48.5 130l-43 118.5q-4 11 -7 13t-14 2h-16q-8 0 -10.5 3t-2.5 10z" />
+<glyph horiz-adv-x="458" d="M10 12q0 13 12 13q27 0 36 4t26 25l111 134q5 6 -4 19q-116 169 -118 169h-32q-8 0 -10.5 3t-2.5 10q0 6 0.5 8t3.5 4t9 2q7 0 34.5 -1t48.5 -1q22 0 49 1t34 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-36q0 -6 16 -36q36 -63 52 -87q4 -8 9 -2l3 3q15 16 73 104q8 12 8 14 q0 4 -16 4h-23q-8 0 -10.5 3t-2.5 10q0 14 14 14q1 0 24.5 -1t44.5 -1q15 0 33.5 1t22.5 1q13 0 13 -14q0 -13 -12 -13h-20q-4 0 -7 -0.5t-6 -3.5t-5.5 -5t-8 -8.5l-9.5 -11.5l-97 -109q-8 -9 -8 -9.5t7 -14.5q21 -34 75.5 -111.5t60.5 -77.5h32q8 0 10.5 -3t2.5 -10 q0 -6 -0.5 -8t-3.5 -4t-9 -2q-7 0 -36.5 1t-52.5 1q-26 0 -59 -1t-39 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h51q1 0 1 2q0 14 -79 137q-1 1 -2 3q-5 5 -8 1.5t-5 -6.5q-9 -11 -84 -115q-10 -14 -10 -16q0 -6 18 -6h32q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2 q-8 0 -32 1t-40 1t-38 -1t-28 -1q-8 0 -10.5 3t-2.5 11z" />
+<glyph horiz-adv-x="464" d="M10 389q0 6 0.5 8t3.5 4t9 2q7 0 34.5 -1t48.5 -1q29 0 61 1t37 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-51q1 -12 23 -55.5l42.5 -80.5t21.5 -38q2 -5 4 -6.5t4 -0.5t6 5q11 13 45.5 69.5t50.5 88.5q1 2 3 5t3.5 5.5t1.5 3.5q0 4 -19 4h-40q-8 0 -10.5 3t-2.5 10 q0 14 14 14q1 0 33.5 -1t53.5 -1q15 0 32 1t21 1q13 0 13 -14q0 -13 -12 -13h-17h-5t-4 -1l-3 -1.5t-3.5 -3t-3.5 -4l-4.5 -6.5l-5.5 -8l-123 -168q-10 -13 -10 -31v-87q0 -41 9 -41h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-26 0 -48 -0.5t-34 -1t-16 -0.5q-8 0 -8 15 q0 12 9 12h57q5 0 5 84v38q0 7 -66.5 118t-70.5 111h-32q-8 0 -10.5 3t-2.5 10z" />
+<glyph horiz-adv-x="413" d="M30 10q0 4 10 20l228 327l4 6t3.5 5.5t1.5 3.5q0 4 -14 4l-165 -5h-9t-6.5 -0.5t-4 -0.5t-3 -2t-1 -4.5l-1.5 -7.5l-7 -50q-2 -12 -13 -12q-15 0 -15 10q0 2 3 22.5l7 49t6 46.5q2 6 8 6q9 0 14.5 -1.5t4.5 -6.5l-1 -9q-1 -8 0 -9t9 -1h266q19 0 19 -8q0 -3 -8 -16 l-215 -322q-13 -19 -13 -24q0 -4 10 -4l194 7q9 0 11 1.5t3 11.5l3 60q1 9 4.5 11.5t15.5 1.5q9 -1 9 -9q0 -23 -5 -96q-1 -11 -3 -13t-13 -2h-315q-22 0 -22 10z" />
+<glyph horiz-adv-x="486" d="M20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14t19.5 44q6 19 19 19q3 0 5 -1.5t4 -5.5t3 -8t4 -12t6 -15q139 -362 147 -362h31q7 0 7 -13q0 -14 -10 -14q-4 0 -36 1t-43 1q-10 0 -52.5 -1t-48.5 -1t-6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5 q-3 8 -5 10t-7 2h-114q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12q0 -15 -12 -15q-7 0 -40.5 1t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182q0 -3 7 -3h94q9 0 9 4t-2 7q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="463" d="M25 388q0 14 10 14q2 0 44 -0.5t59 -0.5q18 0 58 1t50 1q31 0 54 -3t49 -12t40 -30t14 -53q0 -23 -10.5 -41.5t-25.5 -28.5t-30.5 -16.5t-26 -9t-10.5 -3.5l12 -3q13 -3 31.5 -9t36.5 -16.5t30.5 -30.5t12.5 -46q0 -102 -177 -102q-14 0 -54 0.5t-55 0.5 q-19 0 -42.5 -0.5t-39.5 -1t-17 -0.5q-9 0 -9 12q0 15 9 15h61q6 0 6 54v158q0 139 -8 139h-61q-11 0 -11 12zM178 129q0 -104 8 -104h47q60 0 88.5 23t28.5 56q0 89 -120 89h-45q-7 0 -7 -7v-57zM178 220q0 -6 10 -6h50q6 0 18 -0.5t13 -0.5q29 0 45.5 24.5t16.5 59.5 q0 41 -30 63t-79 22q-32 0 -41 -2q-3 -2 -3 -66v-94z" />
+<glyph horiz-adv-x="487" d="M30 208q0 80 67.5 142.5t156.5 62.5q40 0 80 -12t60 -24l19 -12l2 13q1 11 13 11q14 0 14 -9q0 -4 -2 -62t-2 -76q0 -8 -16 -8q-15 0 -15 7q0 1 1.5 33t1.5 35q0 4 -11 15q-60 60 -138 60q-60 0 -101 -51.5t-41 -129.5q0 -76 44 -130t113 -54q93 0 138 45q2 12 3 25 t1 28.5t1 25.5q1 9 12 9q16 0 16 -11q0 -45 -4 -101q-1 -6 -29 -19t-72 -24.5t-79 -11.5q-107 0 -170 56.5t-63 166.5z" />
+<glyph horiz-adv-x="502" d="M25 8q0 17 8 17h59q7 0 7 316v35h-60q-8 0 -8 14q0 13 8 13h6q6 0 16 -0.5t22 -1t26 -0.5h27q23 0 58 1.5t45 1.5q102 0 162.5 -54t60.5 -156q0 -95 -63 -145.5t-150 -50.5q-19 0 -59 1t-59 1q-17 0 -39.5 -0.5t-39 -1t-18.5 -0.5q-9 0 -9 10zM172 63q0 -35 3 -38 q4 -2 35 -2q50 0 85.5 16t53.5 43.5t25.5 55.5t7.5 60q0 80 -43 131.5t-136 51.5q-17 0 -25 -1q-6 0 -6 -70v-247z" />
+<glyph horiz-adv-x="458" d="M25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13q0 14 5 14l17 -1q17 0 42.5 -0.5t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34 q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57 q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5t-100.5 1t-139 0.5q-27 0 -68 -1t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="444" d="M25 389q0 15 9 15q1 0 17.5 -1t41 -1.5t44.5 -0.5q176 0 202 1q30 1 35.5 2.5t6.5 7.5q0 3 0.5 6t0.5 4.5t0.5 3.5t1.5 2.5t3 1t5 0.5q17 0 17 -6q0 -2 -1.5 -41t-1.5 -67q0 -5 -16 -5q-12 0 -12 9q0 1 0.5 24t0.5 25q0 7 -118 7h-82q-4 0 -4 -65q0 -69 1 -84v-6t1 -3.5 t3 -1.5h6h27q143 0 143 7v38q0 4 12 4q13 0 13 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28t0.5 -30q0 -6 -13 -6q-12 0 -12 7v41q0 7 -101 7h-69q-7 0 -8.5 -2t-1.5 -9q0 -159 4 -159h77q7 0 7 -15q0 -12 -7 -12t-57 1t-59 1t-50 -1t-48 -1q-8 0 -8 13q0 14 10 14h53 q5 0 5 117v96q0 138 -9 138h-57q-12 0 -12 13z" />
+<glyph horiz-adv-x="485" d="M25 200q0 96 65.5 155.5t158.5 59.5q39 0 76 -13.5t53 -26.5q10 -8 10 3l1 22q0 11 11 11q18 0 18 -8q0 -1 -3 -57t-3 -79q0 -7 -15 -7q-14 0 -14 8q0 1 1 24.5t1 26.5q0 4 -15.5 20.5t-47 33.5t-64.5 17q-65 0 -106.5 -47t-41.5 -131q0 -83 44.5 -137.5t118.5 -54.5 q36 0 60.5 8.5t26.5 18.5q2 18 2 28v29q0 24 -7 24h-55q-5 0 -5 15q0 12 5 12q7 0 36 -1t46 -1q13 0 36.5 1t37.5 1q4 0 4 -10q0 -17 -4 -17h-19q-8 0 -8 -34q0 -7 -0.5 -21t-0.5 -25q0 -8 -27.5 -21.5t-71.5 -24.5t-82 -11q-93 0 -157.5 50.5t-64.5 158.5z" />
+<glyph horiz-adv-x="567" d="M25 13q0 12 9 12h60q4 0 4 144v62q0 145 -4 145h-55q-13 0 -13 15q0 7 2 9.5t10 2.5l34 -1q34 -1 60 -1q19 0 62 1t46 1q9 0 9 -13q0 -14 -12 -14h-59q-4 0 -4 -74v-74q0 -7 1.5 -9t7.5 -2h208q7 0 8 1t1 8v68q0 82 -6 82h-57q-10 0 -10 16q0 11 10 11q3 0 16.5 -0.5 t34.5 -1t43 -0.5q24 0 47 0.5t36.5 1t14.5 0.5q7 0 7 -13q0 -14 -10 -14h-49q-1 0 -1 -138q0 -213 3 -213h57q6 0 6 -15q0 -12 -6 -12l-33 1q-33 1 -67 1q-33 0 -68 -1t-36 -1q-8 0 -8 13q0 14 9 14h63q4 0 4 88v73q0 7 -0.5 8t-4.5 1h-213h-4t-2.5 -1t-1.5 -3v-6 q0 -160 7 -160h59q7 0 7 -12q0 -15 -7 -15l-35 1q-35 1 -69 1q-31 0 -66.5 -1t-36.5 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="283" d="M25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74v-189q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="291" d="M-20 -153q0 21 22 41.5t30 20.5q10 0 29.5 -11.5t28.5 -11.5q18 0 24 16t6 51q0 44 -1.5 138t-1.5 140v72q0 73 -2 73h-77q-13 0 -13 15q0 12 13 12l44 -1q45 -1 71 -1q30 0 66.5 1t37.5 1q9 0 9 -13q0 -14 -10 -14h-57q-5 0 -5 -74v-217q0 -44 -2.5 -71.5t-17.5 -66.5 t-44 -70q-48 -52 -99 -52q-17 0 -34 6.5t-17 15.5z" />
+<glyph horiz-adv-x="493" d="M25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1q24 0 59.5 1t37.5 1q9 0 9 -13q0 -14 -12 -14h-48q-6 0 -6 -75v-82q0 -13 9 -13h16q6 0 128 157q7 7 6.5 10t-12.5 3h-22q-13 0 -13 15q0 12 13 12q1 0 22.5 -1t42.5 -1 q23 0 46 1t26 1q9 0 9 -13q0 -14 -12 -14h-39q-3 0 -50 -49.5l-80 -85.5q-6 -6 0 -12l174 -194q10 -10 19 -10h16q7 0 7 -12q0 -15 -7 -15q-2 0 -30.5 1t-54.5 1q-27 0 -56.5 -1t-31.5 -1q-8 0 -8 15q0 12 9 12h37q10 0 10 1.5t-5 7.5l-129 148q-3 3 -12 3h-16q-7 0 -9.5 -1 t-2.5 -7v-94q0 -58 7 -58h55q7 0 7 -12q0 -15 -7 -15q-1 0 -33 1t-65 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="445" d="M25 13q0 12 9 12h60q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l36 -1q36 -1 62 -1q30 0 73.5 1t44.5 1q9 0 9 -14q0 -13 -11 -13h-70q-6 0 -6 -74v-189q0 -83 8 -83q98 0 186 8q12 1 16.5 5t5.5 18l7 57q1 9 15 7t14 -9q0 -3 -1.5 -16.5l-4.5 -39.5l-6 -52 q-1 -11 -19 -11q-11 0 -126 1.5t-131 1.5q-36 0 -72 -1l-37 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="705" d="M25 13q0 12 9 12h62q3 0 6.5 87.5t5.5 175.5l1 88h-70q-13 0 -13 15q0 12 13 12l36 -1q36 -1 62 -1h59q7 0 10 -6q150 -301 155 -301q2 0 15.5 26.5t32 68l36 80.5l33.5 75.5t18 41.5q5 11 6.5 13t7.5 2h51q30 0 62.5 1t33.5 1q9 0 9 -13q0 -14 -12 -14h-53q-5 0 -5 -74 q0 -277 10 -277h67q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15q0 12 9 12h62q5 0 5 120q0 225 -7 225q-5 0 -140 -303q-6 -14 -15.5 -29.5t-16.5 -29.5q-5 -8 -10 -8q-7 0 -13 10l-167 327q-12 24 -15 24q-4 0 -4 -29q0 -307 11 -307h69 q7 0 7 -12q0 -15 -7 -15q-1 0 -31 1t-63 1q-36 0 -62 -1l-26 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="569" d="M25 13q0 12 9 12h59l16 351h-70q-13 0 -13 15q0 12 13 12l35 -1q34 -1 60 -1h51q5 0 10 -6l240 -271q7 -9 10 -9q2 0 2 10q0 251 -9 251h-74q-7 0 -7 12q0 15 7 15q1 0 35 -1t64 -1q21 0 45.5 1t27.5 1q8 0 8 -15q0 -12 -9 -12h-47q-6 0 -10 -120.5t-4 -181.5l2 -77 q0 -10 -7 -10q-8 0 -17 9l-305 337q-3 3 -6 6.5t-4.5 5t-2.5 1.5q-2 0 -2 -14v-69q0 -238 9 -238h76q7 0 7 -12q0 -15 -7 -15q-1 0 -33 1t-66 1q-26 0 -44.5 -0.5t-27.5 -1t-13 -0.5q-8 0 -8 15z" />
+<glyph d="M30 190q0 94 60.5 159t175.5 65q91 0 147.5 -64.5t56.5 -148.5q0 -91 -54 -151.5t-175 -60.5q-99 0 -155 58t-56 143zM113 210q0 -88 35.5 -143t95.5 -55q73 0 108.5 55t35.5 129q0 78 -39.5 137t-100.5 59q-56 0 -95.5 -54.5t-39.5 -127.5z" />
+<glyph horiz-adv-x="446" d="M25 388q0 14 10 14q2 0 45 -0.5t60 -0.5q18 0 58 1t50 1q168 0 168 -113q0 -118 -172 -118q-14 0 -34.5 1t-23.5 1q-7 0 -7 -7v-38q0 -104 9 -104h74q7 0 7 -12q0 -15 -7 -15l-42 1q-42 1 -76 1q-19 0 -43.5 -0.5t-42 -1t-18.5 -0.5q-9 0 -9 12q0 15 9 15h61q6 0 6 54 v158q0 139 -8 139h-63q-11 0 -11 12zM179 200q0 -9 10 -9q76 0 115.5 19.5t39.5 69.5q0 47 -32 72.5t-88 25.5q-33 0 -42 -2q-3 -2 -3 -62v-114z" />
+<glyph horiz-adv-x="494" d="M30 198q0 93 57.5 154.5t172.5 61.5q89 0 146.5 -60.5t57.5 -142.5q0 -71 -45 -128.5t-118 -72.5q-2 0 -11.5 -2t-14.5 -4q-9 -3 -25.5 -13l-29.5 -18.5t-13 -9.5t13.5 -3.5t36.5 -6t37 -6.5q11 -3 27 -7t24 -6.5t19 -4t20 -1.5q18 0 38.5 6.5t34 13t14.5 6.5q2 0 5 -4.5 t3 -7.5q0 -4 -22 -20t-54 -31t-52 -15q-37 0 -81.5 15t-75.5 30t-34 15q-6 0 -25.5 -9t-26.5 -9q-13 0 -21.5 10.5t-8.5 21.5q0 3 2.5 5.5t7 4t8 2.5t10.5 2t8 1q3 1 25.5 3t30.5 4q15 5 39 18.5t24 15.5t-18 5q-85 14 -135 64t-50 123zM113 206q0 -78 49.5 -131.5 t92.5 -53.5q56 0 91.5 53.5t35.5 121.5q0 90 -39 142.5t-100 52.5q-57 0 -93.5 -48.5t-36.5 -136.5z" />
+<glyph horiz-adv-x="478" d="M20 388q0 14 10 14q2 0 40 -0.5t55 -0.5q18 0 59.5 1t51.5 1q156 0 156 -98q0 -23 -11 -42.5t-26.5 -30.5t-31 -18.5t-26.5 -11t-11 -4.5l13 -3q13 -3 31 -11.5t36.5 -22t31.5 -40t14 -61.5q0 -16 2 -24t3.5 -9.5t5.5 -1.5h31q7 0 7 -16q0 -11 -10 -11l-110 2q-5 0 -5 5 v37q0 35 -3 55.5t-13.5 44t-35 34t-64.5 10.5h-48q-7 0 -7 -7v-50q0 -104 8 -104h61q7 0 7 -12q0 -15 -7 -15l-36 1q-36 1 -70 1q-19 0 -41.5 -0.5t-37.5 -1t-16 -0.5q-9 0 -9 12q0 15 9 15h53q6 0 6 54v158q0 139 -8 139h-53q-11 0 -11 12zM165 208q0 -6 10 -6h68 q37 0 56 25.5t19 62.5q0 40 -32.5 66t-73.5 26q-35 0 -44 -2q-3 -2 -3 -66v-106z" />
+<glyph horiz-adv-x="369" d="M40 292q0 53 39 87t96 34q46 0 99 -24q1 0 5.5 -2.5t6 -1.5t1.5 7l1 9q0 7 12 7q17 0 17 -8q0 -2 -1.5 -21t-3 -44.5t-1.5 -43.5q0 -7 -10 -7h-3q-14 0 -14 7q0 1 1 20t1 22q0 6 -14.5 19t-41 25t-52.5 12t-51 -18.5t-25 -50.5q0 -29 24.5 -48t59.5 -30t69.5 -24 t59 -40.5t24.5 -69.5q0 -63 -45.5 -91.5t-117.5 -28.5q-29 0 -59.5 6t-48 12.5t-18.5 9.5q-4 92 -4 106q0 3 14 5q10 1 12 -0.5t2 -8.5v-4l3 -49q1 -17 40 -32t77 -15q86 0 86 68q0 25 -24.5 41.5t-60 27.5t-71 24.5t-60 42t-24.5 70.5z" />
+<glyph horiz-adv-x="464" d="M20 307q0 11 13 111q0 3 11 3q12 0 12 -4v-14q0 -2 24 -2h275q62 0 63 5q1 3 1.5 10t0.5 11q0 3 12 3q11 0 11 -7l1 -107q0 -7 -14 -7q-11 0 -11 9v54q0 4 -65 4h-73q-9 0 -9 -101v-184q0 -66 10 -66h69q7 0 7 -12q0 -15 -7 -15q-1 0 -41 1t-74 1q-36 0 -74 -1l-39 -1 q-8 0 -8 15q0 12 9 12h65q4 0 6 84l3 210q0 57 -5 57h-45q-95 0 -96 -10l-7 -60q-1 -4 -13 -4t-12 5z" />
+<glyph horiz-adv-x="551" d="M25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-62q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14 h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17t-5 5.5l-10 -6q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="452" d="M10 389q0 6 0.5 8t3.5 4t9 2q8 0 34.5 -1t42.5 -1q28 0 58.5 1t35.5 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-38q-18 0 -18 -8q0 -3 46 -119t67 -165q6 -14 7 -14q2 -1 5 8q1 1 2 4q19 47 54 152.5t35 133.5q0 8 -3 8h-46q-8 0 -10.5 3t-2.5 10q0 14 14 14q2 0 11.5 -0.5 t26 -1t34.5 -0.5q12 0 28.5 1t23.5 1t9 -2.5t2 -11.5q0 -13 -12 -13h-15q-9 0 -13 -10q-6 -15 -50.5 -135t-66.5 -173q-6 -15 -12 -23.5t-16.5 -20t-20.5 -26.5q-6 -7 -11 -7q-12 0 -32 60q-5 16 -58 141t-74 179q-4 11 -7.5 13t-14.5 2h-16q-8 0 -10.5 3t-2.5 10z" />
+<glyph horiz-adv-x="709" d="M10 389q0 6 0.5 8t3.5 4t9 2q8 0 35.5 -1t43.5 -1q13 0 46 1t41 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-35q-19 0 -19 -8q0 -2 18 -55l42.5 -119.5t38.5 -97.5q6 -13 8 -13t10 17l89 197q2 5 2 23q0 7 -13 42q-4 11 -7.5 12.5t-15.5 1.5h-23q-8 0 -10.5 3t-2.5 10 q0 6 0.5 8t3.5 4t9 2q3 0 31 -1t48 -1q28 0 59 1t36 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-43q-13 0 -13 -8q0 -2 18 -57.5l42 -124.5t36 -100q6 -15 7 -15l8 17q97 228 97 277q0 11 -4 11h-45q-8 0 -10.5 3t-2.5 10q0 14 14 14q2 0 27 -1t36 -1q13 0 36 1t25 1q7 0 9 -2.5 t2 -11.5q0 -13 -12 -13h-13q-9 0 -14 -10q-4 -9 -31 -74l-55 -128.5l-48 -105.5q-8 -17 -22 -34t-25 -36q-2 -4 -7 -4q-14 0 -31 63q-3 11 -15.5 44.5l-30.5 83.5t-31 90q-1 4 -3 9q-1 3 -2 0l-4 -10l-92 -205q-8 -17 -22.5 -33.5t-25.5 -37.5q-2 -4 -7 -4q-4 0 -7.5 3.5 t-7 10.5t-5.5 12.5t-5.5 16t-4.5 14.5q-4 12 -26.5 71.5l-48.5 130l-43 118.5q-4 11 -7 13t-14 2h-16q-8 0 -10.5 3t-2.5 10z" />
+<glyph horiz-adv-x="458" d="M10 12q0 13 12 13q27 0 36 4t26 25l111 134q5 6 -4 19q-116 169 -118 169h-32q-8 0 -10.5 3t-2.5 10q0 6 0.5 8t3.5 4t9 2q7 0 34.5 -1t48.5 -1q22 0 49 1t34 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-36q0 -6 16 -36q36 -63 52 -87q4 -8 9 -2l3 3q15 16 73 104q8 12 8 14 q0 4 -16 4h-23q-8 0 -10.5 3t-2.5 10q0 14 14 14q1 0 24.5 -1t44.5 -1q15 0 33.5 1t22.5 1q13 0 13 -14q0 -13 -12 -13h-20q-4 0 -7 -0.5t-6 -3.5t-5.5 -5t-8 -8.5l-9.5 -11.5l-97 -109q-8 -9 -8 -9.5t7 -14.5q21 -34 75.5 -111.5t60.5 -77.5h32q8 0 10.5 -3t2.5 -10 q0 -6 -0.5 -8t-3.5 -4t-9 -2q-7 0 -36.5 1t-52.5 1q-26 0 -59 -1t-39 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h51q1 0 1 2q0 14 -79 137q-1 1 -2 3q-5 5 -8 1.5t-5 -6.5q-9 -11 -84 -115q-10 -14 -10 -16q0 -6 18 -6h32q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2 q-8 0 -32 1t-40 1t-38 -1t-28 -1q-8 0 -10.5 3t-2.5 11z" />
+<glyph horiz-adv-x="464" d="M10 389q0 6 0.5 8t3.5 4t9 2q7 0 34.5 -1t48.5 -1q29 0 61 1t37 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-51q1 -12 23 -55.5l42.5 -80.5t21.5 -38q2 -5 4 -6.5t4 -0.5t6 5q11 13 45.5 69.5t50.5 88.5q1 2 3 5t3.5 5.5t1.5 3.5q0 4 -19 4h-40q-8 0 -10.5 3t-2.5 10 q0 14 14 14q1 0 33.5 -1t53.5 -1q15 0 32 1t21 1q13 0 13 -14q0 -13 -12 -13h-17h-5t-4 -1l-3 -1.5t-3.5 -3t-3.5 -4l-4.5 -6.5l-5.5 -8l-123 -168q-10 -13 -10 -31v-87q0 -41 9 -41h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-26 0 -48 -0.5t-34 -1t-16 -0.5q-8 0 -8 15 q0 12 9 12h57q5 0 5 84v38q0 7 -66.5 118t-70.5 111h-32q-8 0 -10.5 3t-2.5 10z" />
+<glyph horiz-adv-x="413" d="M30 10q0 4 10 20l228 327l4 6t3.5 5.5t1.5 3.5q0 4 -14 4l-165 -5h-9t-6.5 -0.5t-4 -0.5t-3 -2t-1 -4.5l-1.5 -7.5l-7 -50q-2 -12 -13 -12q-15 0 -15 10q0 2 3 22.5l7 49t6 46.5q2 6 8 6q9 0 14.5 -1.5t4.5 -6.5l-1 -9q-1 -8 0 -9t9 -1h266q19 0 19 -8q0 -3 -8 -16 l-215 -322q-13 -19 -13 -24q0 -4 10 -4l194 7q9 0 11 1.5t3 11.5l3 60q1 9 4.5 11.5t15.5 1.5q9 -1 9 -9q0 -23 -5 -96q-1 -11 -3 -13t-13 -2h-315q-22 0 -22 10z" />
+<glyph horiz-adv-x="486" d="M240 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14t19.5 44q6 19 19 19q3 0 5 -1.5t4 -5.5t3 -8t4 -12t6 -15q139 -362 147 -362h31 q7 0 7 -13q0 -14 -10 -14q-4 0 -36 1t-43 1q-10 0 -52.5 -1t-48.5 -1t-6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5q-3 8 -5 10t-7 2h-114q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12q0 -15 -12 -15q-7 0 -40.5 1t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182 q0 -3 7 -3h94q9 0 9 4t-2 7q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="486" d="M145 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14t19.5 44q6 19 19 19q3 0 5 -1.5 t4 -5.5t3 -8t4 -12t6 -15q139 -362 147 -362h31q7 0 7 -13q0 -14 -10 -14q-4 0 -36 1t-43 1q-10 0 -52.5 -1t-48.5 -1t-6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5q-3 8 -5 10t-7 2h-114q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12q0 -15 -12 -15q-7 0 -40.5 1 t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182q0 -3 7 -3h94q9 0 9 4t-2 7q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="486" d="M152 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84zM20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14t19.5 44q6 19 19 19q3 0 5 -1.5 t4 -5.5t3 -8t4 -12t6 -15q139 -362 147 -362h31q7 0 7 -13q0 -14 -10 -14q-4 0 -36 1t-43 1q-10 0 -52.5 -1t-48.5 -1t-6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5q-3 8 -5 10t-7 2h-114q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12q0 -15 -12 -15q-7 0 -40.5 1 t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182q0 -3 7 -3h94q9 0 9 4t-2 7q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="486" d="M150 498q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14t19.5 44 q6 19 19 19q3 0 5 -1.5t4 -5.5t3 -8t4 -12t6 -15q139 -362 147 -362h31q7 0 7 -13q0 -14 -10 -14q-4 0 -36 1t-43 1q-10 0 -52.5 -1t-48.5 -1t-6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5q-3 8 -5 10t-7 2h-114q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12 q0 -15 -12 -15q-7 0 -40.5 1t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182q0 -3 7 -3h94q9 0 9 4t-2 7q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="486" d="M124 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM284 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14 t19.5 44q6 19 19 19q3 0 5 -1.5t4 -5.5t3 -8t4 -12t6 -15q139 -362 147 -362h31q7 0 7 -13q0 -14 -10 -14q-4 0 -36 1t-43 1q-10 0 -52.5 -1t-48.5 -1t-6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5q-3 8 -5 10t-7 2h-114q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12 q0 -15 -12 -15q-7 0 -40.5 1t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182q0 -3 7 -3h94q9 0 9 4t-2 7q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="486" d="M153 582q0 13 9.5 21.5t26.5 8.5q21 0 30 -25l49 -130q2 -4 2 -6t-4 -2h-16q-4 0 -8 6l-82 107q-7 10 -7 20zM20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14t19.5 44q6 19 19 19q3 0 5 -1.5t4 -5.5t3 -8t4 -12t6 -15q139 -362 147 -362h31q7 0 7 -13 q0 -14 -10 -14q-4 0 -36 1t-43 1q-10 0 -52.5 -1t-48.5 -1t-6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5q-3 8 -5 10t-7 2h-114q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12q0 -15 -12 -15q-7 0 -40.5 1t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182q0 -3 7 -3h94 q9 0 9 4t-2 7q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="486" d="M184 535q0 29 21 50t50 21t50 -21t21 -50t-21 -50t-50 -21t-50 21t-21 50zM212 535q0 -18 12.5 -30.5t30.5 -12.5t30.5 12.5t12.5 30.5t-12.5 30.5t-30.5 12.5t-30.5 -12.5t-12.5 -30.5zM20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14t19.5 44 q6 19 19 19q3 0 5 -1.5t4 -5.5t3 -8t4 -12t6 -15q139 -362 147 -362h31q7 0 7 -13q0 -14 -10 -14q-4 0 -36 1t-43 1q-10 0 -52.5 -1t-48.5 -1t-6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5q-3 8 -5 10t-7 2h-114q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12 q0 -15 -12 -15q-7 0 -40.5 1t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182q0 -3 7 -3h94q9 0 9 4t-2 7q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="486" d="M153 518v23q0 6 1.5 7t7.5 1h187q5 0 6.5 -1t1.5 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14t19.5 44q6 19 19 19q3 0 5 -1.5t4 -5.5t3 -8t4 -12t6 -15q139 -362 147 -362h31q7 0 7 -13q0 -14 -10 -14 q-4 0 -36 1t-43 1q-10 0 -52.5 -1t-48.5 -1t-6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5q-3 8 -5 10t-7 2h-114q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12q0 -15 -12 -15q-7 0 -40.5 1t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182q0 -3 7 -3h94q9 0 9 4t-2 7 q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="486" d="M20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14t19.5 44q6 19 19 19q3 0 5 -1.5t4 -5.5t3 -8t4 -12t6 -15l30.5 -78.5l37.5 -97.5l35 -89t29.5 -71t14.5 -26h31q7 0 7 -13q0 -14 -10 -14q-4 0 -36 1t-43 1q-88 -88 -88 -167q0 -33 20 -56.5t44 -23.5 q23 0 43 11t31 22l11 11q1 0 6 -6t5 -7q0 -3 -15 -19t-47.5 -34t-68.5 -18q-32 0 -62.5 29.5t-30.5 63.5q0 14 3 28t6.5 24.5t13.5 25l15 22t20 23.5l21 22l25.5 24.5l25.5 24.5q-56 -2 -79 -2q-6 0 -6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5q-3 8 -5 10t-7 2h-114 q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12q0 -15 -12 -15q-7 0 -40.5 1t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182q0 -3 7 -3h94q9 0 9 4t-2 7q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="486" d="M240 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14t19.5 44q6 19 19 19q3 0 5 -1.5t4 -5.5t3 -8t4 -12t6 -15q139 -362 147 -362h31 q7 0 7 -13q0 -14 -10 -14q-4 0 -36 1t-43 1q-10 0 -52.5 -1t-48.5 -1t-6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5q-3 8 -5 10t-7 2h-114q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12q0 -15 -12 -15q-7 0 -40.5 1t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182 q0 -3 7 -3h94q9 0 9 4t-2 7q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="486" d="M145 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14t19.5 44q6 19 19 19q3 0 5 -1.5 t4 -5.5t3 -8t4 -12t6 -15q139 -362 147 -362h31q7 0 7 -13q0 -14 -10 -14q-4 0 -36 1t-43 1q-10 0 -52.5 -1t-48.5 -1t-6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5q-3 8 -5 10t-7 2h-114q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12q0 -15 -12 -15q-7 0 -40.5 1 t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182q0 -3 7 -3h94q9 0 9 4t-2 7q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="486" d="M152 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84zM20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14t19.5 44q6 19 19 19q3 0 5 -1.5 t4 -5.5t3 -8t4 -12t6 -15q139 -362 147 -362h31q7 0 7 -13q0 -14 -10 -14q-4 0 -36 1t-43 1q-10 0 -52.5 -1t-48.5 -1t-6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5q-3 8 -5 10t-7 2h-114q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12q0 -15 -12 -15q-7 0 -40.5 1 t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182q0 -3 7 -3h94q9 0 9 4t-2 7q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="486" d="M150 498q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14t19.5 44 q6 19 19 19q3 0 5 -1.5t4 -5.5t3 -8t4 -12t6 -15q139 -362 147 -362h31q7 0 7 -13q0 -14 -10 -14q-4 0 -36 1t-43 1q-10 0 -52.5 -1t-48.5 -1t-6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5q-3 8 -5 10t-7 2h-114q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12 q0 -15 -12 -15q-7 0 -40.5 1t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182q0 -3 7 -3h94q9 0 9 4t-2 7q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="486" d="M124 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM284 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14 t19.5 44q6 19 19 19q3 0 5 -1.5t4 -5.5t3 -8t4 -12t6 -15q139 -362 147 -362h31q7 0 7 -13q0 -14 -10 -14q-4 0 -36 1t-43 1q-10 0 -52.5 -1t-48.5 -1t-6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5q-3 8 -5 10t-7 2h-114q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12 q0 -15 -12 -15q-7 0 -40.5 1t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182q0 -3 7 -3h94q9 0 9 4t-2 7q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="486" d="M153 582q0 13 9.5 21.5t26.5 8.5q21 0 30 -25l49 -130q2 -4 2 -6t-4 -2h-16q-4 0 -8 6l-82 107q-7 10 -7 20zM20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14t19.5 44q6 19 19 19q3 0 5 -1.5t4 -5.5t3 -8t4 -12t6 -15q139 -362 147 -362h31q7 0 7 -13 q0 -14 -10 -14q-4 0 -36 1t-43 1q-10 0 -52.5 -1t-48.5 -1t-6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5q-3 8 -5 10t-7 2h-114q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12q0 -15 -12 -15q-7 0 -40.5 1t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182q0 -3 7 -3h94 q9 0 9 4t-2 7q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="486" d="M184 535q0 29 21 50t50 21t50 -21t21 -50t-21 -50t-50 -21t-50 21t-21 50zM212 535q0 -18 12.5 -30.5t30.5 -12.5t30.5 12.5t12.5 30.5t-12.5 30.5t-30.5 12.5t-30.5 -12.5t-12.5 -30.5zM20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14t19.5 44 q6 19 19 19q3 0 5 -1.5t4 -5.5t3 -8t4 -12t6 -15q139 -362 147 -362h31q7 0 7 -13q0 -14 -10 -14q-4 0 -36 1t-43 1q-10 0 -52.5 -1t-48.5 -1t-6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5q-3 8 -5 10t-7 2h-114q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12 q0 -15 -12 -15q-7 0 -40.5 1t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182q0 -3 7 -3h94q9 0 9 4t-2 7q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="486" d="M153 518v23q0 6 1.5 7t7.5 1h187q5 0 6.5 -1t1.5 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14t19.5 44q6 19 19 19q3 0 5 -1.5t4 -5.5t3 -8t4 -12t6 -15q139 -362 147 -362h31q7 0 7 -13q0 -14 -10 -14 q-4 0 -36 1t-43 1q-10 0 -52.5 -1t-48.5 -1t-6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5q-3 8 -5 10t-7 2h-114q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12q0 -15 -12 -15q-7 0 -40.5 1t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182q0 -3 7 -3h94q9 0 9 4t-2 7 q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="486" d="M20 11q0 14 11 14h31q7 0 35.5 63t66.5 155t46 109q2 5 10.5 14t19.5 44q6 19 19 19q3 0 5 -1.5t4 -5.5t3 -8t4 -12t6 -15l30.5 -78.5l37.5 -97.5l35 -89t29.5 -71t14.5 -26h31q7 0 7 -13q0 -14 -10 -14q-4 0 -36 1t-43 1q-88 -88 -88 -167q0 -33 20 -56.5t44 -23.5 q23 0 43 11t31 22l11 11q1 0 6 -6t5 -7q0 -3 -15 -19t-47.5 -34t-68.5 -18q-32 0 -62.5 29.5t-30.5 63.5q0 14 3 28t6.5 24.5t13.5 25l15 22t20 23.5l21 22l25.5 24.5l25.5 24.5q-56 -2 -79 -2q-6 0 -6 11q0 16 7 16h62q-4 16 -21.5 66.5t-18.5 54.5q-3 8 -5 10t-7 2h-114 q-5 0 -13 -18q-37 -92 -39 -115h68q8 0 8 -12q0 -15 -12 -15q-7 0 -40.5 1t-44.5 1t-37 -1t-33 -1q-10 0 -10 13zM175 182q0 -3 7 -3h94q9 0 9 4t-2 7q-4 11 -11 32l-16 47l-13 37q-6 19 -10 19t-12 -19q-20 -50 -41 -108q-5 -15 -5 -16z" />
+<glyph horiz-adv-x="487" d="M151 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM30 208q0 80 67.5 142.5t156.5 62.5q40 0 80 -12t60 -24l19 -12l2 13q1 11 13 11q14 0 14 -9 q0 -4 -2 -62t-2 -76q0 -8 -16 -8q-15 0 -15 7q0 1 1.5 33t1.5 35q0 4 -11 15q-60 60 -138 60q-60 0 -101 -51.5t-41 -129.5q0 -76 44 -130t113 -54q93 0 138 45q2 12 3 25t1 28.5t1 25.5q1 9 12 9q16 0 16 -11q0 -45 -4 -101q-1 -6 -29 -19t-72 -24.5t-79 -11.5 q-107 0 -170 56.5t-63 166.5z" />
+<glyph horiz-adv-x="487" d="M151 597q0 2 5 2h12l8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM30 208q0 80 67.5 142.5t156.5 62.5q40 0 80 -12t60 -24l19 -12l2 13q1 11 13 11q14 0 14 -9 q0 -4 -2 -62t-2 -76q0 -8 -16 -8q-15 0 -15 7q0 1 1.5 33t1.5 35q0 4 -11 15q-60 60 -138 60q-60 0 -101 -51.5t-41 -129.5q0 -76 44 -130t113 -54q93 0 138 45q2 12 3 25t1 28.5t1 25.5q1 9 12 9q16 0 16 -11q0 -45 -4 -101q-1 -6 -29 -19t-72 -24.5t-79 -11.5 q-107 0 -170 56.5t-63 166.5z" />
+<glyph horiz-adv-x="487" d="M246 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM30 208q0 80 67.5 142.5t156.5 62.5q40 0 80 -12t60 -24l19 -12l2 13q1 11 13 11q14 0 14 -9q0 -4 -2 -62t-2 -76q0 -8 -16 -8q-15 0 -15 7q0 1 1.5 33 t1.5 35q0 4 -11 15q-60 60 -138 60q-60 0 -101 -51.5t-41 -129.5q0 -76 44 -130t113 -54q93 0 138 45q2 12 3 25t1 28.5t1 25.5q1 9 12 9q16 0 16 -11q0 -45 -4 -101q-1 -6 -29 -19t-72 -24.5t-79 -11.5q-107 0 -170 56.5t-63 166.5z" />
+<glyph horiz-adv-x="487" d="M210 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM30 208q0 80 67.5 142.5t156.5 62.5q40 0 80 -12t60 -24l19 -12l2 13q1 11 13 11q14 0 14 -9q0 -4 -2 -62t-2 -76q0 -8 -16 -8q-15 0 -15 7q0 1 1.5 33t1.5 35 q0 4 -11 15q-60 60 -138 60q-60 0 -101 -51.5t-41 -129.5q0 -76 44 -130t113 -54q93 0 138 45q2 12 3 25t1 28.5t1 25.5q1 9 12 9q16 0 16 -11q0 -45 -4 -101q-1 -6 -29 -19t-72 -24.5t-79 -11.5q-107 0 -170 56.5t-63 166.5z" />
+<glyph horiz-adv-x="487" d="M30 208q0 80 67.5 142.5t156.5 62.5q40 0 80 -12t60 -24l19 -12l2 13q1 11 13 11q14 0 14 -9q0 -4 -2 -62t-2 -76q0 -8 -16 -8q-15 0 -15 7q0 1 1.5 33t1.5 35q0 4 -11 15q-60 60 -138 60q-60 0 -101 -51.5t-41 -129.5q0 -76 44 -130t113 -54q93 0 138 45q2 12 3 25 t1 28.5t1 25.5q1 9 12 9q16 0 16 -11q0 -45 -4 -101q-1 -6 -27 -18.5t-67.5 -24t-76.5 -12.5l-19 -50q-2 -9 0 -9l5 2l14.5 2.5t16.5 1.5q40 0 62.5 -21t22.5 -47q0 -35 -29.5 -63.5t-76.5 -28.5q-23 0 -43.5 6.5t-30 12.5t-9.5 9q0 11 8 11l9 -3q8 -4 22 -8t29 -4 q34 0 50 13.5t16 42.5q0 45 -55 45q-8 0 -16.5 -2.5t-14 -4.5t-6.5 -2q-8 0 -8 5q0 3 35 92q-103 2 -163.5 58.5t-60.5 164.5z" />
+<glyph horiz-adv-x="487" d="M151 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM30 208q0 80 67.5 142.5t156.5 62.5q40 0 80 -12t60 -24l19 -12l2 13q1 11 13 11q14 0 14 -9 q0 -4 -2 -62t-2 -76q0 -8 -16 -8q-15 0 -15 7q0 1 1.5 33t1.5 35q0 4 -11 15q-60 60 -138 60q-60 0 -101 -51.5t-41 -129.5q0 -76 44 -130t113 -54q93 0 138 45q2 12 3 25t1 28.5t1 25.5q1 9 12 9q16 0 16 -11q0 -45 -4 -101q-1 -6 -29 -19t-72 -24.5t-79 -11.5 q-107 0 -170 56.5t-63 166.5z" />
+<glyph horiz-adv-x="487" d="M151 597q0 2 5 2h12l8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM30 208q0 80 67.5 142.5t156.5 62.5q40 0 80 -12t60 -24l19 -12l2 13q1 11 13 11q14 0 14 -9 q0 -4 -2 -62t-2 -76q0 -8 -16 -8q-15 0 -15 7q0 1 1.5 33t1.5 35q0 4 -11 15q-60 60 -138 60q-60 0 -101 -51.5t-41 -129.5q0 -76 44 -130t113 -54q93 0 138 45q2 12 3 25t1 28.5t1 25.5q1 9 12 9q16 0 16 -11q0 -45 -4 -101q-1 -6 -29 -19t-72 -24.5t-79 -11.5 q-107 0 -170 56.5t-63 166.5z" />
+<glyph horiz-adv-x="487" d="M246 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM30 208q0 80 67.5 142.5t156.5 62.5q40 0 80 -12t60 -24l19 -12l2 13q1 11 13 11q14 0 14 -9q0 -4 -2 -62t-2 -76q0 -8 -16 -8q-15 0 -15 7q0 1 1.5 33 t1.5 35q0 4 -11 15q-60 60 -138 60q-60 0 -101 -51.5t-41 -129.5q0 -76 44 -130t113 -54q93 0 138 45q2 12 3 25t1 28.5t1 25.5q1 9 12 9q16 0 16 -11q0 -45 -4 -101q-1 -6 -29 -19t-72 -24.5t-79 -11.5q-107 0 -170 56.5t-63 166.5z" />
+<glyph horiz-adv-x="487" d="M210 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM30 208q0 80 67.5 142.5t156.5 62.5q40 0 80 -12t60 -24l19 -12l2 13q1 11 13 11q14 0 14 -9q0 -4 -2 -62t-2 -76q0 -8 -16 -8q-15 0 -15 7q0 1 1.5 33t1.5 35 q0 4 -11 15q-60 60 -138 60q-60 0 -101 -51.5t-41 -129.5q0 -76 44 -130t113 -54q93 0 138 45q2 12 3 25t1 28.5t1 25.5q1 9 12 9q16 0 16 -11q0 -45 -4 -101q-1 -6 -29 -19t-72 -24.5t-79 -11.5q-107 0 -170 56.5t-63 166.5z" />
+<glyph horiz-adv-x="487" d="M30 208q0 80 67.5 142.5t156.5 62.5q40 0 80 -12t60 -24l19 -12l2 13q1 11 13 11q14 0 14 -9q0 -4 -2 -62t-2 -76q0 -8 -16 -8q-15 0 -15 7q0 1 1.5 33t1.5 35q0 4 -11 15q-60 60 -138 60q-60 0 -101 -51.5t-41 -129.5q0 -76 44 -130t113 -54q93 0 138 45q2 12 3 25 t1 28.5t1 25.5q1 9 12 9q16 0 16 -11q0 -45 -4 -101q-1 -6 -27 -18.5t-67.5 -24t-76.5 -12.5l-19 -50q-2 -9 0 -9l5 2l14.5 2.5t16.5 1.5q40 0 62.5 -21t22.5 -47q0 -35 -29.5 -63.5t-76.5 -28.5q-23 0 -43.5 6.5t-30 12.5t-9.5 9q0 11 8 11l9 -3q8 -4 22 -8t29 -4 q34 0 50 13.5t16 42.5q0 45 -55 45q-8 0 -16.5 -2.5t-14 -4.5t-6.5 -2q-8 0 -8 5q0 3 35 92q-103 2 -163.5 58.5t-60.5 164.5z" />
+<glyph horiz-adv-x="502" d="M129 597q0 2 5 2h12l8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM25 8q0 17 8 17h59q7 0 7 316v35h-60q-8 0 -8 14q0 13 8 13h6q6 0 16 -0.5t22 -1t26 -0.5h27 q23 0 58 1.5t45 1.5q102 0 162.5 -54t60.5 -156q0 -95 -63 -145.5t-150 -50.5q-19 0 -59 1t-59 1q-17 0 -39.5 -0.5t-39 -1t-18.5 -0.5q-9 0 -9 10zM172 63q0 -35 3 -38q4 -2 35 -2q50 0 85.5 16t53.5 43.5t25.5 55.5t7.5 60q0 80 -43 131.5t-136 51.5q-17 0 -25 -1 q-6 0 -6 -70v-247z" />
+<glyph horiz-adv-x="502" d="M25 8q0 17 8 17h59q4 0 6 161q0 6 -4 6h-63q-2 0 -2.5 12t2.5 12h61q7 0 7 9v151h-60q-8 0 -8 14q0 13 8 13h6q6 0 16 -0.5t22 -1t26 -0.5h27q23 0 58 1.5t45 1.5q102 0 162.5 -54t60.5 -156q0 -95 -63 -145.5t-150 -50.5q-19 0 -59 1t-59 1q-17 0 -39.5 -0.5t-39 -1 t-18.5 -0.5q-9 0 -9 10zM172 63q0 -35 3 -38q4 -2 35 -2q50 0 85.5 16t53.5 43.5t25.5 55.5t7.5 60q0 80 -43 131.5t-136 51.5q-17 0 -25 -1q-6 0 -6 -70v-85q0 -7 1 -8t8 -1h101q3 0 3 -12t-3 -12h-101q-9 0 -9 -6v-123z" />
+<glyph horiz-adv-x="502" d="M129 597q0 2 5 2h12l8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM25 8q0 17 8 17h59q7 0 7 316v35h-60q-8 0 -8 14q0 13 8 13h6q6 0 16 -0.5t22 -1t26 -0.5h27 q23 0 58 1.5t45 1.5q102 0 162.5 -54t60.5 -156q0 -95 -63 -145.5t-150 -50.5q-19 0 -59 1t-59 1q-17 0 -39.5 -0.5t-39 -1t-18.5 -0.5q-9 0 -9 10zM172 63q0 -35 3 -38q4 -2 35 -2q50 0 85.5 16t53.5 43.5t25.5 55.5t7.5 60q0 80 -43 131.5t-136 51.5q-17 0 -25 -1 q-6 0 -6 -70v-247z" />
+<glyph horiz-adv-x="502" d="M25 8q0 17 8 17h59q4 0 6 161q0 6 -4 6h-63q-2 0 -2.5 12t2.5 12h61q7 0 7 9v151h-60q-8 0 -8 14q0 13 8 13h6q6 0 16 -0.5t22 -1t26 -0.5h27q23 0 58 1.5t45 1.5q102 0 162.5 -54t60.5 -156q0 -95 -63 -145.5t-150 -50.5q-19 0 -59 1t-59 1q-17 0 -39.5 -0.5t-39 -1 t-18.5 -0.5q-9 0 -9 10zM172 63q0 -35 3 -38q4 -2 35 -2q50 0 85.5 16t53.5 43.5t25.5 55.5t7.5 60q0 80 -43 131.5t-136 51.5q-17 0 -25 -1q-6 0 -6 -70v-85q0 -7 1 -8t8 -1h101q3 0 3 -12t-3 -12h-101q-9 0 -9 -6v-123z" />
+<glyph horiz-adv-x="458" d="M225 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13q0 14 5 14l17 -1q17 0 42.5 -0.5t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6 q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6 q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5t-100.5 1t-139 0.5q-27 0 -68 -1t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="458" d="M138 582q0 13 9.5 21.5t26.5 8.5q21 0 30 -25l49 -130q2 -4 2 -6t-4 -2h-16q-3 0 -8 6l-82 107q-7 10 -7 20zM25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13q0 14 5 14l17 -1q17 0 42.5 -0.5t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6 q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6 q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5t-100.5 1t-139 0.5q-27 0 -68 -1t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="458" d="M130 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12q-1 0 -8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13q0 14 5 14l17 -1 q17 0 42.5 -0.5t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5 q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5t-100.5 1t-139 0.5 q-27 0 -68 -1t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="458" d="M109 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM269 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13 q0 14 5 14l17 -1q17 0 42.5 -0.5t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5 t0.5 -28.5t0.5 -29.5q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5 t-100.5 1t-139 0.5q-27 0 -68 -1t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="458" d="M130 597q0 2 5 2h12q1 0 8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13q0 14 5 14l17 -1 q17 0 42.5 -0.5t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5 q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5t-100.5 1t-139 0.5 q-27 0 -68 -1t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="458" d="M137 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84zM25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13q0 14 5 14l17 -1q17 0 42.5 -0.5 t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5q0 -6 -14 -6 q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5t-100.5 1t-139 0.5q-27 0 -68 -1 t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="458" d="M189 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13q0 14 5 14l17 -1q17 0 42.5 -0.5t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7 q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6 q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5t-100.5 1t-139 0.5q-27 0 -68 -1t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="458" d="M138 518v23q0 6 1.5 7t7.5 1h187q6 0 7 -1t1 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13q0 14 5 14l17 -1q17 0 42.5 -0.5t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7 q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6 q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5t-100.5 1t-139 0.5q-27 0 -68 -1t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="458" d="M25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13q0 14 5 14l17 -1q17 0 42.5 -0.5t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34 q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57 q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7h-11.5t-28 0.5t-37.5 0.5q-87 -87 -87 -166q0 -33 20 -56.5t44 -23.5q23 0 43 11t31 22l11 11q1 0 6 -6t5 -7q0 -3 -15 -19t-47.5 -34t-68.5 -18q-32 0 -62.5 29.5t-30.5 63.5q0 14 3 28t6.5 24.5t13 24.5t14.5 22 t20.5 23.5t21 21.5t25 24.5l25.5 24.5q-19 0 -78 0.5t-99 0.5q-27 0 -68 -1t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="458" d="M225 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13q0 14 5 14l17 -1q17 0 42.5 -0.5t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6 q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6 q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5t-100.5 1t-139 0.5q-27 0 -68 -1t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="458" d="M138 582q0 13 9.5 21.5t26.5 8.5q21 0 30 -25l49 -130q2 -4 2 -6t-4 -2h-16q-3 0 -8 6l-82 107q-7 10 -7 20zM25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13q0 14 5 14l17 -1q17 0 42.5 -0.5t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6 q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6 q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5t-100.5 1t-139 0.5q-27 0 -68 -1t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="458" d="M130 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12q-1 0 -8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13q0 14 5 14l17 -1 q17 0 42.5 -0.5t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5 q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5t-100.5 1t-139 0.5 q-27 0 -68 -1t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="458" d="M109 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM269 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13 q0 14 5 14l17 -1q17 0 42.5 -0.5t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5 t0.5 -28.5t0.5 -29.5q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5 t-100.5 1t-139 0.5q-27 0 -68 -1t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="458" d="M130 597q0 2 5 2h12q1 0 8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13q0 14 5 14l17 -1 q17 0 42.5 -0.5t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5 q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5t-100.5 1t-139 0.5 q-27 0 -68 -1t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="458" d="M137 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84zM25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13q0 14 5 14l17 -1q17 0 42.5 -0.5 t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5q0 -6 -14 -6 q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5t-100.5 1t-139 0.5q-27 0 -68 -1 t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="458" d="M189 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13q0 14 5 14l17 -1q17 0 42.5 -0.5t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7 q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6 q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5t-100.5 1t-139 0.5q-27 0 -68 -1t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="458" d="M138 518v23q0 6 1.5 7t7.5 1h187q6 0 7 -1t1 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13q0 14 5 14l17 -1q17 0 42.5 -0.5t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7 q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6 q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5t-100.5 1t-139 0.5q-27 0 -68 -1t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="458" d="M25 10q0 15 11 15h62q5 0 5 36v253q0 62 -7 62h-57q-10 0 -10 13q0 14 5 14l17 -1q17 0 42.5 -0.5t46.5 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34 q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5h17q8 0 9.5 2t1.5 13v57 q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7h-11.5t-28 0.5t-37.5 0.5q-87 -87 -87 -166q0 -33 20 -56.5t44 -23.5q23 0 43 11t31 22l11 11q1 0 6 -6t5 -7q0 -3 -15 -19t-47.5 -34t-68.5 -18q-32 0 -62.5 29.5t-30.5 63.5q0 14 3 28t6.5 24.5t13 24.5t14.5 22 t20.5 23.5t21 21.5t25 24.5l25.5 24.5q-19 0 -78 0.5t-99 0.5q-27 0 -68 -1t-43 -1q-8 0 -8 12z" />
+<glyph horiz-adv-x="485" d="M138 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12q-1 0 -8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM25 200q0 96 65.5 155.5t158.5 59.5q39 0 76 -13.5t53 -26.5q10 -8 10 3l1 22q0 11 11 11 q18 0 18 -8q0 -1 -3 -57t-3 -79q0 -7 -15 -7q-14 0 -14 8q0 1 1 24.5t1 26.5q0 4 -15.5 20.5t-47 33.5t-64.5 17q-65 0 -106.5 -47t-41.5 -131q0 -83 44.5 -137.5t118.5 -54.5q36 0 60.5 8.5t26.5 18.5q2 18 2 28v29q0 24 -7 24h-55q-5 0 -5 15q0 12 5 12q7 0 36 -1t46 -1 q13 0 36.5 1t37.5 1q4 0 4 -10q0 -17 -4 -17h-19q-8 0 -8 -34q0 -7 -0.5 -21t-0.5 -25q0 -8 -27.5 -21.5t-71.5 -24.5t-82 -11q-93 0 -157.5 50.5t-64.5 158.5z" />
+<glyph horiz-adv-x="485" d="M145 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84zM25 200q0 96 65.5 155.5t158.5 59.5q39 0 76 -13.5t53 -26.5q10 -8 10 3l1 22q0 11 11 11 q18 0 18 -8q0 -1 -3 -57t-3 -79q0 -7 -15 -7q-14 0 -14 8q0 1 1 24.5t1 26.5q0 4 -15.5 20.5t-47 33.5t-64.5 17q-65 0 -106.5 -47t-41.5 -131q0 -83 44.5 -137.5t118.5 -54.5q36 0 60.5 8.5t26.5 18.5q2 18 2 28v29q0 24 -7 24h-55q-5 0 -5 15q0 12 5 12q7 0 36 -1t46 -1 q13 0 36.5 1t37.5 1q4 0 4 -10q0 -17 -4 -17h-19q-8 0 -8 -34q0 -7 -0.5 -21t-0.5 -25q0 -8 -27.5 -21.5t-71.5 -24.5t-82 -11q-93 0 -157.5 50.5t-64.5 158.5z" />
+<glyph horiz-adv-x="485" d="M197 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 200q0 96 65.5 155.5t158.5 59.5q39 0 76 -13.5t53 -26.5q10 -8 10 3l1 22q0 11 11 11q18 0 18 -8q0 -1 -3 -57t-3 -79q0 -7 -15 -7q-14 0 -14 8q0 1 1 24.5t1 26.5 q0 4 -15.5 20.5t-47 33.5t-64.5 17q-65 0 -106.5 -47t-41.5 -131q0 -83 44.5 -137.5t118.5 -54.5q36 0 60.5 8.5t26.5 18.5q2 18 2 28v29q0 24 -7 24h-55q-5 0 -5 15q0 12 5 12q7 0 36 -1t46 -1q13 0 36.5 1t37.5 1q4 0 4 -10q0 -17 -4 -17h-19q-8 0 -8 -34q0 -7 -0.5 -21 t-0.5 -25q0 -8 -27.5 -21.5t-71.5 -24.5t-82 -11q-93 0 -157.5 50.5t-64.5 158.5z" />
+<glyph horiz-adv-x="485" d="M215 -225l15 10q14 10 29 25.5t15 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM25 200q0 96 65.5 155.5t158.5 59.5q39 0 76 -13.5t53 -26.5q10 -8 10 3l1 22 q0 11 11 11q18 0 18 -8q0 -1 -3 -57t-3 -79q0 -7 -15 -7q-14 0 -14 8q0 1 1 24.5t1 26.5q0 4 -15.5 20.5t-47 33.5t-64.5 17q-65 0 -106.5 -47t-41.5 -131q0 -83 44.5 -137.5t118.5 -54.5q36 0 60.5 8.5t26.5 18.5q2 18 2 28v29q0 24 -7 24h-55q-5 0 -5 15q0 12 5 12 q7 0 36 -1t46 -1q13 0 36.5 1t37.5 1q4 0 4 -10q0 -17 -4 -17h-19q-8 0 -8 -34q0 -7 -0.5 -21t-0.5 -25q0 -8 -27.5 -21.5t-71.5 -24.5t-82 -11q-93 0 -157.5 50.5t-64.5 158.5z" />
+<glyph horiz-adv-x="485" d="M138 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12q-1 0 -8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM25 200q0 96 65.5 155.5t158.5 59.5q39 0 76 -13.5t53 -26.5q10 -8 10 3l1 22q0 11 11 11 q18 0 18 -8q0 -1 -3 -57t-3 -79q0 -7 -15 -7q-14 0 -14 8q0 1 1 24.5t1 26.5q0 4 -15.5 20.5t-47 33.5t-64.5 17q-65 0 -106.5 -47t-41.5 -131q0 -83 44.5 -137.5t118.5 -54.5q36 0 60.5 8.5t26.5 18.5q2 18 2 28v29q0 24 -7 24h-55q-5 0 -5 15q0 12 5 12q7 0 36 -1t46 -1 q13 0 36.5 1t37.5 1q4 0 4 -10q0 -17 -4 -17h-19q-8 0 -8 -34q0 -7 -0.5 -21t-0.5 -25q0 -8 -27.5 -21.5t-71.5 -24.5t-82 -11q-93 0 -157.5 50.5t-64.5 158.5z" />
+<glyph horiz-adv-x="485" d="M145 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84zM25 200q0 96 65.5 155.5t158.5 59.5q39 0 76 -13.5t53 -26.5q10 -8 10 3l1 22q0 11 11 11 q18 0 18 -8q0 -1 -3 -57t-3 -79q0 -7 -15 -7q-14 0 -14 8q0 1 1 24.5t1 26.5q0 4 -15.5 20.5t-47 33.5t-64.5 17q-65 0 -106.5 -47t-41.5 -131q0 -83 44.5 -137.5t118.5 -54.5q36 0 60.5 8.5t26.5 18.5q2 18 2 28v29q0 24 -7 24h-55q-5 0 -5 15q0 12 5 12q7 0 36 -1t46 -1 q13 0 36.5 1t37.5 1q4 0 4 -10q0 -17 -4 -17h-19q-8 0 -8 -34q0 -7 -0.5 -21t-0.5 -25q0 -8 -27.5 -21.5t-71.5 -24.5t-82 -11q-93 0 -157.5 50.5t-64.5 158.5z" />
+<glyph horiz-adv-x="485" d="M197 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 200q0 96 65.5 155.5t158.5 59.5q39 0 76 -13.5t53 -26.5q10 -8 10 3l1 22q0 11 11 11q18 0 18 -8q0 -1 -3 -57t-3 -79q0 -7 -15 -7q-14 0 -14 8q0 1 1 24.5t1 26.5 q0 4 -15.5 20.5t-47 33.5t-64.5 17q-65 0 -106.5 -47t-41.5 -131q0 -83 44.5 -137.5t118.5 -54.5q36 0 60.5 8.5t26.5 18.5q2 18 2 28v29q0 24 -7 24h-55q-5 0 -5 15q0 12 5 12q7 0 36 -1t46 -1q13 0 36.5 1t37.5 1q4 0 4 -10q0 -17 -4 -17h-19q-8 0 -8 -34q0 -7 -0.5 -21 t-0.5 -25q0 -8 -27.5 -21.5t-71.5 -24.5t-82 -11q-93 0 -157.5 50.5t-64.5 158.5z" />
+<glyph horiz-adv-x="485" d="M215 -225l15 10q14 10 29 25.5t15 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM25 200q0 96 65.5 155.5t158.5 59.5q39 0 76 -13.5t53 -26.5q10 -8 10 3l1 22 q0 11 11 11q18 0 18 -8q0 -1 -3 -57t-3 -79q0 -7 -15 -7q-14 0 -14 8q0 1 1 24.5t1 26.5q0 4 -15.5 20.5t-47 33.5t-64.5 17q-65 0 -106.5 -47t-41.5 -131q0 -83 44.5 -137.5t118.5 -54.5q36 0 60.5 8.5t26.5 18.5q2 18 2 28v29q0 24 -7 24h-55q-5 0 -5 15q0 12 5 12 q7 0 36 -1t46 -1q13 0 36.5 1t37.5 1q4 0 4 -10q0 -17 -4 -17h-19q-8 0 -8 -34q0 -7 -0.5 -21t-0.5 -25q0 -8 -27.5 -21.5t-71.5 -24.5t-82 -11q-93 0 -157.5 50.5t-64.5 158.5z" />
+<glyph horiz-adv-x="567" d="M175 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM25 13q0 12 9 12h60q4 0 4 144v62q0 145 -4 145h-55q-13 0 -13 15q0 7 2 9.5t10 2.5l34 -1 q34 -1 60 -1q19 0 62 1t46 1q9 0 9 -13q0 -14 -12 -14h-59q-4 0 -4 -74v-74q0 -7 1.5 -9t7.5 -2h208q7 0 8 1t1 8v68q0 82 -6 82h-57q-10 0 -10 16q0 11 10 11q3 0 16.5 -0.5t34.5 -1t43 -0.5q24 0 47 0.5t36.5 1t14.5 0.5q7 0 7 -13q0 -14 -10 -14h-49q-1 0 -1 -138 q0 -213 3 -213h57q6 0 6 -15q0 -12 -6 -12l-33 1q-33 1 -67 1q-33 0 -68 -1t-36 -1q-8 0 -8 13q0 14 9 14h63q4 0 4 88v73q0 7 -0.5 8t-4.5 1h-213h-4t-2.5 -1t-1.5 -3v-6q0 -160 7 -160h59q7 0 7 -12q0 -15 -7 -15l-35 1q-35 1 -69 1q-31 0 -66.5 -1t-36.5 -1q-8 0 -8 15z " />
+<glyph horiz-adv-x="567" d="M25 13q0 12 9 12h60q4 0 4 144v104q0 7 -10 7h-59q-2 0 -2.5 12t2.5 12h59q7 0 8 1t1 8q-2 63 -3 63h-55q-13 0 -13 15q0 7 2 9.5t10 2.5l34 -1q34 -1 60 -1q19 0 62 1t46 1q9 0 9 -13q0 -14 -12 -14h-59q-4 0 -4 -63q0 -9 6 -9h211q6 0 7.5 2t1.5 10q-2 60 -6 60h-57 q-10 0 -10 16q0 11 10 11q3 0 16.5 -0.5t34.5 -1t43 -0.5q24 0 47 0.5t36.5 1t14.5 0.5q7 0 7 -13q0 -14 -10 -14h-49q-1 0 -1 -60v-6t1 -3.5t3 -2t5 -0.5h48q3 0 3 -12t-3 -12h-48q-6 0 -7.5 -1.5t-1.5 -8.5v-32q0 -213 3 -213h57q6 0 6 -15q0 -12 -6 -12l-33 1 q-33 1 -67 1q-33 0 -68 -1t-36 -1q-8 0 -8 13q0 14 9 14h63q4 0 4 88v73q0 7 -0.5 8t-4.5 1h-213h-4t-2.5 -1t-1.5 -3v-6q0 -160 7 -160h59q7 0 7 -12q0 -15 -7 -15l-35 1q-35 1 -69 1q-31 0 -66.5 -1t-36.5 -1q-8 0 -8 15zM174 228q0 -7 1.5 -9t7.5 -2h208q7 0 8 1t1 8v44 q0 8 -1 9t-9 1h-210q-6 0 -6 -7v-45z" />
+<glyph horiz-adv-x="567" d="M175 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM25 13q0 12 9 12h60q4 0 4 144v62q0 145 -4 145h-55q-13 0 -13 15q0 7 2 9.5t10 2.5l34 -1 q34 -1 60 -1q19 0 62 1t46 1q9 0 9 -13q0 -14 -12 -14h-59q-4 0 -4 -74v-74q0 -7 1.5 -9t7.5 -2h208q7 0 8 1t1 8v68q0 82 -6 82h-57q-10 0 -10 16q0 11 10 11q3 0 16.5 -0.5t34.5 -1t43 -0.5q24 0 47 0.5t36.5 1t14.5 0.5q7 0 7 -13q0 -14 -10 -14h-49q-1 0 -1 -138 q0 -213 3 -213h57q6 0 6 -15q0 -12 -6 -12l-33 1q-33 1 -67 1q-33 0 -68 -1t-36 -1q-8 0 -8 13q0 14 9 14h63q4 0 4 88v73q0 7 -0.5 8t-4.5 1h-213h-4t-2.5 -1t-1.5 -3v-6q0 -160 7 -160h59q7 0 7 -12q0 -15 -7 -15l-35 1q-35 1 -69 1q-31 0 -66.5 -1t-36.5 -1q-8 0 -8 15z " />
+<glyph horiz-adv-x="567" d="M25 13q0 12 9 12h60q4 0 4 144v104q0 7 -10 7h-59q-2 0 -2.5 12t2.5 12h59q7 0 8 1t1 8q-2 63 -3 63h-55q-13 0 -13 15q0 7 2 9.5t10 2.5l34 -1q34 -1 60 -1q19 0 62 1t46 1q9 0 9 -13q0 -14 -12 -14h-59q-4 0 -4 -63q0 -9 6 -9h211q6 0 7.5 2t1.5 10q-2 60 -6 60h-57 q-10 0 -10 16q0 11 10 11q3 0 16.5 -0.5t34.5 -1t43 -0.5q24 0 47 0.5t36.5 1t14.5 0.5q7 0 7 -13q0 -14 -10 -14h-49q-1 0 -1 -60v-6t1 -3.5t3 -2t5 -0.5h48q3 0 3 -12t-3 -12h-48q-6 0 -7.5 -1.5t-1.5 -8.5v-32q0 -213 3 -213h57q6 0 6 -15q0 -12 -6 -12l-33 1 q-33 1 -67 1q-33 0 -68 -1t-36 -1q-8 0 -8 13q0 14 9 14h63q4 0 4 88v73q0 7 -0.5 8t-4.5 1h-213h-4t-2.5 -1t-1.5 -3v-6q0 -160 7 -160h59q7 0 7 -12q0 -15 -7 -15l-35 1q-35 1 -69 1q-31 0 -66.5 -1t-36.5 -1q-8 0 -8 15zM174 228q0 -7 1.5 -9t7.5 -2h208q7 0 8 1t1 8v44 q0 8 -1 9t-9 1h-210q-6 0 -6 -7v-45z" />
+<glyph horiz-adv-x="283" d="M122 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59 q-5 0 -5 -74v-189q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="283" d="M27 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1 q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74v-189q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="283" d="M6 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM166 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15 q0 12 13 12l34 -1q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74v-189q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="283" d="M35 582q0 13 9.5 21.5t26.5 8.5q21 0 30 -25l49 -130q2 -4 2 -6t-4 -2h-16q-4 0 -8 6l-82 107q-7 10 -7 20zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74 v-189q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="283" d="M32 498q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1 q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74v-189q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="283" d="M34 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1 q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74v-189q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="283" d="M35 518v23q0 6 1.5 7t7.5 1h187q5 0 6.5 -1t1.5 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74v-189 q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="283" d="M25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74v-189q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -35 1t-64 1q-49 -92 -49 -167q0 -38 15.5 -59.5 t45.5 -21.5q18 0 32 6t20.5 12.5t7.5 6.5t6 -6t5 -7q0 -3 -12 -14t-41 -24t-63 -13q-30 0 -52.5 26t-22.5 59q0 60 87 202q-32 0 -65 -1l-33 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="283" d="M122 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59 q-5 0 -5 -74v-189q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="283" d="M27 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1 q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74v-189q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="283" d="M6 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM166 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15 q0 12 13 12l34 -1q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74v-189q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="283" d="M35 582q0 13 9.5 21.5t26.5 8.5q21 0 30 -25l49 -130q2 -4 2 -6t-4 -2h-16q-4 0 -8 6l-82 107q-7 10 -7 20zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74 v-189q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="283" d="M32 498q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1 q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74v-189q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="283" d="M34 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1 q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74v-189q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="283" d="M35 518v23q0 6 1.5 7t7.5 1h187q5 0 6.5 -1t1.5 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74v-189 q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="283" d="M25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74v-189q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -35 1t-64 1q-49 -92 -49 -167q0 -38 15.5 -59.5 t45.5 -21.5q18 0 32 6t20.5 12.5t7.5 6.5t6 -6t5 -7q0 -3 -12 -14t-41 -24t-63 -13q-30 0 -52.5 26t-22.5 59q0 60 87 202q-32 0 -65 -1l-33 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="291" d="M35 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM-20 -153q0 21 22 41.5t30 20.5q10 0 29.5 -11.5t28.5 -11.5q18 0 24 16t6 51q0 44 -1.5 138 t-1.5 140v72q0 73 -2 73h-77q-13 0 -13 15q0 12 13 12l44 -1q45 -1 71 -1q30 0 66.5 1t37.5 1q9 0 9 -13q0 -14 -10 -14h-57q-5 0 -5 -74v-217q0 -44 -2.5 -71.5t-17.5 -66.5t-44 -70q-48 -52 -99 -52q-17 0 -34 6.5t-17 15.5z" />
+<glyph horiz-adv-x="291" d="M35 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM-20 -153q0 21 22 41.5t30 20.5q10 0 29.5 -11.5t28.5 -11.5q18 0 24 16t6 51q0 44 -1.5 138 t-1.5 140v72q0 73 -2 73h-77q-13 0 -13 15q0 12 13 12l44 -1q45 -1 71 -1q30 0 66.5 1t37.5 1q9 0 9 -13q0 -14 -10 -14h-57q-5 0 -5 -74v-217q0 -44 -2.5 -71.5t-17.5 -66.5t-44 -70q-48 -52 -99 -52q-17 0 -34 6.5t-17 15.5z" />
+<glyph horiz-adv-x="493" d="M208 -225l15 10q15 10 29.5 25.5t14.5 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15 q0 12 13 12l34 -1q35 -1 61 -1q24 0 59.5 1t37.5 1q9 0 9 -13q0 -14 -12 -14h-48q-6 0 -6 -75v-82q0 -13 9 -13h16q6 0 128 157q7 7 6.5 10t-12.5 3h-22q-13 0 -13 15q0 12 13 12q1 0 22.5 -1t42.5 -1q23 0 46 1t26 1q9 0 9 -13q0 -14 -12 -14h-39q-3 0 -50 -49.5l-80 -85.5 q-6 -6 0 -12l174 -194q10 -10 19 -10h16q7 0 7 -12q0 -15 -7 -15q-2 0 -30.5 1t-54.5 1q-27 0 -56.5 -1t-31.5 -1q-8 0 -8 15q0 12 9 12h37q10 0 10 1.5t-5 7.5l-129 148q-3 3 -12 3h-16q-7 0 -9.5 -1t-2.5 -7v-94q0 -58 7 -58h55q7 0 7 -12q0 -15 -7 -15q-1 0 -33 1t-65 1 q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="493" d="M208 -225l15 10q15 10 29.5 25.5t14.5 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15 q0 12 13 12l34 -1q35 -1 61 -1q24 0 59.5 1t37.5 1q9 0 9 -13q0 -14 -12 -14h-48q-6 0 -6 -75v-82q0 -13 9 -13h16q6 0 128 157q7 7 6.5 10t-12.5 3h-22q-13 0 -13 15q0 12 13 12q1 0 22.5 -1t42.5 -1q23 0 46 1t26 1q9 0 9 -13q0 -14 -12 -14h-39q-3 0 -50 -49.5l-80 -85.5 q-6 -6 0 -12l174 -194q10 -10 19 -10h16q7 0 7 -12q0 -15 -7 -15q-2 0 -30.5 1t-54.5 1q-27 0 -56.5 -1t-31.5 -1q-8 0 -8 15q0 12 9 12h37q10 0 10 1.5t-5 7.5l-129 148q-3 3 -12 3h-16q-7 0 -9.5 -1t-2.5 -7v-94q0 -58 7 -58h55q7 0 7 -12q0 -15 -7 -15q-1 0 -33 1t-65 1 q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="445" d="M189 -225l15 10q14 10 29 25.5t15 29.5q0 17 -13 30t-26.5 21.5t-13.5 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM25 13q0 12 9 12h60q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12 l36 -1q36 -1 62 -1q30 0 73.5 1t44.5 1q9 0 9 -14q0 -13 -11 -13h-70q-6 0 -6 -74v-189q0 -83 8 -83q98 0 186 8q12 1 16.5 5t5.5 18l7 57q1 9 15 7t14 -9q0 -3 -1.5 -16.5l-4.5 -39.5l-6 -52q-1 -11 -19 -11q-11 0 -126 1.5t-131 1.5q-36 0 -72 -1l-37 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="445" d="M123 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM25 13q0 12 9 12h60q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l36 -1q36 -1 62 -1q30 0 73.5 1t44.5 1q9 0 9 -14q0 -13 -11 -13h-70 q-6 0 -6 -74v-189q0 -83 8 -83q98 0 186 8q12 1 16.5 5t5.5 18l7 57q1 9 15 7t14 -9q0 -3 -1.5 -16.5l-4.5 -39.5l-6 -52q-1 -11 -19 -11q-11 0 -126 1.5t-131 1.5q-36 0 -72 -1l-37 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="445" d="M310 331q0 2 2.5 27t5.5 60.5t5 54.5q3 33 35 33t32 -29q0 -5 -3 -13l-51 -124q-6 -12 -8 -12h-15q-3 0 -3 3zM25 13q0 12 9 12h60q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l36 -1q36 -1 62 -1q30 0 73.5 1t44.5 1q9 0 9 -14q0 -13 -11 -13h-70 q-6 0 -6 -74v-189q0 -83 8 -83q98 0 186 8q12 1 16.5 5t5.5 18l7 57q1 9 15 7t14 -9q0 -3 -1.5 -16.5l-4.5 -39.5l-6 -52q-1 -11 -19 -11q-11 0 -126 1.5t-131 1.5q-36 0 -72 -1l-37 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="445" d="M25 13q0 12 9 12h60q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l36 -1q36 -1 62 -1q30 0 73.5 1t44.5 1q9 0 9 -14q0 -13 -11 -13h-70q-6 0 -6 -74v-189q0 -83 8 -83q98 0 186 8q12 1 16.5 5t5.5 18l7 57q1 9 15 7t14 -9q0 -3 -1.5 -16.5l-4.5 -39.5l-6 -52 q-1 -11 -19 -11q-11 0 -126 1.5t-131 1.5q-36 0 -72 -1l-37 -1q-8 0 -8 15zM319 229q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5z" />
+<glyph horiz-adv-x="445" d="M25 13q0 12 9 12h60q5 0 5 84v16q0 7 -1.5 7.5t-7.5 -1.5l-60 -22q-1 0 -2.5 6t-1 12.5t2.5 6.5l61 22q8 9 9 13v62q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l36 -1q36 -1 62 -1q30 0 73.5 1t44.5 1q9 0 9 -14q0 -13 -11 -13h-70q-6 0 -6 -74v-102q0 -6 0.5 -8t2.5 -2 t7 2l179 65q1 1 2 -3q4 -16 -1 -22l-180 -66q-9 -9 -10 -13v-40q0 -83 8 -83q98 0 186 8q12 1 16.5 5t5.5 18l7 57q1 9 15 7t14 -9q0 -3 -1.5 -16.5l-4.5 -39.5l-6 -52q-1 -11 -19 -11q-11 0 -126 1.5t-131 1.5q-36 0 -72 -1l-37 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="445" d="M189 -225l15 10q14 10 29 25.5t15 29.5q0 17 -13 30t-26.5 21.5t-13.5 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM25 13q0 12 9 12h60q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12 l36 -1q36 -1 62 -1q30 0 73.5 1t44.5 1q9 0 9 -14q0 -13 -11 -13h-70q-6 0 -6 -74v-189q0 -83 8 -83q98 0 186 8q12 1 16.5 5t5.5 18l7 57q1 9 15 7t14 -9q0 -3 -1.5 -16.5l-4.5 -39.5l-6 -52q-1 -11 -19 -11q-11 0 -126 1.5t-131 1.5q-36 0 -72 -1l-37 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="445" d="M123 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM25 13q0 12 9 12h60q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l36 -1q36 -1 62 -1q30 0 73.5 1t44.5 1q9 0 9 -14q0 -13 -11 -13h-70 q-6 0 -6 -74v-189q0 -83 8 -83q98 0 186 8q12 1 16.5 5t5.5 18l7 57q1 9 15 7t14 -9q0 -3 -1.5 -16.5l-4.5 -39.5l-6 -52q-1 -11 -19 -11q-11 0 -126 1.5t-131 1.5q-36 0 -72 -1l-37 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="445" d="M310 331q0 2 2.5 27t5.5 60.5t5 54.5q3 33 35 33t32 -29q0 -5 -3 -13l-51 -124q-6 -12 -8 -12h-15q-3 0 -3 3zM25 13q0 12 9 12h60q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l36 -1q36 -1 62 -1q30 0 73.5 1t44.5 1q9 0 9 -14q0 -13 -11 -13h-70 q-6 0 -6 -74v-189q0 -83 8 -83q98 0 186 8q12 1 16.5 5t5.5 18l7 57q1 9 15 7t14 -9q0 -3 -1.5 -16.5l-4.5 -39.5l-6 -52q-1 -11 -19 -11q-11 0 -126 1.5t-131 1.5q-36 0 -72 -1l-37 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="445" d="M25 13q0 12 9 12h60q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l36 -1q36 -1 62 -1q30 0 73.5 1t44.5 1q9 0 9 -14q0 -13 -11 -13h-70q-6 0 -6 -74v-189q0 -83 8 -83q98 0 186 8q12 1 16.5 5t5.5 18l7 57q1 9 15 7t14 -9q0 -3 -1.5 -16.5l-4.5 -39.5l-6 -52 q-1 -11 -19 -11q-11 0 -126 1.5t-131 1.5q-36 0 -72 -1l-37 -1q-8 0 -8 15zM319 229q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5z" />
+<glyph horiz-adv-x="445" d="M25 13q0 12 9 12h60q5 0 5 84v16q0 7 -1.5 7.5t-7.5 -1.5l-60 -22q-1 0 -2.5 6t-1 12.5t2.5 6.5l61 22q8 9 9 13v62q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l36 -1q36 -1 62 -1q30 0 73.5 1t44.5 1q9 0 9 -14q0 -13 -11 -13h-70q-6 0 -6 -74v-102q0 -6 0.5 -8t2.5 -2 t7 2l179 65q1 1 2 -3q4 -16 -1 -22l-180 -66q-9 -9 -10 -13v-40q0 -83 8 -83q98 0 186 8q12 1 16.5 5t5.5 18l7 57q1 9 15 7t14 -9q0 -3 -1.5 -16.5l-4.5 -39.5l-6 -52q-1 -11 -19 -11q-11 0 -126 1.5t-131 1.5q-36 0 -72 -1l-37 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="569" d="M179 498q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM25 13q0 12 9 12h59l16 351h-70q-13 0 -13 15q0 12 13 12l35 -1q34 -1 60 -1h51 q5 0 10 -6l240 -271q7 -9 10 -9q2 0 2 10q0 251 -9 251h-74q-7 0 -7 12q0 15 7 15q1 0 35 -1t64 -1q21 0 45.5 1t27.5 1q8 0 8 -15q0 -12 -9 -12h-47q-6 0 -10 -120.5t-4 -181.5l2 -77q0 -10 -7 -10q-8 0 -17 9l-305 337q-3 3 -6 6.5t-4.5 5t-2.5 1.5q-2 0 -2 -14v-69 q0 -238 9 -238h76q7 0 7 -12q0 -15 -7 -15q-1 0 -33 1t-66 1q-26 0 -44.5 -0.5t-27.5 -1t-13 -0.5q-8 0 -8 15z" />
+<glyph horiz-adv-x="569" d="M269 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM25 13q0 12 9 12h59l16 351h-70q-13 0 -13 15q0 12 13 12l35 -1q34 -1 60 -1h51q5 0 10 -6l240 -271q7 -9 10 -9q2 0 2 10q0 251 -9 251h-74q-7 0 -7 12 q0 15 7 15q1 0 35 -1t64 -1q21 0 45.5 1t27.5 1q8 0 8 -15q0 -12 -9 -12h-47q-6 0 -10 -120.5t-4 -181.5l2 -77q0 -10 -7 -10q-8 0 -17 9l-305 337q-3 3 -6 6.5t-4.5 5t-2.5 1.5q-2 0 -2 -14v-69q0 -238 9 -238h76q7 0 7 -12q0 -15 -7 -15q-1 0 -33 1t-66 1 q-26 0 -44.5 -0.5t-27.5 -1t-13 -0.5q-8 0 -8 15z" />
+<glyph horiz-adv-x="569" d="M174 597q0 2 5 2h12q1 0 8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM25 13q0 12 9 12h59l16 351h-70q-13 0 -13 15q0 12 13 12l35 -1q34 -1 60 -1h51q5 0 10 -6 l240 -271q7 -9 10 -9q2 0 2 10q0 251 -9 251h-74q-7 0 -7 12q0 15 7 15q1 0 35 -1t64 -1q21 0 45.5 1t27.5 1q8 0 8 -15q0 -12 -9 -12h-47q-6 0 -10 -120.5t-4 -181.5l2 -77q0 -10 -7 -10q-8 0 -17 9l-305 337q-3 3 -6 6.5t-4.5 5t-2.5 1.5q-2 0 -2 -14v-69q0 -238 9 -238 h76q7 0 7 -12q0 -15 -7 -15q-1 0 -33 1t-66 1q-26 0 -44.5 -0.5t-27.5 -1t-13 -0.5q-8 0 -8 15z" />
+<glyph horiz-adv-x="569" d="M250 -225l15 10q15 10 29.5 25.5t14.5 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM25 13q0 12 9 12h59l16 351h-70q-13 0 -13 15q0 12 13 12l35 -1 q34 -1 60 -1h51q5 0 10 -6l240 -271q7 -9 10 -9q2 0 2 10q0 251 -9 251h-74q-7 0 -7 12q0 15 7 15q1 0 35 -1t64 -1q21 0 45.5 1t27.5 1q8 0 8 -15q0 -12 -9 -12h-47q-6 0 -10 -120.5t-4 -181.5l2 -77q0 -10 -7 -10q-8 0 -17 9l-305 337q-3 3 -6 6.5t-4.5 5t-2.5 1.5 q-2 0 -2 -14v-69q0 -238 9 -238h76q7 0 7 -12q0 -15 -7 -15q-1 0 -33 1t-66 1q-26 0 -44.5 -0.5t-27.5 -1t-13 -0.5q-8 0 -8 15z" />
+<glyph horiz-adv-x="569" d="M179 498q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM25 13q0 12 9 12h59l16 351h-70q-13 0 -13 15q0 12 13 12l35 -1q34 -1 60 -1h51 q5 0 10 -6l240 -271q7 -9 10 -9q2 0 2 10q0 251 -9 251h-74q-7 0 -7 12q0 15 7 15q1 0 35 -1t64 -1q21 0 45.5 1t27.5 1q8 0 8 -15q0 -12 -9 -12h-47q-6 0 -10 -120.5t-4 -181.5l2 -77q0 -10 -7 -10q-8 0 -17 9l-305 337q-3 3 -6 6.5t-4.5 5t-2.5 1.5q-2 0 -2 -14v-69 q0 -238 9 -238h76q7 0 7 -12q0 -15 -7 -15q-1 0 -33 1t-66 1q-26 0 -44.5 -0.5t-27.5 -1t-13 -0.5q-8 0 -8 15z" />
+<glyph horiz-adv-x="569" d="M269 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM25 13q0 12 9 12h59l16 351h-70q-13 0 -13 15q0 12 13 12l35 -1q34 -1 60 -1h51q5 0 10 -6l240 -271q7 -9 10 -9q2 0 2 10q0 251 -9 251h-74q-7 0 -7 12 q0 15 7 15q1 0 35 -1t64 -1q21 0 45.5 1t27.5 1q8 0 8 -15q0 -12 -9 -12h-47q-6 0 -10 -120.5t-4 -181.5l2 -77q0 -10 -7 -10q-8 0 -17 9l-305 337q-3 3 -6 6.5t-4.5 5t-2.5 1.5q-2 0 -2 -14v-69q0 -238 9 -238h76q7 0 7 -12q0 -15 -7 -15q-1 0 -33 1t-66 1 q-26 0 -44.5 -0.5t-27.5 -1t-13 -0.5q-8 0 -8 15z" />
+<glyph horiz-adv-x="569" d="M174 597q0 2 5 2h12q1 0 8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM25 13q0 12 9 12h59l16 351h-70q-13 0 -13 15q0 12 13 12l35 -1q34 -1 60 -1h51q5 0 10 -6 l240 -271q7 -9 10 -9q2 0 2 10q0 251 -9 251h-74q-7 0 -7 12q0 15 7 15q1 0 35 -1t64 -1q21 0 45.5 1t27.5 1q8 0 8 -15q0 -12 -9 -12h-47q-6 0 -10 -120.5t-4 -181.5l2 -77q0 -10 -7 -10q-8 0 -17 9l-305 337q-3 3 -6 6.5t-4.5 5t-2.5 1.5q-2 0 -2 -14v-69q0 -238 9 -238 h76q7 0 7 -12q0 -15 -7 -15q-1 0 -33 1t-66 1q-26 0 -44.5 -0.5t-27.5 -1t-13 -0.5q-8 0 -8 15z" />
+<glyph horiz-adv-x="569" d="M250 -225l15 10q15 10 29.5 25.5t14.5 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM25 13q0 12 9 12h59l16 351h-70q-13 0 -13 15q0 12 13 12l35 -1 q34 -1 60 -1h51q5 0 10 -6l240 -271q7 -9 10 -9q2 0 2 10q0 251 -9 251h-74q-7 0 -7 12q0 15 7 15q1 0 35 -1t64 -1q21 0 45.5 1t27.5 1q8 0 8 -15q0 -12 -9 -12h-47q-6 0 -10 -120.5t-4 -181.5l2 -77q0 -10 -7 -10q-8 0 -17 9l-305 337q-3 3 -6 6.5t-4.5 5t-2.5 1.5 q-2 0 -2 -14v-69q0 -238 9 -238h76q7 0 7 -12q0 -15 -7 -15q-1 0 -33 1t-66 1q-26 0 -44.5 -0.5t-27.5 -1t-13 -0.5q-8 0 -8 15z" />
+<glyph d="M139 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM30 190q0 94 60.5 159t175.5 65q91 0 147.5 -64.5t56.5 -148.5q0 -91 -54 -151.5t-175 -60.5 q-99 0 -155 58t-56 143zM113 210q0 -88 35.5 -143t95.5 -55q73 0 108.5 55t35.5 129q0 78 -39.5 137t-100.5 59q-56 0 -95.5 -54.5t-39.5 -127.5z" />
+<glyph d="M118 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM278 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM30 190q0 94 60.5 159t175.5 65q91 0 147.5 -64.5t56.5 -148.5 q0 -91 -54 -151.5t-175 -60.5q-99 0 -155 58t-56 143zM113 210q0 -88 35.5 -143t95.5 -55q73 0 108.5 55t35.5 129q0 78 -39.5 137t-100.5 59q-56 0 -95.5 -54.5t-39.5 -127.5z" />
+<glyph d="M147 582q0 13 9.5 21.5t26.5 8.5q21 0 30 -25l49 -130q2 -4 2 -6t-4 -2h-16q-4 0 -8 6l-82 107q-7 10 -7 20zM30 190q0 94 60.5 159t175.5 65q91 0 147.5 -64.5t56.5 -148.5q0 -91 -54 -151.5t-175 -60.5q-99 0 -155 58t-56 143zM113 210q0 -88 35.5 -143t95.5 -55 q73 0 108.5 55t35.5 129q0 78 -39.5 137t-100.5 59q-56 0 -95.5 -54.5t-39.5 -127.5z" />
+<glyph d="M234 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM30 190q0 94 60.5 159t175.5 65q91 0 147.5 -64.5t56.5 -148.5q0 -91 -54 -151.5t-175 -60.5q-99 0 -155 58t-56 143zM113 210q0 -88 35.5 -143t95.5 -55 q73 0 108.5 55t35.5 129q0 78 -39.5 137t-100.5 59q-56 0 -95.5 -54.5t-39.5 -127.5z" />
+<glyph d="M144 498q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM30 190q0 94 60.5 159t175.5 65q91 0 147.5 -64.5t56.5 -148.5q0 -91 -54 -151.5 t-175 -60.5q-99 0 -155 58t-56 143zM113 210q0 -88 35.5 -143t95.5 -55q73 0 108.5 55t35.5 129q0 78 -39.5 137t-100.5 59q-56 0 -95.5 -54.5t-39.5 -127.5z" />
+<glyph d="M146 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84zM30 190q0 94 60.5 159t175.5 65q91 0 147.5 -64.5t56.5 -148.5q0 -91 -54 -151.5t-175 -60.5 q-99 0 -155 58t-56 143zM113 210q0 -88 35.5 -143t95.5 -55q73 0 108.5 55t35.5 129q0 78 -39.5 137t-100.5 59q-56 0 -95.5 -54.5t-39.5 -127.5z" />
+<glyph d="M147 518v23q0 6 1.5 7t7.5 1h187q5 0 6.5 -1t1.5 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM30 190q0 94 60.5 159t175.5 65q91 0 147.5 -64.5t56.5 -148.5q0 -91 -54 -151.5t-175 -60.5q-99 0 -155 58t-56 143zM113 210q0 -88 35.5 -143t95.5 -55q73 0 108.5 55 t35.5 129q0 78 -39.5 137t-100.5 59q-56 0 -95.5 -54.5t-39.5 -127.5z" />
+<glyph d="M169 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM279 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM30 190q0 94 60.5 159t175.5 65 q91 0 147.5 -64.5t56.5 -148.5q0 -91 -54 -151.5t-175 -60.5q-99 0 -155 58t-56 143zM113 210q0 -88 35.5 -143t95.5 -55q73 0 108.5 55t35.5 129q0 78 -39.5 137t-100.5 59q-56 0 -95.5 -54.5t-39.5 -127.5z" />
+<glyph d="M30 190q0 94 60.5 159t175.5 65q36 0 72 -13h1q8 -1 11 3l1 2l45 78h1q2 0 7.5 -2.5t9.5 -5.5t3 -4l-45 -78q-3 -7 1 -10q46 -29 71.5 -78.5t25.5 -104.5q0 -91 -54 -151.5t-175 -60.5q-49 0 -88 15q-5 2 -8 -3l-48 -83h-1q-2 0 -7.5 2.5t-9.5 5.5t-3 4l47 81q3 5 -2 8 q-44 26 -67.5 71.5t-23.5 99.5zM113 210q0 -89 36 -144q1 -2 2 -2q2 0 4 4l166 286l2 4l1 2q0 1 -4 5q-32 27 -72 27q-56 0 -95.5 -54.5t-39.5 -127.5zM172 39q32 -27 72 -27q73 0 108.5 55t35.5 129q0 80 -42 140q-2 4 -3 4.5t-2 0t-3 -4.5l-166 -288q-3 -7 0 -9z" />
+<glyph d="M139 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM30 190q0 94 60.5 159t175.5 65q91 0 147.5 -64.5t56.5 -148.5q0 -91 -54 -151.5t-175 -60.5 q-99 0 -155 58t-56 143zM113 210q0 -88 35.5 -143t95.5 -55q73 0 108.5 55t35.5 129q0 78 -39.5 137t-100.5 59q-56 0 -95.5 -54.5t-39.5 -127.5z" />
+<glyph d="M118 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM278 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM30 190q0 94 60.5 159t175.5 65q91 0 147.5 -64.5t56.5 -148.5 q0 -91 -54 -151.5t-175 -60.5q-99 0 -155 58t-56 143zM113 210q0 -88 35.5 -143t95.5 -55q73 0 108.5 55t35.5 129q0 78 -39.5 137t-100.5 59q-56 0 -95.5 -54.5t-39.5 -127.5z" />
+<glyph d="M147 582q0 13 9.5 21.5t26.5 8.5q21 0 30 -25l49 -130q2 -4 2 -6t-4 -2h-16q-4 0 -8 6l-82 107q-7 10 -7 20zM30 190q0 94 60.5 159t175.5 65q91 0 147.5 -64.5t56.5 -148.5q0 -91 -54 -151.5t-175 -60.5q-99 0 -155 58t-56 143zM113 210q0 -88 35.5 -143t95.5 -55 q73 0 108.5 55t35.5 129q0 78 -39.5 137t-100.5 59q-56 0 -95.5 -54.5t-39.5 -127.5z" />
+<glyph d="M234 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM30 190q0 94 60.5 159t175.5 65q91 0 147.5 -64.5t56.5 -148.5q0 -91 -54 -151.5t-175 -60.5q-99 0 -155 58t-56 143zM113 210q0 -88 35.5 -143t95.5 -55 q73 0 108.5 55t35.5 129q0 78 -39.5 137t-100.5 59q-56 0 -95.5 -54.5t-39.5 -127.5z" />
+<glyph d="M144 498q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM30 190q0 94 60.5 159t175.5 65q91 0 147.5 -64.5t56.5 -148.5q0 -91 -54 -151.5 t-175 -60.5q-99 0 -155 58t-56 143zM113 210q0 -88 35.5 -143t95.5 -55q73 0 108.5 55t35.5 129q0 78 -39.5 137t-100.5 59q-56 0 -95.5 -54.5t-39.5 -127.5z" />
+<glyph d="M146 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84zM30 190q0 94 60.5 159t175.5 65q91 0 147.5 -64.5t56.5 -148.5q0 -91 -54 -151.5t-175 -60.5 q-99 0 -155 58t-56 143zM113 210q0 -88 35.5 -143t95.5 -55q73 0 108.5 55t35.5 129q0 78 -39.5 137t-100.5 59q-56 0 -95.5 -54.5t-39.5 -127.5z" />
+<glyph d="M147 518v23q0 6 1.5 7t7.5 1h187q5 0 6.5 -1t1.5 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM30 190q0 94 60.5 159t175.5 65q91 0 147.5 -64.5t56.5 -148.5q0 -91 -54 -151.5t-175 -60.5q-99 0 -155 58t-56 143zM113 210q0 -88 35.5 -143t95.5 -55q73 0 108.5 55 t35.5 129q0 78 -39.5 137t-100.5 59q-56 0 -95.5 -54.5t-39.5 -127.5z" />
+<glyph d="M169 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM279 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM30 190q0 94 60.5 159t175.5 65 q91 0 147.5 -64.5t56.5 -148.5q0 -91 -54 -151.5t-175 -60.5q-99 0 -155 58t-56 143zM113 210q0 -88 35.5 -143t95.5 -55q73 0 108.5 55t35.5 129q0 78 -39.5 137t-100.5 59q-56 0 -95.5 -54.5t-39.5 -127.5z" />
+<glyph d="M30 190q0 94 60.5 159t175.5 65q36 0 72 -13h1q8 -1 11 3l1 2l45 78h1q2 0 7.5 -2.5t9.5 -5.5t3 -4l-45 -78q-3 -7 1 -10q46 -29 71.5 -78.5t25.5 -104.5q0 -91 -54 -151.5t-175 -60.5q-49 0 -88 15q-5 2 -8 -3l-48 -83h-1q-2 0 -7.5 2.5t-9.5 5.5t-3 4l47 81q3 5 -2 8 q-44 26 -67.5 71.5t-23.5 99.5zM113 210q0 -89 36 -144q1 -2 2 -2q2 0 4 4l166 286l2 4l1 2q0 1 -4 5q-32 27 -72 27q-56 0 -95.5 -54.5t-39.5 -127.5zM172 39q32 -27 72 -27q73 0 108.5 55t35.5 129q0 80 -42 140q-2 4 -3 4.5t-2 0t-3 -4.5l-166 -288q-3 -7 0 -9z" />
+<glyph horiz-adv-x="478" d="M104 597q0 2 5 2h12q1 0 8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM20 388q0 14 10 14q2 0 40 -0.5t55 -0.5q18 0 59.5 1t51.5 1q156 0 156 -98 q0 -23 -11 -42.5t-26.5 -30.5t-31 -18.5t-26.5 -11t-11 -4.5l13 -3q13 -3 31 -11.5t36.5 -22t31.5 -40t14 -61.5q0 -16 2 -24t3.5 -9.5t5.5 -1.5h31q7 0 7 -16q0 -11 -10 -11l-110 2q-5 0 -5 5v37q0 35 -3 55.5t-13.5 44t-35 34t-64.5 10.5h-48q-7 0 -7 -7v-50 q0 -104 8 -104h61q7 0 7 -12q0 -15 -7 -15l-36 1q-36 1 -70 1q-19 0 -41.5 -0.5t-37.5 -1t-16 -0.5q-9 0 -9 12q0 15 9 15h53q6 0 6 54v158q0 139 -8 139h-53q-11 0 -11 12zM165 208q0 -6 10 -6h68q37 0 56 25.5t19 62.5q0 40 -32.5 66t-73.5 26q-35 0 -44 -2q-3 -2 -3 -66 v-106z" />
+<glyph horiz-adv-x="478" d="M199 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM20 388q0 14 10 14q2 0 40 -0.5t55 -0.5q18 0 59.5 1t51.5 1q156 0 156 -98q0 -23 -11 -42.5t-26.5 -30.5t-31 -18.5t-26.5 -11t-11 -4.5l13 -3 q13 -3 31 -11.5t36.5 -22t31.5 -40t14 -61.5q0 -16 2 -24t3.5 -9.5t5.5 -1.5h31q7 0 7 -16q0 -11 -10 -11l-110 2q-5 0 -5 5v37q0 35 -3 55.5t-13.5 44t-35 34t-64.5 10.5h-48q-7 0 -7 -7v-50q0 -104 8 -104h61q7 0 7 -12q0 -15 -7 -15l-36 1q-36 1 -70 1q-19 0 -41.5 -0.5 t-37.5 -1t-16 -0.5q-9 0 -9 12q0 15 9 15h53q6 0 6 54v158q0 139 -8 139h-53q-11 0 -11 12zM165 208q0 -6 10 -6h68q37 0 56 25.5t19 62.5q0 40 -32.5 66t-73.5 26q-35 0 -44 -2q-3 -2 -3 -66v-106z" />
+<glyph horiz-adv-x="478" d="M194 -225l15 10q15 10 29.5 25.5t14.5 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM20 388q0 14 10 14q2 0 40 -0.5t55 -0.5q18 0 59.5 1t51.5 1 q156 0 156 -98q0 -23 -11 -42.5t-26.5 -30.5t-31 -18.5t-26.5 -11t-11 -4.5l13 -3q13 -3 31 -11.5t36.5 -22t31.5 -40t14 -61.5q0 -16 2 -24t3.5 -9.5t5.5 -1.5h31q7 0 7 -16q0 -11 -10 -11l-110 2q-5 0 -5 5v37q0 35 -3 55.5t-13.5 44t-35 34t-64.5 10.5h-48q-7 0 -7 -7 v-50q0 -104 8 -104h61q7 0 7 -12q0 -15 -7 -15l-36 1q-36 1 -70 1q-19 0 -41.5 -0.5t-37.5 -1t-16 -0.5q-9 0 -9 12q0 15 9 15h53q6 0 6 54v158q0 139 -8 139h-53q-11 0 -11 12zM165 208q0 -6 10 -6h68q37 0 56 25.5t19 62.5q0 40 -32.5 66t-73.5 26q-35 0 -44 -2 q-3 -2 -3 -66v-106z" />
+<glyph horiz-adv-x="478" d="M104 597q0 2 5 2h12q1 0 8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM20 388q0 14 10 14q2 0 40 -0.5t55 -0.5q18 0 59.5 1t51.5 1q156 0 156 -98 q0 -23 -11 -42.5t-26.5 -30.5t-31 -18.5t-26.5 -11t-11 -4.5l13 -3q13 -3 31 -11.5t36.5 -22t31.5 -40t14 -61.5q0 -16 2 -24t3.5 -9.5t5.5 -1.5h31q7 0 7 -16q0 -11 -10 -11l-110 2q-5 0 -5 5v37q0 35 -3 55.5t-13.5 44t-35 34t-64.5 10.5h-48q-7 0 -7 -7v-50 q0 -104 8 -104h61q7 0 7 -12q0 -15 -7 -15l-36 1q-36 1 -70 1q-19 0 -41.5 -0.5t-37.5 -1t-16 -0.5q-9 0 -9 12q0 15 9 15h53q6 0 6 54v158q0 139 -8 139h-53q-11 0 -11 12zM165 208q0 -6 10 -6h68q37 0 56 25.5t19 62.5q0 40 -32.5 66t-73.5 26q-35 0 -44 -2q-3 -2 -3 -66 v-106z" />
+<glyph horiz-adv-x="478" d="M199 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM20 388q0 14 10 14q2 0 40 -0.5t55 -0.5q18 0 59.5 1t51.5 1q156 0 156 -98q0 -23 -11 -42.5t-26.5 -30.5t-31 -18.5t-26.5 -11t-11 -4.5l13 -3 q13 -3 31 -11.5t36.5 -22t31.5 -40t14 -61.5q0 -16 2 -24t3.5 -9.5t5.5 -1.5h31q7 0 7 -16q0 -11 -10 -11l-110 2q-5 0 -5 5v37q0 35 -3 55.5t-13.5 44t-35 34t-64.5 10.5h-48q-7 0 -7 -7v-50q0 -104 8 -104h61q7 0 7 -12q0 -15 -7 -15l-36 1q-36 1 -70 1q-19 0 -41.5 -0.5 t-37.5 -1t-16 -0.5q-9 0 -9 12q0 15 9 15h53q6 0 6 54v158q0 139 -8 139h-53q-11 0 -11 12zM165 208q0 -6 10 -6h68q37 0 56 25.5t19 62.5q0 40 -32.5 66t-73.5 26q-35 0 -44 -2q-3 -2 -3 -66v-106z" />
+<glyph horiz-adv-x="478" d="M194 -225l15 10q15 10 29.5 25.5t14.5 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM20 388q0 14 10 14q2 0 40 -0.5t55 -0.5q18 0 59.5 1t51.5 1 q156 0 156 -98q0 -23 -11 -42.5t-26.5 -30.5t-31 -18.5t-26.5 -11t-11 -4.5l13 -3q13 -3 31 -11.5t36.5 -22t31.5 -40t14 -61.5q0 -16 2 -24t3.5 -9.5t5.5 -1.5h31q7 0 7 -16q0 -11 -10 -11l-110 2q-5 0 -5 5v37q0 35 -3 55.5t-13.5 44t-35 34t-64.5 10.5h-48q-7 0 -7 -7 v-50q0 -104 8 -104h61q7 0 7 -12q0 -15 -7 -15l-36 1q-36 1 -70 1q-19 0 -41.5 -0.5t-37.5 -1t-16 -0.5q-9 0 -9 12q0 15 9 15h53q6 0 6 54v158q0 139 -8 139h-53q-11 0 -11 12zM165 208q0 -6 10 -6h68q37 0 56 25.5t19 62.5q0 40 -32.5 66t-73.5 26q-35 0 -44 -2 q-3 -2 -3 -66v-106z" />
+<glyph horiz-adv-x="369" d="M68 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12q-1 0 -8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM40 292q0 53 39 87t96 34q46 0 99 -24q1 0 5.5 -2.5t6 -1.5t1.5 7l1 9q0 7 12 7q17 0 17 -8 q0 -2 -1.5 -21t-3 -44.5t-1.5 -43.5q0 -7 -10 -7h-3q-14 0 -14 7q0 1 1 20t1 22q0 6 -14.5 19t-41 25t-52.5 12t-51 -18.5t-25 -50.5q0 -29 24.5 -48t59.5 -30t69.5 -24t59 -40.5t24.5 -69.5q0 -63 -45.5 -91.5t-117.5 -28.5q-29 0 -59.5 6t-48 12.5t-18.5 9.5q-4 92 -4 106 q0 3 14 5q10 1 12 -0.5t2 -8.5v-4l3 -49q1 -17 40 -32t77 -15q86 0 86 68q0 25 -24.5 41.5t-60 27.5t-71 24.5t-60 42t-24.5 70.5z" />
+<glyph horiz-adv-x="369" d="M163 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM40 292q0 53 39 87t96 34q46 0 99 -24q1 0 5.5 -2.5t6 -1.5t1.5 7l1 9q0 7 12 7q17 0 17 -8q0 -2 -1.5 -21t-3 -44.5t-1.5 -43.5q0 -7 -10 -7h-3 q-14 0 -14 7q0 1 1 20t1 22q0 6 -14.5 19t-41 25t-52.5 12t-51 -18.5t-25 -50.5q0 -29 24.5 -48t59.5 -30t69.5 -24t59 -40.5t24.5 -69.5q0 -63 -45.5 -91.5t-117.5 -28.5q-29 0 -59.5 6t-48 12.5t-18.5 9.5q-4 92 -4 106q0 3 14 5q10 1 12 -0.5t2 -8.5v-4l3 -49 q1 -17 40 -32t77 -15q86 0 86 68q0 25 -24.5 41.5t-60 27.5t-71 24.5t-60 42t-24.5 70.5z" />
+<glyph horiz-adv-x="369" d="M68 597q0 2 5 2h12q1 0 8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM40 292q0 53 39 87t96 34q46 0 99 -24q1 0 5.5 -2.5t6 -1.5t1.5 7l1 9q0 7 12 7q17 0 17 -8 q0 -2 -1.5 -21t-3 -44.5t-1.5 -43.5q0 -7 -10 -7h-3q-14 0 -14 7q0 1 1 20t1 22q0 6 -14.5 19t-41 25t-52.5 12t-51 -18.5t-25 -50.5q0 -29 24.5 -48t59.5 -30t69.5 -24t59 -40.5t24.5 -69.5q0 -63 -45.5 -91.5t-117.5 -28.5q-29 0 -59.5 6t-48 12.5t-18.5 9.5q-4 92 -4 106 q0 3 14 5q10 1 12 -0.5t2 -8.5v-4l3 -49q1 -17 40 -32t77 -15q86 0 86 68q0 25 -24.5 41.5t-60 27.5t-71 24.5t-60 42t-24.5 70.5z" />
+<glyph horiz-adv-x="369" d="M40 292q0 53 39 87t96 34q46 0 99 -24q1 0 5.5 -2.5t6 -1.5t1.5 7l1 9q0 7 12 7q17 0 17 -8q0 -2 -1.5 -21t-3 -44.5t-1.5 -43.5q0 -7 -10 -7h-3q-14 0 -14 7q0 1 1 20t1 22q0 6 -14.5 19t-41 25t-52.5 12t-51 -18.5t-25 -50.5q0 -29 24.5 -48t59.5 -30t69.5 -24 t59 -40.5t24.5 -69.5q0 -110 -140 -119l-20 -54q-2 -9 0 -9l5 2l14.5 2.5t16.5 1.5q40 0 62.5 -21t22.5 -47q0 -35 -29.5 -63.5t-76.5 -28.5q-23 0 -43.5 6.5t-30 12.5t-9.5 9q0 11 8 11l9 -3q8 -4 22 -8t29 -4q34 0 50 13.5t16 42.5q0 45 -55 45q-8 0 -16.5 -2.5t-14 -4.5 t-6.5 -2q-8 0 -8 5q0 6 36 95h-5q-29 0 -59.5 6t-48 12.5t-18.5 9.5q-4 92 -4 106q0 3 14 5q10 1 12 -0.5t2 -8.5v-4l3 -49q1 -17 40 -32t77 -15q86 0 86 68q0 25 -24.5 41.5t-60 27.5t-71 24.5t-60 42t-24.5 70.5z" />
+<glyph horiz-adv-x="369" d="M140 -225l15 10q15 10 29.5 25.5t14.5 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM40 292q0 53 39 87t96 34q46 0 99 -24q1 0 5.5 -2.5t6 -1.5t1.5 7l1 9 q0 7 12 7q17 0 17 -8q0 -2 -1.5 -21t-3 -44.5t-1.5 -43.5q0 -7 -10 -7h-3q-14 0 -14 7q0 1 1 20t1 22q0 6 -14.5 19t-41 25t-52.5 12t-51 -18.5t-25 -50.5q0 -29 24.5 -48t59.5 -30t69.5 -24t59 -40.5t24.5 -69.5q0 -63 -45.5 -91.5t-117.5 -28.5q-29 0 -59.5 6t-48 12.5 t-18.5 9.5q-4 92 -4 106q0 3 14 5q10 1 12 -0.5t2 -8.5v-4l3 -49q1 -17 40 -32t77 -15q86 0 86 68q0 25 -24.5 41.5t-60 27.5t-71 24.5t-60 42t-24.5 70.5z" />
+<glyph horiz-adv-x="369" d="M68 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12q-1 0 -8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM40 292q0 53 39 87t96 34q46 0 99 -24q1 0 5.5 -2.5t6 -1.5t1.5 7l1 9q0 7 12 7q17 0 17 -8 q0 -2 -1.5 -21t-3 -44.5t-1.5 -43.5q0 -7 -10 -7h-3q-14 0 -14 7q0 1 1 20t1 22q0 6 -14.5 19t-41 25t-52.5 12t-51 -18.5t-25 -50.5q0 -29 24.5 -48t59.5 -30t69.5 -24t59 -40.5t24.5 -69.5q0 -63 -45.5 -91.5t-117.5 -28.5q-29 0 -59.5 6t-48 12.5t-18.5 9.5q-4 92 -4 106 q0 3 14 5q10 1 12 -0.5t2 -8.5v-4l3 -49q1 -17 40 -32t77 -15q86 0 86 68q0 25 -24.5 41.5t-60 27.5t-71 24.5t-60 42t-24.5 70.5z" />
+<glyph horiz-adv-x="369" d="M163 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM40 292q0 53 39 87t96 34q46 0 99 -24q1 0 5.5 -2.5t6 -1.5t1.5 7l1 9q0 7 12 7q17 0 17 -8q0 -2 -1.5 -21t-3 -44.5t-1.5 -43.5q0 -7 -10 -7h-3 q-14 0 -14 7q0 1 1 20t1 22q0 6 -14.5 19t-41 25t-52.5 12t-51 -18.5t-25 -50.5q0 -29 24.5 -48t59.5 -30t69.5 -24t59 -40.5t24.5 -69.5q0 -63 -45.5 -91.5t-117.5 -28.5q-29 0 -59.5 6t-48 12.5t-18.5 9.5q-4 92 -4 106q0 3 14 5q10 1 12 -0.5t2 -8.5v-4l3 -49 q1 -17 40 -32t77 -15q86 0 86 68q0 25 -24.5 41.5t-60 27.5t-71 24.5t-60 42t-24.5 70.5z" />
+<glyph horiz-adv-x="369" d="M68 597q0 2 5 2h12q1 0 8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM40 292q0 53 39 87t96 34q46 0 99 -24q1 0 5.5 -2.5t6 -1.5t1.5 7l1 9q0 7 12 7q17 0 17 -8 q0 -2 -1.5 -21t-3 -44.5t-1.5 -43.5q0 -7 -10 -7h-3q-14 0 -14 7q0 1 1 20t1 22q0 6 -14.5 19t-41 25t-52.5 12t-51 -18.5t-25 -50.5q0 -29 24.5 -48t59.5 -30t69.5 -24t59 -40.5t24.5 -69.5q0 -63 -45.5 -91.5t-117.5 -28.5q-29 0 -59.5 6t-48 12.5t-18.5 9.5q-4 92 -4 106 q0 3 14 5q10 1 12 -0.5t2 -8.5v-4l3 -49q1 -17 40 -32t77 -15q86 0 86 68q0 25 -24.5 41.5t-60 27.5t-71 24.5t-60 42t-24.5 70.5z" />
+<glyph horiz-adv-x="369" d="M40 292q0 53 39 87t96 34q46 0 99 -24q1 0 5.5 -2.5t6 -1.5t1.5 7l1 9q0 7 12 7q17 0 17 -8q0 -2 -1.5 -21t-3 -44.5t-1.5 -43.5q0 -7 -10 -7h-3q-14 0 -14 7q0 1 1 20t1 22q0 6 -14.5 19t-41 25t-52.5 12t-51 -18.5t-25 -50.5q0 -29 24.5 -48t59.5 -30t69.5 -24 t59 -40.5t24.5 -69.5q0 -110 -140 -119l-20 -54q-2 -9 0 -9l5 2l14.5 2.5t16.5 1.5q40 0 62.5 -21t22.5 -47q0 -35 -29.5 -63.5t-76.5 -28.5q-23 0 -43.5 6.5t-30 12.5t-9.5 9q0 11 8 11l9 -3q8 -4 22 -8t29 -4q34 0 50 13.5t16 42.5q0 45 -55 45q-8 0 -16.5 -2.5t-14 -4.5 t-6.5 -2q-8 0 -8 5q0 6 36 95h-5q-29 0 -59.5 6t-48 12.5t-18.5 9.5q-4 92 -4 106q0 3 14 5q10 1 12 -0.5t2 -8.5v-4l3 -49q1 -17 40 -32t77 -15q86 0 86 68q0 25 -24.5 41.5t-60 27.5t-71 24.5t-60 42t-24.5 70.5z" />
+<glyph horiz-adv-x="369" d="M140 -225l15 10q15 10 29.5 25.5t14.5 29.5q0 17 -13.5 30t-26.5 21.5t-13 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM40 292q0 53 39 87t96 34q46 0 99 -24q1 0 5.5 -2.5t6 -1.5t1.5 7l1 9 q0 7 12 7q17 0 17 -8q0 -2 -1.5 -21t-3 -44.5t-1.5 -43.5q0 -7 -10 -7h-3q-14 0 -14 7q0 1 1 20t1 22q0 6 -14.5 19t-41 25t-52.5 12t-51 -18.5t-25 -50.5q0 -29 24.5 -48t59.5 -30t69.5 -24t59 -40.5t24.5 -69.5q0 -63 -45.5 -91.5t-117.5 -28.5q-29 0 -59.5 6t-48 12.5 t-18.5 9.5q-4 92 -4 106q0 3 14 5q10 1 12 -0.5t2 -8.5v-4l3 -49q1 -17 40 -32t77 -15q86 0 86 68q0 25 -24.5 41.5t-60 27.5t-71 24.5t-60 42t-24.5 70.5z" />
+<glyph horiz-adv-x="464" d="M124 597q0 2 5 2h12q1 0 8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM20 307q0 11 13 111q0 3 11 3q12 0 12 -4v-14q0 -2 24 -2h275q62 0 63 5q1 3 1.5 10t0.5 11 q0 3 12 3q11 0 11 -7l1 -107q0 -7 -14 -7q-11 0 -11 9v54q0 4 -65 4h-73q-9 0 -9 -101v-184q0 -66 10 -66h69q7 0 7 -12q0 -15 -7 -15q-1 0 -41 1t-74 1q-36 0 -74 -1l-39 -1q-8 0 -8 15q0 12 9 12h65q4 0 6 84l3 210q0 57 -5 57h-45q-95 0 -96 -10l-7 -60q-1 -4 -13 -4 t-12 5z" />
+<glyph horiz-adv-x="464" d="M20 307q0 11 13 111q0 3 11 3q12 0 12 -4v-14q0 -2 24 -2h275q62 0 63 5q1 3 1.5 10t0.5 11q0 3 12 3q11 0 11 -7l1 -107q0 -7 -14 -7q-11 0 -11 9v54q0 4 -65 4h-73q-9 0 -9 -101v-184q0 -66 10 -66h69q7 0 7 -12q0 -15 -7 -15q-1 0 -37 1t-66 1l-24 -65q-2 -9 0 -9l6 2 q5 1 13.5 2.5t16.5 1.5q40 0 62.5 -21t22.5 -47q0 -35 -29.5 -63.5t-76.5 -28.5q-23 0 -43.5 6.5t-30 12.5t-9.5 9q0 11 8 11l8 -3q9 -4 23 -8t29 -4q34 0 50 13.5t16 42.5q0 45 -55 45q-8 0 -16.5 -2.5t-14 -4.5t-6.5 -2q-8 0 -8 5t41 107q-34 0 -71 -1l-37 -1q-8 0 -8 15 q0 12 9 12h65q4 0 6 84l3 210q0 57 -5 57h-45q-95 0 -96 -10l-7 -60q-1 -4 -13 -4t-12 5z" />
+<glyph horiz-adv-x="464" d="M185 -225l15 10q14 10 29 25.5t15 29.5q0 17 -13 30t-26.5 21.5t-13.5 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM20 307q0 11 13 111q0 3 11 3q12 0 12 -4v-14q0 -2 24 -2h275q62 0 63 5 q1 3 1.5 10t0.5 11q0 3 12 3q11 0 11 -7l1 -107q0 -7 -14 -7q-11 0 -11 9v54q0 4 -65 4h-73q-9 0 -9 -101v-184q0 -66 10 -66h69q7 0 7 -12q0 -15 -7 -15q-1 0 -41 1t-74 1q-36 0 -74 -1l-39 -1q-8 0 -8 15q0 12 9 12h65q4 0 6 84l3 210q0 57 -5 57h-45q-95 0 -96 -10 l-7 -60q-1 -4 -13 -4t-12 5z" />
+<glyph horiz-adv-x="464" d="M20 307q0 11 13 111q0 3 11 3q12 0 12 -4v-14q0 -2 24 -2h275q62 0 63 5q1 3 1.5 10t0.5 11q0 3 12 3q11 0 11 -7l1 -107q0 -7 -14 -7q-11 0 -11 9v54q0 4 -65 4h-73q-9 0 -9 -101v-48q0 -8 1.5 -9.5t9.5 -1.5h99q3 0 3 -12t-3 -12h-99q-8 0 -9.5 -1t-1.5 -8v-92 q0 -66 10 -66h69q7 0 7 -12q0 -15 -7 -15q-1 0 -41 1t-74 1q-36 0 -74 -1l-39 -1q-8 0 -8 15q0 12 9 12h65q4 0 6 84l1 74q0 9 -6 9h-99q-2 0 -2.5 12t2.5 12h94q9 0 10.5 1.5t1.5 9.5l1 92q0 57 -5 57h-45q-95 0 -96 -10l-7 -60q-1 -4 -13 -4t-12 5z" />
+<glyph horiz-adv-x="464" d="M124 597q0 2 5 2h12q1 0 8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM20 307q0 11 13 111q0 3 11 3q12 0 12 -4v-14q0 -2 24 -2h275q62 0 63 5q1 3 1.5 10t0.5 11 q0 3 12 3q11 0 11 -7l1 -107q0 -7 -14 -7q-11 0 -11 9v54q0 4 -65 4h-73q-9 0 -9 -101v-184q0 -66 10 -66h69q7 0 7 -12q0 -15 -7 -15q-1 0 -41 1t-74 1q-36 0 -74 -1l-39 -1q-8 0 -8 15q0 12 9 12h65q4 0 6 84l3 210q0 57 -5 57h-45q-95 0 -96 -10l-7 -60q-1 -4 -13 -4 t-12 5z" />
+<glyph horiz-adv-x="464" d="M20 307q0 11 13 111q0 3 11 3q12 0 12 -4v-14q0 -2 24 -2h275q62 0 63 5q1 3 1.5 10t0.5 11q0 3 12 3q11 0 11 -7l1 -107q0 -7 -14 -7q-11 0 -11 9v54q0 4 -65 4h-73q-9 0 -9 -101v-184q0 -66 10 -66h69q7 0 7 -12q0 -15 -7 -15q-1 0 -37 1t-66 1l-24 -65q-2 -9 0 -9l6 2 q5 1 13.5 2.5t16.5 1.5q40 0 62.5 -21t22.5 -47q0 -35 -29.5 -63.5t-76.5 -28.5q-23 0 -43.5 6.5t-30 12.5t-9.5 9q0 11 8 11l8 -3q9 -4 23 -8t29 -4q34 0 50 13.5t16 42.5q0 45 -55 45q-8 0 -16.5 -2.5t-14 -4.5t-6.5 -2q-8 0 -8 5t41 107q-34 0 -71 -1l-37 -1q-8 0 -8 15 q0 12 9 12h65q4 0 6 84l3 210q0 57 -5 57h-45q-95 0 -96 -10l-7 -60q-1 -4 -13 -4t-12 5z" />
+<glyph horiz-adv-x="464" d="M185 -225l15 10q14 10 29 25.5t15 29.5q0 17 -13 30t-26.5 21.5t-13.5 12.5q0 11 18.5 23t24.5 12q12 0 37.5 -19.5t25.5 -33.5q0 -31 -24.5 -62.5t-48 -48t-29.5 -16.5q-4 0 -7 5.5t-3 10.5zM20 307q0 11 13 111q0 3 11 3q12 0 12 -4v-14q0 -2 24 -2h275q62 0 63 5 q1 3 1.5 10t0.5 11q0 3 12 3q11 0 11 -7l1 -107q0 -7 -14 -7q-11 0 -11 9v54q0 4 -65 4h-73q-9 0 -9 -101v-184q0 -66 10 -66h69q7 0 7 -12q0 -15 -7 -15q-1 0 -41 1t-74 1q-36 0 -74 -1l-39 -1q-8 0 -8 15q0 12 9 12h65q4 0 6 84l3 210q0 57 -5 57h-45q-95 0 -96 -10 l-7 -60q-1 -4 -13 -4t-12 5z" />
+<glyph horiz-adv-x="464" d="M20 307q0 11 13 111q0 3 11 3q12 0 12 -4v-14q0 -2 24 -2h275q62 0 63 5q1 3 1.5 10t0.5 11q0 3 12 3q11 0 11 -7l1 -107q0 -7 -14 -7q-11 0 -11 9v54q0 4 -65 4h-73q-9 0 -9 -101v-48q0 -8 1.5 -9.5t9.5 -1.5h99q3 0 3 -12t-3 -12h-99q-8 0 -9.5 -1t-1.5 -8v-92 q0 -66 10 -66h69q7 0 7 -12q0 -15 -7 -15q-1 0 -41 1t-74 1q-36 0 -74 -1l-39 -1q-8 0 -8 15q0 12 9 12h65q4 0 6 84l1 74q0 9 -6 9h-99q-2 0 -2.5 12t2.5 12h94q9 0 10.5 1.5t1.5 9.5l1 92q0 57 -5 57h-45q-95 0 -96 -10l-7 -60q-1 -4 -13 -4t-12 5z" />
+<glyph horiz-adv-x="551" d="M174 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84zM25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-62 q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17t-5 5.5l-10 -6 q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M172 498q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13 q0 -14 -12 -14h-62q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17 t-5 5.5l-10 -6q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M262 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-62q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103 q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17t-5 5.5l-10 -6q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5 t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M146 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM306 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1 q9 0 9 -13q0 -14 -12 -14h-62q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10 l-12.5 19.5t-11.5 17t-5 5.5l-10 -6q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M167 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-62 q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17t-5 5.5l-10 -6 q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M206 535q0 29 21 50t50 21t50 -21t21 -50t-21 -50t-50 -21t-50 21t-21 50zM234 535q0 -18 12.5 -30.5t30.5 -12.5t30.5 12.5t12.5 30.5t-12.5 30.5t-30.5 12.5t-30.5 -12.5t-12.5 -30.5zM25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13 q0 -14 -12 -14h-62q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17 t-5 5.5l-10 -6q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M175 582q0 13 9.5 21.5t26.5 8.5q21 0 30 -25l49 -130q2 -4 2 -6t-4 -2h-16q-4 0 -8 6l-82 107q-7 10 -7 20zM25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-62q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103 q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17t-5 5.5l-10 -6q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5 t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M175 518v23q0 6 1.5 7t7.5 1h187q5 0 6.5 -1t1.5 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-62q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103q1 14 1 107 q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17t-5 5.5l-10 -6q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5t-31.5 93.5v112 q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M197 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM307 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM25 391q0 12 13 12l28 -1 q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-62q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14h-35q-5 0 -5 -74v-292 q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17t-5 5.5l-10 -6q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-62q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14 h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17t-5 5.5t-9.5 -4.5l-25 -13t-33.5 -15.5q-15 -6 -27 -18q-85 -87 -85 -164q0 -33 20 -56.5t44 -23.5q23 0 43 11t31 22l11 11q1 0 6 -6t5 -7q0 -3 -15 -19t-47.5 -34t-68.5 -18q-32 0 -62.5 29.5 t-30.5 63.5q0 47 26.5 84t87.5 96q10 9 15 14q-30 -8 -61 -8q-85 0 -116.5 33.5t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M174 579q0 7 1 7h17l1 -4q1 -5 3.5 -13.5t5.5 -15.5q21 -41 75 -41t75 41q3 7 5.5 15.5t3.5 13.5l1 4h17q1 0 1 -6q0 -48 -26.5 -84.5t-76.5 -36.5q-51 0 -77 36t-26 84zM25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-62 q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17t-5 5.5l-10 -6 q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M172 498q0 7 8 26q11 27 27 41t29 14q16 0 46 -19t42 -19q22 0 36 35q2 7 12 7q7 0 7 -2q0 -8 -7 -27q-22 -58 -60 -58q-18 0 -45 18.5t-43 18.5q-23 0 -34 -31q-2 -6 -11 -6q-7 0 -7 2zM25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13 q0 -14 -12 -14h-62q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17 t-5 5.5l-10 -6q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M262 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-4 -6 -8 -6h-16q-4 0 -4 2zM25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-62q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103 q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17t-5 5.5l-10 -6q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5 t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M146 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM306 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1 q9 0 9 -13q0 -14 -12 -14h-62q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10 l-12.5 19.5t-11.5 17t-5 5.5l-10 -6q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M167 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-62 q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17t-5 5.5l-10 -6 q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M206 535q0 29 21 50t50 21t50 -21t21 -50t-21 -50t-50 -21t-50 21t-21 50zM234 535q0 -18 12.5 -30.5t30.5 -12.5t30.5 12.5t12.5 30.5t-12.5 30.5t-30.5 12.5t-30.5 -12.5t-12.5 -30.5zM25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13 q0 -14 -12 -14h-62q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17 t-5 5.5l-10 -6q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M175 582q0 13 9.5 21.5t26.5 8.5q21 0 30 -25l49 -130q2 -4 2 -6t-4 -2h-16q-4 0 -8 6l-82 107q-7 10 -7 20zM25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-62q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103 q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17t-5 5.5l-10 -6q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5 t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M175 518v23q0 6 1.5 7t7.5 1h187q5 0 6.5 -1t1.5 -6v-25q0 -6 -1 -7t-7 -1h-187q-7 0 -8 1t-1 8zM25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-62q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103q1 14 1 107 q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17t-5 5.5l-10 -6q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5t-31.5 93.5v112 q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M197 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM307 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM25 391q0 12 13 12l28 -1 q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-62q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14h-35q-5 0 -5 -74v-292 q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17t-5 5.5l-10 -6q-11 -6 -28 -14t-38 -16t-48 -14t-52 -6q-85 0 -116.5 33.5t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="551" d="M25 391q0 12 13 12l28 -1q28 -1 54 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-62q-5 0 -5 -74v-169q0 -52 30.5 -79.5t75.5 -27.5q132 0 136 103q1 14 1 107q0 140 -7 140h-55q-13 0 -13 15q0 12 13 12l35 -1q36 -1 62 -1q22 0 50 1t31 1q9 0 9 -13q0 -14 -12 -14 h-35q-5 0 -5 -74v-292q0 -14 -16 -14q-14 0 -21 10l-12.5 19.5t-11.5 17t-5 5.5t-9.5 -4.5l-25 -13t-33.5 -15.5q-15 -6 -27 -18q-85 -87 -85 -164q0 -33 20 -56.5t44 -23.5q23 0 43 11t31 22l11 11q1 0 6 -6t5 -7q0 -3 -15 -19t-47.5 -34t-68.5 -18q-32 0 -62.5 29.5 t-30.5 63.5q0 47 26.5 84t87.5 96q10 9 15 14q-30 -8 -61 -8q-85 0 -116.5 33.5t-31.5 93.5v112q0 145 -4 145h-42q-13 0 -13 15z" />
+<glyph horiz-adv-x="709" d="M255 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM10 389q0 6 0.5 8t3.5 4t9 2q8 0 35.5 -1t43.5 -1q13 0 46 1t41 1q9 0 11 -2.5t2 -11.5 q0 -13 -12 -13h-35q-19 0 -19 -8q0 -2 18 -55l42.5 -119.5t38.5 -97.5q6 -13 8 -13t10 17l89 197q2 5 2 23q0 7 -13 42q-4 11 -7.5 12.5t-15.5 1.5h-23q-8 0 -10.5 3t-2.5 10q0 6 0.5 8t3.5 4t9 2q3 0 31 -1t48 -1q28 0 59 1t36 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-43 q-13 0 -13 -8q0 -2 18 -57.5l42 -124.5t36 -100q6 -15 7 -15l8 17q97 228 97 277q0 11 -4 11h-45q-8 0 -10.5 3t-2.5 10q0 14 14 14q2 0 27 -1t36 -1q13 0 36 1t25 1q7 0 9 -2.5t2 -11.5q0 -13 -12 -13h-13q-9 0 -14 -10q-4 -9 -31 -74l-55 -128.5l-48 -105.5 q-8 -17 -22 -34t-25 -36q-2 -4 -7 -4q-14 0 -31 63q-3 11 -15.5 44.5l-30.5 83.5t-31 90q-1 4 -3 9q-1 3 -2 0l-4 -10l-92 -205q-8 -17 -22.5 -33.5t-25.5 -37.5q-2 -4 -7 -4q-4 0 -7.5 3.5t-7 10.5t-5.5 12.5t-5.5 16t-4.5 14.5q-4 12 -26.5 71.5l-48.5 130l-43 118.5 q-4 11 -7 13t-14 2h-16q-8 0 -10.5 3t-2.5 10z" />
+<glyph horiz-adv-x="709" d="M255 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12l-8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM10 389q0 6 0.5 8t3.5 4t9 2q8 0 35.5 -1t43.5 -1q13 0 46 1t41 1q9 0 11 -2.5t2 -11.5 q0 -13 -12 -13h-35q-19 0 -19 -8q0 -2 18 -55l42.5 -119.5t38.5 -97.5q6 -13 8 -13t10 17l89 197q2 5 2 23q0 7 -13 42q-4 11 -7.5 12.5t-15.5 1.5h-23q-8 0 -10.5 3t-2.5 10q0 6 0.5 8t3.5 4t9 2q3 0 31 -1t48 -1q28 0 59 1t36 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-43 q-13 0 -13 -8q0 -2 18 -57.5l42 -124.5t36 -100q6 -15 7 -15l8 17q97 228 97 277q0 11 -4 11h-45q-8 0 -10.5 3t-2.5 10q0 14 14 14q2 0 27 -1t36 -1q13 0 36 1t25 1q7 0 9 -2.5t2 -11.5q0 -13 -12 -13h-13q-9 0 -14 -10q-4 -9 -31 -74l-55 -128.5l-48 -105.5 q-8 -17 -22 -34t-25 -36q-2 -4 -7 -4q-14 0 -31 63q-3 11 -15.5 44.5l-30.5 83.5t-31 90q-1 4 -3 9q-1 3 -2 0l-4 -10l-92 -205q-8 -17 -22.5 -33.5t-25.5 -37.5q-2 -4 -7 -4q-4 0 -7.5 3.5t-7 10.5t-5.5 12.5t-5.5 16t-4.5 14.5q-4 12 -26.5 71.5l-48.5 130l-43 118.5 q-4 11 -7 13t-14 2h-16q-8 0 -10.5 3t-2.5 10z" />
+<glyph horiz-adv-x="464" d="M138 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12q-1 0 -8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM10 389q0 6 0.5 8t3.5 4t9 2q7 0 34.5 -1t48.5 -1q29 0 61 1t37 1q9 0 11 -2.5t2 -11.5 q0 -13 -12 -13h-51q1 -12 23 -55.5l42.5 -80.5t21.5 -38q2 -5 4 -6.5t4 -0.5t6 5q11 13 45.5 69.5t50.5 88.5q1 2 3 5t3.5 5.5t1.5 3.5q0 4 -19 4h-40q-8 0 -10.5 3t-2.5 10q0 14 14 14q1 0 33.5 -1t53.5 -1q15 0 32 1t21 1q13 0 13 -14q0 -13 -12 -13h-17h-5t-4 -1l-3 -1.5 t-3.5 -3t-3.5 -4l-4.5 -6.5l-5.5 -8l-123 -168q-10 -13 -10 -31v-87q0 -41 9 -41h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-26 0 -48 -0.5t-34 -1t-16 -0.5q-8 0 -8 15q0 12 9 12h57q5 0 5 84v38q0 7 -66.5 118t-70.5 111h-32q-8 0 -10.5 3t-2.5 10z" />
+<glyph horiz-adv-x="464" d="M233 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM10 389q0 6 0.5 8t3.5 4t9 2q7 0 34.5 -1t48.5 -1q29 0 61 1t37 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-51q1 -12 23 -55.5l42.5 -80.5t21.5 -38 q2 -5 4 -6.5t4 -0.5t6 5q11 13 45.5 69.5t50.5 88.5q1 2 3 5t3.5 5.5t1.5 3.5q0 4 -19 4h-40q-8 0 -10.5 3t-2.5 10q0 14 14 14q1 0 33.5 -1t53.5 -1q15 0 32 1t21 1q13 0 13 -14q0 -13 -12 -13h-17h-5t-4 -1l-3 -1.5t-3.5 -3t-3.5 -4l-4.5 -6.5l-5.5 -8l-123 -168 q-10 -13 -10 -31v-87q0 -41 9 -41h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-26 0 -48 -0.5t-34 -1t-16 -0.5q-8 0 -8 15q0 12 9 12h57q5 0 5 84v38q0 7 -66.5 118t-70.5 111h-32q-8 0 -10.5 3t-2.5 10z" />
+<glyph horiz-adv-x="464" d="M117 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM277 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM10 389q0 6 0.5 8t3.5 4t9 2q7 0 34.5 -1t48.5 -1q29 0 61 1 t37 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-51q1 -12 23 -55.5l42.5 -80.5t21.5 -38q2 -5 4 -6.5t4 -0.5t6 5q11 13 45.5 69.5t50.5 88.5q1 2 3 5t3.5 5.5t1.5 3.5q0 4 -19 4h-40q-8 0 -10.5 3t-2.5 10q0 14 14 14q1 0 33.5 -1t53.5 -1q15 0 32 1t21 1q13 0 13 -14 q0 -13 -12 -13h-17h-5t-4 -1l-3 -1.5t-3.5 -3t-3.5 -4l-4.5 -6.5l-5.5 -8l-123 -168q-10 -13 -10 -31v-87q0 -41 9 -41h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-26 0 -48 -0.5t-34 -1t-16 -0.5q-8 0 -8 15q0 12 9 12h57q5 0 5 84v38q0 7 -66.5 118t-70.5 111h-32 q-8 0 -10.5 3t-2.5 10z" />
+<glyph horiz-adv-x="464" d="M138 461q0 1 3 6l79 119q6 10 8.5 11.5t9.5 1.5h20q7 0 9.5 -1.5t8.5 -11.5l79 -119q3 -5 3 -6q0 -2 -5 -2h-12q-1 0 -8 6l-81 70q-4 3 -8 0l-81 -70q-6 -6 -8 -6h-12q-5 0 -5 2zM10 389q0 6 0.5 8t3.5 4t9 2q7 0 34.5 -1t48.5 -1q29 0 61 1t37 1q9 0 11 -2.5t2 -11.5 q0 -13 -12 -13h-51q1 -12 23 -55.5l42.5 -80.5t21.5 -38q2 -5 4 -6.5t4 -0.5t6 5q11 13 45.5 69.5t50.5 88.5q1 2 3 5t3.5 5.5t1.5 3.5q0 4 -19 4h-40q-8 0 -10.5 3t-2.5 10q0 14 14 14q1 0 33.5 -1t53.5 -1q15 0 32 1t21 1q13 0 13 -14q0 -13 -12 -13h-17h-5t-4 -1l-3 -1.5 t-3.5 -3t-3.5 -4l-4.5 -6.5l-5.5 -8l-123 -168q-10 -13 -10 -31v-87q0 -41 9 -41h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-26 0 -48 -0.5t-34 -1t-16 -0.5q-8 0 -8 15q0 12 9 12h57q5 0 5 84v38q0 7 -66.5 118t-70.5 111h-32q-8 0 -10.5 3t-2.5 10z" />
+<glyph horiz-adv-x="464" d="M233 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM10 389q0 6 0.5 8t3.5 4t9 2q7 0 34.5 -1t48.5 -1q29 0 61 1t37 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-51q1 -12 23 -55.5l42.5 -80.5t21.5 -38 q2 -5 4 -6.5t4 -0.5t6 5q11 13 45.5 69.5t50.5 88.5q1 2 3 5t3.5 5.5t1.5 3.5q0 4 -19 4h-40q-8 0 -10.5 3t-2.5 10q0 14 14 14q1 0 33.5 -1t53.5 -1q15 0 32 1t21 1q13 0 13 -14q0 -13 -12 -13h-17h-5t-4 -1l-3 -1.5t-3.5 -3t-3.5 -4l-4.5 -6.5l-5.5 -8l-123 -168 q-10 -13 -10 -31v-87q0 -41 9 -41h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-26 0 -48 -0.5t-34 -1t-16 -0.5q-8 0 -8 15q0 12 9 12h57q5 0 5 84v38q0 7 -66.5 118t-70.5 111h-32q-8 0 -10.5 3t-2.5 10z" />
+<glyph horiz-adv-x="464" d="M117 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM277 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM10 389q0 6 0.5 8t3.5 4t9 2q7 0 34.5 -1t48.5 -1q29 0 61 1 t37 1q9 0 11 -2.5t2 -11.5q0 -13 -12 -13h-51q1 -12 23 -55.5l42.5 -80.5t21.5 -38q2 -5 4 -6.5t4 -0.5t6 5q11 13 45.5 69.5t50.5 88.5q1 2 3 5t3.5 5.5t1.5 3.5q0 4 -19 4h-40q-8 0 -10.5 3t-2.5 10q0 14 14 14q1 0 33.5 -1t53.5 -1q15 0 32 1t21 1q13 0 13 -14 q0 -13 -12 -13h-17h-5t-4 -1l-3 -1.5t-3.5 -3t-3.5 -4l-4.5 -6.5l-5.5 -8l-123 -168q-10 -13 -10 -31v-87q0 -41 9 -41h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-26 0 -48 -0.5t-34 -1t-16 -0.5q-8 0 -8 15q0 12 9 12h57q5 0 5 84v38q0 7 -66.5 118t-70.5 111h-32 q-8 0 -10.5 3t-2.5 10z" />
+<glyph horiz-adv-x="413" d="M201 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM30 10q0 4 10 20l228 327l4 6t3.5 5.5t1.5 3.5q0 4 -14 4l-165 -5h-9t-6.5 -0.5t-4 -0.5t-3 -2t-1 -4.5l-1.5 -7.5l-7 -50q-2 -12 -13 -12q-15 0 -15 10 q0 2 3 22.5l7 49t6 46.5q2 6 8 6q9 0 14.5 -1.5t4.5 -6.5l-1 -9q-1 -8 0 -9t9 -1h266q19 0 19 -8q0 -3 -8 -16l-215 -322q-13 -19 -13 -24q0 -4 10 -4l194 7q9 0 11 1.5t3 11.5l3 60q1 9 4.5 11.5t15.5 1.5q9 -1 9 -9q0 -23 -5 -96q-1 -11 -3 -13t-13 -2h-315q-22 0 -22 10z " />
+<glyph horiz-adv-x="413" d="M106 597q0 2 5 2h12q1 0 8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM30 10q0 4 10 20l228 327l4 6t3.5 5.5t1.5 3.5q0 4 -14 4l-165 -5h-9t-6.5 -0.5t-4 -0.5 t-3 -2t-1 -4.5l-1.5 -7.5l-7 -50q-2 -12 -13 -12q-15 0 -15 10q0 2 3 22.5l7 49t6 46.5q2 6 8 6q9 0 14.5 -1.5t4.5 -6.5l-1 -9q-1 -8 0 -9t9 -1h266q19 0 19 -8q0 -3 -8 -16l-215 -322q-13 -19 -13 -24q0 -4 10 -4l194 7q9 0 11 1.5t3 11.5l3 60q1 9 4.5 11.5t15.5 1.5 q9 -1 9 -9q0 -23 -5 -96q-1 -11 -3 -13t-13 -2h-315q-22 0 -22 10z" />
+<glyph horiz-adv-x="413" d="M165 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM30 10q0 4 10 20l228 327l4 6t3.5 5.5t1.5 3.5q0 4 -14 4l-165 -5h-9t-6.5 -0.5t-4 -0.5t-3 -2t-1 -4.5l-1.5 -7.5l-7 -50q-2 -12 -13 -12q-15 0 -15 10q0 2 3 22.5 l7 49t6 46.5q2 6 8 6q9 0 14.5 -1.5t4.5 -6.5l-1 -9q-1 -8 0 -9t9 -1h266q19 0 19 -8q0 -3 -8 -16l-215 -322q-13 -19 -13 -24q0 -4 10 -4l194 7q9 0 11 1.5t3 11.5l3 60q1 9 4.5 11.5t15.5 1.5q9 -1 9 -9q0 -23 -5 -96q-1 -11 -3 -13t-13 -2h-315q-22 0 -22 10z" />
+<glyph horiz-adv-x="413" d="M201 451q0 2 2 6l49 130q9 25 30 25q17 0 26.5 -8.5t9.5 -21.5q0 -10 -7 -20l-82 -107q-5 -6 -8 -6h-16q-4 0 -4 2zM30 10q0 4 10 20l228 327l4 6t3.5 5.5t1.5 3.5q0 4 -14 4l-165 -5h-9t-6.5 -0.5t-4 -0.5t-3 -2t-1 -4.5l-1.5 -7.5l-7 -50q-2 -12 -13 -12q-15 0 -15 10 q0 2 3 22.5l7 49t6 46.5q2 6 8 6q9 0 14.5 -1.5t4.5 -6.5l-1 -9q-1 -8 0 -9t9 -1h266q19 0 19 -8q0 -3 -8 -16l-215 -322q-13 -19 -13 -24q0 -4 10 -4l194 7q9 0 11 1.5t3 11.5l3 60q1 9 4.5 11.5t15.5 1.5q9 -1 9 -9q0 -23 -5 -96q-1 -11 -3 -13t-13 -2h-315q-22 0 -22 10z " />
+<glyph horiz-adv-x="413" d="M106 597q0 2 5 2h12q1 0 8 -6l81 -70q4 -3 8 0l81 70q6 6 8 6h12q5 0 5 -2q0 -1 -3 -6l-79 -119q-6 -10 -8.5 -11.5t-9.5 -1.5h-20q-7 0 -9.5 1.5t-8.5 11.5l-79 119q-3 5 -3 6zM30 10q0 4 10 20l228 327l4 6t3.5 5.5t1.5 3.5q0 4 -14 4l-165 -5h-9t-6.5 -0.5t-4 -0.5 t-3 -2t-1 -4.5l-1.5 -7.5l-7 -50q-2 -12 -13 -12q-15 0 -15 10q0 2 3 22.5l7 49t6 46.5q2 6 8 6q9 0 14.5 -1.5t4.5 -6.5l-1 -9q-1 -8 0 -9t9 -1h266q19 0 19 -8q0 -3 -8 -16l-215 -322q-13 -19 -13 -24q0 -4 10 -4l194 7q9 0 11 1.5t3 11.5l3 60q1 9 4.5 11.5t15.5 1.5 q9 -1 9 -9q0 -23 -5 -96q-1 -11 -3 -13t-13 -2h-315q-22 0 -22 10z" />
+<glyph horiz-adv-x="413" d="M165 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM30 10q0 4 10 20l228 327l4 6t3.5 5.5t1.5 3.5q0 4 -14 4l-165 -5h-9t-6.5 -0.5t-4 -0.5t-3 -2t-1 -4.5l-1.5 -7.5l-7 -50q-2 -12 -13 -12q-15 0 -15 10q0 2 3 22.5 l7 49t6 46.5q2 6 8 6q9 0 14.5 -1.5t4.5 -6.5l-1 -9q-1 -8 0 -9t9 -1h266q19 0 19 -8q0 -3 -8 -16l-215 -322q-13 -19 -13 -24q0 -4 10 -4l194 7q9 0 11 1.5t3 11.5l3 60q1 9 4.5 11.5t15.5 1.5q9 -1 9 -9q0 -23 -5 -96q-1 -11 -3 -13t-13 -2h-315q-22 0 -22 10z" />
+<glyph horiz-adv-x="283" d="M86 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74v-189 q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="475" d="M30 91q0 27 19.5 54t33 37l36.5 26q9 6 7 8l-5 5q-36 35 -36 81q0 45 32 76.5t78 31.5q36 0 64 -22.5t28 -55.5q0 -13 -4 -24.5t-9.5 -19.5t-15 -17t-15.5 -13t-17.5 -11t-13.5 -9q-9 -6 -9 -7t9 -10q46 -38 96 -91l8 -8q1 0 8 11q34 55 34 70q0 5 -4 5h-38q-8 0 -10.5 3 t-2.5 10q0 14 14 14q1 0 22.5 -1t42.5 -1q15 0 34 1t23 1q7 0 9 -2.5t2 -11.5q0 -13 -12 -13h-34q-1 0 -68 -90l-6 -10q0 -2 7 -11q27 -38 36 -53q11 -19 39 -19h22q9 0 9 -13q0 -12 -7 -12q-20 0 -40.5 -3t-33.5 -6t-16 -3q-9 0 -13 7q-13 23 -37 56q-1 1 -2 3q-3 4 -6 1 l-2 -2q-22 -25 -61 -47.5t-77 -22.5q-53 0 -85.5 30t-32.5 78zM90 117q0 -34 26.5 -62t67.5 -28q27 0 47.5 8t26.5 14l18 18q3 3 3 5t-3 6q-3 3 -4 5q-28 39 -111 107q-10 8 -12 8q-3 0 -17 -10q-42 -30 -42 -71zM131 325q0 -38 37 -69q12 -10 14 -10q6 0 26 15q32 24 32 65 q0 23 -14 39t-37 16q-28 0 -43 -15.5t-15 -40.5z" />
+<glyph horiz-adv-x="574" d="M263 -153q0 21 22 41.5t30 20.5q10 0 29.5 -11.5t28.5 -11.5q18 0 24 16t6 51q0 44 -1.5 138t-1.5 140v72q0 73 -2 73h-77q-13 0 -13 15q0 12 13 12l45 -1q44 -1 70 -1q30 0 66.5 1t37.5 1q9 0 9 -13q0 -14 -10 -14h-57q-5 0 -5 -74v-217q0 -44 -2.5 -71.5t-17.5 -66.5 t-44 -70q-48 -52 -99 -52q-17 0 -34 6.5t-17 15.5zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74v-189q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1 t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="502" d="M25 8q0 17 8 17h59q4 0 6 161q0 6 -4 6h-63q-2 0 -2.5 12t2.5 12h61q7 0 7 9v151h-60q-8 0 -8 14q0 13 8 13h6q6 0 16 -0.5t22 -1t26 -0.5h27q23 0 58 1.5t45 1.5q102 0 162.5 -54t60.5 -156q0 -95 -63 -145.5t-150 -50.5q-19 0 -59 1t-59 1q-17 0 -39.5 -0.5t-39 -1 t-18.5 -0.5q-9 0 -9 10zM172 63q0 -35 3 -38q4 -2 35 -2q50 0 85.5 16t53.5 43.5t25.5 55.5t7.5 60q0 80 -43 131.5t-136 51.5q-17 0 -25 -1q-6 0 -6 -70v-85q0 -7 1 -8t8 -1h101q3 0 3 -12t-3 -12h-101q-9 0 -9 -6v-123z" />
+<glyph horiz-adv-x="502" d="M25 8q0 17 8 17h59q4 0 6 161q0 6 -4 6h-63q-2 0 -2.5 12t2.5 12h61q7 0 7 9v151h-60q-8 0 -8 14q0 13 8 13h6q6 0 16 -0.5t22 -1t26 -0.5h27q23 0 58 1.5t45 1.5q102 0 162.5 -54t60.5 -156q0 -95 -63 -145.5t-150 -50.5q-19 0 -59 1t-59 1q-17 0 -39.5 -0.5t-39 -1 t-18.5 -0.5q-9 0 -9 10zM172 63q0 -35 3 -38q4 -2 35 -2q50 0 85.5 16t53.5 43.5t25.5 55.5t7.5 60q0 80 -43 131.5t-136 51.5q-17 0 -25 -1q-6 0 -6 -70v-85q0 -7 1 -8t8 -1h101q3 0 3 -12t-3 -12h-101q-9 0 -9 -6v-123z" />
+<glyph horiz-adv-x="574" d="M263 -153q0 21 22 41.5t30 20.5q10 0 29.5 -11.5t28.5 -11.5q18 0 24 16t6 51q0 44 -1.5 138t-1.5 140v72q0 73 -2 73h-77q-13 0 -13 15q0 12 13 12l45 -1q44 -1 70 -1q30 0 66.5 1t37.5 1q9 0 9 -13q0 -14 -10 -14h-57q-5 0 -5 -74v-217q0 -44 -2.5 -71.5t-17.5 -66.5 t-44 -70q-48 -52 -99 -52q-17 0 -34 6.5t-17 15.5zM25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -74v-189q0 -88 8 -88h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1 t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="257" d="M20 645q0 2 2 16q1 6 2 6.5t8 1.5q120 9 123 9q5 0 6 -2.5t1 -12.5q1 -160 3.5 -332t2.5 -267q0 -39 8 -39h39q8 0 10.5 -3t2.5 -10q0 -6 -0.5 -8t-3.5 -4t-9 -2q-8 0 -35.5 1t-43.5 1q-12 0 -44.5 -1t-48.5 -1q-9 0 -11 2.5t-2 11.5q0 13 12 13h52q4 0 4 85 q0 395 -11 517q-7 18 -11 19q-3 0 -24.5 -2t-23.5 -2q-8 0 -8 3z" />
+<glyph horiz-adv-x="445" d="M25 13q0 12 9 12h60q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l36 -1q36 -1 62 -1q30 0 73.5 1t44.5 1q9 0 9 -14q0 -13 -11 -13h-70q-6 0 -6 -74v-189q0 -83 8 -83q98 0 186 8q12 1 16.5 5t5.5 18l7 57q1 9 15 7t14 -9q0 -3 -1.5 -16.5l-4.5 -39.5l-6 -52 q-1 -11 -19 -11q-11 0 -126 1.5t-131 1.5q-36 0 -72 -1l-37 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="592" d="M40 15q0 9 2.5 10.5t14.5 1.5h62q9 0 9 292v231q0 89 -7 89h-58q-10 0 -13 2.5t-3 12.5t3.5 12.5t16.5 2.5q6 0 49.5 -1.5t60.5 -1.5q16 0 61.5 1.5t56.5 1.5q12 0 14.5 -2t2.5 -13q0 -9 -3 -12t-15 -3h-70q-9 0 -9 -215v-277q0 -116 8 -116q227 0 293 6q13 1 17 4t6 19 l12 84q2 8 11 8q20 0 20 -10q0 -3 -4.5 -30l-9.5 -60t-7 -44q-1 -11 -22 -11q-11 0 -179.5 1.5t-184.5 1.5t-63.5 -1.5t-58.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph horiz-adv-x="445" d="M25 13q0 12 9 12h60q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l36 -1q36 -1 62 -1q30 0 73.5 1t44.5 1q9 0 9 -14q0 -13 -11 -13h-70q-6 0 -6 -74v-189q0 -83 8 -83q98 0 186 8q12 1 16.5 5t5.5 18l7 57q1 9 15 7t14 -9q0 -3 -1.5 -16.5l-4.5 -39.5l-6 -52 q-1 -11 -19 -11q-11 0 -126 1.5t-131 1.5q-36 0 -72 -1l-37 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="463" d="M176 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 388q0 14 10 14q2 0 44 -0.5t59 -0.5q18 0 58 1t50 1q31 0 54 -3t49 -12t40 -30t14 -53q0 -23 -10.5 -41.5t-25.5 -28.5t-30.5 -16.5t-26 -9t-10.5 -3.5l12 -3 q13 -3 31.5 -9t36.5 -16.5t30.5 -30.5t12.5 -46q0 -102 -177 -102q-14 0 -54 0.5t-55 0.5q-19 0 -42.5 -0.5t-39.5 -1t-17 -0.5q-9 0 -9 12q0 15 9 15h61q6 0 6 54v158q0 139 -8 139h-61q-11 0 -11 12zM178 129q0 -104 8 -104h47q60 0 88.5 23t28.5 56q0 89 -120 89h-45 q-7 0 -7 -7v-57zM178 220q0 -6 10 -6h50q6 0 18 -0.5t13 -0.5q29 0 45.5 24.5t16.5 59.5q0 41 -30 63t-79 22q-32 0 -41 -2q-3 -2 -3 -66v-94z" />
+<glyph horiz-adv-x="502" d="M188 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 8q0 17 8 17h59q7 0 7 316v35h-60q-8 0 -8 14q0 13 8 13h6q6 0 16 -0.5t22 -1t26 -0.5h27q23 0 58 1.5t45 1.5q102 0 162.5 -54t60.5 -156q0 -95 -63 -145.5 t-150 -50.5q-19 0 -59 1t-59 1q-17 0 -39.5 -0.5t-39 -1t-18.5 -0.5q-9 0 -9 10zM172 63q0 -35 3 -38q4 -2 35 -2q50 0 85.5 16t53.5 43.5t25.5 55.5t7.5 60q0 80 -43 131.5t-136 51.5q-17 0 -25 -1q-6 0 -6 -70v-247z" />
+<glyph horiz-adv-x="444" d="M189 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 389q0 15 9 15q1 0 17.5 -1t41 -1.5t44.5 -0.5q176 0 202 1q30 1 35.5 2.5t6.5 7.5q0 3 0.5 6t0.5 4.5t0.5 3.5t1.5 2.5t3 1t5 0.5q17 0 17 -6q0 -2 -1.5 -41 t-1.5 -67q0 -5 -16 -5q-12 0 -12 9q0 1 0.5 24t0.5 25q0 7 -118 7h-82q-4 0 -4 -65q0 -69 1 -84v-6t1 -3.5t3 -1.5h6h27q143 0 143 7v38q0 4 12 4q13 0 13 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28t0.5 -30q0 -6 -13 -6q-12 0 -12 7v41q0 7 -101 7h-69q-7 0 -8.5 -2t-1.5 -9 q0 -159 4 -159h77q7 0 7 -15q0 -12 -7 -12t-57 1t-59 1t-50 -1t-48 -1q-8 0 -8 13q0 14 10 14h53q5 0 5 117v96q0 138 -9 138h-57q-12 0 -12 13z" />
+<glyph horiz-adv-x="567" d="M234 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 13q0 12 9 12h60q4 0 4 144v62q0 145 -4 145h-55q-13 0 -13 15q0 7 2 9.5t10 2.5l34 -1q34 -1 60 -1q19 0 62 1t46 1q9 0 9 -13q0 -14 -12 -14h-59q-4 0 -4 -74v-74 q0 -7 1.5 -9t7.5 -2h208q7 0 8 1t1 8v68q0 82 -6 82h-57q-10 0 -10 16q0 11 10 11q3 0 16.5 -0.5t34.5 -1t43 -0.5q24 0 47 0.5t36.5 1t14.5 0.5q7 0 7 -13q0 -14 -10 -14h-49q-1 0 -1 -138q0 -213 3 -213h57q6 0 6 -15q0 -12 -6 -12l-33 1q-33 1 -67 1q-33 0 -68 -1t-36 -1 q-8 0 -8 13q0 14 9 14h63q4 0 4 88v73q0 7 -0.5 8t-4.5 1h-213h-4t-2.5 -1t-1.5 -3v-6q0 -160 7 -160h59q7 0 7 -12q0 -15 -7 -15l-35 1q-35 1 -69 1q-31 0 -66.5 -1t-36.5 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="705" d="M300 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 13q0 12 9 12h62q3 0 6.5 87.5t5.5 175.5l1 88h-70q-13 0 -13 15q0 12 13 12l36 -1q36 -1 62 -1h59q7 0 10 -6q150 -301 155 -301q2 0 15.5 26.5t32 68l36 80.5 l33.5 75.5t18 41.5q5 11 6.5 13t7.5 2h51q30 0 62.5 1t33.5 1q9 0 9 -13q0 -14 -12 -14h-53q-5 0 -5 -74q0 -277 10 -277h67q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15q0 12 9 12h62q5 0 5 120q0 225 -7 225q-5 0 -140 -303 q-6 -14 -15.5 -29.5t-16.5 -29.5q-5 -8 -10 -8q-7 0 -13 10l-167 327q-12 24 -15 24q-4 0 -4 -29q0 -307 11 -307h69q7 0 7 -12q0 -15 -7 -15q-1 0 -31 1t-63 1q-36 0 -62 -1l-26 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="446" d="M178 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 388q0 14 10 14q2 0 45 -0.5t60 -0.5q18 0 58 1t50 1q168 0 168 -113q0 -118 -172 -118q-14 0 -34.5 1t-23.5 1q-7 0 -7 -7v-38q0 -104 9 -104h74q7 0 7 -12 q0 -15 -7 -15l-42 1q-42 1 -76 1q-19 0 -43.5 -0.5t-42 -1t-18.5 -0.5q-9 0 -9 12q0 15 9 15h61q6 0 6 54v158q0 139 -8 139h-63q-11 0 -11 12zM179 200q0 -9 10 -9q76 0 115.5 19.5t39.5 69.5q0 47 -32 72.5t-88 25.5q-33 0 -42 -2q-3 -2 -3 -62v-114z" />
+<glyph horiz-adv-x="369" d="M127 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM40 292q0 53 39 87t96 34q46 0 99 -24q1 0 5.5 -2.5t6 -1.5t1.5 7l1 9q0 7 12 7q17 0 17 -8q0 -2 -1.5 -21t-3 -44.5t-1.5 -43.5q0 -7 -10 -7h-3q-14 0 -14 7q0 1 1 20 t1 22q0 6 -14.5 19t-41 25t-52.5 12t-51 -18.5t-25 -50.5q0 -29 24.5 -48t59.5 -30t69.5 -24t59 -40.5t24.5 -69.5q0 -63 -45.5 -91.5t-117.5 -28.5q-29 0 -59.5 6t-48 12.5t-18.5 9.5q-4 92 -4 106q0 3 14 5q10 1 12 -0.5t2 -8.5v-4l3 -49q1 -17 40 -32t77 -15q86 0 86 68 q0 25 -24.5 41.5t-60 27.5t-71 24.5t-60 42t-24.5 70.5z" />
+<glyph horiz-adv-x="464" d="M183 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM20 307q0 11 13 111q0 3 11 3q12 0 12 -4v-14q0 -2 24 -2h275q62 0 63 5q1 3 1.5 10t0.5 11q0 3 12 3q11 0 11 -7l1 -107q0 -7 -14 -7q-11 0 -11 9v54q0 4 -65 4h-73 q-9 0 -9 -101v-184q0 -66 10 -66h69q7 0 7 -12q0 -15 -7 -15q-1 0 -41 1t-74 1q-36 0 -74 -1l-39 -1q-8 0 -8 15q0 12 9 12h65q4 0 6 84l3 210q0 57 -5 57h-45q-95 0 -96 -10l-7 -60q-1 -4 -13 -4t-12 5z" />
+<glyph horiz-adv-x="463" d="M176 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 388q0 14 10 14q2 0 44 -0.5t59 -0.5q18 0 58 1t50 1q31 0 54 -3t49 -12t40 -30t14 -53q0 -23 -10.5 -41.5t-25.5 -28.5t-30.5 -16.5t-26 -9t-10.5 -3.5l12 -3 q13 -3 31.5 -9t36.5 -16.5t30.5 -30.5t12.5 -46q0 -102 -177 -102q-14 0 -54 0.5t-55 0.5q-19 0 -42.5 -0.5t-39.5 -1t-17 -0.5q-9 0 -9 12q0 15 9 15h61q6 0 6 54v158q0 139 -8 139h-61q-11 0 -11 12zM178 129q0 -104 8 -104h47q60 0 88.5 23t28.5 56q0 89 -120 89h-45 q-7 0 -7 -7v-57zM178 220q0 -6 10 -6h50q6 0 18 -0.5t13 -0.5q29 0 45.5 24.5t16.5 59.5q0 41 -30 63t-79 22q-32 0 -41 -2q-3 -2 -3 -66v-94z" />
+<glyph horiz-adv-x="502" d="M188 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 8q0 17 8 17h59q7 0 7 316v35h-60q-8 0 -8 14q0 13 8 13h6q6 0 16 -0.5t22 -1t26 -0.5h27q23 0 58 1.5t45 1.5q102 0 162.5 -54t60.5 -156q0 -95 -63 -145.5 t-150 -50.5q-19 0 -59 1t-59 1q-17 0 -39.5 -0.5t-39 -1t-18.5 -0.5q-9 0 -9 10zM172 63q0 -35 3 -38q4 -2 35 -2q50 0 85.5 16t53.5 43.5t25.5 55.5t7.5 60q0 80 -43 131.5t-136 51.5q-17 0 -25 -1q-6 0 -6 -70v-247z" />
+<glyph horiz-adv-x="444" d="M189 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 389q0 15 9 15q1 0 17.5 -1t41 -1.5t44.5 -0.5q176 0 202 1q30 1 35.5 2.5t6.5 7.5q0 3 0.5 6t0.5 4.5t0.5 3.5t1.5 2.5t3 1t5 0.5q17 0 17 -6q0 -2 -1.5 -41 t-1.5 -67q0 -5 -16 -5q-12 0 -12 9q0 1 0.5 24t0.5 25q0 7 -118 7h-82q-4 0 -4 -65q0 -69 1 -84v-6t1 -3.5t3 -1.5h6h27q143 0 143 7v38q0 4 12 4q13 0 13 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28t0.5 -30q0 -6 -13 -6q-12 0 -12 7v41q0 7 -101 7h-69q-7 0 -8.5 -2t-1.5 -9 q0 -159 4 -159h77q7 0 7 -15q0 -12 -7 -12t-57 1t-59 1t-50 -1t-48 -1q-8 0 -8 13q0 14 10 14h53q5 0 5 117v96q0 138 -9 138h-57q-12 0 -12 13z" />
+<glyph horiz-adv-x="567" d="M234 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 13q0 12 9 12h60q4 0 4 144v62q0 145 -4 145h-55q-13 0 -13 15q0 7 2 9.5t10 2.5l34 -1q34 -1 60 -1q19 0 62 1t46 1q9 0 9 -13q0 -14 -12 -14h-59q-4 0 -4 -74v-74 q0 -7 1.5 -9t7.5 -2h208q7 0 8 1t1 8v68q0 82 -6 82h-57q-10 0 -10 16q0 11 10 11q3 0 16.5 -0.5t34.5 -1t43 -0.5q24 0 47 0.5t36.5 1t14.5 0.5q7 0 7 -13q0 -14 -10 -14h-49q-1 0 -1 -138q0 -213 3 -213h57q6 0 6 -15q0 -12 -6 -12l-33 1q-33 1 -67 1q-33 0 -68 -1t-36 -1 q-8 0 -8 13q0 14 9 14h63q4 0 4 88v73q0 7 -0.5 8t-4.5 1h-213h-4t-2.5 -1t-1.5 -3v-6q0 -160 7 -160h59q7 0 7 -12q0 -15 -7 -15l-35 1q-35 1 -69 1q-31 0 -66.5 -1t-36.5 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="705" d="M300 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 13q0 12 9 12h62q3 0 6.5 87.5t5.5 175.5l1 88h-70q-13 0 -13 15q0 12 13 12l36 -1q36 -1 62 -1h59q7 0 10 -6q150 -301 155 -301q2 0 15.5 26.5t32 68l36 80.5 l33.5 75.5t18 41.5q5 11 6.5 13t7.5 2h51q30 0 62.5 1t33.5 1q9 0 9 -13q0 -14 -12 -14h-53q-5 0 -5 -74q0 -277 10 -277h67q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15q0 12 9 12h62q5 0 5 120q0 225 -7 225q-5 0 -140 -303 q-6 -14 -15.5 -29.5t-16.5 -29.5q-5 -8 -10 -8q-7 0 -13 10l-167 327q-12 24 -15 24q-4 0 -4 -29q0 -307 11 -307h69q7 0 7 -12q0 -15 -7 -15q-1 0 -31 1t-63 1q-36 0 -62 -1l-26 -1q-8 0 -8 15z" />
+<glyph horiz-adv-x="446" d="M178 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM25 388q0 14 10 14q2 0 45 -0.5t60 -0.5q18 0 58 1t50 1q168 0 168 -113q0 -118 -172 -118q-14 0 -34.5 1t-23.5 1q-7 0 -7 -7v-38q0 -104 9 -104h74q7 0 7 -12 q0 -15 -7 -15l-42 1q-42 1 -76 1q-19 0 -43.5 -0.5t-42 -1t-18.5 -0.5q-9 0 -9 12q0 15 9 15h61q6 0 6 54v158q0 139 -8 139h-63q-11 0 -11 12zM179 200q0 -9 10 -9q76 0 115.5 19.5t39.5 69.5q0 47 -32 72.5t-88 25.5q-33 0 -42 -2q-3 -2 -3 -62v-114z" />
+<glyph horiz-adv-x="369" d="M127 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM40 292q0 53 39 87t96 34q46 0 99 -24q1 0 5.5 -2.5t6 -1.5t1.5 7l1 9q0 7 12 7q17 0 17 -8q0 -2 -1.5 -21t-3 -44.5t-1.5 -43.5q0 -7 -10 -7h-3q-14 0 -14 7q0 1 1 20 t1 22q0 6 -14.5 19t-41 25t-52.5 12t-51 -18.5t-25 -50.5q0 -29 24.5 -48t59.5 -30t69.5 -24t59 -40.5t24.5 -69.5q0 -63 -45.5 -91.5t-117.5 -28.5q-29 0 -59.5 6t-48 12.5t-18.5 9.5q-4 92 -4 106q0 3 14 5q10 1 12 -0.5t2 -8.5v-4l3 -49q1 -17 40 -32t77 -15q86 0 86 68 q0 25 -24.5 41.5t-60 27.5t-71 24.5t-60 42t-24.5 70.5z" />
+<glyph horiz-adv-x="464" d="M183 533q0 25 19.5 40t40.5 15q18 0 30 -10t12 -30q0 -24 -19 -40t-42 -16q-17 0 -29 10.5t-12 30.5zM20 307q0 11 13 111q0 3 11 3q12 0 12 -4v-14q0 -2 24 -2h275q62 0 63 5q1 3 1.5 10t0.5 11q0 3 12 3q11 0 11 -7l1 -107q0 -7 -14 -7q-11 0 -11 9v54q0 4 -65 4h-73 q-9 0 -9 -101v-184q0 -66 10 -66h69q7 0 7 -12q0 -15 -7 -15q-1 0 -41 1t-74 1q-36 0 -74 -1l-39 -1q-8 0 -8 15q0 12 9 12h65q4 0 6 84l3 210q0 57 -5 57h-45q-95 0 -96 -10l-7 -60q-1 -4 -13 -4t-12 5z" />
+<glyph horiz-adv-x="686" d="M5 11q0 14 11 14h31q4 0 23 23.5t53.5 72.5l57.5 82l65 95l46 68q5 6 4.5 8t-9.5 2h-50q-10 0 -10 13q0 14 5 14l24 -1q25 0 58 -0.5t54 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58 q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5 h17q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5t-100.5 1t-139 0.5q-27 0 -68 -1t-43 -1q-8 0 -8 12q0 15 11 15h62q5 0 5 36v97h-138q-8 0 -19 -18q-62 -102 -63 -115h63q8 0 8 -12q0 -15 -12 -15q-7 0 -40.5 1t-44.5 1 t-37 -1t-33 -1q-10 0 -10 13zM202 182q0 -3 7 -3h122v135q0 60 -3 60l-1 -2q-1 -1 -2.5 -3t-2.5 -4q-10 -16 -42 -63.5l-55 -82t-23 -37.5z" />
+<glyph horiz-adv-x="701" d="M30 190q0 93 60.5 158t175.5 65q13 0 55 -6t62 -6q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5 t-0.5 -28.5t0.5 -28.5t0.5 -29.5q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t42.5 0.5h16q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7 q-1 0 -36.5 0.5t-100.5 1t-139 0.5q-7 0 -53.5 -6t-84.5 -6q-103 0 -161 57.5t-58 144.5zM113 210q0 -96 39.5 -148t113.5 -52q61 0 80 14v290l-3 56q-19 19 -80 19q-67 0 -108.5 -50t-41.5 -129z" />
+<glyph horiz-adv-x="445" d="M25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -51q0 -5 1 -6.5t6 -1.5q42 2 62 2q168 0 168 -113q0 -118 -172 -118q-14 0 -34.5 1t-23.5 1q-7 0 -7 -6 q2 -59 8 -59h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15zM178 116q0 -9 10 -9q76 0 115.5 19.5t39.5 69.5q0 47 -32 72.5t-88 25.5q-27 0 -38 -1q-5 -1 -6 -2t-1 -7v-168z" />
+<glyph horiz-adv-x="686" d="M5 11q0 14 11 14h31q4 0 23 23.5t53.5 72.5l57.5 82l65 95l46 68q5 6 4.5 8t-9.5 2h-50q-10 0 -10 13q0 14 5 14l24 -1q25 0 58 -0.5t54 -0.5q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58 q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5t-0.5 -28.5t0.5 -28.5t0.5 -29.5q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t41.5 0.5 h17q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7q-1 0 -36.5 0.5t-100.5 1t-139 0.5q-27 0 -68 -1t-43 -1q-8 0 -8 12q0 15 11 15h62q5 0 5 36v97h-138q-8 0 -19 -18q-62 -102 -63 -115h63q8 0 8 -12q0 -15 -12 -15q-7 0 -40.5 1t-44.5 1 t-37 -1t-33 -1q-10 0 -10 13zM202 182q0 -3 7 -3h122v135q0 60 -3 60l-1 -2q-1 -1 -2.5 -3t-2.5 -4q-10 -16 -42 -63.5l-55 -82t-23 -37.5z" />
+<glyph horiz-adv-x="701" d="M30 190q0 93 60.5 158t175.5 65q13 0 55 -6t62 -6q45 0 131.5 1t93.5 1q4 0 4 23q0 6 16 6q12 0 12 -7q0 -2 -0.5 -47t-0.5 -64q0 -6 -13 -6q-15 0 -15 6v57q0 5 -130 5h-58q-4 0 -4 -52v-98q0 -15 8 -15h34q126 0 126 7v43q0 4 12 4q14 0 14 -3q0 -10 -0.5 -29.5 t-0.5 -28.5t0.5 -28.5t0.5 -29.5q0 -6 -14 -6q-12 0 -12 7v36q0 7 -84 7h-73h-6t-3.5 -1t-1.5 -3v-6q0 -23 0.5 -50.5t0.5 -42.5t0.5 -29.5t2 -20t3.5 -5.5h43.5t55 0.5l53 1t42.5 0.5h16q8 0 9.5 2t1.5 13v57q0 6 14 6q15 0 15 -6q0 -17 -0.5 -55t-0.5 -46q0 -7 -12 -7 q-1 0 -36.5 0.5t-100.5 1t-139 0.5q-7 0 -53.5 -6t-84.5 -6q-103 0 -161 57.5t-58 144.5zM113 210q0 -96 39.5 -148t113.5 -52q61 0 80 14v290l-3 56q-19 19 -80 19q-67 0 -108.5 -50t-41.5 -129z" />
+<glyph horiz-adv-x="445" d="M25 13q0 12 9 12h62q5 0 5 84v122q0 145 -4 145h-55q-13 0 -13 15q0 12 13 12l34 -1q35 -1 61 -1q30 0 68.5 1t39.5 1q9 0 9 -13q0 -14 -12 -14h-59q-5 0 -5 -51q0 -5 1 -6.5t6 -1.5q42 2 62 2q168 0 168 -113q0 -118 -172 -118q-14 0 -34.5 1t-23.5 1q-7 0 -7 -6 q2 -59 8 -59h65q7 0 7 -12q0 -15 -7 -15q-1 0 -39 1t-71 1q-36 0 -72 -1l-36 -1q-8 0 -8 15zM178 116q0 -9 10 -9q76 0 115.5 19.5t39.5 69.5q0 47 -32 72.5t-88 25.5q-27 0 -38 -1q-5 -1 -6 -2t-1 -7v-168z" />
+<glyph horiz-adv-x="258" d="M25 291q0 12 6 25.5t12 14.5t91.5 4t91.5 3q2 0 2 -9q0 -33 -8 -33q-104 -8 -191 -8q-4 0 -4 3z" />
+<glyph horiz-adv-x="258" d="M25 291q0 12 6 25.5t12 14.5t91.5 4t91.5 3q2 0 2 -9q0 -33 -8 -33q-104 -8 -191 -8q-4 0 -4 3z" />
+<glyph horiz-adv-x="258" d="M25 291q0 12 6 25.5t12 14.5t91.5 4t91.5 3q2 0 2 -9q0 -33 -8 -33q-104 -8 -191 -8q-4 0 -4 3z" />
+<glyph horiz-adv-x="258" d="M25 291q0 12 6 25.5t12 14.5t91.5 4t91.5 3q2 0 2 -9q0 -33 -8 -33q-104 -8 -191 -8q-4 0 -4 3z" />
+<glyph d="M10 295q0 12 2 14.5t11 2.5h451q11 0 13.5 -2t2.5 -10v-12q0 -9 -2.5 -11t-13.5 -2h-444q-15 0 -17.5 2.5t-2.5 17.5z" />
+<glyph horiz-adv-x="750" d="M10 295q0 12 2 14.5t11 2.5h701q11 0 13.5 -2t2.5 -10v-12q0 -9 -2.5 -11t-13.5 -2h-694q-15 0 -17.5 2.5t-2.5 17.5z" />
+<glyph horiz-adv-x="750" d="M10 295q0 12 2 14.5t11 2.5h701q11 0 13.5 -2t2.5 -10v-12q0 -9 -2.5 -11t-13.5 -2h-694q-15 0 -17.5 2.5t-2.5 17.5z" />
+<glyph horiz-adv-x="408" d="M50 318q0 4 55 55l36 34.5l31 30.5l12 11q2 0 8 -5.5t6 -6.5q0 -3 -31 -58t-31 -61t31 -61t31 -58q0 -1 -6 -6.5t-8 -5.5l-12 11l-31 30.5l-36 34.5q-55 51 -55 55zM200 318q0 4 55 55l36 34.5l31 30.5l12 11q2 0 8 -5.5t6 -6.5q0 -3 -31 -58t-31 -61t31 -61t31 -58 q0 -1 -6 -6.5t-8 -5.5l-12 11l-31 30.5l-36 34.5q-55 51 -55 55z" />
+<glyph horiz-adv-x="408" d="M60 199q0 3 31 58t31 61t-31 61t-31 58q0 1 6 6.5t8 5.5l12 -11l31 -30.5l36 -34.5q55 -51 55 -55t-55 -55l-36 -34.5l-31 -30.5l-12 -11q-2 0 -8 5.5t-6 6.5zM210 199q0 3 31 58t31 61t-31 61t-31 58q0 1 6 6.5t8 5.5l12 -11l31 -30.5l36 -34.5q55 -51 55 -55t-55 -55 l-36 -34.5l-31 -30.5l-12 -11q-2 0 -8 5.5t-6 6.5z" />
+<glyph horiz-adv-x="258" d="M50 318q0 4 55 55l36 34.5l31 30.5l12 11q2 0 8 -5.5t6 -6.5q0 -3 -31 -58t-31 -61t31 -61t31 -58q0 -1 -6 -6.5t-8 -5.5l-12 11l-31 30.5l-36 34.5q-55 51 -55 55z" />
+<glyph horiz-adv-x="258" d="M60 199q0 3 31 58t31 61t-31 61t-31 58q0 1 6 6.5t8 5.5l12 -11l31 -30.5l36 -34.5q55 -51 55 -55t-55 -55l-36 -34.5l-31 -30.5l-12 -11q-2 0 -8 5.5t-6 6.5z" />
+<glyph horiz-adv-x="279" d="M40 315q0 73 19 142t45 114.5t53.5 80.5t45.5 51t20 16q6 0 11 -4t5 -9l-8 -8q-8 -9 -20.5 -25.5t-27.5 -39t-30 -54.5t-27.5 -68.5t-20.5 -84.5t-8 -99q0 -79 14 -150t34.5 -117.5t41 -80.5t34.5 -53t14 -22q0 -14 -16 -14q-4 0 -22.5 21.5t-45 62.5t-51.5 91.5 t-42.5 117.5t-17.5 132z" />
+<glyph horiz-adv-x="279" d="M40 -97l8 9q8 8 20.5 24.5t27.5 39t30 54.5t27.5 68.5t20.5 84.5t8 99q0 79 -14 150t-34.5 117.5t-41 80.5t-34.5 53t-14 22q0 14 16 14q4 0 22.5 -21.5t45 -62.5t51.5 -91.5t42.5 -117.5t17.5 -132q0 -73 -19 -142t-45 -114.5t-53.5 -80.5t-45.5 -51t-20 -16q-6 0 -11 4 t-5 9z" />
+<glyph horiz-adv-x="296" d="M80 -96v801q0 9 2 12t10 3h151q9 0 11 -1.5t2 -7.5v-14q0 -9 -2 -11t-11 -2h-105q-9 0 -11 -2t-2 -10v-735q0 -12 13 -12h105q6 0 8.5 -0.5t3.5 -3t1 -9.5v-12q0 -6 -2 -8.5t-11 -2.5h-150q-9 0 -11 2.5t-2 12.5z" />
+<glyph horiz-adv-x="296" d="M40 -88q0 9 2 11t11 2h105q9 0 11 2t2 10v735v6t-1.5 3.5t-4 2t-7.5 0.5h-105q-6 0 -8.5 0.5t-3.5 3t-1 9.5v12q0 7 2 9t11 2h150q9 0 11 -2.5t2 -12.5v-801q0 -9 -2 -12t-10 -3h-151q-9 0 -11 1.5t-2 7.5v14z" />
+<glyph horiz-adv-x="307" d="M40 304q0 6 5.5 9t14.5 4t18.5 7.5t18.5 18t14.5 38t5.5 65.5v80q0 36 0.5 53.5t3 42.5t8 36.5t15 26t24.5 20t36.5 10t50.5 4.5q8 0 10 -2t2 -11t-2.5 -11t-11.5 -2q-43 0 -63.5 -19t-20.5 -73v-149q0 -72 -9.5 -100t-48.5 -41q-15 -6 -15 -7t15 -7q39 -13 48.5 -41 t9.5 -100v-149q0 -54 20.5 -73t63.5 -19q6 0 8.5 -0.5t4 -3.5t1.5 -9q0 -9 -2 -11t-10 -2q-29 0 -50.5 4.5t-36.5 10t-24.5 20t-15 26t-8 36.5t-3 42.5t-0.5 53.5v80q0 39 -5.5 65.5t-14.5 38t-18.5 18t-18.5 7.5t-14.5 4t-5.5 9z" />
+<glyph horiz-adv-x="307" d="M40 -98q0 9 3 11t11 2q43 0 63.5 19t20.5 73v149q0 72 9.5 100t48.5 41q15 6 15 7t-15 7q-39 13 -48.5 41t-9.5 100v149q0 54 -20.5 73t-63.5 19q-6 0 -8.5 0.5t-4 3.5t-1.5 9q0 9 2 11t10 2q29 0 50.5 -4.5t36.5 -10t24.5 -20t15 -26t8 -36.5t3 -42.5t0.5 -53.5v-80 q0 -39 5.5 -65.5t14.5 -38t18.5 -18t18.5 -7.5t14.5 -4t5.5 -9t-5.5 -9t-14.5 -4t-18.5 -7.5t-18.5 -18t-14.5 -38t-5.5 -65.5v-80q0 -36 -0.5 -53.5t-3 -42.5t-8 -36.5t-15 -26t-24.5 -20t-36.5 -10t-50.5 -4.5q-8 0 -10 2t-2 11z" />
+<glyph horiz-adv-x="360" d="M28 201q0 97 46.5 153.5t106.5 56.5q67 0 109 -55t42 -150q0 -90 -41 -153.5t-112 -63.5q-68 0 -109.5 59t-41.5 153zM84 198q0 -89 28.5 -135.5t68.5 -46.5q50 0 74.5 59.5t24.5 131.5q0 64 -25.5 119.5t-73.5 55.5q-49 0 -73 -49t-24 -135z" />
+<glyph horiz-adv-x="360" d="M95 14q0 7 2.5 8.5t11.5 1.5h60q1 9 1 50v75q0 181 -2 217q-1 8 -5 8q-1 0 -29.5 -1.5t-30.5 -1.5q-8 0 -8 6v12q0 6 11 6q28 1 49.5 3l33 3t18.5 2.5t10 2t4 0.5q7 0 7 -14q0 -65 -0.5 -176.5t-0.5 -169.5q0 -21 1 -22h44q7 0 7 -10q0 -16 -8 -16q-1 0 -23.5 1t-47.5 1 q-27 0 -58 -1t-36 -1q-7 0 -9 3t-2 13z" />
+<glyph horiz-adv-x="360" d="M40 321q0 7 16.5 28t49 41.5t67.5 20.5q57 0 86.5 -37.5t29.5 -79.5q0 -102 -160 -219q-18 -14 -24 -25h185q3 10 7 52q0 6 10 5q11 0 11 -5q0 -2 -2.5 -20l-6 -41.5t-4.5 -34.5q-1 -6 -12 -6h-230q-13 0 -13 9q0 5 20 36.5t24 34.5q1 1 16.5 14t21.5 18.5l22 21t24.5 26 t20.5 27.5t18.5 31t11.5 32.5t5 35.5q0 33 -19.5 58t-54.5 25q-29 0 -53.5 -15.5t-38.5 -30.5t-15 -15q-4 0 -8.5 4.5t-4.5 8.5z" />
+<glyph horiz-adv-x="360" d="M65 18q0 29 32 29q11 0 29 -7q5 -2 24.5 -13t29.5 -11q32 0 56 26t24 64q0 79 -74 79q-12 0 -41.5 -2t-31.5 -2q-13 0 -13 21q0 10 17 13q63 13 87.5 33t24.5 64q0 32 -17.5 49t-45.5 17q-23 0 -42 -8t-29 -16.5t-13 -8.5q-4 0 -8.5 4.5t-4.5 8.5q0 6 13.5 18t39.5 23.5 t53 11.5q48 0 79.5 -25.5t31.5 -63.5q0 -22 -9 -39t-26.5 -29.5t-32.5 -20t-38 -16.5q58 0 96.5 -25.5t38.5 -71.5q0 -55 -47 -91.5t-103 -36.5q-34 0 -67 6.5t-33 19.5z" />
+<glyph horiz-adv-x="360" d="M35 138q0 20 11 39q44 77 149 190q7 8 27 22q6 5 13 12.5t10.5 10t7.5 2.5q13 0 13 -22v-212q0 -5 1 -6t6 -1h51q7 0 7 -10v-22q0 -10 -12 -10h-46q-6 0 -6 -6v-123q0 -8 -6 -8l-43 -4q-6 0 -6 8l3 125q0 8 -10 8h-153q-17 0 -17 7zM73 173h131q7 0 9 1.5t2 6.5v173 q-19 -19 -73 -86t-69 -95z" />
+<glyph horiz-adv-x="360" d="M70 -1q0 7 11 9q165 13 165 112q0 55 -35.5 73t-102.5 18q-3 0 -9 -1t-10 -1q-13 0 -13 11q0 38 17 167q1 10 14 10h5q5 0 13.5 -0.5t20 -1t26 -1l30 -1t34 -0.5h35.5q2 10 3 16q1 7 11 7h4q9 0 9 -8q0 -1 -0.5 -9.5t-1.5 -21.5t-1 -19q-1 -8 -4.5 -11t-15.5 -3 q-74 0 -161 5q-9 -72 -9 -84q0 -8 4 -8h23q36 0 63.5 -5t53.5 -17.5t39.5 -38t13.5 -62.5q0 -73 -68.5 -112t-155.5 -39q-8 0 -8 16z" />
+<glyph horiz-adv-x="360" d="M40 141q0 54 22.5 101.5t53.5 77.5t65 51.5t56.5 31t27.5 9.5q9 0 9 -16q0 -3 -14 -9q-67 -36 -99 -73.5t-55 -97.5q49 17 82 17q59 0 96.5 -33t37.5 -88q0 -57 -39.5 -93t-97.5 -36q-64 0 -104.5 39.5t-40.5 118.5zM96 144q0 -139 97 -139q34 0 54.5 29.5t20.5 68.5 q0 104 -96 104q-14 0 -41 -5.5t-30 -11.5q-1 0 -3 -20.5t-2 -25.5z" />
+<glyph horiz-adv-x="360" d="M65 297q0 1 1 18t2 43t1 49q0 8 14 8q12 0 12 -14v-2q22 -2 111 -2h114q16 0 16 -10q0 -6 -3 -12l-69.5 -126t-51.5 -108.5t-48 -131.5q-4 -17 -7.5 -21t-9.5 -4q-14 0 -27 6t-13 12q0 31 69 162q40 76 110 185h-139q-46 0 -56 -4l-2 -46q0 -8 -9 -8q-15 0 -15 6z" />
+<glyph horiz-adv-x="360" d="M50 89q0 38 29.5 69.5t59.5 41.5q-2 1 -14 8.5t-16 10.5l-14.5 10.5t-14.5 14l-10 16t-8.5 21.5t-2.5 25q0 44 34.5 74.5t81.5 30.5q46 0 82.5 -25.5t36.5 -68.5q0 -28 -13 -49.5t-26 -31t-32 -20.5l-6 -3q2 -1 23.5 -15.5t33 -24t24 -30.5t12.5 -44q0 -48 -40 -81.5 t-97 -33.5q-55 0 -89 26.5t-34 78.5zM98 96q0 -39 22.5 -64.5t57.5 -25.5q36 0 55 25.5t19 59.5q0 18 -7.5 33.5t-25 28.5t-28 19.5t-33.5 18.5q-19 -13 -28 -20.5t-20.5 -28t-11.5 -46.5zM111 314q0 -14 5 -26t16.5 -22t19.5 -16t24.5 -15.5t20.5 -11.5q20 9 35.5 33 t15.5 54q0 36 -20.5 57t-46.5 21q-28 0 -49 -20.5t-21 -53.5z" />
+<glyph horiz-adv-x="360" d="M45 277q0 57 40.5 95.5t91.5 38.5q60 0 101.5 -47t41.5 -125q0 -47 -13 -86.5t-32.5 -64.5t-45 -44.5t-49 -29t-46.5 -16t-35 -8t-17 -1.5q-7 0 -7 16q0 8 23 11q58 8 109.5 53.5t54.5 118.5q-43 -29 -101 -29q-51 0 -83.5 33.5t-32.5 84.5zM98 285q0 -40 23.5 -68 t66.5 -28q18 0 36.5 6.5t28.5 12.5l10 6q0 6 0.5 17t0.5 16q-2 143 -85 143q-38 0 -59.5 -31t-21.5 -74z" />
+<glyph horiz-adv-x="360" d="M28 451q0 97 46.5 153.5t106.5 56.5q67 0 109 -55t42 -150q0 -90 -41 -153.5t-112 -63.5q-68 0 -109.5 59t-41.5 153zM84 448q0 -89 28.5 -135.5t68.5 -46.5q50 0 74.5 59.5t24.5 131.5q0 64 -25.5 119.5t-73.5 55.5q-49 0 -73 -49t-24 -135z" />
+<glyph horiz-adv-x="360" d="M95 264q0 7 2.5 8.5t11.5 1.5h60q1 9 1 50v75q0 181 -2 217q-1 8 -5 8q-1 0 -29.5 -1.5t-30.5 -1.5q-8 0 -8 6v12q0 6 11 6q28 1 49.5 3l33 3t18.5 2.5t10 2t4 0.5q7 0 7 -14q0 -65 -0.5 -176.5t-0.5 -169.5q0 -21 1 -22h44q7 0 7 -10q0 -16 -8 -16q-1 0 -23.5 1t-47.5 1 q-27 0 -58 -1t-36 -1q-7 0 -9 3t-2 13z" />
+<glyph horiz-adv-x="360" d="M40 571q0 7 16.5 28t49 41.5t67.5 20.5q57 0 86.5 -37.5t29.5 -79.5q0 -102 -160 -219q-18 -14 -24 -25h185q3 10 7 52q0 6 10 5q11 0 11 -5q0 -2 -2.5 -20l-6 -41.5t-4.5 -34.5q-1 -6 -12 -6h-230q-13 0 -13 9q0 5 20 36.5t24 34.5q1 1 16.5 14t21.5 18.5l22 21t24.5 26 t20.5 27.5t18.5 31t11.5 32.5t5 35.5q0 33 -19.5 58t-54.5 25q-29 0 -53.5 -15.5t-38.5 -30.5t-15 -15q-4 0 -8.5 4.5t-4.5 8.5z" />
+<glyph horiz-adv-x="360" d="M65 268q0 29 32 29q11 0 29 -7q5 -2 24.5 -13t29.5 -11q32 0 56 26t24 64q0 79 -74 79q-12 0 -41.5 -2t-31.5 -2q-13 0 -13 21q0 10 17 13q63 13 87.5 33t24.5 64q0 32 -17.5 49t-45.5 17q-23 0 -42 -8t-29 -16.5t-13 -8.5q-4 0 -8.5 4.5t-4.5 8.5q0 6 13.5 18t39.5 23.5 t53 11.5q48 0 79.5 -25.5t31.5 -63.5q0 -22 -9 -39t-26.5 -29.5t-32.5 -20t-38 -16.5q58 0 96.5 -25.5t38.5 -71.5q0 -55 -47 -91.5t-103 -36.5q-34 0 -67 6.5t-33 19.5z" />
+<glyph horiz-adv-x="360" d="M35 388q0 20 11 39q44 77 149 190q7 8 27 22q6 5 13 12.5t10.5 10t7.5 2.5q13 0 13 -22v-212q0 -5 1 -6t6 -1h51q7 0 7 -10v-22q0 -10 -12 -10h-46q-6 0 -6 -6v-123q0 -8 -6 -8l-43 -4q-6 0 -6 8l3 125q0 8 -10 8h-153q-17 0 -17 7zM73 423h131q7 0 9 1.5t2 6.5v173 q-19 -19 -73 -86t-69 -95z" />
+<glyph horiz-adv-x="360" d="M70 249q0 7 11 9q165 13 165 112q0 55 -35.5 73t-102.5 18q-3 0 -9 -1t-10 -1q-13 0 -13 11q0 38 17 167q1 10 14 10h5q5 0 13.5 -0.5t20 -1t26 -1l30 -1t34 -0.5h35.5q2 10 3 16q1 7 11 7h4q9 0 9 -8q0 -1 -0.5 -9.5t-1.5 -21.5t-1 -19q-1 -8 -4.5 -11t-15.5 -3 q-74 0 -161 5q-9 -72 -9 -84q0 -8 4 -8h23q36 0 63.5 -5t53.5 -17.5t39.5 -38t13.5 -62.5q0 -73 -68.5 -112t-155.5 -39q-8 0 -8 16z" />
+<glyph horiz-adv-x="360" d="M40 391q0 54 22.5 101.5t53.5 77.5t65 51.5t56.5 31t27.5 9.5q9 0 9 -16q0 -3 -14 -9q-67 -36 -99 -73.5t-55 -97.5q49 17 82 17q59 0 96.5 -33t37.5 -88q0 -57 -39.5 -93t-97.5 -36q-64 0 -104.5 39.5t-40.5 118.5zM96 394q0 -139 97 -139q34 0 54.5 29.5t20.5 68.5 q0 104 -96 104q-14 0 -41 -5.5t-30 -11.5q-1 0 -3 -20.5t-2 -25.5z" />
+<glyph horiz-adv-x="360" d="M65 547q0 1 1 18t2 43t1 49q0 8 14 8q12 0 12 -14v-2q22 -2 111 -2h114q16 0 16 -10q0 -6 -3 -12l-69.5 -126t-51.5 -108.5t-48 -131.5q-4 -17 -7.5 -21t-9.5 -4q-14 0 -27 6t-13 12q0 31 69 162q40 76 110 185h-139q-46 0 -56 -4l-2 -46q0 -8 -9 -8q-15 0 -15 6z" />
+<glyph horiz-adv-x="360" d="M50 339q0 38 29.5 69.5t59.5 41.5q-2 1 -14 8.5t-16 10.5l-14.5 10.5t-14.5 14l-10 16t-8.5 21.5t-2.5 25q0 44 34.5 74.5t81.5 30.5q46 0 82.5 -25.5t36.5 -68.5q0 -28 -13 -49.5t-26 -31t-32 -20.5l-6 -3q2 -1 23.5 -15.5t33 -24t24 -30.5t12.5 -44q0 -48 -40 -81.5 t-97 -33.5q-55 0 -89 26.5t-34 78.5zM98 346q0 -39 22.5 -64.5t57.5 -25.5q36 0 55 25.5t19 59.5q0 18 -7.5 33.5t-25 28.5t-28 19.5t-33.5 18.5q-19 -13 -28 -20.5t-20.5 -28t-11.5 -46.5zM111 564q0 -14 5 -26t16.5 -22t19.5 -16t24.5 -15.5t20.5 -11.5q20 9 35.5 33 t15.5 54q0 36 -20.5 57t-46.5 21q-28 0 -49 -20.5t-21 -53.5z" />
+<glyph horiz-adv-x="360" d="M45 527q0 57 40.5 95.5t91.5 38.5q60 0 101.5 -47t41.5 -125q0 -47 -13 -86.5t-32.5 -64.5t-45 -44.5t-49 -29t-46.5 -16t-35 -8t-17 -1.5q-7 0 -7 16q0 8 23 11q58 8 109.5 53.5t54.5 118.5q-43 -29 -101 -29q-51 0 -83.5 33.5t-32.5 84.5zM98 535q0 -40 23.5 -68 t66.5 -28q18 0 36.5 6.5t28.5 12.5l10 6q0 6 0.5 17t0.5 16q-2 143 -85 143q-38 0 -59.5 -31t-21.5 -74z" />
+<glyph horiz-adv-x="360" d="M28 51q0 97 46.5 153.5t106.5 56.5q67 0 109 -55t42 -150q0 -90 -41 -153.5t-112 -63.5q-68 0 -109.5 59t-41.5 153zM84 48q0 -89 28.5 -135.5t68.5 -46.5q50 0 74.5 59.5t24.5 131.5q0 64 -25.5 119.5t-73.5 55.5q-49 0 -73 -49t-24 -135z" />
+<glyph horiz-adv-x="360" d="M95 -136q0 7 2.5 8.5t11.5 1.5h60q1 9 1 50v75q0 181 -2 217q-1 8 -5 8q-1 0 -29.5 -1.5t-30.5 -1.5q-8 0 -8 6v12q0 6 11 6q28 1 49.5 3l33 3t18.5 2.5t10 2t4 0.5q7 0 7 -14q0 -65 -0.5 -176.5t-0.5 -169.5q0 -21 1 -22h44q7 0 7 -10q0 -16 -8 -16q-1 0 -23.5 1 t-47.5 1q-27 0 -58 -1t-36 -1q-7 0 -9 3t-2 13z" />
+<glyph horiz-adv-x="360" d="M40 171q0 7 16.5 28t49 41.5t67.5 20.5q57 0 86.5 -37.5t29.5 -79.5q0 -102 -160 -219q-18 -14 -24 -25h185q3 10 7 52q0 6 10 5q11 0 11 -5q0 -2 -2.5 -20l-6 -41.5t-4.5 -34.5q-1 -6 -12 -6h-230q-13 0 -13 9q0 5 20 36.5t24 34.5q1 1 16.5 14t21.5 18.5l22 21t24.5 26 t20.5 27.5t18.5 31t11.5 32.5t5 35.5q0 33 -19.5 58t-54.5 25q-29 0 -53.5 -15.5t-38.5 -30.5t-15 -15q-4 0 -8.5 4.5t-4.5 8.5z" />
+<glyph horiz-adv-x="360" d="M65 -132q0 29 32 29q11 0 29 -7q5 -2 24.5 -13t29.5 -11q32 0 56 26t24 64q0 79 -74 79q-12 0 -41.5 -2t-31.5 -2q-13 0 -13 21q0 10 17 13q63 13 87.5 33t24.5 64q0 32 -17.5 49t-45.5 17q-23 0 -42 -8t-29 -16.5t-13 -8.5q-4 0 -8.5 4.5t-4.5 8.5q0 6 13.5 18 t39.5 23.5t53 11.5q48 0 79.5 -25.5t31.5 -63.5q0 -22 -9 -39t-26.5 -29.5t-32.5 -20t-38 -16.5q58 0 96.5 -25.5t38.5 -71.5q0 -55 -47 -91.5t-103 -36.5q-34 0 -67 6.5t-33 19.5z" />
+<glyph horiz-adv-x="360" d="M35 -12q0 20 11 39q44 77 149 190q7 8 27 22q6 5 13 12.5t10.5 10t7.5 2.5q13 0 13 -22v-212q0 -5 1 -6t6 -1h51q7 0 7 -10v-22q0 -10 -12 -10h-46q-6 0 -6 -6v-123q0 -8 -6 -8l-43 -4q-6 0 -6 8l3 125q0 8 -10 8h-153q-17 0 -17 7zM73 23h131q7 0 9 1.5t2 6.5v173 q-19 -19 -73 -86t-69 -95z" />
+<glyph horiz-adv-x="360" d="M70 -151q0 7 11 9q165 13 165 112q0 55 -35.5 73t-102.5 18q-3 0 -9 -1t-10 -1q-13 0 -13 11q0 38 17 167q1 10 14 10h5q5 0 13.5 -0.5t20 -1t26 -1l30 -1t34 -0.5h35.5q2 10 3 16q1 7 11 7h4q9 0 9 -8q0 -1 -0.5 -9.5t-1.5 -21.5t-1 -19q-1 -8 -4.5 -11t-15.5 -3 q-74 0 -161 5q-9 -72 -9 -84q0 -8 4 -8h23q36 0 63.5 -5t53.5 -17.5t39.5 -38t13.5 -62.5q0 -73 -68.5 -112t-155.5 -39q-8 0 -8 16z" />
+<glyph horiz-adv-x="360" d="M40 -9q0 54 22.5 101.5t53.5 77.5t65 51.5t56.5 31t27.5 9.5q9 0 9 -16q0 -3 -14 -9q-67 -36 -99 -73.5t-55 -97.5q49 17 82 17q59 0 96.5 -33t37.5 -88q0 -57 -39.5 -93t-97.5 -36q-64 0 -104.5 39.5t-40.5 118.5zM96 -6q0 -139 97 -139q34 0 54.5 29.5t20.5 68.5 q0 104 -96 104q-14 0 -41 -5.5t-30 -11.5q-1 0 -3 -20.5t-2 -25.5z" />
+<glyph horiz-adv-x="360" d="M65 147q0 1 1 18t2 43t1 49q0 8 14 8q12 0 12 -14v-2q22 -2 111 -2h114q16 0 16 -10q0 -6 -3 -12l-69.5 -126t-51.5 -108.5t-48 -131.5q-4 -17 -7.5 -21t-9.5 -4q-14 0 -27 6t-13 12q0 31 69 162q40 76 110 185h-139q-46 0 -56 -4l-2 -46q0 -8 -9 -8q-15 0 -15 6z" />
+<glyph horiz-adv-x="360" d="M50 -61q0 38 29.5 69.5t59.5 41.5q-2 1 -14 8.5t-16 10.5l-14.5 10.5t-14.5 14l-10 16t-8.5 21.5t-2.5 25q0 44 34.5 74.5t81.5 30.5q46 0 82.5 -25.5t36.5 -68.5q0 -28 -13 -49.5t-26 -31t-32 -20.5l-6 -3q2 -1 23.5 -15.5t33 -24t24 -30.5t12.5 -44q0 -48 -40 -81.5 t-97 -33.5q-55 0 -89 26.5t-34 78.5zM98 -54q0 -39 22.5 -64.5t57.5 -25.5q36 0 55 25.5t19 59.5q0 18 -7.5 33.5t-25 28.5t-28 19.5t-33.5 18.5q-19 -13 -28 -20.5t-20.5 -28t-11.5 -46.5zM111 164q0 -14 5 -26t16.5 -22t19.5 -16t24.5 -15.5t20.5 -11.5q20 9 35.5 33 t15.5 54q0 36 -20.5 57t-46.5 21q-28 0 -49 -20.5t-21 -53.5z" />
+<glyph horiz-adv-x="360" d="M45 127q0 57 40.5 95.5t91.5 38.5q60 0 101.5 -47t41.5 -125q0 -47 -13 -86.5t-32.5 -64.5t-45 -44.5t-49 -29t-46.5 -16t-35 -8t-17 -1.5q-7 0 -7 16q0 8 23 11q58 8 109.5 53.5t54.5 118.5q-43 -29 -101 -29q-51 0 -83.5 33.5t-32.5 84.5zM98 135q0 -40 23.5 -68 t66.5 -28q18 0 36.5 6.5t28.5 12.5l10 6q0 6 0.5 17t0.5 16q-2 143 -85 143q-38 0 -59.5 -31t-21.5 -74z" />
+<glyph horiz-adv-x="360" d="M28 551q0 97 46.5 153.5t106.5 56.5q67 0 109 -55t42 -150q0 -90 -41 -153.5t-112 -63.5q-68 0 -109.5 59t-41.5 153zM84 548q0 -89 28.5 -135.5t68.5 -46.5q50 0 74.5 59.5t24.5 131.5q0 64 -25.5 119.5t-73.5 55.5q-49 0 -73 -49t-24 -135z" />
+<glyph horiz-adv-x="360" d="M95 364q0 7 2.5 8.5t11.5 1.5h60q1 9 1 50v75q0 181 -2 217q-1 8 -5 8q-1 0 -29.5 -1.5t-30.5 -1.5q-8 0 -8 6v12q0 6 11 6q28 1 49.5 3l33 3t18.5 2.5t10 2t4 0.5q7 0 7 -14q0 -65 -0.5 -176.5t-0.5 -169.5q0 -21 1 -22h44q7 0 7 -10q0 -16 -8 -16q-1 0 -23.5 1t-47.5 1 q-27 0 -58 -1t-36 -1q-7 0 -9 3t-2 13z" />
+<glyph horiz-adv-x="360" d="M40 671q0 7 16.5 28t49 41.5t67.5 20.5q57 0 86.5 -37.5t29.5 -79.5q0 -102 -160 -219q-18 -14 -24 -25h185q3 10 7 52q0 6 10 5q11 0 11 -5q0 -2 -2.5 -20l-6 -41.5t-4.5 -34.5q-1 -6 -12 -6h-230q-13 0 -13 9q0 5 20 36.5t24 34.5q1 1 16.5 14t21.5 18.5l22 21t24.5 26 t20.5 27.5t18.5 31t11.5 32.5t5 35.5q0 33 -19.5 58t-54.5 25q-29 0 -53.5 -15.5t-38.5 -30.5t-15 -15q-4 0 -8.5 4.5t-4.5 8.5z" />
+<glyph horiz-adv-x="360" d="M65 368q0 29 32 29q11 0 29 -7q5 -2 24.5 -13t29.5 -11q32 0 56 26t24 64q0 79 -74 79q-12 0 -41.5 -2t-31.5 -2q-13 0 -13 21q0 10 17 13q63 13 87.5 33t24.5 64q0 32 -17.5 49t-45.5 17q-23 0 -42 -8t-29 -16.5t-13 -8.5q-4 0 -8.5 4.5t-4.5 8.5q0 6 13.5 18t39.5 23.5 t53 11.5q48 0 79.5 -25.5t31.5 -63.5q0 -22 -9 -39t-26.5 -29.5t-32.5 -20t-38 -16.5q58 0 96.5 -25.5t38.5 -71.5q0 -55 -47 -91.5t-103 -36.5q-34 0 -67 6.5t-33 19.5z" />
+<glyph horiz-adv-x="360" d="M35 488q0 20 11 39q44 77 149 190q7 8 27 22q6 5 13 12.5t10.5 10t7.5 2.5q13 0 13 -22v-212q0 -5 1 -6t6 -1h51q7 0 7 -10v-22q0 -10 -12 -10h-46q-6 0 -6 -6v-123q0 -8 -6 -8l-43 -4q-6 0 -6 8l3 125q0 8 -10 8h-153q-17 0 -17 7zM73 523h131q7 0 9 1.5t2 6.5v173 q-19 -19 -73 -86t-69 -95z" />
+<glyph horiz-adv-x="360" d="M70 349q0 7 11 9q165 13 165 112q0 55 -35.5 73t-102.5 18q-3 0 -9 -1t-10 -1q-13 0 -13 11q0 38 17 167q1 10 14 10h5q5 0 13.5 -0.5t20 -1t26 -1l30 -1t34 -0.5h35.5q2 10 3 16q1 7 11 7h4q9 0 9 -8q0 -1 -0.5 -9.5t-1.5 -21.5t-1 -19q-1 -8 -4.5 -11t-15.5 -3 q-74 0 -161 5q-9 -72 -9 -84q0 -8 4 -8h23q36 0 63.5 -5t53.5 -17.5t39.5 -38t13.5 -62.5q0 -73 -68.5 -112t-155.5 -39q-8 0 -8 16z" />
+<glyph horiz-adv-x="360" d="M40 491q0 54 22.5 101.5t53.5 77.5t65 51.5t56.5 31t27.5 9.5q9 0 9 -16q0 -3 -14 -9q-67 -36 -99 -73.5t-55 -97.5q49 17 82 17q59 0 96.5 -33t37.5 -88q0 -57 -39.5 -93t-97.5 -36q-64 0 -104.5 39.5t-40.5 118.5zM96 494q0 -139 97 -139q34 0 54.5 29.5t20.5 68.5 q0 104 -96 104q-14 0 -41 -5.5t-30 -11.5q-1 0 -3 -20.5t-2 -25.5z" />
+<glyph horiz-adv-x="360" d="M65 647q0 1 1 18t2 43t1 49q0 8 14 8q12 0 12 -14v-2q22 -2 111 -2h114q16 0 16 -10q0 -6 -3 -12l-69.5 -126t-51.5 -108.5t-48 -131.5q-4 -17 -7.5 -21t-9.5 -4q-14 0 -27 6t-13 12q0 31 69 162q40 76 110 185h-139q-46 0 -56 -4l-2 -46q0 -8 -9 -8q-15 0 -15 6z" />
+<glyph horiz-adv-x="360" d="M50 439q0 38 29.5 69.5t59.5 41.5q-2 1 -14 8.5t-16 10.5l-14.5 10.5t-14.5 14l-10 16t-8.5 21.5t-2.5 25q0 44 34.5 74.5t81.5 30.5q46 0 82.5 -25.5t36.5 -68.5q0 -28 -13 -49.5t-26 -31t-32 -20.5l-6 -3q2 -1 23.5 -15.5t33 -24t24 -30.5t12.5 -44q0 -48 -40 -81.5 t-97 -33.5q-55 0 -89 26.5t-34 78.5zM98 446q0 -39 22.5 -64.5t57.5 -25.5q36 0 55 25.5t19 59.5q0 18 -7.5 33.5t-25 28.5t-28 19.5t-33.5 18.5q-19 -13 -28 -20.5t-20.5 -28t-11.5 -46.5zM111 664q0 -14 5 -26t16.5 -22t19.5 -16t24.5 -15.5t20.5 -11.5q20 9 35.5 33 t15.5 54q0 36 -20.5 57t-46.5 21q-28 0 -49 -20.5t-21 -53.5z" />
+<glyph horiz-adv-x="360" d="M45 627q0 57 40.5 95.5t91.5 38.5q60 0 101.5 -47t41.5 -125q0 -47 -13 -86.5t-32.5 -64.5t-45 -44.5t-49 -29t-46.5 -16t-35 -8t-17 -1.5q-7 0 -7 16q0 8 23 11q58 8 109.5 53.5t54.5 118.5q-43 -29 -101 -29q-51 0 -83.5 33.5t-32.5 84.5zM98 635q0 -40 23.5 -68 t66.5 -28q18 0 36.5 6.5t28.5 12.5l10 6q0 6 0.5 17t0.5 16q-2 143 -85 143q-38 0 -59.5 -31t-21.5 -74z" />
+<glyph horiz-adv-x="352" d="M35 57q0 49 55 78.5t132 42.5q6 1 6 12q0 27 -1.5 41.5t-7.5 32.5t-21 26.5t-39 8.5q-13 0 -24 -4q-16 -6 -20.5 -16.5t-5.5 -35.5q0 -13 -6 -17q-33 -21 -47 -21q-8 0 -8 12q0 46 41.5 75.5t87.5 29.5q60 0 85 -26.5t25 -77.5q0 -23 -2.5 -90t-2.5 -73q0 -24 18 -24 q2 0 16 9.5t15 9.5q2 0 6 -4.5t4 -8.5t-54 -43q-13 -9 -22 -9q-13 0 -21 12.5t-10 24.5l-3 13q-1 0 -3.5 -2t-6.5 -4.5l-7 -4.5q-56 -36 -96 -36q-39 0 -61 18.5t-22 50.5zM98 81q0 -21 14.5 -37.5t38.5 -16.5q16 0 35 4.5t30.5 10t11.5 7.5v104q0 9 -4 9q-11 0 -50 -12 q-76 -24 -76 -69z" />
+<glyph horiz-adv-x="414" d="M10 509q0 19 4 19l47.5 5.5l50 6t22.5 2.5q6 0 6 -12q-3 -150 -3 -216q0 -31 1 -31l6 3q5 3 14 6.5l19.5 7.5t24 7t24.5 3q69 0 113.5 -46t44.5 -113q0 -75 -54.5 -118.5t-130.5 -43.5q-16 0 -40 8.5t-35 8.5q-10 0 -24 -8t-17 -8q-10 0 -10 10q0 1 1.5 29.5t2.5 66.5 t1 61q0 64 -4 208t-10 144q-2 0 -25 -2.5t-24 -2.5q-5 0 -5 5zM135 53q0 -40 67 -40q54 0 85.5 40.5t31.5 96.5q0 53 -38 93.5t-90 40.5q-12 0 -25.5 -4t-21 -9t-7.5 -7q0 -47 -1 -126t-1 -85z" />
+<glyph horiz-adv-x="350" d="M30 142q0 84 52.5 132t119.5 48q41 0 76.5 -24t35.5 -54q0 -10 -9 -16q-15 -11 -27 -11q-11 0 -15 9q-2 5 -6 17l-6 18t-7 14.5t-10.5 12.5t-15 7t-21.5 3q-48 0 -78 -41.5t-30 -92.5q0 -54 33.5 -93.5t92.5 -39.5q25 0 48 6t36 12t15 6q6 0 6 -7q0 -4 -14.5 -17 t-47.5 -26.5t-70 -13.5q-73 0 -115.5 41t-42.5 110z" />
+<glyph horiz-adv-x="424" d="M29 147q0 68 48.5 114.5t119.5 46.5q14 0 27.5 -2.5t23 -6l17.5 -6.5l13 -5l4 -3q5 0 5 15q0 37 -1.5 89t-3.5 87.5t-3 35.5t-25 -3.5t-28 -3.5q-6 0 -4 13q2 11 7 12l48 7l44 6.5t19 2.5q6 0 7.5 -2.5t1.5 -15.5q0 -5 -1.5 -49.5t-3 -132.5t-1.5 -197q0 -38 2 -96 q1 -24 4.5 -31.5t13.5 -7.5q3 0 27 4q9 2 9 -8t-1.5 -13t-9.5 -4l-98 -13q-5 0 -5 8q0 1 0.5 15.5t0.5 16.5q0 8 -1.5 8.5t-10.5 -4.5q-52 -35 -99 -35q-62 0 -104 38.5t-42 119.5zM95 153q0 -58 31 -94.5t92 -36.5q19 0 44 8t25 18v201q0 10 -24.5 25.5t-52.5 15.5 q-51 0 -83 -41t-32 -96z" />
+<glyph horiz-adv-x="366" d="M30 146q0 74 48 123.5t124 49.5q59 0 92 -37.5t33 -92.5q0 -9 -44 -9q-5 0 -93.5 2t-91.5 2q-4 0 -4 -28q0 -60 36.5 -94.5t86.5 -34.5q18 0 35.5 5.5t29.5 12.5t21.5 14.5t14.5 12.5l5 6q1 0 7 -6t6 -7q0 -4 -17.5 -22t-53.5 -37t-74 -19q-76 0 -118.5 43.5t-42.5 115.5 zM98 206q0 -6 10 -6q45 0 125 4q32 1 32 3q0 50 -23 71t-50 21q-37 0 -64.5 -30.5t-29.5 -62.5z" />
+<glyph horiz-adv-x="296" d="M45 11q0 12 10 12h32q3 0 3 49q0 16 -0.5 40t-0.5 26v47v56q0 33 -1 33h-27q-7 0 -9 2t-2 10t1.5 10t7.5 2h22q5 0 6.5 1.5t1.5 8.5q0 19 -1 37.5t-1 40.5q0 70 31.5 114t101.5 44q27 0 49 -15.5t22 -39.5q0 -13 -16 -25.5t-27 -12.5t-12 7q-7 48 -17 58q-7 8 -20 8 q-47 0 -47 -131q0 -13 -2 -81q0 -10 2.5 -12t14.5 -2h96q6 0 6 -5q0 -4 -2.5 -11t-4.5 -7h-95q-9 0 -11.5 -1.5t-2.5 -7.5v-130q0 -113 8 -113h53q10 0 10 -12q-4 -12 -10 -13q-7 0 -41.5 1t-47.5 1q-10 0 -33 -1t-36 -1q-8 0 -9.5 2.5t-1.5 10.5z" />
+<glyph horiz-adv-x="399" d="M30 -140q0 36 37.5 59t79.5 31q20 4 20 5t-18 1h-47q-27 0 -34 15q-8 17 -8 39q0 25 16 29l35.5 9.5l39.5 10.5q6 2 12 3q4 0 3.5 0.5t-4.5 1.5t-7 2q-108 29 -108 131q0 52 45.5 86.5t103.5 34.5q27 0 51.5 -11t37.5 -23l13 -11q2 0 12.5 4t26 8.5t26.5 5.5q2 0 5 -9 t3 -17q0 -5 -3 -5q-53 -5 -53 -11q0 -1 3 -8.5t6 -20t3 -27.5q0 -88 -95 -122q-27 -10 -143 -41q-4 -2 -4 -7q0 -6 4 -12.5t7 -7.5q19 -1 57 -2t63.5 -1.5t58 -6t52 -15t33.5 -29t14 -47.5q0 -62 -51.5 -98.5t-134.5 -36.5q-60 0 -109 24.5t-49 68.5zM71 -134 q0 -35 36.5 -55.5t79.5 -20.5q55 0 95.5 21.5t40.5 68.5q0 31 -45 47t-99 16q-36 0 -72 -21t-36 -56zM105 200q0 -51 33 -87t55 -36q27 0 52.5 34t25.5 84q0 47 -21.5 73.5t-58.5 26.5q-35 0 -60.5 -28t-25.5 -67z" />
+<glyph horiz-adv-x="439" d="M25 510q0 14 4 15q15 2 47.5 6t54.5 7t24 3q4 0 4 -16q-8 -134 -8 -244q0 -10 1.5 -11t7.5 4q62 36 110 36q33 0 54.5 -12.5t31.5 -38t13.5 -51t3.5 -62.5v-114q0 -7 1.5 -8.5t7.5 -1.5h21q11 0 11 -12t-12 -12q-7 0 -26.5 1t-32.5 1q-10 0 -34.5 -1t-37.5 -1 q-8 0 -9.5 2t-1.5 10q0 12 11 12h31q6 0 6.5 1t1.5 8q2 32 2 138q0 46 -19.5 75t-57.5 29q-37 0 -71 -17q-13 -7 -13 -11l1 -118q0 -71 1 -91q1 -10 2 -12t7 -2h31q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -31.5 1t-38.5 1q-10 0 -34.5 -1t-37.5 -1q-8 0 -9.5 2t-1.5 10 q0 12 9 12h32q6 0 7 2t1 12q1 74 1 174q0 175 -7 282q-1 14 -5 14q-1 0 -24 -3t-25 -3q-3 0 -3 10z" />
+<glyph horiz-adv-x="220" d="M25 284q0 3 4 12q2 5 3.5 5.5t9.5 1.5q80 5 97 5q6 0 6 -5v-136q0 -90 3 -135q0 -10 8 -10h30q9 0 9 -12t-9 -12q-7 0 -34 1t-38 1t-40 -1t-36 -1q-6 0 -7.5 2t-1.5 10q0 7 1.5 9.5t9.5 2.5h34q7 0 8 1.5t1 7.5q1 23 1 70q0 110 -3 168q-1 9 -3 11t-8 2q-1 0 -20 -1 t-21 -1q-4 0 -4 4zM67 440q0 22 18 35.5t37 13.5q37 0 37 -36q0 -21 -17.5 -35.5t-37.5 -14.5q-15 0 -26 9.5t-11 27.5z" />
+<glyph horiz-adv-x="245" d="M5 -202q0 15 12 31.5t21 16.5q10 0 25.5 -2t18.5 -2q31 0 31 26q0 7 -2 44.5t-4 114t-2 179.5q0 38 -2 59q-1 11 -8 11q-3 0 -28.5 -1.5t-29.5 -1.5q-2 0 -2 4q0 7 3 14q11 8 13 8q19 0 45.5 1.5l44 2.5t18.5 1q6 0 6 -19q0 -16 2.5 -109.5t2.5 -153.5q0 -71 -9.5 -116 t-36.5 -79q-11 -13 -48 -30t-55 -17q-16 0 -16 18zM60 461q0 22 17.5 35.5t36.5 13.5q38 0 38 -36q0 -21 -17.5 -35.5t-37.5 -14.5q-15 0 -26 9.5t-11 27.5z" />
+<glyph horiz-adv-x="406" d="M25 518v8q0 12 9 13q85 8 111 8q7 0 7 -10l-9 -360q0 -6 2 -7.5t11 -1.5h17q9 0 24 17q36 48 61 89q6 7 5.5 10t-12.5 3h-14q-9 0 -9 12t11 12q3 0 20 -1t27 -1q8 0 24 1t22 1q10 0 10 -12t-9 -12h-26q-4 0 -37 -38.5l-49 -58.5l-2 -2q-7 -7 -4 -10q1 0 2 -2q4 -3 6 -5 l127 -139q9 -10 18 -10h8q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-5 0 -25 1t-32 1t-32.5 -1t-25.5 -1q-8 0 -9.5 2t-1.5 10q0 12 12 12h10q15 0 5 12l-97 106q-7 10 -9 11.5t-8 1.5h-11q-6 0 -7 -2.5t-1 -9.5v-105q0 -10 1.5 -12t7.5 -2h19q10 0 10 -12q0 -7 -1.5 -9.5 t-9.5 -2.5q-7 0 -25 1t-32 1q-16 0 -41 -1t-27 -1q-8 0 -9.5 2t-1.5 10q0 12 10 12h33q6 0 7 2t1 12v154q0 324 -8 324q-2 0 -21 -1.5t-23 -1.5q-8 0 -8 7z" />
+<glyph horiz-adv-x="223" d="M25 515q0 2 2 14q1 5 2 5.5t7 1.5q91 8 103 8q6 0 6 -12q1 -126 3 -263.5t2 -215.5q0 -31 7 -31h31q10 0 10 -12t-10 -12q-7 0 -30 1t-36 1q-10 0 -37.5 -1t-40.5 -1q-8 0 -9.5 2t-1.5 10q0 12 10 12h41q3 0 3 68q0 309 -10 410q0 3 -1 7q0 6 -1 7.5t-6 1.5q-2 0 -19 -2 t-18 -2q-7 0 -7 3z" />
+<glyph horiz-adv-x="620" d="M25 279q0 9 3 16q2 5 3 5.5t10 1.5q70 4 84 4q10 0 11.5 -1t1.5 -8v-26q0 -12 1 -13q1 0 7 5q64 49 116 49q18 0 31.5 -4.5t21 -11t12 -13.5t6.5 -11l2 -5q2 0 11 6q21 14 51 25.5t52 11.5q57 0 80 -30t23 -86q0 -37 -1 -93t-1 -71q0 -8 8 -8h25q12 0 12 -12t-12 -12 q-7 0 -29 1t-35 1q-10 0 -34 -1t-37 -1q-8 0 -9.5 2t-1.5 10q0 12 12 12h32q8 0 8 150q0 100 -72 100q-18 0 -37.5 -5.5t-30 -11.5t-10.5 -7t1.5 -7t3 -19.5t1.5 -34.5v-133q0 -32 2 -32h27q11 0 11 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -27.5 1t-33.5 1q-10 0 -29 -1t-32 -1 q-8 0 -10.5 2t-2.5 10q0 12 10 12h31q6 0 6 76v32t-0.5 29t-0.5 13q0 33 -2.5 51t-16 33.5t-39.5 15.5q-45 0 -80 -24q-8 -6 -8 -14v-178q0 -24 2 -29t13 -5h17q11 0 11 -12t-12 -12q-7 0 -29.5 1t-33.5 1t-38 -1t-32 -1q-10 0 -10 12t9 12h31q7 0 10 25q2 16 2 84v86 q0 62 -4 62q-1 0 -22.5 -1.5t-23.5 -1.5q-4 0 -4 3z" />
+<glyph horiz-adv-x="435" d="M25 279q0 6 4 14q2 5 3 5.5t10 1.5q4 0 40 2.5t49 3.5q10 1 10.5 0t0.5 -9v-37q0 -6 10 3l2 2l15 10.5t19.5 12.5l19.5 10t25 8.5t27 2.5q66 0 88 -36.5t22 -105.5q0 -26 -2.5 -79.5t-2.5 -55.5q0 -7 1.5 -8.5t7.5 -1.5h24q8 0 10 -2t2 -10q0 -12 -10 -12q-7 0 -28.5 1 t-34.5 1q-10 0 -34 -1t-37 -1q-9 0 -10.5 2t-1.5 10t2 10t8 2h29q6 0 7 1t2 8q4 38 4 138q0 102 -77 102q-25 0 -71 -23q-14 -6 -14 -18q0 -32 -0.5 -96.5t-0.5 -96.5q0 -7 0.5 -9.5t2.5 -4t7 -1.5h29q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -30.5 1t-36.5 1 q-10 0 -35.5 -1t-38.5 -1q-8 0 -9 2t-1 10q0 12 9 12h31q6 0 6.5 2t1.5 12q5 78 5 153q0 55 -2 79q-1 10 -2 10.5t-8 0.5q-1 0 -21.5 -2t-22.5 -2t-2 4z" />
+<glyph horiz-adv-x="384" d="M30 147q0 73 48 122.5t124 49.5q67 0 109.5 -46.5t42.5 -114.5q0 -76 -44 -123.5t-121 -47.5q-67 0 -113 47t-46 113zM94 136q0 -49 25.5 -87.5t69.5 -38.5q99 0 99 154q0 52 -24.5 92t-71.5 40q-98 0 -98 -160z" />
+<glyph horiz-adv-x="432" d="M25 280q0 4 2.5 12t4.5 8q25 1 52.5 2t43 2t16.5 1q4 0 6 -0.5t3 -3t1 -8.5v-21q0 -9 1 -9t16 13q41 32 89 32q69 0 105.5 -42.5t36.5 -109.5q0 -65 -48 -114.5t-125 -49.5q-23 0 -55 10q-17 6 -18 4q-1 -1 -1 -4l2 -150q2 -53 5 -53h56q10 0 10 -12q-4 -12 -10 -13 q-7 0 -41.5 1t-47.5 1q-10 0 -39 -1t-42 -1q-8 0 -9.5 2.5t-1.5 10.5q0 12 10 12h45q3 0 3 127v112q0 151 -7 228q-1 8 -2.5 9.5t-10.5 1.5q-3 0 -20.5 -1t-19.5 -1q-10 0 -10 5zM155 42q0 -13 24 -23t45 -10q52 0 82.5 43.5t30.5 96.5q0 57 -30 92t-75 35q-31 0 -51 -10 q-26 -13 -26 -26v-198z" />
+<glyph horiz-adv-x="413" d="M30 145q0 70 49.5 115.5t124.5 45.5q27 0 60 -11.5t38 -11.5q8 0 17 14.5t15 14.5q13 0 13 -10q-4 -95 -4 -238v-132q0 -130 2 -130h33q10 0 10 -13q0 -8 -1.5 -10.5t-9.5 -2.5h-23q-20 0 -40.5 -1t-35.5 -2.5t-27 -3t-19 -2.5t-8 -1q-8 0 -10 2.5t-2 8.5q0 14 10 15 q8 1 17.5 2l14 1.5t9.5 1t6.5 2t4 3t2.5 5t0.5 7t0.5 10.5l2 177q0 7 -3 7q-4 0 -13 -3q-50 -15 -90 -15q-56 0 -99.5 38.5t-43.5 116.5zM94 153q0 -52 31.5 -94t83.5 -42q71 0 71 17v198q0 24 -22 37t-61 13q-50 0 -76.5 -38.5t-26.5 -90.5z" />
+<glyph horiz-adv-x="291" d="M30 280q0 6 2 11t3 5.5t10 1.5q36 3 86 3q10 0 10.5 -0.5t0.5 -7.5q0 -8 0.5 -26.5t0.5 -26.5v-15l8 21q13 33 34 52.5t40 19.5q16 0 31 -14t15 -23q0 -8 -10.5 -21.5t-19.5 -13.5t-24.5 12t-23.5 12q-45 0 -45 -159q0 -88 10 -88h49q11 0 11 -12q0 -13 -11 -13 q-7 0 -41 1t-47 1q-10 0 -34 -1t-37 -1q-8 0 -9 2t-1 11q0 12 9 12h34q8 0 8 107q0 148 -6 148q-1 0 -25 -1t-26 -1t-2 4z" />
+<glyph horiz-adv-x="276" d="M40 40q0 9 8 20t13 11q2 0 3.5 -2.5t4 -8t6.5 -10.5q29 -40 66 -40q20 0 33.5 13.5t13.5 38.5q0 26 -16.5 41.5t-46.5 30.5q-2 1 -13 6t-13.5 6.5l-12 7t-12.5 8l-10 8.5t-9.5 11l-6 12.5t-5 15.5t-1.5 17q0 39 32.5 65t74.5 26q38 0 58 -18.5t20 -36.5q0 -6 -10.5 -11 t-17.5 -5q-6 0 -10.5 13t-14 26t-29.5 13t-35.5 -13.5t-15.5 -42.5q0 -16 10 -29.5t19 -19t30 -16.5q57 -32 72 -50q16 -19 16 -43q0 -43 -31 -69t-75 -26q-35 0 -65 16t-30 35z" />
+<glyph horiz-adv-x="258" d="M40 272q0 3 3 6l78 105q5 5 8 5q9 0 9 -8q0 -1 -1.5 -16.5t-3 -33.5t-1.5 -24q0 -8 9 -8h76q9 0 10 -2t-2 -14q-3 -15 -11 -15h-79q-3 0 -3 -36v-149q0 -15 1.5 -23.5t11 -16.5t26.5 -8q14 0 28.5 3t24 6t11.5 3q3 0 3 -13q0 -2 -19 -12t-45 -19.5t-41 -9.5 q-33 0 -46.5 16.5t-13.5 38.5q2 114 2 171q0 48 -10 48h-20q-5 0 -5 6z" />
+<glyph horiz-adv-x="440" d="M25 287q0 3 3 10t13 8q76 4 93 4q6 0 6 -5v-217q0 -54 89 -54q73 0 73 13v93q0 147 -6 147q-1 0 -20.5 -1t-21.5 -1q-3 0 -3 3q2 16 5 17q2 2 6 2q64 4 96 4q6 0 6 -4q-1 -191 -1 -240q0 -30 2.5 -38.5t12.5 -8.5q1 0 16.5 2t16.5 2q4 0 4 -9t-1.5 -10.5t-10.5 -3.5 q-11 -2 -33 -5t-37 -5.5t-18 -2.5q-8 0 -9 11q-3 33 -4 33l-22 -11q-21 -10 -53.5 -20t-59.5 -10q-54 0 -72 28.5t-18 77.5v126v17q0 44 -9 44q-1 0 -19.5 -0.5t-20.5 -0.5q-3 0 -3 5z" />
+<glyph horiz-adv-x="378" d="M20 295q0 12 10 12q6 0 24 -1t30 -1q11 0 36.5 1t31.5 1q7 0 8.5 -2t1.5 -10q0 -12 -9 -12h-24q-15 0 -15 -6q0 -2 14 -41.5l33 -90.5l29 -76q7 -15 9 -15t7 13q76 180 76 203q0 13 -8 13h-21q-10 0 -10 12t12 12q2 0 20.5 -1t28.5 -1t24 1t20 1q7 0 8.5 -2t1.5 -10 q0 -12 -10 -12h-13q-6 0 -11 -8q-9 -15 -47 -105.5t-57 -129.5q-7 -14 -19.5 -28.5t-21.5 -27.5q-5 -6 -9 -6q-5 0 -9 8t-9 25.5t-6 19.5q-28 84 -90 240q-4 9 -6.5 10.5t-11.5 1.5h-8q-10 0 -10 12z" />
+<glyph horiz-adv-x="578" d="M20 295q0 12 10 12q7 0 24.5 -1t30.5 -1q11 0 37 1t33 1q8 0 9.5 -2t1.5 -10q0 -12 -9 -12h-18q-13 0 -13 -6q0 -2 12.5 -41.5l30 -91t27.5 -75.5q4 -13 6 -13t8 18q49 105 67 147q6 21 6 29q0 5 -4 17q-6 16 -28 16h-9q-10 0 -10 12q0 7 1.5 9.5t9.5 2.5q9 0 27 -1 t34 -1q11 0 30.5 1t29.5 1q8 0 9.5 -2t1.5 -10q0 -12 -10 -12h-17q-10 0 -10 -6q0 -2 11.5 -41.5l27.5 -91t26 -75.5q9 -19 10 -19q2 0 9 18q14 33 40.5 112.5t26.5 93.5q0 9 -10 9h-24q-11 0 -11 12t12 12q2 0 20.5 -1t28.5 -1q11 0 26.5 1t16.5 1q7 0 8.5 -2t1.5 -10 q0 -12 -10 -12h-5q-7 0 -11 -8q-7 -14 -41.5 -104t-54.5 -131q-7 -14 -17.5 -27.5t-19.5 -28.5q-2 -6 -9 -6q-9 0 -25 53q-23 82 -56 181q-4 14 -6 14q-4 0 -8 -14q-6 -13 -22.5 -52l-29 -67t-24.5 -49q-7 -14 -19.5 -28t-22.5 -32q-4 -6 -10 -6q-11 0 -27 57q-3 11 -17 50 l-34 94l-33 92q-3 9 -5.5 10.5t-11.5 1.5h-9q-10 0 -10 12z" />
+<glyph horiz-adv-x="392" d="M15 10q0 12 9 12q11 0 17 3.5t21 19.5l98 97q6 7 5.5 8t-5.5 7l-86 114q-7 9 -9.5 10.5t-11.5 1.5h-13q-10 0 -10 12q0 7 1.5 9.5t9.5 2.5q7 0 30 -1t36 -1q11 0 26.5 1t22.5 1q8 0 9.5 -2t1.5 -10q0 -12 -9 -12q-14 0 -14 -5q0 -2 8 -14l55 -73q4 -9 5 -8l2 3q2 5 4 8 q58 61 69 75q1 2 2 3.5t2 2.5t1 2q0 6 -21 6h-10q-10 0 -10 12q0 7 1.5 9.5t9.5 2.5t22 -1t23 -1q10 0 24.5 1t19.5 1q11 0 11 -12t-10 -12q-5 0 -10 -2.5t-8 -5t-8 -7.5l-8 -8l-54.5 -48.5t-35.5 -32.5q-2 -6 -2 -10q0 -2 8 -13q50 -70 94 -124q8 -10 14 -10h10 q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -26 1t-32 1q-11 0 -30.5 -1t-26.5 -1q-8 0 -9.5 2t-1.5 10q0 12 8 12h8q14 0 14 6l-17 26q-21 31 -56 74q-2 6 -3 7.5t-2 0t-4 -7.5l-21.5 -25l-31.5 -36t-23 -28q-1 -2 -3 -4l-3 -3t-1.5 -2.5t-0.5 -2.5q0 -5 14 -5h22 q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -23 1t-29 1q-12 0 -27 -1t-20 -1q-7 0 -8.5 2t-1.5 10z" />
+<glyph horiz-adv-x="378" d="M20 295q0 7 1.5 9.5t9.5 2.5q7 0 27 -1t32 -1q11 0 37.5 1t33.5 1q8 0 9.5 -2t1.5 -10q0 -12 -10 -12h-15q-21 0 -21 -8q0 -10 25 -80t45 -118q14 -32 15 -32q3 0 14 32q65 186 65 200q0 6 -23 6h-18q-10 0 -10 12q0 7 1.5 9.5t9.5 2.5q7 0 26 -1t27 -1q10 0 24.5 1 t19.5 1q11 0 11 -12t-10 -12h-11q-8 0 -10 -8l-104 -272q0 -1 -36 -93q-1 -4 -5.5 -16t-5.5 -14.5l-4.5 -11.5t-6 -13l-7.5 -12t-10.5 -15l-12.5 -16q-14 -19 -34 -29q-42 -21 -50 -21q-15 0 -15 17q0 11 15 34q8 11 23 15q3 1 14 5l18 6.5t16.5 7.5t15 10.5t8.5 12.5 q35 82 35 97q0 6 -22 59.5l-59.5 141.5t-43.5 103q-4 9 -6 10.5t-11 1.5h-9q-10 0 -10 12z" />
+<glyph horiz-adv-x="345" d="M35 9q0 6 8 17q179 261 179 263q0 3 -7 3q-41 0 -121 -4q-8 0 -10.5 -0.5t-5 -2t-3.5 -4t-2 -8.5l-7 -32q-3 -9 -12 -9q-14 0 -14 5q0 1 1.5 12.5t3 27.5t2.5 25q0 4 0.5 6t2 3t3.5 1.5t6 0.5h228q19 0 19 -8q0 -1 -7 -13l-168 -246q-11 -18 -11 -20t15 -2l137 4 q8 0 10 1t3 9l7 45q1 8 2.5 9t7.5 1h5q8 0 8 -5q0 -16 -5 -76q-1 -9 -2.5 -10.5t-10.5 -1.5h-244q-18 0 -18 9z" />
+<glyph horiz-adv-x="201" d="M30 205q0 53 15 103t36 83t43.5 58.5t36.5 37.5t16 12q5 0 9.5 -3t4.5 -7l-7 -7q-6 -6 -16 -17.5t-22 -28t-24 -39.5t-22 -49.5t-16.5 -61.5t-6.5 -72q0 -57 11.5 -109t27.5 -85.5t32 -58t27.5 -38.5t11.5 -16q0 -10 -13 -10q-3 0 -18 15.5t-36.5 45.5t-41.5 66.5t-34 85 t-14 95.5z" />
+<glyph horiz-adv-x="201" d="M10 -94l6 6q7 7 17 18.5t22 28t24 40t22 50t16.5 61.5t6.5 72q0 57 -11.5 108.5t-28 85t-32.5 58.5t-27.5 38.5t-11.5 15.5q0 11 14 11q3 0 18 -15.5t36.5 -45.5t41.5 -67t34 -85.5t14 -95.5q0 -53 -15 -103t-36.5 -83t-43.5 -58t-36.5 -37t-16.5 -12q-13 0 -13 9z" />
+<glyph horiz-adv-x="201" d="M30 455q0 53 15 103t36 83t43.5 58.5t36.5 37.5t16 12q5 0 9.5 -3t4.5 -7l-7 -7q-6 -6 -16 -17.5t-22 -28t-24 -39.5t-22 -49.5t-16.5 -61.5t-6.5 -72q0 -57 11.5 -109t27.5 -85.5t32 -58t27.5 -38.5t11.5 -16q0 -10 -13 -10q-3 0 -18 15.5t-36.5 45.5t-41.5 66.5t-34 85 t-14 95.5z" />
+<glyph horiz-adv-x="201" d="M10 156l6 6q7 7 17 18.5t22 28t24 40t22 50t16.5 61.5t6.5 72q0 57 -11.5 108.5t-28 85t-32.5 58.5t-27.5 38.5t-11.5 15.5q0 11 14 11q3 0 18 -15.5t36.5 -45.5t41.5 -67t34 -85.5t14 -95.5q0 -53 -15 -103t-36.5 -83t-43.5 -58t-36.5 -37t-16.5 -12q-13 0 -13 9z" />
+<glyph horiz-adv-x="201" d="M30 55q0 53 15 103t36 83t43.5 58.5t36.5 37.5t16 12q5 0 9.5 -3t4.5 -7l-7 -7q-6 -6 -16 -17.5t-22 -28t-24 -39.5t-22 -49.5t-16.5 -61.5t-6.5 -72q0 -57 11.5 -109t27.5 -85.5t32 -58t27.5 -38.5t11.5 -16q0 -10 -13 -10q-3 0 -18 15.5t-36.5 45.5t-41.5 66.5t-34 85 t-14 95.5z" />
+<glyph horiz-adv-x="201" d="M10 -244l6 6q7 7 17 18.5t22 28t24 40t22 50t16.5 61.5t6.5 72q0 57 -11.5 108.5t-28 85t-32.5 58.5t-27.5 38.5t-11.5 15.5q0 11 14 11q3 0 18 -15.5t36.5 -45.5t41.5 -67t34 -85.5t14 -95.5q0 -53 -15 -103t-36.5 -83t-43.5 -58t-36.5 -37t-16.5 -12q-13 0 -13 9z" />
+<glyph horiz-adv-x="201" d="M30 555q0 53 15 103t36 83t43.5 58.5t36.5 37.5t16 12q5 0 9.5 -3t4.5 -7l-7 -7q-6 -6 -16 -17.5t-22 -28t-24 -39.5t-22 -49.5t-16.5 -61.5t-6.5 -72q0 -57 11.5 -109t27.5 -85.5t32 -58t27.5 -38.5t11.5 -16q0 -10 -13 -10q-3 0 -18 15.5t-36.5 45.5t-41.5 66.5t-34 85 t-14 95.5z" />
+<glyph horiz-adv-x="201" d="M10 256l6 6q7 7 17 18.5t22 28t24 40t22 50t16.5 61.5t6.5 72q0 57 -11.5 108.5t-28 85t-32.5 58.5t-27.5 38.5t-11.5 15.5q0 11 14 11q3 0 18 -15.5t36.5 -45.5t41.5 -67t34 -85.5t14 -95.5q0 -53 -15 -103t-36.5 -83t-43.5 -58t-36.5 -37t-16.5 -12q-13 0 -13 9z" />
+<glyph horiz-adv-x="246" d="M90 -95v583q0 11 11 11h124q7 0 9 -1.5t2 -6.5v-12q0 -8 -2 -9.5t-9 -1.5h-84q-7 0 -8.5 -1.5t-1.5 -7.5v-526q0 -4 0.5 -5.5t2.5 -2.5t7 -1h84q5 0 7 -0.5t3 -2.5t1 -7v-11q0 -6 -2 -7.5t-9 -1.5h-124q-8 0 -9.5 1.5t-1.5 9.5z" />
+<glyph horiz-adv-x="246" d="M10 -86q0 7 1.5 8.5t8.5 1.5h84q7 0 9 1.5t2 7.5v526q0 6 -2 7.5t-9 1.5h-84q-7 0 -8.5 1.5t-1.5 9.5v11q0 4 0.5 5.5t2.5 2.5t7 1h124q8 0 10 -1.5t2 -9.5v-583q0 -11 -11 -11h-125q-8 0 -9 1t-1 6v13z" />
+<glyph horiz-adv-x="246" d="M90 155v583q0 11 11 11h124q7 0 9 -1.5t2 -6.5v-12q0 -8 -2 -9.5t-9 -1.5h-84q-7 0 -8.5 -1.5t-1.5 -7.5v-526q0 -4 0.5 -5.5t2.5 -2.5t7 -1h84q5 0 7 -0.5t3 -2.5t1 -7v-11q0 -6 -2 -7.5t-9 -1.5h-124q-8 0 -9.5 1.5t-1.5 9.5z" />
+<glyph horiz-adv-x="246" d="M10 164q0 7 1.5 8.5t8.5 1.5h84q7 0 9 1.5t2 7.5v526q0 6 -2 7.5t-9 1.5h-84q-7 0 -8.5 1.5t-1.5 9.5v11q0 4 0.5 5.5t2.5 2.5t7 1h124q8 0 10 -1.5t2 -9.5v-583q0 -11 -11 -11h-125q-8 0 -9 1t-1 6v13z" />
+<glyph horiz-adv-x="246" d="M90 -245v583q0 11 11 11h124q7 0 9 -1.5t2 -6.5v-12q0 -8 -2 -9.5t-9 -1.5h-84q-7 0 -8.5 -1.5t-1.5 -7.5v-526q0 -4 0.5 -5.5t2.5 -2.5t7 -1h84q5 0 7 -0.5t3 -2.5t1 -7v-11q0 -6 -2 -7.5t-9 -1.5h-124q-8 0 -9.5 1.5t-1.5 9.5z" />
+<glyph horiz-adv-x="246" d="M10 -236q0 7 1.5 8.5t8.5 1.5h84q7 0 9 1.5t2 7.5v526q0 6 -2 7.5t-9 1.5h-84q-7 0 -8.5 1.5t-1.5 9.5v11q0 4 0.5 5.5t2.5 2.5t7 1h124q8 0 10 -1.5t2 -9.5v-583q0 -11 -11 -11h-125q-8 0 -9 1t-1 6v13z" />
+<glyph horiz-adv-x="246" d="M90 255v583q0 11 11 11h124q7 0 9 -1.5t2 -6.5v-12q0 -8 -2 -9.5t-9 -1.5h-84q-7 0 -8.5 -1.5t-1.5 -7.5v-526q0 -4 0.5 -5.5t2.5 -2.5t7 -1h84q5 0 7 -0.5t3 -2.5t1 -7v-11q0 -6 -2 -7.5t-9 -1.5h-124q-8 0 -9.5 1.5t-1.5 9.5z" />
+<glyph horiz-adv-x="246" d="M10 264q0 7 1.5 8.5t8.5 1.5h84q7 0 9 1.5t2 7.5v526q0 6 -2 7.5t-9 1.5h-84q-7 0 -8.5 1.5t-1.5 9.5v11q0 4 0.5 5.5t2.5 2.5t7 1h124q8 0 10 -1.5t2 -9.5v-583q0 -11 -11 -11h-125q-8 0 -9 1t-1 6v13z" />
+<glyph horiz-adv-x="188" d="M40 -113q0 1 14 12.5t27.5 32t13.5 40.5q0 19 -13 34t-26 25t-13 15q0 12 17.5 24.5t23.5 12.5q12 0 36 -20.5t24 -36.5q0 -35 -21.5 -73t-43 -59t-26.5 -21q-4 0 -8.5 5t-4.5 9z" />
+<glyph horiz-adv-x="192" d="M49 35q0 14 14.5 33.5t24.5 19.5q14 0 33 -13.5t19 -29.5q0 -19 -14.5 -35.5t-23.5 -16.5q-18 0 -35.5 15.5t-17.5 26.5z" />
+<glyph horiz-adv-x="188" d="M40 137q0 1 14 12.5t27.5 32t13.5 40.5q0 19 -13 34t-26 25t-13 15q0 12 17.5 24.5t23.5 12.5q12 0 36 -20.5t24 -36.5q0 -35 -21.5 -73t-43 -59t-26.5 -21q-4 0 -8.5 5t-4.5 9z" />
+<glyph horiz-adv-x="192" d="M49 285q0 14 14.5 33.5t24.5 19.5q14 0 33 -13.5t19 -29.5q0 -19 -14.5 -35.5t-23.5 -16.5q-18 0 -35.5 15.5t-17.5 26.5z" />
+<glyph horiz-adv-x="188" d="M40 -263q0 1 14 12.5t27.5 32t13.5 40.5q0 19 -13 34t-26 25t-13 15q0 12 17.5 24.5t23.5 12.5q12 0 36 -20.5t24 -36.5q0 -35 -21.5 -73t-43 -59t-26.5 -21q-4 0 -8.5 5t-4.5 9z" />
+<glyph horiz-adv-x="192" d="M49 -115q0 14 14.5 33.5t24.5 19.5q14 0 33 -13.5t19 -29.5q0 -19 -14.5 -35.5t-23.5 -16.5q-18 0 -35.5 15.5t-17.5 26.5z" />
+<glyph horiz-adv-x="188" d="M40 237q0 1 14 12.5t27.5 32t13.5 40.5q0 19 -13 34t-26 25t-13 15q0 12 17.5 24.5t23.5 12.5q12 0 36 -20.5t24 -36.5q0 -35 -21.5 -73t-43 -59t-26.5 -21q-4 0 -8.5 5t-4.5 9z" />
+<glyph horiz-adv-x="192" d="M49 385q0 14 14.5 33.5t24.5 19.5q14 0 33 -13.5t19 -29.5q0 -19 -14.5 -35.5t-23.5 -16.5q-18 0 -35.5 15.5t-17.5 26.5z" />
+<glyph horiz-adv-x="223" d="M20 168q0 11 5 23.5t11 13.5q5 1 82 3.5t83 2.5q2 0 2 -8q0 -30 -7 -30q-96 -8 -172 -8q-4 0 -4 3z" />
+<glyph horiz-adv-x="223" d="M20 418q0 11 5 23.5t11 13.5q5 1 82 3.5t83 2.5q2 0 2 -8q0 -30 -7 -30q-96 -8 -172 -8q-4 0 -4 3z" />
+<glyph horiz-adv-x="223" d="M20 18q0 11 5 23.5t11 13.5q5 1 82 3.5t83 2.5q2 0 2 -8q0 -30 -7 -30q-96 -8 -172 -8q-4 0 -4 3z" />
+<glyph horiz-adv-x="223" d="M20 518q0 11 5 23.5t11 13.5q5 1 82 3.5t83 2.5q2 0 2 -8q0 -30 -7 -30q-96 -8 -172 -8q-4 0 -4 3z" />
+<glyph horiz-adv-x="360" d="M46 61q0 7 9.5 11t17.5 4q5 0 8.5 -2.5t10.5 -11.5t8 -11q26 -29 63 -32q4 0 4.5 0.5t0.5 4.5v152q0 9 -7 12q-35 15 -54.5 26t-39 35.5t-19.5 55.5q0 41 34 70t82 34q4 0 4 4v34q0 10 9 10h7q8 0 8 -10v-33q0 -4 3 -4q44 -3 72.5 -25t28.5 -42q0 -9 -10.5 -15t-16.5 -6 q-8 0 -11.5 9.5t-5 21t-15 22.5t-40.5 13q-5 0 -5 -3v-150v-8.5t6 -2.5q27 -12 41.5 -19.5t34.5 -22t29.5 -32.5t9.5 -41q0 -48 -30 -77.5t-84 -34.5q-5 0 -6 -0.5t-1 -4.5v-80q0 -11 -12 -11t-12 11v80q0 5 -6 5q-46 3 -81 22.5t-35 41.5zM96 309q0 -27 18 -42.5t51 -29.5 q2 -1 2.5 -0.5t0.5 4.5v144q0 4 -7 2q-17 -4 -28 -11q-37 -22 -37 -67zM192 27q0 -9 10 -6q27 7 45 29t18 46q0 27 -17.5 44.5t-50.5 32.5q-5 2 -5 -1v-145z" />
+<glyph horiz-adv-x="360" d="M46 311q0 7 9.5 11t17.5 4q5 0 8.5 -2.5t10.5 -11.5t8 -11q26 -29 63 -32q4 0 4.5 0.5t0.5 4.5v152q0 9 -7 12q-35 15 -54.5 26t-39 35.5t-19.5 55.5q0 41 34 70t82 34q4 0 4 4v34q0 10 9 10h7q8 0 8 -10v-33q0 -4 3 -4q44 -3 72.5 -25t28.5 -42q0 -9 -10.5 -15t-16.5 -6 q-8 0 -11.5 9.5t-5 21t-15 22.5t-40.5 13q-5 0 -5 -3v-150v-8.5t6 -2.5q27 -12 41.5 -19.5t34.5 -22t29.5 -32.5t9.5 -41q0 -48 -30 -77.5t-84 -34.5q-5 0 -6 -0.5t-1 -4.5v-80q0 -11 -12 -11t-12 11v80q0 5 -6 5q-46 3 -81 22.5t-35 41.5zM96 559q0 -27 18 -42.5t51 -29.5 q2 -1 2.5 -0.5t0.5 4.5v144q0 4 -7 2q-17 -4 -28 -11q-37 -22 -37 -67zM192 277q0 -9 10 -6q27 7 45 29t18 46q0 27 -17.5 44.5t-50.5 32.5q-5 2 -5 -1v-145z" />
+<glyph horiz-adv-x="360" d="M46 -89q0 7 9.5 11t17.5 4q5 0 8.5 -2.5t10.5 -11.5t8 -11q26 -29 63 -32q4 0 4.5 0.5t0.5 4.5v152q0 9 -7 12q-35 15 -54.5 26t-39 35.5t-19.5 55.5q0 41 34 70t82 34q4 0 4 4v34q0 10 9 10h7q8 0 8 -10v-33q0 -4 3 -4q44 -3 72.5 -25t28.5 -42q0 -9 -10.5 -15t-16.5 -6 q-8 0 -11.5 9.5t-5 21t-15 22.5t-40.5 13q-5 0 -5 -3v-150v-8.5t6 -2.5q27 -12 41.5 -19.5t34.5 -22t29.5 -32.5t9.5 -41q0 -48 -30 -77.5t-84 -34.5q-5 0 -6 -0.5t-1 -4.5v-80q0 -11 -12 -11t-12 11v80q0 5 -6 5q-46 3 -81 22.5t-35 41.5zM96 159q0 -27 18 -42.5t51 -29.5 q2 -1 2.5 -0.5t0.5 4.5v144q0 4 -7 2q-17 -4 -28 -11q-37 -22 -37 -67zM192 -123q0 -9 10 -6q27 7 45 29t18 46q0 27 -17.5 44.5t-50.5 32.5q-5 2 -5 -1v-145z" />
+<glyph horiz-adv-x="360" d="M46 411q0 7 9.5 11t17.5 4q5 0 8.5 -2.5t10.5 -11.5t8 -11q26 -29 63 -32q4 0 4.5 0.5t0.5 4.5v152q0 9 -7 12q-35 15 -54.5 26t-39 35.5t-19.5 55.5q0 41 34 70t82 34q4 0 4 4v34q0 10 9 10h7q8 0 8 -10v-33q0 -4 3 -4q44 -3 72.5 -25t28.5 -42q0 -9 -10.5 -15t-16.5 -6 q-8 0 -11.5 9.5t-5 21t-15 22.5t-40.5 13q-5 0 -5 -3v-150v-8.5t6 -2.5q27 -12 41.5 -19.5t34.5 -22t29.5 -32.5t9.5 -41q0 -48 -30 -77.5t-84 -34.5q-5 0 -6 -0.5t-1 -4.5v-80q0 -11 -12 -11t-12 11v80q0 5 -6 5q-46 3 -81 22.5t-35 41.5zM96 659q0 -27 18 -42.5t51 -29.5 q2 -1 2.5 -0.5t0.5 4.5v144q0 4 -7 2q-17 -4 -28 -11q-37 -22 -37 -67zM192 377q0 -9 10 -6q27 7 45 29t18 46q0 27 -17.5 44.5t-50.5 32.5q-5 2 -5 -1v-145z" />
+<glyph horiz-adv-x="360" d="M59 129q0 69 41.5 111.5t96.5 46.5q4 0 6 10q1 11 2.5 24l2.5 21t1 11q0 2 3 2h7q7 0 7 -2l-6 -56q-1 -10 9 -11q27 -5 47 -24t20 -42q0 -8 -8 -13q-14 -10 -22 -10q-10 0 -11 6q-1 4 -2.5 12t-2.5 12t-2.5 11t-3.5 10.5t-5 8t-6.5 7.5t-7.5 4q-6 2 -7 -6l-20 -224 q0 -8 3 -9q5 -3 25 -3q19 1 35.5 7t26.5 11l9 6q5 0 5 -6q0 -2 -6 -8q-41 -41 -95 -41q-8 0 -9 -8q-6 -54 -10 -79h-15q0 11 8 78q2 11 -8 12q-50 10 -79 45.5t-29 85.5zM108 148q0 -36 16.5 -67t46.5 -45q1 -1 4 -1q4 0 4 5l21 219q0 9 -6 9h-1q-38 -3 -61.5 -40.5 t-23.5 -79.5z" />
+<glyph horiz-adv-x="360" d="M59 379q0 69 41.5 111.5t96.5 46.5q4 0 6 10q1 11 2.5 24l2.5 21t1 11q0 2 3 2h7q7 0 7 -2l-6 -56q-1 -10 9 -11q27 -5 47 -24t20 -42q0 -8 -8 -13q-14 -10 -22 -10q-10 0 -11 6q-1 4 -2.5 12t-2.5 12t-2.5 11t-3.5 10.5t-5 8t-6.5 7.5t-7.5 4q-6 2 -7 -6l-20 -224 q0 -8 3 -9q5 -3 25 -3q19 1 35.5 7t26.5 11l9 6q5 0 5 -6q0 -2 -6 -8q-41 -41 -95 -41q-8 0 -9 -8q-6 -54 -10 -79h-15q0 11 8 78q2 11 -8 12q-50 10 -79 45.5t-29 85.5zM108 398q0 -36 16.5 -67t46.5 -45q1 -1 4 -1q4 0 4 5l21 219q0 9 -6 9h-1q-38 -3 -61.5 -40.5 t-23.5 -79.5z" />
+<glyph horiz-adv-x="360" d="M59 -21q0 69 41.5 111.5t96.5 46.5q4 0 6 10q1 11 2.5 24l2.5 21t1 11q0 2 3 2h7q7 0 7 -2l-6 -56q-1 -10 9 -11q27 -5 47 -24t20 -42q0 -8 -8 -13q-14 -10 -22 -10q-10 0 -11 6q-1 4 -2.5 12t-2.5 12t-2.5 11t-3.5 10.5t-5 8t-6.5 7.5t-7.5 4q-6 2 -7 -6l-20 -224 q0 -8 3 -9q5 -3 25 -3q19 1 35.5 7t26.5 11l9 6q5 0 5 -6q0 -2 -6 -8q-41 -41 -95 -41q-8 0 -9 -8q-6 -54 -10 -79h-15q0 11 8 78q2 11 -8 12q-50 10 -79 45.5t-29 85.5zM108 -2q0 -36 16.5 -67t46.5 -45q1 -1 4 -1q4 0 4 5l21 219q0 9 -6 9h-1q-38 -3 -61.5 -40.5 t-23.5 -79.5z" />
+<glyph horiz-adv-x="360" d="M59 479q0 69 41.5 111.5t96.5 46.5q4 0 6 10q1 11 2.5 24l2.5 21t1 11q0 2 3 2h7q7 0 7 -2l-6 -56q-1 -10 9 -11q27 -5 47 -24t20 -42q0 -8 -8 -13q-14 -10 -22 -10q-10 0 -11 6q-1 4 -2.5 12t-2.5 12t-2.5 11t-3.5 10.5t-5 8t-6.5 7.5t-7.5 4q-6 2 -7 -6l-20 -224 q0 -8 3 -9q5 -3 25 -3q19 1 35.5 7t26.5 11l9 6q5 0 5 -6q0 -2 -6 -8q-41 -41 -95 -41q-8 0 -9 -8q-6 -54 -10 -79h-15q0 11 8 78q2 11 -8 12q-50 10 -79 45.5t-29 85.5zM108 498q0 -36 16.5 -67t46.5 -45q1 -1 4 -1q4 0 4 5l21 219q0 9 -6 9h-1q-38 -3 -61.5 -40.5 t-23.5 -79.5z" />
+<glyph horiz-adv-x="352" d="M35 307q0 49 55 78.5t132 42.5q6 1 6 12q0 27 -1.5 41.5t-7.5 32.5t-21 26.5t-39 8.5q-13 0 -24 -4q-16 -6 -20.5 -16.5t-5.5 -35.5q0 -13 -6 -17q-33 -21 -47 -21q-8 0 -8 12q0 46 41.5 75.5t87.5 29.5q60 0 85 -26.5t25 -77.5q0 -23 -2.5 -90t-2.5 -73q0 -24 18 -24 q2 0 16 9.5t15 9.5q2 0 6 -4.5t4 -8.5t-54 -43q-13 -9 -22 -9q-13 0 -21 12.5t-10 24.5l-3 13q-1 0 -3.5 -2t-6.5 -4.5l-7 -4.5q-56 -36 -96 -36q-39 0 -61 18.5t-22 50.5zM98 331q0 -21 14.5 -37.5t38.5 -16.5q16 0 35 4.5t30.5 10t11.5 7.5v104q0 9 -4 9q-11 0 -50 -12 q-76 -24 -76 -69z" />
+<glyph horiz-adv-x="414" d="M10 759q0 19 4 19l47.5 5.5l50 6t22.5 2.5q6 0 6 -12q-3 -150 -3 -216q0 -31 1 -31l6 3q5 3 14 6.5l19.5 7.5t24 7t24.5 3q69 0 113.5 -46t44.5 -113q0 -75 -54.5 -118.5t-130.5 -43.5q-16 0 -40 8.5t-35 8.5q-10 0 -24 -8t-17 -8q-10 0 -10 10q0 1 1.5 29.5t2.5 66.5 t1 61q0 64 -4 208t-10 144q-2 0 -25 -2.5t-24 -2.5q-5 0 -5 5zM135 303q0 -40 67 -40q54 0 85.5 40.5t31.5 96.5q0 53 -38 93.5t-90 40.5q-12 0 -25.5 -4t-21 -9t-7.5 -7q0 -47 -1 -126t-1 -85z" />
+<glyph horiz-adv-x="350" d="M30 392q0 84 52.5 132t119.5 48q41 0 76.5 -24t35.5 -54q0 -10 -9 -16q-15 -11 -27 -11q-11 0 -15 9q-2 5 -6 17l-6 18t-7 14.5t-10.5 12.5t-15 7t-21.5 3q-48 0 -78 -41.5t-30 -92.5q0 -54 33.5 -93.5t92.5 -39.5q25 0 48 6t36 12t15 6q6 0 6 -7q0 -4 -14.5 -17 t-47.5 -26.5t-70 -13.5q-73 0 -115.5 41t-42.5 110z" />
+<glyph horiz-adv-x="424" d="M29 397q0 68 48.5 114.5t119.5 46.5q14 0 27.5 -2.5t23 -6l17.5 -6.5l13 -5l4 -3q5 0 5 15q0 37 -1.5 89t-3.5 87.5t-3 35.5t-25 -3.5t-28 -3.5q-6 0 -4 13q2 11 7 12l48 7l44 6.5t19 2.5q6 0 7.5 -2.5t1.5 -15.5q0 -5 -1.5 -49.5t-3 -132.5t-1.5 -197q0 -38 2 -96 q1 -24 4.5 -31.5t13.5 -7.5q3 0 27 4q9 2 9 -8t-1.5 -13t-9.5 -4l-98 -13q-5 0 -5 8q0 1 0.5 15.5t0.5 16.5q0 8 -1.5 8.5t-10.5 -4.5q-52 -35 -99 -35q-62 0 -104 38.5t-42 119.5zM95 403q0 -58 31 -94.5t92 -36.5q19 0 44 8t25 18v201q0 10 -24.5 25.5t-52.5 15.5 q-51 0 -83 -41t-32 -96z" />
+<glyph horiz-adv-x="366" d="M30 396q0 74 48 123.5t124 49.5q59 0 92 -37.5t33 -92.5q0 -9 -44 -9q-5 0 -93.5 2t-91.5 2q-4 0 -4 -28q0 -60 36.5 -94.5t86.5 -34.5q18 0 35.5 5.5t29.5 12.5t21.5 14.5t14.5 12.5l5 6q1 0 7 -6t6 -7q0 -4 -17.5 -22t-53.5 -37t-74 -19q-76 0 -118.5 43.5t-42.5 115.5 zM98 456q0 -6 10 -6q45 0 125 4q32 1 32 3q0 50 -23 71t-50 21q-37 0 -64.5 -30.5t-29.5 -62.5z" />
+<glyph horiz-adv-x="296" d="M45 261q0 12 10 12h32q3 0 3 49q0 16 -0.5 40t-0.5 26v47v56q0 33 -1 33h-27q-7 0 -9 2t-2 10t1.5 10t7.5 2h22q5 0 6.5 1.5t1.5 8.5q0 19 -1 37.5t-1 40.5q0 70 31.5 114t101.5 44q27 0 49 -15.5t22 -39.5q0 -13 -16 -25.5t-27 -12.5t-12 7q-7 48 -17 58q-7 8 -20 8 q-47 0 -47 -131q0 -13 -2 -81q0 -10 2.5 -12t14.5 -2h96q6 0 6 -5q0 -4 -2.5 -11t-4.5 -7h-95q-9 0 -11.5 -1.5t-2.5 -7.5v-130q0 -113 8 -113h53q10 0 10 -12q-4 -12 -10 -13q-7 0 -41.5 1t-47.5 1q-10 0 -33 -1t-36 -1q-8 0 -9.5 2.5t-1.5 10.5z" />
+<glyph horiz-adv-x="399" d="M30 110q0 36 37.5 59t79.5 31q20 4 20 5t-18 1h-47q-27 0 -34 15q-8 17 -8 39q0 25 16 29l35.5 9.5l39.5 10.5q6 2 12 3q4 0 3.5 0.5t-4.5 1.5t-7 2q-108 29 -108 131q0 52 45.5 86.5t103.5 34.5q27 0 51.5 -11t37.5 -23l13 -11q2 0 12.5 4t26 8.5t26.5 5.5q2 0 5 -9 t3 -17q0 -5 -3 -5q-53 -5 -53 -11q0 -1 3 -8.5t6 -20t3 -27.5q0 -88 -95 -122q-27 -10 -143 -41q-4 -2 -4 -7q0 -6 4 -12.5t7 -7.5q19 -1 57 -2t63.5 -1.5t58 -6t52 -15t33.5 -29t14 -47.5q0 -62 -51.5 -98.5t-134.5 -36.5q-60 0 -109 24.5t-49 68.5zM71 116 q0 -35 36.5 -55.5t79.5 -20.5q55 0 95.5 21.5t40.5 68.5q0 31 -45 47t-99 16q-36 0 -72 -21t-36 -56zM105 450q0 -51 33 -87t55 -36q27 0 52.5 34t25.5 84q0 47 -21.5 73.5t-58.5 26.5q-35 0 -60.5 -28t-25.5 -67z" />
+<glyph horiz-adv-x="439" d="M25 760q0 14 4 15q15 2 47.5 6t54.5 7t24 3q4 0 4 -16q-8 -134 -8 -244q0 -10 1.5 -11t7.5 4q62 36 110 36q33 0 54.5 -12.5t31.5 -38t13.5 -51t3.5 -62.5v-114q0 -7 1.5 -8.5t7.5 -1.5h21q11 0 11 -12t-12 -12q-7 0 -26.5 1t-32.5 1q-10 0 -34.5 -1t-37.5 -1 q-8 0 -9.5 2t-1.5 10q0 12 11 12h31q6 0 6.5 1t1.5 8q2 32 2 138q0 46 -19.5 75t-57.5 29q-37 0 -71 -17q-13 -7 -13 -11l1 -118q0 -71 1 -91q1 -10 2 -12t7 -2h31q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -31.5 1t-38.5 1q-10 0 -34.5 -1t-37.5 -1q-8 0 -9.5 2t-1.5 10 q0 12 9 12h32q6 0 7 2t1 12q1 74 1 174q0 175 -7 282q-1 14 -5 14q-1 0 -24 -3t-25 -3q-3 0 -3 10z" />
+<glyph horiz-adv-x="220" d="M25 534q0 3 4 12q2 5 3.5 5.5t9.5 1.5q80 5 97 5q6 0 6 -5v-136q0 -90 3 -135q0 -10 8 -10h30q9 0 9 -12t-9 -12q-7 0 -34 1t-38 1t-40 -1t-36 -1q-6 0 -7.5 2t-1.5 10q0 7 1.5 9.5t9.5 2.5h34q7 0 8 1.5t1 7.5q1 23 1 70q0 110 -3 168q-1 9 -3 11t-8 2q-1 0 -20 -1 t-21 -1q-4 0 -4 4zM67 690q0 22 18 35.5t37 13.5q37 0 37 -36q0 -21 -17.5 -35.5t-37.5 -14.5q-15 0 -26 9.5t-11 27.5z" />
+<glyph horiz-adv-x="245" d="M5 48q0 15 12 31.5t21 16.5q10 0 25.5 -2t18.5 -2q31 0 31 26q0 7 -2 44.5t-4 114t-2 179.5q0 38 -2 59q-1 11 -8 11q-3 0 -28.5 -1.5t-29.5 -1.5q-2 0 -2 4q0 7 3 14q11 8 13 8q19 0 45.5 1.5l44 2.5t18.5 1q6 0 6 -19q0 -16 2.5 -109.5t2.5 -153.5q0 -71 -9.5 -116 t-36.5 -79q-11 -13 -48 -30t-55 -17q-16 0 -16 18zM60 711q0 22 17.5 35.5t36.5 13.5q38 0 38 -36q0 -21 -17.5 -35.5t-37.5 -14.5q-15 0 -26 9.5t-11 27.5z" />
+<glyph horiz-adv-x="406" d="M25 768v8q0 12 9 13q85 8 111 8q7 0 7 -10l-9 -360q0 -6 2 -7.5t11 -1.5h17q9 0 24 17q36 48 61 89q6 7 5.5 10t-12.5 3h-14q-9 0 -9 12t11 12q3 0 20 -1t27 -1q8 0 24 1t22 1q10 0 10 -12t-9 -12h-26q-4 0 -37 -38.5l-49 -58.5l-2 -2q-7 -7 -4 -10q1 0 2 -2q4 -3 6 -5 l127 -139q9 -10 18 -10h8q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-5 0 -25 1t-32 1t-32.5 -1t-25.5 -1q-8 0 -9.5 2t-1.5 10q0 12 12 12h10q15 0 5 12l-97 106q-7 10 -9 11.5t-8 1.5h-11q-6 0 -7 -2.5t-1 -9.5v-105q0 -10 1.5 -12t7.5 -2h19q10 0 10 -12q0 -7 -1.5 -9.5 t-9.5 -2.5q-7 0 -25 1t-32 1q-16 0 -41 -1t-27 -1q-8 0 -9.5 2t-1.5 10q0 12 10 12h33q6 0 7 2t1 12v154q0 324 -8 324q-2 0 -21 -1.5t-23 -1.5q-8 0 -8 7z" />
+<glyph horiz-adv-x="223" d="M25 765q0 2 2 14q1 5 2 5.5t7 1.5q91 8 103 8q6 0 6 -12q1 -126 3 -263.5t2 -215.5q0 -31 7 -31h31q10 0 10 -12t-10 -12q-7 0 -30 1t-36 1q-10 0 -37.5 -1t-40.5 -1q-8 0 -9.5 2t-1.5 10q0 12 10 12h41q3 0 3 68q0 309 -10 410q0 3 -1 7q0 6 -1 7.5t-6 1.5q-2 0 -19 -2 t-18 -2q-7 0 -7 3z" />
+<glyph horiz-adv-x="620" d="M25 529q0 9 3 16q2 5 3 5.5t10 1.5q70 4 84 4q10 0 11.5 -1t1.5 -8v-26q0 -12 1 -13q1 0 7 5q64 49 116 49q18 0 31.5 -4.5t21 -11t12 -13.5t6.5 -11l2 -5q2 0 11 6q21 14 51 25.5t52 11.5q57 0 80 -30t23 -86q0 -37 -1 -93t-1 -71q0 -8 8 -8h25q12 0 12 -12t-12 -12 q-7 0 -29 1t-35 1q-10 0 -34 -1t-37 -1q-8 0 -9.5 2t-1.5 10q0 12 12 12h32q8 0 8 150q0 100 -72 100q-18 0 -37.5 -5.5t-30 -11.5t-10.5 -7t1.5 -7t3 -19.5t1.5 -34.5v-133q0 -32 2 -32h27q11 0 11 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -27.5 1t-33.5 1q-10 0 -29 -1t-32 -1 q-8 0 -10.5 2t-2.5 10q0 12 10 12h31q6 0 6 76v32t-0.5 29t-0.5 13q0 33 -2.5 51t-16 33.5t-39.5 15.5q-45 0 -80 -24q-8 -6 -8 -14v-178q0 -24 2 -29t13 -5h17q11 0 11 -12t-12 -12q-7 0 -29.5 1t-33.5 1t-38 -1t-32 -1q-10 0 -10 12t9 12h31q7 0 10 25q2 16 2 84v86 q0 62 -4 62q-1 0 -22.5 -1.5t-23.5 -1.5q-4 0 -4 3z" />
+<glyph horiz-adv-x="435" d="M25 529q0 6 4 14q2 5 3 5.5t10 1.5q4 0 40 2.5t49 3.5q10 1 10.5 0t0.5 -9v-37q0 -6 10 3l2 2l15 10.5t19.5 12.5l19.5 10t25 8.5t27 2.5q66 0 88 -36.5t22 -105.5q0 -26 -2.5 -79.5t-2.5 -55.5q0 -7 1.5 -8.5t7.5 -1.5h24q8 0 10 -2t2 -10q0 -12 -10 -12q-7 0 -28.5 1 t-34.5 1q-10 0 -34 -1t-37 -1q-9 0 -10.5 2t-1.5 10t2 10t8 2h29q6 0 7 1t2 8q4 38 4 138q0 102 -77 102q-25 0 -71 -23q-14 -6 -14 -18q0 -32 -0.5 -96.5t-0.5 -96.5q0 -7 0.5 -9.5t2.5 -4t7 -1.5h29q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -30.5 1t-36.5 1 q-10 0 -35.5 -1t-38.5 -1q-8 0 -9 2t-1 10q0 12 9 12h31q6 0 6.5 2t1.5 12q5 78 5 153q0 55 -2 79q-1 10 -2 10.5t-8 0.5q-1 0 -21.5 -2t-22.5 -2t-2 4z" />
+<glyph horiz-adv-x="384" d="M30 397q0 73 48 122.5t124 49.5q67 0 109.5 -46.5t42.5 -114.5q0 -76 -44 -123.5t-121 -47.5q-67 0 -113 47t-46 113zM94 386q0 -49 25.5 -87.5t69.5 -38.5q99 0 99 154q0 52 -24.5 92t-71.5 40q-98 0 -98 -160z" />
+<glyph horiz-adv-x="432" d="M25 530q0 4 2.5 12t4.5 8q25 1 52.5 2t43 2t16.5 1q4 0 6 -0.5t3 -3t1 -8.5v-21q0 -9 1 -9t16 13q41 32 89 32q69 0 105.5 -42.5t36.5 -109.5q0 -65 -48 -114.5t-125 -49.5q-23 0 -55 10q-17 6 -18 4q-1 -1 -1 -4l2 -150q2 -53 5 -53h56q10 0 10 -12q-4 -12 -10 -13 q-7 0 -41.5 1t-47.5 1q-10 0 -39 -1t-42 -1q-8 0 -9.5 2.5t-1.5 10.5q0 12 10 12h45q3 0 3 127v112q0 151 -7 228q-1 8 -2.5 9.5t-10.5 1.5q-3 0 -20.5 -1t-19.5 -1q-10 0 -10 5zM155 292q0 -13 24 -23t45 -10q52 0 82.5 43.5t30.5 96.5q0 57 -30 92t-75 35q-31 0 -51 -10 q-26 -13 -26 -26v-198z" />
+<glyph horiz-adv-x="413" d="M30 395q0 70 49.5 115.5t124.5 45.5q27 0 60 -11.5t38 -11.5q8 0 17 14.5t15 14.5q13 0 13 -10q-4 -95 -4 -238v-132q0 -130 2 -130h33q10 0 10 -13q0 -8 -1.5 -10.5t-9.5 -2.5h-23q-20 0 -40.5 -1t-35.5 -2.5t-27 -3t-19 -2.5t-8 -1q-8 0 -10 2.5t-2 8.5q0 14 10 15 q8 1 17.5 2l14 1.5t9.5 1t6.5 2t4 3t2.5 5t0.5 7t0.5 10.5l2 177q0 7 -3 7q-4 0 -13 -3q-50 -15 -90 -15q-56 0 -99.5 38.5t-43.5 116.5zM94 403q0 -52 31.5 -94t83.5 -42q71 0 71 17v198q0 24 -22 37t-61 13q-50 0 -76.5 -38.5t-26.5 -90.5z" />
+<glyph horiz-adv-x="291" d="M30 530q0 6 2 11t3 5.5t10 1.5q36 3 86 3q10 0 10.5 -0.5t0.5 -7.5q0 -8 0.5 -26.5t0.5 -26.5v-15l8 21q13 33 34 52.5t40 19.5q16 0 31 -14t15 -23q0 -8 -10.5 -21.5t-19.5 -13.5t-24.5 12t-23.5 12q-45 0 -45 -159q0 -88 10 -88h49q11 0 11 -12q0 -13 -11 -13 q-7 0 -41 1t-47 1q-10 0 -34 -1t-37 -1q-8 0 -9 2t-1 11q0 12 9 12h34q8 0 8 107q0 148 -6 148q-1 0 -25 -1t-26 -1t-2 4z" />
+<glyph horiz-adv-x="276" d="M40 290q0 9 8 20t13 11q2 0 3.5 -2.5t4 -8t6.5 -10.5q29 -40 66 -40q20 0 33.5 13.5t13.5 38.5q0 26 -16.5 41.5t-46.5 30.5q-2 1 -13 6t-13.5 6.5l-12 7t-12.5 8l-10 8.5t-9.5 11l-6 12.5t-5 15.5t-1.5 17q0 39 32.5 65t74.5 26q38 0 58 -18.5t20 -36.5q0 -6 -10.5 -11 t-17.5 -5q-6 0 -10.5 13t-14 26t-29.5 13t-35.5 -13.5t-15.5 -42.5q0 -16 10 -29.5t19 -19t30 -16.5q57 -32 72 -50q16 -19 16 -43q0 -43 -31 -69t-75 -26q-35 0 -65 16t-30 35z" />
+<glyph horiz-adv-x="258" d="M40 522q0 3 3 6l78 105q5 5 8 5q9 0 9 -8q0 -1 -1.5 -16.5t-3 -33.5t-1.5 -24q0 -8 9 -8h76q9 0 10 -2t-2 -14q-3 -15 -11 -15h-79q-3 0 -3 -36v-149q0 -15 1.5 -23.5t11 -16.5t26.5 -8q14 0 28.5 3t24 6t11.5 3q3 0 3 -13q0 -2 -19 -12t-45 -19.5t-41 -9.5 q-33 0 -46.5 16.5t-13.5 38.5q2 114 2 171q0 48 -10 48h-20q-5 0 -5 6z" />
+<glyph horiz-adv-x="440" d="M25 537q0 3 3 10t13 8q76 4 93 4q6 0 6 -5v-217q0 -54 89 -54q73 0 73 13v93q0 147 -6 147q-1 0 -20.5 -1t-21.5 -1q-3 0 -3 3q2 16 5 17q2 2 6 2q64 4 96 4q6 0 6 -4q-1 -191 -1 -240q0 -30 2.5 -38.5t12.5 -8.5q1 0 16.5 2t16.5 2q4 0 4 -9t-1.5 -10.5t-10.5 -3.5 q-11 -2 -33 -5t-37 -5.5t-18 -2.5q-8 0 -9 11q-3 33 -4 33l-22 -11q-21 -10 -53.5 -20t-59.5 -10q-54 0 -72 28.5t-18 77.5v126v17q0 44 -9 44q-1 0 -19.5 -0.5t-20.5 -0.5q-3 0 -3 5z" />
+<glyph horiz-adv-x="378" d="M20 545q0 12 10 12q6 0 24 -1t30 -1q11 0 36.5 1t31.5 1q7 0 8.5 -2t1.5 -10q0 -12 -9 -12h-24q-15 0 -15 -6q0 -2 14 -41.5l33 -90.5l29 -76q7 -15 9 -15t7 13q76 180 76 203q0 13 -8 13h-21q-10 0 -10 12t12 12q2 0 20.5 -1t28.5 -1t24 1t20 1q7 0 8.5 -2t1.5 -10 q0 -12 -10 -12h-13q-6 0 -11 -8q-9 -15 -47 -105.5t-57 -129.5q-7 -14 -19.5 -28.5t-21.5 -27.5q-5 -6 -9 -6q-5 0 -9 8t-9 25.5t-6 19.5q-28 84 -90 240q-4 9 -6.5 10.5t-11.5 1.5h-8q-10 0 -10 12z" />
+<glyph horiz-adv-x="578" d="M20 545q0 12 10 12q7 0 24.5 -1t30.5 -1q11 0 37 1t33 1q8 0 9.5 -2t1.5 -10q0 -12 -9 -12h-18q-13 0 -13 -6q0 -2 12.5 -41.5l30 -91t27.5 -75.5q4 -13 6 -13t8 18q49 105 67 147q6 21 6 29q0 5 -4 17q-6 16 -28 16h-9q-10 0 -10 12q0 7 1.5 9.5t9.5 2.5q9 0 27 -1 t34 -1q11 0 30.5 1t29.5 1q8 0 9.5 -2t1.5 -10q0 -12 -10 -12h-17q-10 0 -10 -6q0 -2 11.5 -41.5l27.5 -91t26 -75.5q9 -19 10 -19q2 0 9 18q14 33 40.5 112.5t26.5 93.5q0 9 -10 9h-24q-11 0 -11 12t12 12q2 0 20.5 -1t28.5 -1q11 0 26.5 1t16.5 1q7 0 8.5 -2t1.5 -10 q0 -12 -10 -12h-5q-7 0 -11 -8q-7 -14 -41.5 -104t-54.5 -131q-7 -14 -17.5 -27.5t-19.5 -28.5q-2 -6 -9 -6q-9 0 -25 53q-23 82 -56 181q-4 14 -6 14q-4 0 -8 -14q-6 -13 -22.5 -52l-29 -67t-24.5 -49q-7 -14 -19.5 -28t-22.5 -32q-4 -6 -10 -6q-11 0 -27 57q-3 11 -17 50 l-34 94l-33 92q-3 9 -5.5 10.5t-11.5 1.5h-9q-10 0 -10 12z" />
+<glyph horiz-adv-x="392" d="M15 260q0 12 9 12q11 0 17 3.5t21 19.5l98 97q6 7 5.5 8t-5.5 7l-86 114q-7 9 -9.5 10.5t-11.5 1.5h-13q-10 0 -10 12q0 7 1.5 9.5t9.5 2.5q7 0 30 -1t36 -1q11 0 26.5 1t22.5 1q8 0 9.5 -2t1.5 -10q0 -12 -9 -12q-14 0 -14 -5q0 -2 8 -14l55 -73q4 -9 5 -8l2 3q2 5 4 8 q58 61 69 75q1 2 2 3.5t2 2.5t1 2q0 6 -21 6h-10q-10 0 -10 12q0 7 1.5 9.5t9.5 2.5t22 -1t23 -1q10 0 24.5 1t19.5 1q11 0 11 -12t-10 -12q-5 0 -10 -2.5t-8 -5t-8 -7.5l-8 -8l-54.5 -48.5t-35.5 -32.5q-2 -6 -2 -10q0 -2 8 -13q50 -70 94 -124q8 -10 14 -10h10 q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -26 1t-32 1q-11 0 -30.5 -1t-26.5 -1q-8 0 -9.5 2t-1.5 10q0 12 8 12h8q14 0 14 6l-17 26q-21 31 -56 74q-2 6 -3 7.5t-2 0t-4 -7.5l-21.5 -25l-31.5 -36t-23 -28q-1 -2 -3 -4l-3 -3t-1.5 -2.5t-0.5 -2.5q0 -5 14 -5h22 q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -23 1t-29 1q-12 0 -27 -1t-20 -1q-7 0 -8.5 2t-1.5 10z" />
+<glyph horiz-adv-x="378" d="M20 545q0 7 1.5 9.5t9.5 2.5q7 0 27 -1t32 -1q11 0 37.5 1t33.5 1q8 0 9.5 -2t1.5 -10q0 -12 -10 -12h-15q-21 0 -21 -8q0 -10 25 -80t45 -118q14 -32 15 -32q3 0 14 32q65 186 65 200q0 6 -23 6h-18q-10 0 -10 12q0 7 1.5 9.5t9.5 2.5q7 0 26 -1t27 -1q10 0 24.5 1 t19.5 1q11 0 11 -12t-10 -12h-11q-8 0 -10 -8l-104 -272q0 -1 -36 -93q-1 -4 -5.5 -16t-5.5 -14.5l-4.5 -11.5t-6 -13l-7.5 -12t-10.5 -15l-12.5 -16q-14 -19 -34 -29q-42 -21 -50 -21q-15 0 -15 17q0 11 15 34q8 11 23 15q3 1 14 5l18 6.5t16.5 7.5t15 10.5t8.5 12.5 q35 82 35 97q0 6 -22 59.5l-59.5 141.5t-43.5 103q-4 9 -6 10.5t-11 1.5h-9q-10 0 -10 12z" />
+<glyph horiz-adv-x="345" d="M35 259q0 6 8 17q179 261 179 263q0 3 -7 3q-41 0 -121 -4q-8 0 -10.5 -0.5t-5 -2t-3.5 -4t-2 -8.5l-7 -32q-3 -9 -12 -9q-14 0 -14 5q0 1 1.5 12.5t3 27.5t2.5 25q0 4 0.5 6t2 3t3.5 1.5t6 0.5h228q19 0 19 -8q0 -1 -7 -13l-168 -246q-11 -18 -11 -20t15 -2l137 4 q8 0 10 1t3 9l7 45q1 8 2.5 9t7.5 1h5q8 0 8 -5q0 -16 -5 -76q-1 -9 -2.5 -10.5t-10.5 -1.5h-244q-18 0 -18 9z" />
+<glyph horiz-adv-x="352" d="M35 -93q0 49 55 78.5t132 42.5q6 1 6 12q0 27 -1.5 41.5t-7.5 32.5t-21 26.5t-39 8.5q-13 0 -24 -4q-16 -6 -20.5 -16.5t-5.5 -35.5q0 -13 -6 -17q-33 -21 -47 -21q-8 0 -8 12q0 46 41.5 75.5t87.5 29.5q60 0 85 -26.5t25 -77.5q0 -23 -2.5 -90t-2.5 -73q0 -24 18 -24 q2 0 16 9.5t15 9.5q2 0 6 -4.5t4 -8.5t-54 -43q-13 -9 -22 -9q-13 0 -21 12.5t-10 24.5l-3 13q-1 0 -3.5 -2t-6.5 -4.5l-7 -4.5q-56 -36 -96 -36q-39 0 -61 18.5t-22 50.5zM98 -69q0 -21 14.5 -37.5t38.5 -16.5q16 0 35 4.5t30.5 10t11.5 7.5v104q0 9 -4 9q-11 0 -50 -12 q-76 -24 -76 -69z" />
+<glyph horiz-adv-x="414" d="M10 359q0 19 4 19l47.5 5.5l50 6t22.5 2.5q6 0 6 -12q-3 -150 -3 -216q0 -31 1 -31l6 3q5 3 14 6.5l19.5 7.5t24 7t24.5 3q69 0 113.5 -46t44.5 -113q0 -75 -54.5 -118.5t-130.5 -43.5q-16 0 -40 8.5t-35 8.5q-10 0 -24 -8t-17 -8q-10 0 -10 10q0 1 1.5 29.5t2.5 66.5 t1 61q0 64 -4 208t-10 144q-2 0 -25 -2.5t-24 -2.5q-5 0 -5 5zM135 -97q0 -40 67 -40q54 0 85.5 40.5t31.5 96.5q0 53 -38 93.5t-90 40.5q-12 0 -25.5 -4t-21 -9t-7.5 -7q0 -47 -1 -126t-1 -85z" />
+<glyph horiz-adv-x="350" d="M30 -8q0 84 52.5 132t119.5 48q41 0 76.5 -24t35.5 -54q0 -10 -9 -16q-15 -11 -27 -11q-11 0 -15 9q-2 5 -6 17l-6 18t-7 14.5t-10.5 12.5t-15 7t-21.5 3q-48 0 -78 -41.5t-30 -92.5q0 -54 33.5 -93.5t92.5 -39.5q25 0 48 6t36 12t15 6q6 0 6 -7q0 -4 -14.5 -17 t-47.5 -26.5t-70 -13.5q-73 0 -115.5 41t-42.5 110z" />
+<glyph horiz-adv-x="424" d="M29 -3q0 68 48.5 114.5t119.5 46.5q14 0 27.5 -2.5t23 -6l17.5 -6.5l13 -5l4 -3q5 0 5 15q0 37 -1.5 89t-3.5 87.5t-3 35.5t-25 -3.5t-28 -3.5q-6 0 -4 13q2 11 7 12l48 7l44 6.5t19 2.5q6 0 7.5 -2.5t1.5 -15.5q0 -5 -1.5 -49.5t-3 -132.5t-1.5 -197q0 -38 2 -96 q1 -24 4.5 -31.5t13.5 -7.5q3 0 27 4q9 2 9 -8t-1.5 -13t-9.5 -4l-98 -13q-5 0 -5 8q0 1 0.5 15.5t0.5 16.5q0 8 -1.5 8.5t-10.5 -4.5q-52 -35 -99 -35q-62 0 -104 38.5t-42 119.5zM95 3q0 -58 31 -94.5t92 -36.5q19 0 44 8t25 18v201q0 10 -24.5 25.5t-52.5 15.5 q-51 0 -83 -41t-32 -96z" />
+<glyph horiz-adv-x="366" d="M30 -4q0 74 48 123.5t124 49.5q59 0 92 -37.5t33 -92.5q0 -9 -44 -9q-5 0 -93.5 2t-91.5 2q-4 0 -4 -28q0 -60 36.5 -94.5t86.5 -34.5q18 0 35.5 5.5t29.5 12.5t21.5 14.5t14.5 12.5l5 6q1 0 7 -6t6 -7q0 -4 -17.5 -22t-53.5 -37t-74 -19q-76 0 -118.5 43.5t-42.5 115.5z M98 56q0 -6 10 -6q45 0 125 4q32 1 32 3q0 50 -23 71t-50 21q-37 0 -64.5 -30.5t-29.5 -62.5z" />
+<glyph horiz-adv-x="296" d="M45 -139q0 12 10 12h32q3 0 3 49q0 16 -0.5 40t-0.5 26v47v56q0 33 -1 33h-27q-7 0 -9 2t-2 10t1.5 10t7.5 2h22q5 0 6.5 1.5t1.5 8.5q0 19 -1 37.5t-1 40.5q0 70 31.5 114t101.5 44q27 0 49 -15.5t22 -39.5q0 -13 -16 -25.5t-27 -12.5t-12 7q-7 48 -17 58q-7 8 -20 8 q-47 0 -47 -131q0 -13 -2 -81q0 -10 2.5 -12t14.5 -2h96q6 0 6 -5q0 -4 -2.5 -11t-4.5 -7h-95q-9 0 -11.5 -1.5t-2.5 -7.5v-130q0 -113 8 -113h53q10 0 10 -12q-4 -12 -10 -13q-7 0 -41.5 1t-47.5 1q-10 0 -33 -1t-36 -1q-8 0 -9.5 2.5t-1.5 10.5z" />
+<glyph horiz-adv-x="399" d="M30 -290q0 36 37.5 59t79.5 31q20 4 20 5t-18 1h-47q-27 0 -34 15q-8 17 -8 39q0 25 16 29l35.5 9.5l39.5 10.5q6 2 12 3q4 0 3.5 0.5t-4.5 1.5t-7 2q-108 29 -108 131q0 52 45.5 86.5t103.5 34.5q27 0 51.5 -11t37.5 -23l13 -11q2 0 12.5 4t26 8.5t26.5 5.5q2 0 5 -9 t3 -17q0 -5 -3 -5q-53 -5 -53 -11q0 -1 3 -8.5t6 -20t3 -27.5q0 -88 -95 -122q-27 -10 -143 -41q-4 -2 -4 -7q0 -6 4 -12.5t7 -7.5q19 -1 57 -2t63.5 -1.5t58 -6t52 -15t33.5 -29t14 -47.5q0 -62 -51.5 -98.5t-134.5 -36.5q-60 0 -109 24.5t-49 68.5zM71 -284 q0 -35 36.5 -55.5t79.5 -20.5q55 0 95.5 21.5t40.5 68.5q0 31 -45 47t-99 16q-36 0 -72 -21t-36 -56zM105 50q0 -51 33 -87t55 -36q27 0 52.5 34t25.5 84q0 47 -21.5 73.5t-58.5 26.5q-35 0 -60.5 -28t-25.5 -67z" />
+<glyph horiz-adv-x="439" d="M25 360q0 14 4 15q15 2 47.5 6t54.5 7t24 3q4 0 4 -16q-8 -134 -8 -244q0 -10 1.5 -11t7.5 4q62 36 110 36q33 0 54.5 -12.5t31.5 -38t13.5 -51t3.5 -62.5v-114q0 -7 1.5 -8.5t7.5 -1.5h21q11 0 11 -12t-12 -12q-7 0 -26.5 1t-32.5 1q-10 0 -34.5 -1t-37.5 -1 q-8 0 -9.5 2t-1.5 10q0 12 11 12h31q6 0 6.5 1t1.5 8q2 32 2 138q0 46 -19.5 75t-57.5 29q-37 0 -71 -17q-13 -7 -13 -11l1 -118q0 -71 1 -91q1 -10 2 -12t7 -2h31q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -31.5 1t-38.5 1q-10 0 -34.5 -1t-37.5 -1q-8 0 -9.5 2t-1.5 10 q0 12 9 12h32q6 0 7 2t1 12q1 74 1 174q0 175 -7 282q-1 14 -5 14q-1 0 -24 -3t-25 -3q-3 0 -3 10z" />
+<glyph horiz-adv-x="220" d="M25 134q0 3 4 12q2 5 3.5 5.5t9.5 1.5q80 5 97 5q6 0 6 -5v-136q0 -90 3 -135q0 -10 8 -10h30q9 0 9 -12t-9 -12q-7 0 -34 1t-38 1t-40 -1t-36 -1q-6 0 -7.5 2t-1.5 10q0 7 1.5 9.5t9.5 2.5h34q7 0 8 1.5t1 7.5q1 23 1 70q0 110 -3 168q-1 9 -3 11t-8 2q-1 0 -20 -1 t-21 -1q-4 0 -4 4zM67 290q0 22 18 35.5t37 13.5q37 0 37 -36q0 -21 -17.5 -35.5t-37.5 -14.5q-15 0 -26 9.5t-11 27.5z" />
+<glyph horiz-adv-x="245" d="M5 -352q0 15 12 31.5t21 16.5q10 0 25.5 -2t18.5 -2q31 0 31 26q0 7 -2 44.5t-4 114t-2 179.5q0 38 -2 59q-1 11 -8 11q-3 0 -28.5 -1.5t-29.5 -1.5q-2 0 -2 4q0 7 3 14q11 8 13 8q19 0 45.5 1.5l44 2.5t18.5 1q6 0 6 -19q0 -16 2.5 -109.5t2.5 -153.5q0 -71 -9.5 -116 t-36.5 -79q-11 -13 -48 -30t-55 -17q-16 0 -16 18zM60 311q0 22 17.5 35.5t36.5 13.5q38 0 38 -36q0 -21 -17.5 -35.5t-37.5 -14.5q-15 0 -26 9.5t-11 27.5z" />
+<glyph horiz-adv-x="406" d="M25 368v8q0 12 9 13q85 8 111 8q7 0 7 -10l-9 -360q0 -6 2 -7.5t11 -1.5h17q9 0 24 17q36 48 61 89q6 7 5.5 10t-12.5 3h-14q-9 0 -9 12t11 12q3 0 20 -1t27 -1q8 0 24 1t22 1q10 0 10 -12t-9 -12h-26q-4 0 -37 -38.5l-49 -58.5l-2 -2q-7 -7 -4 -10q1 0 2 -2q4 -3 6 -5 l127 -139q9 -10 18 -10h8q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-5 0 -25 1t-32 1t-32.5 -1t-25.5 -1q-8 0 -9.5 2t-1.5 10q0 12 12 12h10q15 0 5 12l-97 106q-7 10 -9 11.5t-8 1.5h-11q-6 0 -7 -2.5t-1 -9.5v-105q0 -10 1.5 -12t7.5 -2h19q10 0 10 -12q0 -7 -1.5 -9.5 t-9.5 -2.5q-7 0 -25 1t-32 1q-16 0 -41 -1t-27 -1q-8 0 -9.5 2t-1.5 10q0 12 10 12h33q6 0 7 2t1 12v154q0 324 -8 324q-2 0 -21 -1.5t-23 -1.5q-8 0 -8 7z" />
+<glyph horiz-adv-x="223" d="M25 365q0 2 2 14q1 5 2 5.5t7 1.5q91 8 103 8q6 0 6 -12q1 -126 3 -263.5t2 -215.5q0 -31 7 -31h31q10 0 10 -12t-10 -12q-7 0 -30 1t-36 1q-10 0 -37.5 -1t-40.5 -1q-8 0 -9.5 2t-1.5 10q0 12 10 12h41q3 0 3 68q0 309 -10 410q0 3 -1 7q0 6 -1 7.5t-6 1.5q-2 0 -19 -2 t-18 -2q-7 0 -7 3z" />
+<glyph horiz-adv-x="620" d="M25 129q0 9 3 16q2 5 3 5.5t10 1.5q70 4 84 4q10 0 11.5 -1t1.5 -8v-26q0 -12 1 -13q1 0 7 5q64 49 116 49q18 0 31.5 -4.5t21 -11t12 -13.5t6.5 -11l2 -5q2 0 11 6q21 14 51 25.5t52 11.5q57 0 80 -30t23 -86q0 -37 -1 -93t-1 -71q0 -8 8 -8h25q12 0 12 -12t-12 -12 q-7 0 -29 1t-35 1q-10 0 -34 -1t-37 -1q-8 0 -9.5 2t-1.5 10q0 12 12 12h32q8 0 8 150q0 100 -72 100q-18 0 -37.5 -5.5t-30 -11.5t-10.5 -7t1.5 -7t3 -19.5t1.5 -34.5v-133q0 -32 2 -32h27q11 0 11 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -27.5 1t-33.5 1q-10 0 -29 -1t-32 -1 q-8 0 -10.5 2t-2.5 10q0 12 10 12h31q6 0 6 76v32t-0.5 29t-0.5 13q0 33 -2.5 51t-16 33.5t-39.5 15.5q-45 0 -80 -24q-8 -6 -8 -14v-178q0 -24 2 -29t13 -5h17q11 0 11 -12t-12 -12q-7 0 -29.5 1t-33.5 1t-38 -1t-32 -1q-10 0 -10 12t9 12h31q7 0 10 25q2 16 2 84v86 q0 62 -4 62q-1 0 -22.5 -1.5t-23.5 -1.5q-4 0 -4 3z" />
+<glyph horiz-adv-x="435" d="M25 129q0 6 4 14q2 5 3 5.5t10 1.5q4 0 40 2.5t49 3.5q10 1 10.5 0t0.5 -9v-37q0 -6 10 3l2 2l15 10.5t19.5 12.5l19.5 10t25 8.5t27 2.5q66 0 88 -36.5t22 -105.5q0 -26 -2.5 -79.5t-2.5 -55.5q0 -7 1.5 -8.5t7.5 -1.5h24q8 0 10 -2t2 -10q0 -12 -10 -12q-7 0 -28.5 1 t-34.5 1q-10 0 -34 -1t-37 -1q-9 0 -10.5 2t-1.5 10t2 10t8 2h29q6 0 7 1t2 8q4 38 4 138q0 102 -77 102q-25 0 -71 -23q-14 -6 -14 -18q0 -32 -0.5 -96.5t-0.5 -96.5q0 -7 0.5 -9.5t2.5 -4t7 -1.5h29q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -30.5 1t-36.5 1 q-10 0 -35.5 -1t-38.5 -1q-8 0 -9 2t-1 10q0 12 9 12h31q6 0 6.5 2t1.5 12q5 78 5 153q0 55 -2 79q-1 10 -2 10.5t-8 0.5q-1 0 -21.5 -2t-22.5 -2t-2 4z" />
+<glyph horiz-adv-x="384" d="M30 -3q0 73 48 122.5t124 49.5q67 0 109.5 -46.5t42.5 -114.5q0 -76 -44 -123.5t-121 -47.5q-67 0 -113 47t-46 113zM94 -14q0 -49 25.5 -87.5t69.5 -38.5q99 0 99 154q0 52 -24.5 92t-71.5 40q-98 0 -98 -160z" />
+<glyph horiz-adv-x="432" d="M25 130q0 4 2.5 12t4.5 8q25 1 52.5 2t43 2t16.5 1q4 0 6 -0.5t3 -3t1 -8.5v-21q0 -9 1 -9t16 13q41 32 89 32q69 0 105.5 -42.5t36.5 -109.5q0 -65 -48 -114.5t-125 -49.5q-23 0 -55 10q-17 6 -18 4q-1 -1 -1 -4l2 -150q2 -53 5 -53h56q10 0 10 -12q-4 -12 -10 -13 q-7 0 -41.5 1t-47.5 1q-10 0 -39 -1t-42 -1q-8 0 -9.5 2.5t-1.5 10.5q0 12 10 12h45q3 0 3 127v112q0 151 -7 228q-1 8 -2.5 9.5t-10.5 1.5q-3 0 -20.5 -1t-19.5 -1q-10 0 -10 5zM155 -108q0 -13 24 -23t45 -10q52 0 82.5 43.5t30.5 96.5q0 57 -30 92t-75 35q-31 0 -51 -10 q-26 -13 -26 -26v-198z" />
+<glyph horiz-adv-x="413" d="M30 -5q0 70 49.5 115.5t124.5 45.5q27 0 60 -11.5t38 -11.5q8 0 17 14.5t15 14.5q13 0 13 -10q-4 -95 -4 -238v-132q0 -130 2 -130h33q10 0 10 -13q0 -8 -1.5 -10.5t-9.5 -2.5h-23q-20 0 -40.5 -1t-35.5 -2.5t-27 -3t-19 -2.5t-8 -1q-8 0 -10 2.5t-2 8.5q0 14 10 15 q8 1 17.5 2l14 1.5t9.5 1t6.5 2t4 3t2.5 5t0.5 7t0.5 10.5l2 177q0 7 -3 7q-4 0 -13 -3q-50 -15 -90 -15q-56 0 -99.5 38.5t-43.5 116.5zM94 3q0 -52 31.5 -94t83.5 -42q71 0 71 17v198q0 24 -22 37t-61 13q-50 0 -76.5 -38.5t-26.5 -90.5z" />
+<glyph horiz-adv-x="291" d="M30 130q0 6 2 11t3 5.5t10 1.5q36 3 86 3q10 0 10.5 -0.5t0.5 -7.5q0 -8 0.5 -26.5t0.5 -26.5v-15l8 21q13 33 34 52.5t40 19.5q16 0 31 -14t15 -23q0 -8 -10.5 -21.5t-19.5 -13.5t-24.5 12t-23.5 12q-45 0 -45 -159q0 -88 10 -88h49q11 0 11 -12q0 -13 -11 -13 q-7 0 -41 1t-47 1q-10 0 -34 -1t-37 -1q-8 0 -9 2t-1 11q0 12 9 12h34q8 0 8 107q0 148 -6 148q-1 0 -25 -1t-26 -1t-2 4z" />
+<glyph horiz-adv-x="276" d="M40 -110q0 9 8 20t13 11q2 0 3.5 -2.5t4 -8t6.5 -10.5q29 -40 66 -40q20 0 33.5 13.5t13.5 38.5q0 26 -16.5 41.5t-46.5 30.5q-2 1 -13 6t-13.5 6.5l-12 7t-12.5 8l-10 8.5t-9.5 11l-6 12.5t-5 15.5t-1.5 17q0 39 32.5 65t74.5 26q38 0 58 -18.5t20 -36.5q0 -6 -10.5 -11 t-17.5 -5q-6 0 -10.5 13t-14 26t-29.5 13t-35.5 -13.5t-15.5 -42.5q0 -16 10 -29.5t19 -19t30 -16.5q57 -32 72 -50q16 -19 16 -43q0 -43 -31 -69t-75 -26q-35 0 -65 16t-30 35z" />
+<glyph horiz-adv-x="258" d="M40 122q0 3 3 6l78 105q5 5 8 5q9 0 9 -8q0 -1 -1.5 -16.5t-3 -33.5t-1.5 -24q0 -8 9 -8h76q9 0 10 -2t-2 -14q-3 -15 -11 -15h-79q-3 0 -3 -36v-149q0 -15 1.5 -23.5t11 -16.5t26.5 -8q14 0 28.5 3t24 6t11.5 3q3 0 3 -13q0 -2 -19 -12t-45 -19.5t-41 -9.5 q-33 0 -46.5 16.5t-13.5 38.5q2 114 2 171q0 48 -10 48h-20q-5 0 -5 6z" />
+<glyph horiz-adv-x="440" d="M25 137q0 3 3 10t13 8q76 4 93 4q6 0 6 -5v-217q0 -54 89 -54q73 0 73 13v93q0 147 -6 147q-1 0 -20.5 -1t-21.5 -1q-3 0 -3 3q2 16 5 17q2 2 6 2q64 4 96 4q6 0 6 -4q-1 -191 -1 -240q0 -30 2.5 -38.5t12.5 -8.5q1 0 16.5 2t16.5 2q4 0 4 -9t-1.5 -10.5t-10.5 -3.5 q-11 -2 -33 -5t-37 -5.5t-18 -2.5q-8 0 -9 11q-3 33 -4 33l-22 -11q-21 -10 -53.5 -20t-59.5 -10q-54 0 -72 28.5t-18 77.5v126v17q0 44 -9 44q-1 0 -19.5 -0.5t-20.5 -0.5q-3 0 -3 5z" />
+<glyph horiz-adv-x="378" d="M20 145q0 12 10 12q6 0 24 -1t30 -1q11 0 36.5 1t31.5 1q7 0 8.5 -2t1.5 -10q0 -12 -9 -12h-24q-15 0 -15 -6q0 -2 14 -41.5l33 -90.5l29 -76q7 -15 9 -15t7 13q76 180 76 203q0 13 -8 13h-21q-10 0 -10 12t12 12q2 0 20.5 -1t28.5 -1t24 1t20 1q7 0 8.5 -2t1.5 -10 q0 -12 -10 -12h-13q-6 0 -11 -8q-9 -15 -47 -105.5t-57 -129.5q-7 -14 -19.5 -28.5t-21.5 -27.5q-5 -6 -9 -6q-5 0 -9 8t-9 25.5t-6 19.5q-28 84 -90 240q-4 9 -6.5 10.5t-11.5 1.5h-8q-10 0 -10 12z" />
+<glyph horiz-adv-x="578" d="M20 145q0 12 10 12q7 0 24.5 -1t30.5 -1q11 0 37 1t33 1q8 0 9.5 -2t1.5 -10q0 -12 -9 -12h-18q-13 0 -13 -6q0 -2 12.5 -41.5l30 -91t27.5 -75.5q4 -13 6 -13t8 18q49 105 67 147q6 21 6 29q0 5 -4 17q-6 16 -28 16h-9q-10 0 -10 12q0 7 1.5 9.5t9.5 2.5q9 0 27 -1 t34 -1q11 0 30.5 1t29.5 1q8 0 9.5 -2t1.5 -10q0 -12 -10 -12h-17q-10 0 -10 -6q0 -2 11.5 -41.5l27.5 -91t26 -75.5q9 -19 10 -19q2 0 9 18q14 33 40.5 112.5t26.5 93.5q0 9 -10 9h-24q-11 0 -11 12t12 12q2 0 20.5 -1t28.5 -1q11 0 26.5 1t16.5 1q7 0 8.5 -2t1.5 -10 q0 -12 -10 -12h-5q-7 0 -11 -8q-7 -14 -41.5 -104t-54.5 -131q-7 -14 -17.5 -27.5t-19.5 -28.5q-2 -6 -9 -6q-9 0 -25 53q-23 82 -56 181q-4 14 -6 14q-4 0 -8 -14q-6 -13 -22.5 -52l-29 -67t-24.5 -49q-7 -14 -19.5 -28t-22.5 -32q-4 -6 -10 -6q-11 0 -27 57q-3 11 -17 50 l-34 94l-33 92q-3 9 -5.5 10.5t-11.5 1.5h-9q-10 0 -10 12z" />
+<glyph horiz-adv-x="392" d="M15 -140q0 12 9 12q11 0 17 3.5t21 19.5l98 97q6 7 5.5 8t-5.5 7l-86 114q-7 9 -9.5 10.5t-11.5 1.5h-13q-10 0 -10 12q0 7 1.5 9.5t9.5 2.5q7 0 30 -1t36 -1q11 0 26.5 1t22.5 1q8 0 9.5 -2t1.5 -10q0 -12 -9 -12q-14 0 -14 -5q0 -2 8 -14l55 -73q4 -9 5 -8l2 3q2 5 4 8 q58 61 69 75q1 2 2 3.5t2 2.5t1 2q0 6 -21 6h-10q-10 0 -10 12q0 7 1.5 9.5t9.5 2.5t22 -1t23 -1q10 0 24.5 1t19.5 1q11 0 11 -12t-10 -12q-5 0 -10 -2.5t-8 -5t-8 -7.5l-8 -8l-54.5 -48.5t-35.5 -32.5q-2 -6 -2 -10q0 -2 8 -13q50 -70 94 -124q8 -10 14 -10h10 q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -26 1t-32 1q-11 0 -30.5 -1t-26.5 -1q-8 0 -9.5 2t-1.5 10q0 12 8 12h8q14 0 14 6l-17 26q-21 31 -56 74q-2 6 -3 7.5t-2 0t-4 -7.5l-21.5 -25l-31.5 -36t-23 -28q-1 -2 -3 -4l-3 -3t-1.5 -2.5t-0.5 -2.5q0 -5 14 -5h22 q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -23 1t-29 1q-12 0 -27 -1t-20 -1q-7 0 -8.5 2t-1.5 10z" />
+<glyph horiz-adv-x="378" d="M20 145q0 7 1.5 9.5t9.5 2.5q7 0 27 -1t32 -1q11 0 37.5 1t33.5 1q8 0 9.5 -2t1.5 -10q0 -12 -10 -12h-15q-21 0 -21 -8q0 -10 25 -80t45 -118q14 -32 15 -32q3 0 14 32q65 186 65 200q0 6 -23 6h-18q-10 0 -10 12q0 7 1.5 9.5t9.5 2.5q7 0 26 -1t27 -1q10 0 24.5 1 t19.5 1q11 0 11 -12t-10 -12h-11q-8 0 -10 -8l-104 -272q0 -1 -36 -93q-1 -4 -5.5 -16t-5.5 -14.5l-4.5 -11.5t-6 -13l-7.5 -12t-10.5 -15l-12.5 -16q-14 -19 -34 -29q-42 -21 -50 -21q-15 0 -15 17q0 11 15 34q8 11 23 15q3 1 14 5l18 6.5t16.5 7.5t15 10.5t8.5 12.5 q35 82 35 97q0 6 -22 59.5l-59.5 141.5t-43.5 103q-4 9 -6 10.5t-11 1.5h-9q-10 0 -10 12z" />
+<glyph horiz-adv-x="345" d="M35 -141q0 6 8 17q179 261 179 263q0 3 -7 3q-41 0 -121 -4q-8 0 -10.5 -0.5t-5 -2t-3.5 -4t-2 -8.5l-7 -32q-3 -9 -12 -9q-14 0 -14 5q0 1 1.5 12.5t3 27.5t2.5 25q0 4 0.5 6t2 3t3.5 1.5t6 0.5h228q19 0 19 -8q0 -1 -7 -13l-168 -246q-11 -18 -11 -20t15 -2l137 4 q8 0 10 1t3 9l7 45q1 8 2.5 9t7.5 1h5q8 0 8 -5q0 -16 -5 -76q-1 -9 -2.5 -10.5t-10.5 -1.5h-244q-18 0 -18 9z" />
+<glyph horiz-adv-x="352" d="M35 407q0 49 55 78.5t132 42.5q6 1 6 12q0 27 -1.5 41.5t-7.5 32.5t-21 26.5t-39 8.5q-13 0 -24 -4q-16 -6 -20.5 -16.5t-5.5 -35.5q0 -13 -6 -17q-33 -21 -47 -21q-8 0 -8 12q0 46 41.5 75.5t87.5 29.5q60 0 85 -26.5t25 -77.5q0 -23 -2.5 -90t-2.5 -73q0 -24 18 -24 q2 0 16 9.5t15 9.5q2 0 6 -4.5t4 -8.5t-54 -43q-13 -9 -22 -9q-13 0 -21 12.5t-10 24.5l-3 13q-1 0 -3.5 -2t-6.5 -4.5l-7 -4.5q-56 -36 -96 -36q-39 0 -61 18.5t-22 50.5zM98 431q0 -21 14.5 -37.5t38.5 -16.5q16 0 35 4.5t30.5 10t11.5 7.5v104q0 9 -4 9q-11 0 -50 -12 q-76 -24 -76 -69z" />
+<glyph horiz-adv-x="414" d="M10 859q0 19 4 19l47.5 5.5l50 6t22.5 2.5q6 0 6 -12q-3 -150 -3 -216q0 -31 1 -31l6 3q5 3 14 6.5l19.5 7.5t24 7t24.5 3q69 0 113.5 -46t44.5 -113q0 -75 -54.5 -118.5t-130.5 -43.5q-16 0 -40 8.5t-35 8.5q-10 0 -24 -8t-17 -8q-10 0 -10 10q0 1 1.5 29.5t2.5 66.5 t1 61q0 64 -4 208t-10 144q-2 0 -25 -2.5t-24 -2.5q-5 0 -5 5zM135 403q0 -40 67 -40q54 0 85.5 40.5t31.5 96.5q0 53 -38 93.5t-90 40.5q-12 0 -25.5 -4t-21 -9t-7.5 -7q0 -47 -1 -126t-1 -85z" />
+<glyph horiz-adv-x="350" d="M30 492q0 84 52.5 132t119.5 48q41 0 76.5 -24t35.5 -54q0 -10 -9 -16q-15 -11 -27 -11q-11 0 -15 9q-2 5 -6 17l-6 18t-7 14.5t-10.5 12.5t-15 7t-21.5 3q-48 0 -78 -41.5t-30 -92.5q0 -54 33.5 -93.5t92.5 -39.5q25 0 48 6t36 12t15 6q6 0 6 -7q0 -4 -14.5 -17 t-47.5 -26.5t-70 -13.5q-73 0 -115.5 41t-42.5 110z" />
+<glyph horiz-adv-x="424" d="M29 497q0 68 48.5 114.5t119.5 46.5q14 0 27.5 -2.5t23 -6l17.5 -6.5l13 -5l4 -3q5 0 5 15q0 37 -1.5 89t-3.5 87.5t-3 35.5t-25 -3.5t-28 -3.5q-6 0 -4 13q2 11 7 12l48 7l44 6.5t19 2.5q6 0 7.5 -2.5t1.5 -15.5q0 -5 -1.5 -49.5t-3 -132.5t-1.5 -197q0 -38 2 -96 q1 -24 4.5 -31.5t13.5 -7.5q3 0 27 4q9 2 9 -8t-1.5 -13t-9.5 -4l-98 -13q-5 0 -5 8q0 1 0.5 15.5t0.5 16.5q0 8 -1.5 8.5t-10.5 -4.5q-52 -35 -99 -35q-62 0 -104 38.5t-42 119.5zM95 503q0 -58 31 -94.5t92 -36.5q19 0 44 8t25 18v201q0 10 -24.5 25.5t-52.5 15.5 q-51 0 -83 -41t-32 -96z" />
+<glyph horiz-adv-x="366" d="M30 496q0 74 48 123.5t124 49.5q59 0 92 -37.5t33 -92.5q0 -9 -44 -9q-5 0 -93.5 2t-91.5 2q-4 0 -4 -28q0 -60 36.5 -94.5t86.5 -34.5q18 0 35.5 5.5t29.5 12.5t21.5 14.5t14.5 12.5l5 6q1 0 7 -6t6 -7q0 -4 -17.5 -22t-53.5 -37t-74 -19q-76 0 -118.5 43.5t-42.5 115.5 zM98 556q0 -6 10 -6q45 0 125 4q32 1 32 3q0 50 -23 71t-50 21q-37 0 -64.5 -30.5t-29.5 -62.5z" />
+<glyph horiz-adv-x="296" d="M45 361q0 12 10 12h32q3 0 3 49q0 16 -0.5 40t-0.5 26v47v56q0 33 -1 33h-27q-7 0 -9 2t-2 10t1.5 10t7.5 2h22q5 0 6.5 1.5t1.5 8.5q0 19 -1 37.5t-1 40.5q0 70 31.5 114t101.5 44q27 0 49 -15.5t22 -39.5q0 -13 -16 -25.5t-27 -12.5t-12 7q-7 48 -17 58q-7 8 -20 8 q-47 0 -47 -131q0 -13 -2 -81q0 -10 2.5 -12t14.5 -2h96q6 0 6 -5q0 -4 -2.5 -11t-4.5 -7h-95q-9 0 -11.5 -1.5t-2.5 -7.5v-130q0 -113 8 -113h53q10 0 10 -12q-4 -12 -10 -13q-7 0 -41.5 1t-47.5 1q-10 0 -33 -1t-36 -1q-8 0 -9.5 2.5t-1.5 10.5z" />
+<glyph horiz-adv-x="399" d="M30 210q0 36 37.5 59t79.5 31q20 4 20 5t-18 1h-47q-27 0 -34 15q-8 17 -8 39q0 25 16 29l35.5 9.5l39.5 10.5q6 2 12 3q4 0 3.5 0.5t-4.5 1.5t-7 2q-108 29 -108 131q0 52 45.5 86.5t103.5 34.5q27 0 51.5 -11t37.5 -23l13 -11q2 0 12.5 4t26 8.5t26.5 5.5q2 0 5 -9 t3 -17q0 -5 -3 -5q-53 -5 -53 -11q0 -1 3 -8.5t6 -20t3 -27.5q0 -88 -95 -122q-27 -10 -143 -41q-4 -2 -4 -7q0 -6 4 -12.5t7 -7.5q19 -1 57 -2t63.5 -1.5t58 -6t52 -15t33.5 -29t14 -47.5q0 -62 -51.5 -98.5t-134.5 -36.5q-60 0 -109 24.5t-49 68.5zM71 216 q0 -35 36.5 -55.5t79.5 -20.5q55 0 95.5 21.5t40.5 68.5q0 31 -45 47t-99 16q-36 0 -72 -21t-36 -56zM105 550q0 -51 33 -87t55 -36q27 0 52.5 34t25.5 84q0 47 -21.5 73.5t-58.5 26.5q-35 0 -60.5 -28t-25.5 -67z" />
+<glyph horiz-adv-x="439" d="M25 860q0 14 4 15q15 2 47.5 6t54.5 7t24 3q4 0 4 -16q-8 -134 -8 -244q0 -10 1.5 -11t7.5 4q62 36 110 36q33 0 54.5 -12.5t31.5 -38t13.5 -51t3.5 -62.5v-114q0 -7 1.5 -8.5t7.5 -1.5h21q11 0 11 -12t-12 -12q-7 0 -26.5 1t-32.5 1q-10 0 -34.5 -1t-37.5 -1 q-8 0 -9.5 2t-1.5 10q0 12 11 12h31q6 0 6.5 1t1.5 8q2 32 2 138q0 46 -19.5 75t-57.5 29q-37 0 -71 -17q-13 -7 -13 -11l1 -118q0 -71 1 -91q1 -10 2 -12t7 -2h31q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -31.5 1t-38.5 1q-10 0 -34.5 -1t-37.5 -1q-8 0 -9.5 2t-1.5 10 q0 12 9 12h32q6 0 7 2t1 12q1 74 1 174q0 175 -7 282q-1 14 -5 14q-1 0 -24 -3t-25 -3q-3 0 -3 10z" />
+<glyph horiz-adv-x="220" d="M25 634q0 3 4 12q2 5 3.5 5.5t9.5 1.5q80 5 97 5q6 0 6 -5v-136q0 -90 3 -135q0 -10 8 -10h30q9 0 9 -12t-9 -12q-7 0 -34 1t-38 1t-40 -1t-36 -1q-6 0 -7.5 2t-1.5 10q0 7 1.5 9.5t9.5 2.5h34q7 0 8 1.5t1 7.5q1 23 1 70q0 110 -3 168q-1 9 -3 11t-8 2q-1 0 -20 -1 t-21 -1q-4 0 -4 4zM67 790q0 22 18 35.5t37 13.5q37 0 37 -36q0 -21 -17.5 -35.5t-37.5 -14.5q-15 0 -26 9.5t-11 27.5z" />
+<glyph horiz-adv-x="245" d="M5 148q0 15 12 31.5t21 16.5q10 0 25.5 -2t18.5 -2q31 0 31 26q0 7 -2 44.5t-4 114t-2 179.5q0 38 -2 59q-1 11 -8 11q-3 0 -28.5 -1.5t-29.5 -1.5q-2 0 -2 4q0 7 3 14q11 8 13 8q19 0 45.5 1.5l44 2.5t18.5 1q6 0 6 -19q0 -16 2.5 -109.5t2.5 -153.5q0 -71 -9.5 -116 t-36.5 -79q-11 -13 -48 -30t-55 -17q-16 0 -16 18zM60 811q0 22 17.5 35.5t36.5 13.5q38 0 38 -36q0 -21 -17.5 -35.5t-37.5 -14.5q-15 0 -26 9.5t-11 27.5z" />
+<glyph horiz-adv-x="406" d="M25 868v8q0 12 9 13q85 8 111 8q7 0 7 -10l-9 -360q0 -6 2 -7.5t11 -1.5h17q9 0 24 17q36 48 61 89q6 7 5.5 10t-12.5 3h-14q-9 0 -9 12t11 12q3 0 20 -1t27 -1q8 0 24 1t22 1q10 0 10 -12t-9 -12h-26q-4 0 -37 -38.5l-49 -58.5l-2 -2q-7 -7 -4 -10q1 0 2 -2q4 -3 6 -5 l127 -139q9 -10 18 -10h8q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-5 0 -25 1t-32 1t-32.5 -1t-25.5 -1q-8 0 -9.5 2t-1.5 10q0 12 12 12h10q15 0 5 12l-97 106q-7 10 -9 11.5t-8 1.5h-11q-6 0 -7 -2.5t-1 -9.5v-105q0 -10 1.5 -12t7.5 -2h19q10 0 10 -12q0 -7 -1.5 -9.5 t-9.5 -2.5q-7 0 -25 1t-32 1q-16 0 -41 -1t-27 -1q-8 0 -9.5 2t-1.5 10q0 12 10 12h33q6 0 7 2t1 12v154q0 324 -8 324q-2 0 -21 -1.5t-23 -1.5q-8 0 -8 7z" />
+<glyph horiz-adv-x="223" d="M25 865q0 2 2 14q1 5 2 5.5t7 1.5q91 8 103 8q6 0 6 -12q1 -126 3 -263.5t2 -215.5q0 -31 7 -31h31q10 0 10 -12t-10 -12q-7 0 -30 1t-36 1q-10 0 -37.5 -1t-40.5 -1q-8 0 -9.5 2t-1.5 10q0 12 10 12h41q3 0 3 68q0 309 -10 410q0 3 -1 7q0 6 -1 7.5t-6 1.5q-2 0 -19 -2 t-18 -2q-7 0 -7 3z" />
+<glyph horiz-adv-x="620" d="M25 629q0 9 3 16q2 5 3 5.5t10 1.5q70 4 84 4q10 0 11.5 -1t1.5 -8v-26q0 -12 1 -13q1 0 7 5q64 49 116 49q18 0 31.5 -4.5t21 -11t12 -13.5t6.5 -11l2 -5q2 0 11 6q21 14 51 25.5t52 11.5q57 0 80 -30t23 -86q0 -37 -1 -93t-1 -71q0 -8 8 -8h25q12 0 12 -12t-12 -12 q-7 0 -29 1t-35 1q-10 0 -34 -1t-37 -1q-8 0 -9.5 2t-1.5 10q0 12 12 12h32q8 0 8 150q0 100 -72 100q-18 0 -37.5 -5.5t-30 -11.5t-10.5 -7t1.5 -7t3 -19.5t1.5 -34.5v-133q0 -32 2 -32h27q11 0 11 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -27.5 1t-33.5 1q-10 0 -29 -1t-32 -1 q-8 0 -10.5 2t-2.5 10q0 12 10 12h31q6 0 6 76v32t-0.5 29t-0.5 13q0 33 -2.5 51t-16 33.5t-39.5 15.5q-45 0 -80 -24q-8 -6 -8 -14v-178q0 -24 2 -29t13 -5h17q11 0 11 -12t-12 -12q-7 0 -29.5 1t-33.5 1t-38 -1t-32 -1q-10 0 -10 12t9 12h31q7 0 10 25q2 16 2 84v86 q0 62 -4 62q-1 0 -22.5 -1.5t-23.5 -1.5q-4 0 -4 3z" />
+<glyph horiz-adv-x="435" d="M25 629q0 6 4 14q2 5 3 5.5t10 1.5q4 0 40 2.5t49 3.5q10 1 10.5 0t0.5 -9v-37q0 -6 10 3l2 2l15 10.5t19.5 12.5l19.5 10t25 8.5t27 2.5q66 0 88 -36.5t22 -105.5q0 -26 -2.5 -79.5t-2.5 -55.5q0 -7 1.5 -8.5t7.5 -1.5h24q8 0 10 -2t2 -10q0 -12 -10 -12q-7 0 -28.5 1 t-34.5 1q-10 0 -34 -1t-37 -1q-9 0 -10.5 2t-1.5 10t2 10t8 2h29q6 0 7 1t2 8q4 38 4 138q0 102 -77 102q-25 0 -71 -23q-14 -6 -14 -18q0 -32 -0.5 -96.5t-0.5 -96.5q0 -7 0.5 -9.5t2.5 -4t7 -1.5h29q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -30.5 1t-36.5 1 q-10 0 -35.5 -1t-38.5 -1q-8 0 -9 2t-1 10q0 12 9 12h31q6 0 6.5 2t1.5 12q5 78 5 153q0 55 -2 79q-1 10 -2 10.5t-8 0.5q-1 0 -21.5 -2t-22.5 -2t-2 4z" />
+<glyph horiz-adv-x="384" d="M30 497q0 73 48 122.5t124 49.5q67 0 109.5 -46.5t42.5 -114.5q0 -76 -44 -123.5t-121 -47.5q-67 0 -113 47t-46 113zM94 486q0 -49 25.5 -87.5t69.5 -38.5q99 0 99 154q0 52 -24.5 92t-71.5 40q-98 0 -98 -160z" />
+<glyph horiz-adv-x="432" d="M25 630q0 4 2.5 12t4.5 8q25 1 52.5 2t43 2t16.5 1q4 0 6 -0.5t3 -3t1 -8.5v-21q0 -9 1 -9t16 13q41 32 89 32q69 0 105.5 -42.5t36.5 -109.5q0 -65 -48 -114.5t-125 -49.5q-23 0 -55 10q-17 6 -18 4q-1 -1 -1 -4l2 -150q2 -53 5 -53h56q10 0 10 -12q-4 -12 -10 -13 q-7 0 -41.5 1t-47.5 1q-10 0 -39 -1t-42 -1q-8 0 -9.5 2.5t-1.5 10.5q0 12 10 12h45q3 0 3 127v112q0 151 -7 228q-1 8 -2.5 9.5t-10.5 1.5q-3 0 -20.5 -1t-19.5 -1q-10 0 -10 5zM155 392q0 -13 24 -23t45 -10q52 0 82.5 43.5t30.5 96.5q0 57 -30 92t-75 35q-31 0 -51 -10 q-26 -13 -26 -26v-198z" />
+<glyph horiz-adv-x="413" d="M30 495q0 70 49.5 115.5t124.5 45.5q27 0 60 -11.5t38 -11.5q8 0 17 14.5t15 14.5q13 0 13 -10q-4 -95 -4 -238v-132q0 -130 2 -130h33q10 0 10 -13q0 -8 -1.5 -10.5t-9.5 -2.5h-23q-20 0 -40.5 -1t-35.5 -2.5t-27 -3t-19 -2.5t-8 -1q-8 0 -10 2.5t-2 8.5q0 14 10 15 q8 1 17.5 2l14 1.5t9.5 1t6.5 2t4 3t2.5 5t0.5 7t0.5 10.5l2 177q0 7 -3 7q-4 0 -13 -3q-50 -15 -90 -15q-56 0 -99.5 38.5t-43.5 116.5zM94 503q0 -52 31.5 -94t83.5 -42q71 0 71 17v198q0 24 -22 37t-61 13q-50 0 -76.5 -38.5t-26.5 -90.5z" />
+<glyph horiz-adv-x="291" d="M30 630q0 6 2 11t3 5.5t10 1.5q36 3 86 3q10 0 10.5 -0.5t0.5 -7.5q0 -8 0.5 -26.5t0.5 -26.5v-15l8 21q13 33 34 52.5t40 19.5q16 0 31 -14t15 -23q0 -8 -10.5 -21.5t-19.5 -13.5t-24.5 12t-23.5 12q-45 0 -45 -159q0 -88 10 -88h49q11 0 11 -12q0 -13 -11 -13 q-7 0 -41 1t-47 1q-10 0 -34 -1t-37 -1q-8 0 -9 2t-1 11q0 12 9 12h34q8 0 8 107q0 148 -6 148q-1 0 -25 -1t-26 -1t-2 4z" />
+<glyph horiz-adv-x="276" d="M40 390q0 9 8 20t13 11q2 0 3.5 -2.5t4 -8t6.5 -10.5q29 -40 66 -40q20 0 33.5 13.5t13.5 38.5q0 26 -16.5 41.5t-46.5 30.5q-2 1 -13 6t-13.5 6.5l-12 7t-12.5 8l-10 8.5t-9.5 11l-6 12.5t-5 15.5t-1.5 17q0 39 32.5 65t74.5 26q38 0 58 -18.5t20 -36.5q0 -6 -10.5 -11 t-17.5 -5q-6 0 -10.5 13t-14 26t-29.5 13t-35.5 -13.5t-15.5 -42.5q0 -16 10 -29.5t19 -19t30 -16.5q57 -32 72 -50q16 -19 16 -43q0 -43 -31 -69t-75 -26q-35 0 -65 16t-30 35z" />
+<glyph horiz-adv-x="258" d="M40 622q0 3 3 6l78 105q5 5 8 5q9 0 9 -8q0 -1 -1.5 -16.5t-3 -33.5t-1.5 -24q0 -8 9 -8h76q9 0 10 -2t-2 -14q-3 -15 -11 -15h-79q-3 0 -3 -36v-149q0 -15 1.5 -23.5t11 -16.5t26.5 -8q14 0 28.5 3t24 6t11.5 3q3 0 3 -13q0 -2 -19 -12t-45 -19.5t-41 -9.5 q-33 0 -46.5 16.5t-13.5 38.5q2 114 2 171q0 48 -10 48h-20q-5 0 -5 6z" />
+<glyph horiz-adv-x="440" d="M25 637q0 3 3 10t13 8q76 4 93 4q6 0 6 -5v-217q0 -54 89 -54q73 0 73 13v93q0 147 -6 147q-1 0 -20.5 -1t-21.5 -1q-3 0 -3 3q2 16 5 17q2 2 6 2q64 4 96 4q6 0 6 -4q-1 -191 -1 -240q0 -30 2.5 -38.5t12.5 -8.5q1 0 16.5 2t16.5 2q4 0 4 -9t-1.5 -10.5t-10.5 -3.5 q-11 -2 -33 -5t-37 -5.5t-18 -2.5q-8 0 -9 11q-3 33 -4 33l-22 -11q-21 -10 -53.5 -20t-59.5 -10q-54 0 -72 28.5t-18 77.5v126v17q0 44 -9 44q-1 0 -19.5 -0.5t-20.5 -0.5q-3 0 -3 5z" />
+<glyph horiz-adv-x="378" d="M20 645q0 12 10 12q6 0 24 -1t30 -1q11 0 36.5 1t31.5 1q7 0 8.5 -2t1.5 -10q0 -12 -9 -12h-24q-15 0 -15 -6q0 -2 14 -41.5l33 -90.5l29 -76q7 -15 9 -15t7 13q76 180 76 203q0 13 -8 13h-21q-10 0 -10 12t12 12q2 0 20.5 -1t28.5 -1t24 1t20 1q7 0 8.5 -2t1.5 -10 q0 -12 -10 -12h-13q-6 0 -11 -8q-9 -15 -47 -105.5t-57 -129.5q-7 -14 -19.5 -28.5t-21.5 -27.5q-5 -6 -9 -6q-5 0 -9 8t-9 25.5t-6 19.5q-28 84 -90 240q-4 9 -6.5 10.5t-11.5 1.5h-8q-10 0 -10 12z" />
+<glyph horiz-adv-x="578" d="M20 645q0 12 10 12q7 0 24.5 -1t30.5 -1q11 0 37 1t33 1q8 0 9.5 -2t1.5 -10q0 -12 -9 -12h-18q-13 0 -13 -6q0 -2 12.5 -41.5l30 -91t27.5 -75.5q4 -13 6 -13t8 18q49 105 67 147q6 21 6 29q0 5 -4 17q-6 16 -28 16h-9q-10 0 -10 12q0 7 1.5 9.5t9.5 2.5q9 0 27 -1 t34 -1q11 0 30.5 1t29.5 1q8 0 9.5 -2t1.5 -10q0 -12 -10 -12h-17q-10 0 -10 -6q0 -2 11.5 -41.5l27.5 -91t26 -75.5q9 -19 10 -19q2 0 9 18q14 33 40.5 112.5t26.5 93.5q0 9 -10 9h-24q-11 0 -11 12t12 12q2 0 20.5 -1t28.5 -1q11 0 26.5 1t16.5 1q7 0 8.5 -2t1.5 -10 q0 -12 -10 -12h-5q-7 0 -11 -8q-7 -14 -41.5 -104t-54.5 -131q-7 -14 -17.5 -27.5t-19.5 -28.5q-2 -6 -9 -6q-9 0 -25 53q-23 82 -56 181q-4 14 -6 14q-4 0 -8 -14q-6 -13 -22.5 -52l-29 -67t-24.5 -49q-7 -14 -19.5 -28t-22.5 -32q-4 -6 -10 -6q-11 0 -27 57q-3 11 -17 50 l-34 94l-33 92q-3 9 -5.5 10.5t-11.5 1.5h-9q-10 0 -10 12z" />
+<glyph horiz-adv-x="392" d="M15 360q0 12 9 12q11 0 17 3.5t21 19.5l98 97q6 7 5.5 8t-5.5 7l-86 114q-7 9 -9.5 10.5t-11.5 1.5h-13q-10 0 -10 12q0 7 1.5 9.5t9.5 2.5q7 0 30 -1t36 -1q11 0 26.5 1t22.5 1q8 0 9.5 -2t1.5 -10q0 -12 -9 -12q-14 0 -14 -5q0 -2 8 -14l55 -73q4 -9 5 -8l2 3q2 5 4 8 q58 61 69 75q1 2 2 3.5t2 2.5t1 2q0 6 -21 6h-10q-10 0 -10 12q0 7 1.5 9.5t9.5 2.5t22 -1t23 -1q10 0 24.5 1t19.5 1q11 0 11 -12t-10 -12q-5 0 -10 -2.5t-8 -5t-8 -7.5l-8 -8l-54.5 -48.5t-35.5 -32.5q-2 -6 -2 -10q0 -2 8 -13q50 -70 94 -124q8 -10 14 -10h10 q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -26 1t-32 1q-11 0 -30.5 -1t-26.5 -1q-8 0 -9.5 2t-1.5 10q0 12 8 12h8q14 0 14 6l-17 26q-21 31 -56 74q-2 6 -3 7.5t-2 0t-4 -7.5l-21.5 -25l-31.5 -36t-23 -28q-1 -2 -3 -4l-3 -3t-1.5 -2.5t-0.5 -2.5q0 -5 14 -5h22 q10 0 10 -12q0 -7 -1.5 -9.5t-9.5 -2.5q-7 0 -23 1t-29 1q-12 0 -27 -1t-20 -1q-7 0 -8.5 2t-1.5 10z" />
+<glyph horiz-adv-x="378" d="M20 645q0 7 1.5 9.5t9.5 2.5q7 0 27 -1t32 -1q11 0 37.5 1t33.5 1q8 0 9.5 -2t1.5 -10q0 -12 -10 -12h-15q-21 0 -21 -8q0 -10 25 -80t45 -118q14 -32 15 -32q3 0 14 32q65 186 65 200q0 6 -23 6h-18q-10 0 -10 12q0 7 1.5 9.5t9.5 2.5q7 0 26 -1t27 -1q10 0 24.5 1 t19.5 1q11 0 11 -12t-10 -12h-11q-8 0 -10 -8l-104 -272q0 -1 -36 -93q-1 -4 -5.5 -16t-5.5 -14.5l-4.5 -11.5t-6 -13l-7.5 -12t-10.5 -15l-12.5 -16q-14 -19 -34 -29q-42 -21 -50 -21q-15 0 -15 17q0 11 15 34q8 11 23 15q3 1 14 5l18 6.5t16.5 7.5t15 10.5t8.5 12.5 q35 82 35 97q0 6 -22 59.5l-59.5 141.5t-43.5 103q-4 9 -6 10.5t-11 1.5h-9q-10 0 -10 12z" />
+<glyph horiz-adv-x="345" d="M35 359q0 6 8 17q179 261 179 263q0 3 -7 3q-41 0 -121 -4q-8 0 -10.5 -0.5t-5 -2t-3.5 -4t-2 -8.5l-7 -32q-3 -9 -12 -9q-14 0 -14 5q0 1 1.5 12.5t3 27.5t2.5 25q0 4 0.5 6t2 3t3.5 1.5t6 0.5h228q19 0 19 -8q0 -1 -7 -13l-168 -246q-11 -18 -11 -20t15 -2l137 4 q8 0 10 1t3 9l7 45q1 8 2.5 9t7.5 1h5q8 0 8 -5q0 -16 -5 -76q-1 -9 -2.5 -10.5t-10.5 -1.5h-244q-18 0 -18 9z" />
+<glyph d="M98 291q0 12 6 25.5t12 14.5t141 4t143 3q2 0 2 -9q0 -33 -8 -33q-9 -1 -145 -4.5t-147 -3.5q-4 0 -4 3z" />
+<glyph horiz-adv-x="474" d="M45 189q0 82 56 136.5t137 54.5q88 0 139.5 -55.5t51.5 -136.5q0 -84 -57 -138.5t-140 -54.5q-77 0 -132 57.5t-55 136.5zM78 189q0 -65 44.5 -105.5t108.5 -40.5q80 0 120.5 45t40.5 114q0 59 -47.5 98.5t-110.5 39.5t-109.5 -44.5t-46.5 -106.5z" />
+<glyph horiz-adv-x="336" d="M65 12q0 7 2.5 10t11.5 3h42q8 0 9.5 2t1.5 10q1 29 1 88v89q0 93 -2 137q0 5 -0.5 7t-2.5 3.5t-7 1.5h-42q-11 0 -11 13q0 8 1.5 11t9.5 3q9 0 43.5 -1t47.5 -1t47 1t43 1q8 0 9.5 -2.5t1.5 -11.5q0 -7 -2.5 -10t-11.5 -3h-39q-7 0 -9 -1.5t-2 -7.5v-3q-3 -58 -3 -234 q0 -53 1 -80q0 -12 12 -12h40q11 0 11 -13q0 -8 -1.5 -11t-9.5 -3q-9 0 -43.5 1t-47.5 1t-47 -1t-43 -1q-8 0 -9.5 2.5t-1.5 11.5z" />
+<glyph horiz-adv-x="508" d="M65 323q0 8 26 27.5t68 37.5t76 18q55 0 91.5 -36t36.5 -90q0 -39 -35 -83t-71 -70.5t-75 -49.5q-28 -16 -28 -18q0 -1 7 -1h232q4 0 19.5 33t17.5 33q4 0 11 -2.5t7 -4.5q0 -15 -27 -111q-2 -6 -11 -6h-326q-15 0 -15 11q0 7 12 17q13 12 54.5 41t73.5 53.5t59 65 t27 82.5q0 44 -23 69t-61 25q-30 0 -61 -15t-50 -31l-18 -15q-4 0 -10.5 7.5t-6.5 12.5z" />
+<glyph horiz-adv-x="422" d="M30 -164q0 8 11.5 14t26.5 6q16 0 41 -15q4 -2 14 -9t15.5 -10.5t18 -6.5t26.5 -3q48 0 87 45.5t39 103.5q0 70 -36.5 100.5t-114.5 30.5q-12 0 -32 -1.5t-21 -1.5q-3 0 -5.5 1t-3.5 3t-2 3.5t-1.5 5t-1.5 5.5q-2 6 -2 9q0 11 21 17q78 22 114.5 54t36.5 85 q0 40 -24 68.5t-61 28.5q-33 0 -59.5 -12.5t-39 -25t-13.5 -12.5q-6 0 -12 5.5t-6 11.5q0 7 19.5 23.5t54.5 32t68 15.5q61 0 97.5 -33.5t36.5 -89.5q0 -82 -91 -122q-48 -20 -48 -23q0 -2 42 -5q147 -12 147 -161q0 -80 -60.5 -133t-138.5 -53q-42 0 -92.5 15t-50.5 34z " />
+<glyph d="M40 8q0 32 84 130l133 160q85 96 96 96q13 0 13 -26v-296q0 -13 2 -15.5t13 -2.5h58q7 0 7 -10v-34q0 -8 -1.5 -9t-10.5 -1h-52q-11 0 -13 -2t-1 -12q9 -183 9 -185q0 -10 -16 -11l-45 -4q-11 0 -11 13v186q0 11 -2.5 13t-13.5 2h-231q-18 0 -18 8zM93 60q0 -6 25 -6h168 q14 0 16.5 3t2.5 17v216q0 26 -3 26q-1 0 -18 -21l-174 -210q-17 -21 -17 -25z" />
+<glyph horiz-adv-x="440" d="M70 158q0 6 8.5 44.5l20.5 94t18 88.5q1 6 15 6q2 0 41 -2.5t88.5 -4.5t77.5 -2q22 0 24 5q8 24 10 24h4q13 0 13 -6q-3 -45 -4 -69q-1 -17 -37 -17q-35 0 -64.5 1.5t-66 4.5t-65.5 4q-19 0 -21 -10q-20 -100 -20 -107q0 -4 1.5 -5.5t5.5 -1.5h4q107 -10 167 -52t60 -134 q0 -60 -36 -109.5t-85 -76t-88.5 -40.5t-57.5 -14q-8 0 -8 18q0 13 8 14q22 4 46 13t51.5 25t49 37t35.5 51.5t14 65.5q0 73 -54.5 108t-139.5 35q-15 0 -15 12z" />
+<glyph d="M48 231q0 65 21.5 126.5t55.5 106t73 82t75 61t61 36t33 12.5q5 0 10 -7t5 -13q0 -4 -5 -6q-49 -20 -91.5 -54.5t-70.5 -73.5t-44.5 -69t-26.5 -57q-9 -25 -9 -27q3 -3 4.5 -3t10.5 2t12 3q43 8 91 8q79 0 133.5 -47.5t54.5 -121.5q0 -89 -56.5 -141.5t-140.5 -52.5 q-88 0 -142 61.5t-54 174.5zM115 201q0 -69 36.5 -122t106.5 -53q49 0 82 44t33 98q0 75 -40 121.5t-116 46.5q-30 0 -66 -6q-9 -2 -13 -3t-7 -6.5t-3.5 -7.5t-3.5 -15q-9 -43 -9 -97z" />
+<glyph d="M64 278q0 4 1.5 19.5t5 45.5t5.5 56q1 13 4.5 15.5t11.5 2.5q13 0 13 -20q0 -4 164 -4h166q17 0 17 -9q0 -2 -4 -10l-129 -246.5l-128 -248.5t-52 -95q-13 0 -24.5 9t-11.5 19q0 1 288 502q9 16 9 17q0 4 -18 4h-199q-84 0 -85 -9l-9 -51q-1 -6 -13 -5t-12 8z" />
+<glyph d="M71 154q0 37 11.5 66.5t32.5 49t35 28.5t34 19q5 3 9.5 4.5t6.5 2.5h2l-2 2q-3 1 -8 4t-11 7q-101 69 -101 158q0 68 49.5 115.5t120.5 47.5q67 0 112.5 -42t45.5 -108q0 -16 -2 -30t-7 -26.5t-9.5 -22.5t-13.5 -20t-14 -16.5t-15.5 -15t-14.5 -12t-15 -11t-12 -8.5 q-9 -7 -9 -8t9 -6q1 -1 17 -9.5t23 -14l22.5 -17t24 -24t19 -29.5t15 -38.5t4.5 -45.5q0 -72 -50 -116t-132 -44q-73 0 -125 45t-52 115zM124 164q0 -63 35 -102.5t93 -39.5q50 0 81.5 39t31.5 92q0 40 -19.5 70.5t-40 45t-59.5 35.5q-22 12 -27 12q-3 0 -33 -21 q-62 -46 -62 -131zM138 507q0 -64 69 -118q34 -26 54 -35l16 -7q3 0 14 10q26 23 49 65t23 78q0 64 -32 100t-83 36q-50 0 -80 -37.5t-30 -91.5z" />
+<glyph d="M60 204q0 89 55 141.5t138 52.5q87 0 143.5 -62t56.5 -174q0 -70 -26.5 -130t-68 -99.5t-88.5 -70.5t-91 -47.5t-71.5 -24.5t-34.5 -8q-4 0 -7 9t-3 16q0 2 24 9.5t62 24t79 42t80 71t59 102.5l3 7l3 10.5t0 3.5q-2 0 -20 -12q-54 -33 -125 -33q-77 0 -122.5 47.5 t-45.5 124.5zM125 214q0 -60 35 -105.5t95 -45.5q96 0 126 52q6 11 6 57q0 50 -13 92.5t-43.5 73t-74.5 30.5q-64 0 -97.5 -43.5t-33.5 -110.5z" />
+</font>
+</defs></svg> 
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/css/font-files/fanwood_italic-webfont.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/css/font-files/fanwood_italic-webfont.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/css/font-files/fanwood_italic-webfont.svg	(revision 29468)
@@ -0,0 +1,682 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Copyright c 2011 Barry Schwartz
+</metadata>
+<defs>
+<font id="FanwoodItalic" horiz-adv-x="360" >
+<font-face units-per-em="1000" ascent="690" descent="-310" />
+<missing-glyph horiz-adv-x="200" />
+<glyph unicode="fi" horiz-adv-x="508" d="M-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q9 98 42 157q41 72 110 112q48 28 100 28q24 0 48.5 -12.5 t24.5 -23.5q0 -13 -19 -27t-35 -14q-12 0 -42 18.5t-48 18.5q-26 0 -49.5 -27.5t-36.5 -68.5q-17 -52 -33 -167q-1 -3 2 -4.5t6 -1.5h82q52 0 87.5 5.5t47.5 5.5q20 0 20 -22q0 -26 -32.5 -150t-32.5 -136q0 -20 13 -20q8 0 27 16t35 32t17 16q3 0 7.5 -5t4.5 -7 q0 -12 -64.5 -62.5t-86.5 -50.5q-24 0 -24 18q0 24 35.5 145t35.5 153q0 37 -13 37h-161q-7 0 -7.5 -1t-2.5 -10q-2 -11 -13 -91l-23.5 -164.5l-20.5 -134.5q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3 t-14 -1.5q-24 0 -46 12.5t-22 23.5z" />
+<glyph unicode="fl" horiz-adv-x="534" d="M-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q2 19 11 64q14 62 38 101.5t67 75.5q62 53 128 53 q29 0 50 -16q9 -6 9.5 -6t9.5 4q11 5 20.5 10.5t13 7t5.5 1.5q10 0 10 -9q0 -12 -50 -305.5t-50 -296.5q0 -21 14 -21q12 0 36 21t43.5 42t20.5 21q3 0 9.5 -5.5t6.5 -7.5q0 -4 -28 -34.5t-71.5 -62t-73.5 -31.5q-29 0 -29 38q0 5 7 46l21 120l25 143q1 7 0 8.5t-8 1.5h-167 q-7 0 -7.5 -1t-2.5 -10q-2 -13 -13 -91.5l-23.5 -163.5t-20.5 -135q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5q-24 0 -46 12.5t-22 23.5zM189 377q0 -5 8 -5h169h6t3 1.5t1.5 2.5t1 4t0.5 5 q26 162 35 239q-4 -2 -9 -4q-8 -4 -21 -4q-12 0 -42 16q-18 9 -24 9q-14 0 -37 -16q-74 -53 -91 -248z" />
+<glyph unicode="ff" horiz-adv-x="531" d="M-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q6 51 24 102q26 71 86.5 128t140.5 57q31 0 60 -13t38 -27 q2 -2 2 -5q0 -1 2 0l2 2q24 19 35 25q48 28 91 28q24 0 48.5 -12.5t24.5 -23.5q0 -13 -19 -27t-35 -14q-12 0 -37.5 18.5t-43.5 18.5q-75 0 -109 -254q-1 -6 -1 -9q-1 -3 2 -4.5t6 -1.5h82q5 0 5 -2q0 -8 -2 -14q-1 -9 -7 -9h-80q-6 0 -7 -1t-2 -7q-1 -2 -1 -3l-48 -320 q-9 -56 -34.5 -116.5t-64.5 -95.5q-48 -43 -91 -43q-23 0 -44 9.5t-21 19.5q0 13 16.5 26t30.5 13q12 0 36.5 -7.5t41.5 -7.5q11 0 20.5 7t16.5 22.5t12 28.5t9.5 37l6.5 35t5 34.5t3 25.5q42 290 42 332q0 11 -4 11h-170q-7 0 -7.5 -1t-2.5 -10q-2 -13 -13 -91.5 l-23.5 -163.5t-20.5 -135q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5q-24 0 -46 12.5t-22 23.5zM189 377q0 -5 8 -5h167q7 0 8 1.5t2 10.5q9 98 42 157q18 33 37 56q4 4 4 5h-2.5t-6.5 -2 q-6 -3 -12 -3q-16 0 -37 17q-39 30 -60 30q-43 0 -77 -37t-48 -88q-25 -93 -25 -142z" />
+<glyph unicode="ffi" horiz-adv-x="755" d="M-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q6 51 24 102q26 71 86.5 128t140.5 57q31 0 60 -13t38 -27 q2 -3 3 -6q3 -5 8 1q2 1 3 2q10 9 36 25q48 28 100 28q24 0 48.5 -12.5t24.5 -23.5q0 -13 -19 -27t-35 -14q-12 0 -42 18.5t-48 18.5q-26 0 -49.5 -27.5t-36.5 -68.5q-17 -52 -33 -167v-1q0 -5 8 -5h82q52 0 87.5 5.5t47.5 5.5q20 0 20 -22q0 -26 -32.5 -150t-32.5 -136 q0 -20 13 -20q8 0 27 16t35 32t17 16q3 0 7.5 -5t4.5 -7q0 -12 -64.5 -62.5t-86.5 -50.5q-24 0 -24 18q0 24 35.5 145t35.5 153q0 37 -13 37h-161q-6 0 -7 -1t-2 -7q-1 -2 -1 -3l-48 -320q-9 -56 -34.5 -116.5t-64.5 -95.5q-48 -43 -91 -43q-23 0 -44 9.5t-21 19.5 q0 13 16.5 26t30.5 13q12 0 36.5 -7.5t41.5 -7.5q11 0 20.5 7t16.5 22.5t12 28.5t9.5 37l6.5 35t5 34.5t3 25.5q42 290 42 332v4q0 7 -4 7h-170q-7 0 -7.5 -1t-2.5 -10q-2 -13 -13 -91.5l-23.5 -163.5t-20.5 -135q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6 t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5q-24 0 -46 12.5t-22 23.5zM189 377q0 -5 8 -5h167q7 0 8 1.5t2 10.5q3 32 14.5 82.5t31.5 81.5q13 21 37 48l5 6q-1 1 -7 -1q-12 -4 -19 -4q-16 0 -37 17q-39 30 -60 30q-43 0 -77 -37t-48 -88 q-25 -93 -25 -142z" />
+<glyph unicode="ffl" horiz-adv-x="781" d="M-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q6 51 24 102q26 71 86.5 128t140.5 57q39 0 75 -21 q21 -12 25 -25l1 -9l1 1q2 1 5 3.5t5 4.5q62 53 128 53q29 0 50 -16q9 -6 9.5 -6t9.5 4q11 5 20.5 10.5t13 7t5.5 1.5q10 0 10 -9q0 -12 -50 -305.5t-50 -296.5q0 -21 14 -21q12 0 36 21t43.5 42t20.5 21q3 0 9.5 -5.5t6.5 -7.5q0 -4 -28 -34.5t-71.5 -62t-73.5 -31.5 q-29 0 -29 38q0 5 7 46l21 120l25 143q1 7 0 8.5t-8 1.5h-167q-6 0 -7 -1t-2 -7q-1 -2 -1 -3l-48 -320q-9 -56 -34.5 -116.5t-64.5 -95.5q-48 -43 -91 -43q-23 0 -44 9.5t-21 19.5q0 13 16.5 26t30.5 13q12 0 36.5 -7.5t41.5 -7.5q11 0 20.5 7t16.5 22.5t12 28.5t9.5 37 l6.5 35t5 34.5t3 25.5q42 290 42 332q0 11 -4 11h-170q-7 0 -7.5 -1t-2.5 -10q-2 -13 -13 -91.5l-23.5 -163.5t-20.5 -135q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5q-24 0 -46 12.5t-22 23.5z M189 377q0 -5 8 -5h167q7 0 8 1.5t2 10.5q2 19 11 64q21 92 73 147q5 5 4.5 5.5t-8.5 -2.5q-6 -3 -12 -3q-20 0 -43 19q-39 30 -60 30q-43 0 -77 -37t-48 -88q-25 -93 -25 -142zM436 377q0 -5 8 -5h169h6t3 1.5t1.5 2.5t1 4t0.5 5q26 162 35 239q-4 -2 -9 -4q-8 -4 -21 -4 q-12 0 -42 16q-18 9 -24 9q-14 0 -37 -16q-74 -53 -91 -248z" />
+<glyph unicode="fj" horiz-adv-x="508" d="M-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q9 98 42 157q41 72 110 112q48 28 100 28q24 0 48.5 -12.5 t24.5 -23.5q0 -13 -19 -27t-35 -14q-12 0 -42 18.5t-48 18.5q-26 0 -49.5 -27.5t-36.5 -68.5q-17 -52 -33 -167q-1 -3 2 -4.5t6 -1.5h82q52 0 87.5 5.5t47.5 5.5q14 0 18 -10q3 -6 3 -14q0 -21 -13 -103.5l-27.5 -167t-15.5 -91.5q-6 -37 -9 -51.5t-13 -48t-27 -57 t-41 -41.5q-52 -38 -87 -38q-24 0 -39.5 11t-15.5 23q0 15 10 25.5t25 10.5q18 0 38 -12.5t37 -12.5q10 0 17 5.5t12.5 20.5t8.5 26.5t9 39.5q18 91 41.5 240.5t23.5 171.5q0 37 -13 37h-161q-7 0 -7.5 -1t-2.5 -10q-2 -13 -13 -91.5l-23.5 -163.5t-20.5 -135 q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5q-24 0 -46 12.5t-22 23.5z" />
+<glyph unicode="ffj" horiz-adv-x="755" d="M-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q6 51 24 102q26 71 86.5 128t140.5 57q31 0 60 -13t38 -27 q2 -3 3 -6q3 -5 8 1q2 1 3 2q10 9 36 25q48 28 100 28q24 0 48.5 -12.5t24.5 -23.5q0 -13 -19 -27t-35 -14q-12 0 -42 18.5t-48 18.5q-26 0 -49.5 -27.5t-36.5 -68.5q-17 -52 -33 -167v-1q0 -5 8 -5h82q52 0 87.5 5.5t47.5 5.5q14 0 18 -10q3 -6 3 -14q0 -21 -13 -103.5 l-27.5 -167t-15.5 -91.5q-6 -37 -9 -51.5t-13 -48t-27 -57t-41 -41.5q-52 -38 -87 -38q-24 0 -39.5 11t-15.5 23q0 15 10 25.5t25 10.5q18 0 38 -12.5t37 -12.5q10 0 17 5.5t12.5 20.5t8.5 26.5t9 39.5q18 91 41.5 240.5t23.5 171.5q0 37 -13 37h-161q-6 0 -7 -1t-2 -7 q-1 -2 -1 -3l-48 -320q-9 -56 -34.5 -116.5t-64.5 -95.5q-48 -43 -91 -43q-23 0 -44 9.5t-21 19.5q0 13 16.5 26t30.5 13q12 0 36.5 -7.5t41.5 -7.5q11 0 20.5 7t16.5 22.5t12 28.5t9.5 37l6.5 35t5 34.5t3 25.5q42 290 42 332v4q0 7 -4 7h-170q-7 0 -7.5 -1t-2.5 -10 q-2 -13 -13 -91.5l-23.5 -163.5t-20.5 -135q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5q-24 0 -46 12.5t-22 23.5zM189 377q0 -5 8 -5h167q7 0 8 1.5t2 10.5q3 32 14.5 82.5t31.5 81.5q13 21 37 48 l5 6q-1 1 -7 -1q-12 -4 -19 -4q-16 0 -37 17q-39 30 -60 30q-43 0 -77 -37t-48 -88q-25 -93 -25 -142z" />
+<glyph unicode="fb" horiz-adv-x="732" d="M-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q2 19 11 64q14 62 38 101.5t67 75.5q62 53 128 53 q29 0 50 -16q9 -6 9.5 -6t9.5 4l16.5 8.5t17.5 9.5t9 4q12 0 12 -10q0 -6 -17.5 -117.5t-22.5 -140.5l-49 -251q51 85 87 133q38 51 64.5 71.5t71.5 20.5q41 0 64 -23q14 -14 14 -42q0 -72 -28.5 -137t-69.5 -106t-84 -64.5t-76 -23.5q-20 0 -40 7t-32.5 14t-15.5 7 q-4 0 -20 -8q-20 -8 -27 -8q-10 0 -10 8q0 4 13 23q5 7 8 19q75 403 87 569q-2 0 -8 -3q-8 -4 -21 -4q-12 0 -42 16q-18 9 -24 9q-14 0 -37 -16q-74 -53 -91 -248q0 -5 8 -5h82q5 0 5 -2q0 -8 -2 -14q-2 -9 -7 -9h-80q-7 0 -7.5 -1t-2.5 -10q-2 -13 -13 -91.5l-23.5 -163.5 t-20.5 -135q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5q-24 0 -46 12.5t-22 23.5zM391 80q0 -25 17 -42.5t51 -17.5q41 0 84.5 51t69 112.5t25.5 98.5q0 23 -10 41t-32 18q-41 0 -83 -59l-48.5 -68 l-36.5 -54.5t-28.5 -49t-8.5 -30.5z" />
+<glyph unicode="fh" horiz-adv-x="766" d="M-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q2 19 11 64q14 62 38 101.5t67 75.5q62 53 128 53 q29 0 50 -16q9 -6 9.5 -6t9.5 4l16.5 8.5t17.5 9.5t9 4q12 0 12 -10q0 -33 -9 -93q-23 -158 -84 -456q47 110 115 192q56 68 124 68q26 0 42.5 -12t16.5 -36q0 -37 -33.5 -147.5t-33.5 -120.5q0 -22 21 -22q11 0 34 21.5t41.5 43.5t19.5 22q2 0 7 -4t5 -6q0 -5 -22 -33.5 t-60.5 -58.5t-72.5 -30q-18 0 -29.5 10.5t-11.5 27.5q0 14 36.5 127.5t36.5 141.5q0 17 -9 28t-25 11q-33 0 -66.5 -40t-74.5 -107q-46 -77 -54 -108l-20 -82q-2 -11 -58 -11q-8 0 -8 8q0 1 7 33t18.5 90t24 130t26 171t23.5 196q-14 -4 -18 -6q-8 -4 -21 -4q-12 0 -42 16 q-18 9 -24 9q-14 0 -37 -16q-74 -53 -91 -248q0 -5 8 -5h82q5 0 5 -2q0 -8 -2 -14q-2 -9 -7 -9h-80q-7 0 -7.5 -1t-2.5 -10q-2 -13 -13 -91.5l-23.5 -163.5t-20.5 -135q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5 t-13 -3t-14 -1.5q-24 0 -46 12.5t-22 23.5z" />
+<glyph unicode="fk" horiz-adv-x="731" d="M-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q2 19 11 64q14 62 38 101.5t67 75.5q62 53 128 53 q29 0 50 -16q9 -6 9.5 -6t9.5 4l16.5 8.5t17.5 9.5t9 4q12 0 12 -14q0 -16 -97 -489q36 69 72 117q33 43 66.5 64t82.5 21q59 0 59 -37q0 -42 -32.5 -78t-67.5 -53t-65 -24q-21 -3 -21 -4l4 -2q4 -2 10.5 -6.5t12.5 -9.5q47 -45 73 -77q16 -20 24 -28.5t22.5 -16.5t31.5 -8 q34 0 34 27q0 4 -1 10.5t-1 9.5q0 12 8 12t14.5 -10.5t6.5 -32.5t-38.5 -38.5t-72.5 -16.5q-22 0 -43 20q-11 10 -23.5 25t-29 37.5t-24.5 32.5q-10 13 -23.5 28.5t-20 24t-6.5 9.5q0 5 17 22q2 2 10 2q15 0 28 5q37 17 71 53.5t34 70.5q0 20 -31 20q-29 0 -63 -32 q-9 -9 -18.5 -20t-20.5 -26.5l-18.5 -26.5l-21.5 -33t-21 -32q-17 -27 -24 -58q-15 -64 -21 -98q-3 -22 -10 -22q-1 0 -11 -1.5t-22 -3t-17 -1.5q-4 0 -4.5 1t-0.5 6q0 3 21 102.5t48.5 251t38.5 268.5q-6 -1 -10 -3q-8 -4 -21 -4q-12 0 -42 16q-18 9 -24 9q-14 0 -37 -16 q-74 -53 -91 -248q0 -5 8 -5h82q5 0 5 -2q0 -8 -2 -14q-2 -9 -7 -9h-80q-7 0 -7.5 -1t-2.5 -10q-2 -13 -13 -91.5l-23.5 -163.5t-20.5 -135q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5 q-24 0 -46 12.5t-22 23.5z" />
+<glyph unicode="ffb" horiz-adv-x="979" d="M-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q6 51 24 102q26 71 86.5 128t140.5 57q39 0 75 -21 q21 -12 25 -25l1 -9l1 1q2 1 5 3.5t5 4.5q62 53 128 53q29 0 50 -16q9 -6 9.5 -6t9.5 4l16.5 8.5t17.5 9.5t9 4q12 0 12 -10q0 -6 -17.5 -117.5t-22.5 -140.5l-49 -251q51 85 87 133q38 51 64.5 71.5t71.5 20.5q41 0 64 -23q14 -14 14 -42q0 -72 -28.5 -137t-69.5 -106 t-84 -64.5t-76 -23.5q-20 0 -40 7t-32.5 14t-15.5 7q-4 0 -20 -8q-20 -8 -27 -8q-10 0 -10 8q0 4 13 23q5 7 8 19q75 403 87 569q-2 0 -8 -3q-8 -4 -21 -4q-12 0 -42 16q-18 9 -24 9q-14 0 -37 -16q-74 -53 -91 -248q0 -5 8 -5h82q5 0 5 -2q0 -8 -2 -14q-1 -9 -7 -9h-80 q-6 0 -7 -1t-2 -7q-1 -2 -1 -3l-48 -320q-9 -56 -34.5 -116.5t-64.5 -95.5q-48 -43 -91 -43q-23 0 -44 9.5t-21 19.5q0 13 16.5 26t30.5 13q12 0 36.5 -7.5t41.5 -7.5q11 0 20.5 7t16.5 22.5t12 28.5t9.5 37l6.5 35t5 34.5t3 25.5q42 290 42 332q0 11 -4 11h-170 q-7 0 -7.5 -1t-2.5 -10q-2 -13 -13 -91.5l-23.5 -163.5t-20.5 -135q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5q-24 0 -46 12.5t-22 23.5zM189 377q0 -5 8 -5h167q7 0 8 1.5t2 10.5q2 19 11 64 q21 92 73 147q5 5 4.5 5.5t-8.5 -2.5q-6 -3 -12 -3q-20 0 -43 19q-39 30 -60 30q-43 0 -77 -37t-48 -88q-25 -93 -25 -142zM638 80q0 -25 17 -42.5t51 -17.5q41 0 84.5 51t69 112.5t25.5 98.5q0 23 -10 41t-32 18q-41 0 -83 -59l-48.5 -68l-36.5 -54.5t-28.5 -49t-8.5 -30.5 z" />
+<glyph unicode="ffh" horiz-adv-x="1013" d="M-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q6 51 24 102q26 71 86.5 128t140.5 57q39 0 75 -21 q21 -12 25 -25l1 -9l1 1q2 1 5 3.5t5 4.5q62 53 128 53q29 0 50 -16q9 -6 9.5 -6t9.5 4l16.5 8.5t17.5 9.5t9 4q12 0 12 -10q0 -33 -9 -93q-23 -158 -84 -456q47 110 115 192q56 68 124 68q26 0 42.5 -12t16.5 -36q0 -37 -33.5 -147.5t-33.5 -120.5q0 -22 21 -22 q11 0 34 21.5t41.5 43.5t19.5 22q2 0 7 -4t5 -6q0 -5 -22 -33.5t-60.5 -58.5t-72.5 -30q-18 0 -29.5 10.5t-11.5 27.5q0 14 36.5 127.5t36.5 141.5q0 17 -9 28t-25 11q-33 0 -66.5 -40t-74.5 -107q-46 -77 -54 -108l-20 -82q-2 -11 -58 -11q-8 0 -8 8q0 1 7 33t18.5 90 t24 130t26 171t23.5 196q-14 -4 -18 -6q-8 -4 -21 -4q-12 0 -42 16q-18 9 -24 9q-14 0 -37 -16q-74 -53 -91 -248q0 -5 8 -5h82q5 0 5 -2q0 -8 -2 -14q-1 -9 -7 -9h-80q-6 0 -7 -1t-2 -7q-1 -2 -1 -3l-48 -320q-9 -56 -34.5 -116.5t-64.5 -95.5q-48 -43 -91 -43 q-23 0 -44 9.5t-21 19.5q0 13 16.5 26t30.5 13q12 0 36.5 -7.5t41.5 -7.5q11 0 20.5 7t16.5 22.5t12 28.5t9.5 37l6.5 35t5 34.5t3 25.5q42 290 42 332q0 11 -4 11h-170q-7 0 -7.5 -1t-2.5 -10q-2 -13 -13 -91.5l-23.5 -163.5t-20.5 -135q-3 -17 -11 -44.5t-31 -70.5 t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5q-24 0 -46 12.5t-22 23.5zM189 377q0 -5 8 -5h167q7 0 8 1.5t2 10.5q2 19 11 64q21 92 73 147q5 5 4.5 5.5t-8.5 -2.5q-6 -3 -12 -3q-20 0 -43 19q-39 30 -60 30q-43 0 -77 -37 t-48 -88q-25 -93 -25 -142z" />
+<glyph unicode="ffk" horiz-adv-x="978" d="M-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q6 51 24 102q26 71 86.5 128t140.5 57q39 0 75 -21 q21 -12 25 -25l1 -9l1 1q2 1 5 3.5t5 4.5q62 53 128 53q29 0 50 -16q9 -6 9.5 -6t9.5 4l16.5 8.5t17.5 9.5t9 4q12 0 12 -14q0 -16 -97 -489q36 69 72 117q33 43 66.5 64t82.5 21q59 0 59 -37q0 -42 -32.5 -78t-67.5 -53t-65 -24q-21 -3 -21 -4l4 -2q4 -2 10.5 -6.5 t12.5 -9.5q47 -45 73 -77q16 -20 24 -28.5t22.5 -16.5t31.5 -8q34 0 34 27q0 4 -1 10.5t-1 9.5q0 12 8 12t14.5 -10.5t6.5 -32.5t-38.5 -38.5t-72.5 -16.5q-22 0 -43 20q-11 10 -23.5 25t-29 37.5t-24.5 32.5q-10 13 -23.5 28.5t-20 24t-6.5 9.5q0 5 17 22q2 2 10 2 q16 0 28 5q37 17 71 53.5t34 70.5q0 20 -31 20q-29 0 -63 -32q-9 -9 -18.5 -20t-20.5 -26.5l-18.5 -26.5l-21.5 -33t-21 -32q-17 -27 -24 -58q-15 -64 -21 -98q-3 -22 -10 -22q-1 0 -11 -1.5t-22 -3t-17 -1.5q-4 0 -4.5 1t-0.5 6q0 3 21 102.5t48.5 251t38.5 268.5 q-6 -1 -10 -3q-8 -4 -21 -4q-12 0 -42 16q-18 9 -24 9q-14 0 -37 -16q-74 -53 -91 -248q0 -5 8 -5h82q5 0 5 -2q0 -8 -2 -14q-1 -9 -7 -9h-80q-6 0 -7 -1t-2 -7q-1 -2 -1 -3l-48 -320q-9 -56 -34.5 -116.5t-64.5 -95.5q-48 -43 -91 -43q-23 0 -44 9.5t-21 19.5q0 13 16.5 26 t30.5 13q12 0 36.5 -7.5t41.5 -7.5q11 0 20.5 7t16.5 22.5t12 28.5t9.5 37l6.5 35t5 34.5t3 25.5q42 290 42 332q0 11 -4 11h-170q-7 0 -7.5 -1t-2.5 -10q-2 -13 -13 -91.5l-23.5 -163.5t-20.5 -135q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7 t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5q-24 0 -46 12.5t-22 23.5zM189 377q0 -5 8 -5h167q7 0 8 1.5t2 10.5q2 19 11 64q21 92 73 147q5 5 4.5 5.5t-8.5 -2.5q-6 -3 -12 -3q-20 0 -43 19q-39 30 -60 30q-43 0 -77 -37t-48 -88q-25 -93 -25 -142z" />
+<glyph unicode="f&#x125;" horiz-adv-x="766" d="M451 731q0 1 4 5l91 92q11 11 20 11h20q7 0 9 -1.5t7 -9.5l53 -92q2 -3 2 -5t-5 -2h-12q-1 0 -7 6l-63 52q-3 3 -8 0l-85 -52q-2 -1 -4 -2.5t-3 -2.5l-2 -1h-12q-5 0 -5 2zM-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5 t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q2 19 11 64q14 62 38 101.5t67 75.5q62 53 128 53q29 0 50 -16q9 -6 9.5 -6t9.5 4l16.5 8.5t17.5 9.5t9 4q12 0 12 -10q0 -33 -9 -93q-23 -158 -84 -456 q47 110 115 192q56 68 124 68q26 0 42.5 -12t16.5 -36q0 -37 -33.5 -147.5t-33.5 -120.5q0 -22 21 -22q11 0 34 21.5t41.5 43.5t19.5 22q2 0 7 -4t5 -6q0 -5 -22 -33.5t-60.5 -58.5t-72.5 -30q-18 0 -29.5 10.5t-11.5 27.5q0 14 36.5 127.5t36.5 141.5q0 17 -9 28t-25 11 q-33 0 -66.5 -40t-74.5 -107q-46 -77 -54 -108l-20 -82q-2 -11 -58 -11q-8 0 -8 8q0 1 7 33t18.5 90t24 130t26 171t23.5 196q-14 -4 -18 -6q-8 -4 -21 -4q-12 0 -42 16q-18 9 -24 9q-14 0 -37 -16q-74 -53 -91 -248q0 -5 8 -5h82q5 0 5 -2q0 -8 -2 -14q-2 -9 -7 -9h-80 q-7 0 -7.5 -1t-2.5 -10q-2 -13 -13 -91.5l-23.5 -163.5t-20.5 -135q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5q-24 0 -46 12.5t-22 23.5z" />
+<glyph unicode="ff&#x125;" horiz-adv-x="1013" d="M698 731q0 1 4 5l91 92q11 11 20 11h20q7 0 9 -1.5t7 -9.5l53 -92q2 -3 2 -5t-5 -2h-12q-1 0 -7 6l-63 52q-3 3 -8 0l-85 -52q-2 -1 -4 -2.5t-4 -2.5l-1 -1h-12q-5 0 -5 2zM-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5 t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q6 51 24 102q26 71 86.5 128t140.5 57q39 0 75 -21q21 -12 25 -25l1 -9l1 1q2 1 5 3.5t5 4.5q62 53 128 53q29 0 50 -16q9 -6 9.5 -6t9.5 4l16.5 8.5t17.5 9.5 t9 4q12 0 12 -10q0 -33 -9 -93q-23 -158 -84 -456q47 110 115 192q56 68 124 68q26 0 42.5 -12t16.5 -36q0 -37 -33.5 -147.5t-33.5 -120.5q0 -22 21 -22q11 0 34 21.5t41.5 43.5t19.5 22q2 0 7 -4t5 -6q0 -5 -22 -33.5t-60.5 -58.5t-72.5 -30q-18 0 -29.5 10.5t-11.5 27.5 q0 14 36.5 127.5t36.5 141.5q0 17 -9 28t-25 11q-33 0 -66.5 -40t-74.5 -107q-46 -77 -54 -108l-20 -82q-2 -11 -58 -11q-8 0 -8 8q0 1 7 33t18.5 90t24 130t26 171t23.5 196q-14 -4 -18 -6q-8 -4 -21 -4q-12 0 -42 16q-18 9 -24 9q-14 0 -37 -16q-74 -53 -91 -248 q0 -5 8 -5h82q5 0 5 -2q0 -8 -2 -14q-1 -9 -7 -9h-80q-6 0 -7 -1t-2 -7q-1 -2 -1 -3l-48 -320q-9 -56 -34.5 -116.5t-64.5 -95.5q-48 -43 -91 -43q-23 0 -44 9.5t-21 19.5q0 13 16.5 26t30.5 13q12 0 36.5 -7.5t41.5 -7.5q11 0 20.5 7t16.5 22.5t12 28.5t9.5 37l6.5 35 t5 34.5t3 25.5q42 290 42 332q0 11 -4 11h-170q-7 0 -7.5 -1t-2.5 -10q-2 -13 -13 -91.5l-23.5 -163.5t-20.5 -135q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5q-24 0 -46 12.5t-22 23.5zM189 377 q0 -5 8 -5h167q7 0 8 1.5t2 10.5q2 19 11 64q21 92 73 147q5 5 4.5 5.5t-8.5 -2.5q-6 -3 -12 -3q-20 0 -43 19q-39 30 -60 30q-43 0 -77 -37t-48 -88q-25 -93 -25 -142z" />
+<glyph unicode="f&#xfe;" horiz-adv-x="701" d="M-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q2 19 11 64q14 62 38 101.5t67 75.5q62 53 128 53 q29 0 50 -16q9 -6 9.5 -6t9.5 4l16.5 8.5t17.5 9.5t9 4q12 0 12 -10q0 -27 -8 -74q-36 -225 -86 -467q43 107 100 194q37 57 99 57q44 0 60 -23.5t16 -67.5q0 -110 -74 -204t-151 -94q-11 0 -32 3.5t-24 3.5q-12 0 -13 -8l-32 -209q-4 -23 9 -24q16 -2 40 -4 q14 -1 19.5 -1.5t11 -2t7 -4t1.5 -6.5q0 -14 -4.5 -17.5t-15.5 -3.5q-1 0 -27 3.5t-67.5 7t-79.5 3.5q-17 0 -17 10q0 14 3.5 18t15.5 4h16q12 0 16 3.5t6 17.5q26 137 43 243l35 208q49 279 60 388q-14 -4 -18 -6q-8 -4 -21 -4q-12 0 -42 16q-18 9 -24 9q-14 0 -37 -16 q-74 -53 -91 -248q0 -5 8 -5h82q5 0 5 -2q0 -8 -2 -14q-2 -9 -7 -9h-80q-7 0 -7.5 -1t-2.5 -10q-2 -13 -13 -91.5l-23.5 -163.5t-20.5 -135q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5 q-24 0 -46 12.5t-22 23.5zM396 51q0 -32 64 -32q33 0 69.5 42.5t60.5 103.5t24 113q0 64 -44 64q-15 0 -29.5 -9.5t-29 -30t-22.5 -34t-22 -41.5l-16 -32q-55 -105 -55 -144z" />
+<glyph unicode="ff&#xfe;" horiz-adv-x="948" d="M-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q6 51 24 102q26 71 86.5 128t140.5 57q39 0 75 -21 q21 -12 25 -25l1 -9l1 1q2 1 5 3.5t5 4.5q62 53 128 53q29 0 50 -16q9 -6 9.5 -6t9.5 4l16.5 8.5t17.5 9.5t9 4q12 0 12 -10q0 -27 -8 -74q-36 -225 -86 -467q43 107 100 194q37 57 99 57q44 0 60 -23.5t16 -67.5q0 -110 -74 -204t-151 -94q-11 0 -32 3.5t-24 3.5 q-12 0 -13 -8l-32 -209q-5 -23 9 -24q16 -2 40 -4q14 -1 19.5 -1.5t11 -2t7 -4t1.5 -6.5q0 -14 -4.5 -17.5t-15.5 -3.5q-1 0 -27 3.5t-67.5 7t-79.5 3.5q-17 0 -17 10q0 14 3.5 18t15.5 4h16q12 0 16 3.5t6 17.5q26 137 43 243l35 208q49 279 60 388q-14 -4 -18 -6 q-8 -4 -21 -4q-12 0 -42 16q-18 9 -24 9q-14 0 -37 -16q-74 -53 -91 -248q0 -5 8 -5h82q5 0 5 -2q0 -8 -2 -14q-1 -9 -7 -9h-80q-6 0 -7 -1t-2 -7q-1 -2 -1 -3l-48 -320q-9 -56 -34.5 -116.5t-64.5 -95.5q-48 -43 -91 -43q-23 0 -44 9.5t-21 19.5q0 13 16.5 26t30.5 13 q12 0 36.5 -7.5t41.5 -7.5q11 0 20.5 7t16.5 22.5t12 28.5t9.5 37l6.5 35t5 34.5t3 25.5q42 290 42 332q0 11 -4 11h-170q-7 0 -7.5 -1t-2.5 -10q-2 -13 -13 -91.5l-23.5 -163.5t-20.5 -135q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5 t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5q-24 0 -46 12.5t-22 23.5zM189 377q0 -5 8 -5h167q7 0 8 1.5t2 10.5q2 19 11 64q21 92 73 147q5 5 4.5 5.5t-8.5 -2.5q-6 -3 -12 -3q-20 0 -43 19q-39 30 -60 30q-43 0 -77 -37t-48 -88q-25 -93 -25 -142zM643 51q0 -32 64 -32 q33 0 69.5 42.5t60.5 103.5t24 113q0 64 -44 64q-15 0 -29.5 -9.5t-29 -30t-22.5 -34t-22 -41.5l-16 -32q-55 -105 -55 -144z" />
+<glyph unicode=" "  horiz-adv-x="200" />
+<glyph unicode="&#x09;" horiz-adv-x="200" />
+<glyph unicode="&#xa0;" horiz-adv-x="200" />
+<glyph unicode="!" horiz-adv-x="220" d="M65 38q0 19 15.5 35.5t30.5 16.5q14 0 29 -16t15 -31q0 -23 -14.5 -37t-25.5 -14q-19 0 -34.5 16.5t-15.5 29.5zM102 150q0 23 20 183q27 211 34 302q1 22 29 22h5q25 0 25 -17q0 -2 -2 -12q-33 -148 -86 -477q-1 -5 -12 -5q-13 0 -13 4z" />
+<glyph unicode="&#x22;" horiz-adv-x="261" d="M30 511q0 1 2 32.5l4.5 68.5t3.5 47q4 29 32 29q29 0 29 -25q0 -4 -2 -14l-12.5 -43l-17.5 -57.5t-10 -32.5q-1 -3 -2 -7t-1.5 -5l-1.5 -3t-2.5 -2.5t-3.5 -1t-6 -0.5q-12 0 -12 14zM160 511q0 1 2 32.5l4.5 68.5t3.5 47q4 29 32 29q29 0 29 -25q0 -4 -2 -14l-12.5 -43 l-17.5 -57.5t-10 -32.5q-1 -3 -2 -7t-1.5 -5l-1.5 -3t-2.5 -2.5t-3.5 -1t-6 -0.5q-12 0 -12 14z" />
+<glyph unicode="#" horiz-adv-x="442" d="M30 169v4q0 8 2 10.5t9 2.5h73q5 0 5.5 1t1.5 6q16 115 16 126q0 4 -5 4h-95q-7 0 -7 13v6q0 11 7 11h100q9 0 9 6l21 148q2 16 3 18q4 6 6.5 6.5t14.5 0.5q19 0 19 -11q0 -3 -12.5 -81t-12.5 -82q0 -5 6 -5h90q7 0 8 7q25 161 26 165q3 7 14 7q24 0 24 -10 q0 -5 -12 -82.5t-12 -81.5q0 -5 4 -5h64q10 0 12.5 -2.5t2.5 -13.5q0 -10 -3 -12t-10 -2h-72q-6 0 -6 -5q-19 -120 -19 -126t7 -6h92q7 0 9 -3t2 -14q0 -10 -2.5 -12t-11.5 -2h-86q-15 -2 -15 -5q-21 -150 -22 -152q0 -1 -1 -3q-1 -5 -21 -5h-10.5t-5 1.5l-2 2t0 4t0.5 5.5 q0 4 11 74.5t11 73.5q0 4 -7 4h-86q-11 -2 -12 -5q-21 -150 -22 -152q-4 -7 -9 -8h-13q-11 0 -14.5 2.5t-3.5 10.5q0 4 11 74.5t11 73.5q0 4 -3 4h-68q-8 0 -10 3t-2 11zM158 193q0 -5 9 -5h90q7 0 7 6l9.5 67t7 44t2.5 16q0 4 -7 4h-90q-6 0 -8 -5v-1q-2 -16 -7.5 -47.5 t-9 -53.5t-3.5 -25z" />
+<glyph unicode="$" horiz-adv-x="500" d="M50 128q0 8 12.5 17t20.5 9q2 0 6 -8.5l11.5 -25.5t14.5 -29q25 -44 52 -58q16 -8 29 -8q6 0 7 11l32 234q2 11 1 15.5t-8 8.5q-35 21 -52.5 33.5t-41.5 35t-35 49t-11 58.5q0 73 54 115t126 42q12 0 13 10l5 36q1 9 8 9h9q7 0 6 -9l-5 -36q-1 -11 3 -12q1 -1 3 -1 q60 -10 94 -53t34 -75q0 -25 -18 -25q-9 0 -18.5 9t-11.5 20q-1 6 -4 22t-5.5 26t-6.5 16q-26 35 -63 41q-11 2 -12 -3l-32 -247q-2 -16 4 -20q73 -47 95 -70q50 -50 50 -120q0 -66 -52 -105t-133 -39q-9 0 -10 -4q-1 -1 -2 -11l-14 -122q-1 -6 -6 -6h-17q-5 0 -4 7l18 121 q1 4 1 10t-2 7.5t-11 3.5q-2 1 -3 1q-58 12 -94.5 51t-36.5 69zM141 485q0 -36 26.5 -72t62.5 -55q6 -4 8 -4q6 0 7 14l31 234q1 6 -4 6q-49 0 -90 -35t-41 -88zM227 25q0 -6 18 -6q50 2 82.5 35.5t32.5 90.5q0 38 -27 73t-67 54l-6 3q-1 0 -3 -9l-29 -228q-1 -6 -1 -13z " />
+<glyph unicode="%" horiz-adv-x="657" d="M50 362q0 62 52.5 131.5t124.5 69.5q40 0 71 -31q24 -24 58 -24q46 0 93 28q17 10 31.5 22t35.5 33.5l22 22.5t4.5 5t7.5 8l3 4q6 0 12 -4t6 -8q0 -3 -5 -11q-360 -527 -434 -643q-4 -6 -19 -6q-16 0 -16 10q0 2 2 6l80 114l169.5 245.5t112.5 170.5q9 15 8 16 q-2 1 -8 -2q-47 -28 -105 -28q-16 0 -35 3v-16v-14q0 -17 -1 -25q-6 -72 -57.5 -130.5t-112.5 -58.5q-47 0 -73.5 32t-26.5 80zM99 336q0 -29 13.5 -50t40.5 -21q51 0 95 58.5t44 137.5q0 70 -52 70q-46 0 -93.5 -64t-47.5 -131zM336 103q0 71 56 137t125 66q42 0 66 -29.5 t24 -79.5q0 -79 -53 -142.5t-118 -63.5q-47 0 -73.5 31.5t-26.5 80.5zM385 78q0 -30 13 -50.5t41 -20.5q51 0 95 58.5t44 136.5q0 71 -53 71q-45 0 -92.5 -64t-47.5 -131z" />
+<glyph unicode="&#x26;" horiz-adv-x="693" d="M35 201q0 32 9.5 60t23.5 46t27.5 31t23 20.5t9.5 9.5q0 1 -11 13t-22.5 36.5t-11.5 58.5q0 69 44 118t119 49q40 0 78 -16q37 -16 37 -41q0 -31 -21 -52q-3 -3 -5 -3.5t-4.5 1t-4 2.5t-4.5 4.5t-3 4.5q-40 43 -97 43q-43 0 -75.5 -34t-32.5 -78q0 -36 17.5 -63t41.5 -27 q13 0 30 2.5t25 2.5q19 0 19 -12q0 -16 -23 -29.5t-38 -13.5q-10 0 -25 7l-15 7q-5 0 -17 -8t-26 -34t-14 -64q0 -86 59 -137.5t146 -51.5q34 0 68 10.5t66.5 33.5t52.5 66.5t20 101.5q0 59 -12 64q-76 28 -114 28q-29 0 -47 -15t-18 -42q0 -7 1.5 -13t3 -10.5t5.5 -9 t6.5 -7t8.5 -5t8.5 -4t10 -3.5l9.5 -2.5t10.5 -2t9.5 -1.5q16 -3 16 -9q0 -8 -10.5 -15.5t-20.5 -7.5q-11 0 -25 4q-28 9 -41.5 30.5t-13.5 38.5q0 58 39.5 90.5t94.5 32.5q21 0 88 -23.5t107 -23.5q25 0 40.5 15.5t15.5 40.5q0 63 -84 63q-11 0 -11 7q0 15 12 25t25 10 q39 0 58.5 -28.5t19.5 -60.5q0 -38 -17 -65q-15 -24 -44 -39t-52 -15q-25 0 -37 3q-5 2 -9 1t-4 -8q0 -3 0.5 -14.5t0.5 -16.5q0 -32 -9 -68.5t-30 -75.5t-51.5 -70t-78.5 -51t-106 -20q-103 0 -162 59t-59 150z" />
+<glyph unicode="'" horiz-adv-x="131" d="M30 511q0 1 2 32.5l4.5 68.5t3.5 47q4 29 32 29q29 0 29 -25q0 -4 -2 -14l-12.5 -43l-17.5 -57.5t-10 -32.5q-1 -3 -2 -7t-1.5 -5l-1.5 -3t-2.5 -2.5t-3.5 -1t-6 -0.5q-12 0 -12 14z" />
+<glyph unicode="(" horiz-adv-x="319" d="M60 285q0 73 19 142t45 114.5t53.5 80.5t45.5 51t20 16q6 0 11 -4t5 -9l-8 -8q-8 -9 -20.5 -25.5t-27.5 -39t-30 -54.5t-27.5 -68.5t-20.5 -84.5t-8 -99q0 -79 14 -150t34.5 -117.5t41 -80.5t34.5 -53t14 -22q0 -14 -16 -14q-4 0 -22.5 21.5t-45 62.5t-51.5 91.5 t-42.5 117.5t-17.5 132z" />
+<glyph unicode=")" horiz-adv-x="319" d="M60 -127l8 9q8 8 20.5 24.5t27.5 39t30 54.5t27.5 68.5t20.5 84.5t8 99q0 79 -14 150t-34.5 117.5t-41 80.5t-34.5 53t-14 22q0 14 16 14q4 0 22.5 -21.5t45 -62.5t51.5 -91.5t42.5 -117.5t17.5 -132q0 -73 -19 -142t-45 -114.5t-53.5 -80.5t-45.5 -51t-20 -16 q-6 0 -11 4t-5 9z" />
+<glyph unicode="*" horiz-adv-x="391" d="M30 447q0 21 23 31q10 4 48.5 17.5t52.5 19.5q19 7 19 13q0 4 -15 15q-6 5 -42.5 28t-45.5 32q-13 15 -13 29q0 11 7.5 19t20.5 8q18 0 31 -15q7 -8 18 -25l24 -39l18 -30q8 -13 11 -13q2 0 8 13q4 9 12.5 34t16 45t12.5 27q13 19 32 19q11 0 19 -9t8 -19q0 -13 -9 -26 q-8 -12 -39 -39.5t-39 -35.5q-10 -12 -10 -15q0 -6 18 -7q8 -1 56 -2t60 -5q29 -10 29 -31q0 -14 -9.5 -21.5t-22.5 -7.5q-7 0 -15 3t-46.5 22.5t-51.5 25.5q-12 6 -16 6q-5 0 -5 -4t3 -14q2 -10 15.5 -52.5t13.5 -56.5q0 -15 -7.5 -27t-22.5 -12q-16 0 -24.5 12t-8.5 26 q0 11 8 52.5t10 53.5q1 4 1 10q0 11 -4 11q-6 0 -17 -11l-36 -37.5t-41 -37.5q-12 -7 -25 -7t-21.5 7.5t-8.5 19.5z" />
+<glyph unicode="+" horiz-adv-x="527" d="M31 212q0 8 0.5 11.5t4.5 6t13 2.5h170q22 0 22 19v176q0 7 2.5 10.5t6 4t12.5 0.5t13 -0.5t7.5 -5.5t3.5 -14v-163q0 -27 17 -27h177q8 0 11.5 -2.5t4 -6t0.5 -12.5q0 -14 -3 -18.5t-18 -4.5h-172q-12 0 -14.5 -4t-2.5 -14v-175q0 -11 -5 -14t-15 -3q-16 0 -20.5 2.5 t-4.5 15.5v174q0 12 -4.5 15t-19.5 3h-169q-12 0 -14.5 5t-2.5 19z" />
+<glyph unicode="," horiz-adv-x="195" d="M7 -127q0 1 6 5.5t17 13.5t20 18q48 48 48 79q0 15 -15 35q-6 8 -16.5 18.5t-16 16.5t-5.5 9q0 6 20.5 17t32.5 11q13 0 35 -24t22 -56q0 -28 -32 -69t-63.5 -68t-35.5 -27t-10.5 8t-6.5 13z" />
+<glyph unicode="-" horiz-adv-x="268" d="M30 201q0 12 6 25.5t12 14.5t91.5 4t91.5 3q2 0 2 -9q0 -33 -8 -33q-104 -8 -191 -8q-4 0 -4 3z" />
+<glyph unicode="." horiz-adv-x="210" d="M60 38q0 19 15.5 35.5t30.5 16.5q14 0 29 -16t15 -31q0 -23 -14.5 -37t-25.5 -14q-19 0 -34.5 16.5t-15.5 29.5z" />
+<glyph unicode="/" horiz-adv-x="406" d="M10 -220q0 2 19 57q315 843 317 850q4 11 9.5 14.5t19.5 3.5q21 0 21 -12q0 -8 -14 -44l-314 -851q-8 -22 -13.5 -26.5t-18.5 -4.5q-26 0 -26 13z" />
+<glyph unicode="0" horiz-adv-x="500" d="M62 164q0 86 57.5 144t144.5 58q79 0 127 -48.5t48 -119.5q0 -85 -58 -144t-141 -59q-76 0 -127 46.5t-51 122.5zM107 156q0 -62 34.5 -95.5t89.5 -33.5q62 0 111 51.5t49 128.5q0 59 -36 94t-91 35q-63 0 -110 -57.5t-47 -122.5z" />
+<glyph unicode="1" horiz-adv-x="500" d="M130 12q0 7 2.5 10t11.5 3h40h5t3 1.5t1.5 2t1 3.5t0.5 5q9 47 21.5 122t20.5 129t8 58q0 11 -3 11q-1 1 -5 1h-53q-11 0 -11 13q0 8 1.5 11t9.5 3q9 0 44.5 -1t48.5 -1t47 1t43 1q8 0 9.5 -2.5t1.5 -11.5q0 -7 -2.5 -10t-11.5 -3h-39q-8 0 -9.5 -2t-3.5 -10 q-30 -197 -45 -309q-1 -7 2 -9.5t11 -2.5h50q11 0 11 -13q0 -8 -1.5 -11t-9.5 -3q-9 0 -46 1t-50 1t-48.5 -1t-44.5 -1q-8 0 -9.5 2.5t-1.5 11.5z" />
+<glyph unicode="2" horiz-adv-x="500" d="M54 11q0 7 12 17q13 12 69.5 50.5t86.5 65.5q73 65 73 122q0 40 -22.5 66.5t-61.5 26.5q-29 0 -58 -20.5t-46 -40.5l-17 -20q-5 0 -11.5 5.5t-6.5 10.5q0 7 22.5 30t64 46.5t80.5 23.5q61 0 93 -30t32 -84q0 -86 -197 -201q-28 -16 -28 -20q0 -1 7 -1h248q6 0 20 24 t15 24q4 0 11 -3t7 -5q0 -3 -7 -17l-18 -36.5t-18 -38.5q-2 -6 -11 -6h-324q-15 0 -15 11z" />
+<glyph unicode="3" horiz-adv-x="500" d="M56 -146q0 12 35 12q24 0 34 -11q37 -44 80 -44q55 0 99.5 47.5t44.5 106.5q0 56 -37.5 83.5t-103.5 27.5q-12 0 -33 -1.5t-22 -1.5q-17 0 -17 11t3 14t16 7q172 49 172 167q0 39 -22.5 63t-60.5 24q-29 0 -55 -8.5t-40.5 -17.5t-15.5 -9q-4 0 -7.5 6t-3.5 11q0 4 21 15 t55.5 21t64.5 10q55 0 88.5 -27.5t33.5 -78.5q0 -27 -12.5 -52t-30.5 -42t-36.5 -29.5t-31 -19.5t-12.5 -8t16 -4t38 -11t44.5 -22.5t38.5 -44t16 -69.5q0 -78 -68 -135.5t-152 -57.5q-34 0 -62.5 8t-44 20t-24 22.5t-8.5 17.5z" />
+<glyph unicode="4" horiz-adv-x="500" d="M46 8q0 21 44 78l18 20t16 18q34 41 163 174q15 17 55 55.5t48 38.5q14 0 10 -24l-50 -296q-2 -13 1 -15.5t14 -2.5h83q7 0 7 -10v-34q0 -8 -1.5 -9t-10.5 -1h-97q-9 0 -10 -1t-2 -7q-1 -4 -1 -6q-3 -27 -9 -71l-10 -75t-4 -33q0 -5 -2.5 -7t-12.5 -4l-42 -8q-6 -1 -11 4 t-3 17l34 180q2 4 1 6t-1.5 3.5t-3 2t-4 0t-5.5 -0.5h-7h-189q-18 0 -18 8zM102 60q0 -6 25 -6h147q13 0 15 2.5t4 17.5l35 216q1 8 -3 9.5t-9 -4.5l-197 -210q-17 -17 -17 -25z" />
+<glyph unicode="5" horiz-adv-x="500" d="M58 -199q0 10 7 10q42 3 79.5 14t72.5 31.5t55.5 56t20.5 82.5q0 38 -26.5 71.5t-58.5 52.5l-58.5 36t-26.5 25q0 6 11 36l28.5 76.5t27.5 79.5q2 6 15 6q4 0 83 -7.5t85 -7.5q20 0 24 4l2 4l12 24q6 0 13 -2.5t7 -5.5q0 -1 -25 -68q-6 -16 -11 -18q-3 -1 -9 -1t-28 3 t-62 9t-72 10q-23 2 -28 -7q-12 -24 -23 -55.5t-11 -37.5q0 -4 20 -14.5t48 -27.5t56.5 -39.5t48.5 -57.5t20 -74q0 -65 -48 -117.5t-113.5 -78t-127.5 -25.5q-8 0 -8 13z" />
+<glyph unicode="6" horiz-adv-x="500" d="M55 187q0 107 56 204.5t138 169.5q54 47 112 76.5t75 29.5q10 0 10 -19q0 -3 -8 -6q-81 -32 -130 -80q-94 -91 -135 -173q-14 -30 -14 -36q0 -1 6.5 0t20.5 4q37 7 65 7q79 0 125.5 -45t46.5 -128q0 -89 -58.5 -142.5t-142.5 -53.5q-32 0 -59.5 8.5t-53 29t-40 60 t-14.5 94.5zM116 173q0 -31 8.5 -62t37 -59t71.5 -28q54 0 87.5 51.5t33.5 121.5q0 146 -120 146q-19 0 -48 -6.5t-35 -14.5q-35 -47 -35 -149z" />
+<glyph unicode="7" horiz-adv-x="500" d="M65 286q0 4 6 20t14 43.5t13 54.5q3 20 12 20q17 0 17 -9q0 -3 -1 -9.5t-1 -10.5q0 -2 51 -2h268q13 0 13 -9q0 -6 -41.5 -76.5l-100 -166l-73.5 -121.5q-80 -137 -109 -215q-5 -15 -12 -15q-11 0 -21 6t-10 14q0 28 56 122.5t143.5 226t102.5 155.5q5 8 5 13q0 8 -14 8 h-193q-82 0 -85 -9l-13 -40q-6 -8 -10 -9q-17 0 -17 9z" />
+<glyph unicode="8" horiz-adv-x="500" d="M70 130q0 34 14.5 66t35 54.5t41.5 39.5t35.5 27t14.5 12q0 1 -10.5 10.5t-25 25t-29 35.5t-25 47t-10.5 53q0 71 48 116t124 45q62 0 99.5 -35.5t37.5 -98.5q0 -29 -13.5 -58t-33 -49.5t-38.5 -37t-32.5 -26.5t-13.5 -12q0 -1 11.5 -11.5t27.5 -28.5t32.5 -40t28 -53 t11.5 -61q0 -67 -52.5 -110t-129.5 -43q-68 0 -108 33.5t-40 99.5zM124 145q0 -55 30.5 -89t72.5 -34q48 0 81 35.5t33 82.5q0 22 -11.5 48.5t-27.5 48t-33.5 39.5t-29.5 28.5t-14 10.5q-7 0 -30 -20.5t-47 -62.5t-24 -87zM164 534q0 -36 25.5 -79.5t51 -69.5t30.5 -26 q7 0 30.5 21.5t46.5 62.5t23 82q0 48 -28 80.5t-74 32.5q-48 0 -76.5 -32t-28.5 -72z" />
+<glyph unicode="9" horiz-adv-x="500" d="M42 -185q0 2 32 13q114 40 235 186q20 23 20 32q-2 1 -5 0.5t-12 -4t-12 -4.5q-41 -13 -74 -13q-62 0 -100 45.5t-38 121.5q0 89 62 145.5t146 56.5q70 0 109.5 -52.5t39.5 -138.5q0 -77 -39 -150.5t-101 -125.5q-49 -41 -111.5 -74t-99 -45.5t-43.5 -12.5q-9 0 -9 20z M147 173q0 -55 26.5 -88t79.5 -33q44 0 74 13q25 11 42.5 64t17.5 111q0 61 -25.5 94.5t-66.5 33.5q-66 0 -107 -60.5t-41 -134.5z" />
+<glyph unicode=":" horiz-adv-x="209" d="M60 38q0 19 15.5 35.5t30.5 16.5q14 0 29 -16t15 -31q0 -23 -14.5 -37t-25.5 -14q-19 0 -34.5 16.5t-15.5 29.5zM89 313q0 19 15.5 35.5t30.5 16.5q14 0 29 -16t15 -31q0 -23 -14.5 -37t-25.5 -14q-19 0 -34.5 16.5t-15.5 29.5z" />
+<glyph unicode=";" horiz-adv-x="195" d="M7 -127q0 1 6 5.5t17 13.5t20 18q48 48 48 79q0 15 -15 35q-6 8 -16.5 18.5t-16 16.5t-5.5 9q0 6 20.5 17t32.5 11q13 0 35 -24t22 -56q0 -28 -32 -69t-63.5 -68t-35.5 -27t-10.5 8t-6.5 13zM80 313q0 19 15.5 35.5t30.5 16.5q14 0 29 -16t15 -31q0 -23 -14.5 -37 t-25.5 -14q-19 0 -34.5 16.5t-15.5 29.5z" />
+<glyph unicode="&#x3c;" horiz-adv-x="527" d="M41 211q0 6 0.5 8.5t4 5.5t10.5 6l361 132q48 18 51 18q19 0 19 -25q0 -10 -16 -16l-315 -111q-42 -15 -42 -21q0 -3 42 -18l320 -112q11 -4 11 -13q0 -8 -6 -16t-18 -8q-3 0 -408 147q-10 4 -12 8t-2 15z" />
+<glyph unicode="=" horiz-adv-x="527" d="M31 134q0 8 0.5 11.5t4.5 6.5t13 3h431q8 0 11.5 -2.5t4 -6t0.5 -12.5q0 -14 -3 -19t-18 -5h-427q-9 0 -12.5 3t-4 6.5t-0.5 14.5zM31 290q0 8 0.5 11.5t4.5 6t13 2.5h431q8 0 11.5 -2.5t4 -6t0.5 -12.5q0 -14 -3 -18.5t-18 -4.5h-427q-9 0 -12.5 3t-4 6.5t-0.5 14.5z " />
+<glyph unicode="&#x3e;" horiz-adv-x="527" d="M41 65q0 10 10 13l321 112q42 15 42 18q0 6 -42 21l-316 111q-15 6 -15 16q0 25 18 25q3 0 51 -18l361 -132q16 -6 16 -20q0 -11 -2.5 -15t-12.5 -8q-405 -147 -408 -147q-12 0 -17.5 8t-5.5 16z" />
+<glyph unicode="?" horiz-adv-x="374" d="M80 38q0 19 15.5 35.5t30.5 16.5q14 0 29 -16t15 -31q0 -23 -14.5 -37t-25.5 -14q-19 0 -34.5 16.5t-15.5 29.5zM84 206q0 44 65 109l42.5 41l45.5 44t37 39.5t29.5 41t9.5 34.5q0 21 -11 41.5t-26 29.5q-22 14 -89 14q-13 0 -45 -1.5t-35 -1.5t-5 1t-3 3.5l-2 5t-1 6.5 t-0.5 7t-0.5 8v8q-1 9 3 11.5t15 4.5q30 5 64 5q60 0 90 -19q33 -21 52.5 -59.5t19.5 -77.5q0 -31 -7.5 -53.5t-13.5 -30.5t-28 -32q-16 -18 -105 -107q-1 -1 -17.5 -16.5t-24 -24t-16.5 -22t-9 -23.5q0 -11 7 -23.5t14 -20.5t7 -9q0 -3 -5 -8t-9 -5q-3 0 -14.5 11t-22.5 31 t-11 38z" />
+<glyph unicode="@" horiz-adv-x="795" d="M50 187q0 110 61 203.5t157 145.5t200 52q56 0 103.5 -13t87.5 -41t63 -76.5t23 -113.5q0 -69 -31.5 -126t-81.5 -91.5t-108 -53.5t-115 -19q-35 0 -35 22l6 47q-7 -8 -18.5 -19t-43 -29.5t-56.5 -18.5q-28 0 -43 24t-15 59q0 36 31.5 95t92 110t126.5 51q8 0 20 -3 l11 -3q1 0 14 15q13 16 28 16q25 0 25 -13q0 -8 -3 -14q-110 -237 -110 -278q0 -11 0.5 -16t5.5 -10t14 -5q42 0 93 25t95 69q68 68 68 159q0 112 -66.5 167.5t-177.5 55.5q-157 0 -272 -108.5t-115 -270.5q0 -119 80.5 -192t191.5 -73q97 0 169.5 32.5t140.5 95.5q8 8 13 8 q6 0 10 -5.5t4 -8.5q0 -7 -4 -11q-62 -67 -150 -103.5t-186 -36.5q-125 0 -214 80t-89 220zM271 147q0 -18 11.5 -32t30.5 -14q31 0 67.5 57.5t58 116t21.5 75.5q0 11 -10 17.5t-22 6.5q-42 0 -99.5 -75.5t-57.5 -151.5z" />
+<glyph unicode="A" horiz-adv-x="688" d="M20 15q0 9 3 10.5t15 1.5h33q3 0 72 118l155.5 266t121.5 199q4 5 22.5 24.5t28.5 38.5q7 14 15 14q3 0 5 -1l3 -1.5t2 -3t1 -3.5t1 -5t1 -5q104 -641 116 -641h42q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5t-50.5 1.5q-16 0 -58 -1.5t-53 -1.5 q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h57q2 0 2 11q0 24 -13.5 121t-14.5 103q-1 14 -4 16.5t-14 2.5h-189q-15 0 -23 -15q-121 -227 -121 -238l1 -1h68q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -48.5 1.5t-53.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5z M284 311q0 -6 18 -6h167q13 0 13 5q0 7 -11 74l-22 131t-12 64q-3 0 -13 -19l-133 -234q-7 -12 -7 -15z" />
+<glyph unicode="B" horiz-adv-x="571" d="M20 15q0 9 3 10.5t15 1.5h43q78 514 82 595q1 9 -1 11.5t-9 2.5h-55q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l51 -1q50 -2 71 -2q16 0 60.5 1.5t49.5 1.5q198 0 198 -149q0 -29 -10.5 -54.5t-27.5 -43t-38 -32t-41.5 -23t-37.5 -14.5t-28 -9l-10 -3l20 -3 q21 -2 50 -11.5t58 -26t49.5 -51t20.5 -80.5q0 -168 -289 -168q-11 0 -47.5 1.5t-52.5 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5zM166 48q0 -10 6 -13t25 -4h3q14 -1 45 -1q92 0 145.5 37.5t53.5 113.5q0 71 -50.5 106.5t-131.5 35.5h-31q-19 0 -23 -2t-6 -10 q-8 -36 -35 -251q-1 -5 -1 -12zM208 364q-2 -17 2 -19q3 -1 10 -1h16h21t20.5 -0.5t9.5 -0.5q21 0 55 17q100 51 100 141q0 62 -41 99t-110 37h-16q-16 0 -22 -5.5t-10 -25.5q-9 -56 -35 -242z" />
+<glyph unicode="C" horiz-adv-x="686" d="M35 291q0 160 108 270t255 110q62 0 120 -24.5t92 -62.5l12 41q8 0 18.5 -3.5t10.5 -7.5q0 -3 -7.5 -41l-17 -84t-10.5 -54q-1 -5 -13 -5q-9 0 -16 4t-7 7q0 1 11.5 46.5t11.5 50.5t-28 29.5t-79 50t-99 25.5q-75 0 -139 -56t-98.5 -137t-34.5 -162q0 -123 69.5 -195.5 t172.5 -72.5q47 0 91 16.5t67 33.5t26 26q10 29 25 84q3 9 8 10.5t15 -1.5q17 -4 17 -11q0 -6 -33 -116q-5 -18 -81.5 -47t-141.5 -29q-64 0 -119.5 16.5t-103 50.5t-75 95t-27.5 143z" />
+<glyph unicode="D" horiz-adv-x="742" d="M19 10q0 11 3 13t14 2h43q5 0 42.5 261.5t45.5 338.5q2 11 -4 11l-70 -2q-5 0 -7.5 0.5t-4 3t-1.5 8.5v6t0.5 4.5t2 3.5t4 1.5t6.5 0.5h24t51.5 -0.5t43.5 -0.5q33 0 75.5 1t56.5 1q165 0 261.5 -80t96.5 -248q0 -158 -102 -247.5t-248 -91.5q-32 0 -112 2t-113 2 q-16 0 -55 -2t-42 -2q-8 0 -9.5 2t-1.5 12zM171 46q0 -13 6 -17t59 -4q97 0 170 27t111 64t61.5 88t29.5 87.5t6 73.5q0 123 -74.5 196.5t-223.5 73.5q-49 0 -63 -4l-9 -56l-20 -137.5l-24 -165t-20.5 -148.5t-8.5 -78z" />
+<glyph unicode="E" horiz-adv-x="579" d="M20 15q0 9 3 10.5t15 1.5h43q83 519 83 599q0 10 -3 10h-55q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l47 -1q46 -2 67 -2q28 0 108.5 1.5t100.5 1.5q55 0 74.5 2.5t20.5 10.5q1 12 13 12q11 0 14 -2t3 -9q0 -4 -4 -41t-5 -84q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 3 36 t3 37q0 7 -263 7q-5 0 -41 -269q-2 -11 -0.5 -14t14.5 -3h164q45 0 47 13l11 53q1 7 16 7q13 0 13 -6q0 -4 -2.5 -17t-7 -34l-7.5 -36q-7 -39 -15 -89q-1 -7 -13 -7q-17 0 -17 8q1 7 4 23.5t5.5 29t2.5 14.5q0 8 -10 11t-40 3h-151q-9 0 -12 -0.5t-5 -2.5t-3 -7 q-3 -13 -19.5 -129t-19.5 -147q0 -9 7 -9l319 7q4 0 10 16.5t14.5 43t13.5 37.5q4 9 14 9q17 0 17 -11q0 -5 -5.5 -21l-17 -47.5t-19.5 -55.5q-4 -11 -17 -11q-11 0 -179 1.5t-184 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="F" horiz-adv-x="541" d="M20 15q0 9 3 10.5t15 1.5h43q83 519 83 599q0 10 -3 10h-55q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l47 -1q46 -2 67 -2q28 0 108.5 1.5t100.5 1.5q49 0 58 2t11 11q1 12 13 12q11 0 14 -2t3 -9q0 -4 -4 -41t-5 -84q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 3 36t3 37 q0 7 -237 7q-5 0 -41 -270q-2 -8 -0.5 -11.5t3.5 -4t11 -0.5h156q45 0 47 13l8 43q1 7 16 7q13 0 13 -6q0 -1 -14 -77q-3 -14 -5.5 -30.5t-4.5 -31t-2 -17.5q-1 -7 -13 -7q-17 0 -17 8q9 54 9 57q0 8 -10 11t-40 3h-143q-9 0 -12 -0.5t-5 -2.5t-3 -7q-2 -13 -18.5 -130.5 t-20.5 -148.5q-2 -9 8 -9h65q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -47.5 1.5t-52.5 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="G" horiz-adv-x="721" d="M35 266q0 108 51.5 203t138.5 150.5t186 55.5q26 0 51.5 -3.5t46.5 -8.5t39.5 -12t33 -13.5t24.5 -11.5l16 -8l6 -4q1 0 6 27q3 11 11 11q9 0 15.5 -2t5.5 -7q-13 -84 -23 -175l-1.5 -7.5t-4 -4.5t-9.5 -2q-22 0 -18 16q1 5 8.5 49.5t7.5 50.5q0 5 -35.5 24t-87.5 37.5 t-88 18.5q-78 0 -145.5 -57.5t-103.5 -143.5t-36 -173q0 -122 67 -195t165 -73q65 0 111.5 21.5t51.5 40.5q15 55 18 136q1 14 -9 14h-85q-8 0 -8 12q0 18 9 18q16 0 64 -1.5t66 -1.5q17 0 49.5 1.5t53.5 1.5q8 0 8 -14q0 -16 -8 -16h-57q-2 0 -19 -146q-1 -10 -44.5 -33.5 t-116.5 -45t-138 -21.5q-28 0 -59 6t-70.5 26t-70 50.5t-52 85t-21.5 124.5z" />
+<glyph unicode="H" horiz-adv-x="795" d="M20 13q0 9 3 11.5t15 2.5h53q7 0 48 282t41 314q0 16 -9 16h-61q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5q6 0 47.5 -1.5t58.5 -1.5q16 0 53 1.5t48 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-50q-8 0 -47 -270q-2 -11 -0.5 -15t12.5 -4h332q8 0 11 0.5t5.5 3 t3.5 8.5q30 232 30 261q0 16 -9 16h-61q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5q6 0 48 -1.5t59 -1.5q16 0 52.5 1.5t47.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-50q-10 0 -47 -288.5t-37 -310.5q0 -13 8 -13h57q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3 q-11 0 -54.5 1.5t-59.5 1.5t-50 -1.5t-45 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h53q5 0 44 287q1 8 -1.5 10t-13.5 2h-334q-9 0 -12.5 -3t-4.5 -13q-32 -235 -32 -270q0 -13 8 -13h59q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -54 1.5t-59 1.5t-53.5 -1.5 t-48.5 -1.5q-9 0 -11.5 3t-2.5 13z" />
+<glyph unicode="I" horiz-adv-x="377" d="M20 15q0 9 3 10.5t15 1.5h60q5 0 47 279t42 317q0 16 -9 16h-66q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5q6 0 52 -1.5t63 -1.5q16 0 57 1.5t52 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-57q-9 0 -48.5 -275.5t-39.5 -323.5q0 -13 8 -13h66q8 0 9.5 -2 t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -58 1.5t-63 1.5t-59 -1.5t-54 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="J" horiz-adv-x="365" d="M-58 -188q0 23 28.5 43.5t38.5 20.5q7 0 24 -10.5t28 -10.5q6 0 11.5 2.5t9.5 8.5t7 12t5.5 16.5t4.5 18t3.5 21t2.5 20.5t2 21.5t2 19.5q11 106 30.5 260l33.5 257t14 109q0 18 -10 18h-68q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 56 -1.5t67 -1.5 q16 0 52 1.5t47 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-50q-5 0 -20 -101t-34.5 -253.5t-19.5 -154.5q-16 -121 -35 -173q-23 -62 -64 -105q-60 -64 -109 -64q-19 0 -36 7t-17 17z" />
+<glyph unicode="K" horiz-adv-x="656" d="M20 13q0 9 3 11.5t15 2.5h33q7 0 50.5 282t43.5 314q0 16 -9 16h-57q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5q6 0 45.5 -1.5t56.5 -1.5q16 0 48 1.5t43 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-35q-10 0 -33 -127t-25 -154q-2 -20 13 -20h50 q8 0 93 108.5t130 171.5q10 15 10 16q0 5 -15 5h-21q-7 0 -10.5 0.5t-6 4t-2.5 10.5t2.5 10.5t5.5 4t11 0.5q6 0 29 -1.5t40 -1.5q16 0 42.5 1.5t37.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-58q-82 -110 -218 -261q-3 -3 -6 -6.5t-5.5 -5.5t-4 -4t-1.5 -3 q0 -3 9 -12q24 -22 56 -60.5t56 -70l66 -89.5l61 -83q12 -17 35 -17h28q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -54.5 1.5t-59.5 1.5t-41.5 -1.5t-36.5 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h8q20 0 20 7q0 4 -12 20q-187 266 -196 266h-46h-8 t-4.5 -2.5t-3.5 -7.5q-4 -33 -14.5 -101t-16.5 -112.5t-6 -58.5q0 -11 2 -11h69q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -54 1.5t-59 1.5t-43.5 -1.5t-38.5 -1.5q-9 0 -11.5 3t-2.5 13z" />
+<glyph unicode="L" horiz-adv-x="586" d="M20 15q0 9 2.5 10.5t14.5 1.5h52q1 0 20 142.5l38 292t19 164.5q0 13 -2 13h-58q-10 0 -13 2.5t-3 12.5t3.5 12.5t16.5 2.5q6 0 43.5 -1.5t54.5 -1.5q16 0 57.5 1.5t52.5 1.5q12 0 14.5 -2t2.5 -13q0 -9 -3 -12t-15 -3h-62l-19 -144l-39 -290t-19 -152q0 -22 17 -22 q231 0 291 6q12 1 15 4t8 19l25 77q3 8 11 8q21 0 21 -10q0 -3 -5 -19l-14.5 -47t-17.5 -61q-2 -11 -20 -11q-11 0 -185.5 1.5t-190.5 1.5t-52.5 -1.5t-47.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="M" horiz-adv-x="883" d="M20 15q0 9 3 10.5t15 1.5h48l46 207.5l61 273t26 123.5q0 8 -25 8h-46q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q6 0 50 -1.5t55 -1.5q13 0 29.5 1.5t17.5 1.5q17 0 20 -13l101 -509q5 -24 10 -24t16 24q168 351 252 505q8 14 21 14h44q16 0 45 1.5t40 1.5q10 0 12 -2.5 t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-46l-7 -59l-15.5 -143l-19 -172.5t-16 -155.5t-6.5 -82h77q8 0 10.5 -2t2.5 -11q0 -11 -2 -14t-9 -3q-11 0 -58.5 1.5t-63.5 1.5q-18 0 -56 -1.5t-40 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h39q21 3 80 594 q-188 -358 -253 -497q-9 -20 -19.5 -33t-26.5 -30t-29 -34q-10 -12 -16 -12q-13 0 -16 21q-12 72 -39.5 217l-49.5 255l-22 109q-32 -121 -56 -240q-63 -303 -63 -350h65q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-2 0 -36 1.5t-52 1.5q-17 0 -42 -1.5t-30 -1.5 q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="N" horiz-adv-x="824" d="M20 15q0 9 3 10.5t15 1.5h50q40 245 89 514q1 6 4 22.5t5 29.5t2 21q0 3 -5 12t-10 11t-22 2h-50q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q6 0 53.5 -1.5t58.5 -1.5q13 0 28.5 1.5t16.5 1.5q12 0 20 -13l329 -499q8 -12 16 -12q7 0 39.5 218.5t32.5 263.5q0 12 -2 12h-76 q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q11 0 42 -1.5t47 -1.5t44.5 1.5t39.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-42q-6 0 -80 -467q-10 -60 -16 -168q-1 -15 -4 -20t-12 -5t-28 32q-45 73 -118 180l-256 374q-15 21 -16 21q-4 0 -5 -20q0 -3 -17.5 -117 t-35 -241.5t-17.5 -165.5q0 -15 3 -15h85q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -50.5 1.5t-55.5 1.5q-18 0 -52 -1.5t-35 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="O" horiz-adv-x="734" d="M35 280q0 87 32.5 162t85.5 124.5t119.5 78t134.5 28.5q135 0 213.5 -89t78.5 -236q0 -151 -107 -260.5t-258 -109.5q-62 0 -114.5 17.5t-94.5 53t-66 94.5t-24 137zM127 286q0 -116 57 -200t167 -84q75 0 135.5 60t91 144t30.5 167q0 44 -11 89.5t-33.5 87.5t-62.5 68.5 t-91 26.5q-71 0 -137 -52.5t-106 -136t-40 -170.5z" />
+<glyph unicode="P" horiz-adv-x="570" d="M20 15q0 9 3 10.5t15 1.5h43q83 569 83 599q0 10 -3 10h-55q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l44 -1q44 -2 65 -2q16 0 63 2.5t54 2.5q99 0 154.5 -47.5t55.5 -123.5q0 -44 -14.5 -78.5t-38 -55.5t-56 -35t-65.5 -19.5t-70 -5.5q-16 0 -44.5 1t-31.5 1 q-16 0 -18 -9q-9 -48 -33 -259q-2 -9 8 -9h65q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -47.5 1.5t-52.5 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5zM202 335q0 -12 31 -12q59 0 107.5 15.5t83 54.5t34.5 97q0 74 -42.5 113.5t-124.5 39.5q-44 0 -45 -5 q-22 -138 -42 -284q-2 -18 -2 -19z" />
+<glyph unicode="Q" horiz-adv-x="717" d="M16 -107q0 41 101 41q14 0 38 -2.5t33 -2.5q13 0 23 4q5 2 23.5 11.5l43.5 22t41 19.5q13 6 13 7l-16 2q-17 2 -43 8t-57.5 17t-63.5 34t-58 54.5t-42.5 82.5t-16.5 114q0 90 46.5 174.5t131.5 140t185 55.5q128 0 206 -85.5t78 -214.5q0 -133 -69.5 -227t-174.5 -132 q-13 -5 -27 -9t-25.5 -8.5t-28.5 -12.5q-52 -25 -91 -46q-28 -15 -28 -16t33 -9q265 -72 354 -72q30 0 53 2.5t33.5 5.5t11.5 3q5 0 5 -11q0 -1 -28 -11t-70 -20t-70 -10q-85 0 -184 22t-166 43.5t-75 21.5q-15 0 -37 -9q-35 -13 -49 -13q-33 0 -33 26zM121 290 q0 -134 73 -203.5t174 -69.5q16 0 43 17t58.5 51t59.5 78.5t47 107.5t19 129q0 114 -57.5 180t-152.5 66q-89 0 -176.5 -106.5t-87.5 -249.5z" />
+<glyph unicode="R" horiz-adv-x="625" d="M20 13q0 9 3 11.5t15 2.5h41q19 106 47.5 312t35.5 282q0 15 -3 15h-61q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 17 14q1 0 15 -0.5t38.5 -1.5t53.5 -1q15 0 69.5 3.5t72.5 3.5q87 0 144.5 -45.5t57.5 -116.5q0 -44 -20 -78.5t-48.5 -53t-57 -30t-48.5 -16t-20 -5.5 t7.5 -3.5l24.5 -8t34 -12.5q113 -45 113 -164q0 -6 -1.5 -44t-1.5 -54q0 -11 3 -11h43q12 0 16 -2.5t4 -12.5q0 -15 -8 -15q-2 0 -29.5 0.5t-61.5 1.5t-53 1q-7 0 -5 13q16 94 16 157q0 48 -38 86.5t-97 50.5q-24 5 -71 5h-27q-25 0 -28 -24q-26 -182 -29 -252q0 -9 8 -9h53 q8 0 10.5 -2t2.5 -11q0 -11 -2 -14t-9 -3q-11 0 -42.5 1.5t-47.5 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2t-2 14zM204 350q0 -14 18 -14h7q20 0 43.5 -1.5t26.5 -1.5q53 0 108 50t55 115q0 145 -171 145q-50 0 -50 -5q-3 -25 -18.5 -143t-17.5 -132q-1 -5 -1 -13z" />
+<glyph unicode="S" horiz-adv-x="505" d="M40 67q0 15 17 100q1 3 2.5 11.5t3 15t2.5 7.5t5 1q23 0 23 -10q0 -2 -7.5 -45.5t-7.5 -46.5q0 -18 64.5 -51t122.5 -33q56 0 93 35t37 88q0 42 -31.5 72.5t-76.5 52l-90 45t-76.5 65t-31.5 99.5q0 86 57.5 141t147.5 55q20 0 41 -6t37.5 -14t30 -16t21.5 -14l8 -6l8 32 q2 10 9 10h3q18 -3 18 -7q0 -3 -31 -167q-2 -12 -15 -12q-16 0 -16 12l4 14q4 14 7.5 31t3.5 24q0 2 -6 11.5t-18.5 22.5t-28.5 25t-39.5 20.5t-47.5 8.5q-57 0 -90.5 -36.5t-33.5 -95.5q0 -39 22.5 -67.5t55.5 -44l72.5 -35t72.5 -39t55.5 -57t22.5 -88.5q0 -85 -66 -136.5 t-144 -51.5q-55 0 -106.5 16.5t-77.5 35t-26 28.5z" />
+<glyph unicode="T" horiz-adv-x="681" d="M20 546q0 1 6 16.5t16.5 46.5l20.5 63q3 9 7 11.5t15 2.5q10 0 10 -12v-5q0 -8 106 -8h326q103 0 104 11q1 14 14 14q11 0 13.5 -2t2.5 -9q0 -8 -1.5 -23t-3.5 -44t-4 -63q0 -10 -19 -10q-8 0 -9.5 2.5t-1.5 11.5q0 2 3 38.5t3 39.5q0 6 -107 6h-106q-9 0 -13 -20 l-27 -188l-37 -262t-17 -122q0 -14 8 -14h64q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5q-17 0 -61 -1.5t-50 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h54q10 0 94 569q3 24 3 26q0 11 -6 11h-137q-92 0 -95 -11l-24 -70q-4 -11 -6.5 -14 t-9.5 -3q-19 0 -19 11z" />
+<glyph unicode="U" horiz-adv-x="759" d="M60 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 52.5 1.5t47.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-32q-5 0 -23.5 -98.5t-35 -211.5t-16.5 -148q0 -37 15 -64.5t34.5 -40.5t46 -21t40.5 -9t27 -1q42 0 88.5 16t76.5 35q28 19 39 60 q12 47 32 163q41 241 48 320h-67q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 46.5 -1.5t57.5 -1.5t48 1.5t34 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-32q-8 -38 -22 -118q-62 -378 -95 -490q-7 -25 -19 -25h-5q-9 0 -11 11q-1 10 -2.5 23 t-2 19.5t-1.5 13t-2.5 9t-4.5 2.5t-45 -24q-113 -62 -211 -62q-82 0 -137 42.5t-55 115.5q0 46 33 248.5t33 229.5q0 5 -1 5h-63q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="V" horiz-adv-x="666" d="M20 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 55 1.5t50 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-55q-4 0 -4 -5q0 -26 37.5 -287t42.5 -261q3 0 30 46l69 121l79 145l118 225q4 12 3 14t-9 2h-67h-5.5t-4 0.5t-4 1.5t-2.5 2.5t-1.5 4 t-0.5 6.5q0 11 3 13t14 2q1 0 34 -1.5t65 -1.5q8 0 31 1.5t27 1.5q10 0 12.5 -3t2.5 -15q0 -9 -3 -10.5t-16 -1.5q-15 0 -18 -1t-6 -6l-314 -539q-3 -6 -21 -27.5t-33 -44.5q-22 -33 -37 -33q-8 0 -11.5 10.5t-8.5 50.5q-20 146 -56.5 368t-43.5 222h-40q-6 0 -8 0.5t-5 1.5 t-4 4t-1 9z" />
+<glyph unicode="W" horiz-adv-x="1010" d="M20 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 52 1.5t47 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-53q-4 0 -4 -5q0 -26 35.5 -285.5t40.5 -259.5t88 149l139 255q-18 146 -21 146h-43h-5.5t-4 0.5t-4 1.5t-2.5 2.5t-1.5 4t-0.5 6.5 q0 7 2 10.5t5 4t11 0.5q6 0 37 -1.5t48 -1.5q16 0 67.5 1.5t59.5 1.5q10 0 12.5 -3t2.5 -15q0 -9 -3 -10.5t-16 -1.5h-73q-3 0 -3 -19q0 -14 32 -278.5t36 -264.5q3 0 30 49.5l66.5 127l76 149.5l71 141.5t39.5 78.5q4 12 3 14t-9 2h-64q-6 0 -8 0.5t-5 1.5t-4 4t-1 9 q0 11 3 13t14 2q1 0 32.5 -1.5t63.5 -1.5q8 0 32 1.5t28 1.5q10 0 12.5 -3t2.5 -15q0 -9 -3 -10.5t-16 -1.5h-11.5t-8 -0.5t-5.5 -1t-3.5 -2.5t-3 -3.5t-3 -6t-3.5 -7.5q-147 -285 -194 -369l-88 -156q-3 -6 -21.5 -28t-32.5 -44q-22 -33 -37 -33q-8 0 -11.5 10.5t-8.5 50.5 q-22 154 -62 394l-195 -350q-3 -6 -21.5 -28t-32.5 -44q-22 -33 -35 -33q-8 0 -11.5 10.5t-8.5 50.5q-20 147 -55.5 368.5t-40.5 221.5h-40q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="X" horiz-adv-x="661" d="M20 12q0 6 0.5 9t3 4.5t4.5 1.5h8h26q5 0 39.5 43.5l95.5 123l104 131.5q8 9 8 10t-4 11l-125 254q-17 34 -22 34h-43h-5.5t-4 0.5t-4 1.5t-2.5 2.5t-1.5 4t-0.5 6.5q0 7 2 10.5t5 4t11 0.5q6 0 42 -1.5t53 -1.5q16 0 53.5 1.5t48.5 1.5q10 0 12 -2.5t2 -15.5 q0 -9 -3 -10.5t-15 -1.5h-41q-11 0 -11.5 -2t3.5 -13q13 -43 85 -193q19 -39 20 -39q2 0 30 39q140 195 140 204q0 4 -3 4h-46q-13 0 -15.5 1.5t-2.5 10.5q0 13 2 15.5t12 2.5q11 0 31.5 -1.5t36.5 -1.5q17 0 43.5 1.5t32.5 1.5q11 0 13.5 -2t2.5 -13t-3 -13t-13 -2h-29 q-4 0 -57.5 -66.5l-104.5 -133.5l-52 -67q-6 -8 -1 -16l58.5 -110.5l82 -152t39.5 -61.5h47q6 0 8 -0.5t5 -1.5t4 -4t1 -9q0 -7 -2 -10.5t-5 -4t-11 -0.5q-6 0 -44.5 1.5t-55.5 1.5q-16 0 -60.5 -1.5t-55.5 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h47q11 0 12.5 2.5 t-3.5 12.5q-14 34 -66.5 142l-58.5 120q-5 6 -6 5.5t-9 -10.5l-114 -154t-72 -114q0 -4 13 -4h41q12 0 15 -1.5t3 -10.5q0 -13 -2 -15.5t-12 -2.5q-4 0 -36 1.5t-49 1.5t-38.5 -1.5t-24.5 -1.5q-10 0 -13 2t-3 13z" />
+<glyph unicode="Y" horiz-adv-x="613" d="M20 654q0 7 2 10.5t5 4t11 0.5q6 0 45 -1.5t56 -1.5q16 0 46.5 1.5t41.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-31q-10 0 -11 -2t3 -13q13 -44 103 -265q6 -12 8 -12q5 0 16 18l35 52l46 68l43 65t34.5 56.5t12.5 29.5v3h-53q-13 0 -15.5 1.5t-2.5 10.5 q0 13 2 15.5t12 2.5q11 0 36.5 -1.5t41.5 -1.5q17 0 42.5 1.5t31.5 1.5q11 0 13.5 -2t2.5 -13q0 -6 -0.5 -9t-3 -4.5t-5 -1.5h-7.5h-36q-2 0 -45.5 -58l-97 -133t-80.5 -116q-5 -9 -8 -22q-44 -260 -44 -270q0 -13 5 -13h63q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3 q-11 0 -50 1.5t-55 1.5t-49.5 -1.5t-44.5 -1.5q-9 0 -11.5 3t-2.5 13q0 9 3 11.5t15 2.5h42q6 0 30 143l15 90q5 27 5 41l-146 338h-47q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="Z" horiz-adv-x="599" d="M35 15q0 7 215 308t215 303q0 3 -24 3h-256q-42 0 -44 -10l-5.5 -28l-6 -32t-2.5 -15q-3 -10 -8 -11h-5q-21 0 -21 7q0 2 4.5 24.5t10.5 56t9 59.5q0 6 16 6q14 0 14 -5v-9q0 -11 57 -11h348q10 0 13.5 -3t3.5 -12q0 -6 -187 -275q-224 -322 -224 -329q0 -10 11 -10 l304 3q15 0 21 15q8 23 23 89q2 8 14 8q20 0 20 -12q0 -2 -6.5 -27l-15 -56.5t-11.5 -43.5q-2 -11 -22 -11q-57 0 -229.5 1.5t-223.5 1.5q-5 0 -6.5 2.5t-1.5 12.5z" />
+<glyph unicode="[" horiz-adv-x="296" d="M80 -126v801q0 9 2 12t10 3h151q9 0 11 -1.5t2 -7.5v-14q0 -9 -2 -11t-11 -2h-105q-9 0 -11 -2t-2 -10v-735q0 -12 13 -12h105q6 0 8.5 -0.5t3.5 -3t1 -9.5v-12q0 -6 -2 -8.5t-11 -2.5h-150q-9 0 -11 2.5t-2 12.5z" />
+<glyph unicode="\" horiz-adv-x="406" d="M10 693q0 12 21 12q14 0 19.5 -3.5t9.5 -14.5l317 -850q19 -55 19 -57q0 -13 -26 -13q-13 0 -18.5 4.5t-13.5 26.5l-314 851q-14 36 -14 44z" />
+<glyph unicode="]" horiz-adv-x="296" d="M40 -118q0 9 2 11t11 2h105q9 0 11 2t2 10v735v6t-1.5 3.5t-4 2t-7.5 0.5h-105q-6 0 -8.5 0.5t-3.5 3t-1 9.5v12q0 7 2 9t11 2h150q9 0 11 -2.5t2 -12.5v-801q0 -9 -2 -12t-10 -3h-151q-9 0 -11 1.5t-2 7.5v14z" />
+<glyph unicode="^" horiz-adv-x="402" d="M51 311l146 320q2 1 6 1t6 -1l146 -320q-15 -3 -26 -3q-9 0 -26 3l-102 232l-98 -232q-18 -3 -28 -3q-11 0 -24 3z" />
+<glyph unicode="_" horiz-adv-x="410" d="M25 -43q0 18 16 18h331q13 0 13 -17v-5q0 -23 -13 -23h-334q-13 0 -13 19v8z" />
+<glyph unicode="`" horiz-adv-x="400" d="M128 575q0 31 34 31q21 0 26 -24l26 -125v-3l1 -3q0 -2 -4 -2h-15q-4 0 -7 6l-57 107q-4 7 -4 13z" />
+<glyph unicode="a" horiz-adv-x="433" d="M25 59q0 46 15 100.5t42 106.5t72 86.5t98 34.5q35 0 56 -30l7.5 -12.5t7.5 -11.5t5 -4t8.5 21t6.5 23q2 6 36 11q21 2 21 -5q0 -3 -40.5 -146.5t-40.5 -169.5q0 -20 14 -20q9 0 37 28l27 28q3 0 7 -4t4 -10q0 -3 -22 -26t-54 -46.5t-51 -23.5q-27 0 -27 24q0 19 14 72 t28 97l15 44q-55 -101 -125 -174q-23 -24 -33.5 -33.5t-28 -19t-34.5 -9.5q-31 0 -48 19.5t-17 49.5zM94 96q0 -53 26 -53q25 0 81.5 62.5t97.5 129.5q15 24 15 54q0 26 -27.5 42t-54.5 16q-32 0 -65 -46t-53 -105t-20 -100z" />
+<glyph unicode="b" horiz-adv-x="453" d="M25 12q0 4 13 23q5 7 8 19q30 158 58.5 349t28.5 220q0 7 -7 7q-4 0 -41 -11t-41 -11q-9 0 -9 25q0 10 5 11q155 38 164 38q12 0 12 -10q0 -6 -17.5 -117.5t-22.5 -140.5l-49 -251q51 85 87 133q38 51 64.5 71.5t71.5 20.5q41 0 64 -23q14 -14 14 -42q0 -72 -28.5 -137 t-69.5 -106t-84 -64.5t-76 -23.5q-20 0 -40 7t-32.5 14t-15.5 7q-4 0 -20 -8q-20 -8 -27 -8q-10 0 -10 8zM112 80q0 -25 17 -42.5t51 -17.5q41 0 84.5 51t69 112.5t25.5 98.5q0 23 -10 41t-32 18q-41 0 -83 -59l-48.5 -68l-36.5 -54.5t-28.5 -49t-8.5 -30.5z" />
+<glyph unicode="c" horiz-adv-x="402" d="M25 128q0 114 71 188.5t150 74.5q58 0 86 -31q22 -24 22 -56q0 -21 -12 -35t-31 -14q-22 0 -22 37q0 4 0.5 12t0.5 12q0 20 -11.5 34t-35.5 14q-28 0 -57 -18.5t-49 -48.5q-47 -71 -47 -153q0 -16 2.5 -28.5t11 -32.5t32 -31.5t60.5 -11.5q38 0 76.5 19.5t61.5 39 t24 19.5q3 0 7.5 -5t4.5 -9q0 -5 -30 -31.5t-82 -54t-96 -27.5q-73 0 -105 40t-32 97z" />
+<glyph unicode="d" horiz-adv-x="473" d="M25 74q0 34 14.5 83.5t40 100t68 86t92.5 35.5q17 0 33.5 -3t25 -6.5t18 -8.5t10.5 -5q9 -4 12 -2t5 12q6 31 15 91.5l15.5 107t6.5 47.5q5 17 -4 17q-2 0 -44 -10.5t-45 -10.5q-5 0 -3 21q1 8 2.5 9.5t7.5 3.5q39 8 76 17.5t55 14.5t20 5q11 0 11 -15q0 -3 -50 -288 t-50 -316q0 -15 13 -15t35.5 18.5t39.5 36.5t18 18q3 0 6.5 -3t3.5 -5q0 -5 -22 -32t-61.5 -56t-75.5 -29q-12 0 -19.5 9.5t-7.5 25.5q0 18 10.5 70.5t20.5 95.5l10 43q-38 -72 -89 -139l-30.5 -39t-29 -30.5t-37 -25t-40.5 -7.5q-10 0 -19.5 2t-24.5 9t-24 24t-9 43z M91 102q0 -56 46 -56q41 0 138 140q54 82 54 118q0 14 -29 33.5t-60 19.5q-41 0 -77 -49t-54 -107t-18 -99z" />
+<glyph unicode="e" horiz-adv-x="390" d="M25 105q0 114 73 200t172 86q93 0 93 -66q0 -43 -35 -77t-88 -54q-65 -24 -141 -24q-8 0 -8 -46q0 -89 96 -89q42 0 82 21.5t63.5 43.5t24.5 22q4 0 8.5 -5t4.5 -9q0 -2 -11 -13.5t-32 -28t-47 -32.5t-61 -27.5t-68 -11.5q-55 0 -90.5 27.5t-35.5 82.5zM106 200 q0 -7 10 -7q74 0 128 36.5t54 96.5q0 19 -14 30t-36 11q-82 0 -128 -122q-14 -35 -14 -45z" />
+<glyph unicode="f" horiz-adv-x="284" d="M-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q9 98 42 157q46 80 101 112q48 28 91 28q24 0 48.5 -12.5 t24.5 -23.5q0 -13 -19 -27t-35 -14q-12 0 -37.5 18.5t-43.5 18.5q-75 0 -109 -254q-1 -6 -1 -9q-1 -3 2 -4.5t6 -1.5h82q5 0 5 -2q0 -8 -2 -14q-2 -9 -7 -9h-80q-7 0 -7.5 -1t-2.5 -10q-2 -11 -13 -91l-23.5 -164.5l-20.5 -134.5q-3 -17 -11 -44.5t-31 -70.5t-52 -65 q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5q-24 0 -46 12.5t-22 23.5z" />
+<glyph unicode="g" horiz-adv-x="426" d="M-6 -157q0 39 29.5 67t61.5 42q12 6 12 8q0 1 -3 2.5t-7.5 3.5t-7.5 4q-25 18 -25 33q0 7 18 35.5t27 31.5l60 22l6 3q0 2 -7 4q-14 4 -28 11.5t-31.5 22t-28 40t-10.5 57.5q0 70 51.5 119.5t125.5 49.5q18 0 35 -4.5t28 -11.5t19 -13.5t12 -11t5 -4.5q2 0 7.5 11.5 t12 26.5t8.5 19q5 9 21 9q27 0 27 -11q0 -12 -11.5 -33t-23 -38t-11.5 -18q0 -6 3 -13q7 -18 7 -40q0 -73 -53 -121q-26 -24 -51.5 -35t-74.5 -24q-93 -27 -93 -47q0 -9 10.5 -16t37 -13.5t41.5 -9t55 -8.5q17 -3 26 -4q65 -11 98 -30.5t33 -64.5q0 -75 -67 -110t-173 -35 q-44 0 -79.5 7t-63.5 29t-28 58zM36 -151q0 -21 18 -36.5t46.5 -22t53.5 -9.5t50 -3q62 0 101 22.5t39 66.5q0 32 -26 46t-78 23q-98 17 -107 17q-8 0 -32 -11q-65 -32 -65 -93zM123 229q0 -60 24.5 -87t49.5 -27q40 0 78.5 48.5t38.5 115.5q0 37 -22 67t-56 30 q-50 0 -81.5 -48.5t-31.5 -98.5z" />
+<glyph unicode="h" horiz-adv-x="468" d="M25 6q0 2 7 33.5t18 88l23.5 127t26 168.5t23.5 196q2 19 -4 19q-10 0 -49 -14l-38 -13q-3 0 -3 14q0 13 7 16q30 11 83 22.5t72 11.5q6 0 6 -15q-5 -101 -93 -537q47 110 115 192q56 68 124 68q26 0 42.5 -12t16.5 -36q0 -37 -33.5 -147.5t-33.5 -120.5q0 -22 21 -22 q11 0 34 21.5t41.5 43.5t19.5 22q2 0 7 -4t5 -6q0 -5 -22 -33.5t-60.5 -58.5t-72.5 -30q-18 0 -29.5 10.5t-11.5 27.5q0 14 36.5 127.5t36.5 141.5q0 17 -9 28t-25 11q-33 0 -66.5 -40t-74.5 -107q-46 -77 -54 -108l-20 -82q-2 -11 -58 -11q-8 0 -8 8z" />
+<glyph unicode="i" horiz-adv-x="270" d="M25 282q0 4 29.5 28.5t67 48.5t54.5 24q20 0 20 -22q0 -26 -32.5 -150t-32.5 -136q0 -20 13 -20q8 0 27 16t35 32t17 16q3 0 7.5 -5t4.5 -7q0 -12 -64.5 -62.5t-86.5 -50.5q-24 0 -24 18q0 24 35.5 145t35.5 153q0 18 -12 18q-11 0 -30.5 -15t-35 -29.5t-16.5 -14.5 q-4 0 -8 4.5t-4 8.5zM128 549q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33z" />
+<glyph unicode="j" horiz-adv-x="297" d="M-69 -221q0 15 10 25.5t25 10.5q18 0 38 -12.5t37 -12.5q10 0 17.5 7.5t14 26.5t9.5 31.5t9 42.5q19 93 43 242t24 170q0 18 -12 18q-11 0 -35 -22t-43.5 -44.5t-20.5 -22.5q-4 0 -8 3.5t-4 7.5t30 36t71.5 64.5t66.5 32.5q21 0 21 -24q0 -21 -12.5 -103t-27 -167 t-15.5 -92q-7 -45 -14 -73.5t-28.5 -72.5t-53.5 -68q-52 -38 -87 -38q-24 0 -39.5 11t-15.5 23zM157 579q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33z" />
+<glyph unicode="k" horiz-adv-x="450" d="M25 -3q0 8 21 107t48.5 249.5t38.5 269.5q0 9 -7 9q-8 0 -75 -19q-6 -1 -7.5 2t0.5 17q2 8 6 9l77.5 20l53.5 14t19 4q14 0 14 -11q0 -16 -97 -489q36 69 72 117q33 43 66.5 64t82.5 21q59 0 59 -37q0 -42 -32.5 -78t-67.5 -53t-65 -24q-21 -3 -21 -4l4 -2 q4 -2 10.5 -6.5t12.5 -9.5q47 -45 73 -77q16 -20 24 -28.5t22.5 -16.5t31.5 -8q34 0 34 27q0 4 -1 10.5t-1 9.5q0 12 8 12t14.5 -10.5t6.5 -32.5t-38.5 -38.5t-72.5 -16.5q-22 0 -43 20q-11 10 -23.5 25t-29 37.5t-24.5 32.5q-10 13 -23.5 28.5t-20 24t-6.5 9.5q0 5 17 22 q2 2 10 2q16 0 28 5q37 17 71 53.5t34 70.5q0 20 -31 20q-29 0 -63 -32q-9 -9 -18.5 -20t-20.5 -26.5l-18.5 -26.5l-21.5 -33t-21 -32q-17 -27 -24 -58q-15 -64 -21 -98q-3 -22 -10 -22q-1 0 -11 -1.5t-22 -3t-17 -1.5t-5 3z" />
+<glyph unicode="l" horiz-adv-x="272" d="M55 28q0 6 18 106.5l42 243t35 234.5q2 10 -1 14t-13 1q-66 -18 -74 -18q-5 0 -3 20q1 8 2.5 9.5t7.5 3.5q39 9 75.5 18.5l53.5 14t19 4.5q10 0 10 -9q0 -12 -50 -305.5t-50 -296.5q0 -21 14 -21q12 0 36 21t43.5 42t20.5 21q3 0 9.5 -5.5t6.5 -7.5q0 -4 -28 -34.5 t-71.5 -62t-73.5 -31.5q-29 0 -29 38z" />
+<glyph unicode="m" horiz-adv-x="739" d="M15 255q0 11 69 64.5t101 53.5q18 0 18 -19q0 -28 -5 -63.5t-16 -95.5t-14 -78q114 262 225 262q16 0 25 -14t9 -33q0 -82 -57 -251q2 4 20 37.5l29.5 53.5l32.5 55.5t39.5 57.5t41 46t45.5 36t45 12q51 0 51 -34q0 -28 -36.5 -141t-36.5 -131q0 -24 18 -24q12 0 53 41 l40 41q3 0 7.5 -5t4.5 -7q0 -4 -28.5 -33.5t-69 -59.5t-65.5 -30q-15 0 -25 8.5t-10 20.5q0 17 39 136.5t39 152.5q0 8 -5.5 15t-15.5 7q-39 0 -125 -133q-64 -98 -90 -188q-3 -10 -14 -12q-24 -3 -42 -3q-8 0 -8 7l29 110q29 110 29 179q0 37 -21 37q-18 0 -37 -25 q-63 -76 -108 -167q-17 -34 -41 -118q-5 -17 -11 -20q-36 -14 -49 -14q-7 0 -5 10q12 51 28.5 151.5t16.5 145.5q0 17 -14 17q-11 0 -33.5 -18.5t-41 -37.5t-19.5 -19q-12 0 -12 17z" />
+<glyph unicode="n" horiz-adv-x="515" d="M15 287q0 2 29.5 26t72.5 48.5t70 24.5q21 0 21 -21t-6 -55t-12 -57l-19.5 -72.5t-16.5 -62.5q74 131 134.5 199.5t116.5 68.5q51 0 51 -44q0 -29 -38.5 -145t-38.5 -127q0 -20 19 -20q13 0 34.5 18.5t38 37t17.5 18.5q3 0 7.5 -4.5t4.5 -6.5q0 -5 -24 -31.5t-63.5 -53.5 t-72.5 -27q-15 0 -23.5 11.5t-8.5 29.5q0 28 40 135t40 138q0 12 -6 20.5t-16 8.5q-26 0 -79 -66.5t-100 -141.5q-22 -36 -44 -112q-7 -25 -15 -26q-40 -4 -48 -4q-7 0 -5 10q60 249 60 312q0 18 -13 18q-14 0 -54 -32l-39 -32q-3 0 -8.5 5t-5.5 12z" />
+<glyph unicode="o" horiz-adv-x="419" d="M25 138q0 110 66 184.5t165 74.5q71 0 104.5 -50t33.5 -109q0 -94 -68 -170t-161 -76q-67 0 -103.5 42.5t-36.5 103.5zM87 146q0 -130 80 -130q46 0 85.5 47.5t59 107t19.5 107.5q0 36 -19 66t-67 30q-57 0 -107.5 -78.5t-50.5 -149.5z" />
+<glyph unicode="p" horiz-adv-x="486" d="M10 225l11 18.5t29.5 40.5t44 51.5t51 41t55.5 18.5q17 0 17 -31q0 -21 -8 -79t-16 -106l-8 -48q43 107 100 194q37 57 99 57q44 0 60 -23.5t16 -67.5q0 -110 -74 -204t-151 -94q-11 0 -32 3.5t-24 3.5q-12 0 -13 -8l-32 -209q-5 -23 9 -24q16 -2 40 -4q14 -1 19.5 -1.5 t11 -2t7 -4t1.5 -6.5q0 -14 -4.5 -17.5t-15.5 -3.5q-1 0 -27 3.5t-67.5 7t-79.5 3.5q-17 0 -17 10q0 14 3.5 18t15.5 4h16q12 0 16 3.5t6 17.5q47 272 62.5 371t15.5 146q0 18 -12 18q-15 0 -41 -28t-46.5 -56t-21.5 -28q-4 0 -10 5.5t-6 9.5zM181 51q0 -32 64 -32 q33 0 69.5 42.5t60.5 103.5t24 113q0 64 -44 64q-15 0 -29.5 -9.5t-29 -30t-22.5 -34t-22 -41.5l-16 -32q-55 -105 -55 -144z" />
+<glyph unicode="q" horiz-adv-x="455" d="M25 74q0 36 17.5 87t48 101t79.5 84.5t104 34.5q41 0 86 -20l14 -6q4 0 16 7q1 1 6.5 4t12 5.5t11.5 3.5q4 1 7 -2t3 -8q0 -3 -27 -61q-5 -13 -7 -25l-90 -515q0 -11 14 -11q33 0 52 -2q12 -1 12 -16v-7t-0.5 -5t-2.5 -4.5t-5 -1.5t-8 -1q-1 0 -13.5 1t-32.5 1.5t-39 0.5 q-14 0 -34.5 -1.5t-36 -3.5t-16.5 -2q-5 0 -7 0.5t-4 3t-2 8.5q1 13 4.5 16t16.5 5q2 0 6.5 1t6 1t4.5 0.5t3.5 1.5t2.5 1.5t2.5 2t2 3t2 4l1 5t1.5 6.5q3 14 16.5 72.5t29.5 141.5l47 252q-31 -69 -82 -139q-75 -105 -138 -105q-9 0 -20.5 2.5t-27 10t-26 25t-10.5 43.5z M89 99q0 -27 14 -43t33 -16q41 0 142 146q64 98 64 132q0 12 -19 27.5t-49 15.5q-61 0 -123 -99t-62 -163z" />
+<glyph unicode="r" horiz-adv-x="341" d="M25 291q0 11 50.5 53t79.5 42q18 0 18 -20q0 -17 -27 -176l4 -1q47 121 62 149q29 55 72 55q18 0 32.5 -10t14.5 -26q0 -37 -22 -37q-11 0 -28 9t-27 9q-14 0 -25 -17q-23 -35 -57 -125q-2 -6 -11 -38q-9 -36 -19.5 -86.5l-13.5 -64.5q-1 -4 -21.5 -7.5t-30.5 -3.5t-10 4 q0 2 12 63.5t24 133t12 96.5q0 38 -13 38q-11 0 -27 -12.5t-27.5 -25.5t-12.5 -13q-9 0 -9 11z" />
+<glyph unicode="s" horiz-adv-x="336" d="M20 61q0 11 8.5 18t15.5 7q5 0 8.5 -0.5t7.5 -2t6 -2.5t5.5 -4t5 -4t5.5 -5.5t5 -5.5l13 -13.5l11.5 -12t9.5 -8t12 -6t13 -1.5q30 0 50.5 20t20.5 53q0 20 -22.5 44t-49.5 42.5t-49.5 46.5t-22.5 56q0 47 39 81.5t92 34.5q31 0 52 -8t30 -20t12 -21t3 -15q0 -17 -18 -17 q-29 0 -48 35q-15 27 -32 27q-27 0 -48 -15t-21 -48q0 -26 15 -47.5t36 -37l42.5 -31.5t36.5 -40t15 -54q0 -45 -39 -78.5t-92 -33.5q-46 0 -87 21.5t-41 44.5z" />
+<glyph unicode="t" horiz-adv-x="284" d="M35 346q0 1 0.5 9t0.5 10q0 7 8 7h61q9 0 11 8q10 55 16 101q2 10 4.5 13t13.5 4q5 1 21 1q28 0 28 -5q0 -1 -5.5 -25l-11.5 -51.5t-7 -35.5q-1 -7 0.5 -8.5t9.5 -1.5h73q9 0 9 -8q0 -22 -13 -22h-73h-7t-3.5 -1.5t-1.5 -2.5t-1 -6q-41 -220 -41 -247q0 -21 19 -21 q11 0 37 22.5t48.5 45t23.5 22.5q2 0 8 -4.5t6 -6.5q0 -4 -31.5 -39t-76.5 -70.5t-72 -35.5q-35 0 -35 34q0 10 26.5 153.5t26.5 145.5v4q1 5 -0.5 6t-8.5 1h-47q-16 0 -16 4z" />
+<glyph unicode="u" horiz-adv-x="521" d="M15 256q0 2 12 19t32 41.5t38 43.5q31 31 71 31q22 0 38.5 -9t16.5 -27q0 -13 -32 -132.5t-32 -145.5q0 -23 28 -23q33 0 88 78q72 104 101 199q6 24 12 55q1 4 27 7q15 2 26 3q9 0 9 -9q0 -5 -27.5 -145.5t-27.5 -152.5q0 -25 19 -25q11 0 31 22.5t36 45t17 22.5 q8 0 8 -7q0 -6 -22 -40.5t-57 -70.5t-62 -36q-14 0 -23.5 7.5t-9.5 19.5q0 22 22.5 122.5t26.5 130.5q-1 -3 -10 -22t-26 -50t-33 -55q-104 -158 -173 -158q-55 0 -55 42q0 11 30.5 125.5t30.5 152.5q0 29 -20 29q-11 0 -34 -24.5t-41.5 -49t-20.5 -24.5q-4 0 -9 3t-5 7z " />
+<glyph unicode="v" horiz-adv-x="443" d="M10 299q0 11 45 52t69 41q25 0 42 -10q24 -14 31.5 -21.5t7.5 -23.5q0 -38 -12.5 -130t-12.5 -107q0 -12 14 -24t20 -12q14 0 23 11q2 2 31 41q31 42 47.5 66.5t35.5 68.5t19 80q0 40 -25 40q-11 0 -25 -2.5t-23.5 -4.5t-10.5 -2q-6 0 -6 16q0 5 38.5 14t59.5 9 q19 0 29.5 -8t10.5 -32q0 -44 -27 -101t-52.5 -92.5t-77.5 -101.5q-9 -12 -14 -18q-11 -15 -23 -34t-24 -19q-15 0 -41 21q-23 18 -31 33t-8 48q0 17 10 102.5t10 119.5q0 16 -10 23q-14 8 -24 8q-15 0 -33.5 -16t-31.5 -32t-14 -16q-5 0 -11 5t-6 8z" />
+<glyph unicode="w" horiz-adv-x="681" d="M10 302q0 10 50 47t74 37q15 0 45 -18q31 -21 31 -46q0 -30 -6 -85t-12.5 -98t-6.5 -44q0 -13 12.5 -27t21.5 -14q10 0 22 18l47 68t50 71q13 16 23.5 47t10.5 45q0 12 -20 32q-4 4 -8.5 8t-8 6t-6 4t-3.5 3.5t-1 2.5q0 9 14 22.5t24 13.5q16 0 43.5 -23.5t27.5 -37.5 q0 -15 -15 -117t-15 -122q0 -16 13 -29.5t25 -13.5q9 0 30 25q57 66 88 111q44 65 45 141q0 33 -21 33q-11 0 -30 -3t-33.5 -6t-15.5 -3q-6 0 -6 17q0 4 53.5 15.5t63.5 11.5q20 0 30 -7.5t10 -31.5q0 -57 -48.5 -140t-116.5 -151l-48 -50q-10 -10 -16 -10q-35 0 -58.5 23 t-23.5 54q0 4 29 153q-83 -129 -125 -183q-3 -5 -13 -19l-13 -18q-11 -15 -21 -15q-14 0 -41 22q-22 17 -28.5 28.5t-6.5 36.5q0 13 11 84.5t11 127.5q0 13 -15.5 29.5t-28.5 16.5q-15 0 -34 -14t-32 -28.5t-14 -14.5q-5 0 -9.5 5.5t-4.5 9.5z" />
+<glyph unicode="x" horiz-adv-x="458" d="M15 23q0 33 26 91q3 5 8 5q3 0 8.5 -2.5t5.5 -5.5q0 -1 -2.5 -8.5t-5 -18t-2.5 -19.5q0 -22 21 -22t64 46.5t75 89.5q6 9 2 21q-53 148 -100 148q-19 0 -46.5 -28.5t-28.5 -28.5q-4 0 -7.5 4.5t-3.5 8.5t15.5 23.5t45 40t58.5 20.5t49 -17t28.5 -34t27.5 -69q5 -13 8 -20 q2 -6 4 -7.5t3.5 0.5t4.5 7q1 1 1 2l17.5 28.5t21.5 34t22 30t26 28.5t26 17t29 8q12 0 18.5 -11.5t6.5 -28.5l-8 -56q0 -2 -4.5 -2.5t-8.5 0.5t-4 2q0 6 0.5 16.5t0.5 15.5q0 25 -17 25q-32 0 -121 -133q-6 -8 -2 -20q52 -152 88 -152q12 0 26.5 16.5t24 33t10.5 16.5 q4 0 10.5 -2.5t6.5 -5.5q0 -19 -39.5 -66t-72.5 -47q-11 0 -20.5 3.5t-17.5 13.5l-14 18t-13 26.5l-11 28.5t-12 34.5t-12 35.5q-3 9 -8 2q-2 -2 -3 -4l-33.5 -43l-43.5 -54.5t-45 -41t-49 -19.5q-34 0 -34 26z" />
+<glyph unicode="y" horiz-adv-x="422" d="M-13 -262q0 11 4 19t13 13.5t16.5 8t21 6.5t19.5 6q33 12 54 49q37 69 48 105.5t11 71.5q0 320 -69 320q-18 0 -37 -15.5t-31 -30.5t-13 -15t-4.5 1t-6.5 3.5t-3 5.5q0 4 16.5 26.5t47.5 46t61 23.5q56 0 75 -86q12 -52 20 -241q1 -6 1 -12l35 64.5t48 94t29 74.5t17 101 q1 17 11 17q12 0 24 -7t12 -18q0 -5 -2 -17q-12 -76 -148 -311l-29 -49l-10 -19q-82 -157 -101 -190q-11 -20 -39 -37q-58 -35 -74 -35q-8 0 -12.5 9t-4.5 18z" />
+<glyph unicode="z" horiz-adv-x="414" d="M25 2q0 8 4.5 16t15 18.5l11.5 11.5l238 265q5 6 2.5 7t-7.5 -1q-2 0 -3 -0.5t-3 -0.5h-3q-23 0 -75.5 16t-67.5 16q-16 0 -31.5 -12t-25 -24t-10.5 -12q-4 0 -8.5 3t-4.5 5q0 4 13.5 24t38.5 41t49 21q23 0 84 -22t82 -22q8 0 23 18.5t27 18.5q6 0 10.5 -5t4.5 -11 q0 -11 -11 -20.5t-27 -17.5t-21 -14l-220 -244q-4 -5 -5 -6.5t2 -3.5t13 -2q42 -2 120 -8t97 -6q9 0 12 4t3 14v13q-1 14 -1 15q0 6 11 6q9 0 9 -5q1 -14 3 -35.5t3.5 -35t1.5 -15.5q0 -14 -36 -14h-7q-23 0 -125.5 8t-145.5 8q-4 0 -13 -12t-16 -12q-11 0 -11 12z" />
+<glyph unicode="{" horiz-adv-x="307" d="M40 274q0 6 5.5 9t14.5 4t18.5 7.5t18.5 18t14.5 38t5.5 65.5v80q0 36 0.5 53.5t3 42.5t8 36.5t15 26t24.5 20t36.5 10t50.5 4.5q8 0 10 -2t2 -11t-2.5 -11t-11.5 -2q-43 0 -63.5 -19t-20.5 -73v-149q0 -72 -9.5 -100t-48.5 -41q-15 -6 -15 -7t15 -7q39 -13 48.5 -41 t9.5 -100v-149q0 -54 20.5 -73t63.5 -19q6 0 8.5 -0.5t4 -3.5t1.5 -9q0 -9 -2 -11t-10 -2q-29 0 -50.5 4.5t-36.5 10t-24.5 20t-15 26t-8 36.5t-3 42.5t-0.5 53.5v80q0 39 -5.5 65.5t-14.5 38t-18.5 18t-18.5 7.5t-14.5 4t-5.5 9z" />
+<glyph unicode="|" horiz-adv-x="247" d="M100 -187v933q0 10 4 13t14 3h7q15 0 18.5 -2.5t3.5 -14.5v-932q0 -9 -0.5 -12.5t-3 -6.5t-8.5 -3h-21q-10 0 -12 3t-2 19z" />
+<glyph unicode="}" horiz-adv-x="307" d="M40 -128q0 9 3 11t11 2q43 0 63.5 19t20.5 73v149q0 72 9.5 100t48.5 41q15 6 15 7t-15 7q-39 13 -48.5 41t-9.5 100v149q0 54 -20.5 73t-63.5 19q-6 0 -8.5 0.5t-4 3.5t-1.5 9q0 9 2 11t10 2q29 0 50.5 -4.5t36.5 -10t24.5 -20t15 -26t8 -36.5t3 -42.5t0.5 -53.5v-80 q0 -39 5.5 -65.5t14.5 -38t18.5 -18t18.5 -7.5t14.5 -4t5.5 -9t-5.5 -9t-14.5 -4t-18.5 -7.5t-18.5 -18t-14.5 -38t-5.5 -65.5v-80q0 -36 -0.5 -53.5t-3 -42.5t-8 -36.5t-15 -26t-24.5 -20t-36.5 -10t-50.5 -4.5q-8 0 -10 2t-2 11z" />
+<glyph unicode="~" horiz-adv-x="793" d="M45 117q0 5 4 17q6 23 17 46t31.5 51.5t54.5 46.5t76 18q48 0 101.5 -22.5t93 -49.5t88 -49.5t86.5 -22.5q26 0 48.5 16t37 41.5t22 43t12.5 34.5q2 8 4.5 8.5t10.5 -1.5q11 -3 11 -7q0 -3 -1 -6q-7 -28 -19.5 -54.5t-33 -54.5t-54 -45t-73.5 -17q-50 0 -104.5 21.5 t-95 47.5t-89.5 47.5t-89 21.5q-27 0 -48 -14t-34 -36.5t-19.5 -40t-10.5 -35.5q-4 -14 -7 -14q-2 0 -10 2q-10 2 -10 7z" />
+<glyph unicode="&#xa1;" horiz-adv-x="220" d="M5 9q0 2 2 12q33 148 86 477q1 5 12 5q13 0 13 -4q0 -23 -20 -183q-27 -211 -34 -302q-1 -22 -29 -22h-5q-25 0 -25 17zM65 606q0 23 14.5 37t25.5 14q19 0 34.5 -16.5t15.5 -29.5q0 -19 -15.5 -35.5t-30.5 -16.5q-14 0 -29 16t-15 31z" />
+<glyph unicode="&#xa2;" horiz-adv-x="407" d="M42 153q0 104 57.5 169t131.5 75q4 0 6 0.5t3 3t1.5 4t1.5 6.5q2 15 5 32.5t4.5 28t2.5 15.5q0 6 2 6q19 0 19 -3l-14 -79v-6q-1 -5 6 -6q2 -1 4 -1q40 -7 68.5 -32.5t28.5 -57.5q0 -16 -11 -25q-17 -13 -29 -13q-13 0 -15 11q-2 7 -5 22.5t-5.5 23.5t-7 18t-12 16 t-18.5 9q-2 1 -4 1q-5 0 -8 -11l-51 -312q-1 -10 4 -11q12 -3 27 -3q28 0 55 7.5t43 15t17 7.5q7 0 6 -8q-1 -5 -18.5 -20t-55.5 -30.5t-79 -15.5h-4q-6 0 -8 -8q-18 -112 -20 -112q-16 0 -16 2q0 1 2 14.5t7 41.5t9 54q1 10 -6 11q-2 1 -4 1q-57 11 -88.5 53t-31.5 106z M104 182q0 -96 69 -134q6 -3 7 -3q2 0 3 7l51 308v6q0 5 -2 5q-4 0 -8 -1q-52 -12 -86 -67.5t-34 -120.5z" />
+<glyph unicode="&#xa3;" horiz-adv-x="489" d="M20 -16q0 5 1.5 8.5t4.5 6.5l5.5 5.5t8 4.5t8 3.5t9.5 2.5t8.5 1.5t8.5 1.5l7 1q24 4 38 93q12 82 13 120q0 12 -2 14t-13 2h-66q-7 0 -6 13q1 7 2 9t6 2h71q12 0 12 5v4t1 20t4.5 51.5t8.5 69.5q10 73 41.5 130t83.5 83q38 18 80 18q46 0 77 -27t31 -80q0 -62 -25 -62 q-12 0 -18.5 11.5t-6.5 26.5q0 9 3.5 28t3.5 29q0 17 -22 33.5t-52 16.5q-87 0 -116 -110q-18 -69 -35 -237q-1 -9 0.5 -9.5t12.5 -0.5h107q5 0 6 -2t1 -10q0 -12 -11 -12h-107q-10 0 -11.5 -1t-2.5 -7q-1 -5 -2 -8q-19 -93 -61 -177q0 -1 -4.5 -10.5t-4.5 -10.5t1.5 -1t5 1 t5.5 1.5t6.5 2.5t5.5 2q21 9 54 9q29 0 100.5 -11.5t84.5 -11.5q57 0 57 37q0 6 -3 12.5t-6 10.5t-9.5 11t-7.5 9q-6 8 -5 11t11 7q4 2 16 2q14 0 22 -15t8 -33q0 -45 -37 -68.5t-85 -23.5q-32 0 -129.5 14t-102.5 14q-8 0 -33.5 -24t-40.5 -24q-16 0 -16 18z" />
+<glyph unicode="&#xa4;" horiz-adv-x="494" d="M25 8q0 10 17 27l61 62q-35 48 -35 107q0 60 34 105l-60 62q-17 17 -17 27t7.5 17t16.5 7q12 0 28 -16l62 -62q46 35 105 35t106 -35l62 62q16 16 27 16q10 0 17.5 -7.5t7.5 -16.5q0 -10 -17 -27l-62 -63q37 -50 37 -106q0 -55 -37 -104l62 -63q17 -17 17 -27t-8 -17.5 t-17 -7.5q-10 0 -27 17l-62 62q-47 -36 -106 -36t-105 35l-62 -61q-16 -16 -28 -16q-10 0 -17 7.5t-7 16.5zM119 202q0 -53 37 -89.5t88 -36.5t88.5 37.5t37.5 89.5t-37.5 90.5t-88.5 38.5q-52 0 -88.5 -38.5t-36.5 -91.5z" />
+<glyph unicode="&#xa5;" horiz-adv-x="613" d="M20 654q0 7 2 10.5t5 4t11 0.5q6 0 45 -1.5t56 -1.5q16 0 46.5 1.5t41.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-31q-10 0 -11 -2t3 -13q13 -44 103 -265q6 -12 8 -12q5 0 16 18l35 52l46 68l43 65t34.5 56.5t12.5 29.5v3h-53q-13 0 -15.5 1.5t-2.5 10.5 q0 13 2 15.5t12 2.5q11 0 36.5 -1.5t41.5 -1.5q17 0 42.5 1.5t31.5 1.5q11 0 13.5 -2t2.5 -13q0 -6 -0.5 -9t-3 -4.5t-5 -1.5h-7.5h-36q-3 0 -75 -98l-123 -172h133q3 0 3 -12t-3 -12h-149l-9 -13q-5 -9 -8 -22l-11 -63h157q3 0 3 -12t-3 -12h-161q-29 -172 -29 -183 q0 -13 5 -13h63q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -50 1.5t-55 1.5t-49.5 -1.5t-44.5 -1.5q-9 0 -11.5 3t-2.5 13q0 9 3 11.5t15 2.5h42q6 0 26 120l13 76h-147q-2 0 -2.5 12t2.5 12h151l2 13q5 27 5 41q0 1 -18 44h-120q-2 0 -2.5 12t2.5 12h110l-118 270h-47 q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#xa6;" horiz-adv-x="247" d="M100 -187v376q0 14 11 14h25q11 0 11 -14v-376q0 -9 -0.5 -12.5t-3 -6.5t-8.5 -3h-21q-10 0 -12 3t-2 19zM100 379v367q0 10 4 13t14 3h7q15 0 18.5 -2.5t3.5 -14.5v-366q0 -12 -2.5 -15.5t-11.5 -3.5h-18q-10 0 -12.5 3t-2.5 16z" />
+<glyph unicode="&#xa7;" horiz-adv-x="381" d="M40 310q0 67 69 118q7 5 -2 18q-44 68 -44 110q0 52 34 86.5t91 34.5q41 0 77.5 -11t36.5 -34q0 -27 -37 -27q-22 0 -54.5 15.5t-54.5 15.5q-58 0 -58 -42q0 -28 38 -84t83.5 -111.5t83.5 -130t38 -136.5q0 -43 -66 -94q-10 -9 -10 -12q0 -2 7 -14q42 -76 42 -114 q0 -56 -39 -90t-107 -34q-103 0 -103 44q0 10 8.5 16.5t19.5 6.5q7 0 43 -13q34 -12 72 -12q32 0 52 13t20 39q0 25 -37.5 80t-82.5 111t-82.5 127t-37.5 124zM78 357q0 -33 37 -102.5t69 -117t61 -85.5q7 -10 10 -10t14 10q33 31 33 50q0 21 -11 51t-25 56.5t-37.5 63 t-37.5 56l-36.5 50.5t-23.5 32t-3 4t-2.5 3.5t-2.5 0.5t-4 -1.5l-6 -4.5q-35 -27 -35 -56z" />
+<glyph unicode="&#xa8;" horiz-adv-x="400" d="M89 535q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM229 535q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33z" />
+<glyph unicode="&#xa9;" horiz-adv-x="843" d="M54 189q0 156 105.5 264t260.5 108t260.5 -107.5t105.5 -264.5q0 -156 -105.5 -264t-260.5 -108t-260.5 108t-105.5 264zM88 189q0 -142 96 -241t236 -99t236 99t96 241t-96 241t-236 99t-236 -99t-96 -241zM196 201q0 99 65 159.5t164 60.5q14 0 27 -1.5t23.5 -4 t21 -6.5t18 -7.5t15.5 -8t11.5 -7.5t9 -7t6.5 -4q10 -2 11 2v17q0 9 15 9q8 0 10 -1.5t2 -7.5q0 -3 -1 -53.5t-1 -69.5q0 -10 -10 -10q-18 0 -18 7q0 1 1.5 27t1.5 29q0 6 -18 23.5t-55 35.5t-75 18q-69 0 -114 -57.5t-45 -144.5q0 -81 52 -138.5t126 -57.5q27 0 51 5 t39.5 12.5t26.5 15t17 12.5t7 5t6.5 -9t5.5 -10q0 -5 -18 -18.5t-60 -28t-93 -14.5q-95 0 -160 59t-65 169z" />
+<glyph unicode="&#xaa;" horiz-adv-x="379" d="M30 399q0 38 12.5 83.5t35 88.5t60.5 71.5t83 28.5q28 0 45 -25q3 -4 6.5 -10t6 -9.5t3.5 -3.5q2 2 7 17.5t5 18.5q4 10 34 10q14 0 14 -6q0 -3 -33.5 -121.5t-33.5 -139.5q0 -16 11 -16q7 0 29.5 23.5t23.5 23.5q3 0 6.5 -4t3.5 -9q0 -3 -18.5 -22t-45 -38.5 t-42.5 -19.5q-23 0 -23 21q0 26 44 167q-46 -80 -100 -135q-40 -40 -59 -48q-10 -4 -22 -4q-26 0 -39.5 16.5t-13.5 41.5zM85 430q0 -44 23 -44q21 0 68 52t81 107q12 18 12 44q0 21 -23 34t-45 13q-39 0 -77.5 -75t-38.5 -131z" />
+<glyph unicode="&#xab;" horiz-adv-x="408" d="M50 193q0 4 55 55l36 34.5l31 30.5l12 11q2 0 8 -5.5t6 -6.5q0 -4 -31 -58t-31 -61t31 -61t31 -58q0 -1 -6 -6.5t-8 -5.5l-12 11l-31 30.5l-36 34.5q-55 51 -55 55zM200 193q0 4 55 55l36 34.5l31 30.5l12 11q2 0 8 -5.5t6 -6.5q0 -4 -31 -58t-31 -61t31 -61t31 -58 q0 -1 -6 -6.5t-8 -5.5l-12 11l-31 30.5l-36 34.5q-55 51 -55 55z" />
+<glyph unicode="&#xac;" horiz-adv-x="527" d="M31 215q0 17 19 17h427q13 0 16.5 -3t3.5 -16v-158q0 -15 -16 -15q-12 0 -16.5 0.5t-8.5 5t-4 14.5v111q0 17 -26 17h-376q-13 0 -16 5.5t-3 21.5z" />
+<glyph unicode="&#xad;" horiz-adv-x="268" d="M30 201q0 12 6 25.5t12 14.5t91.5 4t91.5 3q2 0 2 -9q0 -33 -8 -33q-104 -8 -191 -8q-4 0 -4 3z" />
+<glyph unicode="&#xae;" horiz-adv-x="536" d="M25 470q0 104 70 175.5t173 71.5t173 -71.5t70 -175.5t-70 -175.5t-173 -71.5t-173 71.5t-70 175.5zM50 470q0 -94 63 -159t155 -65t155 65t63 159t-63 159t-155 65t-155 -65t-63 -159zM142 628q0 9 11 9q3 0 23.5 -0.5t27.5 -0.5t34.5 1.5t32.5 1.5q101 0 101 -80 q0 -49 -64 -78q77 -23 80 -107q1 -28 4 -28h20q8 0 8 -12q0 -6 -10 -6l-60 1q-7 0 -7 7v27q0 31 -3 50t-18 36.5t-43 20.5q-15 2 -52 2q-5 0 -5 -3q0 -99 4 -123h27q7 0 7 -7q0 -11 -7 -11q-5 0 -24 0.5t-26 0.5t-25 -0.5t-19 -0.5q-9 0 -9 11q0 7 11 7h19q2 16 2 58v60 q0 141 -5 155l-24 -1q-11 0 -11 10zM222 489q0 -2 5 -2q12 0 33.5 -0.5t29.5 -0.5q39 19 39 67q0 32 -24.5 51t-57.5 19q-4 0 -11.5 -0.5t-11.5 -0.5q-2 -8 -2 -23v-110z" />
+<glyph unicode="&#xaf;" horiz-adv-x="400" d="M100 518l2 21q1 6 2 7t7 1h181q6 0 7 -1t1 -6l-2 -23q-5 -8 -8 -8h-181q-7 0 -8.5 1t-0.5 8z" />
+<glyph unicode="&#xb0;" horiz-adv-x="256" d="M40 535q0 36 26 62t62 26t62 -26t26 -62t-26 -62t-62 -26t-62 26t-26 62zM71 535q0 -24 16.5 -40.5t40.5 -16.5t40.5 16.5t16.5 40.5t-16.5 40.5t-40.5 16.5t-40.5 -16.5t-16.5 -40.5z" />
+<glyph unicode="&#xb1;" horiz-adv-x="527" d="M31 90q0 11 0.5 15.5t4.5 8t13 3.5h429q11 0 14.5 -4t3.5 -16q0 -13 -3.5 -18.5t-17.5 -5.5h-427q-9 0 -13 3t-4 14zM31 324q0 22 18 22h181q11 0 11 10v9v130q0 15 16 15q18 0 23 -3t5 -14v-128v-8q0 -11 12 -11h183q16 0 16 -15q0 -12 -1 -17t-5.5 -9t-14.5 -4h-178 q-12 0 -12 -17v-132q0 -14 -16 -14q-17 0 -22.5 2.5t-5.5 11.5v132q0 10 -2.5 13.5t-13.5 3.5h-177q-12 0 -14.5 5t-2.5 18z" />
+<glyph unicode="&#xb2;" d="M41 357q0 6 27 43t31 40q154 139 154 206q0 30 -19 50.5t-55 20.5q-31 0 -56.5 -16.5t-38.5 -32.5t-14 -16q-3 0 -9 4.5t-6 8.5q0 7 19 29t54.5 44t70.5 22q49 0 79 -30.5t30 -77.5q0 -52 -51 -108q-21 -23 -45.5 -43.5t-49.5 -39l-29 -21.5l-38 -43h182l6 17l11 29.5 t7 13.5q18 0 18 -5q0 -2 -5.5 -19.5l-13.5 -41t-11 -36.5q-1 -5 -9 -5h-228q-11 0 -11 7z" />
+<glyph unicode="&#xb3;" d="M49 377q0 6 10.5 12t19.5 6q15 0 35 -15.5t35 -15.5q39 0 63.5 26.5t24.5 67.5q0 76 -86 76q-5 0 -17.5 -1t-17.5 -1q-7 0 -7 13q0 15 4 15q36 4 53 11q70 27 70 94q0 30 -16.5 47.5t-41.5 17.5q-20 0 -38 -8.5t-29 -17t-12 -8.5q-3 0 -8 4t-4 8q1 5 14 17t38 23.5 t49 11.5q48 0 75.5 -26.5t27.5 -61.5q0 -19 -8 -35.5t-18.5 -27.5t-26 -21t-26 -14.5l-22.5 -9.5l-13 -5l13 -3q13 -3 23.5 -6t26 -10.5t26 -17t18.5 -25.5t8 -35q0 -57 -46 -89t-105 -32q-25 0 -58.5 13t-33.5 23z" />
+<glyph unicode="&#xb4;" horiz-adv-x="400" d="M172 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-5 -6 -8 -6h-15q-4 0 -4 2z" />
+<glyph unicode="&#xb5;" horiz-adv-x="509" d="M25 -136q0 41 8.5 85t26 106t25.5 100q23 101 36 150.5t18 60t11 10.5q39 0 39 -17q0 -7 -9.5 -40.5t-22.5 -87.5t-19 -103q-3 -36 -3 -43q0 -47 29 -47q32 0 74 53.5t73 114t56 123.5q19 48 23 48q13 0 26.5 -4.5t13.5 -10.5q0 -2 -25 -133.5t-25 -158.5 q0 -11 7.5 -18.5t17.5 -7.5q16 0 28 17t20 33.5t13 16.5q8 0 8 -13q0 -32 -37 -73.5t-83 -41.5q-34 0 -34 64q0 24 8 79.5t8 57.5q0 8 -4 8l-8 -12q-7 -13 -21.5 -36l-27.5 -42q-1 -1 -13 -19.5t-16 -23.5l-16 -20.5t-20.5 -22l-21 -15.5t-25.5 -12.5t-27 -3.5 q-17 0 -28.5 17.5t-16 34.5t-5.5 17q-4 0 -12.5 -54t-8.5 -79q0 -19 12 -47.5t12 -29.5q0 -3 -2 -9t-9.5 -12t-18.5 -6q-14 0 -24 12t-10 35z" />
+<glyph unicode="&#xb6;" horiz-adv-x="492" d="M40 417q0 48 16 87.5t41 64.5t56.5 42.5t61.5 25t58 7.5q8 0 10 -3t2 -11v-468q0 -8 -5 -8q-23 0 -52 8t-62.5 28.5t-61 49t-46 75t-18.5 102.5zM280 -205q0 8 10 8h58q7 0 9 1.5t2 6.5v831q0 8 2.5 10t8.5 2h70q8 0 10 -2t2 -9v-14q0 -6 -2 -7.5t-10 -1.5h-46 q-5 0 -6.5 -1.5t-1.5 -8.5v-832q0 -6 -2 -7.5t-12 -1.5h-82q-10 0 -10 8v18z" />
+<glyph unicode="&#xb7;" horiz-adv-x="125" d="M25 340q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33z" />
+<glyph unicode="&#xb8;" horiz-adv-x="400" d="M109 -190q0 10 8 10l8 -4q8 -3 21 -6.5t27 -3.5q69 0 69 49q0 18 -11 31.5t-36 13.5q-8 0 -16 -1.5t-13.5 -3t-6.5 -1.5q-7 0 -7 4q0 1 11.5 21l25.5 45.5t19 35.5h19q-37 -66 -37 -67q0 -2 5 -2q8 2 24 2q35 0 56 -19t21 -45q0 -37 -32 -61.5t-80 -24.5q-22 0 -40.5 6 t-26.5 12t-8 9z" />
+<glyph unicode="&#xb9;" d="M78 360q0 15 13 15h56q7 45 26 190.5t19 160.5q-5 -1 -32 -6t-28 -5q-7 0 -7 9v8q0 8 8 9q12 1 41 6l53 9t26 4q7 0 7 -8q0 -3 -3.5 -24l-9.5 -57.5t-9 -58.5l-35 -237h58q8 0 8 -16q0 -8 -1 -9.5t-7 -1.5q-4 0 -37.5 1t-44.5 1t-47.5 -1t-43.5 -1t-8.5 2t-1.5 10z" />
+<glyph unicode="&#xba;" horiz-adv-x="377" d="M30 464q0 92 54.5 153.5t137.5 61.5q59 0 87 -42t28 -90q0 -78 -56.5 -141.5t-133.5 -63.5q-56 0 -86.5 35.5t-30.5 86.5zM83 471q0 -107 65 -107q37 0 69.5 39t49 88t16.5 89q0 29 -15.5 53.5t-54.5 24.5q-47 0 -88.5 -64.5t-41.5 -122.5z" />
+<glyph unicode="&#xbb;" horiz-adv-x="408" d="M60 74q0 4 31 58t31 61t-31 61t-31 58q0 1 6 6.5t8 5.5l12 -11l31 -30.5l36 -34.5q55 -51 55 -55t-55 -55l-36 -34.5l-31 -30.5l-12 -11q-2 0 -8 5.5t-6 6.5zM210 74q0 4 31 58t31 61t-31 61t-31 58q0 1 6 6.5t8 5.5l12 -11l31 -30.5l36 -34.5q55 -51 55 -55t-55 -55 l-36 -34.5l-31 -30.5l-12 -11q-2 0 -8 5.5t-6 6.5z" />
+<glyph unicode="&#xbc;" horiz-adv-x="794" d="M458 141q0 15 17 38q18 25 78.5 88.5t82.5 90.5q6 7 15 13t11 8q35 35 40 35q7 0 7 -14l-30 -216q-1 -8 0.5 -9.5t8.5 -1.5h37q6 0 6 -8v-23q0 -5 -1.5 -6t-7.5 -1h-46q-3 0 -4 -0.5t-2.5 -2.5t-1.5 -6q-18 -120 -18 -126q0 -3 -1.5 -4.5t-4.5 -1.5l-2 -1q-16 -4 -41 -4 q-6 0 -4 10l23 126q1 7 -0.5 8.5t-9.5 1.5h-139q-13 0 -13 6zM498 175q0 -2 14 -2h108q6 0 7.5 1.5t3.5 11.5q21 126 21 158q-21 -16 -143 -155q-11 -11 -11 -14zM210 -8q0 1 4 9l408 657q7 10 23 10q17 0 17 -6q0 -2 -1 -4l-410 -659q-3 -5 -4 -6t-3.5 -3t-6 -2.5 t-9.5 -0.5q-18 0 -18 5zM78 260q0 15 13 15h56q7 45 26 190.5t19 160.5q-5 -1 -32 -6t-28 -5q-7 0 -7 9v8q0 8 8 9q12 1 41 6l53 9t26 4q7 0 7 -8q0 -3 -3.5 -24l-9.5 -57.5t-9 -58.5l-35 -237h58q8 0 8 -16q0 -8 -1 -9.5t-7 -1.5q-4 0 -37.5 1t-44.5 1t-47.5 -1t-43.5 -1 t-8.5 2t-1.5 10z" />
+<glyph unicode="&#xbd;" horiz-adv-x="844" d="M525 7q0 6 27 43t31 40q154 139 154 206q0 30 -19 50.5t-55 20.5q-31 0 -56.5 -16.5t-38.5 -32.5t-14 -16q-3 0 -9 4.5t-6 8.5q0 7 19 29t54.5 44t70.5 22q49 0 79 -30.5t30 -77.5q0 -52 -51 -108q-21 -23 -45.5 -43.5t-49.5 -39l-29 -21.5l-38 -43h182q0 1 2.5 8 l5.5 15.5t6.5 17t6 14t3.5 5.5q18 0 18 -5q0 -2 -5.5 -19.5l-13.5 -41t-11 -36.5q-1 -5 -9 -5h-228q-11 0 -11 7zM210 -8q0 1 4 9l408 657q7 10 23 10q17 0 17 -6q0 -2 -1 -4l-410 -659q-3 -5 -4 -6t-3.5 -3t-6 -2.5t-9.5 -0.5q-18 0 -18 5zM78 260q0 15 13 15h56 q7 45 26 190.5t19 160.5q-5 -1 -32 -6t-28 -5q-7 0 -7 9v8q0 8 8 9q12 1 41 6l53 9t26 4q7 0 7 -8q0 -3 -3.5 -24l-9.5 -57.5t-9 -58.5l-35 -237h58q8 0 8 -16q0 -8 -1 -9.5t-7 -1.5q-4 0 -37.5 1t-44.5 1t-47.5 -1t-43.5 -1t-8.5 2t-1.5 10z" />
+<glyph unicode="&#xbe;" horiz-adv-x="794" d="M458 141q0 15 17 38q18 25 78.5 88.5t82.5 90.5q6 7 15 13t11 8q35 35 40 35q7 0 7 -14l-30 -216q-1 -8 0.5 -9.5t8.5 -1.5h37q6 0 6 -8v-23q0 -5 -1.5 -6t-7.5 -1h-46q-3 0 -4 -0.5t-2.5 -2.5t-1.5 -6q-18 -120 -18 -126q0 -3 -1.5 -4.5t-4.5 -1.5l-2 -1q-16 -4 -41 -4 q-6 0 -4 10l23 126q1 7 -0.5 8.5t-9.5 1.5h-139q-13 0 -13 6zM498 175q0 -2 14 -2h108q6 0 7.5 1.5t3.5 11.5q21 126 21 158q-21 -16 -143 -155q-11 -11 -11 -14zM210 -8q0 1 4 9l408 657q7 10 23 10q17 0 17 -6q0 -2 -1 -4l-410 -659q-3 -5 -4 -6t-3.5 -3t-6 -2.5 t-9.5 -0.5q-18 0 -18 5zM49 277q0 6 10.5 12t19.5 6q15 0 35 -15.5t35 -15.5q39 0 63.5 26.5t24.5 67.5q0 76 -86 76q-5 0 -17.5 -1t-17.5 -1q-7 0 -7 13q0 15 4 15q36 4 53 11q70 27 70 94q0 30 -16.5 47.5t-41.5 17.5q-20 0 -38 -8.5t-29 -17t-12 -8.5q-3 0 -8 4t-4 8 q1 5 14 17t38 23.5t49 11.5q48 0 75.5 -26.5t27.5 -61.5q0 -19 -8 -35.5t-18.5 -27.5t-26 -21t-26 -14.5l-22.5 -9.5l-13 -5l13 -3q13 -3 23.5 -6t26 -10.5t26 -17t18.5 -25.5t8 -35q0 -57 -46 -89t-105 -32q-25 0 -58.5 13t-33.5 23z" />
+<glyph unicode="&#xbf;" horiz-adv-x="374" d="M35 148q0 31 7.5 53.5t13.5 30.5t28 32q16 18 105 107q1 1 17.5 16.5t24 24t16.5 22t9 23.5q0 11 -7 23.5t-14 20.5t-7 9q0 2 5 7.5t9 5.5q3 0 14.5 -11t22.5 -31t11 -38q0 -44 -65 -109l-42.5 -41l-45.5 -44t-37 -39.5t-29.5 -41t-9.5 -34.5q0 -21 11 -41.5t26 -29.5 q22 -14 89 -14q13 0 45 1.5t35 1.5t5 -1t3 -3.5l2 -5t1 -6.5t0.5 -7t0.5 -8v-8q1 -9 -3 -11.5t-15 -4.5q-30 -5 -64 -5q-60 0 -90 19q-33 21 -52.5 59.5t-19.5 77.5zM204 606q0 23 14.5 37t25.5 14q19 0 34.5 -16.5t15.5 -29.5q0 -19 -15.5 -35.5t-30.5 -16.5q-14 0 -29 16 t-15 31z" />
+<glyph unicode="&#xc0;" horiz-adv-x="688" d="M402 818q0 29 29 29q17 0 30 -25l40 -85q1 -2 1 -5t-4 -3h-18q-1 0 -7 6l-61 60q-10 10 -10 23zM20 15q0 9 3 10.5t15 1.5h33q3 0 72 118l155.5 266t121.5 199q4 5 22.5 24.5t28.5 38.5q7 14 15 14q3 0 5 -1l3 -1.5t2 -3t1 -3.5t1 -5t1 -5q104 -641 116 -641h42 q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5t-50.5 1.5q-16 0 -58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h57q2 0 2 11q0 24 -13.5 121t-14.5 103q-1 14 -4 16.5t-14 2.5h-189q-15 0 -23 -15q-121 -227 -121 -238l1 -1h68q8 0 9.5 -2t1.5 -11 q0 -11 -2 -14t-9 -3q-11 0 -48.5 1.5t-53.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5zM284 311q0 -6 18 -6h167q13 0 13 5q0 7 -11 74l-22 131t-12 64q-3 0 -13 -19l-133 -234q-7 -12 -7 -15z" />
+<glyph unicode="&#xc1;" horiz-adv-x="688" d="M482 731l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2zM20 15q0 9 3 10.5t15 1.5h33q3 0 72 118l155.5 266t121.5 199q4 5 22.5 24.5t28.5 38.5q7 14 15 14q3 0 5 -1l3 -1.5t2 -3t1 -3.5t1 -5t1 -5q104 -641 116 -641h42 q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5t-50.5 1.5q-16 0 -58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h57q2 0 2 11q0 24 -13.5 121t-14.5 103q-1 14 -4 16.5t-14 2.5h-189q-15 0 -23 -15q-121 -227 -121 -238l1 -1h68q8 0 9.5 -2t1.5 -11 q0 -11 -2 -14t-9 -3q-11 0 -48.5 1.5t-53.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5zM284 311q0 -6 18 -6h167q13 0 13 5q0 7 -11 74l-22 131t-12 64q-3 0 -13 -19l-133 -234q-7 -12 -7 -15z" />
+<glyph unicode="&#xc2;" horiz-adv-x="688" d="M388 731q0 1 4 5l91 92q11 11 20 11h20q7 0 9 -1.5t7 -9.5l53 -92q2 -3 2 -5t-5 -2h-12q-1 0 -7 6l-63 52q-3 3 -8 0l-85 -52q-2 -1 -4 -2.5t-4 -2.5l-1 -1h-12q-5 0 -5 2zM20 15q0 9 3 10.5t15 1.5h33q3 0 72 118l155.5 266t121.5 199q4 5 22.5 24.5t28.5 38.5 q7 14 15 14q3 0 5 -1l3 -1.5t2 -3t1 -3.5t1 -5t1 -5q104 -641 116 -641h42q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5t-50.5 1.5q-16 0 -58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h57q2 0 2 11q0 24 -13.5 121t-14.5 103q-1 14 -4 16.5 t-14 2.5h-189q-15 0 -23 -15q-121 -227 -121 -238l1 -1h68q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -48.5 1.5t-53.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5zM284 311q0 -6 18 -6h167q13 0 13 5q0 7 -11 74l-22 131t-12 64q-3 0 -13 -19l-133 -234 q-7 -12 -7 -15z" />
+<glyph unicode="&#xc3;" horiz-adv-x="688" d="M393 745q2 9 11 25q15 25 32.5 38.5t30.5 13.5q15 0 41 -18t39 -18q21 0 40 33q3 7 13 7q6 0 6 -2q-1 -6 -11 -26q-29 -55 -66 -55q-17 0 -41 17.5t-39 17.5q-22 0 -38 -29q-3 -6 -12 -6q-6 0 -6 2zM20 15q0 9 3 10.5t15 1.5h33q3 0 72 118l155.5 266t121.5 199 q4 5 22.5 24.5t28.5 38.5q7 14 15 14q3 0 5 -1l3 -1.5t2 -3t1 -3.5t1 -5t1 -5q104 -641 116 -641h42q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5t-50.5 1.5q-16 0 -58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h57q2 0 2 11q0 24 -13.5 121 t-14.5 103q-1 14 -4 16.5t-14 2.5h-189q-15 0 -23 -15q-121 -227 -121 -238l1 -1h68q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -48.5 1.5t-53.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5zM284 311q0 -6 18 -6h167q13 0 13 5q0 7 -11 74l-22 131t-12 64 q-3 0 -13 -19l-133 -234q-7 -12 -7 -15z" />
+<glyph unicode="&#xc4;" horiz-adv-x="688" d="M390 785q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM530 785q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM20 15q0 9 3 10.5t15 1.5h33q3 0 72 118l155.5 266t121.5 199 q4 5 22.5 24.5t28.5 38.5q7 14 15 14q3 0 5 -1l3 -1.5t2 -3t1 -3.5t1 -5t1 -5q104 -641 116 -641h42q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5t-50.5 1.5q-16 0 -58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h57q2 0 2 11q0 24 -13.5 121 t-14.5 103q-1 14 -4 16.5t-14 2.5h-189q-15 0 -23 -15q-121 -227 -121 -238l1 -1h68q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -48.5 1.5t-53.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5zM284 311q0 -6 18 -6h167q13 0 13 5q0 7 -11 74l-22 131t-12 64 q-3 0 -13 -19l-133 -234q-7 -12 -7 -15z" />
+<glyph unicode="&#xc5;" horiz-adv-x="688" d="M433 781q0 28 20 48t48 20t48 -20t20 -48t-20 -48t-48 -20t-48 20t-20 48zM461 781q0 -17 11.5 -28.5t28.5 -11.5t28.5 11.5t11.5 28.5t-11.5 28.5t-28.5 11.5t-28.5 -11.5t-11.5 -28.5zM20 15q0 9 3 10.5t15 1.5h33q3 0 72 118l155.5 266t121.5 199q4 5 22.5 24.5 t28.5 38.5q7 14 15 14q3 0 5 -1l3 -1.5t2 -3t1 -3.5t1 -5t1 -5q104 -641 116 -641h42q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5t-50.5 1.5q-16 0 -58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h57q2 0 2 11q0 24 -13.5 121t-14.5 103 q-1 14 -4 16.5t-14 2.5h-189q-15 0 -23 -15q-121 -227 -121 -238l1 -1h68q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -48.5 1.5t-53.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5zM284 311q0 -6 18 -6h167q13 0 13 5q0 7 -11 74l-22 131t-12 64q-3 0 -13 -19 l-133 -234q-7 -12 -7 -15z" />
+<glyph unicode="&#xc6;" horiz-adv-x="968" d="M-10 15q0 9 3 10.5t15 1.5h33q7 0 105 125l219 282.5t158 201.5h-68q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l66 -1q67 -2 88 -2q28 0 108.5 1.5t100.5 1.5q55 0 74.5 2.5t20.5 10.5q1 12 13 12q11 0 14 -2t3 -9q0 -4 -4 -41t-5 -84q0 -6 -3 -8t-13 -2q-15 0 -15 14 q0 2 3 36t3 37q0 7 -263 7q-6 0 -39 -256q-3 -21 -3 -24q0 -6 15 -6h164q45 0 47 13l11 53q1 7 16 7q13 0 13 -6q0 -4 -2.5 -17t-7 -34l-7.5 -36q-7 -39 -15 -89q-1 -7 -13 -7q-17 0 -17 8q1 7 4 23.5t5.5 29t2.5 14.5q0 8 -10 11t-40 3h-151q-9 0 -12 -0.5t-5 -2.5t-3 -7 q-3 -13 -19.5 -129t-19.5 -147q0 -9 7 -9l319 7q4 0 10 16.5t14.5 43t13.5 37.5q4 9 14 9q17 0 17 -11q0 -5 -5.5 -21l-17 -47.5t-19.5 -55.5q-4 -11 -17 -11q-11 0 -179 1.5t-184 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h43l42 274h-201 q-13 0 -23 -15q-3 -4 -54 -77l-85 -124t-34 -57l1 -1h68q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -51 1.5t-56 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5zM323 331q0 -6 21 -6h172l20 145q20 144 20 154q0 8 -3 8q-4 0 -11 -10l-209 -276q-10 -14 -10 -15z" />
+<glyph unicode="&#xc7;" horiz-adv-x="686" d="M35 291q0 160 108 270t255 110q62 0 120 -24.5t92 -62.5l12 41q8 0 18.5 -3.5t10.5 -7.5q0 -3 -7.5 -41l-17 -84t-10.5 -54q-1 -5 -13 -5q-9 0 -16 4t-7 7q0 1 11.5 46.5t11.5 50.5t-28 29.5t-79 50t-99 25.5q-75 0 -139 -56t-98.5 -137t-34.5 -162q0 -123 69.5 -195.5 t172.5 -72.5q47 0 91 16.5t67 33.5t26 26q10 29 25 84q3 9 8 10.5t15 -1.5q17 -4 17 -11q0 -6 -33 -116q-5 -17 -78 -45.5t-137 -30.5q-29 -51 -29 -53t5 -2q8 2 24 2q35 0 56 -19t21 -45q0 -37 -32 -61.5t-80 -24.5q-22 0 -40.5 6t-26.5 12t-8 9q0 10 8 10l8 -4 q8 -3 21 -6.5t27 -3.5q69 0 69 49q0 18 -11 31.5t-36 13.5q-8 0 -16 -1.5t-13.5 -3t-6.5 -1.5q-7 0 -7 4q0 1 8 15.5l21 37.5l20 35q-63 1 -117 18t-99.5 51.5t-72 95t-26.5 140.5z" />
+<glyph unicode="&#xc8;" horiz-adv-x="579" d="M253 818q0 29 29 29q18 0 30 -25l40 -85q1 -2 1 -5t-4 -3h-18q-1 0 -7 6l-61 60q-10 10 -10 23zM20 15q0 9 3 10.5t15 1.5h43q83 519 83 599q0 10 -3 10h-55q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l47 -1q46 -2 67 -2q28 0 108.5 1.5t100.5 1.5q55 0 74.5 2.5 t20.5 10.5q1 12 13 12q11 0 14 -2t3 -9q0 -4 -4 -41t-5 -84q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 3 36t3 37q0 7 -263 7q-5 0 -41 -269q-2 -11 -0.5 -14t14.5 -3h164q45 0 47 13l11 53q1 7 16 7q13 0 13 -6q0 -4 -2.5 -17t-7 -34l-7.5 -36q-7 -39 -15 -89q-1 -7 -13 -7 q-17 0 -17 8q1 7 4 23.5t5.5 29t2.5 14.5q0 8 -10 11t-40 3h-151q-9 0 -12 -0.5t-5 -2.5t-3 -7q-3 -13 -19.5 -129t-19.5 -147q0 -9 7 -9l319 7q4 0 10 16.5t14.5 43t13.5 37.5q4 9 14 9q17 0 17 -11q0 -5 -5.5 -21l-17 -47.5t-19.5 -55.5q-4 -11 -17 -11q-11 0 -179 1.5 t-184 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#xc9;" horiz-adv-x="579" d="M333 731l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2zM20 15q0 9 3 10.5t15 1.5h43q83 519 83 599q0 10 -3 10h-55q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l47 -1q46 -2 67 -2q28 0 108.5 1.5t100.5 1.5q55 0 74.5 2.5 t20.5 10.5q1 12 13 12q11 0 14 -2t3 -9q0 -4 -4 -41t-5 -84q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 3 36t3 37q0 7 -263 7q-5 0 -41 -269q-2 -11 -0.5 -14t14.5 -3h164q45 0 47 13l11 53q1 7 16 7q13 0 13 -6q0 -4 -2.5 -17t-7 -34l-7.5 -36q-7 -39 -15 -89q-1 -7 -13 -7 q-17 0 -17 8q1 7 4 23.5t5.5 29t2.5 14.5q0 8 -10 11t-40 3h-151q-9 0 -12 -0.5t-5 -2.5t-3 -7q-3 -13 -19.5 -129t-19.5 -147q0 -9 7 -9l319 7q4 0 10 16.5t14.5 43t13.5 37.5q4 9 14 9q17 0 17 -11q0 -5 -5.5 -21l-17 -47.5t-19.5 -55.5q-4 -11 -17 -11q-11 0 -179 1.5 t-184 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#xca;" horiz-adv-x="579" d="M239 731q0 1 4 5l91 92q11 11 20 11h20q7 0 9 -1.5t7 -9.5l53 -92q2 -3 2 -5t-5 -2h-12q-1 0 -7 6l-63 52q-3 3 -8 0l-85 -52q-2 -1 -4 -2.5t-3 -2.5l-2 -1h-12q-5 0 -5 2zM20 15q0 9 3 10.5t15 1.5h43q83 519 83 599q0 10 -3 10h-55q-7 0 -10.5 0.5t-6 4t-2.5 10.5 q0 14 12 14l47 -1q46 -2 67 -2q28 0 108.5 1.5t100.5 1.5q55 0 74.5 2.5t20.5 10.5q1 12 13 12q11 0 14 -2t3 -9q0 -4 -4 -41t-5 -84q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 3 36t3 37q0 7 -263 7q-5 0 -41 -269q-2 -11 -0.5 -14t14.5 -3h164q45 0 47 13l11 53q1 7 16 7 q13 0 13 -6q0 -4 -2.5 -17t-7 -34l-7.5 -36q-7 -39 -15 -89q-1 -7 -13 -7q-17 0 -17 8q1 7 4 23.5t5.5 29t2.5 14.5q0 8 -10 11t-40 3h-151q-9 0 -12 -0.5t-5 -2.5t-3 -7q-3 -13 -19.5 -129t-19.5 -147q0 -9 7 -9l319 7q4 0 10 16.5t14.5 43t13.5 37.5q4 9 14 9q17 0 17 -11 q0 -5 -5.5 -21l-17 -47.5t-19.5 -55.5q-4 -11 -17 -11q-11 0 -179 1.5t-184 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#xcb;" horiz-adv-x="579" d="M241 785q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM381 785q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM20 15q0 9 3 10.5t15 1.5h43q83 519 83 599q0 10 -3 10h-55 q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l47 -1q46 -2 67 -2q28 0 108.5 1.5t100.5 1.5q55 0 74.5 2.5t20.5 10.5q1 12 13 12q11 0 14 -2t3 -9q0 -4 -4 -41t-5 -84q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 3 36t3 37q0 7 -263 7q-5 0 -41 -269q-2 -11 -0.5 -14t14.5 -3h164 q45 0 47 13l11 53q1 7 16 7q13 0 13 -6q0 -4 -2.5 -17t-7 -34l-7.5 -36q-7 -39 -15 -89q-1 -7 -13 -7q-17 0 -17 8q1 7 4 23.5t5.5 29t2.5 14.5q0 8 -10 11t-40 3h-151q-9 0 -12 -0.5t-5 -2.5t-3 -7q-3 -13 -19.5 -129t-19.5 -147q0 -9 7 -9l319 7q4 0 10 16.5t14.5 43 t13.5 37.5q4 9 14 9q17 0 17 -11q0 -5 -5.5 -21l-17 -47.5t-19.5 -55.5q-4 -11 -17 -11q-11 0 -179 1.5t-184 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#xcc;" horiz-adv-x="377" d="M151 818q0 29 29 29q18 0 30 -25l40 -85q1 -2 1 -5t-4 -3h-18q-1 0 -7 6l-61 60q-10 10 -10 23zM20 15q0 9 3 10.5t15 1.5h60q5 0 47 279t42 317q0 16 -9 16h-66q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5q6 0 52 -1.5t63 -1.5q16 0 57 1.5t52 1.5q10 0 12 -2.5t2 -15.5 q0 -9 -2.5 -10.5t-15.5 -1.5h-57q-9 0 -48.5 -275.5t-39.5 -323.5q0 -13 8 -13h66q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -58 1.5t-63 1.5t-59 -1.5t-54 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#xcd;" horiz-adv-x="377" d="M231 731l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2zM20 15q0 9 3 10.5t15 1.5h60q5 0 47 279t42 317q0 16 -9 16h-66q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5q6 0 52 -1.5t63 -1.5q16 0 57 1.5t52 1.5q10 0 12 -2.5t2 -15.5 q0 -9 -2.5 -10.5t-15.5 -1.5h-57q-9 0 -48.5 -275.5t-39.5 -323.5q0 -13 8 -13h66q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -58 1.5t-63 1.5t-59 -1.5t-54 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#xce;" horiz-adv-x="377" d="M137 731q0 1 4 5l91 92q11 11 20 11h20q7 0 9 -1.5t7 -9.5l53 -92q2 -3 2 -5t-5 -2h-12q-1 0 -7 6l-63 52q-3 3 -8 0l-85 -52q-2 -1 -4 -2.5t-3 -2.5l-2 -1h-12q-5 0 -5 2zM20 15q0 9 3 10.5t15 1.5h60q5 0 47 279t42 317q0 16 -9 16h-66q-12 0 -12 15q0 7 2.5 10.5 t5.5 4t11 0.5q6 0 52 -1.5t63 -1.5q16 0 57 1.5t52 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-57q-9 0 -48.5 -275.5t-39.5 -323.5q0 -13 8 -13h66q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -58 1.5t-63 1.5t-59 -1.5t-54 -1.5q-10 0 -12 2.5t-2 15.5z " />
+<glyph unicode="&#xcf;" horiz-adv-x="377" d="M139 785q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM279 785q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM20 15q0 9 3 10.5t15 1.5h60q5 0 47 279t42 317q0 16 -9 16h-66 q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5q6 0 52 -1.5t63 -1.5q16 0 57 1.5t52 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-57q-9 0 -48.5 -275.5t-39.5 -323.5q0 -13 8 -13h66q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -58 1.5t-63 1.5t-59 -1.5t-54 -1.5 q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#xd0;" horiz-adv-x="742" d="M19 10q0 11 3 13t14 2h43q5 0 46 285q1 8 -1 9.5t-11 1.5h-64q-2 0 -2.5 12t2.5 12h71q10 0 11 12q27 188 36 268q2 11 -4 11l-70 -2q-5 0 -7.5 0.5t-4 3t-1.5 8.5v6t0.5 4.5t2 3.5t4 1.5t6.5 0.5h24t51.5 -0.5t43.5 -0.5q33 0 75.5 1t56.5 1q165 0 261.5 -80t96.5 -248 q0 -158 -102 -247.5t-248 -91.5q-32 0 -112 2t-113 2q-16 0 -55 -2t-42 -2q-8 0 -9.5 2t-1.5 12zM171 46q0 -13 6 -17t59 -4q97 0 170 27t111 64t61.5 88t29.5 87.5t6 73.5q0 123 -74.5 196.5t-223.5 73.5q-49 0 -63 -4l-41 -274q-1 -7 0 -9.5t8 -2.5h196q3 0 3 -12t-3 -12 h-197q-9 0 -11 -1.5t-3 -9.5q-34 -236 -34 -264z" />
+<glyph unicode="&#xd1;" horiz-adv-x="824" d="M366 745q2 9 11 25q15 25 32.5 38.5t30.5 13.5q16 0 42 -18t38 -18q21 0 40 33q3 7 13 7q6 0 6 -2q-1 -6 -11 -26q-29 -55 -66 -55q-17 0 -41 17.5t-39 17.5q-22 0 -38 -29q-3 -6 -12 -6q-6 0 -6 2zM20 15q0 9 3 10.5t15 1.5h50q40 245 89 514q1 6 4 22.5t5 29.5t2 21 q0 3 -5 12t-10 11t-22 2h-50q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q6 0 53.5 -1.5t58.5 -1.5q13 0 28.5 1.5t16.5 1.5q12 0 20 -13l329 -499q8 -12 16 -12q7 0 39.5 218.5t32.5 263.5q0 12 -2 12h-76q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q11 0 42 -1.5t47 -1.5t44.5 1.5 t39.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-42q-6 0 -80 -467q-10 -60 -16 -168q-1 -15 -4 -20t-12 -5t-28 32q-45 73 -118 180l-256 374q-15 21 -16 21q-4 0 -5 -20q0 -3 -17.5 -117t-35 -241.5t-17.5 -165.5q0 -15 3 -15h85q8 0 9.5 -2t1.5 -11q0 -11 -2 -14 t-9 -3q-11 0 -50.5 1.5t-55.5 1.5q-18 0 -52 -1.5t-35 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#xd2;" horiz-adv-x="734" d="M340 818q0 29 29 29q17 0 30 -25l40 -85q1 -2 1 -5t-4 -3h-18q-1 0 -7 6l-61 60q-10 10 -10 23zM35 280q0 87 32.5 162t85.5 124.5t119.5 78t134.5 28.5q135 0 213.5 -89t78.5 -236q0 -151 -107 -260.5t-258 -109.5q-62 0 -114.5 17.5t-94.5 53t-66 94.5t-24 137z M127 286q0 -116 57 -200t167 -84q75 0 135.5 60t91 144t30.5 167q0 44 -11 89.5t-33.5 87.5t-62.5 68.5t-91 26.5q-71 0 -137 -52.5t-106 -136t-40 -170.5z" />
+<glyph unicode="&#xd3;" horiz-adv-x="734" d="M420 731l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2zM35 280q0 87 32.5 162t85.5 124.5t119.5 78t134.5 28.5q135 0 213.5 -89t78.5 -236q0 -151 -107 -260.5t-258 -109.5q-62 0 -114.5 17.5t-94.5 53t-66 94.5t-24 137z M127 286q0 -116 57 -200t167 -84q75 0 135.5 60t91 144t30.5 167q0 44 -11 89.5t-33.5 87.5t-62.5 68.5t-91 26.5q-71 0 -137 -52.5t-106 -136t-40 -170.5z" />
+<glyph unicode="&#xd4;" horiz-adv-x="734" d="M326 731q0 1 4 5l91 92q11 11 20 11h20q7 0 9 -1.5t7 -9.5l53 -92q2 -3 2 -5t-5 -2h-12q-1 0 -7 6l-63 52q-3 3 -8 0l-85 -52q-2 -1 -4 -2.5t-4 -2.5l-1 -1h-12q-5 0 -5 2zM35 280q0 87 32.5 162t85.5 124.5t119.5 78t134.5 28.5q135 0 213.5 -89t78.5 -236 q0 -151 -107 -260.5t-258 -109.5q-62 0 -114.5 17.5t-94.5 53t-66 94.5t-24 137zM127 286q0 -116 57 -200t167 -84q75 0 135.5 60t91 144t30.5 167q0 44 -11 89.5t-33.5 87.5t-62.5 68.5t-91 26.5q-71 0 -137 -52.5t-106 -136t-40 -170.5z" />
+<glyph unicode="&#xd5;" horiz-adv-x="734" d="M331 745q2 9 11 25q15 25 32.5 38.5t30.5 13.5q15 0 41 -18t39 -18q21 0 40 33q3 7 13 7q6 0 6 -2q-1 -6 -11 -26q-29 -55 -66 -55q-17 0 -41 17.5t-39 17.5q-22 0 -38 -29q-3 -6 -12 -6q-6 0 -6 2zM35 280q0 87 32.5 162t85.5 124.5t119.5 78t134.5 28.5 q135 0 213.5 -89t78.5 -236q0 -151 -107 -260.5t-258 -109.5q-62 0 -114.5 17.5t-94.5 53t-66 94.5t-24 137zM127 286q0 -116 57 -200t167 -84q75 0 135.5 60t91 144t30.5 167q0 44 -11 89.5t-33.5 87.5t-62.5 68.5t-91 26.5q-71 0 -137 -52.5t-106 -136t-40 -170.5z" />
+<glyph unicode="&#xd6;" horiz-adv-x="734" d="M328 785q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM468 785q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM35 280q0 87 32.5 162t85.5 124.5t119.5 78t134.5 28.5q135 0 213.5 -89 t78.5 -236q0 -151 -107 -260.5t-258 -109.5q-62 0 -114.5 17.5t-94.5 53t-66 94.5t-24 137zM127 286q0 -116 57 -200t167 -84q75 0 135.5 60t91 144t30.5 167q0 44 -11 89.5t-33.5 87.5t-62.5 68.5t-91 26.5q-71 0 -137 -52.5t-106 -136t-40 -170.5z" />
+<glyph unicode="&#xd7;" horiz-adv-x="527" d="M88 358q0 5 10.5 15.5t17.5 10.5q6 0 14 -8l116 -115q12 -12 19 -12q6 0 11 5l125 125q6 6 12 6q5 0 15 -10t10 -17q0 -5 -9 -14l-121 -121q-8 -8 -8 -13q0 -4 8 -12l124 -124q6 -6 6 -12t-10.5 -16.5t-15.5 -10.5q-6 0 -13 7l-123 124q-7 7 -13 7q-5 0 -16 -11 l-120 -120q-7 -7 -12 -7t-15.5 10t-10.5 16q0 5 8 13l120 121q9 9 9 15t-7 13l-124 124q-7 7 -7 11z" />
+<glyph unicode="&#xd8;" horiz-adv-x="734" d="M35 280q0 87 32.5 162t85.5 124.5t119.5 78t134.5 28.5q67 0 125 -25q7 -3 10 4l40 70q1 1 3 1q5 0 12 -5.5t6 -7.5l-41 -70q-3 -5 1 -8q65 -40 100.5 -113.5t35.5 -170.5q0 -151 -107 -260.5t-258 -109.5q-74 0 -132 23q-6 3 -10 -3l-30 -51q-2 -2 -3 -2q-4 0 -8.5 2.5 t-8 5.5t-2.5 4l30 52q3 6 -1 9q-2 0 -3 1q-131 76 -131 261zM127 286q0 -136 70 -216q3 -4 4.5 -4.5t2.5 0.5t3 6l306 530q3 6 -1 9q-44 34 -102 34q-71 0 -137 -52.5t-106 -136t-40 -170.5zM224 54q-4 -7 2 -12q53 -40 125 -40q75 0 135.5 60t91 144t30.5 167 q0 56 -17.5 114.5t-52.5 98.5q-4 4 -7 0z" />
+<glyph unicode="&#xd9;" horiz-adv-x="759" d="M328 818q0 29 29 29q17 0 30 -25l40 -85q1 -2 1 -5t-4 -3h-18q-1 0 -7 6l-61 60q-10 10 -10 23zM60 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 52.5 1.5t47.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-32q-5 0 -23.5 -98.5t-35 -211.5 t-16.5 -148q0 -37 15 -64.5t34.5 -40.5t46 -21t40.5 -9t27 -1q42 0 88.5 16t76.5 35q28 19 39 60q12 47 32 163q41 241 48 320h-67q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 46.5 -1.5t57.5 -1.5t48 1.5t34 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5 t-15.5 -1.5h-32q-8 -38 -22 -118q-62 -378 -95 -490q-7 -25 -19 -25h-5q-9 0 -11 11q-1 10 -2.5 23t-2 19.5t-1.5 13t-2.5 9t-4.5 2.5t-45 -24q-113 -62 -211 -62q-82 0 -137 42.5t-55 115.5q0 46 33 248.5t33 229.5q0 5 -1 5h-63q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#xda;" horiz-adv-x="759" d="M408 731l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2zM60 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 52.5 1.5t47.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-32q-5 0 -23.5 -98.5t-35 -211.5 t-16.5 -148q0 -37 15 -64.5t34.5 -40.5t46 -21t40.5 -9t27 -1q42 0 88.5 16t76.5 35q28 19 39 60q12 47 32 163q41 241 48 320h-67q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 46.5 -1.5t57.5 -1.5t48 1.5t34 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5 t-15.5 -1.5h-32q-8 -38 -22 -118q-62 -378 -95 -490q-7 -25 -19 -25h-5q-9 0 -11 11q-1 10 -2.5 23t-2 19.5t-1.5 13t-2.5 9t-4.5 2.5t-45 -24q-113 -62 -211 -62q-82 0 -137 42.5t-55 115.5q0 46 33 248.5t33 229.5q0 5 -1 5h-63q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#xdb;" horiz-adv-x="759" d="M314 731q0 1 4 5l91 92q11 11 20 11h20q7 0 9 -1.5t7 -9.5l53 -92q2 -3 2 -5t-5 -2h-12q-1 0 -7 6l-63 52q-3 3 -8 0l-85 -52q-2 -1 -4 -2.5t-4 -2.5l-1 -1h-12q-5 0 -5 2zM60 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 52.5 1.5t47.5 1.5q10 0 12 -2.5 t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-32q-5 0 -23.5 -98.5t-35 -211.5t-16.5 -148q0 -37 15 -64.5t34.5 -40.5t46 -21t40.5 -9t27 -1q42 0 88.5 16t76.5 35q28 19 39 60q12 47 32 163q41 241 48 320h-67q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 46.5 -1.5 t57.5 -1.5t48 1.5t34 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-32q-8 -38 -22 -118q-62 -378 -95 -490q-7 -25 -19 -25h-5q-9 0 -11 11q-1 10 -2.5 23t-2 19.5t-1.5 13t-2.5 9t-4.5 2.5t-45 -24q-113 -62 -211 -62q-82 0 -137 42.5t-55 115.5q0 46 33 248.5 t33 229.5q0 5 -1 5h-63q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#xdc;" horiz-adv-x="759" d="M316 785q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM456 785q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM60 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 52.5 1.5 t47.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-32q-5 0 -23.5 -98.5t-35 -211.5t-16.5 -148q0 -37 15 -64.5t34.5 -40.5t46 -21t40.5 -9t27 -1q42 0 88.5 16t76.5 35q28 19 39 60q12 47 32 163q41 241 48 320h-67q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4 t11.5 0.5q6 0 46.5 -1.5t57.5 -1.5t48 1.5t34 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-32q-8 -38 -22 -118q-62 -378 -95 -490q-7 -25 -19 -25h-5q-9 0 -11 11q-1 10 -2.5 23t-2 19.5t-1.5 13t-2.5 9t-4.5 2.5t-45 -24q-113 -62 -211 -62q-82 0 -137 42.5 t-55 115.5q0 46 33 248.5t33 229.5q0 5 -1 5h-63q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#xdd;" horiz-adv-x="613" d="M322 731l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2zM20 654q0 7 2 10.5t5 4t11 0.5q6 0 45 -1.5t56 -1.5q16 0 46.5 1.5t41.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-31q-10 0 -11 -2t3 -13q13 -44 103 -265 q6 -12 8 -12q5 0 16 18l35 52l46 68l43 65t34.5 56.5t12.5 29.5v3h-53q-13 0 -15.5 1.5t-2.5 10.5q0 13 2 15.5t12 2.5q11 0 36.5 -1.5t41.5 -1.5q17 0 42.5 1.5t31.5 1.5q11 0 13.5 -2t2.5 -13q0 -6 -0.5 -9t-3 -4.5t-5 -1.5h-7.5h-36q-2 0 -45.5 -58l-97 -133t-80.5 -116 q-5 -9 -8 -22q-44 -260 -44 -270q0 -13 5 -13h63q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -50 1.5t-55 1.5t-49.5 -1.5t-44.5 -1.5q-9 0 -11.5 3t-2.5 13q0 9 3 11.5t15 2.5h42q6 0 30 143l15 90q5 27 5 41l-146 338h-47q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#xde;" horiz-adv-x="566" d="M14 15q0 9 3 10.5t15 1.5h60q5 0 47 279t42 317q0 16 -9 16h-66q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5q6 0 52 -1.5t63 -1.5q16 0 57 1.5t52 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-57q-3 0 -22 -106q-1 -4 -1 -9q0 -7 7 -7q8 0 14 1q23 3 52 3 q99 0 154.5 -47.5t55.5 -123.5q0 -44 -14.5 -78.5t-38 -55.5t-56 -35t-65.5 -19.5t-70 -5.5q-16 0 -44.5 1t-31.5 1q-13 0 -15 -2.5t-4 -14.5q-15 -90 -15 -109q0 -5 1 -5h79q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -58 1.5t-63 1.5t-59 -1.5t-54 -1.5q-10 0 -12 2.5 t-2 15.5zM204 189q0 -10 12 -11q5 -1 18 -1q59 0 107.5 15.5t83 54.5t34.5 97q0 74 -42.5 113.5t-124.5 39.5q-18 0 -28 -1q-9 -1 -12.5 -2.5t-4 -2.5t-1.5 -8q-1 -3 -1 -4l-12 -81q-16 -106 -28 -197q-1 -5 -1 -12z" />
+<glyph unicode="&#xdf;" horiz-adv-x="488" d="M-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5q29 179 58 438q0 4 12 97q11 86 54.5 141.5t120.5 55.5q55 0 87 -34t32 -88q0 -39 -13.5 -71.5t-35 -54t-40.5 -34.5t-38 -21q-6 -3 -11.5 -4.5t-8.5 -2.5 h-2h2q1 -1 5.5 -2t9.5 -3q131 -46 131 -165q0 -89 -43 -148.5t-112 -59.5q-39 0 -64.5 19.5t-25.5 53.5q0 33 39 46q19 6 19 -8q0 -4 -2.5 -19t-2.5 -23q0 -51 40 -51q41 0 63 66.5t22 138.5q0 37 -9 64.5t-19.5 41t-31 23t-30 11l-29.5 4.5q-6 1 -5 12q2 8 7 9q45 4 86 56 t41 135q0 38 -19 63.5t-54 25.5q-26 0 -44.5 -15.5t-28 -40t-14.5 -49.5t-9 -51q-1 -7 -1 -10q-7 -44 -32 -235t-45 -311q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5q-24 0 -46 12.5t-22 23.5z" />
+<glyph unicode="&#xe0;" horiz-adv-x="433" d="M212 575q0 31 34 31q21 0 26 -24l26 -125v-3l1 -3q0 -2 -4 -2h-15q-4 0 -7 6l-57 107q-4 7 -4 13zM25 59q0 46 15 100.5t42 106.5t72 86.5t98 34.5q35 0 56 -30l7.5 -12.5t7.5 -11.5t5 -4t8.5 21t6.5 23q2 6 36 11q21 2 21 -5q0 -3 -40.5 -146.5t-40.5 -169.5 q0 -20 14 -20q9 0 37 28l27 28q3 0 7 -4t4 -10q0 -3 -22 -26t-54 -46.5t-51 -23.5q-27 0 -27 24q0 19 14 72t28 97l15 44q-55 -101 -125 -174q-23 -24 -33.5 -33.5t-28 -19t-34.5 -9.5q-31 0 -48 19.5t-17 49.5zM94 96q0 -53 26 -53q25 0 81.5 62.5t97.5 129.5q15 24 15 54 q0 26 -27.5 42t-54.5 16q-32 0 -65 -46t-53 -105t-20 -100z" />
+<glyph unicode="&#xe1;" horiz-adv-x="433" d="M256 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-5 -6 -8 -6h-15q-4 0 -4 2zM25 59q0 46 15 100.5t42 106.5t72 86.5t98 34.5q35 0 56 -30l7.5 -12.5t7.5 -11.5t5 -4t8.5 21t6.5 23q2 6 36 11q21 2 21 -5q0 -3 -40.5 -146.5t-40.5 -169.5 q0 -20 14 -20q9 0 37 28l27 28q3 0 7 -4t4 -10q0 -3 -22 -26t-54 -46.5t-51 -23.5q-27 0 -27 24q0 19 14 72t28 97l15 44q-55 -101 -125 -174q-23 -24 -33.5 -33.5t-28 -19t-34.5 -9.5q-31 0 -48 19.5t-17 49.5zM94 96q0 -53 26 -53q25 0 81.5 62.5t97.5 129.5q15 24 15 54 q0 26 -27.5 42t-54.5 16q-32 0 -65 -46t-53 -105t-20 -100z" />
+<glyph unicode="&#xe2;" horiz-adv-x="433" d="M174 462l4 6l91 104q11 12 20 12h20q7 0 9 -1.5t7 -10.5l53 -104q2 -3 2 -6q0 -2 -5 -2h-12q-1 0 -7 6l-63 62q-3 3 -8 0l-85 -62q-8 -6 -9 -6h-12q-5 0 -5 2zM25 59q0 46 15 100.5t42 106.5t72 86.5t98 34.5q35 0 56 -30l7.5 -12.5t7.5 -11.5t5 -4t8.5 21t6.5 23 q2 6 36 11q21 2 21 -5q0 -3 -40.5 -146.5t-40.5 -169.5q0 -20 14 -20q9 0 37 28l27 28q3 0 7 -4t4 -10q0 -3 -22 -26t-54 -46.5t-51 -23.5q-27 0 -27 24q0 19 14 72t28 97l15 44q-55 -101 -125 -174q-23 -24 -33.5 -33.5t-28 -19t-34.5 -9.5q-31 0 -48 19.5t-17 49.5zM94 96 q0 -53 26 -53q25 0 81.5 62.5t97.5 129.5q15 24 15 54q0 26 -27.5 42t-54.5 16q-32 0 -65 -46t-53 -105t-20 -100z" />
+<glyph unicode="&#xe3;" horiz-adv-x="433" d="M176 495q2 9 11 25q15 25 32.5 38.5t30.5 13.5q16 0 42 -18t38 -18q21 0 40 33q3 7 13 7q6 0 6 -2q-1 -6 -11 -26q-29 -55 -66 -55q-17 0 -41 17.5t-39 17.5q-22 0 -38 -29q-3 -6 -12 -6q-6 0 -6 2zM25 59q0 46 15 100.5t42 106.5t72 86.5t98 34.5q35 0 56 -30l7.5 -12.5 t7.5 -11.5t5 -4t8.5 21t6.5 23q2 6 36 11q21 2 21 -5q0 -3 -40.5 -146.5t-40.5 -169.5q0 -20 14 -20q9 0 37 28l27 28q3 0 7 -4t4 -10q0 -3 -22 -26t-54 -46.5t-51 -23.5q-27 0 -27 24q0 19 14 72t28 97l15 44q-55 -101 -125 -174q-23 -24 -33.5 -33.5t-28 -19t-34.5 -9.5 q-31 0 -48 19.5t-17 49.5zM94 96q0 -53 26 -53q25 0 81.5 62.5t97.5 129.5q15 24 15 54q0 26 -27.5 42t-54.5 16q-32 0 -65 -46t-53 -105t-20 -100z" />
+<glyph unicode="&#xe4;" horiz-adv-x="433" d="M173 535q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM313 535q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM25 59q0 46 15 100.5t42 106.5t72 86.5t98 34.5q35 0 56 -30l7.5 -12.5 t7.5 -11.5t5 -4t8.5 21t6.5 23q2 6 36 11q21 2 21 -5q0 -3 -40.5 -146.5t-40.5 -169.5q0 -20 14 -20q9 0 37 28l27 28q3 0 7 -4t4 -10q0 -3 -22 -26t-54 -46.5t-51 -23.5q-27 0 -27 24q0 19 14 72t28 97l15 44q-55 -101 -125 -174q-23 -24 -33.5 -33.5t-28 -19t-34.5 -9.5 q-31 0 -48 19.5t-17 49.5zM94 96q0 -53 26 -53q25 0 81.5 62.5t97.5 129.5q15 24 15 54q0 26 -27.5 42t-54.5 16q-32 0 -65 -46t-53 -105t-20 -100z" />
+<glyph unicode="&#xe5;" horiz-adv-x="433" d="M216 531q0 28 20 48t48 20t48 -20t20 -48t-20 -48t-48 -20t-48 20t-20 48zM244 531q0 -17 11.5 -28.5t28.5 -11.5t28.5 11.5t11.5 28.5t-11.5 28.5t-28.5 11.5t-28.5 -11.5t-11.5 -28.5zM25 59q0 46 15 100.5t42 106.5t72 86.5t98 34.5q35 0 56 -30l7.5 -12.5t7.5 -11.5 t5 -4t8.5 21t6.5 23q2 6 36 11q21 2 21 -5q0 -3 -40.5 -146.5t-40.5 -169.5q0 -20 14 -20q9 0 37 28l27 28q3 0 7 -4t4 -10q0 -3 -22 -26t-54 -46.5t-51 -23.5q-27 0 -27 24q0 19 14 72t28 97l15 44q-55 -101 -125 -174q-23 -24 -33.5 -33.5t-28 -19t-34.5 -9.5 q-31 0 -48 19.5t-17 49.5zM94 96q0 -53 26 -53q25 0 81.5 62.5t97.5 129.5q15 24 15 54q0 26 -27.5 42t-54.5 16q-32 0 -65 -46t-53 -105t-20 -100z" />
+<glyph unicode="&#xe6;" horiz-adv-x="636" d="M25 59q0 46 15 100.5t42 106.5t72 86.5t98 34.5q35 0 56 -30l7.5 -12.5t7.5 -11.5t5 -4t8.5 21t6.5 23q2 6 36 11q21 2 21 -5q0 -1 -7 -29q58 41 123 41q93 0 93 -66q0 -43 -35 -77t-88 -54q-65 -24 -141 -24q-8 0 -8 -46q0 -89 96 -89q42 0 82 21.5t63.5 43.5t24.5 22 q4 0 8.5 -5t4.5 -9q0 -2 -11 -13.5t-32 -28t-47 -32.5t-61 -27.5t-68 -11.5q-55 0 -90.5 27.5t-35.5 82.5q0 36 7 67q-49 -75 -92 -120q-23 -24 -33.5 -33.5t-28 -19t-34.5 -9.5q-31 0 -48 19.5t-17 49.5zM94 96q0 -53 26 -53q25 0 81.5 62.5t97.5 129.5q15 24 15 54 q0 26 -27.5 42t-54.5 16q-32 0 -65 -46t-53 -105t-20 -100zM352 200q0 -7 10 -7q74 0 128 36.5t54 96.5q0 19 -14 30t-36 11q-82 0 -128 -122q-14 -35 -14 -45z" />
+<glyph unicode="&#xe7;" horiz-adv-x="402" d="M25 128q0 114 71 188.5t150 74.5q58 0 86 -31q22 -24 22 -56q0 -21 -12 -35t-31 -14q-22 0 -22 37q0 4 0.5 12t0.5 12q0 20 -11.5 34t-35.5 14q-28 0 -57 -18.5t-49 -48.5q-47 -71 -47 -153q0 -16 2.5 -28.5t11 -32.5t32 -31.5t60.5 -11.5q38 0 76.5 19.5t61.5 39 t24 19.5q3 0 7.5 -5t4.5 -9q0 -5 -30 -31.5t-82 -54t-96 -27.5h-2q-32 -53 -32 -58q0 -2 5 -2q8 2 24 2q35 0 56 -19t21 -45q0 -37 -32 -61.5t-80 -24.5q-22 0 -40.5 6t-26.5 12t-8 9q0 10 8 10l8 -4q8 -3 21 -6.5t27 -3.5q69 0 69 49q0 18 -11 31.5t-36 13.5q-8 0 -16 -1.5 t-13.5 -3t-6.5 -1.5q-7 0 -7 4q0 1 9.5 17.5l22.5 40.5l20 36q-63 6 -90 44.5t-27 91.5z" />
+<glyph unicode="&#xe8;" horiz-adv-x="390" d="M211 575q0 31 34 31q21 0 26 -24l26 -125q0 -1 1 -3v-3q0 -2 -4 -2h-15q-4 0 -7 6l-57 107q-4 7 -4 13zM25 105q0 114 73 200t172 86q93 0 93 -66q0 -43 -35 -77t-88 -54q-65 -24 -141 -24q-8 0 -8 -46q0 -89 96 -89q42 0 82 21.5t63.5 43.5t24.5 22q4 0 8.5 -5t4.5 -9 q0 -2 -11 -13.5t-32 -28t-47 -32.5t-61 -27.5t-68 -11.5q-55 0 -90.5 27.5t-35.5 82.5zM106 200q0 -7 10 -7q74 0 128 36.5t54 96.5q0 19 -14 30t-36 11q-82 0 -128 -122q-14 -35 -14 -45z" />
+<glyph unicode="&#xe9;" horiz-adv-x="390" d="M255 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-4 -6 -8 -6h-15q-4 0 -4 2zM25 105q0 114 73 200t172 86q93 0 93 -66q0 -43 -35 -77t-88 -54q-65 -24 -141 -24q-8 0 -8 -46q0 -89 96 -89q42 0 82 21.5t63.5 43.5t24.5 22q4 0 8.5 -5t4.5 -9 q0 -2 -11 -13.5t-32 -28t-47 -32.5t-61 -27.5t-68 -11.5q-55 0 -90.5 27.5t-35.5 82.5zM106 200q0 -7 10 -7q74 0 128 36.5t54 96.5q0 19 -14 30t-36 11q-82 0 -128 -122q-14 -35 -14 -45z" />
+<glyph unicode="&#xea;" horiz-adv-x="390" d="M173 462l4 6l91 104q11 12 20 12h20q7 0 9 -1.5t7 -10.5l53 -104q2 -3 2 -6q0 -2 -5 -2h-12q-1 0 -7 6l-63 62q-3 3 -8 0l-85 -62q-7 -6 -9 -6h-12q-5 0 -5 2zM25 105q0 114 73 200t172 86q93 0 93 -66q0 -43 -35 -77t-88 -54q-65 -24 -141 -24q-8 0 -8 -46q0 -89 96 -89 q42 0 82 21.5t63.5 43.5t24.5 22q4 0 8.5 -5t4.5 -9q0 -2 -11 -13.5t-32 -28t-47 -32.5t-61 -27.5t-68 -11.5q-55 0 -90.5 27.5t-35.5 82.5zM106 200q0 -7 10 -7q74 0 128 36.5t54 96.5q0 19 -14 30t-36 11q-82 0 -128 -122q-14 -35 -14 -45z" />
+<glyph unicode="&#xeb;" horiz-adv-x="390" d="M172 535q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM312 535q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM25 105q0 114 73 200t172 86q93 0 93 -66q0 -43 -35 -77t-88 -54 q-65 -24 -141 -24q-8 0 -8 -46q0 -89 96 -89q42 0 82 21.5t63.5 43.5t24.5 22q4 0 8.5 -5t4.5 -9q0 -2 -11 -13.5t-32 -28t-47 -32.5t-61 -27.5t-68 -11.5q-55 0 -90.5 27.5t-35.5 82.5zM106 200q0 -7 10 -7q74 0 128 36.5t54 96.5q0 19 -14 30t-36 11q-82 0 -128 -122 q-14 -35 -14 -45z" />
+<glyph unicode="&#xec;" horiz-adv-x="270" d="M114 575q0 31 34 31q21 0 26 -24l26 -125v-3l1 -3q0 -2 -4 -2h-15q-4 0 -7 6l-57 107q-4 7 -4 13zM25 282q0 4 29.5 28.5t67 48.5t54.5 24q20 0 20 -22q0 -26 -32.5 -150t-32.5 -136q0 -20 13 -20q8 0 27 16t35 32t17 16q3 0 7.5 -5t4.5 -7q0 -12 -64.5 -62.5 t-86.5 -50.5q-24 0 -24 18q0 24 35.5 145t35.5 153q0 18 -12 18q-11 0 -30.5 -15t-35 -29.5t-16.5 -14.5q-4 0 -8 4.5t-4 8.5z" />
+<glyph unicode="&#xed;" horiz-adv-x="270" d="M158 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-5 -6 -8 -6h-15q-4 0 -4 2zM25 282q0 4 29.5 28.5t67 48.5t54.5 24q20 0 20 -22q0 -26 -32.5 -150t-32.5 -136q0 -20 13 -20q8 0 27 16t35 32t17 16q3 0 7.5 -5t4.5 -7q0 -12 -64.5 -62.5 t-86.5 -50.5q-24 0 -24 18q0 24 35.5 145t35.5 153q0 18 -12 18q-11 0 -30.5 -15t-35 -29.5t-16.5 -14.5q-4 0 -8 4.5t-4 8.5z" />
+<glyph unicode="&#xee;" horiz-adv-x="270" d="M76 462l4 6l91 104q11 12 20 12h20q7 0 9 -1.5t7 -10.5l53 -104q2 -3 2 -6q0 -2 -5 -2h-12q-1 0 -7 6l-63 62q-3 3 -8 0l-85 -62q-8 -6 -9 -6h-12q-5 0 -5 2zM25 282q0 4 29.5 28.5t67 48.5t54.5 24q20 0 20 -22q0 -26 -32.5 -150t-32.5 -136q0 -20 13 -20q8 0 27 16 t35 32t17 16q3 0 7.5 -5t4.5 -7q0 -12 -64.5 -62.5t-86.5 -50.5q-24 0 -24 18q0 24 35.5 145t35.5 153q0 18 -12 18q-11 0 -30.5 -15t-35 -29.5t-16.5 -14.5q-4 0 -8 4.5t-4 8.5z" />
+<glyph unicode="&#xef;" horiz-adv-x="270" d="M82 535q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM208 535q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM25 282q0 4 29.5 28.5t67 48.5t54.5 24q20 0 20 -22q0 -26 -32.5 -150 t-32.5 -136q0 -20 13 -20q8 0 27 16t35 32t17 16q3 0 7.5 -5t4.5 -7q0 -12 -64.5 -62.5t-86.5 -50.5q-24 0 -24 18q0 24 35.5 145t35.5 153q0 18 -12 18q-11 0 -30.5 -15t-35 -29.5t-16.5 -14.5q-4 0 -8 4.5t-4 8.5z" />
+<glyph unicode="&#xf0;" horiz-adv-x="411" d="M25 138q0 110 65 183.5t164 73.5q32 0 61 -16q-5 30 -22.5 72t-31.5 66q-4 6 -7 4l-113 -31q-2 0 -7 9t-5 13l25 7l54.5 15t32.5 9q7 1 2 6q-40 64 -92 112q-8 8 0 8l44 1q14 0 96 -108q4 -5 12 -3q96 26 100 26q2 0 6.5 -8.5t4.5 -12.5t-101 -26q-6 -1 -1 -8 q74 -127 74 -265q0 -116 -63 -194.5t-160 -78.5q-65 0 -101.5 42.5t-36.5 103.5zM87 146q0 -24 1.5 -39.5t8 -40t24 -37.5t44.5 -13q46 0 84 47.5t56.5 107t18.5 107.5q0 96 -81 96q-57 0 -106.5 -78.5t-49.5 -149.5z" />
+<glyph unicode="&#xf1;" horiz-adv-x="515" d="M244 495q2 9 11 25q15 25 32.5 38.5t30.5 13.5q16 0 42 -18t38 -18q21 0 40 33q3 7 13 7q6 0 6 -2q-1 -6 -11 -26q-29 -55 -66 -55q-17 0 -41 17.5t-39 17.5q-22 0 -38 -29q-3 -6 -12 -6q-6 0 -6 2zM15 287q0 2 29.5 26t72.5 48.5t70 24.5q21 0 21 -21t-6 -55t-12 -57 l-19.5 -72.5t-16.5 -62.5q74 131 134.5 199.5t116.5 68.5q51 0 51 -44q0 -29 -38.5 -145t-38.5 -127q0 -20 19 -20q13 0 34.5 18.5t38 37t17.5 18.5q3 0 7.5 -4.5t4.5 -6.5q0 -5 -24 -31.5t-63.5 -53.5t-72.5 -27q-15 0 -23.5 11.5t-8.5 29.5q0 28 40 135t40 138 q0 12 -6 20.5t-16 8.5q-26 0 -79 -66.5t-100 -141.5q-22 -36 -44 -112q-7 -25 -15 -26q-40 -4 -48 -4q-7 0 -5 10q60 249 60 312q0 18 -13 18q-14 0 -54 -32l-39 -32q-3 0 -8.5 5t-5.5 12z" />
+<glyph unicode="&#xf2;" horiz-adv-x="419" d="M218 575q0 31 34 31q21 0 26 -24l26 -125v-3l1 -3q0 -2 -4 -2h-15q-4 0 -7 6l-57 107q-4 7 -4 13zM25 138q0 110 66 184.5t165 74.5q71 0 104.5 -50t33.5 -109q0 -94 -68 -170t-161 -76q-67 0 -103.5 42.5t-36.5 103.5zM87 146q0 -130 80 -130q46 0 85.5 47.5t59 107 t19.5 107.5q0 36 -19 66t-67 30q-57 0 -107.5 -78.5t-50.5 -149.5z" />
+<glyph unicode="&#xf3;" horiz-adv-x="419" d="M262 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-5 -6 -8 -6h-15q-4 0 -4 2zM25 138q0 110 66 184.5t165 74.5q71 0 104.5 -50t33.5 -109q0 -94 -68 -170t-161 -76q-67 0 -103.5 42.5t-36.5 103.5zM87 146q0 -130 80 -130q46 0 85.5 47.5t59 107 t19.5 107.5q0 36 -19 66t-67 30q-57 0 -107.5 -78.5t-50.5 -149.5z" />
+<glyph unicode="&#xf4;" horiz-adv-x="419" d="M180 462l4 6l91 104q11 12 20 12h20q7 0 9 -1.5t7 -10.5l53 -104q2 -3 2 -6q0 -2 -5 -2h-12q-1 0 -7 6l-63 62q-3 3 -8 0l-85 -62q-8 -6 -9 -6h-12q-5 0 -5 2zM25 138q0 110 66 184.5t165 74.5q71 0 104.5 -50t33.5 -109q0 -94 -68 -170t-161 -76q-67 0 -103.5 42.5 t-36.5 103.5zM87 146q0 -130 80 -130q46 0 85.5 47.5t59 107t19.5 107.5q0 36 -19 66t-67 30q-57 0 -107.5 -78.5t-50.5 -149.5z" />
+<glyph unicode="&#xf5;" horiz-adv-x="419" d="M182 495q2 9 11 25q15 25 32.5 38.5t30.5 13.5q16 0 42 -18t38 -18q21 0 40 33q3 7 13 7q6 0 6 -2q-1 -6 -11 -26q-29 -55 -66 -55q-17 0 -41 17.5t-39 17.5q-22 0 -38 -29q-3 -6 -12 -6q-6 0 -6 2zM25 138q0 110 66 184.5t165 74.5q71 0 104.5 -50t33.5 -109 q0 -94 -68 -170t-161 -76q-67 0 -103.5 42.5t-36.5 103.5zM87 146q0 -130 80 -130q46 0 85.5 47.5t59 107t19.5 107.5q0 36 -19 66t-67 30q-57 0 -107.5 -78.5t-50.5 -149.5z" />
+<glyph unicode="&#xf6;" horiz-adv-x="419" d="M179 535q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM319 535q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM25 138q0 110 66 184.5t165 74.5q71 0 104.5 -50t33.5 -109 q0 -94 -68 -170t-161 -76q-67 0 -103.5 42.5t-36.5 103.5zM87 146q0 -130 80 -130q46 0 85.5 47.5t59 107t19.5 107.5q0 36 -19 66t-67 30q-57 0 -107.5 -78.5t-50.5 -149.5z" />
+<glyph unicode="&#xf7;" horiz-adv-x="527" d="M31 212q0 8 0.5 11.5t4.5 6t13 2.5h431q8 0 11.5 -2.5t4 -6t0.5 -12.5q0 -14 -3 -18.5t-18 -4.5h-427q-9 0 -12.5 3t-4 6.5t-0.5 14.5zM212 320q0 16 12.5 28.5t29.5 12.5q16 0 28 -11.5t12 -28.5t-12 -29t-29 -12t-29 12t-12 28zM217 101q0 16 12 28t29 12 q16 0 28.5 -12.5t12.5 -28.5t-11.5 -28t-28.5 -12t-29.5 12t-12.5 29z" />
+<glyph unicode="&#xf8;" horiz-adv-x="419" d="M25 138q0 110 66 184.5t165 74.5q20 0 35 -4q11 -2 14 1q1 1 2 4l31 54q1 2 4 2q5 0 12 -5t6 -7l-30 -52q-4 -7 -4 -9t6 -6q32 -23 47 -61t15 -76q0 -94 -68 -170t-161 -76q-25 0 -49 8q-4 1 -5.5 1.5t-3 0t-2.5 -2l-3 -4.5l-32 -56q-2 -2 -3 -2q-4 0 -11 5t-7 7l1 3 l32 55q4 6 -3 12q-54 42 -54 119zM87 146q0 -57 14 -87q4 -8 5 -8t6 8l169 295q5 10 2 13q-1 1 -4 2q-13 5 -34 5q-57 0 -107.5 -78.5t-50.5 -149.5zM127 39q-5 -9 1 -13q17 -10 39 -10q46 0 85.5 47.5t59 107t19.5 107.5q0 40 -17 64q-4 6 -6 6t-7 -8z" />
+<glyph unicode="&#xf9;" horiz-adv-x="521" d="M246 575q0 31 34 31q21 0 26 -24l26 -125v-3l1 -3q0 -2 -4 -2h-15q-4 0 -7 6l-57 107q-4 7 -4 13zM15 256q0 2 12 19t32 41.5t38 43.5q31 31 71 31q22 0 38.5 -9t16.5 -27q0 -13 -32 -132.5t-32 -145.5q0 -23 28 -23q33 0 88 78q72 104 101 199q6 24 12 55q1 4 27 7 q15 2 26 3q9 0 9 -9q0 -5 -27.5 -145.5t-27.5 -152.5q0 -25 19 -25q11 0 31 22.5t36 45t17 22.5q8 0 8 -7q0 -6 -22 -40.5t-57 -70.5t-62 -36q-14 0 -23.5 7.5t-9.5 19.5q0 22 22.5 122.5t26.5 130.5q-1 -3 -10 -22t-26 -50t-33 -55q-104 -158 -173 -158q-55 0 -55 42 q0 11 30.5 125.5t30.5 152.5q0 29 -20 29q-11 0 -34 -24.5t-41.5 -49t-20.5 -24.5q-4 0 -9 3t-5 7z" />
+<glyph unicode="&#xfa;" horiz-adv-x="521" d="M290 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-5 -6 -8 -6h-15q-4 0 -4 2zM15 256q0 2 12 19t32 41.5t38 43.5q31 31 71 31q22 0 38.5 -9t16.5 -27q0 -13 -32 -132.5t-32 -145.5q0 -23 28 -23q33 0 88 78q72 104 101 199q6 24 12 55q1 4 27 7 q15 2 26 3q9 0 9 -9q0 -5 -27.5 -145.5t-27.5 -152.5q0 -25 19 -25q11 0 31 22.5t36 45t17 22.5q8 0 8 -7q0 -6 -22 -40.5t-57 -70.5t-62 -36q-14 0 -23.5 7.5t-9.5 19.5q0 22 22.5 122.5t26.5 130.5q-1 -3 -10 -22t-26 -50t-33 -55q-104 -158 -173 -158q-55 0 -55 42 q0 11 30.5 125.5t30.5 152.5q0 29 -20 29q-11 0 -34 -24.5t-41.5 -49t-20.5 -24.5q-4 0 -9 3t-5 7z" />
+<glyph unicode="&#xfb;" horiz-adv-x="521" d="M208 462l4 6l91 104q11 12 20 12h20q7 0 9 -1.5t7 -10.5l53 -104q2 -3 2 -6q0 -2 -5 -2h-12q-1 0 -7 6l-63 62q-3 3 -8 0l-85 -62q-8 -6 -9 -6h-12q-5 0 -5 2zM15 256q0 2 12 19t32 41.5t38 43.5q31 31 71 31q22 0 38.5 -9t16.5 -27q0 -13 -32 -132.5t-32 -145.5 q0 -23 28 -23q33 0 88 78q72 104 101 199q6 24 12 55q1 4 27 7q15 2 26 3q9 0 9 -9q0 -5 -27.5 -145.5t-27.5 -152.5q0 -25 19 -25q11 0 31 22.5t36 45t17 22.5q8 0 8 -7q0 -6 -22 -40.5t-57 -70.5t-62 -36q-14 0 -23.5 7.5t-9.5 19.5q0 22 22.5 122.5t26.5 130.5 q-1 -3 -10 -22t-26 -50t-33 -55q-104 -158 -173 -158q-55 0 -55 42q0 11 30.5 125.5t30.5 152.5q0 29 -20 29q-11 0 -34 -24.5t-41.5 -49t-20.5 -24.5q-4 0 -9 3t-5 7z" />
+<glyph unicode="&#xfc;" horiz-adv-x="521" d="M207 535q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM347 535q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM15 256q0 2 12 19t32 41.5t38 43.5q31 31 71 31q22 0 38.5 -9t16.5 -27 q0 -13 -32 -132.5t-32 -145.5q0 -23 28 -23q33 0 88 78q72 104 101 199q6 24 12 55q1 4 27 7q15 2 26 3q9 0 9 -9q0 -5 -27.5 -145.5t-27.5 -152.5q0 -25 19 -25q11 0 31 22.5t36 45t17 22.5q8 0 8 -7q0 -6 -22 -40.5t-57 -70.5t-62 -36q-14 0 -23.5 7.5t-9.5 19.5 q0 22 22.5 122.5t26.5 130.5q-1 -3 -10 -22t-26 -50t-33 -55q-104 -158 -173 -158q-55 0 -55 42q0 11 30.5 125.5t30.5 152.5q0 29 -20 29q-11 0 -34 -24.5t-41.5 -49t-20.5 -24.5q-4 0 -9 3t-5 7z" />
+<glyph unicode="&#xfd;" horiz-adv-x="422" d="M251 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-4 -6 -8 -6h-15q-4 0 -4 2zM-13 -262q0 11 4 19t13 13.5t16.5 8t21 6.5t19.5 6q33 12 54 49q37 69 48 105.5t11 71.5q0 320 -69 320q-18 0 -37 -15.5t-31 -30.5t-13 -15t-4.5 1t-6.5 3.5t-3 5.5 q0 4 16.5 26.5t47.5 46t61 23.5q56 0 75 -86q12 -52 20 -241q1 -6 1 -12l35 64.5t48 94t29 74.5t17 101q1 17 11 17q12 0 24 -7t12 -18q0 -5 -2 -17q-12 -76 -148 -311l-29 -49l-10 -19q-82 -157 -101 -190q-11 -20 -39 -37q-58 -35 -74 -35q-8 0 -12.5 9t-4.5 18z" />
+<glyph unicode="&#xfe;" horiz-adv-x="430" d="M-44 -256q0 14 3.5 18t15.5 4h16q12 0 16 3.5t6 17.5q26 137 43 243l35 208q44 249 59 374q2 10 -1 14t-13 1q-66 -18 -74 -18q-5 0 -3 20q1 8 2.5 9.5t7.5 3.5q39 9 75.5 18.5l53.5 14t19 4.5q10 0 10 -9q0 -8 -13 -87.5t-37 -209.5t-47 -242q43 107 100 194 q37 57 99 57q44 0 60 -23.5t16 -67.5q0 -110 -74 -204t-151 -94q-11 0 -32 3.5t-24 3.5q-12 0 -13 -8l-32 -209q-5 -23 9 -24q16 -2 40 -4q14 -1 19.5 -1.5t11 -2t7 -4t1.5 -6.5q0 -14 -4.5 -17.5t-15.5 -3.5q-1 0 -27 3.5t-67.5 7t-79.5 3.5q-17 0 -17 10zM125 51 q0 -32 64 -32q33 0 69.5 42.5t60.5 103.5t24 113q0 64 -44 64q-15 0 -29.5 -9.5t-29 -30t-22.5 -34t-22 -41.5l-16 -32q-55 -105 -55 -144z" />
+<glyph unicode="&#xff;" horiz-adv-x="422" d="M168 535q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM308 535q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM-13 -262q0 11 4 19t13 13.5t16.5 8t21 6.5t19.5 6q33 12 54 49 q37 69 48 105.5t11 71.5q0 320 -69 320q-18 0 -37 -15.5t-31 -30.5t-13 -15t-4.5 1t-6.5 3.5t-3 5.5q0 4 16.5 26.5t47.5 46t61 23.5q56 0 75 -86q12 -52 20 -241q1 -6 1 -12l35 64.5t48 94t29 74.5t17 101q1 17 11 17q12 0 24 -7t12 -18q0 -5 -2 -17q-12 -76 -148 -311 l-29 -49l-10 -19q-82 -157 -101 -190q-11 -20 -39 -37q-58 -35 -74 -35q-8 0 -12.5 9t-4.5 18z" />
+<glyph unicode="&#x100;" horiz-adv-x="688" d="M401 788l2 21q1 6 2 7t7 1h181q5 0 6.5 -1t1.5 -6l-2 -23q-5 -8 -8 -8h-181q-7 0 -8.5 1t-0.5 8zM20 15q0 9 3 10.5t15 1.5h33q3 0 72 118l155.5 266t121.5 199q4 5 22.5 24.5t28.5 38.5q7 14 15 14q3 0 5 -1l3 -1.5t2 -3t1 -3.5t1 -5t1 -5q104 -641 116 -641h42 q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5t-50.5 1.5q-16 0 -58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h57q2 0 2 11q0 24 -13.5 121t-14.5 103q-1 14 -4 16.5t-14 2.5h-189q-15 0 -23 -15q-121 -227 -121 -238l1 -1h68q8 0 9.5 -2t1.5 -11 q0 -11 -2 -14t-9 -3q-11 0 -48.5 1.5t-53.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5zM284 311q0 -6 18 -6h167q13 0 13 5q0 7 -11 74l-22 131t-12 64q-3 0 -13 -19l-133 -234q-7 -12 -7 -15z" />
+<glyph unicode="&#x101;" horiz-adv-x="433" d="M184 518l2 21q1 6 2 7t7 1h181q6 0 7 -1t1 -6l-2 -23q-5 -8 -8 -8h-181q-7 0 -8.5 1t-0.5 8zM25 59q0 46 15 100.5t42 106.5t72 86.5t98 34.5q35 0 56 -30l7.5 -12.5t7.5 -11.5t5 -4t8.5 21t6.5 23q2 6 36 11q21 2 21 -5q0 -3 -40.5 -146.5t-40.5 -169.5q0 -20 14 -20 q9 0 37 28l27 28q3 0 7 -4t4 -10q0 -3 -22 -26t-54 -46.5t-51 -23.5q-27 0 -27 24q0 19 14 72t28 97l15 44q-55 -101 -125 -174q-23 -24 -33.5 -33.5t-28 -19t-34.5 -9.5q-31 0 -48 19.5t-17 49.5zM94 96q0 -53 26 -53q25 0 81.5 62.5t97.5 129.5q15 24 15 54q0 26 -27.5 42 t-54.5 16q-32 0 -65 -46t-53 -105t-20 -100z" />
+<glyph unicode="&#x102;" horiz-adv-x="688" d="M415 810q0 28 4 28h13q1 0 1 -2q0 -31 15.5 -45t52.5 -14q53 0 77 32q4 6 7.5 13.5l5.5 11.5t3 4h13q-6 -46 -37.5 -77.5t-76.5 -31.5q-41 0 -59.5 23t-18.5 58zM20 15q0 9 3 10.5t15 1.5h33q3 0 72 118l155.5 266t121.5 199q4 5 22.5 24.5t28.5 38.5q7 14 15 14 q3 0 5 -1l3 -1.5t2 -3t1 -3.5t1 -5t1 -5q104 -641 116 -641h42q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -39.5 1.5t-50.5 1.5q-16 0 -58 -1.5t-53 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h57q2 0 2 11q0 24 -13.5 121t-14.5 103q-1 14 -4 16.5t-14 2.5h-189 q-15 0 -23 -15q-121 -227 -121 -238l1 -1h68q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -48.5 1.5t-53.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5zM284 311q0 -6 18 -6h167q13 0 13 5q0 7 -11 74l-22 131t-12 64q-3 0 -13 -19l-133 -234q-7 -12 -7 -15z" />
+<glyph unicode="&#x103;" horiz-adv-x="433" d="M200 552q0 32 4 32h13q1 0 1 -3q0 -9 2 -21q9 -49 66 -49q52 0 78 40q4 7 7.5 15.5t5 13t2.5 4.5h13q-6 -53 -37.5 -89t-76.5 -36q-41 0 -59.5 26.5t-18.5 66.5zM25 59q0 46 15 100.5t42 106.5t72 86.5t98 34.5q35 0 56 -30l7.5 -12.5t7.5 -11.5t5 -4t8.5 21t6.5 23 q2 6 36 11q21 2 21 -5q0 -3 -40.5 -146.5t-40.5 -169.5q0 -20 14 -20q9 0 37 28l27 28q3 0 7 -4t4 -10q0 -3 -22 -26t-54 -46.5t-51 -23.5q-27 0 -27 24q0 19 14 72t28 97l15 44q-55 -101 -125 -174q-23 -24 -33.5 -33.5t-28 -19t-34.5 -9.5q-31 0 -48 19.5t-17 49.5zM94 96 q0 -53 26 -53q25 0 81.5 62.5t97.5 129.5q15 24 15 54q0 26 -27.5 42t-54.5 16q-32 0 -65 -46t-53 -105t-20 -100z" />
+<glyph unicode="&#x104;" horiz-adv-x="688" d="M20 15q0 9 3 10.5t15 1.5h33q3 0 72 118l155.5 266t121.5 199q4 5 22.5 24.5t28.5 38.5q7 14 15 14q3 0 5 -1l3 -1.5t2 -3t1 -3.5t1 -5t1 -5q104 -641 116 -641h42q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -19 0.5t-31 1.5t-29 1q-107 -95 -107 -177 q0 -24 14.5 -44.5t34.5 -20.5t42 11t36 22l14 11q1 0 5 -6t4 -7q0 -3 -19 -19t-55 -34t-72 -18q-30 0 -50.5 26t-20.5 58q0 31 26 70t47 60l71 68q-17 0 -50 -1.5t-42 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h57q2 0 2 11q0 24 -13.5 121t-14.5 103q-1 14 -4 16.5 t-14 2.5h-189q-15 0 -23 -15q-121 -227 -121 -238l1 -1h68q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -48.5 1.5t-53.5 1.5t-39 -1.5t-34 -1.5q-10 0 -12 2.5t-2 15.5zM284 311q0 -6 18 -6h167q13 0 13 5q0 7 -11 74l-22 131t-12 64q-3 0 -13 -19l-133 -234 q-7 -12 -7 -15z" />
+<glyph unicode="&#x105;" horiz-adv-x="433" d="M25 59q0 46 15 100.5t42 106.5t72 86.5t98 34.5q35 0 56 -30l7.5 -12.5t7.5 -11.5t5 -4t8.5 21t6.5 23q2 6 36 11q21 2 21 -5q0 -3 -40.5 -146.5t-40.5 -169.5q0 -20 14 -20q9 0 37 28l27 28q3 0 7 -4t4 -10q0 -2 -11 -13.5t-30 -29t-36 -30.5q-22 -17 -33 -27 q-91 -89 -91 -162q0 -24 14.5 -44.5t34.5 -20.5t42 11t36 22l14 11q1 0 5 -6t4 -7q0 -3 -19 -19t-55 -34t-72 -18q-30 0 -50.5 26t-20.5 58q0 29 23 65t44.5 58.5t65.5 64.5q-19 3 -19 23q0 19 14 72t28 97l15 44q-55 -101 -125 -174q-23 -24 -33.5 -33.5t-28 -19 t-34.5 -9.5q-31 0 -48 19.5t-17 49.5zM94 96q0 -53 26 -53q25 0 81.5 62.5t97.5 129.5q15 24 15 54q0 26 -27.5 42t-54.5 16q-32 0 -65 -46t-53 -105t-20 -100z" />
+<glyph unicode="&#x106;" horiz-adv-x="686" d="M389 731l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2zM35 291q0 160 108 270t255 110q62 0 120 -24.5t92 -62.5l12 41q8 0 18.5 -3.5t10.5 -7.5q0 -3 -7.5 -41l-17 -84t-10.5 -54q-1 -5 -13 -5q-9 0 -16 4t-7 7q0 1 11.5 46.5 t11.5 50.5t-28 29.5t-79 50t-99 25.5q-75 0 -139 -56t-98.5 -137t-34.5 -162q0 -123 69.5 -195.5t172.5 -72.5q47 0 91 16.5t67 33.5t26 26q10 29 25 84q3 9 8 10.5t15 -1.5q17 -4 17 -11q0 -6 -33 -116q-5 -18 -81.5 -47t-141.5 -29q-64 0 -119.5 16.5t-103 50.5t-75 95 t-27.5 143z" />
+<glyph unicode="&#x107;" horiz-adv-x="402" d="M250 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-5 -6 -8 -6h-15q-4 0 -4 2zM25 128q0 114 71 188.5t150 74.5q58 0 86 -31q22 -24 22 -56q0 -21 -12 -35t-31 -14q-22 0 -22 37q0 4 0.5 12t0.5 12q0 20 -11.5 34t-35.5 14q-28 0 -57 -18.5t-49 -48.5 q-47 -71 -47 -153q0 -16 2.5 -28.5t11 -32.5t32 -31.5t60.5 -11.5q38 0 76.5 19.5t61.5 39t24 19.5q3 0 7.5 -5t4.5 -9q0 -5 -30 -31.5t-82 -54t-96 -27.5q-73 0 -105 40t-32 97z" />
+<glyph unicode="&#x108;" horiz-adv-x="686" d="M295 731q0 1 4 5l91 92q11 11 20 11h20q7 0 9 -1.5t7 -9.5l53 -92q2 -3 2 -5t-5 -2h-12q-1 0 -7 6l-63 52q-3 3 -8 0l-85 -52q-2 -1 -4 -2.5t-3 -2.5l-2 -1h-12q-5 0 -5 2zM35 291q0 160 108 270t255 110q62 0 120 -24.5t92 -62.5l12 41q8 0 18.5 -3.5t10.5 -7.5 q0 -3 -7.5 -41l-17 -84t-10.5 -54q-1 -5 -13 -5q-9 0 -16 4t-7 7q0 1 11.5 46.5t11.5 50.5t-28 29.5t-79 50t-99 25.5q-75 0 -139 -56t-98.5 -137t-34.5 -162q0 -123 69.5 -195.5t172.5 -72.5q47 0 91 16.5t67 33.5t26 26q10 29 25 84q3 9 8 10.5t15 -1.5q17 -4 17 -11 q0 -6 -33 -116q-5 -18 -81.5 -47t-141.5 -29q-64 0 -119.5 16.5t-103 50.5t-75 95t-27.5 143z" />
+<glyph unicode="&#x109;" horiz-adv-x="402" d="M168 462l4 6l91 104q11 12 20 12h20q7 0 9 -1.5t7 -10.5l53 -104q2 -3 2 -6q0 -2 -5 -2h-12q-1 0 -7 6l-63 62q-3 3 -8 0l-85 -62q-8 -6 -9 -6h-12q-5 0 -5 2zM25 128q0 114 71 188.5t150 74.5q58 0 86 -31q22 -24 22 -56q0 -21 -12 -35t-31 -14q-22 0 -22 37q0 4 0.5 12 t0.5 12q0 20 -11.5 34t-35.5 14q-28 0 -57 -18.5t-49 -48.5q-47 -71 -47 -153q0 -16 2.5 -28.5t11 -32.5t32 -31.5t60.5 -11.5q38 0 76.5 19.5t61.5 39t24 19.5q3 0 7.5 -5t4.5 -9q0 -5 -30 -31.5t-82 -54t-96 -27.5q-73 0 -105 40t-32 97z" />
+<glyph unicode="&#x10a;" horiz-adv-x="686" d="M366 790q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM35 291q0 160 108 270t255 110q62 0 120 -24.5t92 -62.5l12 41q8 0 18.5 -3.5t10.5 -7.5q0 -3 -7.5 -41l-17 -84t-10.5 -54q-1 -5 -13 -5q-9 0 -16 4t-7 7q0 1 11.5 46.5 t11.5 50.5t-28 29.5t-79 50t-99 25.5q-75 0 -139 -56t-98.5 -137t-34.5 -162q0 -123 69.5 -195.5t172.5 -72.5q47 0 91 16.5t67 33.5t26 26q10 29 25 84q3 9 8 10.5t15 -1.5q17 -4 17 -11q0 -6 -33 -116q-5 -18 -81.5 -47t-141.5 -29q-64 0 -119.5 16.5t-103 50.5t-75 95 t-27.5 143z" />
+<glyph unicode="&#x10b;" horiz-adv-x="402" d="M236 540q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM25 128q0 114 71 188.5t150 74.5q58 0 86 -31q22 -24 22 -56q0 -21 -12 -35t-31 -14q-22 0 -22 37q0 4 0.5 12t0.5 12q0 20 -11.5 34t-35.5 14q-28 0 -57 -18.5t-49 -48.5 q-47 -71 -47 -153q0 -16 2.5 -28.5t11 -32.5t32 -31.5t60.5 -11.5q38 0 76.5 19.5t61.5 39t24 19.5q3 0 7.5 -5t4.5 -9q0 -5 -30 -31.5t-82 -54t-96 -27.5q-73 0 -105 40t-32 97z" />
+<glyph unicode="&#x10c;" horiz-adv-x="686" d="M318 837q0 2 5 2h12q1 0 7 -6l63 -52q3 -3 8 0l85 52q2 1 4 2.5t4 2.5l1 1h12q5 0 5 -2q0 -1 -4 -5l-91 -92q-11 -11 -20 -11h-20q-7 0 -9 1.5t-7 9.5l-53 92q-2 3 -2 5zM35 291q0 160 108 270t255 110q62 0 120 -24.5t92 -62.5l12 41q8 0 18.5 -3.5t10.5 -7.5 q0 -3 -7.5 -41l-17 -84t-10.5 -54q-1 -5 -13 -5q-9 0 -16 4t-7 7q0 1 11.5 46.5t11.5 50.5t-28 29.5t-79 50t-99 25.5q-75 0 -139 -56t-98.5 -137t-34.5 -162q0 -123 69.5 -195.5t172.5 -72.5q47 0 91 16.5t67 33.5t26 26q10 29 25 84q3 9 8 10.5t15 -1.5q17 -4 17 -11 q0 -6 -33 -116q-5 -18 -81.5 -47t-141.5 -29q-64 0 -119.5 16.5t-103 50.5t-75 95t-27.5 143z" />
+<glyph unicode="&#x10d;" horiz-adv-x="402" d="M189 582q0 2 5 2h12q1 0 7 -6l63 -62q3 -3 8 0l85 62q7 6 9 6h12q5 0 5 -2l-4 -6l-91 -104q-11 -12 -20 -12h-20q-7 0 -9 1.5t-7 10.5l-53 104q-2 3 -2 6zM25 128q0 114 71 188.5t150 74.5q58 0 86 -31q22 -24 22 -56q0 -21 -12 -35t-31 -14q-22 0 -22 37q0 4 0.5 12 t0.5 12q0 20 -11.5 34t-35.5 14q-28 0 -57 -18.5t-49 -48.5q-47 -71 -47 -153q0 -16 2.5 -28.5t11 -32.5t32 -31.5t60.5 -11.5q38 0 76.5 19.5t61.5 39t24 19.5q3 0 7.5 -5t4.5 -9q0 -5 -30 -31.5t-82 -54t-96 -27.5q-73 0 -105 40t-32 97z" />
+<glyph unicode="&#x10e;" horiz-adv-x="742" d="M266 837q0 2 5 2h12q1 0 7 -6l63 -52q3 -3 8 0l85 52q2 1 4 2.5t4 2.5l1 1h12q5 0 5 -2q0 -1 -4 -5l-91 -92q-11 -11 -20 -11h-20q-7 0 -9 1.5t-7 9.5l-53 92q-2 3 -2 5zM19 10q0 11 3 13t14 2h43q5 0 42.5 261.5t45.5 338.5q2 11 -4 11l-70 -2q-5 0 -7.5 0.5t-4 3 t-1.5 8.5v6t0.5 4.5t2 3.5t4 1.5t6.5 0.5h24t51.5 -0.5t43.5 -0.5q33 0 75.5 1t56.5 1q165 0 261.5 -80t96.5 -248q0 -158 -102 -247.5t-248 -91.5q-32 0 -112 2t-113 2q-16 0 -55 -2t-42 -2q-8 0 -9.5 2t-1.5 12zM171 46q0 -13 6 -17t59 -4q97 0 170 27t111 64t61.5 88 t29.5 87.5t6 73.5q0 123 -74.5 196.5t-223.5 73.5q-49 0 -63 -4l-9 -56l-20 -137.5l-24 -165t-20.5 -148.5t-8.5 -78z" />
+<glyph unicode="&#x10f;" horiz-adv-x="473" d="M478 495q0 3 6 25.5l15 57.5l13 51q9 32 34 32q26 0 26 -23q0 -9 -13 -35l-55 -98q-6 -12 -9 -12h-15q-2 0 -2 2zM25 74q0 34 14.5 83.5t40 100t68 86t92.5 35.5q17 0 33.5 -3t25 -6.5t18 -8.5t10.5 -5q9 -4 12 -2t5 12q6 31 15 91.5l15.5 107t6.5 47.5q5 17 -4 17 q-2 0 -44 -10.5t-45 -10.5q-5 0 -3 21q1 8 2.5 9.5t7.5 3.5q39 8 76 17.5t55 14.5t20 5q11 0 11 -15q0 -3 -50 -288t-50 -316q0 -15 13 -15t35.5 18.5t39.5 36.5t18 18q3 0 6.5 -3t3.5 -5q0 -5 -22 -32t-61.5 -56t-75.5 -29q-12 0 -19.5 9.5t-7.5 25.5q0 18 10.5 70.5 t20.5 95.5l10 43q-38 -72 -89 -139l-30.5 -39t-29 -30.5t-37 -25t-40.5 -7.5q-10 0 -19.5 2t-24.5 9t-24 24t-9 43zM91 102q0 -56 46 -56q41 0 138 140q54 82 54 118q0 14 -29 33.5t-60 19.5q-41 0 -77 -49t-54 -107t-18 -99z" />
+<glyph unicode="&#x110;" horiz-adv-x="742" d="M19 10q0 11 3 13t14 2h43q5 0 46 285q1 8 -1 9.5t-11 1.5h-64q-2 0 -2.5 12t2.5 12h71q10 0 11 12q27 188 36 268q2 11 -4 11l-70 -2q-5 0 -7.5 0.5t-4 3t-1.5 8.5v6t0.5 4.5t2 3.5t4 1.5t6.5 0.5h24t51.5 -0.5t43.5 -0.5q33 0 75.5 1t56.5 1q165 0 261.5 -80t96.5 -248 q0 -158 -102 -247.5t-248 -91.5q-32 0 -112 2t-113 2q-16 0 -55 -2t-42 -2q-8 0 -9.5 2t-1.5 12zM171 46q0 -13 6 -17t59 -4q97 0 170 27t111 64t61.5 88t29.5 87.5t6 73.5q0 123 -74.5 196.5t-223.5 73.5q-49 0 -63 -4l-41 -274q-1 -7 0 -9.5t8 -2.5h196q3 0 3 -12t-3 -12 h-197q-9 0 -11 -1.5t-3 -9.5q-34 -236 -34 -264z" />
+<glyph unicode="&#x111;" horiz-adv-x="473" d="M25 74q0 34 14.5 83.5t40 100t68 86t92.5 35.5q17 0 33.5 -3t25 -6.5t18 -8.5t10.5 -5q9 -4 12 -2t5 12q10 54 18 110q1 6 0 7t-8 1h-145q-2 0 -2.5 12t2.5 12h148q9 0 10 7l6.5 46.5t5.5 37t2 13.5q5 17 -4 17q-2 0 -44 -10.5t-45 -10.5q-5 0 -3 21q1 8 2.5 9.5t7.5 3.5 q39 8 76 17.5t55 14.5t20 5q11 0 11 -15q0 -2 -25 -148q-1 -6 -0.5 -7t7.5 -1h61q3 0 3 -12t-3 -12h-64q-7 0 -8.5 -1t-2.5 -7q-68 -387 -68 -416q0 -15 13 -15t35.5 18.5t39.5 36.5t18 18q3 0 6.5 -3t3.5 -5q0 -5 -22 -32t-61.5 -56t-75.5 -29q-12 0 -19.5 9.5t-7.5 25.5 q0 18 10.5 70.5t20.5 95.5l10 43q-38 -72 -89 -139l-30.5 -39t-29 -30.5t-37 -25t-40.5 -7.5q-10 0 -19.5 2t-24.5 9t-24 24t-9 43zM91 102q0 -56 46 -56q41 0 138 140q54 82 54 118q0 14 -29 33.5t-60 19.5q-41 0 -77 -49t-54 -107t-18 -99z" />
+<glyph unicode="&#x112;" horiz-adv-x="579" d="M252 788l2 21q1 6 2 7t7 1h181q6 0 7 -1t1 -6l-2 -23q-5 -8 -8 -8h-181q-7 0 -8.5 1t-0.5 8zM20 15q0 9 3 10.5t15 1.5h43q83 519 83 599q0 10 -3 10h-55q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l47 -1q46 -2 67 -2q28 0 108.5 1.5t100.5 1.5q55 0 74.5 2.5t20.5 10.5 q1 12 13 12q11 0 14 -2t3 -9q0 -4 -4 -41t-5 -84q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 3 36t3 37q0 7 -263 7q-5 0 -41 -269q-2 -11 -0.5 -14t14.5 -3h164q45 0 47 13l11 53q1 7 16 7q13 0 13 -6q0 -4 -2.5 -17t-7 -34l-7.5 -36q-7 -39 -15 -89q-1 -7 -13 -7q-17 0 -17 8 q1 7 4 23.5t5.5 29t2.5 14.5q0 8 -10 11t-40 3h-151q-9 0 -12 -0.5t-5 -2.5t-3 -7q-3 -13 -19.5 -129t-19.5 -147q0 -9 7 -9l319 7q4 0 10 16.5t14.5 43t13.5 37.5q4 9 14 9q17 0 17 -11q0 -5 -5.5 -21l-17 -47.5t-19.5 -55.5q-4 -11 -17 -11q-11 0 -179 1.5t-184 1.5 t-54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x113;" horiz-adv-x="390" d="M183 518l2 21q1 6 2 7t7 1h181q5 0 6.5 -1t1.5 -6l-2 -23q-5 -8 -8 -8h-181q-7 0 -8.5 1t-0.5 8zM25 105q0 114 73 200t172 86q93 0 93 -66q0 -43 -35 -77t-88 -54q-65 -24 -141 -24q-8 0 -8 -46q0 -89 96 -89q42 0 82 21.5t63.5 43.5t24.5 22q4 0 8.5 -5t4.5 -9 q0 -2 -11 -13.5t-32 -28t-47 -32.5t-61 -27.5t-68 -11.5q-55 0 -90.5 27.5t-35.5 82.5zM106 200q0 -7 10 -7q74 0 128 36.5t54 96.5q0 19 -14 30t-36 11q-82 0 -128 -122q-14 -35 -14 -45z" />
+<glyph unicode="&#x114;" horiz-adv-x="579" d="M266 810q0 28 4 28h13q1 0 1 -2q0 -31 15.5 -45t52.5 -14q53 0 77 32q4 6 7.5 13.5l5.5 11.5t3 4h13q-6 -46 -37.5 -77.5t-76.5 -31.5q-41 0 -59.5 23t-18.5 58zM20 15q0 9 3 10.5t15 1.5h43q83 519 83 599q0 10 -3 10h-55q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14 l47 -1q46 -2 67 -2q28 0 108.5 1.5t100.5 1.5q55 0 74.5 2.5t20.5 10.5q1 12 13 12q11 0 14 -2t3 -9q0 -4 -4 -41t-5 -84q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 3 36t3 37q0 7 -263 7q-5 0 -41 -269q-2 -11 -0.5 -14t14.5 -3h164q45 0 47 13l11 53q1 7 16 7q13 0 13 -6 q0 -4 -2.5 -17t-7 -34l-7.5 -36q-7 -39 -15 -89q-1 -7 -13 -7q-17 0 -17 8q1 7 4 23.5t5.5 29t2.5 14.5q0 8 -10 11t-40 3h-151q-9 0 -12 -0.5t-5 -2.5t-3 -7q-3 -13 -19.5 -129t-19.5 -147q0 -9 7 -9l319 7q4 0 10 16.5t14.5 43t13.5 37.5q4 9 14 9q17 0 17 -11 q0 -5 -5.5 -21l-17 -47.5t-19.5 -55.5q-4 -11 -17 -11q-11 0 -179 1.5t-184 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x115;" horiz-adv-x="390" d="M199 552q0 32 4 32h13q1 0 1 -3q0 -9 2 -21q9 -49 66 -49q52 0 78 40q4 7 7.5 15.5t5 13t2.5 4.5h13q-6 -53 -37.5 -89t-76.5 -36q-41 0 -59.5 26.5t-18.5 66.5zM25 105q0 114 73 200t172 86q93 0 93 -66q0 -43 -35 -77t-88 -54q-65 -24 -141 -24q-8 0 -8 -46 q0 -89 96 -89q42 0 82 21.5t63.5 43.5t24.5 22q4 0 8.5 -5t4.5 -9q0 -2 -11 -13.5t-32 -28t-47 -32.5t-61 -27.5t-68 -11.5q-55 0 -90.5 27.5t-35.5 82.5zM106 200q0 -7 10 -7q74 0 128 36.5t54 96.5q0 19 -14 30t-36 11q-82 0 -128 -122q-14 -35 -14 -45z" />
+<glyph unicode="&#x116;" horiz-adv-x="579" d="M310 790q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM20 15q0 9 3 10.5t15 1.5h43q83 519 83 599q0 10 -3 10h-55q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l47 -1q46 -2 67 -2q28 0 108.5 1.5t100.5 1.5q55 0 74.5 2.5 t20.5 10.5q1 12 13 12q11 0 14 -2t3 -9q0 -4 -4 -41t-5 -84q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 3 36t3 37q0 7 -263 7q-5 0 -41 -269q-2 -11 -0.5 -14t14.5 -3h164q45 0 47 13l11 53q1 7 16 7q13 0 13 -6q0 -4 -2.5 -17t-7 -34l-7.5 -36q-7 -39 -15 -89q-1 -7 -13 -7 q-17 0 -17 8q1 7 4 23.5t5.5 29t2.5 14.5q0 8 -10 11t-40 3h-151q-9 0 -12 -0.5t-5 -2.5t-3 -7q-3 -13 -19.5 -129t-19.5 -147q0 -9 7 -9l319 7q4 0 10 16.5t14.5 43t13.5 37.5q4 9 14 9q17 0 17 -11q0 -5 -5.5 -21l-17 -47.5t-19.5 -55.5q-4 -11 -17 -11q-11 0 -179 1.5 t-184 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x117;" horiz-adv-x="390" d="M241 540q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM25 105q0 114 73 200t172 86q93 0 93 -66q0 -43 -35 -77t-88 -54q-65 -24 -141 -24q-8 0 -8 -46q0 -89 96 -89q42 0 82 21.5t63.5 43.5t24.5 22q4 0 8.5 -5t4.5 -9 q0 -2 -11 -13.5t-32 -28t-47 -32.5t-61 -27.5t-68 -11.5q-55 0 -90.5 27.5t-35.5 82.5zM106 200q0 -7 10 -7q74 0 128 36.5t54 96.5q0 19 -14 30t-36 11q-82 0 -128 -122q-14 -35 -14 -45z" />
+<glyph unicode="&#x118;" horiz-adv-x="579" d="M20 15q0 9 3 10.5t15 1.5h43q83 519 83 599q0 10 -3 10h-55q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l47 -1q46 -2 67 -2q28 0 108.5 1.5t100.5 1.5q55 0 74.5 2.5t20.5 10.5q1 12 13 12q11 0 14 -2t3 -9q0 -4 -4 -41t-5 -84q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 3 36 t3 37q0 7 -263 7q-5 0 -41 -269q-2 -11 -0.5 -14t14.5 -3h164q45 0 47 13l11 53q1 7 16 7q13 0 13 -6q0 -4 -2.5 -17t-7 -34l-7.5 -36q-7 -39 -15 -89q-1 -7 -13 -7q-17 0 -17 8q1 7 4 23.5t5.5 29t2.5 14.5q0 8 -10 11t-40 3h-151q-9 0 -12 -0.5t-5 -2.5t-3 -7 q-3 -13 -19.5 -129t-19.5 -147q0 -9 7 -9l319 7q4 0 10 16.5t14.5 43t13.5 37.5q4 9 14 9q17 0 17 -11q0 -5 -5.5 -21l-17 -47.5t-19.5 -55.5q-4 -11 -17 -11h-62q-101 -109 -101 -174t47 -65q20 0 42 11t36 22l14 11q1 0 5 -6t4 -7q0 -3 -19 -19t-55 -34t-72 -18 q-31 0 -50 21t-19 56q0 73 143 203q-202 2 -276 2q-16 0 -54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x119;" horiz-adv-x="390" d="M25 105q0 114 73 200t172 86q93 0 93 -66q0 -43 -35 -77t-88 -54q-65 -24 -141 -24q-8 0 -8 -46q0 -89 96 -89q42 0 82 21.5t63.5 43.5t24.5 22q4 0 8.5 -5t4.5 -9q0 -5 -33 -33t-50 -46q-48 -49 -87 -107t-39 -99q0 -65 47 -65q20 0 42 11t36 22l14 11q1 0 5 -6t4 -7 q0 -3 -19 -19t-55 -34t-72 -18q-31 0 -50 21t-19 56q0 11 2.5 22t9.5 24.5l12.5 23.5t18 26l19.5 25t23.5 27l23 25l25 26.5l23.5 24.5q-51 -24 -100 -24q-55 0 -90.5 27.5t-35.5 82.5zM106 200q0 -7 10 -7q74 0 128 36.5t54 96.5q0 19 -14 30t-36 11q-82 0 -128 -122 q-14 -35 -14 -45z" />
+<glyph unicode="&#x11a;" horiz-adv-x="579" d="M262 837q0 2 5 2h12q1 0 7 -6l63 -52q3 -3 8 0l85 52q2 1 4 2.5t4 2.5l1 1h12q5 0 5 -2q0 -1 -4 -5l-91 -92q-11 -11 -20 -11h-20q-7 0 -9 1.5t-7 9.5l-53 92q-2 3 -2 5zM20 15q0 9 3 10.5t15 1.5h43q83 519 83 599q0 10 -3 10h-55q-7 0 -10.5 0.5t-6 4t-2.5 10.5 q0 14 12 14l47 -1q46 -2 67 -2q28 0 108.5 1.5t100.5 1.5q55 0 74.5 2.5t20.5 10.5q1 12 13 12q11 0 14 -2t3 -9q0 -4 -4 -41t-5 -84q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 3 36t3 37q0 7 -263 7q-5 0 -41 -269q-2 -11 -0.5 -14t14.5 -3h164q45 0 47 13l11 53q1 7 16 7 q13 0 13 -6q0 -4 -2.5 -17t-7 -34l-7.5 -36q-7 -39 -15 -89q-1 -7 -13 -7q-17 0 -17 8q1 7 4 23.5t5.5 29t2.5 14.5q0 8 -10 11t-40 3h-151q-9 0 -12 -0.5t-5 -2.5t-3 -7q-3 -13 -19.5 -129t-19.5 -147q0 -9 7 -9l319 7q4 0 10 16.5t14.5 43t13.5 37.5q4 9 14 9q17 0 17 -11 q0 -5 -5.5 -21l-17 -47.5t-19.5 -55.5q-4 -11 -17 -11q-11 0 -179 1.5t-184 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x11b;" horiz-adv-x="390" d="M194 582q0 2 5 2h12q1 0 7 -6l63 -62q3 -3 8 0l85 62q8 6 9 6h12q5 0 5 -2l-4 -6l-91 -104q-11 -12 -20 -12h-20q-7 0 -9 1.5t-7 10.5l-53 104q-2 3 -2 6zM25 105q0 114 73 200t172 86q93 0 93 -66q0 -43 -35 -77t-88 -54q-65 -24 -141 -24q-8 0 -8 -46q0 -89 96 -89 q42 0 82 21.5t63.5 43.5t24.5 22q4 0 8.5 -5t4.5 -9q0 -2 -11 -13.5t-32 -28t-47 -32.5t-61 -27.5t-68 -11.5q-55 0 -90.5 27.5t-35.5 82.5zM106 200q0 -7 10 -7q74 0 128 36.5t54 96.5q0 19 -14 30t-36 11q-82 0 -128 -122q-14 -35 -14 -45z" />
+<glyph unicode="&#x11c;" horiz-adv-x="721" d="M309 731q0 1 4 5l91 92q11 11 20 11h20q7 0 9 -1.5t7 -9.5l53 -92q2 -3 2 -5t-5 -2h-12q-1 0 -7 6l-63 52q-3 3 -8 0l-85 -52q-2 -1 -4 -2.5t-3 -2.5l-2 -1h-12q-5 0 -5 2zM35 266q0 108 51.5 203t138.5 150.5t186 55.5q26 0 51.5 -3.5t46.5 -8.5t39.5 -12t33 -13.5 t24.5 -11.5l16 -8l6 -4q1 0 6 27q3 11 11 11q9 0 15.5 -2t5.5 -7q-13 -84 -23 -175l-1.5 -7.5t-4 -4.5t-9.5 -2q-22 0 -18 16q1 5 8.5 49.5t7.5 50.5q0 5 -35.5 24t-87.5 37.5t-88 18.5q-78 0 -145.5 -57.5t-103.5 -143.5t-36 -173q0 -122 67 -195t165 -73q65 0 111.5 21.5 t51.5 40.5q15 55 18 136q1 14 -9 14h-85q-8 0 -8 12q0 18 9 18q16 0 64 -1.5t66 -1.5q17 0 49.5 1.5t53.5 1.5q8 0 8 -14q0 -16 -8 -16h-57q-2 0 -19 -146q-1 -10 -44.5 -33.5t-116.5 -45t-138 -21.5q-28 0 -59 6t-70.5 26t-70 50.5t-52 85t-21.5 124.5z" />
+<glyph unicode="&#x11d;" horiz-adv-x="426" d="M146 460l4 6l91 104q11 12 20 12h20q7 0 9 -1.5t7 -10.5l53 -104q2 -3 2 -6q0 -2 -5 -2h-12q-1 0 -7 6l-63 62q-3 3 -8 0l-85 -62q-8 -6 -9 -6h-12q-5 0 -5 2zM-6 -157q0 39 29.5 67t61.5 42q12 6 12 8q0 1 -3 2.5t-7.5 3.5t-7.5 4q-25 18 -25 33q0 7 18 35.5t27 31.5 l60 22l6 3q0 2 -7 4q-14 4 -28 11.5t-31.5 22t-28 40t-10.5 57.5q0 70 51.5 119.5t125.5 49.5q18 0 35 -4.5t28 -11.5t19 -13.5t12 -11t5 -4.5q2 0 7.5 11.5t12 26.5t8.5 19q5 9 21 9q27 0 27 -11q0 -12 -11.5 -33t-23 -38t-11.5 -18q0 -6 3 -13q7 -18 7 -40q0 -73 -53 -121 q-26 -24 -51.5 -35t-74.5 -24q-93 -27 -93 -47q0 -9 10.5 -16t37 -13.5t41.5 -9t55 -8.5q17 -3 26 -4q65 -11 98 -30.5t33 -64.5q0 -75 -67 -110t-173 -35q-44 0 -79.5 7t-63.5 29t-28 58zM36 -151q0 -21 18 -36.5t46.5 -22t53.5 -9.5t50 -3q62 0 101 22.5t39 66.5 q0 32 -26 46t-78 23q-98 17 -107 17q-8 0 -32 -11q-65 -32 -65 -93zM123 229q0 -60 24.5 -87t49.5 -27q40 0 78.5 48.5t38.5 115.5q0 37 -22 67t-56 30q-50 0 -81.5 -48.5t-31.5 -98.5z" />
+<glyph unicode="&#x11e;" horiz-adv-x="721" d="M336 810q0 28 4 28h13q1 0 1 -2q0 -31 15.5 -45t52.5 -14q53 0 77 32q4 6 7.5 13.5l5.5 11.5t3 4h13q-6 -46 -37.5 -77.5t-76.5 -31.5q-41 0 -59.5 23t-18.5 58zM35 266q0 108 51.5 203t138.5 150.5t186 55.5q26 0 51.5 -3.5t46.5 -8.5t39.5 -12t33 -13.5t24.5 -11.5 l16 -8l6 -4q1 0 6 27q3 11 11 11q9 0 15.5 -2t5.5 -7q-13 -84 -23 -175l-1.5 -7.5t-4 -4.5t-9.5 -2q-22 0 -18 16q1 5 8.5 49.5t7.5 50.5q0 5 -35.5 24t-87.5 37.5t-88 18.5q-78 0 -145.5 -57.5t-103.5 -143.5t-36 -173q0 -122 67 -195t165 -73q65 0 111.5 21.5t51.5 40.5 q15 55 18 136q1 14 -9 14h-85q-8 0 -8 12q0 18 9 18q16 0 64 -1.5t66 -1.5q17 0 49.5 1.5t53.5 1.5q8 0 8 -14q0 -16 -8 -16h-57q-2 0 -19 -146q-1 -10 -44.5 -33.5t-116.5 -45t-138 -21.5q-28 0 -59 6t-70.5 26t-70 50.5t-52 85t-21.5 124.5z" />
+<glyph unicode="&#x11f;" horiz-adv-x="426" d="M172 550q0 32 4 32h13q1 0 1 -3q0 -9 2 -21q9 -49 66 -49q52 0 78 40q4 7 7.5 15.5t5 13t2.5 4.5h13q-6 -53 -37.5 -89t-76.5 -36q-41 0 -59.5 26.5t-18.5 66.5zM-6 -157q0 39 29.5 67t61.5 42q12 6 12 8q0 1 -3 2.5t-7.5 3.5t-7.5 4q-25 18 -25 33q0 7 18 35.5t27 31.5 l60 22l6 3q0 2 -7 4q-14 4 -28 11.5t-31.5 22t-28 40t-10.5 57.5q0 70 51.5 119.5t125.5 49.5q18 0 35 -4.5t28 -11.5t19 -13.5t12 -11t5 -4.5q2 0 7.5 11.5t12 26.5t8.5 19q5 9 21 9q27 0 27 -11q0 -12 -11.5 -33t-23 -38t-11.5 -18q0 -6 3 -13q7 -18 7 -40q0 -73 -53 -121 q-26 -24 -51.5 -35t-74.5 -24q-93 -27 -93 -47q0 -9 10.5 -16t37 -13.5t41.5 -9t55 -8.5q17 -3 26 -4q65 -11 98 -30.5t33 -64.5q0 -75 -67 -110t-173 -35q-44 0 -79.5 7t-63.5 29t-28 58zM36 -151q0 -21 18 -36.5t46.5 -22t53.5 -9.5t50 -3q62 0 101 22.5t39 66.5 q0 32 -26 46t-78 23q-98 17 -107 17q-8 0 -32 -11q-65 -32 -65 -93zM123 229q0 -60 24.5 -87t49.5 -27q40 0 78.5 48.5t38.5 115.5q0 37 -22 67t-56 30q-50 0 -81.5 -48.5t-31.5 -98.5z" />
+<glyph unicode="&#x120;" horiz-adv-x="721" d="M380 790q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM35 266q0 108 51.5 203t138.5 150.5t186 55.5q26 0 51.5 -3.5t46.5 -8.5t39.5 -12t33 -13.5t24.5 -11.5l16 -8l6 -4q1 0 6 27q3 11 11 11q9 0 15.5 -2t5.5 -7 q-13 -84 -23 -175l-1.5 -7.5t-4 -4.5t-9.5 -2q-22 0 -18 16q1 5 8.5 49.5t7.5 50.5q0 5 -35.5 24t-87.5 37.5t-88 18.5q-78 0 -145.5 -57.5t-103.5 -143.5t-36 -173q0 -122 67 -195t165 -73q65 0 111.5 21.5t51.5 40.5q15 55 18 136q1 14 -9 14h-85q-8 0 -8 12q0 18 9 18 q16 0 64 -1.5t66 -1.5q17 0 49.5 1.5t53.5 1.5q8 0 8 -14q0 -16 -8 -16h-57q-2 0 -19 -146q-1 -10 -44.5 -33.5t-116.5 -45t-138 -21.5q-28 0 -59 6t-70.5 26t-70 50.5t-52 85t-21.5 124.5z" />
+<glyph unicode="&#x121;" horiz-adv-x="426" d="M214 538q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM-6 -157q0 39 29.5 67t61.5 42q12 6 12 8q0 1 -3 2.5t-7.5 3.5t-7.5 4q-25 18 -25 33q0 7 18 35.5t27 31.5l60 22l6 3q0 2 -7 4q-14 4 -28 11.5t-31.5 22t-28 40 t-10.5 57.5q0 70 51.5 119.5t125.5 49.5q18 0 35 -4.5t28 -11.5t19 -13.5t12 -11t5 -4.5q2 0 7.5 11.5t12 26.5t8.5 19q5 9 21 9q27 0 27 -11q0 -12 -11.5 -33t-23 -38t-11.5 -18q0 -6 3 -13q7 -18 7 -40q0 -73 -53 -121q-26 -24 -51.5 -35t-74.5 -24q-93 -27 -93 -47 q0 -9 10.5 -16t37 -13.5t41.5 -9t55 -8.5q17 -3 26 -4q65 -11 98 -30.5t33 -64.5q0 -75 -67 -110t-173 -35q-44 0 -79.5 7t-63.5 29t-28 58zM36 -151q0 -21 18 -36.5t46.5 -22t53.5 -9.5t50 -3q62 0 101 22.5t39 66.5q0 32 -26 46t-78 23q-98 17 -107 17q-8 0 -32 -11 q-65 -32 -65 -93zM123 229q0 -60 24.5 -87t49.5 -27q40 0 78.5 48.5t38.5 115.5q0 37 -22 67t-56 30q-50 0 -81.5 -48.5t-31.5 -98.5z" />
+<glyph unicode="&#x122;" horiz-adv-x="721" d="M235 -207q0 1 14 8.5t27 21t13 28.5q0 18 -17 34.5t-17 19.5q0 11 19.5 22.5t24.5 11.5q10 0 27 -17.5t17 -30.5q0 -30 -26 -58t-49 -41.5t-26 -13.5q-7 0 -7 13v2zM35 266q0 108 51.5 203t138.5 150.5t186 55.5q26 0 51.5 -3.5t46.5 -8.5t39.5 -12t33 -13.5t24.5 -11.5 l16 -8l6 -4q1 0 6 27q3 11 11 11q9 0 15.5 -2t5.5 -7q-13 -84 -23 -175l-1.5 -7.5t-4 -4.5t-9.5 -2q-22 0 -18 16q1 5 8.5 49.5t7.5 50.5q0 5 -35.5 24t-87.5 37.5t-88 18.5q-78 0 -145.5 -57.5t-103.5 -143.5t-36 -173q0 -122 67 -195t165 -73q65 0 111.5 21.5t51.5 40.5 q15 55 18 136q1 14 -9 14h-85q-8 0 -8 12q0 18 9 18q16 0 64 -1.5t66 -1.5q17 0 49.5 1.5t53.5 1.5q8 0 8 -14q0 -16 -8 -16h-57q-2 0 -19 -146q-1 -10 -44.5 -33.5t-116.5 -45t-138 -21.5q-28 0 -59 6t-70.5 26t-70 50.5t-52 85t-21.5 124.5z" />
+<glyph unicode="&#x123;" horiz-adv-x="426" d="M208 498q0 30 26 58t49 41.5t26 13.5q7 0 7 -13v-2q0 -1 -14 -8.5t-27 -21t-13 -28.5q0 -18 17 -34.5t17 -19.5q0 -11 -19.5 -22.5t-24.5 -11.5q-10 0 -27 17.5t-17 30.5zM-6 -157q0 39 29.5 67t61.5 42q12 6 12 8q0 1 -3 2.5t-7.5 3.5t-7.5 4q-25 18 -25 33q0 7 18 35.5 t27 31.5l60 22l6 3q0 2 -7 4q-14 4 -28 11.5t-31.5 22t-28 40t-10.5 57.5q0 70 51.5 119.5t125.5 49.5q18 0 35 -4.5t28 -11.5t19 -13.5t12 -11t5 -4.5q2 0 7.5 11.5t12 26.5t8.5 19q5 9 21 9q27 0 27 -11q0 -12 -11.5 -33t-23 -38t-11.5 -18q0 -6 3 -13q7 -18 7 -40 q0 -73 -53 -121q-26 -24 -51.5 -35t-74.5 -24q-93 -27 -93 -47q0 -9 10.5 -16t37 -13.5t41.5 -9t55 -8.5q17 -3 26 -4q65 -11 98 -30.5t33 -64.5q0 -75 -67 -110t-173 -35q-44 0 -79.5 7t-63.5 29t-28 58zM36 -151q0 -21 18 -36.5t46.5 -22t53.5 -9.5t50 -3q62 0 101 22.5 t39 66.5q0 32 -26 46t-78 23q-98 17 -107 17q-8 0 -32 -11q-65 -32 -65 -93zM123 229q0 -60 24.5 -87t49.5 -27q40 0 78.5 48.5t38.5 115.5q0 37 -22 67t-56 30q-50 0 -81.5 -48.5t-31.5 -98.5z" />
+<glyph unicode="&#x124;" horiz-adv-x="795" d="M341 731q0 1 4 5l91 92q11 11 20 11h20q7 0 9 -1.5t7 -9.5l53 -92q2 -3 2 -5t-5 -2h-12q-1 0 -7 6l-63 52q-3 3 -8 0l-85 -52q-2 -1 -4 -2.5t-3 -2.5l-2 -1h-12q-5 0 -5 2zM20 13q0 9 3 11.5t15 2.5h53q7 0 48 282t41 314q0 16 -9 16h-61q-12 0 -12 15q0 7 2.5 10.5 t5.5 4t11 0.5q6 0 47.5 -1.5t58.5 -1.5q16 0 53 1.5t48 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-50q-8 0 -47 -270q-2 -11 -0.5 -15t12.5 -4h332q8 0 11 0.5t5.5 3t3.5 8.5q30 232 30 261q0 16 -9 16h-61q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5q6 0 48 -1.5 t59 -1.5q16 0 52.5 1.5t47.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-50q-10 0 -47 -288.5t-37 -310.5q0 -13 8 -13h57q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -54.5 1.5t-59.5 1.5t-50 -1.5t-45 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5 h53q5 0 44 287q1 8 -1.5 10t-13.5 2h-334q-9 0 -12.5 -3t-4.5 -13q-32 -235 -32 -270q0 -13 8 -13h59q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -54 1.5t-59 1.5t-53.5 -1.5t-48.5 -1.5q-9 0 -11.5 3t-2.5 13z" />
+<glyph unicode="&#x125;" horiz-adv-x="468" d="M85 731q0 1 4 5l91 92q11 11 20 11h20q7 0 9 -1.5t7 -9.5l53 -92q2 -3 2 -5t-5 -2h-12q-1 0 -7 6l-63 52q-3 3 -8 0l-85 -52q-2 -1 -4 -2.5t-3 -2.5l-2 -1h-12q-5 0 -5 2zM25 6q0 2 7 33.5t18 88l23.5 127t26 168.5t23.5 196q2 19 -4 19q-10 0 -49 -14l-38 -13 q-3 0 -3 14q0 13 7 16q30 11 83 22.5t72 11.5q6 0 6 -15q-5 -101 -93 -537q47 110 115 192q56 68 124 68q26 0 42.5 -12t16.5 -36q0 -37 -33.5 -147.5t-33.5 -120.5q0 -22 21 -22q11 0 34 21.5t41.5 43.5t19.5 22q2 0 7 -4t5 -6q0 -5 -22 -33.5t-60.5 -58.5t-72.5 -30 q-18 0 -29.5 10.5t-11.5 27.5q0 14 36.5 127.5t36.5 141.5q0 17 -9 28t-25 11q-33 0 -66.5 -40t-74.5 -107q-46 -77 -54 -108l-20 -82q-2 -11 -58 -11q-8 0 -8 8z" />
+<glyph unicode="&#x126;" horiz-adv-x="795" d="M20 13q0 9 3 11.5t15 2.5h53q11 0 72 451q1 10 -7 10h-74q-2 0 -2.5 12t2.5 12h74h6.5t3.5 1t2.5 3t0.5 6q11 83 11 101q0 16 -9 16h-61q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5q6 0 47.5 -1.5t58.5 -1.5q16 0 53 1.5t48 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5 t-15 -1.5h-50q-5 0 -24 -115q-2 -7 -0.5 -9.5t8.5 -2.5h342q7 0 8.5 2t2.5 10q10 85 10 99q0 16 -9 16h-61q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5q6 0 48 -1.5t59 -1.5q16 0 52.5 1.5t47.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-50q-6 0 -23 -115 q-1 -8 0 -10t8 -2h61q3 0 3 -12t-3 -12h-65q-9 0 -10 -9l-24.5 -186.5l-22 -177t-8.5 -75.5q0 -13 8 -13h57q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -54.5 1.5t-59.5 1.5t-50 -1.5t-45 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h53q5 0 44 287q1 8 -1.5 10 t-13.5 2h-334q-9 0 -12.5 -3t-4.5 -13q-32 -235 -32 -270q0 -13 8 -13h59q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -54 1.5t-59 1.5t-53.5 -1.5t-48.5 -1.5q-9 0 -11.5 3t-2.5 13zM222 358q0 -8 13 -8h332q8 0 11 0.5t5.5 3t3.5 8.5l15 117v4l1 2q0 3 -8 3h-345 q-7 0 -8.5 -1.5t-2.5 -8.5l-16 -109q-1 -5 -1 -11z" />
+<glyph unicode="&#x127;" horiz-adv-x="468" d="M11 497q0 11 3 11h87q7 0 8.5 1.5t2.5 8.5q8 66 11 101q2 19 -4 19q-10 0 -49 -14l-38 -13q-3 0 -3 14q0 13 7 16q30 11 83 22.5t72 11.5q6 0 6 -15q-3 -46 -19 -142q-1 -7 -0.5 -8.5t8.5 -1.5h149q3 0 3 -12t-3 -12h-151q-8 0 -10 -1t-3 -9q-10 -61 -67 -351 q47 110 115 192q56 68 124 68q26 0 42.5 -12t16.5 -36q0 -37 -33.5 -147.5t-33.5 -120.5q0 -22 21 -22q11 0 34 21.5t41.5 43.5t19.5 22q2 0 7 -4t5 -6q0 -5 -22 -33.5t-60.5 -58.5t-72.5 -30q-18 0 -29.5 10.5t-11.5 27.5q0 14 36.5 127.5t36.5 141.5q0 17 -9 28t-25 11 q-33 0 -66.5 -40t-74.5 -107q-46 -77 -54 -108l-20 -82q-2 -11 -58 -11q-8 0 -8 8q0 1 12.5 59.5t33.5 173.5t36 235q1 8 -0.5 9t-9.5 1h-83q-3 0 -3 13z" />
+<glyph unicode="&#x128;" horiz-adv-x="377" d="M142 745q2 9 11 25q15 25 32.5 38.5t30.5 13.5q16 0 42 -18t38 -18q21 0 40 33q3 7 13 7q6 0 6 -2q-1 -6 -11 -26q-29 -55 -66 -55q-17 0 -41 17.5t-39 17.5q-22 0 -38 -29q-3 -6 -12 -6q-6 0 -6 2zM20 15q0 9 3 10.5t15 1.5h60q5 0 47 279t42 317q0 16 -9 16h-66 q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5q6 0 52 -1.5t63 -1.5q16 0 57 1.5t52 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-57q-9 0 -48.5 -275.5t-39.5 -323.5q0 -13 8 -13h66q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -58 1.5t-63 1.5t-59 -1.5t-54 -1.5 q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x129;" horiz-adv-x="270" d="M78 495q2 9 11 25q15 25 32.5 38.5t30.5 13.5q16 0 42 -18t38 -18q21 0 40 33q3 7 13 7q6 0 6 -2q-1 -6 -11 -26q-29 -55 -66 -55q-17 0 -41 17.5t-39 17.5q-22 0 -38 -29q-3 -6 -12 -6q-6 0 -6 2zM25 282q0 4 29.5 28.5t67 48.5t54.5 24q20 0 20 -22q0 -26 -32.5 -150 t-32.5 -136q0 -20 13 -20q8 0 27 16t35 32t17 16q3 0 7.5 -5t4.5 -7q0 -12 -64.5 -62.5t-86.5 -50.5q-24 0 -24 18q0 24 35.5 145t35.5 153q0 18 -12 18q-11 0 -30.5 -15t-35 -29.5t-16.5 -14.5q-4 0 -8 4.5t-4 8.5z" />
+<glyph unicode="&#x12a;" horiz-adv-x="377" d="M150 788l2 21q1 6 2 7t7 1h181q6 0 7 -1t1 -6l-2 -23q-5 -8 -8 -8h-181q-7 0 -8.5 1t-0.5 8zM20 15q0 9 3 10.5t15 1.5h60q5 0 47 279t42 317q0 16 -9 16h-66q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5q6 0 52 -1.5t63 -1.5q16 0 57 1.5t52 1.5q10 0 12 -2.5t2 -15.5 q0 -9 -2.5 -10.5t-15.5 -1.5h-57q-9 0 -48.5 -275.5t-39.5 -323.5q0 -13 8 -13h66q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -58 1.5t-63 1.5t-59 -1.5t-54 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x12b;" horiz-adv-x="270" d="M86 518l2 21q1 6 2 7t7 1h181q6 0 7 -1t1 -6l-2 -23q-5 -8 -8 -8h-181q-7 0 -8.5 1t-0.5 8zM25 282q0 4 29.5 28.5t67 48.5t54.5 24q20 0 20 -22q0 -26 -32.5 -150t-32.5 -136q0 -20 13 -20q8 0 27 16t35 32t17 16q3 0 7.5 -5t4.5 -7q0 -12 -64.5 -62.5t-86.5 -50.5 q-24 0 -24 18q0 24 35.5 145t35.5 153q0 18 -12 18q-11 0 -30.5 -15t-35 -29.5t-16.5 -14.5q-4 0 -8 4.5t-4 8.5z" />
+<glyph unicode="&#x12c;" horiz-adv-x="377" d="M164 810q0 28 4 28h13q1 0 1 -2q0 -31 15.5 -45t52.5 -14q53 0 77 32q4 6 7.5 13.5l5.5 11.5t3 4h13q-6 -46 -37.5 -77.5t-76.5 -31.5q-41 0 -59.5 23t-18.5 58zM20 15q0 9 3 10.5t15 1.5h60q5 0 47 279t42 317q0 16 -9 16h-66q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5 q6 0 52 -1.5t63 -1.5q16 0 57 1.5t52 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-57q-9 0 -48.5 -275.5t-39.5 -323.5q0 -13 8 -13h66q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -58 1.5t-63 1.5t-59 -1.5t-54 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x12d;" horiz-adv-x="270" d="M102 552q0 32 4 32h13q1 0 1 -3q0 -9 2 -21q9 -49 66 -49q52 0 78 40q4 7 7.5 15.5t5 13t2.5 4.5h13q-6 -53 -37.5 -89t-76.5 -36q-41 0 -59.5 26.5t-18.5 66.5zM25 282q0 4 29.5 28.5t67 48.5t54.5 24q20 0 20 -22q0 -26 -32.5 -150t-32.5 -136q0 -20 13 -20q8 0 27 16 t35 32t17 16q3 0 7.5 -5t4.5 -7q0 -12 -64.5 -62.5t-86.5 -50.5q-24 0 -24 18q0 24 35.5 145t35.5 153q0 18 -12 18q-11 0 -30.5 -15t-35 -29.5t-16.5 -14.5q-4 0 -8 4.5t-4 8.5z" />
+<glyph unicode="&#x12e;" horiz-adv-x="377" d="M10 -205q0 65 124 205q-96 -3 -100 -3q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h60q5 0 47 279t42 317q0 16 -9 16h-66q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5q6 0 52 -1.5t63 -1.5q16 0 57 1.5t52 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-57 q-9 0 -48.5 -275.5t-39.5 -323.5q0 -13 8 -13h66q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -110 3q-40 -52 -60.5 -93t-20.5 -88q0 -61 47 -61q20 0 42 11t36 22l14 11q1 0 5 -6t4 -7q0 -3 -19 -19t-55 -34t-72 -18q-31 0 -50 21t-19 56z" />
+<glyph unicode="&#x12f;" horiz-adv-x="270" d="M-40 -205q0 27 23.5 66t45 63.5t67.5 72.5q-8 -3 -12 -3q-24 0 -24 18q0 24 35.5 145t35.5 153q0 18 -12 18q-11 0 -30.5 -15t-35 -29.5t-16.5 -14.5q-4 0 -8 4.5t-4 8.5t29.5 28.5t67 48.5t54.5 24q20 0 20 -22q0 -26 -32.5 -150t-32.5 -136q0 -20 13 -20q8 0 27 16 t35 32t17 16q3 0 7.5 -5t4.5 -7q0 -11 -55 -55q-24 -19 -49 -47q-104 -119 -104 -182q0 -65 47 -65q20 0 42 11t36 22l14 11q1 0 5 -6t4 -7q0 -3 -19 -19t-55 -34t-72 -18q-31 0 -50 21t-19 56zM128 549q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13 q-20 0 -32 15t-12 33z" />
+<glyph unicode="&#x130;" horiz-adv-x="377" d="M208 790q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM20 15q0 9 3 10.5t15 1.5h60q5 0 47 279t42 317q0 16 -9 16h-66q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5q6 0 52 -1.5t63 -1.5q16 0 57 1.5t52 1.5q10 0 12 -2.5t2 -15.5 q0 -9 -2.5 -10.5t-15.5 -1.5h-57q-9 0 -48.5 -275.5t-39.5 -323.5q0 -13 8 -13h66q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -58 1.5t-63 1.5t-59 -1.5t-54 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x131;" horiz-adv-x="270" d="M25 282q0 4 29.5 28.5t67 48.5t54.5 24q20 0 20 -22q0 -26 -32.5 -150t-32.5 -136q0 -20 13 -20q8 0 27 16t35 32t17 16q3 0 7.5 -5t4.5 -7q0 -12 -64.5 -62.5t-86.5 -50.5q-24 0 -24 18q0 24 35.5 145t35.5 153q0 18 -12 18q-11 0 -30.5 -15t-35 -29.5t-16.5 -14.5 q-4 0 -8 4.5t-4 8.5z" />
+<glyph unicode="&#x132;" horiz-adv-x="677" d="M254 -188q0 23 28.5 43.5t38.5 20.5q7 0 24 -10.5t28 -10.5q6 0 11.5 2.5t9.5 8.5t7 12t5.5 16.5t4.5 18t3.5 21t2.5 20.5t2 21.5t2 19.5q11 106 30.5 260l33.5 257t14 109q0 18 -10 18h-68q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 56 -1.5t67 -1.5 q16 0 52 1.5t47 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-50q-5 0 -20 -101t-34.5 -253.5t-19.5 -154.5q-16 -121 -35 -173q-23 -62 -64 -105q-60 -64 -109 -64q-19 0 -36 7t-17 17zM20 15q0 9 3 10.5t15 1.5h60q5 0 47 279t42 317q0 16 -9 16h-66 q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5q6 0 52 -1.5t63 -1.5q16 0 57 1.5t52 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-57q-9 0 -48.5 -275.5t-39.5 -323.5q0 -13 8 -13h66q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -58 1.5t-63 1.5t-59 -1.5t-54 -1.5 q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x133;" horiz-adv-x="567" d="M201 -221q0 15 10 25.5t25 10.5q18 0 38 -12.5t37 -12.5q10 0 17.5 7.5t14 26.5t9.5 31.5t9 42.5q19 93 43 242t24 170q0 18 -12 18q-11 0 -35 -22t-43.5 -44.5t-20.5 -22.5q-4 0 -8 3.5t-4 7.5t30 36t71.5 64.5t66.5 32.5q21 0 21 -24q0 -21 -12.5 -103t-27 -167 t-15.5 -92q-7 -45 -14 -73.5t-28.5 -72.5t-53.5 -68q-52 -38 -87 -38q-24 0 -39.5 11t-15.5 23zM427 579q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM25 282q0 4 29.5 28.5t67 48.5t54.5 24q20 0 20 -22q0 -26 -32.5 -150 t-32.5 -136q0 -20 13 -20q8 0 27 16t35 32t17 16q3 0 7.5 -5t4.5 -7q0 -12 -64.5 -62.5t-86.5 -50.5q-24 0 -24 18q0 24 35.5 145t35.5 153q0 18 -12 18q-11 0 -30.5 -15t-35 -29.5t-16.5 -14.5q-4 0 -8 4.5t-4 8.5zM128 549q0 20 11 33t30 13q20 0 32 -15t12 -33 q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33z" />
+<glyph unicode="&#x134;" horiz-adv-x="365" d="M124 731q0 1 4 5l91 92q11 11 20 11h20q7 0 9 -1.5t7 -9.5l53 -92q2 -3 2 -5t-5 -2h-12q-1 0 -7 6l-63 52q-3 3 -8 0l-85 -52q-2 -1 -4 -2.5t-4 -2.5l-1 -1h-12q-5 0 -5 2zM-58 -188q0 23 28.5 43.5t38.5 20.5q7 0 24 -10.5t28 -10.5q6 0 11.5 2.5t9.5 8.5t7 12t5.5 16.5 t4.5 18t3.5 21t2.5 20.5t2 21.5t2 19.5q11 106 30.5 260l33.5 257t14 109q0 18 -10 18h-68q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 56 -1.5t67 -1.5q16 0 52 1.5t47 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-50q-5 0 -20 -101t-34.5 -253.5 t-19.5 -154.5q-16 -121 -35 -173q-23 -62 -64 -105q-60 -64 -109 -64q-19 0 -36 7t-17 17z" />
+<glyph unicode="&#x135;" horiz-adv-x="297" d="M77 462l4 6l91 104q11 12 20 12h20q7 0 9 -1.5t7 -10.5l53 -104q2 -3 2 -6q0 -2 -5 -2h-12q-1 0 -7 6l-63 62q-3 3 -8 0l-85 -62q-7 -6 -9 -6h-12q-5 0 -5 2zM-69 -221q0 15 10 25.5t25 10.5q18 0 38 -12.5t37 -12.5q10 0 17.5 7.5t14 26.5t9.5 31.5t9 42.5q19 93 43 242 t24 170q0 18 -12 18q-11 0 -35 -22t-43.5 -44.5t-20.5 -22.5q-4 0 -8 3.5t-4 7.5t30 36t71.5 64.5t66.5 32.5q21 0 21 -24q0 -21 -12.5 -103t-27 -167t-15.5 -92q-7 -45 -14 -73.5t-28.5 -72.5t-53.5 -68q-52 -38 -87 -38q-24 0 -39.5 11t-15.5 23z" />
+<glyph unicode="&#x136;" horiz-adv-x="656" d="M249 -207q0 1 14 8.5t27 21t13 28.5q0 18 -17 34.5t-17 19.5q0 11 19.5 22.5t24.5 11.5q10 0 27 -17.5t17 -30.5q0 -30 -26 -58t-49 -41.5t-26 -13.5q-7 0 -7 13v2zM20 13q0 9 3 11.5t15 2.5h33q7 0 50.5 282t43.5 314q0 16 -9 16h-57q-12 0 -12 15q0 7 2.5 10.5t5.5 4 t11 0.5q6 0 45.5 -1.5t56.5 -1.5q16 0 48 1.5t43 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-35q-10 0 -33 -127t-25 -154q-2 -20 13 -20h50q8 0 93 108.5t130 171.5q10 15 10 16q0 5 -15 5h-21q-7 0 -10.5 0.5t-6 4t-2.5 10.5t2.5 10.5t5.5 4t11 0.5 q6 0 29 -1.5t40 -1.5q16 0 42.5 1.5t37.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-58q-82 -110 -218 -261q-3 -3 -6 -6.5t-5.5 -5.5t-4 -4t-1.5 -3q0 -3 9 -12q24 -22 56 -60.5t56 -70l66 -89.5l61 -83q12 -17 35 -17h28q8 0 9.5 -2t1.5 -11q0 -11 -2 -14 t-9 -3q-11 0 -54.5 1.5t-59.5 1.5t-41.5 -1.5t-36.5 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h8q20 0 20 7q0 4 -12 20q-187 266 -196 266h-46h-8t-4.5 -2.5t-3.5 -7.5q-4 -33 -14.5 -101t-16.5 -112.5t-6 -58.5q0 -11 2 -11h69q8 0 9.5 -2t1.5 -11q0 -11 -2 -14 t-9 -3q-11 0 -54 1.5t-59 1.5t-43.5 -1.5t-38.5 -1.5q-9 0 -11.5 3t-2.5 13z" />
+<glyph unicode="&#x137;" horiz-adv-x="450" d="M128 -207q0 1 14 8.5t27 21t13 28.5q0 18 -17 34.5t-17 19.5q0 11 19.5 22.5t24.5 11.5q10 0 27 -17.5t17 -30.5q0 -30 -26 -58t-49 -41.5t-26 -13.5q-7 0 -7 13v2zM25 -3q0 8 21 107t48.5 249.5t38.5 269.5q0 9 -7 9q-8 0 -75 -19q-6 -1 -7.5 2t0.5 17q2 8 6 9l77.5 20 l53.5 14t19 4q14 0 14 -11q0 -16 -97 -489q36 69 72 117q33 43 66.5 64t82.5 21q59 0 59 -37q0 -42 -32.5 -78t-67.5 -53t-65 -24q-21 -3 -21 -4l4 -2q4 -2 10.5 -6.5t12.5 -9.5q47 -45 73 -77q16 -20 24 -28.5t22.5 -16.5t31.5 -8q34 0 34 27q0 4 -1 10.5t-1 9.5q0 12 8 12 t14.5 -10.5t6.5 -32.5t-38.5 -38.5t-72.5 -16.5q-22 0 -43 20q-11 10 -23.5 25t-29 37.5t-24.5 32.5q-10 13 -23.5 28.5t-20 24t-6.5 9.5q0 5 17 22q2 2 10 2q16 0 28 5q37 17 71 53.5t34 70.5q0 20 -31 20q-29 0 -63 -32q-9 -9 -18.5 -20t-20.5 -26.5l-18.5 -26.5 l-21.5 -33t-21 -32q-17 -27 -24 -58q-15 -64 -21 -98q-3 -22 -10 -22q-1 0 -11 -1.5t-22 -3t-17 -1.5t-5 3z" />
+<glyph unicode="&#x138;" horiz-adv-x="491" d="M25 291q0 11 50.5 53t79.5 42q18 0 18 -20q0 -67 -31 -211q58 101 88 141q33 43 66.5 64t82.5 21q59 0 59 -37q0 -42 -32.5 -78t-67.5 -53t-65 -24q-21 -3 -21 -4l4 -2q4 -2 10.5 -6.5t12.5 -9.5q47 -45 73 -77q16 -20 24 -28.5t22.5 -16.5t31.5 -8q34 0 34 27 q0 4 -1 10.5t-1 9.5q0 12 8 12t14.5 -10.5t6.5 -32.5t-38.5 -38.5t-72.5 -16.5q-22 0 -43 20q-11 10 -23.5 25t-29 37.5t-24.5 32.5q-10 13 -23.5 28.5t-20 24t-6.5 9.5q0 5 17 22q2 2 10 2q15 0 28 5q37 17 71 53.5t34 70.5q0 20 -31 20q-29 0 -63 -32q-9 -9 -18.5 -20 t-20.5 -26.5l-18.5 -26.5l-21.5 -33t-21 -32q-17 -27 -24 -58q-15 -64 -21 -98q-3 -22 -10 -22q-1 0 -11 -1.5t-22 -3t-17 -1.5q-7 0 -5 9q1 3 9.5 48.5l16.5 87.5t15 88.5t7 65.5q0 38 -13 38q-11 0 -27 -12.5t-27.5 -25.5t-12.5 -13q-9 0 -9 11z" />
+<glyph unicode="&#x139;" horiz-adv-x="586" d="M204 731l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2zM20 15q0 9 2.5 10.5t14.5 1.5h52q1 0 20 142.5l38 292t19 164.5q0 13 -2 13h-58q-10 0 -13 2.5t-3 12.5t3.5 12.5t16.5 2.5q6 0 43.5 -1.5t54.5 -1.5q16 0 57.5 1.5 t52.5 1.5q12 0 14.5 -2t2.5 -13q0 -9 -3 -12t-15 -3h-62l-19 -144l-39 -290t-19 -152q0 -22 17 -22q231 0 291 6q12 1 15 4t8 19l25 77q3 8 11 8q21 0 21 -10q0 -3 -5 -19l-14.5 -47t-17.5 -61q-2 -11 -20 -11q-11 0 -185.5 1.5t-190.5 1.5t-52.5 -1.5t-47.5 -1.5 q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="&#x13a;" horiz-adv-x="272" d="M196 731l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2zM55 28q0 6 18 106.5l42 243t35 234.5q2 10 -1 14t-13 1q-66 -18 -74 -18q-5 0 -3 20q1 8 2.5 9.5t7.5 3.5q39 9 75.5 18.5l53.5 14t19 4.5q10 0 10 -9q0 -12 -50 -305.5 t-50 -296.5q0 -21 14 -21q12 0 36 21t43.5 42t20.5 21q3 0 9.5 -5.5t6.5 -7.5q0 -4 -28 -34.5t-71.5 -62t-73.5 -31.5q-29 0 -29 38z" />
+<glyph unicode="&#x13b;" horiz-adv-x="586" d="M236 -207q0 1 14 8.5t27 21t13 28.5q0 18 -17 34.5t-17 19.5q0 11 19.5 22.5t24.5 11.5q10 0 27 -17.5t17 -30.5q0 -30 -26 -58t-49 -41.5t-26 -13.5q-7 0 -7 13v2zM20 15q0 9 2.5 10.5t14.5 1.5h52q1 0 20 142.5l38 292t19 164.5q0 13 -2 13h-58q-10 0 -13 2.5t-3 12.5 t3.5 12.5t16.5 2.5q6 0 43.5 -1.5t54.5 -1.5q16 0 57.5 1.5t52.5 1.5q12 0 14.5 -2t2.5 -13q0 -9 -3 -12t-15 -3h-62l-19 -144l-39 -290t-19 -152q0 -22 17 -22q231 0 291 6q12 1 15 4t8 19l25 77q3 8 11 8q21 0 21 -10q0 -3 -5 -19l-14.5 -47t-17.5 -61q-2 -11 -20 -11 q-11 0 -185.5 1.5t-190.5 1.5t-52.5 -1.5t-47.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="&#x13c;" horiz-adv-x="272" d="M17 -207q0 1 14 8.5t27 21t13 28.5q0 18 -17 34.5t-17 19.5q0 11 19.5 22.5t24.5 11.5q10 0 27 -17.5t17 -30.5q0 -30 -26 -58t-49 -41.5t-26 -13.5q-7 0 -7 13v2zM55 28q0 6 18 106.5l42 243t35 234.5q2 10 -1 14t-13 1q-66 -18 -74 -18q-5 0 -3 20q1 8 2.5 9.5t7.5 3.5 q39 9 75.5 18.5l53.5 14t19 4.5q10 0 10 -9q0 -12 -50 -305.5t-50 -296.5q0 -21 14 -21q12 0 36 21t43.5 42t20.5 21q3 0 9.5 -5.5t6.5 -7.5q0 -4 -28 -34.5t-71.5 -62t-73.5 -31.5q-29 0 -29 38z" />
+<glyph unicode="&#x13d;" horiz-adv-x="586" d="M367 495q0 3 6 25.5l15 57.5l13 51q9 32 34 32q26 0 26 -23q0 -9 -13 -35l-55 -98q-6 -12 -9 -12h-15q-2 0 -2 2zM20 15q0 9 2.5 10.5t14.5 1.5h52q1 0 20 142.5l38 292t19 164.5q0 13 -2 13h-58q-10 0 -13 2.5t-3 12.5t3.5 12.5t16.5 2.5q6 0 43.5 -1.5t54.5 -1.5 q16 0 57.5 1.5t52.5 1.5q12 0 14.5 -2t2.5 -13q0 -9 -3 -12t-15 -3h-62l-19 -144l-39 -290t-19 -152q0 -22 17 -22q231 0 291 6q12 1 15 4t8 19l25 77q3 8 11 8q21 0 21 -10q0 -3 -5 -19l-14.5 -47t-17.5 -61q-2 -11 -20 -11q-11 0 -185.5 1.5t-190.5 1.5t-52.5 -1.5 t-47.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="&#x13e;" horiz-adv-x="272" d="M248 495q0 3 6 25.5l15 57.5l13 51q9 32 34 32q26 0 26 -23q0 -9 -13 -35l-55 -98q-6 -12 -9 -12h-15q-2 0 -2 2zM55 28q0 6 18 106.5l42 243t35 234.5q2 10 -1 14t-13 1q-66 -18 -74 -18q-5 0 -3 20q1 8 2.5 9.5t7.5 3.5q39 9 75.5 18.5l53.5 14t19 4.5q10 0 10 -9 q0 -12 -50 -305.5t-50 -296.5q0 -21 14 -21q12 0 36 21t43.5 42t20.5 21q3 0 9.5 -5.5t6.5 -7.5q0 -4 -28 -34.5t-71.5 -62t-73.5 -31.5q-29 0 -29 38z" />
+<glyph unicode="&#x13f;" horiz-adv-x="586" d="M20 15q0 9 2.5 10.5t14.5 1.5h52q1 0 20 142.5l38 292t19 164.5q0 13 -2 13h-58q-10 0 -13 2.5t-3 12.5t3.5 12.5t16.5 2.5q6 0 43.5 -1.5t54.5 -1.5q16 0 57.5 1.5t52.5 1.5q12 0 14.5 -2t2.5 -13q0 -9 -3 -12t-15 -3h-62l-19 -144l-39 -290t-19 -152q0 -22 17 -22 q231 0 291 6q12 1 15 4t8 19l25 77q3 8 11 8q21 0 21 -10q0 -3 -5 -19l-14.5 -47t-17.5 -61q-2 -11 -20 -11q-11 0 -185.5 1.5t-190.5 1.5t-52.5 -1.5t-47.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5zM428 340q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13 q-20 0 -32 15t-12 33z" />
+<glyph unicode="&#x140;" horiz-adv-x="397" d="M297 340q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM55 28q0 6 18 106.5l42 243t35 234.5q2 10 -1 14t-13 1q-66 -18 -74 -18q-5 0 -3 20q1 8 2.5 9.5t7.5 3.5q39 9 75.5 18.5l53.5 14t19 4.5q10 0 10 -9q0 -12 -50 -305.5 t-50 -296.5q0 -21 14 -21q12 0 36 21t43.5 42t20.5 21q3 0 9.5 -5.5t6.5 -7.5q0 -4 -28 -34.5t-71.5 -62t-73.5 -31.5q-29 0 -29 38z" />
+<glyph unicode="&#x141;" horiz-adv-x="586" d="M20 15q0 9 2.5 10.5t14.5 1.5h52q1 0 26 188q1 7 0 7t-6 -2q-10 -5 -27.5 -13t-29.5 -13l-11 -6q-2 0 -2 9q0 15 3 18l69 32q9 4 10 15q45 343 45 364q0 13 -2 13h-58q-10 0 -13 2.5t-3 12.5t3.5 12.5t16.5 2.5q6 0 43.5 -1.5t54.5 -1.5q16 0 57.5 1.5t52.5 1.5 q12 0 14.5 -2t2.5 -13q0 -9 -3 -12t-15 -3h-62q0 -1 -44 -334q-1 -10 -1 -10.5t7 1.5l100 46.5l123.5 58t53.5 24.5q2 0 2 -4q0 -5 -3 -20q-1 -3 -5 -5l-271 -126q-10 -5 -12 -11q-1 -2 -1 -4q-26 -201 -26 -202q0 -22 17 -22q231 0 291 6q12 1 15 4t8 19l25 77q3 8 11 8 q21 0 21 -10q0 -3 -5 -19l-14.5 -47t-17.5 -61q-2 -11 -20 -11q-11 0 -185.5 1.5t-190.5 1.5t-52.5 -1.5t-47.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph unicode="&#x142;" horiz-adv-x="272" d="M29 273q-2 0 0 11q0 15 5 18l67 34q8 3 9 12q32 196 40 264q2 10 -1 14t-13 1q-66 -18 -74 -18q-5 0 -3 20q1 8 2.5 9.5t7.5 3.5q39 9 75.5 18.5l53.5 14t19 4.5q10 0 10 -9q0 -12 -47 -288v-1q-1 -5 -0.5 -5t3.5 1l2 1l35 17q34 18 35 18q2 0 0 -18q0 -2 -0.5 -4 t-0.5 -4l-1 -2l-74 -37q-5 -2 -6 -8q-46 -264 -46 -272q0 -21 14 -21q12 0 36 21t43.5 42t20.5 21q3 0 9.5 -5.5t6.5 -7.5q0 -4 -28 -34.5t-71.5 -62t-73.5 -31.5q-29 0 -29 38q0 4 6.5 40l19 105.5l22.5 128.5q1 6 0 6.5t-5 -1.5q-2 -1 -3 -1q-64 -33 -66 -33z" />
+<glyph unicode="&#x143;" horiz-adv-x="824" d="M455 731l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2zM20 15q0 9 3 10.5t15 1.5h50q40 245 89 514q1 6 4 22.5t5 29.5t2 21q0 3 -5 12t-10 11t-22 2h-50q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q6 0 53.5 -1.5t58.5 -1.5 q13 0 28.5 1.5t16.5 1.5q12 0 20 -13l329 -499q8 -12 16 -12q7 0 39.5 218.5t32.5 263.5q0 12 -2 12h-76q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q11 0 42 -1.5t47 -1.5t44.5 1.5t39.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-42q-6 0 -80 -467q-10 -60 -16 -168 q-1 -15 -4 -20t-12 -5t-28 32q-45 73 -118 180l-256 374q-15 21 -16 21q-4 0 -5 -20q0 -3 -17.5 -117t-35 -241.5t-17.5 -165.5q0 -15 3 -15h85q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -50.5 1.5t-55.5 1.5q-18 0 -52 -1.5t-35 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x144;" horiz-adv-x="515" d="M324 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-5 -6 -8 -6h-15q-4 0 -4 2zM15 287q0 2 29.5 26t72.5 48.5t70 24.5q21 0 21 -21t-6 -55t-12 -57l-19.5 -72.5t-16.5 -62.5q74 131 134.5 199.5t116.5 68.5q51 0 51 -44q0 -29 -38.5 -145t-38.5 -127 q0 -20 19 -20q13 0 34.5 18.5t38 37t17.5 18.5q3 0 7.5 -4.5t4.5 -6.5q0 -5 -24 -31.5t-63.5 -53.5t-72.5 -27q-15 0 -23.5 11.5t-8.5 29.5q0 28 40 135t40 138q0 12 -6 20.5t-16 8.5q-26 0 -79 -66.5t-100 -141.5q-22 -36 -44 -112q-7 -25 -15 -26q-40 -4 -48 -4 q-7 0 -5 10q60 249 60 312q0 18 -13 18q-14 0 -54 -32l-39 -32q-3 0 -8.5 5t-5.5 12z" />
+<glyph unicode="&#x145;" horiz-adv-x="824" d="M320 -207q0 1 14 8.5t27 21t13 28.5q0 18 -17 34.5t-17 19.5q0 11 19.5 22.5t24.5 11.5q10 0 27 -17.5t17 -30.5q0 -30 -26 -58t-49 -41.5t-26 -13.5q-7 0 -7 13v2zM20 15q0 9 3 10.5t15 1.5h50q40 245 89 514q1 6 4 22.5t5 29.5t2 21q0 3 -5 12t-10 11t-22 2h-50 q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q6 0 53.5 -1.5t58.5 -1.5q13 0 28.5 1.5t16.5 1.5q12 0 20 -13l329 -499q8 -12 16 -12q7 0 39.5 218.5t32.5 263.5q0 12 -2 12h-76q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q11 0 42 -1.5t47 -1.5t44.5 1.5t39.5 1.5q10 0 12 -2.5t2 -15.5 q0 -9 -3 -10.5t-15 -1.5h-42q-6 0 -80 -467q-10 -60 -16 -168q-1 -15 -4 -20t-12 -5t-28 32q-45 73 -118 180l-256 374q-15 21 -16 21q-4 0 -5 -20q0 -3 -17.5 -117t-35 -241.5t-17.5 -165.5q0 -15 3 -15h85q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -50.5 1.5 t-55.5 1.5q-18 0 -52 -1.5t-35 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x146;" horiz-adv-x="515" d="M162 -207q0 1 14 8.5t27 21t13 28.5q0 18 -17 34.5t-17 19.5q0 11 19.5 22.5t24.5 11.5q10 0 27 -17.5t17 -30.5q0 -30 -26 -58t-49 -41.5t-26 -13.5q-7 0 -7 13v2zM15 287q0 2 29.5 26t72.5 48.5t70 24.5q21 0 21 -21t-6 -55t-12 -57l-19.5 -72.5t-16.5 -62.5 q74 131 134.5 199.5t116.5 68.5q51 0 51 -44q0 -29 -38.5 -145t-38.5 -127q0 -20 19 -20q13 0 34.5 18.5t38 37t17.5 18.5q3 0 7.5 -4.5t4.5 -6.5q0 -5 -24 -31.5t-63.5 -53.5t-72.5 -27q-15 0 -23.5 11.5t-8.5 29.5q0 28 40 135t40 138q0 12 -6 20.5t-16 8.5 q-26 0 -79 -66.5t-100 -141.5q-22 -36 -44 -112q-7 -25 -15 -26q-40 -4 -48 -4q-7 0 -5 10q60 249 60 312q0 18 -13 18q-14 0 -54 -32l-39 -32q-3 0 -8.5 5t-5.5 12z" />
+<glyph unicode="&#x147;" horiz-adv-x="824" d="M384 837q0 2 5 2h12q1 0 7 -6l63 -52q3 -3 8 0l85 52q2 1 4 2.5t4 2.5l1 1h12q5 0 5 -2q0 -1 -4 -5l-91 -92q-11 -11 -20 -11h-20q-7 0 -9 1.5t-7 9.5l-53 92q-2 3 -2 5zM20 15q0 9 3 10.5t15 1.5h50q40 245 89 514q1 6 4 22.5t5 29.5t2 21q0 3 -5 12t-10 11t-22 2h-50 q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q6 0 53.5 -1.5t58.5 -1.5q13 0 28.5 1.5t16.5 1.5q12 0 20 -13l329 -499q8 -12 16 -12q7 0 39.5 218.5t32.5 263.5q0 12 -2 12h-76q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q11 0 42 -1.5t47 -1.5t44.5 1.5t39.5 1.5q10 0 12 -2.5t2 -15.5 q0 -9 -3 -10.5t-15 -1.5h-42q-6 0 -80 -467q-10 -60 -16 -168q-1 -15 -4 -20t-12 -5t-28 32q-45 73 -118 180l-256 374q-15 21 -16 21q-4 0 -5 -20q0 -3 -17.5 -117t-35 -241.5t-17.5 -165.5q0 -15 3 -15h85q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -50.5 1.5 t-55.5 1.5q-18 0 -52 -1.5t-35 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x148;" horiz-adv-x="515" d="M263 582q0 2 5 2h12q1 0 7 -6l63 -62q3 -3 8 0l85 62q7 6 9 6h12q5 0 5 -2l-4 -6l-91 -104q-11 -12 -20 -12h-20q-7 0 -9 1.5t-7 10.5l-53 104q-2 3 -2 6zM15 287q0 2 29.5 26t72.5 48.5t70 24.5q21 0 21 -21t-6 -55t-12 -57l-19.5 -72.5t-16.5 -62.5q74 131 134.5 199.5 t116.5 68.5q51 0 51 -44q0 -29 -38.5 -145t-38.5 -127q0 -20 19 -20q13 0 34.5 18.5t38 37t17.5 18.5q3 0 7.5 -4.5t4.5 -6.5q0 -5 -24 -31.5t-63.5 -53.5t-72.5 -27q-15 0 -23.5 11.5t-8.5 29.5q0 28 40 135t40 138q0 12 -6 20.5t-16 8.5q-26 0 -79 -66.5t-100 -141.5 q-22 -36 -44 -112q-7 -25 -15 -26q-40 -4 -48 -4q-7 0 -5 10q60 249 60 312q0 18 -13 18q-14 0 -54 -32l-39 -32q-3 0 -8.5 5t-5.5 12z" />
+<glyph unicode="&#x149;" horiz-adv-x="744" d="M244 287q0 2 29.5 26t72.5 48.5t70 24.5q21 0 21 -21t-6 -55t-12 -57l-19.5 -72.5t-16.5 -62.5q74 131 134.5 199.5t116.5 68.5q51 0 51 -44q0 -29 -38.5 -145t-38.5 -127q0 -20 19 -20q13 0 34.5 18.5t38 37t17.5 18.5q3 0 7.5 -4.5t4.5 -6.5q0 -5 -24 -31.5 t-63.5 -53.5t-72.5 -27q-15 0 -23.5 11.5t-8.5 29.5q0 28 40 135t40 138q0 12 -6 20.5t-16 8.5q-26 0 -79 -66.5t-100 -141.5q-22 -36 -44 -112q-7 -25 -15 -26q-40 -4 -48 -4q-7 0 -5 10q60 249 60 312q0 18 -13 18q-14 0 -53 -32l-40 -32q-3 0 -8.5 5t-5.5 12zM60 453 q0 1 16 16t32 35.5t16 35.5q0 13 -10.5 41.5t-10.5 41.5q0 19 18 36.5t29 17.5q10 0 19.5 -31.5t9.5 -53.5q0 -34 -25 -73t-49 -61.5t-28 -22.5q-3 0 -10 7.5t-7 10.5z" />
+<glyph unicode="&#x14a;" horiz-adv-x="824" d="M20 15q0 9 3 10.5t15 1.5h50q40 245 89 514q1 6 4 22.5t5 29.5t2 21q0 3 -5 12t-10 11t-22 2h-50q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q6 0 53.5 -1.5t58.5 -1.5q13 0 28.5 1.5t16.5 1.5q12 0 20 -13l329 -499q8 -12 16 -12q7 0 39.5 218.5t32.5 263.5q0 12 -2 12h-76 q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q11 0 42 -1.5t47 -1.5t44.5 1.5t39.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-42q-5 0 -68 -394l-12 -73q-22 -140 -44 -238q-23 -104 -86 -151q-52 -38 -87 -38q-24 0 -39.5 11t-15.5 23q0 15 10 25.5t25 10.5q18 0 38 -12.5 t37 -12.5q5 0 9 1.5t7 5.5l6 8t6 11.5t5 13t4.5 15.5t4 16.5l4 18t4.5 18.5q29 113 29 138q0 14 -10 30l-341 499q-15 21 -16 21q-4 0 -5 -20q0 -3 -17.5 -117t-35 -241.5t-17.5 -165.5q0 -15 3 -15h85q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -50.5 1.5t-55.5 1.5 q-18 0 -52 -1.5t-35 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x14b;" horiz-adv-x="515" d="M15 287q0 2 29.5 26t72.5 48.5t70 24.5q21 0 21 -21t-6 -55t-12 -57l-19.5 -72.5t-16.5 -62.5q74 131 134.5 199.5t116.5 68.5q51 0 51 -44q0 -49 -97 -408q-30 -109 -86 -151q-52 -38 -87 -38q-24 0 -39.5 11t-15.5 23q0 15 10 25.5t25 10.5q18 0 38 -12.5t37 -12.5 q5 0 9 1.5t7 5.5l6 8t6 11.5t5 13t4.5 15.5t4 16.5l4 18t4.5 18.5q7 30 35 137.5t46 183t18 96.5q0 12 -7 20.5t-17 8.5q-26 0 -79 -66.5t-100 -141.5q-22 -36 -44 -112q-7 -25 -15 -26q-40 -4 -48 -4q-7 0 -5 10q60 249 60 312q0 18 -13 18q-14 0 -54 -32l-39 -32 q-3 0 -8.5 5t-5.5 12z" />
+<glyph unicode="&#x14c;" horiz-adv-x="734" d="M339 788l2 21q1 6 2 7t7 1h181q5 0 6.5 -1t1.5 -6l-2 -23q-5 -8 -8 -8h-181q-7 0 -8.5 1t-0.5 8zM35 280q0 87 32.5 162t85.5 124.5t119.5 78t134.5 28.5q135 0 213.5 -89t78.5 -236q0 -151 -107 -260.5t-258 -109.5q-62 0 -114.5 17.5t-94.5 53t-66 94.5t-24 137z M127 286q0 -116 57 -200t167 -84q75 0 135.5 60t91 144t30.5 167q0 44 -11 89.5t-33.5 87.5t-62.5 68.5t-91 26.5q-71 0 -137 -52.5t-106 -136t-40 -170.5z" />
+<glyph unicode="&#x14d;" horiz-adv-x="419" d="M190 518l2 21q1 6 2 7t7 1h181q6 0 7 -1t1 -6l-2 -23q-5 -8 -8 -8h-181q-7 0 -8.5 1t-0.5 8zM25 138q0 110 66 184.5t165 74.5q71 0 104.5 -50t33.5 -109q0 -94 -68 -170t-161 -76q-67 0 -103.5 42.5t-36.5 103.5zM87 146q0 -130 80 -130q46 0 85.5 47.5t59 107 t19.5 107.5q0 36 -19 66t-67 30q-57 0 -107.5 -78.5t-50.5 -149.5z" />
+<glyph unicode="&#x14e;" horiz-adv-x="734" d="M353 810q0 28 4 28h13q1 0 1 -2q0 -31 15.5 -45t52.5 -14q53 0 77 32q4 6 7.5 13.5l5.5 11.5t3 4h13q-6 -46 -37.5 -77.5t-76.5 -31.5q-41 0 -59.5 23t-18.5 58zM35 280q0 87 32.5 162t85.5 124.5t119.5 78t134.5 28.5q135 0 213.5 -89t78.5 -236q0 -151 -107 -260.5 t-258 -109.5q-62 0 -114.5 17.5t-94.5 53t-66 94.5t-24 137zM127 286q0 -116 57 -200t167 -84q75 0 135.5 60t91 144t30.5 167q0 44 -11 89.5t-33.5 87.5t-62.5 68.5t-91 26.5q-71 0 -137 -52.5t-106 -136t-40 -170.5z" />
+<glyph unicode="&#x14f;" horiz-adv-x="419" d="M206 552q0 32 4 32h13q1 0 1 -3q0 -9 2 -21q9 -49 66 -49q52 0 78 40q4 7 7.5 15.5t5 13t2.5 4.5h13q-6 -53 -37.5 -89t-76.5 -36q-41 0 -59.5 26.5t-18.5 66.5zM25 138q0 110 66 184.5t165 74.5q71 0 104.5 -50t33.5 -109q0 -94 -68 -170t-161 -76q-67 0 -103.5 42.5 t-36.5 103.5zM87 146q0 -130 80 -130q46 0 85.5 47.5t59 107t19.5 107.5q0 36 -19 66t-67 30q-57 0 -107.5 -78.5t-50.5 -149.5z" />
+<glyph unicode="&#x150;" horiz-adv-x="734" d="M355 731l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2zM475 731l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2zM35 280q0 87 32.5 162t85.5 124.5t119.5 78t134.5 28.5q135 0 213.5 -89 t78.5 -236q0 -151 -107 -260.5t-258 -109.5q-62 0 -114.5 17.5t-94.5 53t-66 94.5t-24 137zM127 286q0 -116 57 -200t167 -84q75 0 135.5 60t91 144t30.5 167q0 44 -11 89.5t-33.5 87.5t-62.5 68.5t-91 26.5q-71 0 -137 -52.5t-106 -136t-40 -170.5z" />
+<glyph unicode="&#x151;" horiz-adv-x="419" d="M206 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-5 -6 -8 -6h-15q-4 0 -4 2zM316 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-5 -6 -8 -6h-15q-4 0 -4 2zM25 138q0 110 66 184.5t165 74.5q71 0 104.5 -50t33.5 -109 q0 -94 -68 -170t-161 -76q-67 0 -103.5 42.5t-36.5 103.5zM87 146q0 -130 80 -130q46 0 85.5 47.5t59 107t19.5 107.5q0 36 -19 66t-67 30q-57 0 -107.5 -78.5t-50.5 -149.5z" />
+<glyph unicode="&#x152;" horiz-adv-x="988" d="M35 287q0 166 114 277t270 111q36 0 105 -6.5t98 -6.5q28 0 108.5 1.5t100.5 1.5q55 0 74.5 2.5t20.5 10.5q1 12 13 12q11 0 14 -2t3 -9q0 -4 -4 -41t-5 -84q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 3 36t3 37q0 7 -263 7q-5 0 -41 -270q-2 -12 0 -14t14 -2h164q45 0 47 13 l11 53q1 7 16 7q13 0 13 -6q0 -4 -2.5 -17t-7 -34l-7.5 -36q-7 -39 -15 -89q-1 -7 -13 -7q-17 0 -17 8q1 7 4 23.5t5.5 29t2.5 14.5q0 8 -10 11t-40 3h-151q-9 0 -12 -0.5t-5 -2.5t-3 -7q-3 -13 -19.5 -129t-19.5 -147q0 -9 7 -9l319 7q4 0 10 16.5t14.5 43t13.5 37.5 q4 9 14 9q17 0 17 -11q0 -5 -5.5 -21l-17 -47.5t-19.5 -55.5q-4 -11 -17 -11q-11 0 -179 1.5t-184 1.5q-21 0 -88 -8.5t-119 -8.5q-58 0 -110.5 18t-97 53.5t-70.5 95.5t-26 137zM127 293q0 -111 64 -198.5t165 -87.5q44 0 71.5 3t35 6l27.5 11q60 376 78 537q1 7 2.5 22 l2.5 25t1 13t-20.5 9t-51 11t-53.5 5q-145 0 -233.5 -102t-88.5 -254z" />
+<glyph unicode="&#x153;" horiz-adv-x="669" d="M25 138q0 110 66 184.5t165 74.5q93 0 125 -92q67 86 168 86q93 0 93 -66q0 -43 -35 -77t-88 -54q-65 -24 -141 -24q-8 0 -8 -46q0 -89 96 -89q26 0 52.5 9t46 21.5t35 25.5l25.5 22t11 9q4 0 8.5 -5t4.5 -9q0 -2 -11 -13.5t-32 -28t-47 -32.5t-61 -27.5t-68 -11.5 q-85 0 -116 66q-71 -69 -149 -69q-67 0 -103.5 42.5t-36.5 103.5zM87 146q0 -130 80 -130q46 0 85.5 47.5t59 107t19.5 107.5q0 36 -19 66t-67 30q-57 0 -107.5 -78.5t-50.5 -149.5zM385 200q0 -7 10 -7q74 0 128 36.5t54 96.5q0 19 -14 30t-36 11q-82 0 -128 -122 q-14 -35 -14 -45z" />
+<glyph unicode="&#x154;" horiz-adv-x="625" d="M320 731l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2zM20 13q0 9 3 11.5t15 2.5h41q19 106 47.5 312t35.5 282q0 15 -3 15h-61q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 17 14q1 0 15 -0.5t38.5 -1.5t53.5 -1q15 0 69.5 3.5 t72.5 3.5q87 0 144.5 -45.5t57.5 -116.5q0 -44 -20 -78.5t-48.5 -53t-57 -30t-48.5 -16t-20 -5.5t7.5 -3.5l24.5 -8t34 -12.5q113 -45 113 -164q0 -6 -1.5 -44t-1.5 -54q0 -11 3 -11h43q12 0 16 -2.5t4 -12.5q0 -15 -8 -15q-2 0 -29.5 0.5t-61.5 1.5t-53 1q-7 0 -5 13 q16 94 16 157q0 48 -38 86.5t-97 50.5q-24 5 -71 5h-27q-25 0 -28 -24q-26 -182 -29 -252q0 -9 8 -9h53q8 0 10.5 -2t2.5 -11q0 -11 -2 -14t-9 -3q-11 0 -42.5 1.5t-47.5 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2t-2 14zM204 350q0 -14 18 -14h7q20 0 43.5 -1.5t26.5 -1.5 q53 0 108 50t55 115q0 145 -171 145q-50 0 -50 -5q-3 -25 -18.5 -143t-17.5 -132q-1 -5 -1 -13z" />
+<glyph unicode="&#x155;" horiz-adv-x="341" d="M188 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-5 -6 -8 -6h-15q-4 0 -4 2zM25 291q0 11 50.5 53t79.5 42q18 0 18 -20q0 -17 -27 -176l4 -1q47 121 62 149q29 55 72 55q18 0 32.5 -10t14.5 -26q0 -37 -22 -37q-11 0 -28 9t-27 9q-14 0 -25 -17 q-23 -35 -57 -125q-2 -6 -11 -38q-9 -36 -19.5 -86.5l-13.5 -64.5q-1 -4 -21.5 -7.5t-30.5 -3.5t-10 4q0 2 12 63.5t24 133t12 96.5q0 38 -13 38q-11 0 -27 -12.5t-27.5 -25.5t-12.5 -13q-9 0 -9 11z" />
+<glyph unicode="&#x156;" horiz-adv-x="625" d="M244 -207q0 1 14 8.5t27 21t13 28.5q0 18 -17 34.5t-17 19.5q0 11 19.5 22.5t24.5 11.5q10 0 27 -17.5t17 -30.5q0 -30 -26 -58t-49 -41.5t-26 -13.5q-7 0 -7 13v2zM20 13q0 9 3 11.5t15 2.5h41q19 106 47.5 312t35.5 282q0 15 -3 15h-61q-7 0 -10.5 0.5t-6 4t-2.5 10.5 q0 14 17 14q1 0 15 -0.5t38.5 -1.5t53.5 -1q15 0 69.5 3.5t72.5 3.5q87 0 144.5 -45.5t57.5 -116.5q0 -44 -20 -78.5t-48.5 -53t-57 -30t-48.5 -16t-20 -5.5t7.5 -3.5l24.5 -8t34 -12.5q113 -45 113 -164q0 -6 -1.5 -44t-1.5 -54q0 -11 3 -11h43q12 0 16 -2.5t4 -12.5 q0 -15 -8 -15q-2 0 -29.5 0.5t-61.5 1.5t-53 1q-7 0 -5 13q16 94 16 157q0 48 -38 86.5t-97 50.5q-24 5 -71 5h-27q-25 0 -28 -24q-26 -182 -29 -252q0 -9 8 -9h53q8 0 10.5 -2t2.5 -11q0 -11 -2 -14t-9 -3q-11 0 -42.5 1.5t-47.5 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2t-2 14z M204 350q0 -14 18 -14h7q20 0 43.5 -1.5t26.5 -1.5q53 0 108 50t55 115q0 145 -171 145q-50 0 -50 -5q-3 -25 -18.5 -143t-17.5 -132q-1 -5 -1 -13z" />
+<glyph unicode="&#x157;" horiz-adv-x="341" d="M24 -207q0 1 14 8.5t27 21t13 28.5q0 18 -17 34.5t-17 19.5q0 11 19.5 22.5t24.5 11.5q10 0 27 -17.5t17 -30.5q0 -30 -26 -58t-49 -41.5t-26 -13.5q-7 0 -7 13v2zM25 291q0 11 50.5 53t79.5 42q18 0 18 -20q0 -17 -27 -176l4 -1q47 121 62 149q29 55 72 55 q18 0 32.5 -10t14.5 -26q0 -37 -22 -37q-11 0 -28 9t-27 9q-14 0 -25 -17q-23 -35 -57 -125q-2 -6 -11 -38q-9 -36 -19.5 -86.5l-13.5 -64.5q-1 -4 -21.5 -7.5t-30.5 -3.5t-10 4q0 2 12 63.5t24 133t12 96.5q0 38 -13 38q-11 0 -27 -12.5t-27.5 -25.5t-12.5 -13q-9 0 -9 11z " />
+<glyph unicode="&#x158;" horiz-adv-x="625" d="M249 837q0 2 5 2h12q1 0 7 -6l63 -52q3 -3 8 0l85 52q2 1 4 2.5t3 2.5l2 1h12q5 0 5 -2q0 -1 -4 -5l-91 -92q-11 -11 -20 -11h-20q-7 0 -9 1.5t-7 9.5l-53 92q-2 3 -2 5zM20 13q0 9 3 11.5t15 2.5h41q19 106 47.5 312t35.5 282q0 15 -3 15h-61q-7 0 -10.5 0.5t-6 4 t-2.5 10.5q0 14 17 14q1 0 15 -0.5t38.5 -1.5t53.5 -1q15 0 69.5 3.5t72.5 3.5q87 0 144.5 -45.5t57.5 -116.5q0 -44 -20 -78.5t-48.5 -53t-57 -30t-48.5 -16t-20 -5.5t7.5 -3.5l24.5 -8t34 -12.5q113 -45 113 -164q0 -6 -1.5 -44t-1.5 -54q0 -11 3 -11h43q12 0 16 -2.5 t4 -12.5q0 -15 -8 -15q-2 0 -29.5 0.5t-61.5 1.5t-53 1q-7 0 -5 13q16 94 16 157q0 48 -38 86.5t-97 50.5q-24 5 -71 5h-27q-25 0 -28 -24q-26 -182 -29 -252q0 -9 8 -9h53q8 0 10.5 -2t2.5 -11q0 -11 -2 -14t-9 -3q-11 0 -42.5 1.5t-47.5 1.5t-54 -1.5t-49 -1.5 q-10 0 -12 2t-2 14zM204 350q0 -14 18 -14h7q20 0 43.5 -1.5t26.5 -1.5q53 0 108 50t55 115q0 145 -171 145q-50 0 -50 -5q-3 -25 -18.5 -143t-17.5 -132q-1 -5 -1 -13z" />
+<glyph unicode="&#x159;" horiz-adv-x="341" d="M127 582q0 2 5 2h12q1 0 7 -6l63 -62q3 -3 8 0l85 62q7 6 9 6h12q5 0 5 -2l-4 -6l-91 -104q-11 -12 -20 -12h-20q-7 0 -9 1.5t-7 10.5l-53 104q-2 3 -2 6zM25 291q0 11 50.5 53t79.5 42q18 0 18 -20q0 -17 -27 -176l4 -1q47 121 62 149q29 55 72 55q18 0 32.5 -10 t14.5 -26q0 -37 -22 -37q-11 0 -28 9t-27 9q-14 0 -25 -17q-23 -35 -57 -125q-2 -6 -11 -38q-9 -36 -19.5 -86.5l-13.5 -64.5q-1 -4 -21.5 -7.5t-30.5 -3.5t-10 4q0 2 12 63.5t24 133t12 96.5q0 38 -13 38q-11 0 -27 -12.5t-27.5 -25.5t-12.5 -13q-9 0 -9 11z" />
+<glyph unicode="&#x15a;" horiz-adv-x="505" d="M296 731l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2zM40 67q0 15 17 100q1 3 2.5 11.5t3 15t2.5 7.5t5 1q23 0 23 -10q0 -2 -7.5 -45.5t-7.5 -46.5q0 -18 64.5 -51t122.5 -33q56 0 93 35t37 88q0 42 -31.5 72.5t-76.5 52 l-90 45t-76.5 65t-31.5 99.5q0 86 57.5 141t147.5 55q20 0 41 -6t37.5 -14t30 -16t21.5 -14l8 -6l8 32q2 10 9 10h3q18 -3 18 -7q0 -3 -31 -167q-2 -12 -15 -12q-16 0 -16 12l4 14q4 14 7.5 31t3.5 24q0 2 -6 11.5t-18.5 22.5t-28.5 25t-39.5 20.5t-47.5 8.5 q-57 0 -90.5 -36.5t-33.5 -95.5q0 -39 22.5 -67.5t55.5 -44l72.5 -35t72.5 -39t55.5 -57t22.5 -88.5q0 -85 -66 -136.5t-144 -51.5q-55 0 -106.5 16.5t-77.5 35t-26 28.5z" />
+<glyph unicode="&#x15b;" horiz-adv-x="336" d="M192 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-5 -6 -8 -6h-15q-4 0 -4 2zM20 61q0 11 8.5 18t15.5 7q5 0 8.5 -0.5t7.5 -2t6 -2.5t5.5 -4t5 -4t5.5 -5.5t5 -5.5l13 -13.5l11.5 -12t9.5 -8t12 -6t13 -1.5q30 0 50.5 20t20.5 53q0 20 -22.5 44 t-49.5 42.5t-49.5 46.5t-22.5 56q0 47 39 81.5t92 34.5q31 0 52 -8t30 -20t12 -21t3 -15q0 -17 -18 -17q-29 0 -48 35q-15 27 -32 27q-27 0 -48 -15t-21 -48q0 -26 15 -47.5t36 -37l42.5 -31.5t36.5 -40t15 -54q0 -45 -39 -78.5t-92 -33.5q-46 0 -87 21.5t-41 44.5z" />
+<glyph unicode="&#x15c;" horiz-adv-x="505" d="M202 731q0 1 4 5l91 92q11 11 20 11h20q7 0 9 -1.5t7 -9.5l53 -92q2 -3 2 -5t-5 -2h-12q-1 0 -7 6l-63 52q-3 3 -8 0l-85 -52q-2 -1 -4 -2.5t-4 -2.5l-1 -1h-12q-5 0 -5 2zM40 67q0 15 17 100q1 3 2.5 11.5t3 15t2.5 7.5t5 1q23 0 23 -10q0 -2 -7.5 -45.5t-7.5 -46.5 q0 -18 64.5 -51t122.5 -33q56 0 93 35t37 88q0 42 -31.5 72.5t-76.5 52l-90 45t-76.5 65t-31.5 99.5q0 86 57.5 141t147.5 55q20 0 41 -6t37.5 -14t30 -16t21.5 -14l8 -6l8 32q2 10 9 10h3q18 -3 18 -7q0 -3 -31 -167q-2 -12 -15 -12q-16 0 -16 12l4 14q4 14 7.5 31t3.5 24 q0 2 -6 11.5t-18.5 22.5t-28.5 25t-39.5 20.5t-47.5 8.5q-57 0 -90.5 -36.5t-33.5 -95.5q0 -39 22.5 -67.5t55.5 -44l72.5 -35t72.5 -39t55.5 -57t22.5 -88.5q0 -85 -66 -136.5t-144 -51.5q-55 0 -106.5 16.5t-77.5 35t-26 28.5z" />
+<glyph unicode="&#x15d;" horiz-adv-x="336" d="M110 462l4 6l91 104q11 12 20 12h20q7 0 9 -1.5t7 -10.5l53 -104q2 -3 2 -6q0 -2 -5 -2h-12q-1 0 -7 6l-63 62q-3 3 -8 0l-85 -62q-8 -6 -9 -6h-12q-5 0 -5 2zM20 61q0 11 8.5 18t15.5 7q5 0 8.5 -0.5t7.5 -2t6 -2.5t5.5 -4t5 -4t5.5 -5.5t5 -5.5l13 -13.5l11.5 -12 t9.5 -8t12 -6t13 -1.5q30 0 50.5 20t20.5 53q0 20 -22.5 44t-49.5 42.5t-49.5 46.5t-22.5 56q0 47 39 81.5t92 34.5q31 0 52 -8t30 -20t12 -21t3 -15q0 -17 -18 -17q-29 0 -48 35q-15 27 -32 27q-27 0 -48 -15t-21 -48q0 -26 15 -47.5t36 -37l42.5 -31.5t36.5 -40t15 -54 q0 -45 -39 -78.5t-92 -33.5q-46 0 -87 21.5t-41 44.5z" />
+<glyph unicode="&#x15e;" horiz-adv-x="505" d="M40 67q0 15 17 100q1 3 2.5 11.5t3 15t2.5 7.5t5 1q23 0 23 -10q0 -2 -7.5 -45.5t-7.5 -46.5q0 -18 64.5 -51t122.5 -33q56 0 93 35t37 88q0 42 -31.5 72.5t-76.5 52l-90 45t-76.5 65t-31.5 99.5q0 86 57.5 141t147.5 55q20 0 41 -6t37.5 -14t30 -16t21.5 -14l8 -6l8 32 q2 10 9 10h3q18 -3 18 -7q0 -3 -31 -167q-2 -12 -15 -12q-16 0 -16 12l4 14q4 14 7.5 31t3.5 24q0 2 -6 11.5t-18.5 22.5t-28.5 25t-39.5 20.5t-47.5 8.5q-57 0 -90.5 -36.5t-33.5 -95.5q0 -39 22.5 -67.5t55.5 -44l72.5 -35t72.5 -39t55.5 -57t22.5 -88.5q0 -85 -66 -136.5 t-144 -51.5h-2q-30 -53 -30 -54q0 -2 5 -2q8 2 24 2q35 0 56 -19t21 -45q0 -37 -32 -61.5t-80 -24.5q-22 0 -40.5 6t-26.5 12t-8 9q0 10 8 10l8 -4q8 -3 21 -6.5t27 -3.5q69 0 69 49q0 18 -11 31.5t-36 13.5q-8 0 -16 -1.5t-13.5 -3t-6.5 -1.5q-7 0 -7 4q0 1 49 90 q-50 3 -96.5 19.5t-69.5 33t-23 26.5z" />
+<glyph unicode="&#x15f;" horiz-adv-x="336" d="M20 61q0 11 8.5 18t15.5 7q5 0 8.5 -0.5t7.5 -2t6 -2.5t5.5 -4t5 -4t5.5 -5.5t5 -5.5l13 -13.5l11.5 -12t9.5 -8t12 -6t13 -1.5q30 0 50.5 20t20.5 53q0 20 -22.5 44t-49.5 42.5t-49.5 46.5t-22.5 56q0 47 39 81.5t92 34.5q31 0 52 -8t30 -20t12 -21t3 -15q0 -17 -18 -17 q-29 0 -48 35q-15 27 -32 27q-27 0 -48 -15t-21 -48q0 -26 15 -47.5t36 -37l42.5 -31.5t36.5 -40t15 -54q0 -44 -38 -77.5t-91 -34.5q-34 -59 -34 -62q0 -2 5 -2q8 2 24 2q35 0 56 -19t21 -45q0 -37 -32 -61.5t-80 -24.5q-22 0 -40.5 6t-26.5 12t-8 9q0 10 8 10l8 -4 q8 -3 21 -6.5t27 -3.5q69 0 69 49q0 18 -11 31.5t-36 13.5q-8 0 -16 -1.5t-13.5 -3t-6.5 -1.5q-7 0 -7 4q0 1 10.5 19l24 42.5t19.5 36.5q-42 4 -77 24t-35 41z" />
+<glyph unicode="&#x160;" horiz-adv-x="505" d="M225 837q0 2 5 2h12q1 0 7 -6l63 -52q3 -3 8 0l85 52q2 1 4 2.5t3 2.5l2 1h12q5 0 5 -2q0 -1 -4 -5l-91 -92q-11 -11 -20 -11h-20q-7 0 -9 1.5t-7 9.5l-53 92q-2 3 -2 5zM40 67q0 15 17 100q1 3 2.5 11.5t3 15t2.5 7.5t5 1q23 0 23 -10q0 -2 -7.5 -45.5t-7.5 -46.5 q0 -18 64.5 -51t122.5 -33q56 0 93 35t37 88q0 42 -31.5 72.5t-76.5 52l-90 45t-76.5 65t-31.5 99.5q0 86 57.5 141t147.5 55q20 0 41 -6t37.5 -14t30 -16t21.5 -14l8 -6l8 32q2 10 9 10h3q18 -3 18 -7q0 -3 -31 -167q-2 -12 -15 -12q-16 0 -16 12l4 14q4 14 7.5 31t3.5 24 q0 2 -6 11.5t-18.5 22.5t-28.5 25t-39.5 20.5t-47.5 8.5q-57 0 -90.5 -36.5t-33.5 -95.5q0 -39 22.5 -67.5t55.5 -44l72.5 -35t72.5 -39t55.5 -57t22.5 -88.5q0 -85 -66 -136.5t-144 -51.5q-55 0 -106.5 16.5t-77.5 35t-26 28.5z" />
+<glyph unicode="&#x161;" horiz-adv-x="336" d="M131 582q0 2 5 2h12q1 0 7 -6l63 -62q3 -3 8 0l85 62q7 6 9 6h12q5 0 5 -2l-4 -6l-91 -104q-11 -12 -20 -12h-20q-7 0 -9 1.5t-7 10.5l-53 104q-2 3 -2 6zM20 61q0 11 8.5 18t15.5 7q5 0 8.5 -0.5t7.5 -2t6 -2.5t5.5 -4t5 -4t5.5 -5.5t5 -5.5l13 -13.5l11.5 -12t9.5 -8 t12 -6t13 -1.5q30 0 50.5 20t20.5 53q0 20 -22.5 44t-49.5 42.5t-49.5 46.5t-22.5 56q0 47 39 81.5t92 34.5q31 0 52 -8t30 -20t12 -21t3 -15q0 -17 -18 -17q-29 0 -48 35q-15 27 -32 27q-27 0 -48 -15t-21 -48q0 -26 15 -47.5t36 -37l42.5 -31.5t36.5 -40t15 -54 q0 -45 -39 -78.5t-92 -33.5q-46 0 -87 21.5t-41 44.5z" />
+<glyph unicode="&#x162;" horiz-adv-x="681" d="M20 546q0 1 6 16.5t16.5 46.5l20.5 63q3 9 7 11.5t15 2.5q10 0 10 -12v-5q0 -8 106 -8h326q103 0 104 11q1 14 14 14q11 0 13.5 -2t2.5 -9q0 -8 -1.5 -23t-3.5 -44t-4 -63q0 -10 -19 -10q-8 0 -9.5 2.5t-1.5 11.5q0 2 3 38.5t3 39.5q0 6 -107 6h-106q-9 0 -13 -20 l-27 -188l-37 -262t-17 -122q0 -14 8 -14h64q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-8 0 -107 3q-37 -66 -37 -67q0 -2 5 -2q8 2 24 2q35 0 56 -19t21 -45q0 -37 -32 -61.5t-80 -24.5q-22 0 -40.5 6t-26.5 12t-8 9q0 10 8 10l8 -4q8 -3 21 -6.5t27 -3.5q69 0 69 49 q0 18 -11 31.5t-36 13.5q-8 0 -16 -1.5t-13.5 -3t-6.5 -1.5q-7 0 -7 4q0 1 11.5 21l25.5 45.5t19 35.5q-18 0 -59 -1.5t-46 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h54q10 0 94 569q3 24 3 26q0 11 -6 11h-137q-92 0 -95 -11l-24 -70q-4 -11 -6.5 -14t-9.5 -3 q-19 0 -19 11z" />
+<glyph unicode="&#x163;" horiz-adv-x="284" d="M-17 -190q0 10 8 10l8 -4q8 -3 21 -6.5t27 -3.5q69 0 69 49q0 18 -11 31.5t-36 13.5q-8 0 -16 -1.5t-13.5 -3t-6.5 -1.5q-7 0 -7 4q0 1 11 20l24.5 44l19.5 36q-27 3 -27 34q0 10 26.5 153.5t26.5 145.5v4q1 5 -0.5 6t-8.5 1h-47q-16 0 -16 4q0 1 0.5 9t0.5 10q0 7 8 7 h61q9 0 11 8q10 55 16 101q2 10 4.5 13t13.5 4q5 1 21 1q28 0 28 -5q0 -1 -5.5 -25l-11.5 -51.5t-7 -35.5q-1 -7 0.5 -8.5t9.5 -1.5h73q9 0 9 -8q0 -22 -13 -22h-73h-7t-3.5 -1.5t-1.5 -2.5t-1 -6q-41 -220 -41 -247q0 -21 19 -21q11 0 37 22.5t48.5 45t23.5 22.5 q2 0 8 -4.5t6 -6.5q0 -4 -28 -35t-70 -66t-70 -42q-37 -66 -37 -67q0 -2 5 -2q8 2 24 2q35 0 56 -19t21 -45q0 -37 -32 -61.5t-80 -24.5q-22 0 -40.5 6t-26.5 12t-8 9z" />
+<glyph unicode="&#x164;" horiz-adv-x="681" d="M279 834q0 2 5 2h12q1 0 7 -6l63 -52q3 -3 8 0l85 52q2 1 4 2.5t3 2.5l2 1h12q5 0 5 -2q0 -1 -4 -5l-91 -92q-11 -11 -20 -11h-20q-7 0 -9 1.5t-7 9.5l-53 92q-2 3 -2 5zM20 546q0 1 6 16.5t16.5 46.5l20.5 63q3 9 7 11.5t15 2.5q10 0 10 -12v-5q0 -8 106 -8h326 q103 0 104 11q1 14 14 14q11 0 13.5 -2t2.5 -9q0 -8 -1.5 -23t-3.5 -44t-4 -63q0 -10 -19 -10q-8 0 -9.5 2.5t-1.5 11.5q0 2 3 38.5t3 39.5q0 6 -107 6h-106q-9 0 -13 -20l-27 -188l-37 -262t-17 -122q0 -14 8 -14h64q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3 q-11 0 -57.5 1.5t-62.5 1.5q-17 0 -61 -1.5t-50 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h54q10 0 94 569q3 24 3 26q0 11 -6 11h-137q-92 0 -95 -11l-24 -70q-4 -11 -6.5 -14t-9.5 -3q-19 0 -19 11z" />
+<glyph unicode="&#x165;" horiz-adv-x="284" d="M243 495q0 3 6 25.5l15 57.5l13 51q9 32 34 32q26 0 26 -23q0 -9 -13 -35l-55 -98q-6 -12 -9 -12h-15q-2 0 -2 2zM35 346q0 1 0.5 9t0.5 10q0 7 8 7h61q9 0 11 8q10 55 16 101q2 10 4.5 13t13.5 4q5 1 21 1q28 0 28 -5q0 -1 -5.5 -25l-11.5 -51.5t-7 -35.5 q-1 -7 0.5 -8.5t9.5 -1.5h73q9 0 9 -8q0 -22 -13 -22h-73h-7t-3.5 -1.5t-1.5 -2.5t-1 -6q-41 -220 -41 -247q0 -21 19 -21q11 0 37 22.5t48.5 45t23.5 22.5q2 0 8 -4.5t6 -6.5q0 -4 -31.5 -39t-76.5 -70.5t-72 -35.5q-35 0 -35 34q0 10 26.5 153.5t26.5 145.5v4q1 5 -0.5 6 t-8.5 1h-47q-16 0 -16 4z" />
+<glyph unicode="&#x166;" horiz-adv-x="681" d="M20 546q0 1 6 16.5t16.5 46.5l20.5 63q3 9 7 11.5t15 2.5q10 0 10 -12v-5q0 -8 106 -8h326q103 0 104 11q1 14 14 14q11 0 13.5 -2t2.5 -9q0 -8 -1.5 -23t-3.5 -44t-4 -63q0 -10 -19 -10q-8 0 -9.5 2.5t-1.5 11.5q0 2 3 38.5t3 39.5q0 6 -107 6h-106q-9 0 -13 -20 l-35 -246q-1 -9 0.5 -10.5t10.5 -1.5h158q3 0 3 -12t-3 -12h-160q-10 0 -12 -1.5t-4 -11.5q-39 -273 -39 -277q0 -14 8 -14h64q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5q-17 0 -61 -1.5t-50 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h54 q9 0 53 291q2 8 0.5 10.5t-9.5 2.5h-157q-2 0 -2.5 12t2.5 12h159h7.5t4 2t1.5 3t1 7l34 229q3 24 3 26q0 11 -6 11h-137q-92 0 -95 -11l-24 -70q-4 -11 -6.5 -14t-9.5 -3q-19 0 -19 11z" />
+<glyph unicode="&#x167;" horiz-adv-x="284" d="M22 225q-1 0 -1.5 6t0.5 12t3 6h59q7 0 8.5 1t2.5 6q13 67 13 75v4q1 5 -0.5 6t-8.5 1h-47q-16 0 -16 4q0 1 0.5 9t0.5 10q0 7 8 7h61q9 0 11 8q10 55 16 101q2 10 4.5 13t13.5 4q5 1 21 1q28 0 28 -5q0 -1 -5.5 -25l-11.5 -51.5t-7 -35.5q-1 -7 0.5 -8.5t9.5 -1.5h73 q9 0 9 -8q0 -22 -13 -22h-73h-7t-3.5 -1.5t-1.5 -2.5t-1 -6l-14 -76q-1 -7 6 -7h86q2 0 2 -6t-1.5 -12t-3.5 -6h-87q-7 0 -8 -6v-2q-21 -126 -21 -132q0 -21 19 -21q11 0 37 22.5t48.5 45t23.5 22.5q2 0 8 -4.5t6 -6.5q0 -4 -31.5 -39t-76.5 -70.5t-72 -35.5q-35 0 -35 34 q0 14 32 185q1 6 0 7t-8 1h-56z" />
+<glyph unicode="&#x168;" horiz-adv-x="759" d="M319 745q2 9 11 25q15 25 32.5 38.5t30.5 13.5q15 0 41 -18t39 -18q21 0 40 33q3 7 13 7q6 0 6 -2q-1 -6 -11 -26q-29 -55 -66 -55q-17 0 -41 17.5t-39 17.5q-22 0 -38 -29q-3 -6 -12 -6q-6 0 -6 2zM60 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 52.5 1.5 t47.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-32q-5 0 -23.5 -98.5t-35 -211.5t-16.5 -148q0 -37 15 -64.5t34.5 -40.5t46 -21t40.5 -9t27 -1q42 0 88.5 16t76.5 35q28 19 39 60q12 47 32 163q41 241 48 320h-67q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4 t11.5 0.5q6 0 46.5 -1.5t57.5 -1.5t48 1.5t34 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-32q-8 -38 -22 -118q-62 -378 -95 -490q-7 -25 -19 -25h-5q-9 0 -11 11q-1 10 -2.5 23t-2 19.5t-1.5 13t-2.5 9t-4.5 2.5t-45 -24q-113 -62 -211 -62q-82 0 -137 42.5 t-55 115.5q0 46 33 248.5t33 229.5q0 5 -1 5h-63q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#x169;" horiz-adv-x="521" d="M210 495q2 9 11 25q15 25 32.5 38.5t30.5 13.5q16 0 42 -18t38 -18q21 0 40 33q3 7 13 7q6 0 6 -2q-1 -6 -11 -26q-29 -55 -66 -55q-17 0 -41 17.5t-39 17.5q-22 0 -38 -29q-3 -6 -12 -6q-6 0 -6 2zM15 256q0 2 12 19t32 41.5t38 43.5q31 31 71 31q22 0 38.5 -9t16.5 -27 q0 -13 -32 -132.5t-32 -145.5q0 -23 28 -23q33 0 88 78q72 104 101 199q6 24 12 55q1 4 27 7q15 2 26 3q9 0 9 -9q0 -5 -27.5 -145.5t-27.5 -152.5q0 -25 19 -25q11 0 31 22.5t36 45t17 22.5q8 0 8 -7q0 -6 -22 -40.5t-57 -70.5t-62 -36q-14 0 -23.5 7.5t-9.5 19.5 q0 22 22.5 122.5t26.5 130.5q-1 -3 -10 -22t-26 -50t-33 -55q-104 -158 -173 -158q-55 0 -55 42q0 11 30.5 125.5t30.5 152.5q0 29 -20 29q-11 0 -34 -24.5t-41.5 -49t-20.5 -24.5q-4 0 -9 3t-5 7z" />
+<glyph unicode="&#x16a;" horiz-adv-x="759" d="M327 788l2 21q1 6 2 7t7 1h181q5 0 6.5 -1t1.5 -6l-2 -23q-5 -8 -8 -8h-181q-7 0 -8.5 1t-0.5 8zM60 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 52.5 1.5t47.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-32q-5 0 -23.5 -98.5t-35 -211.5 t-16.5 -148q0 -37 15 -64.5t34.5 -40.5t46 -21t40.5 -9t27 -1q42 0 88.5 16t76.5 35q28 19 39 60q12 47 32 163q41 241 48 320h-67q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 46.5 -1.5t57.5 -1.5t48 1.5t34 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5 t-15.5 -1.5h-32q-8 -38 -22 -118q-62 -378 -95 -490q-7 -25 -19 -25h-5q-9 0 -11 11q-1 10 -2.5 23t-2 19.5t-1.5 13t-2.5 9t-4.5 2.5t-45 -24q-113 -62 -211 -62q-82 0 -137 42.5t-55 115.5q0 46 33 248.5t33 229.5q0 5 -1 5h-63q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#x16b;" horiz-adv-x="521" d="M218 518l2 21q1 6 2 7t7 1h181q6 0 7 -1t1 -6l-2 -23q-5 -8 -8 -8h-181q-7 0 -8.5 1t-0.5 8zM15 256q0 2 12 19t32 41.5t38 43.5q31 31 71 31q22 0 38.5 -9t16.5 -27q0 -13 -32 -132.5t-32 -145.5q0 -23 28 -23q33 0 88 78q72 104 101 199q6 24 12 55q1 4 27 7q15 2 26 3 q9 0 9 -9q0 -5 -27.5 -145.5t-27.5 -152.5q0 -25 19 -25q11 0 31 22.5t36 45t17 22.5q8 0 8 -7q0 -6 -22 -40.5t-57 -70.5t-62 -36q-14 0 -23.5 7.5t-9.5 19.5q0 22 22.5 122.5t26.5 130.5q-1 -3 -10 -22t-26 -50t-33 -55q-104 -158 -173 -158q-55 0 -55 42q0 11 30.5 125.5 t30.5 152.5q0 29 -20 29q-11 0 -34 -24.5t-41.5 -49t-20.5 -24.5q-4 0 -9 3t-5 7z" />
+<glyph unicode="&#x16c;" horiz-adv-x="759" d="M341 810q0 28 4 28h13q1 0 1 -2q0 -31 15.5 -45t52.5 -14q53 0 77 32q4 6 7.5 13.5l5.5 11.5t3 4h13q-6 -46 -37.5 -77.5t-76.5 -31.5q-41 0 -59.5 23t-18.5 58zM60 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 52.5 1.5t47.5 1.5q10 0 12 -2.5t2 -15.5 q0 -9 -3 -10.5t-15 -1.5h-32q-5 0 -23.5 -98.5t-35 -211.5t-16.5 -148q0 -37 15 -64.5t34.5 -40.5t46 -21t40.5 -9t27 -1q42 0 88.5 16t76.5 35q28 19 39 60q12 47 32 163q41 241 48 320h-67q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 46.5 -1.5t57.5 -1.5 t48 1.5t34 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-32q-8 -38 -22 -118q-62 -378 -95 -490q-7 -25 -19 -25h-5q-9 0 -11 11q-1 10 -2.5 23t-2 19.5t-1.5 13t-2.5 9t-4.5 2.5t-45 -24q-113 -62 -211 -62q-82 0 -137 42.5t-55 115.5q0 46 33 248.5t33 229.5 q0 5 -1 5h-63q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#x16d;" horiz-adv-x="521" d="M234 552q0 32 4 32h13q1 0 1 -3q0 -9 2 -21q9 -49 66 -49q52 0 78 40q4 7 7.5 15.5t5 13t2.5 4.5h13q-6 -53 -37.5 -89t-76.5 -36q-41 0 -59.5 26.5t-18.5 66.5zM15 256q0 2 12 19t32 41.5t38 43.5q31 31 71 31q22 0 38.5 -9t16.5 -27q0 -13 -32 -132.5t-32 -145.5 q0 -23 28 -23q33 0 88 78q72 104 101 199q6 24 12 55q1 4 27 7q15 2 26 3q9 0 9 -9q0 -5 -27.5 -145.5t-27.5 -152.5q0 -25 19 -25q11 0 31 22.5t36 45t17 22.5q8 0 8 -7q0 -6 -22 -40.5t-57 -70.5t-62 -36q-14 0 -23.5 7.5t-9.5 19.5q0 22 22.5 122.5t26.5 130.5 q-1 -3 -10 -22t-26 -50t-33 -55q-104 -158 -173 -158q-55 0 -55 42q0 11 30.5 125.5t30.5 152.5q0 29 -20 29q-11 0 -34 -24.5t-41.5 -49t-20.5 -24.5q-4 0 -9 3t-5 7z" />
+<glyph unicode="&#x16e;" horiz-adv-x="759" d="M359 781q0 28 20 48t48 20t48 -20t20 -48t-20 -48t-48 -20t-48 20t-20 48zM387 781q0 -17 11.5 -28.5t28.5 -11.5t28.5 11.5t11.5 28.5t-11.5 28.5t-28.5 11.5t-28.5 -11.5t-11.5 -28.5zM60 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 52.5 1.5t47.5 1.5 q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-32q-5 0 -23.5 -98.5t-35 -211.5t-16.5 -148q0 -37 15 -64.5t34.5 -40.5t46 -21t40.5 -9t27 -1q42 0 88.5 16t76.5 35q28 19 39 60q12 47 32 163q41 241 48 320h-67q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5 q6 0 46.5 -1.5t57.5 -1.5t48 1.5t34 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-32q-8 -38 -22 -118q-62 -378 -95 -490q-7 -25 -19 -25h-5q-9 0 -11 11q-1 10 -2.5 23t-2 19.5t-1.5 13t-2.5 9t-4.5 2.5t-45 -24q-113 -62 -211 -62q-82 0 -137 42.5t-55 115.5 q0 46 33 248.5t33 229.5q0 5 -1 5h-63q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#x16f;" horiz-adv-x="521" d="M250 531q0 28 20 48t48 20t48 -20t20 -48t-20 -48t-48 -20t-48 20t-20 48zM278 531q0 -17 11.5 -28.5t28.5 -11.5t28.5 11.5t11.5 28.5t-11.5 28.5t-28.5 11.5t-28.5 -11.5t-11.5 -28.5zM15 256q0 2 12 19t32 41.5t38 43.5q31 31 71 31q22 0 38.5 -9t16.5 -27 q0 -13 -32 -132.5t-32 -145.5q0 -23 28 -23q33 0 88 78q72 104 101 199q6 24 12 55q1 4 27 7q15 2 26 3q9 0 9 -9q0 -5 -27.5 -145.5t-27.5 -152.5q0 -25 19 -25q11 0 31 22.5t36 45t17 22.5q8 0 8 -7q0 -6 -22 -40.5t-57 -70.5t-62 -36q-14 0 -23.5 7.5t-9.5 19.5 q0 22 22.5 122.5t26.5 130.5q-1 -3 -10 -22t-26 -50t-33 -55q-104 -158 -173 -158q-55 0 -55 42q0 11 30.5 125.5t30.5 152.5q0 29 -20 29q-11 0 -34 -24.5t-41.5 -49t-20.5 -24.5q-4 0 -9 3t-5 7z" />
+<glyph unicode="&#x170;" horiz-adv-x="759" d="M343 731l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2zM463 731l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2zM60 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 52.5 1.5 t47.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-32q-5 0 -23.5 -98.5t-35 -211.5t-16.5 -148q0 -37 15 -64.5t34.5 -40.5t46 -21t40.5 -9t27 -1q42 0 88.5 16t76.5 35q28 19 39 60q12 47 32 163q41 241 48 320h-67q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4 t11.5 0.5q6 0 46.5 -1.5t57.5 -1.5t48 1.5t34 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-32q-8 -38 -22 -118q-62 -378 -95 -490q-7 -25 -19 -25h-5q-9 0 -11 11q-1 10 -2.5 23t-2 19.5t-1.5 13t-2.5 9t-4.5 2.5t-45 -24q-113 -62 -211 -62q-82 0 -137 42.5 t-55 115.5q0 46 33 248.5t33 229.5q0 5 -1 5h-63q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#x171;" horiz-adv-x="521" d="M234 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-5 -6 -8 -6h-15q-4 0 -4 2zM344 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-5 -6 -8 -6h-15q-4 0 -4 2zM15 256q0 2 12 19t32 41.5t38 43.5q31 31 71 31q22 0 38.5 -9t16.5 -27 q0 -13 -32 -132.5t-32 -145.5q0 -23 28 -23q33 0 88 78q72 104 101 199q6 24 12 55q1 4 27 7q15 2 26 3q9 0 9 -9q0 -5 -27.5 -145.5t-27.5 -152.5q0 -25 19 -25q11 0 31 22.5t36 45t17 22.5q8 0 8 -7q0 -6 -22 -40.5t-57 -70.5t-62 -36q-14 0 -23.5 7.5t-9.5 19.5 q0 22 22.5 122.5t26.5 130.5q-1 -3 -10 -22t-26 -50t-33 -55q-104 -158 -173 -158q-55 0 -55 42q0 11 30.5 125.5t30.5 152.5q0 29 -20 29q-11 0 -34 -24.5t-41.5 -49t-20.5 -24.5q-4 0 -9 3t-5 7z" />
+<glyph unicode="&#x172;" horiz-adv-x="759" d="M60 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 52.5 1.5t47.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-32q-5 0 -23.5 -98.5t-35 -211.5t-16.5 -148q0 -37 15 -64.5t34.5 -40.5t46 -21t40.5 -9t27 -1q42 0 88.5 16t76.5 35q28 19 39 60 q12 47 32 163q41 241 48 320h-67q-8 0 -11 0.5t-6 4t-3 10.5t2.5 10.5t6 4t11.5 0.5q6 0 46.5 -1.5t57.5 -1.5t48 1.5t34 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-32q-8 -38 -22 -118q-62 -378 -95 -490q-7 -25 -19 -25h-5q-9 0 -11 11q-1 11 -2.5 23.5 t-2 20.5t-1.5 13q-2 8 -3 9t-6 -3q-173 -156 -173 -247q0 -27 13.5 -48.5t40.5 -21.5q20 0 42 11t36 22l14 11q1 0 5 -6t4 -7q0 -3 -19 -19t-55 -34t-72 -18q-32 0 -54 23.5t-22 60.5q0 19 6 38.5t21 41.5l25.5 36.5t35.5 39l34 33t38.5 34t31.5 27.5q-110 -59 -206 -59 q-82 0 -137 42.5t-55 115.5q0 46 33 248.5t33 229.5q0 5 -1 5h-63q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#x173;" horiz-adv-x="521" d="M15 256q0 2 12 19t32 41.5t38 43.5q31 31 71 31q22 0 38.5 -9t16.5 -27q0 -13 -32 -132.5t-32 -145.5q0 -23 28 -23q33 0 88 78q72 104 101 199q6 24 12 55q1 4 27 7q15 2 26 3q9 0 9 -9q0 -5 -27.5 -145.5t-27.5 -152.5q0 -25 19 -25q11 0 31 22.5t36 45t17 22.5 q8 0 8 -7q0 -3 -12 -23.5t-34 -49.5t-43 -48q-8 -7 -28 -23t-31 -28q-81 -85 -81 -152q0 -24 14.5 -44.5t34.5 -20.5t42 11t36 22l14 11q1 0 5 -6t4 -7q0 -3 -19 -19t-55 -34t-72 -18q-30 0 -50.5 26t-20.5 58q0 22 10.5 45.5t33.5 50t40 44t48 45.5q9 9 14 13 q-10 1 -17 9.5t-7 17.5q0 22 22.5 122.5t26.5 130.5q-1 -3 -10 -22t-26 -50t-33 -55q-104 -158 -173 -158q-55 0 -55 42q0 11 30.5 125.5t30.5 152.5q0 29 -20 29q-11 0 -34 -24.5t-41.5 -49t-20.5 -24.5q-4 0 -9 3t-5 7z" />
+<glyph unicode="&#x174;" horiz-adv-x="1010" d="M419 731q0 1 4 5l91 92q11 11 20 11h20q7 0 9 -1.5t7 -9.5l53 -92q2 -3 2 -5t-5 -2h-12q-1 0 -7 6l-63 52q-3 3 -8 0l-85 -52q-2 -1 -4 -2.5t-3 -2.5l-2 -1h-12q-5 0 -5 2zM20 649q0 7 2 10.5t5 4t11 0.5q6 0 40.5 -1.5t51.5 -1.5q16 0 52 1.5t47 1.5q10 0 12 -2.5 t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-53q-4 0 -4 -5q0 -26 35.5 -285.5t40.5 -259.5t88 149l139 255q-18 146 -21 146h-43h-5.5t-4 0.5t-4 1.5t-2.5 2.5t-1.5 4t-0.5 6.5q0 7 2 10.5t5 4t11 0.5q6 0 37 -1.5t48 -1.5q16 0 67.5 1.5t59.5 1.5q10 0 12.5 -3t2.5 -15 q0 -9 -3 -10.5t-16 -1.5h-73q-3 0 -3 -19q0 -14 32 -278.5t36 -264.5q3 0 30 49.5l66.5 127l76 149.5l71 141.5t39.5 78.5q4 12 3 14t-9 2h-64q-6 0 -8 0.5t-5 1.5t-4 4t-1 9q0 11 3 13t14 2q1 0 32.5 -1.5t63.5 -1.5q8 0 32 1.5t28 1.5q10 0 12.5 -3t2.5 -15q0 -9 -3 -10.5 t-16 -1.5h-11.5t-8 -0.5t-5.5 -1t-3.5 -2.5t-3 -3.5t-3 -6t-3.5 -7.5q-147 -285 -194 -369l-88 -156q-3 -6 -21.5 -28t-32.5 -44q-22 -33 -37 -33q-8 0 -11.5 10.5t-8.5 50.5q-22 154 -62 394l-195 -350q-3 -6 -21.5 -28t-32.5 -44q-22 -33 -35 -33q-8 0 -11.5 10.5 t-8.5 50.5q-20 147 -55.5 368.5t-40.5 221.5h-40q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#x175;" horiz-adv-x="681" d="M272 462l4 6l91 104q11 12 20 12h20q7 0 9 -1.5t7 -10.5l53 -104q2 -3 2 -6q0 -2 -5 -2h-12q-1 0 -7 6l-63 62q-3 3 -8 0l-85 -62q-8 -6 -9 -6h-12q-5 0 -5 2zM10 302q0 10 50 47t74 37q15 0 45 -18q31 -21 31 -46q0 -30 -6 -85t-12.5 -98t-6.5 -44q0 -13 12.5 -27 t21.5 -14q10 0 22 18l47 68t50 71q13 16 23.5 47t10.5 45q0 12 -20 32q-4 4 -8.5 8t-8 6t-6 4t-3.5 3.5t-1 2.5q0 9 14 22.5t24 13.5q16 0 43.5 -23.5t27.5 -37.5q0 -15 -15 -117t-15 -122q0 -16 13 -29.5t25 -13.5q9 0 30 25q57 66 88 111q44 65 45 141q0 33 -21 33 q-11 0 -30 -3t-33.5 -6t-15.5 -3q-6 0 -6 17q0 4 53.5 15.5t63.5 11.5q20 0 30 -7.5t10 -31.5q0 -57 -48.5 -140t-116.5 -151l-48 -50q-10 -10 -16 -10q-35 0 -58.5 23t-23.5 54q0 4 29 153q-83 -129 -125 -183q-3 -5 -13 -19l-13 -18q-11 -15 -21 -15q-14 0 -41 22 q-22 17 -28.5 28.5t-6.5 36.5q0 13 11 84.5t11 127.5q0 13 -15.5 29.5t-28.5 16.5q-15 0 -34 -14t-32 -28.5t-14 -14.5q-5 0 -9.5 5.5t-4.5 9.5z" />
+<glyph unicode="&#x176;" horiz-adv-x="613" d="M228 731q0 1 4 5l91 92q11 11 20 11h20q7 0 9 -1.5t7 -9.5l53 -92q2 -3 2 -5t-5 -2h-12q-1 0 -7 6l-63 52q-3 3 -8 0l-85 -52q-2 -1 -4 -2.5t-4 -2.5l-1 -1h-12q-5 0 -5 2zM20 654q0 7 2 10.5t5 4t11 0.5q6 0 45 -1.5t56 -1.5q16 0 46.5 1.5t41.5 1.5q10 0 12 -2.5 t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-31q-10 0 -11 -2t3 -13q13 -44 103 -265q6 -12 8 -12q5 0 16 18l35 52l46 68l43 65t34.5 56.5t12.5 29.5v3h-53q-13 0 -15.5 1.5t-2.5 10.5q0 13 2 15.5t12 2.5q11 0 36.5 -1.5t41.5 -1.5q17 0 42.5 1.5t31.5 1.5q11 0 13.5 -2t2.5 -13 q0 -6 -0.5 -9t-3 -4.5t-5 -1.5h-7.5h-36q-2 0 -45.5 -58l-97 -133t-80.5 -116q-5 -9 -8 -22q-44 -260 -44 -270q0 -13 5 -13h63q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -50 1.5t-55 1.5t-49.5 -1.5t-44.5 -1.5q-9 0 -11.5 3t-2.5 13q0 9 3 11.5t15 2.5h42q6 0 30 143 l15 90q5 27 5 41l-146 338h-47q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#x177;" horiz-adv-x="422" d="M169 462l4 6l91 104q11 12 20 12h20q7 0 9 -1.5t7 -10.5l53 -104q2 -3 2 -6q0 -2 -5 -2h-12q-1 0 -7 6l-63 62q-3 3 -8 0l-85 -62q-7 -6 -9 -6h-12q-5 0 -5 2zM-13 -262q0 11 4 19t13 13.5t16.5 8t21 6.5t19.5 6q33 12 54 49q37 69 48 105.5t11 71.5q0 320 -69 320 q-18 0 -37 -15.5t-31 -30.5t-13 -15t-4.5 1t-6.5 3.5t-3 5.5q0 4 16.5 26.5t47.5 46t61 23.5q56 0 75 -86q12 -52 20 -241q1 -6 1 -12l35 64.5t48 94t29 74.5t17 101q1 17 11 17q12 0 24 -7t12 -18q0 -5 -2 -17q-12 -76 -148 -311l-29 -49l-10 -19q-82 -157 -101 -190 q-11 -20 -39 -37q-58 -35 -74 -35q-8 0 -12.5 9t-4.5 18z" />
+<glyph unicode="&#x178;" horiz-adv-x="613" d="M230 785q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM370 785q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM20 654q0 7 2 10.5t5 4t11 0.5q6 0 45 -1.5t56 -1.5q16 0 46.5 1.5 t41.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-31q-10 0 -11 -2t3 -13q13 -44 103 -265q6 -12 8 -12q5 0 16 18l35 52l46 68l43 65t34.5 56.5t12.5 29.5v3h-53q-13 0 -15.5 1.5t-2.5 10.5q0 13 2 15.5t12 2.5q11 0 36.5 -1.5t41.5 -1.5q17 0 42.5 1.5 t31.5 1.5q11 0 13.5 -2t2.5 -13q0 -6 -0.5 -9t-3 -4.5t-5 -1.5h-7.5h-36q-2 0 -45.5 -58l-97 -133t-80.5 -116q-5 -9 -8 -22q-44 -260 -44 -270q0 -13 5 -13h63q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -50 1.5t-55 1.5t-49.5 -1.5t-44.5 -1.5q-9 0 -11.5 3t-2.5 13 q0 9 3 11.5t15 2.5h42q6 0 30 143l15 90q5 27 5 41l-146 338h-47q-6 0 -8 0.5t-5 1.5t-4 4t-1 9z" />
+<glyph unicode="&#x179;" horiz-adv-x="599" d="M335 731l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2zM35 15q0 7 215 308t215 303q0 3 -24 3h-256q-42 0 -44 -10l-5.5 -28l-6 -32t-2.5 -15q-3 -10 -8 -11h-5q-21 0 -21 7q0 2 4.5 24.5t10.5 56t9 59.5q0 6 16 6q14 0 14 -5v-9 q0 -11 57 -11h348q10 0 13.5 -3t3.5 -12q0 -6 -187 -275q-224 -322 -224 -329q0 -10 11 -10l304 3q15 0 21 15q8 23 23 89q2 8 14 8q20 0 20 -12q0 -2 -6.5 -27l-15 -56.5t-11.5 -43.5q-2 -11 -22 -11q-57 0 -229.5 1.5t-223.5 1.5q-5 0 -6.5 2.5t-1.5 12.5z" />
+<glyph unicode="&#x17a;" horiz-adv-x="414" d="M229 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-4 -6 -8 -6h-15q-4 0 -4 2zM25 2q0 8 4.5 16t15 18.5l11.5 11.5l238 265q5 6 2.5 7t-7.5 -1q-2 0 -3 -0.5t-3 -0.5h-3q-23 0 -75.5 16t-67.5 16q-16 0 -31.5 -12t-25 -24t-10.5 -12q-4 0 -8.5 3 t-4.5 5q0 4 13.5 24t38.5 41t49 21q23 0 84 -22t82 -22q8 0 23 18.5t27 18.5q6 0 10.5 -5t4.5 -11q0 -11 -11 -20.5t-27 -17.5t-21 -14l-220 -244q-4 -5 -5 -6.5t2 -3.5t13 -2q42 -2 120 -8t97 -6q9 0 12 4t3 14v13q-1 14 -1 15q0 6 11 6q9 0 9 -5q1 -14 3 -35.5t3.5 -35 t1.5 -15.5q0 -14 -36 -14h-7q-23 0 -125.5 8t-145.5 8q-4 0 -13 -12t-16 -12q-11 0 -11 12z" />
+<glyph unicode="&#x17b;" horiz-adv-x="599" d="M312 790q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM35 15q0 7 215 308t215 303q0 3 -24 3h-256q-42 0 -44 -10l-5.5 -28l-6 -32t-2.5 -15q-3 -10 -8 -11h-5q-21 0 -21 7q0 2 4.5 24.5t10.5 56t9 59.5q0 6 16 6q14 0 14 -5v-9 q0 -11 57 -11h348q10 0 13.5 -3t3.5 -12q0 -6 -187 -275q-224 -322 -224 -329q0 -10 11 -10l304 3q15 0 21 15q8 23 23 89q2 8 14 8q20 0 20 -12q0 -2 -6.5 -27l-15 -56.5t-11.5 -43.5q-2 -11 -22 -11q-57 0 -229.5 1.5t-223.5 1.5q-5 0 -6.5 2.5t-1.5 12.5z" />
+<glyph unicode="&#x17c;" horiz-adv-x="414" d="M215 540q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM25 2q0 8 4.5 16t15 18.5l11.5 11.5l238 265q5 6 2.5 7t-7.5 -1q-2 0 -3 -0.5t-3 -0.5h-3q-23 0 -75.5 16t-67.5 16q-16 0 -31.5 -12t-25 -24t-10.5 -12q-4 0 -8.5 3 t-4.5 5q0 4 13.5 24t38.5 41t49 21q23 0 84 -22t82 -22q8 0 23 18.5t27 18.5q6 0 10.5 -5t4.5 -11q0 -11 -11 -20.5t-27 -17.5t-21 -14l-220 -244q-4 -5 -5 -6.5t2 -3.5t13 -2q42 -2 120 -8t97 -6q9 0 12 4t3 14v13q-1 14 -1 15q0 6 11 6q9 0 9 -5q1 -14 3 -35.5t3.5 -35 t1.5 -15.5q0 -14 -36 -14h-7q-23 0 -125.5 8t-145.5 8q-4 0 -13 -12t-16 -12q-11 0 -11 12z" />
+<glyph unicode="&#x17d;" horiz-adv-x="599" d="M264 837q0 2 5 2h12q1 0 7 -6l63 -52q3 -3 8 0l85 52q2 1 4 2.5t4 2.5l1 1h12q5 0 5 -2q0 -1 -4 -5l-91 -92q-11 -11 -20 -11h-20q-7 0 -9 1.5t-7 9.5l-53 92q-2 3 -2 5zM35 15q0 7 215 308t215 303q0 3 -24 3h-256q-42 0 -44 -10l-5.5 -28l-6 -32t-2.5 -15 q-3 -10 -8 -11h-5q-21 0 -21 7q0 2 4.5 24.5t10.5 56t9 59.5q0 6 16 6q14 0 14 -5v-9q0 -11 57 -11h348q10 0 13.5 -3t3.5 -12q0 -6 -187 -275q-224 -322 -224 -329q0 -10 11 -10l304 3q15 0 21 15q8 23 23 89q2 8 14 8q20 0 20 -12q0 -2 -6.5 -27l-15 -56.5t-11.5 -43.5 q-2 -11 -22 -11q-57 0 -229.5 1.5t-223.5 1.5q-5 0 -6.5 2.5t-1.5 12.5z" />
+<glyph unicode="&#x17e;" horiz-adv-x="414" d="M168 582q0 2 5 2h12q1 0 7 -6l63 -62q3 -3 8 0l85 62q8 6 9 6h12q5 0 5 -2l-4 -6l-91 -104q-11 -12 -20 -12h-20q-7 0 -9 1.5t-7 10.5l-53 104q-2 3 -2 6zM25 2q0 8 4.5 16t15 18.5l11.5 11.5l238 265q5 6 2.5 7t-7.5 -1q-2 0 -3 -0.5t-3 -0.5h-3q-23 0 -75.5 16 t-67.5 16q-16 0 -31.5 -12t-25 -24t-10.5 -12q-4 0 -8.5 3t-4.5 5q0 4 13.5 24t38.5 41t49 21q23 0 84 -22t82 -22q8 0 23 18.5t27 18.5q6 0 10.5 -5t4.5 -11q0 -11 -11 -20.5t-27 -17.5t-21 -14l-220 -244q-4 -5 -5 -6.5t2 -3.5t13 -2q42 -2 120 -8t97 -6q9 0 12 4t3 14v13 q-1 14 -1 15q0 6 11 6q9 0 9 -5q1 -14 3 -35.5t3.5 -35t1.5 -15.5q0 -14 -36 -14h-7q-23 0 -125.5 8t-145.5 8q-4 0 -13 -12t-16 -12q-11 0 -11 12z" />
+<glyph unicode="&#x17f;" horiz-adv-x="284" d="M-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5q29 179 58 438q9 98 42 157q46 80 101 112q48 28 91 28q24 0 48.5 -12.5t24.5 -23.5q0 -13 -19 -27t-35 -14q-12 0 -37.5 18.5t-43.5 18.5 q-79 0 -110 -263q-31 -255 -61 -432q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5q-24 0 -46 12.5t-22 23.5z" />
+<glyph unicode="&#x218;" horiz-adv-x="505" d="M169 -207q0 1 14 8.5t27 21t13 28.5q0 18 -17 34.5t-17 19.5q0 11 19.5 22.5t24.5 11.5q10 0 27 -17.5t17 -30.5q0 -30 -26 -58t-49 -41.5t-26 -13.5q-7 0 -7 13v2zM40 67q0 15 17 100q1 3 2.5 11.5t3 15t2.5 7.5t5 1q23 0 23 -10q0 -2 -7.5 -45.5t-7.5 -46.5 q0 -18 64.5 -51t122.5 -33q56 0 93 35t37 88q0 42 -31.5 72.5t-76.5 52l-90 45t-76.5 65t-31.5 99.5q0 86 57.5 141t147.5 55q20 0 41 -6t37.5 -14t30 -16t21.5 -14l8 -6l8 32q2 10 9 10h3q18 -3 18 -7q0 -3 -31 -167q-2 -12 -15 -12q-16 0 -16 12l4 14q4 14 7.5 31t3.5 24 q0 2 -6 11.5t-18.5 22.5t-28.5 25t-39.5 20.5t-47.5 8.5q-57 0 -90.5 -36.5t-33.5 -95.5q0 -39 22.5 -67.5t55.5 -44l72.5 -35t72.5 -39t55.5 -57t22.5 -88.5q0 -85 -66 -136.5t-144 -51.5q-55 0 -106.5 16.5t-77.5 35t-26 28.5z" />
+<glyph unicode="&#x219;" horiz-adv-x="336" d="M67 -207q0 1 14 8.5t27 21t13 28.5q0 18 -17 34.5t-17 19.5q0 11 19.5 22.5t24.5 11.5q10 0 27 -17.5t17 -30.5q0 -30 -26 -58t-49 -41.5t-26 -13.5q-7 0 -7 13v2zM20 61q0 11 8.5 18t15.5 7q5 0 8.5 -0.5t7.5 -2t6 -2.5t5.5 -4t5 -4t5.5 -5.5t5 -5.5l13 -13.5l11.5 -12 t9.5 -8t12 -6t13 -1.5q30 0 50.5 20t20.5 53q0 20 -22.5 44t-49.5 42.5t-49.5 46.5t-22.5 56q0 47 39 81.5t92 34.5q31 0 52 -8t30 -20t12 -21t3 -15q0 -17 -18 -17q-29 0 -48 35q-15 27 -32 27q-27 0 -48 -15t-21 -48q0 -26 15 -47.5t36 -37l42.5 -31.5t36.5 -40t15 -54 q0 -45 -39 -78.5t-92 -33.5q-46 0 -87 21.5t-41 44.5z" />
+<glyph unicode="&#x21a;" horiz-adv-x="681" d="M200 -207q0 1 14 8.5t27 21t13 28.5q0 18 -17 34.5t-17 19.5q0 11 19.5 22.5t24.5 11.5q10 0 27 -17.5t17 -30.5q0 -30 -26 -58t-49 -41.5t-26 -13.5q-7 0 -7 13v2zM20 546q0 1 6 16.5t16.5 46.5l20.5 63q3 9 7 11.5t15 2.5q10 0 10 -12v-5q0 -8 106 -8h326q103 0 104 11 q1 14 14 14q11 0 13.5 -2t2.5 -9q0 -8 -1.5 -23t-3.5 -44t-4 -63q0 -10 -19 -10q-8 0 -9.5 2.5t-1.5 11.5q0 2 3 38.5t3 39.5q0 6 -107 6h-106q-9 0 -13 -20l-27 -188l-37 -262t-17 -122q0 -14 8 -14h64q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5 q-17 0 -61 -1.5t-50 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h54q10 0 94 569q3 24 3 26q0 11 -6 11h-137q-92 0 -95 -11l-24 -70q-4 -11 -6.5 -14t-9.5 -3q-19 0 -19 11z" />
+<glyph unicode="&#x21b;" horiz-adv-x="284" d="M15 -207q0 1 14 8.5t27 21t13 28.5q0 18 -17 34.5t-17 19.5q0 11 19.5 22.5t24.5 11.5q10 0 27 -17.5t17 -30.5q0 -30 -26 -58t-49 -41.5t-26 -13.5q-7 0 -7 13v2zM35 346q0 1 0.5 9t0.5 10q0 7 8 7h61q9 0 11 8q10 55 16 101q2 10 4.5 13t13.5 4q5 1 21 1q28 0 28 -5 q0 -1 -5.5 -25l-11.5 -51.5t-7 -35.5q-1 -7 0.5 -8.5t9.5 -1.5h73q9 0 9 -8q0 -22 -13 -22h-73h-7t-3.5 -1.5t-1.5 -2.5t-1 -6q-41 -220 -41 -247q0 -21 19 -21q11 0 37 22.5t48.5 45t23.5 22.5q2 0 8 -4.5t6 -6.5q0 -4 -31.5 -39t-76.5 -70.5t-72 -35.5q-35 0 -35 34 q0 10 26.5 153.5t26.5 145.5v4q1 5 -0.5 6t-8.5 1h-47q-16 0 -16 4z" />
+<glyph unicode="&#x237;" horiz-adv-x="297" d="M-69 -221q0 15 10 25.5t25 10.5q18 0 38 -12.5t37 -12.5q10 0 17.5 7.5t14 26.5t9.5 31.5t9 42.5q19 93 43 242t24 170q0 18 -12 18q-11 0 -35 -22t-43.5 -44.5t-20.5 -22.5q-4 0 -8 3.5t-4 7.5t30 36t71.5 64.5t66.5 32.5q21 0 21 -24q0 -21 -12.5 -103t-27 -167 t-15.5 -92q-7 -45 -14 -73.5t-28.5 -72.5t-53.5 -68q-52 -38 -87 -38q-24 0 -39.5 11t-15.5 23z" />
+<glyph unicode="&#x2bb;" horiz-adv-x="400" d="M152 500q0 30 26 58t49 41.5t26 13.5q7 0 7 -13v-2q0 -1 -14 -8.5t-27 -21t-13 -28.5q0 -18 17 -34.5t17 -19.5q0 -11 -19.5 -22.5t-24.5 -11.5q-10 0 -27 17.5t-17 30.5z" />
+<glyph unicode="&#x2bc;" horiz-adv-x="400" d="M387 495q0 3 6 25.5l15 57.5l13 51q9 32 34 32q26 0 26 -23q0 -9 -13 -35l-55 -98q-6 -12 -9 -12h-15q-2 0 -2 2z" />
+<glyph unicode="&#x2c0;" horiz-adv-x="400" />
+<glyph unicode="&#x2c6;" horiz-adv-x="400" d="M90 462l4 6l91 104q11 12 20 12h20q7 0 9 -1.5t7 -10.5l53 -104q2 -3 2 -6q0 -2 -5 -2h-12q-1 0 -7 6l-63 62q-3 3 -8 0l-85 -62q-8 -6 -9 -6h-12q-5 0 -5 2z" />
+<glyph unicode="&#x2c7;" horiz-adv-x="400" d="M111 582q0 2 5 2h12q1 0 7 -6l63 -62q3 -3 8 0l85 62q7 6 9 6h12q5 0 5 -2l-4 -6l-91 -104q-11 -12 -20 -12h-20q-7 0 -9 1.5t-7 10.5l-53 104q-2 3 -2 6z" />
+<glyph unicode="&#x2c8;" horiz-adv-x="400" />
+<glyph unicode="&#x2d8;" horiz-adv-x="400" d="M116 552q0 32 4 32h13q1 0 1 -3q0 -9 2 -21q9 -49 66 -49q52 0 78 40q4 7 7.5 15.5t5 13t2.5 4.5h13q-6 -53 -37.5 -89t-76.5 -36q-41 0 -59.5 26.5t-18.5 66.5z" />
+<glyph unicode="&#x2d9;" horiz-adv-x="400" d="M158 540q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33z" />
+<glyph unicode="&#x2da;" horiz-adv-x="400" d="M132 531q0 28 20 48t48 20t48 -20t20 -48t-20 -48t-48 -20t-48 20t-20 48zM160 531q0 -17 11.5 -28.5t28.5 -11.5t28.5 11.5t11.5 28.5t-11.5 28.5t-28.5 11.5t-28.5 -11.5t-11.5 -28.5z" />
+<glyph unicode="&#x2db;" horiz-adv-x="400" d="M97 -203q0 31 25 70t50 65t69 68h30q-43 -38 -75 -86.5t-32 -95.5q0 -24 14.5 -44.5t34.5 -20.5t42 11t36 22l14 11q1 0 5 -6t4 -7q0 -3 -19 -19t-55 -34t-72 -18q-30 0 -50.5 26t-20.5 58z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="400" d="M92 495q2 9 11 25q15 25 32.5 38.5t30.5 13.5q16 0 42 -18t38 -18q21 0 40 33q3 7 13 7q6 0 6 -2q-1 -6 -11 -26q-29 -55 -66 -55q-17 0 -41 17.5t-39 17.5q-22 0 -38 -29q-3 -6 -12 -6q-6 0 -6 2z" />
+<glyph unicode="&#x2dd;" horiz-adv-x="400" d="M116 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-5 -6 -8 -6h-15q-4 0 -4 2zM226 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-5 -6 -8 -6h-15q-4 0 -4 2z" />
+<glyph unicode="&#x300;" horiz-adv-x="0" d="M-272 575q0 31 34 31q21 0 26 -24l26 -125v-3l1 -3q0 -2 -4 -2h-15q-4 0 -7 6l-57 107q-4 7 -4 13z" />
+<glyph unicode="&#x301;" horiz-adv-x="0" d="M-228 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-5 -6 -8 -6h-15q-4 0 -4 2z" />
+<glyph unicode="&#x302;" horiz-adv-x="0" d="M-310 462l4 6l91 104q11 12 20 12h20q7 0 9 -1.5t7 -10.5l53 -104q2 -3 2 -6q0 -2 -5 -2h-12q-1 0 -7 6l-63 62q-3 3 -8 0l-85 -62q-8 -6 -9 -6h-12q-5 0 -5 2z" />
+<glyph unicode="&#x303;" horiz-adv-x="0" d="M-308 495q2 9 11 25q15 25 32.5 38.5t30.5 13.5q16 0 42 -18t38 -18q21 0 40 33q3 7 13 7q6 0 6 -2q-1 -6 -11 -26q-29 -55 -66 -55q-17 0 -41 17.5t-39 17.5q-22 0 -38 -29q-3 -6 -12 -6q-6 0 -6 2z" />
+<glyph unicode="&#x304;" horiz-adv-x="0" d="M-300 518l2 21q1 6 2 7t7 1h181q6 0 7 -1t1 -6l-2 -23q-5 -8 -8 -8h-181q-7 0 -8.5 1t-0.5 8z" />
+<glyph unicode="&#x306;" horiz-adv-x="0" d="M-284 552q0 32 4 32h13q1 0 1 -3q0 -9 2 -21q9 -49 66 -49q52 0 78 40q4 7 7.5 15.5t5 13t2.5 4.5h13q-6 -53 -37.5 -89t-76.5 -36q-41 0 -59.5 26.5t-18.5 66.5z" />
+<glyph unicode="&#x307;" horiz-adv-x="0" d="M-242 540q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33z" />
+<glyph unicode="&#x308;" horiz-adv-x="0" d="M-311 535q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM-171 535q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33z" />
+<glyph unicode="&#x30a;" horiz-adv-x="0" d="M-268 531q0 28 20 48t48 20t48 -20t20 -48t-20 -48t-48 -20t-48 20t-20 48zM-240 531q0 -17 11.5 -28.5t28.5 -11.5t28.5 11.5t11.5 28.5t-11.5 28.5t-28.5 11.5t-28.5 -11.5t-11.5 -28.5z" />
+<glyph unicode="&#x30b;" horiz-adv-x="0" d="M-284 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-5 -6 -8 -6h-15q-4 0 -4 2zM-174 451l3 6l61 123q13 24 32 24q31 0 31 -21q0 -15 -9 -25l-91 -103q-5 -6 -8 -6h-15q-4 0 -4 2z" />
+<glyph unicode="&#x30c;" horiz-adv-x="0" d="M-289 582q0 2 5 2h12q1 0 7 -6l63 -62q3 -3 8 0l85 62q7 6 9 6h12q5 0 5 -2l-4 -6l-91 -104q-11 -12 -20 -12h-20q-7 0 -9 1.5t-7 10.5l-53 104q-2 3 -2 6z" />
+<glyph unicode="&#x312;" horiz-adv-x="0" d="M-248 500q0 30 26 58t49 41.5t26 13.5q7 0 7 -13v-2q0 -1 -14 -8.5t-27 -21t-13 -28.5q0 -18 17 -34.5t17 -19.5q0 -11 -19.5 -22.5t-24.5 -11.5q-10 0 -27 17.5t-17 30.5z" />
+<glyph unicode="&#x315;" horiz-adv-x="0" d="M-13 495q0 3 6 25.5l15 57.5l13 51q9 32 34 32q26 0 26 -23q0 -9 -13 -35l-55 -98q-6 -12 -9 -12h-15q-2 0 -2 2z" />
+<glyph unicode="&#x326;" horiz-adv-x="0" d="M-259 -207q0 1 14 8.5t27 21t13 28.5q0 18 -17 34.5t-17 19.5q0 11 19.5 22.5t24.5 11.5q10 0 27 -17.5t17 -30.5q0 -30 -26 -58t-49 -41.5t-26 -13.5q-7 0 -7 13v2z" />
+<glyph unicode="&#x327;" horiz-adv-x="0" d="M-291 -190q0 10 8 10l8 -4q8 -3 21 -6.5t27 -3.5q69 0 69 49q0 18 -11 31.5t-36 13.5q-8 0 -16 -1.5t-13.5 -3t-6.5 -1.5q-7 0 -7 4q0 1 11.5 21l25.5 45.5t19 35.5h19q-37 -66 -37 -67q0 -2 5 -2q8 2 24 2q35 0 56 -19t21 -45q0 -37 -32 -61.5t-80 -24.5q-22 0 -40.5 6 t-26.5 12t-8 9z" />
+<glyph unicode="&#x328;" horiz-adv-x="0" d="M-303 -203q0 31 25 70t50 65t69 68h30q-43 -38 -75 -86.5t-32 -95.5q0 -24 14.5 -44.5t34.5 -20.5t42 11t36 22l14 11q1 0 5 -6t4 -7q0 -3 -19 -19t-55 -34t-72 -18q-30 0 -50.5 26t-20.5 58z" />
+<glyph unicode="&#x1e02;" horiz-adv-x="571" d="M273 790q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM20 15q0 9 3 10.5t15 1.5h43q78 514 82 595q1 9 -1 11.5t-9 2.5h-55q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l51 -1q50 -2 71 -2q16 0 60.5 1.5t49.5 1.5 q198 0 198 -149q0 -29 -10.5 -54.5t-27.5 -43t-38 -32t-41.5 -23t-37.5 -14.5t-28 -9l-10 -3l20 -3q21 -2 50 -11.5t58 -26t49.5 -51t20.5 -80.5q0 -168 -289 -168q-11 0 -47.5 1.5t-52.5 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5zM166 48q0 -10 6 -13t25 -4h3 q14 -1 45 -1q92 0 145.5 37.5t53.5 113.5q0 71 -50.5 106.5t-131.5 35.5h-31q-19 0 -23 -2t-6 -10q-8 -36 -35 -251q-1 -5 -1 -12zM208 364q-2 -17 2 -19q3 -1 10 -1h16h21t20.5 -0.5t9.5 -0.5q21 0 55 17q100 51 100 141q0 62 -41 99t-110 37h-16q-16 0 -22 -5.5t-10 -25.5 q-9 -56 -35 -242z" />
+<glyph unicode="&#x1e03;" horiz-adv-x="453" d="M156 790q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM25 12q0 4 13 23q5 7 8 19q30 158 58.5 349t28.5 220q0 7 -7 7q-4 0 -41 -11t-41 -11q-9 0 -9 25q0 10 5 11q155 38 164 38q12 0 12 -10q0 -6 -17.5 -117.5t-22.5 -140.5 l-49 -251q51 85 87 133q38 51 64.5 71.5t71.5 20.5q41 0 64 -23q14 -14 14 -42q0 -72 -28.5 -137t-69.5 -106t-84 -64.5t-76 -23.5q-20 0 -40 7t-32.5 14t-15.5 7q-4 0 -20 -8q-20 -8 -27 -8q-10 0 -10 8zM112 80q0 -25 17 -42.5t51 -17.5q41 0 84.5 51t69 112.5t25.5 98.5 q0 23 -10 41t-32 18q-41 0 -83 -59l-48.5 -68l-36.5 -54.5t-28.5 -49t-8.5 -30.5z" />
+<glyph unicode="&#x1e0a;" horiz-adv-x="742" d="M314 790q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM19 10q0 11 3 13t14 2h43q5 0 42.5 261.5t45.5 338.5q2 11 -4 11l-70 -2q-5 0 -7.5 0.5t-4 3t-1.5 8.5v6t0.5 4.5t2 3.5t4 1.5t6.5 0.5h24t51.5 -0.5t43.5 -0.5 q33 0 75.5 1t56.5 1q165 0 261.5 -80t96.5 -248q0 -158 -102 -247.5t-248 -91.5q-32 0 -112 2t-113 2q-16 0 -55 -2t-42 -2q-8 0 -9.5 2t-1.5 12zM171 46q0 -13 6 -17t59 -4q97 0 170 27t111 64t61.5 88t29.5 87.5t6 73.5q0 123 -74.5 196.5t-223.5 73.5q-49 0 -63 -4 l-9 -56l-20 -137.5l-24 -165t-20.5 -148.5t-8.5 -78z" />
+<glyph unicode="&#x1e0b;" horiz-adv-x="473" d="M386 790q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM25 74q0 34 14.5 83.5t40 100t68 86t92.5 35.5q17 0 33.5 -3t25 -6.5t18 -8.5t10.5 -5q9 -4 12 -2t5 12q6 31 15 91.5l15.5 107t6.5 47.5q5 17 -4 17q-2 0 -44 -10.5 t-45 -10.5q-5 0 -3 21q1 8 2.5 9.5t7.5 3.5q39 8 76 17.5t55 14.5t20 5q11 0 11 -15q0 -3 -50 -288t-50 -316q0 -15 13 -15t35.5 18.5t39.5 36.5t18 18q3 0 6.5 -3t3.5 -5q0 -5 -22 -32t-61.5 -56t-75.5 -29q-12 0 -19.5 9.5t-7.5 25.5q0 18 10.5 70.5t20.5 95.5l10 43 q-38 -72 -89 -139l-30.5 -39t-29 -30.5t-37 -25t-40.5 -7.5q-10 0 -19.5 2t-24.5 9t-24 24t-9 43zM91 102q0 -56 46 -56q41 0 138 140q54 82 54 118q0 14 -29 33.5t-60 19.5q-41 0 -77 -49t-54 -107t-18 -99z" />
+<glyph unicode="&#x1e1e;" horiz-adv-x="541" d="M302 790q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM20 15q0 9 3 10.5t15 1.5h43q83 519 83 599q0 10 -3 10h-55q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l47 -1q46 -2 67 -2q28 0 108.5 1.5t100.5 1.5q49 0 58 2t11 11 q1 12 13 12q11 0 14 -2t3 -9q0 -4 -4 -41t-5 -84q0 -6 -3 -8t-13 -2q-15 0 -15 14q0 2 3 36t3 37q0 7 -237 7q-5 0 -41 -270q-2 -8 -0.5 -11.5t3.5 -4t11 -0.5h156q45 0 47 13l8 43q1 7 16 7q13 0 13 -6q0 -1 -14 -77q-3 -14 -5.5 -30.5t-4.5 -31t-2 -17.5q-1 -7 -13 -7 q-17 0 -17 8q9 54 9 57q0 8 -10 11t-40 3h-143q-9 0 -12 -0.5t-5 -2.5t-3 -7q-2 -13 -18.5 -130.5t-20.5 -148.5q-2 -9 8 -9h65q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -47.5 1.5t-52.5 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x1e1f;" horiz-adv-x="284" d="M309 789q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM-125 -240q0 13 17 27t32 14q12 0 37.5 -12t43.5 -12q9 0 17.5 6.5t14 19t10 25t8.5 31.5t6 31.5t4.5 31t3.5 24.5l23.5 161.5t21.5 160t8 68.5q0 11 -4 11h-76q-7 0 -7 6 q0 5 2 13q1 6 7 6h73q7 0 8 1.5t2 10.5q9 98 42 157q46 80 101 112q48 28 91 28q24 0 48.5 -12.5t24.5 -23.5q0 -13 -19 -27t-35 -14q-12 0 -37.5 18.5t-43.5 18.5q-75 0 -109 -254q-1 -6 -1 -9q-1 -3 2 -4.5t6 -1.5h82q5 0 5 -2q0 -8 -2 -14q-2 -9 -7 -9h-80q-7 0 -7.5 -1 t-2.5 -10q-2 -11 -13 -91l-23.5 -164.5l-20.5 -134.5q-3 -17 -11 -44.5t-31 -70.5t-52 -65q-2 -1 -8.5 -6t-9.5 -7.5t-10 -7t-11.5 -6.5t-11.5 -5.5t-13 -5t-13 -3t-14 -1.5q-24 0 -46 12.5t-22 23.5z" />
+<glyph unicode="&#x1e22;" horiz-adv-x="795" d="M412 790q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM20 13q0 9 3 11.5t15 2.5h53q7 0 48 282t41 314q0 16 -9 16h-61q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5q6 0 47.5 -1.5t58.5 -1.5q16 0 53 1.5t48 1.5q10 0 12 -2.5 t2 -15.5q0 -9 -3 -10.5t-15 -1.5h-50q-8 0 -47 -270q-2 -11 -0.5 -15t12.5 -4h332q8 0 11 0.5t5.5 3t3.5 8.5q30 232 30 261q0 16 -9 16h-61q-12 0 -12 15q0 7 2.5 10.5t5.5 4t11 0.5q6 0 48 -1.5t59 -1.5q16 0 52.5 1.5t47.5 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5 t-15.5 -1.5h-50q-10 0 -47 -288.5t-37 -310.5q0 -13 8 -13h57q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -54.5 1.5t-59.5 1.5t-50 -1.5t-45 -1.5q-10 0 -12 2.5t-2 15.5q0 9 2.5 10.5t15.5 1.5h53q5 0 44 287q1 8 -1.5 10t-13.5 2h-334q-9 0 -12.5 -3t-4.5 -13 q-32 -235 -32 -270q0 -13 8 -13h59q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -54 1.5t-59 1.5t-53.5 -1.5t-48.5 -1.5q-9 0 -11.5 3t-2.5 13z" />
+<glyph unicode="&#x1e23;" horiz-adv-x="468" d="M156 790q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM25 6q0 2 7 33.5t18 88l23.5 127t26 168.5t23.5 196q2 19 -4 19q-10 0 -49 -14l-38 -13q-3 0 -3 14q0 13 7 16q30 11 83 22.5t72 11.5q6 0 6 -15q-5 -101 -93 -537 q47 110 115 192q56 68 124 68q26 0 42.5 -12t16.5 -36q0 -37 -33.5 -147.5t-33.5 -120.5q0 -22 21 -22q11 0 34 21.5t41.5 43.5t19.5 22q2 0 7 -4t5 -6q0 -5 -22 -33.5t-60.5 -58.5t-72.5 -30q-18 0 -29.5 10.5t-11.5 27.5q0 14 36.5 127.5t36.5 141.5q0 17 -9 28t-25 11 q-33 0 -66.5 -40t-74.5 -107q-46 -77 -54 -108l-20 -82q-2 -11 -58 -11q-8 0 -8 8z" />
+<glyph unicode="&#x1e40;" horiz-adv-x="883" d="M465 790q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM20 15q0 9 3 10.5t15 1.5h48l46 207.5l61 273t26 123.5q0 8 -25 8h-46q-8 0 -9.5 2t-1.5 11q0 11 2 14t9 3q6 0 50 -1.5t55 -1.5q13 0 29.5 1.5t17.5 1.5q17 0 20 -13 l101 -509q5 -24 10 -24t16 24q168 351 252 505q8 14 21 14h44q16 0 45 1.5t40 1.5q10 0 12 -2.5t2 -15.5q0 -9 -2.5 -10.5t-15.5 -1.5h-46l-7 -59l-15.5 -143l-19 -172.5t-16 -155.5t-6.5 -82h77q8 0 10.5 -2t2.5 -11q0 -11 -2 -14t-9 -3q-11 0 -58.5 1.5t-63.5 1.5 q-18 0 -56 -1.5t-40 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5t15 1.5h39q21 3 80 594q-188 -358 -253 -497q-9 -20 -19.5 -33t-26.5 -30t-29 -34q-10 -12 -16 -12q-13 0 -16 21q-12 72 -39.5 217l-49.5 255l-22 109q-32 -121 -56 -240q-63 -303 -63 -350h65q8 0 9.5 -2 t1.5 -11q0 -11 -2 -14t-9 -3q-2 0 -36 1.5t-52 1.5q-17 0 -42 -1.5t-30 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph unicode="&#x1e41;" horiz-adv-x="739" d="M429 540q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM15 255q0 11 69 64.5t101 53.5q18 0 18 -19q0 -28 -5 -63.5t-16 -95.5t-14 -78q114 262 225 262q16 0 25 -14t9 -33q0 -82 -57 -251q2 4 20 37.5l29.5 53.5l32.5 55.5 t39.5 57.5t41 46t45.5 36t45 12q51 0 51 -34q0 -28 -36.5 -141t-36.5 -131q0 -24 18 -24q12 0 53 41l40 41q3 0 7.5 -5t4.5 -7q0 -4 -28.5 -33.5t-69 -59.5t-65.5 -30q-15 0 -25 8.5t-10 20.5q0 17 39 136.5t39 152.5q0 8 -5.5 15t-15.5 7q-39 0 -125 -133q-64 -98 -90 -188 q-3 -10 -14 -12q-24 -3 -42 -3q-8 0 -8 7l29 110q29 110 29 179q0 37 -21 37q-18 0 -37 -25q-63 -76 -108 -167q-17 -34 -41 -118q-5 -17 -11 -20q-36 -14 -49 -14q-7 0 -5 10q12 51 28.5 151.5t16.5 145.5q0 17 -14 17q-11 0 -33.5 -18.5t-41 -37.5t-19.5 -19q-12 0 -12 17 z" />
+<glyph unicode="&#x1e56;" horiz-adv-x="570" d="M283 790q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM20 15q0 9 3 10.5t15 1.5h43q83 569 83 599q0 10 -3 10h-55q-7 0 -10.5 0.5t-6 4t-2.5 10.5q0 14 12 14l44 -1q44 -2 65 -2q16 0 63 2.5t54 2.5q99 0 154.5 -47.5 t55.5 -123.5q0 -44 -14.5 -78.5t-38 -55.5t-56 -35t-65.5 -19.5t-70 -5.5q-16 0 -44.5 1t-31.5 1q-16 0 -18 -9q-9 -48 -33 -259q-2 -9 8 -9h65q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -47.5 1.5t-52.5 1.5t-54 -1.5t-49 -1.5q-10 0 -12 2.5t-2 15.5zM202 335 q0 -12 31 -12q59 0 107.5 15.5t83 54.5t34.5 97q0 74 -42.5 113.5t-124.5 39.5q-44 0 -45 -5q-22 -138 -42 -284q-2 -18 -2 -19z" />
+<glyph unicode="&#x1e57;" horiz-adv-x="486" d="M295 540q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM10 225l11 18.5t29.5 40.5t44 51.5t51 41t55.5 18.5q17 0 17 -31q0 -21 -8 -79t-16 -106l-8 -48q43 107 100 194q37 57 99 57q44 0 60 -23.5t16 -67.5q0 -110 -74 -204 t-151 -94q-11 0 -32 3.5t-24 3.5q-12 0 -13 -8l-32 -209q-5 -23 9 -24q16 -2 40 -4q14 -1 19.5 -1.5t11 -2t7 -4t1.5 -6.5q0 -14 -4.5 -17.5t-15.5 -3.5q-1 0 -27 3.5t-67.5 7t-79.5 3.5q-17 0 -17 10q0 14 3.5 18t15.5 4h16q12 0 16 3.5t6 17.5q47 272 62.5 371t15.5 146 q0 18 -12 18q-15 0 -41 -28t-46.5 -56t-21.5 -28q-4 0 -10 5.5t-6 9.5zM181 51q0 -32 64 -32q33 0 69.5 42.5t60.5 103.5t24 113q0 64 -44 64q-15 0 -29.5 -9.5t-29 -30t-22.5 -34t-22 -41.5l-16 -32q-55 -105 -55 -144z" />
+<glyph unicode="&#x1e60;" horiz-adv-x="505" d="M273 790q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM40 67q0 15 17 100q1 3 2.5 11.5t3 15t2.5 7.5t5 1q23 0 23 -10q0 -2 -7.5 -45.5t-7.5 -46.5q0 -18 64.5 -51t122.5 -33q56 0 93 35t37 88q0 42 -31.5 72.5t-76.5 52 l-90 45t-76.5 65t-31.5 99.5q0 86 57.5 141t147.5 55q20 0 41 -6t37.5 -14t30 -16t21.5 -14l8 -6l8 32q2 10 9 10h3q18 -3 18 -7q0 -3 -31 -167q-2 -12 -15 -12q-16 0 -16 12l4 14q4 14 7.5 31t3.5 24q0 2 -6 11.5t-18.5 22.5t-28.5 25t-39.5 20.5t-47.5 8.5 q-57 0 -90.5 -36.5t-33.5 -95.5q0 -39 22.5 -67.5t55.5 -44l72.5 -35t72.5 -39t55.5 -57t22.5 -88.5q0 -85 -66 -136.5t-144 -51.5q-55 0 -106.5 16.5t-77.5 35t-26 28.5z" />
+<glyph unicode="&#x1e61;" horiz-adv-x="336" d="M178 540q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM20 61q0 11 8.5 18t15.5 7q5 0 8.5 -0.5t7.5 -2t6 -2.5t5.5 -4t5 -4t5.5 -5.5t5 -5.5l13 -13.5l11.5 -12t9.5 -8t12 -6t13 -1.5q30 0 50.5 20t20.5 53q0 20 -22.5 44 t-49.5 42.5t-49.5 46.5t-22.5 56q0 47 39 81.5t92 34.5q31 0 52 -8t30 -20t12 -21t3 -15q0 -17 -18 -17q-29 0 -48 35q-15 27 -32 27q-27 0 -48 -15t-21 -48q0 -26 15 -47.5t36 -37l42.5 -31.5t36.5 -40t15 -54q0 -45 -39 -78.5t-92 -33.5q-46 0 -87 21.5t-41 44.5z" />
+<glyph unicode="&#x1e6a;" horiz-adv-x="681" d="M330 774q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM20 546q0 1 6 16.5t16.5 46.5l20.5 63q3 9 7 11.5t15 2.5q10 0 10 -12v-5q0 -8 106 -8h326q103 0 104 11q1 14 14 14q11 0 13.5 -2t2.5 -9q0 -8 -1.5 -23t-3.5 -44t-4 -63 q0 -10 -19 -10q-8 0 -9.5 2.5t-1.5 11.5q0 2 3 38.5t3 39.5q0 6 -107 6h-106q-9 0 -13 -20l-27 -188l-37 -262t-17 -122q0 -14 8 -14h64q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-11 0 -57.5 1.5t-62.5 1.5q-17 0 -61 -1.5t-50 -1.5q-10 0 -12 2.5t-2 15.5q0 9 3 10.5 t15 1.5h54q10 0 94 569q3 24 3 26q0 11 -6 11h-137q-92 0 -95 -11l-24 -70q-4 -11 -6.5 -14t-9.5 -3q-19 0 -19 11z" />
+<glyph unicode="&#x1e6b;" horiz-adv-x="284" d="M136 580q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM35 346q0 1 0.5 9t0.5 10q0 7 8 7h61q9 0 11 8q10 55 16 101q2 10 4.5 13t13.5 4q5 1 21 1q28 0 28 -5q0 -1 -5.5 -25l-11.5 -51.5t-7 -35.5q-1 -7 0.5 -8.5t9.5 -1.5h73 q9 0 9 -8q0 -22 -13 -22h-73h-7t-3.5 -1.5t-1.5 -2.5t-1 -6q-41 -220 -41 -247q0 -21 19 -21q11 0 37 22.5t48.5 45t23.5 22.5q2 0 8 -4.5t6 -6.5q0 -4 -31.5 -39t-76.5 -70.5t-72 -35.5q-35 0 -35 34q0 10 26.5 153.5t26.5 145.5v4q1 5 -0.5 6t-8.5 1h-47q-16 0 -16 4z" />
+<glyph unicode="&#x2000;" horiz-adv-x="500" />
+<glyph unicode="&#x2001;" horiz-adv-x="1000" />
+<glyph unicode="&#x2002;" horiz-adv-x="500" />
+<glyph unicode="&#x2003;" horiz-adv-x="1000" />
+<glyph unicode="&#x2004;" horiz-adv-x="333" />
+<glyph unicode="&#x2005;" horiz-adv-x="250" />
+<glyph unicode="&#x2006;" horiz-adv-x="166" />
+<glyph unicode="&#x2007;" horiz-adv-x="500" />
+<glyph unicode="&#x2008;" horiz-adv-x="210" />
+<glyph unicode="&#x2009;" horiz-adv-x="166" />
+<glyph unicode="&#x200a;" horiz-adv-x="100" />
+<glyph unicode="&#x200b;" horiz-adv-x="0" />
+<glyph unicode="&#x200c;" horiz-adv-x="0" />
+<glyph unicode="&#x200d;" horiz-adv-x="0" />
+<glyph unicode="&#x200e;" horiz-adv-x="0" />
+<glyph unicode="&#x200f;" horiz-adv-x="0" />
+<glyph unicode="&#x2010;" horiz-adv-x="268" d="M30 201q0 12 6 25.5t12 14.5t91.5 4t91.5 3q2 0 2 -9q0 -33 -8 -33q-104 -8 -191 -8q-4 0 -4 3z" />
+<glyph unicode="&#x2011;" horiz-adv-x="268" d="M30 201q0 12 6 25.5t12 14.5t91.5 4t91.5 3q2 0 2 -9q0 -33 -8 -33q-104 -8 -191 -8q-4 0 -4 3z" />
+<glyph unicode="&#x2012;" horiz-adv-x="500" d="M98 201q0 12 6 25.5t12 14.5t141 4t143 3q2 0 2 -9q0 -33 -8 -33q-9 -1 -145 -4.5t-147 -3.5q-4 0 -4 3z" />
+<glyph unicode="&#x2013;" horiz-adv-x="500" d="M10 195q0 12 2 14.5t11 2.5h451q11 0 13.5 -2t2.5 -10v-12q0 -9 -2.5 -11t-13.5 -2h-444q-15 0 -17.5 2.5t-2.5 17.5z" />
+<glyph unicode="&#x2014;" horiz-adv-x="750" d="M10 195q0 12 2 14.5t11 2.5h701q11 0 13.5 -2t2.5 -10v-12q0 -9 -2.5 -11t-13.5 -2h-694q-15 0 -17.5 2.5t-2.5 17.5z" />
+<glyph unicode="&#x2015;" horiz-adv-x="750" d="M10 195q0 12 2 14.5t11 2.5h701q11 0 13.5 -2t2.5 -10v-12q0 -9 -2.5 -11t-13.5 -2h-694q-15 0 -17.5 2.5t-2.5 17.5z" />
+<glyph unicode="&#x2018;" horiz-adv-x="229" d="M70 520q0 34 25 73t49 61.5t28 22.5q3 0 10 -7.5t7 -10.5q0 -1 -16 -16t-32 -35.5t-16 -35.5q0 -13 10.5 -41.5t10.5 -41.5q0 -19 -18 -36.5t-29 -17.5q-10 0 -19.5 31.5t-9.5 53.5z" />
+<glyph unicode="&#x2019;" horiz-adv-x="249" d="M60 453q0 1 16 16t32 35.5t16 35.5q0 13 -10.5 41.5t-10.5 41.5q0 19 18 36.5t29 17.5q10 0 19.5 -31.5t9.5 -53.5q0 -34 -25 -73t-49 -61.5t-28 -22.5q-3 0 -10 7.5t-7 10.5z" />
+<glyph unicode="&#x201a;" horiz-adv-x="249" d="M60 -112q0 1 16 16t32 35.5t16 35.5q0 13 -10.5 41.5t-10.5 41.5q0 19 18 36.5t29 17.5q10 0 19.5 -31.5t9.5 -53.5q0 -34 -25 -73t-49 -61.5t-28 -22.5q-3 0 -10 7.5t-7 10.5z" />
+<glyph unicode="&#x201b;" horiz-adv-x="249" d="M70 592q0 22 9.5 53.5t19.5 31.5q11 0 29 -17.5t18 -36.5q0 -13 -10.5 -41.5t-10.5 -41.5q0 -15 16 -35.5t32 -35.5t16 -16q0 -3 -7 -10.5t-10 -7.5q-4 0 -28 22.5t-49 61.5t-25 73z" />
+<glyph unicode="&#x201c;" horiz-adv-x="414" d="M70 520q0 34 25 73t49 61.5t28 22.5q3 0 10 -7.5t7 -10.5q0 -1 -16 -16t-32 -35.5t-16 -35.5q0 -13 10.5 -41.5t10.5 -41.5q0 -19 -18 -36.5t-29 -17.5q-10 0 -19.5 31.5t-9.5 53.5zM255 520q0 34 25 73t49 61.5t28 22.5q3 0 10 -7.5t7 -10.5q0 -1 -16 -16t-32 -35.5 t-16 -35.5q0 -13 10.5 -41.5t10.5 -41.5q0 -19 -18 -36.5t-29 -17.5q-10 0 -19.5 31.5t-9.5 53.5z" />
+<glyph unicode="&#x201d;" horiz-adv-x="434" d="M60 453q0 1 16 16t32 35.5t16 35.5q0 13 -10.5 41.5t-10.5 41.5q0 19 18 36.5t29 17.5q10 0 19.5 -31.5t9.5 -53.5q0 -34 -25 -73t-49 -61.5t-28 -22.5q-3 0 -10 7.5t-7 10.5zM245 453q0 1 16 16t32 35.5t16 35.5q0 13 -10.5 41.5t-10.5 41.5q0 19 18 36.5t29 17.5 q10 0 19.5 -31.5t9.5 -53.5q0 -34 -25 -73t-49 -61.5t-28 -22.5q-3 0 -10 7.5t-7 10.5z" />
+<glyph unicode="&#x201e;" horiz-adv-x="434" d="M60 -112q0 1 16 16t32 35.5t16 35.5q0 13 -10.5 41.5t-10.5 41.5q0 19 18 36.5t29 17.5q10 0 19.5 -31.5t9.5 -53.5q0 -34 -25 -73t-49 -61.5t-28 -22.5q-3 0 -10 7.5t-7 10.5zM245 -112q0 1 16 16t32 35.5t16 35.5q0 13 -10.5 41.5t-10.5 41.5q0 19 18 36.5t29 17.5 q10 0 19.5 -31.5t9.5 -53.5q0 -34 -25 -73t-49 -61.5t-28 -22.5q-3 0 -10 7.5t-7 10.5z" />
+<glyph unicode="&#x201f;" horiz-adv-x="434" d="M70 592q0 22 9.5 53.5t19.5 31.5q11 0 29 -17.5t18 -36.5q0 -13 -10.5 -41.5t-10.5 -41.5q0 -15 16 -35.5t32 -35.5t16 -16q0 -3 -7 -10.5t-10 -7.5q-4 0 -28 22.5t-49 61.5t-25 73zM255 592q0 22 9.5 53.5t19.5 31.5q11 0 29 -17.5t18 -36.5q0 -13 -10.5 -41.5 t-10.5 -41.5q0 -15 16 -35.5t32 -35.5t16 -16q0 -3 -7 -10.5t-10 -7.5q-4 0 -28 22.5t-49 61.5t-25 73z" />
+<glyph unicode="&#x2020;" horiz-adv-x="463" d="M25 423q0 17 15.5 25t36.5 8q27 0 64 -9.5t58 -9.5q9 0 16.5 6.5t7.5 15.5q0 3 -16 76t-16 92t11 34t29 15q20 0 30.5 -15t10.5 -33q0 -24 -11.5 -96t-11.5 -78q0 -8 8 -14t17 -6q21 0 61.5 11t52.5 11q50 0 50 -33t-48 -33q-17 0 -58.5 13t-51.5 13q-8 0 -15 -5.5 t-7 -12.5q0 -10 5 -25.5t5 -19.5q0 -2 -1 -19t-2.5 -54.5t-3 -96t-2.5 -163.5t-1 -237q0 -10 -17 -10h-6q-17 0 -17 10q0 131 -2 236.5t-5 164t-5.5 96.5t-4.5 54.5t-2 18.5t6 20.5t6 24.5q0 16 -15 16q-6 0 -48 -12t-71 -12q-52 0 -52 33z" />
+<glyph unicode="&#x2021;" horiz-adv-x="401" d="M25 -36q0 26 39 26q14 0 52 -10t46 -10q6 0 11.5 4t5.5 10q0 8 -3.5 15.5t-3.5 10.5q0 1 9.5 81t9.5 115q0 6 9 6t9 -6q0 -26 4 -72.5t8 -83.5t4 -40q0 -2 -4 -12t-4 -14q0 -13 12 -13q5 0 43.5 9.5t61.5 9.5q42 0 42 -26t-42 -26q-22 0 -56.5 7.5t-51.5 7.5 q-8 0 -13.5 -5.5t-5.5 -12.5q0 -2 12 -51.5t12 -64.5t-7.5 -27t-22.5 -12q-16 0 -23.5 12t-7.5 26q0 19 8 67.5t8 53.5q0 6 -6.5 11t-13.5 5q-17 0 -54 -8.5t-47 -8.5q-40 0 -40 26zM25 492q0 26 42 26q22 0 56.5 -7.5t51.5 -7.5q8 0 13.5 5.5t5.5 12.5q0 2 -12 49t-12 62 t7.5 27t22.5 12q16 0 23.5 -12t7.5 -26q0 -19 -8 -65t-8 -51q0 -6 6.5 -11t13.5 -5q17 0 54 8.5t47 8.5q40 0 40 -26t-39 -26q-14 0 -52 10t-46 10q-6 0 -11.5 -4t-5.5 -10q0 -8 3.5 -15.5t3.5 -10.5q0 -1 -8 -76t-8 -110q0 -7 -10 -7q-9 0 -9 7q0 26 -4.5 70t-9 78.5 t-4.5 37.5q0 2 4 12t4 14q0 13 -12 13q-5 0 -43.5 -9.5t-61.5 -9.5q-42 0 -42 26z" />
+<glyph unicode="&#x2022;" horiz-adv-x="356" d="M60 327q0 49 34.5 83.5t83.5 34.5t83.5 -34.5t34.5 -83.5t-34.5 -83.5t-83.5 -34.5t-83.5 34.5t-34.5 83.5z" />
+<glyph unicode="&#x2026;" horiz-adv-x="630" d="M480 38q0 19 15.5 35.5t30.5 16.5q14 0 29 -16t15 -31q0 -23 -14.5 -37t-25.5 -14q-19 0 -34.5 16.5t-15.5 29.5zM270 38q0 19 15.5 35.5t30.5 16.5q14 0 29 -16t15 -31q0 -23 -14.5 -37t-25.5 -14q-19 0 -34.5 16.5t-15.5 29.5zM60 38q0 19 15.5 35.5t30.5 16.5 q14 0 29 -16t15 -31q0 -23 -14.5 -37t-25.5 -14q-19 0 -34.5 16.5t-15.5 29.5z" />
+<glyph unicode="&#x202f;" horiz-adv-x="166" />
+<glyph unicode="&#x2030;" horiz-adv-x="952" d="M50 362q0 62 52.5 131.5t124.5 69.5q40 0 71 -31q24 -24 58 -24q46 0 93 28q17 10 31.5 22t35.5 33.5l22 22.5t4.5 5t7.5 8l3 4q6 0 12 -4t6 -8q0 -3 -5 -11q-360 -527 -434 -643q-4 -6 -19 -6q-16 0 -16 10q0 2 2 6l80 114l169.5 245.5t112.5 170.5q9 15 8 16 q-2 1 -8 -2q-47 -28 -105 -28q-16 0 -35 3v-16v-14q0 -17 -1 -25q-6 -72 -57.5 -130.5t-112.5 -58.5q-47 0 -73.5 32t-26.5 80zM99 336q0 -29 13.5 -50t40.5 -21q51 0 95 58.5t44 137.5q0 70 -52 70q-46 0 -93.5 -64t-47.5 -131zM336 103q0 71 56 137t125 66q42 0 66 -29.5 t24 -79.5q0 -79 -53 -142.5t-118 -63.5q-47 0 -73.5 31.5t-26.5 80.5zM385 78q0 -30 13 -50.5t41 -20.5q51 0 95 58.5t44 136.5q0 71 -53 71q-45 0 -92.5 -64t-47.5 -131zM631 103q0 71 56 137t125 66q42 0 66 -29.5t24 -79.5q0 -79 -53 -142.5t-118 -63.5q-47 0 -73.5 31.5 t-26.5 80.5zM680 78q0 -30 13 -50.5t41 -20.5q51 0 95 58.5t44 136.5q0 71 -53 71q-45 0 -92.5 -64t-47.5 -131z" />
+<glyph unicode="&#x2032;" horiz-adv-x="131" d="M30 511q0 1 2 32.5l4.5 68.5t3.5 47q4 29 32 29q29 0 29 -25q0 -4 -2 -14l-12.5 -43l-17.5 -57.5t-10 -32.5q-1 -3 -2 -7t-1.5 -5l-1.5 -3t-2.5 -2.5t-3.5 -1t-6 -0.5q-12 0 -12 14z" />
+<glyph unicode="&#x2033;" horiz-adv-x="261" d="M30 511q0 1 2 32.5l4.5 68.5t3.5 47q4 29 32 29q29 0 29 -25q0 -4 -2 -14l-12.5 -43l-17.5 -57.5t-10 -32.5q-1 -3 -2 -7t-1.5 -5l-1.5 -3t-2.5 -2.5t-3.5 -1t-6 -0.5q-12 0 -12 14zM160 511q0 1 2 32.5l4.5 68.5t3.5 47q4 29 32 29q29 0 29 -25q0 -4 -2 -14l-12.5 -43 l-17.5 -57.5t-10 -32.5q-1 -3 -2 -7t-1.5 -5l-1.5 -3t-2.5 -2.5t-3.5 -1t-6 -0.5q-12 0 -12 14z" />
+<glyph unicode="&#x2039;" horiz-adv-x="258" d="M50 193q0 4 55 55l36 34.5l31 30.5l12 11q2 0 8 -5.5t6 -6.5q0 -4 -31 -58t-31 -61t31 -61t31 -58q0 -1 -6 -6.5t-8 -5.5l-12 11l-31 30.5l-36 34.5q-55 51 -55 55z" />
+<glyph unicode="&#x203a;" horiz-adv-x="258" d="M60 74q0 4 31 58t31 61t-31 61t-31 58q0 1 6 6.5t8 5.5l12 -11l31 -30.5l36 -34.5q55 -51 55 -55t-55 -55l-36 -34.5l-31 -30.5l-12 -11q-2 0 -8 5.5t-6 6.5z" />
+<glyph unicode="&#x203e;" horiz-adv-x="400" />
+<glyph unicode="&#x2044;" horiz-adv-x="144" d="M-150 -8q0 1 4 9l408 657q7 10 23 10q17 0 17 -6q0 -2 -1 -4l-410 -659q-3 -5 -4 -6t-3.5 -3t-6 -2.5t-9.5 -0.5q-18 0 -18 5z" />
+<glyph unicode="&#x2053;" horiz-adv-x="793" d="M45 117q0 5 4 17q6 23 17 46t31.5 51.5t54.5 46.5t76 18q48 0 101.5 -22.5t93 -49.5t88 -49.5t86.5 -22.5q26 0 48.5 16t37 41.5t22 43t12.5 34.5q2 8 4.5 8.5t10.5 -1.5q11 -3 11 -7q0 -3 -1 -6q-7 -28 -19.5 -54.5t-33 -54.5t-54 -45t-73.5 -17q-50 0 -104.5 21.5 t-95 47.5t-89.5 47.5t-89 21.5q-27 0 -48 -14t-34 -36.5t-19.5 -40t-10.5 -35.5q-4 -14 -7 -14q-2 0 -10 2q-10 2 -10 7z" />
+<glyph unicode="&#x205f;" horiz-adv-x="222" />
+<glyph unicode="&#x2060;" horiz-adv-x="0" />
+<glyph unicode="&#x20ac;" horiz-adv-x="606" d="M30 282l15 37h70q14 55 45.5 97t70 63.5t74 32t65.5 10.5q60 0 105.5 -18t90.5 -60q-4 -9 -18 -38q-23 29 -67 54.5t-107 25.5q-33 0 -63 -7t-61.5 -24.5t-56.5 -52t-39 -83.5h358l-15 -37h-348q-2 -12 -2 -27l2 -27h325l-16 -38h-303q31 -81 91.5 -123.5t126.5 -42.5 q101 0 173 72v-48q-77 -61 -170 -61q-48 0 -97 17t-97.5 65t-66.5 121h-82l15 38h61q-2 12 -2 27l2 27h-79z" />
+<glyph unicode="&#x2122;" horiz-adv-x="797" d="M40 579q0 1 1.5 10.5t3.5 23.5t3 24q2 11 9 11q11 0 11 -10q7 -1 43 -1h161q37 0 45 2q3 9 11 9q9 0 9 -10q0 -1 -1 -19.5t-1 -39.5q0 -9 -9 -9q-11 0 -11 11l1 14v19q-18 2 -46 2h-50q-2 -10 -2 -67v-7q0 -7 -0.5 -19t-1 -26.5t-0.5 -31.5t-0.5 -33.5t-0.5 -32.5v-27 v-25h30q9 0 9 -9q0 -11 -9 -11q-5 0 -26.5 1t-28.5 1t-28 -1t-26 -1q-11 0 -11 11q0 9 13 9h24q5 35 5 232q0 33 -1 37h-62q-27 0 -39 -3l-3 -31q-2 -12 -11 -12q-11 0 -11 9zM373 337q0 10 13 10h21q0 3 0.5 9.5t1 17t0.5 18.5q8 224 8 228h-30q-10 0 -10 11q0 9 10 9 q3 0 23 -0.5t25 -0.5q6 0 16 0.5t11 0.5q9 0 13 -9l97 -243l92 237q6 14 16 14h16q7 0 23.5 0.5t21.5 0.5q11 0 11 -10t-13 -10h-18q-1 -6 -1 -34v-41q0 -160 6 -198h21q10 0 10 -10t-9 -10q-5 0 -23.5 1t-25.5 1t-24.5 -1t-22.5 -1q-12 0 -12 10t13 10h18q2 10 2 79 q0 88 -2 166l-83 -211q-5 -12 -12.5 -23t-12.5 -21q-7 -11 -11 -11q-7 0 -12 15l-105 259q-4 -122 -4 -208q0 -39 1 -45h29q10 0 10 -10t-10 -10q-5 0 -19 1t-21 1t-19.5 -1t-17.5 -1q-11 0 -11 10z" />
+<glyph unicode="&#x2212;" horiz-adv-x="527" d="M31 212q0 8 0.5 11.5t4.5 6t13 2.5h431q8 0 11.5 -2.5t4 -6t0.5 -12.5q0 -14 -3 -18.5t-18 -4.5h-427q-9 0 -12.5 3t-4 6.5t-0.5 14.5z" />
+<glyph unicode="&#xe000;" horiz-adv-x="395" d="M0 395h395v-395h-395v395z" />
+<glyph unicode="&#xfeff;" horiz-adv-x="0" />
+<glyph horiz-adv-x="500" d="M40 231q0 175 78 282t182 107q76 0 122 -69.5t46 -178.5q0 -103 -30.5 -192t-89 -144.5t-131.5 -55.5q-84 0 -130.5 69t-46.5 182zM103 187q0 -86 32 -133t82 -47q59 0 105 66.5t67 153.5t21 169q0 79 -29.5 131.5t-86.5 52.5q-52 0 -96.5 -58t-69.5 -148t-25 -187z" />
+<glyph horiz-adv-x="500" d="M130 15q0 9 3 10.5t15 1.5h54q12 73 45 302.5t33 252.5v2q-3 0 -40 -7t-39 -7q-8 0 -8 9v13q0 10 10 11q17 2 54 8.5l66.5 12t31.5 5.5q9 0 9 -10q0 -4 -6.5 -40.5l-15.5 -91.5t-14 -92l-54 -368h66q8 0 9.5 -2t1.5 -11q0 -11 -2 -14t-9 -3q-6 0 -43 1.5t-54 1.5 q-16 0 -52 -1.5t-47 -1.5q-10 0 -12 2.5t-2 15.5z" />
+<glyph horiz-adv-x="500" d="M48 11q0 7 49 71t55 69q9 8 42.5 35t59 50t55 56.5t46 72t16.5 77.5q0 51 -28.5 88.5t-84.5 37.5q-27 0 -53.5 -10t-45 -24.5t-33 -29.5t-22.5 -25t-9 -10q-5 0 -12.5 6t-7.5 11q0 7 17.5 27.5t45 45t68.5 43t80 18.5q69 0 112.5 -44t43.5 -109q0 -49 -23.5 -99.5 t-57.5 -87.5q-30 -32 -68 -62.5t-74.5 -54.5t-44.5 -31q-8 -6 -23.5 -24l-28 -33t-12.5 -16t7 -1h288q2 0 12.5 33t12.5 33q22 0 22 -5q0 -3 -5.5 -21.5l-14 -45.5t-12.5 -46q-1 -6 -11 -6h-347q-14 0 -14 11z" />
+<glyph horiz-adv-x="500" d="M60 30q0 8 14 15.5t24 7.5q18 0 43 -19q34 -25 69 -25q63 0 103.5 43t40.5 109q0 38 -23.5 67.5t-59.5 40.5q-25 8 -57 8q-8 0 -23 -0.5t-23 -0.5q-11 0 -11 18t5 18q100 10 146 56q40 40 40 108q0 46 -23.5 79t-68.5 33q-31 0 -58.5 -12.5t-42 -25t-15.5 -12.5 q-6 0 -12 6t-5 12q1 8 19.5 23.5t54.5 30.5t74 15q64 0 102 -39t38 -91q0 -37 -15.5 -68.5t-37.5 -51t-44.5 -34t-38 -22t-15.5 -8.5l16 -3q17 -3 40.5 -11.5t47 -23t40 -43.5t16.5 -67q0 -84 -65.5 -132t-155.5 -48q-39 0 -89 16.5t-50 30.5z" />
+<glyph horiz-adv-x="500" d="M42 209q0 18 28 55q22 30 66.5 82.5l101 117l82.5 95.5q9 10 22.5 19t16.5 12q40 38 47 38q6 0 6 -14q0 -3 -0.5 -8t-0.5 -7l-48 -326q-2 -13 0.5 -15.5t14.5 -2.5h65q7 0 7 -10v-34q0 -7 -1.5 -8.5t-10.5 -1.5h-78q-9 0 -10.5 -1t-2.5 -8q-1 -3 -1 -5q-25 -164 -25 -185 q0 -6 -10 -9q-21 -7 -53 -7q-8 0 -5 13l36 187q3 7 1 10.5t-5 4t-12 0.5h-213q-18 0 -18 8zM98 259q0 -4 22 -4h167q13 0 14.5 2t4.5 18q5 22 19.5 128.5t14.5 130.5q0 6 -1 6q-2 0 -42 -46.5l-98.5 -115l-84.5 -97.5q-16 -16 -16 -22z" />
+<glyph horiz-adv-x="500" d="M57 1q0 17 10 17q7 0 28 -1.5t39 -1.5q81 0 140 41t59 131q0 35 -16.5 63t-46.5 47t-63 32t-76 23q-19 4 -19 12q0 4 3 13q8 22 33.5 118t34.5 125q3 5 16 5q3 0 82.5 -7.5t125.5 -7.5q6 0 8 4t6 19q2 5 5 5q18 0 18 -5q0 -4 -2 -14t-6 -26t-6 -27q-6 -25 -19 -25 q-9 0 -106.5 11.5t-102.5 11.5q-7 0 -8 -4v-2q-7 -24 -35 -127q-4 -18 -4 -19q0 -7 14 -11q1 0 22 -6t29.5 -9t31.5 -10.5t35.5 -15l32.5 -19t31 -24.5t23 -29.5t17.5 -37t5.5 -43.5q0 -53 -20.5 -94t-50.5 -63.5t-70 -37t-73.5 -19t-66.5 -4.5q-34 0 -54 6q-5 2 -5 6z" />
+<glyph horiz-adv-x="500" d="M50 170q0 77 18.5 144t48 113t67 83.5t74.5 60t73 37.5t59.5 21t35.5 6q3 0 5.5 -9t2.5 -15q0 -2 -19 -6t-59.5 -23t-82.5 -52q-84 -67 -122 -175q-5 -12 -5 -18q0 -5 19 3q57 20 97 20q73 0 116 -45t43 -115q0 -103 -57.5 -162.5t-147.5 -59.5q-76 0 -121 51.5 t-45 140.5zM108 148q0 -65 29 -104.5t77 -39.5q64 0 102.5 60.5t38.5 140.5q0 63 -32 96t-88 33q-35 0 -66.5 -16t-38.5 -32q-22 -54 -22 -138z" />
+<glyph horiz-adv-x="500" d="M63 506q0 4 5.5 20.5t13.5 44t14 53.5q6 27 11 27q20 0 20 -8q0 -3 -2 -13.5t-2 -14.5q0 -2 51 -2h275q13 0 13 -9q0 -3 -44 -82l-99 -177t-73 -133q-34 -66 -50.5 -111t-31.5 -109q-5 -17 -12 -17q-8 0 -20.5 5.5t-12.5 13.5q0 73 144 316l132 224q5 8 5 13q0 8 -14 8 h-198q-82 0 -85 -9l-13 -40q-6 -8 -10 -9q-17 0 -17 9z" />
+<glyph horiz-adv-x="500" d="M56 126q0 37 16 69.5t39 53t46.5 35.5t39.5 23t16 9t-11 9.5t-26.5 24t-30.5 35t-26 46.5t-11 54q0 70 49 115t120 45q61 0 103.5 -38.5t42.5 -95.5q0 -33 -13 -63t-31.5 -49.5t-37 -34.5t-31.5 -23.5t-13 -9.5t12 -9.5t29 -23.5t34 -35t29 -50.5t12 -62.5 q0 -75 -58 -119.5t-138 -44.5q-66 0 -113.5 41t-47.5 99zM113 138q0 -58 34.5 -93t78.5 -35q50 0 88 36.5t38 93.5q0 40 -29 81t-57 62.5t-34 21.5q-4 0 -16 -6t-29.5 -19.5t-34 -32t-28 -47.5t-11.5 -62zM155 497q0 -36 30.5 -74.5t59.5 -59t34 -20.5q8 0 29 18t43 56 t22 79q0 52 -28 87t-74 35q-55 0 -85.5 -33.5t-30.5 -87.5z" />
+<glyph horiz-adv-x="500" d="M52 10q0 16 11 16q108 0 180.5 59.5t114.5 181.5q2 6 -1.5 8t-10.5 -2q-58 -34 -123 -34q-66 0 -103.5 47.5t-37.5 115.5q0 103 58 165.5t145 62.5q71 0 117.5 -52.5t46.5 -145.5q0 -84 -19 -152.5t-48.5 -112.5t-70 -77t-77 -50t-76.5 -27t-62 -12.5t-39 -2.5 q-5 0 -5 12zM143 409q0 -56 27.5 -96t84.5 -40q67 0 113 36q9 7 14 52t5 82q0 66 -28 113t-77 47q-58 0 -98.5 -56.5t-40.5 -137.5z" />
+<glyph horiz-adv-x="270" d="M25 282q0 4 29.5 28.5t67 48.5t54.5 24q20 0 20 -22q0 -26 -32.5 -150t-32.5 -136q0 -20 13 -20q8 0 27 16t35 32t17 16q3 0 7.5 -5t4.5 -7q0 -12 -64.5 -62.5t-86.5 -50.5q-24 0 -24 18q0 24 35.5 145t35.5 153q0 18 -12 18q-11 0 -30.5 -15t-35 -29.5t-16.5 -14.5 q-4 0 -8 4.5t-4 8.5zM128 549q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33z" />
+<glyph horiz-adv-x="0" d="M-299 538q0 29 29 29q18 0 30 -25l40 -85q1 -2 1 -5t-4 -3h-18q-1 0 -7 6l-61 60q-10 10 -10 23z" />
+<glyph horiz-adv-x="0" d="M-219 451l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2z" />
+<glyph horiz-adv-x="0" d="M-313 451q0 1 4 5l91 92q11 11 20 11h20q7 0 9 -1.5t7 -9.5l53 -92q2 -3 2 -5t-5 -2h-12q-1 0 -7 6l-63 52q-3 3 -8 0l-85 -52q-2 -1 -4 -2.5t-3 -2.5l-2 -1h-12q-5 0 -5 2z" />
+<glyph horiz-adv-x="0" d="M-290 557q0 2 5 2h12q1 0 7 -6l63 -52q3 -3 8 0l85 52q2 1 4 2.5t4 2.5l1 1h12q5 0 5 -2q0 -1 -4 -5l-91 -92q-11 -11 -20 -11h-20q-7 0 -9 1.5t-7 9.5l-53 92q-2 3 -2 5z" />
+<glyph horiz-adv-x="0" d="M-300 508l2 21q1 6 2 7t7 1h181q6 0 7 -1t1 -6l-2 -23q-5 -8 -8 -8h-181q-7 0 -8.5 1t-0.5 8z" />
+<glyph horiz-adv-x="0" d="M-286 530q0 28 4 28h13q1 0 1 -2q0 -31 15.5 -45t52.5 -14q53 0 77 32q4 6 7.5 13.5l5.5 11.5t3 4h13q-6 -46 -37.5 -77.5t-76.5 -31.5q-41 0 -59.5 23t-18.5 58z" />
+<glyph horiz-adv-x="0" d="M-284 451l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2zM-164 451l3 6l66 85q20 25 38 25q26 0 26 -21q0 -18 -18 -31l-83 -60q-8 -6 -9 -6h-19q-4 0 -4 2z" />
+<glyph horiz-adv-x="0" d="M-242 510q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33z" />
+<glyph horiz-adv-x="0" d="M-311 505q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM-171 505q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33z" />
+<glyph horiz-adv-x="0" d="M-304 535q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33zM-178 535q0 20 11 33t30 13q20 0 32 -15t12 -33q0 -20 -11.5 -33t-29.5 -13q-20 0 -32 15t-12 33z" />
+<glyph horiz-adv-x="0" d="M-268 501q0 28 20 48t48 20t48 -20t20 -48t-20 -48t-48 -20t-48 20t-20 48zM-240 501q0 -17 11.5 -28.5t28.5 -11.5t28.5 11.5t11.5 28.5t-11.5 28.5t-28.5 11.5t-28.5 -11.5t-11.5 -28.5z" />
+<glyph horiz-adv-x="0" d="M-308 465q2 9 11 25q15 25 32.5 38.5t30.5 13.5q16 0 42 -18t38 -18q21 0 40 33q3 7 13 7q6 0 6 -2q-1 -6 -11 -26q-29 -55 -66 -55q-17 0 -41 17.5t-39 17.5q-22 0 -38 -29q-3 -6 -12 -6q-6 0 -6 2z" />
+<glyph horiz-adv-x="272" d="M55 28q0 6 18 106.5l42 243t35 234.5q2 10 -1 14t-13 1q-66 -18 -74 -18q-5 0 -3 20q1 8 2.5 9.5t7.5 3.5q39 9 75.5 18.5l53.5 14t19 4.5q10 0 10 -9q0 -12 -50 -305.5t-50 -296.5q0 -21 14 -21q12 0 36 21t43.5 42t20.5 21q3 0 9.5 -5.5t6.5 -7.5q0 -4 -28 -34.5 t-71.5 -62t-73.5 -31.5q-29 0 -29 38z" />
+<glyph horiz-adv-x="586" d="M20 15q0 9 2.5 10.5t14.5 1.5h52q1 0 20 142.5l38 292t19 164.5q0 13 -2 13h-58q-10 0 -13 2.5t-3 12.5t3.5 12.5t16.5 2.5q6 0 43.5 -1.5t54.5 -1.5q16 0 57.5 1.5t52.5 1.5q12 0 14.5 -2t2.5 -13q0 -9 -3 -12t-15 -3h-62l-19 -144l-39 -290t-19 -152q0 -22 17 -22 q231 0 291 6q12 1 15 4t8 19l25 77q3 8 11 8q21 0 21 -10q0 -3 -5 -19l-14.5 -47t-17.5 -61q-2 -11 -20 -11q-11 0 -185.5 1.5t-190.5 1.5t-52.5 -1.5t-47.5 -1.5q-10 0 -11.5 2.5t-1.5 15.5z" />
+<glyph horiz-adv-x="268" d="M30 291q0 12 6 25.5t12 14.5t91.5 4t91.5 3q2 0 2 -9q0 -33 -8 -33q-104 -8 -191 -8q-4 0 -4 3z" />
+<glyph horiz-adv-x="268" d="M30 291q0 12 6 25.5t12 14.5t91.5 4t91.5 3q2 0 2 -9q0 -33 -8 -33q-104 -8 -191 -8q-4 0 -4 3z" />
+<glyph horiz-adv-x="268" d="M30 291q0 12 6 25.5t12 14.5t91.5 4t91.5 3q2 0 2 -9q0 -33 -8 -33q-104 -8 -191 -8q-4 0 -4 3z" />
+<glyph horiz-adv-x="268" d="M30 291q0 12 6 25.5t12 14.5t91.5 4t91.5 3q2 0 2 -9q0 -33 -8 -33q-104 -8 -191 -8q-4 0 -4 3z" />
+<glyph horiz-adv-x="500" d="M10 295q0 12 2 14.5t11 2.5h451q11 0 13.5 -2t2.5 -10v-12q0 -9 -2.5 -11t-13.5 -2h-444q-15 0 -17.5 2.5t-2.5 17.5z" />
+<glyph horiz-adv-x="750" d="M10 295q0 12 2 14.5t11 2.5h701q11 0 13.5 -2t2.5 -10v-12q0 -9 -2.5 -11t-13.5 -2h-694q-15 0 -17.5 2.5t-2.5 17.5z" />
+<glyph horiz-adv-x="750" d="M10 295q0 12 2 14.5t11 2.5h701q11 0 13.5 -2t2.5 -10v-12q0 -9 -2.5 -11t-13.5 -2h-694q-15 0 -17.5 2.5t-2.5 17.5z" />
+<glyph horiz-adv-x="408" d="M50 318q0 4 55 55l36 34.5l31 30.5l12 11q2 0 8 -5.5t6 -6.5q0 -3 -31 -58t-31 -61t31 -61t31 -58q0 -1 -6 -6.5t-8 -5.5l-12 11l-31 30.5l-36 34.5q-55 51 -55 55zM200 318q0 4 55 55l36 34.5l31 30.5l12 11q2 0 8 -5.5t6 -6.5q0 -3 -31 -58t-31 -61t31 -61t31 -58 q0 -1 -6 -6.5t-8 -5.5l-12 11l-31 30.5l-36 34.5q-55 51 -55 55z" />
+<glyph horiz-adv-x="408" d="M60 199q0 3 31 58t31 61t-31 61t-31 58q0 1 6 6.5t8 5.5l12 -11l31 -30.5l36 -34.5q55 -51 55 -55t-55 -55l-36 -34.5l-31 -30.5l-12 -11q-2 0 -8 5.5t-6 6.5zM210 199q0 3 31 58t31 61t-31 61t-31 58q0 1 6 6.5t8 5.5l12 -11l31 -30.5l36 -34.5q55 -51 55 -55t-55 -55 l-36 -34.5l-31 -30.5l-12 -11q-2 0 -8 5.5t-6 6.5z" />
+<glyph horiz-adv-x="258" d="M50 318q0 4 55 55l36 34.5l31 30.5l12 11q2 0 8 -5.5t6 -6.5q0 -3 -31 -58t-31 -61t31 -61t31 -58q0 -1 -6 -6.5t-8 -5.5l-12 11l-31 30.5l-36 34.5q-55 51 -55 55z" />
+<glyph horiz-adv-x="258" d="M60 199q0 3 31 58t31 61t-31 61t-31 58q0 1 6 6.5t8 5.5l12 -11l31 -30.5l36 -34.5q55 -51 55 -55t-55 -55l-36 -34.5l-31 -30.5l-12 -11q-2 0 -8 5.5t-6 6.5z" />
+<glyph horiz-adv-x="319" d="M60 315q0 73 19 142t45 114.5t53.5 80.5t45.5 51t20 16q6 0 11 -4t5 -9l-8 -8q-8 -9 -20.5 -25.5t-27.5 -39t-30 -54.5t-27.5 -68.5t-20.5 -84.5t-8 -99q0 -79 14 -150t34.5 -117.5t41 -80.5t34.5 -53t14 -22q0 -14 -16 -14q-4 0 -22.5 21.5t-45 62.5t-51.5 91.5 t-42.5 117.5t-17.5 132z" />
+<glyph horiz-adv-x="319" d="M60 -97l8 9q8 8 20.5 24.5t27.5 39t30 54.5t27.5 68.5t20.5 84.5t8 99q0 79 -14 150t-34.5 117.5t-41 80.5t-34.5 53t-14 22q0 14 16 14q4 0 22.5 -21.5t45 -62.5t51.5 -91.5t42.5 -117.5t17.5 -132q0 -73 -19 -142t-45 -114.5t-53.5 -80.5t-45.5 -51t-20 -16q-6 0 -11 4 t-5 9z" />
+<glyph horiz-adv-x="296" d="M80 -96v801q0 9 2 12t10 3h151q9 0 11 -1.5t2 -7.5v-14q0 -9 -2 -11t-11 -2h-105q-9 0 -11 -2t-2 -10v-735q0 -12 13 -12h105q6 0 8.5 -0.5t3.5 -3t1 -9.5v-12q0 -6 -2 -8.5t-11 -2.5h-150q-9 0 -11 2.5t-2 12.5z" />
+<glyph horiz-adv-x="296" d="M40 -88q0 9 2 11t11 2h105q9 0 11 2t2 10v735v6t-1.5 3.5t-4 2t-7.5 0.5h-105q-6 0 -8.5 0.5t-3.5 3t-1 9.5v12q0 7 2 9t11 2h150q9 0 11 -2.5t2 -12.5v-801q0 -9 -2 -12t-10 -3h-151q-9 0 -11 1.5t-2 7.5v14z" />
+<glyph horiz-adv-x="307" d="M40 304q0 6 5.5 9t14.5 4t18.5 7.5t18.5 18t14.5 38t5.5 65.5v80q0 36 0.5 53.5t3 42.5t8 36.5t15 26t24.5 20t36.5 10t50.5 4.5q8 0 10 -2t2 -11t-2.5 -11t-11.5 -2q-43 0 -63.5 -19t-20.5 -73v-149q0 -72 -9.5 -100t-48.5 -41q-15 -6 -15 -7t15 -7q39 -13 48.5 -41 t9.5 -100v-149q0 -54 20.5 -73t63.5 -19q6 0 8.5 -0.5t4 -3.5t1.5 -9q0 -9 -2 -11t-10 -2q-29 0 -50.5 4.5t-36.5 10t-24.5 20t-15 26t-8 36.5t-3 42.5t-0.5 53.5v80q0 39 -5.5 65.5t-14.5 38t-18.5 18t-18.5 7.5t-14.5 4t-5.5 9z" />
+<glyph horiz-adv-x="307" d="M40 -98q0 9 3 11t11 2q43 0 63.5 19t20.5 73v149q0 72 9.5 100t48.5 41q15 6 15 7t-15 7q-39 13 -48.5 41t-9.5 100v149q0 54 -20.5 73t-63.5 19q-6 0 -8.5 0.5t-4 3.5t-1.5 9q0 9 2 11t10 2q29 0 50.5 -4.5t36.5 -10t24.5 -20t15 -26t8 -36.5t3 -42.5t0.5 -53.5v-80 q0 -39 5.5 -65.5t14.5 -38t18.5 -18t18.5 -7.5t14.5 -4t5.5 -9t-5.5 -9t-14.5 -4t-18.5 -7.5t-18.5 -18t-14.5 -38t-5.5 -65.5v-80q0 -36 -0.5 -53.5t-3 -42.5t-8 -36.5t-15 -26t-24.5 -20t-36.5 -10t-50.5 -4.5q-8 0 -10 2t-2 11z" />
+<glyph d="M22 155q0 115 58 185.5t129 70.5q53 0 89.5 -45.5t36.5 -116.5q0 -104 -53 -183t-128 -79q-58 0 -95 47.5t-37 120.5zM79 126q0 -56 21 -83t54 -27q57 0 92 80.5t35 168.5q0 52 -19 83.5t-57 31.5q-52 0 -89 -77.5t-37 -176.5z" />
+<glyph d="M78 10q0 15 13 15h56q7 45 26 190.5t19 160.5q-5 -1 -32 -6t-28 -5q-7 0 -7 9v8q0 8 8 9q12 1 41 6l53 9t26 4q7 0 7 -8q0 -3 -3.5 -24l-9.5 -57.5t-9 -58.5l-35 -237h58q8 0 8 -16q0 -8 -1 -9.5t-7 -1.5q-4 0 -37.5 1t-44.5 1t-47.5 -1t-43.5 -1t-8.5 2t-1.5 10z" />
+<glyph d="M41 7q0 6 27 43t31 40q154 139 154 206q0 30 -19 50.5t-55 20.5q-31 0 -56.5 -16.5t-38.5 -32.5t-14 -16q-3 0 -9 4.5t-6 8.5q0 7 19 29t54.5 44t70.5 22q49 0 79 -30.5t30 -77.5q0 -52 -51 -108q-21 -23 -45.5 -43.5t-49.5 -39l-29 -21.5l-38 -43h182l6 17l11 29.5 t7 13.5q18 0 18 -5q0 -2 -5.5 -19.5l-13.5 -41t-11 -36.5q-1 -5 -9 -5h-228q-11 0 -11 7z" />
+<glyph d="M49 27q0 6 10.5 12t19.5 6q15 0 35 -15.5t35 -15.5q39 0 63.5 26.5t24.5 67.5q0 76 -86 76q-5 0 -17.5 -1t-17.5 -1q-7 0 -7 13q0 15 4 15q36 4 53 11q70 27 70 94q0 30 -16.5 47.5t-41.5 17.5q-20 0 -38 -8.5t-29 -17t-12 -8.5q-3 0 -8 4t-4 8q1 5 14 17t38 23.5 t49 11.5q48 0 75.5 -26.5t27.5 -61.5q0 -19 -8 -35.5t-18.5 -27.5t-26 -21t-26 -14.5l-22.5 -9.5l-13 -5l13 -3q13 -3 23.5 -6t26 -10.5t26 -17t18.5 -25.5t8 -35q0 -57 -46 -89t-105 -32q-25 0 -58.5 13t-33.5 23z" />
+<glyph d="M24 141q0 15 17 38q18 25 78.5 88.5t82.5 90.5q6 7 15 13t11 8q35 35 40 35q7 0 7 -14l-30 -216q-1 -8 0.5 -9.5t8.5 -1.5h37q6 0 6 -8v-23q0 -5 -1.5 -6t-7.5 -1h-46q-3 0 -4 -0.5t-2.5 -2.5t-1.5 -6q-18 -120 -18 -126q0 -3 -1.5 -4.5t-4.5 -1.5l-2 -1q-16 -4 -41 -4 q-6 0 -4 10l23 126q1 7 -0.5 8.5t-9.5 1.5h-139q-13 0 -13 6zM64 175q0 -2 14 -2h108q6 0 7.5 1.5t3.5 11.5q21 126 21 158q-21 -16 -143 -155q-11 -11 -11 -14z" />
+<glyph d="M43 -2q0 11 7 11q4 0 18.5 -1t26.5 -1q42 0 80.5 29t38.5 78q0 86 -121 106q-14 3 -14 9l2 8q5 13 21 76t23 85q0 4 11 4q2 0 54.5 -5.5t82.5 -5.5q4 0 8 14q2 4 5 4q12 0 12 -4q0 -3 -2 -11t-5 -19t-5 -19q-4 -18 -14 -18q-5 0 -70.5 7.5t-68.5 7.5q-2 0 -4 -4 q-2 -5 -18 -67q0 -3 -1.5 -7t-1.5 -6q0 -4 8 -6q154 -36 154 -128q0 -42 -20 -73t-51 -46.5t-60.5 -23t-55.5 -7.5q-27 0 -37 3q-3 1 -3 10z" />
+<glyph d="M45 120q0 86 47 157q45 67 115 101.5t102 34.5q7 0 7 -18q0 -1 -7 -3t-22 -7t-30 -11q-101 -43 -136 -147q-4 -12 -3.5 -12.5t11.5 2.5q37 14 60 14q52 0 83 -31.5t31 -80.5q0 -67 -41 -101t-96 -34q-56 0 -88.5 39.5t-32.5 96.5zM93 108q0 -48 22 -75.5t58 -27.5 q80 0 80 118q0 40 -26 64t-52 24q-24 0 -44 -10.5t-25 -21.5q-13 -32 -13 -71z" />
+<glyph d="M58 314q0 3 4 16.5l10.5 34.5t10.5 39q4 20 9 20q17 0 17 -7q0 -2 -2.5 -9.5t-2.5 -9.5q3 -1 35 -1h182q10 0 10 -7q0 -3 -31 -58l-69.5 -124t-50.5 -93q-27 -51 -32.5 -63.5t-21.5 -57.5q-5 -13 -9 -13q-6 0 -16 4.5t-10 10.5q0 14 14.5 46t40 75l48.5 80.5l50.5 81.5 l36.5 58q4 8 4 9q0 4 -9 4h-127q-56 0 -58 -5l-9 -31q-2 -7 -8 -7q-16 0 -16 7z" />
+<glyph d="M54 75q0 18 7 35.5t17 29t24 22.5t24 17t21 11.5t12 6.5q-1 1 -9 7t-14.5 12t-16 16.5t-16 21t-11.5 25t-5 28.5q0 46 35.5 76t84.5 30q41 0 70 -26.5t29 -64.5q0 -17 -5.5 -33t-13.5 -27t-19 -21.5t-19 -16t-17 -11t-10 -6.5l6 -5q7 -4 11.5 -7.5l13 -10.5t14.5 -13.5 t13 -16.5t12 -19.5t8 -22t3 -25.5q0 -50 -41 -78.5t-97 -28.5q-45 0 -78 28t-33 67zM98 85q0 -38 22.5 -58.5t51.5 -20.5q34 0 58 20.5t24 56.5q0 26 -19 51.5t-36.5 39t-22.5 14.5q-7 -1 -23.5 -11t-35.5 -35.5t-19 -56.5zM130 315q0 -23 18.5 -47t35 -36t22.5 -14 q5 1 18.5 11.5t27.5 33.5t14 49q0 33 -17 55.5t-46 22.5q-35 0 -54 -22.5t-19 -52.5z" />
+<glyph d="M48 -4q0 9 7 10q148 11 200 164q1 2 0 3.5t-3 1.5t-5 -2q-35 -21 -85 -21q-45 0 -72 33.5t-27 79.5q0 67 44 106.5t97 39.5q54 0 85 -38.5t31 -100.5q0 -61 -17 -110.5t-44.5 -79.5t-58 -51t-62.5 -30.5t-52.5 -13.5t-33.5 -4q-4 0 -4 13zM110 271q0 -38 18 -66t54 -28 q50 0 78 23q13 10 13 80q0 110 -71 110q-38 0 -65 -33.5t-27 -85.5z" />
+<glyph d="M22 405q0 115 58 185.5t129 70.5q53 0 89.5 -45.5t36.5 -116.5q0 -104 -53 -183t-128 -79q-58 0 -95 47.5t-37 120.5zM79 376q0 -56 21 -83t54 -27q57 0 92 80.5t35 168.5q0 52 -19 83.5t-57 31.5q-52 0 -89 -77.5t-37 -176.5z" />
+<glyph d="M78 260q0 15 13 15h56q7 45 26 190.5t19 160.5q-5 -1 -32 -6t-28 -5q-7 0 -7 9v8q0 8 8 9q12 1 41 6l53 9t26 4q7 0 7 -8q0 -3 -3.5 -24l-9.5 -57.5t-9 -58.5l-35 -237h58q8 0 8 -16q0 -8 -1 -9.5t-7 -1.5q-4 0 -37.5 1t-44.5 1t-47.5 -1t-43.5 -1t-8.5 2t-1.5 10z" />
+<glyph d="M41 257q0 6 27 43t31 40q154 139 154 206q0 30 -19 50.5t-55 20.5q-31 0 -56.5 -16.5t-38.5 -32.5t-14 -16q-3 0 -9 4.5t-6 8.5q0 7 19 29t54.5 44t70.5 22q49 0 79 -30.5t30 -77.5q0 -52 -51 -108q-21 -23 -45.5 -43.5t-49.5 -39l-29 -21.5l-38 -43h182l6 17l11 29.5 t7 13.5q18 0 18 -5q0 -2 -5.5 -19.5l-13.5 -41t-11 -36.5q-1 -5 -9 -5h-228q-11 0 -11 7z" />
+<glyph d="M49 277q0 6 10.5 12t19.5 6q15 0 35 -15.5t35 -15.5q39 0 63.5 26.5t24.5 67.5q0 76 -86 76q-5 0 -17.5 -1t-17.5 -1q-7 0 -7 13q0 15 4 15q36 4 53 11q70 27 70 94q0 30 -16.5 47.5t-41.5 17.5q-20 0 -38 -8.5t-29 -17t-12 -8.5q-3 0 -8 4t-4 8q1 5 14 17t38 23.5 t49 11.5q48 0 75.5 -26.5t27.5 -61.5q0 -19 -8 -35.5t-18.5 -27.5t-26 -21t-26 -14.5l-22.5 -9.5l-13 -5l13 -3q13 -3 23.5 -6t26 -10.5t26 -17t18.5 -25.5t8 -35q0 -57 -46 -89t-105 -32q-25 0 -58.5 13t-33.5 23z" />
+<glyph d="M24 391q0 15 17 38q18 25 78.5 88.5t82.5 90.5q6 7 15 13t11 8q35 35 40 35q7 0 7 -14l-30 -216q-1 -8 0.5 -9.5t8.5 -1.5h37q6 0 6 -8v-23q0 -5 -1.5 -6t-7.5 -1h-46q-3 0 -4 -0.5t-2.5 -2.5t-1.5 -6q-18 -120 -18 -126q0 -3 -1.5 -4.5t-4.5 -1.5l-2 -1q-16 -4 -41 -4 q-6 0 -4 10l23 126q1 7 -0.5 8.5t-9.5 1.5h-139q-13 0 -13 6zM64 425q0 -2 14 -2h108q6 0 7.5 1.5t3.5 11.5q21 126 21 158q-21 -16 -143 -155q-11 -11 -11 -14z" />
+<glyph d="M43 248q0 11 7 11q4 0 18.5 -1t26.5 -1q42 0 80.5 29t38.5 78q0 86 -121 106q-14 3 -14 9l2 8q5 13 21 76t23 85q0 4 11 4q2 0 54.5 -5.5t82.5 -5.5q4 0 8 14q2 4 5 4q12 0 12 -4q0 -3 -2 -11t-5 -19t-5 -19q-4 -18 -14 -18q-5 0 -70.5 7.5t-68.5 7.5q-2 0 -4 -4 q-2 -5 -18 -67q0 -3 -1.5 -7t-1.5 -6q0 -4 8 -6q154 -36 154 -128q0 -42 -20 -73t-51 -46.5t-60.5 -23t-55.5 -7.5q-27 0 -37 3q-3 1 -3 10z" />
+<glyph d="M45 370q0 86 47 157q45 67 115 101.5t102 34.5q7 0 7 -18q0 -1 -7 -3t-22 -7t-30 -11q-101 -43 -136 -147q-4 -12 -3.5 -12.5t11.5 2.5q37 14 60 14q52 0 83 -31.5t31 -80.5q0 -67 -41 -101t-96 -34q-56 0 -88.5 39.5t-32.5 96.5zM93 358q0 -48 22 -75.5t58 -27.5 q80 0 80 118q0 40 -26 64t-52 24q-24 0 -44 -10.5t-25 -21.5q-13 -32 -13 -71z" />
+<glyph d="M58 564q0 3 4 16.5l10.5 34.5t10.5 39q4 20 9 20q17 0 17 -7q0 -2 -2.5 -9.5t-2.5 -9.5q3 -1 35 -1h182q10 0 10 -7q0 -3 -31 -58l-69.5 -124t-50.5 -93q-27 -51 -32.5 -63.5t-21.5 -57.5q-5 -13 -9 -13q-6 0 -16 4.5t-10 10.5q0 14 14.5 46t40 75l48.5 80.5l50.5 81.5 l36.5 58q4 8 4 9q0 4 -9 4h-127q-56 0 -58 -5l-9 -31q-2 -7 -8 -7q-16 0 -16 7z" />
+<glyph d="M54 325q0 18 7 35.5t17 29t24 22.5t24 17t21 11.5t12 6.5q-1 1 -9 7t-14.5 12t-16 16.5t-16 21t-11.5 25t-5 28.5q0 46 35.5 76t84.5 30q41 0 70 -26.5t29 -64.5q0 -17 -5.5 -33t-13.5 -27t-19 -21.5t-19 -16t-17 -11t-10 -6.5l6 -5q7 -4 11.5 -7.5l13 -10.5t14.5 -13.5 t13 -16.5t12 -19.5t8 -22t3 -25.5q0 -50 -41 -78.5t-97 -28.5q-45 0 -78 28t-33 67zM98 335q0 -38 22.5 -58.5t51.5 -20.5q34 0 58 20.5t24 56.5q0 26 -19 51.5t-36.5 39t-22.5 14.5q-7 -1 -23.5 -11t-35.5 -35.5t-19 -56.5zM130 565q0 -23 18.5 -47t35 -36t22.5 -14 q5 1 18.5 11.5t27.5 33.5t14 49q0 33 -17 55.5t-46 22.5q-35 0 -54 -22.5t-19 -52.5z" />
+<glyph d="M48 246q0 9 7 10q148 11 200 164q1 2 0 3.5t-3 1.5t-5 -2q-35 -21 -85 -21q-45 0 -72 33.5t-27 79.5q0 67 44 106.5t97 39.5q54 0 85 -38.5t31 -100.5q0 -61 -17 -110.5t-44.5 -79.5t-58 -51t-62.5 -30.5t-52.5 -13.5t-33.5 -4q-4 0 -4 13zM110 521q0 -38 18 -66t54 -28 q50 0 78 23q13 10 13 80q0 110 -71 110q-38 0 -65 -33.5t-27 -85.5z" />
+<glyph d="M22 5q0 115 58 185.5t129 70.5q53 0 89.5 -45.5t36.5 -116.5q0 -104 -53 -183t-128 -79q-58 0 -95 47.5t-37 120.5zM79 -24q0 -56 21 -83t54 -27q57 0 92 80.5t35 168.5q0 52 -19 83.5t-57 31.5q-52 0 -89 -77.5t-37 -176.5z" />
+<glyph d="M78 -140q0 15 13 15h56q7 45 26 190.5t19 160.5q-5 -1 -32 -6t-28 -5q-7 0 -7 9v8q0 8 8 9q12 1 41 6l53 9t26 4q7 0 7 -8q0 -3 -3.5 -24l-9.5 -57.5t-9 -58.5l-35 -237h58q8 0 8 -16q0 -8 -1 -9.5t-7 -1.5q-4 0 -37.5 1t-44.5 1t-47.5 -1t-43.5 -1t-8.5 2t-1.5 10z" />
+<glyph d="M41 -143q0 6 27 43t31 40q154 139 154 206q0 30 -19 50.5t-55 20.5q-31 0 -56.5 -16.5t-38.5 -32.5t-14 -16q-3 0 -9 4.5t-6 8.5q0 7 19 29t54.5 44t70.5 22q49 0 79 -30.5t30 -77.5q0 -52 -51 -108q-21 -23 -45.5 -43.5t-49.5 -39l-29 -21.5l-38 -43h182l6 17l11 29.5 t7 13.5q18 0 18 -5q0 -2 -5.5 -19.5l-13.5 -41t-11 -36.5q-1 -5 -9 -5h-228q-11 0 -11 7z" />
+<glyph d="M49 -123q0 6 10.5 12t19.5 6q15 0 35 -15.5t35 -15.5q39 0 63.5 26.5t24.5 67.5q0 76 -86 76q-5 0 -17.5 -1t-17.5 -1q-7 0 -7 13q0 15 4 15q36 4 53 11q70 27 70 94q0 30 -16.5 47.5t-41.5 17.5q-20 0 -38 -8.5t-29 -17t-12 -8.5q-3 0 -8 4t-4 8q1 5 14 17t38 23.5 t49 11.5q48 0 75.5 -26.5t27.5 -61.5q0 -19 -8 -35.5t-18.5 -27.5t-26 -21t-26 -14.5l-22.5 -9.5l-13 -5l13 -3q13 -3 23.5 -6t26 -10.5t26 -17t18.5 -25.5t8 -35q0 -57 -46 -89t-105 -32q-25 0 -58.5 13t-33.5 23z" />
+<glyph d="M24 -9q0 15 17 38q18 25 78.5 88.5t82.5 90.5q6 7 15 13t11 8q35 35 40 35q7 0 7 -14l-30 -216q-1 -8 0.5 -9.5t8.5 -1.5h37q6 0 6 -8v-23q0 -5 -1.5 -6t-7.5 -1h-46q-3 0 -4 -0.5t-2.5 -2.5t-1.5 -6q-18 -120 -18 -126q0 -3 -1.5 -4.5t-4.5 -1.5l-2 -1q-16 -4 -41 -4 q-6 0 -4 10l23 126q1 7 -0.5 8.5t-9.5 1.5h-139q-13 0 -13 6zM64 25q0 -2 14 -2h108q6 0 7.5 1.5t3.5 11.5q21 126 21 158q-21 -16 -143 -155q-11 -11 -11 -14z" />
+<glyph d="M43 -152q0 11 7 11q4 0 18.5 -1t26.5 -1q42 0 80.5 29t38.5 78q0 86 -121 106q-14 3 -14 9l2 8q5 13 21 76t23 85q0 4 11 4q2 0 54.5 -5.5t82.5 -5.5q4 0 8 14q2 4 5 4q12 0 12 -4q0 -3 -2 -11t-5 -19t-5 -19q-4 -18 -14 -18q-5 0 -70.5 7.5t-68.5 7.5q-2 0 -4 -4 q-2 -5 -18 -67q0 -3 -1.5 -7t-1.5 -6q0 -4 8 -6q154 -36 154 -128q0 -42 -20 -73t-51 -46.5t-60.5 -23t-55.5 -7.5q-27 0 -37 3q-3 1 -3 10z" />
+<glyph d="M45 -30q0 86 47 157q45 67 115 101.5t102 34.5q7 0 7 -18q0 -1 -7 -3t-22 -7t-30 -11q-101 -43 -136 -147q-4 -12 -3.5 -12.5t11.5 2.5q37 14 60 14q52 0 83 -31.5t31 -80.5q0 -67 -41 -101t-96 -34q-56 0 -88.5 39.5t-32.5 96.5zM93 -42q0 -48 22 -75.5t58 -27.5 q80 0 80 118q0 40 -26 64t-52 24q-24 0 -44 -10.5t-25 -21.5q-13 -32 -13 -71z" />
+<glyph d="M58 164q0 3 4 16.5l10.5 34.5t10.5 39q4 20 9 20q17 0 17 -7q0 -2 -2.5 -9.5t-2.5 -9.5q3 -1 35 -1h182q10 0 10 -7q0 -3 -31 -58l-69.5 -124t-50.5 -93q-27 -51 -32.5 -63.5t-21.5 -57.5q-5 -13 -9 -13q-6 0 -16 4.5t-10 10.5q0 14 14.5 46t40 75l48.5 80.5l50.5 81.5 l36.5 58q4 8 4 9q0 4 -9 4h-127q-56 0 -58 -5l-9 -31q-2 -7 -8 -7q-16 0 -16 7z" />
+<glyph d="M54 -75q0 18 7 35.5t17 29t24 22.5t24 17t21 11.5t12 6.5q-1 1 -9 7t-14.5 12t-16 16.5t-16 21t-11.5 25t-5 28.5q0 46 35.5 76t84.5 30q41 0 70 -26.5t29 -64.5q0 -17 -5.5 -33t-13.5 -27t-19 -21.5t-19 -16t-17 -11t-10 -6.5l6 -5q7 -4 11.5 -7.5l13 -10.5t14.5 -13.5 t13 -16.5t12 -19.5t8 -22t3 -25.5q0 -50 -41 -78.5t-97 -28.5q-45 0 -78 28t-33 67zM98 -65q0 -38 22.5 -58.5t51.5 -20.5q34 0 58 20.5t24 56.5q0 26 -19 51.5t-36.5 39t-22.5 14.5q-7 -1 -23.5 -11t-35.5 -35.5t-19 -56.5zM130 165q0 -23 18.5 -47t35 -36t22.5 -14 q5 1 18.5 11.5t27.5 33.5t14 49q0 33 -17 55.5t-46 22.5q-35 0 -54 -22.5t-19 -52.5z" />
+<glyph d="M48 -154q0 9 7 10q148 11 200 164q1 2 0 3.5t-3 1.5t-5 -2q-35 -21 -85 -21q-45 0 -72 33.5t-27 79.5q0 67 44 106.5t97 39.5q54 0 85 -38.5t31 -100.5q0 -61 -17 -110.5t-44.5 -79.5t-58 -51t-62.5 -30.5t-52.5 -13.5t-33.5 -4q-4 0 -4 13zM110 121q0 -38 18 -66t54 -28 q50 0 78 23q13 10 13 80q0 110 -71 110q-38 0 -65 -33.5t-27 -85.5z" />
+<glyph d="M22 505q0 115 58 185.5t129 70.5q53 0 89.5 -45.5t36.5 -116.5q0 -104 -53 -183t-128 -79q-58 0 -95 47.5t-37 120.5zM79 476q0 -56 21 -83t54 -27q57 0 92 80.5t35 168.5q0 52 -19 83.5t-57 31.5q-52 0 -89 -77.5t-37 -176.5z" />
+<glyph d="M78 360q0 15 13 15h56q7 45 26 190.5t19 160.5q-5 -1 -32 -6t-28 -5q-7 0 -7 9v8q0 8 8 9q12 1 41 6l53 9t26 4q7 0 7 -8q0 -3 -3.5 -24l-9.5 -57.5t-9 -58.5l-35 -237h58q8 0 8 -16q0 -8 -1 -9.5t-7 -1.5q-4 0 -37.5 1t-44.5 1t-47.5 -1t-43.5 -1t-8.5 2t-1.5 10z" />
+<glyph d="M41 357q0 6 27 43t31 40q154 139 154 206q0 30 -19 50.5t-55 20.5q-31 0 -56.5 -16.5t-38.5 -32.5t-14 -16q-3 0 -9 4.5t-6 8.5q0 7 19 29t54.5 44t70.5 22q49 0 79 -30.5t30 -77.5q0 -52 -51 -108q-21 -23 -45.5 -43.5t-49.5 -39l-29 -21.5l-38 -43h182l6 17l11 29.5 t7 13.5q18 0 18 -5q0 -2 -5.5 -19.5l-13.5 -41t-11 -36.5q-1 -5 -9 -5h-228q-11 0 -11 7z" />
+<glyph d="M49 377q0 6 10.5 12t19.5 6q15 0 35 -15.5t35 -15.5q39 0 63.5 26.5t24.5 67.5q0 76 -86 76q-5 0 -17.5 -1t-17.5 -1q-7 0 -7 13q0 15 4 15q36 4 53 11q70 27 70 94q0 30 -16.5 47.5t-41.5 17.5q-20 0 -38 -8.5t-29 -17t-12 -8.5q-3 0 -8 4t-4 8q1 5 14 17t38 23.5 t49 11.5q48 0 75.5 -26.5t27.5 -61.5q0 -19 -8 -35.5t-18.5 -27.5t-26 -21t-26 -14.5l-22.5 -9.5l-13 -5l13 -3q13 -3 23.5 -6t26 -10.5t26 -17t18.5 -25.5t8 -35q0 -57 -46 -89t-105 -32q-25 0 -58.5 13t-33.5 23z" />
+<glyph d="M24 491q0 15 17 38q18 25 78.5 88.5t82.5 90.5q6 7 15 13t11 8q35 35 40 35q7 0 7 -14l-30 -216q-1 -8 0.5 -9.5t8.5 -1.5h37q6 0 6 -8v-23q0 -5 -1.5 -6t-7.5 -1h-46q-3 0 -4 -0.5t-2.5 -2.5t-1.5 -6q-18 -120 -18 -126q0 -3 -1.5 -4.5t-4.5 -1.5l-2 -1q-16 -4 -41 -4 q-6 0 -4 10l23 126q1 7 -0.5 8.5t-9.5 1.5h-139q-13 0 -13 6zM64 525q0 -2 14 -2h108q6 0 7.5 1.5t3.5 11.5q21 126 21 158q-21 -16 -143 -155q-11 -11 -11 -14z" />
+<glyph d="M43 348q0 11 7 11q4 0 18.5 -1t26.5 -1q42 0 80.5 29t38.5 78q0 86 -121 106q-14 3 -14 9l2 8q5 13 21 76t23 85q0 4 11 4q2 0 54.5 -5.5t82.5 -5.5q4 0 8 14q2 4 5 4q12 0 12 -4q0 -3 -2 -11t-5 -19t-5 -19q-4 -18 -14 -18q-5 0 -70.5 7.5t-68.5 7.5q-2 0 -4 -4 q-2 -5 -18 -67q0 -3 -1.5 -7t-1.5 -6q0 -4 8 -6q154 -36 154 -128q0 -42 -20 -73t-51 -46.5t-60.5 -23t-55.5 -7.5q-27 0 -37 3q-3 1 -3 10z" />
+<glyph d="M45 470q0 86 47 157q45 67 115 101.5t102 34.5q7 0 7 -18q0 -1 -7 -3t-22 -7t-30 -11q-101 -43 -136 -147q-4 -12 -3.5 -12.5t11.5 2.5q37 14 60 14q52 0 83 -31.5t31 -80.5q0 -67 -41 -101t-96 -34q-56 0 -88.5 39.5t-32.5 96.5zM93 458q0 -48 22 -75.5t58 -27.5 q80 0 80 118q0 40 -26 64t-52 24q-24 0 -44 -10.5t-25 -21.5q-13 -32 -13 -71z" />
+<glyph d="M58 664q0 3 4 16.5l10.5 34.5t10.5 39q4 20 9 20q17 0 17 -7q0 -2 -2.5 -9.5t-2.5 -9.5q3 -1 35 -1h182q10 0 10 -7q0 -3 -31 -58l-69.5 -124t-50.5 -93q-27 -51 -32.5 -63.5t-21.5 -57.5q-5 -13 -9 -13q-6 0 -16 4.5t-10 10.5q0 14 14.5 46t40 75l48.5 80.5l50.5 81.5 l36.5 58q4 8 4 9q0 4 -9 4h-127q-56 0 -58 -5l-9 -31q-2 -7 -8 -7q-16 0 -16 7z" />
+<glyph d="M54 425q0 18 7 35.5t17 29t24 22.5t24 17t21 11.5t12 6.5q-1 1 -9 7t-14.5 12t-16 16.5t-16 21t-11.5 25t-5 28.5q0 46 35.5 76t84.5 30q41 0 70 -26.5t29 -64.5q0 -17 -5.5 -33t-13.5 -27t-19 -21.5t-19 -16t-17 -11t-10 -6.5l6 -5q7 -4 11.5 -7.5l13 -10.5t14.5 -13.5 t13 -16.5t12 -19.5t8 -22t3 -25.5q0 -50 -41 -78.5t-97 -28.5q-45 0 -78 28t-33 67zM98 435q0 -38 22.5 -58.5t51.5 -20.5q34 0 58 20.5t24 56.5q0 26 -19 51.5t-36.5 39t-22.5 14.5q-7 -1 -23.5 -11t-35.5 -35.5t-19 -56.5zM130 665q0 -23 18.5 -47t35 -36t22.5 -14 q5 1 18.5 11.5t27.5 33.5t14 49q0 33 -17 55.5t-46 22.5q-35 0 -54 -22.5t-19 -52.5z" />
+<glyph d="M48 346q0 9 7 10q148 11 200 164q1 2 0 3.5t-3 1.5t-5 -2q-35 -21 -85 -21q-45 0 -72 33.5t-27 79.5q0 67 44 106.5t97 39.5q54 0 85 -38.5t31 -100.5q0 -61 -17 -110.5t-44.5 -79.5t-58 -51t-62.5 -30.5t-52.5 -13.5t-33.5 -4q-4 0 -4 13zM110 621q0 -38 18 -66t54 -28 q50 0 78 23q13 10 13 80q0 110 -71 110q-38 0 -65 -33.5t-27 -85.5z" />
+<glyph horiz-adv-x="379" d="M30 49q0 38 12.5 83.5t35 88.5t60.5 71.5t83 28.5q28 0 45 -25q3 -4 6.5 -10t6 -9.5t3.5 -3.5q2 2 7 17.5t5 18.5q4 10 34 10q14 0 14 -6q0 -3 -33.5 -121.5t-33.5 -139.5q0 -16 11 -16q7 0 29.5 23.5t23.5 23.5q3 0 6.5 -4t3.5 -9q0 -3 -18.5 -22t-45 -38.5t-42.5 -19.5 q-23 0 -23 21q0 26 44 167q-46 -80 -100 -135q-40 -40 -59 -48q-10 -4 -22 -4q-26 0 -39.5 16.5t-13.5 41.5zM85 80q0 -44 23 -44q21 0 68 52t81 107q12 18 12 44q0 21 -23 34t-45 13q-39 0 -77.5 -75t-38.5 -131z" />
+<glyph horiz-adv-x="408" d="M45 10q0 4 2 7.5t5 7.5l4 4q2 2 5 16q24 132 48 290t24 180q0 5 -5 5q-2 0 -33 -9t-34 -9q-8 0 -8 22q0 9 4 10q119 31 132 31q11 0 11 -9q0 -5 -14.5 -96.5t-19.5 -116.5q-27 -155 -38 -203q39 67 69 106q31 42 54.5 58.5t61.5 16.5q65 0 65 -54q0 -111 -76.5 -193 t-140.5 -82q-17 0 -32.5 6t-24.5 12t-11 6q-1 0 -3.5 -1t-6 -3t-6.5 -3q-14 -7 -23 -7t-9 8zM115 66q0 -20 14 -34t41 -14q34 0 70.5 42t57.5 92t21 81q0 48 -34 48q-35 0 -69 -48q-101 -139 -101 -167z" />
+<glyph horiz-adv-x="357" d="M35 106q0 95 59 156.5t125 61.5q41 0 65 -20t24 -53q0 -18 -10 -29.5t-26 -11.5q-19 0 -19 31q0 3 0.5 10t0.5 10q0 16 -9.5 27.5t-28.5 11.5q-50 0 -87 -55q-38 -56 -38 -126q0 -14 1.5 -23.5t8.5 -26t26.5 -26t49.5 -9.5q32 0 63.5 16t50.5 32t20 16q3 0 7 -4t4 -8 q0 -5 -25 -27t-68 -45t-80 -23q-61 0 -87.5 33.5t-26.5 81.5z" />
+<glyph horiz-adv-x="424" d="M35 61q0 28 12 69t33.5 83t57.5 71.5t77 29.5q15 0 28.5 -2.5t20.5 -5.5t15 -7t9 -4q8 -3 9.5 -2t3.5 10q5 25 12 75.5l12.5 89t5.5 39.5q4 12 -2 12q-1 0 -36.5 -8.5t-37.5 -8.5q-6 0 -3 18q1 10 9 13q32 7 63 14.5t46 11.5t16 4q10 0 10 -13q0 -3 -41.5 -239.5 t-41.5 -261.5q0 -11 10 -11q11 0 29 15t32.5 30t15.5 15q9 0 9 -7q0 -5 -18 -27.5t-51 -46.5t-63 -24q-10 0 -17 8.5t-7 22.5q0 28 33 165q-42 -72 -71 -109q-22 -29 -34 -42.5t-34.5 -27.5t-46.5 -14q-8 0 -16 1.5t-20.5 7t-20.5 20t-8 36.5zM92 85q0 -24 8 -35t28 -11 q35 0 115 115q46 69 46 97q0 11 -24 27.5t-50 16.5q-34 0 -64 -40.5t-44.5 -88t-14.5 -81.5z" />
+<glyph horiz-adv-x="357" d="M35 87q0 95 61 166t143 71q78 0 78 -55q0 -36 -29.5 -64t-73.5 -45q-55 -20 -117 -20q-5 0 -5 -38q0 -72 78 -72q34 0 67.5 18t52.5 35.5t20 17.5q3 0 7.5 -4.5t4.5 -6.5q0 -4 -23.5 -26t-69 -45.5t-89.5 -23.5q-46 0 -75.5 23t-29.5 69zM104 165q0 -4 7 -4 q62 0 106 29.5t44 79.5q0 15 -11 23.5t-29 8.5q-68 0 -106 -99q-11 -29 -11 -38z" />
+<glyph horiz-adv-x="250" d="M-92 -199q0 12 14 23.5t27 11.5q10 0 31 -9.5t36 -9.5q8 0 14.5 5t11 15.5l8.5 20.5t7 26l5 26t4 25.5t3 20.5q9 54 19.5 133t17 132.5t6.5 56.5q0 8 -6 8h-59q-7 0 -7 7q0 4 2 10q1 5 7 5h57q4 0 5.5 0.5t3 2.5t1.5 7q9 80 36 130q37 67 84 94q37 22 77 22q21 0 41 -10 t20 -20q0 -12 -16.5 -24t-29.5 -12q-11 0 -31.5 15.5t-35.5 15.5q-61 0 -91 -216q0 -5 6 -5h69q5 0 5 -2q0 -20 -8 -20h-68h-2q-3 0 -4 -3l-0.5 -2t-0.5 -3t-19 -133.5t-29 -188.5q-3 -17 -9 -38t-25 -58t-44 -55q-48 -35 -76 -35q-20 0 -38.5 10.5t-18.5 20.5z" />
+<glyph horiz-adv-x="377" d="M4 -130q0 33 25 56.5t52 35.5q9 4 9 5t-2 2t-6 2.5t-7 3.5q-21 14 -21 28q0 6 14.5 29.5t22.5 26.5l51 18l4 2q0 1 -5 2q-82 27 -82 109q0 59 43 100t105 41q12 0 24 -2.5t20 -6.5t15.5 -8.5t11.5 -8.5t8 -7l4 -4q2 2 11.5 22.5t11.5 23.5q5 9 18 9q23 0 23 -10 t-9.5 -27.5t-19.5 -31.5t-10 -15q0 -2 1 -5q2 -4 2 -6q6 -22 6 -33q0 -60 -44 -101q-22 -20 -42.5 -28.5t-62.5 -20.5q-77 -21 -77 -38q0 -4 2.5 -7t8 -6t11 -5t15 -4.5t18 -4l20.5 -3.5l21 -3.5t22.5 -4t22.5 -3.5q53 -8 81 -25t28 -55q0 -63 -56 -92t-145 -29 q-143 0 -143 79zM41 -125q0 -32 44 -44.5t95 -12.5q52 0 84 18t32 54q0 25 -22 37t-64 19q-84 15 -90 15q-4 0 -26 -10q-53 -27 -53 -76zM112 189q0 -49 20.5 -70.5t41.5 -21.5q33 0 65 39t32 94q0 30 -19 55t-46 25q-41 0 -67.5 -40t-26.5 -81z" />
+<glyph horiz-adv-x="431" d="M40 5q0 2 5.5 27.5t14.5 72.5l19.5 105.5t22 139.5t19.5 162q2 15 -3 15q-8 0 -39.5 -11.5t-32.5 -11.5q-3 0 -3 13q0 10 6 14q24 9 69 18.5t61 9.5q6 0 6 -13q-4 -75 -76 -436q39 89 92 152q46 56 105 56q50 0 50 -41q0 -31 -27.5 -122.5t-27.5 -99.5q0 -17 15 -17 q9 0 28 18t34.5 36t16.5 18q3 0 7 -4t4 -6q0 -4 -18 -28t-50 -48.5t-61 -24.5q-14 0 -24.5 9.5t-10.5 23.5q0 12 30.5 105.5t30.5 116.5q0 13 -8 22.5t-20 9.5q-27 0 -55 -33.5t-62 -88.5q-4 -7 -13.5 -22.5l-14.5 -24t-10.5 -20.5t-7.5 -22l-15 -67q-2 -11 -50 -11 q-7 0 -7 8z" />
+<glyph horiz-adv-x="235" d="M30 233q0 7 53 46t73 39q7 0 12.5 -5t5.5 -15q0 -22 -27.5 -124t-27.5 -112q0 -16 10 -16q9 0 36.5 26.5t28.5 26.5q3 0 7 -3.5t4 -6.5q0 -11 -53.5 -53t-71.5 -42q-22 0 -22 16q0 21 30 120.5t30 125.5q0 15 -9 15q-13 0 -40 -24.5t-28 -24.5q-4 0 -7.5 4t-3.5 7z M116 453q0 17 9 28t25 11q17 0 27 -13t10 -28q0 -17 -9.5 -27.5t-24.5 -10.5q-17 0 -27 12.5t-10 27.5z" />
+<glyph horiz-adv-x="239" d="M-61 -183q0 13 8.5 22t21.5 9q15 0 31.5 -10t30.5 -10q15 0 22.5 20.5t17.5 66.5q16 75 35.5 199t19.5 142q0 15 -9 15q-13 0 -47 -37l-34 -37q-3 0 -7 3t-4 7t25 30.5t59.5 53.5t55.5 27q7 0 12.5 -5.5t5.5 -15.5q0 -19 -45 -300q-19 -130 -80 -177q-44 -32 -73 -32 q-21 0 -33.5 9t-12.5 20zM125 478q0 17 10 28t26 11q17 0 26.5 -12.5t9.5 -27.5q0 -17 -9.5 -28.5t-24.5 -11.5q-17 0 -27.5 13t-10.5 28z" />
+<glyph horiz-adv-x="421" d="M35 -4q0 3 17.5 85t40 208.5t32.5 225.5q0 7 -5 7q-14 0 -62 -16q-8 -2 -8 7q0 16 7 18q34 8 64.5 16.5l44 12t16.5 3.5q13 0 13 -10q0 -7 -16.5 -88l-37.5 -183t-26 -128q36 64 57 92q28 36 56 53t70 17q50 0 50 -31q0 -35 -27.5 -65t-56.5 -44t-55 -20q-2 0 -8 -1 t-8 -2q14 -7 22 -14q43 -43 61 -64q14 -17 20.5 -24t18 -13t25.5 -6q27 0 27 21q0 3 -0.5 9t-0.5 8q0 11 6 11q19 0 19 -37q0 -19 -32 -33t-60 -14q-19 0 -37 17q-9 9 -19 20.5t-25 31.5t-21 27l-19.5 23.5l-17 20t-5.5 8.5q0 4 14 18q2 2 10 2q11 0 22 4q31 14 59.5 45 t28.5 58q0 15 -25 15q-23 0 -52 -27q-20 -17 -84 -113q-14 -23 -20 -48q-10 -44 -16 -81q-2 -12 -4 -15.5t-6 -3.5l-18 -3q-19 -2 -24 -2t-5 2z" />
+<glyph horiz-adv-x="252" d="M55 24q0 5 15 88t34.5 201t28.5 193q2 8 0.5 11t-9.5 1q-54 -15 -62 -15q-6 0 -4 17q1 9 9 12q32 7 62 15t43.5 12t15.5 4q9 0 9 -8q0 -10 -41.5 -253t-41.5 -246q0 -17 11 -17q10 0 30 17.5t36 35t17 17.5q3 0 8.5 -4.5t5.5 -6.5q0 -4 -23 -29.5t-58 -51.5t-61 -26 q-25 0 -25 33z" />
+<glyph horiz-adv-x="650" d="M30 211q0 10 57 54t84 44q17 0 17 -16q0 -17 -3 -41.5t-6.5 -44t-10 -53t-9.5 -50.5q93 210 185 210q14 0 22 -11.5t8 -27.5q0 -66 -44 -198q69 129 111 179q51 58 94 58t43 -28q0 -24 -30 -118t-30 -108q0 -19 14 -19q10 0 43 34t34 34q3 0 7 -4t4 -7q0 -4 -24 -28.5 t-57.5 -49t-54.5 -24.5q-13 0 -21.5 7.5t-8.5 17.5q0 15 32 113.5t32 125.5q0 17 -15 17q-32 0 -104 -109q-55 -83 -75 -155q-3 -9 -12 -11q-20 -3 -35 -3q-8 0 -8 7l24 91q24 91 24 148q0 30 -16 30q-19 0 -54.5 -51t-64.5 -108q-17 -32 -35 -98q-5 -14 -9 -16 q-30 -12 -41 -12q-7 0 -5 9q10 39 23 123.5t13 122.5q0 13 -10 13q-12 0 -44 -31t-33 -31q-11 0 -11 15z" />
+<glyph horiz-adv-x="465" d="M30 237q0 2 24.5 22t60.5 40.5t58 20.5q19 0 19 -18q0 -17 -5 -44t-9.5 -46t-15.5 -57.5t-14 -50.5q60 105 110.5 160.5t96.5 55.5q43 0 43 -37q0 -25 -32 -120.5t-32 -104.5q0 -16 15 -16q11 0 28.5 15t31.5 30.5t15 15.5q3 0 7 -3t4 -6q0 -4 -20 -26.5t-53.5 -45 t-60.5 -22.5t-27 34q0 24 33 113t33 114q0 23 -18 23q-21 0 -64.5 -54.5t-83.5 -117.5q-20 -31 -37 -93q0 -1 -1.5 -5.5l-2.5 -7.5t-3.5 -6t-5.5 -3q-26 -3 -40 -3q-7 0 -5 9q49 196 49 258q0 15 -10 15q-11 0 -43 -26.5t-33 -26.5q-4 0 -8 4.5t-4 9.5z" />
+<glyph horiz-adv-x="377" d="M30 114q0 92 54.5 153.5t137.5 61.5q59 0 87 -42t28 -90q0 -78 -56.5 -141.5t-133.5 -63.5q-56 0 -86.5 35.5t-30.5 86.5zM83 121q0 -107 65 -107q37 0 69.5 39t49 88t16.5 89q0 29 -15.5 53.5t-54.5 24.5q-47 0 -88.5 -64.5t-41.5 -122.5z" />
+<glyph horiz-adv-x="432" d="M20 186v1q3 6 9 15.5t24.5 33.5t37 43t43 34t46.5 15q15 0 15 -27q0 -45 -26 -184q32 77 81 152q31 48 83 48q37 0 50.5 -20.5t13.5 -56.5q0 -91 -61.5 -169t-126.5 -78q-9 0 -26.5 3t-20.5 3q-9 0 -10 -6l-27 -172q-2 -18 7 -19l16 -2t13.5 -1t11 -1t9 -1t6.5 -1t5 -2 t3.5 -2t2 -3t0.5 -4q0 -12 -4 -14.5t-14 -2.5q-1 0 -23 3t-56.5 5.5t-65.5 2.5q-14 0 -14 9q0 11 3 15t13 4h13q9 0 12.5 3t5.5 14q64 368 64 427q0 14 -9 14q-17 0 -54 -47l-36 -46q-4 0 -9 5t-5 9zM164 42q0 -25 53 -25q42 0 84.5 73t42.5 140q0 52 -36 52q-12 0 -24.5 -8 t-24 -24.5t-18.5 -28t-17.5 -33.5t-13.5 -27q-46 -85 -46 -119z" />
+<glyph horiz-adv-x="397" d="M30 61q0 30 14.5 72t39.5 83.5t66 70.5t88 29q36 0 72 -17l11 -4q7 0 18.5 7t17.5 9q4 1 7 -1.5t3 -7.5t-22 -51q-4 -8 -6 -21l-31.5 -175.5l-32 -180.5t-11.5 -69q0 -8 11 -8h21q13 0 21 -1q12 -1 12 -15v-3v-6t-1.5 -4t-4 -2.5t-7.5 -0.5q-1 0 -11 0.5t-26.5 1 t-32.5 0.5q-11 0 -28.5 -1.5t-30.5 -3t-14 -1.5q-4 0 -6 0.5t-4 3t-2 7.5q1 11 4 13.5t14 4.5q20 4 22 8q2 3 4 13q46 203 77 378q-26 -54 -66 -109q-63 -87 -115 -87q-8 0 -17.5 2t-22.5 8.5t-22 21t-9 36.5zM85 82q0 -22 11 -35t26 -13q35 0 119 120q53 80 53 109 q0 9 -15.5 21.5t-40.5 12.5q-51 0 -102 -81t-51 -134z" />
+<glyph horiz-adv-x="295" d="M25 240q0 10 42 45t66 35q16 0 16 -18q0 -23 -22 -144h2q2 6 12.5 34.5t19.5 49.5t19 38q25 46 61 46q15 0 27 -8t12 -22q0 -32 -19 -32q-9 0 -23.5 7.5t-22.5 7.5q-11 0 -20 -14q-14 -21 -46 -103q-3 -8 -6 -19t-4 -12q-7 -29 -14.5 -68.5t-11.5 -56.5q-1 -4 -18.5 -7 t-26.5 -3q-10 0 -10 4q0 2 10 53l20.5 109.5t10.5 79.5q0 31 -10 31q-13 0 -34 -21l-21 -22q-9 0 -9 10z" />
+<glyph horiz-adv-x="289" d="M20 50q0 9 7 15.5t13 6.5q17 0 37 -20l10 -10.5t10 -10l8 -6.5t9.5 -5t10.5 -1q25 0 41 16t16 43q0 16 -18.5 35.5t-41 35t-41 38.5t-18.5 47q0 40 32.5 68.5t77.5 28.5q33 0 53 -12.5t24 -23t4 -18.5q0 -15 -16 -15q-24 0 -40 30q-12 21 -26 21q-22 0 -39 -12t-17 -39 q0 -26 19 -47t41 -34t41 -37t19 -55q0 -38 -32.5 -66t-77.5 -28q-38 0 -72 17.5t-34 37.5z" />
+<glyph horiz-adv-x="256" d="M35 287q0 1 0.5 7t0.5 8q0 6 8 6h50q7 0 8 6q2 10 6.5 44.5t5.5 38.5q1 5 2.5 8t4.5 4.5t10 2.5q4 1 17 1q25 0 25 -5q0 -1 -4.5 -20.5l-9.5 -42.5t-6 -29t0 -7t7 -1h60q9 0 9 -7q0 -19 -12 -19h-60h-3q-5 0 -6 -4q-1 -2 -1 -3q-35 -191 -35 -205q0 -16 15 -16 q11 0 51 37l40 37q2 0 7.5 -4t5.5 -6q0 -4 -26.5 -33t-64.5 -58.5t-60 -29.5q-30 0 -30 30q0 8 22 126.5t22 120.5q-5 8 -6 8h-40q-13 0 -13 5z" />
+<glyph horiz-adv-x="445" d="M25 212q0 2 10 16t26.5 34t31.5 36q26 26 59 26q47 0 47 -30q0 -11 -26.5 -110t-26.5 -120q0 -19 22 -19q27 0 73 65q59 82 84 164q1 3 10 45q1 5 45 10q8 0 8 -9q0 -4 -22.5 -120.5t-22.5 -125.5q0 -20 15 -20q12 0 40 37l29 37q8 0 8 -7q0 -5 -18.5 -34t-48 -58.5 t-51.5 -29.5q-12 0 -20.5 7t-8.5 17q0 18 18.5 99.5t21.5 102.5q-23 -48 -55 -98q-88 -132 -145 -132q-46 0 -46 36q0 9 25 104t25 126q0 23 -16 23q-12 0 -45 -40l-33 -41q-4 0 -8.5 3t-4.5 6z" />
+<glyph horiz-adv-x="396" d="M30 247q0 10 37.5 44t57.5 34q23 0 36 -8q20 -11 26.5 -18t6.5 -20q0 -32 -11 -108t-11 -88q0 -9 12 -19t16 -10q12 0 20 9q6 7 26 33q83 111 83 178q0 32 -19 32q-9 0 -20.5 -2t-19.5 -4t-9 -2q-6 0 -6 15q0 5 32 12.5t50 7.5q34 0 34 -35q0 -14 -2.5 -28t-8.5 -29.5 l-11 -27.5t-16.5 -30.5l-17 -28t-21 -30.5l-21 -28l-23 -29.5l-21.5 -27.5q-9 -12 -19 -28t-21 -16q-17 0 -36 17q-19 14 -26 27t-7 41q0 15 8.5 85.5t8.5 98.5q0 14 -7 18q-10 7 -19 7q-12 0 -27.5 -13.5t-26.5 -27t-12 -13.5q-4 0 -9.5 4.5t-5.5 7.5z" />
+<glyph horiz-adv-x="589" d="M25 250q0 9 41.5 39.5t61.5 30.5q14 0 38 -15q27 -18 27 -39q0 -25 -5.5 -70t-10.5 -80.5t-5 -36.5q0 -10 10 -22t16 -12q8 0 19 15q8 11 39.5 57.5t40.5 57.5q10 12 19 38.5t9 37.5q0 9 -16 25q-5 5 -11.5 10l-9 7t-2.5 4q0 8 11.5 19.5t20.5 11.5q14 0 37.5 -19.5 t23.5 -31.5q0 -13 -12.5 -97.5t-12.5 -100.5q0 -13 11 -24t20 -11q7 0 24 21q49 56 73 91q36 52 37 116q0 26 -17 26q-9 0 -24.5 -2t-27.5 -4.5t-13 -2.5q-6 0 -6 14q0 5 45 14.5t53 9.5q35 0 35 -33q0 -58 -57 -143q-10 -15 -21 -29t-26 -31.5t-22 -25l-27 -29t-24 -25.5 q-9 -9 -15 -9q-29 0 -49 19.5t-20 45.5q0 19 23 122q-70 -108 -101 -147q-3 -4 -11 -15.5t-11 -15.5q-10 -13 -18 -13q-13 0 -35 19q-19 14 -24.5 23.5t-5.5 30.5q0 11 9.5 70t9.5 105q0 10 -12.5 24t-22.5 14q-12 0 -27.5 -12t-26.5 -24t-12 -12q-5 0 -9 5.5t-4 8.5z" />
+<glyph horiz-adv-x="413" d="M25 19q0 28 22 76q3 4 7 4q13 0 13 -7l-5 -14q-4 -13 -4 -24q0 -18 17 -18q18 0 54 39t61 73q4 7 1 17q-44 122 -82 122q-15 0 -37.5 -24t-24.5 -24q-3 0 -6.5 4.5t-3.5 7.5q0 4 12.5 20.5t37 33.5t49.5 17q19 0 31.5 -5t23.5 -22t16.5 -28.5t17.5 -43.5q5 -12 7 -18 l4 -6l5 8q3 4 18 28.5t23 35t22 27t28 24t28 7.5q21 0 21 -34q0 -17 -5 -47q-1 -4 -9 -4t-8 4q0 5 0.5 14t0.5 13q0 20 -13 20q-26 0 -100 -110q-5 -8 -2 -16q44 -125 72 -125q14 0 33 27l19 27q14 0 14 -7q0 -16 -32.5 -55.5t-60.5 -39.5q-10 0 -18 3t-15 11.5t-12 15.5 t-11 22t-9 24t-10 28.5t-10 29.5q-2 1 -2.5 1t-4.5 -4q-2 -3 -36 -46.5t-59 -64t-49 -20.5q-29 0 -29 23z" />
+<glyph horiz-adv-x="376" d="M0 -217q0 9 3.5 16t11 11.5t14 7t17.5 5.5t16 5q28 11 44 40q49 90 49 146q0 100 -12.5 182t-44.5 82q-14 0 -29.5 -12.5t-25.5 -25t-12 -12.5q-12 0 -12 8q0 4 14 22.5t40 38.5t51 20t40 -14.5t23 -56.5t10.5 -69t5.5 -100q1 -25 2 -38q2 4 22.5 41t28 52t20.5 44.5 t20 52.5q9 29 15 83q1 15 10 15q10 0 20 -6t10 -16q0 -4 -2 -14q-2 -16 -11.5 -40.5t-22 -51.5t-27 -55l-29.5 -54.5l-26.5 -46.5l-20.5 -35l-9 -15l-23 -43.5l-37 -69l-34 -60.5q-12 -19 -32 -31q-47 -29 -61 -29q-7 0 -11.5 7.5t-4.5 15.5z" />
+<glyph horiz-adv-x="353" d="M30 2q0 5 3 11t6.5 9.5t9 9.5t7.5 8l197 220l2 4q-8 -2 -13 -2q-19 0 -63 13.5t-56 13.5q-13 0 -25.5 -10t-20.5 -20t-9 -10q-12 0 -12 7q0 4 11.5 20.5t32.5 34.5t41 18q19 0 70 -18t67 -18q6 0 18 15t23 15q6 0 10 -4.5t4 -10.5q0 -10 -9 -18t-22 -14.5t-17 -10.5 l-183 -202q-4 -4 -4 -6t12 -2q30 -2 96 -7t83 -5q7 0 9.5 3t2.5 11l-1 11v12q0 7 9 7t9 -6q7 -68 7 -71q0 -13 -31 -13h-5q-19 0 -104.5 7t-120.5 7q-3 0 -9.5 -10t-13.5 -10q-11 0 -11 11z" />
+<glyph horiz-adv-x="201" d="M30 205q0 53 15 103t36 83t43.5 58.5t36.5 37.5t16 12q5 0 9.5 -3t4.5 -7l-7 -7q-6 -6 -16 -17.5t-22 -28t-24 -39.5t-22 -49.5t-16.5 -61.5t-6.5 -72q0 -57 11.5 -109t27.5 -85.5t32 -58t27.5 -38.5t11.5 -16q0 -10 -13 -10q-3 0 -18 15.5t-36.5 45.5t-41.5 66.5t-34 85 t-14 95.5z" />
+<glyph horiz-adv-x="201" d="M10 -94l6 6q7 7 17 18.5t22 28t24 40t22 50t16.5 61.5t6.5 72q0 57 -11.5 108.5t-28 85t-32.5 58.5t-27.5 38.5t-11.5 15.5q0 11 14 11q3 0 18 -15.5t36.5 -45.5t41.5 -67t34 -85.5t14 -95.5q0 -53 -15 -103t-36.5 -83t-43.5 -58t-36.5 -37t-16.5 -12q-13 0 -13 9z" />
+<glyph horiz-adv-x="201" d="M30 455q0 53 15 103t36 83t43.5 58.5t36.5 37.5t16 12q5 0 9.5 -3t4.5 -7l-7 -7q-6 -6 -16 -17.5t-22 -28t-24 -39.5t-22 -49.5t-16.5 -61.5t-6.5 -72q0 -57 11.5 -109t27.5 -85.5t32 -58t27.5 -38.5t11.5 -16q0 -10 -13 -10q-3 0 -18 15.5t-36.5 45.5t-41.5 66.5t-34 85 t-14 95.5z" />
+<glyph horiz-adv-x="201" d="M10 156l6 6q7 7 17 18.5t22 28t24 40t22 50t16.5 61.5t6.5 72q0 57 -11.5 108.5t-28 85t-32.5 58.5t-27.5 38.5t-11.5 15.5q0 11 14 11q3 0 18 -15.5t36.5 -45.5t41.5 -67t34 -85.5t14 -95.5q0 -53 -15 -103t-36.5 -83t-43.5 -58t-36.5 -37t-16.5 -12q-13 0 -13 9z" />
+<glyph horiz-adv-x="201" d="M30 55q0 53 15 103t36 83t43.5 58.5t36.5 37.5t16 12q5 0 9.5 -3t4.5 -7l-7 -7q-6 -6 -16 -17.5t-22 -28t-24 -39.5t-22 -49.5t-16.5 -61.5t-6.5 -72q0 -57 11.5 -109t27.5 -85.5t32 -58t27.5 -38.5t11.5 -16q0 -10 -13 -10q-3 0 -18 15.5t-36.5 45.5t-41.5 66.5t-34 85 t-14 95.5z" />
+<glyph horiz-adv-x="201" d="M10 -244l6 6q7 7 17 18.5t22 28t24 40t22 50t16.5 61.5t6.5 72q0 57 -11.5 108.5t-28 85t-32.5 58.5t-27.5 38.5t-11.5 15.5q0 11 14 11q3 0 18 -15.5t36.5 -45.5t41.5 -67t34 -85.5t14 -95.5q0 -53 -15 -103t-36.5 -83t-43.5 -58t-36.5 -37t-16.5 -12q-13 0 -13 9z" />
+<glyph horiz-adv-x="201" d="M30 555q0 53 15 103t36 83t43.5 58.5t36.5 37.5t16 12q5 0 9.5 -3t4.5 -7l-7 -7q-6 -6 -16 -17.5t-22 -28t-24 -39.5t-22 -49.5t-16.5 -61.5t-6.5 -72q0 -57 11.5 -109t27.5 -85.5t32 -58t27.5 -38.5t11.5 -16q0 -10 -13 -10q-3 0 -18 15.5t-36.5 45.5t-41.5 66.5t-34 85 t-14 95.5z" />
+<glyph horiz-adv-x="201" d="M10 256l6 6q7 7 17 18.5t22 28t24 40t22 50t16.5 61.5t6.5 72q0 57 -11.5 108.5t-28 85t-32.5 58.5t-27.5 38.5t-11.5 15.5q0 11 14 11q3 0 18 -15.5t36.5 -45.5t41.5 -67t34 -85.5t14 -95.5q0 -53 -15 -103t-36.5 -83t-43.5 -58t-36.5 -37t-16.5 -12q-13 0 -13 9z" />
+<glyph horiz-adv-x="246" d="M90 -95v583q0 11 11 11h124q7 0 9 -1.5t2 -6.5v-12q0 -8 -2 -9.5t-9 -1.5h-84q-7 0 -8.5 -1.5t-1.5 -7.5v-526q0 -4 0.5 -5.5t2.5 -2.5t7 -1h84q5 0 7 -0.5t3 -2.5t1 -7v-11q0 -6 -2 -7.5t-9 -1.5h-124q-8 0 -9.5 1.5t-1.5 9.5z" />
+<glyph horiz-adv-x="246" d="M10 -86q0 7 1.5 8.5t8.5 1.5h84q7 0 9 1.5t2 7.5v526q0 6 -2 7.5t-9 1.5h-84q-7 0 -8.5 1.5t-1.5 9.5v11q0 4 0.5 5.5t2.5 2.5t7 1h124q8 0 10 -1.5t2 -9.5v-583q0 -11 -11 -11h-125q-8 0 -9 1t-1 6v13z" />
+<glyph horiz-adv-x="246" d="M90 155v583q0 11 11 11h124q7 0 9 -1.5t2 -6.5v-12q0 -8 -2 -9.5t-9 -1.5h-84q-7 0 -8.5 -1.5t-1.5 -7.5v-526q0 -4 0.5 -5.5t2.5 -2.5t7 -1h84q5 0 7 -0.5t3 -2.5t1 -7v-11q0 -6 -2 -7.5t-9 -1.5h-124q-8 0 -9.5 1.5t-1.5 9.5z" />
+<glyph horiz-adv-x="246" d="M10 164q0 7 1.5 8.5t8.5 1.5h84q7 0 9 1.5t2 7.5v526q0 6 -2 7.5t-9 1.5h-84q-7 0 -8.5 1.5t-1.5 9.5v11q0 4 0.5 5.5t2.5 2.5t7 1h124q8 0 10 -1.5t2 -9.5v-583q0 -11 -11 -11h-125q-8 0 -9 1t-1 6v13z" />
+<glyph horiz-adv-x="246" d="M90 -245v583q0 11 11 11h124q7 0 9 -1.5t2 -6.5v-12q0 -8 -2 -9.5t-9 -1.5h-84q-7 0 -8.5 -1.5t-1.5 -7.5v-526q0 -4 0.5 -5.5t2.5 -2.5t7 -1h84q5 0 7 -0.5t3 -2.5t1 -7v-11q0 -6 -2 -7.5t-9 -1.5h-124q-8 0 -9.5 1.5t-1.5 9.5z" />
+<glyph horiz-adv-x="246" d="M10 -236q0 7 1.5 8.5t8.5 1.5h84q7 0 9 1.5t2 7.5v526q0 6 -2 7.5t-9 1.5h-84q-7 0 -8.5 1.5t-1.5 9.5v11q0 4 0.5 5.5t2.5 2.5t7 1h124q8 0 10 -1.5t2 -9.5v-583q0 -11 -11 -11h-125q-8 0 -9 1t-1 6v13z" />
+<glyph horiz-adv-x="246" d="M90 255v583q0 11 11 11h124q7 0 9 -1.5t2 -6.5v-12q0 -8 -2 -9.5t-9 -1.5h-84q-7 0 -8.5 -1.5t-1.5 -7.5v-526q0 -4 0.5 -5.5t2.5 -2.5t7 -1h84q5 0 7 -0.5t3 -2.5t1 -7v-11q0 -6 -2 -7.5t-9 -1.5h-124q-8 0 -9.5 1.5t-1.5 9.5z" />
+<glyph horiz-adv-x="246" d="M10 264q0 7 1.5 8.5t8.5 1.5h84q7 0 9 1.5t2 7.5v526q0 6 -2 7.5t-9 1.5h-84q-7 0 -8.5 1.5t-1.5 9.5v11q0 4 0.5 5.5t2.5 2.5t7 1h124q8 0 10 -1.5t2 -9.5v-583q0 -11 -11 -11h-125q-8 0 -9 1t-1 6v13z" />
+<glyph horiz-adv-x="186" d="M0 -109q0 1 5 5l15 11.5t18 15.5q41 41 41 69q0 14 -13 30q-5 7 -14 16t-14 14.5t-5 7.5q0 5 17.5 14.5t28.5 9.5t30 -20.5t19 -48.5q0 -24 -28 -59.5t-55 -59t-30 -23.5q-4 0 -9.5 6.5t-5.5 11.5z" />
+<glyph horiz-adv-x="152" d="M25 33q0 17 14.5 32t27.5 15q12 0 26 -14.5t14 -27.5q0 -21 -13 -33.5t-23 -12.5q-17 0 -31.5 14.5t-14.5 26.5z" />
+<glyph horiz-adv-x="186" d="M0 141q0 1 5 5l15 11.5t18 15.5q41 41 41 69q0 14 -13 30q-5 7 -14 16t-14 14.5t-5 7.5q0 5 17.5 14.5t28.5 9.5t30 -20.5t19 -48.5q0 -24 -28 -59.5t-55 -59t-30 -23.5q-4 0 -9.5 6.5t-5.5 11.5z" />
+<glyph horiz-adv-x="152" d="M25 283q0 17 14.5 32t27.5 15q12 0 26 -14.5t14 -27.5q0 -21 -13 -33.5t-23 -12.5q-17 0 -31.5 14.5t-14.5 26.5z" />
+<glyph horiz-adv-x="186" d="M0 -259q0 1 5 5l15 11.5t18 15.5q41 41 41 69q0 14 -13 30q-5 7 -14 16t-14 14.5t-5 7.5q0 5 17.5 14.5t28.5 9.5t30 -20.5t19 -48.5q0 -24 -28 -59.5t-55 -59t-30 -23.5q-4 0 -9.5 6.5t-5.5 11.5z" />
+<glyph horiz-adv-x="152" d="M25 -117q0 17 14.5 32t27.5 15q12 0 26 -14.5t14 -27.5q0 -21 -13 -33.5t-23 -12.5q-17 0 -31.5 14.5t-14.5 26.5z" />
+<glyph horiz-adv-x="186" d="M0 241q0 1 5 5l15 11.5t18 15.5q41 41 41 69q0 14 -13 30q-5 7 -14 16t-14 14.5t-5 7.5q0 5 17.5 14.5t28.5 9.5t30 -20.5t19 -48.5q0 -24 -28 -59.5t-55 -59t-30 -23.5q-4 0 -9.5 6.5t-5.5 11.5z" />
+<glyph horiz-adv-x="152" d="M25 383q0 17 14.5 32t27.5 15q12 0 26 -14.5t14 -27.5q0 -21 -13 -33.5t-23 -12.5q-17 0 -31.5 14.5t-14.5 26.5z" />
+<glyph horiz-adv-x="223" d="M20 168q0 11 5 23.5t11 13.5q5 1 82 3.5t83 2.5q2 0 2 -8q0 -30 -7 -30q-96 -8 -172 -8q-4 0 -4 3z" />
+<glyph horiz-adv-x="223" d="M20 418q0 11 5 23.5t11 13.5q5 1 82 3.5t83 2.5q2 0 2 -8q0 -30 -7 -30q-96 -8 -172 -8q-4 0 -4 3z" />
+<glyph horiz-adv-x="223" d="M20 18q0 11 5 23.5t11 13.5q5 1 82 3.5t83 2.5q2 0 2 -8q0 -30 -7 -30q-96 -8 -172 -8q-4 0 -4 3z" />
+<glyph horiz-adv-x="223" d="M20 518q0 11 5 23.5t11 13.5q5 1 82 3.5t83 2.5q2 0 2 -8q0 -30 -7 -30q-96 -8 -172 -8q-4 0 -4 3z" />
+<glyph horiz-adv-x="350" d="M37 58q0 9 9.5 13.5t17.5 4.5q4 0 7 -2.5t5 -5t5.5 -8.5t5.5 -9q21 -30 55 -32q4 0 4.5 0.5t0.5 4.5l14 152q1 9 -6 12q-22 11 -34.5 18.5t-29 20.5t-24 30t-7.5 38q0 46 35 77.5t82 36.5q4 0 4 4l3 34q1 10 10 10h6q9 0 7 -10l-3 -33q0 -4 2 -4q39 -3 63.5 -24t24.5 -41 q0 -10 -10 -16.5t-17 -6.5q-8 0 -10 9.5t-2.5 21t-12 22.5t-36.5 13q-5 0 -5 -3l-13 -150q-1 -9 2 -10q2 0 3 -1q23 -11 35 -18t29 -20.5t25 -30t8 -37.5q0 -52 -31.5 -84t-84.5 -37q-5 0 -6 -0.5t-1 -4.5l-7 -80q-1 -11 -12 -11t-10 11l7 80q0 4 -0.5 4.5t-5.5 0.5 q-41 3 -71.5 21t-30.5 40zM105 302q0 -24 15 -38t43 -27q2 -1 2.5 -0.5t0.5 4.5l13 144q0 3 -6 2q-16 -3 -27 -11q-41 -23 -41 -74zM170 27q-1 -6 1.5 -7t7.5 1q28 8 46.5 31t18.5 51q0 40 -57 70l-4 -1z" />
+<glyph horiz-adv-x="350" d="M37 308q0 9 9.5 13.5t17.5 4.5q4 0 7 -2.5t5 -5t5.5 -8.5t5.5 -9q21 -30 55 -32q4 0 4.5 0.5t0.5 4.5l14 152q1 9 -6 12q-22 11 -34.5 18.5t-29 20.5t-24 30t-7.5 38q0 46 35 77.5t82 36.5q4 0 4 4l3 34q1 10 10 10h6q9 0 7 -10l-3 -33q0 -4 2 -4q39 -3 63.5 -24 t24.5 -41q0 -10 -10 -16.5t-17 -6.5q-8 0 -10 9.5t-2.5 21t-12 22.5t-36.5 13q-5 0 -5 -3l-13 -150q-1 -9 2 -10q2 0 3 -1q23 -11 35 -18t29 -20.5t25 -30t8 -37.5q0 -52 -31.5 -84t-84.5 -37q-5 0 -6 -0.5t-1 -4.5l-7 -80q-1 -11 -12 -11t-10 11l7 80q0 4 -0.5 4.5 t-5.5 0.5q-41 3 -71.5 21t-30.5 40zM105 552q0 -24 15 -38t43 -27q2 -1 2.5 -0.5t0.5 4.5l13 144q0 3 -6 2q-16 -3 -27 -11q-41 -23 -41 -74zM170 277q-1 -6 1.5 -7t7.5 1q28 8 46.5 31t18.5 51q0 40 -57 70l-4 -1z" />
+<glyph horiz-adv-x="350" d="M37 -92q0 9 9.5 13.5t17.5 4.5q4 0 7 -2.5t5 -5t5.5 -8.5t5.5 -9q21 -30 55 -32q4 0 4.5 0.5t0.5 4.5l14 152q1 9 -6 12q-22 11 -34.5 18.5t-29 20.5t-24 30t-7.5 38q0 46 35 77.5t82 36.5q4 0 4 4l3 34q1 10 10 10h6q9 0 7 -10l-3 -33q0 -4 2 -4q39 -3 63.5 -24 t24.5 -41q0 -10 -10 -16.5t-17 -6.5q-8 0 -10 9.5t-2.5 21t-12 22.5t-36.5 13q-5 0 -5 -3l-13 -150q-1 -9 2 -10q2 0 3 -1q23 -11 35 -18t29 -20.5t25 -30t8 -37.5q0 -52 -31.5 -84t-84.5 -37q-5 0 -6 -0.5t-1 -4.5l-7 -80q-1 -11 -12 -11t-10 11l7 80q0 4 -0.5 4.5 t-5.5 0.5q-41 3 -71.5 21t-30.5 40zM105 152q0 -24 15 -38t43 -27q2 -1 2.5 -0.5t0.5 4.5l13 144q0 3 -6 2q-16 -3 -27 -11q-41 -23 -41 -74zM170 -123q-1 -6 1.5 -7t7.5 1q28 8 46.5 31t18.5 51q0 40 -57 70l-4 -1z" />
+<glyph horiz-adv-x="350" d="M37 408q0 9 9.5 13.5t17.5 4.5q4 0 7 -2.5t5 -5t5.5 -8.5t5.5 -9q21 -30 55 -32q4 0 4.5 0.5t0.5 4.5l14 152q1 9 -6 12q-22 11 -34.5 18.5t-29 20.5t-24 30t-7.5 38q0 46 35 77.5t82 36.5q4 0 4 4l3 34q1 10 10 10h6q9 0 7 -10l-3 -33q0 -4 2 -4q39 -3 63.5 -24 t24.5 -41q0 -10 -10 -16.5t-17 -6.5q-8 0 -10 9.5t-2.5 21t-12 22.5t-36.5 13q-5 0 -5 -3l-13 -150q-1 -9 2 -10q2 0 3 -1q23 -11 35 -18t29 -20.5t25 -30t8 -37.5q0 -52 -31.5 -84t-84.5 -37q-5 0 -6 -0.5t-1 -4.5l-7 -80q-1 -11 -12 -11t-10 11l7 80q0 4 -0.5 4.5 t-5.5 0.5q-41 3 -71.5 21t-30.5 40zM105 652q0 -24 15 -38t43 -27q2 -1 2.5 -0.5t0.5 4.5l13 144q0 3 -6 2q-16 -3 -27 -11q-41 -23 -41 -74zM170 377q-1 -6 1.5 -7t7.5 1q28 8 46.5 31t18.5 51q0 40 -57 70l-4 -1z" />
+<glyph d="M60 114q0 74 44.5 121.5t98.5 51.5q5 0 7 10q2 11 4 24t3.5 21t2.5 11q0 2 3 2h7q6 0 6 -2l-11 -56q-2 -10 8 -11q23 -5 39.5 -22.5t16.5 -38.5q0 -13 -8 -18q-14 -10 -22 -10q-7 0 -9 6q0 4 -1 12l-1.5 12t-1.5 11t-2.5 10.5l-3.5 8t-5 7.5t-7 4q-6 2 -8 -6l-38 -224 q0 -8 2 -9q4 -3 23 -3q17 1 33.5 7t25.5 11l9 6q5 0 5 -6q0 -1 -7 -8q-41 -41 -92 -41q-8 0 -9 -8q-13 -69 -16 -79h-14q3 18 14 78q3 11 -6 12q-42 9 -66 40t-24 76zM107 135q0 -72 50 -99q1 -1 4 -1q4 0 4 5l38 219q0 9 -5 9q-38 -3 -64.5 -45t-26.5 -88z" />
+<glyph d="M60 364q0 74 44.5 121.5t98.5 51.5q5 0 7 10q2 11 4 24t3.5 21t2.5 11q0 2 3 2h7q6 0 6 -2l-11 -56q-2 -10 8 -11q23 -5 39.5 -22.5t16.5 -38.5q0 -13 -8 -18q-14 -10 -22 -10q-7 0 -9 6q0 4 -1 12l-1.5 12t-1.5 11t-2.5 10.5l-3.5 8t-5 7.5t-7 4q-6 2 -8 -6l-38 -224 q0 -8 2 -9q4 -3 23 -3q17 1 33.5 7t25.5 11l9 6q5 0 5 -6q0 -1 -7 -8q-41 -41 -92 -41q-8 0 -9 -8q-13 -69 -16 -79h-14q3 18 14 78q3 11 -6 12q-42 9 -66 40t-24 76zM107 385q0 -72 50 -99q1 -1 4 -1q4 0 4 5l38 219q0 9 -5 9q-38 -3 -64.5 -45t-26.5 -88z" />
+<glyph d="M60 -36q0 74 44.5 121.5t98.5 51.5q5 0 7 10q2 11 4 24t3.5 21t2.5 11q0 2 3 2h7q6 0 6 -2l-11 -56q-2 -10 8 -11q23 -5 39.5 -22.5t16.5 -38.5q0 -13 -8 -18q-14 -10 -22 -10q-7 0 -9 6q0 4 -1 12l-1.5 12t-1.5 11t-2.5 10.5l-3.5 8t-5 7.5t-7 4q-6 2 -8 -6l-38 -224 q0 -8 2 -9q4 -3 23 -3q17 1 33.5 7t25.5 11l9 6q5 0 5 -6q0 -1 -7 -8q-41 -41 -92 -41q-8 0 -9 -8q-13 -69 -16 -79h-14q3 18 14 78q3 11 -6 12q-42 9 -66 40t-24 76zM107 -15q0 -72 50 -99q1 -1 4 -1q4 0 4 5l38 219q0 9 -5 9q-38 -3 -64.5 -45t-26.5 -88z" />
+<glyph d="M60 464q0 74 44.5 121.5t98.5 51.5q5 0 7 10q2 11 4 24t3.5 21t2.5 11q0 2 3 2h7q6 0 6 -2l-11 -56q-2 -10 8 -11q23 -5 39.5 -22.5t16.5 -38.5q0 -13 -8 -18q-14 -10 -22 -10q-7 0 -9 6q0 4 -1 12l-1.5 12t-1.5 11t-2.5 10.5l-3.5 8t-5 7.5t-7 4q-6 2 -8 -6l-38 -224 q0 -8 2 -9q4 -3 23 -3q17 1 33.5 7t25.5 11l9 6q5 0 5 -6q0 -1 -7 -8q-41 -41 -92 -41q-8 0 -9 -8q-13 -69 -16 -79h-14q3 18 14 78q3 11 -6 12q-42 9 -66 40t-24 76zM107 485q0 -72 50 -99q1 -1 4 -1q4 0 4 5l38 219q0 9 -5 9q-38 -3 -64.5 -45t-26.5 -88z" />
+<glyph horiz-adv-x="379" d="M30 299q0 38 12.5 83.5t35 88.5t60.5 71.5t83 28.5q28 0 45 -25q3 -4 6.5 -10t6 -9.5t3.5 -3.5q2 2 7 17.5t5 18.5q4 10 34 10q14 0 14 -6q0 -3 -33.5 -121.5t-33.5 -139.5q0 -16 11 -16q7 0 29.5 23.5t23.5 23.5q3 0 6.5 -4t3.5 -9q0 -3 -18.5 -22t-45 -38.5 t-42.5 -19.5q-23 0 -23 21q0 26 44 167q-46 -80 -100 -135q-40 -40 -59 -48q-10 -4 -22 -4q-26 0 -39.5 16.5t-13.5 41.5zM85 330q0 -44 23 -44q21 0 68 52t81 107q12 18 12 44q0 21 -23 34t-45 13q-39 0 -77.5 -75t-38.5 -131z" />
+<glyph horiz-adv-x="408" d="M45 260q0 4 2 7.5t5 7.5l4 4q2 2 5 16q24 132 48 290t24 180q0 5 -5 5q-2 0 -33 -9t-34 -9q-8 0 -8 22q0 9 4 10q119 31 132 31q11 0 11 -9q0 -5 -14.5 -96.5t-19.5 -116.5q-27 -155 -38 -203q39 67 69 106q31 42 54.5 58.5t61.5 16.5q65 0 65 -54q0 -111 -76.5 -193 t-140.5 -82q-17 0 -32.5 6t-24.5 12t-11 6q-1 0 -3.5 -1t-6 -3t-6.5 -3q-14 -7 -23 -7t-9 8zM115 316q0 -20 14 -34t41 -14q34 0 70.5 42t57.5 92t21 81q0 48 -34 48q-35 0 -69 -48q-101 -139 -101 -167z" />
+<glyph horiz-adv-x="357" d="M35 356q0 95 59 156.5t125 61.5q41 0 65 -20t24 -53q0 -18 -10 -29.5t-26 -11.5q-19 0 -19 31q0 3 0.5 10t0.5 10q0 16 -9.5 27.5t-28.5 11.5q-50 0 -87 -55q-38 -56 -38 -126q0 -14 1.5 -23.5t8.5 -26t26.5 -26t49.5 -9.5q32 0 63.5 16t50.5 32t20 16q3 0 7 -4t4 -8 q0 -5 -25 -27t-68 -45t-80 -23q-61 0 -87.5 33.5t-26.5 81.5z" />
+<glyph horiz-adv-x="424" d="M35 311q0 28 12 69t33.5 83t57.5 71.5t77 29.5q15 0 28.5 -2.5t20.5 -5.5t15 -7t9 -4q8 -3 9.5 -2t3.5 10q5 25 12 75.5l12.5 89t5.5 39.5q4 12 -2 12q-1 0 -36.5 -8.5t-37.5 -8.5q-6 0 -3 18q1 10 9 13q32 7 63 14.5t46 11.5t16 4q10 0 10 -13q0 -3 -41.5 -239.5 t-41.5 -261.5q0 -11 10 -11q11 0 29 15t32.5 30t15.5 15q9 0 9 -7q0 -5 -18 -27.5t-51 -46.5t-63 -24q-10 0 -17 8.5t-7 22.5q0 28 33 165q-42 -72 -71 -109q-22 -29 -34 -42.5t-34.5 -27.5t-46.5 -14q-8 0 -16 1.5t-20.5 7t-20.5 20t-8 36.5zM92 335q0 -24 8 -35t28 -11 q35 0 115 115q46 69 46 97q0 11 -24 27.5t-50 16.5q-34 0 -64 -40.5t-44.5 -88t-14.5 -81.5z" />
+<glyph horiz-adv-x="357" d="M35 337q0 95 61 166t143 71q78 0 78 -55q0 -36 -29.5 -64t-73.5 -45q-55 -20 -117 -20q-5 0 -5 -38q0 -72 78 -72q34 0 67.5 18t52.5 35.5t20 17.5q3 0 7.5 -4.5t4.5 -6.5q0 -4 -23.5 -26t-69 -45.5t-89.5 -23.5q-46 0 -75.5 23t-29.5 69zM104 415q0 -4 7 -4 q62 0 106 29.5t44 79.5q0 15 -11 23.5t-29 8.5q-68 0 -106 -99q-11 -29 -11 -38z" />
+<glyph horiz-adv-x="250" d="M-92 51q0 12 14 23.5t27 11.5q10 0 31 -9.5t36 -9.5q8 0 14.5 5t11 15.5l8.5 20.5t7 26l5 26t4 25.5t3 20.5q9 54 19.5 133t17 132.5t6.5 56.5q0 8 -6 8h-59q-7 0 -7 7q0 4 2 10q1 5 7 5h57q4 0 5.5 0.5t3 2.5t1.5 7q9 80 36 130q37 67 84 94q37 22 77 22q21 0 41 -10 t20 -20q0 -12 -16.5 -24t-29.5 -12q-11 0 -31.5 15.5t-35.5 15.5q-61 0 -91 -216q0 -5 6 -5h69q5 0 5 -2q0 -20 -8 -20h-68h-2q-3 0 -4 -3l-0.5 -2t-0.5 -3t-19 -133.5t-29 -188.5q-3 -17 -9 -38t-25 -58t-44 -55q-48 -35 -76 -35q-20 0 -38.5 10.5t-18.5 20.5z" />
+<glyph horiz-adv-x="377" d="M4 120q0 33 25 56.5t52 35.5q9 4 9 5t-2 2t-6 2.5t-7 3.5q-21 14 -21 28q0 6 14.5 29.5t22.5 26.5l51 18l4 2q0 1 -5 2q-82 27 -82 109q0 59 43 100t105 41q12 0 24 -2.5t20 -6.5t15.5 -8.5t11.5 -8.5t8 -7l4 -4q2 2 11.5 22.5t11.5 23.5q5 9 18 9q23 0 23 -10 t-9.5 -27.5t-19.5 -31.5t-10 -15q0 -2 1 -5q2 -4 2 -6q6 -22 6 -33q0 -60 -44 -101q-22 -20 -42.5 -28.5t-62.5 -20.5q-77 -21 -77 -38q0 -4 2.5 -7t8 -6t11 -5t15 -4.5t18 -4l20.5 -3.5l21 -3.5t22.5 -4t22.5 -3.5q53 -8 81 -25t28 -55q0 -63 -56 -92t-145 -29 q-143 0 -143 79zM41 125q0 -32 44 -44.5t95 -12.5q52 0 84 18t32 54q0 25 -22 37t-64 19q-84 15 -90 15q-4 0 -26 -10q-53 -27 -53 -76zM112 439q0 -49 20.5 -70.5t41.5 -21.5q33 0 65 39t32 94q0 30 -19 55t-46 25q-41 0 -67.5 -40t-26.5 -81z" />
+<glyph horiz-adv-x="431" d="M40 255q0 2 5.5 27.5t14.5 72.5l19.5 105.5t22 139.5t19.5 162q2 15 -3 15q-8 0 -39.5 -11.5t-32.5 -11.5q-3 0 -3 13q0 10 6 14q24 9 69 18.5t61 9.5q6 0 6 -13q-4 -75 -76 -436q39 89 92 152q46 56 105 56q50 0 50 -41q0 -31 -27.5 -122.5t-27.5 -99.5q0 -17 15 -17 q9 0 28 18t34.5 36t16.5 18q3 0 7 -4t4 -6q0 -4 -18 -28t-50 -48.5t-61 -24.5q-14 0 -24.5 9.5t-10.5 23.5q0 12 30.5 105.5t30.5 116.5q0 13 -8 22.5t-20 9.5q-27 0 -55 -33.5t-62 -88.5q-4 -7 -13.5 -22.5l-14.5 -24t-10.5 -20.5t-7.5 -22l-15 -67q-2 -11 -50 -11 q-7 0 -7 8z" />
+<glyph horiz-adv-x="235" d="M30 483q0 7 53 46t73 39q7 0 12.5 -5t5.5 -15q0 -22 -27.5 -124t-27.5 -112q0 -16 10 -16q9 0 36.5 26.5t28.5 26.5q3 0 7 -3.5t4 -6.5q0 -11 -53.5 -53t-71.5 -42q-22 0 -22 16q0 21 30 120.5t30 125.5q0 15 -9 15q-13 0 -40 -24.5t-28 -24.5q-4 0 -7.5 4t-3.5 7z M116 703q0 17 9 28t25 11q17 0 27 -13t10 -28q0 -17 -9.5 -27.5t-24.5 -10.5q-17 0 -27 12.5t-10 27.5z" />
+<glyph horiz-adv-x="239" d="M-61 67q0 13 8.5 22t21.5 9q15 0 31.5 -10t30.5 -10q15 0 22.5 20.5t17.5 66.5q16 75 35.5 199t19.5 142q0 15 -9 15q-13 0 -47 -37l-34 -37q-3 0 -7 3t-4 7t25 30.5t59.5 53.5t55.5 27q7 0 12.5 -5.5t5.5 -15.5q0 -19 -45 -300q-19 -130 -80 -177q-44 -32 -73 -32 q-21 0 -33.5 9t-12.5 20zM125 728q0 17 10 28t26 11q17 0 26.5 -12.5t9.5 -27.5q0 -17 -9.5 -28.5t-24.5 -11.5q-17 0 -27.5 13t-10.5 28z" />
+<glyph horiz-adv-x="421" d="M35 246q0 3 17.5 85t40 208.5t32.5 225.5q0 7 -5 7q-14 0 -62 -16q-8 -2 -8 7q0 16 7 18q34 8 64.5 16.5l44 12t16.5 3.5q13 0 13 -10q0 -7 -16.5 -88l-37.5 -183t-26 -128q36 64 57 92q28 36 56 53t70 17q50 0 50 -31q0 -35 -27.5 -65t-56.5 -44t-55 -20q-2 0 -8 -1 t-8 -2q14 -7 22 -14q43 -43 61 -64q14 -17 20.5 -24t18 -13t25.5 -6q27 0 27 21q0 3 -0.5 9t-0.5 8q0 11 6 11q19 0 19 -37q0 -19 -32 -33t-60 -14q-19 0 -37 17q-9 9 -19 20.5t-25 31.5t-21 27l-19.5 23.5l-17 20t-5.5 8.5q0 4 14 18q2 2 10 2q11 0 22 4q31 14 59.5 45 t28.5 58q0 15 -25 15q-23 0 -52 -27q-20 -17 -84 -113q-14 -23 -20 -48q-10 -44 -16 -81q-2 -12 -4 -15.5t-6 -3.5l-18 -3q-19 -2 -24 -2t-5 2z" />
+<glyph horiz-adv-x="252" d="M55 274q0 5 15 88t34.5 201t28.5 193q2 8 0.5 11t-9.5 1q-54 -15 -62 -15q-6 0 -4 17q1 9 9 12q32 7 62 15t43.5 12t15.5 4q9 0 9 -8q0 -10 -41.5 -253t-41.5 -246q0 -17 11 -17q10 0 30 17.5t36 35t17 17.5q3 0 8.5 -4.5t5.5 -6.5q0 -4 -23 -29.5t-58 -51.5t-61 -26 q-25 0 -25 33z" />
+<glyph horiz-adv-x="650" d="M30 461q0 10 57 54t84 44q17 0 17 -16q0 -17 -3 -41.5t-6.5 -44t-10 -53t-9.5 -50.5q93 210 185 210q14 0 22 -11.5t8 -27.5q0 -66 -44 -198q69 129 111 179q51 58 94 58t43 -28q0 -24 -30 -118t-30 -108q0 -19 14 -19q10 0 43 34t34 34q3 0 7 -4t4 -7q0 -4 -24 -28.5 t-57.5 -49t-54.5 -24.5q-13 0 -21.5 7.5t-8.5 17.5q0 15 32 113.5t32 125.5q0 17 -15 17q-32 0 -104 -109q-55 -83 -75 -155q-3 -9 -12 -11q-20 -3 -35 -3q-8 0 -8 7l24 91q24 91 24 148q0 30 -16 30q-19 0 -54.5 -51t-64.5 -108q-17 -32 -35 -98q-5 -14 -9 -16 q-30 -12 -41 -12q-7 0 -5 9q10 39 23 123.5t13 122.5q0 13 -10 13q-12 0 -44 -31t-33 -31q-11 0 -11 15z" />
+<glyph horiz-adv-x="465" d="M30 487q0 2 24.5 22t60.5 40.5t58 20.5q19 0 19 -18q0 -17 -5 -44t-9.5 -46t-15.5 -57.5t-14 -50.5q60 105 110.5 160.5t96.5 55.5q43 0 43 -37q0 -25 -32 -120.5t-32 -104.5q0 -16 15 -16q11 0 28.5 15t31.5 30.5t15 15.5q3 0 7 -3t4 -6q0 -4 -20 -26.5t-53.5 -45 t-60.5 -22.5t-27 34q0 24 33 113t33 114q0 23 -18 23q-21 0 -64.5 -54.5t-83.5 -117.5q-20 -31 -37 -93q0 -1 -1.5 -5.5l-2.5 -7.5t-3.5 -6t-5.5 -3q-26 -3 -40 -3q-7 0 -5 9q49 196 49 258q0 15 -10 15q-11 0 -43 -26.5t-33 -26.5q-4 0 -8 4.5t-4 9.5z" />
+<glyph horiz-adv-x="377" d="M30 364q0 92 54.5 153.5t137.5 61.5q59 0 87 -42t28 -90q0 -78 -56.5 -141.5t-133.5 -63.5q-56 0 -86.5 35.5t-30.5 86.5zM83 371q0 -107 65 -107q37 0 69.5 39t49 88t16.5 89q0 29 -15.5 53.5t-54.5 24.5q-47 0 -88.5 -64.5t-41.5 -122.5z" />
+<glyph horiz-adv-x="432" d="M20 436v1q3 6 9 15.5t24.5 33.5t37 43t43 34t46.5 15q15 0 15 -27q0 -45 -26 -184q32 77 81 152q31 48 83 48q37 0 50.5 -20.5t13.5 -56.5q0 -91 -61.5 -169t-126.5 -78q-9 0 -26.5 3t-20.5 3q-9 0 -10 -6l-27 -172q-2 -18 7 -19l16 -2t13.5 -1t11 -1t9 -1t6.5 -1t5 -2 t3.5 -2t2 -3t0.5 -4q0 -12 -4 -14.5t-14 -2.5q-1 0 -23 3t-56.5 5.5t-65.5 2.5q-14 0 -14 9q0 11 3 15t13 4h13q9 0 12.5 3t5.5 14q64 368 64 427q0 14 -9 14q-17 0 -54 -47l-36 -46q-4 0 -9 5t-5 9zM164 292q0 -25 53 -25q42 0 84.5 73t42.5 140q0 52 -36 52 q-12 0 -24.5 -8t-24 -24.5t-18.5 -28t-17.5 -33.5t-13.5 -27q-46 -85 -46 -119z" />
+<glyph horiz-adv-x="397" d="M30 311q0 30 14.5 72t39.5 83.5t66 70.5t88 29q36 0 72 -17l11 -4q7 0 18.5 7t17.5 9q4 1 7 -1.5t3 -7.5t-22 -51q-4 -8 -6 -21l-31.5 -175.5l-32 -180.5t-11.5 -69q0 -8 11 -8h21q13 0 21 -1q12 -1 12 -15v-3v-6t-1.5 -4t-4 -2.5t-7.5 -0.5q-1 0 -11 0.5t-26.5 1 t-32.5 0.5q-11 0 -28.5 -1.5t-30.5 -3t-14 -1.5q-4 0 -6 0.5t-4 3t-2 7.5q1 11 4 13.5t14 4.5q20 4 22 8q2 3 4 13q46 203 77 378q-26 -54 -66 -109q-63 -87 -115 -87q-8 0 -17.5 2t-22.5 8.5t-22 21t-9 36.5zM85 332q0 -22 11 -35t26 -13q35 0 119 120q53 80 53 109 q0 9 -15.5 21.5t-40.5 12.5q-51 0 -102 -81t-51 -134z" />
+<glyph horiz-adv-x="295" d="M25 490q0 10 42 45t66 35q16 0 16 -18q0 -23 -22 -144h2q2 6 12.5 34.5t19.5 49.5t19 38q25 46 61 46q15 0 27 -8t12 -22q0 -32 -19 -32q-9 0 -23.5 7.5t-22.5 7.5q-11 0 -20 -14q-14 -21 -46 -103q-3 -8 -6 -19t-4 -12q-7 -29 -14.5 -68.5t-11.5 -56.5q-1 -4 -18.5 -7 t-26.5 -3q-10 0 -10 4q0 2 10 53l20.5 109.5t10.5 79.5q0 31 -10 31q-13 0 -34 -21l-21 -22q-9 0 -9 10z" />
+<glyph horiz-adv-x="289" d="M20 300q0 9 7 15.5t13 6.5q17 0 37 -20l10 -10.5t10 -10l8 -6.5t9.5 -5t10.5 -1q25 0 41 16t16 43q0 16 -18.5 35.5t-41 35t-41 38.5t-18.5 47q0 40 32.5 68.5t77.5 28.5q33 0 53 -12.5t24 -23t4 -18.5q0 -15 -16 -15q-24 0 -40 30q-12 21 -26 21q-22 0 -39 -12t-17 -39 q0 -26 19 -47t41 -34t41 -37t19 -55q0 -38 -32.5 -66t-77.5 -28q-38 0 -72 17.5t-34 37.5z" />
+<glyph horiz-adv-x="256" d="M35 537q0 1 0.5 7t0.5 8q0 6 8 6h50q7 0 8 6q2 10 6.5 44.5t5.5 38.5q1 5 2.5 8t4.5 4.5t10 2.5q4 1 17 1q25 0 25 -5q0 -1 -4.5 -20.5l-9.5 -42.5t-6 -29t0 -7t7 -1h60q9 0 9 -7q0 -19 -12 -19h-60h-3q-5 0 -6 -4q-1 -2 -1 -3q-35 -191 -35 -205q0 -16 15 -16 q11 0 51 37l40 37q2 0 7.5 -4t5.5 -6q0 -4 -26.5 -33t-64.5 -58.5t-60 -29.5q-30 0 -30 30q0 8 22 126.5t22 120.5q-5 8 -6 8h-40q-13 0 -13 5z" />
+<glyph horiz-adv-x="445" d="M25 462q0 2 10 16t26.5 34t31.5 36q26 26 59 26q47 0 47 -30q0 -11 -26.5 -110t-26.5 -120q0 -19 22 -19q27 0 73 65q59 82 84 164q1 3 10 45q1 5 45 10q8 0 8 -9q0 -4 -22.5 -120.5t-22.5 -125.5q0 -20 15 -20q12 0 40 37l29 37q8 0 8 -7q0 -5 -18.5 -34t-48 -58.5 t-51.5 -29.5q-12 0 -20.5 7t-8.5 17q0 18 18.5 99.5t21.5 102.5q-23 -48 -55 -98q-88 -132 -145 -132q-46 0 -46 36q0 9 25 104t25 126q0 23 -16 23q-12 0 -45 -40l-33 -41q-4 0 -8.5 3t-4.5 6z" />
+<glyph horiz-adv-x="396" d="M30 497q0 10 37.5 44t57.5 34q23 0 36 -8q20 -11 26.5 -18t6.5 -20q0 -32 -11 -108t-11 -88q0 -9 12 -19t16 -10q12 0 20 9q6 7 26 33q83 111 83 178q0 32 -19 32q-9 0 -20.5 -2t-19.5 -4t-9 -2q-6 0 -6 15q0 5 32 12.5t50 7.5q34 0 34 -35q0 -14 -2.5 -28t-8.5 -29.5 l-11 -27.5t-16.5 -30.5l-17 -28t-21 -30.5l-21 -28l-23 -29.5l-21.5 -27.5q-9 -12 -19 -28t-21 -16q-17 0 -36 17q-19 14 -26 27t-7 41q0 15 8.5 85.5t8.5 98.5q0 14 -7 18q-10 7 -19 7q-12 0 -27.5 -13.5t-26.5 -27t-12 -13.5q-4 0 -9.5 4.5t-5.5 7.5z" />
+<glyph horiz-adv-x="589" d="M25 500q0 9 41.5 39.5t61.5 30.5q14 0 38 -15q27 -18 27 -39q0 -25 -5.5 -70t-10.5 -80.5t-5 -36.5q0 -10 10 -22t16 -12q8 0 19 15q8 11 39.5 57.5t40.5 57.5q10 12 19 38.5t9 37.5q0 9 -16 25q-5 5 -11.5 10l-9 7t-2.5 4q0 8 11.5 19.5t20.5 11.5q14 0 37.5 -19.5 t23.5 -31.5q0 -13 -12.5 -97.5t-12.5 -100.5q0 -13 11 -24t20 -11q7 0 24 21q49 56 73 91q36 52 37 116q0 26 -17 26q-9 0 -24.5 -2t-27.5 -4.5t-13 -2.5q-6 0 -6 14q0 5 45 14.5t53 9.5q35 0 35 -33q0 -58 -57 -143q-10 -15 -21 -29t-26 -31.5t-22 -25l-27 -29t-24 -25.5 q-9 -9 -15 -9q-29 0 -49 19.5t-20 45.5q0 19 23 122q-70 -108 -101 -147q-3 -4 -11 -15.5t-11 -15.5q-10 -13 -18 -13q-13 0 -35 19q-19 14 -24.5 23.5t-5.5 30.5q0 11 9.5 70t9.5 105q0 10 -12.5 24t-22.5 14q-12 0 -27.5 -12t-26.5 -24t-12 -12q-5 0 -9 5.5t-4 8.5z" />
+<glyph horiz-adv-x="413" d="M25 269q0 28 22 76q3 4 7 4q13 0 13 -7l-5 -14q-4 -13 -4 -24q0 -18 17 -18q18 0 54 39t61 73q4 7 1 17q-44 122 -82 122q-15 0 -37.5 -24t-24.5 -24q-3 0 -6.5 4.5t-3.5 7.5q0 4 12.5 20.5t37 33.5t49.5 17q19 0 31.5 -5t23.5 -22t16.5 -28.5t17.5 -43.5q5 -12 7 -18 l4 -6l5 8q3 4 18 28.5t23 35t22 27t28 24t28 7.5q21 0 21 -34q0 -17 -5 -47q-1 -4 -9 -4t-8 4q0 5 0.5 14t0.5 13q0 20 -13 20q-26 0 -100 -110q-5 -8 -2 -16q44 -125 72 -125q14 0 33 27l19 27q14 0 14 -7q0 -16 -32.5 -55.5t-60.5 -39.5q-10 0 -18 3t-15 11.5t-12 15.5 t-11 22t-9 24t-10 28.5t-10 29.5q-2 1 -2.5 1t-4.5 -4q-2 -3 -36 -46.5t-59 -64t-49 -20.5q-29 0 -29 23z" />
+<glyph horiz-adv-x="376" d="M0 33q0 9 3.5 16t11 11.5t14 7t17.5 5.5t16 5q28 11 44 40q49 90 49 146q0 100 -12.5 182t-44.5 82q-15 0 -30 -12.5t-25 -25t-12 -12.5q-12 0 -12 8q0 4 14 22.5t40 38.5t51 20t40 -14.5t23 -56.5t10.5 -69t5.5 -100q1 -25 2 -38q2 4 22.5 41t28 52t20.5 44.5t20 52.5 q9 29 15 83q1 15 10 15q10 0 20 -6t10 -16q0 -4 -2 -14q-2 -16 -11.5 -40.5t-22 -51.5t-27 -55l-29.5 -54.5l-26.5 -46.5l-20.5 -35l-9 -15l-23 -43.5l-37 -69l-34 -60.5q-12 -19 -32 -31q-47 -29 -61 -29q-7 0 -11.5 7.5t-4.5 15.5z" />
+<glyph horiz-adv-x="353" d="M30 252q0 5 3 11t6.5 9.5t9 9.5t7.5 8l197 220l2 4q-8 -2 -13 -2q-19 0 -63 13.5t-56 13.5q-13 0 -25.5 -10t-20.5 -20t-9 -10q-12 0 -12 7q0 4 11.5 20.5t32.5 34.5t41 18q19 0 70 -18t67 -18q6 0 18 15t23 15q6 0 10 -4.5t4 -10.5q0 -10 -9 -18t-22 -14.5t-17 -10.5 l-183 -202q-4 -4 -4 -6t12 -2q30 -2 96 -7t83 -5q7 0 9.5 3t2.5 11l-1 11v12q0 7 9 7t9 -6q7 -68 7 -71q0 -13 -31 -13h-5q-19 0 -104.5 7t-120.5 7q-3 0 -9.5 -10t-13.5 -10q-11 0 -11 11z" />
+<glyph horiz-adv-x="379" d="M30 -101q0 38 12.5 83.5t35 88.5t60.5 71.5t83 28.5q28 0 45 -25q3 -4 6.5 -10t6 -9.5t3.5 -3.5q2 2 7 17.5t5 18.5q4 10 34 10q14 0 14 -6q0 -3 -33.5 -121.5t-33.5 -139.5q0 -16 11 -16q7 0 29.5 23.5t23.5 23.5q3 0 6.5 -4t3.5 -9q0 -3 -18.5 -22t-45 -38.5 t-42.5 -19.5q-23 0 -23 21q0 26 44 167q-46 -80 -100 -135q-40 -40 -59 -48q-10 -4 -22 -4q-26 0 -39.5 16.5t-13.5 41.5zM85 -70q0 -44 23 -44q21 0 68 52t81 107q12 18 12 44q0 21 -23 34t-45 13q-39 0 -77.5 -75t-38.5 -131z" />
+<glyph horiz-adv-x="408" d="M45 -140q0 4 2 7.5t5 7.5l4 4q2 2 5 16q24 132 48 290t24 180q0 5 -5 5q-2 0 -33 -9t-34 -9q-8 0 -8 22q0 9 4 10q119 31 132 31q11 0 11 -9q0 -5 -14.5 -96.5t-19.5 -116.5q-27 -155 -38 -203q39 67 69 106q31 42 54.5 58.5t61.5 16.5q65 0 65 -54q0 -111 -76.5 -193 t-140.5 -82q-17 0 -32.5 6t-24.5 12t-11 6q-1 0 -3.5 -1t-6 -3t-6.5 -3q-14 -7 -23 -7t-9 8zM115 -84q0 -20 14 -34t41 -14q34 0 70.5 42t57.5 92t21 81q0 48 -34 48q-35 0 -69 -48q-101 -139 -101 -167z" />
+<glyph horiz-adv-x="357" d="M35 -44q0 95 59 156.5t125 61.5q41 0 65 -20t24 -53q0 -18 -10 -29.5t-26 -11.5q-19 0 -19 31q0 3 0.5 10t0.5 10q0 16 -9.5 27.5t-28.5 11.5q-50 0 -87 -55q-38 -56 -38 -126q0 -14 1.5 -23.5t8.5 -26t26.5 -26t49.5 -9.5q32 0 63.5 16t50.5 32t20 16q3 0 7 -4t4 -8 q0 -5 -25 -27t-68 -45t-80 -23q-61 0 -87.5 33.5t-26.5 81.5z" />
+<glyph horiz-adv-x="424" d="M35 -89q0 28 12 69t33.5 83t57.5 71.5t77 29.5q15 0 28.5 -2.5t20.5 -5.5t15 -7t9 -4q8 -3 9.5 -2t3.5 10q5 25 12 75.5l12.5 89t5.5 39.5q4 12 -2 12q-1 0 -36.5 -8.5t-37.5 -8.5q-6 0 -3 18q1 10 9 13q32 7 63 14.5t46 11.5t16 4q10 0 10 -13q0 -3 -41.5 -239.5 t-41.5 -261.5q0 -11 10 -11q11 0 29 15t32.5 30t15.5 15q9 0 9 -7q0 -5 -18 -27.5t-51 -46.5t-63 -24q-10 0 -17 8.5t-7 22.5q0 28 33 165q-42 -72 -71 -109q-22 -29 -34 -42.5t-34.5 -27.5t-46.5 -14q-8 0 -16 1.5t-20.5 7t-20.5 20t-8 36.5zM92 -65q0 -24 8 -35t28 -11 q35 0 115 115q46 69 46 97q0 11 -24 27.5t-50 16.5q-34 0 -64 -40.5t-44.5 -88t-14.5 -81.5z" />
+<glyph horiz-adv-x="357" d="M35 -63q0 95 61 166t143 71q78 0 78 -55q0 -36 -29.5 -64t-73.5 -45q-55 -20 -117 -20q-5 0 -5 -38q0 -72 78 -72q34 0 67.5 18t52.5 35.5t20 17.5q3 0 7.5 -4.5t4.5 -6.5q0 -4 -23.5 -26t-69 -45.5t-89.5 -23.5q-46 0 -75.5 23t-29.5 69zM104 15q0 -4 7 -4 q62 0 106 29.5t44 79.5q0 15 -11 23.5t-29 8.5q-68 0 -106 -99q-11 -29 -11 -38z" />
+<glyph horiz-adv-x="250" d="M-92 -349q0 12 14 23.5t27 11.5q10 0 31 -9.5t36 -9.5q8 0 14.5 5t11 15.5l8.5 20.5t7 26l5 26t4 25.5t3 20.5q9 54 19.5 133t17 132.5t6.5 56.5q0 8 -6 8h-59q-7 0 -7 7q0 4 2 10q1 5 7 5h57q4 0 5.5 0.5t3 2.5t1.5 7q9 80 36 130q37 67 84 94q37 22 77 22q21 0 41 -10 t20 -20q0 -12 -16.5 -24t-29.5 -12q-11 0 -31.5 15.5t-35.5 15.5q-61 0 -91 -216q0 -5 6 -5h69q5 0 5 -2q0 -20 -8 -20h-68h-2q-3 0 -4 -3l-0.5 -2t-0.5 -3t-19 -133.5t-29 -188.5q-3 -17 -9 -38t-25 -58t-44 -55q-48 -35 -76 -35q-20 0 -38.5 10.5t-18.5 20.5z" />
+<glyph horiz-adv-x="377" d="M4 -280q0 33 25 56.5t52 35.5q9 4 9 5t-2 2t-6 2.5t-7 3.5q-21 14 -21 28q0 6 14.5 29.5t22.5 26.5l51 18l4 2q0 1 -5 2q-82 27 -82 109q0 59 43 100t105 41q12 0 24 -2.5t20 -6.5t15.5 -8.5t11.5 -8.5t8 -7l4 -4q2 2 11.5 22.5t11.5 23.5q5 9 18 9q23 0 23 -10 t-9.5 -27.5t-19.5 -31.5t-10 -15q0 -2 1 -5q2 -4 2 -6q6 -22 6 -33q0 -60 -44 -101q-22 -20 -42.5 -28.5t-62.5 -20.5q-77 -21 -77 -38q0 -4 2.5 -7t8 -6t11 -5t15 -4.5t18 -4l20.5 -3.5l21 -3.5t22.5 -4t22.5 -3.5q53 -8 81 -25t28 -55q0 -63 -56 -92t-145 -29 q-143 0 -143 79zM41 -275q0 -32 44 -44.5t95 -12.5q52 0 84 18t32 54q0 25 -22 37t-64 19q-84 15 -90 15q-4 0 -26 -10q-53 -27 -53 -76zM112 39q0 -49 20.5 -70.5t41.5 -21.5q33 0 65 39t32 94q0 30 -19 55t-46 25q-41 0 -67.5 -40t-26.5 -81z" />
+<glyph horiz-adv-x="431" d="M40 -145q0 2 5.5 27.5t14.5 72.5l19.5 105.5t22 139.5t19.5 162q2 15 -3 15q-8 0 -39.5 -11.5t-32.5 -11.5q-3 0 -3 13q0 10 6 14q24 9 69 18.5t61 9.5q6 0 6 -13q-4 -75 -76 -436q39 89 92 152q46 56 105 56q50 0 50 -41q0 -31 -27.5 -122.5t-27.5 -99.5q0 -17 15 -17 q9 0 28 18t34.5 36t16.5 18q3 0 7 -4t4 -6q0 -4 -18 -28t-50 -48.5t-61 -24.5q-14 0 -24.5 9.5t-10.5 23.5q0 12 30.5 105.5t30.5 116.5q0 13 -8 22.5t-20 9.5q-27 0 -55 -33.5t-62 -88.5q-4 -7 -13.5 -22.5l-14.5 -24t-10.5 -20.5t-7.5 -22l-15 -67q-2 -11 -50 -11 q-7 0 -7 8z" />
+<glyph horiz-adv-x="235" d="M30 83q0 7 53 46t73 39q7 0 12.5 -5t5.5 -15q0 -22 -27.5 -124t-27.5 -112q0 -16 10 -16q9 0 36.5 26.5t28.5 26.5q3 0 7 -3.5t4 -6.5q0 -11 -53.5 -53t-71.5 -42q-22 0 -22 16q0 21 30 120.5t30 125.5q0 15 -9 15q-13 0 -40 -24.5t-28 -24.5q-4 0 -7.5 4t-3.5 7z M116 303q0 17 9 28t25 11q17 0 27 -13t10 -28q0 -17 -9.5 -27.5t-24.5 -10.5q-17 0 -27 12.5t-10 27.5z" />
+<glyph horiz-adv-x="239" d="M-61 -333q0 13 8.5 22t21.5 9q15 0 31.5 -10t30.5 -10q15 0 22.5 20.5t17.5 66.5q16 75 35.5 199t19.5 142q0 15 -9 15q-13 0 -47 -37l-34 -37q-3 0 -7 3t-4 7t25 30.5t59.5 53.5t55.5 27q7 0 12.5 -5.5t5.5 -15.5q0 -19 -45 -300q-19 -130 -80 -177q-44 -32 -73 -32 q-21 0 -33.5 9t-12.5 20zM125 328q0 17 10 28t26 11q17 0 26.5 -12.5t9.5 -27.5q0 -17 -9.5 -28.5t-24.5 -11.5q-17 0 -27.5 13t-10.5 28z" />
+<glyph horiz-adv-x="421" d="M35 -154q0 3 17.5 85t40 208.5t32.5 225.5q0 7 -5 7q-14 0 -62 -16q-8 -2 -8 7q0 16 7 18q34 8 64.5 16.5l44 12t16.5 3.5q13 0 13 -10q0 -7 -16.5 -88l-37.5 -183t-26 -128q36 64 57 92q28 36 56 53t70 17q50 0 50 -31q0 -35 -27.5 -65t-56.5 -44t-55 -20q-2 0 -8 -1 t-8 -2q14 -7 22 -14q43 -43 61 -64q14 -17 20.5 -24t18 -13t25.5 -6q27 0 27 21q0 3 -0.5 9t-0.5 8q0 11 6 11q19 0 19 -37q0 -19 -32 -33t-60 -14q-19 0 -37 17q-9 9 -19 20.5t-25 31.5t-21 27l-19.5 23.5l-17 20t-5.5 8.5q0 4 14 18q2 2 10 2q11 0 22 4q31 14 59.5 45 t28.5 58q0 15 -25 15q-23 0 -52 -27q-20 -17 -84 -113q-14 -23 -20 -48q-10 -44 -16 -81q-2 -12 -4 -15.5t-6 -3.5l-18 -3q-19 -2 -24 -2t-5 2z" />
+<glyph horiz-adv-x="252" d="M55 -126q0 5 15 88t34.5 201t28.5 193q2 8 0.5 11t-9.5 1q-54 -15 -62 -15q-6 0 -4 17q1 9 9 12q32 7 62 15t43.5 12t15.5 4q9 0 9 -8q0 -10 -41.5 -253t-41.5 -246q0 -17 11 -17q10 0 30 17.5t36 35t17 17.5q3 0 8.5 -4.5t5.5 -6.5q0 -4 -23 -29.5t-58 -51.5t-61 -26 q-25 0 -25 33z" />
+<glyph horiz-adv-x="650" d="M30 61q0 10 57 54t84 44q17 0 17 -16q0 -17 -3 -41.5t-6.5 -44t-10 -53t-9.5 -50.5q93 210 185 210q14 0 22 -11.5t8 -27.5q0 -66 -44 -198q69 129 111 179q51 58 94 58t43 -28q0 -24 -30 -118t-30 -108q0 -19 14 -19q10 0 43 34t34 34q3 0 7 -4t4 -7q0 -4 -24 -28.5 t-57.5 -49t-54.5 -24.5q-13 0 -21.5 7.5t-8.5 17.5q0 15 32 113.5t32 125.5q0 17 -15 17q-32 0 -104 -109q-55 -83 -75 -155q-3 -9 -12 -11q-20 -3 -35 -3q-8 0 -8 7l24 91q24 91 24 148q0 30 -16 30q-19 0 -54.5 -51t-64.5 -108q-17 -32 -35 -98q-5 -14 -9 -16 q-30 -12 -41 -12q-7 0 -5 9q10 39 23 123.5t13 122.5q0 13 -10 13q-12 0 -44 -31t-33 -31q-11 0 -11 15z" />
+<glyph horiz-adv-x="465" d="M30 87q0 2 24.5 22t60.5 40.5t58 20.5q19 0 19 -18q0 -17 -5 -44t-9.5 -46t-15.5 -57.5t-14 -50.5q60 105 110.5 160.5t96.5 55.5q43 0 43 -37q0 -25 -32 -120.5t-32 -104.5q0 -16 15 -16q11 0 28.5 15t31.5 30.5t15 15.5q3 0 7 -3t4 -6q0 -4 -20 -26.5t-53.5 -45 t-60.5 -22.5t-27 34q0 24 33 113t33 114q0 23 -18 23q-21 0 -64.5 -54.5t-83.5 -117.5q-20 -31 -37 -93q0 -1 -1.5 -5.5l-2.5 -7.5t-3.5 -6t-5.5 -3q-26 -3 -40 -3q-7 0 -5 9q49 196 49 258q0 15 -10 15q-11 0 -43 -26.5t-33 -26.5q-4 0 -8 4.5t-4 9.5z" />
+<glyph horiz-adv-x="377" d="M30 -36q0 92 54.5 153.5t137.5 61.5q59 0 87 -42t28 -90q0 -78 -56.5 -141.5t-133.5 -63.5q-56 0 -86.5 35.5t-30.5 86.5zM83 -29q0 -107 65 -107q37 0 69.5 39t49 88t16.5 89q0 29 -15.5 53.5t-54.5 24.5q-47 0 -88.5 -64.5t-41.5 -122.5z" />
+<glyph horiz-adv-x="432" d="M20 36v1q3 6 9 15.5t24.5 33.5t37 43t43 34t46.5 15q15 0 15 -27q0 -45 -26 -184q32 77 81 152q31 48 83 48q37 0 50.5 -20.5t13.5 -56.5q0 -91 -61.5 -169t-126.5 -78q-9 0 -26.5 3t-20.5 3q-9 0 -10 -6l-27 -172q-2 -18 7 -19l16 -2t13.5 -1t11 -1t9 -1t6.5 -1t5 -2 t3.5 -2t2 -3t0.5 -4q0 -12 -4 -14.5t-14 -2.5q-1 0 -23 3t-56.5 5.5t-65.5 2.5q-14 0 -14 9q0 11 3 15t13 4h13q9 0 12.5 3t5.5 14q64 368 64 427q0 14 -9 14q-17 0 -54 -47l-36 -46q-4 0 -9 5t-5 9zM164 -108q0 -25 53 -25q42 0 84.5 73t42.5 140q0 52 -36 52 q-12 0 -24.5 -8t-24 -24.5t-18.5 -28t-17.5 -33.5t-13.5 -27q-46 -85 -46 -119z" />
+<glyph horiz-adv-x="397" d="M30 -89q0 30 14.5 72t39.5 83.5t66 70.5t88 29q36 0 72 -17l11 -4q7 0 18.5 7t17.5 9q4 1 7 -1.5t3 -7.5t-22 -51q-4 -8 -6 -21l-31.5 -175.5l-32 -180.5t-11.5 -69q0 -8 11 -8h21q13 0 21 -1q12 -1 12 -15v-3v-6t-1.5 -4t-4 -2.5t-7.5 -0.5q-1 0 -11 0.5t-26.5 1 t-32.5 0.5q-11 0 -28.5 -1.5t-30.5 -3t-14 -1.5q-4 0 -6 0.5t-4 3t-2 7.5q1 11 4 13.5t14 4.5q20 4 22 8q2 3 4 13q46 203 77 378q-26 -54 -66 -109q-63 -87 -115 -87q-8 0 -17.5 2t-22.5 8.5t-22 21t-9 36.5zM85 -68q0 -22 11 -35t26 -13q35 0 119 120q53 80 53 109 q0 9 -15.5 21.5t-40.5 12.5q-51 0 -102 -81t-51 -134z" />
+<glyph horiz-adv-x="295" d="M25 90q0 10 42 45t66 35q16 0 16 -18q0 -23 -22 -144h2q2 6 12.5 34.5t19.5 49.5t19 38q25 46 61 46q15 0 27 -8t12 -22q0 -32 -19 -32q-9 0 -23.5 7.5t-22.5 7.5q-11 0 -20 -14q-14 -21 -46 -103q-3 -8 -6 -19t-4 -12q-7 -29 -14.5 -68.5t-11.5 -56.5q-1 -4 -18.5 -7 t-26.5 -3q-10 0 -10 4q0 2 10 53l20.5 109.5t10.5 79.5q0 31 -10 31q-13 0 -34 -21l-21 -22q-9 0 -9 10z" />
+<glyph horiz-adv-x="289" d="M20 -100q0 9 7 15.5t13 6.5q17 0 37 -20l10 -10.5t10 -10l8 -6.5t9.5 -5t10.5 -1q25 0 41 16t16 43q0 16 -18.5 35.5t-41 35t-41 38.5t-18.5 47q0 40 32.5 68.5t77.5 28.5q33 0 53 -12.5t24 -23t4 -18.5q0 -15 -16 -15q-24 0 -40 30q-12 21 -26 21q-22 0 -39 -12t-17 -39 q0 -26 19 -47t41 -34t41 -37t19 -55q0 -38 -32.5 -66t-77.5 -28q-38 0 -72 17.5t-34 37.5z" />
+<glyph horiz-adv-x="256" d="M35 137q0 1 0.5 7t0.5 8q0 6 8 6h50q7 0 8 6q2 10 6.5 44.5t5.5 38.5q1 5 2.5 8t4.5 4.5t10 2.5q4 1 17 1q25 0 25 -5q0 -1 -4.5 -20.5l-9.5 -42.5t-6 -29t0 -7t7 -1h60q9 0 9 -7q0 -19 -12 -19h-60h-3q-5 0 -6 -4q-1 -2 -1 -3q-35 -191 -35 -205q0 -16 15 -16 q11 0 51 37l40 37q2 0 7.5 -4t5.5 -6q0 -4 -26.5 -33t-64.5 -58.5t-60 -29.5q-30 0 -30 30q0 8 22 126.5t22 120.5q-5 8 -6 8h-40q-13 0 -13 5z" />
+<glyph horiz-adv-x="445" d="M25 62q0 2 10 16t26.5 34t31.5 36q26 26 59 26q47 0 47 -30q0 -11 -26.5 -110t-26.5 -120q0 -19 22 -19q27 0 73 65q59 82 84 164q1 3 10 45q1 5 45 10q8 0 8 -9q0 -4 -22.5 -120.5t-22.5 -125.5q0 -20 15 -20q12 0 40 37l29 37q8 0 8 -7q0 -5 -18.5 -34t-48 -58.5 t-51.5 -29.5q-12 0 -20.5 7t-8.5 17q0 18 18.5 99.5t21.5 102.5q-23 -48 -55 -98q-88 -132 -145 -132q-46 0 -46 36q0 9 25 104t25 126q0 23 -16 23q-12 0 -45 -40l-33 -41q-4 0 -8.5 3t-4.5 6z" />
+<glyph horiz-adv-x="396" d="M30 97q0 10 37.5 44t57.5 34q23 0 36 -8q20 -11 26.5 -18t6.5 -20q0 -32 -11 -108t-11 -88q0 -9 12 -19t16 -10q12 0 20 9q6 7 26 33q83 111 83 178q0 32 -19 32q-9 0 -20.5 -2t-19.5 -4t-9 -2q-6 0 -6 15q0 5 32 12.5t50 7.5q34 0 34 -35q0 -14 -2.5 -28t-8.5 -29.5 l-11 -27.5t-16.5 -30.5l-17 -28t-21 -30.5l-21 -28l-23 -29.5l-21.5 -27.5q-9 -12 -19 -28t-21 -16q-17 0 -36 17q-19 14 -26 27t-7 41q0 15 8.5 85.5t8.5 98.5q0 14 -7 18q-10 7 -19 7q-12 0 -27.5 -13.5t-26.5 -27t-12 -13.5q-4 0 -9.5 4.5t-5.5 7.5z" />
+<glyph horiz-adv-x="589" d="M25 100q0 9 41.5 39.5t61.5 30.5q14 0 38 -15q27 -18 27 -39q0 -25 -5.5 -70t-10.5 -80.5t-5 -36.5q0 -10 10 -22t16 -12q8 0 19 15q8 11 39.5 57.5t40.5 57.5q10 12 19 38.5t9 37.5q0 9 -16 25q-5 5 -11.5 10l-9 7t-2.5 4q0 8 11.5 19.5t20.5 11.5q14 0 37.5 -19.5 t23.5 -31.5q0 -13 -12.5 -97.5t-12.5 -100.5q0 -13 11 -24t20 -11q7 0 24 21q49 56 73 91q36 52 37 116q0 26 -17 26q-9 0 -24.5 -2t-27.5 -4.5t-13 -2.5q-6 0 -6 14q0 5 45 14.5t53 9.5q35 0 35 -33q0 -58 -57 -143q-10 -15 -21 -29t-26 -31.5t-22 -25l-27 -29t-24 -25.5 q-9 -9 -15 -9q-29 0 -49 19.5t-20 45.5q0 19 23 122q-70 -108 -101 -147q-3 -4 -11 -15.5t-11 -15.5q-10 -13 -18 -13q-13 0 -35 19q-19 14 -24.5 23.5t-5.5 30.5q0 11 9.5 70t9.5 105q0 10 -12.5 24t-22.5 14q-12 0 -27.5 -12t-26.5 -24t-12 -12q-5 0 -9 5.5t-4 8.5z" />
+<glyph horiz-adv-x="413" d="M25 -131q0 28 22 76q3 4 7 4q13 0 13 -7l-5 -14q-4 -13 -4 -24q0 -18 17 -18q18 0 54 39t61 73q4 7 1 17q-44 122 -82 122q-15 0 -37.5 -24t-24.5 -24q-3 0 -6.5 4.5t-3.5 7.5q0 4 12.5 20.5t37 33.5t49.5 17q19 0 31.5 -5t23.5 -22t16.5 -28.5t17.5 -43.5q5 -12 7 -18 l4 -6l5 8q3 4 18 28.5t23 35t22 27t28 24t28 7.5q21 0 21 -34q0 -17 -5 -47q-1 -4 -9 -4t-8 4q0 5 0.5 14t0.5 13q0 20 -13 20q-26 0 -100 -110q-5 -8 -2 -16q44 -125 72 -125q14 0 33 27l19 27q14 0 14 -7q0 -16 -32.5 -55.5t-60.5 -39.5q-10 0 -18 3t-15 11.5t-12 15.5 t-11 22t-9 24t-10 28.5t-10 29.5q-2 1 -2.5 1t-4.5 -4q-2 -3 -36 -46.5t-59 -64t-49 -20.5q-29 0 -29 23z" />
+<glyph horiz-adv-x="376" d="M0 -367q0 9 3.5 16t11 11.5t14 7t17.5 5.5t16 5q28 11 44 40q49 90 49 146q0 100 -12.5 182t-44.5 82q-15 0 -30 -12.5t-25 -25t-12 -12.5q-12 0 -12 8q0 4 14 22.5t40 38.5t51 20t40 -14.5t23 -56.5t10.5 -69t5.5 -100q1 -25 2 -38q2 4 22.5 41t28 52t20.5 44.5t20 52.5 q9 29 15 83q1 15 10 15q10 0 20 -6t10 -16q0 -4 -2 -14q-2 -16 -11.5 -40.5t-22 -51.5t-27 -55l-29.5 -54.5l-26.5 -46.5l-20.5 -35l-9 -15l-23 -43.5l-37 -69l-34 -60.5q-12 -19 -32 -31q-47 -29 -61 -29q-7 0 -11.5 7.5t-4.5 15.5z" />
+<glyph horiz-adv-x="353" d="M30 -148q0 5 3 11t6.5 9.5t9 9.5t7.5 8l197 220l2 4q-8 -2 -13 -2q-19 0 -63 13.5t-56 13.5q-13 0 -25.5 -10t-20.5 -20t-9 -10q-12 0 -12 7q0 4 11.5 20.5t32.5 34.5t41 18q19 0 70 -18t67 -18q6 0 18 15t23 15q6 0 10 -4.5t4 -10.5q0 -10 -9 -18t-22 -14.5t-17 -10.5 l-183 -202q-4 -4 -4 -6t12 -2q30 -2 96 -7t83 -5q7 0 9.5 3t2.5 11l-1 11v12q0 7 9 7t9 -6q7 -68 7 -71q0 -13 -31 -13h-5q-19 0 -104.5 7t-120.5 7q-3 0 -9.5 -10t-13.5 -10q-11 0 -11 11z" />
+<glyph horiz-adv-x="379" d="M30 399q0 38 12.5 83.5t35 88.5t60.5 71.5t83 28.5q28 0 45 -25q3 -4 6.5 -10t6 -9.5t3.5 -3.5q2 2 7 17.5t5 18.5q4 10 34 10q14 0 14 -6q0 -3 -33.5 -121.5t-33.5 -139.5q0 -16 11 -16q7 0 29.5 23.5t23.5 23.5q3 0 6.5 -4t3.5 -9q0 -3 -18.5 -22t-45 -38.5 t-42.5 -19.5q-23 0 -23 21q0 26 44 167q-46 -80 -100 -135q-40 -40 -59 -48q-10 -4 -22 -4q-26 0 -39.5 16.5t-13.5 41.5zM85 430q0 -44 23 -44q21 0 68 52t81 107q12 18 12 44q0 21 -23 34t-45 13q-39 0 -77.5 -75t-38.5 -131z" />
+<glyph horiz-adv-x="408" d="M45 360q0 4 2 7.5t5 7.5l4 4q2 2 5 16q24 132 48 290t24 180q0 5 -5 5q-2 0 -33 -9t-34 -9q-8 0 -8 22q0 9 4 10q119 31 132 31q11 0 11 -9q0 -5 -14.5 -96.5t-19.5 -116.5q-27 -155 -38 -203q39 67 69 106q31 42 54.5 58.5t61.5 16.5q65 0 65 -54q0 -111 -76.5 -193 t-140.5 -82q-17 0 -32.5 6t-24.5 12t-11 6q-1 0 -3.5 -1t-6 -3t-6.5 -3q-14 -7 -23 -7t-9 8zM115 416q0 -20 14 -34t41 -14q34 0 70.5 42t57.5 92t21 81q0 48 -34 48q-35 0 -69 -48q-101 -139 -101 -167z" />
+<glyph horiz-adv-x="357" d="M35 456q0 95 59 156.5t125 61.5q41 0 65 -20t24 -53q0 -18 -10 -29.5t-26 -11.5q-19 0 -19 31q0 3 0.5 10t0.5 10q0 16 -9.5 27.5t-28.5 11.5q-50 0 -87 -55q-38 -56 -38 -126q0 -14 1.5 -23.5t8.5 -26t26.5 -26t49.5 -9.5q32 0 63.5 16t50.5 32t20 16q3 0 7 -4t4 -8 q0 -5 -25 -27t-68 -45t-80 -23q-61 0 -87.5 33.5t-26.5 81.5z" />
+<glyph horiz-adv-x="424" d="M35 411q0 28 12 69t33.5 83t57.5 71.5t77 29.5q15 0 28.5 -2.5t20.5 -5.5t15 -7t9 -4q8 -3 9.5 -2t3.5 10q5 25 12 75.5l12.5 89t5.5 39.5q4 12 -2 12q-1 0 -36.5 -8.5t-37.5 -8.5q-6 0 -3 18q1 10 9 13q32 7 63 14.5t46 11.5t16 4q10 0 10 -13q0 -3 -41.5 -239.5 t-41.5 -261.5q0 -11 10 -11q11 0 29 15t32.5 30t15.5 15q9 0 9 -7q0 -5 -18 -27.5t-51 -46.5t-63 -24q-10 0 -17 8.5t-7 22.5q0 28 33 165q-42 -72 -71 -109q-22 -29 -34 -42.5t-34.5 -27.5t-46.5 -14q-8 0 -16 1.5t-20.5 7t-20.5 20t-8 36.5zM92 435q0 -24 8 -35t28 -11 q35 0 115 115q46 69 46 97q0 11 -24 27.5t-50 16.5q-34 0 -64 -40.5t-44.5 -88t-14.5 -81.5z" />
+<glyph horiz-adv-x="357" d="M35 437q0 95 61 166t143 71q78 0 78 -55q0 -36 -29.5 -64t-73.5 -45q-55 -20 -117 -20q-5 0 -5 -38q0 -72 78 -72q34 0 67.5 18t52.5 35.5t20 17.5q3 0 7.5 -4.5t4.5 -6.5q0 -4 -23.5 -26t-69 -45.5t-89.5 -23.5q-46 0 -75.5 23t-29.5 69zM104 515q0 -4 7 -4 q62 0 106 29.5t44 79.5q0 15 -11 23.5t-29 8.5q-68 0 -106 -99q-11 -29 -11 -38z" />
+<glyph horiz-adv-x="250" d="M-92 151q0 12 14 23.5t27 11.5q10 0 31 -9.5t36 -9.5q8 0 14.5 5t11 15.5l8.5 20.5t7 26l5 26t4 25.5t3 20.5q9 54 19.5 133t17 132.5t6.5 56.5q0 8 -6 8h-59q-7 0 -7 7q0 4 2 10q1 5 7 5h57q4 0 5.5 0.5t3 2.5t1.5 7q9 80 36 130q37 67 84 94q37 22 77 22q21 0 41 -10 t20 -20q0 -12 -16.5 -24t-29.5 -12q-11 0 -31.5 15.5t-35.5 15.5q-61 0 -91 -216q0 -5 6 -5h69q5 0 5 -2q0 -20 -8 -20h-68h-2q-3 0 -4 -3l-0.5 -2t-0.5 -3t-19 -133.5t-29 -188.5q-3 -17 -9 -38t-25 -58t-44 -55q-48 -35 -76 -35q-20 0 -38.5 10.5t-18.5 20.5z" />
+<glyph horiz-adv-x="377" d="M4 220q0 33 25 56.5t52 35.5q9 4 9 5t-2 2t-6 2.5t-7 3.5q-21 14 -21 28q0 6 14.5 29.5t22.5 26.5l51 18l4 2q0 1 -5 2q-82 27 -82 109q0 59 43 100t105 41q12 0 24 -2.5t20 -6.5t15.5 -8.5t11.5 -8.5t8 -7l4 -4q2 2 11.5 22.5t11.5 23.5q5 9 18 9q23 0 23 -10 t-9.5 -27.5t-19.5 -31.5t-10 -15q0 -2 1 -5q2 -4 2 -6q6 -22 6 -33q0 -60 -44 -101q-22 -20 -42.5 -28.5t-62.5 -20.5q-77 -21 -77 -38q0 -4 2.5 -7t8 -6t11 -5t15 -4.5t18 -4l20.5 -3.5l21 -3.5t22.5 -4t22.5 -3.5q53 -8 81 -25t28 -55q0 -63 -56 -92t-145 -29 q-143 0 -143 79zM41 225q0 -32 44 -44.5t95 -12.5q52 0 84 18t32 54q0 25 -22 37t-64 19q-84 15 -90 15q-4 0 -26 -10q-53 -27 -53 -76zM112 539q0 -49 20.5 -70.5t41.5 -21.5q33 0 65 39t32 94q0 30 -19 55t-46 25q-41 0 -67.5 -40t-26.5 -81z" />
+<glyph horiz-adv-x="431" d="M40 355q0 2 5.5 27.5t14.5 72.5l19.5 105.5t22 139.5t19.5 162q2 15 -3 15q-8 0 -39.5 -11.5t-32.5 -11.5q-3 0 -3 13q0 10 6 14q24 9 69 18.5t61 9.5q6 0 6 -13q-4 -75 -76 -436q39 89 92 152q46 56 105 56q50 0 50 -41q0 -31 -27.5 -122.5t-27.5 -99.5q0 -17 15 -17 q9 0 28 18t34.5 36t16.5 18q3 0 7 -4t4 -6q0 -4 -18 -28t-50 -48.5t-61 -24.5q-14 0 -24.5 9.5t-10.5 23.5q0 12 30.5 105.5t30.5 116.5q0 13 -8 22.5t-20 9.5q-27 0 -55 -33.5t-62 -88.5q-4 -7 -13.5 -22.5l-14.5 -24t-10.5 -20.5t-7.5 -22l-15 -67q-2 -11 -50 -11 q-7 0 -7 8z" />
+<glyph horiz-adv-x="235" d="M30 583q0 7 53 46t73 39q7 0 12.5 -5t5.5 -15q0 -22 -27.5 -124t-27.5 -112q0 -16 10 -16q9 0 36.5 26.5t28.5 26.5q3 0 7 -3.5t4 -6.5q0 -11 -53.5 -53t-71.5 -42q-22 0 -22 16q0 21 30 120.5t30 125.5q0 15 -9 15q-13 0 -40 -24.5t-28 -24.5q-4 0 -7.5 4t-3.5 7z M116 803q0 17 9 28t25 11q17 0 27 -13t10 -28q0 -17 -9.5 -27.5t-24.5 -10.5q-17 0 -27 12.5t-10 27.5z" />
+<glyph horiz-adv-x="239" d="M-61 167q0 13 8.5 22t21.5 9q15 0 31.5 -10t30.5 -10q15 0 22.5 20.5t17.5 66.5q16 75 35.5 199t19.5 142q0 15 -9 15q-13 0 -47 -37l-34 -37q-3 0 -7 3t-4 7t25 30.5t59.5 53.5t55.5 27q7 0 12.5 -5.5t5.5 -15.5q0 -19 -45 -300q-19 -130 -80 -177q-44 -32 -73 -32 q-21 0 -33.5 9t-12.5 20zM125 828q0 17 10 28t26 11q17 0 26.5 -12.5t9.5 -27.5q0 -17 -9.5 -28.5t-24.5 -11.5q-17 0 -27.5 13t-10.5 28z" />
+<glyph horiz-adv-x="421" d="M35 346q0 3 17.5 85t40 208.5t32.5 225.5q0 7 -5 7q-14 0 -62 -16q-8 -2 -8 7q0 16 7 18q34 8 64.5 16.5l44 12t16.5 3.5q13 0 13 -10q0 -7 -16.5 -88l-37.5 -183t-26 -128q36 64 57 92q28 36 56 53t70 17q50 0 50 -31q0 -35 -27.5 -65t-56.5 -44t-55 -20q-2 0 -8 -1 t-8 -2q14 -7 22 -14q43 -43 61 -64q14 -17 20.5 -24t18 -13t25.5 -6q27 0 27 21q0 3 -0.5 9t-0.5 8q0 11 6 11q19 0 19 -37q0 -19 -32 -33t-60 -14q-19 0 -37 17q-9 9 -19 20.5t-25 31.5t-21 27l-19.5 23.5l-17 20t-5.5 8.5q0 4 14 18q2 2 10 2q11 0 22 4q31 14 59.5 45 t28.5 58q0 15 -25 15q-23 0 -52 -27q-20 -17 -84 -113q-14 -23 -20 -48q-10 -44 -16 -81q-2 -12 -4 -15.5t-6 -3.5l-18 -3q-19 -2 -24 -2t-5 2z" />
+<glyph horiz-adv-x="252" d="M55 374q0 5 15 88t34.5 201t28.5 193q2 8 0.5 11t-9.5 1q-54 -15 -62 -15q-6 0 -4 17q1 9 9 12q32 7 62 15t43.5 12t15.5 4q9 0 9 -8q0 -10 -41.5 -253t-41.5 -246q0 -17 11 -17q10 0 30 17.5t36 35t17 17.5q3 0 8.5 -4.5t5.5 -6.5q0 -4 -23 -29.5t-58 -51.5t-61 -26 q-25 0 -25 33z" />
+<glyph horiz-adv-x="650" d="M30 561q0 10 57 54t84 44q17 0 17 -16q0 -17 -3 -41.5t-6.5 -44t-10 -53t-9.5 -50.5q93 210 185 210q14 0 22 -11.5t8 -27.5q0 -66 -44 -198q69 129 111 179q51 58 94 58t43 -28q0 -24 -30 -118t-30 -108q0 -19 14 -19q10 0 43 34t34 34q3 0 7 -4t4 -7q0 -4 -24 -28.5 t-57.5 -49t-54.5 -24.5q-13 0 -21.5 7.5t-8.5 17.5q0 15 32 113.5t32 125.5q0 17 -15 17q-32 0 -104 -109q-55 -83 -75 -155q-3 -9 -12 -11q-20 -3 -35 -3q-8 0 -8 7l24 91q24 91 24 148q0 30 -16 30q-19 0 -54.5 -51t-64.5 -108q-17 -32 -35 -98q-5 -14 -9 -16 q-30 -12 -41 -12q-7 0 -5 9q10 39 23 123.5t13 122.5q0 13 -10 13q-12 0 -44 -31t-33 -31q-11 0 -11 15z" />
+<glyph horiz-adv-x="465" d="M30 587q0 2 24.5 22t60.5 40.5t58 20.5q19 0 19 -18q0 -17 -5 -44t-9.5 -46t-15.5 -57.5t-14 -50.5q60 105 110.5 160.5t96.5 55.5q43 0 43 -37q0 -25 -32 -120.5t-32 -104.5q0 -16 15 -16q11 0 28.5 15t31.5 30.5t15 15.5q3 0 7 -3t4 -6q0 -4 -20 -26.5t-53.5 -45 t-60.5 -22.5t-27 34q0 24 33 113t33 114q0 23 -18 23q-21 0 -64.5 -54.5t-83.5 -117.5q-20 -31 -37 -93q0 -1 -1.5 -5.5l-2.5 -7.5t-3.5 -6t-5.5 -3q-26 -3 -40 -3q-7 0 -5 9q49 196 49 258q0 15 -10 15q-11 0 -43 -26.5t-33 -26.5q-4 0 -8 4.5t-4 9.5z" />
+<glyph horiz-adv-x="377" d="M30 464q0 92 54.5 153.5t137.5 61.5q59 0 87 -42t28 -90q0 -78 -56.5 -141.5t-133.5 -63.5q-56 0 -86.5 35.5t-30.5 86.5zM83 471q0 -107 65 -107q37 0 69.5 39t49 88t16.5 89q0 29 -15.5 53.5t-54.5 24.5q-47 0 -88.5 -64.5t-41.5 -122.5z" />
+<glyph horiz-adv-x="432" d="M20 536v1q3 6 9 15.5t24.5 33.5t37 43t43 34t46.5 15q15 0 15 -27q0 -45 -26 -184q32 77 81 152q31 48 83 48q37 0 50.5 -20.5t13.5 -56.5q0 -91 -61.5 -169t-126.5 -78q-9 0 -26.5 3t-20.5 3q-9 0 -10 -6l-27 -172q-2 -18 7 -19l16 -2t13.5 -1t11 -1t9 -1t6.5 -1t5 -2 t3.5 -2t2 -3t0.5 -4q0 -12 -4 -14.5t-14 -2.5q-1 0 -23 3t-56.5 5.5t-65.5 2.5q-14 0 -14 9q0 11 3 15t13 4h13q9 0 12.5 3t5.5 14q64 368 64 427q0 14 -9 14q-17 0 -54 -47l-36 -46q-4 0 -9 5t-5 9zM164 392q0 -25 53 -25q42 0 84.5 73t42.5 140q0 52 -36 52 q-12 0 -24.5 -8t-24 -24.5t-18.5 -28t-17.5 -33.5t-13.5 -27q-46 -85 -46 -119z" />
+<glyph horiz-adv-x="397" d="M30 411q0 30 14.5 72t39.5 83.5t66 70.5t88 29q36 0 72 -17l11 -4q7 0 18.5 7t17.5 9q4 1 7 -1.5t3 -7.5t-22 -51q-4 -8 -6 -21l-31.5 -175.5l-32 -180.5t-11.5 -69q0 -8 11 -8h21q13 0 21 -1q12 -1 12 -15v-3v-6t-1.5 -4t-4 -2.5t-7.5 -0.5q-1 0 -11 0.5t-26.5 1 t-32.5 0.5q-11 0 -28.5 -1.5t-30.5 -3t-14 -1.5q-4 0 -6 0.5t-4 3t-2 7.5q1 11 4 13.5t14 4.5q20 4 22 8q2 3 4 13q46 203 77 378q-26 -54 -66 -109q-63 -87 -115 -87q-8 0 -17.5 2t-22.5 8.5t-22 21t-9 36.5zM85 432q0 -22 11 -35t26 -13q35 0 119 120q53 80 53 109 q0 9 -15.5 21.5t-40.5 12.5q-51 0 -102 -81t-51 -134z" />
+<glyph horiz-adv-x="295" d="M25 590q0 10 42 45t66 35q16 0 16 -18q0 -23 -22 -144h2q2 6 12.5 34.5t19.5 49.5t19 38q25 46 61 46q15 0 27 -8t12 -22q0 -32 -19 -32q-9 0 -23.5 7.5t-22.5 7.5q-11 0 -20 -14q-14 -21 -46 -103q-3 -8 -6 -19t-4 -12q-7 -29 -14.5 -68.5t-11.5 -56.5q-1 -4 -18.5 -7 t-26.5 -3q-10 0 -10 4q0 2 10 53l20.5 109.5t10.5 79.5q0 31 -10 31q-13 0 -34 -21l-21 -22q-9 0 -9 10z" />
+<glyph horiz-adv-x="289" d="M20 400q0 9 7 15.5t13 6.5q17 0 37 -20l10 -10.5t10 -10l8 -6.5t9.5 -5t10.5 -1q25 0 41 16t16 43q0 16 -18.5 35.5t-41 35t-41 38.5t-18.5 47q0 40 32.5 68.5t77.5 28.5q33 0 53 -12.5t24 -23t4 -18.5q0 -15 -16 -15q-24 0 -40 30q-12 21 -26 21q-22 0 -39 -12t-17 -39 q0 -26 19 -47t41 -34t41 -37t19 -55q0 -38 -32.5 -66t-77.5 -28q-38 0 -72 17.5t-34 37.5z" />
+<glyph horiz-adv-x="256" d="M35 637q0 1 0.5 7t0.5 8q0 6 8 6h50q7 0 8 6q2 10 6.5 44.5t5.5 38.5q1 5 2.5 8t4.5 4.5t10 2.5q4 1 17 1q25 0 25 -5q0 -1 -4.5 -20.5l-9.5 -42.5t-6 -29t0 -7t7 -1h60q9 0 9 -7q0 -19 -12 -19h-60h-3q-5 0 -6 -4q-1 -2 -1 -3q-35 -191 -35 -205q0 -16 15 -16 q11 0 51 37l40 37q2 0 7.5 -4t5.5 -6q0 -4 -26.5 -33t-64.5 -58.5t-60 -29.5q-30 0 -30 30q0 8 22 126.5t22 120.5q-5 8 -6 8h-40q-13 0 -13 5z" />
+<glyph horiz-adv-x="445" d="M25 562q0 2 10 16t26.5 34t31.5 36q26 26 59 26q47 0 47 -30q0 -11 -26.5 -110t-26.5 -120q0 -19 22 -19q27 0 73 65q59 82 84 164q1 3 10 45q1 5 45 10q8 0 8 -9q0 -4 -22.5 -120.5t-22.5 -125.5q0 -20 15 -20q12 0 40 37l29 37q8 0 8 -7q0 -5 -18.5 -34t-48 -58.5 t-51.5 -29.5q-12 0 -20.5 7t-8.5 17q0 18 18.5 99.5t21.5 102.5q-23 -48 -55 -98q-88 -132 -145 -132q-46 0 -46 36q0 9 25 104t25 126q0 23 -16 23q-12 0 -45 -40l-33 -41q-4 0 -8.5 3t-4.5 6z" />
+<glyph horiz-adv-x="396" d="M30 597q0 10 37.5 44t57.5 34q23 0 36 -8q20 -11 26.5 -18t6.5 -20q0 -32 -11 -108t-11 -88q0 -9 12 -19t16 -10q12 0 20 9q6 7 26 33q83 111 83 178q0 32 -19 32q-9 0 -20.5 -2t-19.5 -4t-9 -2q-6 0 -6 15q0 5 32 12.5t50 7.5q34 0 34 -35q0 -14 -2.5 -28t-8.5 -29.5 l-11 -27.5t-16.5 -30.5l-17 -28t-21 -30.5l-21 -28l-23 -29.5l-21.5 -27.5q-9 -12 -19 -28t-21 -16q-17 0 -36 17q-19 14 -26 27t-7 41q0 15 8.5 85.5t8.5 98.5q0 14 -7 18q-10 7 -19 7q-12 0 -27.5 -13.5t-26.5 -27t-12 -13.5q-4 0 -9.5 4.5t-5.5 7.5z" />
+<glyph horiz-adv-x="589" d="M25 600q0 9 41.5 39.5t61.5 30.5q14 0 38 -15q27 -18 27 -39q0 -25 -5.5 -70t-10.5 -80.5t-5 -36.5q0 -10 10 -22t16 -12q8 0 19 15q8 11 39.5 57.5t40.5 57.5q10 12 19 38.5t9 37.5q0 9 -16 25q-5 5 -11.5 10l-9 7t-2.5 4q0 8 11.5 19.5t20.5 11.5q14 0 37.5 -19.5 t23.5 -31.5q0 -13 -12.5 -97.5t-12.5 -100.5q0 -13 11 -24t20 -11q7 0 24 21q49 56 73 91q36 52 37 116q0 26 -17 26q-9 0 -24.5 -2t-27.5 -4.5t-13 -2.5q-6 0 -6 14q0 5 45 14.5t53 9.5q35 0 35 -33q0 -58 -57 -143q-10 -15 -21 -29t-26 -31.5t-22 -25l-27 -29t-24 -25.5 q-9 -9 -15 -9q-29 0 -49 19.5t-20 45.5q0 19 23 122q-70 -108 -101 -147q-3 -4 -11 -15.5t-11 -15.5q-10 -13 -18 -13q-13 0 -35 19q-19 14 -24.5 23.5t-5.5 30.5q0 11 9.5 70t9.5 105q0 10 -12.5 24t-22.5 14q-12 0 -27.5 -12t-26.5 -24t-12 -12q-5 0 -9 5.5t-4 8.5z" />
+<glyph horiz-adv-x="413" d="M25 369q0 28 22 76q3 4 7 4q13 0 13 -7l-5 -14q-4 -13 -4 -24q0 -18 17 -18q18 0 54 39t61 73q4 7 1 17q-44 122 -82 122q-15 0 -37.5 -24t-24.5 -24q-3 0 -6.5 4.5t-3.5 7.5q0 4 12.5 20.5t37 33.5t49.5 17q19 0 31.5 -5t23.5 -22t16.5 -28.5t17.5 -43.5q5 -12 7 -18 l4 -6l5 8q3 4 18 28.5t23 35t22 27t28 24t28 7.5q21 0 21 -34q0 -17 -5 -47q-1 -4 -9 -4t-8 4q0 5 0.5 14t0.5 13q0 20 -13 20q-26 0 -100 -110q-5 -8 -2 -16q44 -125 72 -125q14 0 33 27l19 27q14 0 14 -7q0 -16 -32.5 -55.5t-60.5 -39.5q-10 0 -18 3t-15 11.5t-12 15.5 t-11 22t-9 24t-10 28.5t-10 29.5q-2 1 -2.5 1t-4.5 -4q-2 -3 -36 -46.5t-59 -64t-49 -20.5q-29 0 -29 23z" />
+<glyph horiz-adv-x="376" d="M0 133q0 9 3.5 16t11 11.5t14 7t17.5 5.5t16 5q28 11 44 40q49 90 49 146q0 100 -12.5 182t-44.5 82q-15 0 -30 -12.5t-25 -25t-12 -12.5q-12 0 -12 8q0 4 14 22.5t40 38.5t51 20t40 -14.5t23 -56.5t10.5 -69t5.5 -100q1 -25 2 -38q2 4 22.5 41t28 52t20.5 44.5t20 52.5 q9 29 15 83q1 15 10 15q10 0 20 -6t10 -16q0 -4 -2 -14q-2 -16 -11.5 -40.5t-22 -51.5t-27 -55l-29.5 -54.5l-26.5 -46.5l-20.5 -35l-9 -15l-23 -43.5l-37 -69l-34 -60.5q-12 -19 -32 -31q-47 -29 -61 -29q-7 0 -11.5 7.5t-4.5 15.5z" />
+<glyph horiz-adv-x="353" d="M30 352q0 5 3 11t6.5 9.5t9 9.5t7.5 8l197 220l2 4q-8 -2 -13 -2q-19 0 -63 13.5t-56 13.5q-13 0 -25.5 -10t-20.5 -20t-9 -10q-12 0 -12 7q0 4 11.5 20.5t32.5 34.5t41 18q19 0 70 -18t67 -18q6 0 18 15t23 15q6 0 10 -4.5t4 -10.5q0 -10 -9 -18t-22 -14.5t-17 -10.5 l-183 -202q-4 -4 -4 -6t12 -2q30 -2 96 -7t83 -5q7 0 9.5 3t2.5 11l-1 11v12q0 7 9 7t9 -6q7 -68 7 -71q0 -13 -31 -13h-5q-19 0 -104.5 7t-120.5 7q-3 0 -9.5 -10t-13.5 -10q-11 0 -11 11z" />
+<glyph horiz-adv-x="500" d="M98 291q0 12 6 25.5t12 14.5t141 4t143 3q2 0 2 -9q0 -33 -8 -33q-9 -1 -145 -4.5t-147 -3.5q-4 0 -4 3z" />
+<glyph horiz-adv-x="467" d="M45 164q0 86 57.5 144t144.5 58q79 0 127 -48.5t48 -119.5q0 -85 -58 -144t-141 -59q-76 0 -127 46.5t-51 122.5zM90 156q0 -62 34.5 -95.5t89.5 -33.5q62 0 111 51.5t49 128.5q0 59 -36 94t-91 35q-63 0 -110 -57.5t-47 -122.5z" />
+<glyph horiz-adv-x="363" d="M60 12q0 7 2.5 10t11.5 3h40h5t3 1.5t1.5 2t1 3.5t0.5 5q9 47 21.5 122t20.5 129t8 58q0 11 -3 11q-1 1 -5 1h-53q-11 0 -11 13q0 8 1.5 11t9.5 3q9 0 44.5 -1t48.5 -1t47 1t43 1q8 0 9.5 -2.5t1.5 -11.5q0 -7 -2.5 -10t-11.5 -3h-39q-8 0 -9.5 -2t-3.5 -10 q-30 -197 -45 -309q-1 -7 2 -9.5t11 -2.5h50q11 0 11 -13q0 -8 -1.5 -11t-9.5 -3q-9 0 -46 1t-50 1t-48.5 -1t-44.5 -1q-8 0 -9.5 2.5t-1.5 11.5z" />
+<glyph horiz-adv-x="453" d="M45 11q0 7 12 17q13 12 69.5 50.5t86.5 65.5q73 65 73 122q0 40 -22.5 66.5t-61.5 26.5q-29 0 -58 -20.5t-46 -40.5l-17 -20q-5 0 -11.5 5.5t-6.5 10.5q0 7 22.5 30t64 46.5t80.5 23.5q61 0 93 -30t32 -84q0 -86 -197 -201q-28 -16 -28 -20q0 -1 7 -1h248q6 0 20 24 t15 24q4 0 11 -3t7 -5q0 -3 -7 -17l-18 -36.5t-18 -38.5q-2 -6 -11 -6h-324q-15 0 -15 11z" />
+<glyph horiz-adv-x="409" d="M5 -146q0 12 35 12q24 0 34 -11q37 -44 80 -44q55 0 99.5 47.5t44.5 106.5q0 56 -37.5 83.5t-103.5 27.5q-13 0 -34 -2l-21 -1q-17 0 -17 11t3 14t16 7q172 49 172 167q0 39 -22.5 63t-60.5 24q-29 0 -55 -8.5t-40.5 -17.5t-15.5 -9q-4 0 -7.5 6t-3.5 11q0 4 21 15 t55.5 21t64.5 10q55 0 88.5 -27.5t33.5 -78.5q0 -27 -12.5 -52t-31 -42t-36.5 -29.5t-30.5 -19.5t-12.5 -8t16 -4t38.5 -11t44.5 -22.5t38 -44t16 -69.5q0 -78 -68 -135.5t-152 -57.5q-34 0 -62.5 8t-44 20t-24 22.5t-8.5 17.5z" />
+<glyph horiz-adv-x="484" d="M25 8q0 21 44 78l18 20t16 18q34 41 163 174q15 17 55 55.5t48 38.5q14 0 10 -24l-50 -296q-2 -13 0.5 -15.5t14.5 -2.5h83q7 0 7 -10v-34q0 -8 -1.5 -9t-10.5 -1h-97q-9 0 -10 -1t-2 -7q-1 -4 -1 -6q-3 -27 -9 -71l-10 -75t-4 -33q0 -5 -2.5 -7t-12.5 -4l-42 -8 q-6 -1 -11 4t-3 17l34 180q2 4 1 6t-1.5 3.5t-3 2t-4 0t-5.5 -0.5h-7h-189q-18 0 -18 8zM81 60q0 -6 25 -6h147q13 0 15 2.5t4 17.5l35 216q1 8 -3 9.5t-9 -4.5l-197 -210q-17 -17 -17 -25z" />
+<glyph horiz-adv-x="388" d="M-10 -199q0 10 7 10q42 3 79.5 14t72.5 31.5t55.5 56t20.5 82.5q0 38 -26.5 71.5t-58.5 52.5l-58.5 36t-26.5 25q0 6 11 36l28.5 76.5t27.5 79.5q2 6 15 6q4 0 83 -7.5t85 -7.5q20 0 24 4l2 4l12 24q6 0 13 -2.5t7 -5.5q0 -1 -25 -68q-6 -16 -11 -18q-3 -1 -9 -1t-28 3 t-62 9t-72 10q-23 2 -28 -7q-12 -24 -23 -55.5t-11 -37.5q0 -4 20 -14.5t48 -27.5t56.5 -39.5t48.5 -57.5t20 -74q0 -65 -48 -117.5t-113.5 -78t-127.5 -25.5q-8 0 -8 13z" />
+<glyph horiz-adv-x="471" d="M55 187q0 107 56 204.5t138 169.5q54 47 112 76.5t75 29.5q10 0 10 -19q0 -3 -8 -6q-81 -32 -130 -80q-94 -91 -135 -173q-14 -30 -14 -36q0 -1 6.5 0t20.5 4q37 7 65 7q79 0 125.5 -45t46.5 -128q0 -89 -58.5 -142.5t-142.5 -53.5q-32 0 -59.5 8.5t-53 29t-40 60 t-14.5 94.5zM116 173q0 -31 8.5 -62t37 -59t71.5 -28q54 0 87.5 51.5t33.5 121.5q0 146 -120 146q-19 0 -48 -6.5t-35 -14.5q-35 -47 -35 -149z" />
+<glyph horiz-adv-x="452" d="M45 286q0 4 6 20t14 43.5t13 54.5q3 20 12 20q17 0 17 -9q0 -3 -1 -9.5t-1 -10.5q0 -2 51 -2h268q13 0 13 -9q0 -6 -41.5 -76.5l-100 -166l-73.5 -121.5q-80 -137 -109 -215q-5 -15 -12 -15q-11 0 -21 6t-10 14q0 28 56 122.5t143.5 226t102.5 155.5q5 8 5 13q0 8 -14 8 h-193q-82 0 -85 -9l-13 -40q-6 -8 -10 -9q-17 0 -17 9z" />
+<glyph horiz-adv-x="415" d="M45 130q0 34 14.5 66t35 54.5t41.5 39.5t35.5 27t14.5 12q0 1 -10.5 10.5t-25 25t-29 35.5t-25 47t-10.5 53q0 71 48 116t124 45q62 0 99.5 -35.5t37.5 -98.5q0 -29 -13.5 -58t-32.5 -49.5t-38.5 -37t-33 -26.5t-13.5 -12q0 -1 11.5 -11.5t28 -28.5t32.5 -40t27.5 -53 t11.5 -61q0 -67 -52.5 -110t-129.5 -43q-68 0 -108 33.5t-40 99.5zM99 145q0 -55 30.5 -89t72.5 -34q48 0 81 35.5t33 82.5q0 22 -11.5 48.5t-27.5 48t-33.5 39.5t-29.5 28.5t-14 10.5q-7 0 -30 -20.5t-47 -62.5t-24 -87zM139 534q0 -36 25.5 -79.5t51 -69.5t30.5 -26 q7 0 30.5 21.5t46.5 62.5t23 82q0 48 -28 80.5t-74 32.5q-48 0 -76.5 -32t-28.5 -72z" />
+<glyph horiz-adv-x="437" d="M-6 -185q0 2 32 13q114 40 235 186q20 23 20 32q-2 1 -5 0.5t-12 -4t-12 -4.5q-41 -13 -74 -13q-62 0 -100 45.5t-38 121.5q0 89 62 145.5t146 56.5q70 0 109.5 -52.5t39.5 -138.5q0 -77 -39 -150.5t-101 -125.5q-49 -41 -111.5 -74t-99 -45.5t-43.5 -12.5q-9 0 -9 20z M99 173q0 -55 26.5 -88t79.5 -33q44 0 74 13q25 11 42.5 64t17.5 111q0 61 -25.5 94.5t-66.5 33.5q-66 0 -107 -60.5t-41 -134.5z" />
+</font>
+</defs></svg> 
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/css/font-files/test.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/css/font-files/test.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/css/font-files/test.html	(revision 29468)
@@ -0,0 +1,62 @@
+<!DOCTYPE HTML>
+<html lang="en-En">
+<head>
+  <meta charset="UTF-8">
+  <title>SVG @font-face Test</title>
+</head>
+<body>
+  <h2>@font-face in SVG</h2>
+  
+  <p style="width: 500px"><strong>Problem:</strong> I'm trying trying to place an images in svg format with custom fonts. It works in <code>svg</code> but not in  <code>img</code>. If you open the image in a new tab you will see it rendered with the proper font. The font is served from this same website in this directory.</p>
+  
+  <a href="test_ff.svg">Link to the test.svg</a>
+  
+  <table>
+    <tr><td>
+  <svg width="500" height="200" version="1.1" xmlns = 'http://www.w3.org/2000/svg' xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 500 200">  
+    <defs>
+    <style type="text/css">
+    @font-face {
+      font-family: 'Arvo';
+      font-style: normal;
+      font-weight: normal;
+      src: url(arvo-regular-webfont.woff) format('woff');
+    }
+    </style>
+    </defs>
+    <rect x="0" y="0" height="100" width="500" fill="#eee" />
+    <text x="20" y="50" font-family="Arvo" font-weight="normal" font-size="32">Text using CSS @font-face</text>
+  </svg>
+  </td>
+  <td>
+    <pre>
+      &lt;svg width=&quot;500&quot; height=&quot;200&quot; version=&quot;1.1&quot; xmlns = &#39;http://www.w3.org/2000/svg&#39; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot; viewBox=&quot;0 0 500 200&quot;&gt;  
+           &lt;defs&gt;
+           &lt;style type=&quot;text/css&quot;&gt;
+           @font-face {
+             font-family: &#39;Arvo&#39;;
+             font-style: normal;
+             font-weight: normal;
+             src: url(arvo-regular-webfont.woff) format(&#39;woff&#39;);
+           }
+           &lt;/style&gt;
+           &lt;/defs&gt;
+           &lt;rect x=&quot;0&quot; y=&quot;0&quot; height=&quot;100&quot; width=&quot;500&quot; fill=&quot;#eee&quot; /&gt;
+           &lt;text x=&quot;20&quot; y=&quot;50&quot; font-family=&quot;Arvo&quot; font-weight=&quot;normal&quot; font-size=&quot;32&quot;&gt;Text using CSS @font-face&lt;/text&gt;
+         &lt;/svg&gt;
+  </pre>
+  </td>
+  </tr>
+  <tr>
+    <td><img src="test_ff.svg" width="500" height="200" /></td>
+    <td style="verical-align: top;">
+      <pre>
+        &lt;img src="test_ff.svg" width="500" height="200" /&gt;
+      </pre>
+    </td>
+  </tr>
+  </table> 
+   
+   
+</body>
+</html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/css/font-files/test.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/css/font-files/test.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/css/font-files/test.svg	(revision 29468)
@@ -0,0 +1,15 @@
+
+<svg width="300" height="300" version="1.1" xmlns = 'http://www.w3.org/2000/svg' viewBox="0 0 300 300">  
+  <defs>
+    <style type="text/css">
+   		@font-face {
+   		  font-family: Arvo;
+   		  src: url('arvo-regular-webfont.woff') format('woff');
+   		  font-weight: normal;
+   		  font-style: normal;
+   		}
+   </style>
+  </defs>
+  <rect x="0" y="0" height="300" width="300" fill="#eee" />
+  <text x="100" y="100" font-family="Arvo" font-weight="normal" font-size="32">Text using CSS @font-face</text>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/css/font-files/test_ff.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/css/font-files/test_ff.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/css/font-files/test_ff.svg	(revision 29468)
@@ -0,0 +1,16 @@
+
+
+<svg width="500" height="200" version="1.1" xmlns = 'http://www.w3.org/2000/svg' xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 500 200">  
+  <defs>
+  <style type="text/css">
+  @font-face {
+    font-family: 'Arvo';
+    font-style: normal;
+    font-weight: normal;
+    src: url(arvo-regular-webfont.woff) format('woff');
+  }
+  </style>
+  </defs>
+  <rect x="0" y="0" height="100" width="500" fill="#eee" />
+  <text x="20" y="50" font-family="Arvo" font-weight="normal" font-size="32">Text using CSS @font-face</text>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/css/font-files/test_ffsvg.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/css/font-files/test_ffsvg.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/css/font-files/test_ffsvg.svg	(revision 29468)
@@ -0,0 +1,13 @@
+<svg width="500" height="200" version="1.1" xmlns = 'http://www.w3.org/2000/svg' xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 500 200">  
+  <defs>
+  <font-face font-family="Arvo">
+   <font-face-src>
+    <font-face-uri xlink:href="Arvo-Regular-webfont.svg">
+     <font-face-format string="svg"/>
+    </font-face-uri>
+   </font-face-src>
+  </font-face>
+  </defs>
+  <rect x="0" y="0" height="100" width="500" fill="#eee" />
+  <text x="20" y="50" font-family="Arvo" font-weight="normal" font-size="32">Text using CSS @font-face</text>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/css/fonts.css
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/css/fonts.css	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/css/fonts.css	(revision 29468)
@@ -0,0 +1,72 @@
+@font-face {
+    font-family: 'Arvo';
+    src: url('font-files/arvo-bold-webfont.woff') format('woff');
+    font-weight: bold;
+    font-style: normal;
+}
+@font-face {
+    font-family: 'Arvo';
+    src: url('font-files/arvo-bolditalic-webfont.woff') format('woff');
+    font-weight: bold;
+    font-style: italic;
+}
+@font-face {
+    font-family: 'Arvo';
+    src: url('font-files/arvo-italic-webfont.woff') format('woff');
+    font-weight: normal;
+    font-style: italic;
+}
+@font-face {
+    font-family: 'Arvo';
+    src: url('font-files/arvo-regular-webfont.woff') format('woff');
+    font-weight: normal;
+    font-style: normal;
+}
+@font-face {
+    font-family: 'Euphoria';
+    src: url('font-files/euphoriascript-regular-webfont.woff') format('woff');
+    font-weight: normal;
+    font-style: normal;
+}
+@font-face {
+    font-family: 'Oswald';
+    src: url('font-files/oswald-bold-webfont.woff') format('woff');
+    font-weight: bold;
+    font-style: normal;
+}
+@font-face {
+    font-family: 'Oswald';
+    src: url('font-files/oswald-light-webfont.woff') format('woff');
+    font-weight: normal;
+    font-style: normal;
+}
+@font-face {
+    font-family: 'Shadows Into Light';
+    src: url('font-files/shadowsintolight-webfont.woff') format('woff');
+    font-weight: normal;
+    font-style: normal;
+}
+@font-face {
+    font-family: 'Simonetta';
+    src: url('font-files/simonetta-black-webfont.woff') format('woff');
+    font-weight: normal;
+    font-style: normal;
+}
+@font-face {
+    font-family: 'Simonetta';
+    src: url('font-files/simonetta-blackitalic-webfont.woff') format('woff');
+    font-weight: normal;
+    font-style: italic;
+}
+@font-face {
+    font-family: 'Simonetta';
+    src: url('font-files/simonetta-italic-webfont.woff') format('woff');
+    font-weight: normal;
+    font-style: italic;
+}
+@font-face {
+    font-family: 'Simonetta';
+    src: url('font-files/simonetta-regular-webfont.woff') format('woff');
+    font-weight: normal;
+    font-style: normal;
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/css/method-draw.compiled.css
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/css/method-draw.compiled.css	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/css/method-draw.compiled.css	(revision 29468)
@@ -0,0 +1,417 @@
+#svg_editor .jPicker .Icon{display:inline-block;height:24px;position:relative;text-align:left;width:25px}
+#svg_editor .jPicker .Icon span.Color,#svg_editor .jPicker .Icon span.Alpha{background-position:2px 2px;display:block;height:100%;left:0;position:absolute;top:0;width:100%}
+#svg_editor .jPicker .Icon span.Image{background-repeat:no-repeat;cursor:pointer;display:block;height:100%;left:0;position:absolute;top:0;width:100%}
+#svg_editor .jPicker.Container{z-index:10}
+table#svg_editor .jPicker{width:545px;z-index:20}
+#svg_editor .jPicker .Move{background-color:#ddd;border-color:#fff #666 #666 #fff;border-style:solid;border-width:1px;cursor:move;height:12px;padding:0}
+#svg_editor .jPicker .Title{display:none}
+#svg_editor .jPicker div.Map{border:solid #000 1px;cursor:crosshair;height:260px;margin:0;overflow:hidden;padding:0;position:relative;width:260px}
+#svg_editor .jPicker div[class="Map"]{height:256px;width:256px}
+#svg_editor .jPicker div.Bar{border:solid #000 1px;cursor:n-resize;height:260px;margin:0 15px;overflow:hidden;padding:0;position:relative;width:24px}
+#svg_editor .jPicker div[class="Bar"]{height:256px;width:20px}
+#svg_editor .jPicker .Map .Map1,#svg_editor .jPicker .Map .Map2,#svg_editor .jPicker .Map .Map3,#svg_editor .jPicker .Bar .Map1,#svg_editor .jPicker .Bar .Map2,#svg_editor .jPicker .Bar .Map3,#svg_editor .jPicker .Bar .Map4,#svg_editor .jPicker .Bar .Map5,#svg_editor .jPicker .Bar .Map6{background-color:transparent;background-image:none;display:block;left:0;position:absolute;top:0}
+#svg_editor .jPicker .Map .Map1,#svg_editor .jPicker .Map .Map2,#svg_editor .jPicker .Map .Map3{height:2596px;width:256px}
+#svg_editor .jPicker .Bar .Map1,#svg_editor .jPicker .Bar .Map2,#svg_editor .jPicker .Bar .Map3,#svg_editor .jPicker .Bar .Map4{height:3896px;width:20px}
+#svg_editor .jPicker .Bar .Map5,#svg_editor .jPicker .Bar .Map6{height:256px;width:20px}
+#svg_editor .jPicker .Map .Map1,#svg_editor .jPicker .Map .Map2,#svg_editor .jPicker .Bar .Map6{background-repeat:no-repeat}
+#svg_editor .jPicker .Map .Map3,#svg_editor .jPicker .Bar .Map5{background-repeat:repeat}
+#svg_editor .jPicker .Bar .Map1,#svg_editor .jPicker .Bar .Map2,#svg_editor .jPicker .Bar .Map3,#svg_editor .jPicker .Bar .Map4{background-repeat:repeat-x}
+#svg_editor .jPicker .Map .Arrow{display:block;position:absolute}
+#svg_editor .jPicker .Bar .Arrow{display:block;left:0;position:absolute}
+#svg_editor .jPicker .Preview{font-size:9px;text-align:center}
+#svg_editor .jPicker .Preview div.bgt{height:62px;margin:0 auto;padding:0;width:62px}
+#svg_editor .jPicker .Preview div span{border:1px solid #000;display:block;height:30px;margin:0 auto;padding:0;width:60px}
+#svg_editor .jPicker .Preview .Active{border-bottom-width:0}
+#svg_editor .jPicker .Preview .Current{border-top-width:0;cursor:pointer}
+#svg_editor .jPicker .Button{text-align:center;width:115px}
+#svg_editor .jPicker .Button input{width:100px}
+#svg_editor .jPicker td.Radio{margin:0;padding:0;width:31px}
+#svg_editor .jPicker td.Radio input{margin:0 5px 0 0;padding:0}
+#svg_editor .jPicker td.Text{font-size:12px!important;height:22px;margin:0;padding:0;text-align:left;width:70px}
+#svg_editor .jPicker tr.Hex td.Text{width:100px;color:#666}
+#svg_editor .jPicker tr.Hex td.Text span{width:100px;color:#333}
+#svg_editor .jPicker td.Text input{background-color:#fff;border:1px inset #aaa;height:15px;margin:0 0 0 5px;text-align:left;width:30px;color:#333}
+#svg_editor #color_picker .jPicker tr.Hex td.Text input.Hex{width:50px;display:inline-block;float:none}
+#svg_editor .jPicker tr.Hex td.Text input.AHex{width:20px;display:none}
+#svg_editor .jPicker .Grid{text-align:center;float:right;width:108px}
+#svg_editor .jPicker .Grid span.QuickColor{cursor:pointer;display:inline-block;height:15px;line-height:15px;margin:0;padding:0;width:18px}
+#svg_editor .jPicker td{vertical-align:top}
+#svg_editor .jPicker td.colorsquare{width:275px}
+#svg_editor .jPicker .prev_div{margin-top:-15px}
+#svg_editor .jPicker .actions{position:absolute;bottom:20px;left:20px;right:20px}
+#svg_editor .jPicker .actions .Ok{position:absolute;top:0;right:0}
+#svg_editor .jPicker .actions .Cancel{position:absolute;top:0;left:0}
+#svg_editor .jPicker .color_preview{width:62px;margin:0 auto}
+h2.jGraduate_Title{display:none}
+.jGraduate_Picker{position:absolute;padding:20px}
+.jGraduate_tabs li{display:inline-block;padding:5px 10px;margin-right:5px;cursor:pointer}
+li.jGraduate_tab_current{background:#fff;border-radius:3px 3px 0 0}
+.jGraduate_colPick{display:none}
+.jGraduate_gradPick{display:none;overflow:visible}
+.jGraduate_tabs{position:relative;background-color:#ddd;padding:10px 10px 0 10px;margin:-20px -20px 20px -20px;border-radius:3px 3px 0 0}
+div.jGraduate_Swatch{float:left;margin:0 15px 0 0}
+div.jGraduate_GradContainer{border:solid #000 1px;background-image:url(../images/map-opacity.png);background-position:0 0;height:256px;width:256px;position:relative}
+div.jGraduate_GradContainer div.grad_coord{background:rgba(0,0,0,0.8);border:2px solid white;border-radius:15px;-moz-border-radius:5px;width:14px;height:14px;position:absolute;margin:-7px -7px;top:0;left:0;text-align:center;font-size:8px;line-height:14px;color:white;text-decoration:none;cursor:pointer;-moz-user-select:none;-webkit-user-select:none}
+.jGraduate_AlphaArrows{position:absolute;margin-top:-10px;margin-left:250.5px}
+div.jGraduate_Opacity{border:2px inset #eee;margin-top:14px;background-color:black;background-image:url(../images/Maps.png);background-position:0 -2816px;height:20px;cursor:ew-resize}
+div.jGraduate_StopSlider{margin:-10px 0 0 -10px;width:276px;overflow:visible;background:white;height:45px;cursor:pointer}
+div.jGraduate_StopSection{width:120px;float:left}
+div.jGraduate_StopSection.jGraduate_SpreadMethod{display:none}
+input.jGraduate_Ok,input.jGraduate_Cancel{display:block;width:100px}
+input.jGraduate_Ok{margin:0 0 5px 0}
+.colorBox{float:left;height:16px;width:16px;border:1px solid #808080;cursor:pointer;margin:4px 4px 4px 30px}
+.colorBox+label{float:left;margin-top:7px}
+label.jGraduate_Form_Heading{color:#333;padding:2px;font-weight:bold;font-size:13px}
+div.jGraduate_Form_Section{-moz-border-radius:5px;-webkit-border-radius:5px;padding:15px 5px 5px 5px;margin:5px 2px;width:100px;text-align:center;overflow:auto;background:#eee}
+div.jGraduate_Form label{padding:0 2px;color:#333}
+div.jGraduate_StopSection input[type=text],div.jGraduate_Slider input[type=text]{width:33px;color:#333}
+div.jGraduate_LightBox{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#000;opacity:.5;display:none}
+div.jGraduate_stopPicker{position:absolute;display:none;background:white;padding:20px;border-radius:3px;width:530px;height:300px;box-shadow:0 5px 25px black}
+.jGraduate_gradPick{width:526px}
+.jGraduate_gradPick div.jGraduate_Slider{line-height:160%}
+.jGraduate_gradPick div.jGraduate_Slider label:last-child{position:absolute;right:10px;top:0;color:#999;font-weight:bold}
+.jGraduate_gradPick div.jGraduate_Slider label:last-child input{margin:0 3px 0 0;color:#333}
+.jGraduate_gradPick .jGraduate_Form{float:left;width:270px;position:absolute;left:284px;width:266px;height:200px;top:195px;margin:-3px 3px 0 10px;line-height:200%}
+.jGraduate_gradPick .jGraduate_Form label,.jGraduate_gradPick .jGraduate_Form input{width:auto;float:left}
+.jGraduate_gradPick .jGraduate_Form.jGraduate_rg_field label,.jGraduate_gradPick .jGraduate_Form.jGraduate_rg_field input{width:auto;float:left;font-size:11px}
+.jGraduate_gradPick .jGraduate_Form.jGraduate_rg_field #color_picker_jGraduate_match_ctr{float:none}
+.jGraduate_gradPick .jGraduate_Form label{clear:left}
+.jGraduate_gradPick .jGraduate_Points{position:static;float:left;margin:0;width:auto}
+.jGraduate_Colorblocks{display:table;border-spacing:0 5px}
+.jGraduate_colorblock{display:table-row}
+.jGraduate_Colorblocks .jGraduate_colorblock>*{display:table-cell;vertical-align:middle;margin:0;float:none}
+.jGraduate_gradPick .jGraduate_Form_Section{padding-top:9px}
+.jGraduate_Slider{text-align:center;float:left;width:100%;position:relative;margin:5px 0}
+.jGraduate_Slider .jGraduate_Form_Section{border:0;width:250px;padding:0 2px;overflow:visible}
+.jGraduate_Slider label.prelabel{width:40px;text-align:left}
+.jGraduate_SliderBar{width:140px;float:left;margin:0 5px;border:1px solid #BBB;height:20px;position:relative}
+div.jGraduate_Slider input{margin-top:5px}
+div.jGraduate_Slider img{top:0;left:0;position:absolute;cursor:ew-resize}
+.jPicker .Button .Ok,.jGraduate_Picker .jGraduate_OkCancel .jGraduate_Ok{-webkit-appearance:none;margin:0;position:absolute;bottom:5px;right:5px}
+.jPicker .Button .Cancel,.jGraduate_Picker .jGraduate_OkCancel .jGraduate_Cancel{margin:0;position:absolute;bottom:5px;left:5px}
+body{background:#3f3f3c;font:13px/120% 'Lucida Sans','Lucida Grande','Lucida Sans Unicode',sans-serif;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin:0;padding:0}
+::selection{background:#000;color:#fff}
+::-moz-selection{background:#000;color:#fff}
+html,body{overflow:hidden;width:100%;height:100%}
+::-webkit-scrollbar{width:5px;height:5px;background:#444}
+::-webkit-scrollbar-track{border-radius:10px;background:#444}
+::-webkit-scrollbar-thumb{border-radius:10px;background:#666}
+::-webkit-scrollbar-corner{background:#444}
+#browser-not-supported{font-size:.8em;font-family:Verdana,Helvetica,Arial;color:#000}
+#svgroot{-moz-user-select:none;-webkit-user-select:none;position:absolute;top:0;left:0}
+#svg_editor{background:#2f2f2c}
+#menu_bar{padding:0 0 0 50px;background:#2f2f2c;position:relative;z-index:2}
+#menu_bar.active .menu.open .menu_list{display:block}
+.menu{position:relative;z-index:5;color:#333;display:inline-block}
+.menu_title{cursor:pointer;display:inline-block;padding:7px 10px;z-index:10;color:#fff;position:relative;height:16px;vertical-align:top}
+.touch .menu_title{padding:7px 17px;height:26px;line-height:26px}
+.menu .menu_title:hover{background:rgba(255,255,255,0.1)}
+.menu_list .separator{margin:5px 0;border-top:solid #ddd 1px}
+.menu_list{display:none;position:absolute;top:28px;left:0;white-space:nowrap;background:white;padding:7px 0;border-radius:0 3px 3px 3px;box-shadow:0 0 20px rgba(0,0,0,0.8)}
+.touch .menu_list{top:38px}
+#menu_bar.active .menu.open .menu_title{background:white;color:#333}
+.menu_list .menu_item{position:relative;overflow:hidden;line-height:22px;padding:5px 69px 5px 25px;cursor:default;color:#333}
+.menu_list .menu_item.tool_button{background:transparent;border:0;margin:0;padding:5px 55px 5px 25px;height:auto;width:auto}
+.menu_list .menu_item.push_button_pressed:before{content:'â';position:absolute;display:block;left:7px;top:3px;width:20px;height:20px}
+.menu_list .menu_item:hover,.menu_list .menu_item.push_button_pressed:hover{background:rgba(0,0,0,0.1);color:#000}
+.menu_list .menu_item.disabled:hover,.menu_list .menu_item.push_button_pressed.disabled:hover{background:transparent;color:#333}
+.menu_list .menu_item.push_button_pressed{background:transparent;border:0;width:auto;height:auto;margin:0}
+.menu_list .menu_item span{display:block;position:absolute;right:10px;padding:5px;background:rgba(0,0,0,0.1);top:6px;height:10px;text-align:center;font-size:10px;line-height:120%}
+#svgcanvas{line-height:normal;display:inline-block;background-color:#a0a0a0;text-align:center;vertical-align:middle;width:640px;height:480px;position:relative;background:#3f3f3c}
+#rulers>div{position:absolute;background:#2f2f2c;z-index:1;overflow:hidden;-webkit-font-smoothing:none}
+#rulers #ruler_corner{top:30px;left:50px;width:15px;height:15px;border:solid #444 1px;z-index:2}
+#ruler_x{height:15px;top:30px;left:66px;right:175px;border-top:solid #444 1px;border-right:solid #444 1px}
+#ruler_x_cursor{height:15px;border-right:dotted #999 1px;position:absolute;background:#2f2f2c}
+#ruler_y_cursor{width:15px;border-top:dotted #999 1px;position:absolute;background:#2f2f2c}
+#rulers.moved #ruler_corner,#rulers.moved #ruler_x{top:101px}
+#ruler_y{width:15px;top:46px;left:50px;bottom:40px;border-left:solid #444 1px;border-bottom:solid #444 1px}
+#rulers.moved #ruler_y{top:116px}
+#ruler_x canvas:first-child{margin-left:-16px}
+#ruler_x canvas{float:left}
+#ruler_y canvas{margin-top:-16px}
+#ruler_x>div,#ruler_y>div{overflow:hidden}
+#palette{display:block;position:absolute;z-index:2;left:10px;bottom:5px;width:410px;right:145px;height:30px}
+.palette_item{height:20%;width:5.2%;float:left;cursor:url(../images/eyedropper.png) 0 16,crosshair}
+.palette_item.transparent,.palette_item.white,.palette_item.black{background:#fff;position:absolute;width:10px;height:10px;left:-10px;top:0}
+.palette_item.transparent{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNXG14zYAAAAVdEVYdENyZWF0aW9uIFRpbWUAOC8yMi8xMg1cp6sAAABESURBVBiVjdBBCgAgCETRr/e/87SJKFPLnfIcQRMIwMBIShIAvgZzoSrfkzrs8WyF1+kX9r3p8AE7nL7kSpSshN+JEQ8GixkF0mSevgAAAABJRU5ErkJggg==)}
+.palette_item.black{background:#000;top:10px}
+.palette_item.white{background:#fff;top:20px}
+#color_tools{position:relative;width:48px;height:48px;margin:6px 6px 0 6px}
+.touch #color_tools{width:auto;height:auto}
+#tool_fill{position:absolute;top:0;left:0;z-index:1}
+.touch #tool_fill{position:static;width:36px;height:36px;margin-bottom:10px}
+#tool_fill.active,#tool_stroke.active{z-index:2}
+#tool_stroke{top:14px;left:14px}
+.touch #tool_fill.active,.touch #tool_stroke.active{outline:4px solid #09f}
+#tool_fill,#tool_stroke,#tool_canvas{box-shadow:0 0 0 1px #2f2f2c;position:absolute}
+.touch #tool_fill,.touch #tool_stroke,.touch #tool_canvas{position:relative;top:0;left:0}
+#color_canvas_tools{float:left;cursor:pointer}
+#tool_fill .color_block{width:24px;height:24px;overflow:hidden;border:solid #ccc 1px}
+.touch #tool_eyedropper{margin-top:6px}
+.touch #tool_fill .color_block{width:36px;height:36px}
+.touch #tool_fill .color_block svg{width:36px!important;height:36px!important}
+.touch #tool_switch{display:none}
+#use_panel .tool_button,#path_node_panel .tool_button{color:#999;border:solid #3f3f3c 1px;border-radius:3px;padding:3px 10px 3px 40px;background:transparent;position:relative;margin-top:10px;width:90px;height:23px;line-height:24px}
+#use_panel .tool_button{padding-left:10px;margin-bottom:10px;width:124px}
+#path_node_panel .tool_button img,#path_node_panel .tool_button svg{position:absolute;left:5px;top:3px}
+#color_tools #tool_fill .color_block:hover,#color_tools #tool_stroke .color_block:hover{border-color:#fff}
+#color_tools #tool_fill .color_block>div{position:absolute;top:0;left:0}
+.touch #color_tools #tool_fill .color_block>div{position:relative}
+#color_tools #tool_fill .color_block #fill_bg,#color_tools #tool_stroke .color_block #stroke_bg{position:absolute;top:1px;left:1px;bottom:1px;right:1px}
+.touch #color_tools #tool_fill .color_block #fill_bg,.touch #color_tools #tool_stroke .color_block #stroke_bg{width:36px;height:36px;right:auto;bottom:auto}
+.touch #tool_stroke{position:relative;top:0;left:0;z-index:0}
+#stroke_color:after{content:'';position:absolute;display:block;width:8px;height:8px;left:8px;top:8px;background:#ccc;box-shadow:0 0 0 1px #000}
+.touch #stroke_color:after{height:14px;left:10px;position:absolute;top:10px;width:14px}
+#color_tools #tool_switch{cursor:pointer;opacity:.7;width:11px;height:11px;background:transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABV0RVh0Q3JlYXRpb24gVGltZQA2LzE0LzEyP6j5+gAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNXG14zYAAAB4SURBVBiVjZHRCYUwDEVvxIF0kZKN7EjiIrrReR/PSNSKXiikcE5JUtMeADMzXQIcdRfgFWqlyyB7ap1wL+0HAnIv1DqRJUBxTkLUWXIvh9AHkIeb58UkIUnDMH4ZR0otCfhv4ynbtp7ut722ZniFG8L9xx4Ek6QfN9huARmYwR0AAAAASUVORK5CYII=) top left no-repeat;position:absolute;top:-2px;left:28px}
+#color_tools #cross:hover{opacity:1}
+#color_tools #tool_stroke:hover #stroke_color:after{background:#fff}
+#color_tools #tool_stroke .color_block{width:24px;height:24px;overflow:hidden;border:solid #ccc 1px}
+.touch #color_tools #tool_stroke .color_block{width:36px;height:36px}
+#color_tools #tool_stroke .color_block>div{position:absolute;bottom:0;right:0}
+.touch #color_tools #tool_stroke .color_block>div{position:relative}
+#color_tools .icon_label{padding:0;width:24px;height:100%;cursor:pointer;position:absolute}
+#linkLabel>svg{height:20px;padding-top:4px}
+div#workarea{display:inline-table-cell;position:absolute;top:30px;left:50px;bottom:40px;right:175px;background-color:#444;overflow:auto;text-align:center;-webkit-transition:-webkit-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);-moz-transition:-moz-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);-o-transition:-o-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);-ms-transition:-ms-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);transition:transform 500ms cubic-bezier(0.13,0.66,0.24,0.92)}
+.touch div#workarea{top:40px}
+.menu .menu_list{display:none;position:absolute}
+.tool_button,.tool_button_current,.tool_button_pressed{cursor:pointer}
+.tool_button:hover,.push_button:hover,.buttonup:hover,.buttondown,.tool_button_current,.push_button_pressed{background-color:#fff}
+.tool_button.disabled,.tool_button.disabled:hover{opacity:.3;background-color:#aaa}
+#tools_left .tool_button{background:#2f2f2c;position:relative}
+#tools_left .tool_button.loaded{background:#ccc}
+#tools_left .tool_button.loaded:hover{background:#fff}
+#tools_left .tool_button:after,#tools_left .tool_button_current:after{position:absolute;content:'';border:solid #2f2f2c 2px;top:-1px;left:-1px;width:26px;height:26px;z-index:0}
+#tools_left .tool_button_current{background-color:#0cf}
+#main_icon span{position:absolute;width:100%;height:100%;display:block;z-index:2}
+#tools_top{position:absolute;width:160px;height:100%;background:#2f2f2c;right:0;top:20px;border-bottom:0;overflow:visible;padding:0 0 0 15px}
+.touch #tools_top{top:30px}
+label{display:block;color:#999}
+div#font-selector{width:140px;height:300px;overflow:auto;margin:0 auto;position:absolute;top:27px;right:0;border:1px solid black;padding:10px;display:none;background-color:white;z-index:10;border-radius:3px;box-shadow:0 5px 10px rgba(0,0,0,0.7)}
+div#font-selector img{width:100%}
+div#font-selector .font-item{border-bottom:solid #ddd 1px;padding:5px 10px;margin:0 -10px}
+div#font-selector .font-item:hover{background-color:#eee}
+#tools_top #marker_panel *{float:left}
+#tools_top #marker_panel h4{float:none}
+#tools_top #marker_panel .dropdown .icon_label{width:36px;height:20px;margin-top:2px;border:solid #3f3f3c 1px;text-align:center}
+#tools_top #marker_panel .dropdown button{margin-top:2px}
+#tools_top #marker_panel #marker_panel_title{float:none;color:#fff;margin-bottom:3px}
+#tools_top #marker_panel .dropdown .icon_label img{float:none}
+#color_picker input[type=text],#color_picker input[type=number]{width:30px;background:#fff}
+.dropdown_set input[type=text],.dropdown_set input[type=number]{width:50px}
+input[type=text].wide,input[type=number].wide{width:110px}
+input[type=text].tuco,input[type=number].tuco{width:150px}
+input[type=submit],input[type=button],button{background:#4f80ff;color:#fff;border-radius:3px;padding:7px 17px;border:0;line-height:140%;font-size:14px;font-weight:bold;font-family:sans-serif}
+input[type=submit]:hover,button:hover{box-shadow:inset 0 3px 10px rgba(255,255,255,0.1),inset 0 -3px 10px rgba(0,0,0,0.2)}
+input[type=submit]:hover,button:hover{background:#2f84c1}
+input[type=submit]:active,button:active{box-shadow:inset 0 2px 2px rgba(0,0,0,0.2);border-bottom:solid rgba(255,255,255,0.1) 1px}
+#tools_left{position:absolute;border-right:0;width:50px;top:30px;bottom:0;left:0;background:#2f2f2c;z-index:4}
+#workarea.wireframe #svgcontent *{fill:none;stroke:#000;stroke-width:1px;stroke-opacity:1.0;stroke-dasharray:0;opacity:1;pointer-events:stroke;vector-effect:non-scaling-stroke;filter:none}
+#workarea.wireframe #svgcontent text{fill:#000;stroke:none}
+#workarea.wireframe #canvasBackground>rect{fill:#FFF!important}
+#workarea #canvasBackground>rect{stroke:transparent!important}
+.context_panel{display:none}
+#canvas_panel{display:block}
+#multiselected_panel .selected_tool{vertical-align:12px}
+#cur_context_panel{position:absolute;top:47px;left:68px;line-height:22px;overflow:auto;border-bottom:0;border-right:0;padding-left:5px;font-size:12px;background:black;color:#999;opacity:.5;padding:0 10px;border-radius:0 10px 10px 0}
+#cur_context_panel a{float:none;text-decoration:none;color:#fff}
+#cur_context_panel a:hover{text-decoration:underline}
+#tools_left .tool_button,#tools_left .tool_button_current{position:relative;z-index:11}
+.flyout_arrow_horiz{position:absolute;bottom:-1px;right:0;z-index:10}
+.dropdown{position:relative;float:left}
+.dropdown button{width:21px;height:22px;padding:0 3px 0 3px;border:0;background-color:#555;border-radius:0 2px 2px 0;margin-left:-1px;position:relative}
+.dropdown button:hover{background-color:#666}
+.dropdown button:after{content:'';position:absolute;border:solid transparent 4px;border-top-color:#999;top:9px;left:6px}
+.dropdown button.down{border-left:1px solid #808080;border-top:1px solid #808080;border-right:1px solid #fff;border-bottom:1px solid #fff;background-color:#b0b0b0}
+.dropdown ul{list-style:none;position:absolute;margin:0;padding:0;left:-80px;top:26px;z-index:4;display:none}
+.dropup ul{top:auto;bottom:26px;border-radius:3px;box-shadow:0 5px 10px #000}
+.dropup ul:after{content:'';display:block;position:absolute;bottom:-10px;right:50%;top:auto;width:0;height:0;border:solid transparent 5px;border-top-color:#fff}
+.dropdown li{display:block;width:120px;padding:5px 10px;color:#333;background:#fff;margin:0;line-height:16px}
+.dropdown li:first-child{border-radius:3px 3px 0 0}
+.dropdown li:last-child{border-radius:0 0 3px 3px}
+.dropdown li:hover{background-color:#ddd;color:#000}
+.dropdown li.special{padding:10px;background:white;border:0;box-shadow:0 3px 10px black;border-radius:3px!important}
+.dropdown li.special:after{content:'';display:block;position:absolute;top:-10px;right:50%;border:solid transparent 5px;border-bottom-color:#fff}
+.dropdown li.special.down:after{bottom:-10px;right:50%;top:auto;border:solid transparent 5px;border-top-color:#fff}
+.tool_button,.push_button,.tool_button_current,.push_button_pressed{height:27px;width:27px;border:solid #2f2f2c 8px;border-left-width:13px;margin:0;background-color:#ddd;cursor:pointer}
+#main_menu li#tool_open,#main_menu li#tool_import{position:relative;overflow:hidden}
+#tool_image{overflow:hidden}
+#tool_open input,#tool_import input,#tool_import_bitmap input{position:absolute;opacity:0;font-size:10em;top:-5px;right:-5px;margin:0;cursor:pointer}
+.disabled{opacity:.5;cursor:default}
+.width_label{padding-right:5px}
+#text{position:absolute;left:-9999px}
+#tool_bold span,#tool_italic span{position:absolute;width:100%;height:100%;top:0;left:0;background:#ccc;opacity:0}
+#url_notice{padding-top:4px;display:none}
+#color_picker{position:absolute;display:none;background:#fff;height:350px;border-radius:3px;z-index:5;box-shadow:0 5px 10px #000;width:530px}
+.tools_flyout{position:absolute;display:none;cursor:pointer;width:385px;z-index:10;left:47px!important;height:324px;background:#fff;border-radius:5px;box-shadow:0 5px 10px rgba(0,0,0,0.5)}
+.tools_flyout_v{position:absolute;display:none;cursor:pointer;width:30px}
+.tools_flyout .tool_button{float:left;background-color:#fff;height:24px;width:24px}
+#tools_bottom{position:absolute;left:50px;right:0;bottom:0;height:40px;overflow:visible;background:#2f2f2c}
+#tools_bottom_1{width:115px;float:left}
+#tools_bottom_2{position:relative;float:left;margin-top:5px}
+#tools_bottom input[type=text]{width:3.2em}
+#tools_top h4{color:#fff;font-weight:normal;margin:0;padding:10px 0 5px 0}
+#tools_top .dropdown .icon_label{border:1px solid transparent;height:auto}
+#tools_top.multiselected #align_tools{display:none}
+#tools_top.multiselected #multiselected_panel{display:block!important}
+#tools_top.multiselected #multiselected_panel .hidable{display:none}
+.draginput_cell{float:left;height:26px;height:26px;border:solid #3f3f3c 10px;outline:solid #2f2f2c 1px;background:#ddd;cursor:pointer;position:relative}
+.draginput_cell:hover{background:#fff}
+.draginput_cell:after{content:'';position:absolute;top:0;left:0;border:solid #3f3f3c 1px;height:26px;width:26px;z-index:0}
+.align_buttons .draginput_cell:nth-child(1){border-radius:3px 0 0 0}
+.align_buttons .draginput_cell:nth-child(3){border-radius:0 3px 0 0}
+.align_buttons .draginput_cell:nth-child(4){border-radius:0 0 0 3px}
+.align_buttons .draginput_cell:nth-child(6){border-radius:0 0 3px 0}
+.align_buttons .push_button{display:block;float:left}
+#option_lists ul{display:none;position:absolute;height:auto;z-index:3;margin:0;list-style:none;padding-left:0}
+#option_lists .optcols2{width:70px;margin-left:-15px}
+#option_lists .optcols3{width:192px;margin-left:-105px;margin-top:-25px;background:#fff;padding:5px;box-shadow:0 5px 10px #000;border-radius:3px}
+#option_lists .optcols3:after{content:'';display:block;position:absolute;top:-10px;right:70px;border:solid transparent 5px;border-bottom-color:#fff}
+#option_lists .tool_button,#option_lists .push_button,#option_lists .tool_button_current,#option_lists .push_button_pressed{border:0;background:transparent}
+#option_lists .tool_button:hover{background:#ddd}
+#option_lists ul li.current{background-color:#f4e284}
+#option_lists .optcols4{width:130px;margin-left:-44px}
+#option_lists ul[class^=optcols] li{float:left}
+ul li.current{background-color:#f4e284}
+#option_lists ul li{margin:0;border-radius:0;-moz-border-radius:0;-webkit-border-radius:0}
+#copyright{text-align:right;padding-right:.3em}
+#svg_source_editor{display:none}
+#svg_source_editor #svg_source_overlay{position:absolute;top:0;right:0;left:0;bottom:0;background-color:black;opacity:.6;z-index:5}
+#svg_source_editor #svg_source_container{position:absolute;top:30px;left:100px;right:100px;bottom:30px;background-color:#fff;border-radius:3px;opacity:1.0;text-align:center;z-index:6;padding:15px 0}
+#svg_source_editor form{position:absolute;display:block;top:15px;bottom:55px;left:15px;right:12px;padding:5px;font-size:12px}
+#svg_source_textarea{width:100%;height:100%;line-height:140%;font-family:'Lucida Sans','Lucida Grande','Lucida Sans Unicode',sans-serif;font-size:12px}
+#svg_source_editor #tool_source_back{position:absolute;bottom:45px;left:15px;right:15px}
+#svg_source_editor #tool_source_back #tool_source_save{display:block;position:absolute;right:0}
+#svg_source_editor #tool_source_back #tool_source_cancel{display:block;position:absolute;left:0}
+button.cancel,input.Cancel,input.cancel,input.jGraduate_Cancel,button.cancel{-webkit-appearance:none;background-color:#999;box-shadow:0 0 1px rgba(0,0,0,0.5);margin:0}
+#shape_buttons{overflow:auto;top:0;bottom:0;left:110px;right:0;position:absolute;vertical-align:top}
+#shape_cats{min-width:110px;display:block;position:absolute;left:0;top:0;height:300px;background:#eee;border-radius:3px 0 0 3px;z-index:2}
+#shape_cats>div{line-height:1em;padding:0 .5em;border-bottom:1px solid #ddd;background:#e8e8e8;color:#444;height:26px;line-height:26px}
+#shape_cats>div:first-child{border-radius:3px 0 0 0}
+#shape_cats>div:last-child{border-radius:0 0 0 3px}
+#shape_cats div:hover{background:#efefef;color:#000}
+#shape_cats div.current{font-weight:bold;background:#3f3f3c;color:#fff;position:relative}
+#shape_cats div.current:after{content:'';position:absolute;right:-26px;top:0;border:solid transparent 13px;border-left-color:#3f3f3c}
+.toolbar_button button .svg_icon{display:none}
+#dialog_box{display:none}
+#dialog_box_overlay{background:black;opacity:.5;height:100%;left:0;position:absolute;top:0;width:100%;z-index:6}
+#dialog_content{height:95px;margin:10px 10px 5px 10px;overflow:auto;text-align:left;font-size:13px}
+#dialog_buttons input:last-child{background:#999!important;position:absolute;left:10px;bottom:10px}
+#dialog_buttons input:first-child{position:absolute;right:10px;bottom:10px}
+#dialog_content.prompt{height:75px}
+#dialog_content p{margin:10px;line-height:1.3em}
+#dialog_container{position:absolute;left:50%;top:50%;width:300px;margin-left:-150px;height:150px;margin-top:-80px;position:fixed;z-index:50001;background:#fff}
+#dialog_container,#dialog_content{border-radius:3px}
+#dialog_buttons input[type=text]{width:90%;display:block;margin:0 0 5px 11px}
+#dialog_buttons input[type=button]{margin:0 1em}
+.invisible{visibility:none}
+.ui-slider{position:relative;text-align:left}
+.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}
+.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0}
+.ui-slider-horizontal{height:.8em}
+.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}
+.ui-slider-horizontal .ui-slider-range{top:0;height:100%}
+.ui-slider-horizontal .ui-slider-range-min{left:0}
+.ui-slider-horizontal .ui-slider-range-max{right:0}
+.ui-slider-vertical{width:.8em;height:100px}
+.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}
+.ui-slider-vertical .ui-slider-range{left:0;width:100%}
+.ui-slider-vertical .ui-slider-range-min{bottom:0}
+.ui-slider-vertical .ui-slider-range-max{top:0}
+.ui-slider{background:#3f3f3c;border-radius:10px}
+.ui-slider-handle{box-shadow:0 3px 3px rgba(0,0,0,0.3);border-radius:30px;background:#fff;background-image:-ms-linear-gradient(top,#ccc 0,#fff 100%);background-image:-moz-linear-gradient(top,#ccc 0,#fff 100%);background-image:-o-linear-gradient(top,#ccc 0,#fff 100%);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#ccc),color-stop(1,#fff));background-image:-webkit-linear-gradient(top,#ccc 0,#fff 100%);background-image:linear-gradient(top,#ccc 0,#fff 100%)}
+.ui-slider-handle:focus{outline:0}
+#shape_buttons{background:#fff;border-radius:0 3px 3px 0;padding:10px}
+.tools_flyout .tool_button,.tools_flyout .tool_flyout{background:#fff;width:40px;height:40px;margin:5px;border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;border-width:0}
+.contextMenu{position:absolute;z-index:99999;border:solid 1px rgba(0,0,0,.33);background:rgba(255,255,255,.95);padding:5px 0;margin:0;display:none;font:12px/15px 'Lucida Sans','Lucida Grande',Helvetica,Verdana,sans-serif;border-radius:5px;-moz-border-radius:5px;-moz-box-shadow:2px 5px 10px rgba(0,0,0,.3);-webkit-box-shadow:2px 5px 10px rgba(0,0,0,.3);box-shadow:2px 5px 10px rgba(0,0,0,.3)}
+.touch .contextMenu{border:solid 5px rgba(0,0,0,.7);padding:0;margin:0 0 0 20px;font:18px/24px sans-serif;border-radius:5px;-webkit-box-shadow:2px 5px 20px 3px #000;box-shadow:2px 5px 20px rgba(0,0,0,0.5)}
+.touch .contextMenu:after{content:'';width:0;height:0;border:solid transparent 10px;border-right-color:rgba(0,0,0,.7);position:absolute;top:50%;left:-25px;margin-top:-10px;z-index:1000}
+.contextMenu LI{list-style:none;padding:0;margin:0}
+.contextMenu .shortcut{width:115px;text-align:right;float:right}
+.touch .contextMenu .shortcut{display:none}
+.touch .shortcut{display:none}
+.contextMenu A{-moz-user-select:none;-webkit-user-select:none;color:#222;text-decoration:none;display:block;line-height:20px;height:20px;background-position:6px center;background-repeat:no-repeat;outline:0;padding:0 15px 1px 20px}
+.touch .contextMenu A{padding:0 15px;border-bottom:#;font-weight:bold;border-top:solid 1px #e3e3e3;height:40px;line-height:40px;min-width:200px}
+.contextMenu LI.hover A{background-color:#2e5dea;color:white;cursor:default}
+.contextMenu LI.disabled A{color:#999}
+.touch .contextMenu LI.disabled A{display:none}
+.contextMenu LI.hover.disabled A{background-color:transparent}
+.contextMenu LI.separator{border-top:solid 1px #e3e3e3;padding-top:5px;margin-top:5px}
+.touch .contextMenu LI.separator{border-top:0;margin:0;padding:0}
+#menu{display:none;position:absolute;top:0;left:0;right:0;height:30px;background:#000;z-index:10;color:#fff}
+#workarea.rect,#workarea.line,#workarea.ellipse,#workarea.path,#workarea.shapelib{cursor:crosshair}
+#workarea.text{cursor:text}
+#workarea.eyedropper{cursor:url(../images/eyedropper.png) 0 16,crosshair}
+#workarea.fhpath{cursor:url(../images/pencil_cursor.png) 0 20,crosshair}
+#workarea.rotate *{cursor:url(../images/rotate.png) 12 12,auto}
+#workarea.select text,#workarea.multiselect text{cursor:default}
+#workarea.n-resize *{cursor:n-resize!important}
+#workarea.e-resize *{cursor:e-resize!important}
+#workarea.w-resize *{cursor:w-resize!important}
+#workarea.s-resize *{cursor:s-resize!important}
+#workarea.ne-resize *{cursor:ne-resize!important}
+#workarea.se-resize *{cursor:se-resize!important}
+#workarea.nw-resize *{cursor:nw-resize!important}
+#workarea.sw-resize *{cursor:sw-resize!important}
+#workarea.copy{cursor:copy}
+#workarea.zoom{cursor:crosshair;cursor:-moz-zoom-in;cursor:-webkit-zoom-in}
+#workarea.zoom.out{cursor:crosshair;cursor:-moz-zoom-out;cursor:-webkit-zoom-out}
+#selectorRubberBand{shape-rendering:crispEdges}
+.clearfix:before,.clearfix:after{content:"";display:table}
+.clearfix:after{clear:both}
+.clearfix{*zoom:1}
+#group_title{display:none}
+#base_unit_container{display:none;position:absolute;z-index:20}
+.draginput{background:#3f3f3c;border-radius:3px;-webkit-font-smoothing:antialiased;width:70px;height:70px;display:block;position:relative;float:left;margin:0 5px 5px 0}
+.draginput .caret{border:solid transparent 5px;border-top-color:#999;position:absolute;width:0;height:0;right:5px;margin-top:-2px;top:50%}
+.draginput label{margin:28px 10px 0 5px;font-size:14px;color:white;font-weight:bold;font-family:sans-serif}
+.draginput label#resolution_label,.draginput label#seg_type_label{font:bold 12px/110% sans-serif;position:absolute;left:auto;right:10px;z-index:0;text-align:right}
+.draginput label#seg_type_label{margin-top:40px}
+.draginput label#seg_type_label .caret{top:66%}
+.draginput label#resolution_label .pull{position:relative;left:-15px}
+.draginput label#resolution_label span{right:-13px;left:auto;font-size:16px;top:2px;font-weight:bold;color:white}
+.touch .draginput.active:after{content:attr(data-value);display:block;position:absolute;background:#fff;font-size:16px;top:0;width:30px;left:-50px;padding:0 5px;color:#333;z-index:10;font-family:sans-serif;font-weight:bold;text-align:right;padding-right:10px;height:20px;line-height:20px;letter-spacing:-1px}
+.touch .draginput.active:before{content:'';height:0;width:0;position:absolute;top:5px;left:-5px;border:solid transparent 5px;border-left-color:#fff}
+.draginput input{border:0;background:transparent;font:24px/normal sans-serif;text-align:center;color:#4f80ff;padding:30px 0 16px;width:100%;height:24px;position:relative;z-index:2}
+.draginput.twocol{width:145px}
+#tool_font_family .caret{right:40px;top:55%}
+#tool_font_family select{width:110px}
+#tool_bold,#tool_italic{font:bold 20px/35px serif;text-align:center;position:absolute;padding:0;color:#ccc;background:transparent;border:0;width:35px;height:35px;margin:0;top:0;right:0}
+#tool_italic{border-top:solid #2f2f2c 2px;top:35px;font-weight:bold;font-style:italic;font-size:24px}
+#tool_bold:hover,#tool_italic:hover{color:#fff}
+#tool_bold.active,#tool_italic.active{color:#50a0ff}
+#preview_font{font-size:20px;color:#fff;height:70px;line-height:75px;padding:0 0 0 10px;white-space:nowrap;width:100px;overflow:hidden;border-right:solid #2f2f2c 2px;position:relative}
+#preview_font:after{content:'';position:absolute;right:0;top:3px;bottom:3px;width:15px;border-right:solid #3f3f3c 10px;background:transparent url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAxIDEiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxsaW5lYXJHcmFkaWVudCBpZD0iZzU4MCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIwJSIgeTE9IjAlIiB4Mj0iMTAwJSIgeTI9IjAlIj48c3RvcCBzdG9wLWNvbG9yPSIjM2YzZjNjIiBzdG9wLW9wYWNpdHk9IjAiIG9mZnNldD0iMCIvPjxzdG9wIHN0b3AtY29sb3I9IiMzZjNmM2MiIG9mZnNldD0iMC43Ii8+PC9saW5lYXJHcmFkaWVudD48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBmaWxsPSJ1cmwoI2c1ODApIiAvPjwvc3ZnPg==)}
+.draginput input,.draginput input:hover,.draginput input:active{cursor:url(../images/drag.png),move;cursor:-webkit-grab;cursor:-moz-grab}
+.draginput input[type="checkbox"],.draginput input[type="checkbox"]:hover,.draginput input[type="checkbox"]:active{cursor:pointer}
+.draginput.checkbox{cursor:pointer}
+.draginput.active input,.draginput.active input:hover,.draginput.active input:active{cursor:url(../images/dragging.png),move;cursor:-webkit-grabbing;cursor:-moz-grabbing}
+.draginput span{font:11px/130% sans-serif;color:#ccc;display:block;position:absolute;top:5px;left:5px;text-align:left}
+.draginput.error{background:#900}
+.draginput.error input{color:#fff}
+.draginput.stroke_tool{text-align:center}
+.draginput select{-webkit-appearance:none;opacity:0;display:block;position:absolute;height:100%;width:100%;margin:0;z-index:1;top:0;left:0}
+.draginput_cursor{position:absolute;top:50%;width:100%;border-top:solid rgba(50,100,200,0.25) 3px;margin-top:-2px;z-index:0}
+.draginput input[readonly=readonly]{-webkit-appearance:none;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
+.draginput input:focus{background:#50a0ff;color:#fff;outline:0;box-shadow:0 0 5px 2px #50a0ff}
+.draginput input:focus+span{z-index:10;color:#fff}
+.draginput .push_bottom{bottom:0;position:absolute}
+#zoom_label{height:20px;background:transparent;cursor:default!important;width:auto;padding:0 10px;margin:0}
+#zoom_panel{padding:9px 0;right:175px;position:absolute}
+#zoom_label img,#zoom_label svg{width:16px;height:16px}
+#logo svg{pointer-events:none}
+#zoomLabel{width:16px;height:16px;cursor:pointer;background:#ccc}
+#zoomLabel:after{content:'';position:absolute;border-left:solid #2f2f2c 1px;left:0;height:16px}
+#zoom_label input{color:#ccc;font-size:13px;height:auto;width:auto;padding:0;cursor:default;position:static}
+#zoom_label span{top:0;left:0}
+body.dragging *{cursor:url(../images/dragging.png),move;cursor:-webkit-grabbing;cursor:-moz-grabbing}
+body.drag *{cursor:url(../images/dragging.png),move;cursor:-webkit-grabbing;cursor:-moz-grabbing}
+input[readonly=readonly]:focus{box-shadow:none}
+#color_canvas_tools,#fill_bg,#stroke_bg{background:#fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMAQMAAABsu86kAAAAA3NCSVQICAjb4U/gAAAABlBMVEXu7u7///8o06qaAAAACXBIWXMAAAsSAAALEgHS3X78AAAAFXRFWHRDcmVhdGlvbiBUaW1lADcvMjIvMTL7FNdCAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M1cbXjNgAAABFJREFUCJljYP7AgIb+MKAhAM8/C5vWL6zSAAAAAElFTkSuQmCC) top left repeat}
+#color_canvas_tools{width:60px;height:40px;margin:23px 5px 5px 5px;position:relative;overflow:hidden}
+#color_canvas_tools{display:block}
+#tool_angle_indicator{width:50px;height:50px;border-radius:50px;background:rgba(255,255,255,0.05);position:absolute;bottom:2px;left:10px}
+#tool_angle_indicator_cursor{width:4px;height:25px;border-top:solid #50a0ff 3px;position:absolute;margin:0 0 0 23px;-webkit-transform-origin:50% 0;-moz-transform-origin:50% 0;-o-transform-origin:50% 0;-ms-transform-origin:50% 0;transform-origin:50% 0}
+#stroke_style_label{font-size:30px;margin-top:33px;letter-spacing:-1px}
+.stroke_tool .caret{top:60%}
+#tool_align_relative{position:absolute;top:-5px;left:0;right:20px;display:block}
+#tool_align_relative select{width:100%;display:block}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/css/method-draw.css
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/css/method-draw.css	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/css/method-draw.css	(revision 29468)
@@ -0,0 +1,2083 @@
+/* Comment to prevent wrong concat */
+
+body {
+	background: #3f3f3c;
+	font: 13px/120% 'Lucida Sans', 'Lucida Grande', 'Lucida Sans Unicode', sans-serif;
+	-webkit-touch-callout: none;
+  -webkit-user-select: none;
+  -khtml-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+	margin: 0;
+	padding: 0;
+}
+
+::selection {background: #000; color: #fff; /* Safari */}
+::-moz-selection {background: #000; color: #fff; /* Firefox */}
+
+html, body {
+  	overflow: hidden;
+  	width: 100%;
+  	height: 100%;
+}
+
+::-webkit-scrollbar {
+    width: 5px;
+    height: 5px;
+    background: #444;
+}
+
+::-webkit-scrollbar-track {
+    border-radius: 10px;
+    background: #444;
+}
+
+::-webkit-scrollbar-thumb {
+    border-radius: 10px;
+    background: #666;
+}
+
+::-webkit-scrollbar-corner {
+	background: #444;
+}
+
+#browser-not-supported {
+        font-size: 0.8em;
+        font-family: Verdana, Helvetica, Arial;
+        color: #000000;
+}
+
+ #svgroot {
+	-moz-user-select: none;
+	-webkit-user-select: none;
+	position: absolute;
+	top: 0;
+	left: 0;
+}
+
+#svg_editor {
+	background: #2f2f2c;
+}
+
+ #menu_bar {
+  padding: 0 0 0 50px;
+	background: #2f2f2c;
+	position: relative;
+	z-index: 2;
+}
+
+ #menu_bar.active .menu.open .menu_list {
+  display: block;
+}
+
+ .menu {
+  position: relative;
+  z-index: 5;
+  color: #333;
+  display: inline-block;
+}
+
+ .menu_title {
+  cursor: pointer;
+  display: inline-block;
+  padding: 7px 10px;
+  z-index: 10;
+  color: #fff;
+  position: relative;
+  height: 16px;
+  vertical-align: top;
+}
+
+.touch   .menu_title { 
+	padding: 7px 17px;
+	height: 26px;
+	line-height: 26px;
+}
+
+ .menu .menu_title:hover {
+  background: rgba(255,255,255,0.1);
+}
+
+ .menu_list .separator {
+  margin: 5px 0;
+  border-top: solid #ddd 1px;
+}
+
+ .menu_list {
+  display: none;
+  position: absolute;
+  top: 28px;
+  left: 0;
+  white-space: nowrap;
+  background: white;
+  padding: 7px 0;
+  border-radius: 0 3px 3px 3px;
+  box-shadow: 0 0 20px rgba(0,0,0,0.8);
+}
+
+.touch  .menu_list {
+	top: 38px;
+}
+
+ #menu_bar.active .menu.open .menu_title {
+  background: white;
+  color: #333;
+}
+
+ .menu_list .menu_item {
+  position: relative;
+  overflow: hidden;
+	line-height: 22px;
+	padding: 5px 69px 5px 25px;
+	cursor: default;
+	color: #333;
+}
+
+ .menu_list .menu_item.tool_button {
+  background: transparent;
+  border: none;
+  margin: 0;
+  padding: 5px 55px 5px 25px;
+  height: auto;
+  width: auto;
+}
+
+ .menu_list .menu_item.push_button_pressed:before {
+  content: 'â';
+  position: absolute;
+  display: block;
+  left: 7px;
+  top: 3px;
+  width: 20px;
+  height: 20px;
+}
+
+ .menu_list .menu_item:hover,
+ .menu_list .menu_item.push_button_pressed:hover {
+	background: rgba(0,0,0,0.1);
+	color: #000;
+}
+
+ .menu_list .menu_item.disabled:hover,
+ .menu_list .menu_item.push_button_pressed.disabled:hover {
+	background: transparent;
+	color: #333;
+}
+
+ .menu_list .menu_item.push_button_pressed {
+ background: transparent;
+ border: none; 
+ width: auto;
+ height: auto;
+ margin: 0;
+}
+
+ .menu_list .menu_item span {
+  display: block;
+  position: absolute;
+  right: 10px;
+  padding: 5px;
+  background: rgba(0,0,0, 0.1);
+  top: 6px;
+  height: 10px;
+  text-align: center;
+  font-size: 10px;
+  line-height: 120%;
+}
+
+ #svgcanvas {
+	line-height: normal;
+	display: inline-block;
+	background-color: #A0A0A0;
+	text-align: center;
+	vertical-align: middle;
+	width: 640px;
+	height: 480px;
+	position: relative;
+	background: #3F3F3C;
+}
+
+#rulers > div {
+	position: absolute;
+	background: #2f2f2c;
+	z-index: 1;
+	overflow: hidden;
+  -webkit-font-smoothing: none;
+}
+
+#rulers #ruler_corner {
+	top: 30px;
+	left: 50px;
+	width: 15px;
+	height: 15px;
+  border: solid #444 1px;
+	z-index: 2;
+}
+
+#ruler_x {
+	height: 15px;
+	top: 30px;
+	left: 66px;
+	right: 175px;
+	border-top: solid #444 1px;
+	border-right: solid #444 1px;
+}
+
+#ruler_x_cursor {
+  height: 15px;
+  border-right: dotted #999 1px;
+  position: absolute;
+  background: #2f2f2c;
+}
+
+#ruler_y_cursor {
+  width: 15px;
+  border-top: dotted #999 1px;
+  position: absolute;
+  background: #2f2f2c;
+}
+
+#rulers.moved #ruler_corner,
+#rulers.moved #ruler_x {
+	top: 101px;
+}
+
+#ruler_y {
+	width: 15px;
+	top: 46px;
+	left: 50px;
+	bottom: 40px;
+	border-left: solid #444 1px;
+	border-bottom: solid #444 1px;
+}
+
+#rulers.moved #ruler_y {
+	top: 116px;
+}
+
+
+#ruler_x canvas:first-child {
+	margin-left: -16px;
+}
+
+#ruler_x canvas {
+	float: left;
+}
+
+#ruler_y canvas {
+	margin-top: -16px;
+}
+
+#ruler_x > div, 
+#ruler_y > div {
+	overflow: hidden;
+}
+
+ #palette {
+	display: block;
+	position: absolute;
+	z-index: 2;
+	left: 10px;
+	bottom: 5px;
+	width: 410px;
+	right: 145px;
+	height: 30px;
+}
+
+ .palette_item {
+	height: 20%;
+	width: 5.2%;
+	float: left;
+	cursor: url(../images/eyedropper.png) 0 16, crosshair;
+}
+
+.palette_item.transparent, .palette_item.white, .palette_item.black {
+  background: #fff;
+  position: absolute;
+  width: 10px;
+  height: 10px;
+  left: -10px;
+  top: 0;
+}
+
+.palette_item.transparent {
+	background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNXG14zYAAAAVdEVYdENyZWF0aW9uIFRpbWUAOC8yMi8xMg1cp6sAAABESURBVBiVjdBBCgAgCETRr/e/87SJKFPLnfIcQRMIwMBIShIAvgZzoSrfkzrs8WyF1+kX9r3p8AE7nL7kSpSshN+JEQ8GixkF0mSevgAAAABJRU5ErkJggg==);
+}
+
+.palette_item.black {
+  background: #000;
+  top: 10px;
+}
+
+.palette_item.white {
+  background: #fff;
+  top: 20px;
+}
+
+ #color_tools {
+  position: relative;
+  width: 48px;
+  height: 48px;
+  margin: 6px 6px 0 6px;
+}
+
+.touch  #color_tools {
+	width: auto;
+	height: auto;
+}
+
+#tool_fill {
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: 1;
+}
+
+.touch #tool_fill {
+		position: static;
+		width: 36px;
+		height: 36px;
+		margin-bottom: 10px;
+}
+
+
+#tool_fill.active, #tool_stroke.active {
+  z-index: 2;
+}
+
+#tool_stroke {
+	top: 14px;
+	left: 14px;
+}
+
+.touch #tool_fill.active, .touch #tool_stroke.active {
+	outline: 4px solid #09f;
+}
+
+#tool_fill, #tool_stroke, #tool_canvas {
+  box-shadow: 0 0 0 1px #2f2f2c;
+  position: absolute;
+}
+
+.touch #tool_fill, .touch #tool_stroke, .touch #tool_canvas {
+	position: relative;
+	top: 0;
+	left: 0;
+}
+
+#color_canvas_tools {
+	float: left;
+	cursor: pointer;
+}
+
+#tool_fill .color_block {
+  width: 24px;
+  height: 24px;
+  overflow: hidden;
+  border: solid #ccc 1px;
+}
+
+.touch  #tool_eyedropper {
+	margin-top: 6px;
+}
+
+.touch #tool_fill .color_block {
+  width: 36px;
+  height: 36px;
+}
+
+.touch #tool_fill .color_block svg {
+  width: 36px !important;
+  height: 36px !important;
+}
+
+.touch  #tool_switch {
+	display: none;
+} 
+
+#use_panel .tool_button, #path_node_panel .tool_button {
+	color: #999;
+	border: solid #3F3F3C 1px;
+	border-radius: 3px;
+	padding: 3px 10px 3px 40px;
+	background: 
+	transparent;
+	position: relative;
+	margin-top: 10px;
+	width: 90px;
+	height: 23px;
+	line-height: 24px;
+}
+
+#use_panel .tool_button {
+	padding-left: 10px;
+	margin-bottom: 10px;
+	width: 124px;
+}
+
+ #path_node_panel .tool_button img,  #path_node_panel .tool_button svg {
+	position: absolute;
+	left: 5px;
+	top: 3px;
+}
+
+ #color_tools #tool_fill .color_block:hover,  #color_tools #tool_stroke .color_block:hover {
+  border-color: #fff;
+}
+
+ #color_tools #tool_fill .color_block > div {
+  position: absolute;
+  top: 0;
+  left: 0;
+}
+
+.touch  #color_tools #tool_fill .color_block > div {
+	position: relative;
+}
+
+ #color_tools #tool_fill .color_block #fill_bg,  #color_tools #tool_stroke .color_block #stroke_bg {
+  position: absolute;
+  top: 1px;
+  left: 1px;
+  bottom: 1px;
+  right: 1px;
+}
+
+.touch  #color_tools #tool_fill .color_block #fill_bg, .touch  #color_tools #tool_stroke .color_block #stroke_bg {
+	width: 36px;
+	height: 36px;
+	right: auto;
+	bottom: auto;
+}
+
+.touch #tool_stroke {
+  position: relative;
+  top: 0;
+  left: 0;
+  z-index: 0;
+}
+
+#stroke_color:after {
+  content: '';
+  position: absolute;
+  display: block;
+  width: 8px;
+  height: 8px;
+  left: 8px;
+  top: 8px;
+  background: #ccc;
+  box-shadow: 0 0 0 1px #000;
+}
+
+.touch #stroke_color:after {
+	height: 14px;
+   left: 10px;
+   position: absolute;
+   top: 10px;
+   width: 14px;
+	 
+}
+
+ #color_tools #tool_switch {
+  cursor: pointer;
+  opacity: 0.7;
+  width: 11px;
+  height: 11px;
+  background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABV0RVh0Q3JlYXRpb24gVGltZQA2LzE0LzEyP6j5+gAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNXG14zYAAAB4SURBVBiVjZHRCYUwDEVvxIF0kZKN7EjiIrrReR/PSNSKXiikcE5JUtMeADMzXQIcdRfgFWqlyyB7ap1wL+0HAnIv1DqRJUBxTkLUWXIvh9AHkIeb58UkIUnDMH4ZR0otCfhv4ynbtp7ut722ZniFG8L9xx4Ek6QfN9huARmYwR0AAAAASUVORK5CYII=) top left no-repeat;
+  position: absolute;
+  top: -2px;
+  left: 28px;
+}
+
+ #color_tools #cross:hover {
+  opacity: 1;
+}
+
+ #color_tools #tool_stroke:hover #stroke_color:after {
+  background: #fff;
+}
+
+ #color_tools #tool_stroke .color_block {
+  width: 24px;
+  height: 24px;
+  overflow: hidden;
+  border: solid #ccc 1px;
+}
+
+.touch  #color_tools #tool_stroke .color_block {
+  width: 36px;
+  height: 36px;
+}
+
+ #color_tools #tool_stroke .color_block > div {
+  position: absolute;
+  bottom: 0;
+  right: 0;
+}
+
+.touch  #color_tools #tool_stroke .color_block > div {
+  position: relative;
+}
+
+
+
+ #color_tools .icon_label {
+	padding: 0;
+	width: 24px;
+	height: 100%;
+	cursor: pointer;
+	position: absolute;
+}
+
+ #linkLabel > svg {
+	height: 20px;
+	padding-top: 4px;
+}
+
+ div#workarea {
+	display: inline-table-cell;
+	position:absolute;
+	top: 30px;
+	left: 50px;
+	bottom: 40px;
+	right: 175px;
+	background-color: #444;
+	overflow: auto;
+	text-align: center;
+	-webkit-transition: -webkit-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);
+	-moz-transition: -moz-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);
+	-o-transition: -o-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);
+	-ms-transition: -ms-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);
+	transition: transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);
+}
+
+.touch  div#workarea {
+	top: 40px;
+}
+
+ .menu .menu_list {
+  display: none;
+  position: absolute;
+}
+
+.tool_button, 
+.tool_button_current,
+.tool_button_pressed {
+  cursor: pointer;
+}
+
+ .tool_button:hover, 
+ .push_button:hover,
+ .buttonup:hover,
+ .buttondown,
+ .tool_button_current,
+ .push_button_pressed
+{
+  background-color: #fff;
+}
+
+ .tool_button.disabled,
+ .tool_button.disabled:hover {
+  opacity: 0.3;
+  background-color: #aaa;
+}
+
+ #tools_left .tool_button { background: #2f2f2c; position: relative;}
+ #tools_left .tool_button.loaded { background: #ccc;}
+ #tools_left .tool_button.loaded:hover { background: #fff;}
+ #tools_left .tool_button:after,  #tools_left .tool_button_current:after {
+	position: absolute;
+	content: '';
+	border: solid #2f2f2c 2px;
+	top: -1px;
+	left: -1px;
+	width: 26px;
+	height: 26px;
+	z-index: 0;
+}
+
+ #tools_left .tool_button_current {
+	background-color: #0cf;
+}
+
+ #main_icon span {
+	position: absolute;
+	width: 100%;
+	height: 100%;
+	display: block;
+	z-index: 2;
+}
+
+ #tools_top {
+	position: absolute;
+	width: 160px;
+	height: 100%;
+	background: #2f2f2c;
+	right: 0;
+	top: 20px;
+	border-bottom: none;
+	overflow: visible;
+	padding: 0 0 0 15px;
+}
+
+.touch  #tools_top {
+	top: 30px;
+}
+
+ label {
+  display: block;
+  color: #999;
+}
+
+div#font-selector { 
+    width:140px; 
+    height:300px; 
+    overflow:auto;  
+    margin:0 auto; 
+    position:absolute; 
+    top:27px;
+    right:0;
+    border:1px solid black; 
+    padding:10px; 
+    display:none; 
+    background-color:white;
+    z-index: 10;
+    border-radius: 3px;
+    box-shadow: 0 5px 10px rgba(0,0,0,0.7);
+}
+
+div#font-selector img {
+  width: 100%;
+}
+
+div#font-selector .font-item {
+  border-bottom: solid #ddd 1px;
+  padding: 5px 10px;
+  margin: 0 -10px;
+}
+
+div#font-selector .font-item:hover {
+  background-color: #eee;
+}
+
+ #tools_top #marker_panel * {
+  float: left;
+}
+
+ #tools_top #marker_panel h4 {
+  float: none;
+}
+
+ #tools_top #marker_panel .dropdown .icon_label {
+  width: 36px;
+  height: 20px;
+  margin-top: 2px;
+  border: solid #3f3f3c 1px;
+  text-align: center;
+}
+
+ #tools_top #marker_panel .dropdown button {
+  margin-top: 2px;
+}
+
+ #tools_top #marker_panel #marker_panel_title {
+  float: none;
+  color: #fff;
+  margin-bottom: 3px;
+}
+
+ #tools_top #marker_panel .dropdown .icon_label img {
+  float: none;
+}
+
+
+ #color_picker input[type=text], #color_picker  input[type=number] {
+  width: 30px;
+  background: #fff;
+}
+
+ .dropdown_set input[type=text],  .dropdown_set input[type=number] {
+  width: 50px;
+}
+
+ input[type=text].wide,  input[type=number].wide {width: 110px;}
+ input[type=text].tuco,  input[type=number].tuco {width: 150px;}
+
+ input[type=submit],  input[type=button], button {
+  background: #4F80FF;
+  color: #fff;
+  border-radius: 3px;
+  padding: 7px 17px;
+  border: none;
+  line-height: 140%;
+	font-size: 14px;
+	font-weight: bold;
+	font-family: sans-serif;
+
+}
+
+ input[type=submit]:hover,  button:hover {
+box-shadow: inset 0 3px 10px rgba(255, 255, 255, 0.1),
+            inset 0 -3px 10px rgba(0, 0, 0, 0.2);
+}
+
+ input[type=submit]:hover,  button:hover {background: #2F84C1;}
+ input[type=submit]:active,  button:active { box-shadow: inset 0 2px 2px rgba(0,0,0,0.2); border-bottom: solid rgba(255,255,255,0.1) 1px;}
+
+
+ #tools_left {
+	position: absolute;
+	border-right: none;
+	width: 50px;
+	top: 30px;
+	bottom: 0;
+	left: 0;
+	background: #2F2F2C; /* Needed so flyout icons don't appear on the left */
+	z-index: 4;
+}
+
+#workarea.wireframe #svgcontent * {
+	fill: none;
+	stroke: #000;
+	stroke-width: 1px;
+	stroke-opacity: 1.0;
+	stroke-dasharray: 0;
+	opacity: 1;
+	pointer-events: stroke;
+	vector-effect: non-scaling-stroke;
+	filter: none;
+}
+
+#workarea.wireframe #svgcontent text {
+	fill: #000;
+	stroke: none;
+}
+
+#workarea.wireframe #canvasBackground > rect {
+	fill: #FFF !important;
+}
+
+#workarea #canvasBackground > rect {
+  stroke: transparent !important;
+}
+
+.context_panel {
+	display: none;
+}
+
+#canvas_panel {
+	display: block;
+}
+
+ #multiselected_panel .selected_tool {
+	vertical-align: 12px;
+}
+
+#cur_context_panel {
+	position: absolute;
+  top: 47px;
+  left: 68px;
+	line-height: 22px;
+	overflow: auto;
+	border-bottom: none;
+	border-right: none;
+	padding-left: 5px;
+	font-size: 12px;
+	background: black;
+  color: #999;
+  opacity: 0.5;
+  padding: 0 10px;
+  border-radius: 0 10px 10px 0;
+}
+
+ #cur_context_panel a {
+	float: none;
+	text-decoration: none;
+	color: #fff;
+}
+
+ #cur_context_panel a:hover {
+	text-decoration: underline;
+}
+
+
+ #tools_left .tool_button,
+ #tools_left .tool_button_current {
+	position: relative;
+	z-index: 11;
+}
+
+ .flyout_arrow_horiz {
+	position: absolute;
+	bottom: -1px;
+	right: 0;
+	z-index: 10;
+}
+
+.dropdown {
+	position: relative;
+	float: left;
+}
+
+ .dropdown button {
+  width: 21px;
+  height: 22px;
+  padding: 0 3px 0 3px;
+  border: none;
+  background-color: #555;
+  border-radius: 0 2px 2px 0;
+  margin-left: -1px;
+  position: relative;
+}
+
+ .dropdown button:hover {
+  background-color: #666;
+}
+
+ .dropdown button:after {
+  content: '';
+  position: absolute;
+  border: solid transparent 4px;
+  border-top-color: #999;
+  top: 9px;
+  left: 6px;
+}
+
+
+
+.dropdown button.down {
+	border-left: 1px solid #808080;
+	border-top: 1px solid #808080;
+	border-right: 1px solid #FFFFFF;
+	border-bottom: 1px solid #FFFFFF;
+	background-color: #B0B0B0;
+}
+
+.dropdown ul {
+	list-style: none;
+	position: absolute;
+	margin: 0;
+	padding: 0;
+	left: -80px;
+	top: 26px;
+	z-index: 4;
+	display: none;
+}
+
+.dropup ul {
+	top: auto;
+	bottom: 26px;
+	border-radius: 3px;
+	box-shadow: 0 5px 10px #000;
+}
+
+.dropup ul:after {
+  content: '';
+  display: block;
+  position: absolute;
+  bottom: -10px;
+  right: 50%;
+  top: auto;
+  width: 0;
+  height: 0;
+  border: solid transparent 5px;
+  border-top-color: #fff;
+}
+
+.dropdown li {
+	display: block;
+	width: 120px;
+	padding: 5px 10px;
+	color: #333;
+	background: #fff;
+	margin: 0;
+	line-height: 16px;
+}
+
+.dropdown li:first-child {border-radius: 3px 3px 0 0;}
+.dropdown li:last-child {border-radius: 0 0 3px 3px;}
+
+
+.dropdown li:hover {
+	background-color: #ddd;
+	color: #000;
+}
+
+.dropdown li.special {
+	padding: 10px;
+  background: white;
+  border: none;
+  box-shadow: 0 3px 10px black;
+  border-radius: 3px !important;
+}
+
+.dropdown li.special:after {
+  content: '';
+  display: block;
+  position: absolute;
+  top: -10px;
+  right: 50%;
+  border: solid transparent 5px;
+  border-bottom-color: #fff;
+  
+}
+
+.dropdown li.special.down:after {
+  bottom: -10px;
+  right: 50%;
+  top: auto;
+  border: solid transparent 5px;
+  border-top-color: #fff;
+  
+}
+
+ .tool_button, 
+ .push_button,
+ .tool_button_current,
+ .push_button_pressed 
+{
+	height: 27px;
+	width: 27px;
+	border: solid #2f2f2c 8px;
+	border-left-width: 13px;
+	margin: 0;
+	background-color: #ddd;
+	cursor: pointer;
+}
+
+ #main_menu li#tool_open,  #main_menu li#tool_import {
+	position: relative;
+	overflow: hidden;
+}
+
+#tool_image {
+	overflow: hidden;
+}
+
+#tool_open input, 
+#tool_import input,
+#tool_import_bitmap input {
+	position: absolute;
+	opacity: 0;
+	font-size: 10em;
+	top: -5px;
+	right: -5px;
+	margin: 0;
+	cursor: pointer; /* Sadly doesn't appear to have an effect */
+}
+
+ .disabled {
+	opacity: 0.5;
+	cursor: default;
+}
+
+ .width_label {
+	padding-right: 5px;
+}
+
+#text {
+	position: absolute;
+	left: -9999px;
+}
+
+ #tool_bold span,  #tool_italic span { 
+	position: absolute;
+	width: 100%;
+	height: 100%;
+	top: 0; left: 0;
+	background: #ccc;
+	opacity: 0;
+}
+
+
+
+#url_notice {
+	padding-top: 4px;
+	display: none;
+}
+
+ #color_picker {
+	position: absolute;
+	display: none;
+	background: #fff;
+	height: 350px;
+	border-radius: 3px;
+	z-index: 5;
+	box-shadow: 0 5px 10px #000;
+	width: 530px;
+}
+
+ .tools_flyout {
+	position: absolute;
+	display: none;
+	cursor: pointer;
+	width: 385px;
+	z-index: 10;
+	left: 47px !important;
+	height: 324px;
+	background: #fff;
+	border-radius: 5px;
+  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.5);
+}
+
+ .tools_flyout_v {
+	position: absolute;
+	display: none;
+	cursor: pointer;
+	width: 30px;
+}
+
+ .tools_flyout .tool_button {
+	float: left;
+	background-color: #fff;
+	height: 24px;
+	width: 24px;
+}
+
+ #tools_bottom {
+	position: absolute;
+	left: 50px;
+	right: 0;
+	bottom: 0;
+	height: 40px;
+	overflow: visible;
+	background: #2f2f2c;
+}
+
+ #tools_bottom_1 {
+	width: 115px;
+	float: left;
+}
+
+ #tools_bottom_2 {
+	position: relative;
+	float: left;
+	margin-top: 5px;
+}
+
+#tools_bottom input[type=text] {
+	width: 3.2em;
+}
+
+ #tools_top h4 {
+  color: #fff;
+  font-weight: normal;
+  margin: 0;
+  padding: 10px 0 5px 0;
+}
+
+#tools_top .dropdown .icon_label {
+	border: 1px solid transparent;
+/*	margin-top: 3px;*/
+	height: auto;
+}
+
+#tools_top.multiselected #align_tools {
+	display: none;
+}
+
+#tools_top.multiselected #multiselected_panel {
+	display: block !important;
+}
+
+#tools_top.multiselected #multiselected_panel .hidable {
+	display: none;
+}
+
+ .draginput_cell {
+	float: left;
+	height: 26px;
+	height: 26px;
+	border: solid #3f3f3c 10px;
+	outline: solid #2f2f2c 1px;
+	background: #ddd;
+	cursor: pointer;
+	position: relative;
+}
+
+ .draginput_cell:hover {
+	background: #fff;
+}
+
+ .draginput_cell:after {
+	content: '';
+	position: absolute;
+	top: 0;
+	left: 0;
+	border: solid #3f3f3c 1px;
+	height: 26px;
+	width: 26px;
+	z-index: 0;
+}
+
+
+ .align_buttons  .draginput_cell:nth-child(1) {border-radius: 3px 0 0 0;}
+ .align_buttons  .draginput_cell:nth-child(3) {border-radius: 0 3px 0 0;}
+ .align_buttons  .draginput_cell:nth-child(4) {border-radius: 0 0 0 3px;}
+ .align_buttons  .draginput_cell:nth-child(6) {border-radius: 0 0 3px 0;}
+
+
+.align_buttons .push_button {
+  display: block;
+  float: left;
+}
+
+#option_lists ul {
+	display: none;
+	position: absolute;
+	height: auto;
+	z-index: 3;
+	margin: 0;
+	list-style: none;
+	padding-left: 0;
+}
+
+#option_lists .optcols2 {
+	width: 70px;
+	margin-left: -15px;
+}
+
+#option_lists .optcols3 {
+	width: 192px;
+	margin-left: -105px;
+	margin-top: -25px;
+	background: #fff;
+	padding: 5px;
+	box-shadow: 0 5px 10px #000;
+	border-radius: 3px;
+}
+
+#option_lists .optcols3:after {
+  content: '';
+  display: block;
+  position: absolute;
+  top: -10px;
+  right: 70px;
+  border: solid transparent 5px;
+  border-bottom-color: #fff;
+}
+
+
+ #option_lists .tool_button,  #option_lists .push_button,  #option_lists .tool_button_current,  #option_lists .push_button_pressed {
+  border: none;
+  background: transparent;
+}
+
+ #option_lists .tool_button:hover {
+  background: #ddd;
+}
+
+ #option_lists ul li.current {
+	background-color: #F4E284;
+}
+
+#option_lists .optcols4 {
+	width: 130px;
+	margin-left: -44px;
+}
+
+#option_lists ul[class^=optcols] li {
+	float: left;
+}
+
+ ul li.current {
+	background-color: #F4E284;
+}
+
+ #option_lists ul li {
+	margin: 0;
+	border-radius: 0;
+	-moz-border-radius: 0;
+	-webkit-border-radius: 0;
+}
+
+ #copyright {
+	text-align: right;
+	padding-right: .3em;
+}
+
+#svg_source_editor {
+	display: none;
+}
+
+#svg_source_editor #svg_source_overlay {
+	position: absolute;
+	top: 0px;
+	right: 0px;
+	left: 0px;
+	bottom: 0px;
+	background-color: black;
+	opacity: 0.6;
+	z-index: 5;
+}
+
+#svg_source_editor #svg_source_container {
+	position: absolute;
+	top: 30px;
+	left: 100px;
+	right: 100px;
+	bottom: 30px;
+	background-color: #fff;
+	border-radius: 3px;
+	opacity: 1.0;
+	text-align: center;
+	z-index: 6;
+	padding: 15px 0;
+}
+
+#svg_source_editor form {
+	position: absolute;
+	display: block;
+	top: 15px;
+	bottom: 55px;
+	left: 15px;
+	right: 12px;
+	padding: 5px;
+	font-size: 12px;
+}
+
+#svg_source_textarea {
+  width: 100%;
+  height: 100%;
+  line-height: 140%;
+  font-family: 'Lucida Sans', 'Lucida Grande', 'Lucida Sans Unicode', sans-serif;
+  font-size: 12px;
+}
+
+#svg_source_editor #tool_source_back {
+  position: absolute;
+  bottom: 45px;
+  left: 15px;
+	right: 15px;
+}
+
+#svg_source_editor #tool_source_back #tool_source_save {
+	display: block;
+	position: absolute;
+	right: 0;
+}
+
+
+#svg_source_editor #tool_source_back #tool_source_cancel {
+	display: block;
+	position: absolute;
+	left: 0;
+}
+
+
+ button.cancel,  input.Cancel,  input.cancel,  input.jGraduate_Cancel, button.cancel {
+	-webkit-appearance: none;
+	background-color: #999;
+	box-shadow: 0 0 1px rgba(0,0,0,0.5);
+	margin: 0;
+}
+
+
+#shape_buttons {
+	overflow: auto;
+	top: 0;
+	bottom: 0;
+	left: 110px;
+	right: 0;
+	position: absolute;
+	vertical-align: top;
+}
+
+#shape_cats {
+	min-width: 110px;
+	display: block;
+	position: absolute;
+	left: 0;
+	top: 0;
+	height: 300px;
+	background: #eee;
+	border-radius: 3px 0 0 3px;
+	z-index: 2;
+}
+#shape_cats > div {
+	line-height: 1em;
+	padding: 0 .5em;
+	border-bottom: 1px solid #ddd;
+	background: #E8E8E8;
+	color: #444;
+	height: 26px;
+	line-height: 26px;
+}
+
+#shape_cats > div:first-child {
+  border-radius: 3px 0 0 0;
+}
+
+#shape_cats > div:last-child {
+  border-radius: 0 0 0 3px;
+}
+
+#shape_cats div:hover {
+	background: #efefef;
+	color: #000;
+}
+#shape_cats div.current {
+	font-weight: bold;
+	background: #3f3f3c;
+	color: #fff;
+	position: relative;
+}
+
+#shape_cats div.current:after {
+  content: '';
+  position: absolute;
+  right: -26px;
+  top: 0;
+  border: solid transparent 13px;
+  border-left-color: #3f3f3c;
+}
+
+.toolbar_button button .svg_icon {
+    display: none;
+}
+
+#dialog_box {
+	display: none;
+}
+
+#dialog_box_overlay {
+	background: black;
+	opacity: .5;
+	height:100%;
+	left:0;
+	position:absolute;
+	top:0;
+	width:100%;
+	z-index: 6;
+}
+
+#dialog_content {
+	height: 95px;
+	margin: 10px 10px 5px 10px;
+	overflow: auto;
+	text-align: left;
+	font-size: 13px;
+}
+
+#dialog_buttons input:last-child {
+	background: #999 !important;
+	position: absolute;
+	left: 10px;
+	bottom: 10px;
+}
+
+#dialog_buttons input:first-child {
+	position: absolute;
+	right: 10px;
+	bottom: 10px;
+}
+
+#dialog_content.prompt {
+	height: 75px;
+}
+
+#dialog_content p {
+	margin: 10px;
+	line-height: 1.3em;
+}
+
+#dialog_container {
+	position: absolute;
+	left: 50%;
+	top: 50%;
+	width: 300px;
+	margin-left: -150px;
+	height: 150px;
+	margin-top: -80px;
+	position:fixed;
+	z-index:50001;
+	background: #fff;
+}
+
+
+#dialog_container, #dialog_content {
+	border-radius: 3px;
+}
+
+#dialog_buttons input[type=text] {
+	width: 90%;
+	display: block;
+	margin: 0 0 5px 11px;
+}
+
+#dialog_buttons input[type=button] {
+	margin: 0 1em;
+}
+
+.invisible {
+  visibility: none;
+}
+
+
+/* Slider
+----------------------------------*/
+.ui-slider { position: relative; text-align: left; }
+.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; }
+
+.ui-slider-horizontal { height: .8em; }
+.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.ui-slider-vertical { width: .8em; height: 100px; }
+.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.ui-slider-vertical .ui-slider-range-max { top: 0; }
+
+.ui-slider {
+	background: #3F3F3C;
+  border-radius: 10px;
+}
+
+.ui-slider-handle {
+	box-shadow: 0 3px 3px rgba(0,0,0,0.3);
+	border-radius: 30px;
+	background: #fff;
+  background-image: -ms-linear-gradient(top, #ccc 0%, #fff 100%);
+  background-image: -moz-linear-gradient(top, #ccc 0%, #fff 100%);
+  background-image: -o-linear-gradient(top, #ccc 0%, #fff 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ccc), color-stop(1, #fff));
+  background-image: -webkit-linear-gradient(top, #ccc 0%, #fff 100%);
+  background-image: linear-gradient(top, #ccc 0%, #fff 100%);
+}
+
+.ui-slider-handle:focus {
+  outline: none;
+}
+
+/* Necessary to keep the flyouts sized properly */
+#shape_buttons {background: #fff; border-radius: 0 3px 3px 0; padding: 10px}
+
+ .tools_flyout .tool_button,
+ .tools_flyout .tool_flyout {
+  background: #fff;
+	width: 40px;
+	height: 40px;
+	margin: 5px;
+	border-radius: 0px;
+	-moz-border-radius: 0px;
+	-webkit-border-radius: 0px;	
+	border-width: 0;
+}
+
+/* Generic context menu styles */
+.contextMenu {
+	position: absolute;
+	z-index: 99999;
+	border: solid 1px rgba(0,0,0,.33);
+	background: rgba(255,255,255,.95);
+	padding: 5px 0;
+	margin: 0px;
+	display: none;
+	font: 12px/15px 'Lucida Sans', 'Lucida Grande', Helvetica, Verdana, sans-serif;
+	border-radius: 5px;
+	-moz-border-radius: 5px;
+	-moz-box-shadow: 2px 5px 10px rgba(0,0,0,.3);
+	-webkit-box-shadow: 2px 5px 10px rgba(0,0,0,.3);
+	box-shadow: 2px 5px 10px rgba(0,0,0,.3);
+}
+
+.touch .contextMenu {
+	border: solid 5px rgba(0,0,0,.7);
+	padding: 0;
+	margin: 0 0 0 20px;
+	font: 18px/24px sans-serif;
+	border-radius: 5px;
+	-webkit-box-shadow: 2px 5px 20px 3px #000;
+	box-shadow: 2px 5px 20px rgba(0,0,0,0.5);
+}
+
+.touch .contextMenu:after {
+	content: '';
+	width: 0;
+	height: 0;
+	border: solid transparent 10px;
+	border-right-color: rgba(0,0,0,.7);
+	position: absolute;
+	top: 50%;
+	left: -25px;
+	margin-top: -10px;
+	z-index: 1000;
+}
+
+.contextMenu LI {
+	list-style: none;
+	padding: 0px;
+	margin: 0px;
+}
+
+.contextMenu .shortcut {
+	width: 115px;           
+	text-align:right;
+	float:right;
+}
+
+.touch .contextMenu .shortcut {
+	display: none;
+}
+
+
+.touch .shortcut {
+	display: none;
+}
+
+
+.contextMenu A {
+	-moz-user-select: none;
+	-webkit-user-select: none;
+	color: #222;
+	text-decoration: none;
+	display: block;
+	line-height: 20px;
+	height: 20px;
+	background-position: 6px center;
+	background-repeat: no-repeat;
+	outline: none;
+	padding: 0px 15px 1px 20px;
+}
+
+.touch .contextMenu A {
+	padding: 0 15px;
+	border-bottom: #;
+	font-weight: bold;
+	border-top: solid 1px #E3E3E3;
+	height: 40px;
+	line-height: 40px;
+	min-width: 200px;
+}
+
+.contextMenu LI.hover A {
+	background-color: #2e5dea;
+	color: white;
+	cursor: default;
+}
+
+.contextMenu LI.disabled A {
+	color: #999;
+
+}
+
+.touch .contextMenu LI.disabled A {
+	display: none;
+}
+
+.contextMenu LI.hover.disabled A {
+	background-color: transparent;
+}
+
+.contextMenu LI.separator {
+	border-top: solid 1px #E3E3E3;
+	padding-top: 5px;
+	margin-top: 5px;
+}
+
+.touch .contextMenu LI.separator {
+	border-top: none;
+	margin: 0;
+	padding: 0;
+}
+
+#menu {
+  display: none;
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  height: 30px;
+  background: #000;
+  z-index: 10;
+  color: #fff;
+}
+
+#workarea.rect, #workarea.line, #workarea.ellipse, #workarea.path, #workarea.shapelib {
+  cursor: crosshair;
+}
+
+#workarea.text {
+  cursor: text;
+}
+
+#workarea.eyedropper {
+  cursor: url(../images/eyedropper.png) 0 16, crosshair;
+}
+
+#workarea.fhpath {
+  cursor: url(../images/pencil_cursor.png) 0 20, crosshair;
+}
+
+#workarea.rotate * {
+  cursor: url(../images/rotate.png) 12 12, auto;
+}
+
+#workarea.select text, #workarea.multiselect text {
+	cursor: default;
+}
+
+#workarea.n-resize * {cursor: n-resize !important;}
+#workarea.e-resize * {cursor: e-resize !important;}
+#workarea.w-resize * {cursor: w-resize !important;}
+#workarea.s-resize * {cursor: s-resize !important;}
+
+#workarea.ne-resize * {cursor: ne-resize !important;}
+#workarea.se-resize * {cursor: se-resize !important;}
+#workarea.nw-resize * {cursor: nw-resize !important;}
+#workarea.sw-resize * {cursor: sw-resize !important;}
+
+#workarea.copy {
+	cursor: copy;
+}
+
+#workarea.zoom {
+  cursor: crosshair;
+  cursor:-moz-zoom-in;
+  cursor:-webkit-zoom-in;
+}
+#workarea.zoom.out {
+  cursor: crosshair;
+  cursor:-moz-zoom-out;
+  cursor:-webkit-zoom-out;
+}
+
+#selectorRubberBand {
+	shape-rendering: crispEdges;
+}
+
+/* For modern browsers */
+.clearfix:before,
+.clearfix:after {
+    content:"";
+    display:table;
+}
+
+.clearfix:after {
+    clear:both;
+}
+
+/* For IE 6/7 (trigger hasLayout) */
+.clearfix {
+    *zoom:1;
+}
+
+
+ #group_title {display: none;}
+
+#base_unit_container {
+	display: none;
+	position: absolute;
+	z-index: 20;
+}
+
+ .draginput {
+  background: #3f3f3c;
+  border-radius: 3px;
+  -webkit-font-smoothing: antialiased;
+  width: 70px;
+  height: 70px;
+  display: block;
+  position: relative;
+  float: left;
+  margin: 0 5px 5px 0;
+}
+
+ .draginput .caret {
+  border: solid transparent 5px;
+  border-top-color: #999;
+  position: absolute;
+  width: 0;
+	height: 0;
+	right: 5px;
+	margin-top: -2px;
+	top: 50%;
+}
+
+ .draginput label {
+	margin: 28px 10px 0 5px;
+	font-size: 14px;
+	color: white;
+	font-weight: bold;
+	font-family: sans-serif;
+}
+
+ .draginput label#resolution_label,  .draginput label#seg_type_label {
+	font: bold 12px/110% sans-serif;
+	position: absolute;
+	left: auto;
+	right: 10px;
+	z-index: 0;
+	text-align: right;
+}
+
+  .draginput label#seg_type_label {
+	margin-top: 40px;
+}
+
+  .draginput label#seg_type_label .caret {
+	top: 66%;
+}
+
+ .draginput label#resolution_label .pull {
+	position: relative;
+	left: -15px;
+}
+
+ .draginput label#resolution_label span {
+	right: -13px;
+	left: auto;
+	font-size: 16px;
+	top: 2px;
+	font-weight: bold;
+	color: white;
+}
+
+.touch  .draginput.active:after {
+	content: attr(data-value);
+	display: block;
+	position: absolute;
+	background: #fff;
+	font-size: 16px;
+	top: 0;
+	width: 30px;
+	left: -50px;
+	padding: 0 5px;
+	color: #333;
+	z-index: 10;
+	font-family: sans-serif;
+	font-weight: bold;
+	text-align: right;
+	padding-right: 10px;
+	height: 20px;
+	line-height: 20px;
+	letter-spacing: -1px;
+}
+
+.touch  .draginput.active:before {
+	content: '';
+	height: 0;
+	width: 0;
+	position: absolute;
+	top: 5px;
+	left: -5px;
+	border: solid transparent 5px;
+	border-left-color: #fff;
+}
+
+ .draginput input {
+  border: none;
+  background: transparent;
+  font: 24px/normal sans-serif;
+  text-align: center;
+  color: #4F80FF;
+  padding: 30px 0 16px;
+  width: 100%;
+  height: 24px;
+	position: relative;
+	z-index: 2;
+}
+
+.draginput.twocol {
+	width: 145px;
+}
+
+#tool_font_family .caret {
+	right: 40px;
+	top: 55%;
+}
+
+#tool_font_family select {
+	width: 110px;
+}
+
+
+ #tool_bold,   #tool_italic { 
+	font: bold 20px/35px serif;
+	text-align: center;
+	position: absolute;
+	padding: 0 0 0 0;
+	color: #ccc;
+	background: transparent;
+	border: none;
+	width: 35px;
+	height: 35px;
+	margin: 0;
+	top: 0;
+	right: 0;
+}
+
+#tool_italic {
+	border-top: solid #2f2f2c 2px;
+	top: 35px;
+	font-weight: bold;
+	font-style: italic;
+	font-size: 24px;
+}
+
+
+ #tool_bold:hover,   #tool_italic:hover {
+  color: #fff;
+}
+
+ #tool_bold.active,   #tool_italic.active {
+  color: #50A0FF;
+}
+
+#preview_font {
+	font-size: 20px;
+	color: #fff;
+	height: 70px;
+	line-height: 75px;
+	padding: 0 0 0 10px;
+	white-space: nowrap;
+	width: 100px;
+	overflow: hidden;
+	border-right: solid #2f2f2c 2px;
+	position: relative;
+}
+
+#preview_font:after {
+	content: '';
+	position: absolute;
+	right: 0;
+	top: 3px;
+	bottom: 3px;
+	width: 15px;
+	border-right: solid #3f3f3c 10px;
+	background: transparent url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAxIDEiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxsaW5lYXJHcmFkaWVudCBpZD0iZzU4MCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIwJSIgeTE9IjAlIiB4Mj0iMTAwJSIgeTI9IjAlIj48c3RvcCBzdG9wLWNvbG9yPSIjM2YzZjNjIiBzdG9wLW9wYWNpdHk9IjAiIG9mZnNldD0iMCIvPjxzdG9wIHN0b3AtY29sb3I9IiMzZjNmM2MiIG9mZnNldD0iMC43Ii8+PC9saW5lYXJHcmFkaWVudD48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBmaWxsPSJ1cmwoI2c1ODApIiAvPjwvc3ZnPg==);
+}
+
+
+.draginput input, .draginput input:hover, .draginput input:active {  
+	  cursor: url(../images/drag.png), move;
+	  cursor: -webkit-grab;
+		cursor: -moz-grab;
+}
+
+.draginput input[type="checkbox"], .draginput input[type="checkbox"]:hover, .draginput input[type="checkbox"]:active {  
+	  cursor: pointer;
+}
+
+.draginput.checkbox {
+	cursor: pointer;
+}
+
+.draginput.active input, .draginput.active input:hover, .draginput.active input:active {  
+	  cursor: url(../images/dragging.png), move;
+	  cursor: -webkit-grabbing;
+		cursor: -moz-grabbing;
+}
+
+
+
+ .draginput span {
+  font: 11px/130% sans-serif;
+  color: #ccc;
+  display: block;
+  position: absolute;
+  top: 5px;
+  left: 5px;
+  text-align: left;
+}
+
+ .draginput.error {
+	background: #900;
+}
+
+ .draginput.error input {
+	color: #fff;
+}
+
+ .draginput.stroke_tool {
+	text-align: center;
+}
+
+ .draginput select {
+	-webkit-appearance: none;
+	opacity: 0;
+	display: block;
+	position: absolute;
+	height: 100%;
+	width: 100%;
+	margin: 0;
+	z-index: 1;
+	top: 0;
+	left: 0;	
+}
+
+
+.draginput_cursor{
+  position: absolute;
+  top: 50%;
+  width: 100%;
+  border-top: solid rgba(50,100,200,0.25) 3px;
+	margin-top: -2px;
+	z-index: 0;
+}
+
+ .draginput input[readonly=readonly] {
+  -webkit-appearance: none;
+  -webkit-touch-callout: none;
+  -webkit-user-select: none;
+  -khtml-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+
+
+ .draginput input:focus {
+	background: #50A0FF;
+	color: #fff;
+	outline: none;
+	box-shadow: 0 0 5px 2px #50A0FF;
+}
+
+ .draginput input:focus+span {
+	z-index: 10;
+	color:#fff;
+}
+
+.draginput .push_bottom {
+	bottom: 0;
+	position: absolute;
+}
+
+#zoom_label {
+	height: 20px;
+	background: transparent;
+	cursor: default !important;
+	width: auto;
+	padding: 0 10px;
+	margin: 0;
+}
+
+#zoom_panel {
+	padding: 9px 0;
+	right: 175px;
+  position: absolute;
+}
+
+#zoom_label img, #zoom_label svg {
+	width: 16px;
+	height: 16px;
+}
+
+#logo svg {
+	pointer-events: none;
+}
+
+#zoomLabel {
+	width: 16px;
+	height: 16px;
+	cursor: pointer;
+	background: #ccc;
+}
+
+#zoomLabel:after {
+	content: '';
+	position: absolute;
+	border-left: solid #2f2f2c 1px;
+	left: 0;
+	height: 16px;
+}
+
+#zoom_label input {
+	color: #ccc;
+	font-size: 13px;
+	height: auto;
+	width: auto;
+	padding: 0;
+	cursor: default;
+	position: static;
+}
+
+#zoom_label span {
+	top: 0;
+	left: 0;
+}
+
+body.dragging * {
+	cursor: url(../images/dragging.png), move;
+	cursor: -webkit-grabbing;
+	cursor: -moz-grabbing;
+}
+
+body.drag * {
+	cursor: url(../images/dragging.png), move;
+	cursor: -webkit-grabbing;
+	cursor: -moz-grabbing;
+}
+
+input[readonly=readonly]:focus {
+	box-shadow: none;
+}
+
+#color_canvas_tools, #fill_bg, #stroke_bg {
+	background: #fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMAQMAAABsu86kAAAAA3NCSVQICAjb4U/gAAAABlBMVEXu7u7///8o06qaAAAACXBIWXMAAAsSAAALEgHS3X78AAAAFXRFWHRDcmVhdGlvbiBUaW1lADcvMjIvMTL7FNdCAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M1cbXjNgAAABFJREFUCJljYP7AgIb+MKAhAM8/C5vWL6zSAAAAAElFTkSuQmCC) top left repeat;
+}
+
+#color_canvas_tools {
+	width: 60px;
+	height: 40px;
+	margin: 23px 5px 5px 5px;
+	position: relative;
+	overflow: hidden;
+}
+
+#color_canvas_tools  {
+	display: block;
+}
+
+
+#tool_angle_indicator {
+	width: 				 50px;
+	height: 			 50px;
+	border-radius: 50px;
+	background: rgba(255,255,255,0.05);
+	position: absolute;
+	bottom: 2px;
+	left: 10px;
+}
+
+#tool_angle_indicator_cursor {
+	width: 				 4px;
+	height: 			 25px;
+	border-top: solid #50A0FF 3px;
+	position: absolute;
+	margin: 0 0 0 23px;
+	-webkit-transform-origin: 50% 0;
+	-moz-transform-origin: 50% 0;
+	-o-transform-origin: 50% 0;
+	-ms-transform-origin: 50% 0;
+	transform-origin: 50% 0;
+}
+
+#stroke_style_label {
+	font-size: 30px;
+	margin-top: 33px;
+	letter-spacing: -1px;
+}
+
+.stroke_tool .caret {
+	top: 60%;
+}
+
+#tool_align_relative {
+	position: absolute;
+	top: -5px;
+	left: 0;
+	right: 20px;
+	display: block;
+}
+
+#tool_align_relative select {
+	width: 100%;
+	display: block;
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/embedapi.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/embedapi.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/embedapi.html	(revision 29468)
@@ -0,0 +1,56 @@
+﻿<!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>
+    <title></title>
+</head>
+<body>
+
+    <script type="text/javascript" src="embedapi.js"></script>
+    <script type="text/javascript">
+        var svgCanvas = null;
+
+        function init_embed() {
+            var frame = document.getElementById('svgedit');
+			svgCanvas = new embedded_svg_edit(frame);
+			
+			// Hide main button, as we will be controlling new/load/save etc from the host document
+			var doc;
+			doc = frame.contentDocument;
+			if (!doc)
+			{
+				doc = frame.contentWindow.document;
+			}
+			
+			var mainButton = doc.getElementById('main_button');
+			mainButton.style.display = 'none';            
+        }
+        
+        function handleSvgData(data, error) {
+			if (error)
+			{
+				alert('error ' + error);
+			}
+            else
+			{
+				alert('Congratulations. Your SVG string is back in the host page, do with it what you will\n\n' + data);
+			}			
+        }
+        
+        function loadSvg() {
+            var svgexample = '<svg width="640" height="480" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg"><g><title>Layer 1</title><rect stroke-width="5" stroke="#000000" fill="#FF0000" id="svg_1" height="35" width="51" y="35" x="32"/><ellipse ry="15" rx="24" stroke-width="5" stroke="#000000" fill="#0000ff" id="svg_2" cy="60" cx="66"/></g></svg>';
+            svgCanvas.setSvgString(svgexample);
+        }
+		
+		function saveSvg() {			
+			svgCanvas.getSvgString()(handleSvgData);
+		}
+    </script>
+
+
+    <button onclick="loadSvg();">Load example</button>
+    <button onclick="saveSvg();">Save data</button>
+    <br/>
+
+    <iframe src="index.html" width="900px" height="600px" id="svgedit" onload="init_embed()"></iframe>    
+</body>
+</html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/closepath_icons.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/closepath_icons.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/closepath_icons.svg	(revision 29468)
@@ -0,0 +1,41 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+<g id="tool_closepath">
+<svg viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <g>
+  <title>Layer 1</title>
+  <path stroke="#000" stroke-width="15" fill="#ffc8c8" d="m121.5,40l-84,106l27,115l166,2l29,-111"/>
+  <line x1="240" y1="136" x2="169.5" y2="74" stroke="#A00" stroke-width="25" fill="none"/>
+  <path stroke="none" fill ="#A00" d="m158,65l31,74l-3,-50l51,-3z"/>
+  <g stroke-width="15" stroke="#00f" fill="#0ff">
+  <circle r="30" cy="41" cx="123"/>
+  <circle r="30" cy="146" cx="40"/>
+  <circle r="30" cy="260" cx="69"/>
+  <circle r="30" cy="260" cx="228"/>
+  <circle r="30" cy="148" cx="260"/>
+  </g>
+ </g>
+</svg>
+</g>
+<g id="tool_openpath">
+<svg viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <g>
+  <title>Layer 1</title>
+  <path stroke="#000" stroke-width="15" fill="#ffc8c8" d="m123.5,38l-84,106l27,115l166,2l29,-111"/>
+  <line x1="276.5" y1="153" x2="108.5" y2="24" stroke="#000" stroke-width="10" fill="none"/>
+  <g stroke-width="15" stroke="#00f" fill="#0ff">
+   <circle r="30" cy="41" cx="123"/>
+   <circle r="30" cy="146" cx="40"/>
+   <circle r="30" cy="260" cx="69"/>
+   <circle r="30" cy="260" cx="228"/>
+   <circle r="30" cy="148" cx="260"/>
+  </g>
+  <g  stroke="#A00" stroke-width="15" fill="none">
+   <line x1="168" y1="24" x2="210" y2="150"/>
+   <line x1="210" y1="24" x2="168" y2="150"/>
+  </g>
+ </g>
+</svg>
+</g>
+
+<g id="svg_eof"/>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-arrows.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-arrows.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-arrows.js	(revision 29468)
@@ -0,0 +1,298 @@
+/*
+ * ext-arrows.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ *
+ */
+
+ 
+methodDraw.addExtension("Arrows", function(S) {
+		var svgcontent = S.svgcontent,
+			addElem = S.addSvgElementFromJson,
+			nonce = S.nonce,
+			randomize_ids = S.randomize_ids,
+			selElems;
+
+		svgCanvas.bind('setnonce', setArrowNonce);
+		svgCanvas.bind('unsetnonce', unsetArrowNonce);
+			
+		var lang_list = {
+			"en":[
+				{"id": "arrow_none", "textContent": "No arrow" }
+			],
+			"fr":[
+				{"id": "arrow_none", "textContent": "Sans flÃšche" }
+			]
+		};
+		
+		var prefix = 'se_arrow_';
+		if (randomize_ids) {
+		  var arrowprefix = prefix + nonce + '_';
+		} else {
+		  var arrowprefix = prefix;
+		}
+
+		var pathdata = {
+			fw: {d:"m0,0l10,5l-10,5l5,-5l-5,-5z", refx:8,  id: arrowprefix + 'fw'},
+			bk: {d:"m10,0l-10,5l10,5l-5,-5l5,-5z", refx:2, id: arrowprefix + 'bk'}
+		}
+		
+		function setArrowNonce(window, n) {
+		    randomize_ids = true;
+		    arrowprefix = prefix + n + '_';
+ 			pathdata.fw.id = arrowprefix + 'fw';
+			pathdata.bk.id = arrowprefix + 'bk';
+		}
+
+		function unsetArrowNonce(window) {
+		    randomize_ids = false;
+		    arrowprefix = prefix;
+ 			pathdata.fw.id = arrowprefix + 'fw';
+			pathdata.bk.id = arrowprefix + 'bk';
+		}
+
+		function getLinked(elem, attr) {
+			var str = elem.getAttribute(attr);
+			if(!str) return null;
+			var m = str.match(/\(\#(.*)\)/);
+			if(!m || m.length !== 2) {
+				return null;
+			}
+			return S.getElem(m[1]);
+		}
+		
+		function showPanel(on) {
+			$('#arrow_panel').toggle(on);
+			
+			if(on) {
+				var el = selElems[0];
+				var end = el.getAttribute("marker-end");
+				var start = el.getAttribute("marker-start");
+				var mid = el.getAttribute("marker-mid");
+				var val;
+				
+				if(end && start) {
+					val = "both";
+				} else if(end) {
+					val = "end";
+				} else if(start) {
+					val = "start";
+				} else if(mid) {
+					val = "mid";
+					if(mid.indexOf("bk") != -1) {
+						val = "mid_bk";
+					}
+				}
+				
+				if(!start && !mid && !end) {
+					val = "none";
+				}
+				
+				$("#arrow_list").val(val);
+			}
+		}
+		
+		function resetMarker() {
+			var el = selElems[0];
+			el.removeAttribute("marker-start");
+			el.removeAttribute("marker-mid");
+			el.removeAttribute("marker-end");
+		}
+		
+		function addMarker(dir, type, id) {
+			// TODO: Make marker (or use?) per arrow type, since refX can be different
+			id = id || arrowprefix + dir;
+			
+			var marker = S.getElem(id);
+
+			var data = pathdata[dir];
+			
+			if(type == "mid") {
+				data.refx = 5;
+			}
+
+			if(!marker) {
+				marker = addElem({
+					"element": "marker",
+					"attr": {
+						"viewBox": "0 0 10 10",
+						"id": id,
+						"refY": 5,
+						"markerUnits": "strokeWidth",
+						"markerWidth": 5,
+						"markerHeight": 5,
+						"orient": "auto",
+						"style": "pointer-events:none" // Currently needed for Opera
+					}
+				});
+				var arrow = addElem({
+					"element": "path",
+					"attr": {
+						"d": data.d,
+						"fill": "#000000"
+					}
+				});
+				marker.appendChild(arrow);
+				S.findDefs().appendChild(marker);
+			} 
+			
+			marker.setAttribute('refX', data.refx);
+			
+			return marker;
+		}
+		
+		function setArrow() {
+			var type = this.value;
+			resetMarker();
+		
+			if(type == "none") {
+				return;
+			}
+		
+			// Set marker on element
+			var dir = "fw";
+			if(type == "mid_bk") {
+				type = "mid";
+				dir = "bk";
+			} else if(type == "both") {
+				addMarker("bk", type);
+				svgCanvas.changeSelectedAttribute("marker-start", "url(#" + pathdata.bk.id + ")");
+				type = "end";
+				dir = "fw";
+			} else if (type == "start") {
+				dir = "bk";
+			}
+			
+			addMarker(dir, type);
+			svgCanvas.changeSelectedAttribute("marker-"+type, "url(#" + pathdata[dir].id + ")");
+			S.call("changed", selElems);
+		}
+		
+		function colorChanged(elem) {
+			var color = elem.getAttribute('stroke');
+			
+			var mtypes = ['start','mid','end'];
+			var defs = S.findDefs();
+			
+			$.each(mtypes, function(i, type) {
+				var marker = getLinked(elem, 'marker-'+type);
+				if(!marker) return;
+				
+				var cur_color = $(marker).children().attr('fill');
+				var cur_d = $(marker).children().attr('d');
+				var new_marker = null;
+				if(cur_color === color) return;
+				
+				var all_markers = $(defs).find('marker');
+				// Different color, check if already made
+				all_markers.each(function() {
+					var attrs = $(this).children().attr(['fill', 'd']);
+					if(attrs.fill === color && attrs.d === cur_d) {
+						// Found another marker with this color and this path
+						new_marker = this;
+					}
+				});
+				
+				if(!new_marker) {
+					// Create a new marker with this color
+					var last_id = marker.id;
+					var dir = last_id.indexOf('_fw') !== -1?'fw':'bk';
+					
+					new_marker = addMarker(dir, type, arrowprefix + dir + all_markers.length);
+
+					$(new_marker).children().attr('fill', color);
+				}
+				
+				$(elem).attr('marker-'+type, "url(#" + new_marker.id + ")");
+				
+				// Check if last marker can be removed
+				var remove = true;
+				$(S.svgcontent).find('line, polyline, path, polygon').each(function() {
+					var elem = this;
+					$.each(mtypes, function(j, mtype) {
+						if($(elem).attr('marker-' + mtype) === "url(#" + marker.id + ")") {
+							return remove = false;
+						}
+					});
+					if(!remove) return false;
+				});
+				
+				// Not found, so can safely remove
+				if(remove) {
+					$(marker).remove();
+				}
+
+			});
+			
+		}
+		
+		return {
+			name: "Arrows",
+			context_tools: [{
+				type: "select",
+				panel: "arrow_panel",
+				title: "Select arrow type",
+				id: "arrow_list",
+				options: {
+					none: "No arrow",
+					end: "----&gt;",
+					start: "&lt;----",
+					both: "&lt;---&gt;",
+					mid: "--&gt;--",
+					mid_bk: "--&lt;--"
+				},
+				defval: "none",
+				events: {
+					change: setArrow
+				}
+			}],
+			callback: function() {
+				$('#arrow_panel').hide();
+				// Set ID so it can be translated in locale file
+				$('#arrow_list option')[0].id = 'connector_no_arrow';
+			},
+			addLangData: function(lang) {
+				return {
+					data: lang_list[lang]
+				};
+			},
+			selectedChanged: function(opts) {
+				
+				// Use this to update the current selected elements
+				selElems = opts.elems;
+				
+				var i = selElems.length;
+				var marker_elems = ['line','path','polyline','polygon'];
+				
+				while(i--) {
+					var elem = selElems[i];
+					if(elem && $.inArray(elem.tagName, marker_elems) != -1) {
+						if(opts.selectedElement && !opts.multiselected) {
+							showPanel(true);
+						} else {
+							showPanel(false);
+						}
+					} else {
+						showPanel(false);
+					}
+				}
+			},
+			elementChanged: function(opts) {
+				var elem = opts.elems[0];
+				if(elem && (
+					elem.getAttribute("marker-start") ||
+					elem.getAttribute("marker-mid") ||
+					elem.getAttribute("marker-end")
+				)) {
+	// 								var start = elem.getAttribute("marker-start");
+	// 								var mid = elem.getAttribute("marker-mid");
+	// 								var end = elem.getAttribute("marker-end");
+					// Has marker, so see if it should match color
+					colorChanged(elem);
+				}
+				
+			}
+		};
+});
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-closepath.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-closepath.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-closepath.js	(revision 29468)
@@ -0,0 +1,92 @@
+/*
+ * ext-closepath.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Jeff Schiller
+ *
+ */
+
+// This extension adds a simple button to the contextual panel for paths
+// The button toggles whether the path is open or closed
+methodDraw.addExtension("ClosePath", function(S) {
+		var selElems,
+			updateButton = function(path) {
+				var seglist = path.pathSegList,
+					closed = seglist.getItem(seglist.numberOfItems - 1).pathSegType==1,
+					showbutton = closed ? '#tool_openpath' : '#tool_closepath',
+					hidebutton = closed ? '#tool_closepath' : '#tool_openpath';
+					$(hidebutton).hide();
+					$(showbutton).show();
+			},
+			showPanel = function(on) {
+				$('#closepath_panel').toggle(on);
+				if (on) {
+					var path = selElems[0];
+					if (path) updateButton(path);
+				}
+			},
+		
+			toggleClosed = function() {
+				var path = selElems[0];
+				if (path) {
+					var seglist = path.pathSegList,
+						last = seglist.numberOfItems - 1;					
+					// is closed
+					if(seglist.getItem(last).pathSegType == 1) {
+						seglist.removeItem(last);
+					}
+					else {
+						seglist.appendItem(path.createSVGPathSegClosePath());
+					}
+					updateButton(path);
+				}
+			};
+		
+		return {
+			name: "ClosePath",
+			svgicons: "extensions/closepath_icons.svg",
+			buttons: [{
+				id: "tool_openpath",
+				type: "context",
+				panel: "closepath_panel",
+				title: "Open path",
+				events: {
+					'click': function() {
+						toggleClosed();
+					}
+				}
+			},
+			{
+				id: "tool_closepath",
+				type: "context",
+				panel: "closepath_panel",
+				title: "Close path",
+				events: {
+					'click': function() {
+						toggleClosed();
+					}
+				}
+			}],
+			callback: function() {
+				$('#closepath_panel').hide();
+			},
+			selectedChanged: function(opts) {
+				selElems = opts.elems;
+				var i = selElems.length;
+				
+				while(i--) {
+					var elem = selElems[i];
+					if(elem && elem.tagName == 'path') {
+						if(opts.selectedElement && !opts.multiselected) {
+							showPanel(true);
+						} else {
+							showPanel(false);
+						}
+					} else {
+						showPanel(false);
+					}
+				}
+			}
+		};
+});
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-connector.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-connector.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-connector.js	(revision 29468)
@@ -0,0 +1,587 @@
+/*
+ * ext-connector.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ *
+ */
+ 
+methodDraw.addExtension("Connector", function(S) {
+	var svgcontent = S.svgcontent,
+		svgroot = S.svgroot,
+		getNextId = S.getNextId,
+		getElem = S.getElem,
+		addElem = S.addSvgElementFromJson,
+		selManager = S.selectorManager,
+		curConfig = methodDraw.curConfig,
+		started = false,
+		start_x,
+		start_y,
+		cur_line,
+		start_elem,
+		end_elem,
+		connections = [],
+		conn_sel = ".se_connector",
+		se_ns,
+// 			connect_str = "-SE_CONNECT-",
+		selElems = [];
+		
+	elData = $.data;
+		
+	var lang_list = {
+		"en":[
+			{"id": "mode_connect", "title": "Connect two objects" }
+		],
+		"fr":[
+			{"id": "mode_connect", "title": "Connecter deux objets"}
+		]
+	};
+	
+	function getOffset(side, line) {
+		var give_offset = !!line.getAttribute('marker-' + side);
+// 		var give_offset = $(line).data(side+'_off');
+
+		// TODO: Make this number (5) be based on marker width/height
+		var size = line.getAttribute('stroke-width') * 5;
+		return give_offset ? size : 0;
+	}
+	
+	function showPanel(on) {
+		var conn_rules = $('#connector_rules');
+		if(!conn_rules.length) {
+			conn_rules = $('<style id="connector_rules"><\/style>').appendTo('head');
+		} 
+		conn_rules.text(!on?"":"#tool_clone, #tool_topath, #tool_angle, #xy_panel { display: none !important; }");
+		$('#connector_panel').toggle(on);
+	}
+	
+	function setPoint(elem, pos, x, y, setMid) {
+		var pts = elem.points;
+		var pt = svgroot.createSVGPoint();
+		pt.x = x;
+		pt.y = y;
+		if(pos === 'end') pos = pts.numberOfItems-1;
+		// TODO: Test for this on init, then use alt only if needed
+		try {
+			pts.replaceItem(pt, pos);
+		} catch(err) {
+			// Should only occur in FF which formats points attr as "n,n n,n", so just split
+			var pt_arr = elem.getAttribute("points").split(" ");
+			for(var i=0; i< pt_arr.length; i++) {
+				if(i == pos) {
+					pt_arr[i] = x + ',' + y;
+				}
+			}
+			elem.setAttribute("points",pt_arr.join(" ")); 
+		}
+		
+		if(setMid) {
+			// Add center point
+			var pt_start = pts.getItem(0);
+			var pt_end = pts.getItem(pts.numberOfItems-1);
+			setPoint(elem, 1, (pt_end.x + pt_start.x)/2, (pt_end.y + pt_start.y)/2);
+		}
+	}
+	
+	function updateLine(diff_x, diff_y) {
+		// Update line with element
+		var i = connections.length;
+		while(i--) {
+			var conn = connections[i];
+			var line = conn.connector;
+			var elem = conn.elem;
+			
+			var pre = conn.is_start?'start':'end';
+// 						var sw = line.getAttribute('stroke-width') * 5;
+			
+			// Update bbox for this element
+			var bb = elData(line, pre+'_bb');
+			bb.x = conn.start_x + diff_x;
+			bb.y = conn.start_y + diff_y;
+			elData(line, pre+'_bb', bb);
+			
+			var alt_pre = conn.is_start?'end':'start';
+			
+			// Get center pt of connected element
+			var bb2 = elData(line, alt_pre+'_bb');
+			var src_x = bb2.x + bb2.width/2;
+			var src_y = bb2.y + bb2.height/2;
+			
+			// Set point of element being moved
+			var pt = getBBintersect(src_x, src_y, bb, getOffset(pre, line)); // $(line).data(pre+'_off')?sw:0
+			setPoint(line, conn.is_start?0:'end', pt.x, pt.y, true);
+			
+			// Set point of connected element
+			var pt2 = getBBintersect(pt.x, pt.y, elData(line, alt_pre + '_bb'), getOffset(alt_pre, line));
+			setPoint(line, conn.is_start?'end':0, pt2.x, pt2.y, true);
+
+		}
+	}
+	
+	function findConnectors(elems) {
+		if(!elems) elems = selElems;
+		var connectors = $(svgcontent).find(conn_sel);
+		connections = [];
+
+		// Loop through connectors to see if one is connected to the element
+		connectors.each(function() {
+			var start = elData(this, "c_start");
+			var end = elData(this, "c_end");
+			
+			var parts = [getElem(start), getElem(end)];
+			for(var i=0; i<2; i++) {
+				var c_elem = parts[i];
+				var add_this = false;
+				// The connected element might be part of a selected group
+				$(c_elem).parents().each(function() {
+					if($.inArray(this, elems) !== -1) {
+						// Pretend this element is selected
+						add_this = true;
+					}
+				});
+				
+				if(!c_elem || !c_elem.parentNode) {
+					$(this).remove();
+					continue;
+				}
+				if($.inArray(c_elem, elems) !== -1 || add_this) {
+					var bb = svgCanvas.getStrokedBBox([c_elem]);
+					connections.push({
+						elem: c_elem,
+						connector: this,
+						is_start: (i === 0),
+						start_x: bb.x,
+						start_y: bb.y
+					});	
+				}
+			}
+		});
+	}
+	
+	function updateConnectors(elems) {
+		// Updates connector lines based on selected elements
+		// Is not used on mousemove, as it runs getStrokedBBox every time,
+		// which isn't necessary there.
+		findConnectors(elems);
+		if(connections.length) {
+			// Update line with element
+			var i = connections.length;
+			while(i--) {
+				var conn = connections[i];
+				var line = conn.connector;
+				var elem = conn.elem;
+
+				var sw = line.getAttribute('stroke-width') * 5;
+				var pre = conn.is_start?'start':'end';
+				
+				// Update bbox for this element
+				var bb = svgCanvas.getStrokedBBox([elem]);
+				bb.x = conn.start_x;
+				bb.y = conn.start_y;
+				elData(line, pre+'_bb', bb);
+				var add_offset = elData(line, pre+'_off');
+			
+				var alt_pre = conn.is_start?'end':'start';
+				
+				// Get center pt of connected element
+				var bb2 = elData(line, alt_pre+'_bb');
+				var src_x = bb2.x + bb2.width/2;
+				var src_y = bb2.y + bb2.height/2;
+				
+				// Set point of element being moved
+				var pt = getBBintersect(src_x, src_y, bb, getOffset(pre, line));
+				setPoint(line, conn.is_start?0:'end', pt.x, pt.y, true);
+				
+				// Set point of connected element
+				var pt2 = getBBintersect(pt.x, pt.y, elData(line, alt_pre + '_bb'), getOffset(alt_pre, line));
+				setPoint(line, conn.is_start?'end':0, pt2.x, pt2.y, true);
+				
+				// Update points attribute manually for webkit
+				if(navigator.userAgent.indexOf('AppleWebKit') != -1) {
+					var pts = line.points;
+					var len = pts.numberOfItems;
+					var pt_arr = Array(len);
+					for(var j=0; j< len; j++) {
+						var pt = pts.getItem(j);
+						pt_arr[j] = pt.x + ',' + pt.y;
+					}	
+					line.setAttribute("points",pt_arr.join(" ")); 
+				}
+
+			}
+		}
+	}
+	
+	function getBBintersect(x, y, bb, offset) {
+		if(offset) {
+			offset -= 0;
+			bb = $.extend({}, bb);
+			bb.width += offset;
+			bb.height += offset;
+			bb.x -= offset/2;
+			bb.y -= offset/2;
+		}
+	
+		var mid_x = bb.x + bb.width/2;
+		var mid_y = bb.y + bb.height/2;
+		var len_x = x - mid_x;
+		var len_y = y - mid_y;
+		
+		var slope = Math.abs(len_y/len_x);
+		
+		var ratio;
+		
+		if(slope < bb.height/bb.width) {
+			ratio = (bb.width/2) / Math.abs(len_x);
+		} else {
+			ratio = (bb.height/2) / Math.abs(len_y);
+		}
+		
+		
+		return {
+			x: mid_x + len_x * ratio,
+			y: mid_y + len_y * ratio
+		}
+	}
+	
+	// Do once
+	(function() {
+		var gse = svgCanvas.groupSelectedElements;
+		
+		svgCanvas.groupSelectedElements = function() {
+			svgCanvas.removeFromSelection($(conn_sel).toArray());
+			return gse.apply(this, arguments);
+		}
+		
+		var mse = svgCanvas.moveSelectedElements;
+		
+		svgCanvas.moveSelectedElements = function() {
+			svgCanvas.removeFromSelection($(conn_sel).toArray());
+			var cmd = mse.apply(this, arguments);
+			updateConnectors();
+			return cmd;
+		}
+		
+		se_ns = svgCanvas.getEditorNS();
+	}());
+	
+	// Do on reset
+	function init() {
+		// Make sure all connectors have data set
+		$(svgcontent).find('*').each(function() { 
+			var conn = this.getAttributeNS(se_ns, "connector");
+			if(conn) {
+				this.setAttribute('class', conn_sel.substr(1));
+				var conn_data = conn.split(' ');
+				var sbb = svgCanvas.getStrokedBBox([getElem(conn_data[0])]);
+				var ebb = svgCanvas.getStrokedBBox([getElem(conn_data[1])]);
+				$(this).data('c_start',conn_data[0])
+					.data('c_end',conn_data[1])
+					.data('start_bb', sbb)
+					.data('end_bb', ebb);
+				svgCanvas.getEditorNS(true);
+			}
+		});
+// 			updateConnectors();
+	}
+	
+// 		$(svgroot).parent().mousemove(function(e) {
+// // 			if(started 
+// // 				|| svgCanvas.getMode() != "connector"
+// // 				|| e.target.parentNode.parentNode != svgcontent) return;
+// 			
+// 			console.log('y')
+// // 			if(e.target.parentNode.parentNode === svgcontent) {
+// // 					
+// // 			}
+// 		});
+	
+	return {
+		name: "Connector",
+		svgicons: "images/conn.svg",
+		buttons: [{
+			id: "mode_connect",
+			type: "mode",
+			icon: "images/cut.png",
+			title: "Connect two objects",
+			includeWith: {
+				button: '#tool_line',
+				isDefault: false,
+				position: 1
+			},
+			events: {
+				'click': function() {
+					svgCanvas.setMode("connector");
+				}
+			}
+		}],
+		addLangData: function(lang) {
+			return {
+				data: lang_list[lang]
+			};
+		},
+		mouseDown: function(opts) {
+			var e = opts.event;
+			start_x = opts.start_x,
+			start_y = opts.start_y;
+			var mode = svgCanvas.getMode();
+			
+			if(mode == "connector") {
+				
+				if(started) return;
+				
+				var mouse_target = e.target;
+				
+				var parents = $(mouse_target).parents();
+				
+				if($.inArray(svgcontent, parents) != -1) {
+					// Connectable element
+					
+					// If child of foreignObject, use parent
+					var fo = $(mouse_target).closest("foreignObject");
+					start_elem = fo.length ? fo[0] : mouse_target;
+					
+					// Get center of source element
+					var bb = svgCanvas.getStrokedBBox([start_elem]);
+					var x = bb.x + bb.width/2;
+					var y = bb.y + bb.height/2;
+					
+					started = true;
+					cur_line = addElem({
+						"element": "polyline",
+						"attr": {
+							"id": getNextId(),
+							"points": (x+','+y+' '+x+','+y+' '+start_x+','+start_y),
+							"stroke": '#' + curConfig.initStroke.color,
+							"stroke-width": (!start_elem.stroke_width || start_elem.stroke_width == 0) ? curConfig.initStroke.width : start_elem.stroke_width,
+							"fill": "none",
+							"opacity": curConfig.initStroke.opacity,
+							"style": "pointer-events:none"
+						}
+					});
+					elData(cur_line, 'start_bb', bb);
+				}
+				return {
+					started: true
+				};
+			} else if(mode == "select") {
+				findConnectors();
+			}
+		},
+		mouseMove: function(opts) {
+			var zoom = svgCanvas.getZoom();
+			var e = opts.event;
+			var x = opts.mouse_x/zoom;
+			var y = opts.mouse_y/zoom;
+			
+			var	diff_x = x - start_x,
+				diff_y = y - start_y;
+								
+			var mode = svgCanvas.getMode();
+			
+			if(mode == "connector" && started) {
+				
+				var sw = cur_line.getAttribute('stroke-width') * 3;
+				// Set start point (adjusts based on bb)
+				var pt = getBBintersect(x, y, elData(cur_line, 'start_bb'), getOffset('start', cur_line));
+				start_x = pt.x;
+				start_y = pt.y;
+				
+				setPoint(cur_line, 0, pt.x, pt.y, true);
+				
+				// Set end point
+				setPoint(cur_line, 'end', x, y, true);
+			} else if(mode == "select") {
+				var slen = selElems.length;
+				
+				while(slen--) {
+					var elem = selElems[slen];
+					// Look for selected connector elements
+					if(elem && elData(elem, 'c_start')) {
+						// Remove the "translate" transform given to move
+						svgCanvas.removeFromSelection([elem]);
+						svgCanvas.getTransformList(elem).clear();
+
+					}
+				}
+				if(connections.length) {
+					updateLine(diff_x, diff_y);
+
+					
+				}
+			} 
+		},
+		mouseUp: function(opts) {
+			var zoom = svgCanvas.getZoom();
+			var e = opts.event,
+				x = opts.mouse_x/zoom,
+				y = opts.mouse_y/zoom,
+				mouse_target = e.target;
+			
+			if(svgCanvas.getMode() == "connector") {
+				var fo = $(mouse_target).closest("foreignObject");
+				if(fo.length) mouse_target = fo[0];
+				
+				var parents = $(mouse_target).parents();
+
+				if(mouse_target == start_elem) {
+					// Start line through click
+					started = true;
+					return {
+						keep: true,
+						element: null,
+						started: started
+					}						
+				} else if($.inArray(svgcontent, parents) === -1) {
+					// Not a valid target element, so remove line
+					$(cur_line).remove();
+					started = false;
+					return {
+						keep: false,
+						element: null,
+						started: started
+					}
+				} else {
+					// Valid end element
+					end_elem = mouse_target;
+					
+					var start_id = start_elem.id, end_id = end_elem.id;
+					var conn_str = start_id + " " + end_id;
+					var alt_str = end_id + " " + start_id;
+					// Don't create connector if one already exists
+					var dupe = $(svgcontent).find(conn_sel).filter(function() {
+						var conn = this.getAttributeNS(se_ns, "connector");
+						if(conn == conn_str || conn == alt_str) return true;
+					});
+					if(dupe.length) {
+						$(cur_line).remove();
+						return {
+							keep: false,
+							element: null,
+							started: false
+						}
+					}
+					
+					var bb = svgCanvas.getStrokedBBox([end_elem]);
+					
+					var pt = getBBintersect(start_x, start_y, bb, getOffset('start', cur_line));
+					setPoint(cur_line, 'end', pt.x, pt.y, true);
+					$(cur_line)
+						.data("c_start", start_id)
+						.data("c_end", end_id)
+						.data("end_bb", bb);
+					se_ns = svgCanvas.getEditorNS(true);
+					cur_line.setAttributeNS(se_ns, "se:connector", conn_str);
+					cur_line.setAttribute('class', conn_sel.substr(1));
+					cur_line.setAttribute('opacity', 1);
+					svgCanvas.addToSelection([cur_line]);
+					svgCanvas.moveToBottomSelectedElement();
+					selManager.requestSelector(cur_line).showGrips(false);
+					started = false;
+					return {
+						keep: true,
+						element: cur_line,
+						started: started
+					}
+				}
+			}
+		},
+		selectedChanged: function(opts) {
+			// TODO: Find better way to skip operations if no connectors are in use
+			if(!$(svgcontent).find(conn_sel).length) return;
+			
+			if(svgCanvas.getMode() == 'connector') {
+				svgCanvas.setMode('select');
+			}
+			
+			// Use this to update the current selected elements
+			selElems = opts.elems;
+			
+			var i = selElems.length;
+			
+			while(i--) {
+				var elem = selElems[i];
+				if(elem && elData(elem, 'c_start')) {
+					selManager.requestSelector(elem).showGrips(false);
+					if(opts.selectedElement && !opts.multiselected) {
+						// TODO: Set up context tools and hide most regular line tools
+						showPanel(true);
+					} else {
+						showPanel(false);
+					}
+				} else {
+					showPanel(false);
+				}
+			}
+			updateConnectors();
+		},
+		elementChanged: function(opts) {
+			var elem = opts.elems[0];
+			if (elem && elem.tagName == 'svg' && elem.id == "svgcontent") {
+				// Update svgcontent (can change on import)
+				svgcontent = elem;
+				init();
+			}
+			
+			// Has marker, so change offset
+			if(elem && (
+				elem.getAttribute("marker-start") ||
+				elem.getAttribute("marker-mid") ||
+				elem.getAttribute("marker-end")
+			)) {
+				var start = elem.getAttribute("marker-start");
+				var mid = elem.getAttribute("marker-mid");
+				var end = elem.getAttribute("marker-end");
+				cur_line = elem;
+				$(elem)
+					.data("start_off", !!start)
+					.data("end_off", !!end);
+				
+				if(elem.tagName == "line" && mid) {
+					// Convert to polyline to accept mid-arrow
+					
+					var x1 = elem.getAttribute('x1')-0;
+					var x2 = elem.getAttribute('x2')-0;
+					var y1 = elem.getAttribute('y1')-0;
+					var y2 = elem.getAttribute('y2')-0;
+					var id = elem.id;
+					
+					var mid_pt = (' '+((x1+x2)/2)+','+((y1+y2)/2) + ' ');
+					var pline = addElem({
+						"element": "polyline",
+						"attr": {
+							"points": (x1+','+y1+ mid_pt +x2+','+y2),
+							"stroke": elem.getAttribute('stroke'),
+							"stroke-width": elem.getAttribute('stroke-width'),
+							"marker-mid": mid,
+							"fill": "none",
+							"opacity": elem.getAttribute('opacity') || 1
+						}
+					});
+					$(elem).after(pline).remove();
+					svgCanvas.clearSelection();
+					pline.id = id;
+					svgCanvas.addToSelection([pline]);
+					elem = pline;
+				}
+			}
+			// Update line if it's a connector
+			if(elem.getAttribute('class') == conn_sel.substr(1)) {
+				var start = getElem(elData(elem, 'c_start'));
+				updateConnectors([start]);
+			} else {
+				updateConnectors();
+			}
+		},
+		toolButtonStateUpdate: function(opts) {
+			if(opts.nostroke) {
+				if ($('#mode_connect').hasClass('tool_button_current')) {
+					clickSelect();
+				}
+			}
+			$('#mode_connect')
+				.toggleClass('disabled',opts.nostroke);
+		}
+	};
+});
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-eyedropper.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-eyedropper.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-eyedropper.js	(revision 29468)
@@ -0,0 +1,135 @@
+/*
+ * ext-eyedropper.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Jeff Schiller
+ *
+ */
+
+// Dependencies:
+// 1) jQuery
+// 2) history.js
+// 3) svg_editor.js
+// 4) svgcanvas.js
+
+methodDraw.addExtension("eyedropper", function(S) {
+		var svgcontent = S.svgcontent,
+			svgns = "http://www.w3.org/2000/svg",
+			svgdoc = S.svgroot.parentNode.ownerDocument,
+			svgCanvas = methodDraw.canvas,
+			ChangeElementCommand = svgedit.history.ChangeElementCommand,
+			addToHistory = function(cmd) { svgCanvas.undoMgr.addCommandToHistory(cmd); },
+			currentStyle = {fillPaint: "red", fillOpacity: 1.0,
+							strokePaint: "black", strokeOpacity: 1.0, 
+							strokeWidth: 5, strokeDashArray: null,
+							opacity: 1.0,
+							strokeLinecap: 'butt',
+							strokeLinejoin: 'miter'
+							};
+		function getStyle(opts) {
+			// if we are in eyedropper mode, we don't want to disable the eye-dropper tool
+			var mode = svgCanvas.getMode();
+			if (mode == "eyedropper") return;
+			var tool = $('#tool_eyedropper');
+
+		}
+		
+		var getPaint = function(color, opac, type) {
+			// update the editor's fill paint
+			var opts = null;
+			if (color.indexOf("url(#") === 0) {
+				var refElem = svgCanvas.getRefElem(color);
+				if(refElem) {
+					refElem = refElem.cloneNode(true);
+				} else {
+					refElem =  $("#" + type + "_color defs *")[0];
+				}
+
+				opts = { alpha: opac };
+				opts[refElem.tagName] = refElem;
+			} 
+			else if (color.indexOf("#") === 0) {
+				opts = {
+					alpha: opac,
+					solidColor: color.substr(1)
+				};
+			}
+			else {
+				opts = {
+					alpha: opac,
+					solidColor: 'none'
+				};
+			}
+			return new $.jGraduate.Paint(opts);
+		};
+		
+		return {
+			name: "eyedropper",
+			svgicons: "extensions/eyedropper-icon.xml",
+			buttons: [{
+				id: "tool_eyedropper",
+				type: "mode",
+				title: "Eye Dropper Tool",
+				position: 8,
+				key: "I",
+				icon: "extensions/eyedropper.png",
+				events: {
+					"click": function() {
+						svgCanvas.setMode("eyedropper");
+					}
+				}
+			}],
+			
+			mouseDown: function(opts) {
+				var mode = svgCanvas.getMode();
+				var e = opts.event;
+				var target = (e.target.id === "svgroot") ? document.getElementById('canvas_background') : e.target;
+				if (mode == "eyedropper" && target) {
+					currentStyle.fillPaint = target.getAttribute("fill") || "white";
+  				currentStyle.fillOpacity = target.getAttribute("fill-opacity") || 1.0;
+  				currentStyle.strokePaint = target.getAttribute("stroke") || 'none';
+  				currentStyle.strokeOpacity = target.getAttribute("stroke-opacity") || 1.0;
+  				currentStyle.strokeWidth = target.getAttribute("stroke-width");
+  				currentStyle.strokeDashArray = target.getAttribute("stroke-dasharray");
+  				currentStyle.strokeLinecap = target.getAttribute("stroke-linecap");
+  				currentStyle.strokeLinejoin = target.getAttribute("stroke-linejoin");
+  				currentStyle.opacity = target.getAttribute("opacity") || 1.0;
+  				opts.selectedElements = opts.selectedElements.filter(Boolean)
+				  if (!opts.selectedElements.length) { //nothing selected, just update colors
+  			    var fill = getPaint(currentStyle.fillPaint, currentStyle.fillOpacity*100, "fill");
+  					var stroke = getPaint(currentStyle.strokePaint, currentStyle.strokeOpacity*100, "stroke");
+  					methodDraw.paintBox.fill.setPaint(fill)
+  					methodDraw.paintBox.stroke.setPaint(stroke)
+  			    return;
+  			  }
+					if ($.inArray(opts.selectedElements.nodeName, ['g', 'use']) == -1) {
+						var changes = {};
+						var change = function(elem, attrname, newvalue) {
+							changes[attrname] = elem.getAttribute(attrname);
+							elem.setAttribute(attrname, newvalue);
+						};
+						var batchCmd = new S.BatchCommand();
+						opts.selectedElements.forEach(function(element){
+						  if (currentStyle.fillPaint) 		  change(element, "fill", currentStyle.fillPaint);
+  						if (currentStyle.fillOpacity) 		change(element, "fill-opacity", currentStyle.fillOpacity);
+  						if (currentStyle.strokePaint) 		change(element, "stroke", currentStyle.strokePaint);
+  						if (currentStyle.strokeOpacity) 	change(element, "stroke-opacity", currentStyle.strokeOpacity);
+  						if (currentStyle.strokeWidth) 		change(element, "stroke-width", currentStyle.strokeWidth);
+  						if (currentStyle.strokeDashArray) change(element, "stroke-dasharray", currentStyle.strokeDashArray);
+  						if (currentStyle.opacity) 			  change(element, "opacity", currentStyle.opacity);
+  						if (currentStyle.strokeLinecap) 	change(element, "stroke-linecap", currentStyle.strokeLinecap);
+  						if (currentStyle.strokeLinejoin) 	change(element, "stroke-linejoin", currentStyle.strokeLinejoin);
+  						batchCmd.addSubCommand(new ChangeElementCommand(element, changes));
+  						changes = {};
+						});
+						var fill = getPaint(currentStyle.fillPaint, currentStyle.fillOpacity*100, "fill")
+						var stroke = getPaint(currentStyle.strokePaint, currentStyle.strokeOpacity*100, "stroke")
+						methodDraw.paintBox.fill.update(true)
+						methodDraw.paintBox.stroke.update(true)
+						addToHistory(batchCmd);
+					}
+				}
+			}
+		};
+});
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-foreignobject.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-foreignobject.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-foreignobject.js	(revision 29468)
@@ -0,0 +1,277 @@
+/*
+ * ext-foreignobject.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Jacques Distler 
+ * Copyright(c) 2010 Alexis Deveria 
+ *
+ */
+
+methodDraw.addExtension("foreignObject", function(S) {
+		var svgcontent = S.svgcontent,
+			addElem = S.addSvgElementFromJson,
+			selElems,
+			svgns = "http://www.w3.org/2000/svg",
+			xlinkns = "http://www.w3.org/1999/xlink",
+			xmlns = "http://www.w3.org/XML/1998/namespace",
+			xmlnsns = "http://www.w3.org/2000/xmlns/",
+			se_ns = "http://svg-edit.googlecode.com",
+			htmlns = "http://www.w3.org/1999/xhtml",
+			mathns = "http://www.w3.org/1998/Math/MathML",
+			editingforeign = false,
+			svgdoc = S.svgroot.parentNode.ownerDocument,
+			started,
+			newFO;
+			
+			
+		var properlySourceSizeTextArea = function(){
+			// TODO: remove magic numbers here and get values from CSS
+			var height = $('#svg_source_container').height() - 80;
+			$('#svg_source_textarea').css('height', height);
+		};
+
+		function showPanel(on) {
+			var fc_rules = $('#fc_rules');
+			if(!fc_rules.length) {
+				fc_rules = $('<style id="fc_rules"><\/style>').appendTo('head');
+			} 
+			fc_rules.text(!on?"":" #tool_topath { display: none !important; }");
+			$('#foreignObject_panel').toggle(on);
+		}
+
+		function toggleSourceButtons(on) {
+			$('#tool_source_save, #tool_source_cancel').toggle(!on);
+			$('#foreign_save, #foreign_cancel').toggle(on);
+		}
+		
+			
+		// Function: setForeignString(xmlString, elt)
+		// This function sets the content of element elt to the input XML.
+		//
+		// Parameters:
+		// xmlString - The XML text.
+		// elt - the parent element to append to
+		//
+		// Returns:
+		// This function returns false if the set was unsuccessful, true otherwise.
+		function setForeignString(xmlString) {
+			var elt = selElems[0];
+			try {
+				// convert string into XML document
+				var newDoc = Utils.text2xml('<svg xmlns="'+svgns+'" xmlns:xlink="'+xlinkns+'">'+xmlString+'</svg>');
+				// run it through our sanitizer to remove anything we do not support
+				S.sanitizeSvg(newDoc.documentElement);
+				elt.parentNode.replaceChild(svgdoc.importNode(newDoc.documentElement.firstChild, true), elt);
+				S.call("changed", [elt]);
+				svgCanvas.clearSelection();
+			} catch(e) {
+				console.log(e);
+				return false;
+			}
+	
+			return true;
+		};
+
+		function showForeignEditor() {
+			var elt = selElems[0];
+			if (!elt || editingforeign) return;
+			editingforeign = true;
+			toggleSourceButtons(true);
+			elt.removeAttribute('fill');
+
+			var str = S.svgToString(elt, 0);
+			$('#svg_source_textarea').val(str);
+			$('#svg_source_editor').fadeIn();
+			properlySourceSizeTextArea();
+			$('#svg_source_textarea').focus();
+		}
+		
+		function setAttr(attr, val) {
+			svgCanvas.changeSelectedAttribute(attr, val);
+			S.call("changed", selElems);
+		}
+		
+		
+		return {
+			name: "foreignObject",
+			svgicons: "extensions/foreignobject-icons.xml",
+			buttons: [{
+				id: "tool_foreign",
+				type: "mode",
+				title: "Foreign Object Tool",
+				events: {
+					'click': function() {
+						svgCanvas.setMode('foreign')
+					}
+				}
+			},{
+				id: "edit_foreign",
+				type: "context",
+				panel: "foreignObject_panel",
+				title: "Edit ForeignObject Content",
+				events: {
+					'click': function() {
+						showForeignEditor();
+					}
+				}
+			}],
+			
+			context_tools: [{
+				type: "input",
+				panel: "foreignObject_panel",
+				title: "Change foreignObject's width",
+				id: "foreign_width",
+				label: "w",
+				size: 3,
+				events: {
+					change: function() {
+						setAttr('width', this.value);
+					}
+				}
+			},{
+				type: "input",
+				panel: "foreignObject_panel",
+				title: "Change foreignObject's height",
+				id: "foreign_height",
+				label: "h",
+				events: {
+					change: function() {
+						setAttr('height', this.value);
+					}
+				}
+			}, {
+				type: "input",
+				panel: "foreignObject_panel",
+				title: "Change foreignObject's font size",
+				id: "foreign_font_size",
+				label: "font-size",
+				size: 2,
+				defval: 16,
+				events: {
+					change: function() {
+						setAttr('font-size', this.value);
+					}
+				}
+			}
+			
+			
+			],
+			callback: function() {
+				$('#foreignObject_panel').hide();
+
+				var endChanges = function() {
+					$('#svg_source_editor').hide();
+					editingforeign = false;
+					$('#svg_source_textarea').blur();
+					toggleSourceButtons(false);
+				}
+
+				// TODO: Needs to be done after orig icon loads
+				setTimeout(function() {				
+					// Create source save/cancel buttons
+					var save = $('#tool_source_save').clone()
+						.hide().attr('id', 'foreign_save').unbind()
+						.appendTo("#tool_source_back").click(function() {
+							
+							if (!editingforeign) return;
+
+							if (!setForeignString($('#svg_source_textarea').val())) {
+								$.confirm("Errors found. Revert to original?", function(ok) {
+									if(!ok) return false;
+									endChanges();
+								});
+							} else {
+								endChanges();
+							}
+							// setSelectMode();	
+						});
+						
+					var cancel = $('#tool_source_cancel').clone()
+						.hide().attr('id', 'foreign_cancel').unbind()
+						.appendTo("#tool_source_back").click(function() {
+							endChanges();
+						});
+					
+				}, 3000);
+			},
+			mouseDown: function(opts) {
+				var e = opts.event;
+				
+				if(svgCanvas.getMode() == "foreign") {
+
+					started = true;
+					newFO = S.addSvgElementFromJson({
+						"element": "foreignObject",
+						"attr": {
+							"x": opts.start_x,
+							"y": opts.start_y,
+							"id": S.getNextId(),
+							"font-size": 16, //cur_text.font_size,
+							"width": "48",
+							"height": "20",
+							"style": "pointer-events:inherit"
+						}
+					});
+					var m = svgdoc.createElementNS(mathns, 'math');
+					m.setAttributeNS(xmlnsns, 'xmlns', mathns);
+					m.setAttribute('display', 'inline');
+					var mi = svgdoc.createElementNS(mathns, 'mi');
+					mi.setAttribute('mathvariant', 'normal');
+					mi.textContent = "\u03A6";
+					var mo = svgdoc.createElementNS(mathns, 'mo');
+					mo.textContent = "\u222A";
+					var mi2 = svgdoc.createElementNS(mathns, 'mi');
+					mi2.textContent = "\u2133";
+					m.appendChild(mi);
+					m.appendChild(mo);
+					m.appendChild(mi2);
+					newFO.appendChild(m);
+					return {
+						started: true
+					}
+				}
+			},
+			mouseUp: function(opts) {
+				var e = opts.event;
+				if(svgCanvas.getMode() == "foreign" && started) {
+					var attrs = $(newFO).attr(["width", "height"]);
+					keep = (attrs.width != 0 || attrs.height != 0);
+					svgCanvas.addToSelection([newFO], true);
+
+					return {
+						keep: keep,
+						element: newFO
+					}
+
+				}
+				
+			},
+			selectedChanged: function(opts) {
+				// Use this to update the current selected elements
+				selElems = opts.elems;
+				
+				var i = selElems.length;
+				
+				while(i--) {
+					var elem = selElems[i];
+					if(elem && elem.tagName == "foreignObject") {
+						if(opts.selectedElement && !opts.multiselected) {
+							$('#foreign_font_size').val(elem.getAttribute("font-size"));
+							$('#foreign_width').val(elem.getAttribute("width"));
+							$('#foreign_height').val(elem.getAttribute("height"));
+						
+							showPanel(true);
+						} else {
+							showPanel(false);
+						}
+					} else {
+						showPanel(false);
+					}
+				}
+			},
+			elementChanged: function(opts) {
+				var elem = opts.elems[0];
+			}
+		};
+});
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-grid.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-grid.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-grid.js	(revision 29468)
@@ -0,0 +1,186 @@
+/*
+ * ext-grid.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Redou Mine
+ * Copyright(c) 2010 Alexis Deveria
+ *
+ */
+
+// Dependencies:
+// 1) units.js
+// 2) everything else
+
+methodDraw.addExtension("view_grid", function(s) {
+    if (!document.getElementById("canvasGrid")){
+    var svgdoc = document.getElementById("svgcanvas").ownerDocument,
+			svgns = "http://www.w3.org/2000/svg",
+			dims = methodDraw.curConfig.dimensions,
+			svgroot = s.svgroot;
+    var svgCanvas = methodDraw.canvas;
+	var showGrid = false;
+    var assignAttributes = s.assignAttributes;
+    
+    var hcanvas = document.createElement('canvas');
+    $(hcanvas).hide().appendTo('body');
+
+    var canvasgrid = svgdoc.createElementNS(svgns, "g");
+    assignAttributes(canvasgrid, {
+        'id': 'canvasGrid',
+        'width': '100%',
+        'height': '100%',
+        'x': 0,
+        'y': 0,
+        'overflow': 'visible',
+        'display': 'none'
+    });
+    
+    var canvBG = $('#canvas_background');
+    canvBG.after(canvasgrid);
+    
+    
+
+        // grid-pattern
+        var gridPattern = svgdoc.createElementNS(svgns, "pattern");
+        assignAttributes(gridPattern, {
+            'id': 'gridpattern',
+            'patternUnits': 'userSpaceOnUse',
+            'x': 0, //-(value.strokeWidth / 2), // position for strokewidth
+            'y': 0, //-(value.strokeWidth / 2), // position for strokewidth
+            'width': 100,
+            'height': 100
+        });
+        
+        var gridimg = svgdoc.createElementNS(svgns, "image");
+        assignAttributes(gridimg, {
+            'x': 0,
+            'y': 0,
+            'width': 100,
+            'height': 100
+        });
+        
+        gridPattern.appendChild(gridimg);
+        $('#svgroot defs').append(gridPattern);
+
+        // grid-box
+        var gridBox = svgdoc.createElementNS(svgns, "rect");
+        assignAttributes(gridBox, {
+            'width': '100%',
+            'height': '100%',
+            'x': 0,
+            'y': 0,
+            'stroke-width': 0,
+            'stroke': 'none',
+            'fill': 'url(#gridpattern)',
+            'style': 'pointer-events: none; display:visible;'
+        });
+        $('#canvasGrid').append(gridBox);
+        }
+//     });
+
+	function updateGrid(zoom) {
+		// TODO: Try this with <line> elements, then compare performance difference
+	
+		var bgwidth = +canvBG.attr('width');
+		var bgheight = +canvBG.attr('height');
+		
+		var units = svgedit.units.getTypeMap();
+		var unit = units[methodDraw.curConfig.baseUnit]; // 1 = 1px
+		var r_intervals = [.01, .1, 1, 10, 100, 1000];
+	
+		var d = 0;
+		var is_x = (d === 0);
+		var dim = is_x ? 'x' : 'y';
+		var lentype = is_x?'width':'height';
+		var c_elem = svgCanvas.getContentElem();
+		var content_d = c_elem.getAttribute(dim)-0;
+		
+		var hcanv = hcanvas;
+		
+		var u_multi = unit * zoom;
+		
+		// Calculate the main number interval
+		var raw_m = 100 / u_multi;
+		var multi = 1;
+		for(var i = 0; i < r_intervals.length; i++) {
+			var num = r_intervals[i];
+			multi = num;
+			if(raw_m <= num) {
+				break;
+			}
+		}
+		
+		var big_int = multi * u_multi;
+
+		// Set the canvas size to the width of the container
+		hcanv.width = big_int;
+		hcanv.height = big_int;
+		var ctx = hcanv.getContext("2d");
+
+		var ruler_d = 0; 
+		var cur_d = .5;
+		
+		var part = big_int / 10;
+
+		ctx.globalAlpha = 0.2;
+		ctx.strokeStyle = "#000";
+		for(var i = 1; i < 10; i++) {
+			var sub_d = Math.round(part * i) + .5;
+// 					var line_num = (i % 2)?12:10;
+			var line_num = 0;
+			ctx.moveTo(sub_d, big_int);
+			ctx.lineTo(sub_d, line_num);
+			ctx.moveTo(big_int, sub_d);
+			ctx.lineTo(line_num ,sub_d);
+		}
+		ctx.stroke();
+		ctx.beginPath();  
+		ctx.globalAlpha = 0.5;
+		ctx.moveTo(cur_d, big_int);
+		ctx.lineTo(cur_d, 0);
+
+		ctx.moveTo(big_int, cur_d);
+		ctx.lineTo(0, cur_d);
+		ctx.stroke();
+
+		var datauri = hcanv.toDataURL('image/png');
+		gridimg.setAttribute('width', big_int);
+		gridimg.setAttribute('height', big_int);
+		gridimg.parentNode.setAttribute('width', big_int);
+		gridimg.parentNode.setAttribute('height', big_int);
+		svgCanvas.setHref(gridimg, datauri);
+	}
+
+    return {
+        name: "view_grid",
+        zoomChanged: function(zoom) {
+            // update size
+            if(showGrid) updateGrid(zoom);
+        },
+
+        buttons: [{
+            id: "view_grid",
+            type: "menu",
+            after: "tool_wireframe",
+            panel: "view_menu",
+            title: "View Grid",
+            events: {
+                'click': function() {
+                    var gr = !$('#view_grid').hasClass('push_button_pressed');
+                    if (gr) {
+                        methodDraw.curConfig.showGrid = showGrid = true;
+                        $('#view_grid').addClass('push_button_pressed');
+                        $('#canvasGrid').attr('display', 'inline');
+                        updateGrid(svgCanvas.getZoom());
+                    }
+                    else {
+                        methodDraw.curConfig.showGrid = showGrid = false;
+                        $('#view_grid').removeClass('push_button_pressed');
+                        $('#canvasGrid').attr('display', 'none');
+                    }
+                }
+            }
+}]
+        };
+    });
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-helloworld.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-helloworld.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-helloworld.js	(revision 29468)
@@ -0,0 +1,78 @@
+/*
+ * ext-helloworld.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ *
+ */
+ 
+/* 
+	This is a very basic SVG-Edit extension. It adds a "Hello World" button in
+	the left panel. Clicking on the button, and then the canvas will show the
+ 	user the point on the canvas that was clicked on.
+*/
+ 
+methodDraw.addExtension("Hello World", function() {
+
+		return {
+			name: "Hello World",
+			// For more notes on how to make an icon file, see the source of
+			// the hellorworld-icon.xml
+			svgicons: "extensions/helloworld-icon.xml",
+			
+			// Multiple buttons can be added in this array
+			buttons: [{
+				// Must match the icon ID in helloworld-icon.xml
+				id: "hello_world", 
+				
+				// This indicates that the button will be added to the "mode"
+				// button panel on the left side
+				type: "mode", 
+				
+				// Tooltip text
+				title: "Say 'Hello World'", 
+				
+				// Events
+				events: {
+					'click': function() {
+						// The action taken when the button is clicked on.
+						// For "mode" buttons, any other button will 
+						// automatically be de-pressed.
+						svgCanvas.setMode("hello_world");
+					}
+				}
+			}],
+			// This is triggered when the main mouse button is pressed down 
+			// on the editor canvas (not the tool panels)
+			mouseDown: function() {
+				// Check the mode on mousedown
+				if(svgCanvas.getMode() == "hello_world") {
+				
+					// The returned object must include "started" with 
+					// a value of true in order for mouseUp to be triggered
+					return {started: true};
+				}
+			},
+			
+			// This is triggered from anywhere, but "started" must have been set
+			// to true (see above). Note that "opts" is an object with event info
+			mouseUp: function(opts) {
+				// Check the mode on mouseup
+				if(svgCanvas.getMode() == "hello_world") {
+					var zoom = svgCanvas.getZoom();
+					
+					// Get the actual coordinate by dividing by the zoom value
+					var x = opts.mouse_x / zoom;
+					var y = opts.mouse_y / zoom;
+					
+					var text = "Hello World!\n\nYou clicked here: " 
+						+ x + ", " + y;
+						
+					// Show the text using the custom alert function
+					$.alert(text);
+				}
+			}
+		};
+});
+
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-imagelib.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-imagelib.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-imagelib.js	(revision 29468)
@@ -0,0 +1,444 @@
+/*
+ * ext-imagelib.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ *
+ */
+
+methodDraw.addExtension("imagelib", function() {
+
+	var uiStrings = methodDraw.uiStrings;
+	
+	$.extend(uiStrings, {
+		imagelib: {
+			select_lib: 'Select an image library',
+			show_list: 'Show library list',
+			import_single: 'Import single',
+			import_multi: 'Import multiple',
+			open: 'Open as new document'
+		}
+	});
+
+	var img_libs = [{
+			name: 'Demo library (local)',
+			url: 'extensions/imagelib/index.html',
+			description: 'Demonstration library for SVG-edit on this server'
+		}, 
+		{
+			name: 'IAN Symbol Libraries',
+			url: 'http://ian.umces.edu/symbols/catalog/svgedit/album_chooser.php',
+			description: 'Free library of illustrations'
+		}
+	];
+	
+	var xlinkns = "http://www.w3.org/1999/xlink";
+
+	function closeBrowser() {
+		$('#imgbrowse_holder').hide();
+	}
+	
+	function importImage(url) {
+		var newImage = svgCanvas.addSvgElementFromJson({
+			"element": "image",
+			"attr": {
+				"x": 0,
+				"y": 0,
+				"width": 0,
+				"height": 0,
+				"id": svgCanvas.getNextId(),
+				"style": "pointer-events:inherit"
+			}
+		});
+		svgCanvas.clearSelection();
+		svgCanvas.addToSelection([newImage]);
+		svgCanvas.setImageURL(url);
+	}
+
+	var mode = 's';
+	var multi_arr = [];
+	var cur_meta;
+	var tranfer_stopped = false;
+	var pending = {};
+	
+	 window.addEventListener("message", function(evt) {
+		// Receive postMessage data
+		var response = evt.data;
+		
+		if(!response) {
+			// Do nothing
+			return;
+		}
+		
+		var char1 = response.charAt(0);
+		
+		var svg_str;
+		var img_str;
+		
+		if(char1 != "{" && tranfer_stopped) {
+			tranfer_stopped = false;
+			return;
+		}
+		
+		if(char1 == '|') {
+			var secondpos = response.indexOf('|', 1);
+			var id = response.substr(1, secondpos-1);
+			response = response.substr(secondpos+1);
+			char1 = response.charAt(0);
+
+		}
+		
+		
+		// Hide possible transfer dialog box
+		$('#dialog_box').hide();
+		
+		switch (char1) {
+			case '{':
+				// Metadata
+				tranfer_stopped = false;
+				var cur_meta = JSON.parse(response);
+				
+				pending[cur_meta.id] = cur_meta;
+				
+				var name = (cur_meta.name || 'file');
+				
+				var message = uiStrings.notification.retrieving.replace('%s', name);
+				
+				if(mode != 'm') {
+					$.process_cancel(message, function() {
+						tranfer_stopped = true;
+						// Should a message be sent back to the frame?
+						
+						$('#dialog_box').hide();
+					});
+				} else {
+					var entry = $('<div>' + message + '</div>').data('id', cur_meta.id);
+					preview.append(entry);
+					cur_meta.entry = entry;
+				}
+				
+				return;
+			case '<':
+				svg_str = true;
+				break;
+			case 'd':
+				if(response.indexOf('data:image/svg+xml') === 0) {
+					var pre = 'data:image/svg+xml;base64,';
+					var src = response.substring(pre.length);
+					response = svgCanvas.Utils.decode64(src);
+					svg_str = true;
+					break;
+				} else if(response.indexOf('data:image/') === 0) {
+					img_str = true;
+					break;
+				}
+				// Else fall through
+			default:
+				// TODO: See if there's a way to base64 encode the binary data stream
+// 				var str = 'data:;base64,' + svgCanvas.Utils.encode64(response, true);
+			
+				// Assume it's raw image data
+// 				importImage(str);
+			
+				// Don't give warning as postMessage may have been used by something else
+				if(mode !== 'm') {
+					closeBrowser();
+				} else {
+					pending[id].entry.remove();
+				}
+// 				$.alert('Unexpected data was returned: ' + response, function() {
+// 					if(mode !== 'm') {
+// 						closeBrowser();
+// 					} else {
+// 						pending[id].entry.remove();
+// 					}
+// 				});
+				return;
+		}
+		
+		switch (mode) {
+			case 's':
+				// Import one
+				if(svg_str) {
+					svgCanvas.importSvgString(response);
+				} else if(img_str) {
+					importImage(response);
+				}
+				closeBrowser();
+				break;
+			case 'm':
+				// Import multiple
+				multi_arr.push([(svg_str ? 'svg' : 'img'), response]);
+				var cur_meta = pending[id];
+				if(svg_str) {
+					if(cur_meta && cur_meta.name) {
+						var title = cur_meta.name;
+					}  else {
+						// Try to find a title
+						var xml = new DOMParser().parseFromString(response, 'text/xml').documentElement;
+						var title = $(xml).children('title').first().text() || '(SVG #' + response.length + ')';
+					}
+					if(cur_meta) {
+						preview.children().each(function() {
+							if($(this).data('id') == id) {
+								if(cur_meta.preview_url) {
+									$(this).html('<img src="' + cur_meta.preview_url + '">' + title);
+								} else {
+									$(this).text(title);
+								}
+								submit.removeAttr('disabled');
+							}
+						});
+					} else {
+						preview.append('<div>'+title+'</div>');
+						submit.removeAttr('disabled');
+					}
+				} else {
+					if(cur_meta && cur_meta.preview_url) {
+						var title = cur_meta.name || '';
+					}
+					if(cur_meta && cur_meta.preview_url) {
+						var entry = '<img src="' + cur_meta.preview_url + '">' + title;
+					} else {
+						var entry = '<img src="' + response + '">';
+					}
+				
+					if(cur_meta) {
+						preview.children().each(function() {
+							if($(this).data('id') == id) {
+								$(this).html(entry);
+								submit.removeAttr('disabled');
+							}
+						});
+					} else {
+						preview.append($('<div>').append(entry));
+						submit.removeAttr('disabled');
+					}
+
+				}
+				break;
+			case 'o':
+				// Open
+				if(!svg_str) break;
+				methodDraw.openPrep(function(ok) {
+					if(!ok) return;
+					svgCanvas.clear();
+					svgCanvas.setSvgString(response);
+					// updateCanvas();
+				});
+				closeBrowser();
+				break;
+		}
+	}, true);
+	
+	var preview, submit;
+
+	function toggleMulti(show) {
+	
+		$('#lib_framewrap, #imglib_opts').css({right: (show ? 200 : 10)});
+		if(!preview) {
+			preview = $('<div id=imglib_preview>').css({
+				position: 'absolute',
+				top: 45,
+				right: 10,
+				width: 180,
+				bottom: 45,
+				background: '#fff',
+				overflow: 'auto'
+			}).insertAfter('#lib_framewrap');
+			
+			submit = $('<button disabled>Import selected</button>').appendTo('#imgbrowse').click(function() {
+				$.each(multi_arr, function(i) {
+					var type = this[0];
+					var data = this[1];
+					if(type == 'svg') {
+						svgCanvas.importSvgString(data);
+					} else {
+						importImage(data);
+					}
+					svgCanvas.moveSelectedElements(i*20, i*20, false);
+				});
+				preview.empty();
+				multi_arr = [];
+				$('#imgbrowse_holder').hide();
+			}).css({
+				position: 'absolute',
+				bottom: 10,
+				right: -10
+			});
+
+		}
+		
+		preview.toggle(show);
+		submit.toggle(show);
+	}
+
+	function showBrowser() {
+
+		var browser = $('#imgbrowse');
+		if(!browser.length) {
+			$('<div id=imgbrowse_holder><div id=imgbrowse class=toolbar_button>\
+			</div></div>').insertAfter('#svg_docprops');
+			browser = $('#imgbrowse');
+
+			var all_libs = uiStrings.imagelib.select_lib;
+
+			var lib_opts = $('<ul id=imglib_opts>').appendTo(browser);
+			var frame = $('<iframe/>').prependTo(browser).hide().wrap('<div id=lib_framewrap>');
+			
+			var header = $('<h1>').prependTo(browser).text(all_libs).css({
+				position: 'absolute',
+				top: 0,
+				left: 0,
+				width: '100%'
+			});
+			
+			var cancel = $('<button>' + uiStrings.common.cancel + '</button>').appendTo(browser).click(function() {
+				$('#imgbrowse_holder').hide();
+			}).css({
+				position: 'absolute',
+				top: 5,
+				right: -10
+			});
+			
+			var leftBlock = $('<span>').css({position:'absolute',top:5,left:10}).appendTo(browser);
+			
+			var back = $('<button hidden>' + uiStrings.imagelib.show_list + '</button>').appendTo(leftBlock).click(function() {
+				frame.attr('src', 'about:blank').hide();
+				lib_opts.show();
+				header.text(all_libs);
+				back.hide();
+			}).css({
+				'margin-right': 5
+			}).hide();
+			
+			var type = $('<select><option value=s>' + 
+			uiStrings.imagelib.import_single + '</option><option value=m>' +
+			uiStrings.imagelib.import_multi + '</option><option value=o>' +
+			uiStrings.imagelib.open + '</option></select>').appendTo(leftBlock).change(function() {
+				mode = $(this).val();
+				switch (mode) {
+					case 's':
+					case 'o':
+						toggleMulti(false);
+						break;
+					
+					case 'm':
+						// Import multiple
+						toggleMulti(true);
+				}
+			}).css({
+				'margin-top': 10
+			});
+			
+			cancel.prepend($.getSvgIcon('cancel', true));
+			back.prepend($.getSvgIcon('tool_imagelib', true));
+			
+			$.each(img_libs, function(i, opts) {
+				$('<li>').appendTo(lib_opts).text(opts.name).click(function() {
+					frame.attr('src', opts.url).show();
+					header.text(opts.name);
+					lib_opts.hide();
+					back.show();
+				}).append('<span>' + opts.description + '</span>');
+			});
+			
+		} else {
+			$('#imgbrowse_holder').show();
+		}
+	}
+	
+	return {
+		buttons: [{
+			id: "tool_imagelib",
+			type: "menu", // _flyout
+			position: 4,
+			panel: "file_menu",
+			title: "Image library",
+			events: {
+				"mouseup": showBrowser
+			}
+		}],
+		callback: function() {
+		
+			$('<style>').text('\
+				#imgbrowse_holder {\
+					position: absolute;\
+					top: 0;\
+					left: 0;\
+					width: 100%;\
+					height: 100%;\
+					background-color: rgba(0, 0, 0, .5);\
+					z-index: 5;\
+				}\
+				\
+				#imgbrowse {\
+					position: absolute;\
+					top: 25px;\
+					left: 25px;\
+					right: 25px;\
+					bottom: 25px;\
+					min-width: 300px;\
+					min-height: 200px;\
+					background: #B0B0B0;\
+					border: 1px outset #777;\
+				}\
+				#imgbrowse h1 {\
+					font-size: 20px;\
+					margin: .4em;\
+					text-align: center;\
+				}\
+				#lib_framewrap,\
+				#imgbrowse > ul {\
+					position: absolute;\
+					top: 45px;\
+					left: 10px;\
+					right: 10px;\
+					bottom: 10px;\
+					background: white;\
+					margin: 0;\
+					padding: 0;\
+				}\
+				#imgbrowse > ul {\
+					overflow: auto;\
+				}\
+				#imgbrowse > div {\
+					border: 1px solid #666;\
+				}\
+				#imglib_preview > div {\
+					padding: 5px;\
+					font-size: 12px;\
+				}\
+				#imglib_preview img {\
+					display: block;\
+					margin: 0 auto;\
+					max-height: 100px;\
+				}\
+				#imgbrowse li {\
+					list-style: none;\
+					padding: .5em;\
+					background: #E8E8E8;\
+					border-bottom: 1px solid #B0B0B0;\
+					line-height: 1.2em;\
+					font-style: sans-serif;\
+					}\
+				#imgbrowse li > span {\
+					color: #666;\
+					font-size: 15px;\
+					display: block;\
+					}\
+				#imgbrowse li:hover {\
+					background: #FFC;\
+					cursor: pointer;\
+					}\
+				#imgbrowse iframe {\
+					width: 100%;\
+					height: 100%;\
+					border: 0;\
+				}\
+			').appendTo('head');
+		}
+	}
+});
+
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-imagelib.xml
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-imagelib.xml	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-imagelib.xml	(revision 29468)
@@ -0,0 +1,14 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+	<g id="tool_imagelib">
+<svg width="201" height="211" xmlns="http://www.w3.org/2000/svg">
+ <g>
+  <path fill="#efe8b8" stroke="#d6c47c" stroke-linecap="round" d="m2.75,49.51761l56.56,-46.26761c12.73,8.25 25.71001,7 46.44,0.75l-56.03999,47.23944l-22.72002,25.01056l-24.23999,-26.73239z" id="svg_2" stroke-width="7"/>
+  <path fill="#a03333" stroke="#3f3f3f" d="m3.75,203.25002c14.33301,7 30.66699,7 46,0l0,-152.00002c-14.66699,8 -32.33301,8 -47,0l1,152.00002zm45.75,-152.25002l56.25,-46.75l0,151l-56,48.00002m-47.25,-154.25002l57.25,-46.5" id="svg_1" stroke-width="7" stroke-linecap="round"/>
+  <path fill="#efe8b8" stroke="#d6c47c" stroke-linecap="round" d="m49.75,49.51801l56.56,-46.26801c12.72998,8.25 25.71002,7 46.44,0.75l-56.03998,47.239l-22.72003,25.011l-24.23999,-26.73199z" stroke-width="7" id="svg_5"/>
+  <path fill="#2f8e2f" stroke="#3f3f3f" d="m50.75,202.25c14.33301,7 30.66699,7.04253 46,0.04253l0,-151.04253c-14.66699,8 -32.33301,8 -47,0l1,151zm45.75,-151.25l56.25,-46.75l0,144.01219l-56,51.98782m-47.25,-151.25002l57.25,-46.5" stroke-width="7" stroke-linecap="round" id="svg_6"/>
+  <path fill="#efe8b8" stroke="#d6c47c" stroke-linecap="round" d="m95.75,49.51801l56.56,-46.26801c12.72998,8.25 25.71002,7 46.44,0.75l-56.03998,47.239l-22.72003,25.011l-24.23999,-26.73199z" stroke-width="7" id="svg_10"/>
+  <path fill="#336393" stroke="#3f3f3f" d="m96.75,200.29445c14.33301,7 30.66699,7 46,0l0,-149.04445c-14.66699,8 -32.33301,8 -47,0l1,149.04445zm45.75,-149.29445l56.25,-46.75l0,148.04445l-56,48m-47.25,-151.29445l57.25,-46.5" stroke-width="7" stroke-linecap="round" id="svg_11"/>
+ </g>
+</svg>
+	</g>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-markers.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-markers.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-markers.js	(revision 29468)
@@ -0,0 +1,576 @@
+/*
+ * ext-markers.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Will Schleter 
+ *   based on ext-arrows.js by Copyright(c) 2010 Alexis Deveria
+ *
+ * This extension provides for the addition of markers to the either end
+ * or the middle of a line, polyline, path, polygon. 
+ * 
+ * Markers may be either a graphic or arbitary text
+ * 
+ * to simplify the coding and make the implementation as robust as possible,
+ * markers are not shared - every object has its own set of markers.
+ * this relationship is maintained by a naming convention between the
+ * ids of the markers and the ids of the object
+ * 
+ * The following restrictions exist for simplicty of use and programming
+ *    objects and their markers to have the same color
+ *    marker size is fixed
+ *    text marker font, size, and attributes are fixed
+ *    an application specific attribute - se_type - is added to each marker element
+ *        to store the type of marker
+ *        
+ * TODO:
+ *    remove some of the restrictions above
+ *    add option for keeping text aligned to horizontal
+ *    add support for dimension extension lines
+ *
+ */
+
+methodDraw.addExtension("Markers", function(S) {
+	var svgcontent = S.svgcontent,
+	addElem = S.addSvgElementFromJson,
+	selElems;
+
+	var mtypes = ['start','mid','end'];
+
+	var marker_prefix = 'se_marker_';
+	var id_prefix = 'mkr_';
+		
+	// note - to add additional marker types add them below with a unique id
+	// and add the associated icon(s) to marker-icons.svg
+	// the geometry is normallized to a 100x100 box with the origin at lower left
+	// Safari did not like negative values for low left of viewBox
+	// remember that the coordinate system has +y downward
+	var marker_types = {
+		nomarker: {},  
+		leftarrow:  
+			{element:'path', attr:{d:'M0,50 L100,90 L70,50 L100,10 Z'}},
+		rightarrow:
+			{element:'path', attr:{d:'M100,50 L0,90 L30,50 L0,10 Z'}},
+		textmarker:
+			{element:'text', attr: {x:0, y:0,'stroke-width':0,'stroke':'none','font-size':75,'font-family':'serif','text-anchor':'left',
+				'xml:space': 'preserve'}},
+		forwardslash:
+			{element:'path', attr:{d:'M30,100 L70,0'}},
+		reverseslash:
+			{element:'path', attr:{d:'M30,0 L70,100'}},
+		verticalslash:
+			{element:'path', attr:{d:'M50,0 L50,100'}},
+		box:
+			{element:'path', attr:{d:'M20,20 L20,80 L80,80 L80,20 Z'}},
+		star:
+			{element:'path', attr:{d:'M10,30 L90,30 L20,90 L50,10 L80,90 Z'}},
+		xmark:
+			{element:'path', attr:{d:'M20,80 L80,20 M80,80 L20,20'}},
+		triangle:
+			{element:'path', attr:{d:'M10,80 L50,20 L80,80 Z'}},
+		mcircle:
+			{element:'circle', attr:{r:30, cx:50, cy:50}}
+	}
+	
+	
+	var lang_list = {
+		"en":[
+			{id: "start_marker_list", title: "Select start marker type" },
+			{id: "mid_marker_list", title: "Select mid marker type" },
+			{id: "end_marker_list", title: "Select end marker type" },
+			{id: "nomarker", title: "No Marker" },
+			{id: "leftarrow", title: "Left Arrow" },
+			{id: "rightarrow", title: "Right Arrow" },
+			{id: "textmarker", title: "Text Marker" },
+			{id: "forwardslash", title: "Forward Slash" },
+			{id: "reverseslash", title: "Reverse Slash" },
+			{id: "verticalslash", title: "Vertical Slash" },
+			{id: "box", title: "Box" },
+			{id: "star", title: "Star" },
+			{id: "xmark", title: "X" },
+			{id: "triangle", title: "Triangle" },
+			{id: "mcircle", title: "Circle" },
+			{id: "leftarrow_o", title: "Open Left Arrow" },
+			{id: "rightarrow_o", title: "Open Right Arrow" },
+			{id: "box_o", title: "Open Box" },
+			{id: "star_o", title: "Open Star" },
+			{id: "triangle_o", title: "Open Triangle" },
+			{id: "mcircle_o", title: "Open Circle" }
+		]
+	};
+
+
+	// duplicate shapes to support unfilled (open) marker types with an _o suffix
+	$.each(['leftarrow','rightarrow','box','star','mcircle','triangle'],function(i,v) {
+		marker_types[v+'_o'] = marker_types[v];
+	});
+	
+	// elem = a graphic element will have an attribute like marker-start
+	// attr - marker-start, marker-mid, or marker-end
+	// returns the marker element that is linked to the graphic element
+	function getLinked(elem, attr) {
+		var str = elem.getAttribute(attr);
+		if(!str) return null;
+		var m = str.match(/\(\#(.*)\)/);
+		if(!m || m.length !== 2) {
+			return null;
+		}
+		return S.getElem(m[1]);
+	}
+
+	//toggles context tool panel off/on
+	//sets the controls with the selected element's settings
+	function showPanel(on) {
+		$('#marker_panel').toggle(on);
+		if ($('#marker_panel_title').length < 1) {
+		  $('#marker_panel').prepend("<h4 id='marker_panel_title'>Arrows</h4>")
+		}
+
+		if(on) {
+			var el = selElems[0];
+			var val;
+			var ci;
+
+			$.each(mtypes, function(i, pos) {
+				var m=getLinked(el,"marker-"+pos);
+				var txtbox = $('#'+pos+'_marker');
+				if (!m) {
+					val='\\nomarker';
+					ci=val;
+					txtbox.hide() // hide text box
+				} else {
+					if (!m.attributes.se_type) return; // not created by this extension
+					val='\\'+m.attributes.se_type.textContent;
+					ci=val;
+					if (val=='\\textmarker') {
+						val=m.lastChild.textContent;
+						//txtbox.show(); // show text box
+					} else {
+						txtbox.hide() // hide text box
+					}
+				}
+				txtbox.val(val);				
+				setIcon(pos,ci);
+			})
+		}
+	}	
+
+	function addMarker(id, val) {
+		var txt_box_bg = '#ffffff';
+		var txt_box_border = 'none';
+		var txt_box_stroke_width = 0;
+		
+		var marker = S.getElem(id);
+
+		if (marker) return;
+
+		if (val=='' || val=='\\nomarker') return;
+
+		var el = selElems[0];		 
+		var color = el.getAttribute('stroke');
+		//NOTE: Safari didn't like a negative value in viewBox
+		//so we use a standardized 0 0 100 100
+		//with 50 50 being mapped to the marker position
+		var refX = 50;
+		var refY = 50;
+		var viewBox = "0 0 100 100";
+		var markerWidth = 5;
+		var markerHeight = 5;
+		var strokeWidth = 10;
+		if (val.substr(0,1)=='\\') se_type=val.substr(1);
+		else se_type='textmarker';
+
+		if (!marker_types[se_type]) return; // an unknown type!
+		
+ 		// create a generic marker
+		marker = addElem({
+			"element": "marker",
+			"attr": {
+			"id": id,
+			"markerUnits": "strokeWidth",
+			"orient": "auto",
+			"style": "pointer-events:none",
+			"se_type": se_type
+		}
+		});
+
+		if (se_type!='textmarker') {
+			var mel = addElem(marker_types[se_type]);
+			var fillcolor = color;
+			if (se_type.substr(-2)=='_o') fillcolor='none';
+			mel.setAttribute('fill',fillcolor);
+			mel.setAttribute('stroke',color);
+			mel.setAttribute('stroke-width',strokeWidth);
+			marker.appendChild(mel);
+		} else {
+			var text = addElem(marker_types[se_type]);
+			// have to add text to get bounding box
+			text.textContent = val;
+			var tb=text.getBBox();
+			//alert( tb.x + " " + tb.y + " " + tb.width + " " + tb.height);
+			var pad=1;
+			var bb = tb;
+			bb.x = 0;
+			bb.y = 0;
+			bb.width += pad*2;
+			bb.height += pad*2;
+			// shift text according to its size
+			text.setAttribute('x', pad);
+			text.setAttribute('y', bb.height - pad - tb.height/4); // kludge?
+			text.setAttribute('fill',color);
+			refX = bb.width/2+pad;
+			refY = bb.height/2+pad;
+			viewBox = bb.x + " " + bb.y + " " + bb.width + " " + bb.height;
+			markerWidth =bb.width/10;
+			markerHeight = bb.height/10;
+
+			var box = addElem({
+				"element": "rect",
+				"attr": {
+				"x": bb.x,
+				"y": bb.y,
+				"width": bb.width,
+				"height": bb.height,
+				"fill": txt_box_bg,
+				"stroke": txt_box_border,
+				"stroke-width": txt_box_stroke_width
+			}
+			});
+			marker.setAttribute("orient",0);
+			marker.appendChild(box);
+			marker.appendChild(text);
+		} 
+
+		marker.setAttribute("viewBox",viewBox);
+		marker.setAttribute("markerWidth", markerWidth);
+		marker.setAttribute("markerHeight", markerHeight);
+		marker.setAttribute("refX", refX);
+		marker.setAttribute("refY", refY);
+		S.findDefs().appendChild(marker);
+
+		return marker;
+	}
+
+
+	function setMarker() {
+		var poslist={'start_marker':'start','mid_marker':'mid','end_marker':'end'};
+		var pos = poslist[this.id];
+		var marker_name = 'marker-'+pos;
+		var val = this.value;
+		var el = selElems[0];
+		var marker = getLinked(el, marker_name);
+		if (marker) $(marker).remove();
+		el.removeAttribute(marker_name);
+		if (val=='') val='\\nomarker';
+		if (val=='\\nomarker') {
+			setIcon(pos,val);
+			S.call("changed", selElems);
+			return;
+		}
+		// Set marker on element
+		var id = marker_prefix + pos + '_' + el.id;
+		addMarker(id, val);
+		svgCanvas.changeSelectedAttribute(marker_name, "url(#" + id + ")");
+		if (el.tagName == "line" && pos=='mid') el=convertline(el);
+		S.call("changed", selElems);
+		setIcon(pos,val);
+	}
+
+	function convertline(elem) {
+		// this routine came from the connectors extension
+		// it is needed because midpoint markers don't work with line elements
+		if (!(elem.tagName == "line")) return elem;
+
+		// Convert to polyline to accept mid-arrow
+
+		var x1 = elem.getAttribute('x1')-0;
+		var x2 = elem.getAttribute('x2')-0;
+		var y1 = elem.getAttribute('y1')-0;
+		var y2 = elem.getAttribute('y2')-0;
+		var id = elem.id;
+
+		var mid_pt = (' '+((x1+x2)/2)+','+((y1+y2)/2) + ' ');
+		var pline = addElem({
+			"element": "polyline",
+			"attr": {
+			"points": (x1+','+y1+ mid_pt +x2+','+y2),
+			"stroke": elem.getAttribute('stroke'),
+			"stroke-width": elem.getAttribute('stroke-width'),
+			"fill": "none",
+			"opacity": elem.getAttribute('opacity') || 1
+		}
+		});
+		$.each(mtypes, function(i, pos) { // get any existing marker definitions
+			var nam = 'marker-'+pos;
+			var m = elem.getAttribute(nam);
+			if (m) pline.setAttribute(nam,elem.getAttribute(nam));
+		});
+		
+		var batchCmd = new S.BatchCommand();
+		batchCmd.addSubCommand(new S.RemoveElementCommand(elem, elem.parentNode));
+		batchCmd.addSubCommand(new S.InsertElementCommand(pline));
+		
+		$(elem).after(pline).remove();
+		svgCanvas.clearSelection();
+		pline.id = id;
+		svgCanvas.addToSelection([pline]);
+		S.addCommandToHistory(batchCmd);
+		return pline;
+	}
+
+	// called when the main system modifies an object
+	// this routine changes the associated markers to be the same color
+	function colorChanged(elem) {
+		var color = elem.getAttribute('stroke');
+
+		$.each(mtypes, function(i, pos) {
+			var marker = getLinked(elem, 'marker-'+pos);
+			if (!marker) return;
+			if (!marker.attributes.se_type) return; //not created by this extension
+			var ch = marker.lastElementChild;
+			if (!ch) return;
+			var curfill = ch.getAttribute("fill");
+			var curstroke = ch.getAttribute("stroke")
+			if (curfill && curfill!='none') ch.setAttribute("fill",color);
+			if (curstroke && curstroke!='none') ch.setAttribute("stroke",color);
+		});
+	}
+
+	// called when the main system creates or modifies an object
+	// primary purpose is create new markers for cloned objects
+	function updateReferences(el) {
+		$.each(mtypes, function (i,pos) {
+			var id = marker_prefix + pos + '_' + el.id;
+			var marker_name = 'marker-'+pos;
+			var marker = getLinked(el, marker_name);
+			if (!marker || !marker.attributes.se_type) return; //not created by this extension
+			var url = el.getAttribute(marker_name);
+			if (url) {
+				var len = el.id.length;
+				var linkid = url.substr(-len-1,len);
+				if (el.id != linkid) {
+					var val = $('#'+pos+'_marker').attr('value');
+					addMarker(id, val);
+					svgCanvas.changeSelectedAttribute(marker_name, "url(#" + id + ")");
+					if (el.tagName == "line" && pos=='mid') el=convertline(el);
+					S.call("changed", selElems);
+				}
+			}
+		});
+	}
+
+	// simulate a change event a text box that stores the current element's marker type
+	function triggerTextEntry(pos,val) {
+		$('#'+pos+'_marker').val(val);
+		$('#'+pos+'_marker').change();
+		var txtbox = $('#'+pos+'_marker');
+		//if (val.substr(0,1)=='\\') txtbox.hide();
+		//else txtbox.show();
+	}
+	
+	function setIcon(pos,id) {
+		if (id.substr(0,1)!='\\') id='\\textmarker'
+		var ci = '#'+id_prefix+pos+'_'+id.substr(1);
+		methodDraw.setIcon('#cur_' + pos +'_marker_list', $(ci).children());
+		$(ci).addClass('current').siblings().removeClass('current');
+	}
+		
+	function setMarkerSet(obj) {
+		var parts = this.id.split('_');
+		var set = parts[2];
+		switch (set) {
+		case 'off':
+			triggerTextEntry('start','\\nomarker');
+			triggerTextEntry('mid','\\nomarker');
+			triggerTextEntry('end','\\nomarker');
+			break;
+		case 'dimension':
+			triggerTextEntry('start','\\leftarrow');
+			triggerTextEntry('end','\\rightarrow');
+			showTextPrompt('mid');
+			break;
+		case 'label':
+			triggerTextEntry('mid','\\nomarker');
+			triggerTextEntry('end','\\rightarrow');
+			showTextPrompt('start');
+			break;
+		}
+	}
+		
+	function showTextPrompt(pos) {
+		var def = $('#'+pos+'_marker').val();
+		if (def.substr(0,1)=='\\') def='';
+		$.prompt('Enter text for ' + pos + ' marker', def , function(txt) { if (txt) triggerTextEntry(pos,txt); });
+	}
+	
+	// callback function for a toolbar button click
+	function setArrowFromButton(obj) {
+		
+		var parts = this.id.split('_');
+		var pos = parts[1];
+		var val = parts[2];
+		if (parts[3]) val+='_'+parts[3];
+		
+		if (val!='textmarker') {
+			triggerTextEntry(pos,'\\'+val);
+		} else {
+			showTextPrompt(pos);
+		}
+	}
+	
+	function getTitle(lang,id) {
+		var list = lang_list[lang];
+		for (var i in list) {
+			if (list[i].id==id) return list[i].title;
+		}
+		return id;
+	}
+	
+	
+	// build the toolbar button array from the marker definitions
+	// TODO: need to incorporate language specific titles
+	function buildButtonList() {
+		var buttons=[];
+		var i=0;
+/*
+		buttons.push({
+			id:id_prefix + 'markers_off',
+			title:'Turn off all markers',
+			type:'context',
+			events: { 'click': setMarkerSet },
+			panel: 'marker_panel'
+		});
+		buttons.push({
+			id:id_prefix + 'markers_dimension',
+			title:'Dimension',
+			type:'context',
+			events: { 'click': setMarkerSet },
+			panel: 'marker_panel'
+		});
+		buttons.push({
+			id:id_prefix + 'markers_label',
+			title:'Label',
+			type:'context',
+			events: { 'click': setMarkerSet },
+			panel: 'marker_panel'
+		});
+*/
+		$.each(mtypes,function(k,pos) {
+			var listname = pos + "_marker_list";
+			var def = true;
+		$.each(marker_types,function(id,v) {
+			var title = getTitle('en',id);
+			buttons.push({
+					id:id_prefix + pos + "_" + id,
+					svgicon:id,
+					title:title,
+					type:'context',
+					events: { 'click': setArrowFromButton },
+					panel:'marker_panel',
+					list: listname,
+					isDefault: def
+			});
+			def = false;
+		});
+		});
+		return buttons;
+	}
+
+	return {
+		name: "Markers",
+		svgicons: "extensions/markers-icons.xml",
+		buttons: buildButtonList(),
+		context_tools: [
+		   {
+			type: "input",
+			panel: "marker_panel",
+			title: "Start marker",
+			id: "start_marker",
+			label: "Start",
+			size: 3,
+			events: { change: setMarker }
+		},{
+			type: "button-select",
+			panel: "marker_panel",
+			title: getTitle('en','start_marker_list'),
+			id: "start_marker_list",
+			colnum: 3,
+			events: { change: setArrowFromButton }
+		},{
+			type: "input",
+			panel: "marker_panel",
+			title: "Middle marker",
+			id: "mid_marker",
+			label: "Middle",
+			defval: "",
+			size: 3,
+			events: { change: setMarker }
+		},{
+			type: "button-select",
+			panel: "marker_panel",
+			title: getTitle('en','mid_marker_list'),
+			id: "mid_marker_list",
+			colnum: 3,
+			events: { change: setArrowFromButton }
+		},{
+			type: "input",
+			panel: "marker_panel",
+			title: "End marker",
+			id: "end_marker",
+			label: "End",
+			size: 3,
+			events: { change: setMarker }
+		},{
+			type: "button-select",
+			panel: "marker_panel",
+			title: getTitle('en','end_marker_list'),
+			id: "end_marker_list",
+			colnum: 3,
+			events: { change: setArrowFromButton }
+		} ],
+		callback: function() {
+			$('#marker_panel').addClass('toolset').hide();
+			
+		},
+		addLangData: function(lang) {
+			return { data: lang_list[lang] };
+		},
+
+	selectedChanged: function(opts) {
+		// Use this to update the current selected elements
+		//console.log('selectChanged',opts);
+		selElems = opts.elems;
+
+		var i = selElems.length;
+		var marker_elems = ['line','path','polyline','polygon'];
+
+		while(i--) {
+			var elem = selElems[i];
+			if(elem && $.inArray(elem.tagName, marker_elems) != -1) {
+				if(opts.selectedElement && !opts.multiselected) {
+					showPanel(true);
+				} else {
+					showPanel(false);
+				}
+			} else {
+				showPanel(false);
+			}
+		}
+	},
+
+	elementChanged: function(opts) {		
+		//console.log('elementChanged',opts);
+		var elem = opts.elems[0];
+		if(elem && (
+				elem.getAttribute("marker-start") ||
+				elem.getAttribute("marker-mid") ||
+				elem.getAttribute("marker-end")
+		)) {
+			colorChanged(elem);
+			updateReferences(elem);
+		}
+		changing_flag = false;
+	}
+	};
+});
+
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-server_moinsave.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-server_moinsave.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-server_moinsave.js	(revision 29468)
@@ -0,0 +1,56 @@
+/*
+ * ext-server_moinsave.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ *              2011 MoinMoin:ReimarBauer
+ *                   adopted for moinmoins item storage. it sends in one post png and svg data
+ *                   (I agree to dual license my work to additional GPLv2 or later)
+ *
+ */
+
+methodDraw.addExtension("server_opensave", {
+	callback: function() {
+
+		var save_svg_action = '/+modify';
+		
+		// Create upload target (hidden iframe)
+		var target = $('<iframe name="output_frame" src="#"/>').hide().appendTo('body');
+	
+		methodDraw.setCustomHandlers({
+			save: function(win, data) {
+				var svg = "<?xml version=\"1.0\"?>\n" + data;
+				var qstr = $.param.querystring();
+				var name = qstr.substr(9).split('/+get/')[1];
+				var svg_data = svgedit.utilities.encode64(svg);
+				if(!$('#export_canvas').length) {
+					$('<canvas>', {id: 'export_canvas'}).hide().appendTo('body');
+				}
+				var c = $('#export_canvas')[0];
+				c.width = svgCanvas.contentW;
+				c.height = svgCanvas.contentH;
+				$.getScript('canvg/canvg.js', function() {
+				canvg(c, svg, {renderCallback: function() {
+					var datauri = c.toDataURL('image/png');
+					var uiStrings = methodDraw.uiStrings;
+					var png_data = svgedit.utilities.encode64(datauri);
+					var form = $('<form>').attr({
+					method: 'post',
+					action: save_svg_action + '/' + name,
+					target: 'output_frame'
+				})	.append('<input type="hidden" name="png_data" value="' + png_data + '">')
+					.append('<input type="hidden" name="filepath" value="' + svg_data + '">')
+					.append('<input type="hidden" name="filename" value="' + 'drawing.svg">')
+					.append('<input type="hidden" name="contenttype" value="application/x-svgdraw">')
+					.appendTo('body')
+					.submit().remove();
+					}})});
+				alert("Saved! Return to Item View!");
+				top.window.location = '/'+name;
+			},
+		});
+	
+	}
+});
+
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-server_opensave.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-server_opensave.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-server_opensave.js	(revision 29468)
@@ -0,0 +1,180 @@
+/*
+ * ext-server_opensave.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ *
+ */
+
+methodDraw.addExtension("server_opensave", {
+	callback: function() {
+
+		//var save_svg_action = 'extensions/filesave.php';
+		//var save_png_action = 'extensions/filesave.php';
+	
+		// Create upload target (hidden iframe)
+		var target = $('<iframe name="output_frame" />').hide().appendTo('body');
+	
+		//methodDraw.setCustomHandlers({
+		//	save: function(win, data) {
+		//		var svg = "<?xml version=\"1.0\"?>\n" + data;
+		//		
+		//		var title = svgCanvas.getDocumentTitle();
+		//		var filename = title.replace(/[^a-z0-9\.\_\-]+/gi, '_');
+		//		
+		//		var form = $('<form>').attr({
+		//			method: 'post',
+		//			action: save_svg_action,
+		//			target: 'output_frame'
+		//		})	.append('<input type="hidden" name="output_svg" value="' + encodeURI(svg) + '">')
+		//			.append('<input type="hidden" name="filename" value="' + filename + '">')
+		//			.appendTo('body')
+		//			.submit().remove();
+		//	},
+		//	pngsave: function(win, data) {
+		//		var issues = data.issues;
+		//		
+		//		if(!$('#export_canvas').length) {
+		//			$('<canvas>', {id: 'export_canvas'}).hide().appendTo('body');
+		//		}
+		//		var c = $('#export_canvas')[0];
+		//		
+		//		c.width = svgCanvas.contentW;
+		//		c.height = svgCanvas.contentH;
+		//		canvg(c, data.svg, {renderCallback: function() {
+		//			var datauri = c.toDataURL('image/png');
+		//			
+		//			var uiStrings = methodDraw.uiStrings;
+		//			var note = '';
+		//			
+		//			// Check if there's issues
+		//			if(issues.length) {
+		//				var pre = "\n \u2022 ";
+		//				note += ("\n\n" + pre + issues.join(pre));
+		//			} 
+		//			
+		//			if(note.length) {
+		//				alert(note);
+		//			}
+		//			
+		//			var title = svgCanvas.getDocumentTitle();
+		//			var filename = title.replace(/[^a-z0-9\.\_\-]+/gi, '_');
+		//			
+		//			var form = $('<form>').attr({
+		//				method: 'post',
+		//				action: save_png_action,
+		//				target: 'output_frame'
+		//			})	.append('<input type="hidden" name="output_png" value="' + datauri + '">')
+		//				.append('<input type="hidden" name="filename" value="' + filename + '">')
+		//				.appendTo('body')
+		//				.submit().remove();
+		//		}});
+	  //
+		//		
+		//	}
+		//});
+	
+		// Do nothing if client support is found
+		if(window.FileReader) return;
+		
+		var cancelled = false;
+	
+		// Change these to appropriate script file
+		var open_svg_action = 'extensions/fileopen.php?type=load_svg';
+		var import_svg_action = 'extensions/fileopen.php?type=import_svg';
+		var import_img_action = 'extensions/fileopen.php?type=import_img';
+		
+		// Set up function for PHP uploader to use
+		methodDraw.processFile = function(str64, type) {
+			if(cancelled) {
+				cancelled = false;
+				return;
+			}
+		
+			$('#dialog_box').hide();
+		
+			if(type != 'import_img') {
+				var xmlstr = svgCanvas.Utils.decode64(str64);
+			}
+			
+			switch ( type ) {
+				case 'load_svg':
+					svgCanvas.clear();
+					svgCanvas.setSvgString(xmlstr);
+					methodDraw.updateCanvas();
+					break;
+				case 'import_svg':
+					svgCanvas.importSvgString(xmlstr);
+					methodDraw.updateCanvas();					
+					break;
+				case 'import_img':
+					svgCanvas.setGoodImage(str64);
+					break;
+			}
+		}
+	
+		// Create upload form
+		var open_svg_form = $('<form>');
+		open_svg_form.attr({
+			enctype: 'multipart/form-data',
+			method: 'post',
+			action: open_svg_action,
+			target: 'output_frame'
+		});
+		
+		// Create import form
+		var import_svg_form = open_svg_form.clone().attr('action', import_svg_action);
+		
+		// Create image form
+		var import_img_form = open_svg_form.clone().attr('action', import_img_action);
+		
+		// It appears necessory to rebuild this input every time a file is 
+		// selected so the same file can be picked and the change event can fire.
+		function rebuildInput(form) {
+			form.empty();
+			var inp = $('<input type="file" name="svg_file">').appendTo(form);
+			
+			
+			function submit() {
+				// This submits the form, which returns the file data using methodDraw.uploadSVG
+				form.submit();
+				
+				rebuildInput(form);
+				$.process_cancel("Uploading...", function() {
+					cancelled = true;
+					$('#dialog_box').hide();
+				});
+			}
+			
+			if(form[0] == open_svg_form[0]) {
+				inp.change(function() {
+					// This takes care of the "are you sure" dialog box
+					methodDraw.openPrep(function(ok) {
+						if(!ok) {
+							rebuildInput(form);
+							return;
+						}
+						submit();
+					});
+				});
+			} else {
+				inp.change(function() {
+					// This submits the form, which returns the file data using methodDraw.uploadSVG
+					submit();
+				});
+			}
+		}
+		
+		// Create the input elements
+		rebuildInput(open_svg_form);
+		rebuildInput(import_svg_form);
+		rebuildInput(import_img_form);
+
+		// Add forms to buttons
+		$("#tool_open").show().prepend(open_svg_form);
+		$("#tool_import").show().prepend(import_svg_form);
+		$("#tool_image").prepend(import_img_form);
+	}
+});
+
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-shapes.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-shapes.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-shapes.js	(revision 29468)
@@ -0,0 +1,358 @@
+/*
+ * ext-shapes.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Christian Tzurcanu
+ * Copyright(c) 2010 Alexis Deveria
+ *
+ */
+
+methodDraw.addExtension("shapes", function() {
+	
+
+	var current_d, cur_shape_id;
+	var canv = methodDraw.canvas;
+	var cur_shape;
+	var start_x, start_y;
+	var svgroot = canv.getRootElem();
+	var lastBBox = {};
+	
+	// This populates the category list
+	var categories = {
+		basic: 'Basic',
+		object: 'Objects',
+		symbol: 'Symbols',
+		arrow: 'Arrows',
+		flowchart: 'Flowchart',
+		nature: 'Nature',
+		game: 'Cards & Chess',
+		dialog_balloon: 'Dialog balloons',
+		music: 'Music',
+		weather: 'Weather &amp; Time',
+		ui: 'User Interface',
+		social: 'Social Web'
+	};
+	
+	var library = {
+		'basic': {
+			data: {
+				"star_points_5": "m1,116.58409l113.82668,0l35.17332,-108.13487l35.17334,108.13487l113.82666,0l-92.08755,66.83026l35.17514,108.13487l-92.08759,-66.83208l-92.08757,66.83208l35.17515,-108.13487l-92.08758,-66.83026z",
+				'donut': 'm1,150l0,0c0,-82.29042 66.70958,-149 149,-149l0,0c39.51724,0 77.41599,15.69816 105.35889,43.64108c27.94293,27.94293 43.64111,65.84165 43.64111,105.35892l0,0c0,82.29041 -66.70958,149 -149,149l0,0c-82.29041,0 -149,-66.70959 -149,-149zm74.5,0l0,0c0,41.1452 33.35481,74.5 74.5,74.5c41.14522,0 74.5,-33.3548 74.5,-74.5c0,-41.1452 -33.3548,-74.5 -74.5,-74.5l0,0c-41.14519,0 -74.5,33.35481 -74.5,74.5z',
+				"triangle": "m1,280.375l149,-260.75l149,260.75z",
+				"right_triangle": "m1,299l0,-298l298,298z",
+				"diamond": "m1,150l149,-149l149,149l-149,149l-149,-149z",
+				"pentagon": "m1.00035,116.97758l148.99963,-108.4053l148.99998,108.4053l-56.91267,175.4042l-184.1741,0l-56.91284,-175.4042z",
+				"hexagon": "m1,149.99944l63.85715,-127.71428l170.28572,0l63.85713,127.71428l-63.85713,127.71428l-170.28572,0l-63.85715,-127.71428z",
+				"septagon1": "m0.99917,191.06511l29.51249,-127.7108l119.48833,-56.83673l119.48836,56.83673l29.51303,127.7108l-82.69087,102.41679l-132.62103,0l-82.69031,-102.41679z",
+				"heptagon": "m1,88.28171l87.28172,-87.28171l123.43653,0l87.28172,87.28171l0,123.43654l-87.28172,87.28172l-123.43653,0l-87.28172,-87.28172l0,-123.43654z",
+				"decagon": "m1,150.00093l28.45646,-88.40318l74.49956,-54.63682l92.08794,0l74.50002,54.63682l28.45599,88.40318l-28.45599,88.40318l-74.50002,54.63681l-92.08794,0l-74.49956,-54.63681l-28.45646,-88.40318z",
+				"dodecagon": "m1,110.07421l39.92579,-69.14842l69.14842,-39.92579l79.85159,0l69.14842,39.92579l39.92578,69.14842l0,79.85159l-39.92578,69.14842l-69.14842,39.92578l-79.85159,0l-69.14842,-39.92578l-39.92579,-69.14842l0,-79.85159z",
+				"trapezoid": "m1,299l55.875,-298l186.25001,0l55.87498,298z",
+				"dialog_balloon_1": "m0.99786,35.96579l0,0c0,-19.31077 15.28761,-34.96524 34.14583,-34.96524l15.52084,0l0,0l74.50001,0l139.68748,0c9.05606,0 17.74118,3.68382 24.14478,10.24108c6.40356,6.55726 10.00107,15.45081 10.00107,24.72416l0,87.41311l0,0l0,52.44785l0,0c0,19.31078 -15.2876,34.96524 -34.14584,34.96524l-139.68748,0l-97.32507,88.90848l22.82506,-88.90848l-15.52084,0c-18.85822,0 -34.14583,-15.65446 -34.14583,-34.96524l0,0l0,-52.44785l0,0z",
+				'heart': 'm150,73c61,-175 300,0 0,225c-300,-225 -61,-400 0,-225z',
+				"cylinder": "m299.0007,83.77844c0,18.28676 -66.70958,33.11111 -149.00002,33.11111m149.00002,-33.11111l0,0c0,18.28676 -66.70958,33.11111 -149.00002,33.11111c-82.29041,0 -148.99997,-14.82432 -148.99997,-33.11111m0,0l0,0c0,-18.28674 66.70956,-33.1111 148.99997,-33.1111c82.29044,0 149.00002,14.82436 149.00002,33.1111l0,132.44449c0,18.28674 -66.70958,33.11105 -149.00002,33.11105c-82.29041,0 -148.99997,-14.82431 -148.99997,-33.11105z",
+				"arrow_up": "m1.49805,149.64304l148.50121,-148.00241l148.50121,148.00241l-74.25061,0l0,148.71457l-148.5012,0l0,-148.71457z",
+				"arrow_u_turn": "m1.00059,299.00055l0,-167.62497l0,0c0,-72.00411 58.37087,-130.37499 130.375,-130.37499l0,0l0,0c34.57759,0 67.73898,13.7359 92.18906,38.18595c24.45006,24.45005 38.18593,57.61144 38.18593,92.18904l0,18.625l37.24997,0l-74.49995,74.50002l-74.50002,-74.50002l37.25,0l0,-18.625c0,-30.8589 -25.0161,-55.87498 -55.87498,-55.87498l0,0l0,0c-30.85892,0 -55.875,25.01608 -55.875,55.87498l0,167.62497z",
+				"arrow_left_up": "m0.99865,224.5l74.50004,-74.5l0,37.25l111.74991,0l0,-111.75l-37.25,0l74.5,-74.5l74.5,74.5l-37.25,0l0,186.25l-186.24989,0l0,37.25l-74.50005,-74.5z",
+				"plaque": "m-0.00197,49.94376l0,0c27.5829,0 49.94327,-22.36036 49.94327,-49.94327l199.76709,0l0,0c0,27.5829 22.36037,49.94327 49.94325,49.94327l0,199.7671l0,0c-27.58289,0 -49.94325,22.36034 -49.94325,49.94325l-199.76709,0c0,-27.58292 -22.36037,-49.94325 -49.94327,-49.94325z",
+				"page": "m249.3298,298.99744l9.9335,-39.73413l39.73413,-9.93355l-49.66763,49.66768l-248.33237,0l0,-298.00001l298.00001,0l0,248.33234",
+				"cross": "m0.99844,99.71339l98.71494,0l0,-98.71495l101.26279,0l0,98.71495l98.71495,0l0,101.2628l-98.71495,0l0,98.71494l-101.26279,0l0,-98.71494l-98.71494,0z",
+				"divide": "m150,0.99785l0,0c25.17819,0 45.58916,20.41097 45.58916,45.58916c0,25.17821 -20.41096,45.58916 -45.58916,45.58916c-25.17822,0 -45.58916,-20.41093 -45.58916,-45.58916c0,-25.1782 20.41093,-45.58916 45.58916,-45.58916zm0,296.25203c-25.17822,0 -45.58916,-20.41095 -45.58916,-45.58917c0,-25.17819 20.41093,-45.58916 45.58916,-45.58916c25.17819,0 45.58916,20.41096 45.58916,45.58916c0,25.17822 -20.41096,45.58917 -45.58916,45.58917zm-134.06754,-193.71518l268.13507,0l0,91.17833l-268.13507,0z",
+				"minus": "m0.99887,102.39503l297.49445,0l0,95.2112l-297.49445,0z",
+				"times": "m1.00089,73.36786l72.36697,-72.36697l76.87431,76.87368l76.87431,-76.87368l72.36765,72.36697l-76.87433,76.87431l76.87433,76.87431l-72.36765,72.36765l-76.87431,-76.87433l-76.87431,76.87433l-72.36697,-72.36765l76.87368,-76.87431l-76.87368,-76.87431z"
+				
+
+			},
+			buttons: []
+		}
+	};
+	
+	var cur_lib = library.basic;
+	
+	var mode_id = 'shapelib';
+	
+	function loadIcons() {
+		$('#shape_buttons').empty();
+		
+		// Show lib ones
+		$('#shape_buttons').append(cur_lib.buttons);
+	}
+	
+	function loadLibrary(cat_id) {
+	
+		var lib = library[cat_id];
+		
+		if(!lib) {
+			$('#shape_buttons').html('Loading...');
+			$.getJSON('extensions/shapelib/' + cat_id + '.json', function(result, textStatus) {
+				cur_lib = library[cat_id] = {
+					data: result.data,
+					size: result.size,
+					fill: result.fill
+				}
+				makeButtons(cat_id, result);
+				loadIcons();
+			});
+			return;
+		}
+		
+		cur_lib = lib;
+		if(!lib.buttons.length)	makeButtons(cat_id, lib);
+		loadIcons();
+	}
+	
+	function makeButtons(cat, shapes) {
+		var size = cur_lib.size || 300;
+		var fill = cur_lib.fill || false;
+		var off = size * .05;
+		var vb = [-off, -off, size + off*2, size + off*2].join(' ');
+		var stroke = fill ? 0: (size/30);
+		
+		var shape_icon = new DOMParser().parseFromString(
+			'<svg xmlns="http://www.w3.org/2000/svg"><svg viewBox="' + vb + '"><path fill="#333" stroke="transparent" stroke-width="' + stroke + '" /><\/svg><\/svg>',
+			'text/xml');
+
+		var width = 40;
+		var height = 40;
+		shape_icon.documentElement.setAttribute('width', width);
+		shape_icon.documentElement.setAttribute('height', height);
+		var svg_elem = $(document.importNode(shape_icon.documentElement,true));
+	
+		var data = shapes.data;
+		
+		cur_lib.buttons = [];
+	
+		for(var id in data) {
+			var path_d = data[id];
+			var icon = svg_elem.clone();
+			icon.find('path').attr('d', path_d);
+			
+			var icon_btn = icon.wrap('<div class="tool_button">').parent().attr({
+				id: mode_id + '_' + id,
+				title: id
+			});
+			
+			
+			// Store for later use
+			cur_lib.buttons.push(icon_btn[0]);
+		}
+		
+	}
+
+	
+	return {
+		svgicons: "extensions/ext-shapes.xml",
+		buttons: [{
+			id: "tool_shapelib",
+			type: "mode_flyout", // _flyout
+			position: 6,
+			title: "Shape library",
+			icon: "extensions/ext-shapes.png",
+			events: {
+				"click": function() {
+					canv.setMode(mode_id);
+				}
+			}
+		}],
+		callback: function() {
+
+		
+			var btn_div = $('<div id="shape_buttons">');
+			$('#tools_shapelib > *').wrapAll(btn_div);
+			
+			var shower = $('#tools_shapelib_show');
+
+			
+			loadLibrary('basic');
+			
+			// Do mouseup on parent element rather than each button
+			$('#shape_buttons').mouseup(function(evt) {
+				var btn = $(evt.target).closest('div.tool_button');
+				
+				if(!btn.length) return;
+				
+   			var copy = btn.children().clone().attr({width: 24, height: 24});
+   			shower.children(':not(.flyout_arrow_horiz)').remove();
+   			shower
+   				.append(copy)
+   				.attr('data-curopt', '#' + btn[0].id) // This sets the current mode
+   				.mouseup();
+   			canv.setMode(mode_id);
+				
+				cur_shape_id = btn[0].id.substr((mode_id+'_').length);
+				current_d = cur_lib.data[cur_shape_id];
+				
+				$('.tools_flyout').fadeOut();
+
+			});
+
+// 			
+			var shape_cats = $('<div id="shape_cats">');
+			var cat_str = '';
+			
+			$.each(categories, function(id, label) {
+				cat_str += '<div data-cat=' + id + '>' + label + '</div>';
+			});
+			
+			shape_cats.html(cat_str).children().bind('mouseup', function() {
+				var catlink = $(this);
+				catlink.siblings().removeClass('current');
+				catlink.addClass('current');
+				
+				loadLibrary(catlink.attr('data-cat'));
+				// Get stuff
+				
+				return false;
+			});
+			
+			shape_cats.children().eq(0).addClass('current');
+			
+			$('#tools_shapelib').prepend(shape_cats);
+
+			shower.mouseup(function() {
+				canv.setMode(current_d ? mode_id : 'select');
+			});
+
+			
+			$('#tool_shapelib').remove();
+			
+			var h = $('#tools_shapelib').height();
+			$('#tools_shapelib').css({
+				'margin-top': -(h/2),
+				'margin-left': 3
+			});
+
+	
+		},
+		mouseDown: function(opts) {
+			var mode = canv.getMode();
+			if(mode !== mode_id) return;
+			
+			var e = opts.event;
+			var x = start_x = opts.start_x;
+			var y = start_y = opts.start_y;
+			var cur_style = canv.getStyle();
+			cur_shape = canv.addSvgElementFromJson({
+				"element": "path",
+				"curStyles": true,
+				"attr": {
+					"d": current_d,
+					"id": canv.getNextId(),
+					"opacity": cur_style.opacity / 2,
+					"style": "pointer-events:none"
+				}
+			});
+      cur_shape.setAttribute("d", current_d);
+			// Make sure shape uses absolute values
+			if(/[a-z]/.test(current_d)) {
+				current_d = cur_lib.data[cur_shape_id] = canv.pathActions.convertPath(cur_shape);
+				cur_shape.setAttribute('d', current_d);
+				canv.pathActions.fixEnd(cur_shape);
+			}
+	    
+			cur_shape.setAttribute('transform', "translate(" + x + "," + y + ") scale(0.005) translate(" + -x + "," + -y + ")");			
+// 			console.time('b');
+			canv.recalculateDimensions(cur_shape);
+			var tlist = canv.getTransformList(cur_shape);
+			lastBBox = cur_shape.getBBox();
+			totalScale = {
+			  sx: 1,
+			  sy: 1
+			};
+			return {
+				started: true
+			}
+			// current_d
+		},
+		mouseMove: function(opts) {
+			var mode = canv.getMode();
+			if(mode !== mode_id) return;
+			
+			var zoom = canv.getZoom();
+			var evt = opts.event
+			
+			var x = opts.mouse_x/zoom;
+			var y = opts.mouse_y/zoom;
+			
+			var tlist = canv.getTransformList(cur_shape),
+				box = cur_shape.getBBox(), 
+				left = box.x, top = box.y, width = box.width,
+				height = box.height;
+			var dx = (x-start_x), dy = (y-start_y);
+
+			var newbox = {
+				'x': Math.min(start_x,x),
+				'y': Math.min(start_y,y),
+				'width': Math.abs(x-start_x),
+				'height': Math.abs(y-start_y)
+			};
+
+			var ts = null,
+				tx = 0, ty = 0,
+				sy = height ? (height+dy)/height : 1, 
+				sx = width ? (width+dx)/width : 1;
+
+			var sx = newbox.width / lastBBox.width;
+			var sy = newbox.height / lastBBox.height;
+			
+			sx = sx || 1;
+			sy = sy || 1;
+			
+			// Not perfect, but mostly works...
+			
+			if(x < start_x) {
+				tx = lastBBox.width;
+			}
+			if(y < start_y) ty = lastBBox.height;
+			
+			// update the transform list with translate,scale,translate
+			var translateOrigin = svgroot.createSVGTransform(),
+				scale = svgroot.createSVGTransform(),
+				translateBack = svgroot.createSVGTransform();
+				
+			translateOrigin.setTranslate(-(left+tx), -(top+ty));
+			if(evt.shiftKey) {
+			  replaced = true
+				var max = Math.min(Math.abs(sx), Math.abs(sy));
+				sx = max * (sx < 0 ? -1 : 1);
+				sy = max * (sy < 0 ? -1 : 1);
+				if (totalScale.sx != totalScale.sy) {
+  				var multiplierX = (totalScale.sx > totalScale.sy) ? 1 : totalScale.sx/totalScale.sy;
+  				var multiplierY = (totalScale.sy > totalScale.sx) ? 1 : totalScale.sy/totalScale.sx;
+  				sx *= multiplierY
+  				sy *= multiplierX
+				}
+			}
+			totalScale.sx *= sx;
+		  totalScale.sy *= sy;
+		  scale.setScale(sx,sy);
+			translateBack.setTranslate(left+tx, top+ty);
+			var N = tlist.numberOfItems;
+			tlist.appendItem(translateBack);
+			tlist.appendItem(scale);
+			tlist.appendItem(translateOrigin);
+
+			canv.recalculateDimensions(cur_shape);
+			lastBBox = cur_shape.getBBox();
+		},
+		mouseUp: function(opts) {
+			var mode = canv.getMode();
+			if(mode !== mode_id) return;
+			
+			if(opts.mouse_x == start_x && opts.mouse_y == start_y) {
+				return {
+					keep: false,
+					element: cur_shape,
+					started: false
+				}
+			}
+			canv.setMode("select")
+			return {
+				keep: true,
+				element: cur_shape,
+				started: false
+			}
+		}		
+	}
+});
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-shapes.xml
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-shapes.xml	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/ext-shapes.xml	(revision 29468)
@@ -0,0 +1,8 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+	<g id="tool_shapelib">
+	  <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+      	<path fill="#2F2F2C" d="M0,0v27h27V0H0z M20.328,24.166l-6.891-3.622l-6.891,3.622l1.316-7.672L2.289,11.06l7.704-1.121
+			l3.445-6.979l3.447,6.98l7.702,1.121l-5.573,5.434L20.328,24.166z"/>
+  	</svg>
+	</g>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/eyedropper-icon.xml
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/eyedropper-icon.xml	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/eyedropper-icon.xml	(revision 29468)
@@ -0,0 +1,17 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+
+<g id="tool_eyedropper">
+  	<svg id="Untitled-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+		xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+		x="0px" y="0px" width="27px" height="27px"
+	>
+		<path fill="#2F2F2C" d="M16.867,11.729l-1.5-1.49l-9.845,9.777c-0.198,0.919-0.653,1.838-1.104,2.585
+			c0.752-0.448,1.678-0.899,2.604-1.096L16.867,11.729z"/>
+		<path fill="#2F2F2C" d="M0,0v27h27V0H0z M2.702,24.801l-0.5-0.496l-0.46-0.457l0.421-0.493c0.016-0.02,1.711-2.031,2.008-3.799
+		l0.037-0.222L14.367,9.247l-0.333-0.331c-0.459-0.457-0.459-1.198,0-1.655l1.5-1.489c0.46-0.457,1.206-0.457,1.667,0L19.7,3.289c0,0,2.5-2.482,3.833-1.158L24.2,2.792l0.667,0.662c0.28,0.278,0.391,0.609,0.391,0.957c0,1.302-1.558,2.849-1.558,2.849
+	l-2.5,2.482l0.167,0.166c0.46,0.457,0.46,1.197,0,1.655l-1.5,1.489c-0.46,0.456-1.207,0.456-1.667,0l-0.333-0.332L7.708,22.809l-0.223,0.037c-1.787,0.296-3.805,1.978-3.826,1.995l-0.496,0.417L2.702,24.801z"/>
+	</svg>
+</g>
+	
+	<g id="svg_eof"/>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/eyedropper.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/eyedropper.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/eyedropper.svg	(revision 29468)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="27px" height="27px" viewBox="0 0 27 27" enable-background="new 0 0 27 27" xml:space="preserve">
+<g>
+	<path fill="#2F2F2C" d="M16.867,11.729l-1.5-1.49l-9.845,9.777c-0.198,0.919-0.653,1.838-1.104,2.585
+		c0.752-0.448,1.678-0.899,2.604-1.096L16.867,11.729z"/>
+	<path fill="#2F2F2C" d="M0,0v27h27V0H0z M2.702,24.801l-0.5-0.496l-0.46-0.457l0.421-0.493c0.016-0.02,1.711-2.031,2.008-3.799
+		l0.037-0.222L14.367,9.247l-0.333-0.331c-0.459-0.457-0.459-1.198,0-1.655l1.5-1.489c0.46-0.457,1.206-0.457,1.667,0L19.7,3.289
+		c0,0,2.5-2.482,3.833-1.158L24.2,2.792l0.667,0.662c0.28,0.278,0.391,0.609,0.391,0.957c0,1.302-1.558,2.849-1.558,2.849
+		l-2.5,2.482l0.167,0.166c0.46,0.457,0.46,1.197,0,1.655l-1.5,1.489c-0.46,0.456-1.207,0.456-1.667,0l-0.333-0.332L7.708,22.809
+		l-0.223,0.037c-1.787,0.296-3.805,1.978-3.826,1.995l-0.496,0.417L2.702,24.801z"/>
+</g>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/fileopen.php
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/fileopen.php	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/fileopen.php	(revision 29468)
@@ -0,0 +1,31 @@
+<!doctype html>
+<?php
+/*
+ * fileopen.php
+ * To be used with ext-server_opensave.js for SVG-edit
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ *
+ */
+	// Very minimal PHP file, all we do is Base64 encode the uploaded file and
+	// return it to the editor
+	
+	$file = $_FILES['svg_file']['tmp_name'];
+	
+	$output = file_get_contents($file);
+	
+	$type = $_REQUEST['type'];
+	
+	$prefix = '';
+	
+	// Make Data URL prefix for import image
+	if($type == 'import_img') {
+		$info = getimagesize($file);
+		$prefix = 'data:' . $info['mime'] . ';base64,';
+	}
+?>
+<script>
+window.top.window.methodDraw.processFile("<?php echo $prefix . base64_encode($output); ?>", "<?php echo htmlentities($type); ?>");
+</script>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/filesave.php
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/filesave.php	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/filesave.php	(revision 29468)
@@ -0,0 +1,44 @@
+<?php
+/*
+ * filesave.php
+ * To be used with ext-server_opensave.js for SVG-edit
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ *
+ */
+ 
+if(!isset($_POST['output_svg']) && !isset($_POST['output_png'])) {
+	die('post fail');
+}
+
+$file = '';
+
+$suffix = isset($_POST['output_svg'])?'.svg':'.png';
+
+if(isset($_POST['filename']) && strlen($_POST['filename']) > 0) {
+	$file = $_POST['filename'] . $suffix;
+} else {
+	$file = 'image' . $suffix;
+}
+
+if($suffix == '.svg') {
+	$mime = 'image/svg+xml';
+	$contents = rawurldecode($_POST['output_svg']);
+} else {
+	$mime = 'image/png';
+	$contents = $_POST['output_png'];
+	$pos = (strpos($contents, 'base64,') + 7);
+	$contents = base64_decode(substr($contents, $pos));
+}
+
+ header("Cache-Control: public");
+ header("Content-Description: File Transfer");
+ header("Content-Disposition: attachment; filename=" . $file);
+ header("Content-Type: " .  $mime);
+ header("Content-Transfer-Encoding: binary");
+ 
+ echo $contents;
+ 
+?>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/foreignobject-icons.xml
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/foreignobject-icons.xml	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/foreignobject-icons.xml	(revision 29468)
@@ -0,0 +1,96 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+	<g id="tool_foreign">
+		<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 84 84">
+		  <g fill="#444" opacity="0.2" transform="translate(6,6)">
+		  <path d="M42.8,74.3c0,4.3,0,5.9,11.8,5.9l4.1,0l0,3.8c-4.5-0.4-16.1-0.4-21.2-0.3c-5.1,0-16.6,0-21,0.4l0-3.8l4.1,0
+			c11.8,0,11.8-1.7,11.8-5.9l0-6.9C13.9,65.6,0,54.6,0,42c0-12.2,13.3-23.5,32.4-25.4l0-6.9c0-4.3,0-5.9-11.8-5.9l-4.1,0l0-3.8
+			c4.5,0.4,16.1,0.4,21.2,0.3c5.1,0,16.6,0,21-0.4l0,3.8l-4.1,0c-11.8,0-11.8,1.7-11.8,5.9l0,6.9C61.6,18.1,75.8,29.2,75.8,42
+			c0,12.4-13.8,23.9-33.1,25.4L42.8,74.3z M32.4,19.4c-18.7,2.5-19.9,16.2-19.9,22.6c0,7.6,2.3,20.2,20,22.5L32.4,19.4z M42.7,64.7
+			c18.8-2.2,20.7-15.4,20.6-22.8c0-9.3-3.5-20.6-20.7-22.6L42.7,64.7z"/>
+		  </g>
+		  <g fill="#444" opacity="0.3" transform="translate(4,4)">
+		  <path d="M42.8,74.3c0,4.3,0,5.9,11.8,5.9l4.1,0l0,3.8c-4.5-0.4-16.1-0.4-21.2-0.3c-5.1,0-16.6,0-21,0.4l0-3.8l4.1,0
+			c11.8,0,11.8-1.7,11.8-5.9l0-6.9C13.9,65.6,0,54.6,0,42c0-12.2,13.3-23.5,32.4-25.4l0-6.9c0-4.3,0-5.9-11.8-5.9l-4.1,0l0-3.8
+			c4.5,0.4,16.1,0.4,21.2,0.3c5.1,0,16.6,0,21-0.4l0,3.8l-4.1,0c-11.8,0-11.8,1.7-11.8,5.9l0,6.9C61.6,18.1,75.8,29.2,75.8,42
+			c0,12.4-13.8,23.9-33.1,25.4L42.8,74.3z M32.4,19.4c-18.7,2.5-19.9,16.2-19.9,22.6c0,7.6,2.3,20.2,20,22.5L32.4,19.4z M42.7,64.7
+			c18.8-2.2,20.7-15.4,20.6-22.8c0-9.3-3.5-20.6-20.7-22.6L42.7,64.7z"/>
+		  </g>
+		  <g fill="#444" opacity="0.5" transform="translate(2,2)">
+		  <path d="M42.8,74.3c0,4.3,0,5.9,11.8,5.9l4.1,0l0,3.8c-4.5-0.4-16.1-0.4-21.2-0.3c-5.1,0-16.6,0-21,0.4l0-3.8l4.1,0
+			c11.8,0,11.8-1.7,11.8-5.9l0-6.9C13.9,65.6,0,54.6,0,42c0-12.2,13.3-23.5,32.4-25.4l0-6.9c0-4.3,0-5.9-11.8-5.9l-4.1,0l0-3.8
+			c4.5,0.4,16.1,0.4,21.2,0.3c5.1,0,16.6,0,21-0.4l0,3.8l-4.1,0c-11.8,0-11.8,1.7-11.8,5.9l0,6.9C61.6,18.1,75.8,29.2,75.8,42
+			c0,12.4-13.8,23.9-33.1,25.4L42.8,74.3z M32.4,19.4c-18.7,2.5-19.9,16.2-19.9,22.6c0,7.6,2.3,20.2,20,22.5L32.4,19.4z M42.7,64.7
+			c18.8-2.2,20.7-15.4,20.6-22.8c0-9.3-3.5-20.6-20.7-22.6L42.7,64.7z"/>
+		  </g>
+		  <g fill="#0000CC">
+		  <path id="xyz321" d="M42.8,74.3c0,4.3,0,5.9,11.8,5.9l4.1,0l0,3.8c-4.5-0.4-16.1-0.4-21.2-0.3c-5.1,0-16.6,0-21,0.4l0-3.8l4.1,0
+			c11.8,0,11.8-1.7,11.8-5.9l0-6.9C13.9,65.6,0,54.6,0,42c0-12.2,13.3-23.5,32.4-25.4l0-6.9c0-4.3,0-5.9-11.8-5.9l-4.1,0l0-3.8
+			c4.5,0.4,16.1,0.4,21.2,0.3c5.1,0,16.6,0,21-0.4l0,3.8l-4.1,0c-11.8,0-11.8,1.7-11.8,5.9l0,6.9C61.6,18.1,75.8,29.2,75.8,42
+			c0,12.4-13.8,23.9-33.1,25.4L42.8,74.3z M32.4,19.4c-18.7,2.5-19.9,16.2-19.9,22.6c0,7.6,2.3,20.2,20,22.5L32.4,19.4z M42.7,64.7
+			c18.8-2.2,20.7-15.4,20.6-22.8c0-9.3-3.5-20.6-20.7-22.6L42.7,64.7z"/>
+		  </g>
+		</svg>
+	</g>
+	
+	<g id="edit_foreign">
+		<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="34 38 170 170" overflow="hidden">
+		<g fill="#000088">
+			<path d="M30.1,63.9v-4.3l30.2-14.9V50L36.5,61.7l23.8,11.7v5.3L30.1,63.9z"/>
+			<path d="M106.1,79.7v-1.1c4.2-0.5,4.8-1.1,4.8-5.2V58.2c0-6-1.3-7.9-5.4-7.9c-3.3,0-5.7,1.3-7.8,4.4v18.1
+				c0,4.5,1.1,5.7,5.2,5.8v1.1H86.8v-1.1c4.1-0.3,4.9-1.1,4.9-5.1V57.9c0-5-1.6-7.6-4.8-7.6c-2.5,0-5.6,1.2-7.4,2.9
+				c-0.5,0.5-1.1,1.4-1.1,1.4v20.3c0,2.8,1.1,3.6,4.9,3.7v1.1h-16v-1.1c4-0.1,5-1.2,5-5V55.4c0-3.5-0.6-4.6-2.5-4.6
+				c-0.8,0-1.4,0.1-2.3,0.3v-1.2c4-1.1,6.4-1.9,10.1-3.2l0.5,0.1v5.4c6-4.5,8-5.5,11.2-5.5c3.9,0,6.3,1.9,7.6,6c3.9-4.2,7.6-6,11.7-6
+				c5.5,0,8.4,4.3,8.4,12.8v14.8c0,2.8,0.9,4.1,3.1,4.2l1.9,0.1v1.1H106.1z"/>
+			<path d="M147.3,80.5c-3,0-4.2-1.4-4.6-5.3c-4.4,3.7-7.3,5.3-10.5,5.3c-4.5,0-7.6-3.2-7.6-7.7c0-2.4,1-4.8,2.6-6.3
+				c3.1-2.7,4.3-3.3,15.4-7.8v-4.4c0-3.9-1.9-6-5.5-6c-2.9,0-5.2,1.6-5.2,3.5c0,0.5,0.1,1.1,0.2,1.7c0.1,0.5,0.1,0.9,0.1,1.2
+				c0,1.6-1.5,3-3.2,3s-3.1-1.4-3.1-3.1c0-1.8,1.2-3.9,3-5.4c2-1.7,5.5-2.7,9.1-2.7c4.4,0,7.5,1.4,9,4.2c1,1.7,1.4,3.7,1.4,7.3v14
+				c0,3.2,0.5,4.2,2.2,4.2c1.1,0,1.9-0.4,3.2-1.4v1.9C151.3,79.6,149.8,80.5,147.3,80.5z M142.6,60.5c-8.7,3.2-11.7,5.8-11.7,10v0.3
+				c0,3.1,2,5.5,4.5,5.5c1.5,0,3.5-0.6,5.3-1.6c1.5-0.9,1.9-1.6,1.9-3.8V60.5z"/>
+			<path d="M165.3,80.5c-4.2,0-6.3-3.1-6.3-9.1V49.7h-3.8c-0.2-0.1-0.3-0.3-0.3-0.5c0-0.4,0.4-0.9,1.2-1.4
+				c1.9-1.1,4.3-3.7,7-7.7c0.5-0.6,1-1.3,1.4-2c0.4,0,0.5,0.2,0.5,0.9v8.4h7.3v2.3h-7.3v20.6c0,4.6,1.1,6.5,3.7,6.5
+				c1.6,0,2.7-0.6,4.3-2.5l0.9,0.8C171.8,78.7,169,80.5,165.3,80.5z"/>
+			<path d="M193.8,79.7v-1.1c4.1-0.4,4.9-1.3,4.9-6.2V58.1c0-5-1.8-7.6-5.4-7.6c-2.8,0-5,1.2-8,4.5v17.4
+				c0,5,0.7,5.8,4.9,6.3v1.1h-15.6v-1.1c4.2-0.6,4.6-1.2,4.6-6.3V38.5c0-3.1-0.6-3.7-3.7-3.7c-0.4,0-0.6,0-0.9,0.1v-1.2l1.9-0.6
+				c4-1.2,5.8-1.7,8.3-2.6l0.4,0.2v21.9c3.3-4.3,6.3-6,10.6-6c5.9,0,8.9,3.9,8.9,11.5v14.3c0,5,0.4,5.5,4.3,6.3v1.1h-15.2V79.7z"/>
+			<path d="M59.1,116.1v-4.3l30.2-14.9v5.3l-23.8,11.7l23.8,11.7v5.3L59.1,116.1z"/>
+			<path d="M135.1,131.9v-1.1c4.2-0.5,4.8-1.1,4.8-5.2v-15.1c0-6-1.3-7.9-5.4-7.9c-3.3,0-5.7,1.3-7.8,4.4v18.1
+				c0,4.5,1.1,5.7,5.2,5.8v1.1h-16.1v-1.1c4.1-0.3,4.9-1.1,4.9-5.1v-15.7c0-5-1.6-7.6-4.8-7.6c-2.5,0-5.6,1.2-7.4,2.9
+				c-0.5,0.5-1.1,1.4-1.1,1.4v20.3c0,2.8,1.1,3.6,4.9,3.7v1.1h-16v-1.1c4-0.1,5-1.2,5-5v-18.2c0-3.5-0.6-4.6-2.5-4.6
+				c-0.8,0-1.4,0.1-2.3,0.3v-1.2c4-1.1,6.4-1.9,10.1-3.2l0.5,0.1v5.4c6-4.5,8-5.5,11.2-5.5c3.9,0,6.3,1.9,7.6,6c3.9-4.2,7.6-6,11.7-6
+				c5.5,0,8.4,4.3,8.4,12.8v14.8c0,2.8,0.9,4.1,3.1,4.2l1.9,0.1v1.1H135.1z"/>
+			<path d="M152.1,131.9v-1.1c5-0.3,5.7-1.1,5.7-6.3v-16.6c0-3.2-0.6-4.3-2.4-4.3c-0.6,0-1.6,0.1-2.4,0.2l-0.6,0.1v-1.1
+				l11.2-4L164,99v25.6c0,5.2,0.6,5.9,5.3,6.3v1.1L152.1,131.9L152.1,131.9z M160.8,93.1c-2,0-3.7-1.6-3.7-3.7c0-2,1.7-3.7,3.7-3.7
+				c2.1,0,3.7,1.7,3.7,3.7C164.6,91.6,163,93.1,160.8,93.1z"/>
+			<path d="M175.8,131v-5.3l23.7-11.8l-23.7-11.7v-5.3l30.1,14.9v4.3L175.8,131z"/>
+			<path d="M31.1,169.5v-4.3l30.2-14.9v5.3l-23.8,11.7L61.3,179v5.3L31.1,169.5z"/>
+			<path d="M71.3,186.4h-4.9l16.5-49.7h4.8L71.3,186.4z"/>
+			<path d="M127.1,185.3v-1.1c4.2-0.5,4.8-1.1,4.8-5.2v-15.2c0-6-1.3-7.9-5.4-7.9c-3.3,0-5.7,1.3-7.8,4.4v18.1
+				c0,4.5,1.1,5.7,5.2,5.8v1.1h-16.1v-1.1c4.1-0.3,4.9-1.1,4.9-5.1v-15.6c0-5-1.6-7.6-4.8-7.6c-2.5,0-5.6,1.2-7.4,2.9
+				c-0.5,0.5-1.1,1.4-1.1,1.4v20.3c0,2.8,1.1,3.6,4.9,3.7v1.1h-16v-1.1c4-0.1,5-1.2,5-5V161c0-3.5-0.6-4.6-2.5-4.6
+				c-0.8,0-1.4,0.1-2.3,0.3v-1.2c4-1.1,6.4-1.9,10.1-3.2l0.5,0.1v5.4c6-4.5,8-5.5,11.2-5.5c3.9,0,6.3,1.9,7.6,6c3.9-4.2,7.6-6,11.7-6
+				c5.5,0,8.4,4.3,8.4,12.8v14.8c0,2.8,0.9,4.1,3.1,4.2l1.9,0.1v1.1H127.1L127.1,185.3z"/>
+			<path d="M168.3,186.1c-3,0-4.2-1.4-4.6-5.3c-4.4,3.7-7.3,5.3-10.5,5.3c-4.5,0-7.6-3.2-7.6-7.7c0-2.4,1-4.8,2.6-6.3
+				c3.1-2.7,4.3-3.3,15.4-7.8v-4.4c0-3.9-1.9-6-5.5-6c-2.9,0-5.2,1.6-5.2,3.5c0,0.5,0.1,1.1,0.2,1.7c0.1,0.5,0.1,0.9,0.1,1.2
+				c0,1.6-1.5,3-3.2,3s-3.1-1.4-3.1-3.1c0-1.8,1.2-3.9,3-5.4c2-1.7,5.5-2.7,9.1-2.7c4.4,0,7.5,1.4,9,4.2c1,1.7,1.4,3.7,1.4,7.3v14
+				c0,3.2,0.5,4.2,2.2,4.2c1.1,0,1.9-0.4,3.2-1.4v1.9C172.3,185.2,170.8,186.1,168.3,186.1z M163.8,166.1c-8.7,3.2-11.7,5.8-11.7,10
+				v0.3c0,3.1,2,5.5,4.5,5.5c1.5,0,3.5-0.6,5.3-1.6c1.5-0.9,1.9-1.6,1.9-3.8V166.1z"/>
+			<path d="M186.3,186.1c-4.2,0-6.3-3.1-6.3-9.1v-21.7h-3.8c-0.2-0.1-0.3-0.3-0.3-0.5c0-0.4,0.4-0.9,1.2-1.4
+				c1.9-1.1,4.3-3.7,7-7.7c0.5-0.6,1-1.3,1.4-2c0.4,0,0.5,0.2,0.5,0.9v8.4h7.3v2.3h-7.3v20.6c0,4.6,1.1,6.5,3.7,6.5
+				c1.6,0,2.7-0.6,4.3-2.5l0.9,0.8C192.8,184.3,190,186.1,186.3,186.1z"/>
+			<path d="M209.1,185.3h-13.4v-1.1c4.2-0.6,4.6-1.2,4.6-6.3V144c0-3.1-0.6-3.7-3.7-3.7c-0.4,0-0.6,0-0.9,0.1v-1.2
+				l1.9-0.6c4-1.2,5.8-1.7,8.3-2.6l0.4,0.2v21.9c0.9-1.2,1.9-2.2,2.8-3.1"/>
+			<path d="M209.1,157.9c-0.8,0.7-1.7,1.5-2.7,2.6v17.4c0,4,0.4,5.3,2.7,5.9"/>
+		  </g>
+		  <g>
+			<polyline opacity="0.2" fill="#231F20" points="209.1,76.4 118.7,186.5 139.1,186.4 209.1,121 209.1,76.4 "/>
+			<polyline opacity="0.4" fill="#231F20" points="209.1,76.2 118.5,186.5 129.7,186.4 200.2,120.3 209.1,100.8 209.1,76.4 "/>
+			<path fill="#FFD761" d="M121.6,88.7l0.8,87.5l62.3-56.7c0,0-15.3-25.8-24.8-30C151.1,85.6,121.6,88.7,121.6,88.7z"/>
+			<path fill="#FEA01E" d="M209.1,19.5h-54l-33.5,69.2c0,0,29.7-3.4,38.3,0.8c8.9,4.4,25,30.8,25,30.8l24.2-50V19.5z"/>
+			<path d="M120.4,153.7l-0.6,25l23.8-16.9c0,0-8-7-11.2-8.1C129.4,152.8,120.4,153.7,120.4,153.7z"/>
+			<polyline fill="none" stroke="#231F20" stroke-width="5" points="153.9,19.5 121.6,88.7 120.7,181.2 186.6,120.3 209.1,70.3 "/>
+		  </g>
+		</svg>
+	</g>
+	
+	<g id="svg_eof"/>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/grid-icon.xml
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/grid-icon.xml	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/grid-icon.xml	(revision 29468)
@@ -0,0 +1,30 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+<!-- 
+	Sample icons file. This file looks like an SVG file with groups as its
+	children. Each group element has an ID that must match the ID of the button given
+	in the extension. The SVG inside the group makes up the actual icon, and
+	needs use a viewBox instead of width/height for it to scale	properly.
+	
+	Multiple icons can be included, each within their own group.
+-->
+	<g id="view_grid">
+	  <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+		<g>
+		  <rect fill="#ffffff" stroke="#848484" x="2" y="2" width="20" height="20"/>
+		  <line fill="none" stroke="#848484" x1="11.84375" y1="-1.53125" x2="11.84375" y2="18.46875" transform="rotate(90, 11.8429, 8.46955)"/>
+		  <line fill="none" stroke="#848484" x1="11.90625" y1="5.21875" x2="11.90625" y2="25.21875" transform="rotate(90, 11.9054, 15.2196)"/>
+		  <line fill="none" stroke="#848484" x1="8.5" y1="2.03125" x2="8.5" y2="22.03125"/>
+		  <line fill="none" stroke="#848484" x1="15.5" y1="2.03125" x2="15.5" y2="22.03125"/>
+		  <rect fill="#d8d8d8" stroke="#000000" stroke-width="0" x="3.25" y="3.28125" width="4" height="4"/>
+		  <rect fill="#d8d8d8" stroke="#000000" stroke-width="0" x="10" y="3.28125" width="4" height="4"/>
+		  <rect fill="#d8d8d8" stroke="#000000" stroke-width="0" x="16.75" y="3.28125" width="4" height="4"/>
+		  <rect fill="#d8d8d8" stroke="#000000" stroke-width="0" x="3.28125" y="9.75" width="4" height="4"/>
+		  <rect fill="#d8d8d8" stroke="#000000" stroke-width="0" x="10.03125" y="9.75" width="4" height="4"/>
+		  <rect fill="#d8d8d8" stroke="#000000" stroke-width="0" x="16.78125" y="9.75" width="4" height="4"/>
+		  <rect fill="#d8d8d8" stroke="#000000" stroke-width="0" x="3.3125" y="16.59375" width="4" height="4"/>
+		  <rect fill="#d8d8d8" stroke="#000000" stroke-width="0" x="10.0625" y="16.59375" width="4" height="4"/>
+		  <rect fill="#d8d8d8" stroke="#000000" stroke-width="0" x="16.8125" y="16.59375" width="4" height="4"/>
+		</g>
+	  </svg>
+	</g>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/helloworld-icon.xml
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/helloworld-icon.xml	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/helloworld-icon.xml	(revision 29468)
@@ -0,0 +1,21 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+<!-- 
+	Sample icons file. This file looks like an SVG file with groups as its
+	children. Each group element has an ID that must match the ID of the button given
+	in the extension. The SVG inside the group makes up the actual icon, and
+	needs use a viewBox instead of width/height for it to scale	properly.
+	
+	Multiple icons can be included, each within their own group.
+-->
+	<g id="hello_world">
+		<svg width="102" height="102" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+		 <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
+		 <g>
+		  <title>Layer 1</title>
+		  <rect ry="30" rx="30" x="2.5" y="2.5" width="97" height="97" id="svg_3" fill="#008000" stroke="#000000" stroke-width="5"/>
+		  <text x="52.668" y="42.5" id="svg_1" fill="#ffffff" stroke="#000000" stroke-width="0" font-size="24" font-family="Monospace" text-anchor="middle" xml:space="preserve">Hello</text>
+		  <text x="52.668" y="71.5" fill="#ffffff" stroke="#000000" stroke-width="0" font-size="24" font-family="Monospace" text-anchor="middle" xml:space="preserve" id="svg_2">World!</text>
+		 </g>
+		</svg>
+	</g>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/imagelib/index.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/imagelib/index.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/imagelib/index.html	(revision 29468)
@@ -0,0 +1,64 @@
+<!doctype html>
+<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
+
+
+<body>
+
+<h1>Select an image:</h1>
+<a href="smiley.svg">smiley.svg</a>
+<br>
+<a href="../../images/logo.png">logo.png</a>
+</body>
+
+<script>
+
+$('a').click(function() {
+	var href = this.href;
+	var target = window.parent;
+	// Convert Non-SVG images to data URL first 
+	// (this could also have been done server-side by the library)
+	if(this.href.indexOf('.svg') === -1) {
+
+		var meta_str = JSON.stringify({
+			name: $(this).text(),
+			id: href
+		});
+		target.postMessage(meta_str, "*");
+	
+		var img = new Image();
+		img.onload = function() {
+			var canvas = document.createElement("canvas");
+			canvas.width = this.width;
+			canvas.height = this.height;
+			// load the raster image into the canvas
+			canvas.getContext("2d").drawImage(this,0,0);
+			// retrieve the data: URL
+			try {
+				var dataurl = canvas.toDataURL();
+			} catch(err) {
+				// This fails in Firefox with file:// URLs :(
+				alert("Data URL conversion failed: " + err);
+				var dataurl = "";
+			}
+			target.postMessage('|' + href + '|' + dataurl, "*");
+		}
+		img.src = href;
+	} else {
+		// Send metadata (also indicates file is about to be sent)
+		var meta_str = JSON.stringify({
+			name: $(this).text(),
+			id: href
+		});
+		target.postMessage(meta_str, "*");
+		// Do ajax request for image's href value
+		$.get(href, function(data) {
+			data = '|' + href + '|' + data;
+			// This is where the magic happens!
+			target.postMessage(data, "*");
+			
+		}, 'html'); // 'html' is necessary to keep returned data as a string
+	}
+	return false;
+});
+
+</script>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/imagelib/smiley.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/imagelib/smiley.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/imagelib/smiley.svg	(revision 29468)
@@ -0,0 +1,12 @@
+<svg width="137" height="137" xmlns="http://www.w3.org/2000/svg">
+ <title>Cool smiley</title>
+  <path fill="url(#svg_4)" stroke="#000000" stroke-width="3" d="m32.18682,97.71674q36.3159,24.94076 72.54585,0m-64.67542,-49.25576c0,-3.8554 3.12526,-6.98079 6.98068,-6.98079c3.85449,0 6.97872,3.12539 6.97872,6.98079c0,3.85346 -3.12423,6.97867 -6.97872,6.97867c-3.85542,0 -6.98068,-3.12521 -6.98068,-6.97867m42.93047,0c0,-3.8554 3.12529,-6.98079 6.97963,-6.98079c3.8544,0 6.97971,3.12539 6.97971,6.98079c0,3.85346 -3.12531,6.97867 -6.97971,6.97867c-3.85434,0 -6.97963,-3.12521 -6.97963,-6.97867m-81.48596,20.036l0,0c0,-37.00197 29.99679,-66.99892 67.00095,-66.99892c37.00303,0 66.99998,29.99695 66.99998,66.99892c0,37.00409 -29.99695,67.00101 -66.99998,67.00101c-37.00416,0 -67.00095,-29.99692 -67.00095,-67.00101zm0,0l0,0c0,-37.00197 29.99679,-66.99892 67.00095,-66.99892c37.00303,0 66.99998,29.99695 66.99998,66.99892c0,37.00409 -29.99695,67.00101 -66.99998,67.00101c-37.00416,0 -67.00095,-29.99692 -67.00095,-67.00101z" id="svg_1"/>
+  <path id="svg_5" d="m23.84005,41.03445l17.57052,0l5.42937,-19.67914l5.42941,19.67914l17.5706,0l-14.21488,12.16242l5.42982,19.67939l-14.21495,-12.16281l-14.21489,12.16281l5.42991,-19.67939l-14.21491,-12.16242l0,0z" stroke-width="3" fill="#000000"/>
+  <path id="svg_6" d="m65.84005,41.03445l17.57052,0l5.42937,-19.67914l5.42941,19.67914l17.5706,0l-14.21487,12.16242l5.42982,19.67939l-14.21496,-12.1628l-14.2149,12.1628l5.42992,-19.67939l-14.21491,-12.16242l0,0z" stroke-width="3" fill="#000000"/>
+ <defs>
+  <linearGradient y2="0.25391" x2="0.46484" y1="0.94922" x1="0.44531" id="svg_4">
+   <stop stop-color="#ff0000" offset="0"/>
+   <stop stop-color="#ffff00" offset="1"/>
+  </linearGradient>
+ </defs>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/markers-icons.xml
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/markers-icons.xml	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/markers-icons.xml	(revision 29468)
@@ -0,0 +1,115 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+    <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
+    <g id="nomarker">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+            <path stroke-width="10" stroke="#ff7f00" fill="#ff7f00" d="m-50,0l100,0"/>
+        </svg>
+    </g>
+    <g id="leftarrow">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+            <path stroke-width="10" stroke="#ff7f00" fill="#ff7f00" d="m-50,0l100,40l-30,-40l30,-40z"/>
+        </svg>
+    </g>
+    <g id="rightarrow">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+            <path stroke-width="10" stroke="#ff7f00" fill="#ff7f00" d="m50,0l-100,40l30,-40l-30,-40z"/>
+        </svg>
+    </g>
+    <g id="leftarrow_o">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+            <path stroke-width="10" stroke="#ff7f00" fill="none" d="m-50,0l100,40l-30,-40l30,-40z"/>
+        </svg>
+    </g>
+    <g id="rightarrow_o">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+            <path stroke-width="10" stroke="#ff7f00" fill="none" d="m50,0l-100,40l30,-40l-30,-40z"/>
+        </svg>
+    </g>
+    <g id="forwardslash">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+            <path stroke-width="10" stroke="#ff7f00" fill="none" d="m-20,50l40,-100"/>
+        </svg>
+    </g>
+    <g id="reverseslash">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+            <path stroke-width="10" stroke="#ff7f00" fill="none" d="m-20,-50l40,100"/>
+        </svg>
+    </g>
+    <g id="verticalslash">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+            <path stroke-width="10" stroke="#ff7f00" fill="none" d="m0,-50l0,100"/>
+        </svg>
+    </g>
+    <g id="mcircle">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+            <circle stroke-width="10" stroke="#ff7f00" fill="#ff7f00" cy="0" cx="0" r="30"/>
+        </svg>
+    </g>
+    <g id="mcircle_o">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+            <circle stroke-width="10" stroke="#ff7f00" fill="none" cy="0" cx="0" r="30"/>
+        </svg>
+    </g>
+    <g id="xmark">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+            <path stroke-width="10" stroke="#ff7f00" fill="#ff7f00" d="m-30,30l60,-60m0,60l-60,-60"/>
+        </svg>
+    </g>
+    <g id="box">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+            <path stroke-width="10" stroke="#ff7f00" fill="#ff7f00" d="m-30,-30l0,60l60,0l0,-60z"/>
+        </svg>
+    </g>
+    <g id="star">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+            <path stroke-width="10" stroke="#ff7f00" fill="#ff7f00" d="m-40,-20l80,0l-70,60l30,-80l30,80z"/>
+        </svg>
+    </g>
+    <g id="box_o">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+            <path stroke-width="10" stroke="#ff7f00" fill="none" d="m-30,-30l0,60l60,0l0,-60z"/>
+        </svg>
+    </g>
+    <g id="star_o">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+            <path stroke-width="10" stroke="#ff7f00" fill="none" d="m-40,-20l80,0l-70,60l30,-80l30,80z"/>
+        </svg>
+    </g>
+     <g id="triangle_o">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+            <path stroke-width="10" stroke="#ff7f00" fill="none" d="M-30,30 L0,-30 L30,30 Z"/>
+        </svg>
+    </g>
+     <g id="triangle">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+            <path stroke-width="10" stroke="#ff7f00" fill="#ff7f00" d="M-30,30 L0,-30 L30,30 Z"/>
+        </svg>
+    </g>
+   <g id="textmarker">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+			<text xml:space="preserve" text-anchor="middle" font-family="serif" font-size="120"  y="40" x="0" stroke-width="0" stroke="#ff7f00" fill="#ff7f00">T</text>	
+        </svg>
+    </g>
+	<g id="mkr_markers_off">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+		   <line y2="0" x2="50" y1="0" x1="-50" stroke-width="5" stroke="#ff7f00" fill="none"/>
+       </svg>
+    </g>
+	<g id="mkr_markers_dimension">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+ 		   <line y2="0" x2="40" y1="0" x1="20" stroke-width="5" stroke="#ff7f00" fill="none"/>
+		   <line y2="0" x2="-40" y1="0" x1="-20" stroke-width="5" stroke="#ff7f00" fill="none"/>
+		   <text text-anchor="middle" font-family="serif" font-size="80"  y="20" x="0" stroke-width="0" stroke="#ff7f00" fill="#ff7f00">T</text>
+           <path stroke-width="5" stroke="#ff7f00" fill="#ff7f00" d="M-50,0 L-30,-15 L-30,15 Z"/>
+           <path stroke-width="5" stroke="#ff7f00" fill="#ff7f00" d="M50,0 L30,-15 L30,15 Z"/>
+ 		</svg>
+    </g>
+   	<g id="mkr_markers_label">
+        <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+  		   <line y2="0" x2="40" y1="0" x1="-20" stroke-width="5" stroke="#ff7f00" fill="none"/>
+		   <text text-anchor="middle" font-family="serif" font-size="80"  y="20" x="-40" stroke-width="0" stroke="#ff7f00" fill="#ff7f00">T</text>
+           <path stroke-width="5" stroke="#ff7f00" fill="#ff7f00" d="M50,0 L30,-15 L30,15 Z"/>
+        </svg>
+    </g>
+	<g id="svg_eof"/>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib.svg	(revision 29468)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="27px" height="27px" viewBox="0 0 27 27" enable-background="new 0 0 27 27" xml:space="preserve">
+<g>
+	<path fill="#2F2F2C" d="M0,0v27h27V0H0z M20.328,24.166l-6.891-3.622l-6.891,3.622l1.316-7.672L2.289,11.06l7.704-1.121
+		l3.445-6.979l3.447,6.98l7.702,1.121l-5.573,5.434L20.328,24.166z"/>
+</g>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/arrow.json
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/arrow.json	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/arrow.json	(revision 29468)
@@ -0,0 +1,40 @@
+{"data": {
+
+"raph_arrowleftalt": "m148.85236,267.85736c62.96338,0 113.99997,-51.03978 113.99997,-114c0,-62.96035 -51.03659,-114.00003 -113.99997,-114.00003c-62.9603,0 -114.00003,51.03968 -114.00003,114.00003c0,62.96022 51.03973,114 114.00003,114zm18.3148,-190.27232l27.73683,27.75199l-48.5291,48.5263l48.5291,48.52924l-27.73683,27.74283l-76.26337,-76.27206l76.26337,-76.27829z",
+"raph_arrowalt": "m148.90228,39.83233c-62.96026,0 -113.99995,51.03969 -113.99995,114.00001c0,62.96008 51.0397,114 113.99995,114c62.96025,0 113.99988,-51.03992 113.99988,-114c0,-62.96032 -51.03963,-114.00001 -113.99988,-114.00001zm-18.31474,190.28132l-27.73705,-27.76117l48.52927,-48.5262l-48.52927,-48.52618l27.73705,-27.73716l76.27211,76.26334l-76.27211,76.28737z",
+"raph_code": "m97.65991,81.82553l-74.7733,74.80002l74.78024,74.7861l27.19928,-27.19878l-47.59419,-47.58733l47.5843,-47.58737l-27.19633,-27.21265zm109.43651,0l-27.17958,27.20575l47.58447,47.58731l-47.58447,47.58151l27.17958,27.19864l74.79021,-74.79295l-74.79021,-74.78026z",
+"raph_arrowleft": "m225.55086,67.20994l-84.74785,84.74276l84.74785,84.74268l-48.43251,48.45847l-133.18028,-133.20114l133.18028,-133.21132",
+"raph_arrow": "m78.90065,233.69882l83.51689,-83.51643l-83.51689,-83.51703l47.73413,-47.72898l131.26115,131.24601l-131.26115,131.28673",
+"raph_undo": "m126.96721,93.92608l0,-21.257l-114.02783,65.84013l114.02783,65.84071l0,-22.80913c30.94208,-0.01447 85.26308,2.62997 85.26308,21.37195c0,26.1869 -56.73189,40.15683 -56.73189,40.15683l0,20.07819c0,0 127.44096,4.35471 127.44096,-92.53024c0,-76.11671 -109.14841,-78.97697 -155.97215,-76.69144z",
+"raph_merge": "m258.90588,146.2108l-35.01118,-20.22446l0,22.50387l-62.83257,0c-11.00156,0.82205 -29.99611,-11.65927 -51.11536,-28.22105c-21.26684,-15.71002 -45.57171,-34.98518 -78.11465,-35.50087l-21.89459,0l0,35.87434l21.89459,0c15.93792,-0.46335 35.59039,12.07035 56.5134,28.24386c7.79893,5.64999 15.66515,11.88324 24.00037,17.51106c-8.33522,5.63521 -16.19209,11.87592 -24.00037,17.52603c-20.923,16.12849 -40.57548,28.69205 -56.49281,28.23607l-21.91517,0l0,35.92667l21.90392,0c32.4738,-0.45563 56.78807,-19.78302 78.12402,-35.47069c21.12115,-16.56209 40.10641,-29.05069 51.11726,-28.24356l62.81198,0l0,22.50366l35.01118,-20.20171l35.03165,-20.21658l-35.03165,-20.24663z",
+"raph_split": "m223.13887,262.39078l34.41331,-19.83861l34.39532,-19.84677l-34.41354,-19.86079l-34.3951,-19.84554l0,22.07059c-8.43063,0 -18.22723,0 -21.50928,0c-15.6481,0.44069 -34.96196,-11.87286 -55.50945,-27.74643c-7.65977,-5.56572 -15.38751,-11.68895 -23.57783,-17.21797c8.19032,-5.5358 15.90699,-11.65199 23.57783,-17.21753c20.54749,-15.85163 39.86134,-28.18731 55.48927,-27.73882l21.52945,-0.00742l0,22.10017l34.3951,-19.85346l34.41354,-19.86873l-34.41354,-19.89001l-34.3951,-19.86087l0,22.08605l-21.51839,0c-31.96097,0.44731 -55.84717,19.42773 -76.74889,34.85365c-20.74947,16.27773 -39.40058,28.53203 -50.21759,27.73907l-61.70647,0l0,35.25784l61.72672,0c10.80773,-0.80074 29.4682,11.46153 50.21568,27.7388c20.89257,15.43373 44.7696,34.39839 76.73968,34.85391l21.50928,0l0,22.09286l0,0z",
+"raph_fork": "m258.35388,215.7941l33.58908,-19.39804l-33.58908,-19.39061l-33.59627,-19.38332l0,21.56366c-8.81293,-0.01453 -23.41788,-0.01453 -27.55809,-0.01453c-12.23308,-0.29179 -20.2621,-4.12018 -28.61749,-10.97516c-12.45367,-10.23131 -23.08237,-28.64481 -35.90071,-46.38726c-6.51941,-8.82375 -13.7827,-17.57478 -23.45615,-24.61189c-9.57678,-7.06647 -22.08884,-11.967 -35.99734,-11.87218l-60.28487,0l0,34.44956l60.28487,0c8.38267,0.15314 13.68788,2.88773 20.92385,9.66982c10.70531,10.08549 21.14264,29.36664 35.53795,47.63431c14.10718,18.0925 35.81505,36.36014 67.30019,36.53516l27.76779,0l0,21.5636l33.59627,-19.38312zm-142.10248,-130.46932c0.38107,0.26987 0.78403,0.50312 1.15588,0.78036c11.48932,8.35705 19.78624,18.61034 26.3531,27.52899c1.50954,2.08552 2.84773,4.091 4.28069,6.14021l76.71654,0l0,21.57103l33.59627,-19.38342l33.58908,-19.3905l-33.58908,-19.39791l-33.59627,-19.40525l0,21.55649l-108.50621,0z",
+"raph_shuffle": "m94.12077,129.33299c3.30632,3.12013 6.59446,7.16655 9.96822,11.73782c0.4866,-0.69966 0.94586,-1.37793 1.43262,-2.09238c4.88302,-7.16682 10.41658,-15.28143 16.61735,-23.13344c0.98422,-1.27567 2.01776,-2.34757 3.02023,-3.55069c-4.65336,-5.46064 -9.78598,-10.70262 -15.97768,-15.20836c-9.57452,-7.05739 -22.08362,-11.96404 -35.98885,-11.86218l-60.25968,0l0,34.44167l60.27063,0c8.38065,0.16037 13.6938,2.87227 20.91718,9.66756zm130.57496,28.18616l0,21.55846c-8.81079,-0.02196 -23.41228,-0.02196 -27.5498,-0.02196c-12.2318,-0.28418 -20.25906,-4.1848 -28.61061,-10.9724c-3.61259,-2.96718 -7.07196,-6.68578 -10.48404,-10.82677c-2.56079,3.59421 -5.14177,7.30534 -7.76822,11.16187c-3.19156,4.66638 -6.47966,9.46375 -9.90996,14.18074c-0.85124,1.15926 -1.80627,2.35471 -2.7049,3.52884c13.90358,14.60304 33.18919,27.19391 59.26631,27.34717l27.76122,0l0,21.5585l33.59029,-19.35652l33.64694,-19.40054l-33.64694,-19.3786l-33.59029,-19.37878zm-56.16042,-26.87401c8.35155,-6.80222 16.37881,-10.68808 28.61061,-10.97253c4.13753,0 18.73901,0 27.5498,-0.01451l0,21.55887l33.59029,-19.36429l33.64694,-19.37878l-33.64694,-19.39363l-33.59029,-19.36394l0,21.53672l-27.76122,0c-31.46672,0.18983 -53.16029,18.44574 -67.28418,36.52649c-14.39021,18.27095 -24.82685,37.54041 -35.52956,47.60872c-7.23431,6.77303 -12.53652,9.51414 -20.91718,9.66739l-60.27063,0l0,34.44138l60.27063,0c13.90349,0.1021 26.41247,-4.79713 35.98701,-11.86911c9.67125,-7.02086 16.93459,-15.7771 23.45067,-24.59161c12.81526,-17.7531 23.45059,-36.16925 35.89404,-46.39116z",
+"raph_refresh": "m145.75569,48.42695c10.606,0.01341 20.73811,1.8498 30.33369,4.91769l-7.59421,13.13442l53.90657,0l-13.48009,-23.34555l-13.4698,-23.33857l-7.09061,12.29793c-13.28893,-4.85847 -27.6149,-7.57754 -42.59589,-7.57754c-68.95639,0 -124.84771,55.89483 -124.84771,124.85096c0,28.61906 9.73375,54.91371 25.93285,75.98108l18.98374,-14.57568c-13.10138,-17.02533 -20.97865,-38.27057 -21.02139,-61.39851c0.09542,-55.75012 45.19962,-100.86075 100.94284,-100.94623zm98.92802,24.98459l-18.9837,14.58266c13.09808,17.01885 20.97539,38.2507 21.01143,61.38551c-0.09543,55.74966 -45.19962,100.85384 -100.94608,100.94571c-9.8786,-0.01277 -19.32938,-1.61905 -28.339,-4.30534l7.1464,-12.35753l-53.90633,0l13.47012,23.33263l13.47984,23.36481l7.51521,-13.04187c12.74574,4.4371 26.38684,6.91254 40.63376,6.91898c68.96634,-0.01285 124.84807,-55.90773 124.86427,-124.86391c-0.0162,-28.619 -9.75687,-54.90723 -25.94592,-75.96164z",
+	"10": "m0.99679,148.19614c0.277,-34.75176 -0.17724,-69.54997 2.27791,-104.24061c60.32762,11.41171 119.94372,30.08407 179.25477,46.87597c3.18407,-17.04019 1.68541,-31.17523 4.4519,-46.93008c38.1039,33.15254 75.86421,66.77718 112.07695,102.003c-34.74261,39.95821 -74.59364,74.65916 -113.71667,110.1933c-1.26689,-16.54773 -2.53401,-33.09534 -3.80092,-49.64307c-57.66159,16.00916 -118.64064,32.56108 -176.67504,47.19652c-3.94662,-33.77068 -3.83062,-70.54794 -3.8689,-105.45503z",
+	"11": "m136.44681,226.75766l47.24773,-47.40907l-91.35118,0l-91.35098,0l0,-29.34846l0,-29.34849l90.303,0c49.66658,0 90.30293,-1.48752 90.30293,-3.30561c0,-1.81805 -19.77211,-23.15214 -43.93797,-47.40906l-43.93811,-44.1035l40.61224,0l40.61209,0l62.02386,62.14279l62.02383,62.14276l-62.14281,62.02386l-62.14279,62.02386l-42.75481,0l-42.75491,0l47.24786,-47.40909z",
+	"12": "m116.00724,294.49442c-8.01179,-8.01181 -6.96065,-12.86337 12.51841,-57.77466c9.83598,-22.67787 17.88353,-41.89153 17.88353,-42.69699c0,-0.8054 -27.16052,-1.46442 -60.3569,-1.46442l-60.3569,0l0,-42.47337l0,-42.47337l60.83526,0c46.90741,0 60.31158,-1.27951 58.54825,-5.58862c-1.25784,-3.07373 -9.83818,-23.47047 -19.06743,-45.32602c-17.39725,-41.19823 -17.39179,-52.24659 0.02688,-55.67119c8.66862,-1.70424 143.62872,129.24032 148.26757,143.85621c-44.95403,52.18671 -98.68933,106.81281 -148.18829,154.97751c-2.60997,0 -7.15958,-2.41428 -10.11037,-5.36508z",
+	"13": "m167.5984,129.81894c13.45454,0 26.90909,0 40.36363,0c0,13.45454 0,26.90909 0,40.36363c-13.45454,0 -26.90909,0 -40.36363,0c0,-13.45454 0,-26.90909 0,-40.36363zm-58.30304,0c14.9494,0 29.89909,0 44.8485,0c0,13.45454 0,26.90909 0,40.36363c-14.9494,0 -29.89909,0 -44.8485,0c0,-13.45454 0,-26.90909 0,-40.36363zm-53.81818,0c14.9494,0 29.89908,0 44.84848,0c0,13.45454 0,26.90909 0,40.36363c-14.9494,0 -29.89909,0 -44.84848,0c0,-13.45454 0,-26.90909 0,-40.36363zm-53.81818,0c14.9494,0 29.89908,0 44.84849,0c0,13.45454 0,26.90909 0,40.36363c-14.94941,0 -29.89908,0 -44.84849,0c0,-13.45454 0,-26.90909 0,-40.36363zm165.9394,83.23706c14.2021,-0.91132 28.40395,0.64389 42.60606,-0.26743c0.91125,-14.20201 0.48917,-28.40405 1.40042,-42.60606c13.29086,0 27.91505,0 41.20563,0c0,-13.45454 0,-26.9091 0,-40.36363c-13.45454,0 -26.90909,0 -40.36363,0c0,-14.94952 0,-29.899 0,-44.84848c-14.9494,0 -29.89908,0 -44.84848,0c0,-13.45454 0,-26.90909 0,-40.36363c14.9494,0 29.89908,0 44.84848,0c0,13.45454 0,26.90909 0,40.36363c13.29059,0 27.91478,-0.66666 41.20563,-0.66666c0.91125,14.20197 0.48918,29.0707 1.40044,43.27271c14.20209,0.91129 28.60425,-0.07731 42.80637,0.83398c0,13.29074 -0.20032,28.48132 -0.20032,41.77208c-14.9494,0 -29.89908,0 -44.84848,0c0,14.94951 0,29.89897 0,44.84848c-13.45454,0 -26.90909,0 -40.36363,0c0,13.45454 0,26.90909 0,40.36363c-14.9494,0 -29.89908,0 -44.84848,0c0,-13.29074 0,-29.0479 0,-42.33865z",
+	"14": "m158.38327,149.9911l-83.00266,-148.9972l149.24145,148.9972l-149.24145,148.99712l83.00266,-148.99712z",
+	"15": "m175.41861,150.04552l-148.89816,-149.05299l98.06119,0l148.89816,149.05299l-148.89816,149.05287l-98.06119,0l148.89816,-149.05287z",
+	"16": "m227.52928,183.22569c6.14276,-5.95375 12.01762,-12.81764 17.19296,-18.97911l-155.07133,-2.82724l-21.27044,24.3479l-67.38522,-2.09119c8.44345,-11.0853 17.69294,-24.10754 24.55062,-33.88853l-24.39403,-32.88164l71.89852,0l14.62907,20.54468l158.32403,0l-19.63887,-20.4987c6.06082,-6.45992 15.03049,-15.08081 19.89622,-19.60087l53.24701,52.24467l-53.36812,53.05513l-18.61044,-19.42511z",
+	"bent_up": "m1.00136,224.73827l204.13,0l0,-149.15997l-31.28999,0l62.57999,-74.57997l62.58002,74.57997l-31.29001,0l0,223.73997l-266.71,0z",
+	"chevron": "m0.99844,0.99688l223.49919,0l74.49986,149.00068l-74.49986,149.00134l-223.49919,0l74.49984,-149.00134l-74.49984,-149.00068z",
+	"corners": "m78.29672,150l-55.17469,-55.1747l0,27.58735l-22.12203,0l0,-121.41265l121.41265,0l0,22.12203l-27.58736,0l55.17471,55.17471l55.17471,-55.17471l-27.58736,0l0,-22.12203l121.41264,0l0,121.41265l-22.12204,0l0,-27.58735l-55.1747,55.1747l55.1747,55.17471l0,-27.58736l22.12204,0l0,121.41264l-121.41264,0l0,-22.12204l27.58736,0l-55.17471,-55.17468l-55.17471,55.17468l27.58736,0l0,22.12204l-121.41265,0l0,-121.41264l22.12203,0l0,27.58736l55.17469,-55.17471z",
+	"dotted": "m164.76302,54.29618c-12.89404,-14.08136 13.13254,-37.91006 24.83243,-21.67826c9.98653,14.06865 -12.21164,31.95572 -24.83243,21.67826zm34.52623,32.04741c-10.53665,-15.50334 18.2944,-32.06738 27.41472,-16.58083c10.82574,16.19412 -18.42853,34.68893 -27.41472,16.58083zm39.30569,38.77469c-13.16362,-8.91086 -0.08168,-29.46533 13.54875,-27.63215c18.93346,2.88981 13.87328,34.44158 -4.59297,32.89478c-3.58466,-0.41574 -6.77832,-2.45136 -8.95578,-5.26263zm32.87781,34.23642c-11.00845,-13.99648 14.37656,-32.37918 25.04797,-19.05171c11.60712,14.82527 -14.29718,34.39392 -25.04797,19.05171zm-63.84386,0.7675c-12.23796,-11.58463 5.72536,-30.30273 19.24007,-25.41679c19.63696,6.28566 5.03751,36.50668 -12.48737,29.64096c-2.41074,-1.14194 -4.56958,-2.71278 -6.7527,-4.22417zm-52.05359,0c-14.38365,-13.43323 11.89731,-35.50046 24.20743,-21.44815c12.48965,14.64734 -10.94827,35.43011 -24.20743,21.44815zm-51.41751,-0.7675c-11.01524,-13.99239 14.38364,-32.38554 25.04439,-19.04626c11.57417,14.84886 -14.25791,34.38168 -25.04439,19.04626zm-48.97159,0.7675c-14.38364,-13.43323 11.89733,-35.50046 24.20746,-21.44815c12.48962,14.64734 -10.94829,35.43011 -24.20746,21.44815zm-51.41319,-0.75569c-12.62148,-16.51503 21.51373,-34.53826 27.20482,-13.82039c4.20761,13.86485 -18.57945,25.93829 -27.20482,13.82039zm232.73729,36.71002c-12.26451,-12.7252 9.54947,-34.95583 22.63777,-23.37347c16.16324,11.53831 -5.25334,38.27226 -20.09267,25.93422c-0.83693,-0.86462 -1.69453,-1.70929 -2.5451,-2.56075zm-37.22105,31.5554c-10.33875,-14.74719 16.53384,-30.93315 26.24101,-17.10368c12.66234,14.69044 -12.76988,34.70573 -24.48114,20.0298l-1.75987,-2.92612zm-33.2933,39.2449c-11.17,-10.21844 4.17313,-26.31229 16.33257,-23.575c18.50797,4.77472 6.84483,34.45702 -10.13109,28.82402c-2.6304,-0.90369 -4.76476,-2.91159 -6.20148,-5.24902z",
+	"hand_2": "m166.23018,238.662c7.92778,-2.90976 14.43034,-5.61938 2.1153,-5.69868c-10.87593,1.46172 -39.01099,-9.28242 -16.4619,-14.56342c14.10701,-5.508 46.21144,7.21423 46.38257,-14.54736c-2.55197,-13.63786 -43.96396,-2.98952 -30.34076,-21.27969c15.00345,-6.1348 44.75407,8.31958 49.78708,-10.66391c-4.61371,-18.40675 -33.47118,-6.65964 -47.97568,-11.74664c-14.06097,2.90031 -17.76392,-15.58949 -1.98296,-12.79868c36.48125,-1.96817 73.21696,0.92035 109.57253,-3.09619c5.87265,-3.2529 10.21371,-23.26295 2.80267,-24.61046c-52.95885,-1.09735 -106.01129,-0.08873 -158.88631,-3.36192c-18.99625,-0.19729 -4.48207,-20.48157 9.55508,-15.71787c13.37119,-4.37856 18.67023,-15.85947 28.4838,-27.19597c5.01488,-24.77942 -19.08717,-15.58241 -28.93028,-8.33138c-10.99126,7.20572 -29.89664,22.16276 -39.92577,30.01463c-8.79154,6.3571 -29.0466,13.41131 -41.36795,21.93291c-10.53185,3.7428 -22.05687,1.87943 -32.40108,2.55152c0,33.57336 0,67.14623 0,100.71958c29.2655,12.743 60.06093,23.93646 92.50566,22.65599c19.00592,-0.07739 38.55775,0.63341 57.06799,-4.26245zm-120.57521,10.76822c-14.93961,-5.74022 -29.85212,-11.55359 -44.65637,-17.63553c0.70846,-41.92598 1.41691,-83.85243 2.12533,-125.77841c11.81984,-0.44887 29.35853,5.41407 37.78343,-3.21891c22.65079,-7.26991 37.35686,-23.34933 57.21348,-35.41785c13.97373,-10.98014 25.13529,-14.72766 39.56827,-23.05481c10.96249,-5.06954 16.89815,-2.48073 29.24257,-0.27045c5.38396,8.81045 12.06773,13.36412 8.59946,30.1482c-7.23705,3.64039 -16.6288,28.10783 -2.4068,28.30228c39.59416,3.79424 79.82585,-1.53866 119.10855,5.09266c9.78171,13.24281 11.64719,42.99407 -6.25568,51.39202c-17.13269,4.95341 -35.19667,2.49629 -52.7989,3.09193c-0.00107,12.52824 2.07022,28.51608 -11.83537,34.80946c-10.26779,13.39197 -10.98985,33.06551 -27.53502,42.86476c-13.91499,14.25851 -33.72333,18.66306 -53.04445,18.19296c-31.68189,0.4295 -65.02994,3.46667 -95.10849,-8.51738l0,-0.00095z",
+	"hand": "m136.98543,214.15889c-14.70618,-5.74251 -4.62521,-24.05643 -14.3905,-33.27538c-12.96347,-7.75244 -2.12349,-24.16507 -12.57821,-33.28812c-7.48801,-6.64952 -5.24203,-16.62421 -3.67915,-25.18983c-29.75101,-0.23549 -59.53337,0.62366 -89.25697,-0.78464c-15.11522,1.28053 -20.03182,-18.26941 -12.80666,-28.85114c7.00419,-11.24166 21.87759,-8.31262 33.12609,-9.4029c64.97946,-0.76864 129.97618,-0.61134 194.95673,0.02921c17.26189,0.80067 37.01695,-1.19489 50.6566,11.68779c16.24808,15.16693 16.0166,39.34441 16.04852,59.94771c-0.42267,19.21857 -2.90109,42.02173 -20.4863,53.46951c-16.36914,10.95175 -36.93741,7.66907 -55.55533,8.62302c-27.94264,-0.30014 -56.07063,1.04456 -83.86891,-2.2673l-2.16592,-0.69792l0,0zm69.33224,-10.55814c9.631,-11.23128 -3.5211,-20.50227 -14.65393,-17.55965c-16.14473,-0.10535 -32.65453,-1.7021 -48.52592,1.75482c-13.67432,5.19589 -4.85582,21.54512 7.46478,18.25877c18.04872,1.02443 36.47603,1.82143 54.28616,-1.68709l1.42891,-0.76686zm65.93199,-2.17656c15.66348,-8.69865 15.78064,-28.60548 16.25079,-44.24881c-0.34195,-16.50655 1.70639,-34.58434 -7.04581,-49.36581c-7.23798,-10.84158 -20.71933,-14.52557 -33.13705,-14.12024c-23.36646,0.0377 -47.0793,-1.82723 -70.16504,2.52512c-15.66467,3.36275 -22.23152,20.93031 -23.45795,35.19015c-0.48341,13.80043 -1.82124,28.00842 1.22505,41.56039c7.24641,5.02983 15.89499,-9.13847 19.17191,-15.4227c4.31766,-11.67575 -0.61995,-26.25061 8.10953,-36.19362c8.72269,-9.46424 24.96402,-8.53419 32.52521,1.88722c8.3812,9.23244 -0.48325,21.69592 1.82307,32.51563c4.15211,9.93069 -0.70021,19.45959 -0.85791,28.5067c4.13835,6.87068 2.87872,15.02933 1.61143,22.50597c16.21062,-0.57724 32.86133,1.70529 48.65034,-2.71872c1.84845,-0.69202 3.61401,-1.59238 5.29642,-2.62128zm-126.53741,-35.9437c2.18771,-13.69858 -18.65493,-12.59653 -20.49308,-1.57007c-4.38604,12.23279 17.61123,15.56906 20.78048,7.03215c0.03699,-1.82657 -0.14053,-3.64476 -0.2874,-5.46208zm62.45076,0.42249c1.41585,-11.79691 -20.5592,-11.91444 -24.75133,-3.63126c-2.34377,5.03215 -10.03961,15.25429 1.13329,12.59268c7.54675,-1.70357 25.12254,3.75204 23.61804,-8.96143zm-62.44263,-31.11197c-0.75351,-2.94205 3.03209,-10.28735 -1.13232,-9.92064c-9.20967,1.01493 -19.08115,-0.45296 -27.70964,3.18962c-7.77171,10.63712 5.24397,21.0274 15.9218,17.53934c7.79146,0.11475 13.91219,-1.24452 12.92017,-10.80832zm61.0041,7.53122c8.85812,-9.53879 -4.95708,-21.9593 -14.94496,-15.6684c-10.39732,5.40628 -7.29182,25.10663 6.58635,19.17703c2.96956,-0.54494 6.1384,-1.30057 8.35861,-3.50864zm-53.18405,-38.39041c2.00339,-3.50816 4.00681,-7.01634 6.01019,-10.52453c-44.99024,0.24061 -90.00227,-0.61648 -134.97418,0.73022c-12.21447,-3.32573 -22.07768,15.22181 -6.82234,18.35822c24.02138,3.10667 48.39057,1.52395 72.56345,1.97845c19.07089,-0.00607 38.14179,-0.01187 57.21268,-0.01793c2.0034,-3.50815 4.00681,-7.01634 6.01019,-10.52452z",
+	"inner": "m197.26169,150.29735l-74.64867,-74.64867l0,37.32433l-80.12502,0l0,-111.97301l215.02399,0l0,298.5947l-215.02399,0l0,-111.97301l80.12502,0l0,37.32433l74.64867,-74.64867z",
+	"left_right": "m0.99835,150.00092l86.49609,-86.49651l0,43.24814l125.35546,0l0,-43.24814l86.49605,86.49651l-86.49605,86.49605l0,-43.24803l-125.35546,0l0,43.24803l-86.49609,-86.49605z",
+	"left_up": "m0.99865,224.5l74.50004,-74.5l0,37.25l111.74991,0l0,-111.75l-37.25,0l74.5,-74.5l74.5,74.5l-37.25,0l0,186.25l-186.24989,0l0,37.25l-74.50005,-74.5z",
+	"pentagon": "m0.99791,0.9981l162.54547,0l135.45454,149.40899l-135.45454,149.40898l-162.54547,0z",
+	"recycle_3": "m28.22058,93.28644c0.00678,-2.58051 2.31667,-18.40222 5.13495,-35.15953c8.78786,-52.25238 8.91713,-52.48297 20.07468,-35.82898l6.60126,9.85321l19.30534,-9.74535c25.53492,-12.88995 56.00401,-17.65838 84.01221,-13.14781c11.88918,1.91477 24.50447,5.02692 28.034,6.91587c7.00751,3.7502 6.55832,6.97083 -4.61034,33.05528c-6.12129,14.29643 -6.70886,14.70388 -17.2827,11.98577c-17.99704,-4.62608 -47.30141,-3.16897 -61.44969,3.05553l-13.26538,5.83627l9.31132,9.7189c5.12125,5.34554 8.02238,10.51565 6.44702,11.48924c-1.57542,0.97362 -20.7427,2.87124 -42.59392,4.21677c-32.78424,2.01891 -39.72768,1.62653 -39.71874,-2.24516zm168.81314,144.07051l-14.20186,-18.81009l12.93088,-12.50398c13.30882,-12.86928 22.90733,-30.93761 27.13603,-51.08145l2.41319,-11.49524l-13.91847,2.22554c-7.65517,1.22421 -13.96558,1.06514 -14.02313,-0.35333c-0.26878,-6.62247 36.12752,-71.90508 39.66528,-71.14616c5.56261,1.19325 61.9985,50.07314 61.9985,53.6975c0,1.61765 -5.93121,3.88967 -13.18036,5.04884l-13.18039,2.10753l-1.30084,22.476c-1.66846,28.82635 -16.85831,62.09589 -38.00682,83.24434c-8.4704,8.47049 -16.91487,15.4008 -18.76544,15.4008c-1.85062,0 -9.75555,-8.46469 -17.56657,-18.81029zm-128.20031,52.72328c0,-2.07986 2.23119,-8.0961 4.95819,-13.36954c4.94765,-9.56766 4.91901,-9.61411 -13.52617,-21.86105c-28.85884,-19.16116 -50.30965,-53.17105 -57.05687,-90.46291l-2.21202,-12.22588l15.77176,-2.16168c32.51166,-4.45622 32.80855,-4.32152 39.31982,17.83711c4.39381,14.95265 9.79779,23.91347 21.44681,35.56244c8.5651,8.56514 16.76965,14.83324 18.23236,13.92926c1.46265,-0.90396 3.57973,-6.24536 4.70464,-11.86984c1.1249,-5.62448 3.47056,-10.22638 5.21256,-10.22638c3.99942,0 41.66188,59.38374 42.2598,66.63249c0.39931,4.84137 -19.96001,13.22382 -73.01952,30.06421c-3.38333,1.07379 -6.09135,0.25229 -6.09135,-1.84824z",
+	"turn_reverse": "m298.99997,168.62498c0,-51.43148 -133.41916,-93.12499 -297.99997,-93.12499l0,-74.49999l0,0c164.58081,0 297.99997,41.69347 297.99997,93.12499l0,74.49999c0,42.46484 -91.92749,79.55168 -223.49998,90.16789l0,37.25l-74.49999,-71.54289l74.49999,-77.45709l0,37.25l0,0c88.72033,-7.15858 161.96952,-26.67409 198.62153,-52.91789",
+	"u_turn": "m1.00059,299.00055l0,-167.62497l0,0c0,-72.00411 58.37087,-130.37499 130.375,-130.37499l0,0l0,0c34.57759,0 67.73898,13.7359 92.18906,38.18595c24.45006,24.45005 38.18593,57.61144 38.18593,92.18904l0,18.625l37.24997,0l-74.49995,74.50002l-74.50002,-74.50002l37.25,0l0,-18.625c0,-30.8589 -25.0161,-55.87498 -55.87498,-55.87498l0,0l0,0c-30.85892,0 -55.875,25.01608 -55.875,55.87498l0,167.62497z",
+	"up": "m1.49805,149.64304l148.50121,-148.00241l148.50121,148.00241l-74.25061,0l0,148.71457l-148.5012,0l0,-148.71457z",
+	"3_ways": "m1,159.61292l52.87097,-52.87097l0,26.43549l69.69355,0l0,-79.30646l-26.43549,0l52.87096,-52.87097l52.87097,52.87097l-26.43549,0l0,79.30646l69.69356,0l0,-26.43549l52.87096,52.87097l-52.87096,52.87097l0,-26.43549l-192.25807,0l0,26.43549l-52.87097,-52.87097z",
+	
+	"maximize_2": "m1,149.99998l67.05,-67.05l0,33.52501l48.425,0l0,-48.425l-33.52501,0l67.05,-67.05l67.04999,67.05l-33.52499,0l0,48.425l48.42502,0l0,-33.52501l67.04997,67.05l-67.04997,67.04999l0,-33.52499l-48.42502,0l0,48.42502l33.52499,0l-67.04999,67.04997l-67.05,-67.04997l33.52501,0l0,-48.42502l-48.425,0l0,33.52499l-67.05,-67.04999z",
+	"raph_download": "m149.92238,36.82233c-65.72484,0 -119.00005,53.27818 -119.00005,119c0,65.72183 53.27521,119 119.00005,119c65.7218,0 118.99995,-53.27817 118.99995,-119c0,-65.72182 -53.27815,-119 -118.99995,-119zm0,223.73889c-12.68407,0 -22.97548,-10.28841 -22.97548,-22.97537s10.28215,-22.97583 22.97548,-22.97583c12.69009,0 22.97223,10.28247 22.97223,22.97583s-10.28214,22.97537 -22.97223,22.97537zm0,-63.08578l-64.34113,-53.72815l28.40379,0l0,-71.87465l71.88103,0l0,71.87465l28.39413,0l-64.33783,53.72815z"
+	}
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/dialog_balloon.json
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/dialog_balloon.json	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/dialog_balloon.json	(revision 29468)
@@ -0,0 +1,14 @@
+{"data": {
+	"1": "m0.99786,35.96579l0,0c0,-19.31077 15.28761,-34.96524 34.14583,-34.96524l15.52084,0l0,0l74.50001,0l139.68748,0c9.05606,0 17.74118,3.68382 24.14478,10.24108c6.40356,6.55726 10.00107,15.45081 10.00107,24.72416l0,87.41311l0,0l0,52.44785l0,0c0,19.31078 -15.2876,34.96524 -34.14584,34.96524l-139.68748,0l-97.32507,88.90848l22.82506,-88.90848l-15.52084,0c-18.85822,0 -34.14583,-15.65446 -34.14583,-34.96524l0,0l0,-52.44785l0,0z",
+	"4": "m1,1l49.66667,0l0,0l74.5,0l173.83334,0l0,115.8889l0,0l0,49.66666l0,33.11111l-173.83334,0l-123.68433,97.37498l49.18433,-97.37498l-49.66667,0l0,-33.11111l0,-49.66666l0,0z",
+	"5": "m3.88165,296.34811l58.64952,-105.30074l0,0c-62.13446,-31.76456 -79.86445,-91.6022 -40.96117,-138.24044c38.90255,-46.63797 121.70818,-64.81269 191.29914,-41.98796c69.59094,22.8246 103.19446,79.17835 77.63046,130.19172c-25.56265,51.01335 -101.92546,79.99094 -176.41714,66.94487l-110.20081,88.39255z",
+	"6": "m4.33333,266.6662c0,-1.854 2.23757,-3.35571 5,-3.35571c2.76243,0 5,1.50171 5,3.35571c0,1.85394 -2.23757,3.35565 -5,3.35565c-2.76243,0 -5,-1.50171 -5,-3.35565zm10.25,-24.11072c0,-4.6351 5.59392,-8.38943 12.50001,-8.38943c6.90608,0 12.5,3.75433 12.5,8.38943c0,4.63489 -5.59392,8.38928 -12.5,8.38928c-6.90609,0 -12.50001,-3.75433 -12.50001,-8.38928zm23.75001,-36.55524c0,-12.81482 19.46685,-23.19473 43.50002,-23.19473c24.0331,0 43.49996,10.37991 43.49996,23.19473c0,12.81473 -19.46686,23.19455 -43.49996,23.19455c-24.03317,0 -43.50002,-10.37982 -43.50002,-23.19455zm-37.33334,-104.99994c0,-55.2486 66.67956,-100 149,-100c82.32047,0 149,44.7514 149,100c0,55.24866 -66.67953,100 -149,100c-82.32044,0 -149,-44.75134 -149,-100z",
+	"scream": "m299.67374,132.67729l-35.72574,1.97192l-9.55817,48.04506l-31.60561,-11.61551l-45.83566,36.86661l-17.45096,-21.51509l-146.98414,92.00807l81.6677,-102.60858l-67.83573,-13.33963l21.22697,-19.84731l-46.57336,-36.42733l33.47025,-8.80944l-10.52427,-47.94958l35.08694,5.02536l28.86619,-44.2482l25.5638,17.26465l59.09183,-26.49832l7.92432,24.02253l70.55626,-0.33542l-12.23108,23.15343l59.61954,25.93398l-28.50317,14.93327l29.75409,43.96953z",
+	"thought": "m12,1c-6.094,0 -11,4.906 -11,11l0,147c0,6.09399 4.906,11 11,11l49.15625,0c-2.03143,2.32526 -3.15625,4.84886 -3.15625,7.5c0,11.32597 20.36188,20.5 45.5,20.5c25.13812,0 45.5,-9.17403 45.5,-20.5c0,-2.65114 -1.12482,-5.17474 -3.15625,-7.5l142.15625,0c6.09399,0 11,-4.90601 11,-11l0,-147c0,-6.094 -4.90601,-11 -11,-11l-276,0zm54,199c-13.81215,0 -25,5.37016 -25,12c0,6.62984 11.18785,12 25,12c13.81216,0 25,-5.37016 25,-12c0,-6.62984 -11.18784,-12 -25,-12zm-25,30c-7.73481,0 -14,4.02762 -14,9c0,4.97238 6.26519,9 14,9c7.73481,0 14,-4.02762 14,-9c0,-4.97238 -6.26519,-9 -14,-9zm-24,22c-4.97238,0 -9,2.23756 -9,5c0,2.76242 4.02762,5 9,5c4.97238,0 9,-2.23758 9,-5c0,-2.76244 -4.02762,-5 -9,-5z",
+	  "raph_chat": "m149.40149,33.90986c-80.3511,0 -145.50004,43.31243 -145.50004,96.74474c0,30.56227 21.38675,57.79297 54.68462,75.51593c-4.73782,15.71271 -14.19292,33.11575 -32.46717,48.50804c0,0 42.65602,-2.82466 72.78463,-33.39108c1.7345,0.42561 3.52987,0.74596 5.28078,1.13896c-1.64549,-4.91217 -2.61422,-10.01866 -2.61422,-15.33182c0,-36.04973 40.11905,-64.27756 91.35863,-64.27756c36.80342,0 67.77124,14.61842 82.34897,36.18755c12.40991,-14.23764 19.62378,-30.72852 19.62378,-48.3623c0,-53.42003 -65.14893,-96.73246 -145.49997,-96.73246zm124.25104,173.19301c0,-29.63838 -36.13483,-53.68361 -80.73599,-53.68361c-44.57683,0 -80.73203,24.04523 -80.73203,53.68361c0,29.65428 36.1552,53.68753 80.73203,53.68753c9.87251,0 19.27516,-1.23618 28.01714,-3.39209c16.71373,16.96906 40.38206,18.52942 40.38206,18.52942c-10.13583,-8.54349 -15.3721,-18.19742 -18.00662,-26.92308c18.46475,-9.82388 30.34341,-24.93292 30.34341,-41.90178z",
+	  "raph_bubble": "m151.46498,38.88166c-77.59646,0 -140.49998,47.18048 -140.49998,105.37873c0,19.88803 7.43651,38.46727 20.23268,54.33186l-20.23268,44.35922l56.33016,-14.46355c23.47343,13.21898 52.55724,21.14758 84.16982,21.14758c77.59654,0 140.50002,-47.18053 140.50002,-105.37512c0,-58.19824 -62.90347,-105.37873 -140.50002,-105.37873z",
+    "raph_codetalk": "m151.43494,41.81969c-77.0443,0 -139.49994,46.84459 -139.49994,104.6212c0,19.74286 7.38358,38.19347 20.08679,53.95245l-20.08679,44.03983l55.92923,-14.34583c23.30623,13.10641 52.18307,20.98224 83.5707,20.98224c77.04425,0 139.50006,-46.84476 139.50006,-104.62869s-62.45581,-104.6212 -139.50006,-104.6212zm-22.87875,144.79852l-23.29687,23.27774l-64.06922,-64.0787l64.05966,-64.09371l23.30643,23.33098l-40.76296,40.76273l40.76296,40.80096zm70.45883,23.24741l-23.28729,-23.30817l40.77419,-40.75514l-40.77419,-40.77059l23.28729,-23.30818l64.06931,64.03304l-64.06931,64.10904z",
+    "raph_talkq": "m151.95413,37.83469c-77.87229,0 -140.99913,47.34782 -140.99913,105.75328c0,19.94707 7.46298,38.60376 20.30468,54.52449l-20.30468,44.51276l56.5302,-14.49918c23.55888,13.25453 52.74399,21.2072 84.46893,21.2072c77.87204,0 141.00085,-47.3481 141.00085,-105.74527s-63.12881,-105.75328 -141.00085,-105.75328zm8.74214,165.54159l-19.83006,0l0,-19.02583l19.83006,0l0,19.02583zm-0.96628,-33.04105l-17.89746,0l-1.77126,-81.41087l21.28053,0l-1.61182,81.41087z",
+    "raph_talke": "m151.46997,37.82469c-78.14881,0 -141.49997,47.50852 -141.49997,106.12126c0,20.02579 7.4895,38.74088 20.37584,54.71835l-20.37584,44.67868l56.73113,-14.55873c23.6405,13.30168 52.9314,21.29042 84.76884,21.29042c78.149,0 141.50003,-47.51628 141.50003,-106.12872s-63.35103,-106.12126 -141.50003,-106.12126zm9.92621,166.12944l-19.90253,0l0,-19.09268l19.90253,0l0,19.09268zm0,-39.48112l0,6.31543l-19.90253,0l0,-7.77286c0,-23.45735 26.69424,-27.17406 26.69424,-43.83023c0,-7.60336 -6.79172,-13.43297 -15.69612,-13.43297c-9.21872,0 -17.31352,6.79367 -17.31352,6.79367l-11.32195,-14.0807c0,0 11.15999,-11.65153 30.41292,-11.65153c18.29469,0 35.27467,11.32766 35.27467,30.41285c0.0097,26.71156 -28.14772,29.78053 -28.14772,47.24634z"
+	}
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/flowchart.json
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/flowchart.json	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/flowchart.json	(revision 29468)
@@ -0,0 +1,20 @@
+{"data": {
+	"manual_input": "m1,103.64394l298,-30.9037l0,154.51852l-298,0z",
+	"callout_left_right": "m1,150.0006l58.10869,-58.1087l0,29.05434l46.81141,0l0,-87.16304l87.1598,0l0,87.16304l46.8114,0l0,-29.05434l58.1087,58.1087l-58.1087,58.10869l0,-29.05435l-46.8114,0l0,87.16306l-87.1598,0l0,-87.16306l-46.81141,0l0,29.05435l-58.10869,-58.10869z",
+	"card": "m1,60.5l59.5,-59.5l238.5,0l0,298l-298,0l0,-238.5z",
+	"collate": "m0,1l299,0l-149.5,149l149.5,149l-299.00031,0l149.50031,-149l-149.5,-149z",
+		"terminal": "m48.94167,99.12235l202.11729,0l0,0c26.47794,0 47.9425,22.7794 47.9425,50.8792c0,28.09979 -21.46457,50.87918 -47.9425,50.87918l-202.11729,0l0,0c-26.47791,0 -47.9425,-22.77939 -47.9425,-50.87918c0,-28.09981 21.46459,-50.8792 47.9425,-50.8792z",
+	"connector_offpage": "m0.99775,0.99775l297.99984,0l0,238.39982l-149.00002,59.60002l-148.99999,-59.60002l0.00017,-238.39982z",
+	"data_stored": "m50.83397,0.99813l249.16667,0c-27.52219,0 -49.83333,66.78392 -49.83333,149.16604c0,82.38213 22.31114,149.16603 49.83333,149.16603l-249.16667,0l0,0c-27.52219,0 -49.83333,-66.78391 -49.83333,-149.16603c0,-82.38212 22.31114,-149.16604 49.83333,-149.16604z",
+	"data": "m1.00038,249.33351l59.60001,-198.66668l238.40001,0l-59.60001,198.66668z",
+	"decision": "m0.99837,149.99953l148.79352,-102.86476l148.79387,102.86476l-148.79387,102.86476l-148.79352,-102.86476z",
+	"delay": "m1,1l149,0l0,0c82.29044,0 149,66.70957 149,149c0,82.29044 -66.70956,149 -149,149l-149,0z",
+	"display": "m1,149.99924l49.66672,-97.42307l198.66612,0c27.43034,0 49.66716,43.61774 49.66716,97.42307c0,53.80476 -22.23682,97.42308 -49.66716,97.42308l-198.66612,0l-49.66672,-97.42308z",
+	"document": "m1.00064,1.00098l298,0l0,242.19891c-149,0 -149,92.28223 -298,39.84915z",
+	"or_junction": "m0.99865,149.9991l0,0c0,-82.29043 66.70957,-149 149.00001,-149l0,0c39.51724,0 77.41597,15.69817 105.3589,43.64109c27.94292,27.94292 43.64107,65.84166 43.64107,105.35891l0,0c0,82.29041 -66.70956,148.99998 -148.99997,148.99998l0,0c-82.29044,0 -149.00001,-66.70958 -149.00001,-148.99998zm149.00001,-149l0,297.99998m-149.00001,-148.99998l297.99998,0",
+	"preparation": "m1.00063,150.00006l59.58485,-82.24058l178.75446,0l59.58505,82.24058l-59.58505,82.24086l-178.75446,0l-59.58485,-82.24086z",	"sequential_data_storage": "m150,299l0,0c-82.29043,0 -149,-66.70955 -149,-149l0,0c0,-82.29043 66.70957,-149 149,-149l0,0c39.51726,0 77.41599,15.69817 105.3589,43.64108c27.94292,27.94293 43.6411,65.84165 43.6411,105.35892l0,0c0,39.51726 -15.69818,77.41599 -43.6411,105.3589l43.6411,0l0,43.6411z",
+	"sort": "m-0.0038,150.00102l299.00334,0m-299.00334,-0.00002l149.50209,-150.00059l149.50131,150.00059l-149.50131,150.00018l-149.50209,-150.00018z",
+	"punched_tape": "m1.00047,30.80047l0,0c0,16.45808 33.35479,29.8 74.50001,29.8c41.1452,0 74.49998,-13.34192 74.49998,-29.8l0,0c0,-16.45809 33.3548,-29.8 74.50002,-29.8c41.14522,0 74.49998,13.34192 74.49998,29.8l0,238.4c0,-16.45808 -33.35477,-29.80002 -74.49998,-29.80002c-41.14522,0 -74.50002,13.34193 -74.50002,29.80002c0,16.45807 -33.35478,29.79999 -74.49998,29.79999c-41.14522,0 -74.50001,-13.34192 -74.50001,-29.79999z",
+	"wave": "m1,37.20809c99.33355,-125.42461 198.66708,125.4246 298.00061,0l0,225.76426c-99.33353,125.42462 -198.66706,-125.42459 -298.00061,0z"
+	}
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/game.json
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/game.json	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/game.json	(revision 29468)
@@ -0,0 +1,13 @@
+{"data": {
+	"cards_clubs": "m107.57338,275.50809c15.10838,-15.77673 27.93053,-34.56763 33.34637,-55.90254c-16.19595,12.31328 -31.05006,32.11845 -53.64258,31.36813c-17.05595,0.97891 -37.37346,0.99548 -49.37947,-13.26945c-26.83,-21.5751 -34.03729,-64.69673 -12.00568,-92.15404c15.07669,-19.82526 41.4039,-28.23172 65.56467,-25.25816c15.22319,-6.45935 -2.97749,-22.81502 -4.80785,-33.02267c-11.33012,-37.02704 15.36169,-81.44029 54.60988,-85.70572c28.15103,-4.0415 55.67099,14.18231 69.44571,37.83293c7.4856,16.54877 3.58533,35.33045 1.83887,52.49866c-5.88113,8.62766 -20.94342,29.50022 0.55099,27.85616c21.2518,-0.33633 43.69397,5.90277 57.70761,22.8026c20.49747,22.76067 22.37766,60.37286 1.7551,83.63007c-10.90869,14.16582 -27.2782,25.50356 -45.80551,24.87234c-18.13391,1.83067 -37.77023,-2.10338 -50.62924,-15.92061c-5.48438,-3.84309 -18.92297,-18.36311 -18.91833,-15.17883c13.43222,27.98354 28.62112,57.04413 55.49167,74.38477c9.60062,7.71954 -14.62323,2.41226 -20.4874,3.98563c-35.53012,0.0314 -71.06009,0.06342 -106.59021,0.09497c7.31842,-7.63818 14.6373,-15.27603 21.9554,-22.91422z",
+	"cards_diamonds": "m34.92883,153.9321c25.56111,-56.62673 71.64644,-104.95768 110.85236,-152.92286c45.60773,30.78102 85.01025,98.49872 119.29071,145.66264c-30.57587,54.55344 -74.58923,104.23671 -114.23947,153.1615c-42.74368,-44.7616 -79.29648,-95.90262 -115.90359,-145.90128z",
+	"cards_hearts": "m106.76112,245.09012c-77.74644,-57.80281 -105.54389,-94.36783 -105.76917,-139.13003c-0.20544,-40.80623 34.10907,-80.19025 69.67002,-79.96313c17.75755,0.11364 55.84863,15.13257 69.33681,27.33919c6.79614,6.1504 10.01512,5.54391 25.146,-4.73779c41.17987,-27.98239 81.39243,-28.56973 107.43585,-1.56907c41.62292,43.15273 34.04501,94.68497 -21.78392,148.13782c-29.68187,28.41864 -94.50056,78.8349 -101.35565,78.8349c-2.08591,0 -21.29187,-13.01038 -42.67994,-28.9119z",
+	"cards_spades": "m92.84135,287.13989c18.3756,-17.73279 31.81261,-40.18849 43.07161,-62.94162c6.87787,-9.075 0.36623,-17.01425 -9.00183,-9.3188c-24.07579,16.07495 -56.84848,21.58751 -82.91551,6.92194c-29.46779,-15.23779 -42.75618,-51.47162 -36.07021,-83.04361c4.23415,-31.99545 27.52112,-57.07481 52.80524,-75.08997c29.04437,-20.7771 60.40868,-38.61331 86.95355,-62.67224c11.08365,0.22219 19.42508,17.61496 31.35349,22.21747c31.67316,23.59131 69.20874,40.95643 94.15042,72.50237c12.60098,17.9752 19.78281,40.10946 20.58459,61.98948c-3.83926,29.67093 -21.5314,60.96272 -52.04169,69.41241c-26.37521,7.98038 -53.51129,-2.14038 -76.49545,-15.01619c-2.80743,-0.60251 -13.10471,-8.7151 -9.02362,-2.41039c13.74066,28.19803 28.79581,56.19804 50.59952,79.09325c1.28156,2.89285 11.33243,9.75613 5.98334,9.64709c-44.76935,0 -89.53856,0 -134.30794,0c4.78471,-3.7637 9.5696,-7.5275 14.35449,-11.2912z",
+	"chess_bishop": "m61.92021,296.91153c0.43627,-9.82327 20.22808,-4.98053 9.33225,-14.55078c3.63447,-11.80536 14.91982,-19.66748 21.741,-29.79436c5.22913,-8.62125 17.00826,-19.01086 11.31252,-29.67047c-10.46021,-5.58662 -7.49181,-18.00824 5.30239,-15.28014c8.2272,-7.58801 8.79371,-20.26302 11.57766,-30.59467c2.52694,-12.36574 4.07327,-24.95554 3.66998,-37.5896c-14.99698,0.03661 -30.27584,-0.68196 -44.73978,-4.74928c2.8019,-11.20453 20.86148,-8.79659 28.26084,-15.67982c-6.87532,-6.18329 13.89957,-5.56496 8.46355,-15.34472c-0.37302,-11.20033 -9.19685,-14.44135 -16.26585,-22.60765c-9.44371,-12.76132 5.36173,-25.51221 13.58463,-34.13964c9.16566,-9.37672 19.64847,-19.36716 22.45389,-32.62941c-3.77451,-3.10155 -12.3967,-7.54239 -3.59866,-11.78228c12.01596,-2.03703 24.83499,-2.28521 36.61118,1.05654c7.81644,7.61585 -11.93045,8.03119 -3.43417,17.63365c10.07373,12.07176 -3.50795,18.30174 -11.52704,25.27969c-4.66763,5.89621 -18.59915,13.67189 -16.20224,19.78346c13.63968,-0.47554 21.5871,-13.67976 31.31615,-21.49704c10.67101,-13.68708 20.99446,8.43092 27.81822,15.94714c8.40642,11.39094 2.60674,26.70086 -10.05556,31.59287c-6.28001,6.46729 -10.44972,24.88914 4.57674,22.14657c8.72636,3.17196 -8.52979,3.51371 1.37608,6.446c6.58298,2.52787 32.25821,8.30554 18.1142,16.0547c-12.00471,2.71368 -24.40523,2.6017 -36.6002,1.50584c-0.75204,18.52477 1.89484,36.97644 7.35446,54.6958c1.35513,5.04123 2.71027,10.08244 4.06541,15.12361c6.52129,-0.129 19.98573,-1.55484 13.76321,9.18311c-13.08994,7.21928 -5.0789,22.41203 2.17738,31.05447c8.99446,11.37192 22.40833,22.01788 22.98288,37.58719c3.59734,2.14404 15.56946,8.03415 12.10645,12.64545c-57.30759,-0.2937 -114.6481,0.84897 -171.9265,-1.25046l-1.98901,-0.18246l-1.62205,-0.39337l0,0z",
+	"chess_king": "m75.6993,294.60599c-8.08068,-9.43317 12.65705,-9.68567 9.39906,-20.14252c5.95673,-13.85672 21.44485,-22.24414 23.72572,-37.99019c-6.28166,-4.37628 -9.89445,-14.96013 2.0899,-13.70361c8.78859,-6.61539 7.6902,-20.15297 10.33321,-30.0876c2.47588,-16.03471 3.03656,-32.26408 4.10001,-48.43053c-10.16894,-0.78108 -20.58942,-0.23701 -30.49778,-2.84268c0.28501,-10.75136 20.44619,-6.62604 21.3638,-16.77121c14.65907,-0.2649 0.81196,-22.15992 -5.15776,-27.38371c-7.64118,-8.81222 -12.7306,-22.72323 -6.92168,-33.60618c8.30865,-5.52043 27.09519,-2.1601 26.24604,-16.66769c-5.65058,-3.22095 -12.82484,-1.17552 -19.15805,-1.74514c0.38948,-6.7649 0.77895,-13.52979 1.16843,-20.29469c8.37558,-0.64424 16.75118,-1.28853 25.12676,-1.93283c-4.25133,-4.41846 -10.61392,-7.6702 -12.20608,-13.92034c5.41558,-8.90246 18.46751,-8.1166 27.81776,-8.03243c9.09207,-0.62713 25.66919,5.43749 13.27614,15.20592c-1.00447,2.39887 -10.78024,8.36352 -4.73895,7.71326c7.73515,0 15.47028,0 23.20541,0c-0.02223,6.6133 -0.20001,13.29232 1.35312,19.76423c-5.90448,4.39723 -25.05112,-3.75612 -19.59946,9.81149c6.13853,5.67249 15.53992,5.52279 23.32581,8.02098c4.54138,0.45371 8.15405,1.63713 6.5175,6.94557c0.85359,9.85596 -1.63307,19.77049 -8.40776,27.25217c-4.79567,7.80693 -15.56667,17.58031 -12.3781,26.61691c6.03265,-0.98199 10.87871,2.97905 6.06032,7.43356c4.94479,3.66121 22.35728,2.82278 18.59119,11.98875c-8.82205,2.92029 -18.29916,1.70366 -27.45192,2.00166c2.43703,25.01987 5.80666,50.04211 11.43709,74.54305c3.28979,5.43672 16.35808,9.61523 5.63309,16.70296c-4.00256,13.19919 8.78183,23.08223 16.81097,31.55379c8.82797,6.61176 4.54482,19.91519 17.0338,22.03693c9.83562,9.52774 -13.5036,9.27408 -19.49568,9.29486c-39.66827,0.42773 -79.37933,1.02615 -119.03208,-0.25211c-3.24605,-0.40967 -7.25645,-0.31595 -9.56982,-3.08264z",
+	"chess_knight": "m100.17753,299.2356c-10.0382,0.34137 -24.72987,-4.84531 -14.46609,-16.41525c11.17445,-4.40472 -1.98608,-19.00409 9.21265,-25.88123c8.98889,-12.79953 21.20518,-24.48807 24.89179,-40.11865c-0.57252,-10.60066 -13.22608,-16.87427 -7.18922,-28.60765c-5.92265,-18.77635 -4.55389,-40.38806 6.25748,-57.26643c9.18032,-15.67659 20.32635,-32.28713 19.15084,-51.25797c-11.5139,4.80804 -23.70148,9.0206 -36.37307,6.83708c-11.91311,-1.1064 -22.59742,8.54017 -34.74928,3.29494c-12.31807,-2.55921 -19.64501,-19.02957 -10.4606,-28.65753c10.03679,-8.57325 24.78339,-8.84916 34.35549,-18.41713c12.62932,-10.46186 24.31081,-24.61204 41.71716,-26.46155c7.69322,-1.76131 10.99294,-9.49197 15.25148,-15.2854c3.53894,9.18849 9.69408,17.31353 18.95801,21.387c18.83824,10.9118 23.5276,33.98066 30.47462,52.94444c5.13654,14.85179 9.41592,30.35814 18.01733,43.6171c0.09145,6.36343 -9.56343,9.05308 -3.04225,16.51302c3.39153,20.2325 3.53752,40.95071 3.23686,61.41966c-5.72005,10.01691 -10.93028,21.19722 -3.29993,32.69295c5.09689,14.05096 17.7905,23.26645 24.03563,36.52565c3.53024,6.8656 -6.88226,16.83319 6.09091,15.10654c11.84755,6.2681 2.28101,21.56821 -9.50232,17.11713c-44.15834,1.12289 -88.41394,2.24417 -132.5675,0.9133z",
+	"chess_pawn": "m76.17518,297.98557c-10.50418,1.59836 -25.59558,-8.37918 -12.29734,-17.44669c11.25366,-5.8967 0.45475,-21.25174 12.35514,-28.71019c12.10069,-16.52 24.98341,-33.40712 31.01369,-53.22789c-0.84142,-9.49573 -19.64921,-25.21422 -0.595,-28.29408c15.7114,1.82648 9.96503,-21.69583 15.39529,-31.88779c3.26528,-15.46995 5.63882,-31.19783 5.05293,-47.04268c-10.94164,-0.30554 -22.10724,0.96841 -32.83411,-1.63306c-6.84238,-8.98132 15.45903,-13.45317 19.13895,-21.55999c7.72121,-11.65172 -11.3031,-24.52544 -3.15941,-38.29919c5.20168,-20.85055 29.26575,-34.36854 49.62741,-26.73076c21.08499,5.46792 36.67119,30.37529 26.64961,51.09357c-0.80009,3.99703 -7.062,9.17959 -4.97066,12.36269c9.12987,6.33601 19.70087,11.85771 25.48528,21.64108c-8.18987,5.93826 -21.89375,1.4159 -32.1122,4.23674c-9.29645,8.24593 -0.11353,25.10609 0.36266,36.41936c2.90009,12.9261 5.46037,25.96617 8.78381,38.77452c6.98657,2.72525 21.33679,5.88095 13.4649,17.20207c-11.22217,9.11032 -5.7289,23.62137 0.60231,33.84465c7.87996,15.78793 21.40668,27.84862 29.69345,43.27188c3.07736,7.12057 -7.92374,19.7316 5.78708,16.78259c14.86404,3.15744 5.96938,23.76761 -7.3875,18.8981c-49.21407,1.73288 -98.52922,2.43631 -147.74446,0.51953l-2.31185,-0.21448l0,0z",
+	"chess_queen": "m59.54884,298.46313c-11.18457,2.51251 -19.80814,-14.30008 -5.94004,-16.129c12.20336,0.23074 -3.0349,-11.94995 7.98012,-16.05304c12.67021,-12.36537 25.23749,-25.26018 33.3575,-41.17609c-4.09126,-5.42482 -10.84344,-10.60782 -9.96117,-18.03085c7.964,-2.71161 19.82806,-0.87375 20.29981,-13.44502c7.24239,-22.68985 9.1741,-46.67986 10.76167,-70.3136c-7.99255,-6.33596 -24.45116,-0.33371 -35.62089,-3.56097c-16.94488,-4.5746 6.31873,-13.33291 13.78075,-12.6113c6.70493,0.01006 16.63324,-4.12222 5.41084,-7.2804c9.46686,-0.43687 23.08297,-12.44518 7.51486,-16.77373c11.54188,-8.28655 2.64816,-26.31929 -2.17102,-36.68976c-7.265,-12.52285 -19.21146,-21.59242 -32.71435,-26.42871c-2.18616,-12.77 18.63421,-8.99565 27.07909,-9.65835c12.78728,0.48775 25.82639,-0.15282 36.96732,-7.11507c15.05278,-6.96464 27.8495,4.65901 41.61934,7.11611c13.92807,0.89699 28.41634,-2.50577 41.97807,1.44028c4.20209,2.98911 11.18788,7.71034 2.77457,9.97613c-16.06789,8.94404 -31.07338,22.15693 -35.10127,40.92605c-6.0766,10.44077 4.6955,19.50048 -5.15381,26.98807c-0.10249,8.80961 22.85634,10.04067 10.00395,14.37878c8.80815,4.77542 27.69864,1.76332 29.62625,12.3696c-7.99612,6.2903 -19.2092,3.80788 -28.79007,4.39512c-3.2489,1.10706 -11.41316,-2.70125 -10.17032,2.89742c-0.6366,25.08775 5.87923,49.75521 12.1806,73.83221c0.00804,11.79608 29.09497,5.10777 12.92737,18.49597c-11.94247,10.28146 5.56685,24.68452 11.63272,33.82986c8.25099,10.03221 22.89711,15.11021 21.67468,29.8362c8.40468,0.60507 18.40166,13.69095 6.78131,16.95151c-62.8902,1.31946 -125.82766,2.22778 -188.72791,1.83258z",
+	"chess_rock": "m70.40736,299.11804c-15.60727,2.87628 -15.90823,-19.81082 -1.8931,-20.53482c-4.2011,-9.73361 -0.98556,-21.67557 5.22356,-30.68398c8.90442,-15.05035 22.29623,-30.00999 19.52936,-48.8515c-0.95786,-9.8022 -13.10349,-27.37677 5.72565,-24.85997c5.09087,-9.77498 2.13017,-24.16621 5.9483,-35.39389c3.33424,-21.28385 10.75552,-43.9948 2.86147,-65.09612c-4.97705,-11.23243 -17.62387,-18.62589 -16.26645,-32.35733c-1.42947,-13.39034 -0.95647,-26.88279 0.60455,-40.23392c6.07738,0.50975 12.84039,-1.27954 18.38155,1.475c-0.04153,12.96106 12.26991,10.08973 10.7935,-0.92486c3.23881,-1.28251 8.60017,-0.18413 12.6562,-0.55014c18.03256,0 36.06522,0 54.09778,0c-2.06311,7.51434 3.5195,17.19948 10.5887,8.35272c-1.93379,-11.75267 14.25911,-7.86334 10.37854,2.24694c0.22855,13.39515 1.87041,27.25403 -1.89201,40.29753c-6.12787,5.2086 -6.22449,15.45995 -13.90137,21.60233c-6.16908,11.51656 -3.45045,25.43306 -2.7644,37.9428c2.61279,18.51363 6.92676,36.79671 8.00221,55.52328c-0.76923,10.18126 20.18948,7.18474 11.15244,19.71645c-9.87662,8.41151 -4.0954,22.61668 -0.18413,32.66171c7.71916,17.36203 23.99019,32.95758 21.5343,53.32025c-1.94743,8.89606 14.16618,5.88821 9.97758,17.34372c-0.12151,14.11871 -21.10172,5.04239 -30.39526,8.00793c-46.7146,0.56656 -93.44374,1.44144 -140.159,0.99585z"
+	}
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/math.json
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/math.json	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/math.json	(revision 29468)
@@ -0,0 +1,8 @@
+{"data": {
+	"divide": "m150,0.99785l0,0c25.17819,0 45.58916,20.41097 45.58916,45.58916c0,25.17821 -20.41096,45.58916 -45.58916,45.58916c-25.17822,0 -45.58916,-20.41093 -45.58916,-45.58916c0,-25.1782 20.41093,-45.58916 45.58916,-45.58916zm0,296.25203c-25.17822,0 -45.58916,-20.41095 -45.58916,-45.58917c0,-25.17819 20.41093,-45.58916 45.58916,-45.58916c25.17819,0 45.58916,20.41096 45.58916,45.58916c0,25.17822 -20.41096,45.58917 -45.58916,45.58917zm-134.06754,-193.71518l268.13507,0l0,91.17833l-268.13507,0z",
+	"minus": "m0.99887,102.39503l297.49445,0l0,95.2112l-297.49445,0z",
+	"not_equal": "m40.81188,62.2131l103.7978,0l22.27972,-61.2131l65.67503,23.90375l-13.5795,37.30935l40.20317,0l0,69.88993l-65.64099,0l-12.71893,34.94495l78.35992,0l0,69.88991l-103.79779,0l-22.27972,61.21309l-65.67503,-23.90378l13.57949,-37.30933l-40.20319,0l0,-69.88991l65.64102,0l12.71894,-34.94498l-78.35995,0z",
+	"times": "m1.00089,73.36786l72.36697,-72.36697l76.87431,76.87368l76.87431,-76.87368l72.36765,72.36697l-76.87433,76.87431l76.87433,76.87431l-72.36765,72.36765l-76.87431,-76.87433l-76.87431,76.87433l-72.36697,-72.36765l76.87368,-76.87431l-76.87368,-76.87431z",
+	"plus": "m1.00211,102.40185l101.39974,0l0,-101.39975l95.45412,0l0,101.39975l101.3997,0l0,95.45412l-101.3997,0l0,101.3997l-95.45412,0l0,-101.3997l-101.39974,0z"
+	}
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/misc.json
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/misc.json	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/misc.json	(revision 29468)
@@ -0,0 +1,6 @@
+{"data": {
+	
+
+
+	}
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/music.json
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/music.json	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/music.json	(revision 29468)
@@ -0,0 +1,21 @@
+{"data": {
+	"clef_alto": "m51.25065,150.28749c0,-49.53207 0,-99.06413 0,-148.5962c11.59261,0 23.18523,0 34.77784,0c0,99.06413 0,198.12827 0,297.1924c-11.59261,0 -23.18522,0 -34.77784,0c0,-49.53209 0,-99.06413 0,-148.59621zm51.37634,0c0,-49.53207 0,-99.06413 0,-148.5962c8.48285,-2.46703 12.93837,1.84261 11.08508,10.0007c0.12527,45.40251 0.25053,90.80502 0.37581,136.20751c21.44767,-15.32626 29.57346,-41.86327 36.21976,-66.10667c3.81448,15.78812 9.88112,35.01518 27.29865,40.16045c16.60112,4.98381 31.30354,-10.63891 31.13045,-26.64445c2.89955,-20.45341 3.30077,-41.70258 -1.14742,-61.93042c-4.16455,-12.79745 -16.64639,-23.36595 -30.52771,-22.52039c-11.42384,-5.25948 -24.23628,10.96936 -9.59547,16.90924c12.31264,13.08186 -1.99968,35.47687 -19.11742,30.23324c-16.59583,-3.55596 -21.00951,-25.43777 -11.40723,-37.80838c13.77419,-17.97563 39.16574,-20.24264 60.03438,-17.62625c27.15413,3.08944 47.80745,27.56302 50.7352,54.02297c3.73869,23.61245 -2.35521,50.29027 -22.12251,65.37829c-16.57411,13.95533 -40.93645,15.69794 -60.41183,7.1722c-4.73631,7.1261 -9.47264,14.25217 -14.20895,21.37825c4.65338,6.95274 9.30673,13.90549 13.96008,20.8582c23.58311,-10.57065 54.40877,-5.07518 69.99907,16.43117c21.95821,28.96715 17.67499,75.52599 -10.84692,98.64314c-17.91376,14.62869 -43.09233,14.67899 -64.38158,8.83109c-16.11131,-4.2995 -31.82996,-19.966 -26.84735,-37.82117c2.51375,-15.55998 23.9128,-21.41389 34.33803,-9.83356c14.19543,12.82462 -6.37968,25.74036 -5.32516,38.10141c15.79561,11.97195 41.38054,0.70062 45.05746,-18.39487c5.84576,-20.96526 4.47285,-43.25116 1.61388,-64.56879c-1.53316,-14.33195 -14.00139,-28.78069 -29.45882,-24.78352c-16.25957,3.69221 -24.37509,20.62003 -27.1602,35.64745c-3.41434,11.00523 -4.50349,-10.5222 -7.16806,-14.04636c-5.53896,-17.66304 -15.20212,-35.01096 -30.07851,-46.1468c-1.53252,4.76282 -0.13866,10.70403 -0.62897,15.96893c-0.11874,43.15994 -0.2375,86.31984 -0.35623,129.47978c-8.48793,2.46848 -12.93407,-1.8443 -11.0575,-10.00076c0,-46.19846 0,-92.39696 0,-138.59544z",
+	"clef_bass": "m21.53929,297.24106c0.11552,-13.50244 21.89277,-17.95071 30.83244,-27.31851c34.50853,-23.15955 68.13189,-49.8976 89.28437,-86.39645c22.47179,-37.29227 34.65842,-82.97259 25.51732,-126.22972c-4.84746,-26.84145 -30.93637,-48.32386 -58.5412,-44.96438c-18.18078,2.48732 -39.18159,6.6724 -49.70108,23.45858c-11.41858,8.57642 -5.13639,28.67733 10.08619,21.04295c19.47556,-7.4344 43.93666,7.72539 43.16644,29.21231c0.02258,20.3737 -20.60109,34.74615 -39.82058,32.83379c-21.40677,-0.21405 -42.59771,-17.48695 -42.15028,-39.87929c-1.48358,-36.0903 29.74187,-65.56665 63.16554,-73.13066c29.88613,-9.31284 64.6309,-5.56545 89.8325,13.80772c18.75227,12.81883 33.51952,32.25211 36.60045,55.18989c6.65193,29.82199 -1.94455,60.59844 -16.85703,86.54317c-19.16537,34.9521 -48.44911,63.56561 -82.44233,84.09172c-31.5721,20.13449 -64.41224,38.31845 -98.38529,54.07944c-0.19582,-0.78018 -0.39163,-1.56039 -0.58745,-2.34058zm226.81013,-147.1503c-16.25441,-7.36092 -12.66826,-37.2715 6.2514,-37.94421c14.1568,-3.30239 27.38025,11.49424 23.01007,25.17739c-2.75677,12.80446 -18.12839,18.35408 -29.26147,12.76682zm0,-81.82211c-16.25441,-7.36089 -12.66826,-37.2715 6.2514,-37.9442c14.1568,-3.30238 27.38025,11.49425 23.01007,25.17739c-2.82837,12.84788 -18.04926,18.33069 -29.26147,12.76681z",
+	"clef_treble": "m142.57787,298.08936c-19.93291,-3.16858 -30.69543,-32.78793 -10.77837,-43.63799c20.76305,-10.6983 33.11169,27.38725 10.4319,31.10985c-12.41878,4.65247 16.12379,12.44363 21.44362,4.62054c16.62259,-8.04572 14.05481,-28.98639 10.0555,-43.73428c-1.38792,-11.29834 -3.1236,-23.3942 -17.37872,-16.97299c-34.39165,2.76706 -61.61951,-32.12309 -58.88461,-64.7627c0.92851,-30.78641 26.14601,-51.87253 44.81895,-73.25146c-6.13037,-27.96899 -7.98138,-60.28084 9.78998,-84.65368c16.36949,-19.81244 24.67825,16.44271 27.44722,28.74505c6.15059,28.7567 -6.11317,58.97542 -26.51985,79.24646c1.94853,9.61536 3.86572,19.23715 5.85146,28.84491c21.56471,-4.16351 42.14922,14.0585 43.32542,35.40215c3.33209,19.27364 -9.02991,37.47516 -25.91515,45.75842c-0.27765,16.55051 8.86742,33.71834 5.58147,50.80913c-3.15567,17.67035 -22.97263,26.33539 -39.26881,22.47659zm22.51283,-75.40413c6.10963,-11.46864 -4.97238,-31.72308 -5.58083,-46.4445c0.2393,-25.67101 -26.99069,4.97273 -18.89308,17.57916c2.40038,7.45953 23.23523,21.13914 4.09677,12.70238c-19.98106,-11.95877 -19.06588,-42.72807 -0.80893,-55.71979c15.31693,-3.39279 5.96193,-23.83228 3.07584,-30.54592c-18.81245,17.14481 -40.13555,38.73356 -36.89114,66.48257c2.4439,26.00902 30.79729,41.78694 55.00137,35.94611zm12.65782,-4.96449c17.94263,-11.51868 17.35378,-41.74863 -2.27676,-51.12454c-20.94589,-11.06784 -6.59929,17.92804 -6.2155,28.9649c2.90686,4.22505 1.26024,28.84393 8.49226,22.15964zm-22.11331,-138.56764c11.03699,-13.35171 23.65346,-32.62746 15.90224,-50.28019c-16.69221,-11.01859 -25.9682,18.77171 -26.37872,31.81623c-0.15186,8.45836 -1.39836,37.61288 10.47649,18.46396l0,0z",
+	"note_16th": "m88.44206,298.30295c-13.87988,-2.82538 -24.35809,-16.50861 -20.88289,-30.73529c4.91499,-19.9595 23.53616,-33.76636 42.17206,-40.32825c12.41348,-4.12247 26.50006,-3.4993 38.15588,2.63036c1.0408,-76.23686 0.44647,-152.49294 0.60452,-228.73842c4.20728,-0.00103 9.6062,-1.35928 8.46304,4.73352c0.58707,13.69153 7.31578,26.22541 17.65646,35.05743c23.06891,21.49232 49.01909,44.8303 54.31831,77.58647c1.50432,13.81924 -0.10796,27.74641 -3.17799,41.24139c9.09166,16.96843 8.54382,37.52667 4.8522,55.93042c-2.39383,9.71803 -6.29839,19.07953 -11.26178,27.74855c-11.71941,5.45538 1.38908,-8.91675 1.22467,-14.09427c6.33897,-15.55397 7.06616,-32.87975 4.18297,-49.26376c-6.28082,-23.96758 -30.02579,-35.67821 -49.12051,-48.20921c-6.90894,-2.70374 -21.67717,-19.0106 -18.74876,-3.03152c-0.64005,43.31421 -0.53076,86.63467 -0.73126,129.95221c-8.01517,20.08276 -26.40254,35.40967 -47.75954,39.25299c-6.54287,1.13068 -13.39496,1.54416 -19.94739,0.2674zm133.16364,-163.77284c0.19041,-24.65028 -18.17068,-44.59457 -36.16211,-59.2127c-9.00275,-6.78731 -18.53905,-13.97798 -28.66229,-18.37087c0.62265,14.17498 7.10901,27.98635 14.87303,39.75766c14.63148,19.60416 36.7207,32.71725 48.97745,54.30224c1.46973,-5.35919 1.02641,-10.98389 0.97392,-16.47633z",
+	"note_2_16th": "m49.3958,299.54056c-16.81947,-3.04166 -22.61933,-24.29047 -12.59162,-37.02081c13.30804,-19.68834 41.77522,-32.96074 64.07959,-20.53789c0.44453,-69.33055 0.18797,-138.66488 0.25596,-207.99711c55.61466,-11.21983 111.34956,-21.8626 166.98527,-32.98482c-0.12048,77.7042 -0.24097,155.40843 -0.36145,233.1126c-8.71588,23.50243 -36.87907,39.79991 -61.40202,32.51219c-14.59976,-4.3703 -18.09988,-23.21532 -9.97012,-34.76195c11.13289,-17.22395 31.85399,-29.0497 52.68539,-25.82347c5.94469,-0.60136 14.69865,9.02304 12.18605,-1.86462c0,-54.46642 0,-108.93282 0,-163.39921c-51.0519,10.27703 -102.20471,20.06591 -153.28023,30.23172c-0.17435,63.38239 0.43399,126.77441 -0.45506,190.14903c-1.62524,19.24988 -20.10281,32.38318 -37.35132,37.51443c-6.81397,1.14908 -13.90893,1.86209 -20.78043,0.8699zm133.17406,-258.40903c26.23065,-5.16204 52.47366,-10.26209 78.69298,-15.48133c3.33676,-13.29303 -11.59628,-4.66015 -18.89926,-4.33564c-44.78732,8.84114 -89.60051,17.55139 -134.38097,26.42687c-3.33676,13.29303 11.59627,4.66015 18.89925,4.33564c18.56081,-3.65804 37.12405,-7.30357 55.688,-10.94555z",
+	"note_2_32nd": "m49.39585,299.53995c-16.81947,-3.04169 -22.61932,-24.29047 -12.59161,-37.02081c13.30804,-19.68835 41.77521,-32.96077 64.07959,-20.53792c0.44453,-69.33055 0.18797,-138.66488 0.25596,-207.9971c55.61465,-11.21984 111.34956,-21.86261 166.98528,-32.98483c-0.12048,77.70421 -0.24097,155.40842 -0.36145,233.11262c-8.71591,23.50241 -36.8791,39.7999 -61.40204,32.51218c-14.59978,-4.3703 -18.09987,-23.21533 -9.97015,-34.76193c11.13292,-17.22395 31.854,-29.0497 52.68541,-25.82347c5.9447,-0.60136 14.69868,9.02304 12.18605,-1.86462c0,-46.71117 0,-93.42232 0,-140.13348c-51.05188,10.27702 -102.20473,20.0659 -153.28023,30.23172c-0.22871,56.35212 0.56696,112.72466 -0.58765,169.06043c-3.51923,18.91183 -22.11423,32.00891 -40.05743,35.8262c-5.92716,0.70624 -12.00983,1.31848 -17.94172,0.38101zm133.17405,-235.14331c26.23065,-5.16204 52.47366,-10.26208 78.69298,-15.48132c3.33676,-13.29303 -11.59628,-4.66015 -18.89923,-4.33564c-44.78734,8.84113 -89.60054,17.55138 -134.381,26.42687c-3.33677,13.29303 11.59627,4.66015 18.89925,4.33564c18.56078,-3.65805 37.12405,-7.30357 55.688,-10.94555zm0,-23.26575c26.23065,-5.16204 52.47366,-10.26209 78.69298,-15.48133c3.33676,-13.29302 -11.59628,-4.66015 -18.89923,-4.33563c-44.78734,8.84113 -89.60054,17.55139 -134.381,26.42687c-3.33677,13.29303 11.59627,4.66016 18.89925,4.33564c18.56078,-3.65804 37.12405,-7.30358 55.688,-10.94555z",
+	"note_2_64th": "m49.39639,299.53995c-16.81947,-3.04169 -22.61932,-24.29047 -12.59161,-37.02081c13.30804,-19.68835 41.77522,-32.9608 64.07959,-20.53792c0.44453,-69.33055 0.18797,-138.66488 0.25596,-207.99711c55.61465,-11.21983 111.34957,-21.86261 166.98528,-32.98482c-0.12048,77.70421 -0.24097,155.40842 -0.36145,233.11262c-8.71591,23.50241 -36.8791,39.7999 -61.40205,32.51218c-14.59976,-4.3703 -18.09987,-23.21533 -9.97012,-34.76193c11.1329,-17.22395 31.85399,-29.0497 52.68539,-25.8235c5.94467,-0.60133 14.69868,9.02307 12.18605,-1.86459c0,-38.95592 0,-77.91182 0,-116.86773c-51.0519,10.27703 -102.20474,20.06591 -153.28024,30.23172c-0.23563,48.66071 0.58183,97.34513 -0.58977,145.98728c-3.69252,18.80173 -22.14742,31.83179 -40.05531,35.63361c-5.92716,0.70627 -12.00984,1.31848 -17.94173,0.38101zm133.17406,-211.87756c26.23067,-5.16204 52.47368,-10.26209 78.69298,-15.48133c3.33676,-13.29303 -11.59627,-4.66015 -18.89925,-4.33564c-44.78732,8.84113 -89.60051,17.55138 -134.38099,26.42688c-3.33676,13.29302 11.59627,4.66015 18.89925,4.33562c18.56079,-3.65804 37.12405,-7.30356 55.688,-10.94553zm0,-23.26575c26.23067,-5.16204 52.47368,-10.26208 78.69298,-15.48132c3.33676,-13.29303 -11.59627,-4.66015 -18.89925,-4.33564c-44.78732,8.84113 -89.60051,17.55138 -134.38099,26.42687c-3.33676,13.29303 11.59627,4.66015 18.89925,4.33564c18.56079,-3.65805 37.12405,-7.30357 55.688,-10.94555zm0,-23.26575c26.23067,-5.16204 52.47368,-10.26209 78.69298,-15.48133c3.33676,-13.29302 -11.59627,-4.66015 -18.89925,-4.33563c-44.78732,8.84113 -89.60051,17.55139 -134.38099,26.42687c-3.33676,13.29303 11.59627,4.66016 18.89925,4.33564c18.56079,-3.65804 37.12405,-7.30357 55.688,-10.94554z",
+	"note_2_8th": "m49.39571,299.54196c-16.81947,-3.04169 -22.61933,-24.29047 -12.59162,-37.02081c13.30804,-19.68834 41.77522,-32.96077 64.07959,-20.53792c0.44447,-69.55862 0.18803,-139.12106 0.25597,-208.68139c55.61337,-11.00192 111.35248,-21.38966 166.98529,-32.30051c-0.12051,77.70421 -0.24097,155.40842 -0.36145,233.11263c-8.71594,23.50241 -36.8791,39.7999 -61.40207,32.51218c-14.59976,-4.3703 -18.09987,-23.21533 -9.97012,-34.76193c11.1329,-17.22395 31.854,-29.0497 52.68538,-25.82347c5.9447,-0.60136 14.69872,9.02304 12.18608,-1.86462c-0.20636,-61.46065 0.51324,-122.93768 -0.53098,-184.38539c-9.07608,-3.36956 -25.21706,4.38308 -36.83795,5.01031c-38.86079,7.56314 -77.80466,14.7255 -116.5762,22.73074c1.16985,68.10055 0.62434,136.24279 0.45018,204.35774c2.05843,15.54877 -6.51154,30.19547 -19.54225,38.30072c-11.24453,8.17932 -25.1371,11.12784 -38.82984,9.35175z",
+	"note_3_16th": "m15.05685,274.22351c-14.31707,-1.91919 -18.42601,-20.36026 -8.93697,-29.99135c10.38879,-13.67648 30.27091,-22.30884 46.50806,-13.88651c0.66153,-52.11798 0.28726,-104.24728 0.38611,-156.37085c81.97754,-16.40272 164.06679,-32.26359 246.07988,-48.4937c-0.2363,57.62228 0.57657,115.26416 -0.57095,172.87157c-1.96915,14.86053 -17.13602,24.73001 -30.79037,27.8163c-11.96523,3.66803 -28.81345,-4.27913 -25.97942,-18.60889c3.50381,-15.4984 19.49126,-26.6657 34.85991,-28.02376c8.59586,-2.14986 20.61923,9.25734 16.69226,-5.91415c0.09525,-39.33675 -0.07153,-78.67297 -0.13177,-118.00977c-38.18202,7.50178 -76.35632,15.04294 -114.54555,22.50813c-0.23268,48.18274 0.55394,96.38557 -0.57504,144.55286c-2.30531,15.49788 -18.60167,25.74417 -33.19453,27.71848c-14.44766,3.90948 -29.61349,-11.1328 -21.45115,-25.13463c9.01589,-16.79831 32.00478,-28.23689 49.88007,-18.48071c0.13591,-41.88866 0.57454,-83.7979 -0.20747,-125.67833c-9.66763,-2.10095 -24.53024,4.47319 -35.97192,5.4189c-26.23273,5.15636 -52.45877,10.34411 -78.68841,15.51694c-0.35831,49.24326 0.12716,98.5107 -1.08934,147.73389c-6.17624,16.23714 -25.20985,26.82423 -42.27338,24.45558l0,0zm101.53641,-195.02805c18.87659,-3.72421 37.75267,-7.44825 56.62927,-11.17233c3.17946,-13.298 -14.34059,-1.80056 -21.35852,-2.54169c-31.16307,6.26984 -62.32049,12.56754 -93.49695,18.76997c-1.80596,13.61728 18.79422,-0.36912 26.46645,1.18459c10.58865,-2.07109 21.17471,-4.15247 31.75974,-6.24054zm119.43625,-23.77348c18.94301,-3.80857 37.98227,-7.27608 56.8645,-11.31118c2.82892,-13.23786 -18.20215,0.42724 -25.56601,-1.09475c-29.37257,5.74051 -58.85892,11.05022 -88.16765,17.02801c-3.13623,14.00632 18.26294,0.04643 25.92744,1.45249c10.31323,-2.02774 20.62746,-4.05219 30.94171,-6.07457z",
+	"note_3_32th": "m15.05685,274.22333c-14.31707,-1.91882 -18.42601,-20.36018 -8.93697,-29.99106c10.3888,-13.67676 30.27089,-22.30908 46.50806,-13.88647c0.66166,-52.11824 0.28732,-104.24765 0.38611,-156.37099c81.97754,-16.40273 164.06694,-32.2636 246.07988,-48.4937c-0.2363,57.6225 0.57663,115.26395 -0.57123,172.87143c-1.96881,14.86089 -17.13586,24.73018 -30.79025,27.81644c-11.96498,3.66806 -28.81322,-4.27921 -25.97935,-18.60878c3.50368,-15.49834 19.49123,-26.6657 34.86018,-28.02408c8.67697,-2.20874 20.51364,9.40097 16.68222,-5.83759c-0.09845,-33.39989 0.78769,-66.86396 -0.50803,-100.22556c-37.99194,7.33447 -75.93604,14.91556 -113.90202,22.38341c-0.40428,43.27432 0.22905,86.58281 -1.10269,129.83c-6.66052,18.05263 -29.74564,30.16772 -47.98743,22.50237c-14.38366,-7.43967 -7.95995,-27.06667 2.9687,-34.4792c10.34322,-10.82147 29.63336,-12.35156 40.562,-8.05225c0.25528,-36.18434 0.11931,-72.37016 0.15388,-108.55522c-38.40674,7.73776 -76.89246,15.09384 -115.31775,22.74432c-0.2578,42.95952 0.63174,85.96188 -0.70086,128.88727c-5.20541,16.91916 -25.24538,27.88303 -42.40446,25.48965zm99.21976,-176.85336c19.73389,-3.88507 39.47778,-7.71994 59.20331,-11.64712c1.63908,-13.07382 -17.1093,-0.27914 -24.42491,-1.54683c-30.21908,5.91451 -60.4242,11.89998 -90.63543,17.85444c-2.77443,12.63378 14.55762,1.2752 21.41661,2.10594c11.47932,-2.25961 22.95964,-4.51424 34.44042,-6.76643zm2.31665,-18.17461c18.87643,-3.72409 37.75285,-7.44817 56.62927,-11.17224c3.17953,-13.298 -14.34081,-1.80056 -21.35843,-2.5417c-31.16306,6.26989 -62.32067,12.56752 -93.49722,18.77c-1.80564,13.61723 18.7942,-0.36929 26.46687,1.1845c10.58833,-2.07081 21.17455,-4.15248 31.7595,-6.24056zm119.82236,-6.10279c19.00511,-3.73167 38.01025,-7.46333 57.01538,-11.195c2.25488,-12.51775 -14.43167,-1.31337 -21.22391,-2.14778c-31.1899,6.14801 -62.39635,12.21269 -93.57906,18.3969c-0.48149,12.89743 19.70058,-0.51178 28.22481,0.73691c9.85522,-1.92534 19.70935,-3.85638 29.56277,-5.79102zm-0.38611,-17.67059c18.94318,-3.80859 37.98227,-7.27608 56.86438,-11.31118c2.82913,-13.23785 -18.20197,0.42724 -25.56577,-1.09474c-29.37247,5.74053 -58.85913,11.0502 -88.1676,17.028c-3.13618,14.00631 18.26254,0.04646 25.92732,1.45247c10.31334,-2.02773 20.6273,-4.05214 30.94167,-6.07454z",
+	"note_3_64th": "m15.05833,274.22296c-14.317,-1.9187 -18.42625,-20.3604 -8.93719,-29.99104c10.38896,-13.67708 30.27131,-22.30949 46.50857,-13.88661c0.66169,-52.1188 0.28732,-104.24842 0.38611,-156.37186c81.97786,-16.40303 164.06815,-32.26401 246.08122,-48.49419c-0.23633,57.62288 0.57712,115.26462 -0.57092,172.87238c-1.96869,14.86116 -17.13614,24.73065 -30.79056,27.81697c-11.96483,3.66806 -28.81317,-4.27963 -25.97963,-18.60901c3.50381,-15.49847 19.49141,-26.66583 34.8607,-28.02443c7.61099,-2.92159 20.18073,9.65431 16.68201,-4.30438c0.21829,-27.96678 0.10867,-55.9346 0.13544,-83.90191c-38.27235,7.48128 -76.53494,15.0156 -114.80267,22.52314c-0.22958,36.48441 0.55602,72.99504 -0.58997,109.45938c-3.18001,15.89902 -20.29759,26.40845 -35.74976,27.23267c-14.89929,2.89737 -27.08599,-14.42255 -17.93506,-27.04372c9.64191,-15.67046 31.65898,-26.22467 48.93309,-16.72427c0.33206,-30.58104 0.14311,-61.16617 0.19254,-91.74873c-38.39642,7.82673 -76.92161,15.04803 -115.31823,22.87476c-0.25736,36.94054 0.62957,73.92738 -0.70087,110.83084c-5.2055,16.9194 -25.24553,27.88339 -42.40482,25.49002l0,0zm101.38524,-159.31403c18.83891,-3.75145 37.70946,-7.35722 56.50069,-11.3393c2.95145,-13.53962 -17.91554,0.08701 -25.35307,-1.30814c-29.80621,5.87558 -59.6283,11.67136 -89.42722,17.5835c-2.26596,13.04952 15.28052,1.23864 22.46973,2.11949c11.93564,-2.35683 23.87244,-4.70798 35.80987,-7.05554zm-2.1648,-17.54025c19.73418,-3.88531 39.47784,-7.72015 59.20348,-11.64717c1.63916,-13.07402 -17.10936,-0.27902 -24.42487,-1.54701c-30.21927,5.9147 -60.42458,11.89994 -90.63596,17.8548c-2.77449,12.63354 14.55767,1.27519 21.41672,2.10558c11.47937,-2.25951 22.95979,-4.51389 34.44062,-6.7662zm123.16869,-6.50159c18.66148,-3.66445 37.32301,-7.3289 55.98506,-10.99284c1.75296,-13.03485 -16.50751,-0.89732 -23.95999,-1.87753c-30.19955,5.92758 -60.38982,11.90097 -90.58421,17.8548c-3.55789,11.04535 8.5943,3.94657 14.87352,3.58826c14.56204,-2.85567 29.12408,-5.71393 43.68562,-8.57269zm-120.85203,-11.67342c18.8765,-3.72417 37.75323,-7.44803 56.62942,-11.17215c3.18001,-13.29807 -14.34068,-1.80056 -21.35812,-2.54169c-31.16348,6.26993 -62.3213,12.56734 -93.49802,18.77035c-1.80566,13.61685 18.79432,-0.36964 26.46704,1.18407c10.58839,-2.07059 21.17467,-4.1525 31.75968,-6.24059zm119.82291,-6.10266c19.0054,-3.73169 38.01082,-7.46337 57.01573,-11.19506c2.25491,-12.51782 -14.4313,-1.3134 -21.22379,-2.14781c-31.19003,6.14807 -62.39655,12.21279 -93.5799,18.39685c-0.48135,12.89765 19.70091,-0.51173 28.22522,0.73721c9.8551,-1.92541 19.70967,-3.85648 29.56273,-5.7912zm-0.38611,-17.67071c18.94363,-3.8086 37.9825,-7.27608 56.86485,-11.31125c2.82944,-13.23789 -18.20175,0.42725 -25.56567,-1.09475c-29.37276,5.7406 -58.85979,11.05029 -88.16818,17.02811c-3.13626,14.0062 18.26253,0.04649 25.9276,1.4525c10.31329,-2.02775 20.62709,-4.05215 30.94141,-6.07461z",
+	"note_3_8th": "m15.02169,274.2272c-14.31707,-1.91879 -18.42601,-20.36015 -8.93697,-29.99103c10.3888,-13.67676 30.27088,-22.3091 46.50806,-13.88649c0.66166,-52.11824 0.28732,-104.24764 0.38611,-156.37097c81.97754,-16.40273 164.06694,-32.2636 246.07985,-48.4937c-0.2363,57.6225 0.57663,115.26395 -0.5712,172.87141c-1.96884,14.86089 -17.13589,24.73018 -30.79025,27.81644c-11.965,3.66806 -28.81323,-4.27919 -25.97937,-18.60878c3.50368,-15.49834 19.49124,-26.66568 34.8602,-28.02408c8.2316,-2.53128 20.41348,9.51646 16.65692,-5.23953c-0.07721,-45.31436 0.85016,-90.69309 -0.45593,-135.96806c-37.90379,6.83744 -76.18053,14.4211 -114.18623,21.74638c-0.22679,54.0925 0.53969,108.20272 -0.57019,162.28107c-1.77496,14.91302 -17.02997,24.75598 -30.69292,27.71687c-13.90182,4.60379 -31.50981,-7.66069 -24.80507,-22.93971c8.1866,-17.99985 32.25569,-30.36769 50.72748,-20.3566c0.32813,-48.569 0.14423,-97.14091 0.19258,-145.71125c-38.34256,7.86306 -76.73341,15.50194 -115.11303,23.18613c-0.70871,54.82025 0.60002,109.69145 -0.90556,164.48224c-5.27564,16.97054 -25.17379,27.85027 -42.40448,25.48964z",
+	"note_32nd": "m96.7115,298.78342c-12.19044,-1.97687 -21.5796,-13.65018 -18.87752,-26.14322c3.19898,-16.4884 18.16196,-28.11014 32.8273,-34.56326c11.8622,-4.83313 26.35187,-5.63437 37.63535,1.13913c0.44954,-79.35593 0.19681,-158.71518 0.26346,-238.07262c3.98198,-0.1698 8.54333,-0.99947 7.45644,4.60387c0.32353,13.2127 8.16176,24.35488 17.90031,32.62089c20.68701,19.0793 43.62003,41.1507 45.44289,71.03391c1.94933,11.70761 -4.32771,23.23071 -1.67,34.59584c2.53688,11.20206 1.78056,22.8308 0.17831,34.09036c7.53368,20.20854 5.71452,43.47615 -2.49284,63.20886c0.75815,6.16689 -13.8391,16.22797 -7.44476,5.95023c8.63434,-18.74539 13.17647,-41.8004 3.81317,-61.08943c-11.33986,-18.69514 -31.97612,-28.28085 -48.89772,-41.04474c-11.778,-11.86667 -5.42902,11.18993 -7.18364,18.06325c-0.26184,33.71661 -0.28255,67.43445 -0.41075,101.15173c-5.27325,12.84436 -14.94577,23.71875 -27.82796,29.29456c-9.44402,4.40988 -20.29373,7.32529 -30.71203,5.16064zm114.86545,-145.34879c-7.29857,-26.18551 -30.51866,-43.93251 -53.18727,-56.72259c-6.20538,-0.86809 1.83978,14.15399 3.5831,18.80585c8.11926,15.92772 24.10783,25.32948 35.63724,38.48439c5.02966,4.16844 10.75517,12.77017 14.6803,15.07132c0.57034,-5.18866 0.22502,-10.51091 -0.71336,-15.63898zm0.91826,-35.72012c-0.11551,-22.00919 -16.64085,-39.55235 -32.65781,-52.65142c-7.46819,-4.94457 -16.49954,-13.27054 -24.16978,-14.26883c1.45969,12.25124 6.9503,24.24821 17.03656,31.76259c14.34996,13.93145 29.52126,27.82796 39.47783,45.32379c1.14618,-3.04146 0.13112,-6.92123 0.3132,-10.16613z",
+	"note_4th": "m126.58881,297.40149c-11.87886,-2.65546 -23.26585,-13.54025 -21.01448,-26.56512c0.1731,-16.24911 13.85612,-27.71617 25.94878,-36.50977c15.62231,-10.78831 37.15717,-14.20154 54.34061,-5.04248c1.02979,-75.90828 0.44815,-151.83525 0.60191,-227.75206c3.00182,0.70564 9.53603,-2.12083 8.02534,3.09698c-0.14726,78.93155 0.33716,157.8673 -0.38513,236.79541c-0.07584,10.70851 -0.22026,22.31233 -7.75522,30.804c-13.91748,17.52454 -37.15509,29.1525 -59.76181,25.17303z",
+	"note_64th": "m104.92412,299.31976c-12.00094,-1.27536 -20.94641,-13.79388 -17.06551,-25.49271c6.43043,-17.60776 24.98182,-29.7767 43.42287,-30.74879c7.6006,-2.50558 20.88075,10.01114 17.93382,-3.27145c0.48503,-79.47305 0.24155,-158.94821 0.30153,-238.42232c5.75809,-1.70799 6.23006,2.55972 6.32732,7.33913c1.78415,17.85563 19.14293,26.89136 29.82072,39.25721c15.39714,15.12255 27.5349,36.04512 24.51741,58.34038c-3.08612,10.64033 -0.83701,20.84729 0.30066,31.5748c0.06851,11.58006 -4.18433,22.62605 -0.40593,34.00638c1.68036,11.01886 -3.23894,22.12428 2.03442,32.51251c2.40002,18.25101 0.69795,38.47595 -10.52008,53.59502c-7.11406,1.93207 2.97337,-8.35378 2.33067,-11.88858c6.3118,-18.25085 7.27405,-41.79056 -8.5262,-55.64728c-12.36734,-10.82431 -26.50575,-19.43405 -39.98901,-28.77931c-0.71652,35.81755 -0.4848,71.65158 -0.68907,107.47679c-5.08496,13.03387 -16.00215,23.09641 -29.22493,27.57315c-6.53331,2.3526 -13.63996,3.72845 -20.5687,2.57507zm98.72386,-126.48091c-6.34319,-22.74789 -26.51086,-38.16362 -46.20412,-49.27464c-5.25957,0.57732 2.32552,14.64314 4.87614,19.57021c8.86444,13.06609 22.37558,21.98311 32.7415,33.78232c3.44377,1.45969 10.43367,15.90742 9.37975,5.93784c0.13239,-3.35165 -0.09975,-6.73082 -0.79327,-10.01572zm0.7843,-31.02991c0.01227,-19.15482 -14.53879,-34.37045 -28.41721,-45.78492c-6.00691,-3.41928 -16.78343,-14.40513 -20.81033,-10.93629c1.48004,11.20951 7.52783,21.1048 16.47551,27.9065c11.85971,11.75211 24.67769,23.13779 32.59132,38.04211c0.77432,-2.77734 0.04828,-6.25352 0.16071,-9.2274zm0.01279,-39.15976c-0.40309,-21.71703 -17.74644,-38.41104 -34.56728,-49.83583c-4.69977,-2.50358 -18.46306,-14.73891 -13.78862,-1.7836c3.12802,17.13914 19.8609,25.3779 30.46255,37.43516c7.16287,5.47251 13.39691,18.87303 18.00247,22.03555c0.14136,-2.61625 -0.03749,-5.23595 -0.10913,-7.85128z",
+	"note_8th": "m92.11929,299.44888c-12.88673,-2.17523 -24.85642,-14.0065 -22.42534,-27.8176c1.23042,-15.16177 13.28207,-27.36446 25.40788,-35.40434c16.13786,-10.9864 38.20284,-15.06764 55.98708,-5.59207c1.04205,-76.42476 0.44817,-152.86866 0.60602,-229.30206c11.21484,-2.71548 7.58873,11.96767 10.1358,18.75797c2.43044,19.96716 15.82285,35.63469 29.15343,49.62502c16.53877,17.58521 34.10059,36.23084 39.47629,60.59399c5.87012,28.26657 -3.51422,57.18356 -15.69261,82.51581c-0.88187,8.11874 -15.77403,19.86469 -8.67888,5.1937c11.94699,-25.09727 21.81674,-54.00095 13.66216,-81.79225c-7.76553,-27.73048 -31.97011,-50.88958 -60.78398,-55.04219c-0.18622,58.55498 0.45346,117.12103 -0.68288,175.66663c-2.83272,17.24548 -17.81155,30.04147 -32.83268,37.34811c-10.35778,4.50974 -22.04797,7.23831 -33.33228,5.2493z",
+	"note_half": "m126.15042,298.46863c-16.82465,-2.00256 -23.94094,-21.72537 -20.50175,-36.48892c5.91676,-23.32147 29.06407,-39.43811 52.28738,-42.05833c8.81128,-0.72736 18.52644,-0.60411 25.78337,4.94891c5.95566,-2.36537 1.76544,-11.69408 2.85246,-17.2854c0,-68.81003 0,-137.6201 0,-206.43012c14.97716,-2.18183 5.30603,19.02521 7.94768,27.71113c-0.09924,75.95386 0.62134,151.91534 -0.76007,227.86198c-7.30341,28.38443 -39.39244,46.36703 -67.60907,41.74075zm2.8452,-12.40747c22.98492,-7.3089 44.37535,-22.56259 55.31068,-44.49013c0.95541,-13.55527 -16.00528,-10.73553 -23.6718,-6.15868c-13.5024,6.76553 -26.21068,15.65268 -36.74068,26.51123c-6.99238,6.4256 -15.89267,26.17618 0.78696,25.05563l2.30408,-0.3252l2.01074,-0.59286l0,0z",
+	"note_whole": "m130.51953,195.65829c-18.47874,-2.9818 -38.13104,-9.41365 -49.81914,-24.96915c-4.87284,-6.5025 -6.85786,-14.78229 -6.23731,-22.81049c-0.81288,-10.41815 5.23877,-19.78279 13.11027,-26.04227c15.71593,-12.69998 36.4436,-17.12403 56.18739,-18.21444c21.01479,-0.84168 42.85126,2.6237 61.20964,13.32044c11.19275,6.86285 21.10484,18.66567 20.54733,32.45548c0.612,8.09668 -0.91914,16.68852 -6.59294,22.84065c-11.24144,13.63681 -28.92738,19.59387 -45.72455,22.87505c-14.06622,2.54445 -28.55254,2.69426 -42.68069,0.54472zm34.33258,-7.95905c9.06644,-1.9348 15.01314,-11.03741 14.88672,-20.03276c1.54852,-18.89767 -4.73529,-39.56404 -20.09192,-51.52234c-8.61502,-6.06224 -20.8895,-6.65757 -30.00668,-1.42353c-6.79661,4.10276 -9.33514,12.23845 -9.31819,19.7824c-0.73656,16.04378 3.97748,32.8201 14.66045,45.0217c7.49542,7.87076 19.3475,12.08484 29.86963,8.17453z"
+	}
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/nature.json
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/nature.json	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/nature.json	(revision 29468)
@@ -0,0 +1,36 @@
+{"data": {
+
+"monkey": "M 226.606 20.4163 C 226.606 20.4163 226.606 11.9751 230.0494 6.5107 C 232.0226 3.4236 238.3242 1.8546 238.3242 1.8546 C 238.3242 1.8546 245.0913 -0.415 253.2918 0.0671 C 259.645 0.439 267.8598 3.5767 267.8598 3.5767 C 267.8598 3.5767 276.9368 3.7842 280.052 8.0256 C 283.8553 13.2407 277.8506 19.3237 277.8506 19.3237 C 277.8506 19.3237 278.6472 22.8733 281.7109 25.8553 C 284.235 28.3068 289.1462 30.3352 289.1462 30.3352 C 289.1462 30.3352 290.077 30.9513 290.7738 32.1232 C 291.3905 33.1926 291.7502 34.8667 291.7502 34.8667 C 291.7502 34.8667 294.7769 36.8839 294.9854 39.3837 C 295.2166 42.0562 292.624 45.2313 292.624 45.2313 C 292.624 45.2313 291.442 50.1711 289.2947 53.7374 C 287.9099 56.0527 285.2258 57.5337 285.2258 57.5337 C 285.2258 57.5337 279.0755 62.2408 271.5631 63.3278 C 265.881 64.1473 258.2943 61.4208 258.2943 61.4208 C 258.2943 61.4208 262.1919 72.5344 261.7522 83.8555 C 262.375 101.625 247.5 116.625 241.1367 136.6377 C 238.8895 142.6671 240.2744 149.6752 240.2744 149.6752 C 240.2744 149.6752 239.6291 167.2637 237.2535 182.9253 C 235.3175 195.7954 231.5999 207.2979 231.5999 207.2979 C 231.5999 207.2979 233.875 214.25 233.3217 218.7324 C 235.25 219.875 243.5 224.875 242.4502 228.8728 C 240.875 229.125 237.9587 227.5789 237.9587 227.5789 C 237.9587 227.5789 236.6225 228.9976 234.972 229.2134 C 233.7586 229.3833 232.625 229.625 232.0938 228.3845 C 229.25 229 224.2074 226.7275 224.2074 226.7275 C 224.2074 226.7275 220.3271 223.9128 218.4968 220.917 C 217.506 219.3108 215.9429 220.7988 217.9714 216.5869 C 220 212.375 217.763 211.5425 217.763 211.5425 C 217.763 211.5425 213.2287 213.7043 210.2078 213.574 C 208.7231 213.5002 207.6038 211.0774 207.6038 211.0774 C 207.6038 211.0774 208.1491 206.021 207.7893 201.5894 C 207.2583 195.2849 205.7506 188.9578 205.7506 188.9578 C 205.7506 188.9578 202.1187 185.0703 199.2862 173.9282 C 197.3274 166.2366 197.119 155.4518 195.7484 147.5103 C 194.3778 139.4326 191.625 134.125 191.8509 134.2487 C 185.25 142.625 176.9746 144.6133 176.9746 144.6133 C 176.9746 144.6133 178.3252 157.3417 177.1888 167.7202 C 176.098 177.7273 172.526 185.3938 172.526 185.3938 C 172.526 185.3938 168.75 194.625 167.6177 200.8745 C 166.8118 205.3229 167.7786 206.4136 168.5143 207.5193 C 173 212.75 193 203.25 197.75 210.0898 C 198.2383 210.3623 199.2719 211.6445 200.4683 212.3708 C 201.7389 213.1428 204.2573 216.9563 203.4978 217.3875 C 202.8668 217.762 201.5105 217.3364 201.5105 217.3364 C 201.5105 217.3364 201.8759 219.6685 201.0365 220.5198 C 200.1399 221.3879 198.0498 220.7976 198.0498 220.7976 C 198.0498 220.7976 196.6878 219.7195 194.1323 219.4133 C 191.6996 219.1238 188.0476 219.606 188.0476 219.606 C 188.0476 219.606 178.125 216 169.368 221.9668 C 164.75 224.375 161.2218 224.3899 156.5447 224.9685 C 153.9407 225.292 152.7614 223.272 152.7614 223.272 C 152.7614 223.272 151.9019 224.4126 150.1802 225.3999 C 148.2186 226.5007 146.1256 228.1235 146.1256 228.1235 C 146.1256 228.1235 147.1078 229.3325 148.6869 230.189 C 149.6834 230.7114 151.565 231.0405 151.565 231.0405 C 151.565 231.0405 158.8333 232.1667 165.7018 229.9795 C 166.8411 229.9114 175.1672 234.377 176.2494 235.3303 C 177.0746 236.0454 175.445 238.2518 174.0622 238.8259 C 167 243 162 236.8333 150.6885 241.113 C 140.25 242.375 135.935 240.9539 132.4543 238.4346 C 130.1444 236.7661 129.9559 233.2024 129.9559 233.2024 C 129.9559 233.2024 126.6123 228.7363 126.3468 224.5825 C 126.2325 222.7498 130.7611 216.2295 132.6542 212.9043 C 134.2132 210.1919 136.0435 206.8723 136.0435 206.8723 C 136.0435 206.8723 137.5054 203.7854 138.4962 199.8472 C 139.2357 196.9868 139.3728 193.6108 140.2837 190.8699 C 141.3744 187.5103 143.3103 184.855 143.3103 184.855 C 143.3103 184.855 138.0736 180.7068 134.0619 175.5144 C 129.0965 169.0652 125.1761 161.3308 125.1761 161.3308 C 125.1761 161.3308 112.2529 151.7861 102.6019 140.3037 C 96.4944 133.0541 91.9515 121.8441 91.9515 121.8441 C 91.9515 121.8441 89.6882 124.1978 86.4778 127.1755 C 63.6667 148.3333 61.8409 191.3676 54.6667 238 C 50 268.3333 38.8624 287.6958 31.6355 293.9775 C 25.0568 299.7031 16.8021 299.9983 16.8021 299.9983 C 16.8021 299.9983 11.6425 300.0833 11.0544 299.0222 C 10.489 298.0403 14.5207 295.8896 14.5207 295.8896 C 14.5207 295.8896 21.9196 292.1024 26.5616 286.1067 C 46 261 47.9588 188.2004 56.6667 157.3333 C 61.0673 141.7342 67 100 108.3982 77.2219 C 138.481 60.6697 203.5 49.5 219.7874 28.8517 C 223.0597 24.7032 226.606 20.4163 226.606 20.4163 Z",
+"dog": "M 54.8434 43.0135 L 41.1471 43.0135 C 41.1471 43.0135 30.4944 42.2533 27.4508 52.1357 C 22.0293 59.2623 11.8998 56.1266 9.1891 58.9773 C 6.193 58.9773 -0.7027 60.3076 0.0582 63.5383 C 0.8191 66.7691 3.1019 67.3392 2.3409 68.0994 C 1.58 68.8596 -0.5125 84.4433 19.4613 84.0632 C 19.4613 84.0632 21.5538 88.6242 30.8749 84.0632 C 30.8749 84.0632 32.9673 82.3528 36.5816 85.2034 C 40.196 88.0541 47.4245 90.1446 49.1366 89.7645 C 50.8486 89.3844 61.6915 107.8187 61.6915 134.2349 C 61.6915 160.6512 76.339 178.8954 81.0946 179.8457 C 81.0946 179.8457 92.6508 216.6193 93.0788 249.402 C 93.0788 249.402 95.9322 263.2753 83.3773 263.0852 C 76.6005 268.7153 73.6044 272.5637 77.6705 272.2074 C 77.6705 272.2074 79.2399 274.7729 82.2359 274.4879 C 83.5333 274.025 71.7497 282.8974 76.5291 282.4698 C 76.5291 282.4698 78.6217 288.5512 86.8013 284.7503 C 86.8013 284.7503 99.3563 285.8906 100.4976 277.9087 C 101.639 269.9268 102.2097 256.9563 107.3458 258.5241 C 107.3458 258.5241 108.1066 194.8592 114.1939 190.1081 C 114.1939 190.1081 144.4318 192.6018 179.2513 171.8638 C 189.1431 165.9724 199.225 157.2303 200.937 177.5651 C 202.6491 197.8999 233.2755 214.8139 237.4605 226.5966 C 241.6455 238.3794 243.9282 234.1984 243.1672 261.9449 C 243.1672 261.9449 235.9387 260.2345 230.6123 266.506 C 227.1882 269.9268 231.7537 269.9268 231.7537 269.9268 C 231.7537 269.9268 229.0905 272.5874 237.4605 272.2074 C 237.4605 272.2074 238.6018 273.4901 244.3086 272.2074 C 244.3086 272.2074 253.8199 272.7775 252.2981 265.3658 C 252.2981 265.3658 252.8688 223.1758 255.7222 225.4564 C 258.5756 227.7369 273.223 241.04 272.8425 269.9268 C 272.8425 269.9268 266.3748 270.877 265.9944 277.9087 C 265.9944 277.9087 262.7606 281.5195 267.1357 282.4698 C 267.1357 282.4698 273.2705 284.0376 275.1252 282.4698 C 275.1252 282.4698 282.9246 285.1304 283.1147 275.6281 C 283.3049 266.1259 276.8373 233.1532 279.6907 225.4564 C 279.6907 225.4564 255.1515 211.203 251.1567 167.3027 C 251.1567 167.3027 262.5703 204.5515 299.0938 198.0899 C 299.0938 198.0899 301.757 196.9497 297.9524 195.8094 C 294.1478 194.6691 264.0921 198.6601 256.8635 161.6014 C 251.5847 135.0901 255.5795 132.2395 238.6018 121.692 C 215.7747 99.8844 158.897 121.882 141.5865 114.8504 C 125.6075 106.8685 125.0368 106.726 107.3458 101.1672 C 89.2267 91.6174 92.318 80.6424 78.8119 65.8189 C 68.4683 51.9219 68.3495 53.466 67.3983 52.1357 C 66.4471 50.8053 67.2081 44.5339 54.8434 43.0135 Z",
+"cat": "M 35.5991 87.5267 C 37.1576 87.2151 48.4773 99.9253 48.6908 102.4865 C 49.0025 106.2264 56.1718 106.2264 58.042 106.2264 C 59.9123 106.2264 73.3157 114.3296 82.3552 123.0562 C 91.3948 131.7827 117.8899 123.6795 119.7601 123.0562 C 121.6304 122.4328 207.0383 105.9148 230.1046 117.4463 C 241.1827 122.9845 263.0187 103.418 265.8731 62.7496 C 264.7042 35.6351 240.317 34.6175 235.2478 42.8812 C 231.5073 46.5432 225.1173 45.4524 226.6759 38.7517 C 228.0931 34.2646 237.5856 20.4416 255.1192 26.519 C 269.9835 31.6712 278.581 44.0633 281.7702 62.2821 C 283.8742 101.5515 254.4178 130.536 254.4178 130.536 C 254.4178 130.536 256.7556 140.8209 260.0286 147.3658 C 263.3015 153.9107 264.2366 176.3503 263.769 179.1552 C 263.3015 181.9602 277.7959 197.3875 282.4715 197.8549 C 286.5237 199.7249 297.9011 234.3194 298.3686 241.7992 C 302.5767 243.9029 297.9011 254.4215 292.7579 255.824 C 287.6147 257.2265 286.212 247.4091 286.212 242.7342 C 286.212 238.0593 281.0688 216.0871 266.5744 213.7497 C 252.08 211.4122 239.4559 203.4648 239.4559 203.4648 C 239.4559 203.4648 238.5207 208.1398 236.6505 210.0098 C 236.6505 210.0098 241.3261 217.9571 241.3261 229.6444 C 240.8586 234.7868 233.3776 250.6816 228.2344 252.0841 C 228.2344 252.0841 219.8183 265.1739 216.0778 265.1739 C 212.3373 265.1739 205.7914 269.8488 195.5051 264.2389 C 195.5051 264.2389 197.3753 252.5516 206.7266 255.824 C 206.7266 255.824 228.702 238.9943 217.948 231.5144 C 217.948 231.5144 211.4022 222.1646 207.6617 218.4246 C 203.9212 214.6847 200.1807 208.6073 199.2456 201.5949 C 199.2456 201.5949 167.919 199.7249 159.9704 197.8549 C 152.0219 195.985 137.5275 200.6599 137.5275 203.4648 C 137.5275 206.2698 139.8653 232.9169 144.0733 238.0593 C 144.0733 238.0593 145.476 244.6042 144.0733 246.4742 C 142.6706 248.3441 149.2165 263.7714 136.5923 262.3689 C 124.6695 264.4726 118.825 255.1228 132.8519 252.0841 C 133.5532 242.033 115.0845 199.4912 102.9279 205.3348 C 87.0308 207.6723 92.4078 193.8813 76.7445 215.6197 C 60.3798 234.7868 32.3261 248.3441 30.9235 256.759 C 30.9235 256.759 22.5074 254.889 20.6371 261.4339 C 20.6371 261.4339 -1.3383 264.2389 0.0644 260.4989 C 1.4671 256.759 2.636 249.0454 11.2859 252.0841 C 11.2859 252.0841 30.9235 244.3704 49.6259 204.3998 C 49.6259 204.3998 47.2881 194.115 50.561 185.7001 C 53.834 177.2853 48.6908 142.6908 25.3127 144.5608 C 25.3127 144.5608 16.5849 147.6774 11.2859 133.341 C 11.2859 133.341 9.1039 130.536 11.2859 127.7311 C 13.4678 124.9261 18.7669 120.5629 19.702 117.4463 C 20.6371 114.3296 22.8191 109.6547 34.6639 105.2914 C 40.2747 99.4478 34.0406 87.8384 35.5991 87.5267 Z",
+	"mouse": "M 1.667 140.5536 C 1.667 140.5536 -3.1506 133.1432 3.594 129.9213 C 10.3386 126.6995 32.4993 97.5413 49.8424 97.058 C 49.8424 97.058 50.8059 68.061 63.3315 72.8938 C 75.8572 77.7267 70.0761 81.5929 70.0761 81.5929 C 70.0761 81.5929 91.2733 56.4622 97.0544 84.4926 C 97.0544 84.4926 102.8354 91.7419 124.9961 70.9607 C 147.1568 50.1795 223.2195 45.2403 259.8874 83.5261 C 283.4933 108.1736 316.2526 144.9032 290.7196 178.2498 C 290.7196 178.2498 305.5 251.5 182 240.5 C 182 240.5 134.1494 231.411 109.58 232.3776 C 85.0105 233.3441 64.7768 241.56 76.8207 230.4444 C 88.8645 219.3289 121.1421 219.3289 164.5 227.5447 C 207.8579 235.7606 277.2305 234.3107 277.2305 185.0157 C 277.2305 185.0157 266.6319 188.882 261.8144 185.9823 C 261.8144 185.9823 264.2231 196.6145 250.2523 195.648 C 236.2814 194.6814 223.274 190.3319 208.8214 196.6145 C 208.8214 196.6145 204.4856 199.5143 203.0403 196.6145 C 203.0403 196.6145 195.814 196.6145 198.2228 193.7148 C 198.2228 193.7148 194.1279 192.0233 198.2228 188.882 C 202.3177 185.7407 230.9821 186.2239 230.0186 185.9823 C 229.0551 185.7407 230.5003 182.841 228.0916 183.0826 C 225.6828 183.3242 154.3831 187.6738 135.5947 182.116 C 135.5947 182.116 134.6312 188.6404 130.7772 185.9823 C 130.7772 185.9823 95.1273 189.6069 87.4193 193.7148 C 79.7112 197.8228 82.3608 194.6814 79.7112 195.648 C 77.0615 196.6145 74.171 201.2057 71.0396 198.5477 C 71.0396 198.5477 60.441 201.2057 63.3315 196.6145 C 63.3315 196.6145 59.9593 197.8228 58.514 194.6814 C 58.514 194.6814 53.9373 193.2316 60.441 187.9154 C 66.9447 182.5993 93.2003 182.841 95.1273 180.1829 C 97.0544 177.5248 96.3317 175.5917 90.3098 176.3166 C 84.2879 177.0415 72.0031 174.8668 62.368 168.5841 C 52.7329 162.3014 55.8509 159.1773 35.3898 156.9852 C 18.8496 155.2132 15.4773 152.7968 11.3021 151.1858 C 7.1268 149.5749 1.667 140.5536 1.667 140.5536 Z",
+	"bat": "M 159.4097 112.4418 C 159.4097 112.4418 165.2836 114.8177 165.871 116.5996 C 166.4583 118.3814 193.4784 111.254 199.3523 107.0962 C 205.2262 102.9384 218.7362 103.3991 218.7362 95.8108 C 218.7362 93.4349 216.0563 87.2725 221.0858 89.2771 C 222.0639 89.6671 222.2607 92.841 222.2607 92.841 C 222.2607 92.841 221.2328 89.9082 219.7275 90.7249 C 218.9925 91.1238 220.7934 96.0402 221.6732 97.5927 C 221.6732 97.5927 270.8466 89.8789 281.5872 92.841 C 285.8948 94.0288 300.3839 95.8108 299.9922 102.1464 C 299.9922 102.1464 280.0218 109.0692 276.8881 134.4187 C 276.4966 137.5864 251.2713 130.3858 234.5959 162.335 C 230.8757 169.4625 229.8967 166.8886 228.7219 166.4928 C 227.5471 166.0968 204.0514 151.2475 184.6675 179.5599 C 184.6675 179.5599 185.6465 179.362 185.8423 180.1539 C 186.0381 180.9459 195.4364 177.9761 195.828 183.1239 C 195.828 183.1239 191.4489 181.1155 192.4279 183.0956 C 193.4068 185.0754 192.9103 187.3455 192.3037 186.0935 C 192.1875 185.8537 189.7583 183.7177 190.5414 185.4997 C 191.3246 187.2815 186.7788 191.3699 186.5384 190.7703 C 185.5817 188.3839 188.7793 185.6976 182.9054 183.1239 C 177.0314 180.55 160.7802 186.6876 152.361 205.6945 C 152.361 205.6945 151.7736 206.6844 150.5988 205.1005 C 149.424 203.5166 141.2005 182.3318 124.1661 181.3419 C 124.1661 181.3419 123.3829 184.3117 120.6418 184.9057 C 117.9006 185.4997 118.4881 194.607 117.1174 191.4393 C 115.7468 188.2715 116.03 192.0517 115.9426 191.4393 C 115.625 189.2114 116.9471 185.7338 113.0056 187.2815 C 112.4893 187.4842 112.2224 190.6474 111.2435 189.0635 C 110.2645 187.4796 112.4516 184.6432 113.8221 183.4553 C 115.1927 182.2674 109.2548 182.1362 111.8309 180.7479 C 114.4384 179.3427 121.8165 183.9158 118.8796 178.9661 C 115.9426 174.0163 99.0597 150.8982 74.8252 166.4928 C 70.5176 169.2646 71.8882 165.8987 69.5386 162.9288 C 67.1891 159.9591 50.7251 131.6712 28.4212 135.0125 C 23.1346 135.8046 25.4842 130.8548 23.7221 129.0729 C 21.9598 127.291 11.3214 96.1243 0.8138 98.7807 C -1.5358 99.3745 0.1497 88.6039 20.1977 89.8712 C 23.3305 90.0691 21.3725 87.4953 24.8969 88.0892 C 28.4212 88.6833 71.8882 94.8209 76.5873 96.4048 C 81.2865 97.9887 86.573 99.4947 86.573 89.8712 C 86.573 89.6855 85.802 89.203 84.2234 90.4651 C 83.5259 89.834 89.3142 86.5053 88.3352 92.841 C 87.3562 99.1766 85.2163 97.4736 88.9226 99.3745 C 94.1706 102.0661 98.3286 106.7349 106.5443 107.0962 C 111.0477 107.2942 133.7569 118.5671 138.8509 117.1936 C 141.7879 116.4016 145.7038 114.6197 144.1374 113.6297 C 142.5711 112.6399 137.2845 106.3042 137.6761 102.9384 C 138.0677 99.5726 139.2425 96.9988 137.6761 95.8108 C 136.1097 94.6229 139.4383 91.2571 142.3753 95.2168 C 145.3122 99.1766 145.3122 102.1464 147.6618 102.3444 C 150.0114 102.5425 154.319 101.3546 155.8853 102.3444 C 155.8853 102.3444 162.7383 92.4451 166.4583 94.0288 C 170.1785 95.6128 167.2415 97.7906 167.6331 99.3745 C 168.0247 100.9584 163.7172 112.8379 159.4097 112.4418 Z",
+	"bull": "m247.95622,28.12305c-12.19972,2.23394 -21.61887,16.95667 -20.74588,29.01591c1.44209,13.7284 17.93463,5.12075 22.80087,1.23941c-2.90906,11.49207 -26.14024,13.85409 -24.83565,-0.12387c-17.69467,13.05878 -30.95056,33.52913 -52.86781,40.14553c-19.77757,4.59067 -40.50726,3.0742 -60.45068,0.39017c-12.12445,-1.13604 -23.69794,-7.26224 -35.91985,-5.97962c-13.09134,3.59118 -23.59412,13.16467 -36.65408,16.93906c-13.77014,6.03062 -8.51065,22.6805 -9.70401,34.47604c0.36829,17.55977 -2.85913,36.16287 -15.09811,49.55722c-7.11563,10.54993 -7.76443,24.43282 -13.48046,35.44298c18.99679,-0.19772 7.54522,-25.59486 17.99728,-35.91756c14.58305,-6.75189 14.16003,-25.2986 16.19452,-38.95529c1.4834,-5.51941 0.74519,-25.08188 6.61763,-22.44334c7.21924,16.22275 11.33028,34.35388 9.69645,52.12326c-9.5553,8.96404 -24.74576,15.34862 -22.54872,31.87126c0.72458,14.96526 -8.38036,25.74033 -15.4907,37.48604c4.56749,6.89259 1.00608,20.69472 14.11573,16.65324c8.77115,1.68887 13.10825,-2.37698 4.45589,-8.42346c-13.07829,-12.56499 5.13552,-29.16821 12.20585,-40.168c7.30689,-12.28131 22.16195,-12.86801 33.02653,-20.13979c15.00671,-8.95824 25.97935,-22.79263 35.92999,-36.78595c8.71432,9.26259 -13.75776,17.74474 -17.07076,27.20334c-7.22755,7.75058 -20.15694,21.85651 -2.99889,26.65347c13.26358,4.53796 25.75887,13.79143 25.35975,28.30255c0.22051,9.84615 24.38135,18.76527 19.43611,2.77341c-8.3609,-14.92882 -28.34064,-20.79163 -33.65835,-37.70844c-3.6715,-12.98383 11.61318,-19.27325 18.93525,-8.74269c12.96419,-1.41862 26.57983,-10.04028 40.80356,-11.3647c14.66299,-5.4577 18.06927,14.52957 29.8145,19.76668c9.79047,9.67969 18.77974,21.93582 17.54285,36.4783c1.1926,12.30893 9.52699,25.16873 23.92239,23.90201c16.80026,-2.80963 -5.10118,-20.70317 -12.79568,-24.81631c-11.14896,-13.29695 -9.30676,-32.20113 -16.24597,-47.51259c-5.00217,-4.52083 0.22685,-26.45532 0.40694,-10.76334c-0.90044,17.98242 24.73294,7.66248 22.97939,-6.09152c4.36166,-10.95654 -11.58513,-4.19417 -9.47617,-15.24252c-1.73091,-13.74937 -0.74355,-30.75096 -12.6731,-40.17292c-6.8737,-6.7591 -4.7831,-7.41829 2.70201,-2.07212c14.59439,7.55807 11.75914,24.79303 12.78276,38.37691c4.22589,17.80225 21.30753,-5.24332 20.80711,-14.89757c2.92691,-20.96336 12.92174,-42.46973 32.42046,-52.68139c-5.2402,-2.56694 -30.94765,6.73531 -28.79092,-4.9679c10.59921,9.00244 25.18661,-0.80075 37.71524,1.85265c16.62164,0.68233 20.74963,-22.79317 2.53195,-23.94116c-11.78333,-6.98062 -21.92947,-19.31897 -37.15829,-18.35906c-22.07759,7.39931 -8.43927,-13.11165 -2.53694,-22.37832zm21.60802,9.50184c-1.66193,5.79599 -12.61478,17.62506 0.56973,12.83867c1.89221,-3.91013 1.1131,-8.97168 -0.56973,-12.83867zm-3.4996,26.34877c5.90985,9.81916 -11.80539,1.02993 0,0zm24.39551,10.15293c-2.05029,4.18517 5.51468,4.9676 -0.32553,4.96455c-3.08926,4.10121 -4.4324,-5.29953 0.32553,-4.96455z",
+		"cow": "m28.0749,243.56958c-11.25466,-1.13762 -0.26117,-18.72878 -4.5063,-26.87576c-0.04291,-11.99254 -4.49496,-23.80263 -3.04635,-35.73141c8.85702,-21.03091 1.47632,-43.99974 -0.46577,-65.6628c-0.878,-4.78294 -0.85219,-17.06834 -3.03475,-6.14601c-6.04425,18.41563 -0.13999,41.17824 -5.30961,59.82921c-8.64015,10.38419 -15.16653,-6.09071 -6.91858,-12.40807c9.63606,-15.16887 7.3071,-35.6004 7.63113,-54.51396c-0.41477,-11.95865 4.38277,-26.97649 18.58104,-27.31744c12.14677,-0.91866 23.64877,4.86966 35.90276,4.15359c35.73927,0.55689 71.83095,0.86755 107.11801,-5.64501c17.61354,-4.0591 35.14902,3.10693 52.79015,0.20057c9.91351,1.07068 15.15811,-3.56471 10.78886,-12.26689c7.38425,-5.09429 13.06598,9.66071 16.34573,-3.48148c11.89191,-8.19559 13.54935,15.99933 26.71921,9.16614c15.88589,2.05862 -6.90274,16.26875 6.39813,23.38159c8.04169,6.20473 20.35629,21.57409 4.35831,26.00379c-13.75446,-0.96602 -27.54028,-0.06377 -41.30312,0.60226c-6.36993,10.6367 -19.62016,18.61491 -18.16837,32.55296c-1.1003,16.62756 -12.74783,33.02081 -28.69196,38.18489c-6.81386,-1.34894 -9.78644,0.85432 -8.9351,7.83342c-3.52046,9.11967 -4.14098,18.73875 -3.72333,28.43974c-1.04204,5.34808 1.17265,9.50755 4.32187,13.62691c-3.70361,6.41692 -24.92326,2.61598 -16.88379,-9.5238c2.05592,-15.92261 -0.36317,-31.91132 -2.16568,-47.74242c-8.4565,-6.01532 -18.70856,-3.81294 -27.26753,1.0208c-18.88187,6.9252 -40.73763,13.48228 -60.10471,4.59438c-10.79734,-3.01547 -27.0833,-5.25847 -35.10848,3.84904c-3.611,13.73518 -2.64567,28.48619 -5.7238,42.42607c-0.05178,7.28806 6.88112,13.54532 -4.86428,11.51134c-4.90851,0.11278 -9.83028,0.26732 -14.73372,-0.06165zm10.02217,-15.5108c1.93175,-6.52728 -2.78621,-23.11049 -3.1906,-7.64299c-1.60691,4.90746 0.4367,28.47777 2.83738,12.83046c0.15187,-1.72662 0.25968,-3.45683 0.35322,-5.18747z",
+	"camel": "m105.23692,274.01276c10.42601,-6.85904 -13.23158,-12.66162 -16.74452,-19.13904c-10.34003,-12.71768 -13.56136,-29.62202 -16.44211,-45.3219c4.95107,-8.43617 2.94567,-17.1517 4.73958,-25.91959c8.77055,-13.01825 13.62244,-28.29056 22.43666,-41.26205c9.81532,2.07159 20.42883,10.03517 30.26162,13.06094c8.8764,15.9576 -7.35719,29.2457 -5.44854,44.69498c3.72314,14.40366 -6.25101,26.40735 -8.25558,39.83173c0.06986,12.69931 11.61848,25.55493 24.23922,16.82416c-0.64038,-9.26088 -18.64324,-12.13185 -10.58395,-25.1562c2.65187,-13.46596 11.34413,-24.24693 17.91676,-35.55937c-3.71349,-13.26427 1.2287,-30.0778 9.59569,-40.02118c8.49532,8.2068 14.36288,22.63718 15.66277,34.12883c0.16464,13.17332 17.70532,21.98904 17.37173,37.50392c1.31061,13.71669 7.73416,26.77841 16.64259,34.21387c4.65822,9.68192 33.56361,4.63116 18.16859,-6.87111c-12.71291,-11.47281 -27.33986,-23.63953 -29.27029,-41.92267c-5.27388,-10.85303 6.84843,-26.2316 -8.03899,-30.76501c0.92262,-14.70679 -2.97293,-31.40077 5.40811,-44.51862c12.07202,-10.31686 29.7518,-11.08165 41.29709,-22.49498c14.0099,-9.28757 21.96306,-24.50421 26.44456,-40.2729c6.78918,-7.60537 17.33322,-24.04447 29.06323,-15.49826c11.50851,7.1165 3.01477,-10.78561 9.62354,-14.73589c-5.45358,-19.67866 -27.58679,-10.231 -41.40082,-15.14074c-12.54193,-8.39989 -25.52765,-3.55679 -34.67496,6.0378c-6.85069,3.08698 -3.14447,11.16754 3.57637,8.12783c-4.82072,16.0155 -11.46542,33.6401 -26.07742,43.1243c-16.7653,7.33572 -26.11705,-14.39821 -36.07204,-23.83146c-10.86565,-10.63506 -17.60231,-26.15123 -31.2878,-33.45204c-19.0355,-4.82 -33.49794,11.89507 -47.87449,21.30644c-14.26775,7.14342 -31.39994,10.67369 -41.13367,24.60683c-16.15372,19.41527 -5.91326,48.70807 -22.89915,67.80049c-6.99636,10.58755 -22.39972,18.21231 -20.28306,32.7636c7.50211,15.58318 0.92728,34.18239 5.02367,50.94881c3.02735,12.11708 7.50982,27.68176 22.18437,29.48123c11.54434,7.31882 17.83198,-8.01192 5.60827,-12.45197c-14.75563,-6.55614 -16.77197,-25.01053 -17.95741,-39.18628c-3.25454,-14.0275 7.86033,-23.30806 12.45064,-34.31837c-3.87635,-10.75487 9.79252,-25.37375 18.46243,-23.19664c-6.47958,9.9541 -15.94005,22.87103 -0.60315,31.06966c-0.20134,0.50305 2.25023,-9.18846 6.19941,-12.10042c-0.58951,-7.59273 -8.29086,-14.05685 -0.12206,-21.73929c14.33151,-9.55606 11.17263,18.16365 8.19696,26.02383c-0.15744,12.07039 -16.33567,21.65707 -8.0749,33.75336c9.04985,14.91904 13.29631,32.04613 16.76897,48.94904c4.98299,14.02148 17.57185,24.27618 33.31381,20.65268l2.58825,-0.02829z",
+	"hare": "m95.22337,299.53546c-10.68459,-4.81824 3.25798,-14.45154 8.53654,-18.71286c3.55556,-3.28177 -20.37717,0.46036 -10.27298,-10.93198c11.08577,-9.30692 6.89815,-25.05217 -4.18282,-32.37115c-15.24973,-10.2968 -34.81611,-19.10942 -40.44992,-38.33635c-5.69662,-11.9756 7.81301,-24.58835 -0.87631,-35.40263c-6.99412,-14.0412 1.177,-28.68323 6.25594,-41.69022c2.33568,-17.99253 -11.97227,-32.2212 -19.84076,-47.00306c-9.74298,-14.12588 -15.35928,-30.58578 -16.16633,-47.73895c-2.11884,-7.3217 0.22601,-18.6921 8.68694,-8.82097c17.71845,14.18765 37.17033,27.65002 49.57116,47.06949c2.34735,7.01447 11.74658,27.34441 12.27144,8.93449c0.24582,-25.30315 7.97399,-52.90002 27.77682,-69.85634c13.46954,-12.2734 20.73361,9.21683 21.36209,20.13735c3.50587,21.487 -2.30553,42.79486 -8.78146,63.09225c-2.37738,9.43285 -8.56868,35.2823 9.08899,25.75117c40.67693,-15.70451 89.96005,0.78945 116.45525,34.52606c12.17961,16.33485 17.5135,37.32133 17.39308,57.47189c-6.27155,11.83836 17.03061,-0.22177 8.58704,13.43613c-4.97064,15.1297 -19.01465,23.33925 -28.85207,34.75906c-10.01038,9.15085 -2.58298,28.71576 -19.13725,31.59863c-24.15469,7.44629 -49.5191,10.70804 -74.66498,12.6066c-14.07156,2.88287 -20.90056,-13.20758 -7.41347,-19.89679c6.46608,-9.96799 24.96535,-10.66653 30.46185,-12.24564c-13.13484,1.28516 -29.33337,-4.0759 -40.40141,4.05872c-6.70294,10.88138 -12.07141,25.20364 -26.12755,28.30951c-6.3168,1.75439 -12.8116,3.16129 -19.27982,1.25558z",
+	"chick": "m76.6114,300.49948c-0.94218,-11.68399 1.80264,-23.81186 -2.78349,-35.22473c-7.45612,-25.10127 -23.93798,-47.16536 -31.36633,-72.21014c-3.21228,-16.80365 -8.65163,-34.79272 -2.2363,-51.43718c9.2771,-20.44891 24.58445,-39.1077 45.00853,-51.46853c11.45798,-6.87112 33.39433,1.8131 33.44485,-16.51133c3.62297,-20.89642 15.43811,-40.3082 30.48538,-56.28489c17.86485,-17.49571 47.98021,-20.77926 71.28149,-10.72216c13.19823,4.36545 26.92773,11.92505 29.85556,25.342c-2.0408,13.23198 13.36339,22.40786 12.41484,34.53756c-13.98409,-0.03379 -27.4267,2.25514 -39.10866,9.99602c-8.20006,3.8867 -26.4511,6.08187 -12.88864,15.86904c12.71146,21.22634 12.39029,48.02362 0.02443,69.35255c-8.24092,16.61523 -18.78058,33.14909 -36.37866,43.00504c-13.36313,9.14961 -27.77914,16.93257 -42.68192,23.79149c-11.62872,11.1774 5.32764,27.26614 9.71201,38.8335c3.36447,3.54044 4.524,10.84882 11.15869,9.08932c15.28535,0.25418 32.76015,-1.9313 44.98404,7.81229c-8.94319,8.25949 -25.89421,-1.41025 -38.02573,4.80051c-8.78024,5.75812 -19.06332,7.43823 -31.36371,7.58014c-13.23612,4.30203 -27.23189,-3.61423 -39.08569,1.66962c-4.11388,0.41238 -8.38321,3.40195 -12.45068,2.1799zm58.28394,-16.2124c-4.84233,-9.87674 -20.53861,1.56897 -6.10292,2.32874c2.30783,-0.47092 12.8125,3.03821 6.10292,-2.32874zm-17.85122,-4.32443c14.82944,-9.3367 7.74453,-25.48042 -1.79045,-35.63309c-3.24258,-2.97528 -4.73457,-8.94336 -9.13439,-9.94019c-6.73362,0 -13.46722,0 -20.20084,0c-4.65086,8.49229 -2.48404,17.86589 0.89217,26.43201c3.51066,10.88467 6.16319,28.60654 23.56189,23.00385c2.6806,-0.4599 4.89924,-2.07458 6.67162,-3.86258z",
+	"eagle": "M 239.0984 143.2141 C 239.0984 143.2141 268.4178 149.6291 275.3813 171.8064 C 275.3813 171.8064 281.6116 180.4208 279.7792 185.0029 C 277.9468 189.5849 275.0147 191.0512 274.2818 191.6011 C 274.2818 191.6011 277.9468 187.3855 265.486 180.604 C 265.486 180.604 259.0723 179.5043 257.7896 178.4046 C 256.5069 177.3049 237.6325 173.6392 233.601 182.8034 C 229.5696 191.9677 228.6534 207.3635 229.2031 208.0966 C 229.7528 208.8297 248.444 222.7594 250.0932 226.7916 C 251.7424 230.8238 260.5383 239.0715 264.3865 238.8883 C 268.2346 238.7051 277.397 238.7051 279.7792 235.5892 C 282.1613 232.4733 289.1248 232.1068 290.774 235.5892 C 292.4232 239.0715 291.8735 238.8883 291.8735 238.8883 C 291.8735 238.8883 297.7374 237.6054 299.5699 242.1874 C 301.4023 246.7695 296.8211 248.7856 296.2714 248.7856 C 295.7217 248.7856 299.7531 241.8208 294.0724 243.2871 C 294.0724 243.2871 290.774 243.4246 290.774 242.1874 C 290.774 240.9502 292.6981 248.6482 290.774 248.7856 C 290.774 248.7856 284.3145 241.6376 283.0776 245.4865 C 283.0776 245.4865 278.9546 246.3113 277.5802 246.5862 C 276.2059 246.8611 276.4807 247.6859 276.4807 247.6859 C 276.4807 247.6859 272.9074 249.0605 275.3813 253.1844 C 275.3813 253.1844 275.3813 254.6965 274.2818 255.3839 C 273.1823 256.0712 274.969 259.3703 279.7792 256.4836 C 279.7792 256.4836 281.0161 255.3839 280.8787 256.4836 C 280.7412 257.5833 275.931 263.4942 269.8839 255.3839 C 269.8839 255.3839 267.6849 249.198 270.9834 247.6859 C 274.2818 246.1738 269.8839 243.1496 265.486 245.4865 C 265.486 245.4865 265.2111 249.8853 266.5854 250.985 C 267.9598 252.0847 264.249 251.1225 263.287 249.8853 C 262.325 248.6482 261.088 252.4971 261.088 253.1844 C 261.088 253.8717 259.8511 256.2086 258.8891 255.3839 C 257.927 254.5591 248.8563 253.5968 248.9937 254.2841 C 249.1312 254.9715 244.7333 257.8582 243.4963 256.4836 C 242.2594 255.1089 235.3877 248.0983 234.7005 248.7856 C 234.0133 249.4729 239.3733 257.1709 242.3969 258.683 C 245.4204 260.195 258.0645 261.1573 262.1875 257.5833 C 262.1875 257.5833 268.5095 256.3461 268.7844 257.5833 C 268.7844 257.5833 275.931 260.47 275.3813 261.9821 C 274.8315 263.4942 274.8315 262.6694 274.2818 261.9821 C 273.7321 261.2947 269.1967 258.8204 268.7844 259.7827 C 268.3721 260.7449 268.7844 260.8824 268.7844 260.8824 C 268.7844 260.8824 274.5567 262.5319 274.2818 263.0818 C 274.2818 263.0818 281.0161 265.831 279.7792 271.8794 C 279.7792 271.8794 277.7177 273.3915 277.5802 271.8794 C 277.4428 270.3673 278.4048 266.2434 274.2818 266.3809 C 274.2818 266.3809 273.5946 268.5803 270.9834 267.4806 C 268.3721 266.3809 272.4951 264.044 258.8891 265.2812 C 258.8891 265.2812 259.4388 267.893 261.088 268.5803 C 262.7372 269.2676 265.486 269.2676 265.486 271.8794 C 265.486 271.8794 267.2726 274.0788 265.486 276.2782 C 265.486 276.2782 264.3865 276.9655 264.3865 276.2782 C 264.3865 275.5909 265.486 272.2918 259.9886 270.7797 C 254.4911 269.2676 255.5906 269.68 255.5906 269.68 C 255.5906 269.68 256.5527 276.2782 254.4911 276.2782 C 252.4296 276.2782 255.8655 280.4021 259.9886 278.4776 C 259.9886 278.4776 260.4008 276.8281 261.088 277.3779 C 261.7752 277.9278 257.6522 285.9006 250.0932 276.2782 C 250.0932 276.2782 247.6194 271.1921 250.0932 269.68 C 250.0932 269.68 251.7424 264.5939 243.4963 266.3809 C 243.4963 266.3809 240.0605 266.9307 240.1979 266.3809 C 240.3353 265.831 239.6482 268.9927 240.1979 269.68 C 240.7476 270.3673 233.7384 268.1679 233.601 267.4806 L 231.4021 267.4806 C 231.4021 267.4806 232.6848 273.8956 233.601 274.0788 C 234.5172 274.262 229.3864 270.9629 228.1036 268.5803 C 228.1036 268.5803 228.1036 273.1623 229.2031 274.0788 C 230.3026 274.9953 224.2554 269.1301 224.8052 268.5803 C 224.8052 268.5803 224.9884 274.4454 227.0041 277.3779 C 229.0198 280.3104 222.6062 274.6287 221.5067 272.9791 C 221.5067 272.9791 220.4073 273.7122 221.5067 275.1785 C 222.6062 276.6448 217.8418 273.7122 217.1088 269.68 C 217.1088 269.68 213.9936 267.114 212.7109 266.3809 C 212.7109 266.3809 212.8941 272.6125 213.8104 272.9791 C 213.8104 272.9791 211.2449 270.9629 210.5119 268.5803 C 210.5119 268.5803 209.046 270.7797 209.4124 271.8794 C 209.4124 271.8794 205.1978 267.114 203.915 263.0818 C 202.6323 259.0496 202.8156 264.1815 202.8156 264.1815 C 202.8156 264.1815 200.2501 263.8148 198.4176 256.4836 C 198.4176 256.4836 187.7893 267.6638 184.1244 268.5803 C 180.4595 269.4967 188.5223 264.1815 188.5223 264.1815 C 188.5223 264.1815 182.4752 266.0143 181.9254 267.4806 C 181.9254 267.4806 182.4752 265.4644 185.2239 263.0818 C 187.9726 260.6991 181.9254 261.9821 181.9254 261.9821 C 181.9254 261.9821 180.6427 261.6154 180.826 249.8853 C 180.826 249.8853 172.5798 258.683 167.6322 258.683 C 162.6845 258.683 172.2134 255.0172 173.1296 252.0847 C 174.0458 249.1522 171.1139 250.0686 169.8311 250.985 C 168.5484 251.9015 159.0196 257.4 158.8363 258.683 C 158.6531 259.9659 157.7369 256.4836 157.7369 256.4836 C 157.7369 256.4836 155.5379 257.5833 153.3389 257.5833 C 151.14 257.5833 159.7525 253.5511 161.0353 250.985 C 162.3181 248.419 149.1243 255.5671 144.5431 258.683 C 144.5431 258.683 140.6949 259.9659 140.1452 258.683 C 139.5954 257.4 146.7421 252.4514 146.7421 252.0847 C 146.7421 251.7181 149.3075 248.6024 144.5431 250.985 C 139.7787 253.3677 133.5483 251.5349 129.1504 253.1844 C 124.7524 254.834 119.9881 259.9659 113.7576 259.7827 C 107.5272 259.5994 107.5287 267.4806 96.166 267.4806 C 89.5691 267.4806 92.3178 270.0466 89.5691 269.68 C 86.8204 269.3134 92.8675 266.3809 92.8675 266.3809 C 92.8675 266.3809 86.2706 268.5803 85.1712 268.5803 C 84.0717 268.5803 79.124 268.7635 90.6685 264.1815 C 90.6685 264.1815 82.2392 264.1815 85.1712 263.0818 C 88.1031 261.9821 95.433 259.7827 95.0665 258.683 C 94.6999 257.5833 87.1869 257.7665 89.5691 256.4836 C 91.9512 255.2006 104.9618 250.4352 101.6634 249.8853 C 98.3649 249.3355 93.6005 249.1522 96.166 247.6859 C 98.7315 246.2196 130.2498 242.7373 134.6478 238.8883 C 139.0457 235.0393 150.407 223.8591 153.3389 223.4925 C 156.2709 223.1258 153.3389 220.3766 151.14 221.293 C 148.941 222.2095 146.9253 220.7432 147.8415 214.6948 C 148.7578 208.6465 138.4111 227.9581 132.4488 221.293 C 129.3336 217.8107 131.7158 215.2447 128.0509 215.7945 C 124.386 216.3444 124.5692 211.7623 123.653 213.5951 C 122.7368 215.4279 115.0404 226.7916 111.5587 225.6919 C 108.077 224.5922 110.6425 223.8591 108.2602 223.4925 C 105.878 223.1258 104.2288 222.3928 103.8623 220.1933 C 103.4958 217.9939 101.2969 221.6597 100.5639 217.9939 C 99.8309 214.3282 99.2812 209.7462 96.166 213.5951 C 93.0507 217.4441 91.9512 214.8781 91.768 213.5951 C 91.5848 212.3122 84.9879 214.3282 85.1712 210.296 C 85.3543 206.2638 78.7575 211.579 79.6737 206.9969 C 80.59 202.4149 74.1008 206.3759 75.2758 202.5981 C 77.8413 194.3503 66.48 201.865 67.5795 198.1993 C 68.6789 194.5336 62.2653 197.4662 63.1815 193.8005 C 64.0978 190.1348 57.0803 191.408 57.6841 188.302 C 58.9668 181.7037 51.0873 186.2858 52.1867 180.604 C 53.2862 174.9223 47.1832 180.5659 47.7888 176.2052 C 48.7051 169.607 39.9352 172.0031 42.2914 167.4076 C 45.9564 160.2595 38.5229 163.3323 40.0924 159.7097 C 42.4746 154.2112 24.7867 160.3197 29.0976 150.912 C 31.1134 146.5132 17.126 143.5845 23.6002 139.915 C 34.595 133.6834 6.7416 136.7991 20.3018 126.7186 C 32.9458 120.8535 33.7206 120.3011 18.1028 121.2201 C 11.8724 121.5867 2.5268 112.9723 11.506 112.4224 C 20.4851 111.8726 38.8097 107.4738 18.1028 105.8242 C -2.604 104.1747 -3.337 96.66 4.9091 97.0266 C 13.1552 97.3932 45.4066 97.3932 36.794 94.8272 C 28.1814 92.2612 -11.234 85.9902 3.8096 79.4314 C 10.9562 76.3155 61.3141 92.8826 46.6893 81.6308 C 44.3072 79.798 21.0348 73.1997 12.6054 64.0355 C 4.1761 54.8713 5.8253 53.5883 10.4065 55.2379 C 14.9877 56.8874 68.1289 81.0809 59.8831 72.8331 C 58.4171 71.3668 27.9982 56.8874 23.6002 44.2409 C 19.2023 31.5943 23.417 34.8934 26.8987 38.7423 C 30.3803 42.5913 80.384 79.3466 71.9774 67.3346 C 69.4119 63.6689 47.0559 49.0063 42.2914 34.3435 C 37.5269 19.6808 41.1919 23.7131 44.4904 27.7453 C 47.7888 31.7775 98.7414 86.7135 90.6685 67.3346 C 88.8361 62.9358 72.7103 49.1895 70.8779 36.5429 C 69.0455 23.8963 73.8098 28.6618 76.3753 33.2438 C 78.9408 37.8259 115.0404 94.8272 115.9566 84.9299 C 115.9566 84.9299 116.1399 85.1131 117.0561 84.9299 C 117.9723 84.7466 116.3231 79.6146 118.1556 80.5311 C 118.1556 80.5311 118.8886 76.4989 120.3545 77.2319 C 121.8205 77.965 123.2865 77.4152 123.653 72.8331 C 124.0194 68.2511 134.831 73.5662 137.9462 97.0266 C 137.9462 97.0266 140.1452 99.4063 140.1452 104.7245 C 140.1452 107.4738 153.3389 120.8535 161.0353 120.1204 C 168.7317 119.3873 179.7265 135.5162 183.0249 136.6159 C 186.3233 137.7156 193.6532 144.3138 205.0145 137.7156 C 216.3758 131.1174 227.5539 128.918 218.2083 127.8183 C 208.8627 126.7186 210.6952 123.0529 214.9099 122.3198 C 219.1245 121.5867 237.4492 121.2201 231.4021 117.921 C 225.3549 114.6218 220.1312 96.9955 228.1036 101.4254 C 231.4021 103.2582 243.1161 119.5447 241.2974 108.0236 C 240.7476 104.5413 233.601 100.3257 235.8 88.229 C 237.9989 76.1322 241.0477 85.756 241.2974 87.1293 C 241.6639 89.1454 250.5537 114.1767 252.2922 101.4254 C 252.8419 97.3932 248.2608 92.0779 250.0932 77.2319 C 251.9256 62.386 254.4911 77.2319 254.4911 77.2319 C 254.4911 77.2319 259.7195 92.4352 258.8891 100.3257 C 258.5225 103.8081 263.6535 102.5251 263.287 95.9269 C 262.9204 89.3287 260.1718 74.8493 262.1875 75.0325 C 264.2033 75.2158 270.2428 84.8483 268.7844 92.6278 C 268.2346 95.5603 276.664 98.4929 267.6849 104.7245 C 258.7059 110.9561 248.9937 123.4195 248.9937 123.4195 C 248.9937 123.4195 251.1661 131.4743 240.1979 135.5162 C 233.2345 138.0822 239.0984 143.2141 239.0984 143.2141 Z",
+	"cormorant": "m143.5415,0.99936c-4.24326,11.41716 -19.29625,4.15632 -24.74561,12.50427c0.52748,6.07653 -8.29025,7.80436 -13.00653,8.43892c-8.50133,3.84879 -22.80692,-4.79845 -26.45377,4.01417c10.96676,1.70561 23.50823,0.97173 33.37776,7.63992c6.81084,8.30698 18.80501,9.32233 23.86815,19.00227c5.01492,11.90637 0.21405,24.79235 -6.1066,35.16777c-5.40714,11.63457 -14.24293,22.0266 -17.15868,34.6068c0.20795,13.02319 4.72718,25.69211 3.20084,38.80902c0.9605,10.14279 6.64024,19.14648 10.04536,28.64983c5.00912,10.57565 9.93535,21.70013 17.62276,30.53665c7.02892,8.87558 29.89705,11.67009 23.64502,24.91443c-4.01926,11.10844 -7.40147,24.48637 -19.39478,29.5565c-9.50977,5.9848 -21.3932,8.93677 -29.06369,17.37073c3.84956,0.36453 28.16327,-14.36331 23.8996,1.69739c-9.52658,11.2518 16.95053,-0.69223 23.42963,-2.18207c4.74442,-0.99915 4.29691,14.62488 8.52766,3.80228c5.95903,-10.08762 6.23502,-21.34366 11.26126,-30.51312c2.4781,-10.25645 3.82962,7.94009 9.64467,10.12222c7.07556,9.50238 7.79694,-14.07236 11.23129,-19.70615c2.62747,-8.54028 4.63826,-23.31885 8.02322,-27.91885c0.19868,-2.83281 6.58795,3.93147 5.0274,-3.78851c0.90347,-23.48584 -1.83659,-48.86755 -15.67365,-68.59196c-9.60602,-8.62669 -13.22336,-21.57266 -21.36568,-31.47811c-10.01912,-4.8186 -8.05391,-19.66993 -20.19205,-21.12443c-2.75856,-10.2361 2.62035,-22.86311 4.63016,-33.73514c2.78795,-10.12834 8.4742,-20.66132 3.52232,-31.15684c-3.76698,-10.86702 -11.83783,-21.03737 -23.57631,-23.51091c-5.21049,-2.63619 -9.89668,-4.17218 -2.89241,-7.84742c4.71588,-7.73713 -7.28709,7.39913 -1.58588,-2.982l0.25854,-2.29765l-0.00003,0zm-57.08003,24.11987c12.78673,0.33177 -8.83535,0.35227 0,0zm92.46721,218.72338c11.05893,4.6954 0.80228,21.55537 -5.46918,26.98338c-13.1071,-3.20859 2.39713,-19.21964 5.46918,-26.98338l0,0zm-10.64413,31.82323c-5.88483,2.41168 -15.44353,4.13849 -3.83093,0.46683l1.97208,-0.34274l1.85886,-0.12408z",
+	"crow_2": "m299.86716,62.24508c-8.36279,-13.35279 -25.79254,-10.94299 -38.7652,-13.97612c-10.77151,-4.46517 -27.26852,-8.74568 -34.93257,4.02601c-10.22766,11.92024 -19.30536,24.77381 -27.38379,38.20519c-16.9417,18.56395 -37.51366,33.44937 -58.19264,47.49408c-17.41919,8.55826 -36.48907,15.23247 -50.59015,29.17691c-26.77713,17.17799 -59.39612,20.30975 -89.00278,30.37996c5.24787,1.82477 28.48156,-4.80739 12.86404,2.45506c-11.61908,3.82678 4.57293,7.38318 9.74338,4.83008c-4.08242,4.36552 -5.2054,4.72249 -0.18473,4.65681c-9.12115,5.09712 20.25491,-1.58305 4.07883,5.5506c-7.04263,2.05971 -24.35976,21.06046 -8.48079,12.5005c14.76321,-6.14401 30.50038,-9.23448 45.85791,-13.45705c-11.48634,11.80891 -27.85513,19.19374 -35.74965,34.16698c0.17943,3.86479 12.21982,-7.85281 17.31087,-9.77229c28.95095,-17.49719 59.28473,-33.71347 91.89844,-43.16046c4.45381,1.07288 5.32478,12.99994 14.00563,6.90237c0.76199,7.59987 19.82927,-11.92125 14.84979,3.30377c8.25793,-13.03635 -0.01482,14.1528 7.62892,18.26904c3.90089,5.15268 19.92041,12.26512 6.86195,14.03082c-5.77165,8.63597 8.09146,-3.46425 11.11865,4.62627c11.3129,4.10901 3.07231,8.32173 -5.11652,5.83363c-6.27592,-0.83809 -7.57079,7.40965 -1.22719,2.29182c7.57507,5.19347 19.60568,3.32813 29.26515,5.56088c9.65308,0.80066 21.35422,-9.88435 25.01279,-7.29437c-8.89755,-6.38512 -21.77765,1.41119 -31.54323,-3.51736c-2.05963,-6.62599 22.89082,2.37143 22.94131,-8.82851c11.68727,-1.08766 -9.82895,-2.59717 -14.00406,0.04509c-14.38026,0.76889 -21.75813,-12.59969 -31.88164,-20.19017c0.30659,-15.75429 11.86186,-29.28856 23.95569,-38.18524c15.77855,-9.50124 31.96706,-21.73888 36.43575,-40.70174c4.63271,-16.88809 7.21239,-34.29048 9.31848,-51.60873c2.84918,-11.17406 11.03882,-21.49306 23.60089,-20.65947c6.77469,-0.94415 13.57404,-1.72816 20.30646,-2.95438z",
+	"crow": "m65.63132,15.69366c7.23991,-11.19251 23.71874,-13.17996 36.20271,-14.69413c13.92134,1.25098 24.65079,12.10254 32.81262,22.59631c9.49452,8.5772 21.08662,15.85565 25.83853,28.41352c12.01437,5.95259 26.19815,9.13653 33.55229,21.87244c11.11548,14.36729 17.52112,31.75739 23.31628,48.60368c0.92021,12.5585 6.47,24.01521 8.36046,36.46043c3.24197,12.33818 5.82637,24.53572 9.31963,36.76498c3.88237,12.71416 9.39792,24.81319 13.2628,37.54517c7.05891,11.17328 13.48564,22.96204 17.86821,35.4054c-10.48648,-0.88873 0.96857,15.8573 2.93524,22.45895c2.86746,13.58783 -12.84537,5.80856 -15.59308,-0.46634c-9.70456,9.1796 -29.57259,11.24072 -38.3669,-0.80743c-9.26392,-12.20752 -14.38051,-27.69696 -27.16855,-36.53391c-5.02811,-4.18506 -9.90665,-22.45958 -11.7061,-6.32031c6.38489,16.05743 -18.74254,6.90547 -27.66772,9.78912c-15.99664,-3.21661 6.07263,-12.35889 12.86923,-11.27576c6.38602,-6.35408 17.01372,-16.99594 1.7589,-20.33147c-10.44731,-4.15326 -23.84068,-14.68553 -29.71439,0.99188c-7.37552,3.90117 -20.59412,22.40862 -5.95329,23.77255c5.91614,12.10878 -17.0737,3.35048 -23.49316,6.21452c-6.05255,1.90814 -21.13758,-1.4375 -7.08788,-4.49867c12.08796,-1.9845 17.85132,-16.8317 25.44044,-25.82515c-0.25166,-11.53856 -9.48829,-20.69617 -16.41167,-29.40816c-7.36517,-12.27962 -17.64172,-22.79747 -22.75925,-36.23717c-3.35689,-13.95544 -9.74807,-26.85826 -12.98938,-40.84583c-3.65936,-14.01762 -7.85575,-29.82359 0.01893,-43.25633c3.58914,-11.78534 5.08364,-22.78083 -2.44828,-32.4814c-10.40722,-8.4583 -25.19866,-5.06594 -37.19873,-10.67507c-1.4463,-9.05923 17.76661,-12.5158 26.11695,-14.53937c3.17027,-0.11009 5.59681,-2.76167 8.88516,-2.69248z",
+	"duck": "m185.95239,299.43112c-13.71118,-7.29123 11.45862,-7.3541 17.23322,-7.85522c14.99724,-0.2811 17.02971,-18.28448 15.48773,-29.74414c-2.1938,-4.69699 -0.04752,-14.89349 -7.7746,-13.37029c-15.43901,-0.71622 -30.7112,-4.55923 -44.14467,-12.22302c-0.82443,12.88171 -7.29927,24.66777 -11.6053,36.85115c-5.66316,6.16721 14.39644,28.18469 0.43378,18.34869c-9.04433,-8.40845 0.06526,8.74658 -11.16418,3.91656c-15.23827,-0.31436 -31.02578,2.40784 -45.91216,-1.24551c-5.00268,-2.09833 -20.66561,0.51883 -9.25531,-6.49301c6.4804,-1.18185 12.15667,4.48007 17.05421,-2.03778c11.5948,4.79346 30.04866,4.82639 34.25867,-10.28015c7.00595,-11.43338 11.29851,-24.25136 11.56012,-37.68254c-8.2043,-6.31854 -14.70296,-14.48831 -18.43434,-24.21049c-8.62861,-14.22275 -24.3753,-22.02206 -37.28508,-31.87471c-17.12926,-11.15475 -36.8522,-23.99915 -40.20823,-46.00098c-4.08031,-16.32172 0.02216,-34.19492 11.59384,-46.57394c7.80417,-11.16946 22.31328,-21.55052 18.99293,-36.88489c-8.43674,-15.00933 -26.68094,1.9423 -34.96601,9.23433c-9.98,7.06196 -20.71845,24.17017 -34.34288,16.49594c-1.7172,-11.61691 13.7034,-18.90693 17.498,-29.74388c7.8585,-12.19844 12.51045,-26.37627 18.95516,-38.92993c11.65712,-10.85135 30.93148,-10.91782 42.45155,0.28526c14.7008,11.44654 23.86826,29.5425 22.42876,48.35335c1.4173,12.98959 -4.14301,29.91504 8.25453,38.93287c17.92052,9.9613 39.04935,12.35098 57.26444,21.89838c22.77972,10.51788 39.86913,29.49796 59.04057,45.11781c11.7964,10.71736 23.92368,21.11819 35.13879,32.44618c-7.49713,-2.24278 -14.43054,-6.05879 -21.60767,-9.15805c9.28815,12.08043 13.46152,26.94177 15.66077,41.78857c3.61584,15.73579 13.73315,31.11919 8.65729,47.77711c-4.42633,13.85214 -18.52838,-8.55096 -25.42393,-12.47198c-7.88147,-7.42908 -15.67812,-16.62666 -27.10399,-17.90884c-2.06194,13.35767 -4.18094,27.25305 -1.83514,40.63339c1.37479,11.84998 25.0215,4.73886 21.59566,13.51175c-19.80942,-2.16162 -39.69846,-0.3399 -59.55595,-0.59872l-2.94055,-0.30328l0,0z",
+	"fish": "m127.20683,242.3436c1.50244,-15.94504 5.02446,-32.41927 12.88557,-46.10178c7.51215,-8.98547 19.63693,-8.71681 29.76314,-11.79086c-14.18819,-3.80443 -27.43222,-10.54059 -40.42705,-17.66788c-21.27006,-9.23157 -42.92073,4.06975 -62.09324,13.40138c-14.23518,6.80144 -28.31641,14.82532 -43.64474,18.1933c-10.05519,-6.98578 -1.65744,-26.80461 5.41335,-35.17271c8.9525,-11.55655 22.2043,-17.52696 31.90982,-28.07993c4.26963,-14.90575 -15.40321,-18.57297 -24.24153,-24.42971c-13.70577,-6.20512 -25.35116,-16.36843 -35.77064,-27.71589c24.19748,-1.40994 45.60231,13.61476 67.43612,22.73716c11.80957,4.27464 22.94788,10.28683 33.98999,16.23396c5.06265,-0.02556 22.24189,3.73252 20.52978,-2.03984c-12.8773,-0.57095 -11.58655,-17.22836 -2.92075,-23.83247c12.73701,-10.02242 28.26479,-15.93932 38.86842,-29.21478c4.65193,-3.7341 7.09996,-12.86792 11.03157,-15.74994c16.95282,13.24852 26.87143,34.14735 36.22475,53.96581c15.23062,3.44089 30.61246,6.23184 46.13637,7.07419c15.15991,6.93107 28.10406,19.01068 39.97369,31.27808c8.99451,6.78525 11.39157,25.24843 -0.83481,28.95241c-30.16479,16.24658 -63.84666,21.21309 -97.06413,22.77441c-4.67992,-0.32996 -8.75485,0.18372 -8.78621,6.33609c-2.92581,8.76227 -4.12184,18.94467 -9.62984,26.07907c-6.07878,-1.55455 -0.31998,-19.45975 -6.56294,-10.95245c-12.27982,13.32922 -27.04962,23.32567 -42.18671,32.26515c0,-2.18091 -0.00002,-4.36198 0.00002,-6.54276z",
+	"shark": "M 0.0576 184.3533 C -1 180.6667 16.109 171.9119 28.5757 164.4365 C 38.4736 158.5251 49.2812 151.3596 59.5749 145.0374 C 68.1791 139.7532 87.1667 130.8333 89.3069 125.0559 C 91.8073 118.3062 96.2785 105.8677 101.081 96.5857 C 104.7343 89.4927 111.6667 80.1667 115.4351 80.0032 C 116.8965 79.9398 118.1484 83.3223 118.1484 83.3223 C 118.1484 83.3223 122.1099 105.8601 130.8815 116.7246 C 134.3825 121.0713 144.5294 120.8968 148.261 120.6279 C 173.1667 118.8333 205.8755 122.4387 205.8755 122.4387 C 205.8755 122.4387 216.5042 115.1404 218.2813 114.3643 C 222.787 112.4434 218.2767 117.0532 229.4009 125.4153 C 235.5 130 238.8499 128.6677 243.6637 127.1807 C 245.6044 126.5642 246.7613 124.552 248.3672 123.3879 C 250.4222 121.9041 291.7726 94.0098 295.9696 92.7549 C 300.1667 91.5 299.9836 99.5272 299.2917 101.4797 C 291.6667 123 270.9678 137.8057 270.9678 137.8057 C 270.9678 137.8057 269.3696 140.9553 270.0887 144.2822 C 270.7395 147.3027 281.8333 169.5 276.0176 168.1533 C 273.6004 168.4127 267.6419 165.6692 267.6419 165.6692 C 267.6419 165.6692 261.6635 162.3462 257.3862 157.6331 C 254.3608 154.2813 252.5989 149.0752 252.5989 149.0752 C 252.5989 149.0752 251.2239 144.8431 247.1571 143.6204 C 237.3333 140.6667 229.9983 144.0425 227.4753 146.9565 C 225.3138 149.4482 226.6418 153.6443 226.6418 153.6443 C 226.6418 153.6443 229.6977 156.9539 227.8292 157.125 C 219.7236 157.823 215.9372 151.9265 210.3013 148.6626 C 208.3377 147.5349 205.3333 145.6667 200.2473 149.5073 C 197.6903 151.4382 195.8333 161.3333 191.8562 164.625 C 189.1771 166.8424 184.8923 164.2864 184.8923 164.2864 C 184.8923 164.2864 178.3735 162.0303 173.7651 161.9048 C 152.75 172.25 114.5828 181.7512 114.5828 181.7512 C 114.5828 181.7512 119.6706 187.7639 122.3383 191.9104 C 123.6625 193.978 123.6093 195.7603 123.6093 195.7603 C 123.6093 195.7603 124.9374 198.5923 122.1708 198.9861 C 120.5306 199.2144 104.5744 196.5801 96.0502 193.2532 C 88.873 190.4495 83.203 186.3447 83.203 186.3447 C 83.203 186.3447 57.0849 188.4819 40.3333 189.1667 C 30.5761 189.551 1.5102 189.4165 0.0576 184.3533 Z",
+		"dolphin": "M151.054, 51.526c-5.487, 2.029-10.494, 4.734-15.541, 7.145c-1.72, 0.821-3.674, 2.126-5.268, 2.525c-4.062, 1.013-10.418-0.759-15.596-0.944c-12.942-0.459-21.321, 0.493-31.96, 2.097c-4.979, 0.749-10.134, 1.451-14.504, 2.732c-3.733, 1.095-8.013, 3.542-12.19, 5.6c-6.601, 3.253-11.097, 6.316-16.244, 10.238 c-8.603, 6.551-14.019,  14.798-20.314, 23.859c-2.749, 3.955-6.708, 9.848-6.905,  14.528c-3.639, 5.515-9.168, 8.882-10.555, 16.955c1.939, 4.721,  6.964, 0.523, 9.992-1.049c2.504-1.304, 5.198-2.862, 7.417-3.487c11.533-3.251, 27.605,  1.396,  38.834-1.583c3.98-1.055, 7.428-3.185, 11.382-4.087c3.755-0.859, 6.627,  0.662,  9.304, 1.818c1.422, 0.616, 2.92, 1.45, 4.212, 2.113 c8.366, 4.323, 16.728, 8.906, 27.96, 10.632c9.015, 1.383, 16.847-1.256, 24.175-2.682c1.86-0.363,  4.263-0.231, 5.674-1.819 c-5.849-1.321-10.703-3.574-16.811-5.979c-8.023-3.156-14.255-5.291-17.287-11.627c3.591-0.94, 7.75-0.243, 11.488, 0.412 c4.082, 0.712, 8.133, 1.381, 12.05, 2.025c16.539, 2.723, 28.995, 7.294, 41.585, 13.224c6.116, 2.877, 11.752, 6.886, 16.936, 10.251 c10.617, 6.9, 19.68, 15.468, 28.228, 24.802c3.869, 4.226, 7.325, 9.518, 11.521, 14.562c1.834, 2.205, 3.678, 4.665, 5.638, 7.388 c1.873, 2.587, 4.731, 5.758, 5.127, 8.021c0.446, 2.499-0.881, 5.239-1.549, 7.97c-1.155, 4.744-2.007, 9.833-1.62, 14.704 c0.506, 6.3, 1.914, 12.436, 4.866, 17.209c1.281-1.139, 1.804-3.144, 2.464-4.98c3.236-4.136, 7.541-8.267, 7.648-15.15 c8.839, 4.568, 26.008, 4.185, 36.316, 4.066c3.099-0.036, 6.256, 0.292, 8.823-0.913c-5.414-3.138-9.388-7.109-14.094-11.163c-7.12-6.125-13.009-11.285-23.505-14.562c-3.402-1.062-7.297-1.637-9.161-3.605c-1.433-1.506-1.869-4.842-2.596-8.055 c-1.955-8.687-4.497-17.904-6.765-25.215c-6.806-21.976-17.194-41.507-31.015-56.675c-7.004-7.692-15.368-13.956-24.386-20.921 c-1.541-2.416-4.428-5.675-5.024-9.359c-0.61-3.793, 0.49-7.122, 2.834-9.67c5.128-3.742, 13.185-4.156, 16.669-9.757 c-4.555-3.279-10.207-4.24-15.753-4.776C171.573, 47.185, 160.348, 48.085, 151.054, 51.526z",
+	"he_hen": "m176.04681,296.29803c-8.82596,-3.77927 -18.43298,1.74493 -27.86224,-3.75964c7.62581,-0.4744 19.08463,-0.03574 17.06104,-11.34488c3.33665,-13.20654 -3.43475,-27.06163 2.20258,-38.55534c-8.82878,-8.42361 -18.09561,-18.39673 -22.80272,-30.16238c-0.9447,4.74663 -1.81537,8.52257 -3.158,0.33916c-0.76965,-4.00471 -0.30261,9.89931 -3.24527,0.14346c-3.10373,-8.67493 -11.4597,-31.29446 -14.05236,-10.31462c-1.0768,10.8262 -4.45592,3.14465 -6.0004,-3.72562c-1.56924,-13.22943 -7.23737,-25.48523 -8.72193,-38.68883c5.80227,-8.36407 -0.82715,-9.5029 -3.91098,-1.15848c-3.39584,13.23767 -6.30494,26.33923 -2.7624,39.9769c-4.70789,3.85124 -13.79493,-17.92216 -9.61541,-26.27414c3.62592,-9.45018 2.81974,-19.09607 3.42313,-25.48878c3.31529,-7.21146 -3.22571,-15.04807 0.25123,-22.73853c-8.88477,9.68631 -16.83011,16.38615 -14.33428,31.58234c-1.10283,3.79079 3.703,25.58844 0.64231,17.56184c-5.77861,-15.66916 -5.78305,-33.02271 -1.43442,-49.01125c0.00535,-12.20366 -9.89253,21.0744 -9.16187,4.76299c-0.93676,-12.30159 4.13303,-25.82869 8.93452,-35.55499c-5.46675,-6.50523 -23.17289,-1.89566 -14.79648,-15.70558c8.24343,-7.01884 7.35999,-16.67057 -3.85936,-8.18394c-17.3246,12.72424 -31.69814,29.07174 -47.58007,43.52234c15.25898,-19.61487 32.46107,-38.59572 53.7519,-51.75492c20.64337,-12.99951 50.5769,-14.34346 68.38963,4.28573c4.53072,7.97979 15.06177,13.26968 17.57275,20.45337c-1.84586,10.76744 5.10652,16.10654 5.85289,25.57021c4.38731,7.30244 -3.95828,20.43125 8.52597,16.64671c14.20137,-0.01996 33.63664,-3.16645 34.74754,-20.87874c5.66772,-25.50935 8.27689,-54.0092 26.4256,-74.31131c10.08655,-5.89642 3.82147,-4.32716 -3.54926,-5.29837c-6.51613,-7.58361 6.57724,-19.75743 13.02319,-21.14511c-1.112,-17.9227 10.53479,10.74471 13.86426,-2.41437c4.99586,0.09501 7.43144,12.08141 10.46855,2.29789c9.05719,7.66376 18.6297,19.25661 6.66562,29.92943c13.61102,6.52517 -13.86911,2.29947 -2.14532,12.29652c9.6759,9.35194 2.83621,26.62759 -5.10654,34.15639c-0.3085,5.66077 9.31277,13.88494 11.24728,20.75249c9.99454,19.34809 11.9986,42.36646 8.16797,63.56847c-5.39346,19.98318 -25.46588,28.67906 -39.65833,41.37386c-12.12337,9.93893 -7.85776,27.37115 -13.59781,40.42342c0.57072,7.5369 4.77751,16.1196 10.7547,20.66925c8.66214,4.84064 18.81006,7.96561 25.81393,15.05286c-6.39667,3.34055 -19.43893,-10.21753 -19.56508,0.39017c-9.50252,-12.34393 -23.7677,-4.06104 -34.21234,-13.55405c8.69193,1.65643 19.99033,0.8027 10.47188,-9.61145c-3.75841,-8.80696 -15.07852,-11.84618 -15.37883,-22.49022c-10.66643,6.69647 -17.92447,15.81358 -25.66988,24.90395c-12.85808,-0.80322 -13.41248,25.11618 0.47165,24.73163c5.7019,1.45825 27.10161,9.40335 10.25006,7.35107c-5.02289,-0.89746 -10.47203,-4.04099 -10.31842,1.85727c-2.30338,-0.41431 -4.35982,-1.56003 -6.48019,-2.47418z",
+	"hen": "m131.70792,299.20142c-2.65045,-8.04401 -50.59061,2.01245 -25.50379,-8.40613c9.71836,-2.24731 29.67359,0.57056 9.8335,-5.50568c22.5928,7.62228 32.60569,-19.08859 34.06422,-37.09636c-21.02885,-6.55212 -24.67069,-31.02429 -46.83106,-37.61485c-16.88445,-13.23645 -41.63732,-12.83168 -52.35418,-33.24014c-10.17476,-18.17259 -4.4284,-40.29292 -2.74405,-59.92338c4.00956,-20.72375 12.14967,-41.69897 10.53991,-62.75727c-16.41068,9.44812 -22.4106,-11.67328 -22.78485,-18.27062c-12.07958,3.08904 -19.7317,3.22594 -6.59584,-7.5194c5.87008,-8.14037 8.78346,-25.92081 18.16113,-23.25189c2.47408,-10.763 9.04029,4.89351 16.30021,-4.61621c4.44867,3.35889 13.85731,7.10325 3.42817,13.02555c18.83147,9.50194 34.07959,23.95835 41.92437,42.43233c7.86127,18.77559 23.52317,39.06593 48.8149,33.98585c22.90038,3.93186 49.73083,-9.80992 48.68822,-32.86776c0.44391,-16.33654 16.52325,-54.48924 38.19395,-35.09801c16.24046,6.22802 34.92778,21.65468 31.09642,39.16159c-2.21887,18.0508 -0.50452,36.25767 1.60162,54.45551c-13.60181,10.0825 -11.15982,27.59631 -20.65894,40.7838c7.8804,18.56862 0.29095,38.62871 -12.60841,53.70848c-12.90314,13.89935 -31.76248,26.24356 -52.66508,24.4381c-7.98578,13.29396 9.42929,24.99069 15.57339,25.73553c-16.01053,-5.1321 -13.75549,4.70874 -8.47672,15.2244c4.94576,19.6875 -10.58037,-17.53909 -20.60904,0.27255c-7.77597,7.68976 -38.86531,10.29276 -13.69539,1.07587c21.48048,-7.96875 -24.12099,-12.95142 -13.99879,5.00586c3.34996,7.49203 22.77361,10.79092 2.32814,7.93628c-9.02753,-4.74515 -13.85625,12.10397 -21.02202,8.92599zm43.09088,-34.62769c7.8596,-9.56569 10.12141,-37.24054 -6.87671,-17.06372c-13.43553,10.88889 -18.29311,29.6301 6.87671,17.06372z",	
+		"mythic_unicorn_2": "m182.0204,297.85391c-5.77818,-7.90314 -14.7635,-8.80438 -16.9241,-20.05347c-1.69348,-6.11859 -17.65829,-14.32483 -8.20955,-3.3428c7.2961,6.61768 15.96432,31.02682 -1.98563,23.31473c-13.65228,-5.01041 -14.2377,-20.48209 -17.89716,-32.06519c-11.90031,-8.25644 3.07674,-25.71408 -9.73651,-36.29276c-10.87482,-11.04288 -3.30119,-31.72456 -18.8404,-39.55457c-7.79965,-3.16566 -11.1757,18.69177 -12.48895,2.70163c-4.27309,-16.17242 -19.36451,7.86156 -29.42789,5.31358c-8.12057,-0.70595 13.58361,-6.35143 3.22626,-7.87068c-6.08933,3.33348 -11.72343,9.09727 -12.68681,-0.44351c-7.3251,-4.35046 -22.68599,-11.29797 -22.28696,-18.20909c6.3611,-1.99829 27.83545,3.78387 24.11403,-4.25029c-6.38573,-2.42343 -7.54573,-9.04803 0.27553,-4.60205c15.41352,0.48352 33.48255,-5.66917 46.30758,6.09853c6.68958,4.11612 13.26701,18.87857 16.84827,4.53223c11.5443,-13.92389 34.83883,-15.10329 41.95536,-33.13124c1.72211,-8.72215 -5.28903,-13.69839 -11.24521,-15.46512c-1.15878,-2.86641 -3.13139,-15.03612 -8.05675,-8.8949c0.22449,-5.37502 4.84473,-18.22859 -5.38927,-12.53831c-1.03801,-11.44846 8.74879,-22.87025 -4.19783,-31.20716c12.13029,2.25027 9.73825,-11.57887 7.09616,-13.77212c7.19073,-1.02106 15.62939,-7.49186 11.66467,-15.50808c7.80894,14.17675 8.07971,-17.19902 14.50877,-3.67512c11.83272,1.93988 -3.67599,-10.57163 7.20721,-7.77902c6.21443,0.21264 4.83423,-6.80917 10.41692,-1.50957c7.3886,-4.03149 -5.66409,-16.21531 6.26559,-7.74985c4.01033,3.484 16.77809,12.60911 14.48726,0.56772c11.33586,12.0923 20.25659,-11.23169 29.67625,-16.06186c3.73633,-4.47003 11.8613,-9.20071 4.36795,-0.66791c-4.97461,10.87669 -21.85179,22.64296 -17.31131,33.45053c-4.10985,3.74163 8.29224,8.44421 -1.58034,7.02768c-5.8488,6.31351 7.84134,18.1257 8.93388,28.06219c-3.13588,6.80826 -15.07657,14.53744 -19.90688,14.29315c1.76543,-8.76564 -2.06178,-20.19066 -13.24036,-15.23595c6.26202,11.45789 14.72818,22.40379 20.03253,34.86404c5.18462,12.24902 13.59059,26.39416 24.64981,10.62966c7.04883,-10.04763 27.18559,-9.90218 21.65419,6.41521c-2.82767,16.0232 4.74286,37.1706 -9.80374,48.20794c-8.77531,16.90973 -18.50392,-6.2874 -11.60965,-15.06308c-1.75673,-2.50781 -3.11575,-4.27809 2.02489,-7.7061c-1.06146,-2.57137 14.7939,-12.24554 6.80286,-18.18176c-9.0885,10.30594 -22.38708,22.23511 -18.69125,37.55475c2.99957,10.26601 -21.73944,27.86615 -19.76117,10.82875c0.44312,-6.62131 9.89648,-19.45415 7.72044,-21.10741c-6.90181,12.95006 -16.71997,25.39136 -31.55621,29.23625c-12.34084,0.73132 -18.80547,10.66779 -12.94504,21.69241c1.11998,15.62238 -7.12646,29.76141 -9.02499,44.972c3.52914,16.13283 25.01552,19.39287 27.93198,35.84959c5.01138,11.05234 -7.52405,9.41898 -13.36446,6.32639zm-30.55545,-48.12944c-1.80891,-7.29253 -5.53151,18.95699 -0.94273,5.02481l0.68695,-2.46143l0.25578,-2.56339z",
+		
+	"rhino":"M 31.2973 189.1916 C 30.374 186.1509 30.2876 182.8892 30.2876 182.8892 C 30.2876 182.8892 18.6488 172.7592 12.9338 167.0182 C 8.1162 162.1747 0.1206 148.2926 0.1206 148.2926 C 0.1206 148.2926 -0.3045 144.7842 0.4415 144.6859 C 1.6515 144.5302 7.9245 150.0048 14.0462 153.201 C 20.3518 156.4936 27.5875 158.6592 27.5875 158.6592 L 35.5018 158.6592 C 35.5018 158.6592 29.0012 141.5758 37.34 143.8147 C 40.3528 144.0688 42.0178 150.5315 46.6067 151.2422 C 51.9836 149.9209 54.6313 134.4272 54.6313 134.4272 C 54.6313 134.4272 52.9961 131.5424 53.0697 128.803 C 53.129 126.9918 54.9114 124.9244 54.9114 124.9244 C 54.9114 124.9244 51.1096 125.5576 48.5035 124.7196 C 46.155 123.9635 42.5672 121.0233 41.6173 118.8496 C 40.4416 116.1589 40.7466 113.1821 39.4977 111.4715 C 39.3738 110.1291 41.1021 109.6715 42.02 110.3015 C 45.4753 112.6733 50.0547 112.9256 51.043 113.4111 C 55.1783 115.443 62.1528 115.7264 63.1698 115.3193 C 54.0175 103.9211 65.6289 101.5547 67.2467 101.3131 C 69.2713 103.514 72.3221 106.16 73.1967 108.5642 C 74.3559 110.0273 74.2616 107.9475 74.2616 107.9475 C 74.2616 107.9475 74.3209 101.8131 76.9637 97.2195 C 77.5729 96.1479 80.9405 92.7265 83.1856 92.4271 C 83.9995 92.3186 85.7254 92.0741 87.5618 90.4255 C 92.2537 86.2132 105.0561 86.9177 105.0561 86.9177 C 105.0561 86.9177 106.0924 87.3971 108.0301 87.3889 C 109.7409 87.3788 139.8456 85.6026 152.1574 90.03 C 160.433 93.0059 175.2345 92.1159 193.0635 87.0243 C 198.6909 85.4173 214.9442 85 214.9442 85 C 214.9442 85 221.0913 85.3409 226.0806 87.0274 C 233.8591 89.6567 248.6718 88.6388 257.7491 89.6018 C 261.2524 89.9747 267.9599 93.2576 273.5101 96.3221 C 290.9601 105.9565 301.1294 127.5316 299.8999 134.8799 C 297.5037 149.2014 283.2316 173.735 276.9266 184.5226 C 274.3758 188.8869 273.0623 195.5137 273.6205 200.5527 C 273.7831 202.0202 271.6895 205.6906 267.7195 208.1928 C 262.1246 211.7193 266.3419 216.8904 266.8591 219.2671 C 267.3741 221.6376 267.2024 224.6782 265.6837 225.3544 C 264.1713 226.0263 242.5547 229.81 241.9206 224.7663 C 238.7548 219.072 254.3001 210.4229 252.5226 200.3702 C 247.4359 193.6818 246.2545 178.7816 245.4402 176.4947 C 244.5885 166.2041 227.9237 182.3253 219.5206 185.6245 C 195.3696 195.1066 168.116 190.8322 165.9726 190.0358 C 163.0314 198.9738 166.1362 203.3924 166.3365 204.4804 C 165.6754 210.5755 172.1837 220.3454 173.6375 226.3336 C 174.8277 231.1329 154.4893 231.1329 148.9116 230.9416 C 144.3201 229.7082 151.2226 220.7226 152.3475 219.7199 C 153.8791 212.0003 145.337 205.08 145.337 205.08 C 145.337 205.08 144.7269 212.0003 143.029 217.8104 C 143.0998 220.549 145.8231 222.5392 146.2197 224.9814 C 146.6408 227.5896 144.6581 227.9297 144.6581 227.9297 C 144.6581 227.9297 129.0663 230.7259 125.1382 227.4769 C 123.1681 226.8586 121.4508 227.8662 120.0711 226.7946 C 119.1125 226.0447 120.6945 221.7545 121.8821 220.5681 C 122.8979 219.5479 129.6764 219.3277 129.7289 211.1167 C 128.0493 196.5313 114.2192 190.4252 113.1891 184.7516 C 106.4906 187.3721 99.4475 182.4468 99.4475 182.4468 C 99.4475 182.4468 97.6059 184.5796 95.5782 184.9831 C 93.9512 185.3028 87.9826 181.4695 85.9838 179.2361 C 85.3387 187.9827 78.1289 185.6491 78.1289 185.6491 C 78.1289 185.6491 75.58 189.9465 71.5288 192.0231 C 61.5427 197.142 59.7122 196.7349 55.59 200.6408 C 53.2684 202.8405 49.1881 199.5904 46.4922 200.6021 C 36.7298 204.2658 30.8317 199.5844 31.2973 189.1916 Z",
+	
+	"tree": "M 27.2254 74.2515 C 25.9396 74.2515 25.2787 72.9597 25.2787 71.4106 C 25.2787 70.1191 25.6091 68.8652 26.5645 68.8652 C 27.2254 68.8652 28.2203 70.1191 28.5507 71.4106 C 29.2116 73.291 28.5507 74.2515 27.2254 74.2515 ZM 247.0194 147.96 C 249.9611 147.96 250.6219 148.2913 248.9661 150.5051 C 248.0107 152.0542 246.0245 153.3457 245.0691 153.3457 C 244.0743 153.3457 243.0829 152.0542 243.0829 150.5051 C 243.0829 148.918 244.4083 147.96 247.0194 147.96 ZM 41.6425 57.7979 C 38.7009 57.1711 38.3704 53.9971 41.6425 53.0388 C 43.2982 52.7437 44.2537 53.6655 44.2537 55.5842 C 44.2537 57.1711 43.2982 58.0933 41.6425 57.7979 ZM 4.9748 158.0671 C 8.9113 157.1448 8.9113 156.4819 7.586 154.3042 C 6.5946 152.719 6.2642 150.8005 6.9251 150.1736 C 7.2555 149.2136 8.9113 150.1736 9.8667 152.0542 C 11.192 154.5996 12.1833 154.9329 14.7945 153.3457 C 16.4144 152.3875 17.7361 151.759 17.7361 152.719 C 17.7361 153.3457 18.731 152.719 20.0168 151.4275 C 22.0031 149.5469 22.3335 145.4146 20.3473 143.2007 C 18.731 141.3201 10.5276 141.947 8.2469 144.1589 C 6.9251 145.7461 5.9302 145.4146 4.6444 142.574 C 2.6582 137.8508 2.6582 137.1877 7.2555 136.8926 C 11.192 136.8926 11.192 136.8926 7.9164 134.9741 C 6.2642 134.0518 4.6444 132.1335 4.6444 130.8796 C 4.6444 127.7058 9.2058 125.8252 11.192 128.0391 C 11.8529 128.9612 13.1388 129.9197 14.4641 129.9197 C 17.0753 129.9197 29.542 119.1853 29.542 116.9714 C 29.542 116.0115 30.8314 115.3848 32.1532 116.0115 C 33.773 116.3447 36.7147 115.3848 39.6958 113.7976 C 43.9232 111.2524 43.9232 110.957 41.6425 106.8264 C 40.0262 103.9858 38.04 103.0256 33.4426 103.0256 C 28.2203 103.0256 26.895 103.6526 25.2787 107.4534 C 24.6142 109.9985 22.6281 111.8792 21.3422 111.8792 C 19.0615 111.8792 18.4006 109.0403 20.6813 107.4534 C 21.6726 106.8264 22.3335 104.6128 22.3335 102.3989 C 22.3335 98.9312 21.6726 98.3044 17.4057 99.2268 C 13.1388 99.8535 13.1388 99.5581 14.1336 94.7988 C 14.7945 91.9583 15.7499 89.4131 16.4144 89.1177 C 17.0753 88.7864 17.7361 85.9456 17.7361 83.105 C 17.7361 77.4233 19.6864 76.4651 23.2925 80.5596 C 24.9446 82.7734 25.9396 83.105 26.5645 81.1863 C 27.2254 79.9326 29.542 79.6372 33.1481 80.2639 C 38.04 81.5178 38.3704 81.1863 37.7095 77.4233 C 37.3791 75.2097 37.0451 72.6643 36.7147 72.0376 C 36.7147 71.0791 35.0984 69.8237 33.1481 68.8652 C 29.2116 67.2786 28.2203 63.4795 31.8228 63.4795 C 32.8177 63.4795 33.773 62.8525 33.773 61.5969 C 33.773 60.6384 35.7593 60.0117 38.3704 60.3052 C 41.9765 60.6384 43.9232 59.3833 48.851 52.7437 C 52.4571 47.9844 55.0682 45.4392 55.3987 46.7307 C 55.7291 48.3159 57.3849 49.238 59.0047 49.238 C 61.6159 49.238 61.9464 48.3159 60.991 44.1853 C 60.657 41.3445 59.0047 37.8772 58.0099 36.29 C 55.0682 32.7849 55.0682 28.6904 58.0099 29.9438 C 60.3265 31.1995 67.535 27.7319 67.535 25.5181 C 67.535 24.5581 68.494 23.9312 69.8157 23.9312 C 71.1411 23.9312 71.766 25.8496 71.766 28.3589 C 71.766 31.531 72.4269 32.7849 74.0827 31.8625 C 75.3685 31.1995 76.3635 29.3171 76.3635 28.0635 C 76.3635 24.2625 86.844 17.6228 89.4551 19.5051 C 90.4501 20.1323 91.4413 19.5051 91.7755 17.2915 C 92.7308 12.8638 98.6499 9.3962 101.261 11.6101 C 102.5864 12.5322 103.8723 12.2371 104.2063 11.2788 C 104.8671 10.0232 107.4783 9.0649 110.4199 8.7693 C 113.3615 8.438 117.298 7.1824 118.9538 5.8909 C 125.1674 1.7964 131.3847 2.0918 133.9958 6.5198 C 135.6516 9.6917 136.3124 9.6917 136.3124 7.4778 C 136.3124 4.637 137.6019 4.3057 145.4713 5.2642 C 157.9381 6.5198 159.8884 6.5198 164.4858 4.9326 C 167.4274 4.0103 168.4222 4.3057 168.4222 6.8508 C 168.4222 8.438 169.3777 9.6917 170.703 9.6917 C 171.6943 9.6917 172.6497 8.7693 172.6497 7.8093 C 172.6497 5.2642 177.9116 4.0103 182.5089 5.2642 C 186.0755 6.5198 186.4059 6.8508 185.4505 15.373 C 185.1201 20.4636 185.4505 23.9312 186.0755 23.9312 C 186.7363 23.9312 187.4008 21.7173 187.4008 18.5452 C 187.4008 13.1953 191.0033 10.9832 192.3286 15.373 C 192.6591 16.9583 193.6144 16.3313 194.2753 13.824 C 195.9312 7.1824 199.5372 10.6499 198.5422 17.9185 C 197.551 23.9312 197.551 23.9312 200.4926 21.7173 C 202.1483 20.759 203.4341 18.25 203.4341 16.6646 C 203.4341 15.0776 204.4291 13.1953 205.7509 12.5322 C 208.3619 11.2788 211.3072 16.0361 210.3482 19.5051 C 210.0178 21.0906 210.0178 22.3459 210.9731 22.3459 C 211.6376 22.3459 212.2985 21.4238 212.2985 20.759 C 212.2985 19.8367 213.9183 19.5051 215.9045 20.1323 C 220.1679 21.0906 220.7928 23.6357 217.1904 25.1848 C 216.235 25.8496 215.2401 27.3987 215.2401 28.6904 C 215.2401 30.9043 215.9045 30.9043 219.507 28.6904 C 225.3902 24.8914 228.0013 25.1848 228.9963 29.3171 C 229.6571 31.531 230.9465 32.491 232.2683 31.531 C 233.5936 31.1995 236.5352 32.491 238.816 34.7031 C 240.8022 36.5854 243.7438 38.1707 245.0691 38.1707 C 247.0194 38.1707 247.0194 39.7578 246.3549 44.1853 C 245.6941 48.9446 245.6941 49.5713 247.6803 47.6531 C 250.2914 44.5168 251.2828 44.812 252.2418 49.238 C 252.5722 51.4519 254.8888 53.0388 257.5 53.9971 C 260.4416 54.626 262.0615 56.2109 262.0615 58.0933 C 262.0615 60.0117 263.0527 62.2239 264.0477 63.4795 C 266.6589 65.6931 265.9944 72.3328 263.0527 74.5466 C 262.0615 75.2097 260.7721 74.8782 260.4416 73.9199 C 259.7808 72.9597 257.5 72.9597 253.233 73.9199 C 246.3549 76.1318 245.0691 76.7605 246.6854 79.6372 C 247.6803 81.5178 259.1198 80.8911 265.3694 78.6772 C 267.3197 77.7188 267.9806 78.6772 267.9806 83.105 C 267.9806 86.2769 267.3197 88.7864 266.3284 88.7864 C 265.6639 88.7864 265.039 89.7446 265.039 91.3315 C 265.039 95.1321 266.6589 94.7988 270.9258 90.373 C 273.2029 87.8279 274.5282 87.1992 276.1481 88.7864 C 277.8003 90.373 278.1343 90.373 278.1343 87.8279 C 278.1343 86.2769 277.4698 84.9873 276.4786 84.9873 C 275.8536 84.9873 275.1891 83.7317 275.1891 82.4778 C 275.1891 80.8911 276.1481 79.6372 277.4698 79.6372 C 278.4647 79.6372 279.7865 80.2639 279.7865 81.1863 C 279.7865 82.1467 281.0759 83.4001 282.7317 83.7317 C 285.0089 84.6919 285.6733 85.9456 285.3428 89.7446 C 284.6784 97.0127 286.0038 99.2268 290.8956 97.9731 C 293.2123 97.3442 294.498 97.9731 293.5068 99.2268 C 293.2123 99.8535 293.5068 101.4407 294.1677 102.1033 C 296.8183 103.9858 295.8234 108.4119 292.8818 108.4119 C 289.2758 108.4119 288.2844 109.9985 290.2348 112.8394 C 291.5565 114.4263 292.5514 114.72 293.8372 113.4663 C 296.8183 110.2942 297.4433 112.8394 297.7737 125.4939 C 297.7737 131.8379 298.4346 136.8926 299.0955 136.8926 C 300.7153 136.8926 300.0904 143.8655 297.7737 146.7061 C 296.4843 148.2913 296.4843 149.8403 297.4433 151.1318 C 299.7599 153.9727 297.4433 162.1995 294.498 162.1995 C 291.887 162.1995 286.9591 168.2122 286.9591 171.053 C 286.9591 174.5225 282.7317 171.053 281.7368 167.2539 C 280.7455 163.7864 280.7455 163.7864 280.081 166.2939 C 279.4561 169.1724 283.0262 178.0259 286.0038 180.5349 C 287.954 182.4536 284.348 185.6255 281.7368 184.334 C 280.4114 183.7073 279.7865 181.8267 279.7865 179.9082 C 279.7865 174.5225 271.5866 160.9456 265.3694 155.8552 C 262.0615 153.3457 259.1198 150.5051 259.1198 149.5469 C 259.1198 147.6284 248.6357 141.6516 242.7525 139.7332 C 239.4768 138.7732 238.4855 139.1064 238.4855 141.6516 C 238.4855 143.5322 237.8606 144.1589 236.5352 143.5322 C 233.5936 142.2783 232.2683 145.1194 234.8795 147.96 C 238.4855 151.4275 237.8606 155.5596 233.9241 153.9727 C 231.277 153.0144 230.9465 153.3457 231.9379 158.7319 C 232.2683 161.8679 232.9328 166 232.9328 167.8806 C 232.9328 169.7991 233.5936 171.053 234.2545 171.053 C 235.2136 171.053 235.5439 170.426 234.8795 169.4678 C 234.5491 168.5076 235.2136 167.5854 236.5352 167.5854 C 237.5302 167.5854 238.4855 168.8408 238.4855 170.0945 C 238.4855 171.3862 237.1962 172.6396 234.8795 172.3086 C 232.9328 172.3086 231.277 171.3862 231.277 170.7593 C 231.277 167.8806 222.4486 148.2913 219.8375 145.4146 C 216.8958 142.2783 218.8461 141.3201 195.6006 156.1865 C 191.9982 158.4004 188.0617 163.1594 186.0755 166.6272 C 184.4556 170.0945 181.8445 173.6001 180.5227 174.2268 C 179.1974 174.8538 174.3055 179.9082 170.0385 185.2942 C 151.6849 209.0139 154.666 211.8547 155.9519 260.2944 C 161.5082 297 161.5082 297 161.5082 297 C 148.4129 297 148.4129 297 148.4129 297 C 137.6019 297 137.6019 297 137.6019 297 C 138.5932 263.1331 138.5932 263.1331 138.5932 263.1331 C 139.254 260.2944 139.5881 254.5752 139.9186 251.4028 C 140.249 249.5205 130.7238 241.2937 131.0543 239.4133 C 131.0543 237.8264 140.9099 242.2542 140.9099 240.667 C 142.5297 217.574 140.9099 199.2021 136.6429 189.4246 C 135.6516 183.4116 127.4482 164.0818 126.1624 164.0818 C 125.8319 164.0818 123.5153 162.1995 121.2346 159.9856 C 117.298 155.8552 115.6818 155.5596 93.7221 154.3042 C 70.1462 153.0144 70.1462 153.0144 70.1462 153.0144 C 64.5575 157.4404 64.5575 157.4404 64.5575 157.4404 C 61.2855 160.3188 58.0099 162.1995 57.0544 162.1995 C 55.0682 162.1995 46.8648 168.8408 43.2982 172.6396 C 42.9678 172.6396 42.6374 172.3086 42.6374 172.0129 C 42.3069 172.0129 42.3069 172.0129 42.3069 171.6814 C 41.9765 170.7593 41.6425 169.7991 40.9816 168.8408 C 42.9678 167.2539 44.5876 166.2939 45.2485 166.6272 C 46.2398 167.2539 47.1988 166.6272 47.1988 165.04 C 47.1988 163.4548 45.2485 162.8262 40.0262 163.4548 C 33.773 164.4133 32.1532 164.7446 31.1619 168.5076 C 29.542 170.426 29.2116 173.2668 30.1706 175.4807 C 29.8365 178.3213 29.8365 180.2397 30.1706 180.2397 C 30.501 180.2397 30.8314 179.613 31.8228 178.9482 C 31.8228 179.2798 32.1532 179.613 32.4872 179.9082 C 29.2116 180.8665 27.5558 183.7073 27.8898 186.5479 C 26.2341 187.8394 24.6142 188.4663 22.6281 189.4246 C 22.6281 189.4246 22.6281 189.0933 22.3335 189.0933 C 23.6229 186.2527 24.2838 183.0803 24.6142 178.3213 C 25.2787 172.9712 24.9446 169.4678 23.9534 169.4678 C 23.2925 169.4678 22.6281 170.7593 22.6281 172.6396 C 22.9584 174.2268 22.3335 175.812 21.0117 176.1074 C 20.0168 176.4387 19.356 175.812 19.356 174.2268 C 19.356 170.426 18.0701 170.426 15.1249 173.8936 C 13.8032 175.1851 11.192 176.7344 8.9113 177.3992 C 5.9302 178.3213 4.9748 177.6943 3.6495 174.2268 C 2.6582 171.3862 1.9973 168.2122 2.6582 166.9585 C 2.9886 165.3716 2.9886 164.0818 1.7028 164.0818 C -1.9033 164.0818 0.7079 159.0271 4.9748 158.0671 ZM 33.1481 85.3186 C 31.1619 84.9873 29.542 84.0649 28.8812 82.7734 C 28.5507 80.8911 28.2203 80.8911 28.2203 82.7734 C 28.2203 84.0649 26.895 84.9873 25.6091 85.3186 C 23.2925 85.3186 23.2925 85.6501 25.9396 86.9058 C 27.5558 87.5325 29.2116 88.4907 29.542 88.4907 C 29.8365 88.4907 31.4923 87.5325 33.1481 86.9058 C 36.0897 85.3186 36.0897 85.3186 33.1481 85.3186 ZM 292.8818 136.2656 C 293.5068 136.8926 294.1677 135.9324 294.1677 134.3472 C 294.1677 133.0918 293.5068 131.8379 292.8818 131.8379 C 291.887 131.8379 291.2261 132.4648 291.2261 133.387 C 291.2261 134.3472 291.887 135.6387 292.8818 136.2656 ZM 290.5652 139.1064 C 290.2348 138.1462 288.6149 136.8926 287.2896 136.8926 C 286.3342 136.8926 285.6733 138.1462 286.3342 139.1064 C 286.6287 140.0647 287.954 140.6917 289.2758 140.6917 C 290.5652 140.6917 290.8956 140.0647 290.5652 139.1064 ZM 287.6236 153.3457 C 288.6149 153.3457 289.9402 153.0144 289.9402 152.719 C 289.9402 152.0542 288.6149 151.4275 287.6236 150.8005 C 286.3342 150.1736 285.3428 150.5051 285.3428 151.4275 C 285.3428 152.3875 286.3342 153.3457 287.6236 153.3457 ZM 290.2348 123.28 C 291.5565 122.6528 292.2209 121.6929 291.887 120.7705 C 290.8956 118.5208 285.3428 118.5208 285.3428 120.7705 C 285.3428 123.28 287.2896 124.2383 290.2348 123.28 ZM 272.2476 99.5581 C 270.5918 100.5183 269.6005 102.3989 269.9308 103.3589 C 271.5866 105.8665 273.537 105.2395 275.1891 101.145 C 276.809 97.3442 276.1481 96.7175 272.2476 99.5581 ZM 265.9944 148.2913 C 274.5282 156.8132 274.8587 157.1448 274.8587 154.3042 C 274.8587 152.719 274.1978 151.4275 273.2029 151.4275 C 272.2476 151.4275 270.5918 149.8403 269.6005 147.96 C 268.645 146.0774 266.6589 144.1589 265.039 144.1589 C 262.0615 144.1589 262.0615 144.4922 265.9944 148.2913 ZM 259.1198 133.387 C 261.1025 133.387 262.0615 132.7603 260.7721 132.4648 C 259.7808 131.8379 258.1609 131.8379 257.1696 132.4648 C 256.1746 132.7603 257.1696 133.387 259.1198 133.387 ZM 249.6306 90.373 C 250.6219 91.3315 253.5635 92.5852 256.1746 93.2139 C 260.7721 94.1721 261.1025 94.1721 258.4913 91.627 C 255.5138 88.4907 247.3499 87.5325 249.6306 90.373 ZM 229.6571 37.8772 C 228.6658 38.7993 228.3354 40.7178 228.6658 41.9714 C 229.3267 44.5168 231.277 42.303 231.277 38.5039 C 231.277 36.5854 230.9465 36.29 229.6571 37.8772 ZM 239.4768 106.1997 C 242.088 107.7847 243.0829 107.7847 244.4083 105.571 C 247.0194 102.1033 245.3636 100.5183 240.4717 102.7305 C 236.5352 104.2813 236.5352 104.2813 239.4768 106.1997 ZM 232.9328 90.373 C 237.8606 86.9058 237.8606 86.9058 233.9241 86.9058 C 231.277 86.9058 229.3267 88.1592 228.3354 90.373 C 227.7104 92.5852 227.046 93.8408 227.3764 93.8408 C 227.3764 93.8408 229.9876 91.9583 232.9328 90.373 ZM 225.7242 141.6516 C 228.0013 145.1194 231.9379 145.1194 230.652 141.3201 C 230.3216 140.0647 229.9876 138.4795 229.9876 138.1462 C 229.9876 137.8508 228.6658 137.8508 227.046 138.4795 C 224.3989 139.1064 224.3989 140.0647 225.7242 141.6516 ZM 215.5705 128.6658 C 218.1816 132.1335 219.507 132.4648 222.4486 129.9197 C 224.3989 128.3345 224.3989 128.3345 222.4486 128.0391 C 221.4573 128.0391 218.8461 127.7058 216.5654 127.0789 C 213.2898 125.8252 213.2898 125.8252 215.5705 128.6658 ZM 215.2401 94.1721 C 216.8958 94.1721 218.8461 89.1177 217.8513 87.5325 C 216.5654 85.9456 213.9183 88.4907 213.9183 91.3315 C 213.9183 92.9185 214.5792 94.1721 215.2401 94.1721 ZM 199.2067 115.6799 C 197.2205 116.9714 197.551 117.2671 200.1622 117.2671 C 201.8179 117.2671 203.7646 116.6382 204.4291 115.6799 C 205.4203 113.1709 202.1483 113.1709 199.2067 115.6799 ZM 199.5372 143.5322 C 199.8317 143.8655 200.823 143.2007 201.8179 141.6516 C 202.8091 140.3601 205.7509 138.7732 208.0315 138.1462 C 210.9731 137.1877 212.2985 135.6387 212.2985 133.387 C 212.2985 128.0391 207.7011 129.624 202.8091 136.561 C 200.823 140.0647 199.2067 142.9055 199.5372 143.5322 ZM 195.9312 128.9612 C 198.8727 125.4939 198.8727 124.865 196.556 123.9067 C 193.9449 122.6528 191.9982 125.4939 191.9982 130.5464 C 191.6642 134.3472 191.6642 134.3472 195.9312 128.9612 ZM 190.6729 91.627 C 191.0033 94.1721 191.6642 93.8408 193.6144 89.1177 C 195.9312 84.0649 195.9312 83.4001 193.9449 83.4001 C 192.6591 83.4001 191.3337 84.3586 191.0033 85.9456 C 190.3424 87.1992 190.3424 90.0779 190.6729 91.627 ZM 189.053 65.6931 C 189.053 66.9829 189.6779 70.1191 190.3424 72.3328 C 191.3337 76.7605 191.3337 76.7605 192.3286 72.9597 C 193.6144 69.1609 192.3286 63.4795 190.3424 63.4795 C 189.3834 63.4795 189.053 64.4375 189.053 65.6931 ZM 166.1056 76.1318 C 164.4858 78.3457 164.4858 80.5596 165.7716 87.1992 C 166.4361 91.9583 168.0919 96.7175 169.0472 97.6399 C 170.703 99.2268 171.0334 97.6399 171.3638 87.8279 C 171.3638 75.8381 169.7081 72.0376 166.1056 76.1318 ZM 169.0472 109.6672 C 169.3777 110.2942 170.0385 109.0403 169.7081 107.158 C 169.7081 105.2395 169.3777 104.9441 168.7168 106.1997 C 168.4222 107.4534 168.4222 109.0403 169.0472 109.6672 ZM 180.8531 79.9326 C 180.5227 80.5596 180.5227 84.9873 181.514 89.7446 C 182.5089 97.9731 182.8034 98.3044 183.1339 92.2915 C 183.4643 82.4778 182.8034 77.7188 180.8531 79.9326 ZM 169.7081 169.1724 C 171.6943 165.3716 174.9664 159.0271 177.2471 155.2266 C 179.8582 151.1318 181.514 145.7461 182.1749 140.3601 C 183.1339 131.8379 183.1339 131.8379 183.1339 131.8379 C 179.1974 136.561 179.1974 136.561 179.1974 136.561 C 177.2471 139.1064 175.9253 141.947 175.9253 142.9055 C 175.9253 145.4146 169.7081 161.241 167.7578 164.0818 C 166.7665 165.6667 165.1107 169.1724 164.8162 171.6814 C 163.1604 178.9482 166.1056 177.6943 169.7081 169.1724 ZM 146.4626 201.7476 C 147.4575 208.0557 147.4575 208.0557 150.7296 194.4792 C 152.6799 187.1746 155.6215 175.4807 157.6077 168.2122 C 160.2188 159.0271 161.2137 151.4275 161.2137 140.6917 C 161.2137 126.7473 160.8797 126.4519 158.2686 128.0391 C 152.3494 132.1335 149.0738 143.5322 147.752 165.6667 C 147.1271 177.0676 146.4626 188.4663 145.8018 190.9756 C 145.4713 193.5208 145.8018 198.28 146.4626 201.7476 ZM 147.1271 120.7705 C 148.4129 123.9067 149.7383 126.4519 149.7383 126.4519 C 150.0687 126.4519 151.6849 124.5334 153.0103 122.0244 C 154.666 119.8123 157.2772 117.2671 158.2686 116.3447 C 162.1691 113.4663 163.1604 104.6128 159.8884 98.5999 C 157.2772 93.2139 150.0687 87.1992 148.7433 89.1177 C 148.0825 89.7446 147.1271 95.7593 146.4626 102.7305 C 145.1409 113.1709 145.1409 116.3447 147.1271 120.7705 ZM 145.1409 48.3159 C 145.8018 48.9446 146.4626 48.6113 146.4626 47.6531 C 146.4626 46.3975 145.8018 45.1436 145.1409 44.5168 C 144.146 43.8521 143.521 44.1853 143.521 45.4392 C 143.521 46.3975 144.146 47.6531 145.1409 48.3159 ZM 39.0313 133.387 C 43.5927 133.7202 43.5927 133.7202 43.5927 133.7202 C 48.1901 133.7202 52.7875 129.624 52.7875 126.1206 C 52.7875 123.9067 52.4571 123.9067 39.0313 133.387 ZM 40.9816 124.5334 C 40.9816 125.4939 41.6425 126.4519 42.6374 126.4519 C 44.2537 126.4519 48.851 120.7705 47.8597 119.8123 C 46.8648 118.5208 40.9816 122.6528 40.9816 124.5334 ZM 44.5876 102.7305 C 49.5155 109.0403 51.7962 109.6672 54.4073 105.571 C 57.0544 101.7722 54.7378 99.2268 46.8648 98.3044 C 40.3207 97.3442 40.3207 97.3442 44.5876 102.7305 ZM 40.9816 84.9873 C 40.9816 85.6501 43.2982 87.1992 45.9094 88.4907 C 58.0099 94.5037 60.3265 94.5037 59.996 88.7864 C 59.996 85.3186 55.0682 77.7188 53.1179 77.7188 C 50.8013 77.7188 40.9816 83.7317 40.9816 84.9873 ZM 58.6743 129.9197 C 62.2768 129.9197 62.6072 128.9612 59.6656 127.4121 C 58.3403 127.0789 57.0544 127.4121 56.724 128.3345 C 56.0595 129.2925 57.0544 129.9197 58.6743 129.9197 ZM 61.2855 55.5842 C 59.0047 53.9971 56.0595 53.3704 54.7378 53.9971 C 52.4571 55.2527 52.7875 55.5842 56.0595 56.5422 C 57.6794 57.1711 60.991 57.7979 62.6072 58.0933 C 64.5575 58.0933 64.5575 57.4646 61.2855 55.5842 ZM 60.991 66.9829 C 62.9376 66.9829 63.2717 66.6514 61.9464 65.6931 C 60.991 65.3979 59.6656 65.3979 59.0047 66.0247 C 58.6743 66.6514 59.6656 67.2786 60.991 66.9829 ZM 62.9376 74.2515 C 58.3403 74.2515 58.3403 74.5466 60.991 77.092 C 64.263 79.9326 65.2184 80.2639 66.5438 78.3457 C 68.8244 75.8381 67.2046 74.2515 62.9376 74.2515 ZM 69.4854 38.5039 C 68.16 36.917 67.8296 39.7578 68.494 43.2253 C 68.8244 45.4392 70.1462 47.3574 70.8107 47.3574 C 72.0965 47.3574 71.1411 40.3845 69.4854 38.5039 ZM 79.9659 80.2639 C 79.3051 80.5596 80.9608 82.4778 82.9111 84.0649 C 84.8973 85.6501 86.5135 86.2769 86.5135 85.3186 C 86.5135 83.105 80.9608 78.9727 79.9659 80.2639 ZM 71.766 82.4778 C 68.8244 84.6919 70.4802 90.373 74.7436 91.3315 C 77.0243 91.9583 80.6304 94.5037 82.9111 97.0127 C 84.8973 99.5581 86.5135 100.5183 86.5135 99.5581 C 86.5135 96.386 73.4218 81.1863 71.766 82.4778 ZM 85.1918 108.7451 C 83.2416 103.6526 80.9608 101.145 76.6938 99.5581 C 73.4218 98.3044 70.1462 97.6399 69.1549 97.9731 C 68.16 98.3044 72.0965 102.3989 77.6888 107.158 C 88.1693 115.3848 88.1693 115.3848 85.1918 108.7451 ZM 102.5864 60.0117 C 101.9255 60.0117 101.261 61.2656 101.261 62.5193 C 101.261 64.1062 101.9255 65.0647 102.5864 65.0647 C 103.5418 65.0647 104.2063 64.1062 104.2063 62.5193 C 104.2063 61.2656 103.5418 60.0117 102.5864 60.0117 ZM 99.6089 85.9456 C 99.6089 88.1592 105.1976 86.5725 107.4783 83.7317 C 110.7504 78.9727 110.4199 77.7188 106.153 77.7188 C 103.2114 77.7188 99.6089 82.1467 99.6089 85.9456 ZM 109.1341 17.6228 C 108.1392 21.7173 107.4783 25.1848 107.8088 25.5181 C 108.8036 26.772 111.4149 17.2915 111.4149 13.4907 C 111.4149 11.9055 110.4199 13.824 109.1341 17.6228 ZM 126.1624 81.5178 C 124.5066 81.5178 123.2207 82.1467 123.2207 83.4001 C 123.2207 84.3586 124.1761 84.9873 125.1674 84.9873 C 126.4927 84.9873 127.7786 84.3586 128.1126 83.4001 C 128.7735 82.1467 127.7786 81.5178 126.1624 81.5178 ZM 122.2258 140.9868 C 124.1761 146.7061 127.1177 152.0542 128.7735 153.3457 C 130.4293 154.3042 133.7013 158.7319 135.6516 163.1594 C 137.6019 167.5854 139.5881 171.053 139.9186 171.053 C 141.5348 171.053 138.2628 141.947 135.9821 133.0918 C 133.9958 125.4939 133.3708 118.5208 133.7013 107.4534 C 133.9958 99.2268 133.7013 91.9583 133.0405 91.3315 C 132.71 90.7046 130.4293 90.7046 128.4431 91.3315 C 124.837 92.5852 124.5066 93.5454 124.5066 100.5183 C 124.5066 105.8665 123.8456 108.7451 122.2258 109.9985 C 117.6285 112.8394 117.9589 128.9612 122.2258 140.9868 ZM 112.7366 98.5999 C 112.0757 93.8408 111.4149 93.2139 107.8088 93.2139 C 103.5418 93.2139 103.5418 93.5454 103.8723 100.1851 C 103.8723 104.2813 104.5367 109.0403 104.8671 111.2524 C 105.1976 113.4663 106.487 115.6799 107.8088 116.0115 C 110.4199 117.5986 113.3615 106.5313 112.7366 98.5999 ZM 107.8088 130.5464 C 104.8671 126.7473 102.881 122.6528 102.5864 121.6929 C 102.5864 120.4392 100.9307 117.2671 98.9839 114.4263 C 96.9977 111.5857 94.717 108.0803 93.7221 106.8264 C 90.4501 102.3989 91.1109 106.1997 94.717 116.0115 C 96.9977 122.6528 100.9307 128.6658 105.528 133.7202 C 114.0259 142.2783 115.0173 140.6917 107.8088 130.5464 ZM 102.5864 146.0774 C 106.153 146.0774 105.8585 145.7461 100.9307 140.6917 C 97.6586 137.5193 95.3779 134.0518 95.3779 132.4648 C 95.3779 131.2112 91.1109 126.7473 86.1832 122.6528 C 81.2912 118.5208 76.6938 114.4263 76.033 113.1709 C 75.3685 111.5857 75.0381 111.5857 75.0381 113.4663 C 75.0381 115.3848 73.4218 115.6799 68.16 114.72 C 64.5575 114.093 61.6159 114.093 61.6159 114.4263 C 61.6159 115.0532 62.9376 118.8523 64.263 122.6528 C 66.5438 128.9612 67.535 130.2529 74.7436 132.7603 C 79.3051 134.3472 86.5135 138.1462 91.1109 140.9868 C 95.3779 143.8655 100.6002 146.0774 102.5864 146.0774 ZM 51.4622 156.8132 C 52.7875 156.8132 54.7378 156.1865 56.0595 155.2266 C 58.3403 153.0144 56.3936 153.0144 52.1266 155.2266 C 50.1763 156.1865 49.8459 156.4819 51.4622 156.8132 ZM 47.8597 148.918 C 51.1318 147.6284 61.6159 146.3728 71.1411 146.3728 C 89.1248 146.0774 92.7308 145.1194 85.5222 143.2007 C 83.2416 142.574 78.0192 140.9868 73.7523 139.4016 C 66.2133 136.561 50.8013 137.5193 49.185 140.6917 C 48.851 141.3201 47.1988 141.6516 45.579 141.3201 C 42.3069 140.3601 39.0313 142.9055 38.04 147.96 C 36.7147 152.0542 39.0313 152.3875 47.8597 148.918 ZM 21.6726 156.1865 C 22.3335 158.7319 25.6091 159.0271 28.2203 156.8132 C 29.8365 155.5596 29.8365 154.9329 28.2203 153.0144 C 26.895 151.1318 25.9396 151.1318 23.9534 152.719 C 22.6281 153.6414 21.6726 155.2266 21.6726 156.1865 ZM 11.192 178.3213 C 12.4779 178.3213 13.1388 179.2798 12.4779 181.1621 C 12.1833 182.4536 11.192 183.7073 10.5276 183.7073 C 9.5363 183.7073 8.9113 182.4536 8.9113 181.1621 C 8.9113 179.613 9.8667 178.3213 11.192 178.3213 Z",
+
+	"maple-leaf": "M 82.7949 242.2583 C 77.6862 252.9512 74.1093 258.564 56.7309 264.1697 C 53.66 265.6975 57.7499 269.2642 59.8018 268.7527 C 75.1283 262.6421 78.7051 257.541 85.8658 246.3296 C 89.4427 260.6033 97.6154 269.7756 111.4169 275.3813 L 112.4428 272.3191 C 131.3531 282.5146 145.6606 284.554 157.9232 282.0032 C 169.6797 279.4526 183.4743 277.4204 194.7248 278.9482 C 187.571 273.342 183.4743 266.7134 181.9492 258.564 C 193.6989 246.3296 216.699 250.9192 227.9426 243.7856 L 225.3847 238.1729 C 249.9168 230.0234 270.872 216.7727 300 220.8511 L 251.9617 186.1934 L 252.9807 181.6035 C 238.6732 170.9036 222.3208 168.3528 203.9166 175.4932 C 210.0513 157.6528 203.9166 138.2915 220.7888 124.5298 C 216.699 116.8848 220.7888 106.1848 227.9426 96.5007 C 228.9686 78.1558 234.0704 61.8464 243.2691 47.0679 C 228.4487 56.752 213.6351 65.4128 198.3017 73.0613 L 195.7438 67.4521 C 189.616 77.1394 180.9233 84.2729 169.1668 88.3442 L 167.1219 82.7385 C 151.2755 98.5398 132.3721 106.6892 120.6155 129.6306 C 124.1924 107.2007 117.5447 85.2891 108.3461 67.4521 L 104.7692 71.0222 C 98.1284 49.1072 74.6222 34.8369 59.8018 17 C 65.9296 65.9243 48.0383 72.0383 48.5581 99.0513 L 42.4165 99.5557 C 51.1091 127.0801 39.3525 139.8193 44.9744 158.6758 C 30.6669 151.5422 12.2626 156.6365 0 145.425 C 14.8204 168.8713 19.9362 197.4048 44.9744 216.7727 L 41.3975 218.3005 C 50.5961 228.489 62.3527 237.157 82.7949 242.2583 Z",
+	
+	"butterfly": "M 132.1899 141.4731 C 133.2701 142.188 135.5561 140.834 136.6667 140.6667 C 135.4167 139.0417 140.125 131.125 138.5 128.25 C 138 121.75 125.3439 107.0776 123.75 105.375 C 124.358 104.2332 131.1718 105.2957 130.9684 105.4595 C 128.125 107.75 140.5635 120.8953 142 128.5 C 144.6469 128.3535 148.1237 127.3618 149.6667 129 C 151.1076 127.4255 162.2255 115.3953 162.8333 105 C 162.9204 103.5103 168.9546 104.4531 167.8195 105.3611 C 166 111.8333 153.1691 130.0051 152.1667 130.6667 C 153.3333 136.3333 152.861 136.7217 160.3125 141.1279 C 163.666 133.2534 170.8113 126.5691 177.3557 119.9163 C 184.7454 112.4465 189.7048 105.2905 197.845 97.5144 C 208.5609 87.6365 222.2463 78.6233 234.7805 73.2429 C 243.5 69.5 258.1094 66.2913 260.349 66.0813 C 264.498 65.6785 268.25 65.75 273.1679 66.4807 C 280.4244 67.5588 287.5098 68.1609 295.1284 71.7371 C 302.2921 76.3269 299.8157 82.0793 298.48 87.4675 C 287.4467 99.6348 276.1462 114.2068 272.5872 129.1147 C 271.3906 134.6348 269.2391 144.147 264.1613 150.1221 C 255.9979 159.313 246.0071 158.9731 236.6201 160.219 C 242.3398 161.8567 248.5434 167.2041 254.1089 172.5776 C 262.7908 181.0295 267.0212 189.697 264.7792 199.1331 C 264.3019 201.1123 256.0239 216.1243 251.975 220.8347 C 236.6072 238.771 215.6852 250.9351 198.8225 248.9609 C 192.75 248.25 176 235.5 172.9885 231.7378 C 165.5126 222.3984 159.372 211.1333 159.1196 201.2981 C 158.1903 200.3696 157.0538 200.301 157.5549 199.0588 C 156.6237 201.9033 153.6667 211.1667 149.289 217.0229 C 142.9601 225.4893 137.1667 212.8333 134.8217 202.5698 C 134.0178 199.0515 134.6078 198.4424 133.6702 196.3386 C 129.2367 198.0208 131.5711 202.8984 129.8312 206.8386 C 128.3561 210.2698 121.75 220.75 119.9257 223.1392 C 114.0942 230.7764 101 242.3333 91.5037 245.1064 C 82.69 247.6802 75.22 247.3191 68.1365 243.686 C 59 239 46.124 228.1169 38.2026 219.2678 C 28.1746 208.3184 19.4099 191.8674 27.7518 180.2795 C 33.0762 173.0493 43.0985 162.2744 52.8922 159.6267 C 45.9788 158.78 30.683 154.2236 24.9946 141.5679 C 23.1688 137.5554 22.4915 131.3167 22.0271 126.853 C 21.2715 119.4836 17.9091 111.0168 15.1179 103.7605 C 12.8741 97.1265 8.9083 88.6335 4.7579 81.3755 C 0.4083 73.759 -3.1577 61.1648 4.4119 54.9631 C 7.0561 52.7964 15.2436 50.2693 16.9547 50.0891 C 22.936 49.4504 31.085 52.3877 37.1343 54.1499 C 41.0975 55.314 58.487 61.5269 63.2961 64.9478 C 95 87.5 117.5438 115.5918 132.1899 141.4731 Z",
+	"leaf_1": "m35.63904,285.5213c9.77121,-31.99348 23.14531,-59.08864 35.83149,-72.59245c13.5912,-14.46718 7.56125,-20.74258 -6.45918,-6.72212c-5.89857,5.89853 -7.58387,1.61555 -7.58387,-19.2735c0,-49.83961 25.83589,-80.67891 87.99842,-105.04016c52.59872,-20.61333 91.37741,-43.79435 107.45589,-64.23479l13.10197,-16.65652l0,28.9807c0,35.83507 -11.11781,89.97318 -23.42422,114.0641c-13.0549,25.55626 -57.80217,72.72934 -79.76038,84.08435c-19.67261,10.17316 -61.687,13.16808 -84.14172,5.99792c-11.19011,-3.57314 -14.7415,-0.84308 -20.53963,15.78944c-3.8556,11.06018 -7.0102,26.79501 -7.0102,34.96616c0,9.27652 -3.72057,14.8566 -9.90572,14.8566c-7.3461,0 -8.78352,-3.67429 -5.56284,-14.21973z",
+	"drop": "m115.15536,295.759c-42.01334,-15.78687 -72.12711,-65.94934 -65.28346,-108.74701c4.3154,-26.98718 95.35947,-190.81818 103.3105,-185.90417c2.59511,1.60386 25.68835,39.79974 51.31831,84.87975c41.0565,72.21342 46.5999,85.67899 46.5999,113.19665c0,55.77716 -44.6394,101.46498 -98.23825,100.54555c-15.6409,-0.26834 -32.60906,-2.05518 -37.707,-3.97076zm42.09262,-28.05386c1.39066,-7.22116 -1.85785,-10.74289 -9.90955,-10.74289c-18.35065,0 -43.80598,-23.24161 -49.49309,-45.18889c-6.0666,-23.41179 -22.15186,-26.19615 -24.52774,-4.24574c-4.57746,42.29059 76.21872,100.22086 83.93037,60.17752z",
+	"feather":"M 188.7044 276.8495 C 188.7044 276.8495 159.7298 274.7077 144.3849 266.5197 C 129.04 258.3316 121.8791 247.8918 121.8791 247.8918 C 121.8791 247.8918 129.932 256.8966 141.2327 263.7194 C 148.1224 267.879 156.2198 271.2277 164.4356 271.2277 C 164.4356 271.2277 151.7511 264.0633 142.2365 269.1805 C 142.2365 269.1805 149.0907 264.4724 160.9574 268.0547 C 172.8248 271.6369 178.7574 269.5897 178.7574 269.5897 C 178.7574 269.5897 158.7075 269.4874 150.0116 263.7557 C 141.3156 258.024 139.1672 254.7494 139.1672 254.7494 C 139.1672 254.7494 148.1699 264.0633 155.1263 265.1892 C 162.0827 266.3151 174.0517 264.9839 174.0517 264.9839 C 174.0517 264.9839 161.6738 265.2915 157.7859 263.5511 C 153.8987 261.8116 138.5538 258.3316 135.792 265.5983 C 135.792 265.5983 138.8605 257.9217 152.8756 260.1735 C 166.8907 262.4253 168.2213 261.7093 168.2213 261.7093 C 168.2213 261.7093 143.3618 252.0877 129.449 257.5126 C 115.5361 262.9374 116.4569 267.5432 116.4569 267.5432 C 116.4569 267.5432 117.3778 251.5763 151.3414 254.4418 C 151.3414 254.4418 135.4853 252.0877 129.6534 247.3797 C 123.8231 242.6716 123.4134 239.6015 123.4134 239.6015 C 123.4134 239.6015 130.0624 249.7337 138.2471 249.836 C 146.4311 249.939 148.784 249.2223 148.784 249.2223 C 148.784 249.2223 132.825 245.5378 125.2544 246.356 C 117.6845 247.1751 105.4089 249.836 98.9636 238.168 C 98.9636 238.168 104.9992 249.3246 121.4702 245.4355 C 137.9404 241.5457 148.2721 245.8446 148.2721 245.8446 C 148.2721 245.8446 123.3111 241.0342 118.1957 236.2239 C 113.081 231.4135 112.4676 223.1224 112.4676 223.1224 C 112.4676 223.1224 114.616 237.0421 125.1521 238.3734 C 135.6898 239.7038 151.6481 239.3962 155.8427 244.2073 C 155.8427 244.2073 145.3058 236.4284 134.3592 237.452 C 123.4134 238.4756 106.5335 252.5999 97.9405 248.9154 C 89.3476 245.2309 85.4597 248.301 85.4597 248.301 C 85.4597 248.301 89.0409 244.7188 95.1779 246.356 C 101.3165 247.9941 102.6463 250.4504 113.1832 243.1837 C 123.7201 235.917 141.6224 226.91 152.9779 234.6881 C 152.9779 234.6881 99.9193 219.9849 94.1912 190.099 C 94.1912 190.099 99.2355 210.0254 125.1521 218.8946 C 151.0695 227.7638 152.5689 227.0827 152.5689 227.0827 C 152.5689 227.0827 112.6046 222.8512 93.9171 186.8237 C 93.9171 186.8237 110.148 214.8002 135.3831 218.4847 C 135.3831 218.4847 114.1041 211.1158 97.599 188.5989 C 81.0962 166.0812 80.4116 158.5744 80.4116 158.5744 C 80.4116 158.5744 100.4645 194.6018 138.3849 201.0169 C 138.3849 201.0169 108.6819 192.5198 87.4036 165.3971 C 66.1254 138.2744 72.7751 132.9519 72.7751 132.9519 C 72.7751 132.9519 68.1716 123.2288 71.649 121.0793 C 71.649 121.0793 64.7948 113.3004 66.7388 106.955 C 66.7388 106.955 71.649 131.0069 96.713 146.7693 C 121.7769 162.5309 123.9253 164.4758 123.9253 164.4758 C 123.9253 164.4758 97.9405 146.667 89.7565 138.0691 C 81.5725 129.4719 72.3654 122.8189 67.0455 104.3964 C 67.0455 104.3964 72.161 122.6143 88.3245 135.1013 C 104.4873 147.5883 107.6595 147.383 107.6595 147.383 C 107.6595 147.383 74.5138 130.3932 66.6366 102.2469 C 66.6366 102.2469 71.2401 123.0242 107.7618 142.8802 C 107.7618 142.8802 71.1379 121.2839 66.6366 98.2548 C 66.6366 98.2548 65.8187 94.8772 67.3529 93.2399 C 67.3529 93.2399 65.5112 88.8386 66.1254 83.3115 C 66.7388 77.7851 67.4552 71.8489 67.4552 71.8489 C 67.4552 71.8489 65.8187 95.1848 88.529 113.1982 C 88.529 113.1982 61.7263 81.0583 71.2757 54.5849 C 71.2757 54.5849 69.228 69.1872 75.6392 75.8736 C 75.6392 75.8736 70.1822 64.1389 72.7751 50.3548 C 72.7751 50.3548 72.0921 64.9572 78.9129 78.1943 C 85.7338 91.4314 107.5573 117.0872 107.5573 117.0872 C 107.5573 117.0872 81.9148 87.0635 77.8224 70.1419 C 73.7308 53.2203 76.0481 42.1668 76.0481 42.1668 C 76.0481 42.1668 73.7308 57.9959 83.6876 73.8271 C 93.6444 89.6577 97.0552 91.4314 97.0552 91.4314 C 97.0552 91.4314 69.6369 62.9085 80.0027 31.249 C 80.0027 31.249 79.3219 63.3184 90.6426 77.1018 C 101.9655 90.8858 105.3733 91.295 105.3733 91.295 C 105.3733 91.295 82.0489 72.8717 82.8668 47.0795 C 83.6861 21.2872 88.0526 19.9227 88.0526 19.9227 C 88.0526 19.9227 78.3662 41.7555 93.9156 62.7729 C 109.4657 83.7903 106.329 79.8316 106.329 79.8316 C 106.329 79.8316 84.2329 51.1739 88.5979 28.7926 C 92.9629 6.4114 101.2824 6.6849 101.2824 6.6849 C 101.2824 6.6849 92.145 12.6886 92.5539 26.4719 C 92.9629 40.2553 106.0578 67.0029 106.0578 67.0029 C 106.0578 67.0029 91.4619 30.2943 95.418 18.9665 C 99.3726 7.6395 107.6944 4.2285 107.6944 4.2285 C 107.6944 4.2285 91.4604 13.5084 100.872 38.3459 C 100.872 38.3459 95.0076 14.7387 110.6925 3.6845 C 110.6925 3.6845 99.5089 14.3296 104.1458 34.1167 C 104.1458 34.1167 102.7819 9.8239 117.6489 1.5002 C 117.6489 1.5002 108.1033 9.0071 107.9662 24.1549 C 107.9662 24.1549 110.0124 8.8692 121.3324 0.272 C 121.3324 0.272 112.7387 13.3727 113.2854 32.2051 C 113.2854 32.2051 119.6966 13.6477 122.8348 0 C 122.8348 0 123.3786 7.3697 121.0605 16.5117 C 118.7424 25.6551 117.6512 26.4734 117.6512 26.4734 C 117.6512 26.4734 125.9707 14.1917 126.3804 2.1828 C 126.3804 2.1828 126.7894 13.9197 123.2437 23.7458 C 123.2437 23.7458 129.9972 18.3128 130.8477 6.2743 C 130.861 6.0949 130.8714 5.914 130.8817 5.7317 C 130.8817 5.7317 132.7901 23.3344 125.8337 38.2103 C 118.8773 53.0869 115.6035 54.4507 115.6035 54.4507 C 115.6035 54.4507 131.0188 39.8476 133.3369 19.6514 C 133.3369 19.6514 133.6095 30.9769 129.5179 40.8023 C 125.4262 50.6283 121.0605 58.1352 121.0605 58.1352 C 121.0605 58.1352 141.6564 39.437 138.2471 5.8681 C 138.2471 5.8681 142.2017 24.5626 138.6561 38.7558 C 135.1104 52.949 117.6489 74.7833 117.6489 74.7833 C 117.6489 74.7833 144.7946 50.764 146.0214 12.6901 C 146.0214 12.6901 149.2952 35.207 136.8143 55.6767 C 136.8143 55.6767 155.2285 34.7978 154.8196 14.9418 C 154.8196 14.9418 158.912 24.9717 155.433 38.6869 C 151.9555 52.402 135.3831 84.5397 118.1957 92.3186 C 118.1957 92.3186 164.8446 67.14 161.776 23.9489 C 161.776 23.9489 166.8907 43.5996 160.5485 62.6373 C 154.2062 81.6742 130.0624 110.7418 130.0624 110.7418 C 130.0624 110.7418 164.6401 78.8087 169.7556 44.0087 C 169.7556 44.0087 171.3921 33.3651 169.3459 27.0189 C 169.3459 27.0189 177.7351 30.7034 178.3485 46.4658 C 178.9619 62.2274 170.7787 83.5168 165.0498 98.4594 C 159.3209 113.4027 147.0453 133.2587 147.0453 133.2587 C 147.0453 133.2587 186.9422 72.258 181.2126 42.3714 C 181.2126 42.3714 191.4435 55.2675 190.2152 72.0535 C 188.9884 88.8386 180.3947 135.5105 156.4568 156.5946 C 156.4568 156.5946 182.2364 136.1249 189.3973 98.8693 C 189.3973 98.8693 193.08 79.0133 192.4659 68.1636 C 192.4659 68.1636 197.5806 91.0904 195.7396 108.2855 C 193.8986 125.4806 174.6658 163.9644 174.6658 163.9644 C 174.6658 163.9644 195.7396 131.826 197.1716 111.7654 C 197.1716 111.7654 199.4223 123.8425 197.7858 134.8968 C 196.1493 145.9503 186.7377 166.6253 178.7574 178.7024 C 178.7574 178.7024 195.5351 154.5482 199.0133 143.9031 C 202.4916 133.2587 201.8774 127.1179 201.8774 127.1179 C 201.8774 127.1179 205.9698 160.2799 199.4223 175.8369 C 192.8748 191.3939 172.2107 214.5253 170.7787 225.3742 C 170.7787 225.3742 180.3947 200.1964 201.264 196.3066 C 222.1333 192.4175 234 198.3538 234 198.3538 C 234 198.3538 202.2871 188.1186 185.3049 207.3608 C 185.3049 207.3608 176.712 217.8006 176.5068 227.2168 C 176.5068 227.2168 198.6044 211.6598 202.0819 190.3703 C 205.5608 169.0816 221.7244 165.8062 221.7244 165.8062 C 221.7244 165.8062 203.7191 172.5615 203.9236 190.9848 C 204.1281 209.408 183.4632 231.1059 178.553 230.4922 C 178.553 230.4922 195.3307 225.7841 201.264 211.6598 C 201.264 211.6598 197.3761 225.9886 188.9884 234.279 C 180.5992 242.5693 183.361 246.1515 183.361 246.1515 C 183.361 246.1515 186.2258 237.2475 194.6143 229.7754 C 203.0035 222.3041 214.0515 209.408 214.1538 200.7078 C 214.256 192.0084 223.3609 183.3082 223.3609 183.3082 C 223.3609 183.3082 216.2 192.4175 215.8925 198.9682 C 215.5858 205.5182 216.6089 215.7534 204.64 224.3513 C 192.6703 232.9485 187.6578 248.4033 187.8623 255.1585 C 187.8623 255.1585 196.2174 231.0377 220.7702 226.2621 C 220.7702 226.2621 197.3079 230.9013 188.9884 257.377 C 188.9884 257.377 204.537 230.9028 225.2707 223.9429 C 225.2707 223.9429 203.1739 233.3591 192.5347 256.4223 C 192.5347 256.4223 198.8089 240.044 218.4499 239.3629 C 218.4499 239.3629 202.0819 241.5457 195.3996 256.9671 C 195.3996 256.9671 198.3999 250.4186 209.5851 248.0979 C 220.7702 245.7772 230.1803 237.7255 227.8622 230.0823 C 227.8622 230.0823 230.7263 240.7252 216.1326 247.8229 C 201.5374 254.9206 195.4055 271.9161 195.4055 271.9161 C 195.4055 271.9161 207.2904 283.1744 216.8995 292.6617 C 216.1409 297.9746 213.5212 299.4365 211.0835 299.9987 C 210.2119 300.1997 189.8638 277.3056 188.7044 276.8495 Z"
+	}
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/object.json
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/object.json	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/object.json	(revision 29468)
@@ -0,0 +1,30 @@
+{"data": {
+
+"raph_pencil": "m231.40605,33.93906l-31.55731,-19.83467c-7.96201,-4.99944 -18.45334,-2.59321 -23.47023,5.37046l-12.43852,19.79766l60.37047,37.91735l12.44833,-19.78847c4.99785,-7.97315 2.61256,-18.47403 -5.35274,-23.46233l0,0zm-174.89552,176.37623l60.37376,37.91696l98.39922,-156.64365l-60.4025,-37.92686l-98.37049,156.65354zm-9.22208,48.17491l-1.33344,35.61475l31.5089,-16.66608l29.28072,-15.46014l-58.2445,-36.60284l-1.21167,33.11432l0,0z",
+  "raph_boy": "m210.33144,143.89894c-6.95941,-12.57172 -15.47375,-22.74984 -24.01424,-29.86983c-9.96541,7.29803 -22.10274,11.74199 -35.33479,11.74199c-13.25803,0 -25.41282,-4.45262 -35.36066,-11.74199c-8.54047,7.11999 -17.06351,17.29811 -24.04,29.86983c-16.19487,29.18793 -17.97591,59.1273 -3.98808,66.89018c6.26434,3.49693 12.83241,0.89052 19.61797,-5.6474c-1.19028,6.62904 -1.88538,13.81406 -1.88538,21.32939c0,33.38869 12.97153,60.43492 28.95753,60.43492c9.6353,0 14.40506,-9.84814 16.69862,-24.92639c2.2851,15.07825 7.05482,24.92639 16.6552,24.92639c16.01227,0 28.98392,-27.04623 28.98392,-60.43492c0,-7.51534 -0.69533,-14.70035 -1.91148,-21.32939c6.80278,6.53792 13.36221,9.14433 19.64394,5.6474c13.97922,-7.76288 12.17188,-37.70226 -4.02254,-66.89018zm-59.36613,-29.51799c26.89833,0 48.71428,-21.8159 48.71428,-48.72745s-21.81595,-48.72751 -48.71428,-48.72751c-26.90748,0 -48.74066,21.82024 -48.74066,48.72751s21.83318,48.72745 48.74066,48.72745z",
+  "raph_girl": "m210.47775,159.31802c-6.5556,-11.85419 -14.5853,-21.4483 -22.63556,-28.15549c-9.39328,6.87933 -20.83389,11.06407 -33.31883,11.06407c-12.49292,0 -23.95,-4.19719 -33.33109,-11.06407c-8.05025,6.70718 -16.07988,16.3013 -22.66017,28.15549c-15.26108,27.50842 -16.94806,55.72913 -3.76718,63.05058c5.9046,3.29617 12.09998,0.83537 18.49591,-5.32317c-1.12607,6.24446 -1.79353,13.01715 -1.79353,20.10512c0,31.47218 12.22685,56.96574 27.29962,56.96574c9.078,0 13.57817,-9.28665 15.73595,-23.49945c2.15787,14.2128 6.65384,23.49945 15.71159,23.49945c15.09309,0 27.3199,-25.49356 27.3199,-56.96574c0,-7.08797 -0.65509,-13.86066 -1.80157,-20.10512c6.41638,6.15854 12.59937,8.61934 18.5162,5.32317c13.20151,-7.32146 11.4939,-35.54216 -3.77124,-63.05058zm-55.96663,-27.82361c25.36684,0 45.93047,-20.56793 45.93047,-45.93063s-20.56363,-45.93048 -45.93047,-45.93048c-25.36276,0 -45.94283,20.56364 -45.94283,45.93048s20.58006,45.93063 45.94283,45.93063zm31.37788,-94.27703c13.25461,4.88095 5.27805,-7.78414 5.27805,-16.43626s8.1813,-19.23294 -5.27805,-14.92929c-14.12682,4.52865 -25.57977,7.01829 -25.57977,15.68267s11.45296,10.47439 25.57977,15.68288zm-31.29187,-6.16252c8.39418,0 3.70572,-4.25034 3.70572,-9.48752c0,-5.24121 4.70074,-9.47933 -3.70572,-9.47933s-4.01289,4.25037 -4.01289,9.47933c0,5.24941 -4.38142,9.48752 4.01289,9.48752zm-31.47208,6.16252c14.12683,-5.1963 25.57968,-7.02252 25.57968,-15.68288s-11.45285,-11.15402 -25.57968,-15.68267c-13.45937,-4.31592 -5.28221,6.26888 -5.28221,14.92929s-7.98471,21.30898 5.28221,16.43626z",
+    "raph_pen": "m146.83684,115.71881c-0.45042,-0.67755 -1.00925,-1.34163 -1.72177,-1.85109c-3.04871,-2.2215 -7.351,-1.54391 -9.58611,1.52216c-2.23131,3.07336 -1.52603,7.36902 1.52969,9.59677c2.77647,2.01186 6.48155,1.52948 8.8457,-0.83739l-64.87093,89.42747l-20.16745,73.20351l63.32053,-41.89926l144.20293,-198.7902l-43.17049,-31.31054l-13.91629,19.18622c-0.79611,-3.19165 -2.57372,-6.18823 -5.45471,-8.29767c-6.68427,-4.84662 -16.02917,-3.38049 -20.87282,3.3172c-27.75597,38.28942 -12.36926,48.48591 -38.13829,86.73282zm-31.75805,119.69107l-32.57163,21.55399l10.37183,-37.68758l22.19981,16.13359zm38.36887,-121.63963c19.98219,-29.52283 18.07886,-37.52791 35.18015,-63.73244c2.82889,1.94135 6.07655,2.62617 9.2648,2.45808l-44.44495,61.27437z",
+    "raph_clip": "m254.98035,21.30912c-21.11665,-15.11687 -50.51465,-10.26612 -65.65204,10.86102l-118.72278,165.76295c-10.80711,15.07626 -7.34069,36.07983 7.75584,46.88922c15.09648,10.78922 36.07957,7.32249 46.88668,-7.77365l83.82764,-117.02809l-10.92749,-7.83544l-83.81487,117.03815l0,0c-6.49191,9.03548 -19.08845,11.1275 -28.12135,4.6667c-9.04539,-6.47157 -11.11713,-19.07556 -4.63807,-28.13162l0,0l118.70741,-165.75288l0.01529,-0.01052l-0.02554,-0.01006c10.79433,-15.04511 31.84402,-18.52175 46.89943,-7.74307c15.05548,10.78889 18.53748,31.84415 7.75841,46.89928l0,-0.01001l-130.12462,181.67987l0.01277,0.02063c-15.10905,21.08588 -44.57393,25.95731 -65.66481,10.86099c-21.09067,-15.12738 -25.94428,-44.56136 -10.84798,-65.66789l94.56806,-132.03191l-10.93002,-7.82487l-94.56529,132.03193c-19.45266,27.15742 -13.20177,64.92889 13.96575,84.37384c27.16738,19.46548 64.93915,13.20953 84.39181,-13.93738l130.12166,-181.69052c15.09668,-21.11655 10.25589,-50.49928 -10.87589,-65.63668z",	
+    "raph_tshirt": "m191.01682,41.7402c-6.65135,16.37186 -22.65103,27.93963 -41.39505,27.93963c-18.75568,0 -34.7588,-11.56777 -41.3954,-27.93963l-101.36017,42.98543l28.51685,67.20866l31.32125,-13.28813l0,137.02332l166.93693,0l0,-136.53912l30.19667,12.81158l28.52783,-67.2086l-101.34891,-42.99313z",	
+	"ball": "m1.36762,144.54343c-0.61252,-24.33647 11.43968,-48.24649 31.71385,-61.85355c33.0555,-25.12355 76.68359,-36.57172 117.69406,-29.65477c20.30775,-3.13354 29.29549,17.94864 22.15137,34.18353c-11.04268,10.79923 -30.25032,0.52836 -44.5518,6.11385c-46.3661,5.97041 -92.1348,26.12911 -123.47163,61.54787c-0.19116,-3.78908 -5.04203,-6.31387 -3.53584,-10.33693zm0.56006,21.59657c2.46893,-17.16783 19.59014,-26.10648 31.49495,-36.53964c40.07716,-28.36518 90.31613,-39.61352 138.89854,-37.70576c1.20387,19.56051 -8.00084,38.23036 -19.07559,53.7263c-15.20721,8.47826 -34.11861,-1.17561 -50.23914,6.54221c-28.27367,6.8441 -59.74523,15.46761 -77.84163,40.11734c-6.57559,19.79451 -20.47401,-0.35286 -21.54921,-12.00313c-1.52846,-4.62877 -1.3158,-9.384 -1.6879,-14.13731zm7.76269,-58.70418c2.42006,-21.53997 16.61662,-39.35048 29.64042,-55.76294c14.68114,-17.49181 34.66698,-30.31521 57.12629,-35.01287c17.80165,-4.64955 36.14864,-6.58389 54.39959,-8.53692c13.84103,10.63111 22.64574,29.11792 20.32661,46.60463c-10.75017,2.72292 -29.7578,-6.48294 -44.25362,-4.23798c-41.11142,0.38721 -83.13954,16.86419 -110.9226,47.60359c-2.31326,2.96635 -4.3931,6.11006 -6.31669,9.34248zm-2.20363,84.97105c15.37329,12.3277 15.8773,33.69405 25.32488,49.77684c-11.32475,-14.57886 -21.29314,-31.61081 -25.32488,-49.77684zm12.17333,11.7446c4.82258,-13.28815 19.94093,-31.96367 32.55468,-30.57486c5.04242,12.98813 7.22698,27.06129 15.42273,38.77007c22.00548,40.39473 62.27551,75.33984 110.15025,76.43997c7.82913,1.58691 28.58411,-3.6853 27.74063,-1.50394c-20.00963,9.82742 -43.17618,11.98239 -65.22374,11.19174c-40.94611,-2.71915 -81.7309,-22.38535 -106.34646,-55.65858c-6.96676,-11.95032 -10.92698,-25.33659 -14.29809,-38.66251zm33.70255,-33.88084c11.04849,-5.13829 31.74819,-20.7682 40.05036,-8.17067c20.26116,39.90601 54.51507,73.83781 96.68548,89.7942c21.8947,7.30453 46.52556,7.18939 67.87685,-1.92662c-8.90472,13.82597 -23.64018,22.69292 -37.52655,30.83714c-35.49046,15.14874 -78.39111,6.93469 -108.29421,-16.68286c-28.94243,-22.9118 -51.66176,-55.70389 -58.71476,-92.285l-0.04169,-0.84726l-0.03548,-0.71893l0,0l0,0zm14.80587,-143.69432c26.85995,-18.47492 60.14433,-27.13922 92.60995,-24.83766c-16.61871,10.60714 -37.47179,6.57748 -55.695,12.32051c-12.71339,2.76803 -25.33243,6.4903 -36.91495,12.51714zm23.19239,130.17215c17.68391,-8.37067 37.80864,-8.2348 56.92004,-7.08942c11.52194,17.94525 19.73788,38.80402 37.6284,51.74121c20.84937,18.617 51.18832,23.87227 77.45898,15.12419c9.02167,-6.09496 19.03778,-2.20023 14.1109,9.88971c-5.93085,20.07378 -26.98962,28.88977 -46.28781,29.86346c-39.48146,3.94382 -75.60028,-18.48682 -102.27098,-45.57831c-15.55914,-15.57706 -28.70033,-33.74123 -37.55954,-53.95085zm59.9713,-149.25921c14.39017,-11.41684 33.98842,-1.08634 48.71259,4.37706c14.6449,12.52997 16.60739,33.37817 20.47758,51.17717c6.47049,41.78263 3.85324,86.6684 -15.69031,124.8082c-4.67027,13.36929 -18.09242,20.61154 -26.69522,6.15724c-9.99724,-11.02568 -17.64142,-23.85532 -24.85538,-36.77173c-4.26648,-12.35977 9.69913,-21.07201 12.62395,-32.37317c5.6987,-11.2672 7.1479,-23.94022 7.7876,-36.27168c2.68518,-18.44756 0.04341,-37.58501 -4.80806,-55.44724c-3.40224,-9.88385 -8.92734,-19.45691 -17.55275,-25.65586zm41.36089,197.33399c28.32747,-32.0033 32.81847,-77.44762 30.6862,-118.36129c-1.29825,-24.12249 -4.96657,-49.05092 -17.68674,-70.0582c13.14473,0.40704 27.28206,12.75397 37.58124,21.8466c29.18982,37.11403 37.77368,91.40852 15.58273,134.05255c-8.72922,17.24329 -20.55305,32.80717 -34.43375,46.22929c-11.62009,-0.9548 -23.39864,-5.3515 -31.72969,-13.70895zm32.30334,13.89389c30.50691,-29.40305 52.59978,-71.66214 46.00664,-114.99303c-2.62479,-20.29454 -10.03497,-39.89902 -21.13239,-57.06778c20.32477,12.66527 31.62595,35.09759 41.79111,55.93748c14.61285,36.42265 6.66864,80.8159 -19.44537,109.92648c-13.41086,7.60643 -32.33356,8.77071 -47.21999,6.19685zm50.22404,-6.80072c10.46527,-18.28113 22.34006,-36.81323 23.43076,-58.50224c1.62656,-7.25171 -0.89633,14.22787 -1.77191,18.74721c-2.78329,15.96013 -6.41766,32.99399 -16.3092,46.01608c-2.27573,-1.26239 -1.2605,-7.4102 -5.34964,-6.26105z",
+	"bolt": "m178.14388,74.00616l-108.49727,68.79685l107.15599,23.63498l-99.04335,73.85934l-39.98779,-12.47227l28.36194,71.19228l112.7131,-31.06076l-47.58928,-12.98325l129.22581,-106.08589l-118.12698,-19.22734l114.07071,-71.6874l-65.0681,-10.76349l70.86891,-45.56109l-26.03423,-0.65478l-109.97452,62.50492l51.92505,10.50792z",
+	"car_smart": "m28.92024,238.37814c-20.54175,-8.15092 -27.36674,-32.3504 -27.6178,-52.52942c-2.7836,-14.94118 14.71887,-25.93048 8.95686,-41.2937c-2.18657,-22.71175 4.68564,-45.20703 14.9548,-65.22043c0.32475,-12.85873 10.87969,-17.84956 22.37955,-17.11762c37.15603,-4.71741 74.98359,-4.84966 112.15372,-0.39277c22.18198,4.11681 39.85953,19.32546 58.61859,30.81274c11.63586,8.63808 25.21985,14.32888 36.92355,22.63131c12.64026,10.62529 24.51556,22.47708 33.27448,36.57193c3.15143,14.09033 7.38165,28.09947 9.54742,42.2829c4.39661,13.27223 -4.6037,21.62047 -11.41214,30.84103c-10.34,12.57306 -29.90723,17.53416 -44.71561,10.78313c-10.28528,-3.75465 -14.07077,-19.70746 -25.7968,-18.60466c-44.20906,-0.65964 -88.41812,-1.31926 -132.62719,-1.97884c-10.24168,13.44736 -24.40165,28.14365 -42.91705,26.05086c-4.02312,-0.33679 -7.97831,-1.33774 -11.7224,-2.83646z",
+	"car": "m26.77284,183.48201c-8.08779,-6.80998 -23.25337,0.56996 -25.08215,-11.86069c-3.52016,-11.04616 7.23365,-19.6761 14.38957,-26.36473c12.51913,-6.23676 26.95447,-6.99092 40.49323,-9.84883c16.2238,-2.35439 33.11552,-4.36668 47.10119,-13.71207c15.9294,-9.9651 33.67083,-18.25834 52.86141,-18.11141c26.44141,-0.91634 53.7986,-0.02856 78.2453,11.26058c15.36688,6.93465 31.87709,10.4591 48.27711,13.85143c13.95395,1.83385 10.70889,16.88237 15.35007,26.15973c3.54291,10.65329 -4.11594,21.25732 -15.32654,21.59605c-11.85318,2.69405 -25.72552,2.95921 -34.00009,13.30453c-8.47623,9.38277 -23.69647,9.05888 -32.32811,0.09547c-3.56866,-2.21568 -5.9512,-7.58008 -10.70335,-6.65411c-44.31184,0.24008 -88.64653,-0.63266 -132.93902,0.78894c-11.57394,-0.92139 -16.38131,13.44077 -28.69251,12.44249c-6.30352,0.19554 -12.27285,-9.98318 -17.64611,-12.94739z",
+	"cloud": "m193.50864,67.27344c-28.56444,0 -53.08249,14.81322 -65.08365,36.1982c-4.7932,-2.67596 -10.08009,-4.29625 -15.72245,-4.29625c-17.06268,0 -31.26126,13.72618 -35.64974,32.35901c-7.49058,-2.96072 -16.20005,-4.7533 -25.50328,-4.7533c-27.90971,0 -50.54951,15.27039 -50.54951,34.09579c0,16.99312 18.56764,30.96303 42.68829,33.54732c-1.08106,1.83421 -1.91961,3.65059 -1.91961,5.57599c0,18.02431 49.38134,32.72462 110.23999,32.72462c60.85864,0 110.24005,-14.70032 110.23999,-32.72462c0,-1.21274 -0.75272,-2.29501 -1.18832,-3.47357c2.66562,0.6629 5.30496,1.37115 8.22687,1.37115c16.28061,0.00005 29.5253,-11.06223 29.5253,-24.6806c0,-13.61838 -13.24469,-24.68059 -29.5253,-24.68059c-1.99515,0 -3.69165,0.68915 -5.57599,1.00551c1.64767,-5.44531 2.74228,-11.00153 2.74228,-16.91078c0,-36.04859 -32.63087,-65.35786 -72.94485,-65.35786z",
+	"drop": "m115.15536,295.759c-42.01334,-15.78687 -72.12711,-65.94934 -65.28346,-108.74701c4.3154,-26.98718 95.35947,-190.81818 103.3105,-185.90417c2.59511,1.60386 25.68835,39.79974 51.31831,84.87975c41.0565,72.21342 46.5999,85.67899 46.5999,113.19665c0,55.77716 -44.6394,101.46498 -98.23825,100.54555c-15.6409,-0.26834 -32.60906,-2.05518 -37.707,-3.97076zm42.09262,-28.05386c1.39066,-7.22116 -1.85785,-10.74289 -9.90955,-10.74289c-18.35065,0 -43.80598,-23.24161 -49.49309,-45.18889c-6.0666,-23.41179 -22.15186,-26.19615 -24.52774,-4.24574c-4.57746,42.29059 76.21872,100.22086 83.93037,60.17752z",
+	"electric_guitar": "m168.96899,1.09303c-2.62799,0.19977 -5.017,2.04496 -6.96899,4.55579c0.009,13.46278 -11.116,25.03858 -14.875,34.35928c2.30499,1.8475 1.13,2.9332 -1.03101,4.4286c-0.17,2.5165 0.468,4.9685 2.468,7.3554c-2.591,41.8755 -6.024,92.17889 -8.718,134.4599c6.14801,0.138 12.354,1.117 18.81201,0.687c-0.007,-32.55499 2.539,-84.562 3.282,-116.00749c-0.101,-10.2094 -0.504,-24.029 13.12399,-28.8618c-6.94499,-14.7833 5.922,-35.70095 -5.562,-40.97666c-0.146,-0.00122 -0.293,-0.00885 -0.438,0c-0.03099,0.00187 -0.062,-0.00236 -0.093,0l0,-0.00001zm11.692,171.76396c-4.715,6.66701 -11.79199,10.17 -14.146,13.60501c-5.37599,8.46799 -14.379,-3.16701 -26.89,2.99599c0.065,-1.02399 0.153,-2.172 0.21899,-3.20599c-0.07199,-0.002 -0.14699,0.00101 -0.21899,0c-6.659,1.013 -12.157,-7.713 -12.594,-15.44901c5.55199,-11.89 -14.242,-18.006 -19.5,-5.82899c-3.943,13.605 -0.41,27.51199 4.78201,40.672c5.933,16.162 -8.871,30.179 -13.2192,45.17601c-4.1375,9.502 -4.2709,20.46999 2.68719,29.192c9.486,13.58398 29.413,18.62799 47.563,18.758c3.23401,0.224 6.44801,0.414 9.68701,0.58499c57.61699,3.284 34.35399,-35.13699 25.282,-68.41299c-5.82201,-21.66299 1.48199,-36.38 6.269,-42.614c2.659,-7.35001 6.02899,-23 -9.92101,-15.472l0,-0.00101zm-34.567,-128.4203c2.43501,-11.918 -8.10399,0.709 0,0z",
+	"guitar": "m158.45264,1.00012c-0.96039,0.00612 -1.8884,0.06411 -2.73161,0.18457c-4.49716,0.64245 -8.99768,2.5655 -8.99768,2.5655c0,0 0.00569,8.99612 -0.63676,15.42064c-0.64244,6.42453 -3.21147,17.34015 -3.21147,17.34015l3.15611,6.32144l0.05536,-1.172l10.62189,1.86414l0.94128,0.05537c0,0 1.28059,-1.28413 2.56551,-3.21148c1.2849,-1.92736 3.85747,-3.21148 3.85747,-3.21148c0,0 0.63675,-9.63641 0.63675,-16.70339c0,-7.06698 2.57472,-18.63212 2.57472,-18.63212c0,0 -4.66991,-0.84783 -8.83156,-0.82133zm-1.74417,42.52442l-10.62189,-0.58139l-0.05536,-0.11074l-5.5278,113.65688c0.19376,0.03734 0.44296,0.08304 0.44296,0.08304c0.14801,2.18161 0.8121,3.84209 1.8549,5.14021l11.84926,5.41707c0.3562,0.09476 0.71249,0.18806 1.07048,0.28609l1.28276,-123.83578l-0.29532,-0.05537zm-0.98744,123.89115l0,0.20302l-1.07048,-0.48911c-4.80661,-1.27875 -9.3821,-2.34575 -11.84926,-5.41707l-2.5009,-1.14432l0.20303,-4.07893c-2.16553,-0.41753 -15.40038,-2.83867 -20.1179,-0.47989c-5.13962,2.56979 -8.99552,6.42279 -10.28043,14.77466c-1.2849,8.3519 2.57119,23.77351 1.92873,34.05275c-0.64246,10.27924 -7.71416,19.91469 -10.92641,28.26657c-3.21227,8.35188 -6.4202,17.99007 -2.5655,32.12404c3.85472,14.13391 17.99164,23.77151 25.70107,26.9838c7.70942,3.21225 23.7631,5.14023 23.7631,5.14023c0,0 15.42752,2.58041 25.06432,1.93796c20.23672,-3.64624 28.72404,-15.65756 29.98303,-30.66595c1.259,-15.00839 -4.71521,-33.01251 -13.40884,-48.65207c-9.50552,-17.10013 8.59656,-39.76326 -0.76596,-52.52802c-9.74182,-13.28188 -16.9409,8.64334 -23.78156,3.87593c-2.77655,-1.93504 -6.09895,-3.00655 -9.37605,-3.90359z",
+	"helicopter": "m145.07504,214.22588c7.36339,2.46503 20.68225,-9.04681 7.26401,-9.72079c-9.08205,-5.71648 20.13416,-1.63675 8.22827,-13.70961c-12.73747,-2.77332 -22.69479,-12.46857 -27.12979,-24.871c-5.18111,-13.36012 -22.04633,-9.68964 -33.09622,-13.54991c-22.05075,-3.93678 -44.07657,-8.59007 -66.50366,-9.73877c-7.45861,8.40495 -10.97594,26.46114 -24.24853,25.75703c-13.26779,-6.6758 0.56035,-23.43509 -3.41489,-33.00934c-7.79329,-2.62592 -6.3066,-7.72096 1.2938,-8.36586c11.59587,-8.00312 1.94812,-23.47349 -0.57486,-34.01581c-6.13778,-10.01295 7.00565,-18.8414 12.01386,-7.02641c6.38165,12.3224 10.0863,25.85204 15.15507,38.7706c1.5816,8.28716 13.30507,3.58878 19.44516,6.06101c25.89155,2.78554 51.80775,5.58556 77.83869,6.66318c13.03992,-5.6261 26.8783,-10.34038 41.29993,-8.34114c10.08574,3.05644 15.78185,-0.7104 15.3338,-11.13895c5.72609,-15.02095 -14.03151,-8.3312 -22.93935,-10.54208c-35.53757,-1.72837 -71.18015,-2.25171 -106.70476,-0.12757c-7.88696,-1.96813 10.41693,-1.78943 13.19444,-2.24187c37.48436,-1.98021 75.04819,-1.00611 112.54227,-2.69012c10.81163,-3.98792 21.54251,3.11311 32.56555,1.91049c27.80304,1.13907 55.63103,1.5356 83.45552,1.62198c-7.86588,5.84674 -22.53885,0.05771 -32.94354,1.5061c-20.90826,-0.64194 -41.94905,-1.24406 -62.73434,1.6021c-8.09567,7.82163 -3.84563,24.5245 6.28453,28.41502c10.32359,5.55025 20.91692,10.41565 30.31529,17.0117c5.93991,11.31316 22.72864,20.80537 17.77679,35.05132c-5.67494,11.7886 -26.25294,4.37625 -31.4632,7.69153c3.85466,6.8309 17.16597,7.52176 19.55997,10.01913c-13.12518,3.78056 -0.61014,11.85339 6.85498,9.29091c9.21201,2.18106 -9.36668,3.71298 -12.4339,2.99583c-14.92371,0.12004 -29.83833,-0.52202 -44.7583,-0.72722c14.41679,-0.6433 28.87468,-0.63033 43.24721,-2.05975c-3.35245,-13.78374 -21.0649,-7.04161 -31.27078,-9.43388c-4.97525,-2.55072 -21.3748,0.68501 -13.06122,5.71829c4.63876,-2.08994 15.97667,-0.09111 5.65021,2.25237c-18.67735,0.60303 -37.42494,0.87289 -56.04201,-1.0285zm45.45972,-5.72816c-5.69293,-8.23618 -25.36656,-6.65369 -28.94688,0.84814c6.97417,5.6115 21.3663,3.65866 28.78714,0.2599l0.15974,-1.10805l0,0zm41.15115,-4.79669c-8.39107,-5.92067 -23.748,-6.57408 -31.28664,-1.76099c9.46599,4.52687 21.07687,2.68456 31.28664,1.76099zm-41.46053,-2.71213c8.91602,-7.60876 -15.73071,-6.19264 -21.17932,-5.80487c-13.47525,6.12955 5.46666,7.82239 11.1256,6.8177c3.37151,-0.02223 6.75697,-0.27522 10.05373,-1.01283z",
+	"katana": "m127.28507,65.14041c-7.0962,-0.54353 -19.86895,7.61395 -17.02093,-6.32892c4.93732,-8.55679 18.30521,-4.48845 16.78561,5.48313l0.17354,0.62374l0.06178,0.22205l0,0zm17.16403,-18.49577c-6.77293,11.60114 -22.03173,12.43076 -33.48896,16.75148c-5.30647,3.04373 -26.81981,5.02184 -18.62814,-4.27034c11.69819,-7.75446 26.08649,-9.62626 39.25734,-13.85468c4.24069,-0.99664 9.15976,-1.38791 12.85976,1.37354zm-35.03055,12.26915c-5.16663,-17.73298 -10.33324,-35.46593 -15.49986,-53.19891c6.32053,-8.5978 20.25586,-4.8693 18.32531,6.59137c4.01678,13.78642 8.03355,27.57289 12.05032,41.35935m-5.56697,9.33072c22.56753,79.08354 48.81091,157.2375 81.6054,232.70842m-75.6467,-234.76585c22.79797,74.42342 46.12929,148.92492 77.59851,220.23124c0.43317,5.52475 14.80417,22.08911 1.77542,17.81497c-4.05151,-1.9415 -10.97104,-0.62137 -11.72156,-6.31741c-30.74268,-74.29929 -57.39734,-150.28568 -79.92033,-227.47363",
+	"dagger": "m1.57422,47.21264c-2.775,14.24454 5.08469,27.79975 11.2199,40.10517c13.07098,21.70464 28.2358,42.59465 47.26681,59.46329c12.98537,10.6889 24.68548,22.99878 39.38902,31.4678c19.22253,12.95224 39.86254,23.55869 61.26455,32.3793c15.9138,6.93546 32.60274,11.85577 49.65401,15.08282c4.95967,1.28564 18.82625,4.91663 10.19991,-3.60251c-7.15544,-3.02133 -14.76756,-5.22583 -21.96236,-8.37695c-34.92769,-14.34082 -72.04247,-26.94104 -100.21951,-53.10463c-4.66899,-6.20064 8.95855,3.3492 11.3067,5.96803c23.50703,16.73581 50.36192,27.95749 76.84653,39.04178c13.47301,4.46384 28.20039,13.97903 42.51408,7.22675c12.36502,-4.72467 -2.95702,-5.44891 -8.42033,-7.24844c-24.28337,-6.90491 -48.85286,-13.54227 -71.13893,-25.76019c-12.72568,-4.65573 -23.42126,-13.22678 -34.85331,-20.29132c-12.35065,-8.53128 -23.65424,-18.49934 -35.67798,-27.49634c-7.86864,-5.96642 -15.68669,-11.98865 -22.20108,-19.46664c-11.01625,-11.02383 -21.70009,-22.36108 -31.68482,-34.33246c-6.52307,-7.36439 -13.86146,-14.10685 -18.44664,-22.93894l-5.05655,-8.11652zm256.45175,139.13108c-1.50562,-0.04745 -3.06,0.28214 -4.36211,1.15021c-9.72246,4.86124 -7.63908,13.88922 -13.19478,20.83386c-4.16678,5.55569 -9.028,8.33356 -15.97261,10.41693c1.38892,2.77783 4.16675,6.94461 4.16675,10.41693c0,7.63907 -9.02798,14.58368 -15.97261,13.88922c-2.77786,-0.69446 -9.028,-4.16678 -11.11139,0c-0.69446,1.38895 -0.69446,2.77786 0,3.47232c0,2.77786 3.47231,4.16678 6.25015,5.55569c7.63908,2.08337 15.97263,-0.69446 22.22279,-4.86124c4.86122,-2.77783 8.33353,-7.63907 9.72246,-13.19479l1.38892,-9.02798c0.69446,-2.77783 3.47232,-3.47232 6.94463,-8.33353c4.16676,-5.55569 8.33354,-15.2782 13.88924,-19.44495c2.08337,-1.38892 4.16675,-2.0834 6.94461,-2.77786c-1.38892,-2.08337 -2.77786,-3.47229 -4.16678,-5.55566c-1.38892,-0.69449 -2.77783,-2.0834 -4.16675,-2.0834c-0.78128,-0.26041 -1.6792,-0.42728 -2.58252,-0.45575zm29.4061,26.21594c-2.61084,-0.02899 -5.33868,0.54254 -8.07312,1.32382l5.55569,3.47232c-1.38895,2.77783 -4.86121,8.33353 -4.16678,11.80585c0.69449,6.94461 10.41693,6.94461 14.58371,2.77783c4.86124,-5.55569 4.86124,-13.88922 -2.08337,-18.056c-1.82297,-0.91147 -3.78549,-1.30127 -5.81613,-1.32382zm-13.39011,3.40723c-0.54364,0.00192 -1.07498,0.00705 -1.60593,0.0217c-3.8486,0.21091 -7.69568,0.50116 -11.54541,0.67276c-2.41867,0.03116 -4.88754,-0.00473 -7.22676,0.69446c-3.17285,2.02515 -5.29396,5.38272 -6.53229,8.87607c-0.16666,0.50345 -0.30807,1.02072 -0.41234,1.54083c3.86218,1.74924 8.17189,1.5618 12.30499,1.41064c2.50439,-0.06696 5.00949,0.24561 7.50888,0.36893c1.7876,0.07916 3.57104,0.32327 5.36038,0.26044c2.19412,-0.07278 4.22598,-1.3168 5.38205,-3.16849c0.99927,-1.58255 1.9447,-3.21933 2.56085,-4.99146c0.49768,-1.59048 0.5896,-3.80087 -1.06339,-4.75272c-1.43857,-0.79446 -3.10013,-0.93906 -4.73105,-0.93317zm2.53915,15.9726c-0.69449,0.69446 -1.38892,0.69446 -2.0834,1.38892c-0.69446,3.47232 8.33356,11.80588 9.72247,4.16678c-3.47232,-1.38892 -5.55573,-2.77786 -7.63907,-5.55569z",
+	"menorah": "m86.17095,270.72717c9.02267,-23.09398 33.59461,-36.70894 57.45916,-38.45409c0,-4.91623 0,-9.83244 0,-14.74866c-38.305,-2.75075 -76.20534,-18.86525 -101.66333,-48.29793c-23.2569,-24.97108 -35.58256,-58.55817 -37.27682,-92.42073c-13.45491,-9.58464 12.56556,-16.55834 15.7355,-5.95607c-7.24909,8.79617 -0.22592,22.59306 0.80432,33.36646c11.47956,50.91395 56.38975,91.60496 107.78628,98.82449c13.14264,5.82442 16.6395,-2.00252 14.39308,-13.99509c2.81267,-9.48175 -7.44086,-6.60333 -13.57417,-8.37358c-40.52152,-7.1041 -75.7263,-38.65041 -86.11595,-78.75394c-2.97659,-11.47399 -3.94458,-24.11363 -7.5694,-33.51495c7.70256,-6.02401 26.19639,-1.60448 15.97076,9.15671c1.09565,45.56244 38.91488,85.76277 83.65269,91.48959c9.24995,4.52249 8.18915,-3.21457 7.85701,-9.40932c4.90146,-15.06035 -9.71606,-12.79654 -19.53952,-16.50067c-27.62657,-9.39215 -47.87568,-36.35101 -49.79039,-65.51331c-13.2153,-11.51691 15.74928,-17.53994 15.95383,-5.55531c-7.59098,8.84892 0.96818,23.21689 5.54156,32.6564c10.3335,16.84724 28.24842,28.22102 47.83452,30.47823c0,-7.52246 0,-15.04491 0,-22.56738c-18.20905,-2.81535 -32.7534,-18.72141 -34.8131,-36.97318c-12.40635,-10.10166 14.58986,-14.97282 16.53119,-5.29626c-6.736,5.28018 -1.66743,13.75206 2.28733,19.47478c2.82583,3.38407 16.81124,15.16281 15.99458,6.28913c0,-10.03232 0,-20.06463 0,-30.09695c-8.52963,-5.41637 3.21713,-9.02356 -1.91258,-15.41792c2.95047,-6.63559 4.28693,-23.79965 6.49635,-24.00391c7.40089,10.5439 4.63795,25.17949 11.62167,34.34932c-3.85376,4.14688 -4.52328,8.74758 -3.86568,14.89357c0,8.05796 0,16.11592 0,24.17388c11.03737,-3.24367 21.02812,-12.42406 21.72646,-24.48188c-12.61211,-14.80839 30.69243,-11.52931 12.71999,1.59949c-1.87195,17.85434 -17.0993,32.57059 -34.44644,35.57887c0,7.49281 0,14.98562 0,22.47842c29.68999,-2.98224 55.87296,-29.1582 56.39926,-59.47436c-12.36238,-13.6567 27.91393,-12.75137 14.12813,-0.52898c-3.16423,14.80594 -6.23018,30.54218 -16.29872,42.63571c-12.70108,17.1765 -33.04718,27.37456 -53.98901,29.78134c0.16994,9.14496 -4.65584,28.46082 11.13493,20.75519c39.31322,-6.69104 72.74197,-39.63307 78.74797,-79.43351c5.73982,-8.84732 -8.70837,-25.00382 8.28397,-22.77648c10.50046,-2.44997 11.98193,6.34405 5.8692,11.72792c-2.04736,35.89314 -21.91298,70.45303 -53.09749,88.60141c-15.52945,9.13074 -33.16388,14.88533 -51.17824,15.85547c0.17836,7.53169 -0.4761,15.16116 0.61618,22.6142c35.31798,-2.81911 70.08339,-18.10321 93.11932,-45.67516c20.51892,-23.04272 31.08511,-53.43816 32.84753,-84.00375c-10.43478,-10.04525 11.39471,-11.61442 16.59445,-7.04305c-5.883,11.66189 -5.21661,27.04671 -9.11984,40.52295c-12.68921,53.08224 -58.41412,95.84925 -111.85593,105.51876c-7.32545,1.56883 -14.77785,2.36348 -22.20172,3.29227c-0.71042,9.09981 -0.50818,18.35449 11.59822,16.61531c20.59241,4.32626 40.36211,18.55411 46.94081,39.19469c-43.09088,0 -86.18179,0 -129.2727,0c0.31159,-0.88608 0.62314,-1.77219 0.93477,-2.65823zm-82.88959,-208.5947c-0.54892,-8.1144 4.33617,-25.42208 5.66115,-27.43132c2.27143,7.42761 12.58555,23.78434 4.72879,28.60384c-3.29131,-0.38358 -8.04816,1.57556 -10.38994,-1.17252zm34.52483,0.55147c-1.7146,-10.01769 5.4567,-19.41309 4.51432,-29.75311c3.2196,8.43034 16.36395,29.47998 1.96646,30.42084c-2.16732,-0.0773 -4.38702,0.03559 -6.48078,-0.66772zm35.62526,-0.17229c-1.52428,-9.82734 5.20364,-19.12723 4.61758,-29.264c3.98769,8.50923 17.39558,32.7104 -0.82941,30.07944l-1.91212,-0.12625l-1.87605,-0.68919l0,0zm34.60818,0.26421c-1.9521,-10.01891 5.40411,-19.48301 4.43661,-29.84504c3.27068,8.4848 16.29427,29.36411 1.98981,30.63179c-2.15335,-0.08198 -4.37302,0.0215 -6.42642,-0.78675zm69.2087,-0.38279c-1.5544,-10.07727 5.31645,-19.6095 4.34973,-30.05398c2.70531,5.08463 6.32187,13.73424 7.91895,20.50951c4.77353,11.03205 -3.95122,12.51878 -12.26868,9.54446zm35.71176,0.44493c-2.89404,-9.75608 5.30412,-19.55815 4.07715,-29.90718c3.42241,8.32418 12.40758,23.15913 6.53528,30.337c-3.53609,0.01955 -7.13571,0.41735 -10.61243,-0.42982zm34.8703,-0.20629c-2.23303,-8.13288 4.34842,-24.82986 5.07388,-28.23849c3.49849,8.39077 16.5291,33.58521 -2.7937,28.93562l-2.28018,-0.69713l0,0zm35.10023,-0.15336c-1.90784,-8.93159 5.20419,-21.786 4.83258,-28.71239c3.47043,8.02287 16.97986,32.30244 -0.94669,29.60343l-1.89111,-0.14957l-1.99478,-0.74147l0,0z",
+	"chair": "m118.11539,289.55515c-7.47328,-14.4328 15.76004,-21.83389 9.75156,-35.26642c-9.58212,-8.59285 -23.93785,-6.58557 -35.88018,-5.92961c-12.89955,-1.58955 -16.67669,11.62587 -24.11323,17.11729c-14.66394,-4.57965 -9.41961,-23.5907 3.95336,-25.69879c17.48831,-7.56879 36.79559,-3.21786 54.96046,-6.57193c13.14571,-7.65541 -3.09947,-24.09541 -13.42245,-25.84244c-17.08451,-6.9008 -38.18468,-7.0844 -51.24073,-21.62146c-5.1916,-11.32457 -3.84497,-32.04767 10.15321,-36.01445c6.34414,-10.73523 5.01785,-24.55999 3.35027,-36.47948c1.42348,-12.67513 -26.70474,-5.25126 -14.90233,-18.24577c10.64336,-8.15804 24.36629,-13.15867 37.81105,-12.959c10.96933,0.36309 11.71716,12.99065 -0.37628,9.89848c-12.30081,6.18077 -7.72121,23.86169 -7.25122,35.16668c5.93514,11.39347 22.04794,5.36764 32.49831,7.07384c14.8665,0.39955 21.73593,0.44463 35.83476,5.23605c14.25958,-1.05464 8.64325,-20.61657 0.17079,-21.97119c-13.03212,-2.87206 -25.91483,-10.25501 -33.20317,-21.62909c-4.07215,-13.26593 1.69855,-27.24597 4.77583,-40.18096c9.18196,-28.0861 34.13237,-54.57027 65.33606,-54.63913c19.15414,0.28833 38.85675,14.48402 42.13089,33.82922c2.48616,20.34066 -5.57245,41.0622 -0.32005,61.11538c12.75343,7.04288 -8.70227,17.78406 -9.16336,27.50478c-5.43883,14.13736 6.97403,30.55498 -3.65417,43.29654c-6.64983,9.38159 -22.16026,14.5639 -22.43275,27.04953c-3.81845,11.24202 -21.47061,10.39703 -30.28923,17.71931c-9.74564,2.86838 -15.08257,19.17726 -0.15649,15.9317c14.55153,-0.35892 29.03516,-5.81784 43.55118,-3.3181c10.39314,7.10063 -0.45073,21.22018 -10.9113,14.54475c-5.46445,0.08383 -25.63857,2.80356 -18.76688,8.69054c17.18895,4.015 35.8273,9.2104 46.95854,24.0352c10.43184,13.90863 -12.73763,17.22995 -17.34935,5.0022c-19.29245,-15.75378 -48.30531,-24.24933 -70.97163,-10.48508c-13.71143,5.73386 -10.53542,20.53958 -11.98199,31.56015c-5.57972,6.09451 -13.26627,-2.5275 -14.84946,-7.91876zm100.26077,-153.99353c-4.62421,-8.64436 -27.69229,-17.16811 -30.82967,-4.71919c1.76141,12.68575 19.62196,15.68971 29.15408,10.51048c1.73547,-1.32053 2.45361,-3.74493 1.67558,-5.79129z",
+	
+	"bone": "m273.3559,119.27242c-11.58661,5.90293 -23.89537,9.95385 -36.67676,12.27164c-53.42084,0.2984 -105.13121,0.41397 -158.74251,2.97562c-14.28426,-2.65407 -30.58815,0.18161 -42.82426,-9.13783c-9.06827,-7.25944 -28.17529,-2.4415 -25.05096,11.36483c6.17649,14.08824 -14.61965,21.70474 -7.59176,36.00003c6.11589,14.67987 24.54805,9.02721 35.59484,4.1729c20.29636,-4.79665 40.55842,-9.8537 60.92737,-14.38416c42.52868,-4.82219 82.54949,-1.83121 124.59118,1.02063c11.68694,2.54654 23.55803,4.03351 35.45654,5.38187c10.1839,0.16006 18.34979,7.46698 27.92017,8.65919c12.6539,-1.22533 16.41983,-19.19981 7.59747,-27.17406c-13.18918,-8.72406 6.75436,-24.14882 -8.14166,-31.38885c-4.25287,-2.31086 -8.733,-0.75754 -13.05966,0.23817z",
+	"raph_gear2": "m162.95016,254.38129c-2.80937,0.26439 -5.68164,0.44717 -8.63573,0.44717l0,0c-2.64238,0 -5.20918,-0.14467 -7.71307,-0.35916l0,0l-21.68047,27.86606l-5.33187,-1.51157c-6.25791,-1.75732 -12.33638,-3.96201 -18.18163,-6.60748l0,0l-5.06733,-2.29276l1.30382,-35.00255c-4.60764,-3.22517 -8.90648,-6.81548 -12.88757,-10.75204l0,0l-34.27816,7.36342l-3.13052,-4.59854c-3.67223,-5.39792 -6.80273,-11.05444 -9.57725,-16.77345l0,0l-2.40936,-4.99521l23.2742,-25.7621c-1.45512,-5.4549 -2.41877,-11.08614 -2.91638,-16.82405l0,0l-30.84222,-16.30753l0.56056,-5.52432c0.66148,-6.60759 1.94003,-12.93144 3.46751,-19.00977l0,0l1.36378,-5.39204l34.401,-4.76184c2.45332,-5.17765 5.34148,-10.08439 8.59473,-14.69526l0,0l-13.12671,-32.31919l3.96201,-3.8801c4.65784,-4.53519 9.64348,-8.64822 14.84618,-12.40874l0,0l4.50686,-3.24997l29.69582,18.65062c5.00454,-2.30524 10.23878,-4.20122 15.66204,-5.65638l0,0l10.76474,-33.40262l5.54927,-0.4219c2.98885,-0.22039 6.20128,-0.47875 9.69389,-0.47875l0,0c3.48323,0 6.68608,0.25836 9.67506,0.47875l0,0l5.54912,0.4219l10.88121,33.74931c5.21544,1.45478 10.27031,3.31305 15.11414,5.56818l0,0l30.11157,-18.91571l4.52254,3.25032c5.20284,3.75422 10.19766,7.8798 14.84639,12.39616l0,0l3.97758,3.8801l-13.52985,33.27679c2.94791,4.28308 5.60591,8.81837 7.87672,13.58657l0,0l35.47502,4.91299l1.37939,5.39169c1.54953,6.07229 2.82196,12.39613 3.46741,19.01633l0,0l0.56073,5.52397l-31.91942,16.87434c-0.47862,5.23462 -1.32898,10.3871 -2.59824,15.40709l0,0l24.04893,26.56871l-2.41867,5.01361c-2.76517,5.73837 -5.88004,11.41356 -9.56799,16.79272l0,0l-3.13049,4.58539l-35.12848,-7.52676c-3.72264,3.72243 -7.75381,7.14909 -12.06235,10.24184l0,0l1.33846,35.68912l-5.07996,2.29913c-5.85167,2.6329 -11.92058,4.84381 -18.17828,6.6012l0,0l-5.351,1.51169l-21.72769,-27.93539l0,0zm27.87856,8.93823c1.87401,-0.62378 3.71637,-1.29791 5.53973,-2.01599l0,0l-1.25342,-33.70486l3.95258,-2.53862c5.92082,-3.84203 11.31258,-8.453 16.09976,-13.68709l0,0l3.18718,-3.48941l33.239,7.11739c0.99838,-1.66928 1.96515,-3.37619 2.89732,-5.12077l0,0l-22.73553,-25.13866l1.41093,-4.49123c2.00607,-6.46886 3.14622,-13.40402 3.48315,-20.64091l0,0l0.20787,-4.71185l30.19965,-15.961c-0.31488,-1.93385 -0.67691,-3.85492 -1.0896,-5.78259l0,0l-33.60109,-4.64815l-1.80759,-4.34639c-2.7023,-6.50063 -6.27693,-12.58513 -10.54437,-18.19731l0,0l-2.82191,-3.74155l12.78032,-31.43731c-1.48026,-1.29786 -2.99829,-2.5574 -4.55721,-3.77935l0,0l-28.5273,17.90761l-4.2014,-2.2175c-6.22311,-3.27536 -12.95352,-5.76342 -20.05234,-7.37577l0,0l-4.59178,-1.0518l-10.30167,-31.94773c-1.00163,-0.05022 -1.97475,-0.07566 -2.92271,-0.07566l0,0c-0.96696,0 -1.94005,0.02544 -2.94794,0.07566l0,0l-10.22914,31.73996l-4.65805,0.99522c-7.22169,1.54925 -14.10935,4.07524 -20.52469,7.39468l0,0l-4.19198,2.17928l-28.06441,-17.62396c-1.54948,1.22195 -3.07073,2.48149 -4.53823,3.77935l0,0l12.44003,30.61225l-2.9225,3.74755c-4.55724,5.8516 -8.34605,12.26398 -11.18684,19.14856l0,0l-1.79825,4.3651l-32.5209,4.49724c-0.41253,1.92767 -0.77778,3.84874 -1.08328,5.78259l0,0l29.15414,15.41315l0.17944,4.74907c0.30542,7.66602 1.58731,15.02303 3.79182,21.90135l0,0l1.44259,4.52234l-22.01771,24.35774c0.92602,1.75093 1.88968,3.45782 2.89761,5.127l0,0l32.33173,-6.96017l3.21879,3.48952c4.96029,5.42989 10.62607,10.14755 16.86828,14.06561l0,0l4.02816,2.51289l-1.23148,33.18852c1.82667,0.71808 3.67535,1.39221 5.54923,2.01599l0,0l20.46497,-26.31657l4.67366,0.57292c3.52736,0.4473 6.96019,0.73706 10.37738,0.73706l0,0c3.67532,0 7.3821,-0.32111 11.17093,-0.85657l0,0l4.71475,-0.66118l20.62231,26.52434l0,0zm9.32855,-68.34235l4.50986,6.92841l-28.59032,18.60074l-10.14731,-15.61513l0,0c-3.69124,0.90065 -7.5713,1.43016 -11.60878,1.43016l0,0c-27.93851,0 -50.57646,-22.64441 -50.57646,-50.55453l0,0c0,-27.93514 22.63795,-50.5733 50.57646,-50.5733l0,0c27.90698,0 50.55104,22.63816 50.55104,50.5733l0,0c0,11.46997 -3.85472,22.09612 -10.31726,30.58083l0,0l5.60277,8.62953m-19.23358,2.66414l0.89128,-0.56667l-8.15065,-12.54086l4.72406,-4.72429c6.17615,-6.1917 9.96483,-14.63838 9.96483,-24.04268l0,0c-0.03468,-18.80183 -15.2589,-34.02641 -34.03877,-34.064l0,0c-18.8241,0.0376 -34.03256,15.24316 -34.06407,34.064l0,0c0.03151,18.78311 15.25571,34.00732 34.06407,34.04527l0,0c4.20117,0 8.24515,-0.86304 12.15982,-2.36212l0,0l6.24211,-2.39357l8.20732,12.58492l0,0z",
+  	"raph_gear": "m245.88898,160.48737l33.405,-17.66776c-0.65668,-6.5461 -1.92581,-12.89622 -3.51349,-19.1387l-37.10818,-5.13857c-3.21184,-7.73717 -7.45319,-14.91318 -12.43881,-21.50042l14.14514,-34.78872c-4.65118,-4.53608 -9.67427,-8.67167 -14.96115,-12.47703l-31.50966,19.78136c-7.38905,-3.88574 -15.35004,-6.83701 -23.70718,-8.73246l-11.3871,-35.2773c-3.22949,-0.24387 -6.45805,-0.50152 -9.75151,-0.50152s-6.51289,0.2517 -9.75209,0.50152l-11.27429,34.96482c-8.58116,1.83471 -16.71793,4.82026 -24.29691,8.75396l-31.01895,-19.49038c-5.28019,3.80536 -10.30307,7.94096 -14.95388,12.47703l13.75587,33.82779c-5.36137,6.87132 -9.85005,14.45284 -13.22145,22.62391l-35.93671,4.97007c-1.58098,6.23371 -2.85675,12.5771 -3.50667,19.13792l32.25408,17.06512c0.36542,8.98315 1.85477,17.68929 4.49208,25.88777l-24.33074,26.9024c2.83031,5.87039 5.9814,11.56342 9.6267,16.90457l35.82153,-7.69016c5.87321,6.39034 12.56474,11.98932 19.94749,16.61948l-1.35777,36.65076c5.88309,2.65335 11.99571,4.87399 18.29496,6.64899l22.66223,-29.13004c4.02098,0.51334 8.09276,0.85909 12.24583,0.85909c4.49908,0 8.89894,-0.40645 13.22795,-1.00122l22.78024,29.29164c6.30914,-1.77295 12.41245,-3.99347 18.29494,-6.64697l-1.38397,-37.30896c7.03673,-4.55559 13.41745,-10.00571 19.04277,-16.15907l36.75313,7.88618c3.64532,-5.34033 6.79684,-11.0273 9.62613,-16.9026l-25.11879,-27.78322c2.41295,-7.76558 3.76083,-15.96324 4.15324,-24.41928zm-55.52159,42.4395l-15.83789,10.31044l-9.74136,-14.9669c-5.0676,1.94922 -10.52345,3.13446 -16.2748,3.13446c-25.11868,0 -45.47503,-20.36435 -45.47503,-45.47913c0,-25.1158 20.35635,-45.47227 45.47503,-45.47227c25.11212,0 45.47591,20.35647 45.47591,45.47227c0,12.5506 -5.08424,23.89621 -13.30255,32.12807l9.68069,14.87306z",
+  	"raph_wrench": "m255.53572,137.11592c19.86284,-22.83699 23.85539,-54.00162 13.05003,-80.21085l-39.87633,46.5013l-39.30826,-7.64247l-13.02475,-37.8651l39.77548,-46.3933c-27.35991,-6.88337 -57.5022,1.42669 -77.27754,24.17331c-20.85557,23.98049 -24.26861,57.1888 -11.36009,84.13174l-103.94124,119.52798c-11.05987,12.70792 -9.7125,31.98199 2.99551,43.03754c12.708,11.04776 31.97822,9.71249 43.03425,-2.99557l103.81947,-119.41006c28.5784,9.21129 61.16141,1.23503 82.11348,-22.85451z",
+  	"raph_hammer": "m63.36809,285.67313c6.96776,3.59244 16.47661,11.9801 23.84013,8.91132c4.83001,-1.9863 7.65633,-13.23322 10.6572,-19.15341c22.58896,-44.50285 47.13901,-95.11987 65.00839,-138.42389c0,-1.93199 1.02618,-3.42567 -0.49857,-6.05217c9.99582,-16.27104 16.78117,-34.14814 27.70221,-52.25417c3.45876,-5.75348 6.97752,-13.7377 11.82889,-16.03837l8.95993,-3.73985c11.39044,-2.92912 19.71024,-2.82827 27.65184,4.81071c4.0269,3.89508 5.87952,10.31972 9.77467,14.18769c2.63412,2.64196 12.67062,9.14025 16.40283,8.13548c2.89996,-0.78365 5.28986,-3.70498 7.32275,-7.40622l7.07837,-13.07806c1.98428,-3.72042 3.11331,-7.30138 2.18805,-10.16062c-1.19101,-3.68168 -12.12384,-8.54287 -15.78421,-9.30328c-5.37122,-1.15219 -11.73761,0.82254 -17.20779,-0.41896c-10.75037,-2.47131 -15.38852,-9.37697 -19.15163,-20.54245c-26.52289,-15.59208 -62.23056,-25.72946 -103.80629,-12.65136c-11.27793,3.54983 -22.08852,6.24227 -29.50239,13.45449c-1.48589,4.18987 1.45297,5.02407 4.53523,4.97355c-2.41113,2.19592 -6.30618,3.46841 -4.05797,8.62437c25.3744,-11.6543 74.64912,-15.68129 77.99525,8.17434c0.73132,5.31115 -4.01729,12.62416 -6.93675,18.66467c-9.2043,19.05656 -20.45122,34.51673 -28.60803,51.77705c-3.03192,0.17072 -3.72249,1.82726 -5.34029,2.91743c-26.48211,38.64464 -55.43742,86.86412 -80.34243,130.11772c-3.31706,5.75339 -11.16743,14.25751 -10.19173,19.38232c1.46458,7.8407 13.51648,11.49146 20.48232,15.09167z",
+  	"raph_lock": "m222.74843,140.97418l0,-31.60164l-0.00876,0c-0.01239,-39.003 -31.62297,-70.60465 -70.62114,-70.60465s-70.62597,31.6186 -70.62597,70.62157l0,0l0,31.58472l-25.54068,0l0,135.66266l192.32891,0l0,-135.66266l-25.53236,0zm-118.94279,-31.58472c0,0 0,0 0,0c0,-26.65088 21.67455,-48.3259 48.3129,-48.3259c26.65535,0 48.32988,21.67502 48.32988,48.30898c0,0 0,0 0,0l0,31.60164l-96.64278,0l0,-31.58472z"
+	}
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/raphael.txt
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/raphael.txt	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/raphael.txt	(revision 29468)
@@ -0,0 +1,12 @@
+All RaphaÃ«l icons were retrieved from here:
+http://raphaeljs.com/icons/
+
+And fall under the MIT license:
+
+Copyright Â© 2008 Dmitry Baranovskiy
+
+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.
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/raphael_1.json
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/raphael_1.json	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/raphael_1.json	(revision 29468)
@@ -0,0 +1,7 @@
+{"size": 32,
+"fill": true,
+"data": {
+    "raph_quote": "M14.505,5.873c-3.937,2.52-5.904,5.556-5.904,9.108c0,1.104,0.192,1.656,0.576,1.656l0.396-0.107c0.312-0.12,0.563-0.18,0.756-0.18c1.128,0,2.07,0.411,2.826,1.229c0.756,0.82,1.134,1.832,1.134,3.037c0,1.157-0.408,2.14-1.224,2.947c-0.816,0.807-1.801,1.211-2.952,1.211c-1.608,0-2.935-0.661-3.979-1.984c-1.044-1.321-1.565-2.98-1.565-4.977c0-2.259,0.443-4.327,1.332-6.203c0.888-1.875,2.243-3.57,4.067-5.085c1.824-1.514,2.988-2.272,3.492-2.272c0.336,0,0.612,0.162,0.828,0.486c0.216,0.324,0.324,0.606,0.324,0.846L14.505,5.873zM27.465,5.873c-3.937,2.52-5.904,5.556-5.904,9.108c0,1.104,0.192,1.656,0.576,1.656l0.396-0.107c0.312-0.12,0.563-0.18,0.756-0.18c1.104,0,2.04,0.411,2.808,1.229c0.769,0.82,1.152,1.832,1.152,3.037c0,1.157-0.408,2.14-1.224,2.947c-0.816,0.807-1.801,1.211-2.952,1.211c-1.608,0-2.935-0.661-3.979-1.984c-1.044-1.321-1.565-2.98-1.565-4.977c0-2.284,0.449-4.369,1.35-6.256c0.9-1.887,2.256-3.577,4.068-5.067c1.812-1.49,2.97-2.236,3.474-2.236c0.336,0,0.612,0.162,0.828,0.486c0.216,0.324,0.324,0.606,0.324,0.846L27.465,5.873z",
+
+	}
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/social.json
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/social.json	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/social.json	(revision 29468)
@@ -0,0 +1,21 @@
+{"size": 32,
+"fill": true,
+"data": {
+    "raph_twitter": "M23.295,22.567h-7.213c-2.125,0-4.103-2.215-4.103-4.736v-1.829h11.232c1.817,0,3.291-1.469,3.291-3.281c0-1.813-1.474-3.282-3.291-3.282H11.979V6.198c0-1.835-1.375-3.323-3.192-3.323c-1.816,0-3.29,1.488-3.29,3.323v11.633c0,6.23,4.685,11.274,10.476,11.274h7.211c1.818,0,3.318-1.463,3.318-3.298S25.112,22.567,23.295,22.567z",
+    
+     "raph_firefox": "M28.4,22.469c0.479-0.964,0.851-1.991,1.095-3.066c0.953-3.661,0.666-6.854,0.666-6.854l-0.327,2.104c0,0-0.469-3.896-1.044-5.353c-0.881-2.231-1.273-2.214-1.274-2.21c0.542,1.379,0.494,2.169,0.483,2.288c-0.01-0.016-0.019-0.032-0.027-0.047c-0.131-0.324-0.797-1.819-2.225-2.878c-2.502-2.481-5.943-4.014-9.745-4.015c-4.056,0-7.705,1.745-10.238,4.525C5.444,6.5,5.183,5.938,5.159,5.317c0,0-0.002,0.002-0.006,0.005c0-0.011-0.003-0.021-0.003-0.031c0,0-1.61,1.247-1.436,4.612c-0.299,0.574-0.56,1.172-0.777,1.791c-0.375,0.817-0.75,2.004-1.059,3.746c0,0,0.133-0.422,0.399-0.988c-0.064,0.482-0.103,0.971-0.116,1.467c-0.09,0.845-0.118,1.865-0.039,3.088c0,0,0.032-0.406,0.136-1.021c0.834,6.854,6.667,12.165,13.743,12.165l0,0c1.86,0,3.636-0.37,5.256-1.036C24.938,27.771,27.116,25.196,28.4,22.469zM16.002,3.356c2.446,0,4.73,0.68,6.68,1.86c-2.274-0.528-3.433-0.261-3.423-0.248c0.013,0.015,3.384,0.589,3.981,1.411c0,0-1.431,0-2.856,0.41c-0.065,0.019,5.242,0.663,6.327,5.966c0,0-0.582-1.213-1.301-1.42c0.473,1.439,0.351,4.17-0.1,5.528c-0.058,0.174-0.118-0.755-1.004-1.155c0.284,2.037-0.018,5.268-1.432,6.158c-0.109,0.07,0.887-3.189,0.201-1.93c-4.093,6.276-8.959,2.539-10.934,1.208c1.585,0.388,3.267,0.108,4.242-0.559c0.982-0.672,1.564-1.162,2.087-1.047c0.522,0.117,0.87-0.407,0.464-0.872c-0.405-0.466-1.392-1.105-2.725-0.757c-0.94,0.247-2.107,1.287-3.886,0.233c-1.518-0.899-1.507-1.63-1.507-2.095c0-0.366,0.257-0.88,0.734-1.028c0.58,0.062,1.044,0.214,1.537,0.466c0.005-0.135,0.006-0.315-0.001-0.519c0.039-0.077,0.015-0.311-0.047-0.596c-0.036-0.287-0.097-0.582-0.19-0.851c0.01-0.002,0.017-0.007,0.021-0.021c0.076-0.344,2.147-1.544,2.299-1.659c0.153-0.114,0.55-0.378,0.506-1.183c-0.015-0.265-0.058-0.294-2.232-0.286c-0.917,0.003-1.425-0.894-1.589-1.245c0.222-1.231,0.863-2.11,1.919-2.704c0.02-0.011,0.015-0.021-0.008-0.027c0.219-0.127-2.524-0.006-3.76,1.604C9.674,8.045,9.219,7.95,8.71,7.95c-0.638,0-1.139,0.07-1.603,0.187c-0.05,0.013-0.122,0.011-0.208-0.001C6.769,8.04,6.575,7.88,6.365,7.672c0.161-0.18,0.324-0.356,0.495-0.526C9.201,4.804,12.43,3.357,16.002,3.356z",
+      "raph_ie": "M27.998,2.266c-2.12-1.91-6.925,0.382-9.575,1.93c-0.76-0.12-1.557-0.185-2.388-0.185c-3.349,0-6.052,0.985-8.106,2.843c-2.336,2.139-3.631,4.94-3.631,8.177c0,0.028,0.001,0.056,0.001,0.084c3.287-5.15,8.342-7.79,9.682-8.487c0.212-0.099,0.338,0.155,0.141,0.253c-0.015,0.042-0.015,0,0,0c-2.254,1.35-6.434,5.259-9.146,10.886l-0.003-0.007c-1.717,3.547-3.167,8.529-0.267,10.358c2.197,1.382,6.13-0.248,9.295-2.318c0.764,0.108,1.567,0.165,2.415,0.165c5.84,0,9.937-3.223,11.399-7.924l-8.022-0.014c-0.337,1.661-1.464,2.548-3.223,2.548c-2.21,0-3.729-1.211-3.828-4.012l15.228-0.014c0.028-0.578-0.042-0.985-0.042-1.436c0-5.251-3.143-9.355-8.255-10.663c2.081-1.294,5.974-3.209,7.848-1.681c1.407,1.14,0.633,3.533,0.295,4.518c-0.056,0.254,0.24,0.296,0.296,0.057C28.814,5.573,29.026,3.194,27.998,2.266zM13.272,25.676c-2.469,1.475-5.873,2.539-7.539,1.289c-1.243-0.935-0.696-3.468,0.398-5.938c0.664,0.992,1.495,1.886,2.473,2.63C9.926,24.651,11.479,25.324,13.272,25.676zM12.714,13.046c0.042-2.435,1.787-3.49,3.617-3.49c1.928,0,3.49,1.112,3.49,3.49H12.714z",
+      "raph_opera": "M15.954,2.046c-7.489,0-12.872,5.432-12.872,13.581c0,7.25,5.234,13.835,12.873,13.835c7.712,0,12.974-6.583,12.974-13.835C28.929,7.413,23.375,2.046,15.954,2.046zM15.952,26.548L15.952,26.548c-2.289,0-3.49-1.611-4.121-3.796c-0.284-1.037-0.458-2.185-0.563-3.341c-0.114-1.374-0.129-2.773-0.129-4.028c0-0.993,0.018-1.979,0.074-2.926c0.124-1.728,0.386-3.431,0.89-4.833c0.694-1.718,1.871-2.822,3.849-2.822c2.5,0,3.763,1.782,4.385,4.322c0.429,1.894,0.56,4.124,0.56,6.274c0,2.299-0.103,5.153-0.763,7.442C19.473,24.979,18.242,26.548,15.952,26.548z",
+      "raph_chrome": "M16.277,8.655c-2.879,0-5.227,2.181-5.227,4.854s2.348,4.854,5.227,4.854c2.879,0,5.227-2.181,5.227-4.854S19.156,8.655,16.277,8.655zM29.535,13.486c-0.369-1.819-1.068-3.052-1.727-3.995c0.05,0.129,0.09,0.259,0.138,0.388c-2.34-6.355-11.704-9.8-18.937-5.43c-0.056,0.27-0.073,0.538-0.073,0.804c0-0.051-0.006-0.098-0.004-0.15c-1.743-0.134-3.854,2.061-5.731,6.083c-0.953,2.277-1.298,4.77-0.414,7.693c0.516,1.706,1.328,3.456,2.499,4.814c3.471,4.027,8.788,5.67,11.884,4.835c0.004,0.001,0.009,0.003,0.014,0.004c5.969-0.125,10.494-4.228,12.125-9.569C29.896,17.035,29.934,15.457,29.535,13.486zM6.043,23.04c-0.96-1.112-1.755-2.651-2.299-4.452c-0.733-2.42-0.612-4.65,0.379-7.015C5.129,9.42,6.111,8.005,6.956,7.154c0.15,0.742,0.521,1.628,1.113,2.649c0.218,0.379,0.459,0.701,0.692,1.012c0.179,0.237,0.356,0.474,0.513,0.729c0.124,0.202,0.239,0.445,0.354,0.737c-0.239,2.754,0.892,5.138,3.148,6.679l-2.546,2.25l-0.202,0.171c-0.208,0.171-0.447,0.373-0.651,0.589c-1.36,1.444-0.25,2.831,0.286,3.498l0.068,0.087c0.237,0.297,0.513,0.62,0.815,0.938C8.963,25.725,7.375,24.585,6.043,23.04zM28.354,18.67c-1.6,5.232-5.937,8.7-11.07,8.859c-2.485-0.583-4.362-1.78-5.586-3.557c0.004-0.004,0.01-0.008,0.015-0.013l4.944-3.836c2.226-0.124,3.854-0.888,4.847-2.278c1.222-1.412,1.792-3.025,1.693-4.861c1.817,0.377,3.389,0.903,4.855,1.883l0.116,0.078l0.134,0.043c0.156,0.049,0.311,0.076,0.459,0.081C28.87,16.309,28.74,17.402,28.354,18.67zM28.609,14.037c-1.951-1.306-4.062-1.867-6.594-2.285c0.531,2.358-0.084,4.072-1.326,5.512c-0.882,1.235-2.382,1.822-4.394,1.875l-5.22,4.052c-0.497,0.409-0.591,0.819-0.282,1.229c0.849,1.277,1.929,2.202,3.122,2.878c-0.013,0-0.026,0.002-0.039,0.003c-0.001-0.001-0.004-0.002-0.006-0.004c-0.02,0.003-0.041,0.004-0.062,0.005c-0.08,0.001-0.16-0.001-0.239-0.01c-0.156-0.021-0.314-0.064-0.459-0.118c-0.898-0.333-1.89-1.352-2.597-2.239c-0.581-0.73-1.206-1.433-0.411-2.275c0.258-0.273,0.582-0.514,0.789-0.698l2.521-2.229c0.172-0.137,0.35-0.277,0.535-0.423c0.053-0.042,0.107-0.084,0.162-0.127c0.564-0.442,0.483-0.32-0.108-0.642c-2.419-1.32-3.677-3.614-3.354-6.389c-0.149-0.41-0.317-0.792-0.518-1.124c-0.363-0.6-0.834-1.102-1.194-1.723c-0.9-1.556-1.847-3.902,0.013-3.682c-0.005-0.053-0.002-0.11-0.005-0.164c0.094,2.001,1.526,3.823,1.742,4.888c0.078,0.382,0.294,0.705,0.612,0.28c2.538-3.395,6.069-3.053,8.328-1.312c0.443,0.34,0.684,0.755,1.084,1.11c0.154,0.138,0.328,0.259,0.535,0.351c0.743,0.332,1.807,0.312,2.607,0.434c1.371,0.208,2.707,0.464,3.971,0.812c0.25,0.03,0.424-0.004,0.521-0.101c0.211-0.208-0.002-0.887-0.121-1.263c0.277,0.805,0.536,1.609,0.773,2.415C29.176,13.701,29.133,14.208,28.609,14.037z",
+      "raph_safari": "M16.154,5.135c-0.504,0-1,0.031-1.488,0.089l-0.036-0.18c-0.021-0.104-0.06-0.198-0.112-0.283c0.381-0.308,0.625-0.778,0.625-1.306c0-0.927-0.751-1.678-1.678-1.678s-1.678,0.751-1.678,1.678c0,0.745,0.485,1.376,1.157,1.595c-0.021,0.105-0.021,0.216,0,0.328l0.033,0.167C7.645,6.95,3.712,11.804,3.712,17.578c0,6.871,5.571,12.441,12.442,12.441c6.871,0,12.441-5.57,12.441-12.441C28.596,10.706,23.025,5.135,16.154,5.135zM16.369,8.1c4.455,0,8.183,3.116,9.123,7.287l-0.576,0.234c-0.148-0.681-0.755-1.191-1.48-1.191c-0.837,0-1.516,0.679-1.516,1.516c0,0.075,0.008,0.148,0.018,0.221l-2.771-0.028c-0.054-0.115-0.114-0.226-0.182-0.333l3.399-5.11l0.055-0.083l-4.766,4.059c-0.352-0.157-0.74-0.248-1.148-0.256l0.086-0.018l-1.177-2.585c0.64-0.177,1.111-0.763,1.111-1.459c0-0.837-0.678-1.515-1.516-1.515c-0.075,0-0.147,0.007-0.219,0.018l0.058-0.634C15.357,8.141,15.858,8.1,16.369,8.1zM12.146,3.455c0-0.727,0.591-1.318,1.318-1.318c0.727,0,1.318,0.591,1.318,1.318c0,0.425-0.203,0.802-0.516,1.043c-0.183-0.123-0.413-0.176-0.647-0.13c-0.226,0.045-0.413,0.174-0.535,0.349C12.542,4.553,12.146,4.049,12.146,3.455zM7.017,17.452c0-4.443,3.098-8.163,7.252-9.116l0.297,0.573c-0.61,0.196-1.051,0.768-1.051,1.442c0,0.837,0.678,1.516,1.515,1.516c0.068,0,0.135-0.006,0.2-0.015l-0.058,2.845l0.052-0.011c-0.442,0.204-0.824,0.513-1.116,0.895l0.093-0.147l-1.574-0.603l1.172,1.239l0.026-0.042c-0.19,0.371-0.306,0.788-0.324,1.229l-0.003-0.016l-2.623,1.209c-0.199-0.604-0.767-1.041-1.438-1.041c-0.837,0-1.516,0.678-1.516,1.516c0,0.064,0.005,0.128,0.013,0.191l-0.783-0.076C7.063,18.524,7.017,17.994,7.017,17.452zM16.369,26.805c-4.429,0-8.138-3.078-9.106-7.211l0.691-0.353c0.146,0.686,0.753,1.2,1.482,1.2c0.837,0,1.515-0.679,1.515-1.516c0-0.105-0.011-0.207-0.031-0.307l2.858,0.03c0.045,0.095,0.096,0.187,0.15,0.276l-3.45,5.277l0.227-0.195l4.529-3.92c0.336,0.153,0.705,0.248,1.094,0.266l-0.019,0.004l1.226,2.627c-0.655,0.166-1.142,0.76-1.142,1.468c0,0.837,0.678,1.515,1.516,1.515c0.076,0,0.151-0.007,0.225-0.018l0.004,0.688C17.566,26.746,16.975,26.805,16.369,26.805zM18.662,26.521l-0.389-0.6c0.661-0.164,1.152-0.759,1.152-1.47c0-0.837-0.68-1.516-1.516-1.516c-0.066,0-0.13,0.005-0.193,0.014v-2.86l-0.025,0.004c0.409-0.185,0.77-0.459,1.055-0.798l1.516,0.659l-1.104-1.304c0.158-0.335,0.256-0.704,0.278-1.095l2.552-1.164c0.19,0.618,0.766,1.068,1.447,1.068c0.838,0,1.516-0.679,1.516-1.516c0-0.069-0.006-0.137-0.016-0.204l0.65,0.12c0.089,0.517,0.136,1.049,0.136,1.591C25.722,21.826,22.719,25.499,18.662,26.521z",
+
+"raph_linkedin": "M27.25,3.125h-22c-1.104,0-2,0.896-2,2v22c0,1.104,0.896,2,2,2h22c1.104,0,2-0.896,2-2v-22C29.25,4.021,28.354,3.125,27.25,3.125zM11.219,26.781h-4v-14h4V26.781zM9.219,11.281c-1.383,0-2.5-1.119-2.5-2.5s1.117-2.5,2.5-2.5s2.5,1.119,2.5,2.5S10.602,11.281,9.219,11.281zM25.219,26.781h-4v-8.5c0-0.4-0.403-1.055-0.687-1.213c-0.375-0.211-1.261-0.229-1.665-0.034l-1.648,0.793v8.954h-4v-14h4v0.614c1.583-0.723,3.78-0.652,5.27,0.184c1.582,0.886,2.73,2.864,2.73,4.702V26.781z",
+"raph_github": "M28.436,15.099c-1.201-0.202-2.451-0.335-3.466-0.371l-0.179-0.006c0.041-0.09,0.072-0.151,0.082-0.16c0.022-0.018,0.04-0.094,0.042-0.168c0-0.041,0.018-0.174,0.046-0.35c0.275,0.01,0.64,0.018,1.038,0.021c1.537,0.012,3.145,0.136,4.248,0.331c0.657,0.116,0.874,0.112,0.389-0.006c-0.491-0.119-1.947-0.294-3.107-0.37c-0.779-0.053-1.896-0.073-2.554-0.062c0.019-0.114,0.041-0.241,0.064-0.371c0.093-0.503,0.124-1.009,0.126-2.016c0.002-1.562-0.082-1.992-0.591-3.025c-0.207-0.422-0.441-0.78-0.724-1.104c0.247-0.729,0.241-1.858-0.015-2.848c-0.211-0.812-0.285-0.864-1.021-0.708C22.19,4.019,21.69,4.2,21.049,4.523c-0.303,0.153-0.721,0.391-1.024,0.578c-0.79-0.278-1.607-0.462-2.479-0.561c-0.884-0.1-3.051-0.044-3.82,0.098c-0.752,0.139-1.429,0.309-2.042,0.511c-0.306-0.189-0.75-0.444-1.067-0.604C9.973,4.221,9.473,4.041,8.847,3.908c-0.734-0.157-0.81-0.104-1.02,0.708c-0.26,1.003-0.262,2.151-0.005,2.878C7.852,7.577,7.87,7.636,7.877,7.682c-1.042,1.312-1.382,2.78-1.156,4.829c0.059,0.534,0.15,1.024,0.277,1.473c-0.665-0.004-1.611,0.02-2.294,0.064c-1.162,0.077-2.618,0.25-3.109,0.369c-0.484,0.118-0.269,0.122,0.389,0.007c1.103-0.194,2.712-0.32,4.248-0.331c0.29-0.001,0.561-0.007,0.794-0.013c0.07,0.237,0.15,0.463,0.241,0.678L7.26,14.759c-1.015,0.035-2.264,0.168-3.465,0.37c-0.901,0.151-2.231,0.453-2.386,0.54c-0.163,0.091-0.03,0.071,0.668-0.106c1.273-0.322,2.928-0.569,4.978-0.741l0.229-0.02c0.44,1.022,1.118,1.802,2.076,2.41c0.586,0.373,1.525,0.756,1.998,0.816c0.13,0.016,0.508,0.094,0.84,0.172c0.333,0.078,0.984,0.195,1.446,0.262h0.011c-0.009,0.006-0.017,0.01-0.025,0.016c-0.56,0.291-0.924,0.744-1.169,1.457c-0.11,0.033-0.247,0.078-0.395,0.129c-0.529,0.18-0.735,0.217-1.271,0.221c-0.556,0.004-0.688-0.02-1.02-0.176c-0.483-0.225-0.933-0.639-1.233-1.133c-0.501-0.826-1.367-1.41-2.089-1.41c-0.617,0-0.734,0.25-0.288,0.615c0.672,0.549,1.174,1.109,1.38,1.537c0.116,0.24,0.294,0.611,0.397,0.824c0.109,0.227,0.342,0.535,0.564,0.748c0.522,0.498,1.026,0.736,1.778,0.848c0.504,0.074,0.628,0.074,1.223-0.002c0.287-0.035,0.529-0.076,0.746-0.127c0,0.244,0,0.525,0,0.855c0,1.766-0.021,2.334-0.091,2.5c-0.132,0.316-0.428,0.641-0.716,0.787c-0.287,0.146-0.376,0.307-0.255,0.455c0.067,0.08,0.196,0.094,0.629,0.066c0.822-0.051,1.403-0.355,1.699-0.891c0.095-0.172,0.117-0.518,0.147-2.318c0.032-1.953,0.046-2.141,0.173-2.42c0.077-0.166,0.188-0.346,0.25-0.395c0.104-0.086,0.111,0.084,0.111,2.42c-0.001,2.578-0.027,2.889-0.285,3.385c-0.058,0.113-0.168,0.26-0.245,0.33c-0.135,0.123-0.192,0.438-0.098,0.533c0.155,0.154,0.932-0.088,1.356-0.422c0.722-0.572,0.808-1.045,0.814-4.461l0.003-2.004l0.219,0.021l0.219,0.02l0.036,2.621c0.041,2.951,0.047,2.994,0.549,3.564c0.285,0.322,0.572,0.5,1.039,0.639c0.625,0.188,0.813-0.102,0.393-0.605c-0.457-0.547-0.479-0.756-0.454-3.994c0.017-2.076,0.017-2.076,0.151-1.955c0.282,0.256,0.336,0.676,0.336,2.623c0,2.418,0.069,2.648,0.923,3.07c0.399,0.195,0.511,0.219,1.022,0.221c0.544,0.002,0.577-0.006,0.597-0.148c0.017-0.115-0.05-0.193-0.304-0.348c-0.333-0.205-0.564-0.467-0.709-0.797c-0.055-0.127-0.092-0.959-0.117-2.672c-0.036-2.393-0.044-2.502-0.193-2.877c-0.201-0.504-0.508-0.902-0.897-1.166c-0.101-0.066-0.202-0.121-0.333-0.162c0.161-0.016,0.317-0.033,0.468-0.055c1.572-0.209,2.403-0.383,3.07-0.641c1.411-0.543,2.365-1.445,2.882-2.724c0.046-0.114,0.092-0.222,0.131-0.309l0.398,0.033c2.051,0.173,3.706,0.42,4.979,0.743c0.698,0.177,0.831,0.198,0.668,0.105C30.666,15.551,29.336,15.25,28.436,15.099zM22.422,15.068c-0.233,0.512-0.883,1.17-1.408,1.428c-0.518,0.256-1.33,0.451-2.25,0.544c-0.629,0.064-4.137,0.083-4.716,0.026c-1.917-0.188-2.991-0.557-3.783-1.296c-0.75-0.702-1.1-1.655-1.039-2.828c0.039-0.734,0.216-1.195,0.679-1.755c0.421-0.51,0.864-0.825,1.386-0.985c0.437-0.134,1.778-0.146,3.581-0.03c0.797,0.051,1.456,0.051,2.252,0c1.886-0.119,3.145-0.106,3.61,0.038c0.731,0.226,1.397,0.834,1.797,1.644c0.18,0.362,0.215,0.516,0.241,1.075C22.808,13.699,22.675,14.517,22.422,15.068zM12.912,11.762c-1.073-0.188-1.686,1.649-0.863,2.587c0.391,0.445,0.738,0.518,1.172,0.248c0.402-0.251,0.62-0.72,0.62-1.328C13.841,12.458,13.472,11.862,12.912,11.762zM19.425,11.872c-1.073-0.188-1.687,1.647-0.864,2.586c0.392,0.445,0.738,0.519,1.173,0.247c0.401-0.25,0.62-0.72,0.62-1.328C20.354,12.569,19.985,11.971,19.425,11.872zM16.539,15.484c-0.023,0.074-0.135,0.184-0.248,0.243c-0.286,0.147-0.492,0.096-0.794-0.179c-0.187-0.169-0.272-0.258-0.329-0.081c-0.053,0.164,0.28,0.493,0.537,0.594c0.236,0.094,0.405,0.097,0.661-0.01c0.254-0.106,0.476-0.391,0.476-0.576C16.842,15.303,16.595,15.311,16.539,15.484zM16.222,14.909c0.163-0.144,0.2-0.44,0.044-0.597s-0.473-0.133-0.597,0.043c-0.144,0.206-0.067,0.363,0.036,0.53C15.865,15.009,16.08,15.034,16.222,14.909z",
+"raph_flickr": "M21.77,8.895c-2.379,0-4.479,1.174-5.77,2.969c-1.289-1.795-3.39-2.969-5.77-2.969c-3.924,0-7.105,3.181-7.105,7.105c0,3.924,3.181,7.105,7.105,7.105c2.379,0,4.48-1.175,5.77-2.97c1.29,1.795,3.391,2.97,5.77,2.97c3.925,0,7.105-3.182,7.105-7.105C28.875,12.075,25.694,8.895,21.77,8.895zM21.769,21.822c-3.211,0-5.821-2.61-5.821-5.821c0-3.213,2.61-5.824,5.821-5.824c3.213,0,5.824,2.611,5.824,5.824C27.593,19.212,24.981,21.822,21.769,21.822z",
+    "raph_slideshare": "M28.952,12.795c-0.956,1.062-5.073,2.409-5.604,2.409h-4.513c-0.749,0-1.877,0.147-2.408,0.484c0.061,0.054,0.122,0.108,0.181,0.163c0.408,0.379,1.362,0.913,2.206,0.913c0.397,0,0.723-0.115,1-0.354c1.178-1.007,1.79-1.125,2.145-1.125c0.421,0,0.783,0.193,0.996,0.531c0.4,0.626,0.106,1.445-0.194,2.087c-0.718,1.524-3.058,3.171-5.595,3.171c-0.002,0-0.002,0-0.004,0c-0.354,0-0.701-0.033-1.033-0.099v3.251c0,0.742,1.033,2.533,4.167,2.533s3.955-3.701,3.955-4.338v-4.512c2.23-1.169,4.512-1.805,5.604-3.895C30.882,12.05,29.907,11.733,28.952,12.795zM21.942,17.521c0.796-1.699-0.053-1.699-1.54-0.425s-3.665,0.105-4.408-0.585c-0.743-0.689-1.486-1.22-2.814-1.167c-1.328,0.053-4.46-0.161-6.267-0.585c-1.805-0.425-4.895-3-5.15-2.335c-0.266,0.69,0.211,1.168,1.168,2.335c0.955,1.169,5.075,2.778,5.075,2.778s0,3.453,0,4.886c0,1.435,2.973,3.61,4.512,3.61s2.708-1.062,2.708-1.806v-4.512C17.775,21.045,21.146,19.221,21.942,17.521zM20.342,13.73c1.744,0,3.159-1.414,3.159-3.158c0-1.745-1.415-3.159-3.159-3.159s-3.158,1.414-3.158,3.159C17.184,12.316,18.598,13.73,20.342,13.73zM12.019,13.73c1.744,0,3.158-1.414,3.158-3.158c0-1.745-1.414-3.159-3.158-3.159c-1.745,0-3.159,1.414-3.159,3.159C8.86,12.316,10.273,13.73,12.019,13.73z",
+	
+	"logo_apple": "M21.367,4.494c-3.318,0.611-4.42,3.39-4.463,4.979c1.824,0.132,2.967-0.899,3.432-1.502 C21.097,7.115,21.281,5.91,21.367,4.494z M21.775,9.983c-2.399,0-3.739,0.98-4.398,0.991c-0.759-0.059-2.967-0.947-4.255-0.961 c-4.51,0.134-5.8,5.035-5.744,7.142c0.367,8.065,5.289,10.148,6.093,10.343c0.646,0.127,2.821-0.995,4.42-0.943 c1.747,0.182,2.969,0.905,3.669,0.855c0.889-0.062,3.783-2.4,4.656-6.007c-1.758-1.487-2.844-2.836-2.941-4.114 c-0.046-0.579,0.825-3.85,2.212-4.769c0.2-1.13-1.86-2.564-3.476-2.532C21.931,9.985,21.853,9.983,21.775,9.983z",
+	    
+	"raph_feed": "M4.135,16.762c3.078,0,5.972,1.205,8.146,3.391c2.179,2.187,3.377,5.101,3.377,8.202h4.745c0-9.008-7.299-16.335-16.269-16.335V16.762zM4.141,8.354c10.973,0,19.898,8.975,19.898,20.006h4.743c0-13.646-11.054-24.749-24.642-24.749V8.354zM10.701,25.045c0,1.815-1.471,3.287-3.285,3.287s-3.285-1.472-3.285-3.287c0-1.813,1.471-3.285,3.285-3.285S10.701,23.231,10.701,25.045z"
+}
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/symbol.json
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/symbol.json	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/symbol.json	(revision 29468)
@@ -0,0 +1,35 @@
+{"data": {
+"raph_?": "m149.41231,22.85233c-69.86728,0 -126.49998,56.63604 -126.49998,126.50003c0,69.86758 56.6327,126.49997 126.49998,126.49997c69.86401,0 126.50002,-56.63239 126.50002,-126.49997c0,-69.86399 -56.636,-126.50003 -126.50002,-126.50003zm11.55783,199.35891l-23.56044,0l0,-22.59398l23.56044,0l0,22.59398zm0,-46.71869l0,7.46713l-23.56044,0l0,-9.20049c0,-27.7635 31.59505,-32.1693 31.59505,-51.90179c0,-8.99762 -8.04478,-15.89004 -18.57663,-15.89004c-10.91353,0 -20.4856,8.04137 -20.4856,8.04137l-13.41364,-16.66759c0,0 13.22113,-13.78867 36.00754,-13.78867c21.64479,0 41.74193,13.40363 41.74193,36.00092c0.0101,31.61177 -33.30821,35.25735 -33.30821,55.93915z",
+"raph_i": "m150.95732,24.95233c-69.0355,0 -124.99999,55.96458 -124.99999,124.99999c0,69.03694 55.96449,125.00002 124.99999,125.00002c69.03699,0 125.00002,-55.96307 125.00002,-125.00002c0,-69.03541 -55.96303,-124.99999 -125.00002,-124.99999zm-10.69066,56.19589l20.81367,0l0,22.13908l-20.81367,0l0,-22.13908zm34.44556,134.35851l-22.89369,0c-8.89432,0 -12.68703,-3.78441 -12.68703,-12.86745l0,-59.04195c0,-2.83797 -1.51247,-4.16339 -4.16177,-4.16339l-7.56882,0l0,-20.44292l22.8953,0c8.90092,0 12.67717,3.97305 12.67717,12.8658l0,59.23219c0,2.65759 1.51248,4.16347 4.16177,4.16347l7.56891,0l0,20.25424l0.00816,0z",
+"raph_$": "m150.98233,24.94733c-69.03625,0 -125,55.96302 -125,124.99998c0,69.03551 55.96375,125.00002 125,125.00002c69.03705,0 125,-55.96451 125,-125.00002c0,-69.03696 -55.96295,-124.99998 -125,-124.99998zm10.79396,192.7707l0,17.60657l-16.83977,0l0,-17.4082c-27.6337,-3.78439 -39.74321,-26.4895 -39.74321,-26.4895l17.21859,-14.38808c0,0 10.97442,19.11906 30.84165,19.11906c10.97354,0 19.29941,-5.87416 19.29941,-15.90373c0,-23.46941 -63.20531,-20.62346 -63.20531,-64.15035c0,-18.92229 14.94751,-32.55412 35.57991,-35.76946l0,-17.60481l16.84047,0l0,17.59507c14.37999,1.89301 31.40912,9.46187 31.40912,25.74152l0,12.48836l-22.32774,0l0,-6.05457c0,-6.24354 -7.95525,-10.40699 -16.84787,-10.40699c-11.35251,0 -19.67842,5.67601 -19.67842,13.62369c0,24.02905 63.20529,18.16442 63.20529,63.77314c0.00903,18.74001 -13.99272,35.01302 -35.75212,38.22829z",
+"raph_warning": "m273.73639,223.86958l-33.28442,-57.6366c-10.03513,-17.37152 -26.44896,-45.81008 -36.48415,-63.18496l-33.28131,-57.6331c-10.04509,-17.38171 -26.45891,-17.38171 -36.49071,0l-33.27457,57.6331c-10.03513,17.37488 -26.45896,45.82006 -36.49078,63.18496l-33.27796,57.6366c-10.03511,17.38828 -1.82147,31.60081 18.24543,31.60081l206.07314,0c20.08694,0 28.29041,-14.21254 18.26532,-31.60081zm-111.79109,8.92259l-19.74089,0l0,-18.951l19.74089,0l0,18.951zm-0.95107,-32.91483l-17.8219,0l-1.77113,-81.08434l21.20612,0l-1.61308,81.08434z",
+	"airplane": "m150.70285,1c-3.11894,0 -5.89383,1.28033 -8.23512,3.60274c-2.33931,2.3205 -4.27426,5.64559 -5.8844,9.79826c-3.21983,8.30419 -5.20047,19.96969 -6.28387,33.94021c-1.08127,13.94364 -1.26349,30.17972 -0.81427,47.56012c-38.52657,15.80524 -116.66563,48.43882 -122.94262,55.72521c-8.35709,9.701 -5.65693,20.81889 -2.28924,28.1994l128.45827,-26.14551c2.71532,34.07207 6.57611,67.81866 9.94048,94.2617c-12.56244,3.67662 -36.01244,10.93625 -40.85281,15.43805c-6.66802,6.2016 -6.66797,26.22952 -6.66797,26.22952l52.57557,-4.27612c1.23827,8.63303 2.01266,13.67035 2.01266,13.67035l0.07683,0.45456l0.41484,0l0.96791,0l0.41483,0l0.07683,-0.45456c0,0 0.77292,-5.03741 2.01265,-13.67035l52.59094,4.27612c0,0 0.00006,-20.02792 -6.66798,-26.22952c-4.84218,-4.50354 -28.3093,-11.77963 -40.86818,-15.45499c3.35742,-26.36189 7.2114,-59.97935 9.92513,-93.94165l126.95265,25.84239c3.36765,-7.38051 6.08325,-18.4984 -2.27386,-28.1994c-6.19934,-7.19621 -82.45026,-39.10397 -121.45232,-55.11919c0.466,-17.60567 0.29471,-34.06301 -0.79893,-48.16614l0,-0.03367c-1.08395,-13.95511 -3.0667,-25.60925 -6.28384,-33.90654c-1.60968,-4.15152 -3.52888,-7.47695 -5.86903,-9.79826c-2.34131,-2.32241 -5.11617,-3.60274 -8.23509,-3.60274z",
+	"arrows_recycle": "m184.80963,97.86072l-33.85641,-5.99613l12.47342,-6.51318c6.86035,-3.58231 13.08063,-7.05022 13.8228,-7.70647c1.84358,-1.63009 -21.11545,-37.10833 -23.99486,-37.07896c-1.26575,0.01435 -10.08571,13.75221 -19.59988,30.53185c-9.58302,16.90081 -19.12026,29.77207 -21.38301,28.85762c-26.78106,-10.82179 -48.63238,-21.77106 -48.63238,-24.36867c0,-1.7743 8.40277,-17.60187 18.67293,-35.17241l18.67294,-31.94638l50.91241,0l50.91241,0l13.28955,21.01844l13.28966,21.01844l13.86403,-7.11266c9.61084,-4.93073 13.27039,-5.63875 11.92874,-2.30832c-11.81259,29.32658 -29.43884,63.52189 -32.57199,63.19018c-2.16919,-0.22948 -19.17931,-3.11553 -37.80035,-6.41334zm-157.90158,130.83841c-12.88431,-22.18782 -24.43164,-42.96199 -25.66062,-46.16496c-1.26128,-3.28671 2.41348,-15.03122 8.43637,-26.96236l10.67094,-21.13916l-10.90837,-6.44379c-14.51679,-8.57526 -9.12079,-11.21638 29.38814,-14.38432l30.43462,-2.50365l11.93788,31.54266c6.56593,17.34845 12.77805,33.78311 13.80486,36.52168c1.07085,2.85602 -4.05412,0.95576 -12.01902,-4.45653l-13.88588,-9.43578l-9.69341,18.71187c-5.33128,10.2917 -9.769,19.85884 -9.86144,21.26031c-0.09266,1.40147 16.26999,3.00525 36.36115,3.56384l36.52929,1.01558l2.3839,26.7207c1.3112,14.69647 2.11298,26.91713 1.78191,27.15706c-0.33105,0.23969 -17.62818,1.53915 -38.43802,2.88736l-37.83614,2.4512l-23.42616,-40.34174zm144.19484,39.20346c-22.11887,-33.38463 -22.50333,-30.90141 10.37228,-66.98763l21.10391,-23.16492l-2.24142,16.92821l-2.24152,16.92822l23.64932,0c13.0071,0 23.64944,-1.04019 23.64944,-2.31137c0,-1.27139 -7.21684,-15.55066 -16.03735,-31.73212c-8.82051,-16.18146 -16.00386,-30.77765 -15.96307,-32.436c0.09158,-3.71849 46.32753,-34.42394 48.52559,-32.22591c0.87094,0.87095 9.45139,16.38289 19.06769,34.47134l17.48441,32.8876l-23.52576,37.94727c-12.93936,20.87074 -25.37122,39.98283 -27.62622,42.47105c-2.25526,2.48822 -14.86537,5.52936 -28.02258,6.75787c-25.11388,2.34528 -24.43022,1.7804 -28.11249,23.22583c-0.64439,3.75308 -8.1586,-4.76279 -20.08223,-22.75946z",
+	"beverage": "m55.65598,297.84982c-28.13961,-15.0867 0.71402,-44.87836 24.17752,-35.2438c17.46051,-0.03983 34.92112,-0.01355 52.38168,-0.02121c0,-34.34088 0,-68.68181 0,-103.02271c-43.73869,-52.76227 -87.47738,-105.52454 -131.21606,-158.28681c98.99732,-0.36748 197.99556,-0.36708 296.99286,0c-42.95236,53.02298 -85.90472,106.04595 -128.85707,159.06893c0,34.08022 0,68.1604 0,102.24059c25.78079,0.22986 51.60571,-0.625 77.34869,0.87012c20.26866,5.44482 12.15504,38.73355 -7.54306,35.2244c-61.09291,-0.21259 -122.20532,0.38715 -183.28456,-0.8295zm127.03334,-186.51904c19.68919,-7.503 16.9212,-39.96898 -4.19951,-43.27924c-31.86026,-8.77637 -38.74004,46.49459 -5.25272,45.19753c3.23363,0.02124 6.51921,-0.43665 9.45222,-1.91829z",
+	"coffee": "M99.944,199.666h93.74c13.512-0.025,22.73-11.389,22.685-23.08v-7.861 c26.752-0.021,46.161-20.105,46.151-43.524c0.01-23.836-19.018-43.419-41.166-43.402H76.865v94.789 C76.886,189.46,87.973,199.643,99.944,199.666z M216.366,99.629L216.366,99.629h4.985c18.328-0.029,24.207,17.304,24.119,25.702 c0.018,13.56-10.025,26.565-29.104,25.303V99.629z M25.211,205.438c0.017,17.521,13.374,25.646,24.125,25.696h193.91c12.824-0.05,24.064-10.133,24.121-25.696 H25.211z",
+	"man": "m125.90131,25.2503c0,-13.33112 10.79823,-24.12934 24.12934,-24.12934c13.33113,0 24.12932,10.79822 24.12932,24.12934c0,13.33112 -10.79819,24.12934 -24.12932,24.12934c-13.33113,0 -24.12934,-10.79822 -24.12934,-24.12934zm81.12696,68.30144v-12.18601c0,-12.82147 -10.38806,-23.21696 -23.21696,-23.21696h-67.63607c-12.82147,0 -23.21695,10.39549 -23.21695,23.21696v12.18601c-0.02242,0.2766 -0.03739,0.56071 -0.03739,0.84853v70.18918c0,5.4538 4.41839,9.87215 9.87218,9.87215c5.44633,0 9.87589,-4.41837 9.87589,-9.87215v-69.14999h6.62006v79.02961h0.04859v111.66646c0,7.25925 5.89491,13.15787 13.16164,13.15787c7.27048,0 13.16164,-5.89114 13.16164,-13.15787v-111.66646h8.68347v111.66646c0,7.25925 5.89856,13.15787 13.16162,13.15787c7.27045,0 13.16161,-5.89114 13.16161,-13.15787v-111.66646h0.04112v-79.02961h6.62007v69.14623c0,5.45381 4.42955,9.8759 9.8759,9.8759c5.45386,0 9.87218,-4.42209 9.87218,-9.8759v-70.18916c-0.00371,-0.29156 -0.02617,-0.56819 -0.0486,-0.8448z",
+	"woman": "m150.04984,49.03255c13.33249,0 24.15346,-10.81348 24.15346,-24.15346c0,-13.34748 -10.82097,-24.16844 -24.15346,-24.16844c-13.34375,0 -24.16843,10.82096 -24.16843,24.16844c0,13.33998 10.82095,24.15346 24.16843,24.15346zm67.74049,104.1672l-21.67561,-80.39177c-0.20212,-0.72988 -0.48662,-1.42607 -0.83093,-2.06987c-2.46291,-7.53088 -9.53339,-12.9844 -17.88399,-12.9844h-54.86088c-8.70618,0 -16.01627,5.9214 -18.16845,13.95758c-0.14598,0.35184 -0.26575,0.7224 -0.37429,1.10417l-21.2901,80.38803c-1.41861,5.2701 1.71053,10.6862 6.98811,12.1048c5.27014,1.4111 10.68626,-1.71803 12.10487,-6.98813l16.71989,-63.14786h6.96569l-30.34438,114.25453h28.5927v78.87959c0,6.06738 4.91077,10.9819 10.98564,10.9819c6.05989,0 10.9819,-4.9108 10.9819,-10.9819v-78.87959h8.73613v78.87959c0,6.06738 4.91826,10.9819 10.99315,10.9819c6.05988,0 10.9819,-4.9108 10.9819,-10.9819v-78.87959h28.57767l-30.45665,-114.25453h7.14911l17.02679,63.14786c1.41859,5.2701 6.83472,8.39923 12.10481,6.98813c5.2589,-1.41859 8.38803,-6.83842 6.97693,-12.10854z",
+	"bicycle": "m69.04492,242.61508c10.78542,-0.13551 -10.27161,-0.62888 -14.0067,-0.90082c-31.20993,-0.75682 -57.11145,-31.7867 -53.74048,-62.58058c0.6826,-30.81444 30.36186,-57.88344 61.25282,-54.78261c8.04092,-3.41573 19.45538,7.85678 24.44781,2.47261c12.82323,-22.6207 25.24759,-45.47771 38.58752,-67.7975c11.3629,-1.62186 24.90015,-2.8755 35.9539,0.19863c5.11031,8.04987 -4.18097,10.24141 -9.97878,8.99869c-6.4711,0 -12.9422,0 -19.41331,0c-4.68463,8.54676 -9.49177,17.02541 -14.27853,25.51514c27.18877,0 54.37757,0 81.56634,0c0.60545,-2.89218 7.47321,-9.12369 1.38461,-8.44633c-11.06171,-1.39418 -4.14218,-14.17861 4.04941,-10.54169c11.49847,0.42252 23.4034,-1.13349 34.55679,1.17167c5.95799,11.9574 -11.26917,9.39215 -18.65384,9.51889c-5.46606,-1.78406 -6.59882,3.68022 -8.76302,7.4192c-8.77467,8.98817 -3.32066,18.46121 2.57677,27.22322c2.16318,3.98602 3.70422,9.51816 8.96812,5.7937c10.73436,-2.35877 22.43681,-2.44432 33.11809,0.31375c22.31958,6.63104 40.2153,27.32498 41.71356,50.76672c1.35196,14.39882 -1.7262,29.2406 -10.68872,40.85638c-10.3952,14.88928 -27.26529,23.04211 -45.01289,24.69595m-13.91446,0.14534c-16.17995,-4.15208 -31.09747,-13.81174 -39.74602,-28.39511c-5.65977,-7.28935 -6.39555,-18.57542 -9.40382,-25.8875c-7.93416,-0.10381 -15.86833,-0.20763 -23.80251,-0.31143c-16.06972,-25.85139 -30.2338,-52.8877 -45.73496,-79.09947c-3.0216,8.9735 -20.19933,21.18202 -10.71458,29.44228c23.80356,19.97299 26.97348,58.9857 6.61392,82.50262c-9.33031,10.45926 -22.27345,17.66695 -35.57853,21.74126m1.02195,-14.22214c25.6753,-5.59119 42.08234,-35.19554 33.20155,-59.88542c-2.74454,-8.04132 -10.29613,-20.88658 -16.96593,-21.01822c-7.10979,12.27542 -13.50588,24.99036 -21.29804,36.85445c-17.11086,3.00977 -1.43426,-17.82442 2.18629,-24.90399c3.88173,-8.63774 17.97784,-22.6107 0.22043,-22.40381c-12.4663,-1.24055 -25.71457,-0.04088 -35.79932,8.23351c-21.64245,14.32193 -25.73868,47.07928 -9.34899,66.82591c11.09536,14.38573 30.25585,20.50179 47.804,16.29758zm179.64028,-0.00356c21.91476,-5.14897 37.68491,-27.67265 34.8483,-50.02701c-1.50024,-24.84305 -26.27582,-44.93475 -50.90707,-41.59564c-18.45729,-1.74684 -0.78658,15.19781 1.85167,23.43547c2.5099,8.7469 16.33638,19.49011 8.6171,28.02017c-17.31352,0.72531 -35.05154,-0.50934 -52.31752,1.23642c3.1011,22.89496 24.76817,41.83401 48.14848,40.08203c3.28111,-0.02676 6.57803,-0.30434 9.75905,-1.15144zm-70.7294,-51.16617c2.08536,-17.91364 12.23944,-34.20847 27.04826,-44.4043c0.87492,-4.39421 -8.09195,-24.63332 -11.37527,-10.5231c-10.13445,18.42084 -20.32248,36.81699 -30.14639,55.40483c4.70622,0.11383 9.98186,0.93559 14.4734,-0.47743zm52.9005,-0.88846c-5.84201,-10.98254 -11.81374,-21.89917 -17.91992,-32.73703c-12.24919,6.45949 -20.3076,20.12949 -22.21249,33.77383c13.37456,-0.2851 26.97348,0.69884 40.16722,-0.71251l-0.03476,-0.3243l0,0zm-57.29515,-39.61388c5.7617,-10.63408 11.63275,-21.21213 17.21649,-31.94065c-24.2798,-0.5443 -48.61469,-0.66353 -72.88629,0.11504c12.46696,21.42642 23.73018,43.6828 37.36159,64.35614c6.59126,-10.13849 12.18927,-21.81091 18.30821,-32.53052z",
+	"bulb": "m145.62592,297.06863c-17.67376,-4.68848 -27.91267,-23.96384 -26.70493,-41.44981c-0.45245,-22.83995 1.65483,-46.8734 -9.26703,-67.87447c-6.22532,-15.68024 -16.83022,-29.52451 -21.2558,-45.86502c-5.50718,-25.3512 1.29536,-54.08422 21.79177,-71.10346c23.11512,-19.80671 60.02821,-22.38829 85.47337,-5.55379c17.94666,12.36192 30.89558,32.75098 30.41452,55.00024c2.10583,16.62513 -4.45561,32.2625 -12.17442,46.55451c-5.53021,11.50751 -11.98869,22.76817 -17.00821,34.40399c-1.32327,23.85774 -0.56435,47.93431 -4.15358,71.58684c-5.97899,18.328 -28.51152,30.78922 -47.11569,24.30096zm46.67903,-42.65804c-10.48888,-5.65382 -25.56134,-1.97798 -37.75313,-3.19516c-9.95908,1.99197 -27.6553,-4.08569 -32.94975,5.03105c12.10807,4.73648 26.33759,1.18594 39.22778,1.96957c10.31409,-0.9906 22.18068,0.93939 31.4751,-3.80547zm-0.78554,-10.63885c1.54361,-14.36404 -21.1709,-7.03433 -30.39838,-9.17262c-12.21318,2.47205 -31.64935,-5.2915 -39.33047,5.74487c4.5516,11.09071 24.85052,3.29074 35.50985,5.75148c11.3671,-0.4028 23.15991,0.40741 34.21899,-2.32373zm0.14142,-25.16705c2.9986,-27.98152 20.10725,-51.27968 30.01392,-76.87566c8.14517,-30.64574 -7.9861,-65.65708 -37.19159,-78.52086c-29.06958,-14.40719 -67.79967,-3.52343 -84.22785,24.70715c-15.82867,23.31919 -12.80788,55.00346 2.66266,77.68118c11.03862,19.81914 19.84574,42.09169 18.41109,65.15663c22.91359,0 45.82719,0 68.7408,0c0.53035,-4.04942 1.06052,-8.09911 1.59097,-12.14844zm-50.72687,-39.64223c-9.07846,-15.78525 -18.39817,-31.69214 -24.71996,-48.79948c5.68369,-7.35728 7.33711,-15.55251 9.10273,-24.19695c15.95243,-3.13345 -2.03056,18.17914 13.0308,18.65942c13.36925,5.81685 7.50436,-28.2252 18.61179,-15.95465c-7.9733,13.46684 15.66168,26.8638 16.5291,7.59886c-1.14578,-14.54594 14.28561,-11.82063 8.26923,1.37553c0.49657,6.78834 11.54893,8.73447 11.73816,14.19425c-7.9566,17.25854 -14.87259,35.07664 -24.29411,51.59875c-2.12068,-6.39691 8.34081,-22.42969 11.68367,-31.84341c6.45049,-8.13736 11.99347,-30.06687 -4.82256,-27.07765c-9.75478,15.21495 -22.87704,-9.5907 -32.42833,4.99055c-8.10805,2.41856 -20.86024,-14.04196 -23.2123,1.78514c6.10664,18.79854 18.8132,34.81967 25.46149,53.42416c-2.25594,-1.33008 -3.54053,-3.66359 -4.94971,-5.75453zm-12.74261,-68.89435c-4.41462,-2.15457 1.86072,11.45412 -0.00009,0l0.00009,0zm26.38611,1.60738c-5.73064,-9.69846 -2.6572,11.76727 0,0zm25.57564,0c-5.73064,-9.69846 -2.65724,11.76727 0,0zm-119.06653,-71.66327c-10.12879,-10.27977 -21.32492,-19.92564 -30.13364,-31.25677c22.0061,18.21614 42.14793,38.73141 61.97966,59.29806c5.2662,7.2365 -9.18723,-6.75771 -11.87724,-9.10345c-6.7307,-6.23349 -13.37324,-12.56173 -19.96879,-18.93784zm156.40887,29.39093c17.12013,-21.33164 33.0936,-43.69485 51.55162,-63.89019c-3.09076,8.6951 -13.04016,19.09942 -19.29597,28.05458c-10.44716,12.99739 -20.21251,26.73974 -32.1591,38.39317c-1.49106,1.57605 -3.71758,-2.15694 -0.09639,-2.55756l-0.00015,0zm-37.0826,-20.23703c5.91515,-16.91904 14.49518,-33.02397 24.06741,-48.16613c-0.22247,8.40011 -10.37453,24.32112 -15.25424,34.73693c-2.76042,4.19142 -5.08876,10.87586 -8.81317,13.4292zm-75.7492,-21.69804c-4.12045,-6.01025 -16.5241,-20.00493 -14.20815,-21.91343c11.95872,13.25933 24.12167,26.94502 32.71223,42.62532c-7.31573,-5.61084 -12.5797,-13.71475 -18.50409,-20.71189zm47.35616,-4.73013c-0.83392,-5.64444 1.75482,-32.58975 3.19298,-14.29333c0.00511,11.46356 1.20168,24.36872 -1.98915,34.80271c-1.36639,-6.70823 -1.03488,-13.69191 -1.20383,-20.50938z",
+	"cart_2": "M0,68.018v36.551h57.865l28.284,82.416h159.24L297.6,61.677H50.043v6.34H0z M132.217,227.488c0,12.975-10.518,23.493-23.492,23.493s-23.493-10.519-23.493-23.493s10.518-23.492,23.493-23.492S132.217,214.514,132.217,227.488zM241.018,227.488c0,12.975-10.518,23.493-23.492,23.493s-23.493-10.519-23.493-23.493s10.519-23.492,23.493-23.492S241.018,214.514,241.018,227.488z",
+	"coat_hanger": "m24.72351,255.83636c-16.41191,-2.33228 -27.73119,-20.33411 -22.38228,-36.1741c3.30628,-15.35616 20.22842,-19.55692 31.44893,-27.66121c35.64961,-21.14748 71.50229,-41.94997 107.26245,-62.9095c1.87845,-10.22399 -5.70195,-16.59309 -13.7997,-21.39916c-16.20296,-12.86633 -15.31998,-38.50921 -1.59858,-52.83282c16.08138,-18.88601 49.91904,-12.94907 59.95362,9.38958c9.73412,9.92804 -0.18503,34.24562 -13.8385,22.54042c-1.42418,-13.2976 -12.78993,-28.89017 -27.7881,-20.44456c-15.64833,8.98737 -6.40202,29.9363 8.0513,34.15588c9.75604,6.53233 8.45554,18.64742 8.97318,28.8608c42.85536,25.5808 86.25137,50.28574 128.51941,76.82744c16.8277,13.06401 9.90717,44.50819 -11.28448,48.76941c-16.06598,2.31227 -32.54915,0.68361 -48.77617,1.31593c-68.2437,0.05267 -136.50528,0.51715 -204.74109,-0.43811zm248.30083,-21.61086c12.28671,-12.24121 -10.69217,-18.82494 -18.26138,-24.82121c-34.85875,-20.46407 -69.60597,-41.14412 -104.87569,-60.89026c-41.32713,23.46544 -82.56062,47.16515 -123.11867,71.93832c-8.58788,3.43668 -2.61073,17.17589 5.37386,15.06004c78.53457,-0.16875 157.07672,0.41405 235.60527,-0.42499c1.73874,-0.22235 3.69772,0.07922 5.27661,-0.86191z",
+	"document": "m58.5474,213.36578c-0.05885,-70.73299 -0.11767,-141.466 -0.17652,-212.19898c53.12881,0.81297 106.48294,-1.9259 159.43185,2.08758c25.82027,9.16723 22.09921,66.23434 21.6799,108.85904c-1.13266,32.14426 15.08594,95.86641 -27.03937,105.4444c-21.00172,0.00113 -21.08437,8.97424 -18.9407,25.20605c2.4877,24.31731 -4.73431,78.79115 -39.2352,44.26363l-95.71997,-73.66171zm162.59977,-23.1226c0.08537,-63.57991 -0.62674,-117.82272 -4.15146,-159.71279c-31.317,-14.24883 -73.63496,-7.31453 -109.06839,-7.53106c-13.9288,6.77649 33.0414,29.27771 43.00333,38.00857c37.81908,18.77271 49.10266,52.9127 42.57201,91.49594c0,15.00871 0,30.01746 0,45.02617c6.97418,-0.00844 21.40269,-3.46487 27.64452,-7.28687z",
+	"gift": "m160.05605,46.22016c5.12212,-9.27578 14.49356,-21.35899 -1.60765,-24.27403c-4.48517,-2.30248 -8.9718,-6.3767 -13.45119,-1.83809c-9.96648,3.93713 -18.60622,9.44305 -8.12337,19.74747c4.64861,6.65461 8.87668,21.1743 14.1424,22.77341c3.14276,-5.39672 6.08684,-10.9068 9.03981,-16.40877zm-22.01753,25.61161c-9.14935,-16.32981 -16.51206,-33.84869 -27.71044,-48.91321c-13.62003,-14.54198 -40.45641,-8.05964 -46.55505,10.6975c-8.10131,18.54466 9.37865,40.68638 29.16686,38.36525c15.01618,0.2515 30.1178,0.92769 45.09863,-0.14954zm76.02873,0.55127c19.45964,-2.60851 30.65027,-27.10658 19.57069,-43.3727c-9.81836,-17.35883 -38.06532,-17.96398 -47.9265,-0.32358c-8.53876,14.26143 -15.94994,29.16402 -23.78549,43.81643c17.32285,0.99046 34.80862,0.75943 52.1413,-0.12016zm32.22711,20.88692c6.6339,-5.83724 32.32317,-12.71885 12.86739,-18.26252c-4.81963,-1.36767 -10.43866,-7.64191 -14.77026,-5.92492c-9.40594,11.6946 -23.86844,18.55521 -38.9686,17.83661c-2.95601,0.97167 -18.03316,-1.47781 -13.95946,1.30438c10.65262,6.07415 21.03697,12.6707 32.05554,18.0621c7.71764,-4.11029 15.20781,-8.63805 22.77539,-13.01566zm-151.5623,3.30481c5.67309,-3.30481 11.34617,-6.60963 17.01924,-9.91444c-17.34076,-0.86164 -37.18572,1.63783 -50.29088,-12.30952c-3.69488,-4.13725 -7.23799,-8.87396 -12.35892,-3.66532c-6.13381,4.22582 -25.00066,8.5563 -10.4742,13.71487c12.64928,7.47227 25.20959,15.12685 38.17151,22.0463c6.1765,-2.89648 11.99872,-6.5165 17.93326,-9.87188zm83.14041,36.87479c7.35168,-5.90694 25.15858,-11.53461 25.75348,-17.87329c-16.62141,-9.56481 -32.75868,-20.2142 -50.14796,-28.29874c-5.98431,-2.2704 -10.83618,1.22306 -15.65312,4.25735c-14.24385,8.47255 -28.83041,16.41927 -42.61077,25.63122c18.02219,11.14435 36.26101,21.95917 54.67725,32.43958c9.39328,-5.26857 18.66512,-10.75249 27.98112,-16.15611zm73.75499,18.43738c7.62694,-4.81227 15.25389,-9.62453 22.88087,-14.43683c-0.06244,-16.11785 0.19498,-32.24243 -0.24597,-48.35465c-15.39334,8.58929 -30.56776,17.60745 -45.48607,26.99785c-1.63162,16.62392 -0.80414,33.52276 -0.44952,50.23046c7.87193,-4.6378 15.55261,-9.59819 23.30069,-14.43683zm-178.87355,-10.1545c0.77462,-13.73913 2.44441,-29.40098 -14.12444,-33.4709c-10.46331,-4.88007 -24.96637,-17.38377 -33.02728,-17.25835c-0.25115,15.4809 -0.11823,30.96465 -0.14541,46.44691c15.45605,9.64543 30.63783,19.75522 46.42746,28.8476c1.53102,-7.98021 0.53017,-16.43968 0.86967,-24.56526zm110.68056,53.19621c9.14198,-5.77156 18.28395,-11.54312 27.42593,-17.31468c-0.04233,-16.63979 0.64572,-33.30351 -0.10625,-49.92543c-10.04709,2.88116 -21.5385,11.78691 -32.12366,17.31859c-7.92599,4.64276 -15.85202,9.28555 -23.77802,13.92833c0.1563,17.76723 -0.42728,35.56691 0.57802,53.30783c9.47523,-5.53633 18.69861,-11.49898 28.00397,-17.31464zm-38.32249,-9.33929c0,-8.88464 0,-17.76929 0,-26.6539c-18.35233,-10.72505 -36.64592,-21.55176 -55.0698,-32.1535c-1.01884,16.98993 -0.43661,34.04375 -0.59025,51.06303c18.34824,11.48767 36.50635,23.28906 55.08669,34.3983c0.72301,-8.85316 0.45901,-17.77696 0.57336,-26.65393zm106.97165,35.71599c7.47931,-4.98045 14.95862,-9.96091 22.43796,-14.94136c-0.31207,-15.79037 0.77045,-31.79442 -0.80399,-47.41055c-15.55414,8.87424 -30.56544,18.97736 -45.84236,28.4509c0.367,16.33781 -0.75356,32.86267 0.93411,49.06088c7.89078,-4.84329 15.54118,-10.07089 23.27428,-15.15987zm-179.49486,-8.85234c-0.06088,-8.2791 -0.12183,-16.55821 -0.18272,-24.8373c-15.452,-9.6673 -30.70933,-19.65799 -46.39347,-28.94519c-0.98154,15.8615 -0.42208,31.78482 -0.5697,47.67464c15.58812,10.31845 31.00088,20.91034 46.79801,30.90671c0.60526,-8.24165 0.30488,-16.53903 0.34788,-24.79886zm111.24078,54.40674c9.07924,-6.02985 18.15848,-12.05969 27.23772,-18.08952c-0.02109,-16.81348 0.32051,-33.6342 -0.13127,-50.44193c-18.48172,11.39566 -36.8398,23.00107 -55.0625,34.8063c-2.05943,16.23506 -0.72412,32.97392 -0.72713,49.38643c5.65578,3.44495 20.11658,-11.82266 28.68318,-15.66129zm-38.71758,-7.19754c-1.09789,-11.59346 4.72185,-27.9119 -10.01297,-32.40633c-14.85952,-9.4117 -29.65931,-18.92612 -44.71436,-28.02278c-2.19433,15.91664 0.10065,32.49809 -1.58499,48.60945c18.05386,13.0511 36.5795,25.52769 55.44263,37.37666c1.51289,-8.30347 0.57193,-17.09903 0.86969,-25.55701zm-63.13967,-3.06479c-21.97403,-14.66875 -43.94805,-29.33749 -65.92206,-44.00621c0.02491,-45.26978 -0.60055,-90.55044 0.20291,-135.81172c11.00354,-6.78941 22.71307,-12.35508 34.0373,-18.58421c-7.3143,-20.93821 3.23879,-46.38257 24.44761,-54.21996c17.77897,-7.29492 39.21008,-0.71179 50.54502,14.64528c8.23304,-4.22243 16.4661,-8.44486 24.69915,-12.66729c8.27725,4.26063 16.55455,8.52126 24.83179,12.78188c11.86055,-14.06895 32.18082,-22.09776 49.79013,-14.21312c21.13718,7.42951 32.65843,32.817 25.07826,53.72234c11.40756,6.44052 23.81024,11.47337 34.26968,19.33245c0.46368,45.00166 0.00415,90.00995 -0.0379,135.01437c-43.72298,28.93527 -86.73743,58.97507 -131.17026,86.81018c-12.92032,-0.00348 -24.07242,-14.03217 -36.06157,-19.72c-11.59096,-7.66315 -23.15266,-15.37048 -34.71011,-23.08398z",
+	"globe": "m33.11721,223.16701l233.44794,0.08913l-7.57544,11.19618l-218.20762,-0.26738l-7.66489,-11.01793zm1.60428,-148.93458l230.3285,-0.26738l6.68439,11.48557l-243.78651,0.08913l6.77362,-11.30732zm-22.73061,74.62911l275.61135,-0.26738l-0.35626,11.48558l-275.07684,-0.17825l-0.17825,-11.03995zm275.8395,1.06528c0,76.03723 -61.86858,137.89429 -137.92784,137.89429c-76.0264,0 -137.88345,-61.86824 -137.88345,-137.89429c0,-76.02642 61.86823,-137.88347 137.88345,-137.88347c76.05927,-0.01117 137.92784,61.85705 137.92784,137.88347zm-137.91701,-148.93459c-82.09525,0 -148.90104,66.8058 -148.90104,148.92339c0,82.12878 66.8058,148.93457 148.90104,148.93457c82.13995,0 148.93459,-66.80579 148.93459,-148.93457c0,-82.11759 -66.79463,-148.92339 -148.93459,-148.92339zm41.78581,148.93459c0,81.25211 -22.01353,137.89429 -41.78581,137.89429c-19.74991,0 -41.76309,-56.64218 -41.76309,-137.89429c0,-81.27448 22.00233,-137.88347 41.76309,-137.88347c19.76112,-0.01117 41.78581,56.60899 41.78581,137.88347zm-41.78581,-148.93459c-34.29579,0 -52.80304,76.73613 -52.80304,148.92339c0,72.2093 18.50725,148.93457 52.80304,148.93457c34.29614,0 52.83693,-76.73643 52.83693,-148.93457c-0.01118,-72.18726 -18.54079,-148.92339 -52.83693,-148.92339zm97.86217,148.93459c0,76.03723 -43.91597,137.89429 -97.86217,137.89429c-53.93499,0 -97.82862,-61.86824 -97.82862,-137.89429c0,-76.02642 43.89363,-137.88347 97.82862,-137.88347c53.9462,-0.01117 97.86217,61.85705 97.86217,137.88347zm-97.86217,-148.93459c-60.01537,0 -108.86856,66.8058 -108.86856,148.92339c0,82.12878 48.85319,148.93457 108.86856,148.93457c60.03773,0 108.88008,-66.80579 108.88008,-148.93457c0,-82.11759 -48.84235,-148.92339 -108.88008,-148.92339z",
+	"headphones": "m262.24301,276.32291c0,3.88873 -3.15054,7.03928 -7.03929,7.03928h-45.07771c-3.88873,0 -7.03928,-3.15054 -7.03928,-7.03928v-95.76917c0,-3.88843 3.15054,-7.03928 7.03928,-7.03928h45.07771c3.88875,0 7.03929,3.15085 7.03929,7.03928v95.76917zm-166.89014,0c0,3.88873 -3.15116,7.03928 -7.03929,7.03928h-45.07832c-3.88813,0 -7.03928,-3.15054 -7.03928,-7.03928v-95.76917c0,-3.88843 3.15115,-7.03928 7.03928,-7.03928h45.07832c3.88813,0 7.03929,3.15085 7.03929,7.03928v95.76917zm54.45998,-259.68797c-81.57039,0 -147.78664,65.61743 -148.80356,146.9389h25.82451c0.83739,-67.21309 55.56696,-121.44394 122.97905,-121.44394c67.41208,0 122.14168,54.23085 122.96928,121.44394h25.82391c-1.00656,-81.32147 -67.24229,-146.9389 -148.7932,-146.9389zm-148.59421,221.43015h25.35591v-74.64095h-25.35591v74.64095zm271.35417,-74.651v74.64127h26.29248v-74.64127h-26.29248z",
+	"hippie": "m126.57668,297.48117c-48.56062,-7.34268 -92.01251,-39.97321 -112.69057,-84.50511c-24.94552,-52.66977 -15.84542,-119.75688 23.8283,-162.85019c38.79855,-45.4432 106.09586,-61.79809 161.96931,-41.65034c58.35461,19.93039 100.52045,79.22475 99.29117,141.02438c1.2113,60.65196 -39.29578,118.84778 -96.0322,139.80408c-24.24886,9.49326 -50.68127,11.39462 -76.36598,8.17719zm8.7399,-92.17508c-0.08942,-7.31126 -0.17882,-14.62254 -0.26825,-21.93381c-20.52584,20.53458 -41.05166,41.06917 -61.57751,61.60378c17.64819,14.10371 39.22342,22.83827 61.57751,25.75548c0.29533,-21.80725 0.53749,-43.61626 0.26825,-65.42545zm48.5128,61.24323c14.52351,-4.28751 28.46933,-11.11562 40.24649,-20.66127c-9.32077,-13.4882 -22.68102,-24.26074 -33.95442,-36.33005c-8.88936,-8.88591 -17.77875,-17.77179 -26.66811,-26.6577c0,29.29706 0,58.59412 0,87.89117c6.88846,-0.91629 13.69307,-2.3291 20.37604,-4.24216zm-48.28273,-180.43147c0,-19.30317 0,-38.60634 0,-57.90951c-51.85052,5.59066 -97.82003,47.52976 -105.87597,99.4242c-5.92087,34.10992 2.2166,70.93011 24.35439,97.89821c27.17386,-27.16779 54.34772,-54.33559 81.52158,-81.50337c0,-19.30317 0,-38.60635 0,-57.90952zm116.00552,130.27736c29.94273,-44.68748 25.57903,-109.31516 -11.64191,-148.59046c-19.65836,-21.7875 -47.20416,-36.42821 -76.45694,-39.59642c0,38.6003 0,77.20061 0,115.80091c26.61343,26.23764 52.37032,53.38443 79.88922,78.67319c3.85712,4.56624 5.79269,-4.75352 8.20963,-6.28722z",
+	"keep_up": "m79,1l-21.3,35.5l-21.3,35.5l19.88,0l0,184.60001l45.44,0l0,-184.60001l19.88,0l-21.3,-35.5l-21.3,-35.5zm142.00002,0l-21.30002,35.5l-21.29999,35.5l19.88,0l0,184.60001l45.43999,0l0,-184.60001l19.88,0l-21.3,-35.5l-21.29999,-35.5zm-213.00002,269.80002l0,28.39999l284,0l0,-28.39999l-284,0z",
+	"officer_2": "m144.87212,278.09424c0,-7.03476 0,-14.06952 0,-21.10431c34.12148,-0.13669 68.24295,-0.27335 102.36444,-0.41003c0,-6.63841 0,-13.27682 0,-19.91524c-26.94872,-0.26555 -53.89742,-0.53107 -80.84613,-0.79662c30.82893,-41.42374 61.65785,-82.8475 92.48683,-124.27124c13.28885,-1.73074 25.24835,9.13577 26.16702,22.30508c1.37796,55.08076 0.61356,110.19873 0.82785,165.29666c-46.99997,0 -94,0 -141.00003,0c0.00002,-7.03473 0,-14.06952 0.00002,-21.10431zm-0.19199,-87.83214c-0.06876,-13.74153 -0.13754,-27.48306 -0.20631,-41.22459c-14.64618,18.8075 -27.62093,39.06267 -43.91019,56.48129c-14.42976,9.56055 -27.65941,-6.01018 -38.58159,-13.69254c-15.26907,-12.11603 -30.9411,-23.83286 -45.24117,-37.08727c-8.74276,-13.13181 5.83314,-31.80238 20.70509,-26.84245c13.32168,6.5739 23.96796,17.78835 36.01906,26.44797c7.16664,7.87663 15.75377,12.89487 20.74445,-0.10861c10.61151,-12.96709 19.11472,-28.05023 32.18712,-38.75249c13.16731,-7.35264 29.1156,-2.93422 43.48628,-4.27982c21.93321,0.06611 43.87927,-0.19524 65.80286,0.42785c-29.83961,40.18141 -59.99303,80.13989 -90.45013,119.85524c-0.51442,-13.73006 -0.41658,-27.48491 -0.55545,-41.22459zm49.58183,-93.47518c-17.8813,-2.9394 -31.59131,-19.77306 -31.46613,-37.7664c-6.28482,-0.26553 -12.56969,-0.53107 -18.85452,-0.79661c5.37549,-6.77119 10.75095,-13.54238 16.12643,-20.31357c26.79919,0 53.59842,0 80.39761,0c-0.07553,16.83184 2.11966,36.40314 -12.31944,48.47567c-8.59595,8.79105 -21.9399,12.10719 -33.88396,10.40091zm-44.65282,-80.96436c-3.48923,-6.17941 -15.89734,-17.4112 -0.91945,-14.28427c30.58981,-0.43799 61.18378,-0.21775 91.77567,-0.27203c0,9.29378 0,18.58757 0,27.88137c-27.24594,0 -54.49188,0 -81.73782,0c-3.03946,-4.44169 -6.07892,-8.88338 -9.11839,-13.32506z",
+	"officer": "m127.65893,298.12302c-11.91827,-4.4541 -8.85096,-18.47458 -9.45842,-28.44775c-0.14007,-38.77051 -0.03694,-77.54163 -0.06789,-116.31239c21.30015,-0.31718 42.6003,-0.76093 63.90377,-0.70047c-0.02318,44.52536 0.58119,89.061 -0.14537,133.57832c-0.57059,11.93384 -13.89935,13.46393 -23.22325,12.30963c-10.33765,0.00372 -20.67488,-0.15573 -31.00884,-0.42734zm-30.7055,-116.03563c-6.74483,-0.72377 -12.32703,-17.61749 -4.40458,-17.57693c6.23801,-0.08125 12.47601,-0.16251 18.71403,-0.24377c1.007,8.20691 -1.59957,19.89343 -12.37878,18.21895l-1.93067,-0.39824l0,0zm99.85623,-0.00661c-6.98207,-0.87273 -10.75342,-15.40816 -5.67188,-17.55357c6.66685,-0.08684 13.33371,-0.17369 20.00055,-0.26053c1.00876,8.20958 -1.60458,19.90276 -12.38809,18.21675l-1.94055,-0.40263c0,0 -0.00003,0 -0.00003,0zm-107.61794,-56.49044c0.54922,-13.57674 -1.08583,-27.43726 1.69075,-40.79832c4.06557,-10.40357 13.92722,-19.77089 25.33163,-20.63995c23.60493,0.19927 47.27207,-1.00478 70.82676,0.54259c14.04367,3.09693 25.24931,16.9698 23.91605,31.57756c0.32544,21.70094 0.15948,43.40639 0.24002,65.10946c-7.41772,0.09508 -14.83545,0.19016 -22.25314,0.28525c0,-19.53377 0,-39.06755 0,-58.60133c-4.34856,-5.08821 -8.05232,1.74921 -6.5546,6.09985c-0.01697,13.17788 -0.03394,26.35577 -0.05093,39.53365c-21.48996,0 -42.97992,0 -64.46988,0c-0.17615,-15.26811 -0.35229,-30.53623 -0.52844,-45.80434c-4.21338,-4.81828 -7.17517,1.78474 -5.83627,5.79053c-0.07101,17.56546 -0.14203,35.13091 -0.21304,52.69639c-7.42339,0.09512 -14.84679,0.19028 -22.27019,0.28539c0.0571,-12.02556 0.11414,-24.05119 0.17128,-36.07671zm56.41985,-70.72921c-11.43472,-2.06434 -20.27027,-12.69278 -20.54277,-24.26873c16.53569,0 33.07137,0 49.60706,0c0.58516,15.06838 -14.48488,27.02206 -29.06429,24.26873zm-25.62941,-33.78068c2.8164,-2.81977 5.23412,-6.59949 9.76779,-5.28442c14.97531,0 29.95061,0 44.9259,0c-0.48174,3.25565 0.91423,8.389 -0.64331,10.56883c-19.77167,0 -39.54332,0 -59.31499,0c1.75487,-1.76147 3.50974,-3.52295 5.26459,-5.28442zm18.8918,-9.34585c-4.62387,-0.06122 -9.24773,-0.12243 -13.8716,-0.18365c0.48279,-3.24875 -0.91532,-8.37839 0.64332,-10.55128c16.34338,0 32.6868,0 49.0302,0c-0.48172,3.25588 0.91423,8.38858 -0.64331,10.56913c-11.722,-0.07703 -23.43608,0.45157 -35.1586,0.1658zm24.67688,286.6952c-6.54985,-2.25 -11.37944,-9.11417 -10.08943,-16.07803c-0.23178,-33.13365 0.30627,-66.28789 -0.62375,-99.40492c-7.52885,-8.41364 -5.32481,11.97667 -5.61325,16.63527c-0.40672,29.85049 0.65932,59.77377 -0.79054,89.57779c-1.03221,6.81601 -14.93086,10.39682 -2.36958,9.16388c6.49333,0.08212 12.9946,0.3678 19.48656,0.10602z",
+	"recycle_2": "m70.51852,115.61727c18.49814,35.46731 22.10944,46.23824 15.99329,47.70097c-11.94749,2.85741 -9.54662,19.19937 7.17589,48.84396c20.97182,37.17758 62.04919,60.008 100.6335,55.93118c14.9762,-1.5824 31.90746,-4.84808 37.62502,-7.25717c5.71753,-2.40912 2.20903,2.0788 -7.79668,9.97308c-50.05432,39.49167 -111.87362,36.74075 -161.19199,-7.17288c-19.66416,-17.50925 -46.71899,-68.66641 -46.71899,-88.33963c0,-5.57329 -4.46041,-10.97359 -9.91201,-12.0006c-8.91546,-1.67957 -7.71816,-6.10193 11.90882,-43.98632c12.00147,-23.16548 23.29887,-43.78072 25.10535,-45.81163c1.80651,-2.03091 14.03651,16.92264 27.17781,42.11903zm159.00744,68.37661c-18.49815,-35.4673 -22.10944,-46.23827 -15.99332,-47.70097c11.94749,-2.85736 9.54663,-19.19936 -7.17586,-48.84396c-20.97183,-37.17759 -62.04924,-60.00801 -100.63353,-55.9312c-14.9762,1.58238 -31.90743,4.84812 -37.62498,7.25722c-5.71756,2.40907 -2.20905,-2.07883 7.79666,-9.9731c50.05433,-39.49169 111.87363,-36.74079 161.192,7.1729c19.66417,17.50919 46.71898,68.66639 46.71898,88.33957c0,5.57333 4.46045,10.97359 9.91199,12.0006c8.9155,1.6796 7.71817,6.10193 -11.90878,43.98634c-12.00146,23.16545 -23.29889,43.7807 -25.10535,45.81163c-1.80652,2.03091 -14.03651,-16.92262 -27.17781,-42.11902z",
+	"shield_1": "m235.43118,0.99993c-25.8405,20.89055 -61.5569,21.09333 -87.59367,0.62283c-25.04173,19.6952 -59.05148,20.25899 -84.60652,1.69064l-45.9514,49.35802c28.26655,30.91131 28.10226,80.57548 -0.48303,111.27486c-3.79379,10.48137 -5.78214,9.97594 -6.19602,20.53111c-0.97335,25.41245 4.72666,49.11902 22.58091,66.97356c15.9491,15.9491 37.5927,22.71344 58.38308,20.29993c34.71738,1.92664 51.36115,18.07672 58.34494,27.73621c9.4303,-10.32108 24.09528,-26.91339 68.66653,-28.98181c26.60716,-4.12497 36.22241,-10.78885 48.70973,-23.10918c16.80759,-16.80759 22.6846,-38.091 22.18927,-61.73892c-0.20569,-9.81746 -1.32416,-13.23065 -6.84674,-25.76584c-28.71786,-30.84172 -28.73875,-80.82797 -0.07623,-111.70699l-47.12085,-47.18442z",
+	"smoking": "m1.00013,234.70761c0,-6.75858 0,-13.51718 0,-20.27576c85.15819,0 170.31638,0 255.47457,0c0,13.51718 0,27.03435 0,40.55151c-85.15819,0 -170.31638,0 -255.47457,0c0,-6.75858 0,-13.51717 0,-20.27576zm262.90899,-0.33792c0,-6.87125 0,-13.74248 0,-20.61369c4.50577,0 9.01147,0 13.51718,0c0,13.74245 0,27.48491 0,41.22737c-4.50571,0 -9.01141,0 -13.51718,0c0,-6.87125 0,-13.74246 0,-20.61368zm21.62747,0c0,-6.87125 0,-13.74248 0,-20.61369c4.50574,0 9.01147,0 13.51718,0c0,13.74245 0,27.48491 0,41.22737c-4.50571,0 -9.01144,0 -13.51718,0c0,-6.87125 0,-13.74246 0,-20.61368zm-21.62747,-38.40129c2.33044,-12.44823 -4.64667,-27.35672 -18.89619,-26.91631c-16.51076,-0.91339 -33.27669,-0.16469 -49.68698,-1.22891c-15.92004,-5.44565 -24.6412,-22.87308 -22.39098,-39.09009c-2.60393,-4.6821 -13.75305,-3.34301 -18.33653,-8.47466c-22.34129,-12.77989 -25.34413,-47.04951 -6.6355,-64.35941c6.55362,-6.74706 19.10332,-12.28213 27.40872,-10.56472c0,4.27357 0,8.54715 0,12.82071c-17.16693,0.19163 -30.20795,18.71787 -25.17886,34.95034c3.93155,16.28817 21.44681,21.17548 36.06943,21.4035c9.34369,7.54165 -5.73552,20.54516 2.38481,30.40595c5.4973,13.38734 21.79352,9.01994 33.15524,10.07909c16.32292,0.98282 36.22006,-2.88133 48.06549,11.43753c10.15674,11.08647 7.03754,26.81902 7.55853,40.56599c-4.50571,0 -9.01141,0 -13.51718,0c0,-3.67633 0,-7.35268 0,-11.02902zm21.44409,-5.02264c1.06424,-17.34164 -3.94,-36.41237 -18.82684,-46.85637c-14.2328,-10.82034 -32.68178,-7.49533 -49.35545,-8.05716c-10.44089,-9.26265 6.69904,-19.729 4.85689,-30.88184c1.16321,-14.61189 -8.86084,-28.86267 -23.32887,-32.0012c-8.26547,0.48857 -11.4507,-1.71243 -9.8101,-9.54141c-2.56769,-10.66179 12.99852,-3.08173 18.15088,-2.147c18.80948,6.74871 31.28568,27.05275 28.30017,46.93802c-0.48553,7.00495 -7.28169,16.99163 4.77028,14.2243c23.42943,-1.23563 45.83046,13.98601 54.11491,35.81352c6.09546,15.43478 4.5502,32.30844 4.8287,48.56076c-4.44968,0 -8.89935,0 -13.34903,0c-0.11716,-5.35051 -0.23438,-10.70122 -0.35153,-16.05162z",
+	"stairs": "m2.18934,245.58681c17.86729,-0.11601 35.73457,-0.23204 53.60186,-0.34804c0.11764,-18.34987 0.23526,-36.69974 0.35289,-55.04959c17.78193,0 35.56387,0 53.34581,0c0,-18.46245 0,-36.9249 0,-55.38734c18.2373,0 36.47458,0 54.71188,0c0,-18.01214 0,-36.02428 0,-54.03642c18.01213,0 36.02426,0 54.03641,0c0,-18.01213 0,-36.02428 0,-54.03642c26.79306,0 53.58612,0 80.37918,0c0,9.00607 0,18.01214 0,27.01821c-17.78702,0 -35.57397,0 -53.36099,0c0,18.23729 0,36.47458 0,54.71188c-18.01212,0 -36.02425,0 -54.03641,0c0,18.2373 0,36.47459 0,54.71188c-18.01215,0 -36.02426,0 -54.03641,0c0,18.23729 0,36.47459 0,54.71185c-18.2373,0 -36.47459,0 -54.71187,0c0,18.46246 0,36.9249 0,55.38733c-27.01822,0 -54.03642,0 -81.05463,0c1.20448,-8.94977 -2.05336,-19.04163 0.77228,-27.68333z",
+	"umbrella": "m138.31999,1l0,29.565c-75.13835,4.16908 -134.31995,48.17229 -134.31999,101.835c0,-9.67107 16.35202,-17.51999 36.5,-17.51999c20.14798,0 36.5,7.84892 36.5,17.51999c0,-9.67107 16.35202,-17.51999 36.5,-17.51999c9.59525,0 18.30284,1.83565 24.81999,4.745l0,144.17499c0,6.44742 -5.23262,11.68002 -11.67999,11.68002c-6.44734,0 -11.68,-5.2326 -11.68,-11.68002l0,-5.84l-23.36,0l0,5.84c0,19.34207 15.6979,35.04001 35.04,35.04001c19.34206,0 35.04001,-15.69794 35.04001,-35.04001l0,-144.17499c6.51714,-2.90935 15.22475,-4.745 24.81999,-4.745c20.14798,0 36.5,7.84892 36.5,17.51999c0,-9.67107 16.35202,-17.51999 36.5,-17.51999c20.14798,0 36.5,7.84892 36.5,17.51999c0,-53.66274 -59.18159,-97.66592 -134.31999,-101.835l0,-29.565l-23.36002,0z",
+	"yin_yang": "m152.3828,1.00127c40.96666,0 74.20116,33.2665 74.20116,74.23316c0,40.96668 -33.2345,74.20117 -74.20116,74.20117c-40.96668,0 -74.20118,33.26653 -74.20118,74.23318c0,40.96667 33.2345,74.20117 74.20118,74.20117c81.93332,0 148.43431,-66.50104 148.43431,-148.43436c0,-81.93333 -66.50099,-148.43433 -148.43431,-148.43433zm0,51.0353c-12.80867,0 -23.19788,10.38917 -23.19788,23.19786c0,12.80871 10.38918,23.19786 23.19788,23.19786c12.80869,0 23.19785,-10.38917 23.19785,-23.19786c0,-12.80869 -10.38916,-23.19786 -23.19785,-23.19786zm0,148.43436c12.80206,0 23.19785,10.39577 23.19785,23.19786c0,12.80206 -10.39578,23.19788 -23.19785,23.19788c-12.80208,0 -23.19788,-10.39581 -23.19788,-23.19788c0,-12.80206 10.3958,-23.19786 23.19788,-23.19786zm145.10503,-50.94075c0,81.87245 -66.37071,148.24319 -148.24321,148.24319c-81.87246,0 -148.24321,-66.37074 -148.24321,-148.24319c0,-81.87248 66.37075,-148.24324 148.24321,-148.24324c81.8725,0 148.24321,66.37076 148.24321,148.24324z",
+	"hand_stop": "m136.25574,297.49808c-29.33714,-5.08954 -54.45634,-27.86633 -62.06976,-56.71431c-3.62096,-14.72525 -1.50079,-30.17319 -2.21442,-45.21799c-0.13461,-38.62221 -0.20337,-77.24464 -0.30453,-115.86696c3.44471,-11.98872 17.98409,-18.29414 29.04424,-12.36688c0.96214,-3.14931 0.25692,-8.79729 0.59418,-12.8885c-1.96137,-11.24498 6.05913,-22.68389 17.70836,-23.44487c6.68523,-0.04347 14.68906,5.03699 11.64235,-6.21321c-2.06573,-11.58701 7.02885,-24.78486 19.46753,-23.71677c11.8866,-1.10308 20.91313,10.99307 19.47894,22.20545c0.55293,6.69356 15.04739,-4.38583 20.11427,3.0555c6.46245,3.83537 10.88301,11.15349 9.66263,18.71955c0.37462,20.72639 -0.50464,41.58417 0.94255,62.21075c10.62856,-5.38028 25.7729,1.23052 27.94981,13.06696c-0.24077,36.77421 0.61372,73.57438 -0.64664,110.32743c-4.27835,37.80429 -40.23309,69.77301 -78.61711,67.50256c-4.25351,0.01132 -8.54422,0.05313 -12.75241,-0.65872zm26.24695,-10.04156c32.22029,-5.44516 57.56776,-36.59567 55.75252,-69.35173c0.24638,-31.65953 1.24834,-63.36566 0.07516,-95.00381c-0.74966,-11.56753 -19.92574,-8.76712 -18.68594,1.90652c-0.00584,23.46449 -0.01172,46.92897 -0.01762,70.39346c-5.97046,6.15695 -16.65688,2.44864 -23.81619,7.45261c-15.91585,6.94403 -26.02902,23.94809 -26.37592,41.0688c-8.5842,13.31046 -12.47054,-8.35147 -7.54663,-15.48785c5.69263,-21.52615 25.72418,-37.58736 47.72688,-39.6965c-0.18001,-49.52237 0.46608,-99.06258 -0.57811,-148.57061c-6.22968,-14.02401 -23.68619,-1.72364 -19.04016,10.55674c-0.45773,37.44105 -0.04761,74.89084 -0.68825,112.32923c-4.16106,6.65674 -12.04573,0.3437 -9.47389,-5.79948c-0.17776,-46.90031 -0.35556,-93.80062 -0.53333,-140.70093c-3.33864,-8.28292 -18.12991,-6.98883 -18.3627,2.10197c-0.18286,48.40011 -0.36572,96.80021 -0.5486,145.20032c-3.89212,5.48285 -11.88664,0.71593 -9.73376,-5.26897c-0.14377,-36.45805 0.40013,-72.93186 -0.55034,-109.37686c-0.24316,-10.84745 -18.40633,-10.5788 -18.64873,-0.51889c-0.36327,37.37112 0.09734,74.76224 -0.99649,112.11712c1.02982,9.51479 -12.37218,4.97615 -9.28424,-2.22137c-0.16375,-25.39479 0.44627,-50.81747 -0.58949,-76.18918c-6.1088,-15.65501 -24.37704,-2.73073 -19.28278,10.2811c0.06127,45.03139 -0.41048,90.08521 0.72834,135.10263c2.79378,34.58762 36.09247,63.06729 70.73276,60.79437c3.26721,-0.13614 6.52469,-0.50925 9.73752,-1.11868z",
+    "sign_no": "m0.99794,149.99951l0,0c0,-82.29002 66.70967,-148.99969 148.99992,-148.99969l0,0c39.51779,0 77.41692,15.69819 105.35898,43.64116c27.94318,27.94297 43.64124,65.84185 43.64124,105.35853l0,0c0,82.29103 -66.7092,149.00024 -149.00021,149.00024l0,0c-82.29025,0 -148.99992,-66.70921 -148.99992,-149.00024zm240.6012,66.65504l0,0c32.80489,-45.08388 27.92851,-107.33437 -11.49672,-146.75905c-39.42525,-39.42501 -101.67574,-44.30139 -146.75847,-11.49616l158.25519,158.25521zm-183.20167,-133.30872c-32.80512,45.08364 -27.92886,107.33413 11.49615,146.75825c39.4249,39.42525 101.67541,44.30159 146.75814,11.49672l-158.2543,-158.25497z",
+    "skull": "m74.9404,81.44109c-2.88919,16.35929 -10.26919,31.99403 -10.76614,48.86361c0.66122,9.76746 -5.89156,15.01402 -14.86213,14.8293c-9.64813,10.00099 1.19087,25.80647 12.10749,29.84357c11.14103,7.47832 24.96226,-0.87791 35.99846,5.83044c14.65424,11.4554 20.77205,31.76607 15.71635,49.57211c-5.02672,14.69893 20.70476,9.35306 11.02628,-2.39693c-7.47506,-11.48471 14.09103,-7.68764 8.56998,3.21603c-1.04326,8.75262 6.45616,11.58562 3.11867,20.06531c8.69472,4.98558 -0.72885,7.77708 -6.02475,8.71843c-12.40178,6.18225 2.24324,-11.07452 -7.58144,-16.17874c-8.99694,1.95532 -2.90059,17.02136 -5.98875,15.28125c-6.3575,-4.97824 -6.35281,-23.59047 -17.02285,-11.44621c-3.54128,-14.96387 2.92009,-30.54814 -2.05737,-45.42514c2.03897,-11.11034 -15.50281,-14.9426 -13.28409,-2.05647c0.88449,19.66696 -5.0876,39.29475 -1.66005,58.86481c4.72071,12.07065 17.92378,17.50833 26.2104,26.82291c6.80557,7.18207 15.6284,14.86087 26.22089,12.5997c12.0141,-0.52078 24.05035,-1.63034 36.01024,0.2771c15.04311,0.47446 26.52666,-11.41623 39.36443,-17.5242c15.0918,-11.98355 12.71564,-33.38867 11.21118,-50.43889c-1.84476,-10.52664 2.20334,-21.05807 1.44894,-31.48618c-10.88037,-13.31276 -19.80722,10.08708 -16.70779,20.14043c-0.00076,12.64635 2.42783,28.93701 -9.63577,37.17496c-9.95572,-0.25104 -19.43069,3.36517 -29.4632,1.4744c-8.14081,4.83435 -21.32692,4.71021 -24.01404,-6.79811c-1.07281,-10.22015 3.55807,-20.93494 -2.73401,-30.47318c5.52835,4.7614 15.17361,-4.11226 9.79822,6.56248c-6.55643,8.68922 5.55173,22.07874 10.10989,9.25331c1.51227,-8.60512 -6.54141,-20.02596 6.69714,-18.18237c2.6998,3.03528 -9.21959,24.26701 7.07346,18.90152c11.61606,-2.54445 -2.06659,-20.76607 13.66382,-20.82939c7.61295,-8.9626 5.56317,-25.76184 17.20825,-32.56114c12.98419,-8.78706 33.2569,-2.44315 42.52423,-17.32399c7.89911,-7.61507 4.18182,-28.72154 -9.44128,-21.72794c-17.02448,1.65962 -3.51318,-23.0582 -3.98819,-32.32024c4.01126,-8.06691 -4.87137,-25.04774 -1.81268,-26.84933c5.77948,8.84253 7.84946,19.18484 6.60651,29.51878c-0.10681,8.76352 -3.8233,32.51385 8.36014,17.87288c4.12442,-10.20347 2.92487,-21.76073 5.86331,-32.37626c5.66748,-22.91865 -4.48026,-45.85004 -15.79309,-65.262c-9.63495,-10.45038 -21.86679,-18.78104 -33.35342,-26.98327c-19.32092,-7.26658 -40.65421,-8.56836 -61.06006,-6.74718c-18.04979,3.12863 -37.13738,6.42709 -51.51633,18.73374c-14.01352,8.25707 -27.43441,19.22373 -32.97453,35.08961c-4.82798,12.78156 -13.28239,25.798 -9.43994,39.99647c3.67479,11.83601 1.72576,24.12813 2.32075,36.22574c6.26442,13.82637 12.1788,-7.07504 11.59255,-13.98853c0.3468,-13.11021 7.26362,-24.71465 12.36033,-36.35318zm115.06042,28.12622c12.88235,0.92311 29.19336,8.09689 29.54492,23.0528c1.95883,15.00865 -10.16846,29.55684 -25.7099,28.08501c-14.11661,-1.15955 -23.14499,-13.35332 -22.20761,-27.06258c-4.7262,-9.82969 2.6286,-20.35741 12.49942,-22.61709c1.91415,-0.64365 3.88168,-1.12543 5.87317,-1.45815zm-86.93419,1.27835c14.94448,-2.65778 31.94749,6.61306 31.99739,23.15527c1.40359,15.99194 -15.57494,19.12508 -27.15695,23.1313c-8.01422,5.17467 -16.3391,0.35667 -22.99829,-4.85698c-8.63997,-9.0434 -6.10048,-27.26721 3.02245,-35.52229c4.42388,-3.27404 9.90028,-4.56108 15.1354,-5.9073zm51.1378,42.18812c7.2348,9.94383 15.92023,25.10751 6.56407,36.39339c-8.30571,6.66107 -9.35284,-9.47466 -18.07048,-1.8754c-8.17816,-7.1624 -0.63536,-21.73717 5.10291,-29.01329c1.8913,-2.09525 4.05559,-3.93987 6.4035,-5.5047z",
+    "raph_flag": "m240.17992,78.9644c1.22598,-4.74799 1.33473,-12.52493 0.24789,-17.29984l-3.59653,-15.765c-1.08669,-4.77488 -5.91939,-9.3663 -10.74547,-10.20189l-33.14604,-5.72574c-4.82259,-0.83558 -12.72205,-0.80831 -17.53783,0.06101l-35.90382,6.46623c-4.82602,0.8693 -12.72192,0.95758 -17.56489,0.20381l-35.12959,-5.47475c0.04414,0.16981 0.12224,0.31943 0.15971,0.48924l24.04452,114.23236l11.00362,1.90157c4.82584,0.83569 12.71503,0.80153 17.54104,-0.06088l35.89362,-6.47302c4.81578,-0.86253 12.72198,-0.95078 17.56494,-0.19707l38.54257,6.01137c4.84297,0.75369 8.06601,-2.56096 7.18282,-7.38327l-4.31631,-23.36539c-0.88985,-4.81586 -0.61493,-12.63371 0.60435,-17.38171l5.1554,-20.03702zm-172.47275,-52.27992c-4.81902,1.01868 -7.89938,5.72567 -6.88394,10.53465l51.30882,243.74065l18.18635,0l-52.06276,-247.38807c-1.03241,-4.82942 -5.7429,-7.90624 -10.54846,-6.88723z"
+	}
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/ui.json
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/ui.json	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/ui.json	(revision 29468)
@@ -0,0 +1,57 @@
+{"size": 32,
+"fill": true,
+"data": {
+  "raph_star": "M15.999,22.77l-8.884,6.454l3.396-10.44l-8.882-6.454l10.979,0.002l2.918-8.977l0.476-1.458l3.39,10.433h10.982l-8.886,6.454l3.397,10.443L15.999,22.77L15.999,22.77z",
+  "raph_star2": "M30.373,12.329H19.391l-3.39-10.433l-0.476,1.458l-2.918,8.977L1.628,12.329l8.882,6.454l-3.396,10.44l8.884-6.454l8.886,6.457l-3.397-10.443L30.373,12.329z M17.175,21.151L16,20.298l-1.175,0.854l-3.902,2.834l1.49-4.584l0.45-1.382l-1.177-0.855l-3.9-2.834h6.275l0.45-1.381L16,8.366l1.489,4.581l0.449,1.381h6.281l-3.906,2.836l-1.178,0.854l0.449,1.384l1.493,4.584L17.175,21.151z",
+
+  "raph_page": "M23.024,5.673c-1.744-1.694-3.625-3.051-5.168-3.236c-0.084-0.012-0.171-0.019-0.263-0.021H7.438c-0.162,0-0.322,0.063-0.436,0.18C6.889,2.71,6.822,2.87,6.822,3.033v25.75c0,0.162,0.063,0.317,0.18,0.435c0.117,0.116,0.271,0.179,0.436,0.179h18.364c0.162,0,0.317-0.062,0.434-0.179c0.117-0.117,0.182-0.272,0.182-0.435V11.648C26.382,9.659,24.824,7.49,23.024,5.673zM25.184,28.164H8.052V3.646h9.542v0.002c0.416-0.025,0.775,0.386,1.05,1.326c0.25,0.895,0.313,2.062,0.312,2.871c0.002,0.593-0.027,0.991-0.027,0.991l-0.049,0.652l0.656,0.007c0.003,0,1.516,0.018,3,0.355c1.426,0.308,2.541,0.922,2.645,1.617c0.004,0.062,0.005,0.124,0.004,0.182V28.164z",
+  "raph_page2": "M23.024,5.673c-1.744-1.694-3.625-3.051-5.168-3.236c-0.084-0.012-0.171-0.019-0.263-0.021H7.438c-0.162,0-0.322,0.063-0.436,0.18C6.889,2.71,6.822,2.87,6.822,3.033v25.75c0,0.162,0.063,0.317,0.18,0.435c0.117,0.116,0.271,0.179,0.436,0.179h18.364c0.162,0,0.317-0.062,0.434-0.179c0.117-0.117,0.182-0.272,0.182-0.435V11.648C26.382,9.659,24.824,7.49,23.024,5.673zM22.157,6.545c0.805,0.786,1.529,1.676,2.069,2.534c-0.468-0.185-0.959-0.322-1.42-0.431c-1.015-0.228-2.008-0.32-2.625-0.357c0.003-0.133,0.004-0.283,0.004-0.446c0-0.869-0.055-2.108-0.356-3.2c-0.003-0.01-0.005-0.02-0.009-0.03C20.584,5.119,21.416,5.788,22.157,6.545zM25.184,28.164H8.052V3.646h9.542v0.002c0.416-0.025,0.775,0.386,1.05,1.326c0.25,0.895,0.313,2.062,0.312,2.871c0.002,0.593-0.027,0.991-0.027,0.991l-0.049,0.652l0.656,0.007c0.003,0,1.516,0.018,3,0.355c1.426,0.308,2.541,0.922,2.645,1.617c0.004,0.062,0.005,0.124,0.004,0.182V28.164z",
+	 "raph_printer": "M24.569,12.125h-2.12c-0.207-1.34-1.247-2.759-2.444-3.967c-1.277-1.24-2.654-2.234-3.784-2.37c-0.062-0.008-0.124-0.014-0.198-0.015H8.594c-0.119,0-0.235,0.047-0.319,0.132c-0.083,0.083-0.132,0.2-0.132,0.32v5.9H6.069c-1.104,0-2,0.896-2,2V23h4.074v2.079c0,0.118,0.046,0.23,0.132,0.318c0.086,0.085,0.199,0.131,0.319,0.131h13.445c0.118,0,0.232-0.046,0.318-0.131s0.138-0.199,0.138-0.318V23h4.074v-8.875C26.569,13.021,25.674,12.125,24.569,12.125zM21.589,24.626H9.043V21.5h12.546V24.626zM21.589,13.921c0-0.03,0-0.063-0.003-0.096c-0.015-0.068-0.062-0.135-0.124-0.2H9.043v-6.95h6.987v0.001c0.305-0.019,0.567,0.282,0.769,0.971c0.183,0.655,0.229,1.509,0.229,2.102c0.001,0.433-0.019,0.725-0.019,0.725l-0.037,0.478l0.48,0.005c0.002,0,1.109,0.014,2.196,0.26c1.044,0.226,1.86,0.675,1.938,1.184c0.003,0.045,0.003,0.091,0.003,0.133V13.921z",
+  "raph_users": "M21.053,20.8c-1.132-0.453-1.584-1.698-1.584-1.698s-0.51,0.282-0.51-0.51s0.51,0.51,1.02-2.548c0,0,1.414-0.397,1.132-3.68h-0.34c0,0,0.849-3.51,0-4.699c-0.85-1.189-1.189-1.981-3.058-2.548s-1.188-0.454-2.547-0.396c-1.359,0.057-2.492,0.792-2.492,1.188c0,0-0.849,0.057-1.188,0.397c-0.34,0.34-0.906,1.924-0.906,2.321s0.283,3.058,0.566,3.624l-0.337,0.113c-0.283,3.283,1.132,3.68,1.132,3.68c0.509,3.058,1.019,1.756,1.019,2.548s-0.51,0.51-0.51,0.51s-0.452,1.245-1.584,1.698c-1.132,0.452-7.416,2.886-7.927,3.396c-0.511,0.511-0.453,2.888-0.453,2.888h26.947c0,0,0.059-2.377-0.452-2.888C28.469,23.686,22.185,21.252,21.053,20.8zM8.583,20.628c-0.099-0.18-0.148-0.31-0.148-0.31s-0.432,0.239-0.432-0.432s0.432,0.432,0.864-2.159c0,0,1.199-0.336,0.959-3.119H9.538c0,0,0.143-0.591,0.237-1.334c-0.004-0.308,0.006-0.636,0.037-0.996l0.038-0.426c-0.021-0.492-0.107-0.939-0.312-1.226C8.818,9.619,8.53,8.947,6.947,8.467c-1.583-0.48-1.008-0.385-2.159-0.336C3.636,8.179,2.676,8.802,2.676,9.139c0,0-0.72,0.048-1.008,0.336c-0.271,0.271-0.705,1.462-0.757,1.885v0.281c0.047,0.653,0.258,2.449,0.469,2.872l-0.286,0.096c-0.239,2.783,0.959,3.119,0.959,3.119c0.432,2.591,0.864,1.488,0.864,2.159s-0.432,0.432-0.432,0.432s-0.383,1.057-1.343,1.439c-0.061,0.024-0.139,0.056-0.232,0.092v5.234h0.575c-0.029-1.278,0.077-2.927,0.746-3.594C2.587,23.135,3.754,22.551,8.583,20.628zM30.913,11.572c-0.04-0.378-0.127-0.715-0.292-0.946c-0.719-1.008-1.008-1.679-2.59-2.159c-1.584-0.48-1.008-0.385-2.16-0.336C24.72,8.179,23.76,8.802,23.76,9.139c0,0-0.719,0.048-1.008,0.336c-0.271,0.272-0.709,1.472-0.758,1.891h0.033l0.08,0.913c0.02,0.231,0.022,0.436,0.027,0.645c0.09,0.666,0.21,1.35,0.33,1.589l-0.286,0.096c-0.239,2.783,0.96,3.119,0.96,3.119c0.432,2.591,0.863,1.488,0.863,2.159s-0.432,0.432-0.432,0.432s-0.053,0.142-0.163,0.338c4.77,1.9,5.927,2.48,6.279,2.834c0.67,0.667,0.775,2.315,0.746,3.594h0.48v-5.306c-0.016-0.006-0.038-0.015-0.052-0.021c-0.959-0.383-1.343-1.439-1.343-1.439s-0.433,0.239-0.433-0.432s0.433,0.432,0.864-2.159c0,0,0.804-0.229,0.963-1.841v-1.227c-0.001-0.018-0.001-0.033-0.003-0.051h-0.289c0,0,0.215-0.89,0.292-1.861V11.572z",
+  "raph_user": "M20.771,12.364c0,0,0.849-3.51,0-4.699c-0.85-1.189-1.189-1.981-3.058-2.548s-1.188-0.454-2.547-0.396c-1.359,0.057-2.492,0.792-2.492,1.188c0,0-0.849,0.057-1.188,0.397c-0.34,0.34-0.906,1.924-0.906,2.321s0.283,3.058,0.566,3.624l-0.337,0.113c-0.283,3.283,1.132,3.68,1.132,3.68c0.509,3.058,1.019,1.756,1.019,2.548s-0.51,0.51-0.51,0.51s-0.452,1.245-1.584,1.698c-1.132,0.452-7.416,2.886-7.927,3.396c-0.511,0.511-0.453,2.888-0.453,2.888h26.947c0,0,0.059-2.377-0.452-2.888c-0.512-0.511-6.796-2.944-7.928-3.396c-1.132-0.453-1.584-1.698-1.584-1.698s-0.51,0.282-0.51-0.51s0.51,0.51,1.02-2.548c0,0,1.414-0.397,1.132-3.68H20.771z",
+  "raph_mail": "M28.516,7.167H3.482l12.517,7.108L28.516,7.167zM16.74,17.303C16.51,17.434,16.255,17.5,16,17.5s-0.51-0.066-0.741-0.197L2.5,10.06v14.773h27V10.06L16.74,17.303z",
+  "raph_picture": "M2.5,4.833v22.334h27V4.833H2.5zM25.25,25.25H6.75V6.75h18.5V25.25zM11.25,14c1.426,0,2.583-1.157,2.583-2.583c0-1.427-1.157-2.583-2.583-2.583c-1.427,0-2.583,1.157-2.583,2.583C8.667,12.843,9.823,14,11.25,14zM24.251,16.25l-4.917-4.917l-6.917,6.917L10.5,16.333l-2.752,2.752v5.165h16.503V16.25z",
+  "raph_home": "M27.812,16l-3.062-3.062V5.625h-2.625v4.688L16,4.188L4.188,16L7,15.933v11.942h17.875V16H27.812zM16,26.167h-5.833v-7H16V26.167zM21.667,23.167h-3.833v-4.042h3.833V23.167z",
+  
+    "raph_view": "M16,8.286C8.454,8.286,2.5,16,2.5,16s5.954,7.715,13.5,7.715c5.771,0,13.5-7.715,13.5-7.715S21.771,8.286,16,8.286zM16,20.807c-2.649,0-4.807-2.157-4.807-4.807s2.158-4.807,4.807-4.807s4.807,2.158,4.807,4.807S18.649,20.807,16,20.807zM16,13.194c-1.549,0-2.806,1.256-2.806,2.806c0,1.55,1.256,2.806,2.806,2.806c1.55,0,2.806-1.256,2.806-2.806C18.806,14.451,17.55,13.194,16,13.194z",
+    "raph_cloud": "M24.345,13.904c0.019-0.195,0.03-0.392,0.03-0.591c0-3.452-2.798-6.25-6.25-6.25c-2.679,0-4.958,1.689-5.847,4.059c-0.589-0.646-1.429-1.059-2.372-1.059c-1.778,0-3.219,1.441-3.219,3.219c0,0.21,0.023,0.415,0.062,0.613c-2.372,0.391-4.187,2.436-4.187,4.918c0,2.762,2.239,5,5,5h15.875c2.762,0,5-2.238,5-5C28.438,16.362,26.672,14.332,24.345,13.904z",
+    "raph_cloud2": "M7.562,24.812c-3.313,0-6-2.687-6-6l0,0c0.002-2.659,1.734-4.899,4.127-5.684l0,0c0.083-2.26,1.937-4.064,4.216-4.066l0,0c0.73,0,1.415,0.19,2.01,0.517l0,0c1.266-2.105,3.57-3.516,6.208-3.517l0,0c3.947,0.002,7.157,3.155,7.248,7.079l0,0c2.362,0.804,4.062,3.034,4.064,5.671l0,0c0,3.313-2.687,6-6,6l0,0H7.562L7.562,24.812zM24.163,14.887c-0.511-0.095-0.864-0.562-0.815-1.079l0,0c0.017-0.171,0.027-0.336,0.027-0.497l0,0c-0.007-2.899-2.352-5.245-5.251-5.249l0,0c-2.249-0.002-4.162,1.418-4.911,3.41l0,0c-0.122,0.323-0.406,0.564-0.748,0.63l0,0c-0.34,0.066-0.694-0.052-0.927-0.309l0,0c-0.416-0.453-0.986-0.731-1.633-0.731l0,0c-1.225,0.002-2.216,0.993-2.22,2.218l0,0c0,0.136,0.017,0.276,0.045,0.424l0,0c0.049,0.266-0.008,0.54-0.163,0.762l0,0c-0.155,0.223-0.392,0.371-0.657,0.414l0,0c-1.9,0.313-3.352,1.949-3.35,3.931l0,0c0.004,2.209,1.792,3.995,4.001,4.001l0,0h15.874c2.209-0.006,3.994-1.792,3.999-4.001l0,0C27.438,16.854,26.024,15.231,24.163,14.887L24.163,14.887",
+    "raph_cloudDown": "M24.345,13.904c0.019-0.195,0.03-0.392,0.03-0.591c0-3.452-2.798-6.25-6.25-6.25c-2.679,0-4.958,1.689-5.847,4.059c-0.589-0.646-1.429-1.059-2.372-1.059c-1.778,0-3.219,1.441-3.219,3.219c0,0.21,0.023,0.415,0.062,0.613c-2.372,0.391-4.187,2.436-4.187,4.918c0,2.762,2.239,5,5,5h3.404l-0.707-0.707c-0.377-0.377-0.585-0.879-0.585-1.413c0-0.533,0.208-1.035,0.585-1.412l0.556-0.557c0.4-0.399,0.937-0.628,1.471-0.628c0.027,0,0.054,0,0.08,0.002v-0.472c0-1.104,0.898-2.002,2-2.002h3.266c1.103,0,2,0.898,2,2.002v0.472c0.027-0.002,0.054-0.002,0.081-0.002c0.533,0,1.07,0.229,1.47,0.63l0.557,0.552c0.78,0.781,0.78,2.05,0,2.828l-0.706,0.707h2.403c2.762,0,5-2.238,5-5C28.438,16.362,26.672,14.332,24.345,13.904z M21.033,20.986l-0.556-0.555c-0.39-0.389-0.964-0.45-1.276-0.137c-0.312,0.312-0.568,0.118-0.568-0.432v-1.238c0-0.55-0.451-1-1-1h-3.265c-0.55,0-1,0.45-1,1v1.238c0,0.55-0.256,0.744-0.569,0.432c-0.312-0.313-0.887-0.252-1.276,0.137l-0.556,0.555c-0.39,0.389-0.39,1.024-0.001,1.413l4.328,4.331c0.194,0.194,0.451,0.291,0.707,0.291s0.512-0.097,0.707-0.291l4.327-4.331C21.424,22.011,21.423,21.375,21.033,20.986z",
+    "raph_cloudUp": "M24.345,13.904c0.019-0.195,0.03-0.392,0.03-0.591c0-3.452-2.798-6.25-6.25-6.25c-2.679,0-4.958,1.689-5.847,4.059c-0.589-0.646-1.429-1.059-2.372-1.059c-1.778,0-3.219,1.441-3.219,3.219c0,0.21,0.023,0.415,0.062,0.613c-2.372,0.391-4.187,2.436-4.187,4.918c0,2.762,2.239,5,5,5h2.312c-0.126-0.266-0.2-0.556-0.2-0.859c0-0.535,0.208-1.04,0.587-1.415l4.325-4.329c0.375-0.377,0.877-0.585,1.413-0.585c0.54,0,1.042,0.21,1.417,0.587l4.323,4.329c0.377,0.373,0.585,0.878,0.585,1.413c0,0.304-0.073,0.594-0.2,0.859h1.312c2.762,0,5-2.238,5-5C28.438,16.362,26.672,14.332,24.345,13.904z M16.706,17.916c-0.193-0.195-0.45-0.291-0.706-0.291s-0.512,0.096-0.707,0.291l-4.327,4.33c-0.39,0.389-0.389,1.025,0.001,1.414l0.556,0.555c0.39,0.389,0.964,0.449,1.276,0.137s0.568-0.119,0.568,0.432v1.238c0,0.549,0.451,1,1,1h3.265c0.551,0,1-0.451,1-1v-1.238c0-0.551,0.256-0.744,0.569-0.432c0.312,0.312,0.887,0.252,1.276-0.137l0.556-0.555c0.39-0.389,0.39-1.025,0.001-1.414L16.706,17.916z",
+    "raph_location": "M16,3.5c-4.142,0-7.5,3.358-7.5,7.5c0,4.143,7.5,18.121,7.5,18.121S23.5,15.143,23.5,11C23.5,6.858,20.143,3.5,16,3.5z M16,14.584c-1.979,0-3.584-1.604-3.584-3.584S14.021,7.416,16,7.416S19.584,9.021,19.584,11S17.979,14.584,16,14.584z",
+    "raph_volume0": "M4.998,12.127v7.896h4.495l6.729,5.526l0.004-18.948l-6.73,5.526H4.998z",
+    "raph_volume1": "M4.998,12.127v7.896h4.495l6.729,5.526l0.004-18.948l-6.73,5.526H4.998z M18.806,11.219c-0.393-0.389-1.024-0.389-1.415,0.002c-0.39,0.391-0.39,1.024,0.002,1.416v-0.002c0.863,0.864,1.395,2.049,1.395,3.366c0,1.316-0.531,2.497-1.393,3.361c-0.394,0.389-0.394,1.022-0.002,1.415c0.195,0.195,0.451,0.293,0.707,0.293c0.257,0,0.513-0.098,0.708-0.293c1.222-1.22,1.98-2.915,1.979-4.776C20.788,14.136,20.027,12.439,18.806,11.219z",
+    "raph_volume2": "M4.998,12.127v7.896h4.495l6.729,5.526l0.004-18.948l-6.73,5.526H4.998z M18.806,11.219c-0.393-0.389-1.024-0.389-1.415,0.002c-0.39,0.391-0.39,1.024,0.002,1.416v-0.002c0.863,0.864,1.395,2.049,1.395,3.366c0,1.316-0.531,2.497-1.393,3.361c-0.394,0.389-0.394,1.022-0.002,1.415c0.195,0.195,0.451,0.293,0.707,0.293c0.257,0,0.513-0.098,0.708-0.293c1.222-1.22,1.98-2.915,1.979-4.776C20.788,14.136,20.027,12.439,18.806,11.219z M21.101,8.925c-0.393-0.391-1.024-0.391-1.413,0c-0.392,0.391-0.392,1.025,0,1.414c1.45,1.451,2.344,3.447,2.344,5.661c0,2.212-0.894,4.207-2.342,5.659c-0.392,0.39-0.392,1.023,0,1.414c0.195,0.195,0.451,0.293,0.708,0.293c0.256,0,0.512-0.098,0.707-0.293c1.808-1.809,2.929-4.315,2.927-7.073C24.033,13.24,22.912,10.732,21.101,8.925z",
+    "raph_volume3": "M4.998,12.127v7.896h4.495l6.729,5.526l0.004-18.948l-6.73,5.526H4.998z M18.806,11.219c-0.393-0.389-1.024-0.389-1.415,0.002c-0.39,0.391-0.39,1.024,0.002,1.416v-0.002c0.863,0.864,1.395,2.049,1.395,3.366c0,1.316-0.531,2.497-1.393,3.361c-0.394,0.389-0.394,1.022-0.002,1.415c0.195,0.195,0.451,0.293,0.707,0.293c0.257,0,0.513-0.098,0.708-0.293c1.222-1.22,1.98-2.915,1.979-4.776C20.788,14.136,20.027,12.439,18.806,11.219z M21.101,8.925c-0.393-0.391-1.024-0.391-1.413,0c-0.392,0.391-0.392,1.025,0,1.414c1.45,1.451,2.344,3.447,2.344,5.661c0,2.212-0.894,4.207-2.342,5.659c-0.392,0.39-0.392,1.023,0,1.414c0.195,0.195,0.451,0.293,0.708,0.293c0.256,0,0.512-0.098,0.707-0.293c1.808-1.809,2.929-4.315,2.927-7.073C24.033,13.24,22.912,10.732,21.101,8.925z M23.28,6.746c-0.393-0.391-1.025-0.389-1.414,0.002c-0.391,0.389-0.391,1.023,0.002,1.413h-0.002c2.009,2.009,3.248,4.773,3.248,7.839c0,3.063-1.239,5.828-3.246,7.838c-0.391,0.39-0.391,1.023,0.002,1.415c0.194,0.194,0.45,0.291,0.706,0.291s0.513-0.098,0.708-0.293c2.363-2.366,3.831-5.643,3.829-9.251C27.115,12.389,25.647,9.111,23.28,6.746z",
+    "raph_key": "M18.386,16.009l0.009-0.006l-0.58-0.912c1.654-2.226,1.876-5.319,0.3-7.8c-2.043-3.213-6.303-4.161-9.516-2.118c-3.212,2.042-4.163,6.302-2.12,9.517c1.528,2.402,4.3,3.537,6.944,3.102l0.424,0.669l0.206,0.045l0.779-0.447l-0.305,1.377l2.483,0.552l-0.296,1.325l1.903,0.424l-0.68,3.06l1.406,0.313l-0.424,1.906l4.135,0.918l0.758-3.392L18.386,16.009z M10.996,8.944c-0.685,0.436-1.593,0.233-2.029-0.452C8.532,7.807,8.733,6.898,9.418,6.463s1.594-0.233,2.028,0.452C11.883,7.6,11.68,8.509,10.996,8.944z",
+    "raph_ruler": "M6.63,21.796l-5.122,5.121h25.743V1.175L6.63,21.796zM18.702,10.48c0.186-0.183,0.48-0.183,0.664,0l1.16,1.159c0.184,0.183,0.186,0.48,0.002,0.663c-0.092,0.091-0.213,0.137-0.332,0.137c-0.121,0-0.24-0.046-0.33-0.137l-1.164-1.159C18.519,10.96,18.519,10.664,18.702,10.48zM17.101,12.084c0.184-0.183,0.48-0.183,0.662,0l2.156,2.154c0.184,0.183,0.184,0.48,0.002,0.661c-0.092,0.092-0.213,0.139-0.334,0.139s-0.24-0.046-0.33-0.137l-2.156-2.154C16.917,12.564,16.917,12.267,17.101,12.084zM15.497,13.685c0.184-0.183,0.48-0.183,0.664,0l1.16,1.161c0.184,0.183,0.182,0.48-0.002,0.663c-0.092,0.092-0.211,0.138-0.33,0.138c-0.121,0-0.24-0.046-0.332-0.138l-1.16-1.16C15.314,14.166,15.314,13.868,15.497,13.685zM13.896,15.288c0.184-0.183,0.48-0.181,0.664,0.002l1.158,1.159c0.183,0.184,0.183,0.48,0,0.663c-0.092,0.092-0.212,0.138-0.332,0.138c-0.119,0-0.24-0.046-0.332-0.138l-1.158-1.161C13.713,15.767,13.713,15.471,13.896,15.288zM12.293,16.892c0.183-0.184,0.479-0.184,0.663,0l2.154,2.153c0.184,0.184,0.184,0.481,0,0.665c-0.092,0.092-0.211,0.138-0.33,0.138c-0.121,0-0.242-0.046-0.334-0.138l-2.153-2.155C12.11,17.371,12.11,17.075,12.293,16.892zM10.302,24.515c-0.091,0.093-0.212,0.139-0.332,0.139c-0.119,0-0.238-0.045-0.33-0.137l-2.154-2.153c-0.184-0.183-0.184-0.479,0-0.663s0.479-0.184,0.662,0l2.154,2.153C10.485,24.036,10.485,24.332,10.302,24.515zM10.912,21.918c-0.093,0.093-0.214,0.139-0.333,0.139c-0.12,0-0.24-0.045-0.33-0.137l-1.162-1.161c-0.184-0.183-0.184-0.479,0-0.66c0.184-0.185,0.48-0.187,0.664-0.003l1.161,1.162C11.095,21.438,11.095,21.735,10.912,21.918zM12.513,20.316c-0.092,0.092-0.211,0.138-0.332,0.138c-0.119,0-0.239-0.046-0.331-0.138l-1.159-1.16c-0.184-0.184-0.184-0.48,0-0.664s0.48-0.182,0.663,0.002l1.159,1.161C12.696,19.838,12.696,20.135,12.513,20.316zM22.25,21.917h-8.67l8.67-8.67V21.917zM22.13,10.7c-0.09,0.092-0.211,0.138-0.33,0.138c-0.121,0-0.242-0.046-0.334-0.138l-1.16-1.159c-0.184-0.183-0.184-0.479,0-0.663c0.182-0.183,0.479-0.183,0.662,0l1.16,1.159C22.312,10.221,22.313,10.517,22.13,10.7zM24.726,10.092c-0.092,0.092-0.213,0.137-0.332,0.137s-0.24-0.045-0.33-0.137l-2.154-2.154c-0.184-0.183-0.184-0.481,0-0.664s0.482-0.181,0.664,0.002l2.154,2.154C24.911,9.613,24.909,9.91,24.726,10.092z",
+    "raph_power": "M21.816,3.999c-0.993-0.481-2.189-0.068-2.673,0.927c-0.482,0.995-0.066,2.191,0.927,2.673c3.115,1.516,5.265,4.705,5.263,8.401c-0.01,5.154-4.18,9.324-9.333,9.333c-5.154-0.01-9.324-4.18-9.334-9.333c-0.002-3.698,2.149-6.89,5.267-8.403c0.995-0.482,1.408-1.678,0.927-2.673c-0.482-0.993-1.676-1.409-2.671-0.927C5.737,6.152,2.667,10.72,2.665,16C2.667,23.364,8.634,29.332,16,29.334c7.365-0.002,13.333-5.97,13.334-13.334C29.332,10.722,26.266,6.157,21.816,3.999z M16,13.833c1.104,0,1.999-0.894,1.999-2V2.499C17.999,1.394,17.104,0.5,16,0.5c-1.106,0-2,0.895-2,1.999v9.333C14,12.938,14.894,13.833,16,13.833z",
+	"raph_lock": "M22.335,12.833V9.999h-0.001C22.333,6.501,19.498,3.666,16,3.666S9.666,6.502,9.666,10h0v2.833H7.375V25h17.25V12.833H22.335zM11.667,10C11.667,10,11.667,10,11.667,10c0-2.39,1.944-4.334,4.333-4.334c2.391,0,4.335,1.944,4.335,4.333c0,0,0,0,0,0v2.834h-8.668V10zx",
+    "raph_unlock": "M20.375,12.833h-2.209V10c0,0,0,0,0-0.001c0-2.389,1.945-4.333,4.334-4.333c2.391,0,4.335,1.944,4.335,4.333c0,0,0,0,0,0v2.834h2V9.999h-0.001c-0.001-3.498-2.836-6.333-6.334-6.333S16.166,6.502,16.166,10v2.833H3.125V25h17.25V12.833z",
+	 "raph_bookmark": "M17.396,1.841L6.076,25.986l7.341-4.566l1.186,8.564l11.32-24.146L17.396,1.841zM19.131,9.234c-0.562-0.264-0.805-0.933-0.541-1.495c0.265-0.562,0.934-0.805,1.496-0.541s0.805,0.934,0.541,1.496S19.694,9.498,19.131,9.234z",
+    "raph_tag": "M14.263,2.826H7.904L2.702,8.028v6.359L18.405,30.09l11.561-11.562L14.263,2.826zM6.495,8.859c-0.619-0.619-0.619-1.622,0-2.24C7.114,6,8.117,6,8.736,6.619c0.62,0.62,0.619,1.621,0,2.241C8.117,9.479,7.114,9.479,6.495,8.859z",
+    "raph_search": "M29.772,26.433l-7.126-7.126c0.96-1.583,1.523-3.435,1.524-5.421C24.169,8.093,19.478,3.401,13.688,3.399C7.897,3.401,3.204,8.093,3.204,13.885c0,5.789,4.693,10.481,10.484,10.481c1.987,0,3.839-0.563,5.422-1.523l7.128,7.127L29.772,26.433zM7.203,13.885c0.006-3.582,2.903-6.478,6.484-6.486c3.579,0.008,6.478,2.904,6.484,6.486c-0.007,3.58-2.905,6.476-6.484,6.484C10.106,20.361,7.209,17.465,7.203,13.885z",
+    "raph_zoomout": "M22.646,19.307c0.96-1.583,1.523-3.435,1.524-5.421C24.169,8.093,19.478,3.401,13.688,3.399C7.897,3.401,3.204,8.093,3.204,13.885c0,5.789,4.693,10.481,10.484,10.481c1.987,0,3.839-0.563,5.422-1.523l7.128,7.127l3.535-3.537L22.646,19.307zM13.688,20.369c-3.582-0.008-6.478-2.904-6.484-6.484c0.006-3.582,2.903-6.478,6.484-6.486c3.579,0.008,6.478,2.904,6.484,6.486C20.165,17.465,17.267,20.361,13.688,20.369zM8.854,11.884v4.001l9.665-0.001v-3.999L8.854,11.884z",
+    "raph_zoomin": "M22.646,19.307c0.96-1.583,1.523-3.435,1.524-5.421C24.169,8.093,19.478,3.401,13.688,3.399C7.897,3.401,3.204,8.093,3.204,13.885c0,5.789,4.693,10.481,10.484,10.481c1.987,0,3.839-0.563,5.422-1.523l7.128,7.127l3.535-3.537L22.646,19.307zM13.688,20.369c-3.582-0.008-6.478-2.904-6.484-6.484c0.006-3.582,2.903-6.478,6.484-6.486c3.579,0.008,6.478,2.904,6.484,6.486C20.165,17.465,17.267,20.361,13.688,20.369zM15.687,9.051h-4v2.833H8.854v4.001h2.833v2.833h4v-2.834h2.832v-3.999h-2.833V9.051z",
+    "raph_cross": "M24.778,21.419 19.276,15.917 24.777,10.415 21.949,7.585 16.447,13.087 10.945,7.585 8.117,10.415 13.618,15.917 8.116,21.419 10.946,24.248 16.447,18.746 21.948,24.248",
+    "raph_check": "M2.379,14.729 5.208,11.899 12.958,19.648 25.877,6.733 28.707,9.561 12.958,25.308",
+	"raph_clip": "M23.898,6.135c-1.571-1.125-3.758-0.764-4.884,0.808l-8.832,12.331c-0.804,1.122-0.546,2.684,0.577,3.488c1.123,0.803,2.684,0.545,3.488-0.578l6.236-8.706l-0.813-0.583l-6.235,8.707h0c-0.483,0.672-1.42,0.828-2.092,0.347c-0.673-0.481-0.827-1.419-0.345-2.093h0l8.831-12.33l0.001-0.001l-0.002-0.001c0.803-1.119,2.369-1.378,3.489-0.576c1.12,0.803,1.379,2.369,0.577,3.489v-0.001l-9.68,13.516l0.001,0.001c-1.124,1.569-3.316,1.931-4.885,0.808c-1.569-1.125-1.93-3.315-0.807-4.885l7.035-9.822l-0.813-0.582l-7.035,9.822c-1.447,2.02-0.982,4.83,1.039,6.277c2.021,1.448,4.831,0.982,6.278-1.037l9.68-13.516C25.83,9.447,25.47,7.261,23.898,6.135zx",
+    "raph_settings": "M16.015,12.03c-2.156,0-3.903,1.747-3.903,3.903c0,2.155,1.747,3.903,3.903,3.903c0.494,0,0.962-0.102,1.397-0.27l0.836,1.285l1.359-0.885l-0.831-1.276c0.705-0.706,1.142-1.681,1.142-2.757C19.918,13.777,18.171,12.03,16.015,12.03zM16,1.466C7.973,1.466,1.466,7.973,1.466,16c0,8.027,6.507,14.534,14.534,14.534c8.027,0,14.534-6.507,14.534-14.534C30.534,7.973,24.027,1.466,16,1.466zM26.174,20.809c-0.241,0.504-0.513,0.99-0.826,1.45L22.19,21.58c-0.481,0.526-1.029,0.994-1.634,1.385l0.119,3.202c-0.507,0.23-1.028,0.421-1.569,0.57l-1.955-2.514c-0.372,0.051-0.75,0.086-1.136,0.086c-0.356,0-0.706-0.029-1.051-0.074l-1.945,2.5c-0.541-0.151-1.065-0.342-1.57-0.569l0.117-3.146c-0.634-0.398-1.208-0.88-1.712-1.427L6.78,22.251c-0.313-0.456-0.583-0.944-0.826-1.448l2.088-2.309c-0.226-0.703-0.354-1.451-0.385-2.223l-2.768-1.464c0.055-0.563,0.165-1.107,0.301-1.643l3.084-0.427c0.29-0.702,0.675-1.352,1.135-1.942L8.227,7.894c0.399-0.389,0.83-0.744,1.283-1.07l2.663,1.672c0.65-0.337,1.349-0.593,2.085-0.75l0.968-3.001c0.278-0.021,0.555-0.042,0.837-0.042c0.282,0,0.56,0.022,0.837,0.042l0.976,3.028c0.72,0.163,1.401,0.416,2.036,0.75l2.704-1.697c0.455,0.326,0.887,0.681,1.285,1.07l-1.216,2.986c0.428,0.564,0.793,1.181,1.068,1.845l3.185,0.441c0.135,0.535,0.247,1.081,0.302,1.643l-2.867,1.516c-0.034,0.726-0.15,1.43-0.355,2.1L26.174,20.809z",
+    "raph_settingsalt": "M16,1.466C7.973,1.466,1.466,7.973,1.466,16c0,8.027,6.507,14.534,14.534,14.534c8.027,0,14.534-6.507,14.534-14.534C30.534,7.973,24.027,1.466,16,1.466zM24.386,14.968c-1.451,1.669-3.706,2.221-5.685,1.586l-7.188,8.266c-0.766,0.88-2.099,0.97-2.979,0.205s-0.973-2.099-0.208-2.979l7.198-8.275c-0.893-1.865-0.657-4.164,0.787-5.824c1.367-1.575,3.453-2.151,5.348-1.674l-2.754,3.212l0.901,2.621l2.722,0.529l2.761-3.22C26.037,11.229,25.762,13.387,24.386,14.968z",
+    "raph_bug": "M28.589,10.903l-5.828,1.612c-0.534-1.419-1.338-2.649-2.311-3.628l3.082-5.44c0.271-0.48,0.104-1.092-0.38-1.365c-0.479-0.271-1.09-0.102-1.36,0.377l-2.924,5.162c-0.604-0.383-1.24-0.689-1.9-0.896c-0.416-1.437-1.652-2.411-3.058-2.562c-0.001-0.004-0.002-0.008-0.003-0.012c-0.061-0.242-0.093-0.46-0.098-0.65c-0.005-0.189,0.012-0.351,0.046-0.479c0.037-0.13,0.079-0.235,0.125-0.317c0.146-0.26,0.34-0.43,0.577-0.509c0.023,0.281,0.142,0.482,0.352,0.601c0.155,0.088,0.336,0.115,0.546,0.086c0.211-0.031,0.376-0.152,0.496-0.363c0.105-0.186,0.127-0.389,0.064-0.607c-0.064-0.219-0.203-0.388-0.414-0.507c-0.154-0.087-0.314-0.131-0.482-0.129c-0.167,0.001-0.327,0.034-0.481,0.097c-0.153,0.063-0.296,0.16-0.429,0.289c-0.132,0.129-0.241,0.271-0.33,0.426c-0.132,0.234-0.216,0.496-0.25,0.783c-0.033,0.286-0.037,0.565-0.009,0.84c0.017,0.16,0.061,0.301,0.094,0.449c-0.375-0.021-0.758,0.002-1.14,0.108c-0.482,0.133-0.913,0.36-1.28,0.653c-0.052-0.172-0.098-0.344-0.18-0.518c-0.116-0.249-0.263-0.486-0.438-0.716c-0.178-0.229-0.384-0.41-0.618-0.543C9.904,3.059,9.737,2.994,9.557,2.951c-0.18-0.043-0.352-0.052-0.516-0.027s-0.318,0.08-0.463,0.164C8.432,3.172,8.318,3.293,8.23,3.445C8.111,3.656,8.08,3.873,8.136,4.092c0.058,0.221,0.181,0.384,0.367,0.49c0.21,0.119,0.415,0.138,0.611,0.056C9.31,4.556,9.451,4.439,9.539,4.283c0.119-0.21,0.118-0.443-0.007-0.695c0.244-0.055,0.497-0.008,0.757,0.141c0.081,0.045,0.171,0.115,0.27,0.208c0.097,0.092,0.193,0.222,0.286,0.388c0.094,0.166,0.179,0.368,0.251,0.608c0.013,0.044,0.023,0.098,0.035,0.146c-0.911,0.828-1.357,2.088-1.098,3.357c-0.582,0.584-1.072,1.27-1.457,2.035l-5.16-2.926c-0.48-0.271-1.092-0.102-1.364,0.377C1.781,8.404,1.95,9.016,2.43,9.289l5.441,3.082c-0.331,1.34-0.387,2.807-0.117,4.297l-5.828,1.613c-0.534,0.147-0.846,0.699-0.698,1.231c0.147,0.53,0.697,0.843,1.231,0.694l5.879-1.627c0.503,1.057,1.363,2.28,2.371,3.443l-3.194,5.639c-0.272,0.481-0.104,1.092,0.378,1.363c0.239,0.137,0.512,0.162,0.758,0.094c0.248-0.068,0.469-0.229,0.604-0.471l2.895-5.109c2.7,2.594,5.684,4.123,5.778,1.053c1.598,2.56,3.451-0.338,4.502-3.976l5.203,2.947c0.24,0.138,0.514,0.162,0.762,0.094c0.246-0.067,0.467-0.229,0.603-0.471c0.272-0.479,0.104-1.091-0.377-1.362l-5.701-3.229c0.291-1.505,0.422-2.983,0.319-4.138l5.886-1.627c0.53-0.147,0.847-0.697,0.696-1.229C29.673,11.068,29.121,10.756,28.589,10.903z",
+    "raph_link": "M15.667,4.601c-1.684,1.685-2.34,3.985-2.025,6.173l3.122-3.122c0.004-0.005,0.014-0.008,0.016-0.012c0.21-0.403,0.464-0.789,0.802-1.126c1.774-1.776,4.651-1.775,6.428,0c1.775,1.773,1.777,4.652,0.002,6.429c-0.34,0.34-0.727,0.593-1.131,0.804c-0.004,0.002-0.006,0.006-0.01,0.01l-3.123,3.123c2.188,0.316,4.492-0.34,6.176-2.023c2.832-2.832,2.83-7.423,0-10.255C23.09,1.77,18.499,1.77,15.667,4.601zM14.557,22.067c-0.209,0.405-0.462,0.791-0.801,1.131c-1.775,1.774-4.656,1.774-6.431,0c-1.775-1.774-1.775-4.653,0-6.43c0.339-0.338,0.725-0.591,1.128-0.8c0.004-0.006,0.005-0.012,0.011-0.016l3.121-3.123c-2.187-0.316-4.489,0.342-6.172,2.024c-2.831,2.831-2.83,7.423,0,10.255c2.833,2.831,7.424,2.831,10.257,0c1.684-1.684,2.342-3.986,2.023-6.175l-3.125,3.123C14.565,22.063,14.561,22.065,14.557,22.067zM9.441,18.885l2.197,2.197c0.537,0.537,1.417,0.537,1.953,0l8.302-8.302c0.539-0.536,0.539-1.417,0.002-1.952l-2.199-2.197c-0.536-0.539-1.416-0.539-1.952-0.002l-8.302,8.303C8.904,17.469,8.904,18.349,9.441,18.885z",
+    "raph_calendar": "M11.758,15.318c0.312-0.3,0.408-0.492,0.408-0.492h0.024c0,0-0.012,0.264-0.012,0.528v5.469h-1.871v1.031h4.87v-1.031H13.33v-7.436h-1.055l-2.027,1.967l0.719,0.744L11.758,15.318zM16.163,21.207c0,0.205,0.024,0.42,0.06,0.647h5.457v-1.031h-4.197c0.023-1.931,4.065-2.362,4.065-5.146c0-1.463-1.114-2.436-2.674-2.436c-1.907,0-2.675,1.607-2.675,1.607l0.875,0.587c0,0,0.6-1.08,1.716-1.08c0.887,0,1.522,0.563,1.522,1.403C20.312,17.754,16.163,18.186,16.163,21.207zM12,3.604h-2v3.335h2V3.604zM23,4.77v3.17h-4V4.77h-6v3.168H9.002V4.77H6.583v21.669h18.833V4.77H23zM24.417,25.438H7.584V10.522h16.833V25.438zM22,3.604h-2v3.335h2V3.604z",
+    "raph_picker": "M22.221,10.853c-0.111-0.414-0.261-0.412,0.221-1.539l1.66-3.519c0.021-0.051,0.2-0.412,0.192-0.946c0.015-0.529-0.313-1.289-1.119-1.642c-1.172-0.555-1.17-0.557-2.344-1.107c-0.784-0.396-1.581-0.171-1.979,0.179c-0.42,0.333-0.584,0.7-0.609,0.75L16.58,6.545c-0.564,1.084-0.655,0.97-1.048,1.147c-0.469,0.129-1.244,0.558-1.785,1.815c-1.108,2.346-1.108,2.346-1.108,2.346l-0.276,0.586l1.17,0.553l-3.599,7.623c-0.38,0.828-0.166,1.436-0.166,2.032c0.01,0.627-0.077,1.509-0.876,3.21l-0.276,0.586l3.517,1.661l0.276-0.585c0.808-1.699,1.431-2.326,1.922-2.717c0.46-0.381,1.066-0.6,1.465-1.42l3.599-7.618l1.172,0.554l0.279-0.589c0,0,0,0,1.105-2.345C22.578,12.166,22.419,11.301,22.221,10.853zM14.623,22.83c-0.156,0.353-0.413,0.439-1.091,0.955c-0.577,0.448-1.264,1.172-2.009,2.6l-1.191-0.562c0.628-1.48,0.75-2.474,0.73-3.203c-0.031-0.851-0.128-1.104,0.045-1.449l3.599-7.621l3.517,1.662L14.623,22.83z",
+    "raph_no": "M16,2.939C9.006,2.942,3.338,8.61,3.335,15.605C3.335,22.6,9.005,28.268,16,28.27c6.994-0.002,12.662-5.67,12.664-12.664C28.663,8.61,22.995,2.939,16,2.939zM25.663,15.605c-0.003,1.943-0.583,3.748-1.569,5.264L10.736,7.513c1.515-0.988,3.32-1.569,5.265-1.573C21.337,5.951,25.654,10.269,25.663,15.605zM6.335,15.605c0.004-1.943,0.584-3.75,1.573-5.266l13.355,13.357c-1.516,0.986-3.32,1.566-5.264,1.569C10.664,25.26,6.346,20.941,6.335,15.605z",
+    "raph_commandline": "M2.021,9.748L2.021,9.748V9.746V9.748zM2.022,9.746l5.771,5.773l-5.772,5.771l2.122,2.123l7.894-7.895L4.143,7.623L2.022,9.746zM12.248,23.269h14.419V20.27H12.248V23.269zM16.583,17.019h10.084V14.02H16.583V17.019zM12.248,7.769v3.001h14.419V7.769H12.248z",
+    "raph_photo": "M24.25,10.25H20.5v-1.5h-9.375v1.5h-3.75c-1.104,0-2,0.896-2,2v10.375c0,1.104,0.896,2,2,2H24.25c1.104,0,2-0.896,2-2V12.25C26.25,11.146,25.354,10.25,24.25,10.25zM15.812,23.499c-3.342,0-6.06-2.719-6.06-6.061c0-3.342,2.718-6.062,6.06-6.062s6.062,2.72,6.062,6.062C21.874,20.78,19.153,23.499,15.812,23.499zM15.812,13.375c-2.244,0-4.062,1.819-4.062,4.062c0,2.244,1.819,4.062,4.062,4.062c2.244,0,4.062-1.818,4.062-4.062C19.875,15.194,18.057,13.375,15.812,13.375z",
+    "export": "M24.086,20.904c-1.805,3.113-5.163,5.212-9.023,5.219c-5.766-0.01-10.427-4.672-10.438-10.435C4.636,9.922,9.297,5.261,15.063,5.25c3.859,0.007,7.216,2.105,9.022,5.218l3.962,2.284l0.143,0.082C26.879,6.784,21.504,2.25,15.063,2.248C7.64,2.25,1.625,8.265,1.624,15.688c0.002,7.42,6.017,13.435,13.439,13.437c6.442-0.002,11.819-4.538,13.127-10.589l-0.141,0.081L24.086,20.904zM28.4,15.688l-7.15-4.129v2.297H10.275v3.661H21.25v2.297L28.4,15.688z",
+    "import": "M15.067,2.25c-5.979,0-11.035,3.91-12.778,9.309h3.213c1.602-3.705,5.271-6.301,9.565-6.309c5.764,0.01,10.428,4.674,10.437,10.437c-0.009,5.764-4.673,10.428-10.437,10.438c-4.294-0.007-7.964-2.605-9.566-6.311H2.289c1.744,5.399,6.799,9.31,12.779,9.312c7.419-0.002,13.437-6.016,13.438-13.438C28.504,8.265,22.486,2.252,15.067,2.25zM10.918,19.813l7.15-4.126l-7.15-4.129v2.297H-0.057v3.661h10.975V19.813z",
+    "raph_run": "M17.41,20.395l-0.778-2.723c0.228-0.2,0.442-0.414,0.644-0.643l2.721,0.778c0.287-0.418,0.534-0.862,0.755-1.323l-2.025-1.96c0.097-0.288,0.181-0.581,0.241-0.883l2.729-0.684c0.02-0.252,0.039-0.505,0.039-0.763s-0.02-0.51-0.039-0.762l-2.729-0.684c-0.061-0.302-0.145-0.595-0.241-0.883l2.026-1.96c-0.222-0.46-0.469-0.905-0.756-1.323l-2.721,0.777c-0.201-0.228-0.416-0.442-0.644-0.643l0.778-2.722c-0.418-0.286-0.863-0.534-1.324-0.755l-1.96,2.026c-0.287-0.097-0.581-0.18-0.883-0.241l-0.683-2.73c-0.253-0.019-0.505-0.039-0.763-0.039s-0.51,0.02-0.762,0.039l-0.684,2.73c-0.302,0.061-0.595,0.144-0.883,0.241l-1.96-2.026C7.048,3.463,6.604,3.71,6.186,3.997l0.778,2.722C6.736,6.919,6.521,7.134,6.321,7.361L3.599,6.583C3.312,7.001,3.065,7.446,2.844,7.907l2.026,1.96c-0.096,0.288-0.18,0.581-0.241,0.883l-2.73,0.684c-0.019,0.252-0.039,0.505-0.039,0.762s0.02,0.51,0.039,0.763l2.73,0.684c0.061,0.302,0.145,0.595,0.241,0.883l-2.026,1.96c0.221,0.46,0.468,0.905,0.755,1.323l2.722-0.778c0.2,0.229,0.415,0.442,0.643,0.643l-0.778,2.723c0.418,0.286,0.863,0.533,1.323,0.755l1.96-2.026c0.288,0.097,0.581,0.181,0.883,0.241l0.684,2.729c0.252,0.02,0.505,0.039,0.763,0.039s0.51-0.02,0.763-0.039l0.683-2.729c0.302-0.061,0.596-0.145,0.883-0.241l1.96,2.026C16.547,20.928,16.992,20.681,17.41,20.395zM11.798,15.594c-1.877,0-3.399-1.522-3.399-3.399s1.522-3.398,3.399-3.398s3.398,1.521,3.398,3.398S13.675,15.594,11.798,15.594zM27.29,22.699c0.019-0.547-0.06-1.104-0.23-1.654l1.244-1.773c-0.188-0.35-0.4-0.682-0.641-0.984l-2.122,0.445c-0.428-0.364-0.915-0.648-1.436-0.851l-0.611-2.079c-0.386-0.068-0.777-0.105-1.173-0.106l-0.974,1.936c-0.279,0.054-0.558,0.128-0.832,0.233c-0.257,0.098-0.497,0.22-0.727,0.353L17.782,17.4c-0.297,0.262-0.568,0.545-0.813,0.852l0.907,1.968c-0.259,0.495-0.437,1.028-0.519,1.585l-1.891,1.06c0.019,0.388,0.076,0.776,0.164,1.165l2.104,0.519c0.231,0.524,0.541,0.993,0.916,1.393l-0.352,2.138c0.32,0.23,0.66,0.428,1.013,0.6l1.715-1.32c0.536,0.141,1.097,0.195,1.662,0.15l1.452,1.607c0.2-0.057,0.399-0.118,0.596-0.193c0.175-0.066,0.34-0.144,0.505-0.223l0.037-2.165c0.455-0.339,0.843-0.747,1.152-1.206l2.161-0.134c0.152-0.359,0.279-0.732,0.368-1.115L27.29,22.699zM23.127,24.706c-1.201,0.458-2.545-0.144-3.004-1.345s0.143-2.546,1.344-3.005c1.201-0.458,2.547,0.144,3.006,1.345C24.931,22.902,24.328,24.247,23.127,24.706z",
+    "raph_magnet": "M20.812,19.5h5.002v-6.867c-0.028-1.706-0.61-3.807-2.172-5.841c-1.539-2.014-4.315-3.72-7.939-3.687C12.076,3.073,9.3,4.779,7.762,6.792C6.2,8.826,5.617,10.928,5.588,12.634V19.5h5v-6.866c-0.027-0.377,0.303-1.789,1.099-2.748c0.819-0.979,1.848-1.747,4.014-1.778c2.165,0.032,3.195,0.799,4.013,1.778c0.798,0.959,1.126,2.372,1.099,2.748V19.5L20.812,19.5zM25.814,25.579c0,0,0-2.354,0-5.079h-5.002c0,2.727,0,5.08,0,5.08l5.004-0.001H25.814zM5.588,25.58h5c0,0,0-2.354,0-5.08h-5C5.588,23.227,5.588,25.58,5.588,25.58z",
+    "raph_connect": "M25.06,13.719c-0.944-5.172-5.461-9.094-10.903-9.094v4c3.917,0.006,7.085,3.176,7.094,7.094c-0.009,3.917-3.177,7.085-7.094,7.093v4.002c5.442-0.004,9.959-3.926,10.903-9.096h4.69v-3.999H25.06zM20.375,15.719c0-3.435-2.784-6.219-6.219-6.219c-2.733,0-5.05,1.766-5.884,4.218H1.438v4.001h6.834c0.833,2.452,3.15,4.219,5.884,4.219C17.591,21.938,20.375,19.153,20.375,15.719z",
+    "raph_disconnect": "M9.219,9.5c-2.733,0-5.05,1.766-5.884,4.218H1.438v4.001h1.897c0.833,2.452,3.15,4.219,5.884,4.219c3.435,0,6.219-2.784,6.219-6.219S12.653,9.5,9.219,9.5zM27.685,13.719c-0.944-5.172-5.461-9.094-10.903-9.094v4c3.917,0.006,7.085,3.176,7.094,7.094c-0.009,3.917-3.177,7.085-7.094,7.093v4.002c5.442-0.004,9.959-3.926,10.903-9.096h2.065v-3.999H27.685z",
+	"raph_plugin": "M26.33,15.836l-3.893-1.545l3.136-7.9c0.28-0.705-0.064-1.505-0.771-1.785c-0.707-0.28-1.506,0.065-1.785,0.771l-3.136,7.9l-4.88-1.937l3.135-7.9c0.281-0.706-0.064-1.506-0.77-1.786c-0.706-0.279-1.506,0.065-1.785,0.771l-3.136,7.9L8.554,8.781l-1.614,4.066l2.15,0.854l-2.537,6.391c-0.61,1.54,0.143,3.283,1.683,3.895l1.626,0.646L8.985,26.84c-0.407,1.025,0.095,2.188,1.122,2.596l0.93,0.369c1.026,0.408,2.188-0.095,2.596-1.121l0.877-2.207l1.858,0.737c1.54,0.611,3.284-0.142,3.896-1.682l2.535-6.391l1.918,0.761L26.33,15.836z",
+    "raph_folder": "M29.124,12.75c-0.004-2.208-1.792-3.997-3.999-4V8.749H12.868c-0.505-1.622-2.011-2.808-3.805-2.811H6.188c-2.208,0.002-3.997,1.792-4.001,4v14.188c0.004,2.206,1.793,3.995,4.001,3.999h18.938c2.205-0.004,3.995-1.793,3.999-3.999V12.75zM6.188,7.937h2.875c1.046-0.004,1.917,0.834,1.983,1.876l0.058,0.937h14.022c1.093,0.002,1.997,0.906,1.999,2v0.495c-0.591-0.345-1.268-0.557-2-0.558H6.187c-0.732,0.001-1.41,0.214-2,0.559V9.937C4.19,8.843,5.094,7.939,6.188,7.937zM25.125,26.125H6.188c-1.093-0.002-1.997-0.908-2.001-2v-7.438h0.001c0.002-1.095,0.906-1.999,2-2.001h18.938c1.093,0.002,1.991,0.901,2,1.991v7.447C27.122,25.219,26.218,26.123,25.125,26.125z"
+}
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/weather.json
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/weather.json	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/extensions/shapelib/weather.json	(revision 29468)
@@ -0,0 +1,26 @@
+{"size": 32,
+"fill": true,
+"data": {
+"raph_sun": "M15.502,7.504c-4.35,0-7.873,3.523-7.873,7.873c0,4.347,3.523,7.872,7.873,7.872c4.346,0,7.871-3.525,7.871-7.872C23.374,11.027,19.85,7.504,15.502,7.504zM15.502,21.25c-3.244-0.008-5.866-2.63-5.874-5.872c0.007-3.243,2.63-5.866,5.874-5.874c3.242,0.008,5.864,2.631,5.871,5.874C21.366,18.62,18.744,21.242,15.502,21.25zM15.502,6.977c0.553,0,1-0.448,1-1.001V1.125c-0.002-0.553-0.448-1-1-1c-0.553,0-1.001,0.449-1,1.002v4.85C14.502,6.528,14.949,6.977,15.502,6.977zM18.715,7.615c0.125,0.053,0.255,0.076,0.382,0.077c0.394,0,0.765-0.233,0.925-0.618l1.856-4.483c0.21-0.511-0.031-1.095-0.541-1.306c-0.511-0.211-1.096,0.031-1.308,0.541L18.174,6.31C17.963,6.82,18.205,7.405,18.715,7.615zM21.44,9.436c0.195,0.194,0.451,0.293,0.707,0.293s0.512-0.098,0.707-0.293l3.43-3.433c0.391-0.39,0.39-1.023,0-1.415c-0.392-0.39-1.025-0.39-1.415,0.002L21.44,8.021C21.049,8.412,21.049,9.045,21.44,9.436zM23.263,12.16c0.158,0.385,0.531,0.617,0.923,0.617c0.127,0,0.257-0.025,0.383-0.078l4.48-1.857c0.511-0.211,0.753-0.797,0.541-1.307s-0.796-0.752-1.307-0.54l-4.481,1.857C23.292,11.064,23.051,11.65,23.263,12.16zM29.752,14.371l-4.851,0.001c-0.552,0-1,0.448-0.998,1.001c0,0.553,0.447,0.999,0.998,0.999l4.852-0.002c0.553,0,0.999-0.449,0.999-1C30.752,14.817,30.304,14.369,29.752,14.371zM29.054,19.899l-4.482-1.854c-0.512-0.212-1.097,0.03-1.307,0.541c-0.211,0.511,0.031,1.096,0.541,1.308l4.482,1.854c0.126,0.051,0.256,0.075,0.383,0.075c0.393,0,0.765-0.232,0.925-0.617C29.806,20.695,29.563,20.109,29.054,19.899zM22.86,21.312c-0.391-0.391-1.023-0.391-1.414,0.001c-0.391,0.39-0.39,1.022,0,1.413l3.434,3.429c0.195,0.195,0.45,0.293,0.706,0.293s0.513-0.098,0.708-0.293c0.391-0.392,0.389-1.025,0-1.415L22.86,21.312zM20.029,23.675c-0.211-0.511-0.796-0.752-1.307-0.541c-0.51,0.212-0.752,0.797-0.54,1.308l1.86,4.48c0.159,0.385,0.531,0.617,0.925,0.617c0.128,0,0.258-0.024,0.383-0.076c0.511-0.211,0.752-0.797,0.54-1.309L20.029,23.675zM15.512,23.778c-0.553,0-1,0.448-1,1l0.004,4.851c0,0.553,0.449,0.999,1,0.999c0.553,0,1-0.448,0.998-1l-0.003-4.852C16.511,24.226,16.062,23.777,15.512,23.778zM12.296,23.142c-0.51-0.21-1.094,0.031-1.306,0.543l-1.852,4.483c-0.21,0.511,0.033,1.096,0.543,1.307c0.125,0.052,0.254,0.076,0.382,0.076c0.392,0,0.765-0.234,0.924-0.619l1.853-4.485C13.051,23.937,12.807,23.353,12.296,23.142zM9.57,21.325c-0.392-0.391-1.025-0.389-1.415,0.002L4.729,24.76c-0.391,0.392-0.389,1.023,0.002,1.415c0.195,0.194,0.45,0.292,0.706,0.292c0.257,0,0.513-0.098,0.708-0.293l3.427-3.434C9.961,22.349,9.961,21.716,9.57,21.325zM7.746,18.604c-0.213-0.509-0.797-0.751-1.307-0.54L1.96,19.925c-0.511,0.212-0.752,0.798-0.54,1.308c0.16,0.385,0.531,0.616,0.924,0.616c0.127,0,0.258-0.024,0.383-0.076l4.479-1.861C7.715,19.698,7.957,19.113,7.746,18.604zM7.1,15.392c0-0.553-0.447-0.999-1-0.999l-4.851,0.006c-0.553,0-1.001,0.448-0.999,1.001c0.001,0.551,0.449,1,1,0.998l4.852-0.006C6.654,16.392,7.102,15.942,7.1,15.392zM1.944,10.869l4.485,1.85c0.125,0.053,0.254,0.076,0.381,0.076c0.393,0,0.766-0.232,0.925-0.618c0.212-0.511-0.032-1.097-0.544-1.306L2.708,9.021c-0.511-0.21-1.095,0.032-1.306,0.542C1.19,10.074,1.435,10.657,1.944,10.869zM8.137,9.451c0.195,0.193,0.449,0.291,0.705,0.291s0.513-0.098,0.709-0.295c0.391-0.389,0.389-1.023-0.004-1.414L6.113,4.609C5.723,4.219,5.088,4.221,4.699,4.612c-0.391,0.39-0.389,1.024,0.002,1.414L8.137,9.451zM10.964,7.084c0.16,0.384,0.532,0.615,0.923,0.615c0.128,0,0.258-0.025,0.384-0.077c0.51-0.212,0.753-0.798,0.54-1.307l-1.864-4.479c-0.212-0.51-0.798-0.751-1.308-0.539C9.129,1.51,8.888,2.096,9.1,2.605L10.964,7.084z",    
+    "raph_thunder": "M25.371,7.306c-0.092-3.924-3.301-7.077-7.248-7.079c-2.638,0.001-4.942,1.412-6.208,3.517c-0.595-0.327-1.28-0.517-2.01-0.517C7.626,3.229,5.772,5.033,5.689,7.293c-2.393,0.786-4.125,3.025-4.127,5.686c0,3.312,2.687,6,6,6v-0.002h5.271l-2.166,3.398l1.977-0.411L10,30.875l9.138-10.102L17,21l2.167-2.023h4.269c3.312,0,6-2.688,6-6C29.434,10.34,27.732,8.11,25.371,7.306zM23.436,16.979H7.561c-2.209-0.006-3.997-1.792-4.001-4.001c-0.002-1.982,1.45-3.618,3.35-3.931c0.265-0.043,0.502-0.191,0.657-0.414C7.722,8.41,7.779,8.136,7.73,7.87C7.702,7.722,7.685,7.582,7.685,7.446C7.689,6.221,8.68,5.23,9.905,5.228c0.647,0,1.217,0.278,1.633,0.731c0.233,0.257,0.587,0.375,0.927,0.309c0.342-0.066,0.626-0.307,0.748-0.63c0.749-1.992,2.662-3.412,4.911-3.41c2.899,0.004,5.244,2.35,5.251,5.249c0,0.161-0.009,0.326-0.027,0.497c-0.049,0.517,0.305,0.984,0.815,1.079c1.86,0.344,3.274,1.966,3.271,3.923C27.43,15.186,25.645,16.973,23.436,16.979z",
+    "raph_snow": "M25.372,6.912c-0.093-3.925-3.302-7.078-7.248-7.08c-2.638,0.002-4.942,1.412-6.208,3.518c-0.595-0.327-1.28-0.518-2.01-0.518C7.627,2.834,5.773,4.639,5.69,6.898c-2.393,0.786-4.125,3.025-4.127,5.686c0,3.312,2.687,6,6,6v-0.002h15.875c3.312,0,6-2.688,6-6C29.434,9.944,27.732,7.715,25.372,6.912zM23.436,16.584H7.562c-2.209-0.006-3.997-1.793-4.001-4c-0.002-1.983,1.45-3.619,3.35-3.933c0.265-0.043,0.502-0.19,0.657-0.414C7.723,8.015,7.78,7.74,7.731,7.475C7.703,7.326,7.686,7.187,7.686,7.051c0.004-1.225,0.995-2.217,2.22-2.219c0.647,0,1.217,0.278,1.633,0.731c0.233,0.257,0.587,0.375,0.927,0.31c0.342-0.066,0.626-0.308,0.748-0.631c0.749-1.992,2.662-3.412,4.911-3.41c2.898,0.004,5.244,2.351,5.251,5.25c0,0.16-0.009,0.325-0.026,0.496c-0.05,0.518,0.305,0.984,0.814,1.079c1.859,0.345,3.273,1.966,3.271,3.923C27.43,14.791,25.645,16.578,23.436,16.584zM16.667,24.09l1.119-1.119c0.389-0.391,0.389-1.025,0-1.416c-0.392-0.391-1.025-0.391-1.415,0l-1.119,1.119l-1.119-1.119c-0.391-0.391-1.025-0.391-1.415,0c-0.391,0.391-0.391,1.025,0,1.416l1.118,1.117l-1.12,1.121c-0.389,0.393-0.389,1.021,0,1.414c0.195,0.188,0.451,0.293,0.707,0.293c0.256,0,0.512-0.104,0.708-0.293l1.12-1.119l1.12,1.119c0.195,0.188,0.451,0.293,0.708,0.293c0.256,0,0.512-0.104,0.707-0.293c0.391-0.396,0.391-1.021,0-1.414L16.667,24.09zM25.119,21.817c-0.393-0.392-1.025-0.392-1.415,0l-1.12,1.121l-1.12-1.121c-0.391-0.392-1.022-0.392-1.414,0c-0.39,0.392-0.39,1.022,0,1.416l1.119,1.119l-1.119,1.119c-0.39,0.391-0.39,1.022,0,1.413c0.195,0.195,0.451,0.294,0.707,0.294c0.257,0,0.513-0.099,0.707-0.294l1.12-1.118l1.12,1.118c0.194,0.195,0.45,0.294,0.707,0.294c0.256,0,0.513-0.099,0.708-0.294c0.389-0.391,0.389-1.022,0-1.413l-1.12-1.119l1.12-1.119C25.507,22.842,25.507,22.209,25.119,21.817zM9.334,23.953l1.119-1.119c0.389-0.394,0.389-1.021,0-1.414c-0.391-0.394-1.025-0.394-1.415,0l-1.119,1.119l-1.12-1.121c-0.391-0.39-1.023-0.39-1.415,0c-0.391,0.396-0.391,1.024,0,1.418l1.119,1.117l-1.12,1.118c-0.391,0.394-0.391,1.025,0,1.414c0.196,0.195,0.452,0.293,0.708,0.293c0.256,0,0.511-0.098,0.707-0.293l1.12-1.119l1.121,1.121c0.195,0.195,0.451,0.293,0.707,0.293s0.513-0.098,0.708-0.293c0.389-0.391,0.389-1.022,0-1.416L9.334,23.953z",
+    "raph_hail": "M25.372,6.912c-0.093-3.925-3.302-7.078-7.248-7.08c-2.638,0.002-4.942,1.412-6.208,3.518c-0.595-0.327-1.28-0.518-2.01-0.518C7.627,2.834,5.773,4.639,5.69,6.898c-2.393,0.786-4.125,3.025-4.127,5.686c0,3.312,2.687,6,6,6v-0.002h15.875c3.312,0,6-2.688,6-6C29.434,9.944,27.732,7.715,25.372,6.912zM23.436,16.584H7.562c-2.209-0.006-3.997-1.793-4.001-4c-0.002-1.983,1.45-3.619,3.35-3.933c0.265-0.043,0.502-0.19,0.657-0.414C7.723,8.015,7.78,7.74,7.731,7.475C7.703,7.326,7.686,7.187,7.686,7.051c0.004-1.225,0.995-2.217,2.22-2.219c0.647,0,1.217,0.278,1.633,0.731c0.233,0.257,0.587,0.375,0.927,0.31c0.342-0.066,0.626-0.308,0.748-0.631c0.749-1.992,2.662-3.412,4.911-3.41c2.898,0.004,5.244,2.351,5.251,5.25c0,0.16-0.009,0.325-0.026,0.496c-0.05,0.518,0.305,0.984,0.814,1.079c1.859,0.345,3.273,1.966,3.271,3.923C27.43,14.791,25.645,16.578,23.436,16.584zM11.503,23.709c-0.784-0.002-1.418-0.636-1.418-1.416c0-0.785,0.634-1.416,1.418-1.418c0.78,0.002,1.413,0.633,1.416,1.418C12.917,23.073,12.284,23.707,11.503,23.709zM19.002,23.709c-0.783-0.002-1.418-0.636-1.418-1.416c0-0.785,0.635-1.416,1.418-1.418c0.779,0.002,1.414,0.633,1.414,1.418C20.417,23.073,19.784,23.707,19.002,23.709zM7.503,28.771c-0.783-0.002-1.417-0.637-1.417-1.418s0.634-1.414,1.417-1.416c0.78,0.002,1.415,0.635,1.415,1.416C8.917,28.135,8.284,28.77,7.503,28.771zM15.001,28.771c-0.782-0.002-1.417-0.637-1.417-1.418s0.634-1.414,1.417-1.416c0.78,0.002,1.413,0.635,1.415,1.416C16.415,28.135,15.784,28.77,15.001,28.771zM22.5,28.771c-0.782-0.002-1.416-0.634-1.416-1.416c0-0.785,0.634-1.418,1.416-1.42c0.781,0.002,1.414,0.635,1.418,1.42C23.915,28.138,23.282,28.77,22.5,28.771z",
+    "raph_rain": "M25.371,7.306c-0.092-3.924-3.301-7.077-7.248-7.079c-2.638,0.001-4.942,1.412-6.208,3.517c-0.595-0.327-1.28-0.517-2.01-0.517C7.626,3.229,5.772,5.033,5.689,7.293c-2.393,0.786-4.125,3.025-4.127,5.686c0,3.312,2.687,6,6,6v-0.002h15.874c3.312,0,6-2.688,6-6C29.434,10.34,27.732,8.11,25.371,7.306zM23.436,16.979H7.561c-2.209-0.006-3.997-1.792-4.001-4.001c-0.002-1.982,1.45-3.618,3.35-3.931c0.265-0.043,0.502-0.191,0.657-0.414C7.722,8.41,7.779,8.136,7.73,7.87C7.702,7.722,7.685,7.582,7.685,7.446C7.689,6.221,8.68,5.23,9.905,5.228c0.647,0,1.217,0.278,1.633,0.731c0.233,0.257,0.587,0.375,0.927,0.309c0.342-0.066,0.626-0.307,0.748-0.63c0.749-1.992,2.662-3.412,4.911-3.41c2.899,0.004,5.244,2.35,5.251,5.249c0,0.161-0.009,0.326-0.027,0.497c-0.049,0.517,0.305,0.984,0.815,1.079c1.86,0.344,3.274,1.966,3.271,3.923C27.43,15.186,25.645,16.973,23.436,16.979zM9.029,26.682c0-1.115,0.021-5.425,0.021-5.432c0.002-0.409-0.247-0.779-0.628-0.932c-0.38-0.152-0.815-0.059-1.099,0.24c-0.006,0.008-1.037,1.098-2.081,2.342c-0.523,0.627-1.048,1.287-1.463,1.896c-0.399,0.648-0.753,1.066-0.811,1.885C2.971,28.355,4.324,29.711,6,29.714C7.672,29.71,9.029,28.354,9.029,26.682zM4.971,26.727c0.091-0.349,1.081-1.719,1.993-2.764c0.025-0.029,0.051-0.061,0.076-0.089c-0.005,1.124-0.01,2.294-0.01,2.808c0,0.567-0.461,1.028-1.029,1.03C5.447,27.71,4.997,27.273,4.971,26.727zM16.425,26.682c0-1.115,0.021-5.424,0.021-5.43c0.002-0.41-0.247-0.779-0.628-0.934c-0.381-0.152-0.814-0.058-1.1,0.242c-0.006,0.008-1.035,1.094-2.08,2.342c-0.522,0.623-1.047,1.285-1.463,1.894c-0.399,0.649-0.753,1.068-0.809,1.888c0,1.672,1.354,3.028,3.029,3.028C15.068,29.711,16.425,28.354,16.425,26.682zM12.365,26.729c0.092-0.349,1.081-1.72,1.993-2.765c0.025-0.03,0.05-0.06,0.075-0.089c-0.005,1.123-0.011,2.294-0.011,2.807c-0.002,0.568-0.461,1.027-1.028,1.029C12.84,27.709,12.392,27.273,12.365,26.729zM23.271,20.317c-0.38-0.153-0.816-0.06-1.099,0.24c-0.009,0.008-1.037,1.097-2.08,2.342c-0.523,0.625-1.049,1.285-1.462,1.896c-0.402,0.649-0.754,1.067-0.812,1.886c0,1.672,1.354,3.029,3.03,3.029c1.673,0,3.027-1.357,3.027-3.029c0-1.115,0.022-5.425,0.022-5.431C23.9,20.84,23.651,20.47,23.271,20.317zM21.879,26.681c-0.004,0.568-0.463,1.027-1.031,1.029c-0.553-0.002-1.002-0.438-1.028-0.982c0.092-0.349,1.081-1.72,1.993-2.765c0.025-0.028,0.05-0.059,0.074-0.088C21.883,24.998,21.879,26.167,21.879,26.681z",
+    
+    "raph_alarm": "M15.499,5.125c-0.553,0-0.999,0.448-0.999,1v9.221L8.454,17.99c-0.506,0.222-0.736,0.812-0.514,1.318c0.164,0.375,0.53,0.599,0.915,0.599c0.134,0,0.271-0.027,0.401-0.085l6.626-2.898c0.005-0.002,0.009-0.004,0.013-0.006l0.004-0.002c0.015-0.006,0.023-0.02,0.037-0.025c0.104-0.052,0.201-0.113,0.279-0.195c0.034-0.034,0.053-0.078,0.079-0.117c0.048-0.064,0.101-0.127,0.13-0.204c0.024-0.06,0.026-0.125,0.038-0.189c0.013-0.064,0.038-0.121,0.038-0.186V6.124C16.5,5.573,16.052,5.125,15.499,5.125zM31.125,6.832c0-3.832-3.105-6.938-6.938-6.938c-1.938,0-3.686,0.796-4.94,2.077C18.05,1.652,16.798,1.466,15.5,1.466c-1.334,0-2.62,0.195-3.847,0.531c-1.259-1.295-3.016-2.103-4.965-2.103C2.856-0.106-0.25,3-0.25,6.832c0,1.845,0.726,3.517,1.901,4.76c-0.443,1.39-0.685,2.87-0.685,4.408c0,8.027,6.507,14.534,14.534,14.534c8.027,0,14.534-6.507,14.534-14.534c0-1.575-0.259-3.087-0.722-4.508C30.436,10.261,31.125,8.629,31.125,6.832zM15.5,27.533C9.139,27.533,3.966,22.359,3.966,16c0-6.36,5.173-11.534,11.534-11.534c6.361,0,11.533,5.173,11.533,11.534C27.033,22.361,21.859,27.533,15.5,27.533z",
+    "raph_clock": "M16,1.466C7.973,1.466,1.466,7.973,1.466,16c0,8.027,6.507,14.534,14.534,14.534c8.027,0,14.534-6.507,14.534-14.534C30.534,7.973,24.027,1.466,16,1.466zM16,27.533C9.639,27.533,4.466,22.359,4.466,16C4.466,9.64,9.639,4.466,16,4.466c6.361,0,11.533,5.173,11.533,11.534C27.533,22.361,22.359,27.533,16,27.533zM15.999,5.125c-0.553,0-0.999,0.448-0.999,1v9.221L8.954,17.99c-0.506,0.222-0.736,0.812-0.514,1.318c0.164,0.375,0.53,0.599,0.915,0.599c0.134,0,0.271-0.027,0.401-0.085l6.626-2.898c0.005-0.002,0.009-0.004,0.013-0.006l0.004-0.002c0.015-0.006,0.023-0.02,0.037-0.025c0.104-0.052,0.201-0.113,0.279-0.195c0.034-0.034,0.053-0.078,0.079-0.117c0.048-0.064,0.101-0.127,0.13-0.204c0.024-0.06,0.026-0.125,0.038-0.189C16.975,16.121,17,16.064,17,15.999V6.124C17,5.573,16.552,5.125,15.999,5.125z",
+    "raph_globeAlt2": "M16,1.466C7.973,1.466,1.466,7.973,1.466,16c0,8.027,6.507,14.534,14.534,14.534c8.027,0,14.534-6.507,14.534-14.534C30.534,7.973,24.027,1.466,16,1.466zM8.251,7.48c0.122,0.055,0.255,0.104,0.28,0.137C8.57,7.668,8.621,7.823,8.557,7.861C8.492,7.9,8.39,7.887,8.376,7.771c-0.013-0.115-0.026-0.128-0.18-0.18c-0.022-0.007-0.035-0.01-0.051-0.015C8.18,7.544,8.216,7.512,8.251,7.48zM7.733,7.974c0.031,0.087,0.113,0.125,0,0.17C7.673,8.168,7.611,8.172,7.559,8.165C7.617,8.102,7.672,8.035,7.733,7.974zM16,27.533C9.639,27.533,4.466,22.36,4.466,16c0-0.085,0.011-0.168,0.013-0.254c0.004-0.003,0.008-0.006,0.012-0.009c0.129-0.102,0.283-0.359,0.334-0.45c0.052-0.089,0.181-0.154,0.116-0.256c-0.059-0.096-0.292-0.23-0.407-0.261c0.01-0.099,0.032-0.195,0.045-0.294c0.063,0.077,0.137,0.17,0.208,0.194c0.115,0.038,0.501,0.052,0.566,0.052c0.063,0,0.334,0.014,0.386-0.064c0.051-0.077,0.09-0.077,0.154-0.077c0.064,0,0.18,0.231,0.271,0.257c0.089,0.026,0.257,0.013,0.244,0.181c-0.012,0.166,0.077,0.309,0.167,0.321c0.09,0.013,0.296-0.194,0.296-0.194s0,0.322-0.012,0.438C6.846,15.698,7,16.124,7,16.124s0.193,0.397,0.244,0.488c0.052,0.09,0.27,0.36,0.27,0.476c0,0.117,0.026,0.297,0.104,0.297s0.155-0.206,0.244-0.335c0.091-0.128,0.117-0.31,0.155-0.438c0.039-0.129,0.039-0.36,0.039-0.45c0-0.091,0.076-0.168,0.257-0.245c0.181-0.077,0.309-0.296,0.463-0.412c0.155-0.116,0.142-0.309,0.452-0.309c0.308,0,0.282,0,0.36-0.078c0.077-0.077,0.154-0.128,0.192,0.013c0.039,0.142,0.257,0.347,0.296,0.399c0.039,0.052,0.116,0.193,0.104,0.348c-0.013,0.153,0.012,0.334,0.077,0.334c0.064,0,0.193-0.219,0.193-0.219s0.283-0.192,0.27,0.014c-0.014,0.205,0.025,0.425,0.025,0.552c0,0.13,0.232,0.438,0.232,0.362c0-0.079,0.103-0.296,0.103-0.413c0-0.114,0.064-0.063,0.231,0.051c0.167,0.116,0.283,0.349,0.283,0.349s0.168,0.154,0.193,0.219c0.026,0.064,0.206-0.025,0.244-0.104c0.039-0.076,0.065-0.115,0.167-0.141c0.104-0.026,0.231-0.026,0.271-0.168c0.039-0.142,0.154-0.308,0-0.502c-0.154-0.193-0.232-0.321-0.347-0.412c-0.117-0.09-0.206-0.322-0.206-0.322s0.244-0.218,0.321-0.296c0.079-0.077,0.193-0.025,0.207,0.064c0.013,0.091-0.115,0.168-0.141,0.361c-0.026,0.192,0.154,0.257,0.206,0.192c0.051-0.065,0.18-0.219,0.18-0.257c0-0.039-0.089-0.026-0.102-0.167c-0.013-0.142,0.166-0.245,0.23-0.207c0.066,0.039,0.477-0.051,0.67-0.154s0.308-0.322,0.425-0.412c0.116-0.089,0.515-0.386,0.489-0.527c-0.026-0.142,0.012-0.334-0.09-0.515c-0.103-0.18-0.232-0.295-0.283-0.373c-0.051-0.077,0.219-0.09,0.347-0.206c0.129-0.116,0-0.219-0.064-0.206c-0.064,0.013-0.232,0.052-0.296,0.039c-0.064-0.013-0.103-0.077-0.206-0.155c-0.102-0.077,0.026-0.192,0.091-0.179c0.064,0.013,0.23-0.129,0.308-0.193c0.077-0.064,0.193-0.115,0.154-0.051c-0.038,0.064-0.128,0.296-0.026,0.309c0.104,0.013,0.348-0.193,0.388-0.18c0.038,0.013,0.102,0.18,0.064,0.257c-0.039,0.077-0.039,0.206,0.013,0.193c0.051-0.013,0.154-0.129,0.18-0.09c0.027,0.039,0.154,0.116,0.09,0.257c-0.063,0.142-0.193,0.193-0.039,0.284c0.154,0.089,0.206,0.012,0.322-0.052c0.115-0.064,0.193-0.347,0.128-0.438c-0.064-0.09-0.218-0.27-0.218-0.334c0-0.064,0.257-0.064,0.257-0.167s0.09-0.18,0.18-0.219c0.091-0.039,0.206-0.206,0.244-0.154c0.039,0.052,0.271,0.116,0.334,0.039c0.064-0.077,0.4-0.36,0.605-0.515c0.206-0.154,0.283-0.334,0.336-0.515c0.051-0.18,0.128-0.296,0.102-0.437v0c0.077,0.18,0.09,0.309,0.077,0.45c-0.013,0.142,0,0.438,0.026,0.476c0.025,0.039,0.129,0.128,0.192,0.103c0.064-0.025-0.025-0.283-0.025-0.334c0-0.052,0.09-0.129,0.142-0.142c0.052-0.013,0-0.231-0.065-0.322c-0.063-0.09-0.154-0.142-0.102-0.154c0.051-0.013,0.115-0.116,0.077-0.142c-0.039-0.025-0.014-0.116-0.103-0.09c-0.065,0.019-0.241-0.015-0.235,0.095c-0.037-0.11-0.116-0.183-0.216-0.172c-0.116,0.013-0.181,0.077-0.296,0.077s-0.025-0.18-0.077-0.18c-0.051,0-0.168,0.167-0.231,0.077c-0.064-0.09,0.18-0.206,0.373-0.27c0.192-0.064,0.514-0.438,0.644-0.451c0.128-0.013,0.45,0.026,0.733,0.013c0.283-0.013,0.373-0.129,0.463-0.064s0.283,0.142,0.399,0.129c0.116-0.014,0.064,0,0.244-0.129c0.18-0.129,0.348-0.193,0.438-0.296c0.09-0.103,0.335-0.18,0.348-0.077c0.014,0.103-0.026,0.206,0.077,0.206s0.258-0.103,0.386-0.154c0.129-0.051,0.231-0.116,0.231-0.116s-0.527,0.36-0.655,0.438c-0.129,0.077-0.438,0.129-0.567,0.283c-0.128,0.155-0.205,0.206-0.192,0.374c0.014,0.167,0.231,0.386,0.128,0.54c-0.103,0.154-0.141,0.373-0.141,0.373s0.154-0.219,0.373-0.36s0.348-0.334,0.425-0.412s0.309-0.091,0.309-0.181s0.064-0.206,0.104-0.309c0.038-0.103-0.077-0.078,0-0.206c0.076-0.129,0.064-0.232,0.45-0.232s0.257,0.026,0.566,0.013c0.309-0.013,0.424-0.167,0.72-0.245c0.296-0.077,0.527-0.128,0.618-0.089c0.09,0.038,0.232,0.012,0.141-0.078c-0.089-0.09-0.295-0.219-0.193-0.245c0.104-0.026,0.207-0.039,0.246-0.142c0.039-0.103-0.142-0.283-0.039-0.386c0.104-0.103-0.077-0.231-0.207-0.257c-0.128-0.025-0.63,0.026-0.731-0.025c-0.104-0.052-0.271-0.116-0.322-0.078c-0.052,0.039-0.168,0.245-0.168,0.245s-0.09,0.025-0.168-0.09c-0.076-0.116-0.5-0.103-0.629-0.103s-0.271,0.025-0.413,0.039c-0.141,0.013-0.219,0.052-0.322-0.039c-0.102-0.09-0.243-0.129-0.296-0.167c-0.051-0.039-0.334-0.039-0.553-0.012c-0.218,0.025-0.438,0.025-0.438,0.025s-0.104-0.039-0.257-0.129c-0.154-0.09-0.309-0.154-0.361-0.154c-0.051,0-0.449,0.064-0.539,0c-0.091-0.064-0.181-0.103-0.245-0.103s-0.115-0.103-0.038-0.103s0.437-0.103,0.437-0.103s-0.103-0.142-0.231-0.142c-0.128,0-0.359-0.064-0.424-0.064s-0.014,0.064-0.142,0.039c-0.13-0.026-0.258-0.078-0.335-0.026c-0.076,0.051-0.258,0.128-0.064,0.18c0.193,0.052,0.373,0,0.425,0.078c0.052,0.077,0,0.115,0,0.167s-0.103,0.193-0.167,0.219c-0.064,0.025-0.143-0.039-0.27,0.025c-0.129,0.064-0.451,0.013-0.49,0.052c-0.038,0.039-0.115-0.103-0.18-0.077c-0.064,0.025-0.232,0.193-0.322,0.18c-0.089-0.013-0.206-0.103-0.206-0.206s-0.038-0.232-0.077-0.258c-0.038-0.025-0.322-0.039-0.425-0.025c-0.103,0.013-0.424,0.038-0.477,0.09c-0.052,0.052-0.193,0.09-0.283,0.09s-0.167-0.09-0.36-0.116c-0.192-0.026-0.617-0.039-0.669-0.026s-0.218-0.025-0.155-0.077c0.065-0.051,0.257-0.219,0.143-0.295c-0.117-0.078-0.375-0.078-0.489-0.09c-0.117-0.013-0.232-0.039-0.413-0.013c-0.181,0.026-0.219,0.116-0.296,0.039c-0.077-0.077,0.193,0.039-0.077-0.077c-0.27-0.116-0.399-0.103-0.477-0.064c-0.077,0.039,0.013,0.025-0.192,0.103c-0.206,0.078-0.322,0.116-0.374,0.129c-0.051,0.012-0.372-0.065-0.411-0.091c-0.038-0.025-0.181,0.013-0.309,0.064S9.895,7.025,9.767,7C9.638,6.973,9.432,6.973,9.303,7.025C9.174,7.076,9.084,7.076,8.956,7.166c-0.13,0.09-0.373,0.142-0.373,0.142S8.522,7.305,8.448,7.301C10.474,5.541,13.111,4.466,16,4.466c6.361,0,11.534,5.173,11.534,11.534S22.36,27.533,16,27.533zM14.888,19.92c0,0,0.207-0.026,0.207-0.117c0-0.089-0.207-0.205-0.282-0.102c-0.078,0.102-0.219,0.205-0.207,0.296C14.625,20.138,14.888,19.92,14.888,19.92zM14.875,17.023c-0.181,0.233-0.167,0.182-0.296,0.128c-0.128-0.05-0.334,0.116-0.296,0.182c0.039,0.064,0.322-0.014,0.386,0.102c0.065,0.116,0.065,0.129,0.193,0.104c0.128-0.026,0.257-0.205,0.219-0.295C15.043,17.151,14.875,17.023,14.875,17.023zM14.837,18.245c-0.051,0-0.412,0.064-0.451,0.079c-0.039,0.013-0.27-0.025-0.27-0.025c-0.09,0.089-0.026,0.179,0.116,0.166s0.438-0.052,0.502-0.052C14.799,18.413,14.888,18.245,14.837,18.245zM14.284,14.668c-0.19,0.03-0.308,0.438-0.155,0.425C14.284,15.081,14.451,14.643,14.284,14.668zM14.734,16.959c-0.052-0.064-0.181-0.271-0.323-0.219c-0.042,0.017-0.153,0.245-0.012,0.245C14.541,16.985,14.786,17.023,14.734,16.959zM14.85,16.805c0.232-0.013,0.167-0.245-0.013-0.257C14.786,16.544,14.618,16.818,14.85,16.805zM17.591,18.928c-0.193-0.039-0.244-0.102-0.45-0.205c-0.207-0.103-0.67-0.103-0.682-0.039c-0.014,0.064,0,0-0.155-0.05c-0.153-0.054-0.271,0-0.309-0.091c-0.038-0.091-0.128-0.117-0.244-0.002c-0.097,0.097-0.142,0.104,0.078,0.143c0.218,0.039,0.283,0.039,0.192,0.141c-0.09,0.104-0.154,0.233-0.077,0.244c0.077,0.015,0.309-0.05,0.334,0c0.026,0.054-0.051,0.064,0.207,0.105c0.258,0.037,0.309,0.128,0.359,0.178c0.051,0.052,0.206,0.22,0.104,0.22c-0.104,0-0.219,0.128-0.142,0.143c0.077,0.013,0.309-0.039,0.321,0c0.014,0.037,0.143,0.283,0.271,0.271c0.129-0.013,0.206-0.244,0.27-0.31c0.065-0.064,0.322-0.104,0.349,0.012c0.026,0.116,0.104,0.233,0.257,0.311c0.154,0.076,0.335,0.154,0.348,0.089c0.013-0.064-0.077-0.309-0.181-0.346c-0.103-0.041-0.282-0.259-0.282-0.348c0-0.091-0.155-0.117-0.232-0.182C17.849,19.147,17.784,18.967,17.591,18.928zM8.042,17.023c-0.084,0.037-0.155,0.476,0,0.527c0.154,0.052,0.244-0.205,0.193-0.271C8.183,17.218,8.158,16.973,8.042,17.023zM15.429,18.117c-0.118-0.05-0.335,0.424-0.181,0.463C15.403,18.62,15.518,18.156,15.429,18.117zM15.687,13.703c0.077,0,0.18-0.051,0.18-0.193c0-0.142,0.18,0,0.27-0.013s0.141-0.103,0.18-0.206c0.005-0.013,0.008-0.021,0.009-0.027c-0.003,0.024-0.001,0.093,0.095,0.117c0.154,0.038,0.205-0.064,0.205-0.103s0.283-0.103,0.336-0.142c0.051-0.038,0.258-0.103,0.27-0.154c0.013-0.051,0-0.348,0.064-0.373c0.064-0.026,0.154-0.026,0.052-0.206c-0.104-0.181-0.104-0.348-0.232-0.271c-0.095,0.057-0.038,0.284-0.115,0.438s-0.142,0.296-0.193,0.296s-0.321,0.103-0.399,0.18c-0.076,0.077-0.45-0.064-0.501,0c-0.052,0.064-0.154,0.141-0.219,0.193c-0.065,0.051-0.245,0.013-0.207,0.167C15.518,13.562,15.609,13.703,15.687,13.703zM17.449,12.056c0.18-0.013,0.348-0.064,0.348-0.064s0.271,0.013,0.232-0.116c-0.04-0.128-0.322-0.141-0.375-0.128c-0.051,0.013-0.142-0.142-0.244-0.116c-0.096,0.023-0.128,0.155-0.128,0.193c0,0.039-0.36,0.115-0.245,0.219C17.153,12.146,17.27,12.069,17.449,12.056zM13.91,19.058c0.104,0.064,0.296-0.219,0.349-0.13c0.051,0.091-0.013,0.13,0.076,0.246c0.091,0.114,0.258,0.102,0.258,0.102s-0.013-0.309-0.155-0.387c-0.142-0.077-0.232-0.166-0.064-0.141c0.167,0.026,0.257-0.039,0.219-0.114c-0.039-0.078-0.283-0.039-0.361-0.026s-0.193-0.052-0.193-0.052c-0.077,0.024-0.063,0.089-0.09,0.219C13.923,18.902,13.807,18.992,13.91,19.058zM20.924,21.618c-0.231-0.052-0.077,0.039,0,0.154c0.077,0.116,0.232,0.176,0.258,0.05C21.193,21.759,21.155,21.67,20.924,21.618zM21.915,24.744c-0.077,0.064,0,0.091-0.219,0.22c-0.22,0.13-0.49,0.271-0.541,0.386c-0.052,0.116,0.051,0.181,0.258,0.192c0.206,0.013,0.154,0.053,0.296-0.103s0.271-0.244,0.438-0.373c0.168-0.128,0.168-0.322,0.168-0.322s-0.181-0.178-0.193-0.141C22.1,24.665,21.992,24.681,21.915,24.744zM18.504,21.618c0.014-0.116-0.219-0.116-0.334-0.207c-0.116-0.089-0.128-0.359-0.193-0.515c-0.064-0.153-0.192-0.257-0.322-0.397c-0.128-0.143-0.192-0.465-0.23-0.438c-0.039,0.025-0.154,0.399-0.064,0.515c0.09,0.116-0.039,0.348-0.103,0.503c-0.065,0.153-0.22-0.026-0.349-0.104c-0.129-0.078-0.308-0.128-0.398-0.219c-0.09-0.091,0.155-0.335,0.091-0.426c-0.065-0.09-0.412-0.013-0.45-0.013c-0.039,0-0.116-0.128-0.194-0.128c-0.077,0-0.064,0.258-0.064,0.258s-0.078-0.091-0.193-0.207c-0.117-0.115,0.012,0.077-0.103,0.193c-0.117,0.117-0.079,0.078-0.129,0.206c-0.051,0.129-0.167,0.077-0.283-0.052c-0.116-0.128-0.179-0.037-0.258,0c-0.077,0.039-0.141,0.259-0.18,0.309c-0.039,0.052-0.309,0.117-0.374,0.182c-0.064,0.062-0.09,0.27-0.09,0.322c0,0.05-0.271,0.023-0.361,0.089c-0.09,0.064-0.23,0.025-0.321,0.025c-0.09,0-0.399,0.244-0.502,0.308c-0.103,0.066-0.103,0.298-0.051,0.362c0.051,0.063,0.154,0.219,0.09,0.244c-0.064,0.026-0.104,0.206,0.051,0.359c0.154,0.155,0.103,0.194,0.115,0.271c0.014,0.077,0.078,0.104,0.181,0.232c0.102,0.128-0.181,0.231-0.219,0.31c-0.039,0.076,0.091,0.192,0.167,0.257c0.077,0.063,0.271,0.026,0.386-0.013c0.117-0.039,0.245-0.143,0.321-0.155c0.079-0.013,0.438-0.026,0.438-0.026s0.129-0.192,0.219-0.296c0.089-0.102,0.372-0.013,0.372-0.013s0.117-0.076,0.426-0.141c0.309-0.065,0.179,0.064,0.296,0.104c0.115,0.037,0.27,0.062,0.359,0.128c0.09,0.064,0,0.218-0.012,0.283c-0.014,0.064,0.219,0.038,0.23-0.026c0.014-0.064,0.077-0.128,0.207-0.205c0.128-0.078,0.025,0.114,0.076,0.231c0.052,0.116,0.129-0.157,0.129-0.026c0,0.039,0.039,0.078,0.051,0.116c0.014,0.039,0.181,0.052,0.181,0.18c0,0.13,0,0.207,0.039,0.231c0.038,0.026,0.244,0,0.335,0.155c0.089,0.154,0.154,0.013,0.205-0.052c0.052-0.064,0.231,0.026,0.283,0.078c0.052,0.05,0.193-0.104,0.387-0.155c0.192-0.051,0.167-0.039,0.219-0.115c0.051-0.078,0.09-0.283,0.205-0.438c0.115-0.153,0.271-0.424,0.271-0.631c0-0.206-0.014-0.682-0.155-0.899C18.761,21.953,18.492,21.733,18.504,21.618zM18.029,24.77c-0.065-0.013-0.207-0.062-0.207-0.062c-0.142,0.141,0.142,0.141,0.104,0.283c-0.039,0.141,0.193,0.089,0.257,0.064c0.063-0.027,0.22-0.323,0.193-0.399C18.351,24.577,18.093,24.783,18.029,24.77zM22.803,24.178c-0.052,0-0.077,0.064-0.192,0c-0.117-0.063-0.091-0.037-0.168-0.167c-0.077-0.127-0.091-0.296-0.219-0.23c-0.051,0.025,0,0.168,0.051,0.218c0.053,0.052,0.077,0.231,0.064,0.283c-0.012,0.052-0.231,0.116-0.129,0.18c0.104,0.064,0.297,0,0.271,0.078c-0.025,0.077-0.129,0.179-0.013,0.205c0.115,0.025,0.154-0.089,0.207-0.178c0.051-0.093,0.089-0.169,0.179-0.221C22.944,24.294,22.854,24.178,22.803,24.178zM22.815,21.18c0.168,0.064,0.464-0.231,0.347-0.27C23.047,20.871,22.815,21.18,22.815,21.18zM13.923,19.906c-0.029,0.115,0.193,0.167,0.206,0.039C14.141,19.816,13.949,19.803,13.923,19.906zM14.27,16.47c-0.064,0.065-0.257,0.193-0.283,0.31c-0.025,0.115,0.309-0.182,0.399-0.296c0.091-0.117,0.27-0.052,0.308-0.117c0.04-0.063,0.04-0.063,0.04-0.063s-0.142-0.025-0.257-0.063c-0.117-0.039-0.258,0.102-0.193-0.104c0.064-0.206,0.257-0.167,0.219-0.322c-0.039-0.154-0.168-0.193-0.207-0.193c-0.09,0,0.013,0.141-0.116,0.231c-0.128,0.09-0.271,0.128-0.193,0.283C14.064,16.29,14.334,16.405,14.27,16.47zM13.254,19.751c0.013-0.076-0.142-0.192-0.206-0.192c-0.065,0-0.386-0.077-0.386-0.077c-0.058,0.023-0.135,0.045-0.158,0.077c-0.007-0.011-0.022-0.024-0.049-0.039c-0.142-0.075-0.309,0-0.361-0.102c-0.05-0.104-0.127-0.104-0.179-0.039c-0.094,0.117,0.025,0.206,0.063,0.231c0.038,0.024,0.181,0.052,0.309,0.039c0.08-0.008,0.181-0.027,0.21-0.059c0.004,0.014,0.016,0.027,0.035,0.044c0.103,0.092,0.167,0.13,0.321,0.116C13.009,19.74,13.241,19.829,13.254,19.751zM12.881,18.992c0.065,0,0.193,0,0.283,0.026c0.09,0.025,0.386,0.05,0.373-0.064c-0.013-0.115-0.038-0.297,0.089-0.411c0.13-0.117,0.257-0.18,0.193-0.348c-0.063-0.167-0.193-0.271-0.103-0.349c0.09-0.076,0.192-0.102,0.192-0.166c0-0.065-0.217,0.18-0.244-0.246c-0.005-0.091-0.206,0.025-0.219,0.116c-0.012,0.091,0.142,0.167-0.103,0.167c-0.245,0-0.257,0.194-0.309,0.232c-0.052,0.039-0.103,0.051-0.207,0.076c-0.102,0.026-0.127,0.13-0.153,0.194c-0.025,0.063-0.206-0.116-0.257-0.064c-0.051,0.052-0.013,0.296,0.077,0.501C12.585,18.863,12.816,18.992,12.881,18.992zM11.979,18.928c0.065-0.077,0.038-0.192-0.063-0.18c-0.103,0.013-0.193-0.168-0.36-0.283c-0.168-0.114-0.296-0.194-0.451-0.36c-0.154-0.167-0.347-0.271-0.45-0.359c-0.104-0.091-0.257-0.13-0.322-0.116c-0.159,0.032,0.231,0.309,0.271,0.346c0.039,0.041,0.387,0.335,0.387,0.478s0.231,0.476,0.296,0.527c0.064,0.052,0.385,0.244,0.437,0.348c0.052,0.103,0.167,0.13,0.167-0.013C11.89,19.174,11.916,19.006,11.979,18.928zM11.002,17.474c0.064,0.232,0.193,0.464,0.244,0.555c0.052,0.089,0.271,0.217,0.348,0.281c0.077,0.064,0.192-0.024,0.143-0.102c-0.052-0.078-0.155-0.192-0.167-0.283c-0.013-0.091-0.078-0.233-0.181-0.387c-0.102-0.153-0.192-0.192-0.257-0.295c-0.064-0.104-0.296-0.297-0.296-0.297c-0.102,0.013-0.102,0.205-0.051,0.271C10.834,17.28,10.938,17.243,11.002,17.474z",
+    "raph_globeAlt": "M16,1.466C7.973,1.466,1.466,7.973,1.466,16c0,8.027,6.507,14.534,14.534,14.534c8.027,0,14.534-6.507,14.534-14.534C30.534,7.973,24.027,1.466,16,1.466zM27.436,17.39c0.001,0.002,0.004,0.002,0.005,0.004c-0.022,0.187-0.054,0.37-0.085,0.554c-0.015-0.012-0.034-0.025-0.047-0.036c-0.103-0.09-0.254-0.128-0.318-0.115c-0.157,0.032,0.229,0.305,0.267,0.342c0.009,0.009,0.031,0.03,0.062,0.058c-1.029,5.312-5.709,9.338-11.319,9.338c-4.123,0-7.736-2.18-9.776-5.441c0.123-0.016,0.24-0.016,0.28-0.076c0.051-0.077,0.102-0.241,0.178-0.331c0.077-0.089,0.165-0.229,0.127-0.292c-0.039-0.064,0.101-0.344,0.088-0.419c-0.013-0.076-0.127-0.256,0.064-0.407s0.394-0.382,0.407-0.444c0.012-0.063,0.166-0.331,0.152-0.458c-0.012-0.127-0.152-0.28-0.24-0.318c-0.09-0.037-0.28-0.05-0.356-0.151c-0.077-0.103-0.292-0.203-0.368-0.178c-0.076,0.025-0.204,0.05-0.305-0.015c-0.102-0.062-0.267-0.139-0.33-0.189c-0.065-0.05-0.229-0.088-0.305-0.088c-0.077,0-0.065-0.052-0.178,0.101c-0.114,0.153,0,0.204-0.204,0.177c-0.204-0.023,0.025-0.036,0.141-0.189c0.113-0.152-0.013-0.242-0.141-0.203c-0.126,0.038-0.038,0.115-0.241,0.153c-0.203,0.036-0.203-0.09-0.076-0.115s0.355-0.139,0.355-0.19c0-0.051-0.025-0.191-0.127-0.191s-0.077-0.126-0.229-0.291c-0.092-0.101-0.196-0.164-0.299-0.204c-0.09-0.579-0.15-1.167-0.15-1.771c0-2.844,1.039-5.446,2.751-7.458c0.024-0.02,0.048-0.034,0.069-0.036c0.084-0.009,0.31-0.025,0.51-0.059c0.202-0.034,0.418-0.161,0.489-0.153c0.069,0.008,0.241,0.008,0.186-0.042C8.417,8.2,8.339,8.082,8.223,8.082S8.215,7.896,8.246,7.896c0.03,0,0.186,0.025,0.178,0.11C8.417,8.091,8.471,8.2,8.625,8.167c0.156-0.034,0.132-0.162,0.102-0.195C8.695,7.938,8.672,7.853,8.642,7.794c-0.031-0.06-0.023-0.136,0.14-0.153C8.944,7.625,9.168,7.708,9.16,7.573s0-0.28,0.046-0.356C9.253,7.142,9.354,7.09,9.299,7.065C9.246,7.04,9.176,7.099,9.121,6.972c-0.054-0.127,0.047-0.22,0.108-0.271c0.02-0.015,0.067-0.06,0.124-0.112C11.234,5.257,13.524,4.466,16,4.466c3.213,0,6.122,1.323,8.214,3.45c-0.008,0.022-0.01,0.052-0.031,0.056c-0.077,0.013-0.166,0.063-0.179-0.051c-0.013-0.114-0.013-0.331-0.102-0.203c-0.089,0.127-0.127,0.127-0.127,0.191c0,0.063,0.076,0.127,0.051,0.241C23.8,8.264,23.8,8.341,23.84,8.341c0.036,0,0.126-0.115,0.239-0.141c0.116-0.025,0.319-0.088,0.332,0.026c0.013,0.115,0.139,0.152,0.013,0.203c-0.128,0.051-0.267,0.026-0.293-0.051c-0.025-0.077-0.114-0.077-0.203-0.013c-0.088,0.063-0.279,0.292-0.279,0.292s-0.306,0.139-0.343,0.114c-0.04-0.025,0.101-0.165,0.203-0.228c0.102-0.064,0.178-0.204,0.14-0.242c-0.038-0.038-0.088-0.279-0.063-0.343c0.025-0.063,0.139-0.152,0.013-0.216c-0.127-0.063-0.217-0.14-0.318-0.178s-0.216,0.152-0.305,0.204c-0.089,0.051-0.076,0.114-0.191,0.127c-0.114,0.013-0.189,0.165,0,0.254c0.191,0.089,0.255,0.152,0.204,0.204c-0.051,0.051-0.267-0.025-0.267-0.025s-0.165-0.076-0.268-0.076c-0.101,0-0.229-0.063-0.33-0.076c-0.102-0.013-0.306-0.013-0.355,0.038c-0.051,0.051-0.179,0.203-0.28,0.152c-0.101-0.051-0.101-0.102-0.241-0.051c-0.14,0.051-0.279-0.038-0.355,0.038c-0.077,0.076-0.013,0.076-0.255,0c-0.241-0.076-0.189,0.051-0.419,0.089s-0.368-0.038-0.432,0.038c-0.064,0.077-0.153,0.217-0.19,0.127c-0.038-0.088,0.126-0.241,0.062-0.292c-0.062-0.051-0.33-0.025-0.367,0.013c-0.039,0.038-0.014,0.178,0.011,0.229c0.026,0.05,0.064,0.254-0.011,0.216c-0.077-0.038-0.064-0.166-0.141-0.152c-0.076,0.013-0.165,0.051-0.203,0.077c-0.038,0.025-0.191,0.025-0.229,0.076c-0.037,0.051,0.014,0.191-0.051,0.203c-0.063,0.013-0.114,0.064-0.254-0.025c-0.14-0.089-0.14-0.038-0.178-0.012c-0.038,0.025-0.216,0.127-0.229,0.012c-0.013-0.114,0.025-0.152-0.089-0.229c-0.115-0.076-0.026-0.076,0.127-0.025c0.152,0.05,0.343,0.075,0.622-0.013c0.28-0.089,0.395-0.127,0.28-0.178c-0.115-0.05-0.229-0.101-0.406-0.127c-0.179-0.025-0.42-0.025-0.7-0.127c-0.279-0.102-0.343-0.14-0.457-0.165c-0.115-0.026-0.813-0.14-1.132-0.089c-0.317,0.051-1.193,0.28-1.245,0.318s-0.128,0.19-0.292,0.318c-0.165,0.127-0.47,0.419-0.712,0.47c-0.241,0.051-0.521,0.254-0.521,0.305c0,0.051,0.101,0.242,0.076,0.28c-0.025,0.038,0.05,0.229,0.191,0.28c0.139,0.05,0.381,0.038,0.393-0.039c0.014-0.076,0.204-0.241,0.217-0.127c0.013,0.115,0.14,0.292,0.114,0.368c-0.025,0.077,0,0.153,0.09,0.14c0.088-0.012,0.559-0.114,0.559-0.114s0.153-0.064,0.127-0.166c-0.026-0.101,0.166-0.241,0.203-0.279c0.038-0.038,0.178-0.191,0.014-0.241c-0.167-0.051-0.293-0.064-0.115-0.216s0.292,0,0.521-0.229c0.229-0.229-0.051-0.292,0.191-0.305c0.241-0.013,0.496-0.025,0.444,0.051c-0.05,0.076-0.342,0.242-0.508,0.318c-0.166,0.077-0.14,0.216-0.076,0.292c0.063,0.076,0.09,0.254,0.204,0.229c0.113-0.025,0.254-0.114,0.38-0.101c0.128,0.012,0.383-0.013,0.42-0.013c0.039,0,0.216,0.178,0.114,0.203c-0.101,0.025-0.229,0.013-0.445,0.025c-0.215,0.013-0.456,0.013-0.456,0.051c0,0.039,0.292,0.127,0.19,0.191c-0.102,0.063-0.203-0.013-0.331-0.026c-0.127-0.012-0.203,0.166-0.241,0.267c-0.039,0.102,0.063,0.28-0.127,0.216c-0.191-0.063-0.331-0.063-0.381-0.038c-0.051,0.025-0.203,0.076-0.331,0.114c-0.126,0.038-0.076-0.063-0.242-0.063c-0.164,0-0.164,0-0.164,0l-0.103,0.013c0,0-0.101-0.063-0.114-0.165c-0.013-0.102,0.05-0.216-0.013-0.241c-0.064-0.026-0.292,0.012-0.33,0.088c-0.038,0.076-0.077,0.216-0.026,0.28c0.052,0.063,0.204,0.19,0.064,0.152c-0.14-0.038-0.317-0.051-0.419,0.026c-0.101,0.076-0.279,0.241-0.279,0.241s-0.318,0.025-0.318,0.102c0,0.077,0,0.178-0.114,0.191c-0.115,0.013-0.268,0.05-0.42,0.076c-0.153,0.025-0.139,0.088-0.317,0.102s-0.204,0.089-0.038,0.114c0.165,0.025,0.418,0.127,0.431,0.241c0.014,0.114-0.013,0.242-0.076,0.356c-0.043,0.079-0.305,0.026-0.458,0.026c-0.152,0-0.456-0.051-0.584,0c-0.127,0.051-0.102,0.305-0.064,0.419c0.039,0.114-0.012,0.178-0.063,0.216c-0.051,0.038-0.065,0.152,0,0.204c0.063,0.051,0.114,0.165,0.166,0.178c0.051,0.013,0.215-0.038,0.279,0.025c0.064,0.064,0.127,0.216,0.165,0.178c0.039-0.038,0.089-0.203,0.153-0.166c0.064,0.039,0.216-0.012,0.331-0.025s0.177-0.14,0.292-0.204c0.114-0.063,0.05-0.063,0.013-0.14c-0.038-0.076,0.114-0.165,0.204-0.254c0.088-0.089,0.253-0.013,0.292-0.115c0.038-0.102,0.051-0.279,0.151-0.267c0.103,0.013,0.243,0.076,0.331,0.076c0.089,0,0.279-0.14,0.332-0.165c0.05-0.025,0.241-0.013,0.267,0.102c0.025,0.114,0.241,0.254,0.292,0.279c0.051,0.025,0.381,0.127,0.433,0.165c0.05,0.038,0.126,0.153,0.152,0.254c0.025,0.102,0.114,0.102,0.128,0.013c0.012-0.089-0.065-0.254,0.025-0.242c0.088,0.013,0.191-0.026,0.191-0.026s-0.243-0.165-0.331-0.203c-0.088-0.038-0.255-0.114-0.331-0.241c-0.076-0.127-0.267-0.153-0.254-0.279c0.013-0.127,0.191-0.051,0.292,0.051c0.102,0.102,0.356,0.241,0.445,0.33c0.088,0.089,0.229,0.127,0.267,0.242c0.039,0.114,0.152,0.241,0.19,0.292c0.038,0.051,0.165,0.331,0.204,0.394c0.038,0.063,0.165-0.012,0.229-0.063c0.063-0.051,0.179-0.076,0.191-0.178c0.013-0.102-0.153-0.178-0.203-0.216c-0.051-0.038,0.127-0.076,0.191-0.127c0.063-0.05,0.177-0.14,0.228-0.063c0.051,0.077,0.026,0.381,0.051,0.432c0.025,0.051,0.279,0.127,0.331,0.191c0.05,0.063,0.267,0.089,0.304,0.051c0.039-0.038,0.242,0.026,0.294,0.038c0.049,0.013,0.202-0.025,0.304-0.05c0.103-0.025,0.204-0.102,0.191,0.063c-0.013,0.165-0.051,0.419-0.179,0.546c-0.127,0.127-0.076,0.191-0.202,0.191c-0.06,0-0.113,0-0.156,0.021c-0.041-0.065-0.098-0.117-0.175-0.097c-0.152,0.038-0.344,0.038-0.47,0.19c-0.128,0.153-0.178,0.165-0.204,0.114c-0.025-0.051,0.369-0.267,0.317-0.331c-0.05-0.063-0.355-0.038-0.521-0.038c-0.166,0-0.305-0.102-0.433-0.127c-0.126-0.025-0.292,0.127-0.418,0.254c-0.128,0.127-0.216,0.038-0.331,0.038c-0.115,0-0.331-0.165-0.331-0.165s-0.216-0.089-0.305-0.089c-0.088,0-0.267-0.165-0.318-0.165c-0.05,0-0.19-0.115-0.088-0.166c0.101-0.05,0.202,0.051,0.101-0.229c-0.101-0.279-0.33-0.216-0.419-0.178c-0.088,0.039-0.724,0.025-0.775,0.025c-0.051,0-0.419,0.127-0.533,0.178c-0.116,0.051-0.318,0.115-0.369,0.14c-0.051,0.025-0.318-0.051-0.433,0.013c-0.151,0.084-0.291,0.216-0.33,0.216c-0.038,0-0.153,0.089-0.229,0.28c-0.077,0.19,0.013,0.355-0.128,0.419c-0.139,0.063-0.394,0.204-0.495,0.305c-0.102,0.101-0.229,0.458-0.355,0.623c-0.127,0.165,0,0.317,0.025,0.419c0.025,0.101,0.114,0.292-0.025,0.471c-0.14,0.178-0.127,0.266-0.191,0.279c-0.063,0.013,0.063,0.063,0.088,0.19c0.025,0.128-0.114,0.255,0.128,0.369c0.241,0.113,0.355,0.217,0.418,0.367c0.064,0.153,0.382,0.407,0.382,0.407s0.229,0.205,0.344,0.293c0.114,0.089,0.152,0.038,0.177-0.05c0.025-0.09,0.178-0.104,0.355-0.104c0.178,0,0.305,0.04,0.483,0.014c0.178-0.025,0.356-0.141,0.42-0.166c0.063-0.025,0.279-0.164,0.443-0.063c0.166,0.103,0.141,0.241,0.23,0.332c0.088,0.088,0.24,0.037,0.355-0.051c0.114-0.09,0.064-0.052,0.203,0.025c0.14,0.075,0.204,0.151,0.077,0.267c-0.128,0.113-0.051,0.293-0.128,0.47c-0.076,0.178-0.063,0.203,0.077,0.278c0.14,0.076,0.394,0.548,0.47,0.638c0.077,0.088-0.025,0.342,0.064,0.495c0.089,0.151,0.178,0.254,0.077,0.331c-0.103,0.075-0.28,0.216-0.292,0.47s0.051,0.431,0.102,0.521s0.177,0.331,0.241,0.419c0.064,0.089,0.14,0.305,0.152,0.445c0.013,0.14-0.024,0.306,0.039,0.381c0.064,0.076,0.102,0.191,0.216,0.292c0.115,0.103,0.152,0.318,0.152,0.318s0.039,0.089,0.051,0.229c0.012,0.14,0.025,0.228,0.152,0.292c0.126,0.063,0.215,0.076,0.28,0.013c0.063-0.063,0.381-0.077,0.546-0.063c0.165,0.013,0.355-0.075,0.521-0.19s0.407-0.419,0.496-0.508c0.089-0.09,0.292-0.255,0.268-0.356c-0.025-0.101-0.077-0.203,0.024-0.254c0.102-0.052,0.344-0.152,0.356-0.229c0.013-0.077-0.09-0.395-0.115-0.457c-0.024-0.064,0.064-0.18,0.165-0.306c0.103-0.128,0.421-0.216,0.471-0.267c0.051-0.053,0.191-0.267,0.217-0.433c0.024-0.167-0.051-0.369,0-0.457c0.05-0.09,0.013-0.165-0.103-0.268c-0.114-0.102-0.089-0.407-0.127-0.457c-0.037-0.051-0.013-0.319,0.063-0.345c0.076-0.023,0.242-0.279,0.344-0.393c0.102-0.114,0.394-0.47,0.534-0.496c0.139-0.025,0.355-0.229,0.368-0.343c0.013-0.115,0.38-0.547,0.394-0.635c0.013-0.09,0.166-0.42,0.102-0.497c-0.062-0.076-0.559,0.115-0.622,0.141c-0.064,0.025-0.241,0.127-0.446,0.113c-0.202-0.013-0.114-0.177-0.127-0.254c-0.012-0.076-0.228-0.368-0.279-0.381c-0.051-0.012-0.203-0.166-0.267-0.317c-0.063-0.153-0.152-0.343-0.254-0.458c-0.102-0.114-0.165-0.38-0.268-0.559c-0.101-0.178-0.189-0.407-0.279-0.572c-0.021-0.041-0.045-0.079-0.067-0.117c0.118-0.029,0.289-0.082,0.31-0.009c0.024,0.088,0.165,0.279,0.19,0.419s0.165,0.089,0.178,0.216c0.014,0.128,0.14,0.433,0.19,0.47c0.052,0.038,0.28,0.242,0.318,0.318c0.038,0.076,0.089,0.178,0.127,0.369c0.038,0.19,0.076,0.444,0.179,0.482c0.102,0.038,0.444-0.064,0.508-0.102s0.482-0.242,0.635-0.255c0.153-0.012,0.179-0.115,0.368-0.152c0.191-0.038,0.331-0.177,0.458-0.28c0.127-0.101,0.28-0.355,0.33-0.444c0.052-0.088,0.179-0.152,0.115-0.253c-0.063-0.103-0.331-0.254-0.433-0.268c-0.102-0.012-0.089-0.178-0.152-0.178s-0.051,0.088-0.178,0.153c-0.127,0.063-0.255,0.19-0.344,0.165s0.026-0.089-0.113-0.203s-0.192-0.14-0.192-0.228c0-0.089-0.278-0.255-0.304-0.382c-0.026-0.127,0.19-0.305,0.254-0.19c0.063,0.114,0.115,0.292,0.279,0.368c0.165,0.076,0.318,0.204,0.395,0.229c0.076,0.025,0.267-0.14,0.33-0.114c0.063,0.024,0.191,0.253,0.306,0.292c0.113,0.038,0.495,0.051,0.559,0.051s0.33,0.013,0.381-0.063c0.051-0.076,0.089-0.076,0.153-0.076c0.062,0,0.177,0.229,0.267,0.254c0.089,0.025,0.254,0.013,0.241,0.179c-0.012,0.164,0.076,0.305,0.165,0.317c0.09,0.012,0.293-0.191,0.293-0.191s0,0.318-0.012,0.433c-0.014,0.113,0.139,0.534,0.139,0.534s0.19,0.393,0.241,0.482s0.267,0.355,0.267,0.47c0,0.115,0.025,0.293,0.103,0.293c0.076,0,0.152-0.203,0.24-0.331c0.091-0.126,0.116-0.305,0.153-0.432c0.038-0.127,0.038-0.356,0.038-0.444c0-0.09,0.075-0.166,0.255-0.242c0.178-0.076,0.304-0.292,0.456-0.407c0.153-0.115,0.141-0.305,0.446-0.305c0.305,0,0.278,0,0.355-0.077c0.076-0.076,0.151-0.127,0.19,0.013c0.038,0.14,0.254,0.343,0.292,0.394c0.038,0.052,0.114,0.191,0.103,0.344c-0.013,0.152,0.012,0.33,0.075,0.33s0.191-0.216,0.191-0.216s0.279-0.189,0.267,0.013c-0.014,0.203,0.025,0.419,0.025,0.545c0,0.053,0.042,0.135,0.088,0.21c-0.005,0.059-0.004,0.119-0.009,0.178C27.388,17.153,27.387,17.327,27.436,17.39zM20.382,12.064c0.076,0.05,0.102,0.127,0.152,0.203c0.052,0.076,0.14,0.05,0.203,0.114c0.063,0.064-0.178,0.14-0.075,0.216c0.101,0.077,0.151,0.381,0.165,0.458c0.013,0.076-0.279,0.114-0.369,0.102c-0.089-0.013-0.354-0.102-0.445-0.127c-0.089-0.026-0.139-0.343-0.025-0.331c0.116,0.013,0.141-0.025,0.267-0.139c0.128-0.115-0.189-0.166-0.278-0.191c-0.089-0.025-0.268-0.305-0.331-0.394c-0.062-0.089-0.014-0.228,0.141-0.331c0.076-0.051,0.279,0.063,0.381,0c0.101-0.063,0.203-0.14,0.241-0.165c0.039-0.025,0.293,0.038,0.33,0.114c0.039,0.076,0.191,0.191,0.141,0.229c-0.052,0.038-0.281,0.076-0.356,0c-0.075-0.077-0.255,0.012-0.268,0.152C20.242,12.115,20.307,12.013,20.382,12.064zM16.875,12.28c-0.077-0.025,0.025-0.178,0.102-0.229c0.075-0.051,0.164-0.178,0.241-0.305c0.076-0.127,0.178-0.14,0.241-0.127c0.063,0.013,0.203,0.241,0.241,0.318c0.038,0.076,0.165-0.026,0.217-0.051c0.05-0.025,0.127-0.102,0.14-0.165s0.127-0.102,0.254-0.102s0.013,0.102-0.076,0.127c-0.09,0.025-0.038,0.077,0.113,0.127c0.153,0.051,0.293,0.191,0.459,0.279c0.165,0.089,0.19,0.267,0.088,0.292c-0.101,0.025-0.406,0.051-0.521,0.038c-0.114-0.013-0.254-0.127-0.419-0.153c-0.165-0.025-0.369-0.013-0.433,0.077s-0.292,0.05-0.395,0.05c-0.102,0-0.228,0.127-0.253,0.077C16.875,12.534,16.951,12.306,16.875,12.28zM17.307,9.458c0.063-0.178,0.419,0.038,0.355,0.127C17.599,9.675,17.264,9.579,17.307,9.458zM17.802,18.584c0.063,0.102-0.14,0.431-0.254,0.407c-0.113-0.027-0.076-0.318-0.038-0.382C17.548,18.545,17.769,18.529,17.802,18.584zM13.189,12.674c0.025-0.051-0.039-0.153-0.127-0.013C13.032,12.71,13.164,12.725,13.189,12.674zM20.813,8.035c0.141,0.076,0.339,0.107,0.433,0.013c0.076-0.076,0.013-0.204-0.05-0.216c-0.064-0.013-0.104-0.115,0.062-0.203c0.165-0.089,0.343-0.204,0.534-0.229c0.19-0.025,0.622-0.038,0.774,0c0.152,0.039,0.382-0.166,0.445-0.254s-0.203-0.152-0.279-0.051c-0.077,0.102-0.444,0.076-0.521,0.051c-0.076-0.025-0.686,0.102-0.812,0.102c-0.128,0-0.179,0.152-0.356,0.229c-0.179,0.076-0.42,0.191-0.509,0.229c-0.088,0.038-0.177,0.19-0.101,0.216C20.509,7.947,20.674,7.959,20.813,8.035zM14.142,12.674c0.064-0.089-0.051-0.217-0.114-0.217c-0.12,0-0.178,0.191-0.103,0.254C14.002,12.776,14.078,12.763,14.142,12.674zM14.714,13.017c0.064,0.025,0.114,0.102,0.165,0.114c0.052,0.013,0.217,0,0.167-0.127s-0.167-0.127-0.204-0.127c-0.038,0-0.203-0.038-0.267,0C14.528,12.905,14.65,12.992,14.714,13.017zM11.308,10.958c0.101,0.013,0.217-0.063,0.305-0.101c0.088-0.038,0.216-0.114,0.216-0.229c0-0.114-0.025-0.216-0.077-0.267c-0.051-0.051-0.14-0.064-0.216-0.051c-0.115,0.02-0.127,0.14-0.203,0.14c-0.076,0-0.165,0.025-0.14,0.114s0.077,0.152,0,0.19C11.117,10.793,11.205,10.946,11.308,10.958zM11.931,10.412c0.127,0.051,0.394,0.102,0.292,0.153c-0.102,0.051-0.28,0.19-0.305,0.267s0.216,0.153,0.216,0.153s-0.077,0.089-0.013,0.114c0.063,0.025,0.102-0.089,0.203-0.089c0.101,0,0.304,0.063,0.406,0.063c0.103,0,0.267-0.14,0.254-0.229c-0.013-0.089-0.14-0.229-0.254-0.28c-0.113-0.051-0.241-0.28-0.317-0.331c-0.076-0.051,0.076-0.178-0.013-0.267c-0.09-0.089-0.153-0.076-0.255-0.14c-0.102-0.063-0.191,0.013-0.254,0.089c-0.063,0.076-0.14-0.013-0.217,0.012c-0.102,0.035-0.063,0.166-0.012,0.229C11.714,10.221,11.804,10.361,11.931,10.412zM24.729,17.198c-0.083,0.037-0.153,0.47,0,0.521c0.152,0.052,0.241-0.202,0.191-0.267C24.868,17.39,24.843,17.147,24.729,17.198zM20.114,20.464c-0.159-0.045-0.177,0.166-0.304,0.306c-0.128,0.141-0.267,0.254-0.317,0.241c-0.052-0.013-0.331,0.089-0.242,0.279c0.089,0.191,0.076,0.382-0.013,0.472c-0.089,0.088,0.076,0.342,0.052,0.482c-0.026,0.139,0.037,0.229,0.215,0.229s0.242-0.064,0.318-0.229c0.076-0.166,0.088-0.331,0.164-0.47c0.077-0.141,0.141-0.434,0.179-0.51c0.038-0.075,0.114-0.316,0.102-0.457C20.254,20.669,20.204,20.489,20.114,20.464zM10.391,8.802c-0.069-0.06-0.229-0.102-0.306-0.11c-0.076-0.008-0.152,0.06-0.321,0.06c-0.168,0-0.279,0.067-0.347,0C9.349,8.684,9.068,8.65,9.042,8.692C9.008,8.749,8.941,8.751,9.008,8.87c0.069,0.118,0.12,0.186,0.179,0.178s0.262-0.017,0.288,0.051C9.5,9.167,9.569,9.226,9.712,9.184c0.145-0.042,0.263-0.068,0.296-0.119c0.033-0.051,0.263-0.059,0.263-0.059S10.458,8.861,10.391,8.802z",
+    "raph_globe": "M16,1.466C7.973,1.466,1.466,7.973,1.466,16c0,8.027,6.507,14.534,14.534,14.534c8.027,0,14.534-6.507,14.534-14.534C30.534,7.973,24.027,1.466,16,1.466zM19.158,23.269c-0.079,0.064-0.183,0.13-0.105,0.207c0.078,0.078-0.09,0.131-0.09,0.17s0.104,0.246,0.052,0.336c-0.052,0.092-0.091,0.223-0.13,0.301c-0.039,0.077-0.131,0.155-0.104,0.272c0.025,0.116-0.104,0.077-0.104,0.194c0,0.116,0.116,0.065,0.09,0.208c-0.025,0.144-0.09,0.183-0.09,0.285c0,0.104,0.064,0.247,0.064,0.286s-0.064,0.17-0.155,0.272c-0.092,0.104-0.155,0.17-0.144,0.233c0.014,0.065,0.104,0.144,0.091,0.184c-0.013,0.037-0.129,0.168-0.116,0.259c0.014,0.09,0.129,0.053,0.155,0.116c0.026,0.065-0.155,0.118-0.078,0.183c0.078,0.064,0.183,0.051,0.156,0.208c-0.019,0.112,0.064,0.163,0.126,0.198c-0.891,0.221-1.818,0.352-2.777,0.352C9.639,27.533,4.466,22.36,4.466,16c0-2.073,0.557-4.015,1.518-5.697c0.079-0.042,0.137-0.069,0.171-0.062c0.065,0.013,0.079,0.104,0.183,0.13c0.104,0.026,0.195-0.078,0.26-0.117c0.064-0.039,0.116-0.195,0.051-0.182c-0.065,0.013-0.234,0-0.234,0s0.183-0.104,0.183-0.169s0.025-0.169,0.129-0.208C6.83,9.655,6.83,9.681,6.765,9.837C6.7,9.993,6.896,9.928,6.973,9.863s0.13-0.013,0.272-0.104c0.143-0.091,0.143-0.143,0.221-0.143c0.078,0,0.221,0.143,0.299,0.091c0.077-0.052,0.299,0.065,0.429,0.065c0.129,0,0.545,0.169,0.624,0.169c0.078,0,0.312,0.09,0.325,0.259c0.013,0.169,0.09,0.156,0.168,0.156s0.26,0.065,0.26,0.13c0,0.065-0.052,0.325,0.078,0.39c0.129,0.064,0.247,0.169,0.299,0.143c0.052-0.026,0-0.233-0.064-0.26c-0.065-0.026-0.027-0.117-0.052-0.169c-0.026-0.051,0.078-0.051,0.117,0.039c0.039,0.091,0.143,0.26,0.208,0.26c0.064,0,0.208,0.156,0.168,0.247c-0.039,0.091,0.039,0.221,0.156,0.221c0.116,0,0.26,0.182,0.312,0.195c0.052,0.013,0.117,0.078,0.117,0.117c0,0.04,0.065,0.26,0.065,0.351c0,0.09-0.04,0.454-0.053,0.597s0.104,0.39,0.234,0.52c0.129,0.13,0.246,0.377,0.324,0.429c0.079,0.052,0.13,0.195,0.247,0.182c0.117-0.013,0.195,0.078,0.299,0.26c0.104,0.182,0.208,0.48,0.286,0.506c0.078,0.026,0.208,0.117,0.142,0.182c-0.064,0.064-0.168,0.208-0.051,0.208c0.117,0,0.156-0.065,0.247,0.053c0.09,0.116,0.208,0.181,0.194,0.26c-0.013,0.077,0.104,0.103,0.156,0.116c0.052,0.013,0.169,0.247,0.286,0.143c0.117-0.104-0.155-0.259-0.234-0.326c-0.078-0.064,0-0.207-0.182-0.35c-0.182-0.143-0.156-0.247-0.286-0.351c-0.13-0.104-0.233-0.195-0.104-0.286c0.13-0.091,0.143,0.091,0.195,0.208c0.052,0.116,0.324,0.351,0.441,0.454c0.117,0.104,0.326,0.468,0.39,0.468s0.247,0.208,0.247,0.208s0.103,0.168,0.064,0.22c-0.039,0.052,0.053,0.247,0.144,0.299c0.09,0.052,0.455,0.22,0.507,0.247c0.052,0.027,0.155,0.221,0.299,0.221c0.142,0,0.247,0.014,0.286,0.053c0.039,0.038,0.155,0.194,0.234,0.104c0.078-0.092,0.09-0.131,0.208-0.131c0.117,0,0.168,0.091,0.233,0.156c0.065,0.065,0.247,0.235,0.338,0.222c0.091-0.013,0.208,0.104,0.273,0.064s0.169,0.025,0.22,0.052c0.054,0.026,0.234,0.118,0.222,0.272c-0.013,0.157,0.103,0.195,0.182,0.234c0.078,0.039,0.182,0.13,0.248,0.195c0.064,0.063,0.206,0.077,0.246,0.116c0.039,0.039,0.065,0.117,0.182,0.052c0.116-0.064,0.092-0.181,0.092-0.181s0.129-0.026,0.194,0.026c0.064,0.05,0.104,0.22,0.144,0.246c0.038,0.026,0.115,0.221,0.063,0.362c-0.051,0.145-0.038,0.286-0.091,0.286c-0.052,0-0.116,0.17-0.195,0.209c-0.076,0.039-0.285,0.221-0.272,0.286c0.013,0.063,0.131,0.258,0.104,0.35c-0.025,0.091-0.194,0.195-0.154,0.338c0.038,0.144,0.312,0.183,0.323,0.312c0.014,0.131,0.209,0.417,0.235,0.546c0.025,0.13,0.246,0.272,0.246,0.453c0,0.184,0.312,0.3,0.377,0.312c0.063,0.013,0.182,0.131,0.272,0.17s0.169,0.116,0.233,0.221s0.053,0.261,0.053,0.299c0,0.039-0.039,0.44-0.078,0.674C19.145,23.021,19.235,23.203,19.158,23.269zM10.766,11.188c0.039,0.013,0.117,0.091,0.156,0.091c0.04,0,0.234,0.156,0.286,0.208c0.053,0.052,0.053,0.195-0.013,0.208s-0.104-0.143-0.117-0.208c-0.013-0.065-0.143-0.065-0.208-0.104C10.805,11.344,10.66,11.152,10.766,11.188zM27.51,16.41c-0.144,0.182-0.13,0.272-0.195,0.286c-0.064,0.013,0.065,0.065,0.09,0.194c0.022,0.112-0.065,0.224,0.063,0.327c-0.486,4.619-3.71,8.434-8.016,9.787c-0.007-0.011-0.019-0.025-0.021-0.034c-0.027-0.078-0.027-0.233,0.064-0.285c0.091-0.053,0.312-0.233,0.363-0.272c0.052-0.04,0.13-0.221,0.091-0.247c-0.038-0.026-0.232,0-0.26-0.039c-0.026-0.039-0.026-0.092,0.104-0.182c0.13-0.091,0.195-0.222,0.247-0.26c0.052-0.039,0.155-0.117,0.195-0.209c0.038-0.09-0.041-0.039-0.118-0.039s-0.117-0.142-0.117-0.207s0.195,0.026,0.339,0.052c0.143,0.024,0.077-0.065,0.064-0.142c-0.013-0.078,0.026-0.209,0.105-0.17c0.076,0.039,0.479-0.013,0.531-0.026c0.052-0.013,0.194-0.246,0.246-0.312c0.053-0.065,0.064-0.129,0-0.168c-0.065-0.04-0.143-0.184-0.168-0.221c-0.026-0.041-0.039-0.274-0.013-0.34c0.025-0.063,0,0.377,0.181,0.43c0.183,0.052,0.286,0.078,0.455-0.078c0.169-0.155,0.298-0.26,0.312-0.363c0.013-0.104,0.052-0.209,0.117-0.246c0.065-0.039,0.104,0.103,0.182-0.065c0.078-0.17,0.156-0.157,0.234-0.299c0.077-0.144-0.13-0.325,0.024-0.43c0.157-0.103,0.43-0.233,0.43-0.233s0.078-0.039,0.234-0.078c0.155-0.038,0.324-0.014,0.376-0.09c0.052-0.079,0.104-0.247,0.182-0.338c0.079-0.092,0.169-0.234,0.13-0.299c-0.039-0.065,0.104-0.352,0.091-0.429c-0.013-0.078-0.13-0.261,0.065-0.416s0.402-0.391,0.416-0.454c0.012-0.065,0.169-0.338,0.154-0.469c-0.012-0.129-0.154-0.285-0.245-0.325c-0.092-0.037-0.286-0.05-0.364-0.154s-0.299-0.208-0.377-0.182c-0.077,0.026-0.208,0.051-0.312-0.015c-0.104-0.063-0.272-0.143-0.337-0.194c-0.066-0.051-0.234-0.09-0.312-0.09s-0.065-0.053-0.182,0.103c-0.117,0.157,0,0.209-0.208,0.182c-0.209-0.024,0.025-0.038,0.144-0.194c0.115-0.155-0.014-0.247-0.144-0.207c-0.13,0.039-0.039,0.117-0.247,0.156c-0.207,0.038-0.207-0.092-0.077-0.117c0.13-0.026,0.363-0.143,0.363-0.194c0-0.053-0.026-0.196-0.13-0.196s-0.078-0.129-0.233-0.297c-0.156-0.17-0.351-0.274-0.508-0.249c-0.154,0.026-0.272,0.065-0.35-0.076c-0.078-0.144-0.169-0.17-0.222-0.247c-0.051-0.078-0.182,0-0.221-0.039s-0.039-0.039-0.039-0.039s-0.169,0.039-0.077-0.078c0.09-0.117,0.129-0.338,0.09-0.325c-0.038,0.013-0.104,0.196-0.168,0.183c-0.064-0.013-0.014-0.04-0.144-0.117c-0.13-0.078-0.337-0.013-0.337,0.052c0,0.065-0.065,0.117-0.065,0.117s-0.039-0.038-0.078-0.117c-0.039-0.078-0.221-0.091-0.312-0.013c-0.09,0.078-0.142-0.196-0.207-0.196s-0.194,0.065-0.26,0.184c-0.064,0.116-0.038,0.285-0.092,0.272c-0.05-0.013-0.063-0.233-0.05-0.312c0.012-0.079,0.155-0.208,0.05-0.234c-0.103-0.026-0.259,0.13-0.323,0.143c-0.065,0.013-0.195,0.104-0.273,0.209c-0.077,0.103-0.116,0.168-0.195,0.207c-0.077,0.039-0.193,0-0.167-0.039c0.025-0.039-0.222-0.181-0.261-0.13c-0.04,0.052-0.155,0.091-0.272,0.144c-0.117,0.052-0.222-0.065-0.247-0.117s-0.079-0.064-0.091-0.234c-0.013-0.168,0.027-0.351,0.065-0.454c0.038-0.104-0.195-0.312-0.286-0.3c-0.091,0.015-0.182,0.105-0.272,0.091c-0.092-0.012-0.052-0.038-0.195-0.038c-0.143,0-0.026-0.025,0-0.143c0.025-0.116-0.052-0.273,0.092-0.377c0.142-0.104,0.091-0.351,0-0.363c-0.092-0.014-0.261,0.039-0.377,0.026c-0.116-0.014-0.208,0.091-0.169,0.207c0.039,0.117-0.065,0.195-0.104,0.183c-0.039-0.013-0.09-0.078-0.234,0.026c-0.142,0.103-0.194,0.064-0.337-0.052c-0.143-0.118-0.299-0.234-0.325-0.416c-0.026-0.182-0.04-0.364,0.013-0.468c0.051-0.104,0.051-0.285-0.026-0.312c-0.078-0.025,0.09-0.155,0.181-0.181c0.092-0.026,0.234-0.143,0.26-0.195c0.026-0.052,0.156-0.04,0.298-0.04c0.143,0,0.169,0,0.312,0.078c0.143,0.078,0.169-0.039,0.169-0.078c0-0.039,0.052-0.117,0.208-0.104c0.156,0.013,0.376-0.052,0.416-0.013s0.116,0.195,0.194,0.143c0.079-0.051,0.104-0.143,0.131,0.014c0.025,0.155,0.09,0.39,0.208,0.429c0.116,0.039,0.052,0.194,0.168,0.207c0.115,0.013,0.17-0.246,0.131-0.337c-0.04-0.09-0.118-0.363-0.183-0.428c-0.064-0.065-0.064-0.234,0.064-0.286c0.13-0.052,0.442-0.312,0.532-0.389c0.092-0.079,0.338-0.144,0.261-0.248c-0.078-0.104-0.104-0.168-0.104-0.247s0.078-0.052,0.117,0s0.194-0.078,0.155-0.143c-0.038-0.064-0.026-0.155,0.065-0.143c0.091,0.013,0.116-0.065,0.078-0.117c-0.039-0.052,0.091-0.117,0.182-0.091c0.092,0.026,0.325-0.013,0.364-0.065c0.038-0.052-0.078-0.104-0.078-0.208c0-0.104,0.155-0.195,0.247-0.208c0.091-0.013,0.207,0,0.221-0.039c0.012-0.039,0.143-0.143,0.155-0.052c0.014,0.091,0,0.247,0.104,0.247c0.104,0,0.232-0.117,0.272-0.129c0.038-0.013,0.286-0.065,0.338-0.078c0.052-0.013,0.363-0.039,0.325-0.13c-0.039-0.09-0.078-0.181-0.118-0.22c-0.039-0.039-0.077,0.013-0.13,0.078c-0.051,0.065-0.143,0.065-0.168,0.013c-0.026-0.051,0.012-0.207-0.078-0.156c-0.092,0.052-0.104,0.104-0.157,0.078c-0.052-0.026-0.103-0.117-0.103-0.117s0.129-0.064,0.038-0.182c-0.09-0.117-0.221-0.091-0.35-0.025c-0.13,0.064-0.118,0.051-0.273,0.09s-0.234,0.078-0.234,0.078s0.209-0.129,0.299-0.208c0.091-0.078,0.209-0.117,0.286-0.195c0.078-0.078,0.285,0.039,0.285,0.039s0.105-0.104,0.105-0.039s-0.027,0.234,0.051,0.234c0.079,0,0.299-0.104,0.21-0.131c-0.093-0.026,0.129,0,0.219-0.065c0.092-0.065,0.194-0.065,0.247-0.09c0.052-0.026,0.092-0.143,0.182-0.143c0.092,0,0.13,0.117,0,0.195s-0.143,0.273-0.208,0.325c-0.064,0.052-0.026,0.117,0.078,0.104c0.104-0.013,0.194,0.013,0.286-0.013s0.143,0.026,0.168,0.065c0.026,0.039,0.104-0.039,0.104-0.039s0.169-0.039,0.221,0.026c0.053,0.064,0.092-0.039,0.053-0.104c-0.039-0.064-0.092-0.129-0.13-0.208c-0.039-0.078-0.091-0.104-0.194-0.078c-0.104,0.026-0.13-0.026-0.195-0.064c-0.065-0.04-0.118,0.052-0.065-0.04c0.053-0.09,0.078-0.117,0.117-0.195c0.039-0.078,0.209-0.221,0.039-0.259c-0.169-0.04-0.222-0.065-0.247-0.143c-0.026-0.078-0.221-0.221-0.272-0.221c-0.053,0-0.233,0-0.247-0.065c-0.013-0.065-0.143-0.208-0.208-0.273c-0.064-0.065-0.312-0.351-0.351-0.377c-0.039-0.026-0.091-0.013-0.208,0.143c-0.116,0.157-0.22,0.183-0.312,0.144c-0.091-0.039-0.104-0.026-0.193-0.13c-0.093-0.104,0.09-0.117,0.051-0.182c-0.04-0.064-0.247-0.091-0.377-0.104c-0.13-0.013-0.221-0.156-0.416-0.169c-0.194-0.013-0.428,0.026-0.493,0.026c-0.064,0-0.064,0.091-0.09,0.234c-0.027,0.143,0.09,0.182-0.027,0.208c-0.116,0.026-0.169,0.039-0.052,0.091c0.117,0.052,0.273,0.26,0.273,0.26s0,0.117-0.092,0.182c-0.09,0.065-0.182,0.13-0.233,0.053c-0.053-0.079-0.195-0.065-0.155,0.013c0.038,0.078,0.116,0.117,0.116,0.195c0,0.077,0.117,0.272,0.039,0.337c-0.078,0.065-0.168,0.014-0.233,0.026s-0.131-0.104-0.078-0.13c0.051-0.026-0.014-0.221-0.014-0.221s-0.155,0.221-0.143,0.104c0.014-0.117-0.064-0.13-0.064-0.221c0-0.091-0.079-0.13-0.194-0.104c-0.118,0.026-0.26-0.04-0.482-0.079c-0.22-0.039-0.311-0.064-0.493-0.156c-0.182-0.091-0.247-0.026-0.338-0.013c-0.091,0.013-0.052-0.182-0.169-0.207c-0.116-0.027-0.181,0.025-0.207-0.144c-0.026-0.168,0.039-0.208,0.324-0.39c0.286-0.182,0.247-0.26,0.468-0.286c0.22-0.026,0.325,0.026,0.325-0.039s0.052-0.325,0.052-0.195S16.95,9.109,16.832,9.2c-0.116,0.091-0.052,0.104,0.04,0.104c0.091,0,0.259-0.091,0.259-0.091s0.208-0.091,0.26-0.013c0.053,0.078,0.053,0.156,0.144,0.156s0.285-0.104,0.116-0.195c-0.168-0.091-0.272-0.078-0.376-0.182s-0.078-0.065-0.195-0.039c-0.116,0.026-0.116-0.039-0.156-0.039s-0.104,0.026-0.13-0.026c-0.025-0.052,0.014-0.065,0.145-0.065c0.129,0,0.285,0.039,0.285,0.039s0.155-0.052,0.194-0.065c0.039-0.013,0.247-0.039,0.208-0.155c-0.04-0.117-0.169-0.117-0.208-0.156s0.078-0.09,0.143-0.117c0.065-0.026,0.247,0,0.247,0s0.117,0.013,0.117-0.039S17.897,8.2,17.976,8.239s0,0.156,0.117,0.13c0.116-0.026,0.143,0,0.207,0.039c0.065,0.039-0.013,0.195-0.077,0.221c-0.065,0.025-0.169,0.077-0.026,0.09c0.144,0.014,0.246,0.014,0.246,0.014s0.092-0.091,0.131-0.169c0.038-0.078,0.104-0.026,0.155,0c0.052,0.025,0.247,0.065,0.065,0.117c-0.183,0.052-0.221,0.117-0.26,0.182c-0.038,0.065-0.053,0.104-0.221,0.065c-0.17-0.039-0.26-0.026-0.299,0.039c-0.039,0.064-0.013,0.273,0.053,0.247c0.063-0.026,0.129-0.026,0.207-0.052c0.078-0.026,0.39,0.026,0.467,0.013c0.078-0.013,0.209,0.13,0.248,0.104c0.039-0.026,0.117,0.052,0.194,0.104c0.078,0.052,0.052-0.117,0.194-0.013c0.144,0.104,0.065,0.104,0.144,0.104c0.076,0,0.246,0.013,0.246,0.013s0.014-0.129,0.144-0.104c0.13,0.026,0.245,0.169,0.232,0.064c-0.012-0.103,0.013-0.181-0.09-0.259c-0.104-0.078-0.272-0.13-0.299-0.169c-0.026-0.039-0.052-0.091-0.013-0.117c0.039-0.025,0.221,0.013,0.324,0.079c0.104,0.065,0.195,0.13,0.273,0.078c0.077-0.052,0.17-0.078,0.208-0.117c0.038-0.04,0.13-0.156,0.13-0.156s-0.391-0.051-0.441-0.117c-0.053-0.065-0.235-0.156-0.287-0.156s-0.194,0.091-0.246-0.039s-0.052-0.286-0.105-0.299c-0.05-0.013-0.597-0.091-0.674-0.13c-0.078-0.039-0.39-0.13-0.507-0.195s-0.286-0.156-0.389-0.156c-0.104,0-0.533,0.052-0.611,0.039c-0.078-0.013-0.312,0.026-0.403,0.039c-0.091,0.013,0.117,0.182-0.077,0.221c-0.195,0.039-0.169,0.065-0.13-0.13c0.038-0.195-0.131-0.247-0.299-0.169c-0.169,0.078-0.442,0.13-0.377,0.221c0.065,0.091-0.012,0.157,0.117,0.247c0.13,0.091,0.183,0.117,0.35,0.104c0.17-0.013,0.339,0.025,0.339,0.025s0,0.157-0.064,0.182c-0.065,0.026-0.169,0.026-0.196,0.104c-0.025,0.078-0.155,0.117-0.155,0.078s0.065-0.169-0.026-0.234c-0.09-0.065-0.117-0.078-0.221-0.013c-0.104,0.065-0.116,0.091-0.169-0.013C16.053,8.291,15.897,8.2,15.897,8.2s-0.104-0.129-0.182-0.194c-0.077-0.065-0.22-0.052-0.234,0.013c-0.013,0.064,0.026,0.129,0.078,0.247c0.052,0.117,0.104,0.337,0.013,0.351c-0.091,0.013-0.104,0.026-0.195,0.052c-0.091,0.026-0.13-0.039-0.13-0.143s-0.04-0.195-0.013-0.234c0.026-0.039-0.104,0.027-0.234,0c-0.13-0.025-0.233,0.052-0.104,0.092c0.13,0.039,0.157,0.194,0.039,0.233c-0.117,0.039-0.559,0-0.702,0s-0.35,0.039-0.39-0.039c-0.039-0.078,0.118-0.129,0.208-0.129c0.091,0,0.363,0.012,0.467-0.13c0.104-0.143-0.13-0.169-0.233-0.169c-0.104,0-0.183-0.039-0.299-0.155c-0.118-0.117,0.078-0.195,0.052-0.247c-0.026-0.052-0.156-0.014-0.272-0.014c-0.117,0-0.299-0.09-0.299,0.014c0,0.104,0.143,0.402,0.052,0.337c-0.091-0.064-0.078-0.156-0.143-0.234c-0.065-0.078-0.168-0.065-0.299-0.052c-0.129,0.013-0.35,0.052-0.415,0.039c-0.064-0.013-0.013-0.013-0.156-0.078c-0.142-0.065-0.208-0.052-0.312-0.117C12.091,7.576,12.182,7.551,12,7.538c-0.181-0.013-0.168,0.09-0.35,0.065c-0.182-0.026-0.234,0.013-0.416,0c-0.182-0.013-0.272-0.026-0.299,0.065c-0.025,0.091-0.078,0.247-0.156,0.247c-0.077,0-0.169,0.091,0.078,0.104c0.247,0.013,0.105,0.129,0.325,0.117c0.221-0.013,0.416-0.013,0.468-0.117c0.052-0.104,0.091-0.104,0.117-0.065c0.025,0.039,0.22,0.272,0.22,0.272s0.131,0.104,0.183,0.13c0.051,0.026-0.052,0.143-0.156,0.078c-0.104-0.065-0.299-0.051-0.377-0.116c-0.078-0.065-0.429-0.065-0.52-0.052c-0.09,0.013-0.247-0.039-0.299-0.039c-0.051,0-0.221,0.13-0.221,0.13S10.532,8.252,10.494,8.2c-0.039-0.052-0.104,0.052-0.156,0.065c-0.052,0.013-0.208-0.104-0.364-0.052C9.818,8.265,9.87,8.317,9.649,8.304s-0.272-0.052-0.35-0.039C9.22,8.278,9.22,8.278,9.22,8.278S9.233,8.33,9.143,8.382C9.052,8.434,8.986,8.499,8.921,8.421C8.857,8.343,8.818,8.343,8.779,8.33c-0.04-0.013-0.118-0.078-0.286-0.04C8.324,8.33,8.064,8.239,8.013,8.239c-0.04,0-0.313-0.015-0.491-0.033c2.109-2.292,5.124-3.74,8.478-3.74c2.128,0,4.117,0.589,5.83,1.598c-0.117,0.072-0.319,0.06-0.388,0.023c-0.078-0.043-0.158-0.078-0.475-0.061c-0.317,0.018-0.665,0.122-0.595,0.226c0.072,0.104-0.142,0.165-0.197,0.113c-0.055-0.052-0.309,0.06-0.293,0.165c0.016,0.104-0.039,0.225-0.175,0.199c-0.134-0.027-0.229,0.06-0.237,0.146c-0.007,0.087-0.309,0.147-0.332,0.147c-0.024,0-0.412-0.008-0.27,0.095c0.097,0.069,0.15,0.027,0.27,0.052c0.119,0.026,0.214,0.217,0.277,0.243c0.062,0.026,0.15,0,0.189-0.052c0.04-0.052,0.095-0.234,0.095-0.234s0,0.173,0.097,0.208c0.095,0.035,0.331-0.026,0.395-0.017c0.064,0.008,0.437,0.061,0.538,0.112c0.104,0.052,0.356,0.087,0.428,0.199c0.071,0.113,0.08,0.503,0.119,0.546c0.04,0.043,0.174-0.139,0.205-0.182c0.031-0.044,0.198-0.018,0.254,0.042c0.056,0.061,0.182,0.208,0.175,0.269C21.9,8.365,21.877,8.459,21.83,8.425c-0.048-0.034-0.127-0.025-0.096-0.095c0.032-0.069,0.048-0.217-0.015-0.217c-0.064,0-0.119,0-0.119,0s-0.12-0.035-0.199,0.095s-0.015,0.26,0.04,0.26s0.184,0,0.184,0.034c0,0.035-0.136,0.139-0.128,0.2c0.009,0.061,0.11,0.268,0.144,0.312c0.031,0.043,0.197,0.086,0.244,0.096c0.049,0.008-0.111,0.017-0.07,0.077c0.04,0.061,0.102,0.208,0.189,0.243c0.087,0.035,0.333,0.19,0.363,0.26c0.032,0.069,0.222-0.052,0.262-0.061c0.04-0.008,0.032,0.182,0.143,0.191c0.11,0.008,0.15-0.018,0.245-0.096s0.072-0.182,0.079-0.26c0.009-0.078,0-0.138,0.104-0.113c0.104,0.026,0.158-0.018,0.15-0.104c-0.008-0.087-0.095-0.191,0.07-0.217c0.167-0.026,0.254-0.138,0.357-0.138c0.103,0,0.389,0.043,0.419,0c0.032-0.043,0.167-0.243,0.254-0.251c0.067-0.007,0.224-0.021,0.385-0.042c1.582,1.885,2.561,4.284,2.673,6.905c-0.118,0.159-0.012,0.305,0.021,0.408c0.001,0.03,0.005,0.058,0.005,0.088c0,0.136-0.016,0.269-0.021,0.404C27.512,16.406,27.512,16.408,27.51,16.41zM17.794,12.084c-0.064,0.013-0.169-0.052-0.169-0.143s-0.091,0.169-0.04,0.247c0.053,0.078-0.104,0.169-0.155,0.169s-0.091-0.116-0.078-0.233c0.014-0.117-0.077-0.221-0.221-0.208c-0.143,0.014-0.208,0.13-0.259,0.169c-0.053,0.039-0.053,0.259-0.04,0.312s0.013,0.235-0.116,0.221c-0.118-0.013-0.092-0.233-0.079-0.312c0.014-0.078-0.039-0.273,0.014-0.376c0.053-0.104,0.207-0.143,0.312-0.156s0.324,0.065,0.363,0.052c0.04-0.014,0.222-0.014,0.312,0C17.729,11.837,17.858,12.071,17.794,12.084zM18.027,12.123c0.04,0.026,0.311-0.039,0.364,0.026c0.051,0.065-0.054,0.078-0.183,0.13c-0.129,0.052-0.169,0.039-0.221,0.104s-0.221,0.09-0.299,0.168c-0.078,0.079-0.217,0.125-0.246,0.065c-0.04-0.078,0.013-0.039,0.025-0.078c0.013-0.039,0.245-0.129,0.245-0.129S17.988,12.097,18.027,12.123zM16.988,11.668c-0.038,0.013-0.182-0.026-0.3-0.026c-0.116,0-0.091-0.078-0.143-0.064c-0.051,0.013-0.168,0.039-0.247,0.078c-0.078,0.039-0.208,0.03-0.208-0.04c0-0.104,0.052-0.078,0.221-0.143c0.169-0.065,0.352-0.247,0.429-0.169c0.078,0.078,0.221,0.169,0.312,0.182C17.144,11.5,17.026,11.655,16.988,11.668zM15.659,7.637c-0.079,0.026-0.347,0.139-0.321,0.199c0.01,0.023,0.078,0.069,0.19,0.052c0.113-0.018,0.276-0.035,0.355-0.043c0.078-0.009,0.095-0.139,0.009-0.147C15.805,7.689,15.736,7.611,15.659,7.637zM14.698,7.741c-0.061,0.026-0.243-0.043-0.338,0.018c-0.061,0.038-0.026,0.164,0.07,0.172c0.095,0.009,0.259-0.06,0.276-0.008c0.018,0.052,0.078,0.286,0.234,0.208c0.156-0.078,0.147-0.147,0.19-0.156c0.043-0.009-0.008-0.199-0.078-0.243C14.983,7.689,14.758,7.715,14.698,7.741zM14.385,7.005c0.017,0.044-0.008,0.078,0.113,0.095c0.121,0.018,0.173,0.035,0.243,0.035c0.069,0,0.042-0.113-0.018-0.19c-0.061-0.078-0.043-0.069-0.199-0.113c-0.156-0.043-0.312-0.043-0.416-0.035c-0.104,0.009-0.217-0.017-0.243,0.104c-0.013,0.062,0.07,0.112,0.174,0.112S14.368,6.962,14.385,7.005zM14.611,7.481c0.043,0.095,0.043,0.051,0.165,0.061C14.896,7.551,14.991,7.421,15,7.378c0.009-0.044-0.061-0.13-0.225-0.113c-0.165,0.017-0.667-0.026-0.736,0.034c-0.066,0.058,0,0.233-0.026,0.251c-0.026,0.017,0.009,0.095,0.077,0.078c0.069-0.017,0.104-0.182,0.157-0.182C14.299,7.447,14.568,7.386,14.611,7.481zM12.982,7.126c0.052,0.043,0.183,0.008,0.173-0.035c-0.008-0.043,0.053-0.217-0.051-0.225C13,6.858,12.854,6.962,12.697,7.014c-0.101,0.033-0.078,0.13-0.009,0.13S12.931,7.083,12.982,7.126zM13.72,7.282c-0.087,0.043-0.114,0.069-0.191,0.052c-0.078-0.017-0.078-0.156-0.217-0.13c-0.138,0.026-0.164,0.104-0.207,0.139s-0.139,0.061-0.173,0.043c-0.034-0.017-0.234-0.129-0.234-0.129s-0.416-0.018-0.433-0.07c-0.017-0.052-0.086-0.138-0.277-0.121s-0.52,0.13-0.572,0.13c-0.052,0,0.062,0.104-0.009,0.104c-0.069,0-0.155-0.008-0.181,0.069c-0.018,0.053,0.078,0.052,0.189,0.052c0.112,0,0.295,0,0.347-0.026c0.052-0.026,0.312-0.087,0.303-0.009c-0.009,0.079,0.104,0.199,0.164,0.182c0.061-0.017,0.183-0.13,0.243-0.086c0.061,0.043,0.07,0.146,0.13,0.173c0.061,0.025,0.226,0.025,0.304,0c0.077-0.027,0.294-0.027,0.389-0.009c0.095,0.018,0.373,0.069,0.399,0.018c0.026-0.053,0.104-0.061,0.112-0.113s0.051-0.216,0.051-0.216S13.806,7.239,13.72,7.282zM18.105,16.239c-0.119,0.021-0.091,0.252,0.052,0.21C18.3,16.407,18.223,16.217,18.105,16.239zM19.235,15.929c-0.104-0.026-0.221,0-0.299,0.013c-0.078,0.013-0.299,0.208-0.299,0.208s0.143,0.026,0.233,0.026c0.092,0,0.144,0.051,0.221,0.09c0.078,0.04,0.221-0.052,0.272-0.052c0.053,0,0.118,0.156,0.131-0.013C19.508,16.032,19.339,15.955,19.235,15.929zM15.616,7.507c-0.043-0.104-0.259-0.139-0.304-0.035C15.274,7.563,15.659,7.611,15.616,7.507zM18.093,15.292c0.143-0.026,0.064-0.144-0.053-0.13C17.922,15.175,17.949,15.318,18.093,15.292zM19.82,16.095c-0.119,0.022-0.092,0.253,0.051,0.211C20.015,16.264,19.937,16.074,19.82,16.095zM18.247,15.708c-0.09,0.013-0.285-0.09-0.389-0.182c-0.104-0.091-0.299-0.091-0.377-0.091c-0.077,0-0.39,0.091-0.39,0.091c-0.013,0.13,0.117,0.091,0.273,0.091s0.429-0.026,0.479,0.039c0.053,0.064,0.286,0.168,0.352,0.221c0.064,0.052,0.272,0.065,0.285,0.013S18.338,15.695,18.247,15.708zM16.698,7.412c-0.13-0.009-0.295-0.009-0.399,0c-0.104,0.008-0.182-0.069-0.26-0.113c-0.077-0.043-0.251-0.182-0.354-0.199c-0.104-0.017-0.086-0.017-0.303-0.069c-0.11-0.027-0.294-0.061-0.294-0.086c0-0.026-0.052,0.121,0.043,0.165c0.095,0.043,0.251,0.121,0.363,0.164c0.114,0.043,0.329,0.052,0.399,0.139c0.069,0.086,0.303,0.156,0.303,0.156l0.277,0.026c0,0,0.191-0.043,0.39-0.026c0.199,0.017,0.493,0.043,0.659,0.035c0.163-0.008,0.189-0.061,0.208-0.095c0.016-0.035-0.304-0.104-0.383-0.095C17.271,7.42,16.827,7.42,16.698,7.412zM17.182,9.404c-0.034,0.039,0.157,0.095,0.191,0.043C17.407,9.396,17.271,9.309,17.182,9.404zM17.764,9.585c0.086-0.035,0.043-0.139-0.079-0.104C17.547,9.521,17.676,9.62,17.764,9.585z",
+    "raph_temp": "M19.361,17.744V3.438c0-1.85-1.504-3.348-3.352-3.348c-1.852,0-3.35,1.498-3.35,3.348v14.193c-2.106,1.154-3.536,3.391-3.536,5.961c0,3.752,3.042,6.793,6.793,6.793c3.753,0,6.793-3.041,6.793-6.793C22.71,21.099,21.363,18.924,19.361,17.744zM15.917,29.27c-3.129,0-5.676-2.548-5.676-5.68c0-2.072,1.132-3.98,2.954-4.979l0.581-0.316V3.437c0-1.231,1.003-2.231,2.236-2.231c1.231,0,2.232,1,2.232,2.231v14.942l0.548,0.324c1.756,1.036,2.806,2.861,2.806,4.887C21.596,26.722,19.048,29.27,15.917,29.27zM18.225,19.666l-1.099-0.647V9.26h-2.233v9.695l-1.161,0.635c-1.464,0.805-2.375,2.334-2.375,4c0,2.514,2.047,4.561,4.56,4.561c2.515,0,4.56-2.047,4.56-4.561C20.479,21.988,19.616,20.485,18.225,19.666z",
+  	"lightning_bolt": "M13.222,3.359l5.413,7.499l-2.232,0.885l6.816,6.425l-2.231,1.073L29.414,30l-14.292-8.245l2.726-1.145 l-8.88-5.281l3.182-1.632l-9.376-5.54L13.222,3.359z",
+	
+	"moon": "M23.893,29.75L23.893,29.75c-8.04,0-14.559-6.326-14.559-14.132c0-7.805,6.519-14.132,14.559-14.132l0,0 c-4.582,3.336-7.279,8.572-7.279,14.132S19.311,26.413,23.893,29.75z",
+
+		"star_32": "M4,15.834l3.086-0.895L4.234,13.46l3.201-0.274l-2.508-2.008l3.193,0.355L6.051,9.074l3.063,0.971 L7.564,7.23l2.814,1.549L9.408,5.718l2.458,2.069l-0.354-3.194l2.007,2.509l0.275-3.201l1.48,2.852l0.895-3.086l0.894,3.086 l1.479-2.852l0.275,3.201l2.008-2.509l-0.355,3.194l2.459-2.069L21.957,8.78l2.814-1.549l-1.549,2.814l3.062-0.971l-2.07,2.458 l3.193-0.355L24.9,13.186L28.1,13.46l-2.852,1.479l3.086,0.895l-3.086,0.895l2.852,1.479L24.9,18.482l2.508,2.008l-3.193-0.355 l2.07,2.459l-3.062-0.971l1.549,2.814l-2.814-1.549l0.971,3.062l-2.459-2.068l0.355,3.193l-2.008-2.509l-0.275,3.2l-1.479-2.852 l-0.894,3.086l-0.895-3.086l-1.48,2.852l-0.275-3.2l-2.007,2.509l0.354-3.193L9.408,25.95l0.971-3.062l-2.814,1.549l1.55-2.814 l-3.063,0.971l2.069-2.459L4.927,20.49l2.508-2.008l-3.201-0.274l2.853-1.479L4,15.834z",
+
+			"sun": "M29.166,15.999l-5.279,1.878v-3.754L29.166,15.999z M25.333,6.748l-2.405,5.062l-2.654-2.656L25.333,6.748z M16.083,2.917l1.877,5.28h-3.755L16.083,2.917z M6.832,6.748l5.061,2.406l-2.655,2.656L6.832,6.748z M3,15.999l5.28-1.876v3.754 L3,15.999z M6.832,25.25l2.406-5.06l2.655,2.655L6.832,25.25L6.832,25.25z M16.083,29.084l-1.878-5.281h3.755L16.083,29.084z M25.333,25.25l-5.06-2.404l2.654-2.655L25.333,25.25z M9.542,15.999L9.542,15.999c0-3.612,2.929-6.541,6.542-6.541 c3.612,0,6.542,2.929,6.542,6.541c0,3.613-2.93,6.542-6.542,6.542C12.47,22.541,9.542,19.612,9.542,15.999L9.542,15.999z",
+			
+			"umbrella": "M15.009,3.37v2.508C8.637,6.23,3.618,9.962,3.618,14.514c0-0.82,1.387-1.486,3.095-1.486 c1.709,0,3.096,0.666,3.096,1.486c0-0.82,1.386-1.486,3.095-1.486c0.813,0,1.552,0.156,2.105,0.402v12.228 c0,0.547-0.444,0.99-0.99,0.99c-0.547,0-0.991-0.443-0.991-0.99v-0.496h-1.981v0.496c0,1.641,1.332,2.973,2.972,2.973 s2.971-1.332,2.971-2.973V13.43c0.553-0.247,1.293-0.402,2.106-0.402c1.707,0,3.096,0.666,3.096,1.486 c0-0.82,1.387-1.486,3.094-1.486c1.711,0,3.098,0.666,3.098,1.486c0-4.551-5.02-8.283-11.393-8.636V3.37H15.009z"
+    }
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/icons/jquery.svgicons.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/icons/jquery.svgicons.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/icons/jquery.svgicons.js	(revision 29468)
@@ -0,0 +1,471 @@
+﻿/*
+ * SVG Icon Loader 2.0
+ *
+ * jQuery Plugin for loading SVG icons from a single file
+ *
+ * Copyright (c) 2009 Alexis Deveria
+ * http://a.deveria.com
+ *
+ * Apache 2 License
+
+How to use:
+
+1. Create the SVG master file that includes all icons:
+
+The master SVG icon-containing file is an SVG file that contains 
+<g> elements. Each <g> element should contain the markup of an SVG
+icon. The <g> element has an ID that should 
+correspond with the ID of the HTML element used on the page that should contain 
+or optionally be replaced by the icon. Additionally, one empty element should be
+added at the end with id "svg_eof".
+
+2. Optionally create fallback raster images for each SVG icon.
+
+3. Include the jQuery and the SVG Icon Loader scripts on your page.
+
+4. Run $.svgIcons() when the document is ready:
+
+$.svgIcons( file [string], options [object literal]);
+
+File is the location of a local SVG or SVGz file.
+
+All options are optional and can include:
+
+- 'w (number)': The icon widths
+
+- 'h (number)': The icon heights
+
+- 'fallback (object literal)': List of raster images with each
+	key being the SVG icon ID to replace, and the value the image file name.
+	
+- 'fallback_path (string)': The path to use for all images
+	listed under "fallback"
+	
+- 'replace (boolean)': If set to true, HTML elements will be replaced by,
+	rather than include the SVG icon.
+
+- 'placement (object literal)': List with selectors for keys and SVG icon ids
+	as values. This provides a custom method of adding icons.
+
+- 'resize (object literal)': List with selectors for keys and numbers
+	as values. This allows an easy way to resize specific icons.
+	
+- 'callback (function)': A function to call when all icons have been loaded. 
+	Includes an object literal as its argument with as keys all icon IDs and the 
+	icon as a jQuery object as its value.
+
+- 'id_match (boolean)': Automatically attempt to match SVG icon ids with
+	corresponding HTML id (default: true)
+	
+- 'no_img (boolean)': Prevent attempting to convert the icon into an <img>
+	element (may be faster, help for browser consistency)
+
+- 'svgz (boolean)': Indicate that the file is an SVGZ file, and thus not to
+	parse as XML. SVGZ files add compression benefits, but getting data from
+	them fails in Firefox 2 and older.
+
+5. To access an icon at a later point without using the callback, use this:
+	$.getSvgIcon(id (string));
+
+This will return the icon (as jQuery object) with a given ID.
+	
+6. To resize icons at a later point without using the callback, use this:
+	$.resizeSvgIcons(resizeOptions) (use the same way as the "resize" parameter)
+
+
+Example usage #1:
+
+$(function() {
+	$.svgIcons('my_icon_set.svg'); // The SVG file that contains all icons
+	// No options have been set, so all icons will automatically be inserted 
+	// into HTML elements that match the same IDs. 
+});
+
+Example usage #2:
+
+$(function() {
+	$.svgIcons('my_icon_set.svg', { // The SVG file that contains all icons
+		callback: function(icons) { // Custom callback function that sets click
+									// events for each icon
+			$.each(icons, function(id, icon) {
+				icon.click(function() {
+					alert('You clicked on the icon with id ' + id);
+				});
+			});
+		}
+	}); //The SVG file that contains all icons
+});
+
+Example usage #3:
+
+$(function() {
+	$.svgIcons('my_icon_set.svgz', { // The SVGZ file that contains all icons
+		w: 32,	// All icons will be 32px wide
+		h: 32,  // All icons will be 32px high
+		fallback_path: 'icons/',  // All fallback files can be found here
+		fallback: {
+			'#open_icon': 'open.png',  // The "open.png" will be appended to the
+									   // HTML element with ID "open_icon"
+			'#close_icon': 'close.png',
+			'#save_icon': 'save.png'
+		},
+		placement: {'.open_icon','open'}, // The "open" icon will be added
+										  // to all elements with class "open_icon"
+		resize: function() {
+			'#save_icon .svg_icon': 64  // The "save" icon will be resized to 64 x 64px
+		},
+		
+		callback: function(icons) { // Sets background color for "close" icon 
+			icons['close'].css('background','red');
+		},
+		
+		svgz: true // Indicates that an SVGZ file is being used
+		
+	})
+});
+
+*/
+
+
+(function($) {
+	var svg_icons = {}, fixIDs;
+
+	$.svgIcons = function(file, opts) {
+		var svgns = "http://www.w3.org/2000/svg",
+			xlinkns = "http://www.w3.org/1999/xlink",
+			icon_w = opts.w?opts.w : 24,
+			icon_h = opts.h?opts.h : 24,
+			elems, svgdoc, testImg,
+			icons_made = false, data_loaded = false, load_attempts = 0,
+			ua = navigator.userAgent, isOpera = !!window.opera, isSafari = (ua.indexOf('Safari/') > -1 && ua.indexOf('Chrome/')==-1),
+			data_pre = 'data:image/svg+xml;charset=utf-8;base64,';
+			
+			if(opts.svgz) {
+				var data_el = $('<object data="' + file + '" type=image/svg+xml>').appendTo('body').hide();
+				try {
+					svgdoc = data_el[0].contentDocument;
+					data_el.load(getIcons);
+					getIcons(0, true); // Opera will not run "load" event if file is already cached
+				} catch(err1) {
+					useFallback();
+				}
+			} else {
+				var parser = new DOMParser();
+				$.ajax({
+					url: file,
+					dataType: 'string',
+					success: function(data) {
+						if(!data) {
+							$(useFallback);
+							return;
+						}
+						svgdoc = parser.parseFromString(data, "text/xml");
+						$(function() {
+							getIcons('ajax');
+						});
+					},
+					error: function(err) {
+						// TODO: Fix Opera widget icon bug
+						if(window.opera) {
+							$(function() {
+								useFallback();
+							});
+						} else {
+							if(err.responseText) {
+								svgdoc = parser.parseFromString(err.responseText, "text/xml");
+								if(!svgdoc.childNodes.length) {
+									$(useFallback);									
+								}
+								$(function() {
+									getIcons('ajax');
+								});							
+							} else {
+								$(useFallback);
+							}
+						}
+					}
+				});
+			}
+			
+		function getIcons(evt, no_wait) {
+			if(evt !== 'ajax') {
+				if(data_loaded) return;
+				// Webkit sometimes says svgdoc is undefined, other times
+				// it fails to load all nodes. Thus we must make sure the "eof" 
+				// element is loaded.
+				svgdoc = data_el[0].contentDocument; // Needed again for Webkit
+				var isReady = (svgdoc && svgdoc.getElementById('svg_eof'));
+				if(!isReady && !(no_wait && isReady)) {
+					load_attempts++;
+					if(load_attempts < 50) {
+						setTimeout(getIcons, 20);
+					} else {
+						useFallback();
+						data_loaded = true;
+					}
+					return;
+				}
+				data_loaded = true;
+			}
+			
+			elems = $(svgdoc.firstChild).children(); //.getElementsByTagName('foreignContent');
+			
+			if(!opts.no_img) {
+				var testSrc = data_pre + 'PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNzUiIGhlaWdodD0iMjc1Ij48L3N2Zz4%3D';
+				
+				testImg = $(new Image()).attr({
+					src: testSrc,
+					width: 0,
+					height: 0
+				}).appendTo('body')
+				.load(function () {
+					// Safari 4 crashes, Opera and Chrome don't
+					makeIcons(true);
+				}).error(function () {
+					makeIcons();
+				});
+			} else {
+				setTimeout(function() {
+					if(!icons_made) makeIcons();
+				},500);
+			}
+		}
+		
+		var setIcon = function(target, icon, id, setID) {
+			if(isOpera) icon.css('visibility','hidden');
+			if(opts.replace) {
+				if(setID) icon.attr('id',id);
+				var cl = target.attr('class');
+				if(cl) icon.attr('class','svg_icon '+cl);
+				target.replaceWith(icon);
+			} else {
+				
+				target.append(icon);
+			}
+			if(isOpera) {
+				setTimeout(function() {
+					icon.removeAttr('style');
+				},1);
+			}
+		}
+		
+		var addIcon = function(icon, id) {
+			if(opts.id_match === undefined || opts.id_match !== false) {
+				setIcon(holder, icon, id, true);
+			}
+			svg_icons[id] = icon;
+		}
+		
+		function makeIcons(toImage, fallback) {
+			if(icons_made) return;
+			if(opts.no_img) toImage = false;
+			var holder;
+			
+			if(toImage) {
+				var temp_holder = $(document.createElement('div'));
+				temp_holder.hide().appendTo('body');
+			} 
+			if(fallback) {
+				var path = opts.fallback_path?opts.fallback_path:'';
+				$.each(fallback, function(id, imgsrc) {
+					holder = $('#' + id);
+					var icon = $(new Image())
+						.attr({
+							'class':'svg_icon',
+							src: path + imgsrc,
+							'width': icon_w,
+							'height': icon_h,
+							'alt': 'icon'
+						});
+					
+					addIcon(icon, id);
+				});
+			} else {
+				var len = elems.length;
+				for(var i = 0; i < len; i++) {
+					var elem = elems[i];
+					var id = elem.id;
+					if(id === 'svg_eof') break;
+					holder = $('#' + id);
+					var svg = elem.getElementsByTagNameNS(svgns, 'svg')[0];
+					var svgroot = document.createElementNS(svgns, "svg");
+					svgroot.setAttributeNS(svgns, 'viewBox', [0,0,icon_w,icon_h].join(' '));
+					// Make flexible by converting width/height to viewBox
+					var w = svg.getAttribute('width');
+					var h = svg.getAttribute('height');
+					svg.removeAttribute('width');
+					svg.removeAttribute('height');
+					
+					var vb = svg.getAttribute('viewBox');
+					if(!vb) {
+						svg.setAttribute('viewBox', [0,0,w,h].join(' '));
+					}
+					
+					// Not using jQuery to be a bit faster
+					svgroot.setAttribute('xmlns', svgns);
+					svgroot.setAttribute('width', icon_w);
+					svgroot.setAttribute('height', icon_h);
+					svgroot.setAttribute("xmlns:xlink", xlinkns);
+					svgroot.setAttribute("class", 'svg_icon');
+
+					// Without cloning, Firefox will make another GET request.
+					// With cloning, causes issue in Opera/Win/Non-EN
+					if(!isOpera) svg = svg.cloneNode(true);
+					
+					svgroot.appendChild(svg);
+			
+					if(toImage) {
+						// Without cloning, Safari will crash
+						// With cloning, causes issue in Opera/Win/Non-EN
+						var svgcontent = isOpera?svgroot:svgroot.cloneNode(true);
+						temp_holder.empty().append(svgroot);
+						var str = data_pre + encode64(temp_holder.html());
+						var icon = $(new Image())
+							.attr({'class':'svg_icon', src:str});
+					} else {
+						var icon = fixIDs($(svgroot), i);
+					}
+					addIcon(icon, id);
+				}
+
+			}
+			
+			if(opts.placement) {
+				$.each(opts.placement, function(sel, id) {
+					if(!svg_icons[id]) return;
+					$(sel).each(function(i) {
+						var copy = svg_icons[id].clone();
+						if(i > 0 && !toImage) copy = fixIDs(copy, i, true);
+						setIcon($(this), copy, id);
+					})
+				});
+			}
+			if(!fallback) {
+				if(toImage) temp_holder.remove();
+				if(data_el) data_el.remove();
+				if(testImg) testImg.remove();
+			}
+			if(opts.resize) $.resizeSvgIcons(opts.resize);
+			icons_made = true;
+
+			if(opts.callback) opts.callback(svg_icons);
+		}
+		
+		fixIDs = function(svg_el, svg_num, force) {
+			var defs = svg_el.find('defs');
+			if(!defs.length) return svg_el;
+			
+			if(isOpera) {
+				var id_elems = defs.find('*').filter(function() {
+					return !!this.id;
+				});
+			} else {
+				var id_elems = defs.find('[id]');
+			}
+			
+			var all_elems = svg_el[0].getElementsByTagName('*'), len = all_elems.length;
+			
+			id_elems.each(function(i) {
+				var id = this.id;
+				var no_dupes = ($(svgdoc).find('#' + id).length <= 1);
+				if(isOpera) no_dupes = false; // Opera didn't clone svg_el, so not reliable
+				// if(!force && no_dupes) return;
+				var new_id = 'x' + id + svg_num + i;
+				this.id = new_id;
+				
+				var old_val = 'url(#' + id + ')';
+				var new_val = 'url(#' + new_id + ')';
+
+				for(var i = 0; i < len; i++) {
+					var elem = all_elems[i];
+					if(elem.getAttribute('fill') === old_val) {
+						elem.setAttribute('fill', new_val);
+					}
+					if(elem.getAttribute('stroke') === old_val) {
+						elem.setAttribute('stroke', new_val);
+					}
+					if(elem.getAttribute('filter') === old_val) {
+						elem.setAttribute('filter', new_val);
+					}
+				}
+			});
+			return svg_el;
+		}
+		
+		function useFallback() {
+			if(file.indexOf('.svgz') != -1) {
+				var reg_file = file.replace('.svgz','.svg');
+				if(window.console) {
+					console.log('.svgz failed, trying with .svg');
+				}
+				$.svgIcons(reg_file, opts);
+			} else if(opts.fallback) {
+				makeIcons(false, opts.fallback);
+			}
+		}
+				
+		function encode64(input) {
+			// base64 strings are 4/3 larger than the original string
+			if(window.btoa) return window.btoa(input);
+			var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
+			var output = new Array( Math.floor( (input.length + 2) / 3 ) * 4 );
+			var chr1, chr2, chr3;
+			var enc1, enc2, enc3, enc4;
+			var i = 0, p = 0;
+		
+			do {
+				chr1 = input.charCodeAt(i++);
+				chr2 = input.charCodeAt(i++);
+				chr3 = input.charCodeAt(i++);
+		
+				enc1 = chr1 >> 2;
+				enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
+				enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
+				enc4 = chr3 & 63;
+		
+				if (isNaN(chr2)) {
+					enc3 = enc4 = 64;
+				} else if (isNaN(chr3)) {
+					enc4 = 64;
+				}
+		
+				output[p++] = _keyStr.charAt(enc1);
+				output[p++] = _keyStr.charAt(enc2);
+				output[p++] = _keyStr.charAt(enc3);
+				output[p++] = _keyStr.charAt(enc4);
+			} while (i < input.length);
+		
+			return output.join('');
+		}
+	}
+	
+	$.getSvgIcon = function(id, uniqueClone) { 
+		var icon = svg_icons[id];
+		if(uniqueClone && icon) {
+			icon = fixIDs(icon, 0, true).clone(true);
+		}
+		return icon; 
+	}
+	
+	$.resizeSvgIcons = function(obj) {
+		// FF2 and older don't detect .svg_icon, so we change it detect svg elems instead
+		var change_sel = !$('.svg_icon:first').length;
+		$.each(obj, function(sel, size) {
+			var arr = $.isArray(size);
+			var w = arr?size[0]:size,
+				h = arr?size[1]:size;
+			if(change_sel) {
+				sel = sel.replace(/\.svg_icon/g,'svg');
+			}
+			$(sel).each(function() {
+				this.setAttribute('width', w);
+				this.setAttribute('height', h);
+				if(window.opera && window.widget) {
+					this.parentNode.style.width = w + 'px';
+					this.parentNode.style.height = h + 'px';
+				}
+			});
+		});
+	}
+	
+})(jQuery);
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/README.txt
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/README.txt	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/README.txt	(revision 29468)
@@ -0,0 +1,61 @@
+filename                        origin
+
+align-bottom.png                http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-vertical-bottom.png
+align-bottom.svg                http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-vertical-bottom.svg
+align-center.png                http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-horizontal-center.png
+align-center.svg                http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-horizontal-center.svg
+align-left.png                  http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-horizontal-left.png
+align-left.svg                  http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-horizontal-left.svg
+align-middle.png                http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-vertical-center.png
+align-middle.svg                http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-vertical-center.svg
+align-right.png                 http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-horizontal-right.png
+align-right.svg                 http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-horizontal-right.svg
+align-top.png                   http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-vertical-top.png
+align-top.svg                   http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-vertical-top.svg
+bold.png
+cancel.png
+circle.png
+clear.png
+clone.png
+copy.png
+cut.png
+delete.png
+document-properties.png
+dropdown.gif
+ellipse.png
+eye.png
+flyouth.png
+flyup.gif
+freehand-circle.png
+freehand-square.png
+go-down.png
+go-up.png
+image.png
+italic.png
+line.png
+logo.png
+logo.svg
+move_bottom.png
+move_top.png
+none.png
+open.png
+paste.png
+path.png
+polygon.png                     http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/tools/draw-polygon.png
+polygon.svg                     http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/tools/draw-polygon.svg
+rect.png
+redo.png
+rotate.png
+save.png
+select.png
+sep.png
+shape_group.png
+shape_ungroup.png
+source.png
+square.png
+text.png                        http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/tools/draw-text.png
+text.svg                        http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/tools/draw-text.svg
+undo.png
+view-refresh.png
+wave.png
+zoom.png                        http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/tools/page-magnifier.png
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/align-bottom.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/align-bottom.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/align-bottom.svg	(revision 29468)
@@ -0,0 +1,9 @@
+<?xml version="1.0" standalone="no"?>
+<!-- Generator: Adobe Fireworks CS5, Export SVG Extension by Aaron Beall (http://fireworks.abeall.com) . Version: 0.6.1  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg id="Untitled-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+	x="0px" y="0px" width="27px" height="27px"
+>
+	<path d="M 1 25 L 5 25 L 5 13 L 11 13 L 11 25 L 16 25 L 16 7 L 22 7 L 22 25 L 26 25 L 26 26 L 1 26 L 1 25 ZM 0 0 L 0 27 L 27 27 L 27 0 L 0 0 Z" fill="#000000"/>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/align-center.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/align-center.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/align-center.svg	(revision 29468)
@@ -0,0 +1,11 @@
+<?xml version="1.0" standalone="no"?>
+<!-- Generator: Adobe Fireworks CS5, Export SVG Extension by Aaron Beall (http://fireworks.abeall.com) . Version: 0.6.1  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg id="Untitled-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+	x="0px" y="0px" width="27px" height="27px"
+>
+	<g id="Layer%201">
+		<path d="M 13 1 L 14 1 L 14 6 L 22 6 L 22 12 L 14 12 L 14 15 L 19 15 L 19 21 L 14 21 L 14 26 L 13 26 L 13 21 L 8 21 L 8 15 L 13 15 L 13 12 L 5 12 L 5 6 L 13 6 L 13 1 ZM 0 0 L 0 27 L 27 27 L 27 0 L 0 0 Z" fill="#000000"/>
+	</g>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/align-left.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/align-left.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/align-left.svg	(revision 29468)
@@ -0,0 +1,9 @@
+<?xml version="1.0" standalone="no"?>
+<!-- Generator: Adobe Fireworks CS5, Export SVG Extension by Aaron Beall (http://fireworks.abeall.com) . Version: 0.6.1  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg id="Untitled-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+	x="0px" y="0px" width="27px" height="27px"
+>
+	<path d="M 2 1 L 2 5 L 14 5 L 14 11 L 2 11 L 2 16 L 20 16 L 20 22 L 2 22 L 2 26 L 1 26 L 1 1 L 2 1 ZM 27 0 L 0 0 L 0 27 L 27 27 L 27 0 Z" fill="#000000"/>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/align-middle.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/align-middle.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/align-middle.svg	(revision 29468)
@@ -0,0 +1,9 @@
+<?xml version="1.0" standalone="no"?>
+<!-- Generator: Adobe Fireworks CS5, Export SVG Extension by Aaron Beall (http://fireworks.abeall.com) . Version: 0.6.1  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg id="Untitled-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+	x="0px" y="0px" width="27px" height="27px"
+>
+	<path d="M 26 13 L 26 14 L 21 14 L 21 22 L 15 22 L 15 14 L 12 14 L 12 19 L 6 19 L 6 14 L 1 14 L 1 13 L 6 13 L 6 8 L 12 8 L 12 13 L 15 13 L 15 5 L 21 5 L 21 13 L 26 13 ZM 27 0 L 0 0 L 0 27 L 27 27 L 27 0 Z" fill="#000000"/>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/align-right.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/align-right.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/align-right.svg	(revision 29468)
@@ -0,0 +1,9 @@
+<?xml version="1.0" standalone="no"?>
+<!-- Generator: Adobe Fireworks CS5, Export SVG Extension by Aaron Beall (http://fireworks.abeall.com) . Version: 0.6.1  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg id="Untitled-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+	x="0px" y="0px" width="27px" height="27px"
+>
+	<path d="M 25 1 L 25 5 L 13 5 L 13 11 L 25 11 L 25 16 L 7 16 L 7 22 L 25 22 L 25 26 L 26 26 L 26 1 L 25 1 ZM 0 0 L 27 0 L 27 27 L 0 27 L 0 0 Z" fill="#000000"/>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/align-top.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/align-top.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/align-top.svg	(revision 29468)
@@ -0,0 +1,9 @@
+<?xml version="1.0" standalone="no"?>
+<!-- Generator: Adobe Fireworks CS5, Export SVG Extension by Aaron Beall (http://fireworks.abeall.com) . Version: 0.6.1  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg id="Untitled-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+	x="0px" y="0px" width="27px" height="27px"
+>
+	<path d="M 1 2 L 5 2 L 5 14 L 11 14 L 11 2 L 16 2 L 16 20 L 22 20 L 22 2 L 26 2 L 26 1 L 1 1 L 1 2 ZM 0 27 L 0 0 L 27 0 L 27 27 L 0 27 Z" fill="#000000"/>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/conn.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/conn.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/conn.svg	(revision 29468)
@@ -0,0 +1,29 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+	<g id="mode_connect">
+		<svg viewBox="0 0 24 24" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg">
+		 <defs>
+
+		  <line stroke-width="5" fill="none" stroke="#000000" id="svg_2" y2="121" x2="136" y1="7" x1="136">
+		   <stop stop-opacity="1" stop-color="#4687a0"/>
+		   <stop stop-opacity="1" stop-color="#ffffff"/>
+		  </line>
+		  <linearGradient y2="0.18359" x2="0.29688" y1="0.92188" x1="0.62109" id="svg_3">
+		   <stop stop-opacity="1" stop-color="#417dad" offset="0"/>
+		   <stop stop-opacity="1" stop-color="#ffffff" offset="1"/>
+		  </linearGradient>
+		 </defs>
+		 <g>
+		  <title>Layer 1</title>
+		  <line x1="5.64676" y1="5.60056" x2="18.50037" y2="18.62557" id="svg_5" stroke="#000000" fill="none"/>
+		  <rect opacity="0.75" stroke-width="0.5" x="0.5" y="0.5" width="9.625" height="5.125" id="svg_1" fill="url(#svg_3)" stroke="#000000"/>
+		  <rect opacity="0.75" id="svg_4" stroke-width="0.5" x="13.75" y="18.25" width="9.625" height="5.125" fill="url(#svg_3)" stroke="#000000"/>
+		  <g id="svg_9">
+		   <path d="m14.57119,9.12143l-0.98244,5.18852l2.70861,-4.36084" id="svg_6" fill="#a0a0a0" stroke="#000000"/>
+		   <path d="m14.27564,6.76258c-0.25872,0.72562 -0.40735,1.65632 -0.33812,2.15432l2.90784,1.2509c0.30961,-0.21212 1.08198,-1.1814 1.08198,-1.73736" id="svg_7" fill="url(#svg_3)" stroke="#000000"/>
+		   <path d="m16.28893,0.37519l-2.46413,5.9304l4.76481,2.39435l2.13178,-4.96735" id="svg_8" fill="url(#svg_3)" stroke="#000000"/>
+		  </g>
+		 </g>
+		</svg>
+	</g>
+	<g id="svg_eof"/>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/ellipse.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/ellipse.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/ellipse.svg	(revision 29468)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="27px" height="27px" viewBox="0 0 27 27" enable-background="new 0 0 27 27" xml:space="preserve">
+<path fill="#2F2F2C" d="M27,0H0v27h27 M13.25,7.617c6.742,0,12.207,3.846,12.207,8.59c0,4.745-5.465,8.591-12.207,8.591
+	S1.042,20.952,1.042,16.207C1.042,11.463,6.508,7.617,13.25,7.617z"/>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/eye.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/eye.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/eye.svg	(revision 29468)
@@ -0,0 +1,9 @@
+<?xml version="1.0" standalone="no"?>
+<!-- Generator: Adobe Fireworks CS5, Export SVG Extension by Aaron Beall (http://fireworks.abeall.com) . Version: 0.6.1  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg id="eye-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+	x="0px" y="0px" width="27px" height="27px"
+>
+	<path d="M 26.575 14.5 C 25.0764 18.8131 19.7906 22 13.5 22 C 7.2094 22 1.9236 18.8131 0.425 14.5 C 1.9236 10.1869 7.2094 7 13.5 7 C 19.7906 7 25.0764 10.1869 26.575 14.5 ZM 0 0 L 0 27 L 27 27 L 27 0 L 0 0 ZM 20.5226 14.5 C 20.5226 10.9101 16.5538 8.0625 14.0226 8 C 13.8544 7.9958 14.6876 9.0074 14.5226 9.02 C 16.6163 9 18.5226 11.0783 18.5226 14.5 C 18.5226 17.9217 16.7413 19.625 14.5226 19.98 C 14.6876 19.9926 13.8543 21 14.0226 21 C 16.5851 21 20.5226 18.0899 20.5226 14.5 ZM 6 14.5 C 6 18.0899 9.9375 21 12.5 21 C 12.6682 21 11.835 19.9926 12 19.98 C 9.7813 19.625 8 17.9217 8 14.5 C 8 11.0783 9.9063 9 12 9.02 C 11.835 9.0074 12.6682 7.9958 12.5 8 C 9.9688 8.0625 6 10.9101 6 14.5 Z" fill="#000000"/>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/image.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/image.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/image.svg	(revision 29468)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="27px" height="27px" viewBox="0 0 27 27" enable-background="new 0 0 27 27" xml:space="preserve">
+<g>
+	<path fill="#2F2F2C" d="M23.377,8.006H3.624v13.602h19.753V8.006z M19.849,9.676c0.91,0,1.646,0.748,1.646,1.67
+		s-0.736,1.671-1.646,1.671c-0.908,0-1.646-0.749-1.646-1.671S18.94,9.676,19.849,9.676z M5.034,20.175L9.972,9.438l5.173,7.158
+		l2.587-2.147l4.233,5.727H5.034z"/>
+	<path fill="#2F2F2C" d="M0,0v27h27V0H0z M25.258,23.517H1.742V6.097h23.516V23.517z"/>
+</g>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/italic.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/italic.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/italic.svg	(revision 29468)
@@ -0,0 +1,11 @@
+<?xml version="1.0" standalone="no"?>
+<!-- Generator: Adobe Fireworks CS5, Export SVG Extension by Aaron Beall (http://fireworks.abeall.com) . Version: 0.6.1  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg id="eye-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+	x="0px" y="0px" width="27px" height="27px"
+>
+	<g id="Layer%201">
+		<path d="M 16.6855 8.9536 L 12.8818 22.146 C 12.6714 22.9009 12.5664 23.396 12.5664 23.6304 C 12.5664 23.7671 12.6221 23.8931 12.7334 24.0112 C 12.8447 24.1284 12.9619 24.187 13.0859 24.187 C 13.2959 24.187 13.5063 24.0942 13.7168 23.9087 C 14.2734 23.4517 14.9414 22.6226 15.7207 21.4224 L 16.3516 21.7935 C 14.4834 25.0474 12.498 26.6733 10.3955 26.6733 C 9.5913 26.6733 8.9512 26.4478 8.4751 25.9956 C 7.9985 25.5444 7.7607 24.9731 7.7607 24.2798 C 7.7607 23.8228 7.8657 23.2407 8.0762 22.5356 L 10.6553 13.6665 C 10.9023 12.813 11.0264 12.1704 11.0264 11.7368 C 11.0264 11.4653 10.9087 11.2241 10.6738 11.0132 C 10.4385 10.8032 10.1172 10.6978 9.709 10.6978 C 9.5234 10.6978 9.3008 10.7046 9.041 10.7163 L 9.2822 9.9741 L 15.5723 8.9536 L 16.6855 8.9536 ZM 15.5352 0.4185 C 16.3018 0.4185 16.9482 0.6851 17.4741 1.2163 C 17.9995 1.7485 18.2627 2.3921 18.2627 3.146 C 18.2627 3.9009 17.9966 4.5444 17.4648 5.0757 C 16.9326 5.6079 16.2896 5.8735 15.5352 5.8735 C 14.793 5.8735 14.1558 5.6079 13.624 5.0757 C 13.0918 4.5444 12.8262 3.9009 12.8262 3.146 C 12.8262 2.3921 13.0889 1.7485 13.6147 1.2163 C 14.1401 0.6851 14.7803 0.4185 15.5352 0.4185 ZM 0 0 L 0 27 L 27 27 L 27 0 L 0 0 Z" fill="#000000"/>
+	</g>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/path.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/path.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/path.svg	(revision 29468)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="27px" height="27px" viewBox="0 0 27 27" enable-background="new 0 0 27 27" xml:space="preserve">
+<path fill="#2F2F2C" d="M0,0v27h27V0H0z M12.193,1.904c0-0.365,0.871,0,0.871,0v12.105c-0.509,0.18-0.871,0.664-0.871,1.233
+	c0,0.722,0.585,1.305,1.307,1.305c0.722,0,1.307-0.583,1.307-1.305c0-0.569-0.362-1.054-0.871-1.233V1.904c0,0,0.871-0.365,0.871,0
+	c0,6.811,5.226,11.677,5.226,11.677l-3.256,8.193h-6.552l-3.256-8.193C6.968,13.581,12.193,8.714,12.193,1.904z M7.839,25.258
+	v-2.612h11.322v2.612H7.839z"/>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/pencil.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/pencil.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/pencil.svg	(revision 29468)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="27px" height="27px" viewBox="-1.5 -1.5 27 27" enable-background="new -1.5 -1.5 27 27" xml:space="preserve">
+<path fill="#2F2F2C" d="M-1.5-1.5v27h27v-27 M19.616,9.216L6.647,21.567l-5.531,1.285l-0.1-0.094l1.449-5.269L15.438,5.204
+	c0.231-0.062,0.788-0.219,1.579-0.062L3.255,18.243l-0.394,1.381l1.58,1.504l1.481-0.375l0.66-0.598l0.065-1.408l-1.053-1.004
+	L18.203,5.736c0.196,0.157,0.196,0.157,0.396,0.376C20.476,7.869,19.616,9.216,19.616,9.216z M22.87,4.9
+	c-0.002,0.774-0.358,1.561-1.013,2.185l-1.217,1.16c0,0,0.921-1.348-0.989-3.103c-1.679-1.599-3.259-0.91-3.259-0.91l1.284-1.223
+	c1.154-1.126,3.161-1.126,4.278-0.062c0.622,0.549,0.913,1.239,0.915,1.938V4.9z"/>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/placeholder.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/placeholder.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/placeholder.svg	(revision 29468)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="100px" height="100px" viewbox="0 0 100 100" preserveAspectRatio="none"
+	 xml:space="preserve">
+   <rect width="100" height="100" fill="#ddd" stroke-width="1" stroke="#aaa" vector-effect="non-scaling-stroke" />
+     <path d="M 0 0 L 100 100 Z" stroke-width="1" stroke="#aaa" vector-effect="non-scaling-stroke" />
+       <path d="M 100 0 L 0 100 Z" stroke-width="1" stroke="#aaa" vector-effect="non-scaling-stroke" />
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/polygon.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/polygon.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/polygon.svg	(revision 29468)
@@ -0,0 +1,11 @@
+<?xml version="1.0" standalone="no"?>
+<!-- Generator: Adobe Fireworks CS5, Export SVG Extension by Aaron Beall (http://fireworks.abeall.com) . Version: 0.6.1  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg id="eye-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+	x="0px" y="0px" width="27px" height="27px"
+>
+	<g id="Layer%201">
+		<path d="M 13.6027 0.5027 L 26.844 10.2723 L 21.6443 25.8845 L 5.1894 25.7637 L 0.2195 10.0769 L 13.6027 0.5027 ZM 0 0 L 0 27 L 27 27 L 27 0 L 0 0 Z" fill="#000000"/>
+	</g>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/select.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/select.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/select.svg	(revision 29468)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="24px" height="24px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve">
+<g>
+	<path fill="#2F2F2C" d="M0,0v24h24V0H0z M17.147,20.757l-2.941,1.501l-3.677-6.005l-4.411,3.003V1.241l12.5,12.01l-4.412,1.501
+		L17.147,20.757z"/>
+</g>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/svg_edit_icons.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/svg_edit_icons.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/svg_edit_icons.svg	(revision 29468)
@@ -0,0 +1,455 @@
+﻿<svg xmlns="http://www.w3.org/2000/svg">
+<!-- All images created with SVG-edit - http://svg-edit.googlecode.com/ -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<g id="logo">
+<svg viewBox="0 0 16 16" version="1.1">
+  <path id="svg_7" d="m-0.0965,16.1043l16.10001,-16.06917l-0.00001,16.06917l-16.1,0z" stroke-linecap="null" stroke-linejoin="null" stroke-dasharray="null" stroke-width="1.5" fill="#cccccc"/>
+  <path id="svg_6" d="m0.0035,16.10449l0,-15.99999l16,15.99999l-16,0z" stroke-linecap="null" stroke-linejoin="null" stroke-dasharray="null" stroke-width="1.5" fill="#666666"/>
+ </svg>
+</g>
+
+
+<g id="select">
+<svg viewBox="0 0 24 24" version="1.1">
+	<g>
+	<path fill="#2F2F2C" d="M0,0v24h24V0H0z M17.147,20.757l-2.941,1.501l-3.677-6.005l-4.411,3.003V1.241l12.5,12.01l-4.412,1.501
+		L17.147,20.757z"/>
+	</g>
+</svg>
+</g>
+
+
+<g id="select_node">
+<svg viewBox="0 0 24 24" version="1.1">
+	<g>
+	<path fill="none" d="M6.67,5.202l8.314,7.482l-4.158,0.831L6.67,16.841V5.202z"/>
+	<polygon fill="#302F2C" points="14.984,12.684 6.67,5.202 6.67,16.841 10.827,13.515 	"/>
+	<path fill="#302F2C" d="M0,24h24V0H0V24z M5.008,0.213L20.14,13.515l-4.987,1.663l3.325,6.651l-3.325,1.663l-4.157-6.651
+		l-5.988,3.325V0.213z"/>
+	</g>
+</svg>
+</g>
+
+
+<g id="rect">
+<svg id="eye-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+	x="0px" y="0px" width="27px" height="27px"
+>
+	<path d="M 0 25 L 0 27 L 27 27 L 27 25 L 0 25 ZM 0 0 L 0 8 L 27 8 L 27 0 L 0 0 Z" fill="#2f2f2c"/>
+</svg>
+</g>
+
+<g id="fh_rect">
+<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 52 52">
+ <defs>
+  <linearGradient y2="1" x2="1" y1="0.10156" x1="0.36328" id="svg_2">
+
+   <stop stop-opacity="1" stop-color="#ffffff" offset="0"/>
+   <stop stop-opacity="1" stop-color="#3b7e9b" offset="1"/>
+  </linearGradient>
+  <linearGradient y2="0.3945" x2="0.6132" y1="0.1093" x1="0.3046" id="svg_9">
+   <stop stop-opacity="1" stop-color="#f9d225" offset="0"/>
+   <stop stop-opacity="1" stop-color="#bf5f00" offset="1"/>
+  </linearGradient>
+ </defs>
+  <rect stroke="#2f2f2c" stroke-width="2" fill="url(#svg_2)" id="svg_1" height="50" width="50" y="0.75" x="1.25"/>
+  <path stroke-width="2" stroke="#2f2f2c" fill="url(#svg_9)" id="svg_2" d="m31.5,0l-8.75,20.25l0.75,24l16.5,-16.5l6,-12.5"/>
+  <path stroke-width="2" stroke="#2f2f2c" fill="#fce0a9" id="svg_10" d="m39.5,28.5c-2,-9.25 -10.25,-11.75 -17,-7.4375l0.4843,24.4414z"/>
+  <path id="svg_11" stroke-width="2" stroke="#2f2f2c" fill="#2f2f2c" d="m26.9318,41.1745c-0.4491,-2.3511 -2.3021,-2.9866 -3.8181,-1.8905l0.1087,6.2126z"/>
+</svg>
+</g>
+
+
+<g id="circle">
+<svg id="Untitled-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+	x="0px" y="0px" width="27px" height="27px"
+>
+	<path d="M 27 0 L 13.5 0 C 20.9559 0 27 6.0441 27 13.5 L 27 0 ZM 27 27 L 27 13.5 C 27 20.9559 20.9559 27 13.5 27 L 27 27 ZM 0 27 L 13.5 27 C 6.0441 27 0 20.9559 0 13.5 L 0 27 ZM 0 0 L 0 13.5 C 0 6.0441 6.0441 0 13.5 0 L 0 0 Z" fill="#2f2f2c"/>
+</svg>
+</g>
+
+<g id="ellipse">
+<svg id="eye-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+	x="0px" y="0px" width="27px" height="27px"
+>
+	<path fill="#2F2F2C" d="M27,0H0v27h27 M13.25,7.617c6.742,0,12.207,3.846,12.207,8.59c0,4.745-5.465,8.591-12.207,8.591
+		S1.042,20.952,1.042,16.207C1.042,11.463,6.508,7.617,13.25,7.617z"/>
+</svg>
+</g>
+
+<g id="fh_ellipse">
+<svg viewBox="0 0 52 52" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+  <linearGradient id="svg_9" x1="0.3046" y1="0.1093" x2="0.6132" y2="0.3945">
+   <stop offset="0" stop-color="#f9d225" stop-opacity="1"/>
+   <stop offset="1" stop-color="#bf5f00" stop-opacity="1"/>
+  </linearGradient>
+  <linearGradient id="svg_4" x1="0.17188" y1="0.1875" x2="1" y2="1">
+   <stop offset="0" stop-color="#ffffff" stop-opacity="1"/>
+   <stop offset="1" stop-color="#ff6666" stop-opacity="1"/>
+  </linearGradient>
+ </defs>
+  <ellipse stroke-width="2" stroke="#2f2f2c" fill="url(#svg_4)" id="svg_1" rx="23" ry="12" cy="37" cx="27"/>
+  <path d="m31.5,0l-8.75,20.25l0.75,24l16.5,-16.5l6,-12.5" id="svg_2" fill="url(#svg_9)" stroke="#2f2f2c" stroke-width="2"/>
+  <path d="m39.5,28.5c-2,-9.25 -10.25,-11.75 -17,-7.4375l0.4843,24.4414z" id="svg_10" fill="#fce0a9" stroke="#2f2f2c" stroke-width="2"/>
+  <path d="m26.9318,41.1745c-0.4491,-2.3511 -2.3021,-2.9866 -3.8181,-1.8905l0.1087,6.2126z" fill="#2f2f2c" stroke="#2f2f2c" stroke-width="2" id="svg_11"/>
+ </svg>
+</g>
+
+<g id="pencil">
+<svg viewBox="0 0 24 24" version="1.1">
+	<path fill="#2F2F2C" d="M-1.5-1.5v27h27v-27 M19.616,9.216L6.647,21.567l-5.531,1.285l-0.1-0.094l1.449-5.269L15.438,5.204
+		c0.231-0.062,0.788-0.219,1.579-0.062L3.255,18.243l-0.394,1.381l1.58,1.504l1.481-0.375l0.66-0.598l0.065-1.408l-1.053-1.004
+		L18.203,5.736c0.196,0.157,0.196,0.157,0.396,0.376C20.476,7.869,19.616,9.216,19.616,9.216z M22.87,4.9
+		c-0.002,0.774-0.358,1.561-1.013,2.185l-1.217,1.16c0,0,0.921-1.348-0.989-3.103c-1.679-1.599-3.259-0.91-3.259-0.91l1.284-1.223
+		c1.154-1.126,3.161-1.126,4.278-0.062c0.622,0.549,0.913,1.239,0.915,1.938V4.9z"/>
+</svg>
+</g>
+
+<g id="pen">
+<svg id="eye-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+	x="0px" y="0px" width="27px" height="27px"
+>
+	<path d="M 3 1 L 26 24 L 24 26 L 1 3 L 3 1 ZM 0 0 L 0 27 L 27 27 L 27 0 L 0 0 Z" fill="#2f2f2c"/>
+</svg>
+</g>
+
+<g id="path">
+<svg id="eye-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" x="0px" y="0px" width="27px" height="27px">
+	<g id="Layer%201">
+		<path fill="#2F2F2C" d="M0,0v27h27V0H0z M12.193,1.904c0-0.365,0.871,0,0.871,0v12.105c-0.509,0.18-0.871,0.664-0.871,1.233c0,0.722,0.585,1.305,1.307,1.305c0.722,0,1.307-0.583,1.307-1.305c0-0.569-0.362-1.054-0.871-1.233V1.904c0,0,0.871-0.365,0.871,0c0,6.811,5.226,11.677,5.226,11.677l-3.256,8.193h-6.552l-3.256-8.193C6.968,13.581,12.193,8.714,12.193,1.904z M7.839,25.258v-2.612h11.322v2.612H7.839z"/>
+	</g>
+</svg>
+</g>
+
+
+<g id="text">
+<svg id="eye-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+	x="0px" y="0px" width="27px" height="27px"
+>
+	<path fill="#2F2F2C" d="M0,0v27h27V0H0z M7.283,25.258v-1.741h0.539c1.133,0,1.879-0.204,2.224-0.64c0.345-0.422,0.525-1.157,0.525-2.191V4.355H8.733c-1.105,0-1.906,0.123-2.417,0.367C5.791,4.967,5.362,5.443,5.017,6.151C4.658,6.873,4.451,7.73,4.381,8.709H2.613V2.613h21.774v6.097H22.48c-0.359-1.701-0.87-2.858-1.52-3.457s-1.686-0.898-3.108-0.898h-1.976v16.331c0,1.062,0.165,1.81,0.525,2.218c0.358,0.409,1.104,0.613,2.236,0.613h0.595v1.741H7.283z"/>
+</svg>
+</g>
+
+
+
+<g id="add_subpath">
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 124 124" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+  <linearGradient id="svg_4" x1="0.33594" y1="0.28125" x2="1" y2="1">
+   <stop offset="0" stop-color="#ffffff" stop-opacity="1"/>
+   <stop offset="1" stop-color="#33a533" stop-opacity="1"/>
+  </linearGradient>
+ </defs>
+ <g>
+  <path d="m6,103l55,-87c85,33.64 -26,37.12 55,87l-110,0z" id="svg_1" fill="url(#svg_4)" stroke="#2f2f2c" stroke-width="4" stroke-dasharray="null"/>
+  <g id="svg_7">
+   <circle stroke-dasharray="null" stroke-width="5" stroke="#2f2f2c" fill="#ffffff" id="svg_6" r="22.63281" cy="88.5" cx="45.5"/>
+   <line stroke-dasharray="null" stroke-width="7" stroke="#2f2f2c" id="svg_2" y2="104.03768" x2="45.5" y1="72.96232" x1="45.5"/>
+   <line stroke-dasharray="null" stroke-width="7" stroke="#2f2f2c" id="svg_3" y2="88.5" x2="61.03768" y1="88.5" x1="29.96232"/>
+  </g>
+ </g>
+ </svg>
+</g>
+
+<g id="close_path">
+<svg viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <g>
+  <path stroke="#000" stroke-width="15" fill="#ffc8c8" d="m121.5,40l-84,106l27,115l166,2l29,-111"/>
+  <line x1="240" y1="136" x2="169.5" y2="74" stroke="#A00" stroke-width="25" fill="none"/>
+  <path stroke="none" fill ="#A00" d="m158,65l31,74l-3,-50l51,-3z"/>
+  <g stroke-width="15" stroke="#00f" fill="#0ff">
+  <circle r="30" cy="41" cx="123"/>
+  <circle r="30" cy="146" cx="40"/>
+  <circle r="30" cy="260" cx="69"/>
+  <circle r="30" cy="260" cx="228"/>
+  <circle r="30" cy="148" cx="260"/>
+  </g>
+ </g>
+</svg>
+</g>
+
+<g id="open_path">
+<svg viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <g>
+  <path stroke="#000" stroke-width="15" fill="#ffc8c8" d="m123.5,38l-84,106l27,115l166,2l29,-111"/>
+  <line x1="276.5" y1="153" x2="108.5" y2="24" stroke="#000" stroke-width="10" fill="none"/>
+  <g stroke-width="15" stroke="#00f" fill="#0ff">
+   <circle r="30" cy="41" cx="123"/>
+   <circle r="30" cy="146" cx="40"/>
+   <circle r="30" cy="260" cx="69"/>
+   <circle r="30" cy="260" cx="228"/>
+   <circle r="30" cy="148" cx="260"/>
+  </g>
+  <g  stroke="#A00" stroke-width="15" fill="none">
+   <line x1="168" y1="24" x2="210" y2="150"/>
+   <line x1="210" y1="24" x2="168" y2="150"/>
+  </g>
+ </g>
+</svg>
+</g>
+
+
+<g id="image">
+<svg id="eye-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+	x="0px" y="0px" width="27px" height="27px"
+>
+	<g id="Layer%201">
+			<path fill="#2F2F2C" d="M23.377,8.006H3.624v13.602h19.753V8.006z M19.849,9.676c0.91,0,1.646,0.748,1.646,1.67s-0.736,1.671-1.646,1.671c-0.908,0-1.646-0.749-1.646-1.671S18.94,9.676,19.849,9.676z M5.034,20.175L9.972,9.438l5.173,7.158l2.587-2.147l4.233,5.727H5.034z"/>
+			<path fill="#2F2F2C" d="M0,0v27h27V0H0z M25.258,23.517H1.742V6.097h23.516V23.517z"/>
+	</g>
+</svg>
+</g>
+
+<g id="zoom">
+<svg id="eye-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+	x="0px" y="0px" width="27px" height="27px"
+>
+	<circle fill="#2F2F2C" cx="10.887" cy="10.887" r="6.532"/>
+	<path fill="#2F2F2C" d="M0,0v27h27V0H0z M15.373,18.856c-1.326,0.747-2.855,1.176-4.486,1.176c-5.051,0-9.145-4.095-9.145-9.145
+		c0-5.051,4.094-9.145,9.145-9.145c5.05,0,9.145,4.094,9.145,9.145c0,2.081-0.697,3.999-1.868,5.536l6.223,6.223l-2.612,2.612
+		L15.373,18.856z"/>
+</svg>
+</g>
+
+<g id="arrow_right">
+	<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 25 50">
+	  <path stroke="none" fill="#ccc" d="m0,0l0,50l25,-25l-25,-25z"/>
+	</svg>
+</g>
+
+<g id="arrow_right_big">
+	<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 50">
+	  <path stroke="none" fill="#ccc" d="m0,0l0,50l25,-25l-25,-25z"/>
+	</svg>
+</g>
+
+<g id="arrow_down">
+	<svg viewBox="0 0 50 40" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+	  <path transform="rotate(90, 26, 13)" d="m14,-12l0,50l25,-25l-25,-25z" fill="#ccc" stroke="none"/>
+	</svg>
+</g>
+
+<g id="align_left">
+	<svg viewBox="0 0 27 27"  version="1.1"
+		xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+		x="0px" y="0px" width="27px" height="27px"
+	>
+		<path d="M 2 1 L 2 5 L 14 5 L 14 11 L 2 11 L 2 16 L 20 16 L 20 22 L 2 22 L 2 26 L 1 26 L 1 1 L 2 1 ZM 27 0 L 0 0 L 0 27 L 27 27 L 27 0 Z" fill="#3f3f3c"/>
+	</svg>
+</g>
+
+<g id="align_center">
+	<svg viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+		xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+		x="0px" y="0px" width="27px" height="27px">
+			<path d="M 13 1 L 14 1 L 14 6 L 22 6 L 22 12 L 14 12 L 14 15 L 19 15 L 19 21 L 14 21 L 14 26 L 13 26 L 13 21 L 8 21 L 8 15 L 13 15 L 13 12 L 5 12 L 5 6 L 13 6 L 13 1 ZM 0 0 L 0 27 L 27 27 L 27 0 L 0 0 Z" fill="#3f3f3c"/>
+
+	</svg>
+</g>
+
+<g id="align_right">
+	<svg viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+		xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+		x="0px" y="0px" width="27px" height="27px"
+	>
+		<path d="M 25 1 L 25 5 L 13 5 L 13 11 L 25 11 L 25 16 L 7 16 L 7 22 L 25 22 L 25 26 L 26 26 L 26 1 L 25 1 ZM 0 0 L 27 0 L 27 27 L 0 27 L 0 0 Z" fill="#3f3f3c"/>
+	</svg>
+</g>
+
+<g id="align_top">
+	<svg id="Untitled-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+		xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+		x="0px" y="0px" width="27px" height="27px"
+	>
+		<path d="M 1 2 L 5 2 L 5 14 L 11 14 L 11 2 L 16 2 L 16 20 L 22 20 L 22 2 L 26 2 L 26 1 L 1 1 L 1 2 ZM 0 27 L 0 0 L 27 0 L 27 27 L 0 27 Z" fill="#3f3f3c"/>
+	</svg>
+</g>
+
+<g id="align_middle">
+<svg id="Untitled-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+	x="0px" y="0px" width="27px" height="27px"
+>
+	<path d="M 26 13 L 26 14 L 21 14 L 21 22 L 15 22 L 15 14 L 12 14 L 12 19 L 6 19 L 6 14 L 1 14 L 1 13 L 6 13 L 6 8 L 12 8 L 12 13 L 15 13 L 15 5 L 21 5 L 21 13 L 26 13 ZM 27 0 L 0 0 L 0 27 L 27 27 L 27 0 Z" fill="#3f3f3c"/>
+</svg>
+</g>
+
+<g id="align_bottom">
+<svg id="Untitled-Page%201" viewBox="0 0 27 27" style="background-color:#ffffff00" version="1.1"
+	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+	x="0px" y="0px" width="27px" height="27px"
+>
+	<path d="M 1 25 L 5 25 L 5 13 L 11 13 L 11 25 L 16 25 L 16 7 L 22 7 L 22 25 L 26 25 L 26 26 L 1 26 L 1 25 ZM 0 0 L 0 27 L 27 27 L 27 0 L 0 0 Z" fill="#3f3f3c"/>
+</svg>
+</g>
+
+<g id="linecap_butt">
+<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg" xmlns:se="http://svg-edit.googlecode.com" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
+ <defs>
+  <linearGradient id="svg_8" x1="0.8" y1="1" x2="0.2" y2="1">
+   <stop offset="0" stop-color="#2f2f2c" stop-opacity="1"/>
+   <stop offset="1" stop-color="#2f2f2c" stop-opacity="0"/>
+  </linearGradient>
+ </defs>
+ <g>
+  <rect fill="url(#svg_8)" stroke="#a0a0a0" stroke-width="2" x="-15.20196" y="43.5974" width="94.8373" height="50.3728" id="svg_3" transform="rotate(-45, 32.2148, 68.7832)"/>
+  <path id="svg_1" d="m6.63133,95.07755l59.17514,-59.17514" stroke-width="3" stroke="#00ffff" fill="none"/>
+  <path id="svg_2" d="m51.62893,36.10742l13.05662,-13.05662l13.05661,13.05662l-13.05661,13.05662l-13.05662,-13.05662z" stroke="none" fill="#00ffff"/>
+ </g>
+</svg>
+</g>
+
+<g id="linecap_square">
+<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg" xmlns:se="http://svg-edit.googlecode.com" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
+ <defs>
+  <linearGradient id="svg_8" x1="0.8" y1="1" x2="0.2" y2="1">
+   <stop offset="0" stop-color="#2f2f2c" stop-opacity="1"/>
+   <stop offset="1" stop-color="#2f2f2c" stop-opacity="0"/>
+  </linearGradient>
+ </defs>
+ <g>
+  <rect fill="url(#svg_8)" stroke="none" x="-18.51568" y="35.5974" width="117.46469" height="50.3728" id="svg_3" transform="rotate(-45, 40.2168, 60.7832)"/>
+  <path id="svg_1" d="m6.63133,95.07755l59.17514,-59.17514" stroke-width="3" stroke="#00ffff" fill="none"/>
+  <path id="svg_2" d="m51.62893,36.10742l13.05662,-13.05662l13.05661,13.05662l-13.05661,13.05662l-13.05662,-13.05662z" stroke="none" fill="#00ffff"/>
+ </g>
+</svg>
+</g>
+
+<g id="linecap_round">
+<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:se="http://svg-edit.googlecode.com">
+ <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
+ <defs>
+  <linearGradient y2="1" x2="0.2" y1="1" x1="0.8" id="svg_8">
+   <stop stop-opacity="1" stop-color="#2f2f2c" offset="0"/>
+   <stop stop-opacity="0" stop-color="#2f2f2c" offset="1"/>
+  </linearGradient>
+ </defs>
+ <g>
+  <path transform="rotate(-45, 41.5117, 59.4648)" id="svg_3" d="m-19.0679,34.2946l94.8359,0c36.499,-1.4142 33.67101,48.9569 0,50.3711l-94.8359,0l0,-50.3711z" stroke-width="2" stroke="#a0a0a0" fill="url(#svg_8)"/>
+  <path id="svg_1" d="m6.63133,95.07755l59.17515,-59.17515" stroke-width="3" stroke="#00ffff" fill="none"/>
+  <path id="svg_2" d="m51.62893,36.10742l13.05662,-13.05662l13.05661,13.05662l-13.05661,13.05662l-13.05662,-13.05662z" stroke="none" fill="#00ffff"/>
+ </g>
+</svg>
+</g>
+
+<g id="linejoin_miter">
+<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:se="http://svg-edit.googlecode.com">
+ <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
+ <defs>
+  <linearGradient y2="1" x2="0.2" y1="1" x1="0.8" id="svg_8">
+   <stop stop-opacity="1" stop-color="#2f2f2c" offset="0"/>
+   <stop stop-opacity="0" stop-color="#2f2f2c" offset="1"/>
+  </linearGradient>
+ </defs>
+ <g>
+  <path fill="none" stroke="url(#svg_8)" stroke-width="49" d="m-15,-35l75,85l-75,75" id="svg_6"/>
+  <path transform="rotate(90, 57.8925, 50.2519)" fill="#00ffff" stroke="none" d="m44.83592,50.25187l13.05661,-13.05663l13.05661,13.05663l-13.05661,13.05662l-13.05661,-13.05662z" id="svg_2"/>
+  <path id="svg_4" d="m-15,-35l75,85l-75,75" stroke-width="3" stroke="#00ffff" fill="none"/>
+ </g>
+</svg>
+</g>
+
+<g id="linejoin_bevel">
+<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:se="http://svg-edit.googlecode.com">
+ <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
+ <defs>
+  <linearGradient y2="1" x2="0.2" y1="1" x1="0.8" id="svg_8">
+   <stop stop-opacity="1" stop-color="#2f2f2c" offset="0"/>
+   <stop stop-opacity="0" stop-color="#2f2f2c" offset="1"/>
+  </linearGradient>
+ </defs>
+ <g>
+  <path stroke-linejoin="bevel" fill="none" stroke="url(#svg_8)" stroke-width="49" d="m-15,-35l75,85l-75,75" id="svg_6"/>
+  <path transform="rotate(90, 57.8925, 50.2519)" fill="#00ffff" stroke="none" d="m44.83592,50.25187l13.05661,-13.05663l13.05661,13.05663l-13.05661,13.05662l-13.05661,-13.05662z" id="svg_2"/>
+  <path id="svg_4" d="m-15,-35l75,85l-75,75" stroke-width="3" stroke="#00ffff" fill="none"/>
+ </g>
+</svg>
+</g>
+
+<g id="linejoin_round">
+<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:se="http://svg-edit.googlecode.com">
+ <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
+ <defs>
+  <linearGradient y2="1" x2="0.2" y1="1" x1="0.8" id="svg_8">
+   <stop stop-opacity="1" stop-color="#2f2f2c" offset="0"/>
+   <stop stop-opacity="0" stop-color="#2f2f2c" offset="1"/>
+  </linearGradient>
+ </defs>
+ <g>
+  <path stroke-linejoin="round" fill="none" stroke="url(#svg_8)" stroke-width="49" d="m-15,-35l75,85l-75,75" id="svg_6"/>
+  <path transform="rotate(90, 57.8925, 50.2519)" fill="#00ffff" stroke="none" d="m44.83592,50.25187l13.05661,-13.05663l13.05661,13.05663l-13.05661,13.05662l-13.05661,-13.05662z" id="svg_2"/>
+  <path id="svg_4" d="m-15,-35l75,85l-75,75" stroke-width="3" stroke="#00ffff" fill="none"/>
+ </g>
+</svg>
+</g>
+
+
+<g id="no_color">
+	<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+	  <line fill="none" stroke="#d40000" id="svg_90" y2="24" x2="24" y1="0" x1="0"/>
+	  <line id="svg_92" fill="none" stroke="#d40000" y2="24" x2="0" y1="0" x1="24"/>
+	</svg>
+</g>
+
+
+<g id="node_delete">
+<svg width="24" height="24" xmlns="http://www.w3.org/2000/svg">
+  <path stroke-width="2" id="svg_102" d="m4.1953,19.42128c15.49391,-15.53349 -0.21065,0.1581 15.61084,-15.57944" stroke="#8dd35f" fill="none"/>
+  <circle stroke-width="0.5" id="svg_121" stroke="#0000ff" fill="#00ffff" r="2.26172" cy="4" cx="19.75"/>
+  <circle id="svg_123" stroke-width="0.5" stroke="#0000ff" fill="#00ffff" r="2.26172" cy="19.40299" cx="4.0653"/>
+  <circle id="svg_7" stroke-width="0.5" stroke="#0000ff" fill="#00ffff" r="2.26172" cy="11.625" cx="11.9375"/>
+  <g transform="rotate(-45.291072845458984 9.81157112121582,9.244086265563965) " id="svg_6">
+   <line stroke-linecap="round" id="svg_4" y2="9.45264" x2="15.14996" y1="9.3943" x1="4.47318" stroke-dasharray="null" stroke-width="2" stroke="#ff0000" fill="none"/>
+   <line stroke-linecap="round" id="svg_5" y2="14.46579" x2="9.66571" y1="4.02238" x1="9.7824" stroke-dasharray="null" stroke-width="2" stroke="#ff0000" fill="none"/>
+  </g>
+</svg>
+</g>
+
+<g id="node_clone">
+<svg width="24" height="24" xmlns="http://www.w3.org/2000/svg">
+  <path stroke-width="2" id="svg_102" d="m4.1953,19.42128c15.49391,-15.53349 -0.21065,0.1581 15.61084,-15.57944" stroke="#8dd35f" fill="none"/>
+  <circle stroke-width="0.5" id="svg_121" stroke="#0000ff" fill="#00ffff" r="2.26172" cy="4" cx="19.75"/>
+  <circle id="svg_123" stroke-width="0.5" stroke="#0000ff" fill="#00ffff" r="2.26172" cy="19.40299" cx="4.0653"/>
+  <circle id="svg_7" stroke-width="0.5" stroke="#0000ff" fill="#00ffff" r="2.26172" cy="11.625" cx="11.9375"/>
+  <line stroke-linecap="round" id="svg_5" y2="14.46579" x2="9.66571" y1="4.02238" x1="9.7824" stroke-dasharray="null" stroke-width="2" stroke="#0000ff" fill="#0000ff"/>
+  <line stroke-linecap="round" id="svg_4" y2="9.45264" x2="15.14996" y1="9.3943" x1="4.47318" stroke-dasharray="null" stroke-width="2" stroke="#0000ff" fill="#0000ff"/>
+</svg>
+</g>
+
+
+
+<g id="svg_eof"/>
+
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/text.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/text.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/text.svg	(revision 29468)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="27px" height="27px" viewBox="0 0 27 27" enable-background="new 0 0 27 27" xml:space="preserve">
+<path fill="#2F2F2C" d="M0,0v27h27V0H0z M7.283,25.258v-1.741h0.539c1.133,0,1.879-0.204,2.224-0.64
+	c0.345-0.422,0.525-1.157,0.525-2.191V4.355H8.733c-1.105,0-1.906,0.123-2.417,0.367C5.791,4.967,5.362,5.443,5.017,6.151
+	C4.658,6.873,4.451,7.73,4.381,8.709H2.613V2.613h21.774v6.097H22.48c-0.359-1.701-0.87-2.858-1.52-3.457s-1.686-0.898-3.108-0.898
+	h-1.976v16.331c0,1.062,0.165,1.81,0.525,2.218c0.358,0.409,1.104,0.613,2.236,0.613h0.595v1.741H7.283z"/>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/zoom.svg
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/zoom.svg	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/images/zoom.svg	(revision 29468)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="27px" height="27px" viewBox="0 0 27 27" enable-background="new 0 0 27 27" xml:space="preserve">
+<g>
+	<circle fill="#2F2F2C" cx="10.887" cy="10.887" r="6.532"/>
+	<path fill="#2F2F2C" d="M0,0v27h27V0H0z M15.373,18.856c-1.326,0.747-2.855,1.176-4.486,1.176c-5.051,0-9.145-4.095-9.145-9.145
+		c0-5.051,4.094-9.145,9.145-9.145c5.05,0,9.145,4.094,9.145,9.145c0,2.081-0.697,3.999-1.868,5.536l6.223,6.223l-2.612,2.612
+		L15.373,18.856z"/>
+</g>
+</svg>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/index.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/index.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/index.html	(revision 29468)
@@ -0,0 +1,631 @@
+<!DOCTYPE html>
+<html>
+<!-- removed for now, causes problems in Firefox: manifest="svg-editor.manifest" -->
+<head>
+<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
+<meta http-equiv="X-UA-Compatible" content="chrome=1"/>
+<link rel="icon" type="image/png" href="images/logo.png"/>
+
+<!--{if svg_edit_release}-->
+  <link rel="stylesheet" href="css/method-draw.compiled.css" type="text/css"/>
+<!--{else}>
+  <link rel="stylesheet" href="lib/jgraduate/css/jPicker.css" type="text/css"/>
+  <link rel="stylesheet" href="lib/jgraduate/css/jgraduate.css" type="text/css"/>
+  <link rel="stylesheet" href="css/method-draw.css" type="text/css"/>
+  <link rel="stylesheet" href="css/fonts.css" type="text/css"/>
+<!{endif}-->
+  <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=no;"/>
+  <meta name="apple-mobile-web-app-capable" content="yes"/>
+
+
+  <script type="text/javascript" src="lib/jquery.js"></script>
+
+
+<!--{if svg_edit_release}-->
+  <script type="text/javascript" src="method-draw.compiled.js"></script>
+<!--{else}>
+  <script type="text/javascript" src="lib/touch.js"></script>
+  <script type="text/javascript" src="lib/js-hotkeys/jquery.hotkeys.min.js"></script>
+  <script type="text/javascript" src="lib/jquerybbq/jquery.bbq.min.js"></script>
+  <script type="text/javascript" src="icons/jquery.svgicons.js"></script>
+  <script type="text/javascript" src="lib/jgraduate/jquery.jgraduate.js"></script>
+  <script type="text/javascript" src="lib/contextmenu/jquery.contextMenu.js"></script>
+  <script type="text/javascript" src="lib/jquery-ui/jquery-ui-1.8.17.custom.min.js"></script>
+  <script type="text/javascript" src="src/browser.js"></script>
+  <script type="text/javascript" src="src/svgtransformlist.js"></script>
+  <script type="text/javascript" src="src/math.js"></script>
+  <script type="text/javascript" src="src/units.js"></script>
+  <script type="text/javascript" src="src/svgutils.js"></script>
+  <script type="text/javascript" src="src/sanitize.js"></script>
+  <script type="text/javascript" src="src/history.js"></script>
+  <script type="text/javascript" src="src/select.js"></script>
+  <script type="text/javascript" src="src/draw.js"></script>
+  <script type="text/javascript" src="src/path.js"></script>
+  <script type="text/javascript" src="src/dialog.js"></script>
+  <script type="text/javascript" src="src/svgcanvas.js"></script>
+  <script type="text/javascript" src="src/method-draw.js"></script>
+  <script type="text/javascript" src="lib/jquery-draginput.js"></script>
+  <script type="text/javascript" src="lib/contextmenu.js"></script>
+  <script type="text/javascript" src="lib/jgraduate/jpicker.min.js"></script>
+  <script type="text/javascript" src="lib/mousewheel.js"></script>
+  <script type="text/javascript" src="extensions/ext-eyedropper.js"></script>
+  <script type="text/javascript" src="extensions/ext-shapes.js"></script>
+  <script type="text/javascript" src="extensions/ext-grid.js"></script>
+  <script type="text/javascript" src="lib/requestanimationframe.js"></script>
+  <script type="text/javascript" src="lib/taphold.js"></script>
+<!{endif}-->
+
+
+<title>Method Draw</title>
+</head>
+<body>
+<div id="svg_editor">
+
+<div id="rulers">
+	<div id="ruler_corner"></div>
+	<div id="ruler_x">
+	  <div id="ruler_x_cursor"></div>
+		<div>
+			<canvas height="15"></canvas>
+		</div>
+	</div>
+	<div id="ruler_y">
+	  <div id="ruler_y_cursor"></div>
+		<div>
+			<canvas width="15"></canvas>
+		</div>
+	</div>
+</div>
+
+<div id="workarea">
+<div id="svgcanvas" style="position:relative">
+
+</div>
+</div>
+
+<div id="menu_bar">
+  <a class="menu">
+    <div class="menu_title" id="logo"></div>
+    <div class="menu_list">
+      <div id="tool_about" class="menu_item">About this Editor...</div>
+      <div class="separator"></div>
+      <div id="tool_about" class="menu_item">Keyboard Shortcus...</div>
+    </div>
+  </a>
+  
+  <div class="menu">
+  	<div class="menu_title">File</div>
+  	<div class="menu_list" id="file_menu"> 
+  		<div id="tool_clear" class="menu_item">New Document</div>
+  		<div id="tool_open" class="menu_item" style="display: none;"><div id="fileinputs"></div>Open SVG...</div>
+  		<div id="tool_import" class="menu_item" style="display: none;"><div id="fileinputs_import"></div>Import Image...</div>
+  		<div id="tool_save" class="menu_item">Save Image... <span class="shortcut">âS</span></div>
+  		<div id="tool_export" class="menu_item">Export as PNG</div>
+  	</div>
+  </div>
+
+  <div class="menu">
+    <div class="menu_title">Edit</div>
+  	<div class="menu_list" id="edit_menu">
+  		<div class="menu_item" id="tool_undo">Undo <span class="shortcut">âZ</span></div>
+  		<div class="menu_item" id="tool_redo">Redo <span class="shortcut">âY</span></div>
+  		<div class="separator"></div>
+  		<div class="menu_item action_selected disabled" id="tool_cut">Cut <span class="shortcut">âX</span></div>
+  		<div class="menu_item action_selected disabled" id="tool_copy">Copy <span class="shortcut">âC</span></div>
+			<div class="menu_item action_selected disabled" id="tool_paste">Paste <span class="shortcut">âV</span></div>
+  		<div class="menu_item action_selected disabled" id="tool_clone">Duplicate <span class="shortcut">âD</span></div>
+			<div class="menu_item action_selected disabled" id="tool_delete">Delete <span>â«</span></div>
+    </div>
+  </div>
+  
+  <div class="menu">
+    <div class="menu_title">Object</div>
+  	<div class="menu_list"  id="object_menu">
+			<div class="menu_item action_selected disabled" id="tool_move_top">Bring to Front <span class="shortcut">ââ§â</span></div>
+			<div class="menu_item action_selected disabled" id="tool_move_up">Bring Forward <span class="shortcut">ââ</span></div>
+			<div class="menu_item action_selected disabled" id="tool_move_down">Send Backward <span class="shortcut">ââ</span></div>
+			<div class="menu_item action_selected disabled" id="tool_move_bottom">Send to Back <span class="shortcut">ââ§â</span></div>
+			<div class="separator"></div>
+			<div class="menu_item action_multi_selected disabled" id="tool_group">Group Elements <span class="shortcut">âG</span></div>
+			<div class="menu_item action_group_selected disabled" id="tool_ungroup">Ungroup Elements <span class="shortcut">ââ§G</span></div>
+			<div class="separator"></div>
+			<div class="menu_item action_path_convert_selected disabled" id="tool_topath">Convert to Path</div>
+			<div class="menu_item action_path_selected disabled" id="tool_reorient">Reorient path</div>
+    </div>
+  </div>
+
+  <div class="menu">
+    <div class="menu_title">View</div>
+  	<div class="menu_list" id="view_menu">
+  	    <div class="menu_item push_button_pressed" id="tool_rulers">View Rulers</div>
+  	    <div class="menu_item" id="tool_wireframe">View Wireframe</div>
+  	    <div class="menu_item" id="tool_snap">Snap to Grid</div>
+  	    <div class="separator"></div>
+    		<div class="menu_item" id="tool_source">Source... <span class="shortcut">âU</span></div>
+    </div>
+  </div>
+  
+
+  
+</div>
+
+<div id="tools_top" class="tools_panel">
+
+	<div id="canvas_panel" class="context_panel">
+	  
+	  <h4 class="clearfix">Canvas</h4>
+	  
+		<label data-title="Change canvas width">
+			<input size="3" id="canvas_width" type="text" pattern="[0-9]*" />
+			<span class="icon_label">Width</span>
+		</label>
+		<label data-title="Change canvas height">
+			<input id="canvas_height" size="3" type="text" pattern="[0-9]*" />
+			<span class="icon_label">Height</span>
+		</label>
+		  	
+  	
+  	<label data-title="Change canvas color" class="draginput">
+    	<span>Color</span>
+  		<div id="color_canvas_tools">
+  		  <div class="color_tool active" id="tool_canvas">
+    		  <div class="color_block">
+    			  <div id="canvas_bg"></div>
+    			  <div id="canvas_color"></div>
+    		  </div>
+    		</div>
+    	</div>
+  	</label>
+
+	  <div class="draginput">
+	    <span>Sizes</span>
+  		<select id="resolution">
+  			<option id="selectedPredefined" selected="selected">Custom</option>
+  			<option>640x480</option>
+  			<option>800x600</option>
+  			<option>1024x768</option>
+  			<option>1280x960</option>
+  			<option>1600x1200</option>
+  			<option id="fitToContent" value="content">Fit to Content</option>
+  		</select>
+  		<div class="caret"></div>
+  		<label id="resolution_label">Custom</label>
+		</div>
+
+	</div>
+	
+	<div id="rect_panel" class="context_panel">
+	  <h4 class="clearfix">Rectangle</h4>
+	  <label>
+			<input id="rect_x" class="attr_changer" data-title="Change X coordinate" size="3" data-attr="x" pattern="[0-9]*" />
+			<span>X</span> 
+		</label>
+		<label>
+		  <input id="rect_y" class="attr_changer" data-title="Change Y coordinate" size="3" data-attr="y" pattern="[0-9]*" />
+			<span>Y</span> 
+		</label>
+		<label id="rect_width_tool attr_changer" data-title="Change rectangle width">
+			<input id="rect_width" class="attr_changer" size="3" data-attr="width" type="text" pattern="[0-9]*" />
+			<span class="icon_label">Width</span>
+		</label>
+		<label id="rect_height_tool" data-title="Change rectangle height">
+			<input id="rect_height" class="attr_changer" size="3" data-attr="height" type="text" pattern="[0-9]*" />
+			<span class="icon_label">Height</span>
+		</label>
+	</div>
+	
+	<div id="path_panel" class="context_panel clearfix">
+	  <h4 class="clearfix">Path</h4>
+	  <label>
+		  <input id="path_x" class="attr_changer" data-title="Change ellipse's cx coordinate" size="3" data-attr="x" pattern="[0-9]*" />
+		  <span>X</span>
+		</label>
+		<label>
+		  <input id="path_y" class="attr_changer" data-title="Change ellipse's cy coordinate" size="3" data-attr="y" pattern="[0-9]*" />
+		  <span>Y</span>
+		</label>
+	</div>
+
+	<div id="image_panel" class="context_panel clearfix">
+	<h4>Image</h4>
+		<label>
+			<input id="image_x" class="attr_changer" data-title="Change X coordinate" size="3" data-attr="x"  pattern="[0-9]*"/>
+		  <span>X</span> 
+		</label>
+		<label>
+		  <input id="image_y" class="attr_changer" data-title="Change Y coordinate" size="3" data-attr="y"  pattern="[0-9]*"/>
+		  <span>Y</span> 
+		</label>
+		<label>
+		  <input id="image_width" class="attr_changer" data-title="Change image width" size="3" data-attr="width" pattern="[0-9]*" />
+		  <span class="icon_label">Width</span>
+		</label>
+		<label>
+		  <input id="image_height" class="attr_changer" data-title="Change image height" size="3" data-attr="height" pattern="[0-9]*" />
+		  <span class="icon_label">Height</span>
+		</label>
+  </div>
+  
+  <div id="circle_panel" class="context_panel">
+    <h4>Circle</h4>
+		<label id="tool_circle_cx">
+		  <span>Center X</span>
+		  <input id="circle_cx" class="attr_changer" title="Change circle's cx coordinate" size="3" data-attr="cx"/>
+		</label>
+		<label id="tool_circle_cy">
+		  <span>Center Y</span>
+		  <input id="circle_cy" class="attr_changer" title="Change circle's cy coordinate" size="3" data-attr="cy"/>
+		</label>
+		<label id="tool_circle_r">
+		  <span>Radius</span>
+		  <input id="circle_r" class="attr_changer" title="Change circle's radius" size="3" data-attr="r"/>
+		</label>
+	</div>
+
+	<div id="ellipse_panel" class="context_panel clearfix">
+	  <h4>Ellipse</h4>
+		<label id="tool_ellipse_cx">
+		  <input id="ellipse_cx" class="attr_changer" data-title="Change ellipse's cx coordinate" size="3" data-attr="cx" pattern="[0-9]*" />
+		  <span>X</span>
+		</label>
+		<label id="tool_ellipse_cy">
+		  <input id="ellipse_cy" class="attr_changer" data-title="Change ellipse's cy coordinate" size="3" data-attr="cy" pattern="[0-9]*" />
+		  <span>Y</span>
+		</label>
+		<label id="tool_ellipse_rx">
+		  <input id="ellipse_rx" class="attr_changer" data-title="Change ellipse's x radius" size="3" data-attr="rx" pattern="[0-9]*" />
+	    <span>Radius X</span>
+		</label>
+		<label id="tool_ellipse_ry">
+		  <input id="ellipse_ry" class="attr_changer" data-title="Change ellipse's y radius" size="3" data-attr="ry" pattern="[0-9]*" />
+		  <span>Radius Y</span>
+		</label>
+	</div>
+
+	<div id="line_panel" class="context_panel clearfix">
+	  <h4>Line</h4>
+		<label id="tool_line_x1">
+		  <input id="line_x1" class="attr_changer" data-title="Change line's starting x coordinate" size="3" data-attr="x1" pattern="[0-9]*" />
+		  <span>Start X</span>
+		</label>
+		<label id="tool_line_y1">
+		  <input id="line_y1" class="attr_changer" data-title="Change line's starting y coordinate" size="3" data-attr="y1" pattern="[0-9]*" />
+		  <span>Start Y</span>
+		</label>
+		<label id="tool_line_x2">
+		  <input id="line_x2" class="attr_changer" data-title="Change line's ending x coordinate" size="3" data-attr="x2"   pattern="[0-9]*" />
+		  <span>End X</span>
+		</label>
+		<label id="tool_line_y2">
+		  <input id="line_y2" class="attr_changer" data-title="Change line's ending y coordinate" size="3" data-attr="y2"   pattern="[0-9]*" />
+		  <span>End Y</span>
+		</label>
+	</div>
+
+	<div id="text_panel" class="context_panel">
+	  <h4>Text</h4>
+		<label>
+		  <input id="text_x" class="attr_changer" data-title="Change text x coordinate" size="3" data-attr="x" pattern="[0-9]*" />
+		  <span>X</span>
+		</label>
+		<label>
+		  <input id="text_y" class="attr_changer" data-title="Change text y coordinate" size="3" data-attr="y" pattern="[0-9]*" />
+		  <span>Y</span>
+		</label>
+		
+		<div class="toolset draginput select twocol" id="tool_font_family">
+				<!-- Font family -->
+			<span>Font</span>
+		  <div id="preview_font" style="font-family: Helvetica, Arial, sans-serif;">Helvetica</div>
+		  <div class="caret"></div>
+			<input id="font_family" data-title="Change Font Family" size="12" type="hidden" />
+			<select id="font_family_dropdown">
+				  <option value="Helvetica, Arial, sans-serif" selected="selected">Helvetica</option>
+					<!--<option value="Arvo, sans-serif">Arvo</option>
+					<option value="Euphoria, sans-serif">Euphoria</option>
+					<option value="Oswald, sans-serif">Oswald</option>
+					<option value="'Shadows Into Light', serif">Shadows Into Light</option>
+					<option value="'Simonetta', serif">Simonetta</option>-->
+					<option value="'Trebuchet MS', Gadget, sans-serif">Trebuchet</option>
+					<option value="Georgia, Times, 'Times New Roman', serif">Georgia</option>
+					<option value="'Palatino Linotype', 'Book Antiqua', Palatino, serif">Palatino</option>
+					<option value="'Times New Roman', Times, serif">Times</option>
+					<option value="'Courier New', Courier, monospace">Courier</option>
+			</select>
+      <div class="tool_button" id="tool_bold" data-title="Bold Text [B]">B</div>
+      <div class="tool_button" id="tool_italic" data-title="Italic Text [I]">i</div>
+		</div>
+
+		<label id="tool_font_size" data-title="Change Font Size">
+			<input id="font_size" size="3" value="0" />
+			<span id="font_sizeLabel" class="icon_label">Font Size</span>
+		</label>
+		<!-- Not visible, but still used -->
+		<input id="text" type="text" size="35"/>
+	</div>
+
+	<!-- formerly gsvg_panel -->
+	<div id="container_panel" class="context_panel clearfix">
+	</div>
+	
+	<div id="use_panel" class="context_panel clearfix">
+		<div class="tool_button clearfix" id="tool_unlink_use" data-title="Break link to reference element (make unique)">Break link reference</div>
+	</div>
+	
+	<div id="g_panel" class="context_panel clearfix">
+		<h4>Group</h4>
+		<label>
+		  <input id="g_x" class="attr_changer" data-title="Change groups's x coordinate" size="3" data-attr="x" pattern="[0-9]*" />
+		  <span>X</span>
+		</label>
+		<label>
+		  <input id="g_y" class="attr_changer" data-title="Change groups's y coordinate" size="3" data-attr="y" pattern="[0-9]*" />
+		  <span>Y</span>
+		</label>
+	</div>
+	
+	<div id="path_node_panel" class="context_panel clearfix">
+	  <h4>Edit Path</h4>
+
+		<label id="tool_node_x">
+			<input id="path_node_x" class="attr_changer" data-title="Change node's x coordinate" size="3" data-attr="x" />
+		  <span>X</span>
+		</label>
+		<label id="tool_node_y">
+			<input id="path_node_y" class="attr_changer" data-title="Change node's y coordinate" size="3" data-attr="y" />
+		  <span>Y</span>
+		</label>
+		
+		<div id="segment_type" class="draginput label">
+		  <span>Segment Type</span>
+  		<select id="seg_type" data-title="Change Segment type">
+  			<option id="straight_segments" selected="selected" value="4">Straight</option>
+  			<option id="curve_segments" value="6">Curve</option>
+  		</select>
+  		<div class="caret"></div>
+  		<label id="seg_type_label">Straight</label>
+		</div>
+		
+		<!--
+		<label class="draginput checkbox" data-title="Link Control Points">
+		  <span>Linked Control Points</span>
+		  <div class="push_bottom"><input type="checkbox" id="tool_node_link" checked="checked" /></div>
+		</label>
+	-->
+		
+		<div class="clearfix"></div>
+		<div class="tool_button" id="tool_node_clone" title="Adds a node">Add Node</div>
+		<div class="tool_button" id="tool_node_delete" title="Delete Node">Delete Node</div>
+		<div class="tool_button" id="tool_openclose_path" title="Open/close sub-path">Open Path</div>
+		<!--<div class="tool_button" id="tool_add_subpath" title="Add sub-path"></div>-->
+	</div>
+	
+	<!-- Buttons when a single element is selected -->
+	<div id="selected_panel" class="context_panel">
+
+		<label id="tool_angle" data-title="Change rotation angle" class="draginput">
+			<input id="angle" class="attr_changer" size="2" value="0" data-attr="transform" data-min="-180" data-max="180" type="text"/>
+			<span class="icon_label">Rotation</span>
+			<div id="tool_angle_indicator">
+			  <div id="tool_angle_indicator_cursor"></div>
+			</div>
+		</label>
+		
+			<label class="toolset" id="tool_opacity" data-title="Change selected item opacity">
+  			<input id="group_opacity" class="attr_changer" data-attr="opacity" data-multiplier="0.01" size="3" value="100" step="5" min="0" max="100" />
+  		  <span id="group_opacityLabel" class="icon_label">Opacity</span>
+  		</label>
+		
+		<div class="toolset" id="tool_blur" data-title="Change gaussian blur value">
+			<label>
+				<input id="blur" size="2" value="0" step=".1"  min="0" max="10" />
+			  <span class="icon_label">Blur</span>
+			</label>
+		</div>
+		
+		<label id="cornerRadiusLabel" data-title="Change Rectangle Corner Radius">
+			<input id="rect_rx" size="3" value="0" data-attr="rx" class="attr_changer" type="text" pattern="[0-9]*" />
+		  <span class="icon_label">Roundness</span>
+		</label>
+		
+		<div class="clearfix"></div>
+		<div id="align_tools">
+  		<h4>Align</h4>
+  		<div class="toolset align_buttons" id="tool_position">
+  				<label>
+  				  <div class="col last clear" id="position_opts">
+    				  <div class="draginput_cell" id="tool_posleft" title="Align Left"></div>
+          		<div class="draginput_cell" id="tool_poscenter" title="Align Center"></div>
+          		<div class="draginput_cell" id="tool_posright" title="Align Right"></div>
+          		<div class="draginput_cell" id="tool_postop" title="Align Top"></div>
+          		<div class="draginput_cell" id="tool_posmiddle" title="Align Middle"></div>
+          		<div class="draginput_cell" id="tool_posbottom" title="Align Bottom"></div>
+    				</div>
+  				</label>
+  		</div>		
+  	</div>
+	</div>
+	
+	<!-- Buttons when multiple elements are selected -->
+	<div id="multiselected_panel" class="context_panel clearfix">
+	  <h4 class="hidable">Multiple Elements</h4>
+	  
+		<div class="toolset align_buttons" style="position: relative">
+		  <label id="tool_align_relative" style="margin-top: 10px;"> 
+  			<select id="align_relative_to" title="Align relative to ...">
+  			<option id="selected_objects" value="selected">Align to objects</option>
+  			<option id="page" value="page">Align to page</option>
+  			</select>
+  		</label>
+		  <h4>.</h4>
+    		<div class="col last clear">
+      		<div class="draginput_cell" id="tool_alignleft" title="Align Left"></div>
+      		<div class="draginput_cell" id="tool_aligncenter" title="Align Center"></div>
+      		<div class="draginput_cell" id="tool_alignright" title="Align Right"></div>
+      		<div class="draginput_cell" id="tool_aligntop" title="Align Top"></div>
+      		<div class="draginput_cell" id="tool_alignmiddle" title="Align Middle"></div>
+      		<div class="draginput_cell" id="tool_alignbottom" title="Align Bottom"></div>
+    		</div>
+		</div>
+		<div class="clearfix"></div>
+
+	</div>
+	
+	<div id="stroke_panel" class="context_panel clearfix">
+  	<div class="clearfix"></div>
+  	<h4>Stroke</h4>
+  	<div class="toolset" data-title="Change stroke">
+  		<label>
+  			<input id="stroke_width" size="2" value="5" data-attr="stroke-width" min="0" max="99" step="1" />
+  		  <span class="icon_label">Stroke Width</span>
+  		</label>
+  	</div>
+  	<div class="stroke_tool draginput"> 
+  	  <span>Stroke Dash</span>
+  		<select id="stroke_style" data-title="Change stroke dash style">
+  			<option selected="selected" value="none">â</option>
+  			<option value="2,2">Â·Â·Â·</option>
+  			<option value="5,5">- -</option>
+  			<option value="5,2,2,2">-Â·-</option>
+  			<option value="5,2,2,2,2,2">-Â·Â·-</option>
+  		</select>
+  		<div class="caret"></div>
+  		<label id="stroke_style_label">â</label>
+  	</div>
+		
+    <label style="display: none;">
+      <span class="icon_label">Stroke Join</span>
+    </label>
+    
+    <label  style="display: none;">
+      <span class="icon_label">Stroke Cap</span>
+  	</label>
+	</div>
+
+</div> <!-- tools_top -->
+	<div id="cur_context_panel">
+		
+	</div>
+
+
+<div id="tools_left" class="tools_panel">
+	<div class="tool_button" id="tool_select" title="Select Tool [V]"></div>
+	<div class="tool_button" id="tool_fhpath" title="Pencil Tool [P]"></div>
+	<div class="tool_button" id="tool_line" title="Line Tool [L]"></div>
+	<div class="tool_button" id="tool_rect" title="Square/Rect Tool [R]"></div>
+	<div class="tool_button" id="tool_ellipse" title="Ellipse/Circle Tool [C]"></div>
+	<div class="tool_button" id="tool_path" title="Path Tool [P]"></div>
+	<div class="tool_button" id="tool_text" title="Text Tool [T]"></div>
+	<div class="tool_button" id="tool_zoom" title="Zoom Tool [Z]"></div>
+	
+  <div id="color_tools">
+        <div id="tool_switch" title="Switch stroke and fill colors [X]"></div>
+  			<div class="color_tool active" id="tool_fill">
+  				<label class="icon_label" title="Change fill color"></label>
+				  <div class="color_block">
+					  <div id="fill_bg"></div>
+					  <div id="fill_color" class="color_block"></div>
+				  </div>
+  			</div>
+
+  			<div class="color_tool" id="tool_stroke">
+  					<label class="icon_label" title="Change stroke color"></label>
+  				<div class="color_block">
+  					<div id="stroke_bg"></div>
+  					<div id="stroke_color" class="color_block" title="Change stroke color"></div>
+  				</div>
+  			</div>
+	</div>
+</div> <!-- tools_left -->
+
+<div id="tools_bottom" class="tools_panel">
+
+    <!-- Zoom buttons -->
+	<div id="zoom_panel" class="toolset" title="Change zoom level">
+		<div class="draginput select" id="zoom_label">
+  		<span  id="zoomLabel" class="zoom_tool icon_label"></span>
+  		<select id="zoom_select">
+  		  <option value="6">6%</option>
+  		  <option value="12">12%</option>
+  		  <option value="16">16%</option>
+  		  <option value="25">25%</option>
+  		  <option value="50">50%</option>
+  		  <option value="75">75%</option>
+  		  <option value="100"  selected="selected">100%</option>
+  		  <option value="150">150%</option>
+  		  <option value="200">200%</option>
+  		  <option value="300">300%</option>
+  		  <option value="400">400%</option>
+  		  <option value="600">600%</option>
+  		  <option value="800">800%</option>
+  		  <option value="1600">1600%</option>
+  		</select>
+  		<div class="caret"></div>
+  		<input id="zoom" size="3" value="100%" type="text" readonly="readonly" />
+		</div>
+	</div>
+
+	<div id="tools_bottom_3">
+		<div id="palette" title="Click to change fill color, shift-click to change stroke color"></div>
+	</div>
+</div>
+
+<!-- hidden divs -->
+<div id="color_picker"></div>
+
+</div> <!-- svg_editor -->
+
+<div id="svg_source_editor">
+	<div id="svg_source_overlay"></div>
+	<div id="svg_source_container">
+		<div id="save_output_btns">
+			<p id="copy_save_note">Copy the contents of this box into a text editor, then save the file with a .svg extension.</p>
+			<button id="copy_save_done">Done</button>
+		</div>
+		<form>
+			<textarea id="svg_source_textarea" spellcheck="false"></textarea>
+		</form>
+		<div id="tool_source_back" class="toolbar_button">
+			<button id="tool_source_cancel" class="cancel">Cancel</button>
+			<button id="tool_source_save" class="ok">Apply Changes</button>
+		</div>
+	</div>
+</div>
+
+<div id="base_unit_container">
+  <select id="base_unit">
+  	<option value="px">Pixels</option>
+  	<option value="cm">Centimeters</option>
+  	<option value="mm">Millimeters</option>
+  	<option value="in">Inches</option>
+  	<option value="pt">Points</option>
+  	<option value="pc">Picas</option>
+  	<option value="em">Ems</option>
+  	<option value="ex">Exs</option>
+  </select>
+</div>
+
+<div id="dialog_box">
+	<div id="dialog_box_overlay"></div>
+	<div id="dialog_container">
+		<div id="dialog_content"></div>
+		<div id="dialog_buttons"></div>
+	</div>
+</div>
+
+<ul id="cmenu_canvas" class="contextMenu">
+	<li><a href="#cut">Cut <span class="shortcut">âX;</span></a></li>
+	<li><a href="#copy">Copy<span class="shortcut">âC</span></a></li>
+	<li><a href="#paste">Paste<span class="shortcut">âV</span></a></li>
+	<li class="separator"><a href="#delete">Delete<span class="shortcut">â«</span></a></li>
+	<li class="separator"><a href="#group">Group<span class="shortcut">âG</span></a></li>
+	<li><a href="#ungroup">Ungroup<span class="shortcut">ââ§G</span></a></li>
+  <li class="separator"><a href="#move_front">Bring to Front<span class="shortcut">ââ§â</span></a></li>
+	<li><a href="#move_up">Bring Forward<span class="shortcut">ââ</span></a></li>
+	<li><a href="#move_down">Send Backward<span class="shortcut">ââ</span></a></li>
+  <li><a href="#move_back">Send to Back<span class="shortcut">ââ§â</span></a></li>
+</ul>
+
+</body>
+</html>
+
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/canvg/canvg.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/canvg/canvg.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/canvg/canvg.js	(revision 29468)
@@ -0,0 +1,2620 @@
+/*
+ * canvg.js - Javascript SVG parser and renderer on Canvas
+ * MIT Licensed 
+ * Gabe Lerner (gabelerner@gmail.com)
+ * http://code.google.com/p/canvg/
+ *
+ * Requires: rgbcolor.js - http://www.phpied.com/rgb-color-parser-in-javascript/
+ */
+if(!window.console) {
+	window.console = {};
+	window.console.log = function(str) {};
+	window.console.dir = function(str) {};
+}
+
+if(!Array.prototype.indexOf){
+	Array.prototype.indexOf = function(obj){
+		for(var i=0; i<this.length; i++){
+			if(this[i]==obj){
+				return i;
+			}
+		}
+		return -1;
+	}
+}
+
+(function(){
+	// canvg(target, s)
+	// empty parameters: replace all 'svg' elements on page with 'canvas' elements
+	// target: canvas element or the id of a canvas element
+	// s: svg string, url to svg file, or xml document
+	// opts: optional hash of options
+	//		 ignoreMouse: true => ignore mouse events
+	//		 ignoreAnimation: true => ignore animations
+	//		 ignoreDimensions: true => does not try to resize canvas
+	//		 ignoreClear: true => does not clear canvas
+	//		 offsetX: int => draws at a x offset
+	//		 offsetY: int => draws at a y offset
+	//		 scaleWidth: int => scales horizontally to width
+	//		 scaleHeight: int => scales vertically to height
+	//		 renderCallback: function => will call the function after the first render is completed
+	//		 forceRedraw: function => will call the function on every frame, if it returns true, will redraw
+	this.canvg = function (target, s, opts) {
+		// no parameters
+		if (target == null && s == null && opts == null) {
+			var svgTags = document.getElementsByTagName('svg');
+			for (var i=0; i<svgTags.length; i++) {
+				var svgTag = svgTags[i];
+				var c = document.createElement('canvas');
+				c.width = svgTag.clientWidth;
+				c.height = svgTag.clientHeight;
+				svgTag.parentNode.insertBefore(c, svgTag);
+				svgTag.parentNode.removeChild(svgTag);
+				var div = document.createElement('div');
+				div.appendChild(svgTag);
+				canvg(c, div.innerHTML);
+			}
+			return;
+		}	
+		opts = opts || {};
+	
+		if (typeof target == 'string') {
+			target = document.getElementById(target);
+		}
+		
+		// reuse class per canvas
+		var svg;
+		if (target.svg == null) {
+			svg = build();
+			target.svg = svg;
+		}
+		else {
+			svg = target.svg;
+			svg.stop();
+		}
+		svg.opts = opts;
+		
+		var ctx = target.getContext('2d');
+		if (typeof(s.documentElement) != 'undefined') {
+			// load from xml doc
+			svg.loadXmlDoc(ctx, s);
+		}
+		else if (s.substr(0,1) == '<') {
+			// load from xml string
+			svg.loadXml(ctx, s);
+		}
+		else {
+			// load from url
+			svg.load(ctx, s);
+		}
+	}
+
+	function build() {
+		var svg = { };
+		
+		svg.FRAMERATE = 30;
+		svg.MAX_VIRTUAL_PIXELS = 30000;
+		
+		// globals
+		svg.init = function(ctx) {
+			svg.Definitions = {};
+			svg.Styles = {};
+			svg.Animations = [];
+			svg.Images = [];
+			svg.ctx = ctx;
+			svg.ViewPort = new (function () {
+				this.viewPorts = [];
+				this.Clear = function() { this.viewPorts = []; }
+				this.SetCurrent = function(width, height) { this.viewPorts.push({ width: width, height: height }); }
+				this.RemoveCurrent = function() { this.viewPorts.pop(); }
+				this.Current = function() { return this.viewPorts[this.viewPorts.length - 1]; }
+				this.width = function() { return this.Current().width; }
+				this.height = function() { return this.Current().height; }
+				this.ComputeSize = function(d) {
+					if (d != null && typeof(d) == 'number') return d;
+					if (d == 'x') return this.width();
+					if (d == 'y') return this.height();
+					return Math.sqrt(Math.pow(this.width(), 2) + Math.pow(this.height(), 2)) / Math.sqrt(2);			
+				}
+			});
+		}
+		svg.init();
+		
+		// images loaded
+		svg.ImagesLoaded = function() { 
+			for (var i=0; i<svg.Images.length; i++) {
+				if (!svg.Images[i].loaded) return false;
+			}
+			return true;
+		}
+
+		// trim
+		svg.trim = function(s) { return s.replace(/^\s+|\s+$/g, ''); }
+		
+		// compress spaces
+		svg.compressSpaces = function(s) { return s.replace(/[\s\r\t\n]+/gm,' '); }
+		
+		// ajax
+		svg.ajax = function(url) {
+			var AJAX;
+			if(window.XMLHttpRequest){AJAX=new XMLHttpRequest();}
+			else{AJAX=new ActiveXObject('Microsoft.XMLHTTP');}
+			if(AJAX){
+			   AJAX.open('GET',url,false);
+			   AJAX.send(null);
+			   return AJAX.responseText;
+			}
+			return null;
+		} 
+		
+		// parse xml
+		svg.parseXml = function(xml) {
+			if (window.DOMParser)
+			{
+				var parser = new DOMParser();
+				return parser.parseFromString(xml, 'text/xml');
+			}
+			else 
+			{
+				xml = xml.replace(/<!DOCTYPE svg[^>]*>/, '');
+				var xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
+				xmlDoc.async = 'false';
+				xmlDoc.loadXML(xml); 
+				return xmlDoc;
+			}		
+		}
+		
+		svg.Property = function(name, value) {
+			this.name = name;
+			this.value = value;
+			
+			this.hasValue = function() {
+				return (this.value != null && this.value !== '');
+			}
+							
+			// return the numerical value of the property
+			this.numValue = function() {
+				if (!this.hasValue()) return 0;
+				
+				var n = parseFloat(this.value);
+				if ((this.value + '').match(/%$/)) {
+					n = n / 100.0;
+				}
+				return n;
+			}
+			
+			this.valueOrDefault = function(def) {
+				if (this.hasValue()) return this.value;
+				return def;
+			}
+			
+			this.numValueOrDefault = function(def) {
+				if (this.hasValue()) return this.numValue();
+				return def;
+			}
+			
+			/* EXTENSIONS */
+			var that = this;
+			
+			// color extensions
+			this.Color = {
+				// augment the current color value with the opacity
+				addOpacity: function(opacity) {
+					var newValue = that.value;
+					if (opacity != null && opacity != '') {
+						var color = new RGBColor(that.value);
+						if (color.ok) {
+							newValue = 'rgba(' + color.r + ', ' + color.g + ', ' + color.b + ', ' + opacity + ')';
+						}
+					}
+					return new svg.Property(that.name, newValue);
+				}
+			}
+			
+			// definition extensions
+			this.Definition = {
+				// get the definition from the definitions table
+				getDefinition: function() {
+					var name = that.value.replace(/^(url\()?#([^\)]+)\)?$/, '$2');
+					return svg.Definitions[name];
+				},
+				
+				isUrl: function() {
+					return that.value.indexOf('url(') == 0
+				},
+				
+				getFillStyle: function(e) {
+					var def = this.getDefinition();
+					
+					// gradient
+					if (def != null && def.createGradient) {
+						return def.createGradient(svg.ctx, e);
+					}
+					
+					// pattern
+					if (def != null && def.createPattern) {
+						return def.createPattern(svg.ctx, e);
+					}
+					
+					return null;
+				}
+			}
+			
+			// length extensions
+			this.Length = {
+				DPI: function(viewPort) {
+					return 96.0; // TODO: compute?
+				},
+				
+				EM: function(viewPort) {
+					var em = 12;
+					
+					var fontSize = new svg.Property('fontSize', svg.Font.Parse(svg.ctx.font).fontSize);
+					if (fontSize.hasValue()) em = fontSize.Length.toPixels(viewPort);
+					
+					return em;
+				},
+			
+				// get the length as pixels
+				toPixels: function(viewPort) {
+					if (!that.hasValue()) return 0;
+					var s = that.value+'';
+					if (s.match(/em$/)) return that.numValue() * this.EM(viewPort);
+					if (s.match(/ex$/)) return that.numValue() * this.EM(viewPort) / 2.0;
+					if (s.match(/px$/)) return that.numValue();
+					if (s.match(/pt$/)) return that.numValue() * 1.25;
+					if (s.match(/pc$/)) return that.numValue() * 15;
+					if (s.match(/cm$/)) return that.numValue() * this.DPI(viewPort) / 2.54;
+					if (s.match(/mm$/)) return that.numValue() * this.DPI(viewPort) / 25.4;
+					if (s.match(/in$/)) return that.numValue() * this.DPI(viewPort);
+					if (s.match(/%$/)) return that.numValue() * svg.ViewPort.ComputeSize(viewPort);
+					return that.numValue();
+				}
+			}
+			
+			// time extensions
+			this.Time = {
+				// get the time as milliseconds
+				toMilliseconds: function() {
+					if (!that.hasValue()) return 0;
+					var s = that.value+'';
+					if (s.match(/s$/)) return that.numValue() * 1000;
+					if (s.match(/ms$/)) return that.numValue();
+					return that.numValue();
+				}
+			}
+			
+			// angle extensions
+			this.Angle = {
+				// get the angle as radians
+				toRadians: function() {
+					if (!that.hasValue()) return 0;
+					var s = that.value+'';
+					if (s.match(/deg$/)) return that.numValue() * (Math.PI / 180.0);
+					if (s.match(/grad$/)) return that.numValue() * (Math.PI / 200.0);
+					if (s.match(/rad$/)) return that.numValue();
+					return that.numValue() * (Math.PI / 180.0);
+				}
+			}
+		}
+		
+		// fonts
+		svg.Font = new (function() {
+			this.Styles = ['normal','italic','oblique','inherit'];
+			this.Variants = ['normal','small-caps','inherit'];
+			this.Weights = ['normal','bold','bolder','lighter','100','200','300','400','500','600','700','800','900','inherit'];
+			
+			this.CreateFont = function(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit) { 
+				var f = inherit != null ? this.Parse(inherit) : this.CreateFont('', '', '', '', '', svg.ctx.font);
+				return { 
+					fontFamily: fontFamily || f.fontFamily, 
+					fontSize: fontSize || f.fontSize, 
+					fontStyle: fontStyle || f.fontStyle, 
+					fontWeight: fontWeight || f.fontWeight, 
+					fontVariant: fontVariant || f.fontVariant,
+					toString: function () { return [this.fontStyle, this.fontVariant, this.fontWeight, this.fontSize, this.fontFamily].join(' ') } 
+				} 
+			}
+			
+			var that = this;
+			this.Parse = function(s) {
+				var f = {};
+				var d = svg.trim(svg.compressSpaces(s || '')).split(' ');
+				var set = { fontSize: false, fontStyle: false, fontWeight: false, fontVariant: false }
+				var ff = '';
+				for (var i=0; i<d.length; i++) {
+					if (!set.fontStyle && that.Styles.indexOf(d[i]) != -1) { if (d[i] != 'inherit') f.fontStyle = d[i]; set.fontStyle = true; }
+					else if (!set.fontVariant && that.Variants.indexOf(d[i]) != -1) { if (d[i] != 'inherit') f.fontVariant = d[i]; set.fontStyle = set.fontVariant = true;	}
+					else if (!set.fontWeight && that.Weights.indexOf(d[i]) != -1) {	if (d[i] != 'inherit') f.fontWeight = d[i]; set.fontStyle = set.fontVariant = set.fontWeight = true; }
+					else if (!set.fontSize) { if (d[i] != 'inherit') f.fontSize = d[i].split('/')[0]; set.fontStyle = set.fontVariant = set.fontWeight = set.fontSize = true; }
+					else { if (d[i] != 'inherit') ff += d[i]; }
+				} if (ff != '') f.fontFamily = ff;
+				return f;
+			}
+		});
+		
+		// points and paths
+		svg.ToNumberArray = function(s) {
+			var a = svg.trim(svg.compressSpaces((s || '').replace(/,/g, ' '))).split(' ');
+			for (var i=0; i<a.length; i++) {
+				a[i] = parseFloat(a[i]);
+			}
+			return a;
+		}		
+		svg.Point = function(x, y) {
+			this.x = x;
+			this.y = y;
+			
+			this.angleTo = function(p) {
+				return Math.atan2(p.y - this.y, p.x - this.x);
+			}
+			
+			this.applyTransform = function(v) {
+				var xp = this.x * v[0] + this.y * v[2] + v[4];
+				var yp = this.x * v[1] + this.y * v[3] + v[5];
+				this.x = xp;
+				this.y = yp;
+			}
+		}
+		svg.CreatePoint = function(s) {
+			var a = svg.ToNumberArray(s);
+			return new svg.Point(a[0], a[1]);
+		}
+		svg.CreatePath = function(s) {
+			var a = svg.ToNumberArray(s);
+			var path = [];
+			for (var i=0; i<a.length; i+=2) {
+				path.push(new svg.Point(a[i], a[i+1]));
+			}
+			return path;
+		}
+		
+		// bounding box
+		svg.BoundingBox = function(x1, y1, x2, y2) { // pass in initial points if you want
+			this.x1 = Number.NaN;
+			this.y1 = Number.NaN;
+			this.x2 = Number.NaN;
+			this.y2 = Number.NaN;
+			
+			this.x = function() { return this.x1; }
+			this.y = function() { return this.y1; }
+			this.width = function() { return this.x2 - this.x1; }
+			this.height = function() { return this.y2 - this.y1; }
+			
+			this.addPoint = function(x, y) {	
+				if (x != null) {
+					if (isNaN(this.x1) || isNaN(this.x2)) {
+						this.x1 = x;
+						this.x2 = x;
+					}
+					if (x < this.x1) this.x1 = x;
+					if (x > this.x2) this.x2 = x;
+				}
+			
+				if (y != null) {
+					if (isNaN(this.y1) || isNaN(this.y2)) {
+						this.y1 = y;
+						this.y2 = y;
+					}
+					if (y < this.y1) this.y1 = y;
+					if (y > this.y2) this.y2 = y;
+				}
+			}			
+			this.addX = function(x) { this.addPoint(x, null); }
+			this.addY = function(y) { this.addPoint(null, y); }
+			
+			this.addBoundingBox = function(bb) {
+				this.addPoint(bb.x1, bb.y1);
+				this.addPoint(bb.x2, bb.y2);
+			}
+			
+			this.addQuadraticCurve = function(p0x, p0y, p1x, p1y, p2x, p2y) {
+				var cp1x = p0x + 2/3 * (p1x - p0x); // CP1 = QP0 + 2/3 *(QP1-QP0)
+				var cp1y = p0y + 2/3 * (p1y - p0y); // CP1 = QP0 + 2/3 *(QP1-QP0)
+				var cp2x = cp1x + 1/3 * (p2x - p0x); // CP2 = CP1 + 1/3 *(QP2-QP0)
+				var cp2y = cp1y + 1/3 * (p2y - p0y); // CP2 = CP1 + 1/3 *(QP2-QP0)
+				this.addBezierCurve(p0x, p0y, cp1x, cp2x, cp1y,	cp2y, p2x, p2y);
+			}
+			
+			this.addBezierCurve = function(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {
+				// from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html
+				var p0 = [p0x, p0y], p1 = [p1x, p1y], p2 = [p2x, p2y], p3 = [p3x, p3y];
+				this.addPoint(p0[0], p0[1]);
+				this.addPoint(p3[0], p3[1]);
+				
+				for (i=0; i<=1; i++) {
+					var f = function(t) { 
+						return Math.pow(1-t, 3) * p0[i]
+						+ 3 * Math.pow(1-t, 2) * t * p1[i]
+						+ 3 * (1-t) * Math.pow(t, 2) * p2[i]
+						+ Math.pow(t, 3) * p3[i];
+					}
+					
+					var b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];
+					var a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];
+					var c = 3 * p1[i] - 3 * p0[i];
+					
+					if (a == 0) {
+						if (b == 0) continue;
+						var t = -c / b;
+						if (0 < t && t < 1) {
+							if (i == 0) this.addX(f(t));
+							if (i == 1) this.addY(f(t));
+						}
+						continue;
+					}
+					
+					var b2ac = Math.pow(b, 2) - 4 * c * a;
+					if (b2ac < 0) continue;
+					var t1 = (-b + Math.sqrt(b2ac)) / (2 * a);
+					if (0 < t1 && t1 < 1) {
+						if (i == 0) this.addX(f(t1));
+						if (i == 1) this.addY(f(t1));
+					}
+					var t2 = (-b - Math.sqrt(b2ac)) / (2 * a);
+					if (0 < t2 && t2 < 1) {
+						if (i == 0) this.addX(f(t2));
+						if (i == 1) this.addY(f(t2));
+					}
+				}
+			}
+			
+			this.isPointInBox = function(x, y) {
+				return (this.x1 <= x && x <= this.x2 && this.y1 <= y && y <= this.y2);
+			}
+			
+			this.addPoint(x1, y1);
+			this.addPoint(x2, y2);
+		}
+		
+		// transforms
+		svg.Transform = function(v) {	
+			var that = this;
+			this.Type = {}
+		
+			// translate
+			this.Type.translate = function(s) {
+				this.p = svg.CreatePoint(s);			
+				this.apply = function(ctx) {
+					ctx.translate(this.p.x || 0.0, this.p.y || 0.0);
+				}
+				this.applyToPoint = function(p) {
+					p.applyTransform([1, 0, 0, 1, this.p.x || 0.0, this.p.y || 0.0]);
+				}
+			}
+			
+			// rotate
+			this.Type.rotate = function(s) {
+				var a = svg.ToNumberArray(s);
+				this.angle = new svg.Property('angle', a[0]);
+				this.cx = a[1] || 0;
+				this.cy = a[2] || 0;
+				this.apply = function(ctx) {
+					ctx.translate(this.cx, this.cy);
+					ctx.rotate(this.angle.Angle.toRadians());
+					ctx.translate(-this.cx, -this.cy);
+				}
+				this.applyToPoint = function(p) {
+					var a = this.angle.Angle.toRadians();
+					p.applyTransform([1, 0, 0, 1, this.p.x || 0.0, this.p.y || 0.0]);
+					p.applyTransform([Math.cos(a), Math.sin(a), -Math.sin(a), Math.cos(a), 0, 0]);
+					p.applyTransform([1, 0, 0, 1, -this.p.x || 0.0, -this.p.y || 0.0]);
+				}			
+			}
+			
+			this.Type.scale = function(s) {
+				this.p = svg.CreatePoint(s);
+				this.apply = function(ctx) {
+					ctx.scale(this.p.x || 1.0, this.p.y || this.p.x || 1.0);
+				}
+				this.applyToPoint = function(p) {
+					p.applyTransform([this.p.x || 0.0, 0, 0, this.p.y || 0.0, 0, 0]);
+				}				
+			}
+			
+			this.Type.matrix = function(s) {
+				this.m = svg.ToNumberArray(s);
+				this.apply = function(ctx) {
+					ctx.transform(this.m[0], this.m[1], this.m[2], this.m[3], this.m[4], this.m[5]);
+				}
+				this.applyToPoint = function(p) {
+					p.applyTransform(this.m);
+				}					
+			}
+			
+			this.Type.SkewBase = function(s) {
+				this.base = that.Type.matrix;
+				this.base(s);
+				this.angle = new svg.Property('angle', s);
+			}
+			this.Type.SkewBase.prototype = new this.Type.matrix;
+			
+			this.Type.skewX = function(s) {
+				this.base = that.Type.SkewBase;
+				this.base(s);
+				this.m = [1, 0, Math.tan(this.angle.Angle.toRadians()), 1, 0, 0];
+			}
+			this.Type.skewX.prototype = new this.Type.SkewBase;
+			
+			this.Type.skewY = function(s) {
+				this.base = that.Type.SkewBase;
+				this.base(s);
+				this.m = [1, Math.tan(this.angle.Angle.toRadians()), 0, 1, 0, 0];
+			}
+			this.Type.skewY.prototype = new this.Type.SkewBase;
+		
+			this.transforms = [];
+			
+			this.apply = function(ctx) {
+				for (var i=0; i<this.transforms.length; i++) {
+					this.transforms[i].apply(ctx);
+				}
+			}
+			
+			this.applyToPoint = function(p) {
+				for (var i=0; i<this.transforms.length; i++) {
+					this.transforms[i].applyToPoint(p);
+				}
+			}
+			
+			var data = svg.trim(svg.compressSpaces(v)).split(/\s(?=[a-z])/);
+			for (var i=0; i<data.length; i++) {
+				var type = data[i].split('(')[0];
+				var s = data[i].split('(')[1].replace(')','');
+				var transform = new this.Type[type](s);
+				this.transforms.push(transform);
+			}
+		}
+		
+		// aspect ratio
+		svg.AspectRatio = function(ctx, aspectRatio, width, desiredWidth, height, desiredHeight, minX, minY, refX, refY) {
+			// aspect ratio - http://www.w3.org/TR/SVG/coords.html#PreserveAspectRatioAttribute
+			aspectRatio = svg.compressSpaces(aspectRatio);
+			aspectRatio = aspectRatio.replace(/^defer\s/,''); // ignore defer
+			var align = aspectRatio.split(' ')[0] || 'xMidYMid';
+			var meetOrSlice = aspectRatio.split(' ')[1] || 'meet';					
+	
+			// calculate scale
+			var scaleX = width / desiredWidth;
+			var scaleY = height / desiredHeight;
+			var scaleMin = Math.min(scaleX, scaleY);
+			var scaleMax = Math.max(scaleX, scaleY);
+			if (meetOrSlice == 'meet') { desiredWidth *= scaleMin; desiredHeight *= scaleMin; }
+			if (meetOrSlice == 'slice') { desiredWidth *= scaleMax; desiredHeight *= scaleMax; }	
+			
+			refX = new svg.Property('refX', refX);
+			refY = new svg.Property('refY', refY);
+			if (refX.hasValue() && refY.hasValue()) {				
+				ctx.translate(-scaleMin * refX.Length.toPixels('x'), -scaleMin * refY.Length.toPixels('y'));
+			} 
+			else {					
+				// align
+				if (align.match(/^xMid/) && ((meetOrSlice == 'meet' && scaleMin == scaleY) || (meetOrSlice == 'slice' && scaleMax == scaleY))) ctx.translate(width / 2.0 - desiredWidth / 2.0, 0); 
+				if (align.match(/YMid$/) && ((meetOrSlice == 'meet' && scaleMin == scaleX) || (meetOrSlice == 'slice' && scaleMax == scaleX))) ctx.translate(0, height / 2.0 - desiredHeight / 2.0); 
+				if (align.match(/^xMax/) && ((meetOrSlice == 'meet' && scaleMin == scaleY) || (meetOrSlice == 'slice' && scaleMax == scaleY))) ctx.translate(width - desiredWidth, 0); 
+				if (align.match(/YMax$/) && ((meetOrSlice == 'meet' && scaleMin == scaleX) || (meetOrSlice == 'slice' && scaleMax == scaleX))) ctx.translate(0, height - desiredHeight); 
+			}
+			
+			// scale
+			if (align == 'none') ctx.scale(scaleX, scaleY);
+			else if (meetOrSlice == 'meet') ctx.scale(scaleMin, scaleMin); 
+			else if (meetOrSlice == 'slice') ctx.scale(scaleMax, scaleMax); 	
+			
+			// translate
+			ctx.translate(minX == null ? 0 : -minX, minY == null ? 0 : -minY);			
+		}
+		
+		// elements
+		svg.Element = {}
+		
+		svg.Element.ElementBase = function(node) {	
+			this.attributes = {};
+			this.styles = {};
+			this.children = [];
+			
+			// get or create attribute
+			this.attribute = function(name, createIfNotExists) {
+				var a = this.attributes[name];
+				if (a != null) return a;
+							
+				a = new svg.Property(name, '');
+				if (createIfNotExists == true) this.attributes[name] = a;
+				return a;
+			}
+			
+			// get or create style, crawls up node tree
+			this.style = function(name, createIfNotExists) {
+				var s = this.styles[name];
+				if (s != null) return s;
+				
+				var a = this.attribute(name);
+				if (a != null && a.hasValue()) {
+					return a;
+				}
+				
+				var p = this.parent;
+				if (p != null) {
+					var ps = p.style(name);
+					if (ps != null && ps.hasValue()) {
+						return ps;
+					}
+				}
+					
+				s = new svg.Property(name, '');
+				if (createIfNotExists == true) this.styles[name] = s;
+				return s;
+			}
+			
+			// base render
+			this.render = function(ctx) {
+				// don't render display=none
+				if (this.style('display').value == 'none') return;
+				
+				// don't render visibility=hidden
+				if (this.attribute('visibility').value == 'hidden') return;
+			
+				ctx.save();
+					this.setContext(ctx);
+						// mask
+						if (this.attribute('mask').hasValue()) {
+							var mask = this.attribute('mask').Definition.getDefinition();
+							if (mask != null) mask.apply(ctx, this);
+						}
+						else if (this.style('filter').hasValue()) {
+							var filter = this.style('filter').Definition.getDefinition();
+							if (filter != null) filter.apply(ctx, this);
+						}
+						else this.renderChildren(ctx);				
+					this.clearContext(ctx);
+				ctx.restore();
+			}
+			
+			// base set context
+			this.setContext = function(ctx) {
+				// OVERRIDE ME!
+			}
+			
+			// base clear context
+			this.clearContext = function(ctx) {
+				// OVERRIDE ME!
+			}			
+			
+			// base render children
+			this.renderChildren = function(ctx) {
+				for (var i=0; i<this.children.length; i++) {
+					this.children[i].render(ctx);
+				}
+			}
+			
+			this.addChild = function(childNode, create) {
+				var child = childNode;
+				if (create) child = svg.CreateElement(childNode);
+				child.parent = this;
+				this.children.push(child);			
+			}
+				
+			if (node != null && node.nodeType == 1) { //ELEMENT_NODE
+				// add children
+				for (var i=0; i<node.childNodes.length; i++) {
+					var childNode = node.childNodes[i];
+					if (childNode.nodeType == 1) this.addChild(childNode, true); //ELEMENT_NODE
+				}
+				
+				// add attributes
+				for (var i=0; i<node.attributes.length; i++) {
+					var attribute = node.attributes[i];
+					this.attributes[attribute.nodeName] = new svg.Property(attribute.nodeName, attribute.nodeValue);
+				}
+										
+				// add tag styles
+				var styles = svg.Styles[node.nodeName];
+				if (styles != null) {
+					for (var name in styles) {
+						this.styles[name] = styles[name];
+					}
+				}					
+				
+				// add class styles
+				if (this.attribute('class').hasValue()) {
+					var classes = svg.compressSpaces(this.attribute('class').value).split(' ');
+					for (var j=0; j<classes.length; j++) {
+						styles = svg.Styles['.'+classes[j]];
+						if (styles != null) {
+							for (var name in styles) {
+								this.styles[name] = styles[name];
+							}
+						}
+						styles = svg.Styles[node.nodeName+'.'+classes[j]];
+						if (styles != null) {
+							for (var name in styles) {
+								this.styles[name] = styles[name];
+							}
+						}
+					}
+				}
+				
+				// add inline styles
+				if (this.attribute('style').hasValue()) {
+					var styles = this.attribute('style').value.split(';');
+					for (var i=0; i<styles.length; i++) {
+						if (svg.trim(styles[i]) != '') {
+							var style = styles[i].split(':');
+							var name = svg.trim(style[0]);
+							var value = svg.trim(style[1]);
+							this.styles[name] = new svg.Property(name, value);
+						}
+					}
+				}	
+
+				// add id
+				if (this.attribute('id').hasValue()) {
+					if (svg.Definitions[this.attribute('id').value] == null) {
+						svg.Definitions[this.attribute('id').value] = this;
+					}
+				}
+			}
+		}
+		
+		svg.Element.RenderedElementBase = function(node) {
+			this.base = svg.Element.ElementBase;
+			this.base(node);
+			
+			this.setContext = function(ctx) {
+				// fill
+				if (this.style('fill').Definition.isUrl()) {
+					var fs = this.style('fill').Definition.getFillStyle(this);
+					if (fs != null) ctx.fillStyle = fs;
+				}
+				else if (this.style('fill').hasValue()) {
+					var fillStyle = this.style('fill');
+					if (this.style('fill-opacity').hasValue()) fillStyle = fillStyle.Color.addOpacity(this.style('fill-opacity').value);
+					ctx.fillStyle = (fillStyle.value == 'none' ? 'rgba(0,0,0,0)' : fillStyle.value);
+				}
+									
+				// stroke
+				if (this.style('stroke').Definition.isUrl()) {
+					var fs = this.style('stroke').Definition.getFillStyle(this);
+					if (fs != null) ctx.strokeStyle = fs;
+				}
+				else if (this.style('stroke').hasValue()) {
+					var strokeStyle = this.style('stroke');
+					if (this.style('stroke-opacity').hasValue()) strokeStyle = strokeStyle.Color.addOpacity(this.style('stroke-opacity').value);
+					ctx.strokeStyle = (strokeStyle.value == 'none' ? 'rgba(0,0,0,0)' : strokeStyle.value);
+				}
+				if (this.style('stroke-width').hasValue()) ctx.lineWidth = this.style('stroke-width').Length.toPixels();
+				if (this.style('stroke-linecap').hasValue()) ctx.lineCap = this.style('stroke-linecap').value;
+				if (this.style('stroke-linejoin').hasValue()) ctx.lineJoin = this.style('stroke-linejoin').value;
+				if (this.style('stroke-miterlimit').hasValue()) ctx.miterLimit = this.style('stroke-miterlimit').value;
+
+				// font
+				if (typeof(ctx.font) != 'undefined') {
+					ctx.font = svg.Font.CreateFont( 
+						this.style('font-style').value, 
+						this.style('font-variant').value, 
+						this.style('font-weight').value, 
+						this.style('font-size').hasValue() ? this.style('font-size').Length.toPixels() + 'px' : '', 
+						this.style('font-family').value).toString();
+				}
+				
+				// transform
+				if (this.attribute('transform').hasValue()) { 
+					var transform = new svg.Transform(this.attribute('transform').value);
+					transform.apply(ctx);
+				}
+				
+				// clip
+				if (this.attribute('clip-path').hasValue()) {
+					var clip = this.attribute('clip-path').Definition.getDefinition();
+					if (clip != null) clip.apply(ctx);
+				}
+				
+				// opacity
+				if (this.style('opacity').hasValue()) {
+					ctx.globalAlpha = this.style('opacity').numValue();
+				}
+			}		
+		}
+		svg.Element.RenderedElementBase.prototype = new svg.Element.ElementBase;
+		
+		svg.Element.PathElementBase = function(node) {
+			this.base = svg.Element.RenderedElementBase;
+			this.base(node);
+			
+			this.path = function(ctx) {
+				if (ctx != null) ctx.beginPath();
+				return new svg.BoundingBox();
+			}
+			
+			this.renderChildren = function(ctx) {
+				this.path(ctx);
+				svg.Mouse.checkPath(this, ctx);
+				if (ctx.fillStyle != '') ctx.fill();
+				if (ctx.strokeStyle != '') ctx.stroke();
+				
+				var markers = this.getMarkers();
+				if (markers != null) {
+					if (this.style('marker-start').Definition.isUrl()) {
+						var marker = this.style('marker-start').Definition.getDefinition();
+						marker.render(ctx, markers[0][0], markers[0][1]);
+					}
+					if (this.style('marker-mid').Definition.isUrl()) {
+						var marker = this.style('marker-mid').Definition.getDefinition();
+						for (var i=1;i<markers.length-1;i++) {
+							marker.render(ctx, markers[i][0], markers[i][1]);
+						}
+					}
+					if (this.style('marker-end').Definition.isUrl()) {
+						var marker = this.style('marker-end').Definition.getDefinition();
+						marker.render(ctx, markers[markers.length-1][0], markers[markers.length-1][1]);
+					}
+				}					
+			}
+			
+			this.getBoundingBox = function() {
+				return this.path();
+			}
+			
+			this.getMarkers = function() {
+				return null;
+			}
+		}
+		svg.Element.PathElementBase.prototype = new svg.Element.RenderedElementBase;
+		
+		// svg element
+		svg.Element.svg = function(node) {
+			this.base = svg.Element.RenderedElementBase;
+			this.base(node);
+			
+			this.baseClearContext = this.clearContext;
+			this.clearContext = function(ctx) {
+				this.baseClearContext(ctx);
+				svg.ViewPort.RemoveCurrent();
+			}
+			
+			this.baseSetContext = this.setContext;
+			this.setContext = function(ctx) {
+				// initial values
+				ctx.strokeStyle = 'rgba(0,0,0,0)';
+				ctx.lineCap = 'butt';
+				ctx.lineJoin = 'miter';
+				ctx.miterLimit = 4;			
+			
+				this.baseSetContext(ctx);
+				
+				// create new view port
+				if (this.attribute('x').hasValue() && this.attribute('y').hasValue()) {
+					ctx.translate(this.attribute('x').Length.toPixels('x'), this.attribute('y').Length.toPixels('y'));
+				}
+				
+				var width = svg.ViewPort.width();
+				var height = svg.ViewPort.height();
+				if (typeof(this.root) == 'undefined' && this.attribute('width').hasValue() && this.attribute('height').hasValue()) {
+					width = this.attribute('width').Length.toPixels('x');
+					height = this.attribute('height').Length.toPixels('y');
+					
+					var x = 0;
+					var y = 0;
+					if (this.attribute('refX').hasValue() && this.attribute('refY').hasValue()) {
+						x = -this.attribute('refX').Length.toPixels('x');
+						y = -this.attribute('refY').Length.toPixels('y');
+					}
+					
+					ctx.beginPath();
+					ctx.moveTo(x, y);
+					ctx.lineTo(width, y);
+					ctx.lineTo(width, height);
+					ctx.lineTo(x, height);
+					ctx.closePath();
+					ctx.clip();
+				}
+				svg.ViewPort.SetCurrent(width, height);	
+						
+				// viewbox
+				if (this.attribute('viewBox').hasValue()) {				
+					var viewBox = svg.ToNumberArray(this.attribute('viewBox').value);
+					var minX = viewBox[0];
+					var minY = viewBox[1];
+					width = viewBox[2];
+					height = viewBox[3];
+					
+					svg.AspectRatio(ctx,
+									this.attribute('preserveAspectRatio').value, 
+									svg.ViewPort.width(), 
+									width,
+									svg.ViewPort.height(),
+									height,
+									minX,
+									minY,
+									this.attribute('refX').value,
+									this.attribute('refY').value);
+										
+					svg.ViewPort.RemoveCurrent();	
+					svg.ViewPort.SetCurrent(viewBox[2], viewBox[3]);						
+				}				
+			}
+		}
+		svg.Element.svg.prototype = new svg.Element.RenderedElementBase;
+
+		// rect element
+		svg.Element.rect = function(node) {
+			this.base = svg.Element.PathElementBase;
+			this.base(node);
+			
+			this.path = function(ctx) {
+				var x = this.attribute('x').Length.toPixels('x');
+				var y = this.attribute('y').Length.toPixels('y');
+				var width = this.attribute('width').Length.toPixels('x');
+				var height = this.attribute('height').Length.toPixels('y');
+				var rx = this.attribute('rx').Length.toPixels('x');
+				var ry = this.attribute('ry').Length.toPixels('y');
+				if (this.attribute('rx').hasValue() && !this.attribute('ry').hasValue()) ry = rx;
+				if (this.attribute('ry').hasValue() && !this.attribute('rx').hasValue()) rx = ry;
+				
+				if (ctx != null) {
+					ctx.beginPath();
+					ctx.moveTo(x + rx, y);
+					ctx.lineTo(x + width - rx, y);
+					ctx.quadraticCurveTo(x + width, y, x + width, y + ry)
+					ctx.lineTo(x + width, y + height - ry);
+					ctx.quadraticCurveTo(x + width, y + height, x + width - rx, y + height)
+					ctx.lineTo(x + rx, y + height);
+					ctx.quadraticCurveTo(x, y + height, x, y + height - ry)
+					ctx.lineTo(x, y + ry);
+					ctx.quadraticCurveTo(x, y, x + rx, y)
+					ctx.closePath();
+				}
+				
+				return new svg.BoundingBox(x, y, x + width, y + height);
+			}
+		}
+		svg.Element.rect.prototype = new svg.Element.PathElementBase;
+		
+		// circle element
+		svg.Element.circle = function(node) {
+			this.base = svg.Element.PathElementBase;
+			this.base(node);
+			
+			this.path = function(ctx) {
+				var cx = this.attribute('cx').Length.toPixels('x');
+				var cy = this.attribute('cy').Length.toPixels('y');
+				var r = this.attribute('r').Length.toPixels();
+			
+				if (ctx != null) {
+					ctx.beginPath();
+					ctx.arc(cx, cy, r, 0, Math.PI * 2, true); 
+					ctx.closePath();
+				}
+				
+				return new svg.BoundingBox(cx - r, cy - r, cx + r, cy + r);
+			}
+		}
+		svg.Element.circle.prototype = new svg.Element.PathElementBase;	
+
+		// ellipse element
+		svg.Element.ellipse = function(node) {
+			this.base = svg.Element.PathElementBase;
+			this.base(node);
+			
+			this.path = function(ctx) {
+				var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);
+				var rx = this.attribute('rx').Length.toPixels('x');
+				var ry = this.attribute('ry').Length.toPixels('y');
+				var cx = this.attribute('cx').Length.toPixels('x');
+				var cy = this.attribute('cy').Length.toPixels('y');
+				
+				if (ctx != null) {
+					ctx.beginPath();
+					ctx.moveTo(cx, cy - ry);
+					ctx.bezierCurveTo(cx + (KAPPA * rx), cy - ry,  cx + rx, cy - (KAPPA * ry), cx + rx, cy);
+					ctx.bezierCurveTo(cx + rx, cy + (KAPPA * ry), cx + (KAPPA * rx), cy + ry, cx, cy + ry);
+					ctx.bezierCurveTo(cx - (KAPPA * rx), cy + ry, cx - rx, cy + (KAPPA * ry), cx - rx, cy);
+					ctx.bezierCurveTo(cx - rx, cy - (KAPPA * ry), cx - (KAPPA * rx), cy - ry, cx, cy - ry);
+					ctx.closePath();
+				}
+				
+				return new svg.BoundingBox(cx - rx, cy - ry, cx + rx, cy + ry);
+			}
+		}
+		svg.Element.ellipse.prototype = new svg.Element.PathElementBase;			
+		
+		// line element
+		svg.Element.line = function(node) {
+			this.base = svg.Element.PathElementBase;
+			this.base(node);
+			
+			this.getPoints = function() {
+				return [
+					new svg.Point(this.attribute('x1').Length.toPixels('x'), this.attribute('y1').Length.toPixels('y')),
+					new svg.Point(this.attribute('x2').Length.toPixels('x'), this.attribute('y2').Length.toPixels('y'))];
+			}
+								
+			this.path = function(ctx) {
+				var points = this.getPoints();
+				
+				if (ctx != null) {
+					ctx.beginPath();
+					ctx.moveTo(points[0].x, points[0].y);
+					ctx.lineTo(points[1].x, points[1].y);
+				}
+				
+				return new svg.BoundingBox(points[0].x, points[0].y, points[1].x, points[1].y);
+			}
+			
+			this.getMarkers = function() {
+				var points = this.getPoints();	
+				var a = points[0].angleTo(points[1]);
+				return [[points[0], a], [points[1], a]];
+			}
+		}
+		svg.Element.line.prototype = new svg.Element.PathElementBase;		
+				
+		// polyline element
+		svg.Element.polyline = function(node) {
+			this.base = svg.Element.PathElementBase;
+			this.base(node);
+			
+			this.points = svg.CreatePath(this.attribute('points').value);
+			this.path = function(ctx) {
+				var bb = new svg.BoundingBox(this.points[0].x, this.points[0].y);
+				if (ctx != null) {
+					ctx.beginPath();
+					ctx.moveTo(this.points[0].x, this.points[0].y);
+				}
+				for (var i=1; i<this.points.length; i++) {
+					bb.addPoint(this.points[i].x, this.points[i].y);
+					if (ctx != null) ctx.lineTo(this.points[i].x, this.points[i].y);
+				}
+				return bb;
+			}
+			
+			this.getMarkers = function() {
+				var markers = [];
+				for (var i=0; i<this.points.length - 1; i++) {
+					markers.push([this.points[i], this.points[i].angleTo(this.points[i+1])]);
+				}
+				markers.push([this.points[this.points.length-1], markers[markers.length-1][1]]);
+				return markers;
+			}			
+		}
+		svg.Element.polyline.prototype = new svg.Element.PathElementBase;				
+				
+		// polygon element
+		svg.Element.polygon = function(node) {
+			this.base = svg.Element.polyline;
+			this.base(node);
+			
+			this.basePath = this.path;
+			this.path = function(ctx) {
+				var bb = this.basePath(ctx);
+				if (ctx != null) {
+					ctx.lineTo(this.points[0].x, this.points[0].y);
+					ctx.closePath();
+				}
+				return bb;
+			}
+		}
+		svg.Element.polygon.prototype = new svg.Element.polyline;
+
+		// path element
+		svg.Element.path = function(node) {
+			this.base = svg.Element.PathElementBase;
+			this.base(node);
+					
+			var d = this.attribute('d').value;
+			// TODO: convert to real lexer based on http://www.w3.org/TR/SVG11/paths.html#PathDataBNF
+			d = d.replace(/,/gm,' '); // get rid of all commas
+			d = d.replace(/([MmZzLlHhVvCcSsQqTtAa])([MmZzLlHhVvCcSsQqTtAa])/gm,'$1 $2'); // separate commands from commands
+			d = d.replace(/([MmZzLlHhVvCcSsQqTtAa])([MmZzLlHhVvCcSsQqTtAa])/gm,'$1 $2'); // separate commands from commands
+			d = d.replace(/([MmZzLlHhVvCcSsQqTtAa])([^\s])/gm,'$1 $2'); // separate commands from points
+			d = d.replace(/([^\s])([MmZzLlHhVvCcSsQqTtAa])/gm,'$1 $2'); // separate commands from points
+			d = d.replace(/([0-9])([+\-])/gm,'$1 $2'); // separate digits when no comma
+			d = d.replace(/(\.[0-9]*)(\.)/gm,'$1 $2'); // separate digits when no comma
+			d = d.replace(/([Aa](\s+[0-9]+){3})\s+([01])\s*([01])/gm,'$1 $3 $4 '); // shorthand elliptical arc path syntax
+			d = svg.compressSpaces(d); // compress multiple spaces
+			d = svg.trim(d);
+			this.PathParser = new (function(d) {
+				this.tokens = d.split(' ');
+				
+				this.reset = function() {
+					this.i = -1;
+					this.command = '';
+					this.previousCommand = '';
+					this.start = new svg.Point(0, 0);
+					this.control = new svg.Point(0, 0);
+					this.current = new svg.Point(0, 0);
+					this.points = [];
+					this.angles = [];
+				}
+								
+				this.isEnd = function() {
+					return this.i >= this.tokens.length - 1;
+				}
+				
+				this.isCommandOrEnd = function() {
+					if (this.isEnd()) return true;
+					return this.tokens[this.i + 1].match(/^[A-Za-z]$/) != null;
+				}
+				
+				this.isRelativeCommand = function() {
+					return this.command == this.command.toLowerCase();
+				}
+							
+				this.getToken = function() {
+					this.i = this.i + 1;
+					return this.tokens[this.i];
+				}
+				
+				this.getScalar = function() {
+					return parseFloat(this.getToken());
+				}
+				
+				this.nextCommand = function() {
+					this.previousCommand = this.command;
+					this.command = this.getToken();
+				}				
+				
+				this.getPoint = function() {
+					var p = new svg.Point(this.getScalar(), this.getScalar());
+					return this.makeAbsolute(p);
+				}
+				
+				this.getAsControlPoint = function() {
+					var p = this.getPoint();
+					this.control = p;
+					return p;
+				}
+				
+				this.getAsCurrentPoint = function() {
+					var p = this.getPoint();
+					this.current = p;
+					return p;	
+				}
+				
+				this.getReflectedControlPoint = function() {
+					if (this.previousCommand.toLowerCase() != 'c' && this.previousCommand.toLowerCase() != 's') {
+						return this.current;
+					}
+					
+					// reflect point
+					var p = new svg.Point(2 * this.current.x - this.control.x, 2 * this.current.y - this.control.y);					
+					return p;
+				}
+				
+				this.makeAbsolute = function(p) {
+					if (this.isRelativeCommand()) {
+						p.x = this.current.x + p.x;
+						p.y = this.current.y + p.y;
+					}
+					return p;
+				}
+				
+				this.addMarker = function(p, from, priorTo) {
+					// if the last angle isn't filled in because we didn't have this point yet ...
+					if (priorTo != null && this.angles.length > 0 && this.angles[this.angles.length-1] == null) {
+						this.angles[this.angles.length-1] = this.points[this.points.length-1].angleTo(priorTo);
+					}
+					this.addMarkerAngle(p, from == null ? null : from.angleTo(p));
+				}
+				
+				this.addMarkerAngle = function(p, a) {
+					this.points.push(p);
+					this.angles.push(a);
+				}				
+				
+				this.getMarkerPoints = function() { return this.points; }
+				this.getMarkerAngles = function() {
+					for (var i=0; i<this.angles.length; i++) {
+						if (this.angles[i] == null) {
+							for (var j=i+1; j<this.angles.length; j++) {
+								if (this.angles[j] != null) {
+									this.angles[i] = this.angles[j];
+									break;
+								}
+							}
+						}
+					}
+					return this.angles;
+				}
+			})(d);
+
+			this.path = function(ctx) {
+				var pp = this.PathParser;
+				pp.reset();
+
+				var bb = new svg.BoundingBox();
+				if (ctx != null) ctx.beginPath();
+				while (!pp.isEnd()) {
+					pp.nextCommand();
+					switch (pp.command.toUpperCase()) {
+					case 'M':
+						var p = pp.getAsCurrentPoint();
+						pp.addMarker(p);
+						bb.addPoint(p.x, p.y);
+						if (ctx != null) ctx.moveTo(p.x, p.y);
+						pp.start = pp.current;
+						while (!pp.isCommandOrEnd()) {
+							var p = pp.getAsCurrentPoint();
+							pp.addMarker(p, pp.start);
+							bb.addPoint(p.x, p.y);
+							if (ctx != null) ctx.lineTo(p.x, p.y);
+						}
+						break;
+					case 'L':
+						while (!pp.isCommandOrEnd()) {
+							var c = pp.current;
+							var p = pp.getAsCurrentPoint();
+							pp.addMarker(p, c);
+							bb.addPoint(p.x, p.y);
+							if (ctx != null) ctx.lineTo(p.x, p.y);
+						}
+						break;
+					case 'H':
+						while (!pp.isCommandOrEnd()) {
+							var newP = new svg.Point((pp.isRelativeCommand() ? pp.current.x : 0) + pp.getScalar(), pp.current.y);
+							pp.addMarker(newP, pp.current);
+							pp.current = newP;
+							bb.addPoint(pp.current.x, pp.current.y);
+							if (ctx != null) ctx.lineTo(pp.current.x, pp.current.y);
+						}
+						break;
+					case 'V':
+						while (!pp.isCommandOrEnd()) {
+							var newP = new svg.Point(pp.current.x, (pp.isRelativeCommand() ? pp.current.y : 0) + pp.getScalar());
+							pp.addMarker(newP, pp.current);
+							pp.current = newP;
+							bb.addPoint(pp.current.x, pp.current.y);
+							if (ctx != null) ctx.lineTo(pp.current.x, pp.current.y);
+						}
+						break;
+					case 'C':
+						while (!pp.isCommandOrEnd()) {
+							var curr = pp.current;
+							var p1 = pp.getPoint();
+							var cntrl = pp.getAsControlPoint();
+							var cp = pp.getAsCurrentPoint();
+							pp.addMarker(cp, cntrl, p1);
+							bb.addBezierCurve(curr.x, curr.y, p1.x, p1.y, cntrl.x, cntrl.y, cp.x, cp.y);
+							if (ctx != null) ctx.bezierCurveTo(p1.x, p1.y, cntrl.x, cntrl.y, cp.x, cp.y);
+						}
+						break;
+					case 'S':
+						while (!pp.isCommandOrEnd()) {
+							var curr = pp.current;
+							var p1 = pp.getReflectedControlPoint();
+							var cntrl = pp.getAsControlPoint();
+							var cp = pp.getAsCurrentPoint();
+							pp.addMarker(cp, cntrl, p1);
+							bb.addBezierCurve(curr.x, curr.y, p1.x, p1.y, cntrl.x, cntrl.y, cp.x, cp.y);
+							if (ctx != null) ctx.bezierCurveTo(p1.x, p1.y, cntrl.x, cntrl.y, cp.x, cp.y);
+						}
+						break;
+					case 'Q':
+						while (!pp.isCommandOrEnd()) {
+							var curr = pp.current;
+							var cntrl = pp.getAsControlPoint();
+							var cp = pp.getAsCurrentPoint();
+							pp.addMarker(cp, cntrl, cntrl);
+							bb.addQuadraticCurve(curr.x, curr.y, cntrl.x, cntrl.y, cp.x, cp.y);
+							if (ctx != null) ctx.quadraticCurveTo(cntrl.x, cntrl.y, cp.x, cp.y);
+						}
+						break;
+					case 'T':
+						while (!pp.isCommandOrEnd()) {
+							var curr = pp.current;
+							var cntrl = pp.getReflectedControlPoint();
+							pp.control = cntrl;
+							var cp = pp.getAsCurrentPoint();
+							pp.addMarker(cp, cntrl, cntrl);
+							bb.addQuadraticCurve(curr.x, curr.y, cntrl.x, cntrl.y, cp.x, cp.y);
+							if (ctx != null) ctx.quadraticCurveTo(cntrl.x, cntrl.y, cp.x, cp.y);
+						}
+						break;
+					case 'A':
+						while (!pp.isCommandOrEnd()) {
+						    var curr = pp.current;
+							var rx = pp.getScalar();
+							var ry = pp.getScalar();
+							var xAxisRotation = pp.getScalar() * (Math.PI / 180.0);
+							var largeArcFlag = pp.getScalar();
+							var sweepFlag = pp.getScalar();
+							var cp = pp.getAsCurrentPoint();
+
+							// Conversion from endpoint to center parameterization
+							// http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes
+							// x1', y1'
+							var currp = new svg.Point(
+								Math.cos(xAxisRotation) * (curr.x - cp.x) / 2.0 + Math.sin(xAxisRotation) * (curr.y - cp.y) / 2.0,
+								-Math.sin(xAxisRotation) * (curr.x - cp.x) / 2.0 + Math.cos(xAxisRotation) * (curr.y - cp.y) / 2.0
+							);
+							// adjust radii
+							var l = Math.pow(currp.x,2)/Math.pow(rx,2)+Math.pow(currp.y,2)/Math.pow(ry,2);
+							if (l > 1) {
+								rx *= Math.sqrt(l);
+								ry *= Math.sqrt(l);
+							}
+							// cx', cy'
+							var s = (largeArcFlag == sweepFlag ? -1 : 1) * Math.sqrt(
+								((Math.pow(rx,2)*Math.pow(ry,2))-(Math.pow(rx,2)*Math.pow(currp.y,2))-(Math.pow(ry,2)*Math.pow(currp.x,2))) /
+								(Math.pow(rx,2)*Math.pow(currp.y,2)+Math.pow(ry,2)*Math.pow(currp.x,2))
+							);
+							if (isNaN(s)) s = 0;
+							var cpp = new svg.Point(s * rx * currp.y / ry, s * -ry * currp.x / rx);
+							// cx, cy
+							var centp = new svg.Point(
+								(curr.x + cp.x) / 2.0 + Math.cos(xAxisRotation) * cpp.x - Math.sin(xAxisRotation) * cpp.y,
+								(curr.y + cp.y) / 2.0 + Math.sin(xAxisRotation) * cpp.x + Math.cos(xAxisRotation) * cpp.y
+							);
+							// vector magnitude
+							var m = function(v) { return Math.sqrt(Math.pow(v[0],2) + Math.pow(v[1],2)); }
+							// ratio between two vectors
+							var r = function(u, v) { return (u[0]*v[0]+u[1]*v[1]) / (m(u)*m(v)) }
+							// angle between two vectors
+							var a = function(u, v) { return (u[0]*v[1] < u[1]*v[0] ? -1 : 1) * Math.acos(r(u,v)); }
+							// initial angle
+							var a1 = a([1,0], [(currp.x-cpp.x)/rx,(currp.y-cpp.y)/ry]);
+							// angle delta
+							var u = [(currp.x-cpp.x)/rx,(currp.y-cpp.y)/ry];
+							var v = [(-currp.x-cpp.x)/rx,(-currp.y-cpp.y)/ry];
+							var ad = a(u, v);
+							if (r(u,v) <= -1) ad = Math.PI;
+							if (r(u,v) >= 1) ad = 0;
+
+							if (sweepFlag == 0 && ad > 0) ad = ad - 2 * Math.PI;
+							if (sweepFlag == 1 && ad < 0) ad = ad + 2 * Math.PI;
+
+							// for markers
+							var halfWay = new svg.Point(
+								centp.x - rx * Math.cos((a1 + ad) / 2),
+								centp.y - ry * Math.sin((a1 + ad) / 2)
+							);
+							pp.addMarkerAngle(halfWay, (a1 + ad) / 2 + (sweepFlag == 0 ? 1 : -1) * Math.PI / 2);
+							pp.addMarkerAngle(cp, ad + (sweepFlag == 0 ? 1 : -1) * Math.PI / 2);
+
+							bb.addPoint(cp.x, cp.y); // TODO: this is too naive, make it better
+							if (ctx != null) {
+								var r = rx > ry ? rx : ry;
+								var sx = rx > ry ? 1 : rx / ry;
+								var sy = rx > ry ? ry / rx : 1;
+
+								ctx.translate(centp.x, centp.y);
+								ctx.rotate(xAxisRotation);
+								ctx.scale(sx, sy);
+								ctx.arc(0, 0, r, a1, a1 + ad, 1 - sweepFlag);
+								ctx.scale(1/sx, 1/sy);
+								ctx.rotate(-xAxisRotation);
+								ctx.translate(-centp.x, -centp.y);
+							}
+						}
+						break;
+					case 'Z':
+						if (ctx != null) ctx.closePath();
+						pp.current = pp.start;
+					}
+				}
+
+				return bb;
+			}
+
+			this.getMarkers = function() {
+				var points = this.PathParser.getMarkerPoints();
+				var angles = this.PathParser.getMarkerAngles();
+				
+				var markers = [];
+				for (var i=0; i<points.length; i++) {
+					markers.push([points[i], angles[i]]);
+				}
+				return markers;
+			}
+		}
+		svg.Element.path.prototype = new svg.Element.PathElementBase;
+		
+		// pattern element
+		svg.Element.pattern = function(node) {
+			this.base = svg.Element.ElementBase;
+			this.base(node);
+			
+			this.createPattern = function(ctx, element) {
+				// render me using a temporary svg element
+				var tempSvg = new svg.Element.svg();
+				tempSvg.attributes['viewBox'] = new svg.Property('viewBox', this.attribute('viewBox').value);
+				tempSvg.attributes['x'] = new svg.Property('x', this.attribute('x').value);
+				tempSvg.attributes['y'] = new svg.Property('y', this.attribute('y').value);
+				tempSvg.attributes['width'] = new svg.Property('width', this.attribute('width').value);
+				tempSvg.attributes['height'] = new svg.Property('height', this.attribute('height').value);
+				tempSvg.children = this.children;
+				
+				var c = document.createElement('canvas');
+				c.width = this.attribute('width').Length.toPixels('x');
+				c.height = this.attribute('height').Length.toPixels('y');
+				tempSvg.render(c.getContext('2d'));		
+				return ctx.createPattern(c, 'repeat');
+			}
+		}
+		svg.Element.pattern.prototype = new svg.Element.ElementBase;
+		
+		// marker element
+		svg.Element.marker = function(node) {
+			this.base = svg.Element.ElementBase;
+			this.base(node);
+			
+			this.baseRender = this.render;
+			this.render = function(ctx, point, angle) {
+				ctx.translate(point.x, point.y);
+				if (this.attribute('orient').valueOrDefault('auto') == 'auto') ctx.rotate(angle);
+				if (this.attribute('markerUnits').valueOrDefault('strokeWidth') == 'strokeWidth') ctx.scale(ctx.lineWidth, ctx.lineWidth);
+				ctx.save();
+							
+				// render me using a temporary svg element
+				var tempSvg = new svg.Element.svg();
+				tempSvg.attributes['viewBox'] = new svg.Property('viewBox', this.attribute('viewBox').value);
+				tempSvg.attributes['refX'] = new svg.Property('refX', this.attribute('refX').value);
+				tempSvg.attributes['refY'] = new svg.Property('refY', this.attribute('refY').value);
+				tempSvg.attributes['width'] = new svg.Property('width', this.attribute('markerWidth').value);
+				tempSvg.attributes['height'] = new svg.Property('height', this.attribute('markerHeight').value);
+				tempSvg.attributes['fill'] = new svg.Property('fill', this.attribute('fill').valueOrDefault('black'));
+				tempSvg.attributes['stroke'] = new svg.Property('stroke', this.attribute('stroke').valueOrDefault('none'));
+				tempSvg.children = this.children;
+				tempSvg.render(ctx);
+				
+				ctx.restore();
+				if (this.attribute('markerUnits').valueOrDefault('strokeWidth') == 'strokeWidth') ctx.scale(1/ctx.lineWidth, 1/ctx.lineWidth);
+				if (this.attribute('orient').valueOrDefault('auto') == 'auto') ctx.rotate(-angle);
+				ctx.translate(-point.x, -point.y);
+			}
+		}
+		svg.Element.marker.prototype = new svg.Element.ElementBase;
+		
+		// definitions element
+		svg.Element.defs = function(node) {
+			this.base = svg.Element.ElementBase;
+			this.base(node);	
+			
+			this.render = function(ctx) {
+				// NOOP
+			}
+		}
+		svg.Element.defs.prototype = new svg.Element.ElementBase;
+		
+		// base for gradients
+		svg.Element.GradientBase = function(node) {
+			this.base = svg.Element.ElementBase;
+			this.base(node);
+			
+			this.gradientUnits = this.attribute('gradientUnits').valueOrDefault('objectBoundingBox');
+			
+			this.stops = [];			
+			for (var i=0; i<this.children.length; i++) {
+				var child = this.children[i];
+				this.stops.push(child);
+			}	
+			
+			this.getGradient = function() {
+				// OVERRIDE ME!
+			}			
+
+			this.createGradient = function(ctx, element) {
+				var stopsContainer = this;
+				if (this.attribute('xlink:href').hasValue()) {
+					stopsContainer = this.attribute('xlink:href').Definition.getDefinition();
+				}
+			
+				var g = this.getGradient(ctx, element);
+				for (var i=0; i<stopsContainer.stops.length; i++) {
+					g.addColorStop(stopsContainer.stops[i].offset, stopsContainer.stops[i].color);
+				}
+				
+				if (this.attribute('gradientTransform').hasValue()) {
+					// render as transformed pattern on temporary canvas
+					var rootView = svg.ViewPort.viewPorts[0];
+					
+					var rect = new svg.Element.rect();
+					rect.attributes['x'] = new svg.Property('x', -svg.MAX_VIRTUAL_PIXELS/3.0);
+					rect.attributes['y'] = new svg.Property('y', -svg.MAX_VIRTUAL_PIXELS/3.0);
+					rect.attributes['width'] = new svg.Property('width', svg.MAX_VIRTUAL_PIXELS);
+					rect.attributes['height'] = new svg.Property('height', svg.MAX_VIRTUAL_PIXELS);
+					
+					var group = new svg.Element.g();
+					group.attributes['transform'] = new svg.Property('transform', this.attribute('gradientTransform').value);
+					group.children = [ rect ];
+					
+					var tempSvg = new svg.Element.svg();
+					tempSvg.attributes['x'] = new svg.Property('x', 0);
+					tempSvg.attributes['y'] = new svg.Property('y', 0);
+					tempSvg.attributes['width'] = new svg.Property('width', rootView.width);
+					tempSvg.attributes['height'] = new svg.Property('height', rootView.height);
+					tempSvg.children = [ group ];
+					
+					var c = document.createElement('canvas');
+					c.width = rootView.width;
+					c.height = rootView.height;
+					var tempCtx = c.getContext('2d');
+					tempCtx.fillStyle = g;
+					tempSvg.render(tempCtx);		
+					return tempCtx.createPattern(c, 'no-repeat');
+				}
+				
+				return g;				
+			}
+		}
+		svg.Element.GradientBase.prototype = new svg.Element.ElementBase;
+		
+		// linear gradient element
+		svg.Element.linearGradient = function(node) {
+			this.base = svg.Element.GradientBase;
+			this.base(node);
+			
+			this.getGradient = function(ctx, element) {
+				var bb = element.getBoundingBox();
+				
+				var x1 = (this.gradientUnits == 'objectBoundingBox' 
+					? bb.x() + bb.width() * this.attribute('x1').numValue() 
+					: this.attribute('x1').Length.toPixels('x'));
+				var y1 = (this.gradientUnits == 'objectBoundingBox' 
+					? bb.y() + bb.height() * this.attribute('y1').numValue()
+					: this.attribute('y1').Length.toPixels('y'));
+				var x2 = (this.gradientUnits == 'objectBoundingBox' 
+					? bb.x() + bb.width() * this.attribute('x2').numValue()
+					: this.attribute('x2').Length.toPixels('x'));
+				var y2 = (this.gradientUnits == 'objectBoundingBox' 
+					? bb.y() + bb.height() * this.attribute('y2').numValue()
+					: this.attribute('y2').Length.toPixels('y'));
+
+				return ctx.createLinearGradient(x1, y1, x2, y2);
+			}
+		}
+		svg.Element.linearGradient.prototype = new svg.Element.GradientBase;
+		
+		// radial gradient element
+		svg.Element.radialGradient = function(node) {
+			this.base = svg.Element.GradientBase;
+			this.base(node);
+			
+			this.getGradient = function(ctx, element) {
+				var bb = element.getBoundingBox();
+				
+				var cx = (this.gradientUnits == 'objectBoundingBox' 
+					? bb.x() + bb.width() * this.attribute('cx').numValue() 
+					: this.attribute('cx').Length.toPixels('x'));
+				var cy = (this.gradientUnits == 'objectBoundingBox' 
+					? bb.y() + bb.height() * this.attribute('cy').numValue() 
+					: this.attribute('cy').Length.toPixels('y'));
+				
+				var fx = cx;
+				var fy = cy;
+				if (this.attribute('fx').hasValue()) {
+					fx = (this.gradientUnits == 'objectBoundingBox' 
+					? bb.x() + bb.width() * this.attribute('fx').numValue() 
+					: this.attribute('fx').Length.toPixels('x'));
+				}
+				if (this.attribute('fy').hasValue()) {
+					fy = (this.gradientUnits == 'objectBoundingBox' 
+					? bb.y() + bb.height() * this.attribute('fy').numValue() 
+					: this.attribute('fy').Length.toPixels('y'));
+				}
+				
+				var r = (this.gradientUnits == 'objectBoundingBox' 
+					? (bb.width() + bb.height()) / 2.0 * this.attribute('r').numValue()
+					: this.attribute('r').Length.toPixels());
+				
+				return ctx.createRadialGradient(fx, fy, 0, cx, cy, r);
+			}
+		}
+		svg.Element.radialGradient.prototype = new svg.Element.GradientBase;
+		
+		// gradient stop element
+		svg.Element.stop = function(node) {
+			this.base = svg.Element.ElementBase;
+			this.base(node);
+			
+			this.offset = this.attribute('offset').numValue();
+			
+			var stopColor = this.style('stop-color');
+			if (this.style('stop-opacity').hasValue()) stopColor = stopColor.Color.addOpacity(this.style('stop-opacity').value);
+			this.color = stopColor.value;
+		}
+		svg.Element.stop.prototype = new svg.Element.ElementBase;
+		
+		// animation base element
+		svg.Element.AnimateBase = function(node) {
+			this.base = svg.Element.ElementBase;
+			this.base(node);
+			
+			svg.Animations.push(this);
+			
+			this.duration = 0.0;
+			this.begin = this.attribute('begin').Time.toMilliseconds();
+			this.maxDuration = this.begin + this.attribute('dur').Time.toMilliseconds();
+			
+			this.getProperty = function() {
+				var attributeType = this.attribute('attributeType').value;
+				var attributeName = this.attribute('attributeName').value;
+				
+				if (attributeType == 'CSS') {
+					return this.parent.style(attributeName, true);
+				}
+				return this.parent.attribute(attributeName, true);			
+			};
+			
+			this.initialValue = null;
+			this.removed = false;			
+
+			this.calcValue = function() {
+				// OVERRIDE ME!
+				return '';
+			}
+			
+			this.update = function(delta) {	
+				// set initial value
+				if (this.initialValue == null) {
+					this.initialValue = this.getProperty().value;
+				}
+			
+				// if we're past the end time
+				if (this.duration > this.maxDuration) {
+					// loop for indefinitely repeating animations
+					if (this.attribute('repeatCount').value == 'indefinite') {
+						this.duration = 0.0
+					}
+					else if (this.attribute('fill').valueOrDefault('remove') == 'remove' && !this.removed) {
+						this.removed = true;
+						this.getProperty().value = this.initialValue;
+						return true;
+					}
+					else {
+						return false; // no updates made
+					}
+				}			
+				this.duration = this.duration + delta;
+			
+				// if we're past the begin time
+				var updated = false;
+				if (this.begin < this.duration) {
+					var newValue = this.calcValue(); // tween
+					
+					if (this.attribute('type').hasValue()) {
+						// for transform, etc.
+						var type = this.attribute('type').value;
+						newValue = type + '(' + newValue + ')';
+					}
+					
+					this.getProperty().value = newValue;
+					updated = true;
+				}
+				
+				return updated;
+			}
+			
+			// fraction of duration we've covered
+			this.progress = function() {
+				return ((this.duration - this.begin) / (this.maxDuration - this.begin));
+			}			
+		}
+		svg.Element.AnimateBase.prototype = new svg.Element.ElementBase;
+		
+		// animate element
+		svg.Element.animate = function(node) {
+			this.base = svg.Element.AnimateBase;
+			this.base(node);
+			
+			this.calcValue = function() {
+				var from = this.attribute('from').numValue();
+				var to = this.attribute('to').numValue();
+				
+				// tween value linearly
+				return from + (to - from) * this.progress(); 
+			};
+		}
+		svg.Element.animate.prototype = new svg.Element.AnimateBase;
+			
+		// animate color element
+		svg.Element.animateColor = function(node) {
+			this.base = svg.Element.AnimateBase;
+			this.base(node);
+
+			this.calcValue = function() {
+				var from = new RGBColor(this.attribute('from').value);
+				var to = new RGBColor(this.attribute('to').value);
+				
+				if (from.ok && to.ok) {
+					// tween color linearly
+					var r = from.r + (to.r - from.r) * this.progress();
+					var g = from.g + (to.g - from.g) * this.progress();
+					var b = from.b + (to.b - from.b) * this.progress();
+					return 'rgb('+parseInt(r,10)+','+parseInt(g,10)+','+parseInt(b,10)+')';
+				}
+				return this.attribute('from').value;
+			};
+		}
+		svg.Element.animateColor.prototype = new svg.Element.AnimateBase;
+		
+		// animate transform element
+		svg.Element.animateTransform = function(node) {
+			this.base = svg.Element.animate;
+			this.base(node);
+		}
+		svg.Element.animateTransform.prototype = new svg.Element.animate;
+		
+		// font element
+		svg.Element.font = function(node) {
+			this.base = svg.Element.ElementBase;
+			this.base(node);
+
+			this.horizAdvX = this.attribute('horiz-adv-x').numValue();			
+			
+			this.isRTL = false;
+			this.isArabic = false;
+			this.fontFace = null;
+			this.missingGlyph = null;
+			this.glyphs = [];			
+			for (var i=0; i<this.children.length; i++) {
+				var child = this.children[i];
+				if (child.type == 'font-face') {
+					this.fontFace = child;
+					if (child.style('font-family').hasValue()) {
+						svg.Definitions[child.style('font-family').value] = this;
+					}
+				}
+				else if (child.type == 'missing-glyph') this.missingGlyph = child;
+				else if (child.type == 'glyph') {
+					if (child.arabicForm != '') {
+						this.isRTL = true;
+						this.isArabic = true;
+						if (typeof(this.glyphs[child.unicode]) == 'undefined') this.glyphs[child.unicode] = [];
+						this.glyphs[child.unicode][child.arabicForm] = child;
+					}
+					else {
+						this.glyphs[child.unicode] = child;
+					}
+				}
+			}	
+		}
+		svg.Element.font.prototype = new svg.Element.ElementBase;
+		
+		// font-face element
+		svg.Element.fontface = function(node) {
+			this.base = svg.Element.ElementBase;
+			this.base(node);	
+			
+			this.ascent = this.attribute('ascent').value;
+			this.descent = this.attribute('descent').value;
+			this.unitsPerEm = this.attribute('units-per-em').numValue();				
+		}
+		svg.Element.fontface.prototype = new svg.Element.ElementBase;
+		
+		// missing-glyph element
+		svg.Element.missingglyph = function(node) {
+			this.base = svg.Element.path;
+			this.base(node);	
+			
+			this.horizAdvX = 0;
+		}
+		svg.Element.missingglyph.prototype = new svg.Element.path;
+		
+		// glyph element
+		svg.Element.glyph = function(node) {
+			this.base = svg.Element.path;
+			this.base(node);	
+			
+			this.horizAdvX = this.attribute('horiz-adv-x').numValue();
+			this.unicode = this.attribute('unicode').value;
+			this.arabicForm = this.attribute('arabic-form').value;
+		}
+		svg.Element.glyph.prototype = new svg.Element.path;
+		
+		// text element
+		svg.Element.text = function(node) {
+			this.base = svg.Element.RenderedElementBase;
+			this.base(node);
+			
+			if (node != null) {
+				// add children
+				this.children = [];
+				for (var i=0; i<node.childNodes.length; i++) {
+					var childNode = node.childNodes[i];
+					if (childNode.nodeType == 1) { // capture tspan and tref nodes
+						this.addChild(childNode, true);
+					}
+					else if (childNode.nodeType == 3) { // capture text
+						this.addChild(new svg.Element.tspan(childNode), false);
+					}
+				}
+			}
+			
+			this.baseSetContext = this.setContext;
+			this.setContext = function(ctx) {
+				this.baseSetContext(ctx);
+				if (this.style('dominant-baseline').hasValue()) ctx.textBaseline = this.style('dominant-baseline').value;
+				if (this.style('alignment-baseline').hasValue()) ctx.textBaseline = this.style('alignment-baseline').value;
+			}
+			
+			this.renderChildren = function(ctx) {
+				var textAnchor = this.style('text-anchor').valueOrDefault('start');
+				var x = this.attribute('x').Length.toPixels('x');
+				var y = this.attribute('y').Length.toPixels('y');
+				for (var i=0; i<this.children.length; i++) {
+					var child = this.children[i];
+				
+					if (child.attribute('x').hasValue()) {
+						child.x = child.attribute('x').Length.toPixels('x');
+					}
+					else {
+						if (child.attribute('dx').hasValue()) x += child.attribute('dx').Length.toPixels('x');
+						child.x = x;
+					}
+					
+					var childLength = child.measureText(ctx);
+					if (textAnchor != 'start' && (i==0 || child.attribute('x').hasValue())) { // new group?
+						// loop through rest of children
+						var groupLength = childLength;
+						for (var j=i+1; j<this.children.length; j++) {
+							var childInGroup = this.children[j];
+							if (childInGroup.attribute('x').hasValue()) break; // new group
+							groupLength += childInGroup.measureText(ctx);
+						}
+						child.x -= (textAnchor == 'end' ? groupLength : groupLength / 2.0);
+					}
+					x = child.x + childLength;
+					
+					if (child.attribute('y').hasValue()) {
+						child.y = child.attribute('y').Length.toPixels('y');
+					}
+					else {
+						if (child.attribute('dy').hasValue()) y += child.attribute('dy').Length.toPixels('y');
+						child.y = y;
+					}	
+					y = child.y;
+					
+					child.render(ctx);
+				}
+			}
+		}
+		svg.Element.text.prototype = new svg.Element.RenderedElementBase;
+		
+		// text base
+		svg.Element.TextElementBase = function(node) {
+			this.base = svg.Element.RenderedElementBase;
+			this.base(node);
+			
+			this.getGlyph = function(font, text, i) {
+				var c = text[i];
+				var glyph = null;
+				if (font.isArabic) {
+					var arabicForm = 'isolated';
+					if ((i==0 || text[i-1]==' ') && i<text.length-2 && text[i+1]!=' ') arabicForm = 'terminal'; 
+					if (i>0 && text[i-1]!=' ' && i<text.length-2 && text[i+1]!=' ') arabicForm = 'medial';
+					if (i>0 && text[i-1]!=' ' && (i == text.length-1 || text[i+1]==' ')) arabicForm = 'initial';
+					if (typeof(font.glyphs[c]) != 'undefined') {
+						glyph = font.glyphs[c][arabicForm];
+						if (glyph == null && font.glyphs[c].type == 'glyph') glyph = font.glyphs[c];
+					}
+				}
+				else {
+					glyph = font.glyphs[c];
+				}
+				if (glyph == null) glyph = font.missingGlyph;
+				return glyph;
+			}
+			
+			this.renderChildren = function(ctx) {
+				var customFont = this.parent.style('font-family').Definition.getDefinition();
+				if (customFont != null) {
+					var fontSize = this.parent.style('font-size').numValueOrDefault(svg.Font.Parse(svg.ctx.font).fontSize);
+					var fontStyle = this.parent.style('font-style').valueOrDefault(svg.Font.Parse(svg.ctx.font).fontStyle);
+					var text = this.getText();
+					if (customFont.isRTL) text = text.split("").reverse().join("");
+					
+					var dx = svg.ToNumberArray(this.parent.attribute('dx').value);
+					for (var i=0; i<text.length; i++) {
+						var glyph = this.getGlyph(customFont, text, i);
+						var scale = fontSize / customFont.fontFace.unitsPerEm;
+						ctx.translate(this.x, this.y);
+						ctx.scale(scale, -scale);
+						var lw = ctx.lineWidth;
+						ctx.lineWidth = ctx.lineWidth * customFont.fontFace.unitsPerEm / fontSize;
+						if (fontStyle == 'italic') ctx.transform(1, 0, .4, 1, 0, 0);
+						glyph.render(ctx);
+						if (fontStyle == 'italic') ctx.transform(1, 0, -.4, 1, 0, 0);
+						ctx.lineWidth = lw;
+						ctx.scale(1/scale, -1/scale);
+						ctx.translate(-this.x, -this.y);	
+						
+						this.x += fontSize * (glyph.horizAdvX || customFont.horizAdvX) / customFont.fontFace.unitsPerEm;
+						if (typeof(dx[i]) != 'undefined' && !isNaN(dx[i])) {
+							this.x += dx[i];
+						}
+					}
+					return;
+				}
+			
+				if (ctx.strokeStyle != '') ctx.strokeText(svg.compressSpaces(this.getText()), this.x, this.y);
+				if (ctx.fillStyle != '') ctx.fillText(svg.compressSpaces(this.getText()), this.x, this.y);
+			}
+			
+			this.getText = function() {
+				// OVERRIDE ME
+			}
+			
+			this.measureText = function(ctx) {
+				var customFont = this.parent.style('font-family').Definition.getDefinition();
+				if (customFont != null) {
+					var fontSize = this.parent.style('font-size').numValueOrDefault(svg.Font.Parse(svg.ctx.font).fontSize);
+					var measure = 0;
+					var text = this.getText();
+					if (customFont.isRTL) text = text.split("").reverse().join("");
+					var dx = svg.ToNumberArray(this.parent.attribute('dx').value);
+					for (var i=0; i<text.length; i++) {
+						var glyph = this.getGlyph(customFont, text, i);
+						measure += (glyph.horizAdvX || customFont.horizAdvX) * fontSize / customFont.fontFace.unitsPerEm;
+						if (typeof(dx[i]) != 'undefined' && !isNaN(dx[i])) {
+							measure += dx[i];
+						}
+					}
+					return measure;
+				}
+			
+				var textToMeasure = svg.compressSpaces(this.getText());
+				if (!ctx.measureText) return textToMeasure.length * 10;
+				
+				ctx.save();
+				this.setContext(ctx);
+				var width = ctx.measureText(textToMeasure).width;
+				ctx.restore();
+				return width;
+			}
+		}
+		svg.Element.TextElementBase.prototype = new svg.Element.RenderedElementBase;
+		
+		// tspan 
+		svg.Element.tspan = function(node) {
+			this.base = svg.Element.TextElementBase;
+			this.base(node);
+			
+			this.text = node.nodeType == 3 ? node.nodeValue : // text
+						node.childNodes.length > 0 ? node.childNodes[0].nodeValue : // element
+						node.text;
+			this.getText = function() {
+				return this.text;
+			}
+		}
+		svg.Element.tspan.prototype = new svg.Element.TextElementBase;
+		
+		// tref
+		svg.Element.tref = function(node) {
+			this.base = svg.Element.TextElementBase;
+			this.base(node);
+			
+			this.getText = function() {
+				var element = this.attribute('xlink:href').Definition.getDefinition();
+				if (element != null) return element.children[0].getText();
+			}
+		}
+		svg.Element.tref.prototype = new svg.Element.TextElementBase;		
+		
+		// a element
+		svg.Element.a = function(node) {
+			this.base = svg.Element.TextElementBase;
+			this.base(node);
+			
+			this.hasText = true;
+			for (var i=0; i<node.childNodes.length; i++) {
+				if (node.childNodes[i].nodeType != 3) this.hasText = false;
+			}
+			
+			// this might contain text
+			this.text = this.hasText ? node.childNodes[0].nodeValue : '';
+			this.getText = function() {
+				return this.text;
+			}		
+
+			this.baseRenderChildren = this.renderChildren;
+			this.renderChildren = function(ctx) {
+				if (this.hasText) {
+					// render as text element
+					this.baseRenderChildren(ctx);
+					var fontSize = new svg.Property('fontSize', svg.Font.Parse(svg.ctx.font).fontSize);
+					svg.Mouse.checkBoundingBox(this, new svg.BoundingBox(this.x, this.y - fontSize.Length.toPixels('y'), this.x + this.measureText(ctx), this.y));					
+				}
+				else {
+					// render as temporary group
+					var g = new svg.Element.g();
+					g.children = this.children;
+					g.parent = this;
+					g.render(ctx);
+				}
+			}
+			
+			this.onclick = function() {
+				window.open(this.attribute('xlink:href').value);
+			}
+			
+			this.onmousemove = function() {
+				svg.ctx.canvas.style.cursor = 'pointer';
+			}
+		}
+		svg.Element.a.prototype = new svg.Element.TextElementBase;		
+		
+		// image element
+		svg.Element.image = function(node) {
+			this.base = svg.Element.RenderedElementBase;
+			this.base(node);
+			
+			svg.Images.push(this);
+			this.img = document.createElement('img');
+			this.loaded = false;
+			var that = this;
+			this.img.onload = function() { that.loaded = true; }
+			this.img.src = this.attribute('xlink:href').value;
+			
+			this.renderChildren = function(ctx) {
+				var x = this.attribute('x').Length.toPixels('x');
+				var y = this.attribute('y').Length.toPixels('y');
+				
+				var width = this.attribute('width').Length.toPixels('x');
+				var height = this.attribute('height').Length.toPixels('y');			
+				if (width == 0 || height == 0) return;
+			
+				ctx.save();
+				ctx.translate(x, y);
+				svg.AspectRatio(ctx,
+								this.attribute('preserveAspectRatio').value,
+								width,
+								this.img.width,
+								height,
+								this.img.height,
+								0,
+								0);	
+				ctx.drawImage(this.img, 0, 0);			
+				ctx.restore();
+			}
+		}
+		svg.Element.image.prototype = new svg.Element.RenderedElementBase;
+		
+		// group element
+		svg.Element.g = function(node) {
+			this.base = svg.Element.RenderedElementBase;
+			this.base(node);
+			
+			this.getBoundingBox = function() {
+				var bb = new svg.BoundingBox();
+				for (var i=0; i<this.children.length; i++) {
+					bb.addBoundingBox(this.children[i].getBoundingBox());
+				}
+				return bb;
+			};
+		}
+		svg.Element.g.prototype = new svg.Element.RenderedElementBase;
+
+		// symbol element
+		svg.Element.symbol = function(node) {
+			this.base = svg.Element.RenderedElementBase;
+			this.base(node);
+			
+			this.baseSetContext = this.setContext;
+			this.setContext = function(ctx) {		
+				this.baseSetContext(ctx);
+				
+				// viewbox
+				if (this.attribute('viewBox').hasValue()) {				
+					var viewBox = svg.ToNumberArray(this.attribute('viewBox').value);
+					var minX = viewBox[0];
+					var minY = viewBox[1];
+					width = viewBox[2];
+					height = viewBox[3];
+					
+					svg.AspectRatio(ctx,
+									this.attribute('preserveAspectRatio').value, 
+									this.attribute('width').Length.toPixels('x'),
+									width,
+									this.attribute('height').Length.toPixels('y'),
+									height,
+									minX,
+									minY);
+
+					svg.ViewPort.SetCurrent(viewBox[2], viewBox[3]);						
+				}
+			}			
+		}
+		svg.Element.symbol.prototype = new svg.Element.RenderedElementBase;		
+			
+		// style element
+		svg.Element.style = function(node) { 
+			this.base = svg.Element.ElementBase;
+			this.base(node);
+			
+			// text, or spaces then CDATA
+			var css = node.childNodes[0].nodeValue + (node.childNodes.length > 1 ? node.childNodes[1].nodeValue : '');
+			css = css.replace(/(\/\*([^*]|[\r\n]|(\*+([^*\/]|[\r\n])))*\*+\/)|(^[\s]*\/\/.*)/gm, ''); // remove comments
+			css = svg.compressSpaces(css); // replace whitespace
+			var cssDefs = css.split('}');
+			for (var i=0; i<cssDefs.length; i++) {
+				if (svg.trim(cssDefs[i]) != '') {
+					var cssDef = cssDefs[i].split('{');
+					var cssClasses = cssDef[0].split(',');
+					var cssProps = cssDef[1].split(';');
+					for (var j=0; j<cssClasses.length; j++) {
+						var cssClass = svg.trim(cssClasses[j]);
+						if (cssClass != '') {
+							var props = {};
+							for (var k=0; k<cssProps.length; k++) {
+								var prop = cssProps[k].indexOf(':');
+								var name = cssProps[k].substr(0, prop);
+								var value = cssProps[k].substr(prop + 1, cssProps[k].length - prop);
+								if (name != null && value != null) {
+									props[svg.trim(name)] = new svg.Property(svg.trim(name), svg.trim(value));
+								}
+							}
+							svg.Styles[cssClass] = props;
+							if (cssClass == '@font-face') {
+								var fontFamily = props['font-family'].value.replace(/"/g,'');
+								var srcs = props['src'].value.split(',');
+								for (var s=0; s<srcs.length; s++) {
+									if (srcs[s].indexOf('format("svg")') > 0) {
+										var urlStart = srcs[s].indexOf('url');
+										var urlEnd = srcs[s].indexOf(')', urlStart);
+										var url = srcs[s].substr(urlStart + 5, urlEnd - urlStart - 6);
+										var doc = svg.parseXml(svg.ajax(url));
+										var fonts = doc.getElementsByTagName('font');
+										for (var f=0; f<fonts.length; f++) {
+											var font = svg.CreateElement(fonts[f]);
+											svg.Definitions[fontFamily] = font;
+										}
+									}
+								}
+							}
+						}
+					}
+				}
+			}
+		}
+		svg.Element.style.prototype = new svg.Element.ElementBase;
+		
+		// use element 
+		svg.Element.use = function(node) {
+			this.base = svg.Element.RenderedElementBase;
+			this.base(node);
+			
+			this.baseSetContext = this.setContext;
+			this.setContext = function(ctx) {
+				this.baseSetContext(ctx);
+				if (this.attribute('x').hasValue()) ctx.translate(this.attribute('x').Length.toPixels('x'), 0);
+				if (this.attribute('y').hasValue()) ctx.translate(0, this.attribute('y').Length.toPixels('y'));
+			}
+			
+			this.getDefinition = function() {
+				var element = this.attribute('xlink:href').Definition.getDefinition();
+				if (this.attribute('width').hasValue()) element.attribute('width', true).value = this.attribute('width').value;
+				if (this.attribute('height').hasValue()) element.attribute('height', true).value = this.attribute('height').value;
+				return element;
+			}
+			
+			this.path = function(ctx) {
+				var element = this.getDefinition();
+				if (element != null) element.path(ctx);
+			}
+			
+			this.renderChildren = function(ctx) {
+				var element = this.getDefinition();
+				if (element != null) element.render(ctx);
+			}
+		}
+		svg.Element.use.prototype = new svg.Element.RenderedElementBase;
+		
+		// mask element
+		svg.Element.mask = function(node) {
+			this.base = svg.Element.ElementBase;
+			this.base(node);
+						
+			this.apply = function(ctx, element) {
+				// render as temp svg	
+				var x = this.attribute('x').Length.toPixels('x');
+				var y = this.attribute('y').Length.toPixels('y');
+				var width = this.attribute('width').Length.toPixels('x');
+				var height = this.attribute('height').Length.toPixels('y');
+				
+				// temporarily remove mask to avoid recursion
+				var mask = element.attribute('mask').value;
+				element.attribute('mask').value = '';
+				
+					var cMask = document.createElement('canvas');
+					cMask.width = x + width;
+					cMask.height = y + height;
+					var maskCtx = cMask.getContext('2d');
+					this.renderChildren(maskCtx);
+				
+					var c = document.createElement('canvas');
+					c.width = x + width;
+					c.height = y + height;
+					var tempCtx = c.getContext('2d');
+					element.render(tempCtx);
+					tempCtx.globalCompositeOperation = 'destination-in';
+					tempCtx.fillStyle = maskCtx.createPattern(cMask, 'no-repeat');
+					tempCtx.fillRect(0, 0, x + width, y + height);
+					
+					ctx.fillStyle = tempCtx.createPattern(c, 'no-repeat');
+					ctx.fillRect(0, 0, x + width, y + height);
+					
+				// reassign mask
+				element.attribute('mask').value = mask;	
+			}
+			
+			this.render = function(ctx) {
+				// NO RENDER
+			}
+		}
+		svg.Element.mask.prototype = new svg.Element.ElementBase;
+		
+		// clip element
+		svg.Element.clipPath = function(node) {
+			this.base = svg.Element.ElementBase;
+			this.base(node);
+			
+			this.apply = function(ctx) {
+				for (var i=0; i<this.children.length; i++) {
+					if (this.children[i].path) {
+						this.children[i].path(ctx);
+						ctx.clip();
+					}
+				}
+			}
+			
+			this.render = function(ctx) {
+				// NO RENDER
+			}
+		}
+		svg.Element.clipPath.prototype = new svg.Element.ElementBase;
+
+		// filters
+		svg.Element.filter = function(node) {
+			this.base = svg.Element.ElementBase;
+			this.base(node);
+						
+			this.apply = function(ctx, element) {
+				// render as temp svg	
+				var bb = element.getBoundingBox();
+				var x = this.attribute('x').Length.toPixels('x');
+				var y = this.attribute('y').Length.toPixels('y');
+				if (x == 0 || y == 0) {
+					x = bb.x1;
+					y = bb.y1;
+				}
+				var width = this.attribute('width').Length.toPixels('x');
+				var height = this.attribute('height').Length.toPixels('y');
+				if (width == 0 || height == 0) {
+					width = bb.width();
+					height = bb.height();
+				}
+				
+				// temporarily remove filter to avoid recursion
+				var filter = element.style('filter').value;
+				element.style('filter').value = '';
+				
+				// max filter distance
+				var extraPercent = .20;
+				var px = extraPercent * width;
+				var py = extraPercent * height;
+				
+				var c = document.createElement('canvas');
+				c.width = width + 2*px;
+				c.height = height + 2*py;
+				var tempCtx = c.getContext('2d');
+				tempCtx.translate(-x + px, -y + py);
+				element.render(tempCtx);
+			
+				// apply filters
+				for (var i=0; i<this.children.length; i++) {
+					this.children[i].apply(tempCtx, 0, 0, width + 2*px, height + 2*py);
+				}
+				
+				// render on me
+				ctx.drawImage(c, 0, 0, width + 2*px, height + 2*py, x - px, y - py, width + 2*px, height + 2*py);
+				
+				// reassign filter
+				element.style('filter', true).value = filter;	
+			}
+			
+			this.render = function(ctx) {
+				// NO RENDER
+			}		
+		}
+		svg.Element.filter.prototype = new svg.Element.ElementBase;
+		
+		svg.Element.feGaussianBlur = function(node) {
+			this.base = svg.Element.ElementBase;
+			this.base(node);	
+			
+			function make_fgauss(sigma) {
+				sigma = Math.max(sigma, 0.01);			      
+				var len = Math.ceil(sigma * 4.0) + 1;                     
+				mask = [];                               
+				for (var i = 0; i < len; i++) {                             
+					mask[i] = Math.exp(-0.5 * (i / sigma) * (i / sigma));                                           
+				}                                                           
+				return mask; 
+			}
+			
+			function normalize(mask) {
+				var sum = 0;
+				for (var i = 1; i < mask.length; i++) {
+					sum += Math.abs(mask[i]);
+				}
+				sum = 2 * sum + Math.abs(mask[0]);
+				for (var i = 0; i < mask.length; i++) {
+					mask[i] /= sum;
+				}
+				return mask;
+			}
+			
+			function convolve_even(src, dst, mask, width, height) {
+			  for (var y = 0; y < height; y++) {
+				for (var x = 0; x < width; x++) {
+				  var a = imGet(src, x, y, width, height, 3)/255;
+				  for (var rgba = 0; rgba < 4; rgba++) {					  
+					  var sum = mask[0] * (a==0?255:imGet(src, x, y, width, height, rgba)) * (a==0||rgba==3?1:a);
+					  for (var i = 1; i < mask.length; i++) {
+						var a1 = imGet(src, Math.max(x-i,0), y, width, height, 3)/255;
+					    var a2 = imGet(src, Math.min(x+i, width-1), y, width, height, 3)/255;
+						sum += mask[i] * 
+						  ((a1==0?255:imGet(src, Math.max(x-i,0), y, width, height, rgba)) * (a1==0||rgba==3?1:a1) + 
+						   (a2==0?255:imGet(src, Math.min(x+i, width-1), y, width, height, rgba)) * (a2==0||rgba==3?1:a2));
+					  }
+					  imSet(dst, y, x, height, width, rgba, sum);
+				  }			  
+				}
+			  }
+			}		
+
+			function imGet(img, x, y, width, height, rgba) {
+				return img[y*width*4 + x*4 + rgba];
+			}
+			
+			function imSet(img, x, y, width, height, rgba, val) {
+				img[y*width*4 + x*4 + rgba] = val;
+			}
+						
+			function blur(ctx, width, height, sigma)
+			{
+				var srcData = ctx.getImageData(0, 0, width, height);
+				var mask = make_fgauss(sigma);
+				mask = normalize(mask);
+				tmp = [];
+				convolve_even(srcData.data, tmp, mask, width, height);
+				convolve_even(tmp, srcData.data, mask, height, width);
+				ctx.clearRect(0, 0, width, height);
+				ctx.putImageData(srcData, 0, 0);
+			}			
+		
+			this.apply = function(ctx, x, y, width, height) {
+				// assuming x==0 && y==0 for now
+				blur(ctx, width, height, this.attribute('stdDeviation').numValue());
+			}
+		}
+		svg.Element.filter.prototype = new svg.Element.feGaussianBlur;
+		
+		// title element, do nothing
+		svg.Element.title = function(node) {
+		}
+		svg.Element.title.prototype = new svg.Element.ElementBase;
+
+		// desc element, do nothing
+		svg.Element.desc = function(node) {
+		}
+		svg.Element.desc.prototype = new svg.Element.ElementBase;		
+		
+		svg.Element.MISSING = function(node) {
+			console.log('ERROR: Element \'' + node.nodeName + '\' not yet implemented.');
+		}
+		svg.Element.MISSING.prototype = new svg.Element.ElementBase;
+		
+		// element factory
+		svg.CreateElement = function(node) {	
+			var className = node.nodeName.replace(/^[^:]+:/,''); // remove namespace
+			className = className.replace(/\-/g,''); // remove dashes
+			var e = null;
+			if (typeof(svg.Element[className]) != 'undefined') {
+				e = new svg.Element[className](node);
+			}
+			else {
+				e = new svg.Element.MISSING(node);
+			}
+
+			e.type = node.nodeName;
+			return e;
+		}
+				
+		// load from url
+		svg.load = function(ctx, url) {
+			svg.loadXml(ctx, svg.ajax(url));
+		}
+		
+		// load from xml
+		svg.loadXml = function(ctx, xml) {
+			svg.loadXmlDoc(ctx, svg.parseXml(xml));
+		}
+		
+		svg.loadXmlDoc = function(ctx, dom) {
+			svg.init(ctx);
+			
+			var mapXY = function(p) {
+				var e = ctx.canvas;
+				while (e) {
+					p.x -= e.offsetLeft;
+					p.y -= e.offsetTop;
+					e = e.offsetParent;
+				}
+				if (window.scrollX) p.x += window.scrollX;
+				if (window.scrollY) p.y += window.scrollY;
+				return p;
+			}
+			
+			// bind mouse
+			if (svg.opts['ignoreMouse'] != true) {
+				ctx.canvas.onclick = function(e) {
+					var p = mapXY(new svg.Point(e != null ? e.clientX : event.clientX, e != null ? e.clientY : event.clientY));
+					svg.Mouse.onclick(p.x, p.y);
+				};
+				ctx.canvas.onmousemove = function(e) {
+					var p = mapXY(new svg.Point(e != null ? e.clientX : event.clientX, e != null ? e.clientY : event.clientY));
+					svg.Mouse.onmousemove(p.x, p.y);
+				};
+			}
+		
+			var e = svg.CreateElement(dom.documentElement);
+			e.root = true;
+					
+			// render loop
+			var isFirstRender = true;
+			var draw = function() {
+				svg.ViewPort.Clear();
+				if (ctx.canvas.parentNode) svg.ViewPort.SetCurrent(ctx.canvas.parentNode.clientWidth, ctx.canvas.parentNode.clientHeight);
+			
+				if (svg.opts['ignoreDimensions'] != true) {
+					// set canvas size
+					if (e.style('width').hasValue()) {
+						ctx.canvas.width = e.style('width').Length.toPixels('x');
+						ctx.canvas.style.width = ctx.canvas.width + 'px';
+					}
+					if (e.style('height').hasValue()) {
+						ctx.canvas.height = e.style('height').Length.toPixels('y');
+						ctx.canvas.style.height = ctx.canvas.height + 'px';
+					}
+				}
+				var cWidth = ctx.canvas.clientWidth || ctx.canvas.width;
+				var cHeight = ctx.canvas.clientHeight || ctx.canvas.height;
+				svg.ViewPort.SetCurrent(cWidth, cHeight);		
+				
+				if (svg.opts != null && svg.opts['offsetX'] != null) e.attribute('x', true).value = svg.opts['offsetX'];
+				if (svg.opts != null && svg.opts['offsetY'] != null) e.attribute('y', true).value = svg.opts['offsetY'];
+				if (svg.opts != null && svg.opts['scaleWidth'] != null && svg.opts['scaleHeight'] != null) {
+					var xRatio = 1, yRatio = 1;
+					if (e.attribute('width').hasValue()) xRatio = e.attribute('width').Length.toPixels('x') / svg.opts['scaleWidth'];
+					if (e.attribute('height').hasValue()) yRatio = e.attribute('height').Length.toPixels('y') / svg.opts['scaleHeight'];
+				
+					e.attribute('width', true).value = svg.opts['scaleWidth'];
+					e.attribute('height', true).value = svg.opts['scaleHeight'];			
+					e.attribute('viewBox', true).value = '0 0 ' + (cWidth * xRatio) + ' ' + (cHeight * yRatio);
+					e.attribute('preserveAspectRatio', true).value = 'none';
+				}
+			
+				// clear and render
+				if (svg.opts['ignoreClear'] != true) {
+					ctx.clearRect(0, 0, cWidth, cHeight);
+				}
+				e.render(ctx);
+				if (isFirstRender) {
+					isFirstRender = false;
+					if (svg.opts != null && typeof(svg.opts['renderCallback']) == 'function') svg.opts['renderCallback']();
+				}			
+			}
+			
+			var waitingForImages = true;
+			if (svg.ImagesLoaded()) {
+				waitingForImages = false;
+				draw();
+			}
+			svg.intervalID = setInterval(function() { 
+				var needUpdate = false;
+				
+				if (waitingForImages && svg.ImagesLoaded()) {
+					waitingForImages = false;
+					needUpdate = true;
+				}
+			
+				// need update from mouse events?
+				if (svg.opts['ignoreMouse'] != true) {
+					needUpdate = needUpdate | svg.Mouse.hasEvents();
+				}
+			
+				// need update from animations?
+				if (svg.opts['ignoreAnimation'] != true) {
+					for (var i=0; i<svg.Animations.length; i++) {
+						needUpdate = needUpdate | svg.Animations[i].update(1000 / svg.FRAMERATE);
+					}
+				}
+				
+				// need update from redraw?
+				if (svg.opts != null && typeof(svg.opts['forceRedraw']) == 'function') {
+					if (svg.opts['forceRedraw']() == true) needUpdate = true;
+				}
+				
+				// render if needed
+				if (needUpdate) {
+					draw();				
+					svg.Mouse.runEvents(); // run and clear our events
+				}
+			}, 1000 / svg.FRAMERATE);
+		}
+		
+		svg.stop = function() {
+			if (svg.intervalID) {
+				clearInterval(svg.intervalID);
+			}
+		}
+		
+		svg.Mouse = new (function() {
+			this.events = [];
+			this.hasEvents = function() { return this.events.length != 0; }
+		
+			this.onclick = function(x, y) {
+				this.events.push({ type: 'onclick', x: x, y: y, 
+					run: function(e) { if (e.onclick) e.onclick(); }
+				});
+			}
+			
+			this.onmousemove = function(x, y) {
+				this.events.push({ type: 'onmousemove', x: x, y: y,
+					run: function(e) { if (e.onmousemove) e.onmousemove(); }
+				});
+			}			
+			
+			this.eventElements = [];
+			
+			this.checkPath = function(element, ctx) {
+				for (var i=0; i<this.events.length; i++) {
+					var e = this.events[i];
+					if (ctx.isPointInPath && ctx.isPointInPath(e.x, e.y)) this.eventElements[i] = element;
+				}
+			}
+			
+			this.checkBoundingBox = function(element, bb) {
+				for (var i=0; i<this.events.length; i++) {
+					var e = this.events[i];
+					if (bb.isPointInBox(e.x, e.y)) this.eventElements[i] = element;
+				}			
+			}
+			
+			this.runEvents = function() {
+				svg.ctx.canvas.style.cursor = '';
+				
+				for (var i=0; i<this.events.length; i++) {
+					var e = this.events[i];
+					var element = this.eventElements[i];
+					while (element) {
+						e.run(element);
+						element = element.parent;
+					}
+				}		
+			
+				// done running, clear
+				this.events = []; 
+				this.eventElements = [];
+			}
+		});
+		
+		return svg;
+	}
+})();
+
+if (CanvasRenderingContext2D) {
+	CanvasRenderingContext2D.prototype.drawSvg = function(s, dx, dy, dw, dh) {
+		canvg(this.canvas, s, { 
+			ignoreMouse: true, 
+			ignoreAnimation: true, 
+			ignoreDimensions: true, 
+			ignoreClear: true, 
+			offsetX: dx, 
+			offsetY: dy, 
+			scaleWidth: dw, 
+			scaleHeight: dh
+		});
+	}
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/canvg/rgbcolor.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/canvg/rgbcolor.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/canvg/rgbcolor.js	(revision 29468)
@@ -0,0 +1,287 @@
+/**
+ * A class to parse color values
+ * @author Stoyan Stefanov <sstoo@gmail.com>
+ * @link   http://www.phpied.com/rgb-color-parser-in-javascript/
+ * @license Use it if you like it
+ */
+function RGBColor(color_string)
+{
+    this.ok = false;
+
+    // strip any leading #
+    if (color_string.charAt(0) == '#') { // remove # if any
+        color_string = color_string.substr(1,6);
+    }
+
+    color_string = color_string.replace(/ /g,'');
+    color_string = color_string.toLowerCase();
+
+    // before getting into regexps, try simple matches
+    // and overwrite the input
+    var simple_colors = {
+        aliceblue: 'f0f8ff',
+        antiquewhite: 'faebd7',
+        aqua: '00ffff',
+        aquamarine: '7fffd4',
+        azure: 'f0ffff',
+        beige: 'f5f5dc',
+        bisque: 'ffe4c4',
+        black: '000000',
+        blanchedalmond: 'ffebcd',
+        blue: '0000ff',
+        blueviolet: '8a2be2',
+        brown: 'a52a2a',
+        burlywood: 'deb887',
+        cadetblue: '5f9ea0',
+        chartreuse: '7fff00',
+        chocolate: 'd2691e',
+        coral: 'ff7f50',
+        cornflowerblue: '6495ed',
+        cornsilk: 'fff8dc',
+        crimson: 'dc143c',
+        cyan: '00ffff',
+        darkblue: '00008b',
+        darkcyan: '008b8b',
+        darkgoldenrod: 'b8860b',
+        darkgray: 'a9a9a9',
+        darkgreen: '006400',
+        darkkhaki: 'bdb76b',
+        darkmagenta: '8b008b',
+        darkolivegreen: '556b2f',
+        darkorange: 'ff8c00',
+        darkorchid: '9932cc',
+        darkred: '8b0000',
+        darksalmon: 'e9967a',
+        darkseagreen: '8fbc8f',
+        darkslateblue: '483d8b',
+        darkslategray: '2f4f4f',
+        darkturquoise: '00ced1',
+        darkviolet: '9400d3',
+        deeppink: 'ff1493',
+        deepskyblue: '00bfff',
+        dimgray: '696969',
+        dodgerblue: '1e90ff',
+        feldspar: 'd19275',
+        firebrick: 'b22222',
+        floralwhite: 'fffaf0',
+        forestgreen: '228b22',
+        fuchsia: 'ff00ff',
+        gainsboro: 'dcdcdc',
+        ghostwhite: 'f8f8ff',
+        gold: 'ffd700',
+        goldenrod: 'daa520',
+        gray: '808080',
+        green: '008000',
+        greenyellow: 'adff2f',
+        honeydew: 'f0fff0',
+        hotpink: 'ff69b4',
+        indianred : 'cd5c5c',
+        indigo : '4b0082',
+        ivory: 'fffff0',
+        khaki: 'f0e68c',
+        lavender: 'e6e6fa',
+        lavenderblush: 'fff0f5',
+        lawngreen: '7cfc00',
+        lemonchiffon: 'fffacd',
+        lightblue: 'add8e6',
+        lightcoral: 'f08080',
+        lightcyan: 'e0ffff',
+        lightgoldenrodyellow: 'fafad2',
+        lightgrey: 'd3d3d3',
+        lightgreen: '90ee90',
+        lightpink: 'ffb6c1',
+        lightsalmon: 'ffa07a',
+        lightseagreen: '20b2aa',
+        lightskyblue: '87cefa',
+        lightslateblue: '8470ff',
+        lightslategray: '778899',
+        lightsteelblue: 'b0c4de',
+        lightyellow: 'ffffe0',
+        lime: '00ff00',
+        limegreen: '32cd32',
+        linen: 'faf0e6',
+        magenta: 'ff00ff',
+        maroon: '800000',
+        mediumaquamarine: '66cdaa',
+        mediumblue: '0000cd',
+        mediumorchid: 'ba55d3',
+        mediumpurple: '9370d8',
+        mediumseagreen: '3cb371',
+        mediumslateblue: '7b68ee',
+        mediumspringgreen: '00fa9a',
+        mediumturquoise: '48d1cc',
+        mediumvioletred: 'c71585',
+        midnightblue: '191970',
+        mintcream: 'f5fffa',
+        mistyrose: 'ffe4e1',
+        moccasin: 'ffe4b5',
+        navajowhite: 'ffdead',
+        navy: '000080',
+        oldlace: 'fdf5e6',
+        olive: '808000',
+        olivedrab: '6b8e23',
+        orange: 'ffa500',
+        orangered: 'ff4500',
+        orchid: 'da70d6',
+        palegoldenrod: 'eee8aa',
+        palegreen: '98fb98',
+        paleturquoise: 'afeeee',
+        palevioletred: 'd87093',
+        papayawhip: 'ffefd5',
+        peachpuff: 'ffdab9',
+        peru: 'cd853f',
+        pink: 'ffc0cb',
+        plum: 'dda0dd',
+        powderblue: 'b0e0e6',
+        purple: '800080',
+        red: 'ff0000',
+        rosybrown: 'bc8f8f',
+        royalblue: '4169e1',
+        saddlebrown: '8b4513',
+        salmon: 'fa8072',
+        sandybrown: 'f4a460',
+        seagreen: '2e8b57',
+        seashell: 'fff5ee',
+        sienna: 'a0522d',
+        silver: 'c0c0c0',
+        skyblue: '87ceeb',
+        slateblue: '6a5acd',
+        slategray: '708090',
+        snow: 'fffafa',
+        springgreen: '00ff7f',
+        steelblue: '4682b4',
+        tan: 'd2b48c',
+        teal: '008080',
+        thistle: 'd8bfd8',
+        tomato: 'ff6347',
+        turquoise: '40e0d0',
+        violet: 'ee82ee',
+        violetred: 'd02090',
+        wheat: 'f5deb3',
+        white: 'ffffff',
+        whitesmoke: 'f5f5f5',
+        yellow: 'ffff00',
+        yellowgreen: '9acd32'
+    };
+    for (var key in simple_colors) {
+        if (color_string == key) {
+            color_string = simple_colors[key];
+        }
+    }
+    // emd of simple type-in colors
+
+    // array of color definition objects
+    var color_defs = [
+        {
+            re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,
+            example: ['rgb(123, 234, 45)', 'rgb(255,234,245)'],
+            process: function (bits){
+                return [
+                    parseInt(bits[1]),
+                    parseInt(bits[2]),
+                    parseInt(bits[3])
+                ];
+            }
+        },
+        {
+            re: /^(\w{2})(\w{2})(\w{2})$/,
+            example: ['#00ff00', '336699'],
+            process: function (bits){
+                return [
+                    parseInt(bits[1], 16),
+                    parseInt(bits[2], 16),
+                    parseInt(bits[3], 16)
+                ];
+            }
+        },
+        {
+            re: /^(\w{1})(\w{1})(\w{1})$/,
+            example: ['#fb0', 'f0f'],
+            process: function (bits){
+                return [
+                    parseInt(bits[1] + bits[1], 16),
+                    parseInt(bits[2] + bits[2], 16),
+                    parseInt(bits[3] + bits[3], 16)
+                ];
+            }
+        }
+    ];
+
+    // search through the definitions to find a match
+    for (var i = 0; i < color_defs.length; i++) {
+        var re = color_defs[i].re;
+        var processor = color_defs[i].process;
+        var bits = re.exec(color_string);
+        if (bits) {
+            channels = processor(bits);
+            this.r = channels[0];
+            this.g = channels[1];
+            this.b = channels[2];
+            this.ok = true;
+        }
+
+    }
+
+    // validate/cleanup values
+    this.r = (this.r < 0 || isNaN(this.r)) ? 0 : ((this.r > 255) ? 255 : this.r);
+    this.g = (this.g < 0 || isNaN(this.g)) ? 0 : ((this.g > 255) ? 255 : this.g);
+    this.b = (this.b < 0 || isNaN(this.b)) ? 0 : ((this.b > 255) ? 255 : this.b);
+
+    // some getters
+    this.toRGB = function () {
+        return 'rgb(' + this.r + ', ' + this.g + ', ' + this.b + ')';
+    }
+    this.toHex = function () {
+        var r = this.r.toString(16);
+        var g = this.g.toString(16);
+        var b = this.b.toString(16);
+        if (r.length == 1) r = '0' + r;
+        if (g.length == 1) g = '0' + g;
+        if (b.length == 1) b = '0' + b;
+        return '#' + r + g + b;
+    }
+
+    // help
+    this.getHelpXML = function () {
+
+        var examples = new Array();
+        // add regexps
+        for (var i = 0; i < color_defs.length; i++) {
+            var example = color_defs[i].example;
+            for (var j = 0; j < example.length; j++) {
+                examples[examples.length] = example[j];
+            }
+        }
+        // add type-in colors
+        for (var sc in simple_colors) {
+            examples[examples.length] = sc;
+        }
+
+        var xml = document.createElement('ul');
+        xml.setAttribute('id', 'rgbcolor-examples');
+        for (var i = 0; i < examples.length; i++) {
+            try {
+                var list_item = document.createElement('li');
+                var list_color = new RGBColor(examples[i]);
+                var example_div = document.createElement('div');
+                example_div.style.cssText =
+                        'margin: 3px; '
+                        + 'border: 1px solid black; '
+                        + 'background:' + list_color.toHex() + '; '
+                        + 'color:' + list_color.toHex()
+                ;
+                example_div.appendChild(document.createTextNode('test'));
+                var list_item_value = document.createTextNode(
+                    ' ' + examples[i] + ' -> ' + list_color.toRGB() + ' -> ' + list_color.toHex()
+                );
+                list_item.appendChild(example_div);
+                list_item.appendChild(list_item_value);
+                xml.appendChild(list_item);
+
+            } catch(e){}
+        }
+        return xml;
+
+    }
+
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/contextmenu.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/contextmenu.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/contextmenu.js	(revision 29468)
@@ -0,0 +1,68 @@
+/**
+ * Package: svgedit.contextmenu
+ * 
+ * Licensed under the Apache License, Version 2
+ * 
+ * Author: Adam Bender
+ */
+// Dependencies:
+// 1) jQuery (for dom injection of context menus)\
+
+var svgedit = svgedit || {};
+(function() {
+	var self = this;
+	if (!svgedit.contextmenu) {
+		svgedit.contextmenu = {};
+	}
+	self.contextMenuExtensions = {}
+	var addContextMenuItem = function(menuItem) {
+		// menuItem: {id, label, shortcut, action}
+		if (!menuItemIsValid(menuItem)) {
+			console
+					.error("Menu items must be defined and have at least properties: id, label, action, where action must be a function");
+			return;
+		}
+		if (menuItem.id in self.contextMenuExtensions) {
+			console.error('Cannot add extension "' + menuItem.id
+					+ '", an extension by that name already exists"');
+			return;
+		}
+		// Register menuItem action, see below for deferred menu dom injection
+		console.log("Registed contextmenu item: {id:"+ menuItem.id+", label:"+menuItem.label+"}");
+		self.contextMenuExtensions[menuItem.id] = menuItem;
+		//TODO: Need to consider how to handle custom enable/disable behavior
+	}
+	var hasCustomHandler = function(handlerKey) {
+		return self.contextMenuExtensions[handlerKey] && true;
+	}
+	var getCustomHandler = function(handlerKey) {
+		return self.contextMenuExtensions[handlerKey].action;
+	}
+	var injectExtendedContextMenuItemIntoDom = function(menuItem) {
+		if (Object.keys(self.contextMenuExtensions).length == 0) {
+			// all menuItems appear at the bottom of the menu in their own container.
+			// if this is the first extension menu we need to add the separator.
+			$("#cmenu_canvas").append("<li class='separator'>");
+		}
+		var shortcut = menuItem.shortcut || "";
+		$("#cmenu_canvas").append("<li class='disabled'><a href='#" + menuItem.id + "'>"                   
+									+ menuItem.label + "<span class='shortcut'>"
+									+ shortcut + "</span></a></li>");
+	}
+
+	var menuItemIsValid = function(menuItem) {
+		return menuItem && menuItem.id && menuItem.label && menuItem.action && typeof menuItem.action == 'function';
+	}
+	
+	// Defer injection to wait out initial menu processing. This probably goes away once all context
+	// menu behavior is brought here.
+	methodDraw.ready(function() {
+		for (menuItem in contextMenuExtensions) {
+			injectExtendedContextMenuItemIntoDom(contextMenuExtensions[menuItem]);
+		}
+	});
+	svgedit.contextmenu.resetCustomMenus = function(){self.contextMenuExtensions = {}}
+	svgedit.contextmenu.add = addContextMenuItem;
+	svgedit.contextmenu.hasCustomHandler = hasCustomHandler;
+	svgedit.contextmenu.getCustomHandler = getCustomHandler;
+})();
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/contextmenu/jquery.contextMenu.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/contextmenu/jquery.contextMenu.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/contextmenu/jquery.contextMenu.js	(revision 29468)
@@ -0,0 +1,223 @@
+// jQuery Context Menu Plugin
+//
+// Version 1.01
+//
+// Cory S.N. LaViska
+// A Beautiful Site (http://abeautifulsite.net/)
+// Modified by Alexis Deveria
+//
+// More info: http://abeautifulsite.net/2008/09/jquery-context-menu-plugin/
+//
+// Terms of Use
+//
+// This plugin is dual-licensed under the GNU General Public License
+//   and the MIT License and is copyright A Beautiful Site, LLC.
+//
+if(jQuery)( function() {
+	var win = $(window);
+	var doc = $(document);
+
+	$.extend($.fn, {
+		
+		contextMenu: function(o, callback) {
+			// Defaults
+			if( o.menu == undefined ) return false;
+			if( o.inSpeed == undefined ) o.inSpeed = 150;
+			if( o.outSpeed == undefined ) o.outSpeed = 75;
+			// 0 needs to be -1 for expected results (no fade)
+			if( o.inSpeed == 0 ) o.inSpeed = -1;
+			if( o.outSpeed == 0 ) o.outSpeed = -1;
+			// Loop each context menu
+			$(this).each( function() {
+				var el = $(this);
+				var offset = $(el).offset();
+			
+				var menu = $('#' + o.menu);
+
+				// Add contextMenu class
+				menu.addClass('contextMenu');
+				// Simulate a true right click
+
+				$(this).bind( "mousedown", function(e) {
+					var evt = e;
+					$(this).on("mouseup", function(e) {
+						var srcElement = $(this);
+						srcElement.unbind('mouseup');
+						$(".contextMenu").hide();
+						if( evt.button === 2 || o.allowLeft || (evt.ctrlKey && svgedit.browser.isMac()) ) {
+                if (!svgedit.browser.isTouch()) open_context_menu(e, evt, srcElement);
+						}
+					});
+				});
+
+				if (svgedit.browser.isTouch()) {
+  				 $(this).bind("taphold", function(e){
+  				  var srcElement = $(this);
+  				  srcElement.unbind('mouseup');
+  				  open_context_menu(e,e, srcElement);
+  				})
+				}
+				
+				var open_context_menu = function(e, evt, srcElement) {
+				  if (typeof evt == 'undefined') evt = e;
+				  e.stopPropagation();
+        
+				  // Get this context menu
+			  
+				  if( el.hasClass('disabled') || evt.altKey ) return false;
+				
+				  // Detect mouse position
+				  var d = {}, x = e.pageX, y = e.pageY;
+				  if (svgedit.browser.isTouch()) var d = {}, x = e.originalEvent.touches[0].pageX, y = e.originalEvent.touches[0].pageY;
+				
+				  var x_off = win.width() - menu.width(), 
+				  	y_off = win.height() - menu.height();
+        
+				  if(x > x_off - 15) x = x_off-15;
+				  if(y > y_off - 30) y = y_off-30; // 30 is needed to prevent scrollbars in FF
+				
+				  if(svgedit.browser.isTouch()) 
+				    y = y - (menu.height()/2)
+				
+				  // Show the menu
+				  doc.unbind('click');
+				  menu.css({ top: y, left: x }).fadeIn(o.inSpeed);
+				  // Hover events
+				  menu.find('A').mouseover( function() {
+				  	menu.find('LI.hover').removeClass('hover');
+				  	$(this).parent().addClass('hover');
+				  }).mouseout( function() {
+				  	menu.find('LI.hover').removeClass('hover');
+				  });
+				
+				  // Keyboard
+				  doc.keypress( function(e) {
+				  	switch( e.keyCode ) {
+				  		case 38: // up
+				  			if( !menu.find('LI.hover').length ) {
+				  				menu.find('LI:last').addClass('hover');
+				  			} else {
+				  				menu.find('LI.hover').removeClass('hover').prevAll('LI:not(.disabled)').eq(0).addClass('hover');
+				  				if( !menu.find('LI.hover').length ) menu.find('LI:last').addClass('hover');
+				  			}
+				  		break;
+				  		case 40: // down
+				  			if( menu.find('LI.hover').length == 0 ) {
+				  				menu.find('LI:first').addClass('hover');
+				  			} else {
+				  				menu.find('LI.hover').removeClass('hover').nextAll('LI:not(.disabled)').eq(0).addClass('hover');
+				  				if( !menu.find('LI.hover').length ) menu.find('LI:first').addClass('hover');
+				  			}
+				  		break;
+				  		case 13: // enter
+				  			menu.find('LI.hover A').trigger('click');
+				  		break;
+				  		case 27: // esc
+				  			doc.trigger('click');
+				  		break
+				  	}
+				  });
+				
+				  // When items are selected
+				  menu.find('A').unbind('mouseup');
+				  menu.find('LI:not(.disabled) A').mouseup( function() {
+				  	doc.unbind('click').unbind('keypress');
+				  	$(".contextMenu").hide();
+				  	// Callback
+				  	if( callback ) callback( $(this).attr('href').substr(1), $(srcElement), {x: x - offset.left, y: y - offset.top, docX: x, docY: y} );
+				  	return false;
+				  });
+				
+				  // Hide bindings
+				  setTimeout( function() { // Delay for Mozilla
+				  	doc.click( function() {
+				  		doc.unbind('click').unbind('keypress');
+				  		menu.fadeOut(o.outSpeed);
+				  		return false;
+				  	});
+				  }, 0);
+				}
+				
+				
+				
+				// Disable text selection
+				if( $.browser.mozilla ) {
+					$('#' + o.menu).each( function() { $(this).css({ 'MozUserSelect' : 'none' }); });
+				} else if( $.browser.msie ) {
+					$('#' + o.menu).each( function() { $(this).bind('selectstart.disableTextSelect', function() { return false; }); });
+				} else {
+					$('#' + o.menu).each(function() { $(this).bind('mousedown.disableTextSelect', function() { return false; }); });
+				}
+				// Disable browser context menu (requires both selectors to work in IE/Safari + FF/Chrome)
+				$(el).add($('UL.contextMenu')).bind('contextmenu', function() { return false; });
+				
+			});
+			return $(this);
+		},
+		
+		// Disable context menu items on the fly
+		disableContextMenuItems: function(o) {
+			if( o == undefined ) {
+				// Disable all
+				$(this).find('LI').addClass('disabled');
+				return( $(this) );
+			}
+			$(this).each( function() {
+				if( o != undefined ) {
+					var d = o.split(',');
+					for( var i = 0; i < d.length; i++ ) {
+						$(this).find('A[href="' + d[i] + '"]').parent().addClass('disabled');
+						
+					}
+				}
+			});
+			return( $(this) );
+		},
+		
+		// Enable context menu items on the fly
+		enableContextMenuItems: function(o) {
+			if( o == undefined ) {
+				// Enable all
+				$(this).find('LI.disabled').removeClass('disabled');
+				return( $(this) );
+			}
+			$(this).each( function() {
+				if( o != undefined ) {
+					var d = o.split(',');
+					for( var i = 0; i < d.length; i++ ) {
+						$(this).find('A[href="' + d[i] + '"]').parent().removeClass('disabled');
+						
+					}
+				}
+			});
+			return( $(this) );
+		},
+		
+		// Disable context menu(s)
+		disableContextMenu: function() {
+			$(this).each( function() {
+				$(this).addClass('disabled');
+			});
+			return( $(this) );
+		},
+		
+		// Enable context menu(s)
+		enableContextMenu: function() {
+			$(this).each( function() {
+				$(this).removeClass('disabled');
+			});
+			return( $(this) );
+		},
+		
+		// Destroy context menu(s)
+		destroyContextMenu: function() {
+			// Destroy specified context menus
+			$(this).each( function() {
+				// Disable action
+				$(this).unbind('mousedown').unbind('mouseup');
+			});
+			return( $(this) );
+		}
+		
+	});
+})(jQuery);
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/jgraduate/LICENSE
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/jgraduate/LICENSE	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/jgraduate/LICENSE	(revision 29468)
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/jgraduate/README
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/jgraduate/README	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/jgraduate/README	(revision 29468)
@@ -0,0 +1,3 @@
+jGraduate - A jQuery plugin for picking gradients
+
+Licensed under the Apache License 2.  See LICENSE for more information.
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/jgraduate/css/jPicker.css
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/jgraduate/css/jPicker.css	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/jgraduate/css/jPicker.css	(revision 29468)
@@ -0,0 +1,250 @@
+#svg_editor .jPicker .Icon {
+    display: inline-block;
+    height: 24px;
+    position: relative;
+    text-align: left;
+    width: 25px;
+}
+#svg_editor .jPicker .Icon span.Color, #svg_editor .jPicker .Icon span.Alpha {
+    background-position: 2px 2px;
+    display: block;
+    height: 100%;
+    left: 0;
+    position: absolute;
+    top: 0;
+    width: 100%}
+#svg_editor .jPicker .Icon span.Image {
+    background-repeat: no-repeat;
+    cursor: pointer;
+    display: block;
+    height: 100%;
+    left: 0;
+    position: absolute;
+    top: 0;
+    width: 100%}
+#svg_editor .jPicker.Container {
+    z-index: 10;
+}
+
+table#svg_editor .jPicker {
+    width: 545px;
+     z-index: 20;
+}
+
+#svg_editor .jPicker .Move {
+    background-color: #ddd;
+    border-color: #fff #666 #666 #fff;
+    border-style: solid;
+    border-width: 1px;
+    cursor: move;
+    height: 12px;
+    padding: 0;
+}
+#svg_editor .jPicker .Title {
+    display:  none;
+}
+
+#svg_editor .jPicker div.Map {
+    
+  border:  solid #000 1px;
+     
+  cursor: crosshair;
+    
+  height: 260px;
+    
+  margin: 0;
+    
+  overflow: hidden;
+    
+  padding: 0;
+    
+  position: relative;
+    
+  width: 260px;
+    
+}
+#svg_editor .jPicker div[class="Map"] {
+    height: 256px;
+    width: 256px;
+}
+#svg_editor .jPicker div.Bar {
+    border:  solid #000 1px;
+     cursor: n-resize;
+    height: 260px;
+    margin: 0 15px;
+    overflow: hidden;
+    padding: 0;
+    position: relative;
+    width: 24px;
+}
+#svg_editor .jPicker div[class="Bar"] {
+    height: 256px;
+    width: 20px;
+}
+#svg_editor .jPicker .Map .Map1, #svg_editor .jPicker .Map .Map2, #svg_editor .jPicker .Map .Map3, #svg_editor .jPicker .Bar .Map1, #svg_editor .jPicker .Bar .Map2, #svg_editor .jPicker .Bar .Map3, #svg_editor .jPicker .Bar .Map4, #svg_editor .jPicker .Bar .Map5, #svg_editor .jPicker .Bar .Map6 {
+    background-color: transparent;
+    background-image: none;
+    display: block;
+    left: 0;
+    position: absolute;
+    top: 0;
+}
+#svg_editor .jPicker .Map .Map1, #svg_editor .jPicker .Map .Map2, #svg_editor .jPicker .Map .Map3 {
+    height: 2596px;
+    width: 256px;
+}
+#svg_editor .jPicker .Bar .Map1, #svg_editor .jPicker .Bar .Map2, #svg_editor .jPicker .Bar .Map3, #svg_editor .jPicker .Bar .Map4 {
+    height: 3896px;
+    width: 20px;
+}
+#svg_editor .jPicker .Bar .Map5, #svg_editor .jPicker .Bar .Map6 {
+    height: 256px;
+    width: 20px;
+}
+#svg_editor .jPicker .Map .Map1, #svg_editor .jPicker .Map .Map2, #svg_editor .jPicker .Bar .Map6 {
+    background-repeat: no-repeat;
+}
+#svg_editor .jPicker .Map .Map3, #svg_editor .jPicker .Bar .Map5 {
+    background-repeat: repeat;
+}
+#svg_editor .jPicker .Bar .Map1, #svg_editor .jPicker .Bar .Map2, #svg_editor .jPicker .Bar .Map3, #svg_editor .jPicker .Bar .Map4 {
+    background-repeat: repeat-x;
+}
+#svg_editor .jPicker .Map .Arrow {
+    display: block;
+    position: absolute;
+}
+#svg_editor .jPicker .Bar .Arrow {
+    display: block;
+    left: 0;
+    position: absolute;
+}
+#svg_editor .jPicker .Preview {
+    font-size: 9px;
+    text-align: center;
+}
+#svg_editor .jPicker .Preview div.bgt  {
+    height: 62px;
+    margin: 0 auto;
+    padding: 0;
+    width: 62px;
+}
+
+
+#svg_editor .jPicker .Preview div span {
+    border: 1px solid #000;
+    display: block;
+    height: 30px;
+    margin: 0 auto;
+    padding: 0;
+    width: 60px;
+}
+#svg_editor .jPicker .Preview .Active {
+    border-bottom-width: 0;
+}
+#svg_editor .jPicker .Preview .Current {
+    border-top-width: 0;
+    cursor: pointer;
+}
+#svg_editor .jPicker .Button {
+    text-align: center;
+    width: 115px;
+}
+#svg_editor .jPicker .Button input {
+    width: 100px;
+}
+
+#svg_editor .jPicker td.Radio {
+    margin: 0;
+    padding: 0;
+    width: 31px;
+}
+#svg_editor .jPicker td.Radio input {
+    margin: 0 5px 0 0;
+    padding: 0;
+}
+#svg_editor .jPicker td.Text {
+    font-size: 12px!important;
+    height: 22px;
+    margin: 0;
+    padding: 0;
+    text-align: left;
+    width: 70px;
+}
+#svg_editor .jPicker tr.Hex td.Text {
+    width: 100px;
+    color: #666;
+}
+
+#svg_editor .jPicker tr.Hex td.Text span {
+    width: 100px;
+    color: #333;
+}
+#svg_editor .jPicker td.Text input {
+    background-color: #fff;
+    border: 1px inset #aaa;
+    height: 15px;
+    margin: 0 0 0 5px;
+    text-align: left;
+    width: 30px;
+    color: #333;
+}
+
+#svg_editor #color_picker .jPicker tr.Hex td.Text input.Hex {
+    width: 50px;
+    display: inline-block;
+    float: none;
+}
+
+#svg_editor .jPicker tr.Hex td.Text input.AHex {
+    width: 20px;
+    display: none;
+}
+#svg_editor .jPicker .Grid {
+    text-align: center;
+    float: right;
+    width: 108px;
+}
+#svg_editor .jPicker .Grid span.QuickColor {
+    cursor: pointer;
+    display: inline-block;
+    height: 15px;
+    line-height: 15px;
+    margin: 0;
+    padding: 0;
+    width: 18px;
+}
+#svg_editor .jPicker td  {
+  vertical-align:  top;
+}
+#svg_editor .jPicker td.colorsquare  {
+  width:  275px;
+}
+
+#svg_editor .jPicker .prev_div  {
+  margin-top:  -15px;
+}
+
+#svg_editor .jPicker .actions {
+  position: absolute;
+  bottom: 20px;
+  left: 20px;
+  right: 20px;
+}
+
+#svg_editor .jPicker .actions .Ok{
+  position: absolute;
+  top: 0;
+  right: 0px;
+}
+
+#svg_editor .jPicker .actions .Cancel{
+  position: absolute;
+  top: 0;
+  left: 0px;
+}
+
+#svg_editor .jPicker .color_preview {
+  width: 62px;
+  margin: 0 auto;
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/jgraduate/css/jgraduate.css
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/jgraduate/css/jgraduate.css	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/jgraduate/css/jgraduate.css	(revision 29468)
@@ -0,0 +1,332 @@
+/* 
+ * jGraduate Default CSS
+ * 
+ * Copyright (c) 2010 Jeff Schiller
+ * http://blog.codedread.com/
+ *
+ * Copyright (c) 2010 Alexis Deveria
+ * http://a.deveria.com/
+ *
+ * Licensed under the Apache License Version 2
+ */
+
+h2.jGraduate_Title {
+  display: none;
+}
+
+.jGraduate_Picker {
+	position: absolute;
+	padding: 20px;
+}
+
+.jGraduate_tabs li {
+	display: inline-block;
+	padding: 5px 10px;
+	margin-right: 5px;
+	cursor: pointer;
+}
+
+li.jGraduate_tab_current {
+  background: #fff;
+  border-radius: 3px 3px 0 0;
+}
+
+.jGraduate_colPick {
+	display: none;
+}
+
+.jGraduate_gradPick {	
+	display: none;
+	overflow: visible;
+/*	position: relative;*/
+}
+
+.jGraduate_tabs {
+	position: relative;
+	background-color: #ddd;
+	padding: 10px 10px 0 10px;
+	margin: -20px -20px 20px -20px;
+	border-radius: 3px 3px 0 0;
+}
+
+div.jGraduate_Swatch {
+	float: left;
+	margin: 0 15px 0 0;
+}
+div.jGraduate_GradContainer {
+	border: solid #000 1px;
+	background-image: url(../images/map-opacity.png); 
+	background-position: 0px 0px;
+	height: 256px;
+	width: 256px;
+	position: relative;
+}
+
+div.jGraduate_GradContainer div.grad_coord {
+  background: rgba(0,0,0,0.8);
+  border: 2px solid white;
+  border-radius: 15px;
+  -moz-border-radius: 5px;
+  width: 14px;
+  height: 14px;
+  position: absolute;
+  margin: -7px -7px;
+  top: 0;
+  left: 0;
+  text-align: center;
+  font-size: 8px;
+  line-height: 14px;
+  color: white;
+  text-decoration: none;
+  cursor: pointer;
+  -moz-user-select: none;
+  -webkit-user-select: none;
+}
+
+.jGraduate_AlphaArrows {
+	position: absolute;
+	margin-top: -10px;
+	margin-left: 250.5px;
+}
+
+div.jGraduate_Opacity {
+	border: 2px inset #eee;
+	margin-top: 14px;
+	background-color: black;
+	background-image: url(../images/Maps.png);
+	background-position: 0px -2816px;
+	height: 20px;
+	cursor: ew-resize;
+}
+
+div.jGraduate_StopSlider {
+	margin: -10px 0 0 -10px;
+	width: 276px;
+	overflow: visible;
+	background: white;
+	height: 45px;
+	cursor: pointer;
+}
+
+div.jGraduate_StopSection {
+	width: 120px;
+	float: left;
+}
+
+div.jGraduate_StopSection.jGraduate_SpreadMethod {
+  display: none;
+}
+
+input.jGraduate_Ok, input.jGraduate_Cancel {
+	display: block;
+	width: 100px;
+}
+input.jGraduate_Ok {
+	margin: 0 0 5px 0;
+}
+
+.colorBox {
+	float: left;
+	height: 16px;
+	width: 16px;
+	border: 1px solid #808080;
+	cursor: pointer;
+	margin: 4px 4px 4px 30px;
+}
+
+.colorBox + label {
+	float: left;
+	margin-top: 7px;
+}
+
+label.jGraduate_Form_Heading {
+
+  color: #333;
+	padding: 2px;
+	font-weight: bold;
+	font-size: 13px;
+}
+
+div.jGraduate_Form_Section {
+	-moz-border-radius: 5px;
+	-webkit-border-radius: 5px;
+	padding: 15px 5px 5px 5px;
+	margin: 5px 2px;
+	width: 100px;
+	text-align: center;
+	overflow: auto;
+	background: #eee;
+}
+
+div.jGraduate_Form label {
+	padding: 0 2px;
+	color: #333;
+}
+
+div.jGraduate_StopSection input[type=text],
+div.jGraduate_Slider input[type=text] {
+	width: 33px;
+	color: #333;
+}
+
+div.jGraduate_LightBox {
+	position: fixed;
+	top: 0px;
+	left: 0px;
+	right: 0px;
+	bottom: 0px;
+	background-color: #000;
+	opacity: 0.5;
+	display: none;
+}
+
+div.jGraduate_stopPicker {
+  position: absolute;
+  display: none;
+  background: 
+  white;
+  padding: 20px;
+  border-radius: 3px;
+  width: 530px;
+  height: 300px;
+  box-shadow: 0 5px 25px 
+  black;
+}
+
+
+.jGraduate_gradPick {
+	width: 526px;
+}
+
+.jGraduate_gradPick div.jGraduate_Slider {
+	line-height: 160%
+}
+
+.jGraduate_gradPick div.jGraduate_Slider label:last-child {
+	position: absolute;
+	right: 10px;
+	top: 0;
+	color: #999;
+	font-weight: bold;
+}
+
+.jGraduate_gradPick div.jGraduate_Slider label:last-child input {
+  margin: 0 3px 0 0;
+  color: #333;
+}
+
+.jGraduate_gradPick .jGraduate_Form {
+	float: left;
+	width: 270px;
+	position: absolute;
+	left: 284px;
+	width: 266px;
+	height: 200px;
+	top: 195px;
+	margin: -3px 3px 0px 10px;
+	line-height: 200%;
+}
+
+.jGraduate_gradPick .jGraduate_Form label,
+.jGraduate_gradPick .jGraduate_Form input {
+  width: auto;
+  float: left;
+}
+
+.jGraduate_gradPick .jGraduate_Form.jGraduate_rg_field label, .jGraduate_gradPick .jGraduate_Form.jGraduate_rg_field input {
+width: auto;
+float: left;
+font-size: 11px;
+}
+
+.jGraduate_gradPick .jGraduate_Form.jGraduate_rg_field #color_picker_jGraduate_match_ctr {
+  float: none;
+}
+
+.jGraduate_gradPick .jGraduate_Form label {
+  clear: left;
+}
+
+.jGraduate_gradPick .jGraduate_Points {
+	position: static;
+	float: left;
+  margin: 0;
+  width: auto;
+	}
+
+.jGraduate_Colorblocks {
+	display: table;
+	border-spacing: 0 5px;
+}
+
+.jGraduate_colorblock {
+	display: table-row;
+}
+
+.jGraduate_Colorblocks .jGraduate_colorblock > * {
+	display: table-cell;
+	vertical-align: middle;
+	margin: 0;
+	float: none;
+}
+
+.jGraduate_gradPick .jGraduate_Form_Section {
+	padding-top: 9px;
+}
+
+
+.jGraduate_Slider {
+	text-align: center;
+	float: left;
+	width: 100%;
+  position: relative;
+  margin: 5px 0;
+}
+
+.jGraduate_Slider .jGraduate_Form_Section {
+	border: none;
+	width: 250px;
+	padding: 0 2px;
+	overflow: visible;
+}
+
+
+.jGraduate_Slider label.prelabel {
+	width: 40px;
+	text-align: left;
+}
+
+.jGraduate_SliderBar {
+	width: 140px;
+	float: left;
+	margin: 0 5px;
+	border:1px solid #BBB;
+	height:20px;
+	position: relative;
+}
+
+div.jGraduate_Slider input {
+	margin-top: 5px;
+}
+
+div.jGraduate_Slider img {
+	top: 0;
+	left: 0;
+	position: absolute;
+	cursor:ew-resize;
+}
+
+.jPicker .Button .Ok, .jGraduate_Picker .jGraduate_OkCancel .jGraduate_Ok  {
+  -webkit-appearance: none;
+	margin: 0;
+  position: absolute;
+  bottom: 5px;
+  right: 5px;
+}
+
+.jPicker .Button .Cancel, .jGraduate_Picker .jGraduate_OkCancel .jGraduate_Cancel {
+  margin: 0;
+  position: absolute;
+	bottom: 5px;
+	left: 5px;
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/jgraduate/jpicker.min.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/jgraduate/jpicker.min.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/jgraduate/jpicker.min.js	(revision 29468)
@@ -0,0 +1,2087 @@
+﻿/*
+ * jPicker 1.1.6
+ *
+ * jQuery Plugin for Photoshop style color picker
+ *
+ * Copyright (c) 2010 Christopher T. Tillman
+ * Digital Magic Productions, Inc. (http://www.digitalmagicpro.com/)
+ * MIT style license, FREE to use, alter, copy, sell, and especially ENHANCE
+ *
+ * Painstakingly ported from John Dyers' excellent work on his own color picker based on the Prototype framework.
+ *
+ * John Dyers' website: (http://johndyer.name)
+ * Color Picker page:   (http://johndyer.name/post/2007/09/PhotoShop-like-JavaScript-Color-Picker.aspx)
+ *
+ */
+(function($, version)
+{
+  Math.precision = function(value, precision)
+    {
+      if (precision === undefined) precision = 0;
+      return Math.round(value * Math.pow(10, precision)) / Math.pow(10, precision);
+    };
+  var Slider = // encapsulate slider functionality for the ColorMap and ColorBar - could be useful to use a jQuery UI draggable for this with certain extensions
+      function(bar, options)
+      {
+        var $this = this, // private properties, methods, and events - keep these variables and classes invisible to outside code
+          arrow = bar.find('img:first'), // the arrow image to drag
+          minX = 0,
+          maxX = 100,
+          rangeX = 100,
+          minY = 0,
+          maxY = 100,
+          rangeY = 100,
+          x = 0,
+          y = 0,
+          offset,
+          timeout,
+          changeEvents = new Array(),
+          fireChangeEvents =
+            function(context)
+            {
+              for (var i = 0; i < changeEvents.length; i++) changeEvents[i].call($this, $this, context);
+            },
+          mouseDown = // bind the mousedown to the bar not the arrow for quick snapping to the clicked location
+            function(e)
+            {
+              var off = bar.offset();
+              offset = { l: off.left | 0, t: off.top | 0 };
+              clearTimeout(timeout);
+              timeout = setTimeout( // using setTimeout for visual updates - once the style is updated the browser will re-render internally allowing the next Javascript to run
+                function()
+                {
+                  setValuesFromMousePosition.call($this, e);
+                }, 0);
+              // Bind mousemove and mouseup event to the document so it responds when dragged of of the bar - we will unbind these when on mouseup to save processing
+              $(document).bind('mousemove', mouseMove).bind('mouseup', mouseUp);
+              e.preventDefault(); // don't try to select anything or drag the image to the desktop
+            },
+          mouseMove = // set the values as the mouse moves
+            function(e)
+            {
+              clearTimeout(timeout);
+              timeout = setTimeout(
+                function()
+                {
+                  setValuesFromMousePosition.call($this, e);
+                }, 0);
+              e.stopPropagation();
+              e.preventDefault();
+              return false;
+            },
+          mouseUp = // unbind the document events - they aren't needed when not dragging
+            function(e)
+            {
+              $(document).unbind('mouseup', mouseUp).unbind('mousemove', mouseMove);
+              e.stopPropagation();
+              e.preventDefault();
+              return false;
+            },
+          setValuesFromMousePosition = // calculate mouse position and set value within the current range
+            function(e)
+            {
+              var locX = e.pageX - offset.l,
+                  locY = e.pageY - offset.t,
+                  barW = bar.w, // local copies for YUI compressor
+                  barH = bar.h;
+              // keep the arrow within the bounds of the bar
+              if (locX < 0) locX = 0;
+              else if (locX > barW) locX = barW;
+              if (locY < 0) locY = 0;
+              else if (locY > barH) locY = barH;
+              val.call($this, 'xy', { x: ((locX / barW) * rangeX) + minX, y: ((locY / barH) * rangeY) + minY });
+            },
+          draw =
+            function()
+            {
+              var arrowOffsetX = 0,
+                arrowOffsetY = 0,
+                barW = bar.w,
+                barH = bar.h,
+                arrowW = arrow.w,
+                arrowH = arrow.h;
+              setTimeout(
+                function()
+                {
+                  if (rangeX > 0) // range is greater than zero
+                  {
+                    // constrain to bounds
+                    if (x == maxX) arrowOffsetX = barW;
+                    else arrowOffsetX = ((x / rangeX) * barW) | 0;
+                  }
+                  if (rangeY > 0) // range is greater than zero
+                  {
+                    // constrain to bounds
+                    if (y == maxY) arrowOffsetY = barH;
+                    else arrowOffsetY = ((y / rangeY) * barH) | 0;
+                  }
+                  // if arrow width is greater than bar width, center arrow and prevent horizontal dragging
+                  if (arrowW >= barW) arrowOffsetX = (barW >> 1) - (arrowW >> 1); // number >> 1 - superfast bitwise divide by two and truncate (move bits over one bit discarding lowest)
+                  else arrowOffsetX -= arrowW >> 1;
+                  // if arrow height is greater than bar height, center arrow and prevent vertical dragging
+                  if (arrowH >= barH) arrowOffsetY = (barH >> 1) - (arrowH >> 1);
+                  else arrowOffsetY -= arrowH >> 1;
+                  // set the arrow position based on these offsets
+                  arrow.css({ left: arrowOffsetX + 'px', top: arrowOffsetY + 'px' });
+                }, 0);
+            },
+          val =
+            function(name, value, context)
+            {
+              var set = value !== undefined;
+              if (!set)
+              {
+                if (name === undefined || name == null) name = 'xy';
+                switch (name.toLowerCase())
+                {
+                  case 'x': return x;
+                  case 'y': return y;
+                  case 'xy':
+                  default: return { x: x, y: y };
+                }
+              }
+              if (context != null && context == $this) return;
+              var changed = false,
+                  newX,
+                  newY;
+              if (name == null) name = 'xy';
+              switch (name.toLowerCase())
+              {
+                case 'x':
+                  newX = value && (value.x && value.x | 0 || value | 0) || 0;
+                  break;
+                case 'y':
+                  newY = value && (value.y && value.y | 0 || value | 0) || 0;
+                  break;
+                case 'xy':
+                default:
+                  newX = value && value.x && value.x | 0 || 0;
+                  newY = value && value.y && value.y | 0 || 0;
+                  break;
+              }
+              if (newX != null)
+              {
+                if (newX < minX) newX = minX;
+                else if (newX > maxX) newX = maxX;
+                if (x != newX)
+                {
+                  x = newX;
+                  changed = true;
+                }
+              }
+              if (newY != null)
+              {
+                if (newY < minY) newY = minY;
+                else if (newY > maxY) newY = maxY;
+                if (y != newY)
+                {
+                  y = newY;
+                  changed = true;
+                }
+              }
+              changed && fireChangeEvents.call($this, context || $this);
+            },
+          range =
+            function (name, value)
+            {
+              var set = value !== undefined;
+              if (!set)
+              {
+                if (name === undefined || name == null) name = 'all';
+                switch (name.toLowerCase())
+                {
+                  case 'minx': return minX;
+                  case 'maxx': return maxX;
+                  case 'rangex': return { minX: minX, maxX: maxX, rangeX: rangeX };
+                  case 'miny': return minY;
+                  case 'maxy': return maxY;
+                  case 'rangey': return { minY: minY, maxY: maxY, rangeY: rangeY };
+                  case 'all':
+                  default: return { minX: minX, maxX: maxX, rangeX: rangeX, minY: minY, maxY: maxY, rangeY: rangeY };
+                }
+              }
+              var changed = false,
+                  newMinX,
+                  newMaxX,
+                  newMinY,
+                  newMaxY;
+              if (name == null) name = 'all';
+              switch (name.toLowerCase())
+              {
+                case 'minx':
+                  newMinX = value && (value.minX && value.minX | 0 || value | 0) || 0;
+                  break;
+                case 'maxx':
+                  newMaxX = value && (value.maxX && value.maxX | 0 || value | 0) || 0;
+                  break;
+                case 'rangex':
+                  newMinX = value && value.minX && value.minX | 0 || 0;
+                  newMaxX = value && value.maxX && value.maxX | 0 || 0;
+                  break;
+                case 'miny':
+                  newMinY = value && (value.minY && value.minY | 0 || value | 0) || 0;
+                  break;
+                case 'maxy':
+                  newMaxY = value && (value.maxY && value.maxY | 0 || value | 0) || 0;
+                  break;
+                case 'rangey':
+                  newMinY = value && value.minY && value.minY | 0 || 0;
+                  newMaxY = value && value.maxY && value.maxY | 0 || 0;
+                  break;
+                case 'all':
+                default:
+                  newMinX = value && value.minX && value.minX | 0 || 0;
+                  newMaxX = value && value.maxX && value.maxX | 0 || 0;
+                  newMinY = value && value.minY && value.minY | 0 || 0;
+                  newMaxY = value && value.maxY && value.maxY | 0 || 0;
+                  break;
+              }
+              if (newMinX != null && minX != newMinX)
+              {
+                minX = newMinX;
+                rangeX = maxX - minX;
+              }
+              if (newMaxX != null && maxX != newMaxX)
+              {
+                maxX = newMaxX;
+                rangeX = maxX - minX;
+              }
+              if (newMinY != null && minY != newMinY)
+              {
+                minY = newMinY;
+                rangeY = maxY - minY;
+              }
+              if (newMaxY != null && maxY != newMaxY)
+              {
+                maxY = newMaxY;
+                rangeY = maxY - minY;
+              }
+            },
+          bind =
+            function (callback)
+            {
+              if ($.isFunction(callback)) changeEvents.push(callback);
+            },
+          unbind =
+            function (callback)
+            {
+              if (!$.isFunction(callback)) return;
+              var i;
+              while ((i = $.inArray(callback, changeEvents)) != -1) changeEvents.splice(i, 1);
+            },
+          destroy =
+            function()
+            {
+              // unbind all possible events and null objects
+              $(document).unbind('mouseup', mouseUp).unbind('mousemove', mouseMove);
+              bar.unbind('mousedown', mouseDown);
+              bar = null;
+              arrow = null;
+              changeEvents = null;
+            };
+        $.extend(true, $this, // public properties, methods, and event bindings - these we need to access from other controls
+          {
+            val: val,
+            range: range,
+            bind: bind,
+            unbind: unbind,
+            destroy: destroy
+          });
+        // initialize this control
+        arrow.src = options.arrow && options.arrow.image;
+        arrow.w = options.arrow && options.arrow.width || arrow.width();
+        arrow.h = options.arrow && options.arrow.height || arrow.height();
+        bar.w = options.map && options.map.width || bar.width();
+        bar.h = options.map && options.map.height || bar.height();
+        // bind mousedown event
+        bar.bind('mousedown', mouseDown);
+        bind.call($this, draw);
+      },
+    ColorValuePicker = // controls for all the input elements for the typing in color values
+      function(picker, color, bindedHex, alphaPrecision)
+      {
+        var $this = this, // private properties and methods
+          inputs = picker.find('td.Text input'),
+          red = inputs.eq(3),
+          green = inputs.eq(4),
+          blue = inputs.eq(5),
+          alpha = inputs.length > 7 ? inputs.eq(6) : null,
+          hue = inputs.eq(0),
+          saturation = inputs.eq(1),
+          value = inputs.eq(2),
+          hex = inputs.eq(inputs.length > 7 ? 7 : 6),
+          ahex = inputs.length > 7 ? inputs.eq(8) : null,
+          keyDown = // input box key down - use arrows to alter color
+            function(e)
+            {
+              if (e.target.value == '' && e.target != hex.get(0) && (bindedHex != null && e.target != bindedHex.get(0) || bindedHex == null)) return;
+              if (!validateKey(e)) return e;
+              switch (e.target)
+              {
+                case red.get(0):
+                  switch (e.keyCode)
+                  {
+                    case 38:
+                      red.val(setValueInRange.call($this, (red.val() << 0) + 1, 0, 255));
+                      color.val('r', red.val(), e.target);
+                      return false;
+                    case 40:
+                      red.val(setValueInRange.call($this, (red.val() << 0) - 1, 0, 255));
+                      color.val('r', red.val(), e.target);
+                      return false;
+                  }
+                  break;
+                case green.get(0):
+                  switch (e.keyCode)
+                  {
+                    case 38:
+                      green.val(setValueInRange.call($this, (green.val() << 0) + 1, 0, 255));
+                      color.val('g', green.val(), e.target);
+                      return false;
+                    case 40:
+                      green.val(setValueInRange.call($this, (green.val() << 0) - 1, 0, 255));
+                      color.val('g', green.val(), e.target);
+                      return false;
+                  }
+                  break;
+                case blue.get(0):
+                  switch (e.keyCode)
+                  {
+                    case 38:
+                      blue.val(setValueInRange.call($this, (blue.val() << 0) + 1, 0, 255));
+                      color.val('b', blue.val(), e.target);
+                      return false;
+                    case 40:
+                      blue.val(setValueInRange.call($this, (blue.val() << 0) - 1, 0, 255));
+                      color.val('b', blue.val(), e.target);
+                      return false;
+                  }
+                  break;
+                case alpha && alpha.get(0):
+                  switch (e.keyCode)
+                  {
+                    case 38:
+                      alpha.val(setValueInRange.call($this, parseFloat(alpha.val()) + 1, 0, 100));
+                      color.val('a', Math.precision((alpha.val() * 255) / 100, alphaPrecision), e.target);
+                      return false;
+                    case 40:
+                      alpha.val(setValueInRange.call($this, parseFloat(alpha.val()) - 1, 0, 100));
+                      color.val('a', Math.precision((alpha.val() * 255) / 100, alphaPrecision), e.target);
+                      return false;
+                  }
+                  break;
+                case hue.get(0):
+                  switch (e.keyCode)
+                  {
+                    case 38:
+                      hue.val(setValueInRange.call($this, (hue.val() << 0) + 1, 0, 360));
+                      color.val('h', hue.val(), e.target);
+                      return false;
+                    case 40:
+                      hue.val(setValueInRange.call($this, (hue.val() << 0) - 1, 0, 360));
+                      color.val('h', hue.val(), e.target);
+                      return false;
+                  }
+                  break;
+                case saturation.get(0):
+                  switch (e.keyCode)
+                  {
+                    case 38:
+                      saturation.val(setValueInRange.call($this, (saturation.val() << 0) + 1, 0, 100));
+                      color.val('s', saturation.val(), e.target);
+                      return false;
+                    case 40:
+                      saturation.val(setValueInRange.call($this, (saturation.val() << 0) - 1, 0, 100));
+                      color.val('s', saturation.val(), e.target);
+                      return false;
+                  }
+                  break;
+                case value.get(0):
+                  switch (e.keyCode)
+                  {
+                    case 38:
+                      value.val(setValueInRange.call($this, (value.val() << 0) + 1, 0, 100));
+                      color.val('v', value.val(), e.target);
+                      return false;
+                    case 40:
+                      value.val(setValueInRange.call($this, (value.val() << 0) - 1, 0, 100));
+                      color.val('v', value.val(), e.target);
+                      return false;
+                  }
+                  break;
+              }
+            },
+          keyUp = // input box key up - validate value and set color
+            function(e)
+            {
+              if (e.target.value == '' && e.target != hex.get(0) && (bindedHex != null && e.target != bindedHex.get(0) || bindedHex == null)) return;
+              if (!validateKey(e)) return e;
+              switch (e.target)
+              {
+                case red.get(0):
+                  red.val(setValueInRange.call($this, red.val(), 0, 255));
+                  color.val('r', red.val(), e.target);
+                  break;
+                case green.get(0):
+                  green.val(setValueInRange.call($this, green.val(), 0, 255));
+                  color.val('g', green.val(), e.target);
+                  break;
+                case blue.get(0):
+                  blue.val(setValueInRange.call($this, blue.val(), 0, 255));
+                  color.val('b', blue.val(), e.target);
+                  break;
+                case alpha && alpha.get(0):
+                  alpha.val(setValueInRange.call($this, alpha.val(), 0, 100));
+                  color.val('a', Math.precision((alpha.val() * 255) / 100, alphaPrecision), e.target);
+                  break;
+                case hue.get(0):
+                  hue.val(setValueInRange.call($this, hue.val(), 0, 360));
+                  color.val('h', hue.val(), e.target);
+                  break;
+                case saturation.get(0):
+                  saturation.val(setValueInRange.call($this, saturation.val(), 0, 100));
+                  color.val('s', saturation.val(), e.target);
+                  break;
+                case value.get(0):
+                  value.val(setValueInRange.call($this, value.val(), 0, 100));
+                  color.val('v', value.val(), e.target);
+                  break;
+                case hex.get(0):
+                  hex.val(hex.val().replace(/[^a-fA-F0-9]/g, '').toLowerCase().substring(0, 6));
+                  bindedHex && bindedHex.val(hex.val());
+                  color.val('hex', hex.val() != '' ? hex.val() : null, e.target);
+                  break;
+                case bindedHex && bindedHex.get(0):
+                  bindedHex.val(bindedHex.val().replace(/[^a-fA-F0-9]/g, '').toLowerCase().substring(0, 6));
+                  hex.val(bindedHex.val());
+                  color.val('hex', bindedHex.val() != '' ? bindedHex.val() : null, e.target);
+                  break;
+                case ahex && ahex.get(0):
+                  ahex.val(ahex.val().replace(/[^a-fA-F0-9]/g, '').toLowerCase().substring(0, 2));
+                  color.val('a', ahex.val() != null ? parseInt(ahex.val(), 16) : null, e.target);
+                  break;
+              }
+            },
+          blur = // input box blur - reset to original if value empty
+            function(e)
+            {
+              if (color.val() != null)
+              {
+                switch (e.target)
+                {
+                  case red.get(0): red.val(color.val('r')); break;
+                  case green.get(0): green.val(color.val('g')); break;
+                  case blue.get(0): blue.val(color.val('b')); break;
+                  case alpha && alpha.get(0): alpha.val(Math.precision((color.val('a') * 100) / 255, alphaPrecision)); break;
+                  case hue.get(0): hue.val(color.val('h')); break;
+                  case saturation.get(0): saturation.val(color.val('s')); break;
+                  case value.get(0): value.val(color.val('v')); break;
+                  case hex.get(0):
+                  case bindedHex && bindedHex.get(0):
+                    hex.val(color.val('hex'));
+                    bindedHex && bindedHex.val(color.val('hex'));
+                    break;
+                  case ahex && ahex.get(0): ahex.val(color.val('ahex').substring(6)); break;
+                }
+              }
+            },
+          validateKey = // validate key
+            function(e)
+            {
+              switch(e.keyCode)
+              {
+                case 9:
+                case 16:
+                case 29:
+                case 37:
+                case 39:
+                  return false;
+                case 'c'.charCodeAt():
+                case 'v'.charCodeAt():
+                  if (e.ctrlKey) return false;
+              }
+              return true;
+            },
+          setValueInRange = // constrain value within range
+            function(value, min, max)
+            {
+              if (value == '' || isNaN(value)) return min;
+              if (value > max) return max;
+              if (value < min) return min;
+              return value;
+            },
+          colorChanged =
+            function(ui, context)
+            {
+              var all = ui.val('all');
+              if (context != red.get(0)) red.val(all != null ? all.r : '');
+              if (context != green.get(0)) green.val(all != null ? all.g : '');
+              if (context != blue.get(0)) blue.val(all != null ? all.b : '');
+              if (alpha && context != alpha.get(0)) alpha.val(all != null ? Math.precision((all.a * 100) / 255, alphaPrecision) : '');
+              if (context != hue.get(0)) hue.val(all != null ? all.h : '');
+              if (context != saturation.get(0)) saturation.val(all != null ? all.s : '');
+              if (context != value.get(0)) value.val(all != null ? all.v : '');
+              if (context != hex.get(0) && (bindedHex && context != bindedHex.get(0) || !bindedHex)) hex.val(all != null ? all.hex : '');
+              if (bindedHex && context != bindedHex.get(0) && context != hex.get(0)) bindedHex.val(all != null ? all.hex : '');
+              if (ahex && context != ahex.get(0)) ahex.val(all != null ? all.ahex.substring(6) : '');
+            },
+          destroy =
+            function()
+            {
+              // unbind all events and null objects
+              red.add(green).add(blue).add(alpha).add(hue).add(saturation).add(value).add(hex).add(bindedHex).add(ahex).unbind('keyup', keyUp).unbind('blur', blur);
+              red.add(green).add(blue).add(alpha).add(hue).add(saturation).add(value).unbind('keydown', keyDown);
+              color.unbind(colorChanged);
+              red = null;
+              green = null;
+              blue = null;
+              alpha = null;
+              hue = null;
+              saturation = null;
+              value = null;
+              hex = null;
+              ahex = null;
+            };
+        $.extend(true, $this, // public properties and methods
+          {
+            destroy: destroy
+          });
+        red.add(green).add(blue).add(alpha).add(hue).add(saturation).add(value).add(hex).add(bindedHex).add(ahex).bind('keyup', keyUp).bind('blur', blur);
+        red.add(green).add(blue).add(alpha).add(hue).add(saturation).add(value).bind('keydown', keyDown);
+        color.bind(colorChanged);
+      };
+  $.jPicker =
+    {
+      List: [], // array holding references to each active instance of the control
+      Color: // color object - we will be able to assign by any color space type or retrieve any color space info
+             // we want this public so we can optionally assign new color objects to initial values using inputs other than a string hex value (also supported)
+        function(init)
+        {
+          var $this = this,
+            r,
+            g,
+            b,
+            a,
+            h,
+            s,
+            v,
+            changeEvents = new Array(),
+            fireChangeEvents = 
+              function(context)
+              {
+                for (var i = 0; i < changeEvents.length; i++) changeEvents[i].call($this, $this, context);
+              },
+            val =
+              function(name, value, context)
+              {
+                var set = value !== undefined;
+                if (!set)
+                {
+                  if (name === undefined || name == null || name == '') name = 'all';
+                  if (r == null) return null;
+                  switch (name.toLowerCase())
+                  {
+                    case 'ahex': return ColorMethods.rgbaToHex({ r: r, g: g, b: b, a: a });
+                    case 'hex': return val('ahex').substring(0, 6);
+                    case 'all': return { r: r, g: g, b: b, a: a, h: h, s: s, v: v, hex: val.call($this, 'hex'), ahex: val.call($this, 'ahex') };
+                    default:
+                      var ret={};
+                      for (var i = 0; i < name.length; i++)
+                      {
+                        switch (name.charAt(i))
+                        {
+                          case 'r':
+                            if (name.length == 1) ret = r;
+                            else ret.r = r;
+                            break;
+                          case 'g':
+                            if (name.length == 1) ret = g;
+                            else ret.g = g;
+                            break;
+                          case 'b':
+                            if (name.length == 1) ret = b;
+                            else ret.b = b;
+                            break;
+                          case 'a':
+                            if (name.length == 1) ret = a;
+                            else ret.a = a;
+                            break;
+                          case 'h':
+                            if (name.length == 1) ret = h;
+                            else ret.h = h;
+                            break;
+                          case 's':
+                            if (name.length == 1) ret = s;
+                            else ret.s = s;
+                            break;
+                          case 'v':
+                            if (name.length == 1) ret = v;
+                            else ret.v = v;
+                            break;
+                        }
+                      }
+                      return ret == {} ? val.call($this, 'all') : ret;
+                      break;
+                  }
+                }
+                if (context != null && context == $this) return;
+                var changed = false;
+                if (name == null) name = '';
+                if (value == null)
+                {
+                  if (r != null)
+                  {
+                    r = null;
+                    changed = true;
+                  }
+                  if (g != null)
+                  {
+                    g = null;
+                    changed = true;
+                  }
+                  if (b != null)
+                  {
+                    b = null;
+                    changed = true;
+                  }
+                  if (a != null)
+                  {
+                    a = null;
+                    changed = true;
+                  }
+                  if (h != null)
+                  {
+                    h = null;
+                    changed = true;
+                  }
+                  if (s != null)
+                  {
+                    s = null;
+                    changed = true;
+                  }
+                  if (v != null)
+                  {
+                    v = null;
+                    changed = true;
+                  }
+                  changed && fireChangeEvents.call($this, context || $this);
+                  return;
+                }
+                switch (name.toLowerCase())
+                {
+                  case 'ahex':
+                  case 'hex':
+                    var ret = ColorMethods.hexToRgba(value && (value.ahex || value.hex) || value || '00000000');
+                    val.call($this, 'rgba', { r: ret.r, g: ret.g, b: ret.b, a: name == 'ahex' ? ret.a : a != null ? a : 255 }, context);
+                    break;
+                  default:
+                    if (value && (value.ahex != null || value.hex != null))
+                    {
+                      val.call($this, 'ahex', value.ahex || value.hex || '00000000', context);
+                      return;
+                    }
+                    var newV = {}, rgb = false, hsv = false;
+                    if (value.r !== undefined && !name.indexOf('r') == -1) name += 'r';
+                    if (value.g !== undefined && !name.indexOf('g') == -1) name += 'g';
+                    if (value.b !== undefined && !name.indexOf('b') == -1) name += 'b';
+                    if (value.a !== undefined && !name.indexOf('a') == -1) name += 'a';
+                    if (value.h !== undefined && !name.indexOf('h') == -1) name += 'h';
+                    if (value.s !== undefined && !name.indexOf('s') == -1) name += 's';
+                    if (value.v !== undefined && !name.indexOf('v') == -1) name += 'v';
+                    for (var i = 0; i < name.length; i++)
+                    {
+                      switch (name.charAt(i))
+                      {
+                        case 'r':
+                          if (hsv) continue;
+                          rgb = true;
+                          newV.r = value && value.r && value.r | 0 || value && value | 0 || 0;
+                          if (newV.r < 0) newV.r = 0;
+                          else if (newV.r > 255) newV.r = 255;
+                          if (r != newV.r)
+                          {
+                            r = newV.r;
+                            changed = true;
+                          }
+                          break;
+                        case 'g':
+                          if (hsv) continue;
+                          rgb = true;
+                          newV.g = value && value.g && value.g | 0 || value && value | 0 || 0;
+                          if (newV.g < 0) newV.g = 0;
+                          else if (newV.g > 255) newV.g = 255;
+                          if (g != newV.g)
+                          {
+                            g = newV.g;
+                            changed = true;
+                          }
+                          break;
+                        case 'b':
+                          if (hsv) continue;
+                          rgb = true;
+                          newV.b = value && value.b && value.b | 0 || value && value | 0 || 0;
+                          if (newV.b < 0) newV.b = 0;
+                          else if (newV.b > 255) newV.b = 255;
+                          if (b != newV.b)
+                          {
+                            b = newV.b;
+                            changed = true;
+                          }
+                          break;
+                        case 'a':
+                          newV.a = value && value.a != null ? value.a | 0 : value != null ? value | 0 : 255;
+                          if (newV.a < 0) newV.a = 0;
+                          else if (newV.a > 255) newV.a = 255;
+                          if (a != newV.a)
+                          {
+                            a = newV.a;
+                            changed = true;
+                          }
+                          break;
+                        case 'h':
+                          if (rgb) continue;
+                          hsv = true;
+                          newV.h = value && value.h && value.h | 0 || value && value | 0 || 0;
+                          if (newV.h < 0) newV.h = 0;
+                          else if (newV.h > 360) newV.h = 360;
+                          if (h != newV.h)
+                          {
+                            h = newV.h;
+                            changed = true;
+                          }
+                          break;
+                        case 's':
+                          if (rgb) continue;
+                          hsv = true;
+                          newV.s = value && value.s != null ? value.s | 0 : value != null ? value | 0 : 100;
+                          if (newV.s < 0) newV.s = 0;
+                          else if (newV.s > 100) newV.s = 100;
+                          if (s != newV.s)
+                          {
+                            s = newV.s;
+                            changed = true;
+                          }
+                          break;
+                        case 'v':
+                          if (rgb) continue;
+                          hsv = true;
+                          newV.v = value && value.v != null ? value.v | 0 : value != null ? value | 0 : 100;
+                          if (newV.v < 0) newV.v = 0;
+                          else if (newV.v > 100) newV.v = 100;
+                          if (v != newV.v)
+                          {
+                            v = newV.v;
+                            changed = true;
+                          }
+                          break;
+                      }
+                    }
+                    if (changed)
+                    {
+                      if (rgb)
+                      {
+                        r = r || 0;
+                        g = g || 0;
+                        b = b || 0;
+                        var ret = ColorMethods.rgbToHsv({ r: r, g: g, b: b });
+                        h = ret.h;
+                        s = ret.s;
+                        v = ret.v;
+                      }
+                      else if (hsv)
+                      {
+                        h = h || 0;
+                        s = s != null ? s : 100;
+                        v = v != null ? v : 100;
+                        var ret = ColorMethods.hsvToRgb({ h: h, s: s, v: v });
+                        r = ret.r;
+                        g = ret.g;
+                        b = ret.b;
+                      }
+                      a = a != null ? a : 255;
+                      fireChangeEvents.call($this, context || $this);
+                    }
+                    break;
+                }
+              },
+            bind =
+              function(callback)
+              {
+                if ($.isFunction(callback)) changeEvents.push(callback);
+              },
+            unbind =
+              function(callback)
+              {
+                if (!$.isFunction(callback)) return;
+                var i;
+                while ((i = $.inArray(callback, changeEvents)) != -1) changeEvents.splice(i, 1);
+              },
+            destroy =
+              function()
+              {
+                changeEvents = null;
+              }
+          $.extend(true, $this, // public properties and methods
+            {
+              val: val,
+              bind: bind,
+              unbind: unbind,
+              destroy: destroy
+            });
+          if (init)
+          {
+            if (init.ahex != null) val('ahex', init);
+            else if (init.hex != null) val((init.a != null ? 'a' : '') + 'hex', init.a != null ? { ahex: init.hex + ColorMethods.intToHex(init.a) } : init);
+            else if (init.r != null && init.g != null && init.b != null) val('rgb' + (init.a != null ? 'a' : ''), init);
+            else if (init.h != null && init.s != null && init.v != null) val('hsv' + (init.a != null ? 'a' : ''), init);
+          }
+        },
+      ColorMethods: // color conversion methods  - make public to give use to external scripts
+        {
+          hexToRgba:
+            function(hex)
+            {
+              hex = this.validateHex(hex);
+              if (hex == '') return { r: null, g: null, b: null, a: null };
+              var r = '00', g = '00', b = '00', a = '255';
+              if (hex.length == 6) hex += 'ff';
+              if (hex.length > 6)
+              {
+                r = hex.substring(0, 2);
+                g = hex.substring(2, 4);
+                b = hex.substring(4, 6);
+                a = hex.substring(6, hex.length);
+              }
+              else
+              {
+                if (hex.length > 4)
+                {
+                  r = hex.substring(4, hex.length);
+                  hex = hex.substring(0, 4);
+                }
+                if (hex.length > 2)
+                {
+                  g = hex.substring(2, hex.length);
+                  hex = hex.substring(0, 2);
+                }
+                if (hex.length > 0) b = hex.substring(0, hex.length);
+              }
+              return { r: this.hexToInt(r), g: this.hexToInt(g), b: this.hexToInt(b), a: this.hexToInt(a) };
+            },
+          validateHex:
+            function(hex)
+            {
+              if (typeof hex == "object") return '';
+              hex = hex.toLowerCase().replace(/[^a-f0-9]/g, '');
+              if (hex.length > 8) hex = hex.substring(0, 8);
+              return hex;
+            },
+          rgbaToHex:
+            function(rgba)
+            {
+              return this.intToHex(rgba.r) + this.intToHex(rgba.g) + this.intToHex(rgba.b) + this.intToHex(rgba.a);
+            },
+          intToHex:
+            function(dec)
+            {
+              var result = (dec | 0).toString(16);
+              if (result.length == 1) result = ('0' + result);
+              return result.toLowerCase();
+            },
+          hexToInt:
+            function(hex)
+            {
+              return parseInt(hex, 16);
+            },
+          rgbToHsv:
+            function(rgb)
+            {
+              var r = rgb.r / 255, g = rgb.g / 255, b = rgb.b / 255, hsv = { h: 0, s: 0, v: 0 }, min = 0, max = 0, delta;
+              if (r >= g && r >= b)
+              {
+                max = r;
+                min = g > b ? b : g;
+              }
+              else if (g >= b && g >= r)
+              {
+                max = g;
+                min = r > b ? b : r;
+              }
+              else
+              {
+                max = b;
+                min = g > r ? r : g;
+              }
+              hsv.v = max;
+              hsv.s = max ? (max - min) / max : 0;
+              if (!hsv.s) hsv.h = 0;
+              else
+              {
+                delta = max - min;
+                if (r == max) hsv.h = (g - b) / delta;
+                else if (g == max) hsv.h = 2 + (b - r) / delta;
+                else hsv.h = 4 + (r - g) / delta;
+                hsv.h = parseInt(hsv.h * 60);
+                if (hsv.h < 0) hsv.h += 360;
+              }
+              hsv.s = (hsv.s * 100) | 0;
+              hsv.v = (hsv.v * 100) | 0;
+              return hsv;
+            },
+          hsvToRgb:
+            function(hsv)
+            {
+              var rgb = { r: 0, g: 0, b: 0, a: 100 }, h = hsv.h, s = hsv.s, v = hsv.v;
+              if (s == 0)
+              {
+                if (v == 0) rgb.r = rgb.g = rgb.b = 0;
+                else rgb.r = rgb.g = rgb.b = (v * 255 / 100) | 0;
+              }
+              else
+              {
+                if (h == 360) h = 0;
+                h /= 60;
+                s = s / 100;
+                v = v / 100;
+                var i = h | 0,
+                    f = h - i,
+                    p = v * (1 - s),
+                    q = v * (1 - (s * f)),
+                    t = v * (1 - (s * (1 - f)));
+                switch (i)
+                {
+                  case 0:
+                    rgb.r = v;
+                    rgb.g = t;
+                    rgb.b = p;
+                    break;
+                  case 1:
+                    rgb.r = q;
+                    rgb.g = v;
+                    rgb.b = p;
+                    break;
+                  case 2:
+                    rgb.r = p;
+                    rgb.g = v;
+                    rgb.b = t;
+                    break;
+                  case 3:
+                    rgb.r = p;
+                    rgb.g = q;
+                    rgb.b = v;
+                    break;
+                  case 4:
+                    rgb.r = t;
+                    rgb.g = p;
+                    rgb.b = v;
+                    break;
+                  case 5:
+                    rgb.r = v;
+                    rgb.g = p;
+                    rgb.b = q;
+                    break;
+                }
+                rgb.r = (rgb.r * 255) | 0;
+                rgb.g = (rgb.g * 255) | 0;
+                rgb.b = (rgb.b * 255) | 0;
+              }
+              return rgb;
+            }
+        }
+    };
+  var Color = $.jPicker.Color, List = $.jPicker.List, ColorMethods = $.jPicker.ColorMethods; // local copies for YUI compressor
+  $.fn.jPicker =
+    function(options)
+    {
+      var $arguments = arguments;
+      return this.each(
+        function()
+        {
+          var $this = this, settings = $.extend(true, {}, $.fn.jPicker.defaults, options); // local copies for YUI compressor
+          if ($($this).get(0).nodeName.toLowerCase() == 'input') // Add color picker icon if binding to an input element and bind the events to the input
+          {
+            $.extend(true, settings,
+              {
+                window:
+                {
+                  bindToInput: true,
+                  expandable: true,
+                  input: $($this)
+                }
+              });
+            if($($this).val()=='')
+            {
+              settings.color.active = new Color({ hex: null });
+              settings.color.current = new Color({ hex: null });
+            }
+            else if (ColorMethods.validateHex($($this).val()))
+            {
+              settings.color.active = new Color({ hex: $($this).val(), a: settings.color.active.val('a') });
+              settings.color.current = new Color({ hex: $($this).val(), a: settings.color.active.val('a') });
+            }
+          }
+          if (settings.window.expandable)
+            $($this).after('<span class="jPicker"><span class="Icon"><span class="Color">&nbsp;</span><span class="Alpha">&nbsp;</span><span class="Image" title="Click To Open Color Picker">&nbsp;</span><span class="Container">&nbsp;</span></span></span>');
+          else settings.window.liveUpdate = false; // Basic control binding for inline use - You will need to override the liveCallback or commitCallback function to retrieve results
+          var isLessThanIE7 = parseFloat(navigator.appVersion.split('MSIE')[1]) < 7 && document.body.filters, // needed to run the AlphaImageLoader function for IE6
+            container = null,
+            colorMapDiv = null,
+            colorBarDiv = null,
+            colorMapL1 = null, // different layers of colorMap and colorBar
+            colorMapL2 = null,
+            colorMapL3 = null,
+            colorBarL1 = null,
+            colorBarL2 = null,
+            colorBarL3 = null,
+            colorBarL4 = null,
+            colorBarL5 = null,
+            colorBarL6 = null,
+            colorMap = null, // color maps
+            colorBar = null,
+            colorPicker = null,
+            elementStartX = null, // Used to record the starting css positions for dragging the control
+            elementStartY = null,
+            pageStartX = null, // Used to record the mousedown coordinates for dragging the control
+            pageStartY = null,
+            activePreview = null, // color boxes above the radio buttons
+            currentPreview = null,
+            okButton = null,
+            cancelButton = null,
+            grid = null, // preset colors grid
+            iconColor = null, // iconColor for popup icon
+            iconAlpha = null, // iconAlpha for popup icon
+            iconImage = null, // iconImage popup icon
+            moveBar = null, // drag bar
+            setColorMode = // set color mode and update visuals for the new color mode
+              function(colorMode)
+              {
+                var active = color.active, // local copies for YUI compressor
+                  clientPath = images.clientPath,
+                  hex = active.val('hex'),
+                  rgbMap,
+                  rgbBar;
+                settings.color.mode = colorMode;
+                switch (colorMode)
+                {
+                  case 'h':
+                    setTimeout(
+                      function()
+                      {
+                        setBG.call($this, colorMapDiv, 'transparent');
+                        setImgLoc.call($this, colorMapL1, 0);
+                        setAlpha.call($this, colorMapL1, 100);
+                        setImgLoc.call($this, colorMapL2, 260);
+                        setAlpha.call($this, colorMapL2, 100);
+                        setBG.call($this, colorBarDiv, 'transparent');
+                        setImgLoc.call($this, colorBarL1, 0);
+                        setAlpha.call($this, colorBarL1, 100);
+                        setImgLoc.call($this, colorBarL2, 260);
+                        setAlpha.call($this, colorBarL2, 100);
+                        setImgLoc.call($this, colorBarL3, 260);
+                        setAlpha.call($this, colorBarL3, 100);
+                        setImgLoc.call($this, colorBarL4, 260);
+                        setAlpha.call($this, colorBarL4, 100);
+                        setImgLoc.call($this, colorBarL6, 260);
+                        setAlpha.call($this, colorBarL6, 100);
+                      }, 0);
+                    colorMap.range('all', { minX: 0, maxX: 100, minY: 0, maxY: 100 });
+                    colorBar.range('rangeY', { minY: 0, maxY: 360 });
+                    if (active.val('ahex') == null) break;
+                    colorMap.val('xy', { x: active.val('s'), y: 100 - active.val('v') }, colorMap);
+                    colorBar.val('y', 360 - active.val('h'), colorBar);
+                    break;
+                  case 's':
+                    setTimeout(
+                      function()
+                      {
+                        setBG.call($this, colorMapDiv, 'transparent');
+                        setImgLoc.call($this, colorMapL1, -260);
+                        setImgLoc.call($this, colorMapL2, -520);
+                        setImgLoc.call($this, colorBarL1, -260);
+                        setImgLoc.call($this, colorBarL2, -520);
+                        setImgLoc.call($this, colorBarL6, 260);
+                        setAlpha.call($this, colorBarL6, 100);
+                      }, 0);
+                    colorMap.range('all', { minX: 0, maxX: 360, minY: 0, maxY: 100 });
+                    colorBar.range('rangeY', { minY: 0, maxY: 100 });
+                    if (active.val('ahex') == null) break;
+                    colorMap.val('xy', { x: active.val('h'), y: 100 - active.val('v') }, colorMap);
+                    colorBar.val('y', 100 - active.val('s'), colorBar);
+                    break;
+                  case 'v':
+                    setTimeout(
+                      function()
+                      {
+                        setBG.call($this, colorMapDiv, '000000');
+                        setImgLoc.call($this, colorMapL1, -780);
+                        setImgLoc.call($this, colorMapL2, 260);
+                        setBG.call($this, colorBarDiv, hex);
+                        setImgLoc.call($this, colorBarL1, -520);
+                        setImgLoc.call($this, colorBarL2, 260);
+                        setAlpha.call($this, colorBarL2, 100);
+                        setImgLoc.call($this, colorBarL6, 260);
+                        setAlpha.call($this, colorBarL6, 100);
+                      }, 0);
+                    colorMap.range('all', { minX: 0, maxX: 360, minY: 0, maxY: 100 });
+                    colorBar.range('rangeY', { minY: 0, maxY: 100 });
+                    if (active.val('ahex') == null) break;
+                    colorMap.val('xy', { x: active.val('h'), y: 100 - active.val('s') }, colorMap);
+                    colorBar.val('y', 100 - active.val('v'), colorBar);
+                    break;
+                  case 'r':
+                    rgbMap = -1040;
+                    rgbBar = -780;
+                    colorMap.range('all', { minX: 0, maxX: 255, minY: 0, maxY: 255 });
+                    colorBar.range('rangeY', { minY: 0, maxY: 255 });
+                    if (active.val('ahex') == null) break;
+                    colorMap.val('xy', { x: active.val('b'), y: 255 - active.val('g') }, colorMap);
+                    colorBar.val('y', 255 - active.val('r'), colorBar);
+                    break;
+                  case 'g':
+                    rgbMap = -1560;
+                    rgbBar = -1820;
+                    colorMap.range('all', { minX: 0, maxX: 255, minY: 0, maxY: 255 });
+                    colorBar.range('rangeY', { minY: 0, maxY: 255 });
+                    if (active.val('ahex') == null) break;
+                    colorMap.val('xy', { x: active.val('b'), y: 255 - active.val('r') }, colorMap);
+                    colorBar.val('y', 255 - active.val('g'), colorBar);
+                    break;
+                  case 'b':
+                    rgbMap = -2080;
+                    rgbBar = -2860;
+                    colorMap.range('all', { minX: 0, maxX: 255, minY: 0, maxY: 255 });
+                    colorBar.range('rangeY', { minY: 0, maxY: 255 });
+                    if (active.val('ahex') == null) break;
+                    colorMap.val('xy', { x: active.val('r'), y: 255 - active.val('g') }, colorMap);
+                    colorBar.val('y', 255 - active.val('b'), colorBar);
+                    break;
+                  case 'a':
+                    setTimeout(
+                      function()
+                      {
+                        setBG.call($this, colorMapDiv, 'transparent');
+                        setImgLoc.call($this, colorMapL1, -260);
+                        setImgLoc.call($this, colorMapL2, -520);
+                        setImgLoc.call($this, colorBarL1, 260);
+                        setImgLoc.call($this, colorBarL2, 260);
+                        setAlpha.call($this, colorBarL2, 100);
+                        setImgLoc.call($this, colorBarL6, 0);
+                        setAlpha.call($this, colorBarL6, 100);
+                      }, 0);
+                    colorMap.range('all', { minX: 0, maxX: 360, minY: 0, maxY: 100 });
+                    colorBar.range('rangeY', { minY: 0, maxY: 255 });
+                    if (active.val('ahex') == null) break;
+                    colorMap.val('xy', { x: active.val('h'), y: 100 - active.val('v') }, colorMap);
+                    colorBar.val('y', 255 - active.val('a'), colorBar);
+                    break;
+                  default:
+                    throw ('Invalid Mode');
+                    break;
+                }
+                switch (colorMode)
+                {
+                  case 'h':
+                    break;
+                  case 's':
+                  case 'v':
+                  case 'a':
+                    setTimeout(
+                      function()
+                      {
+                        setAlpha.call($this, colorMapL1, 100);
+                        setAlpha.call($this, colorBarL1, 100);
+                        setImgLoc.call($this, colorBarL3, 260);
+                        setAlpha.call($this, colorBarL3, 100);
+                        setImgLoc.call($this, colorBarL4, 260);
+                        setAlpha.call($this, colorBarL4, 100);
+                      }, 0);
+                    break;
+                  case 'r':
+                  case 'g':
+                  case 'b':
+                    setTimeout(
+                      function()
+                      {
+                        setBG.call($this, colorMapDiv, 'transparent');
+                        setBG.call($this, colorBarDiv, 'transparent');
+                        setAlpha.call($this, colorBarL1, 100);
+                        setAlpha.call($this, colorMapL1, 100);
+                        setImgLoc.call($this, colorMapL1, rgbMap);
+                        setImgLoc.call($this, colorMapL2, rgbMap - 260);
+                        setImgLoc.call($this, colorBarL1, rgbBar - 780);
+                        setImgLoc.call($this, colorBarL2, rgbBar - 520);
+                        setImgLoc.call($this, colorBarL3, rgbBar);
+                        setImgLoc.call($this, colorBarL4, rgbBar - 260);
+                        setImgLoc.call($this, colorBarL6, 260);
+                        setAlpha.call($this, colorBarL6, 100);
+                      }, 0);
+                    break;
+                }
+                if (active.val('ahex') == null) return;
+                activeColorChanged.call($this, active);
+              },
+            activeColorChanged = // Update color when user changes text values
+              function(ui, context)
+              {
+                if (context == null || (context != colorBar && context != colorMap)) positionMapAndBarArrows.call($this, ui, context);
+                setTimeout(
+                  function()
+                  {
+                    updatePreview.call($this, ui);
+                    updateMapVisuals.call($this, ui);
+                    updateBarVisuals.call($this, ui);
+                  }, 0);
+              },
+            mapValueChanged = // user has dragged the ColorMap pointer
+              function(ui, context)
+              {
+                var active = color.active;
+                if (context != colorMap && active.val() == null) return;
+                var xy = ui.val('all');
+                switch (settings.color.mode)
+                {
+                  case 'h':
+                    active.val('sv', { s: xy.x, v: 100 - xy.y }, context);
+                    break;
+                  case 's':
+                  case 'a':
+                    active.val('hv', { h: xy.x, v: 100 - xy.y }, context);
+                    break;
+                  case 'v':
+                    active.val('hs', { h: xy.x, s: 100 - xy.y }, context);
+                    break;
+                  case 'r':
+                    active.val('gb', { g: 255 - xy.y, b: xy.x }, context);
+                    break;
+                  case 'g':
+                    active.val('rb', { r: 255 - xy.y, b: xy.x }, context);
+                    break;
+                  case 'b':
+                    active.val('rg', { r: xy.x, g: 255 - xy.y }, context);
+                    break;
+                }
+              },
+            colorBarValueChanged = // user has dragged the ColorBar slider
+              function(ui, context)
+              {
+                var active = color.active;
+                if (context != colorBar && active.val() == null) return;
+                switch (settings.color.mode)
+                {
+                  case 'h':
+                    active.val('h', { h: 360 - ui.val('y') }, context);
+                    break;
+                  case 's':
+                    active.val('s', { s: 100 - ui.val('y') }, context);
+                    break;
+                  case 'v':
+                    active.val('v', { v: 100 - ui.val('y') }, context);
+                    break;
+                  case 'r':
+                    active.val('r', { r: 255 - ui.val('y') }, context);
+                    break;
+                  case 'g':
+                    active.val('g', { g: 255 - ui.val('y') }, context);
+                    break;
+                  case 'b':
+                    active.val('b', { b: 255 - ui.val('y') }, context);
+                    break;
+                  case 'a':
+                    active.val('a', 255 - ui.val('y'), context);
+                    break;
+                }
+              },
+            positionMapAndBarArrows = // position map and bar arrows to match current color
+              function(ui, context)
+              {
+                if (context != colorMap)
+                {
+                  switch (settings.color.mode)
+                  {
+                    case 'h':
+                      var sv = ui.val('sv');
+                      colorMap.val('xy', { x: sv != null ? sv.s : 100, y: 100 - (sv != null ? sv.v : 100) }, context);
+                      break;
+                    case 's':
+                    case 'a':
+                      var hv = ui.val('hv');
+                      colorMap.val('xy', { x: hv && hv.h || 0, y: 100 - (hv != null ? hv.v : 100) }, context);
+                      break;
+                    case 'v':
+                      var hs = ui.val('hs');
+                      colorMap.val('xy', { x: hs && hs.h || 0, y: 100 - (hs != null ? hs.s : 100) }, context);
+                      break;
+                    case 'r':
+                      var bg = ui.val('bg');
+                      colorMap.val('xy', { x: bg && bg.b || 0, y: 255 - (bg && bg.g || 0) }, context);
+                      break;
+                    case 'g':
+                      var br = ui.val('br');
+                      colorMap.val('xy', { x: br && br.b || 0, y: 255 - (br && br.r || 0) }, context);
+                      break;
+                    case 'b':
+                      var rg = ui.val('rg');
+                      colorMap.val('xy', { x: rg && rg.r || 0, y: 255 - (rg && rg.g || 0) }, context);
+                      break;
+                  }
+                }
+                if (context != colorBar)
+                {
+                  switch (settings.color.mode)
+                  {
+                    case 'h':
+                      colorBar.val('y', 360 - (ui.val('h') || 0), context);
+                      break;
+                    case 's':
+                      var s = ui.val('s');
+                      colorBar.val('y', 100 - (s != null ? s : 100), context);
+                      break;
+                    case 'v':
+                      var v = ui.val('v');
+                      colorBar.val('y', 100 - (v != null ? v : 100), context);
+                      break;
+                    case 'r':
+                      colorBar.val('y', 255 - (ui.val('r') || 0), context);
+                      break;
+                    case 'g':
+                      colorBar.val('y', 255 - (ui.val('g') || 0), context);
+                      break;
+                    case 'b':
+                      colorBar.val('y', 255 - (ui.val('b') || 0), context);
+                      break;
+                    case 'a':
+                      var a = ui.val('a');
+                      colorBar.val('y', 255 - (a != null ? a : 255), context);
+                      break;
+                  }
+                }
+              },
+            updatePreview =
+              function(ui)
+              {
+                try
+                {
+                  var all = ui.val('all');
+                  activePreview.css({ backgroundColor: all && '#' + all.hex || 'transparent' });
+                  setAlpha.call($this, activePreview, all && Math.precision((all.a * 100) / 255, 4) || 0);
+                }
+                catch (e) { }
+              },
+            updateMapVisuals =
+              function(ui)
+              {
+                switch (settings.color.mode)
+                {
+                  case 'h':
+                    setBG.call($this, colorMapDiv, new Color({ h: ui.val('h') || 0, s: 100, v: 100 }).val('hex'));
+                    break;
+                  case 's':
+                  case 'a':
+                    var s = ui.val('s');
+                    setAlpha.call($this, colorMapL2, 100 - (s != null ? s : 100));
+                    break;
+                  case 'v':
+                    var v = ui.val('v');
+                    setAlpha.call($this, colorMapL1, v != null ? v : 100);
+                    break;
+                  case 'r':
+                    setAlpha.call($this, colorMapL2, Math.precision((ui.val('r') || 0) / 255 * 100, 4));
+                    break;
+                  case 'g':
+                    setAlpha.call($this, colorMapL2, Math.precision((ui.val('g') || 0) / 255 * 100, 4));
+                    break;
+                  case 'b':
+                    setAlpha.call($this, colorMapL2, Math.precision((ui.val('b') || 0) / 255 * 100));
+                    break;
+                }
+                var a = ui.val('a');
+                setAlpha.call($this, colorMapL3, Math.precision(((255 - (a || 0)) * 100) / 255, 4));
+              },
+            updateBarVisuals =
+              function(ui)
+              {
+                switch (settings.color.mode)
+                {
+                  case 'h':
+                    var a = ui.val('a');
+                    setAlpha.call($this, colorBarL5, Math.precision(((255 - (a || 0)) * 100) / 255, 4));
+                    break;
+                  case 's':
+                    var hva = ui.val('hva'),
+                        saturatedColor = new Color({ h: hva && hva.h || 0, s: 100, v: hva != null ? hva.v : 100 });
+                    setBG.call($this, colorBarDiv, saturatedColor.val('hex'));
+                    setAlpha.call($this, colorBarL2, 100 - (hva != null ? hva.v : 100));
+                    setAlpha.call($this, colorBarL5, Math.precision(((255 - (hva && hva.a || 0)) * 100) / 255, 4));
+                    break;
+                  case 'v':
+                    var hsa = ui.val('hsa'),
+                        valueColor = new Color({ h: hsa && hsa.h || 0, s: hsa != null ? hsa.s : 100, v: 100 });
+                    setBG.call($this, colorBarDiv, valueColor.val('hex'));
+                    setAlpha.call($this, colorBarL5, Math.precision(((255 - (hsa && hsa.a || 0)) * 100) / 255, 4));
+                    break;
+                  case 'r':
+                  case 'g':
+                  case 'b':
+                    var hValue = 0, vValue = 0, rgba = ui.val('rgba');
+                    if (settings.color.mode == 'r')
+                    {
+                      hValue = rgba && rgba.b || 0;
+                      vValue = rgba && rgba.g || 0;
+                    }
+                    else if (settings.color.mode == 'g')
+                    {
+                      hValue = rgba && rgba.b || 0;
+                      vValue = rgba && rgba.r || 0;
+                    }
+                    else if (settings.color.mode == 'b')
+                    {
+                      hValue = rgba && rgba.r || 0;
+                      vValue = rgba && rgba.g || 0;
+                    }
+                    var middle = vValue > hValue ? hValue : vValue;
+                    setAlpha.call($this, colorBarL2, hValue > vValue ? Math.precision(((hValue - vValue) / (255 - vValue)) * 100, 4) : 0);
+                    setAlpha.call($this, colorBarL3, vValue > hValue ? Math.precision(((vValue - hValue) / (255 - hValue)) * 100, 4) : 0);
+                    setAlpha.call($this, colorBarL4, Math.precision((middle / 255) * 100, 4));
+                    setAlpha.call($this, colorBarL5, Math.precision(((255 - (rgba && rgba.a || 0)) * 100) / 255, 4));
+                    break;
+                  case 'a':
+                    var a = ui.val('a');
+                    setBG.call($this, colorBarDiv, ui.val('hex') || '000000');
+                    setAlpha.call($this, colorBarL5, a != null ? 0 : 100);
+                    setAlpha.call($this, colorBarL6, a != null ? 100 : 0);
+                    break;
+                }
+              },
+            setBG =
+              function(el, c)
+              {
+                el.css({ backgroundColor: c && c.length == 6 && '#' + c || 'transparent' });
+              },
+            setImg =
+              function(img, src)
+              {
+                if (isLessThanIE7 && (src.indexOf('AlphaBar.png') != -1 || src.indexOf('Bars.png') != -1 || src.indexOf('Maps.png') != -1))
+                {
+                  img.attr('pngSrc', src);
+                  img.css({ backgroundImage: 'none', filter: 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + src + '\', sizingMethod=\'scale\')' });
+                }
+                else img.css({ backgroundImage: 'url(\'' + src + '\')' });
+              },
+            setImgLoc =
+              function(img, y)
+              {
+                img.css({ top: y + 'px' });
+              },
+            setAlpha =
+              function(obj, alpha)
+              {
+                obj.css({ visibility: alpha > 0 ? 'visible' : 'hidden' });
+                if (alpha > 0 && alpha < 100)
+                {
+                  if (isLessThanIE7)
+                  {
+                    var src = obj.attr('pngSrc');
+                    if (src != null && (src.indexOf('AlphaBar.png') != -1 || src.indexOf('Bars.png') != -1 || src.indexOf('Maps.png') != -1))
+                      obj.css({ filter: 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + src + '\', sizingMethod=\'scale\') progid:DXImageTransform.Microsoft.Alpha(opacity=' + alpha + ')' });
+                    else obj.css({ opacity: Math.precision(alpha / 100, 4) });
+                  }
+                  else obj.css({ opacity: Math.precision(alpha / 100, 4) });
+                }
+                else if (alpha == 0 || alpha == 100)
+                {
+                  if (isLessThanIE7)
+                  {
+                    var src = obj.attr('pngSrc');
+                    if (src != null && (src.indexOf('AlphaBar.png') != -1 || src.indexOf('Bars.png') != -1 || src.indexOf('Maps.png') != -1))
+                      obj.css({ filter: 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + src + '\', sizingMethod=\'scale\')' });
+                    else obj.css({ opacity: '' });
+                  }
+                  else obj.css({ opacity: '' });
+                }
+              },
+            revertColor = // revert color to original color when opened
+              function()
+              {
+                color.active.val('ahex', color.current.val('ahex'));
+              },
+            commitColor = // commit the color changes
+              function()
+              {
+                color.current.val('ahex', color.active.val('ahex'));
+              },
+            radioClicked =
+              function(e)
+              {
+                $(this).parents('tbody:first').find('input:radio[value!="'+e.target.value+'"]').removeAttr('checked');
+                setColorMode.call($this, e.target.value);
+              },
+            currentClicked =
+              function()
+              {
+                revertColor.call($this);
+              },
+            cancelClicked =
+              function()
+              {
+                revertColor.call($this);
+                settings.window.expandable && hide.call($this);
+                $.isFunction(cancelCallback) && cancelCallback.call($this, color.active, cancelButton);
+              },
+            okClicked =
+              function()
+              {
+                commitColor.call($this);
+                settings.window.expandable && hide.call($this);
+                $.isFunction(commitCallback) && commitCallback.call($this, color.active, okButton);
+              },
+            iconImageClicked =
+              function()
+              {
+                show.call($this);
+              },
+            currentColorChanged =
+              function(ui, context)
+              {
+                var hex = ui.val('hex');
+                currentPreview.css({ backgroundColor: hex && '#' + hex || 'transparent' });
+                setAlpha.call($this, currentPreview, Math.precision(((ui.val('a') || 0) * 100) / 255, 4));
+              },
+            expandableColorChanged =
+              function(ui, context)
+              {
+                var hex = ui.val('hex');
+                var va = ui.val('va');
+                iconColor.css({ backgroundColor: hex && '#' + hex || 'transparent' });
+                setAlpha.call($this, iconAlpha, Math.precision(((255 - (va && va.a || 0)) * 100) / 255, 4));
+                if (settings.window.bindToInput&&settings.window.updateInputColor)
+                  settings.window.input.css(
+                    {
+                      backgroundColor: hex && '#' + hex || 'transparent',
+                      color: va == null || va.v > 75 ? '#000000' : '#ffffff'
+                    });
+              },
+            moveBarMouseDown =
+              function(e)
+              {
+                var element = settings.window.element, // local copies for YUI compressor
+                  page = settings.window.page;
+                elementStartX = parseInt(container.css('left'));
+                elementStartY = parseInt(container.css('top'));
+                pageStartX = e.pageX;
+                pageStartY = e.pageY;
+                // bind events to document to move window - we will unbind these on mouseup
+                $(document).bind('mousemove', documentMouseMove).bind('mouseup', documentMouseUp);
+                e.preventDefault(); // prevent attempted dragging of the column
+              },
+            documentMouseMove =
+              function(e)
+              {
+                container.css({ left: elementStartX - (pageStartX - e.pageX) + 'px', top: elementStartY - (pageStartY - e.pageY) + 'px' });
+                if (settings.window.expandable && !$.support.boxModel) container.prev().css({ left: container.css("left"), top: container.css("top") });
+                e.stopPropagation();
+                e.preventDefault();
+                return false;
+              },
+            documentMouseUp =
+              function(e)
+              {
+                $(document).unbind('mousemove', documentMouseMove).unbind('mouseup', documentMouseUp);
+                e.stopPropagation();
+                e.preventDefault();
+                return false;
+              },
+            quickPickClicked =
+              function(e)
+              {
+                e.preventDefault();
+                e.stopPropagation();
+                color.active.val('ahex', $(this).attr('title') || null, e.target);
+                return false;
+              },
+            commitCallback = $.isFunction($arguments[1]) && $arguments[1] || null,
+            liveCallback = $.isFunction($arguments[2]) && $arguments[2] || null,
+            cancelCallback = $.isFunction($arguments[3]) && $arguments[3] || null,
+            show =
+              function()
+              {
+                color.current.val('ahex', color.active.val('ahex'));
+                var attachIFrame = function()
+                  {
+                    if (!settings.window.expandable || $.support.boxModel) return;
+                    var table = container.find('table:first');
+                    container.before('<iframe/>');
+                    container.prev().css({ width: table.width(), height: container.height(), opacity: 0, position: 'absolute', left: container.css("left"), top: container.css("top") });
+                  };
+                if (settings.window.expandable)
+                {
+                  $(document.body).children('div.jPicker.Container').css({zIndex:10});
+                  container.css({zIndex:20});
+                }
+                switch (settings.window.effects.type)
+                {
+                  case 'fade':
+                    container.fadeIn(settings.window.effects.speed.show, attachIFrame);
+                    break;
+                  case 'slide':
+                    container.slideDown(settings.window.effects.speed.show, attachIFrame);
+                    break;
+                  case 'show':
+                  default:
+                    container.show(settings.window.effects.speed.show, attachIFrame);
+                    break;
+                }
+              },
+            hide =
+              function()
+              {
+                var removeIFrame = function()
+                  {
+                    if (settings.window.expandable) container.css({ zIndex: 10 });
+                    if (!settings.window.expandable || $.support.boxModel) return;
+                    container.prev().remove();
+                  };
+                switch (settings.window.effects.type)
+                {
+                  case 'fade':
+                    container.fadeOut(settings.window.effects.speed.hide, removeIFrame);
+                    break;
+                  case 'slide':
+                    container.slideUp(settings.window.effects.speed.hide, removeIFrame);
+                    break;
+                  case 'show':
+                  default:
+                    container.hide(settings.window.effects.speed.hide, removeIFrame);
+                    break;
+                }
+              },
+            initialize =
+              function()
+              {
+                var win = settings.window,
+                    popup = win.expandable ? $($this).next().find('.Container:first') : null;
+                container = win.expandable ? $('<div/>') : $($this);
+                container.addClass('jPicker Container');
+                if (win.expandable) container.hide();
+                container.get(0).onselectstart = function(event){ if (event.target.nodeName.toLowerCase() !== 'input') return false; };
+                // inject html source code - we are using a single table for this control - I know tables are considered bad, but it takes care of equal height columns and
+                // this control really is tabular data, so I believe it is the right move
+                var all = color.active.val('all');
+                if (win.alphaPrecision < 0) win.alphaPrecision = 0;
+                else if (win.alphaPrecision > 2) win.alphaPrecision = 2;
+                var controlHtml='<table class="jPicker" cellpadding="0" cellspacing="0"><tbody>' + (win.expandable ? '<tr><td class="Move" colspan="5">&nbsp;</td></tr>' : '') + '<tr><td rowspan="9"><h2 class="Title">' + (win.title || localization.text.title) + '</h2><div class="Map"><span class="Map1">&nbsp;</span><span class="Map2">&nbsp;</span><span class="Map3">&nbsp;</span><img src="' + images.clientPath + images.colorMap.arrow.file + '" class="Arrow"/></div></td><td rowspan="9"><div class="Bar"><span class="Map1">&nbsp;</span><span class="Map2">&nbsp;</span><span class="Map3">&nbsp;</span><span class="Map4">&nbsp;</span><span class="Map5">&nbsp;</span><span class="Map6">&nbsp;</span><img src="' + images.clientPath + images.colorBar.arrow.file + '" class="Arrow"/></div></td><td colspan="2" class="Preview"><div class="prev_div">' + localization.text.newColor + '<div class="color_preview"><span class="Active" title="' + localization.tooltips.colors.newColor + '">&nbsp;</span><span class="Current" title="' + localization.tooltips.colors.currentColor + '">&nbsp;</span></div></div>' + localization.text.currentColor + '</td><td rowspan="9" class="Button"><input type="button" class="Ok" value="' + localization.text.ok + '" title="' + localization.tooltips.buttons.ok + '"/><input type="button" class="Cancel" value="' + localization.text.cancel + '" title="' + localization.tooltips.buttons.cancel + '"/><div class="Grid">&nbsp;</div></td></tr><tr class="Hue"><td class="Radio"><label title="' + localization.tooltips.hue.radio + '"><input type="radio" value="h"' + (settings.color.mode == 'h' ? ' checked="checked"' : '') + '/>H:</label></td><td class="Text"><input type="text" maxlength="3" value="' + (all != null ? all.h : '') + '" title="' + localization.tooltips.hue.textbox + '"/>&nbsp;º</td></tr><tr class="Saturation"><td class="Radio"><label title="' + localization.tooltips.saturation.radio + '"><input type="radio" value="s"' + (settings.color.mode == 's' ? ' checked="checked"' : '') + '/>S:</label></td><td class="Text"><input type="text" maxlength="3" value="' + (all != null ? all.s : '') + '" title="' + localization.tooltips.saturation.textbox + '"/>&nbsp;%</td></tr><tr class="Value"><td class="Radio"><label title="' + localization.tooltips.value.radio + '"><input type="radio" value="v"' + (settings.color.mode == 'v' ? ' checked="checked"' : '') + '/>V:</label></td><td class="Text"><input type="text" maxlength="3" value="' + (all != null ? all.v : '') + '" title="' + localization.tooltips.value.textbox + '"/>&nbsp;%<br/><br/></td></tr><tr class="Red"><td class="Radio"><label title="' + localization.tooltips.red.radio + '"><input type="radio" value="r"' + (settings.color.mode == 'r' ? ' checked="checked"' : '') + '/>R:</label></td><td class="Text"><input type="text" maxlength="3" value="' + (all != null ? all.r : '') + '" title="' + localization.tooltips.red.textbox + '"/></td></tr><tr class="Green"><td class="Radio"><label title="' + localization.tooltips.green.radio + '"><input type="radio" value="g"' + (settings.color.mode == 'g' ? ' checked="checked"' : '') + '/>G:</label></td><td class="Text"><input type="text" maxlength="3" value="' + (all != null ? all.g : '') + '" title="' + localization.tooltips.green.textbox + '"/></td></tr><tr class="Blue"><td class="Radio"><label title="' + localization.tooltips.blue.radio + '"><input type="radio" value="b"' + (settings.color.mode == 'b' ? ' checked="checked"' : '') + '/>B:</label></td><td class="Text"><input type="text" maxlength="3" value="' + (all != null ? all.b : '') + '" title="' + localization.tooltips.blue.textbox + '"/></td></tr><tr class="Alpha"><td class="Radio">' + (win.alphaSupport ? '<label title="' + localization.tooltips.alpha.radio + '"><input type="radio" value="a"' + (settings.color.mode == 'a' ? ' checked="checked"' : '') + '/>A:</label>' : '&nbsp;') + '</td><td class="Text">' + (win.alphaSupport ? '<input type="text" maxlength="' + (3 + win.alphaPrecision) + '" value="' + (all != null ? Math.precision((all.a * 100) / 255, win.alphaPrecision) : '') + '" title="' + localization.tooltips.alpha.textbox + '"/>&nbsp;%' : '&nbsp;') + '</td></tr><tr class="Hex"><td colspan="2" class="Text"><label title="' + localization.tooltips.hex.textbox + '">#:<input type="text" maxlength="6" class="Hex" value="' + (all != null ? all.hex : '') + '"/></label>' + (win.alphaSupport ? '<input type="text" maxlength="2" class="AHex" value="' + (all != null ? all.ahex.substring(6) : '') + '" title="' + localization.tooltips.hex.alpha + '"/></td>' : '&nbsp;') + '</tr></tbody></table>';
+                if (win.expandable)
+                {
+                  container.html(controlHtml);
+                  if($(document.body).children('div.jPicker.Container').length==0)$(document.body).prepend(container);
+                  else $(document.body).children('div.jPicker.Container:last').after(container);
+                  container.mousedown(
+                    function()
+                    {
+                      $(document.body).children('div.jPicker.Container').css({zIndex:10});
+                      container.css({zIndex:20});
+                    });
+                  container.css( // positions must be set and display set to absolute before source code injection or IE will size the container to fit the window
+                    {
+                      left:
+                        win.position.x == 'left' ? (popup.offset().left - 530 - (win.position.y == 'center' ? 25 : 0)) + 'px' :
+                        win.position.x == 'center' ? (popup.offset().left - 260) + 'px' :
+                        win.position.x == 'right' ? (popup.offset().left - 10 + (win.position.y == 'center' ? 25 : 0)) + 'px' :
+                        win.position.x == 'screenCenter' ? (($(document).width() >> 1) - 260) + 'px' : (popup.offset().left + parseInt(win.position.x)) + 'px',
+                      position: 'absolute',
+                      top: win.position.y == 'top' ? (popup.offset().top - 312) + 'px' :
+                           win.position.y == 'center' ? (popup.offset().top - 156) + 'px' :
+                           win.position.y == 'bottom' ? (popup.offset().top + 25) + 'px' : (popup.offset().top + parseInt(win.position.y)) + 'px'
+                    });
+                }
+                else
+                {
+                  container = $($this);
+                  container.html(controlHtml);
+                }
+                // initialize the objects to the source code just injected
+                var tbody = container.find('tbody:first');
+                colorMapDiv = tbody.find('div.Map:first');
+                colorBarDiv = tbody.find('div.Bar:first');
+                var MapMaps = colorMapDiv.find('span'),
+                    BarMaps = colorBarDiv.find('span');
+                colorMapL1 = MapMaps.filter('.Map1:first');
+                colorMapL2 = MapMaps.filter('.Map2:first');
+                colorMapL3 = MapMaps.filter('.Map3:first');
+                colorBarL1 = BarMaps.filter('.Map1:first');
+                colorBarL2 = BarMaps.filter('.Map2:first');
+                colorBarL3 = BarMaps.filter('.Map3:first');
+                colorBarL4 = BarMaps.filter('.Map4:first');
+                colorBarL5 = BarMaps.filter('.Map5:first');
+                colorBarL6 = BarMaps.filter('.Map6:first');
+                // create color pickers and maps
+                colorMap = new Slider(colorMapDiv,
+                  {
+                    map:
+                    {
+                      width: images.colorMap.width,
+                      height: images.colorMap.height
+                    },
+                    arrow:
+                    {
+                      image: images.clientPath + images.colorMap.arrow.file,
+                      width: images.colorMap.arrow.width,
+                      height: images.colorMap.arrow.height
+                    }
+                  });
+                colorMap.bind(mapValueChanged);
+                colorBar = new Slider(colorBarDiv,
+                  {
+                    map:
+                    {
+                      width: images.colorBar.width,
+                      height: images.colorBar.height
+                    },
+                    arrow:
+                    {
+                      image: images.clientPath + images.colorBar.arrow.file,
+                      width: images.colorBar.arrow.width,
+                      height: images.colorBar.arrow.height
+                    }
+                  });
+                colorBar.bind(colorBarValueChanged);
+                colorPicker = new ColorValuePicker(tbody, color.active, win.expandable && win.bindToInput ? win.input : null, win.alphaPrecision);
+                var hex = all != null ? all.hex : null,
+                    preview = tbody.find('.Preview'),
+                    button = tbody.find('.Button');
+                activePreview = preview.find('.Active:first').css({ backgroundColor: hex && '#' + hex || 'transparent' });
+                currentPreview = preview.find('.Current:first').css({ backgroundColor: hex && '#' + hex || 'transparent' }).bind('click', currentClicked);
+                setAlpha.call($this, currentPreview, Math.precision(color.current.val('a') * 100) / 255, 4);
+                okButton = button.find('.Ok:first').bind('click touchstart', okClicked);
+                cancelButton = button.find('.Cancel:first').bind('click touchstart', cancelClicked);
+                grid = button.find('.Grid:first');
+                setTimeout(
+                  function()
+                  {
+                    setImg.call($this, colorMapL1, images.clientPath + 'Maps.png');
+                    setImg.call($this, colorMapL2, images.clientPath + 'Maps.png');
+                    setImg.call($this, colorMapL3, images.clientPath + 'map-opacity.png');
+                    setImg.call($this, colorBarL1, images.clientPath + 'Bars.png');
+                    setImg.call($this, colorBarL2, images.clientPath + 'Bars.png');
+                    setImg.call($this, colorBarL3, images.clientPath + 'Bars.png');
+                    setImg.call($this, colorBarL4, images.clientPath + 'Bars.png');
+                    setImg.call($this, colorBarL5, images.clientPath + 'bar-opacity.png');
+                    setImg.call($this, colorBarL6, images.clientPath + 'AlphaBar.png');
+                    setImg.call($this, preview.find('div:last'), images.clientPath + 'preview-opacity.png');
+                  }, 0);
+                tbody.find('td.Radio input').bind('click  touchstart', radioClicked);
+                // initialize quick list
+                if (color.quickList && color.quickList.length > 0)
+                {
+                  var html = '';
+                  for (i = 0; i < color.quickList.length; i++)
+                  {
+                    /* if default colors are hex strings, change them to color objects */
+                    if ((typeof (color.quickList[i])).toString().toLowerCase() == 'string') color.quickList[i] = new Color({ hex: color.quickList[i] });
+                    var alpha = color.quickList[i].val('a');
+                    var ahex = color.quickList[i].val('ahex');
+                    if (!win.alphaSupport && ahex) ahex = ahex.substring(0, 6) + 'ff';
+                    var quickHex = color.quickList[i].val('hex');
+                    html+='<span class="QuickColor"' + (ahex && ' title="#' + ahex + '"' || '') + ' style="background-color:' + (quickHex && '#' + quickHex || '') + ';' + (quickHex ? '' : 'background-image:url(' + images.clientPath + 'NoColor.png)') + (win.alphaSupport && alpha && alpha < 255 ? ';opacity:' + Math.precision(alpha / 255, 4) + ';filter:Alpha(opacity=' + Math.precision(alpha / 2.55, 4) + ')' : '') + '">&nbsp;</span>';
+                  }
+                  setImg.call($this, grid, images.clientPath + 'bar-opacity.png');
+                  grid.html(html);
+                  grid.find('.QuickColor').click(quickPickClicked);
+                }
+                setColorMode.call($this, settings.color.mode);
+                color.active.bind(activeColorChanged);
+                $.isFunction(liveCallback) && color.active.bind(liveCallback);
+                color.current.bind(currentColorChanged);
+                // bind to input
+                if (win.expandable)
+                {
+                  $this.icon = popup.parents('.Icon:first');
+                  iconColor = $this.icon.find('.Color:first').css({ backgroundColor: hex && '#' + hex || 'transparent' });
+                  iconAlpha = $this.icon.find('.Alpha:first');
+                  setImg.call($this, iconAlpha, images.clientPath + 'bar-opacity.png');
+                  setAlpha.call($this, iconAlpha, Math.precision(((255 - (all != null ? all.a : 0)) * 100) / 255, 4));
+                  iconImage = $this.icon.find('.Image:first').css(
+                    {
+                      backgroundImage: 'url(\'' + images.clientPath + images.picker.file + '\')'
+                    }).bind('click', iconImageClicked);
+                  if (win.bindToInput&&win.updateInputColor)
+                    win.input.css(
+                      {
+                        backgroundColor: hex && '#' + hex || 'transparent',
+                        color: all == null || all.v > 75 ? '#000000' : '#ffffff'
+                      });
+                  moveBar = tbody.find('.Move:first').bind('mousedown', moveBarMouseDown);
+                  color.active.bind(expandableColorChanged);
+                }
+                else show.call($this);
+              },
+            destroy =
+              function()
+              {
+                container.find('td.Radio input  touchstart').unbind('click', radioClicked);
+                currentPreview.unbind('click  touchstart', currentClicked);
+                cancelButton.unbind('click  touchstart', cancelClicked);
+                okButton.unbind('click  touchstart', okClicked);
+                if (settings.window.expandable)
+                {
+                  iconImage.unbind('click', iconImageClicked);
+                  moveBar.unbind('mousedown', moveBarMouseDown);
+                  $this.icon = null;
+                }
+                container.find('.QuickColor').unbind('click', quickPickClicked);
+                colorMapDiv = null;
+                colorBarDiv = null;
+                colorMapL1 = null;
+                colorMapL2 = null;
+                colorMapL3 = null;
+                colorBarL1 = null;
+                colorBarL2 = null;
+                colorBarL3 = null;
+                colorBarL4 = null;
+                colorBarL5 = null;
+                colorBarL6 = null;
+                colorMap.destroy();
+                colorMap = null;
+                colorBar.destroy();
+                colorBar = null;
+                colorPicker.destroy();
+                colorPicker = null;
+                activePreview = null;
+                currentPreview = null;
+                okButton = null;
+                cancelButton = null;
+                grid = null;
+                commitCallback = null;
+                cancelCallback = null;
+                liveCallback = null;
+                container.html('');
+                for (i = 0; i < List.length; i++) if (List[i] == $this) List.splice(i, 1);
+              },
+            images = settings.images, // local copies for YUI compressor
+            localization = settings.localization,
+            color =
+              {
+                active: (typeof(settings.color.active)).toString().toLowerCase() == 'string' ? new Color({ ahex: !settings.window.alphaSupport && settings.color.active ? settings.color.active.substring(0, 6) + 'ff' : settings.color.active }) : new Color({ ahex: !settings.window.alphaSupport && settings.color.active.val('ahex') ? settings.color.active.val('ahex').substring(0, 6) + 'ff' : settings.color.active.val('ahex') }),
+                current: (typeof(settings.color.active)).toString().toLowerCase() == 'string' ? new Color({ ahex: !settings.window.alphaSupport && settings.color.active ? settings.color.active.substring(0, 6) + 'ff' : settings.color.active }) : new Color({ ahex: !settings.window.alphaSupport && settings.color.active.val('ahex') ? settings.color.active.val('ahex').substring(0, 6) + 'ff' : settings.color.active.val('ahex') }),
+                quickList: settings.color.quickList
+              };
+          $.extend(true, $this, // public properties, methods, and callbacks
+            {
+              commitCallback: commitCallback, // commitCallback function can be overridden to return the selected color to a method you specify when the user clicks "OK"
+              liveCallback: liveCallback, // liveCallback function can be overridden to return the selected color to a method you specify in live mode (continuous update)
+              cancelCallback: cancelCallback, // cancelCallback function can be overridden to a method you specify when the user clicks "Cancel"
+              color: color,
+              show: show,
+              hide: hide,
+              destroy: destroy // destroys this control entirely, removing all events and objects, and removing itself from the List
+            });
+          List.push($this);
+          setTimeout(
+            function()
+            {
+              initialize.call($this);
+            }, 0);
+        });
+    };
+  $.fn.jPicker.defaults = /* jPicker defaults - you can change anything in this section (such as the clientPath to your images) without fear of breaking the program */
+      {
+      window:
+        {
+          title: null, /* any title for the jPicker window itself - displays "Drag Markers To Pick A Color" if left null */
+          effects:
+          {
+            type: 'slide', /* effect used to show/hide an expandable picker. Acceptable values "slide", "show", "fade" */
+            speed:
+            {
+              show: 'slow', /* duration of "show" effect. Acceptable values are "fast", "slow", or time in ms */
+              hide: 'fast' /* duration of "hide" effect. Acceptable values are "fast", "slow", or time in ms */
+            }
+          },
+          position:
+          {
+            x: 'screenCenter', /* acceptable values "left", "center", "right", "screenCenter", or relative px value */
+            y: 'top' /* acceptable values "top", "bottom", "center", or relative px value */
+          },
+          expandable: false, /* default to large static picker - set to true to make an expandable picker (small icon with popup) - set automatically when binded to input element */
+          liveUpdate: true, /* set false if you want the user to have to click "OK" before the binded input box updates values (always "true" for expandable picker) */
+          alphaSupport: false, /* set to true to enable alpha picking */
+          alphaPrecision: 0, /* set decimal precision for alpha percentage display - hex codes do not map directly to percentage integers - range 0-2 */
+          updateInputColor: true /* set to false to prevent binded input colors from changing */
+        },
+      color:
+        {
+          mode: 'h', /* acceptabled values "h" (hue), "s" (saturation), "v" (value), "r" (red), "g" (green), "b" (blue), "a" (alpha) */
+          active: new Color({ ahex: '#ffcc00ff' }), /* acceptable values are any declared $.jPicker.Color object or string HEX value (e.g. #ffc000) WITH OR WITHOUT the "#" prefix */
+          quickList: /* the quick pick color list */
+            [
+              new Color({ h: 360, s: 33, v: 100 }), /* acceptable values are any declared $.jPicker.Color object or string HEX value (e.g. #ffc000) WITH OR WITHOUT the "#" prefix */
+              new Color({ h: 360, s: 66, v: 100 }),
+              new Color({ h: 360, s: 100, v: 100 }),
+              new Color({ h: 360, s: 100, v: 75 }),
+              new Color({ h: 360, s: 100, v: 50 }),
+              new Color({ h: 180, s: 0, v: 100 }),
+              new Color({ h: 30, s: 33, v: 100 }),
+              new Color({ h: 30, s: 66, v: 100 }),
+              new Color({ h: 30, s: 100, v: 100 }),
+              new Color({ h: 30, s: 100, v: 75 }),
+              new Color({ h: 30, s: 100, v: 50 }),
+              new Color({ h: 180, s: 0, v: 90 }),
+              new Color({ h: 60, s: 33, v: 100 }),
+              new Color({ h: 60, s: 66, v: 100 }),
+              new Color({ h: 60, s: 100, v: 100 }),
+              new Color({ h: 60, s: 100, v: 75 }),
+              new Color({ h: 60, s: 100, v: 50 }),
+              new Color({ h: 180, s: 0, v: 80 }),
+              new Color({ h: 90, s: 33, v: 100 }),
+              new Color({ h: 90, s: 66, v: 100 }),
+              new Color({ h: 90, s: 100, v: 100 }),
+              new Color({ h: 90, s: 100, v: 75 }),
+              new Color({ h: 90, s: 100, v: 50 }),
+              new Color({ h: 180, s: 0, v: 70 }),
+              new Color({ h: 120, s: 33, v: 100 }),
+              new Color({ h: 120, s: 66, v: 100 }),
+              new Color({ h: 120, s: 100, v: 100 }),
+              new Color({ h: 120, s: 100, v: 75 }),
+              new Color({ h: 120, s: 100, v: 50 }),
+              new Color({ h: 180, s: 0, v: 60 }),
+              new Color({ h: 150, s: 33, v: 100 }),
+              new Color({ h: 150, s: 66, v: 100 }),
+              new Color({ h: 150, s: 100, v: 100 }),
+              new Color({ h: 150, s: 100, v: 75 }),
+              new Color({ h: 150, s: 100, v: 50 }),
+              new Color({ h: 180, s: 0, v: 50 }),
+              new Color({ h: 180, s: 33, v: 100 }),
+              new Color({ h: 180, s: 66, v: 100 }),
+              new Color({ h: 180, s: 100, v: 100 }),
+              new Color({ h: 180, s: 100, v: 75 }),
+              new Color({ h: 180, s: 100, v: 50 }),
+              new Color({ h: 180, s: 0, v: 40 }),
+              new Color({ h: 210, s: 33, v: 100 }),
+              new Color({ h: 210, s: 66, v: 100 }),
+              new Color({ h: 210, s: 100, v: 100 }),
+              new Color({ h: 210, s: 100, v: 75 }),
+              new Color({ h: 210, s: 100, v: 50 }),
+              new Color({ h: 180, s: 0, v: 30 }),
+              new Color({ h: 240, s: 33, v: 100 }),
+              new Color({ h: 240, s: 66, v: 100 }),
+              new Color({ h: 240, s: 100, v: 100 }),
+              new Color({ h: 240, s: 100, v: 75 }),
+              new Color({ h: 240, s: 100, v: 50 }),
+              new Color({ h: 180, s: 0, v: 20 }),
+              new Color({ h: 270, s: 33, v: 100 }),
+              new Color({ h: 270, s: 66, v: 100 }),
+              new Color({ h: 270, s: 100, v: 100 }),
+              new Color({ h: 270, s: 100, v: 75 }),
+              new Color({ h: 270, s: 100, v: 50 }),
+              new Color({ h: 180, s: 0, v: 10 }),
+              new Color({ h: 300, s: 33, v: 100 }),
+              new Color({ h: 300, s: 66, v: 100 }),
+              new Color({ h: 300, s: 100, v: 100 }),
+              new Color({ h: 300, s: 100, v: 75 }),
+              new Color({ h: 300, s: 100, v: 50 }),
+              new Color({ h: 180, s: 0, v: 0 }),
+              new Color({ h: 330, s: 33, v: 100 }),
+              new Color({ h: 330, s: 66, v: 100 }),
+              new Color({ h: 330, s: 100, v: 100 }),
+              new Color({ h: 330, s: 100, v: 75 }),
+              new Color({ h: 330, s: 100, v: 50 }),
+              new Color()
+            ]
+        },
+      images:
+        {
+          clientPath: '/jPicker/images/', /* Path to image files */
+          colorMap:
+          {
+            width: 256,
+            height: 256,
+            arrow:
+            {
+              file: 'mappoint.gif', /* ColorMap arrow icon */
+              width: 15,
+              height: 15
+            }
+          },
+          colorBar:
+          {
+            width: 20,
+            height: 256,
+            arrow:
+            {
+              file: 'rangearrows.gif', /* ColorBar arrow icon */
+              width: 20,
+              height: 7
+            }
+          },
+          picker:
+          {
+            file: 'picker.gif', /* Color Picker icon */
+            width: 25,
+            height: 24
+          }
+        },
+      localization: /* alter these to change the text presented by the picker (e.g. different language) */
+        {
+          text:
+          {
+            title: 'Drag Markers To Pick A Color',
+            newColor: 'new',
+            currentColor: 'current',
+            ok: 'OK',
+            cancel: 'Cancel'
+          },
+          tooltips:
+          {
+            colors:
+            {
+              newColor: 'New Color - Press &ldquo;OK&rdquo; To Commit',
+              currentColor: 'Click To Revert To Original Color'
+            },
+            buttons:
+            {
+              ok: 'Commit To This Color Selection',
+              cancel: 'Cancel And Revert To Original Color'
+            },
+            hue:
+            {
+              radio: 'Set To &ldquo;Hue&rdquo; Color Mode',
+              textbox: 'Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)'
+            },
+            saturation:
+            {
+              radio: 'Set To &ldquo;Saturation&rdquo; Color Mode',
+              textbox: 'Enter A &ldquo;Saturation&rdquo; Value (0-100%)'
+            },
+            value:
+            {
+              radio: 'Set To &ldquo;Value&rdquo; Color Mode',
+              textbox: 'Enter A &ldquo;Value&rdquo; Value (0-100%)'
+            },
+            red:
+            {
+              radio: 'Set To &ldquo;Red&rdquo; Color Mode',
+              textbox: 'Enter A &ldquo;Red&rdquo; Value (0-255)'
+            },
+            green:
+            {
+              radio: 'Set To &ldquo;Green&rdquo; Color Mode',
+              textbox: 'Enter A &ldquo;Green&rdquo; Value (0-255)'
+            },
+            blue:
+            {
+              radio: 'Set To &ldquo;Blue&rdquo; Color Mode',
+              textbox: 'Enter A &ldquo;Blue&rdquo; Value (0-255)'
+            },
+            alpha:
+            {
+              radio: 'Set To &ldquo;Alpha&rdquo; Color Mode',
+              textbox: 'Enter A &ldquo;Alpha&rdquo; Value (0-100)'
+            },
+            hex:
+            {
+              textbox: 'Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)',
+              alpha: 'Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)'
+            }
+          }
+        }
+    };
+})(jQuery, '1.1.6');
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/jgraduate/jquery.jgraduate.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/jgraduate/jquery.jgraduate.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/jgraduate/jquery.jgraduate.js	(revision 29468)
@@ -0,0 +1,1175 @@
+﻿/*
+ * jGraduate 0.4
+ *
+ * jQuery Plugin for a gradient picker
+ *
+ * Copyright (c) 2010 Jeff Schiller
+ * http://blog.codedread.com/
+ * Copyright (c) 2010 Alexis Deveria
+ * http://a.deveria.com/
+ *
+ * Apache 2 License
+
+jGraduate( options, okCallback, cancelCallback )
+
+where options is an object literal:
+	{
+		window: { title: "Pick the start color and opacity for the gradient" },
+		images: { clientPath: "images/" },
+		paint: a Paint object,
+		newstop: String of value "same", "inverse", "black" or "white" 
+				 OR object with one or both values {color: #Hex color, opac: number 0-1}
+	}
+ 
+- the Paint object is:
+	Paint {
+		type: String, // one of "none", "solidColor", "linearGradient", "radialGradient"
+		alpha: Number representing opacity (0-100),
+		solidColor: String representing #RRGGBB hex of color,
+		linearGradient: object of interface SVGLinearGradientElement,
+		radialGradient: object of interface SVGRadialGradientElement,
+	}
+
+$.jGraduate.Paint() -> constructs a 'none' color
+$.jGraduate.Paint({copy: o}) -> creates a copy of the paint o
+$.jGraduate.Paint({hex: "#rrggbb"}) -> creates a solid color paint with hex = "#rrggbb"
+$.jGraduate.Paint({linearGradient: o, a: 50}) -> creates a linear gradient paint with opacity=0.5
+$.jGraduate.Paint({radialGradient: o, a: 7}) -> creates a radial gradient paint with opacity=0.07
+$.jGraduate.Paint({hex: "#rrggbb", linearGradient: o}) -> throws an exception?
+
+- picker accepts the following object as input:
+	{
+		okCallback: function to call when Ok is pressed
+		cancelCallback: function to call when Cancel is pressed
+		paint: object describing the paint to display initially, if not set, then default to opaque white
+	}
+
+- okCallback receives a Paint object
+
+ *
+ */
+ 
+(function() {
+ 
+var ns = { svg: 'http://www.w3.org/2000/svg', xlink: 'http://www.w3.org/1999/xlink' };
+if(!window.console) {
+  window.console = new function() {
+    this.log = function(str) {};
+    this.dir = function(str) {};
+  };
+}
+
+$.jGraduate = { 
+	Paint:
+		function(opt) {
+			var options = opt || {};
+			this.alpha = isNaN(options.alpha) ? 100 : options.alpha;
+			// copy paint object
+    		if (options.copy) {
+    			this.type = options.copy.type;
+    			this.alpha = options.copy.alpha;
+				this.solidColor = null;
+				this.linearGradient = null;
+				this.radialGradient = null;
+
+    			switch(this.type) {
+    				case "none":
+    					break;
+    				case "solidColor":
+    					this.solidColor = options.copy.solidColor;
+    					break;
+    				case "linearGradient":
+    					this.linearGradient = options.copy.linearGradient.cloneNode(true);
+    					break;
+    				case "radialGradient":
+    					this.radialGradient = options.copy.radialGradient.cloneNode(true);
+    					break;
+    			}
+    		}
+    		// create linear gradient paint
+    		else if (options.linearGradient) {
+    			this.type = "linearGradient";
+    			this.solidColor = null;
+    			this.radialGradient = null;
+    			this.linearGradient = options.linearGradient.cloneNode(true);
+    		}
+    		// create linear gradient paint
+    		else if (options.radialGradient) {
+    			this.type = "radialGradient";
+    			this.solidColor = null;
+    			this.linearGradient = null;
+    			this.radialGradient = options.radialGradient.cloneNode(true);
+    		}
+    		// create solid color paint
+    		else if (options.solidColor) {
+    			this.type = "solidColor";
+    			this.solidColor = options.solidColor;
+    		}
+    		// create empty paint
+	    	else {
+	    		this.type = "none";
+    			this.solidColor = null;
+    			this.linearGradient = null;
+    			this.radialGradient = null;
+	    	}
+		}
+};
+
+jQuery.fn.jGraduateDefaults = {
+	paint: new $.jGraduate.Paint(),
+	window: {
+		pickerTitle: "Drag markers to pick a paint"
+	},
+	images: {
+		clientPath: "images/"
+	},
+	newstop: 'inverse' // same, inverse, black, white
+};
+
+var isGecko = navigator.userAgent.indexOf('Gecko/') >= 0;
+
+function setAttrs(elem, attrs) {
+	if(isGecko) {
+		for (var aname in attrs) elem.setAttribute(aname, attrs[aname]);
+	} else {
+		for (var aname in attrs) {
+			var val = attrs[aname], prop = elem[aname];
+			if(prop && prop.constructor === 'SVGLength') {
+				prop.baseVal.value = val;
+			} else {
+				elem.setAttribute(aname, val);
+			}
+		}
+	}
+}
+
+function mkElem(name, attrs, newparent) {
+	var elem = document.createElementNS(ns.svg, name);
+	setAttrs(elem, attrs);
+	if(newparent) newparent.appendChild(elem);
+	return elem;
+}
+
+jQuery.fn.jGraduate =
+	function(options) {
+	 	var $arguments = arguments;
+		return this.each( function() {
+			var $this = $(this), $settings = $.extend(true, {}, jQuery.fn.jGraduateDefaults, options),
+				id = $this.attr('id'),
+				idref = '#'+$this.attr('id')+' ';
+			
+            if (!idref)
+            {
+              alert('Container element must have an id attribute to maintain unique id strings for sub-elements.');
+              return;
+            }
+            
+            var okClicked = function() {
+	            switch ( $this.paint.type ) {
+	            	case "radialGradient":
+	            		$this.paint.linearGradient = null;
+	            		break;
+	            	case "linearGradient":
+	            		$this.paint.radialGradient = null;
+	            		break;
+	            	case "solidColor":
+	            		$this.paint.radialGradient = $this.paint.linearGradient = null;
+	            		break;
+	            }
+            	$.isFunction($this.okCallback) && $this.okCallback($this.paint);
+            	$this.hide();
+            },
+            cancelClicked = function() {
+            	$.isFunction($this.cancelCallback) && $this.cancelCallback();
+            	$this.hide();
+            };
+
+            $.extend(true, $this, // public properties, methods, and callbacks
+              {
+              	// make a copy of the incoming paint
+                paint: new $.jGraduate.Paint({copy: $settings.paint}),
+                okCallback: $.isFunction($arguments[1]) && $arguments[1] || null,
+                cancelCallback: $.isFunction($arguments[2]) && $arguments[2] || null
+              });
+
+			var pos = $this.position(),
+				color = null;
+			var $win = $(window);
+
+			if ($this.paint.type == "none") {
+				$this.paint = $.jGraduate.Paint({solidColor: 'ffffff'});
+			}
+			
+            $this.addClass('jGraduate_Picker');
+            $this.html('<ul class="jGraduate_tabs">' +
+            				'<li class="jGraduate_tab_color jGraduate_tab_current" data-type="col">Solid Color</li>' +
+            				'<li class="jGraduate_tab_lingrad" data-type="lg">Linear Gradient</li>' +
+            				'<li class="jGraduate_tab_radgrad" data-type="rg">Radial Gradient</li>' +
+            			'</ul>' +
+            			'<div class="jGraduate_colPick"></div>' +
+            			'<div class="jGraduate_gradPick"></div>' +
+						'<div class="jGraduate_LightBox"></div>' +
+						'<div id="' + id + '_jGraduate_stopPicker" class="jGraduate_stopPicker"></div>'
+            			
+            			
+            			);
+			var colPicker = $(idref + '> .jGraduate_colPick');
+			var gradPicker = $(idref + '> .jGraduate_gradPick');
+			
+            gradPicker.html(
+            	'<div id="' + id + '_jGraduate_Swatch" class="jGraduate_Swatch">' +
+            		'<h2 class="jGraduate_Title">' + $settings.window.pickerTitle + '</h2>' +
+            		'<div id="' + id + '_jGraduate_GradContainer" class="jGraduate_GradContainer"></div>' +
+            		'<div id="' + id + '_jGraduate_StopSlider" class="jGraduate_StopSlider"></div>' +
+            	'</div>' + 
+            	'<div class="jGraduate_Form jGraduate_Points jGraduate_lg_field">' +
+            		'<div class="jGraduate_StopSection">' +
+	            		'<label class="jGraduate_Form_Heading">Begin Point</label>' +
+    	        		'<div class="jGraduate_Form_Section">' +
+        	    			'<label>x:</label>' +
+            				'<input type="text" id="' + id + '_jGraduate_x1" size="3" title="Enter starting x value between 0.0 and 1.0"/>' +
+            				'<label> y:</label>' +
+            				'<input type="text" id="' + id + '_jGraduate_y1" size="3" title="Enter starting y value between 0.0 and 1.0"/>' +
+        	   			'</div>' +
+        	   		'</div>' +
+        	   		'<div class="jGraduate_StopSection">' +
+	            		'<label class="jGraduate_Form_Heading">End Point</label>' +
+    	        		'<div class="jGraduate_Form_Section">' +
+	    	        		'<label>x:</label>' +
+		    	        	'<input type="text" id="' + id + '_jGraduate_x2" size="3" title="Enter ending x value between 0.0 and 1.0"/>' +
+    		    	    	'<label> y:</label>' +
+        		    		'<input type="text" id="' + id + '_jGraduate_y2" size="3" title="Enter ending y value between 0.0 and 1.0"/>' +
+    	    	    	'</div>' +
+    	    	    '</div>' +
+    	       	'</div>' +
+            	'<div class="jGraduate_Form jGraduate_Points jGraduate_rg_field">' +
+					'<div class="jGraduate_StopSection">' +
+						'<label class="jGraduate_Form_Heading">Center Point</label>' +
+						'<div class="jGraduate_Form_Section">' +
+							'<label>x:</label>' +
+							'<input type="text" id="' + id + '_jGraduate_cx" size="3" title="Enter x value between 0.0 and 1.0"/>' +
+							'<label> y:</label>' +
+							'<input type="text" id="' + id + '_jGraduate_cy" size="3" title="Enter y value between 0.0 and 1.0"/>' +
+						'</div>' +
+					'</div>' +
+					'<div class="jGraduate_StopSection">' +
+						'<label class="jGraduate_Form_Heading">Focal Point</label>' +
+						'<div class="jGraduate_Form_Section">' +
+							'<label>Match center: <input type="checkbox" checked="checked" id="' + id + '_jGraduate_match_ctr"/></label><br/>' +
+							'<label>x:</label>' +
+							'<input type="text" id="' + id + '_jGraduate_fx" size="3" title="Enter x value between 0.0 and 1.0"/>' +
+							'<label> y:</label>' +
+							'<input type="text" id="' + id + '_jGraduate_fy" size="3" title="Enter y value between 0.0 and 1.0"/>' +
+						'</div>' +
+					'</div>' +
+    	       	'</div>' +
+				'<div class="jGraduate_StopSection jGraduate_SpreadMethod">' +
+					'<label class="jGraduate_Form_Heading">Spread method</label>' +
+					'<div class="jGraduate_Form_Section">' +
+						'<select class="jGraduate_spreadMethod">' +
+							'<option value=pad selected>Pad</option>' +
+							'<option value=reflect>Reflect</option>' +
+							'<option value=repeat>Repeat</option>' +
+						'</select>' + 
+					'</div>' +
+				'</div>' +
+            	'<div class="jGraduate_Form">' +
+        	   		'<div class="jGraduate_Slider jGraduate_RadiusField jGraduate_rg_field">' +
+						'<label class="prelabel">Radius:</label>' +
+						'<div id="' + id + '_jGraduate_Radius" class="jGraduate_SliderBar jGraduate_Radius" title="Click to set radius">' +
+							'<img id="' + id + '_jGraduate_RadiusArrows" class="jGraduate_RadiusArrows" src="' + $settings.images.clientPath + 'rangearrows2.gif">' +
+						'</div>' +
+						'<label><input type="text" id="' + id + '_jGraduate_RadiusInput" size="3" value="100"/>%</label>' + 
+    	    	    '</div>' +
+        	   		'<div class="jGraduate_Slider jGraduate_EllipField jGraduate_rg_field">' +
+						'<label class="prelabel">Ellip:</label>' +
+						'<div id="' + id + '_jGraduate_Ellip" class="jGraduate_SliderBar jGraduate_Ellip" title="Click to set Ellip">' +
+							'<img id="' + id + '_jGraduate_EllipArrows" class="jGraduate_EllipArrows" src="' + $settings.images.clientPath + 'rangearrows2.gif">' +
+						'</div>' +
+						'<label><input type="text" id="' + id + '_jGraduate_EllipInput" size="3" value="0"/>%</label>' + 
+    	    	    '</div>' +
+        	   		'<div class="jGraduate_Slider jGraduate_AngleField jGraduate_rg_field">' +
+						'<label class="prelabel">Angle:</label>' +
+						'<div id="' + id + '_jGraduate_Angle" class="jGraduate_SliderBar jGraduate_Angle" title="Click to set Angle">' +
+							'<img id="' + id + '_jGraduate_AngleArrows" class="jGraduate_AngleArrows" src="' + $settings.images.clientPath + 'rangearrows2.gif">' +
+						'</div>' +
+						'<label><input type="text" id="' + id + '_jGraduate_AngleInput" size="3" value="0"/>º&nbsp;</label>' + 
+    	    	    '</div>' +
+        	   		'<div class="jGraduate_Slider jGraduate_OpacField">' +
+						'<label class="prelabel">Opac:</label>' +
+						'<div id="' + id + '_jGraduate_Opac" class="jGraduate_SliderBar jGraduate_Opac" title="Click to set Opac">' +
+							'<img id="' + id + '_jGraduate_OpacArrows" class="jGraduate_OpacArrows" src="' + $settings.images.clientPath + 'rangearrows2.gif">' +
+						'</div>' +
+						'<label><input type="text" id="' + id + '_jGraduate_OpacInput" size="3" value="100"/>%</label>' + 
+    	    	    '</div>' +
+    	       	'</div>' +
+        	    '<div class="jGraduate_OkCancel">' +
+            		'<input type="button" id="' + id + '_jGraduate_Ok" class="jGraduate_Ok" value="OK"/>' +
+            		'<input type="button" id="' + id + '_jGraduate_Cancel" class="jGraduate_Cancel" value="Cancel"/>' +
+            	'</div>');
+            	
+			// --------------
+            // Set up all the SVG elements (the gradient, stops and rectangle)
+            var MAX = 256, MARGINX = 0, MARGINY = 0, STOP_RADIUS = 15/2,
+            	SIZEX = MAX - 2*MARGINX, SIZEY = MAX - 2*MARGINY;
+            	
+            var curType, curGradient, previewRect;	
+            
+			var attr_input = {};
+            
+            var SLIDERW = 145;
+            $('.jGraduate_SliderBar').width(SLIDERW);
+			
+			var container = $('#' + id+'_jGraduate_GradContainer')[0];
+			
+			var svg = mkElem('svg', {
+				id: id + '_jgraduate_svg',
+				width: MAX,
+				height: MAX,
+				xmlns: ns.svg
+			}, container);
+			
+			// if we are sent a gradient, import it 
+			
+			curType = curType || $this.paint.type;
+			
+			var grad = curGradient = $this.paint[curType];
+			
+			var gradalpha = $this.paint.alpha;
+			
+			var isSolid = curType === 'solidColor';
+			
+			// Make any missing gradients
+			switch ( curType ) {
+				case "solidColor":
+					// fall through
+				case "linearGradient":
+					if(!isSolid) {
+						curGradient.id = id+'_lg_jgraduate_grad';
+						grad = curGradient = svg.appendChild(curGradient);//.cloneNode(true));
+					}
+					mkElem('radialGradient', {
+						id: id + '_rg_jgraduate_grad'
+					}, svg);
+					if(curType === "linearGradient") break;
+				case "radialGradient":
+					if(!isSolid) {
+						curGradient.id = id+'_rg_jgraduate_grad';
+						grad = curGradient = svg.appendChild(curGradient);//.cloneNode(true));
+					}
+					mkElem('linearGradient', {
+						id: id + '_lg_jgraduate_grad'
+					}, svg);
+			}
+			
+			if(isSolid) {
+				grad = curGradient = $('#' + id + '_lg_jgraduate_grad')[0];
+				var color = $this.paint[curType];
+				mkStop(0, '#' + color, 1);
+				
+				var type = typeof $settings.newstop;
+				
+				if(type === 'string') {
+					switch ( $settings.newstop ) {
+						case 'same':
+							mkStop(1, '#' + color, 1);				
+							break;
+
+						case 'inverse':
+							// Invert current color for second stop
+							var inverted = '';
+							
+							for(var i = 0; i < 6; i += 2) {
+								var ch = color.substr(i, 2);
+								var inv = (255 - parseInt(color.substr(i, 2), 16)).toString(16);
+								if(inv.length < 2) inv = 0 + inv;
+								inverted += inv;
+							}
+							mkStop(1, '#' + inverted, 1);
+							break;
+						
+						case 'white':
+							mkStop(1, '#ffffff', 1);
+							break;
+	
+						case 'black':
+							mkStop(1, '#000000', 1);
+							break;
+					}
+				} else if(type === 'object'){
+					var opac = ('opac' in $settings.newstop) ? $settings.newstop.opac : 1;
+					mkStop(1, ($settings.newstop.color || '#' + color), opac);
+				}
+			}
+
+			
+			var x1 = parseFloat(grad.getAttribute('x1')||0.0),
+				y1 = parseFloat(grad.getAttribute('y1')||0.0),
+				x2 = parseFloat(grad.getAttribute('x2')||1.0),
+				y2 = parseFloat(grad.getAttribute('y2')||0.0);
+				
+			var cx = parseFloat(grad.getAttribute('cx')||0.5),
+				cy = parseFloat(grad.getAttribute('cy')||0.5),
+				fx = parseFloat(grad.getAttribute('fx')|| cx),
+				fy = parseFloat(grad.getAttribute('fy')|| cy);
+
+			
+			var previewRect = mkElem('rect', {
+				id: id + '_jgraduate_rect',
+				x: MARGINX,
+				y: MARGINY,
+				width: SIZEX,
+				height: SIZEY,
+				fill: 'url(#'+id+'_jgraduate_grad)',
+				'fill-opacity': gradalpha/100
+			}, svg);
+			
+			// stop visuals created here
+			var beginCoord = $('<div/>').attr({
+				'class': 'grad_coord jGraduate_lg_field',
+				title: 'Begin Stop'
+			}).text(1).css({
+				top: y1 * MAX,
+				left: x1 * MAX
+			}).data('coord', 'start').appendTo(container);
+			
+			var endCoord = beginCoord.clone().text(2).css({
+				top: y2 * MAX,
+				left: x2 * MAX
+			}).attr('title', 'End stop').data('coord', 'end').appendTo(container);
+		
+			var centerCoord = $('<div/>').attr({
+				'class': 'grad_coord jGraduate_rg_field',
+				title: 'Center stop'
+			}).text('C').css({
+				top: cy * MAX,
+				left: cx * MAX
+			}).data('coord', 'center').appendTo(container);
+			
+			var focusCoord = centerCoord.clone().text('F').css({
+				top: fy * MAX,
+				left: fx * MAX,
+				display: 'none'
+			}).attr('title', 'Focus point').data('coord', 'focus').appendTo(container);
+			
+			focusCoord[0].id = id + '_jGraduate_focusCoord';
+			
+			var coords = $(idref + ' .grad_coord');
+			
+// 			$(container).hover(function() {
+// 				coords.animate({
+// 					opacity: 1
+// 				}, 500);
+// 			}, function() {
+// 				coords.animate({
+// 					opacity: .2
+// 				}, 500);				
+// 			});
+			
+			$.each(['x1', 'y1', 'x2', 'y2', 'cx', 'cy', 'fx', 'fy'], function(i, attr) {
+				var attrval = curGradient.getAttribute(attr);
+				
+				var isRadial = isNaN(attr[1]);
+				
+				if(!attrval) {
+					// Set defaults
+					if(isRadial) {
+						// For radial points
+						attrval = "0.5";
+					} else {
+						// Only x2 is 1
+						attrval = attr === 'x2' ? "1.0" : "0.0";
+					}
+				}
+
+				attr_input[attr] = $('#'+id+'_jGraduate_' + attr)
+					.val(attrval)
+					.change(function() {
+						// TODO: Support values < 0 and > 1 (zoomable preview?)
+						if (isNaN(parseFloat(this.value)) || this.value < 0) {
+							this.value = 0.0; 
+						} else if(this.value > 1) {
+							this.value = 1.0;
+						}
+						
+						if(!(attr[0] === 'f' && !showFocus)) {
+							if(isRadial && curType === 'radialGradient' || !isRadial && curType === 'linearGradient') {
+								curGradient.setAttribute(attr, this.value);
+							}
+						}
+						
+						if(isRadial) {
+							var $elem = attr[0] === "c" ? centerCoord : focusCoord;
+						} else {
+							var $elem = attr[1] === "1" ? beginCoord : endCoord;						
+						}
+						
+						var cssName = attr.indexOf('x') >= 0 ? 'left' : 'top';
+						
+						$elem.css(cssName, this.value * MAX);
+				}).change();
+			});
+
+
+			
+			function mkStop(n, color, opac, sel, stop_elem) {
+				var stop = stop_elem || mkElem('stop',{'stop-color':color,'stop-opacity':opac,offset:n}, curGradient);
+				if(stop_elem) {
+					color = stop_elem.getAttribute('stop-color');
+					opac = stop_elem.getAttribute('stop-opacity');
+					n = stop_elem.getAttribute('offset');
+				} else {
+					curGradient.appendChild(stop);
+				}
+				if(opac === null) opac = 1;
+				
+				var picker_d = 'M-6.2,0.9c3.6-4,6.7-4.3,6.7-12.4c-0.2,7.9,3.1,8.8,6.5,12.4c3.5,3.8,2.9,9.6,0,12.3c-3.1,2.8-10.4,2.7-13.2,0C-9.6,9.9-9.4,4.4-6.2,0.9z';
+				
+				var pathbg = mkElem('path',{
+					d: picker_d,
+					fill: 'url(#jGraduate_trans)',
+					transform: 'translate(' + (10 + n * MAX) + ', 26)'
+				}, stopGroup);
+				
+				var path = mkElem('path',{
+					d: picker_d,
+					fill: color,
+					'fill-opacity': opac,
+					transform: 'translate(' + (10 + n * MAX) + ', 26)',
+					stroke: '#000',
+					'stroke-width': 1.5
+				}, stopGroup);
+
+				$(path).mousedown(function(e) {
+					selectStop(this);
+					drag = cur_stop;
+					$win.mousemove(dragColor).mouseup(remDrags);
+					stop_offset = stopMakerDiv.offset();
+					e.preventDefault();
+					return false;
+				}).data('stop', stop).data('bg', pathbg).dblclick(function() {
+					$('div.jGraduate_LightBox').show();			
+					var colorhandle = this;
+					var stopOpacity = +stop.getAttribute('stop-opacity') || 1;
+					var stopColor = stop.getAttribute('stop-color') || 1;
+					var thisAlpha = (parseFloat(stopOpacity)*255).toString(16);
+					while (thisAlpha.length < 2) { thisAlpha = "0" + thisAlpha; }
+					color = stopColor.substr(1) + thisAlpha;
+					$('#'+id+'_jGraduate_stopPicker').css({'left': 100, 'bottom': 15}).jPicker({
+							window: { title: "Pick the start color and opacity for the gradient" },
+							images: { clientPath: $settings.images.clientPath },
+							color: { active: color, alphaSupport: true }
+						}, function(color, arg2){
+							stopColor = color.val('hex') ? ('#'+color.val('hex')) : "none";
+							stopOpacity = color.val('a') !== null ? color.val('a')/256 : 1;
+							colorhandle.setAttribute('fill', stopColor);
+							colorhandle.setAttribute('fill-opacity', stopOpacity);
+							stop.setAttribute('stop-color', stopColor);
+							stop.setAttribute('stop-opacity', stopOpacity);
+							$('div.jGraduate_LightBox').hide();
+							$('#'+id+'_jGraduate_stopPicker').hide();
+						}, null, function() {
+							$('div.jGraduate_LightBox').hide();
+							$('#'+id+'_jGraduate_stopPicker').hide();
+						});
+				});
+				
+				$(curGradient).find('stop').each(function() {
+					var cur_s = $(this);
+					if(+this.getAttribute('offset') > n) {
+						if(!color) {
+							var newcolor = this.getAttribute('stop-color');
+							var newopac = this.getAttribute('stop-opacity');
+							stop.setAttribute('stop-color', newcolor);
+							path.setAttribute('fill', newcolor);
+							stop.setAttribute('stop-opacity', newopac === null ? 1 : newopac);
+							path.setAttribute('fill-opacity', newopac === null ? 1 : newopac);
+						}
+						cur_s.before(stop);
+						return false;
+					}
+				});
+				if(sel) selectStop(path);
+				return stop;
+			}
+			
+			function remStop() {
+				delStop.setAttribute('display', 'none');
+				var path = $(cur_stop);
+				var stop = path.data('stop');
+				var bg = path.data('bg');
+				$([cur_stop, stop, bg]).remove();
+			}
+			
+				
+			var stops, stopGroup;
+			
+			var stopMakerDiv = $('#' + id + '_jGraduate_StopSlider');
+
+			var cur_stop, stopGroup, stopMakerSVG, drag;
+			
+			var delStop = mkElem('path',{
+				d:'m9.75,-6l-19.5,19.5m0,-19.5l19.5,19.5',
+				fill:'none',
+				stroke:'#D00',
+				'stroke-width':5,
+				display:'none'
+			}, stopMakerSVG);
+
+			
+			function selectStop(item) {
+				if(cur_stop) cur_stop.setAttribute('stroke', '#000');
+				item.setAttribute('stroke', 'blue');
+				cur_stop = item;
+				cur_stop.parentNode.appendChild(cur_stop);
+			// 	stops = $('stop');
+			// 	opac_select.val(cur_stop.attr('fill-opacity') || 1);
+			// 	root.append(delStop);
+			}
+			
+			var stop_offset;
+			
+			function remDrags() {
+				$win.unbind('mousemove', dragColor);
+				if(delStop.getAttribute('display') !== 'none') {
+					remStop();
+				}
+				drag = null;
+			}
+			
+			var scale_x = 1, scale_y = 1, angle = 0;
+			var c_x = cx;
+			var c_y = cy;
+			
+			function xform() {
+				var rot = angle?'rotate(' + angle + ',' + c_x + ',' + c_y + ') ':'';
+				if(scale_x === 1 && scale_y === 1) {
+					curGradient.removeAttribute('gradientTransform');
+// 					$('#ang').addClass('dis');
+				} else {
+					var x = -c_x * (scale_x-1);
+					var y = -c_y * (scale_y-1);
+					curGradient.setAttribute('gradientTransform', rot + 'translate(' + x + ',' + y + ') scale(' + scale_x + ',' + scale_y + ')');
+// 					$('#ang').removeClass('dis');
+				}
+			}
+			
+			function dragColor(evt) {
+
+				var x = evt.pageX - stop_offset.left;
+				var y = evt.pageY - stop_offset.top;
+				x = x < 10 ? 10 : x > MAX + 10 ? MAX + 10: x;
+
+				var xf_str = 'translate(' + x + ', 26)';
+					if(y < -60 || y > 130) {
+						delStop.setAttribute('display', 'block');
+						delStop.setAttribute('transform', xf_str);
+					} else {
+						delStop.setAttribute('display', 'none');
+					}
+				
+				drag.setAttribute('transform', xf_str);
+				$.data(drag, 'bg').setAttribute('transform', xf_str);
+				var stop = $.data(drag, 'stop');
+				var s_x = (x - 10) / MAX;
+				
+				stop.setAttribute('offset', s_x);
+				var last = 0;
+				
+				$(curGradient).find('stop').each(function(i) {
+					var cur = this.getAttribute('offset');
+					var t = $(this);
+					if(cur < last) {
+						t.prev().before(t);
+						stops = $(curGradient).find('stop');
+					}
+					last = cur;
+				});
+				
+			}
+			
+			stopMakerSVG = mkElem('svg', {
+				width: '100%',
+				height: 45
+			}, stopMakerDiv[0]);
+			
+			var trans_pattern = mkElem('pattern', {
+				width: 16,
+				height: 16,
+				patternUnits: 'userSpaceOnUse',
+				id: 'jGraduate_trans'
+			}, stopMakerSVG);
+			
+			var trans_img = mkElem('image', {
+				width: 16,
+				height: 16
+			}, trans_pattern);
+			
+			var bg_image = $settings.images.clientPath + 'map-opacity.png';
+
+			trans_img.setAttributeNS(ns.xlink, 'xlink:href', bg_image);
+			
+			$(stopMakerSVG).on("click touchstart", function(evt) {
+				stop_offset = stopMakerDiv.offset();
+				var target = evt.target;
+				if(target.tagName === 'path') return;
+				var x = evt.pageX - stop_offset.left - 8;
+				x = x < 10 ? 10 : x > MAX + 10 ? MAX + 10: x;
+				mkStop(x / MAX, 0, 0, true);
+				evt.stopPropagation();
+			});
+			
+			$(stopMakerSVG).mouseover(function() {
+				stopMakerSVG.appendChild(delStop);
+			});
+			
+			stopGroup = mkElem('g', {}, stopMakerSVG);
+			
+			mkElem('line', {
+				x1: 10,
+				y1: 15,
+				x2: MAX + 10,
+				y2: 15,
+				'stroke-width': 2,
+				stroke: '#000'
+			}, stopMakerSVG);
+			
+			
+			var spreadMethodOpt = gradPicker.find('.jGraduate_spreadMethod').change(function() {
+				curGradient.setAttribute('spreadMethod', $(this).val());
+			});
+			
+		
+			// handle dragging the stop around the swatch
+			var draggingCoord = null;
+			
+			var onCoordDrag = function(evt) {
+				var x = evt.pageX - offset.left;
+				var y = evt.pageY - offset.top;
+
+				// clamp stop to the swatch
+				x = x < 0 ? 0 : x > MAX ? MAX : x;
+				y = y < 0 ? 0 : y > MAX ? MAX : y;
+				
+				draggingCoord.css('left', x).css('top', y);
+
+				// calculate stop offset            		
+				var fracx = x / SIZEX;
+				var fracy = y / SIZEY;
+				
+				var type = draggingCoord.data('coord');
+				var grad = curGradient;
+				
+				switch ( type ) {
+					case 'start':
+						attr_input.x1.val(fracx);
+						attr_input.y1.val(fracy);
+						grad.setAttribute('x1', fracx);
+						grad.setAttribute('y1', fracy);
+						break;
+					case 'end':
+						attr_input.x2.val(fracx);
+						attr_input.y2.val(fracy);
+						grad.setAttribute('x2', fracx);
+						grad.setAttribute('y2', fracy);
+						break;
+					case 'center':
+						attr_input.cx.val(fracx);
+						attr_input.cy.val(fracy);
+						grad.setAttribute('cx', fracx);
+						grad.setAttribute('cy', fracy);
+						c_x = fracx;
+						c_y = fracy;
+						xform();
+						break;
+					case 'focus':
+						attr_input.fx.val(fracx);
+						attr_input.fy.val(fracy);
+						grad.setAttribute('fx', fracx);
+						grad.setAttribute('fy', fracy);
+						xform();
+				}
+				
+				evt.preventDefault();
+			}
+			
+			var onCoordUp = function() {
+				draggingCoord = null;
+				$win.unbind('mousemove', onCoordDrag).unbind('mouseup', onCoordUp);
+			}
+			
+			// Linear gradient
+// 			(function() {
+
+			
+			stops = curGradient.getElementsByTagNameNS(ns.svg, 'stop');
+
+			// if there are not at least two stops, then 
+			if (numstops < 2) {
+				while (numstops < 2) {
+					curGradient.appendChild( document.createElementNS(ns.svg, 'stop') );
+					++numstops;
+				}
+				stops = curGradient.getElementsByTagNameNS(ns.svg, 'stop');
+			}
+			
+			var numstops = stops.length;				
+			for(var i = 0; i < numstops; i++) {
+				mkStop(0, 0, 0, 0, stops[i]);
+			}
+			
+			spreadMethodOpt.val(curGradient.getAttribute('spreadMethod') || 'pad');
+
+			var offset;
+			
+			// No match, so show focus point
+			var showFocus = false; 
+			
+			previewRect.setAttribute('fill-opacity', gradalpha/100);
+
+			
+			$('#' + id + ' div.grad_coord').mousedown(function(evt) {
+				evt.preventDefault();
+				draggingCoord = $(this);
+				var s_pos = draggingCoord.offset();
+				offset = draggingCoord.parent().offset();
+				$win.mousemove(onCoordDrag).mouseup(onCoordUp);
+			});
+			
+			// bind GUI elements
+			$('#'+id+'_jGraduate_Ok').bind('click touchstart', function() {
+				$this.paint.type = curType;
+				$this.paint[curType] = curGradient.cloneNode(true);;
+				$this.paint.solidColor = null;
+				okClicked();
+			});
+			$('#'+id+'_jGraduate_Cancel').bind('click touchstart', function(paint) {
+				cancelClicked();
+			});
+
+			if(curType === 'radialGradient') {
+				if(showFocus) {
+					focusCoord.show();				
+				} else {
+					focusCoord.hide();
+					attr_input.fx.val("");
+					attr_input.fy.val("");
+				}
+			}
+
+			$("#" + id + "_jGraduate_match_ctr")[0].checked = !showFocus;
+			
+			var lastfx, lastfy;
+			
+			$("#" + id + "_jGraduate_match_ctr").change(function() {
+				showFocus = !this.checked;
+				focusCoord.toggle(showFocus);
+				attr_input.fx.val('');
+				attr_input.fy.val('');
+				var grad = curGradient;
+				if(!showFocus) {
+					lastfx = grad.getAttribute('fx');
+					lastfy = grad.getAttribute('fy');
+					grad.removeAttribute('fx');
+					grad.removeAttribute('fy');
+				} else {
+					var fx = lastfx || .5;
+					var fy = lastfy || .5;
+					grad.setAttribute('fx', fx);
+					grad.setAttribute('fy', fy);
+					attr_input.fx.val(fx);
+					attr_input.fy.val(fy);
+				}
+			});
+			
+			var stops = curGradient.getElementsByTagNameNS(ns.svg, 'stop');
+			var numstops = stops.length;
+			// if there are not at least two stops, then 
+			if (numstops < 2) {
+				while (numstops < 2) {
+					curGradient.appendChild( document.createElementNS(ns.svg, 'stop') );
+					++numstops;
+				}
+				stops = curGradient.getElementsByTagNameNS(ns.svg, 'stop');
+			}
+			
+			var slider;
+			
+			var setSlider = function(e) {
+				var offset = slider.offset;
+				var div = slider.parent;
+				var x = (e.pageX - offset.left - parseInt(div.css('border-left-width')));
+				if (x > SLIDERW) x = SLIDERW;
+				if (x <= 0) x = 0;
+				var posx = x - 5;
+				x /= SLIDERW;
+				
+				switch ( slider.type ) {
+					case 'radius':
+						x = Math.pow(x * 2, 2.5);
+						if(x > .98 && x < 1.02) x = 1;
+						if (x <= .01) x = .01;
+						curGradient.setAttribute('r', x);
+						break;
+					case 'opacity':
+						$this.paint.alpha = parseInt(x*100);
+						previewRect.setAttribute('fill-opacity', x);
+						break;
+					case 'ellip':
+						scale_x = 1, scale_y = 1;
+						if(x < .5) {
+							x /= .5; // 0.001
+							scale_x = x <= 0 ? .01 : x;
+						} else if(x > .5) {
+							x /= .5; // 2
+							x = 2 - x;
+							scale_y = x <= 0 ? .01 : x;
+						} 
+						xform();
+						x -= 1;
+						if(scale_y === x + 1) {
+							x = Math.abs(x);
+						}
+						break;
+					case 'angle':
+						x = x - .5;
+						angle = x *= 180;
+						xform();
+						x /= 100;
+						break;
+				}
+				slider.elem.css({'margin-left':posx});
+				x = Math.round(x*100);
+				slider.input.val(x);
+			};
+			
+			var ellip_val = 0, angle_val = 0;
+			
+			if(curType === 'radialGradient') {
+				var tlist = curGradient.gradientTransform.baseVal;
+				if(tlist.numberOfItems === 2) {
+					var t = tlist.getItem(0);
+					var s = tlist.getItem(1);
+					if(t.type === 2 && s.type === 3) {
+						var m = s.matrix;
+						if(m.a !== 1) {
+							ellip_val = Math.round(-(1 - m.a) * 100);	
+						} else if(m.d !== 1) {
+							ellip_val = Math.round((1 - m.d) * 100);
+						} 
+					}
+				} else if(tlist.numberOfItems === 3) {
+					// Assume [R][T][S]
+					var r = tlist.getItem(0);
+					var t = tlist.getItem(1);
+					var s = tlist.getItem(2);
+					
+					if(r.type === 4 
+						&& t.type === 2 
+						&& s.type === 3) {
+
+						angle_val = Math.round(r.angle);
+						var m = s.matrix;
+						if(m.a !== 1) {
+							ellip_val = Math.round(-(1 - m.a) * 100);	
+						} else if(m.d !== 1) {
+							ellip_val = Math.round((1 - m.d) * 100);
+						} 
+						
+					}
+				}
+			}
+			
+			var sliders = {
+				radius: {
+					handle: '#' + id + '_jGraduate_RadiusArrows',
+					input: '#' + id + '_jGraduate_RadiusInput',
+					val: (curGradient.getAttribute('r') || .5) * 100
+				},
+				opacity: {
+					handle: '#' + id + '_jGraduate_OpacArrows',
+					input: '#' + id + '_jGraduate_OpacInput',
+					val: $this.paint.alpha || 100
+				},
+				ellip: {
+					handle: '#' + id + '_jGraduate_EllipArrows',
+					input: '#' + id + '_jGraduate_EllipInput',
+					val: ellip_val
+				},
+				angle: {
+					handle: '#' + id + '_jGraduate_AngleArrows',
+					input: '#' + id + '_jGraduate_AngleInput',
+					val: angle_val
+				}
+			}
+			
+			$.each(sliders, function(type, data) {
+				var handle = $(data.handle);
+				handle.mousedown(function(evt) {
+					var parent = handle.parent();
+					slider = {
+						type: type,
+						elem: handle,
+						input: $(data.input),
+						parent: parent,
+						offset: parent.offset()
+					};
+					$win.mousemove(dragSlider).mouseup(stopSlider);
+					evt.preventDefault();
+				});
+				
+				$(data.input).val(data.val).change(function() {
+					var val = +this.value;
+					var xpos = 0;
+					var isRad = curType === 'radialGradient';
+					switch ( type ) {
+						case 'radius':
+							if(isRad) curGradient.setAttribute('r', val / 100);
+							xpos = (Math.pow(val / 100, 1 / 2.5) / 2) * SLIDERW;
+							break;
+						
+						case 'opacity':
+							$this.paint.alpha = val;
+							previewRect.setAttribute('fill-opacity', val / 100);
+							xpos = val * (SLIDERW / 100);
+							break;
+							
+						case 'ellip':
+							scale_x = scale_y = 1;
+							if(val === 0) {
+								xpos = SLIDERW * .5;
+								break;
+							}
+							if(val > 99.5) val = 99.5;
+							if(val > 0) {
+								scale_y = 1 - (val / 100);
+							} else {
+								scale_x = - (val / 100) - 1;
+							}
+
+							xpos = SLIDERW * ((val + 100) / 2) / 100;
+							if(isRad) xform();
+							break;
+						
+						case 'angle':
+							angle = val;
+							xpos = angle / 180;
+							xpos += .5;
+							xpos *= SLIDERW;
+							if(isRad) xform();
+					}
+					if(xpos > SLIDERW) {
+						xpos = SLIDERW;
+					} else if(xpos < 0) {
+						xpos = 0;
+					}
+					handle.css({'margin-left': xpos - 5});
+				}).change();
+			});
+			
+			var dragSlider = function(evt) {
+				setSlider(evt);
+				evt.preventDefault();
+			};
+			
+			var stopSlider = function(evt) {
+				$win.unbind('mousemove', dragSlider).unbind('mouseup', stopSlider);
+				slider = null;
+			};
+			
+			
+			// --------------
+			var thisAlpha = ($this.paint.alpha*255/100).toString(16);
+			while (thisAlpha.length < 2) { thisAlpha = "0" + thisAlpha; }
+			thisAlpha = thisAlpha.split(".")[0];
+			color = $this.paint.solidColor == "none" ? "" : $this.paint.solidColor + thisAlpha;
+			
+			if(!isSolid) {
+				color = stops[0].getAttribute('stop-color');
+			}
+			
+			// This should be done somewhere else, probably
+			$.extend($.fn.jPicker.defaults.window, {
+				alphaSupport: true, effects: {type: 'show',speed: 0}
+			});
+			
+			colPicker.jPicker(
+				{
+					window: { title: $settings.window.pickerTitle },
+					images: { clientPath: $settings.images.clientPath },
+					color: { active: color, alphaSupport: true }
+				},
+				function(color) {
+					$this.paint.type = "solidColor";
+					$this.paint.alpha = color.val('ahex') ? Math.round((color.val('a') / 255) * 100) : 100;
+					$this.paint.solidColor = color.val('hex') ? color.val('hex') : "none";
+					$this.paint.radialGradient = null;
+					okClicked(); 
+				},
+				null,
+				function(){ cancelClicked(); }
+				);
+
+			
+			var tabs = $(idref + ' .jGraduate_tabs li');
+			tabs.on("click touchstart", function() {
+				tabs.removeClass('jGraduate_tab_current');
+				$(this).addClass('jGraduate_tab_current');
+				$(idref + " > div").hide();
+				var type = $(this).attr('data-type');
+				var container = $(idref + ' .jGraduate_gradPick').show();
+				if(type === 'rg' || type === 'lg') {
+					// Show/hide appropriate fields
+					$('.jGraduate_' + type + '_field').show();
+					$('.jGraduate_' + (type === 'lg' ? 'rg' : 'lg') + '_field').hide();
+					
+					$('#' + id + '_jgraduate_rect')[0].setAttribute('fill', 'url(#' + id + '_' + type + '_jgraduate_grad)');
+					
+					// Copy stops
+					
+					curType = type === 'lg' ? 'linearGradient' : 'radialGradient';
+					
+					$('#' + id + '_jGraduate_OpacInput').val($this.paint.alpha).change();
+					
+					var newGrad = $('#' + id + '_' + type + '_jgraduate_grad')[0];
+					
+					if(curGradient !== newGrad) {
+						var cur_stops = $(curGradient).find('stop');	
+						$(newGrad).empty().append(cur_stops);
+						curGradient = newGrad;
+						var sm = spreadMethodOpt.val();
+						curGradient.setAttribute('spreadMethod', sm);
+					}
+					showFocus = type === 'rg' && curGradient.getAttribute('fx') != null && !(cx == fx && cy == fy);
+					$('#' + id + '_jGraduate_focusCoord').toggle(showFocus);
+					if(showFocus) {
+						$('#' + id + '_jGraduate_match_ctr')[0].checked = false;
+					}
+				} else {
+					$(idref + ' .jGraduate_gradPick').hide();
+					$(idref + ' .jGraduate_colPick').show();
+				}
+			});
+			$(idref + " > div").hide();
+			tabs.removeClass('jGraduate_tab_current');
+			var tab;
+			switch ( $this.paint.type ) {
+				case 'linearGradient':
+					tab = $(idref + ' .jGraduate_tab_lingrad');
+					break;
+				case 'radialGradient':
+					tab = $(idref + ' .jGraduate_tab_radgrad');
+					break;
+				default:
+					tab = $(idref + ' .jGraduate_tab_color');
+					break;
+			}
+			$this.show();
+			
+			// jPicker will try to show after a 0ms timeout, so need to fire this after that
+			setTimeout(function() {
+				tab.addClass('jGraduate_tab_current').click();	
+			}, 10);
+		});
+	};
+})();
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/jgraduate/jquery.jgraduate.min.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/jgraduate/jquery.jgraduate.min.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/jgraduate/jquery.jgraduate.min.js	(revision 29468)
@@ -0,0 +1,37 @@
+﻿(function(){function r(i,z,t){i=document.createElementNS(A.svg,i);if(Ba)for(var B in z)i.setAttribute(B,z[B]);else for(B in z){var W=z[B],w=i[B];if(w&&w.constructor==="SVGLength")w.baseVal.value=W;else i.setAttribute(B,W)}t&&t.appendChild(i);return i}var A={svg:"http://www.w3.org/2000/svg",xlink:"http://www.w3.org/1999/xlink"};if(!window.console)window.console=new function(){this.log=function(){};this.dir=function(){}};$.jGraduate={Paint:function(i){i=i||{};this.alpha=isNaN(i.alpha)?100:i.alpha;if(i.copy){this.type=
+i.copy.type;this.alpha=i.copy.alpha;this.radialGradient=this.linearGradient=this.solidColor=null;switch(this.type){case "solidColor":this.solidColor=i.copy.solidColor;break;case "linearGradient":this.linearGradient=i.copy.linearGradient.cloneNode(true);break;case "radialGradient":this.radialGradient=i.copy.radialGradient.cloneNode(true)}}else if(i.linearGradient){this.type="linearGradient";this.radialGradient=this.solidColor=null;this.linearGradient=i.linearGradient.cloneNode(true)}else if(i.radialGradient){this.type=
+"radialGradient";this.linearGradient=this.solidColor=null;this.radialGradient=i.radialGradient.cloneNode(true)}else if(i.solidColor){this.type="solidColor";this.solidColor=i.solidColor}else{this.type="none";this.radialGradient=this.linearGradient=this.solidColor=null}}};jQuery.fn.jGraduateDefaults={paint:new $.jGraduate.Paint,window:{pickerTitle:"Drag markers to pick a paint"},images:{clientPath:"images/"},newstop:"inverse"};var Ba=navigator.userAgent.indexOf("Gecko/")>=0;jQuery.fn.jGraduate=function(i){var z=
+arguments;return this.each(function(){function t(c,a,d,h,f){var l=f||r("stop",{"stop-color":a,"stop-opacity":d,offset:c},g);if(f){a=f.getAttribute("stop-color");d=f.getAttribute("stop-opacity");c=f.getAttribute("offset")}else g.appendChild(l);if(d===null)d=1;f=r("path",{d:"M-6.2,0.9c3.6-4,6.7-4.3,6.7-12.4c-0.2,7.9,3.1,8.8,6.5,12.4c3.5,3.8,2.9,9.6,0,12.3c-3.1,2.8-10.4,2.7-13.2,0C-9.6,9.9-9.4,4.4-6.2,0.9z",fill:"url(#jGraduate_trans)",transform:"translate("+(10+c*j)+", 26)"},fa);var X=r("path",{d:"M-6.2,0.9c3.6-4,6.7-4.3,6.7-12.4c-0.2,7.9,3.1,8.8,6.5,12.4c3.5,3.8,2.9,9.6,0,12.3c-3.1,2.8-10.4,2.7-13.2,0C-9.6,9.9-9.4,4.4-6.2,0.9z",
+fill:a,"fill-opacity":d,transform:"translate("+(10+c*j)+", 26)",stroke:"#000","stroke-width":1.5},fa);$(X).mousedown(function(M){B(this);R=F;N.mousemove(la).mouseup(W);S=ga.offset();M.preventDefault();return false}).data("stop",l).data("bg",f).dblclick(function(){$("div.jGraduate_LightBox").show();for(var M=this,I=+l.getAttribute("stop-opacity")||1,C=l.getAttribute("stop-color")||1,Y=(parseFloat(I)*255).toString(16);Y.length<2;)Y="0"+Y;a=C.substr(1)+Y;$("#"+b+"_jGraduate_stopPicker").css({left:100,
+bottom:15}).jPicker({window:{title:"Pick the start color and opacity for the gradient"},images:{clientPath:o.images.clientPath},color:{active:a,alphaSupport:true}},function(Z){C=Z.val("hex")?"#"+Z.val("hex"):"none";I=Z.val("a")!==null?Z.val("a")/256:1;M.setAttribute("fill",C);M.setAttribute("fill-opacity",I);l.setAttribute("stop-color",C);l.setAttribute("stop-opacity",I);$("div.jGraduate_LightBox").hide();$("#"+b+"_jGraduate_stopPicker").hide()},null,function(){$("div.jGraduate_LightBox").hide();
+$("#"+b+"_jGraduate_stopPicker").hide()})});$(g).find("stop").each(function(){var M=$(this);if(+this.getAttribute("offset")>c){if(!a){var I=this.getAttribute("stop-color"),C=this.getAttribute("stop-opacity");l.setAttribute("stop-color",I);X.setAttribute("fill",I);l.setAttribute("stop-opacity",C===null?1:C);X.setAttribute("fill-opacity",C===null?1:C)}M.before(l);return false}});h&&B(X);return l}function B(c){F&&F.setAttribute("stroke","#000");c.setAttribute("stroke","blue");F=c;F.parentNode.appendChild(F)}
+function W(){N.unbind("mousemove",la);if(O.getAttribute("display")!=="none"){O.setAttribute("display","none");var c=$(F),a=c.data("stop");c=c.data("bg");$([F,a,c]).remove()}R=null}function w(){var c=T?"rotate("+T+","+ha+","+ia+") ":"";J===1&&G===1?g.removeAttribute("gradientTransform"):g.setAttribute("gradientTransform",c+"translate("+-ha*(J-1)+","+-ia*(G-1)+") scale("+J+","+G+")")}function la(c){var a=c.pageX-S.left;c=c.pageY-S.top;a=a<10?10:a>j+10?j+10:a;var d="translate("+a+", 26)";if(c<-60||c>
+130){O.setAttribute("display","block");O.setAttribute("transform",d)}else O.setAttribute("display","none");R.setAttribute("transform",d);$.data(R,"bg").setAttribute("transform",d);$.data(R,"stop").setAttribute("offset",(a-10)/j);var h=0;$(g).find("stop").each(function(){var f=this.getAttribute("offset"),l=$(this);if(f<h){l.prev().before(l);D=$(g).find("stop")}h=f})}var e=$(this),o=$.extend(true,{},jQuery.fn.jGraduateDefaults,i),b=e.attr("id"),s="#"+e.attr("id")+" ";if(s){var ma=function(){switch(e.paint.type){case "radialGradient":e.paint.linearGradient=
+null;break;case "linearGradient":e.paint.radialGradient=null;break;case "solidColor":e.paint.radialGradient=e.paint.linearGradient=null}$.isFunction(e.okCallback)&&e.okCallback(e.paint);e.hide()},na=function(){$.isFunction(e.cancelCallback)&&e.cancelCallback();e.hide()};$.extend(true,e,{paint:new $.jGraduate.Paint({copy:o.paint}),okCallback:$.isFunction(z[1])&&z[1]||null,cancelCallback:$.isFunction(z[2])&&z[2]||null});e.position();var u=null,N=$(window);if(e.paint.type=="none")e.paint=$.jGraduate.Paint({solidColor:"ffffff"});
+e.addClass("jGraduate_Picker");e.html('<ul class="jGraduate_tabs"><li class="jGraduate_tab_color jGraduate_tab_current" data-type="col">Solid Color</li><li class="jGraduate_tab_lingrad" data-type="lg">Linear Gradient</li><li class="jGraduate_tab_radgrad" data-type="rg">Radial Gradient</li></ul><div class="jGraduate_colPick"></div><div class="jGraduate_gradPick"></div><div class="jGraduate_LightBox"></div><div id="'+b+'_jGraduate_stopPicker" class="jGraduate_stopPicker"></div>');var Ca=$(s+"> .jGraduate_colPick"),
+n=$(s+"> .jGraduate_gradPick");n.html('<div id="'+b+'_jGraduate_Swatch" class="jGraduate_Swatch"><h2 class="jGraduate_Title">'+o.window.pickerTitle+'</h2><div id="'+b+'_jGraduate_GradContainer" class="jGraduate_GradContainer"></div><div id="'+b+'_jGraduate_StopSlider" class="jGraduate_StopSlider"></div></div><div class="jGraduate_Form jGraduate_Points jGraduate_lg_field"><div class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">Begin Point</label><div class="jGraduate_Form_Section"><label>x:</label><input type="text" id="'+
+b+'_jGraduate_x1" size="3" title="Enter starting x value between 0.0 and 1.0"/><label> y:</label><input type="text" id="'+b+'_jGraduate_y1" size="3" title="Enter starting y value between 0.0 and 1.0"/></div></div><div class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">End Point</label><div class="jGraduate_Form_Section"><label>x:</label><input type="text" id="'+b+'_jGraduate_x2" size="3" title="Enter ending x value between 0.0 and 1.0"/><label> y:</label><input type="text" id="'+
+b+'_jGraduate_y2" size="3" title="Enter ending y value between 0.0 and 1.0"/></div></div></div><div class="jGraduate_Form jGraduate_Points jGraduate_rg_field"><div class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">Center Point</label><div class="jGraduate_Form_Section"><label>x:</label><input type="text" id="'+b+'_jGraduate_cx" size="3" title="Enter x value between 0.0 and 1.0"/><label> y:</label><input type="text" id="'+b+'_jGraduate_cy" size="3" title="Enter y value between 0.0 and 1.0"/></div></div><div class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">Focal Point</label><div class="jGraduate_Form_Section"><label>Match center: <input type="checkbox" checked="checked" id="'+
+b+'_jGraduate_match_ctr"/></label><br/><label>x:</label><input type="text" id="'+b+'_jGraduate_fx" size="3" title="Enter x value between 0.0 and 1.0"/><label> y:</label><input type="text" id="'+b+'_jGraduate_fy" size="3" title="Enter y value between 0.0 and 1.0"/></div></div></div><div class="jGraduate_StopSection jGraduate_SpreadMethod"><label class="jGraduate_Form_Heading">Spread method</label><div class="jGraduate_Form_Section"><select class="jGraduate_spreadMethod"><option value=pad selected>Pad</option><option value=reflect>Reflect</option><option value=repeat>Repeat</option></select></div></div><div class="jGraduate_Form"><div class="jGraduate_Slider jGraduate_RadiusField jGraduate_rg_field"><label class="prelabel">Radius:</label><div id="'+
+b+'_jGraduate_Radius" class="jGraduate_SliderBar jGraduate_Radius" title="Click to set radius"><img id="'+b+'_jGraduate_RadiusArrows" class="jGraduate_RadiusArrows" src="'+o.images.clientPath+'rangearrows2.gif"></div><label><input type="text" id="'+b+'_jGraduate_RadiusInput" size="3" value="100"/>%</label></div><div class="jGraduate_Slider jGraduate_EllipField jGraduate_rg_field"><label class="prelabel">Ellip:</label><div id="'+b+'_jGraduate_Ellip" class="jGraduate_SliderBar jGraduate_Ellip" title="Click to set Ellip"><img id="'+
+b+'_jGraduate_EllipArrows" class="jGraduate_EllipArrows" src="'+o.images.clientPath+'rangearrows2.gif"></div><label><input type="text" id="'+b+'_jGraduate_EllipInput" size="3" value="0"/>%</label></div><div class="jGraduate_Slider jGraduate_AngleField jGraduate_rg_field"><label class="prelabel">Angle:</label><div id="'+b+'_jGraduate_Angle" class="jGraduate_SliderBar jGraduate_Angle" title="Click to set Angle"><img id="'+b+'_jGraduate_AngleArrows" class="jGraduate_AngleArrows" src="'+o.images.clientPath+
+'rangearrows2.gif"></div><label><input type="text" id="'+b+'_jGraduate_AngleInput" size="3" value="0"/>º&nbsp;</label></div><div class="jGraduate_Slider jGraduate_OpacField"><label class="prelabel">Opac:</label><div id="'+b+'_jGraduate_Opac" class="jGraduate_SliderBar jGraduate_Opac" title="Click to set Opac"><img id="'+b+'_jGraduate_OpacArrows" class="jGraduate_OpacArrows" src="'+o.images.clientPath+'rangearrows2.gif"></div><label><input type="text" id="'+b+'_jGraduate_OpacInput" size="3" value="100"/>%</label></div></div><div class="jGraduate_OkCancel"><input type="button" id="'+
+b+'_jGraduate_Ok" class="jGraduate_Ok" value="OK"/><input type="button" id="'+b+'_jGraduate_Cancel" class="jGraduate_Cancel" value="Cancel"/></div>');var j=256,oa=j-0,pa=j-0,p,g,aa,q={};$(".jGraduate_SliderBar").width(145);var x=$("#"+b+"_jGraduate_GradContainer")[0],m=r("svg",{id:b+"_jgraduate_svg",width:j,height:j,xmlns:A.svg},x);p=p||e.paint.type;var v=g=e.paint[p],U=e.paint.alpha,ba=p==="solidColor";switch(p){case "solidColor":case "linearGradient":if(!ba){g.id=b+"_lg_jgraduate_grad";v=g=m.appendChild(g)}r("radialGradient",
+{id:b+"_rg_jgraduate_grad"},m);if(p==="linearGradient")break;case "radialGradient":if(!ba){g.id=b+"_rg_jgraduate_grad";v=g=m.appendChild(g)}r("linearGradient",{id:b+"_lg_jgraduate_grad"},m)}if(ba){v=g=$("#"+b+"_lg_jgraduate_grad")[0];u=e.paint[p];t(0,"#"+u,1);var K=typeof o.newstop;if(K==="string")switch(o.newstop){case "same":t(1,"#"+u,1);break;case "inverse":K="";for(var y=0;y<6;y+=2){u.substr(y,2);var P=(255-parseInt(u.substr(y,2),16)).toString(16);if(P.length<2)P=0+P;K+=P}t(1,"#"+K,1);break;case "white":t(1,
+"#ffffff",1);break;case "black":t(1,"#000000",1)}else if(K==="object")t(1,o.newstop.color||"#"+u,"opac"in o.newstop?o.newstop.opac:1)}u=parseFloat(v.getAttribute("x1")||0);K=parseFloat(v.getAttribute("y1")||0);y=parseFloat(v.getAttribute("x2")||1);P=parseFloat(v.getAttribute("y2")||0);var ca=parseFloat(v.getAttribute("cx")||0.5),da=parseFloat(v.getAttribute("cy")||0.5),qa=parseFloat(v.getAttribute("fx")||ca),ra=parseFloat(v.getAttribute("fy")||da);aa=r("rect",{id:b+"_jgraduate_rect",x:0,y:0,width:oa,
+height:pa,fill:"url(#"+b+"_jgraduate_grad)","fill-opacity":U/100},m);var sa=$("<div/>").attr({"class":"grad_coord jGraduate_lg_field",title:"Begin Stop"}).text(1).css({top:K*j,left:u*j}).data("coord","start").appendTo(x),Da=sa.clone().text(2).css({top:P*j,left:y*j}).attr("title","End stop").data("coord","end").appendTo(x),ta=$("<div/>").attr({"class":"grad_coord jGraduate_rg_field",title:"Center stop"}).text("C").css({top:da*j,left:ca*j}).data("coord","center").appendTo(x),V=ta.clone().text("F").css({top:ra*
+j,left:qa*j,display:"none"}).attr("title","Focus point").data("coord","focus").appendTo(x);V[0].id=b+"_jGraduate_focusCoord";$(s+" .grad_coord");$.each(["x1","y1","x2","y2","cx","cy","fx","fy"],function(c,a){var d=g.getAttribute(a),h=isNaN(a[1]);d||(d=h?"0.5":a==="x2"?"1.0":"0.0");q[a]=$("#"+b+"_jGraduate_"+a).val(d).change(function(){if(isNaN(parseFloat(this.value))||this.value<0)this.value=0;else if(this.value>1)this.value=1;if(!(a[0]==="f"&&!E))if(h&&p==="radialGradient"||!h&&p==="linearGradient")g.setAttribute(a,
+this.value);var f=h?a[0]==="c"?ta:V:a[1]==="1"?sa:Da,l=a.indexOf("x")>=0?"left":"top";f.css(l,this.value*j)}).change()});var D,fa,ga=$("#"+b+"_jGraduate_StopSlider"),F,H,R,O=r("path",{d:"m9.75,-6l-19.5,19.5m0,-19.5l19.5,19.5",fill:"none",stroke:"#D00","stroke-width":5,display:"none"},H),S,J=1,G=1,T=0,ha=ca,ia=da;H=r("svg",{width:"100%",height:45},ga[0]);x=r("pattern",{width:16,height:16,patternUnits:"userSpaceOnUse",id:"jGraduate_trans"},H);r("image",{width:16,height:16},x).setAttributeNS(A.xlink,
+"xlink:href",o.images.clientPath+"map-opacity.png");$(H).click(function(c){S=ga.offset();if(c.target.tagName!=="path"){var a=c.pageX-S.left-8;a=a<10?10:a>j+10?j+10:a;t(a/j,0,0,true);c.stopPropagation()}});$(H).mouseover(function(){H.appendChild(O)});fa=r("g",{},H);r("line",{x1:10,y1:15,x2:j+10,y2:15,"stroke-width":2,stroke:"#000"},H);var ua=n.find(".jGraduate_spreadMethod").change(function(){g.setAttribute("spreadMethod",$(this).val())}),Q=null,va=function(c){var a=c.pageX-ja.left,d=c.pageY-ja.top;
+a=a<0?0:a>j?j:a;d=d<0?0:d>j?j:d;Q.css("left",a).css("top",d);a=a/oa;d=d/pa;var h=Q.data("coord"),f=g;switch(h){case "start":q.x1.val(a);q.y1.val(d);f.setAttribute("x1",a);f.setAttribute("y1",d);break;case "end":q.x2.val(a);q.y2.val(d);f.setAttribute("x2",a);f.setAttribute("y2",d);break;case "center":q.cx.val(a);q.cy.val(d);f.setAttribute("cx",a);f.setAttribute("cy",d);ha=a;ia=d;w();break;case "focus":q.fx.val(a);q.fy.val(d);f.setAttribute("fx",a);f.setAttribute("fy",d);w()}c.preventDefault()},wa=
+function(){Q=null;N.unbind("mousemove",va).unbind("mouseup",wa)};D=g.getElementsByTagNameNS(A.svg,"stop");if(k<2){for(;k<2;){g.appendChild(document.createElementNS(A.svg,"stop"));++k}D=g.getElementsByTagNameNS(A.svg,"stop")}var k=D.length;for(y=0;y<k;y++)t(0,0,0,0,D[y]);ua.val(g.getAttribute("spreadMethod")||"pad");var ja,E=false;aa.setAttribute("fill-opacity",U/100);$("#"+b+" div.grad_coord").mousedown(function(c){c.preventDefault();Q=$(this);Q.offset();ja=Q.parent().offset();N.mousemove(va).mouseup(wa)});
+$("#"+b+"_jGraduate_Ok").bind("click",function(){e.paint.type=p;e.paint[p]=g.cloneNode(true);e.paint.solidColor=null;ma()});$("#"+b+"_jGraduate_Cancel").bind("click",function(){na()});if(p==="radialGradient")if(E)V.show();else{V.hide();q.fx.val("");q.fy.val("")}$("#"+b+"_jGraduate_match_ctr")[0].checked=!E;var xa,ya;$("#"+b+"_jGraduate_match_ctr").change(function(){E=!this.checked;V.toggle(E);q.fx.val("");q.fy.val("");var c=g;if(E){var a=xa||0.5,d=ya||0.5;c.setAttribute("fx",a);c.setAttribute("fy",
+d);q.fx.val(a);q.fy.val(d)}else{xa=c.getAttribute("fx");ya=c.getAttribute("fy");c.removeAttribute("fx");c.removeAttribute("fy")}});D=g.getElementsByTagNameNS(A.svg,"stop");k=D.length;if(k<2){for(;k<2;){g.appendChild(document.createElementNS(A.svg,"stop"));++k}D=g.getElementsByTagNameNS(A.svg,"stop")}var L;U=n=0;if(p==="radialGradient"){m=g.gradientTransform.baseVal;if(m.numberOfItems===2){k=m.getItem(0);m=m.getItem(1);if(k.type===2&&m.type===3){k=m.matrix;if(k.a!==1)n=Math.round(-(1-k.a)*100);else if(k.d!==
+1)n=Math.round((1-k.d)*100)}}else if(m.numberOfItems===3){x=m.getItem(0);k=m.getItem(1);m=m.getItem(2);if(x.type===4&&k.type===2&&m.type===3){U=Math.round(x.angle);k=m.matrix;if(k.a!==1)n=Math.round(-(1-k.a)*100);else if(k.d!==1)n=Math.round((1-k.d)*100)}}}n={radius:{handle:"#"+b+"_jGraduate_RadiusArrows",input:"#"+b+"_jGraduate_RadiusInput",val:(g.getAttribute("r")||0.5)*100},opacity:{handle:"#"+b+"_jGraduate_OpacArrows",input:"#"+b+"_jGraduate_OpacInput",val:e.paint.alpha||100},ellip:{handle:"#"+
+b+"_jGraduate_EllipArrows",input:"#"+b+"_jGraduate_EllipInput",val:n},angle:{handle:"#"+b+"_jGraduate_AngleArrows",input:"#"+b+"_jGraduate_AngleInput",val:U}};$.each(n,function(c,a){var d=$(a.handle);d.mousedown(function(h){var f=d.parent();L={type:c,elem:d,input:$(a.input),parent:f,offset:f.offset()};N.mousemove(za).mouseup(Aa);h.preventDefault()});$(a.input).val(a.val).change(function(){var h=+this.value,f=0,l=p==="radialGradient";switch(c){case "radius":l&&g.setAttribute("r",h/100);f=Math.pow(h/
+100,0.4)/2*145;break;case "opacity":e.paint.alpha=h;aa.setAttribute("fill-opacity",h/100);f=h*1.45;break;case "ellip":J=G=1;if(h===0){f=72.5;break}if(h>99.5)h=99.5;if(h>0)G=1-h/100;else J=-(h/100)-1;f=145*((h+100)/2)/100;l&&w();break;case "angle":T=h;f=T/180;f+=0.5;f*=145;l&&w()}if(f>145)f=145;else if(f<0)f=0;d.css({"margin-left":f-5})}).change()});var za=function(c){var a=c.pageX-L.offset.left-parseInt(L.parent.css("border-left-width"));if(a>145)a=145;if(a<=0)a=0;var d=a-5;a/=145;switch(L.type){case "radius":a=
+Math.pow(a*2,2.5);if(a>0.98&&a<1.02)a=1;if(a<=0.01)a=0.01;g.setAttribute("r",a);break;case "opacity":e.paint.alpha=parseInt(a*100);aa.setAttribute("fill-opacity",a);break;case "ellip":G=J=1;if(a<0.5){a/=0.5;J=a<=0?0.01:a}else if(a>0.5){a/=0.5;a=2-a;G=a<=0?0.01:a}w();a-=1;if(G===a+1)a=Math.abs(a);break;case "angle":a-=0.5;T=a*=180;w();a/=100}L.elem.css({"margin-left":d});a=Math.round(a*100);L.input.val(a);c.preventDefault()},Aa=function(){N.unbind("mousemove",za).unbind("mouseup",Aa);L=null};for(n=
+(e.paint.alpha*255/100).toString(16);n.length<2;)n="0"+n;n=n.split(".")[0];u=e.paint.solidColor=="none"?"":e.paint.solidColor+n;ba||(u=D[0].getAttribute("stop-color"));$.extend($.fn.jPicker.defaults.window,{alphaSupport:true,effects:{type:"show",speed:0}});Ca.jPicker({window:{title:o.window.pickerTitle},images:{clientPath:o.images.clientPath},color:{active:u,alphaSupport:true}},function(c){e.paint.type="solidColor";e.paint.alpha=c.val("ahex")?Math.round(c.val("a")/255*100):100;e.paint.solidColor=
+c.val("hex")?c.val("hex"):"none";e.paint.radialGradient=null;ma()},null,function(){na()});var ka=$(s+" .jGraduate_tabs li");ka.click(function(){ka.removeClass("jGraduate_tab_current");$(this).addClass("jGraduate_tab_current");$(s+" > div").hide();var c=$(this).attr("data-type");$(s+" .jGraduate_gradPick").show();if(c==="rg"||c==="lg"){$(".jGraduate_"+c+"_field").show();$(".jGraduate_"+(c==="lg"?"rg":"lg")+"_field").hide();$("#"+b+"_jgraduate_rect")[0].setAttribute("fill","url(#"+b+"_"+c+"_jgraduate_grad)");
+p=c==="lg"?"linearGradient":"radialGradient";$("#"+b+"_jGraduate_OpacInput").val(e.paint.alpha).change();var a=$("#"+b+"_"+c+"_jgraduate_grad")[0];if(g!==a){var d=$(g).find("stop");$(a).empty().append(d);g=a;a=ua.val();g.setAttribute("spreadMethod",a)}E=c==="rg"&&g.getAttribute("fx")!=null&&!(ca==qa&&da==ra);$("#"+b+"_jGraduate_focusCoord").toggle(E);if(E)$("#"+b+"_jGraduate_match_ctr")[0].checked=false}else{$(s+" .jGraduate_gradPick").hide();$(s+" .jGraduate_colPick").show()}});$(s+" > div").hide();
+ka.removeClass("jGraduate_tab_current");var ea;switch(e.paint.type){case "linearGradient":ea=$(s+" .jGraduate_tab_lingrad");break;case "radialGradient":ea=$(s+" .jGraduate_tab_radgrad");break;default:ea=$(s+" .jGraduate_tab_color")}e.show();setTimeout(function(){ea.addClass("jGraduate_tab_current").click()},10)}else alert("Container element must have an id attribute to maintain unique id strings for sub-elements.")})}})();
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/jquery-draginput.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/jquery-draginput.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/jquery-draginput.js	(revision 29468)
@@ -0,0 +1,181 @@
+﻿// Mark MacKay http://method.ac MIT License
+
+
+$.fn.dragInput = function(cfg){
+	return this.each(function(){
+
+		this.repeating = false;
+		// Apply specified options or defaults:
+		// (Ought to refactor this some day to use $.extend() instead)
+		this.dragCfg = {
+			min: cfg && !isNaN(parseFloat(cfg.min)) ? Number(cfg.min) : null,	// Fixes bug with min:0
+			max: cfg && !isNaN(parseFloat(cfg.max)) ? Number(cfg.max) : null,
+			step: cfg && Number(cfg.step) ? cfg.step : 1,
+			stepfunc: cfg && cfg.stepfunc ? cfg.stepfunc : false,
+			dragAdjust: cfg && cfg.dragAdjust ? cfg.dragAdjust : 1,
+			height: 70,
+			cursor: cfg && cfg.cursor ? Boolean(cfg.cursor) : false,
+			start: cfg && cfg.start ? Number(cfg.start) : 0,
+			_btn_width: 20,
+			_direction: null,
+			_delay: null,
+			_repeat: null,
+			callback: cfg && cfg.callback ? cfg.callback : null
+		};
+		// if a smallStep isn't supplied, use half the regular step
+		this.dragCfg.smallStep = cfg && cfg.smallStep ? cfg.smallStep : this.dragCfg.step/2;
+		var dragAdjust = this.dragCfg.dragAdjust;
+		var $label = $(this).parent();
+		var $input = $(this);
+		var cursorHeight = this.dragCfg.height;
+		var min = this.dragCfg.min;
+		var max = this.dragCfg.max
+		var step = this.dragCfg.step
+    var area = (max - min > 0) ?  (max - min) / step : 200;
+    var scale = area/cursorHeight * step;
+    var lastY = 0;
+    var attr = this.getAttribute("data-attr");
+    var canvas = methodDraw.canvas
+    var isTouch = svgedit.browser.isTouch();
+    var completed = true //for mousewheel
+    var $cursor = (area && this.dragCfg.cursor)
+      ? $("<div class='draginput_cursor' />").appendTo($label) 
+      : false
+    $input.attr("readonly", "readonly")
+    if ($cursor && !isNaN(this.dragCfg.start)) $cursor.css("top", (this.dragCfg.start*-1)/scale+cursorHeight)
+   
+    //this is where all the magic happens  
+		this.adjustValue = function(i, completed){
+			var v;
+			i = parseFloat(i);
+			if(isNaN(this.value)) {
+				v = this.dragCfg.reset;
+			} else if($.isFunction(this.dragCfg.stepfunc)) {
+				v = this.dragCfg.stepfunc(this, i);
+			} else {
+				v = Number((Number(this.value) + Number(i)).toFixed(5));
+			}
+			if (max !== null) v = Math.min(v, max);
+			if (min !== null) v = Math.max(v, min);
+			if ($cursor) this.updateCursor(v);
+			this.value = v;
+			$label.attr("data-value", v)
+			if ($.isFunction(this.dragCfg.callback)) this.dragCfg.callback(this, completed)
+		};
+          
+		$label.toggleClass("draginput", $label.is("label"))
+    
+    // when the mouse is down and moving
+    this.move = function(e, oy, val) {
+      if (isTouch) {
+        e = e.originalEvent.touches[0]
+      }
+      // just got started let's save for undo purposes
+      if (lastY === 0) {
+        lastY = oy;
+      }
+      var deltaY = (e.pageY - lastY) *-1
+      lastY = e.pageY;
+      val = (deltaY * scale) * dragAdjust
+      var fixed = (step < 1) ? 1 : 0
+      this.adjustValue(val.toFixed(fixed))  //no undo true
+    };
+  	
+  	//when the mouse is released
+  	this.stop = function() {
+  	  var selectedElems = canvas.getSelectedElems();
+  	  $('body').removeClass('dragging');
+  	  $label.removeClass("active");
+  	  completed = true;
+  	  $(window).unbind("mousemove.draginput touchmove.draginput mouseup.draginput touchend.draginput");
+  	  lastY = 0;
+  	  if (selectedElems[0]) {
+    	  var batchCmd = canvas.undoMgr.finishUndoableChange();
+      	if (!batchCmd.isEmpty()) canvas.undoMgr.addCommandToHistory(batchCmd);
+    	}
+  	  this.adjustValue(0, completed)
+  	}
+  	
+  	this.updateCursor = function(){
+  	  var value = parseFloat(this.value);
+  		var pos = (value*-1)/scale+cursorHeight;
+  		$cursor.css("top", pos);
+  	}
+  	
+  	this.launch = function(e) {
+  	  var selectedElems = canvas.getSelectedElems();
+  	  if (isTouch) e = e.originalEvent.touches[0];
+		  var oy = e.pageY;
+		  var val = this.value;
+		  var el = this;
+		  canvas.undoMgr.beginUndoableChange(attr, selectedElems)
+		  $('body').addClass('dragging');
+		  $label.addClass('active');
+			$(window).bind("mousemove.draginput touchmove.draginput", function(e){el.move(e, oy, parseFloat(val))})
+			$(window).bind("mouseup.draginput touchend.draginput", function(e){el.stop()})
+  	}
+  	
+  	$(this)
+		  .attr("readonly", "readonly")
+		  .attr("data-scale", scale)
+		  .attr("data-domain", cursorHeight)
+		  .attr("data-cursor", ($cursor != false))
+		  		
+		.bind("mousedown touchstart", function(e){
+		  this.blur();
+		  this.launch(e);
+		})
+		
+		.bind("dblclick taphold", function(e) {
+			this.removeAttribute("readonly", "readonly");
+			this.focus();
+			this.select();
+		})
+		
+		.keydown(function(e){
+		  // Respond to up/down arrow keys.
+		  switch(e.keyCode){
+		  	case 13: this.adjustValue(0); this.blur();  break; // Enter
+		  }
+		})
+		
+		.focus(function(e){
+		  if (this.getAttribute("readonly") === "readonly") this.blur()
+		})
+		
+		.blur(function(e){
+		  this.setAttribute("readonly", "readonly")
+		})
+		
+		.bind("mousewheel", function(e, delta, deltaX, deltaY){
+		  var selectedElems = canvas.getSelectedElems();
+      if (completed) canvas.undoMgr.beginUndoableChange(attr, selectedElems)
+		  completed = false
+      clearTimeout(window.undoTimeout)
+  	  window.undoTimeout = setTimeout(function(){
+  	    wheel_input.stop()
+  	  },200)
+  	  
+		  var wheel_input = this;
+			if (deltaY > 0)
+				this.adjustValue(this.dragCfg.step);
+			else if (deltaY < 0)
+				this.adjustValue(-this.dragCfg.step);
+			e.preventDefault();
+	    
+		})
+
+	});
+	
+};
+
+// public function
+$.fn.dragInput.updateCursor = function(el){
+  var value = parseFloat(el.value);
+  var scale = parseFloat(el.getAttribute("data-scale"));
+  var domain = parseFloat(el.getAttribute("data-domain"));
+	var pos = ((value*-1)/scale+domain) + "px";
+	var cursor = el.parentNode.lastChild
+	if (cursor.className == "draginput_cursor") cursor.style.top = pos;
+}
+
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/jquery-ui/jquery-ui-1.8.17.custom.min.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/jquery-ui/jquery-ui-1.8.17.custom.min.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/jquery-ui/jquery-ui-1.8.17.custom.min.js	(revision 29468)
@@ -0,0 +1,54 @@
+/*!
+ * jQuery UI 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI
+ */(function(a,b){function d(b){return!a(b).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}function c(b,c){var e=b.nodeName.toLowerCase();if("area"===e){var f=b.parentNode,g=f.name,h;if(!b.href||!g||f.nodeName.toLowerCase()!=="map")return!1;h=a("img[usemap=#"+g+"]")[0];return!!h&&d(h)}return(/input|select|textarea|button|object/.test(e)?!b.disabled:"a"==e?b.href||c:c)&&d(b)}a.ui=a.ui||{};a.ui.version||(a.extend(a.ui,{version:"1.8.17",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,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,WINDOWS:91}}),a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(b,c){return typeof b=="number"?this.each(function(){var d=this;setTimeout(function(){a(d).focus(),c&&c.call(d)},b)}):this._focus.apply(this,arguments)},scrollParent:function(){var b;a.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?b=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(a.curCSS(this,"position",1))&&/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0):b=this.parents().filter(function(){return/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!b.length?a(document):b},zIndex:function(c){if(c!==b)return this.css("zIndex",c);if(this.length){var d=a(this[0]),e,f;while(d.length&&d[0]!==document){e=d.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){f=parseInt(d.css("zIndex"),10);if(!isNaN(f)&&f!==0)return f}d=d.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),a.each(["Width","Height"],function(c,d){function h(b,c,d,f){a.each(e,function(){c-=parseFloat(a.curCSS(b,"padding"+this,!0))||0,d&&(c-=parseFloat(a.curCSS(b,"border"+this+"Width",!0))||0),f&&(c-=parseFloat(a.curCSS(b,"margin"+this,!0))||0)});return c}var e=d==="Width"?["Left","Right"]:["Top","Bottom"],f=d.toLowerCase(),g={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};a.fn["inner"+d]=function(c){if(c===b)return g["inner"+d].call(this);return this.each(function(){a(this).css(f,h(this,c)+"px")})},a.fn["outer"+d]=function(b,c){if(typeof b!="number")return g["outer"+d].call(this,b);return this.each(function(){a(this).css(f,h(this,b,!0,c)+"px")})}}),a.extend(a.expr[":"],{data:function(b,c,d){return!!a.data(b,d[3])},focusable:function(b){return c(b,!isNaN(a.attr(b,"tabindex")))},tabbable:function(b){var d=a.attr(b,"tabindex"),e=isNaN(d);return(e||d>=0)&&c(b,!e)}}),a(function(){var b=document.body,c=b.appendChild(c=document.createElement("div"));a.extend(c.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),a.support.minHeight=c.offsetHeight===100,a.support.selectstart="onselectstart"in c,b.removeChild(c).style.display="none"}),a.extend(a.ui,{plugin:{add:function(b,c,d){var e=a.ui[b].prototype;for(var f in d)e.plugins[f]=e.plugins[f]||[],e.plugins[f].push([c,d[f]])},call:function(a,b,c){var d=a.plugins[b];if(!!d&&!!a.element[0].parentNode)for(var e=0;e<d.length;e++)a.options[d[e][0]]&&d[e][1].apply(a.element,c)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(b,c){if(a(b).css("overflow")==="hidden")return!1;var d=c&&c==="left"?"scrollLeft":"scrollTop",e=!1;if(b[d]>0)return!0;b[d]=1,e=b[d]>0,b[d]=0;return e},isOverAxis:function(a,b,c){return a>b&&a<b+c},isOver:function(b,c,d,e,f,g){return a.ui.isOverAxis(b,d,f)&&a.ui.isOverAxis(c,e,g)}}))})(jQuery);/*!
+ * jQuery UI Widget 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Widget
+ */(function(a,b){if(a.cleanData){var c=a.cleanData;a.cleanData=function(b){for(var d=0,e;(e=b[d])!=null;d++)try{a(e).triggerHandler("remove")}catch(f){}c(b)}}else{var d=a.fn.remove;a.fn.remove=function(b,c){return this.each(function(){c||(!b||a.filter(b,[this]).length)&&a("*",this).add([this]).each(function(){try{a(this).triggerHandler("remove")}catch(b){}});return d.call(a(this),b,c)})}}a.widget=function(b,c,d){var e=b.split(".")[0],f;b=b.split(".")[1],f=e+"-"+b,d||(d=c,c=a.Widget),a.expr[":"][f]=function(c){return!!a.data(c,b)},a[e]=a[e]||{},a[e][b]=function(a,b){arguments.length&&this._createWidget(a,b)};var g=new c;g.options=a.extend(!0,{},g.options),a[e][b].prototype=a.extend(!0,g,{namespace:e,widgetName:b,widgetEventPrefix:a[e][b].prototype.widgetEventPrefix||b,widgetBaseClass:f},d),a.widget.bridge(b,a[e][b])},a.widget.bridge=function(c,d){a.fn[c]=function(e){var f=typeof e=="string",g=Array.prototype.slice.call(arguments,1),h=this;e=!f&&g.length?a.extend.apply(null,[!0,e].concat(g)):e;if(f&&e.charAt(0)==="_")return h;f?this.each(function(){var d=a.data(this,c),f=d&&a.isFunction(d[e])?d[e].apply(d,g):d;if(f!==d&&f!==b){h=f;return!1}}):this.each(function(){var b=a.data(this,c);b?b.option(e||{})._init():a.data(this,c,new d(e,this))});return h}},a.Widget=function(a,b){arguments.length&&this._createWidget(a,b)},a.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:!1},_createWidget:function(b,c){a.data(c,this.widgetName,this),this.element=a(c),this.options=a.extend(!0,{},this.options,this._getCreateOptions(),b);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()}),this._create(),this._trigger("create"),this._init()},_getCreateOptions:function(){return a.metadata&&a.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName),this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled "+"ui-state-disabled")},widget:function(){return this.element},option:function(c,d){var e=c;if(arguments.length===0)return a.extend({},this.options);if(typeof c=="string"){if(d===b)return this.options[c];e={},e[c]=d}this._setOptions(e);return this},_setOptions:function(b){var c=this;a.each(b,function(a,b){c._setOption(a,b)});return this},_setOption:function(a,b){this.options[a]=b,a==="disabled"&&this.widget()[b?"addClass":"removeClass"](this.widgetBaseClass+"-disabled"+" "+"ui-state-disabled").attr("aria-disabled",b);return this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_trigger:function(b,c,d){var e,f,g=this.options[b];d=d||{},c=a.Event(c),c.type=(b===this.widgetEventPrefix?b:this.widgetEventPrefix+b).toLowerCase(),c.target=this.element[0],f=c.originalEvent;if(f)for(e in f)e in c||(c[e]=f[e]);this.element.trigger(c,d);return!(a.isFunction(g)&&g.call(this.element[0],c,d)===!1||c.isDefaultPrevented())}}})(jQuery);/*!
+ * jQuery UI Mouse 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Mouse
+ *
+ * Depends:
+ *	jquery.ui.widget.js
+ */(function(a,b){var c=!1;a(document).mouseup(function(a){c=!1}),a.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var b=this;this.element.bind("mousedown."+this.widgetName,function(a){return b._mouseDown(a)}).bind("click."+this.widgetName,function(c){if(!0===a.data(c.target,b.widgetName+".preventClickEvent")){a.removeData(c.target,b.widgetName+".preventClickEvent"),c.stopImmediatePropagation();return!1}}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(b){if(!c){this._mouseStarted&&this._mouseUp(b),this._mouseDownEvent=b;var d=this,e=b.which==1,f=typeof this.options.cancel=="string"&&b.target.nodeName?a(b.target).closest(this.options.cancel).length:!1;if(!e||f||!this._mouseCapture(b))return!0;this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){d.mouseDelayMet=!0},this.options.delay));if(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)){this._mouseStarted=this._mouseStart(b)!==!1;if(!this._mouseStarted){b.preventDefault();return!0}}!0===a.data(b.target,this.widgetName+".preventClickEvent")&&a.removeData(b.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(a){return d._mouseMove(a)},this._mouseUpDelegate=function(a){return d._mouseUp(a)},a(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),b.preventDefault(),c=!0;return!0}},_mouseMove:function(b){if(a.browser.msie&&!(document.documentMode>=9)&&!b.button)return this._mouseUp(b);if(this._mouseStarted){this._mouseDrag(b);return b.preventDefault()}this._mouseDistanceMet(b)&&this._mouseDelayMet(b)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,b)!==!1,this._mouseStarted?this._mouseDrag(b):this._mouseUp(b));return!this._mouseStarted},_mouseUp:function(b){a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,b.target==this._mouseDownEvent.target&&a.data(b.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(b));return!1},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(a){return this.mouseDelayMet},_mouseStart:function(a){},_mouseDrag:function(a){},_mouseStop:function(a){},_mouseCapture:function(a){return!0}})})(jQuery);/*
+ * jQuery UI Draggable 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Draggables
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.widget.js
+ */(function(a,b){a.widget("ui.draggable",a.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1},_create:function(){this.options.helper=="original"&&!/^(?:r|a|f)/.test(this.element.css("position"))&&(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._mouseInit()},destroy:function(){if(!!this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy();return this}},_mouseCapture:function(b){var c=this.options;if(this.helper||c.disabled||a(b.target).is(".ui-resizable-handle"))return!1;this.handle=this._getHandle(b);if(!this.handle)return!1;c.iframeFix&&a(c.iframeFix===!0?"iframe":c.iframeFix).each(function(){a('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(a(this).offset()).appendTo("body")});return!0},_mouseStart:function(b){var c=this.options;this.helper=this._createHelper(b),this._cacheHelperProportions(),a.ui.ddmanager&&(a.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(b),this.originalPageX=b.pageX,this.originalPageY=b.pageY,c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt),c.containment&&this._setContainment();if(this._trigger("start",b)===!1){this._clear();return!1}this._cacheHelperProportions(),a.ui.ddmanager&&!c.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b),this.helper.addClass("ui-draggable-dragging"),this._mouseDrag(b,!0),a.ui.ddmanager&&a.ui.ddmanager.dragStart(this,b);return!0},_mouseDrag:function(b,c){this.position=this._generatePosition(b),this.positionAbs=this._convertPositionTo("absolute");if(!c){var d=this._uiHash();if(this._trigger("drag",b,d)===!1){this._mouseUp({});return!1}this.position=d.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";a.ui.ddmanager&&a.ui.ddmanager.drag(this,b);return!1},_mouseStop:function(b){var c=!1;a.ui.ddmanager&&!this.options.dropBehaviour&&(c=a.ui.ddmanager.drop(this,b)),this.dropped&&(c=this.dropped,this.dropped=!1);if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper=="original")return!1;if(this.options.revert=="invalid"&&!c||this.options.revert=="valid"&&c||this.options.revert===!0||a.isFunction(this.options.revert)&&this.options.revert.call(this.element,c)){var d=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){d._trigger("stop",b)!==!1&&d._clear()})}else this._trigger("stop",b)!==!1&&this._clear();return!1},_mouseUp:function(b){this.options.iframeFix===!0&&a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),a.ui.ddmanager&&a.ui.ddmanager.dragStop(this,b);return a.ui.mouse.prototype._mouseUp.call(this,b)},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(b){var c=!this.options.handle||!a(this.options.handle,this.element).length?!0:!1;a(this.options.handle,this.element).find("*").andSelf().each(function(){this==b.target&&(c=!0)});return c},_createHelper:function(b){var c=this.options,d=a.isFunction(c.helper)?a(c.helper.apply(this.element[0],[b])):c.helper=="clone"?this.element.clone().removeAttr("id"):this.element;d.parents("body").length||d.appendTo(c.appendTo=="parent"?this.element[0].parentNode:c.appendTo),d[0]!=this.element[0]&&!/(fixed|absolute)/.test(d.css("position"))&&d.css("position","absolute");return d},_adjustOffsetFromHelper:function(b){typeof b=="string"&&(b=b.split(" ")),a.isArray(b)&&(b={left:+b[0],top:+b[1]||0}),"left"in b&&(this.offset.click.left=b.left+this.margins.left),"right"in b&&(this.offset.click.left=this.helperProportions.width-b.right+this.margins.left),"top"in b&&(this.offset.click.top=b.top+this.margins.top),"bottom"in b&&(this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])&&(b.left+=this.scrollParent.scrollLeft(),b.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)b={top:0,left:0};return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var b=this.options;b.containment=="parent"&&(b.containment=this.helper[0].parentNode);if(b.containment=="document"||b.containment=="window")this.containment=[b.containment=="document"?0:a(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,b.containment=="document"?0:a(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,(b.containment=="document"?0:a(window).scrollLeft())+a(b.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(b.containment=="document"?0:a(window).scrollTop())+(a(b.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(b.containment)&&b.containment.constructor!=Array){var c=a(b.containment),d=c[0];if(!d)return;var e=c.offset(),f=a(d).css("overflow")!="hidden";this.containment=[(parseInt(a(d).css("borderLeftWidth"),10)||0)+(parseInt(a(d).css("paddingLeft"),10)||0),(parseInt(a(d).css("borderTopWidth"),10)||0)+(parseInt(a(d).css("paddingTop"),10)||0),(f?Math.max(d.scrollWidth,d.offsetWidth):d.offsetWidth)-(parseInt(a(d).css("borderLeftWidth"),10)||0)-(parseInt(a(d).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(f?Math.max(d.scrollHeight,d.offsetHeight):d.offsetHeight)-(parseInt(a(d).css("borderTopWidth"),10)||0)-(parseInt(a(d).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=c}else b.containment.constructor==Array&&(this.containment=b.containment)},_convertPositionTo:function(b,c){c||(c=this.position);var d=b=="absolute"?1:-1,e=this.options,f=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=/(html|body)/i.test(f[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():g?0:f.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:f.scrollLeft())*d)}},_generatePosition:function(b){var c=this.options,d=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(d[0].tagName),f=b.pageX,g=b.pageY;if(this.originalPosition){var h;if(this.containment){if(this.relative_container){var i=this.relative_container.offset();h=[this.containment[0]+i.left,this.containment[1]+i.top,this.containment[2]+i.left,this.containment[3]+i.top]}else h=this.containment;b.pageX-this.offset.click.left<h[0]&&(f=h[0]+this.offset.click.left),b.pageY-this.offset.click.top<h[1]&&(g=h[1]+this.offset.click.top),b.pageX-this.offset.click.left>h[2]&&(f=h[2]+this.offset.click.left),b.pageY-this.offset.click.top>h[3]&&(g=h[3]+this.offset.click.top)}if(c.grid){var j=c.grid[1]?this.originalPageY+Math.round((g-this.originalPageY)/c.grid[1])*c.grid[1]:this.originalPageY;g=h?j-this.offset.click.top<h[1]||j-this.offset.click.top>h[3]?j-this.offset.click.top<h[1]?j+c.grid[1]:j-c.grid[1]:j:j;var k=c.grid[0]?this.originalPageX+Math.round((f-this.originalPageX)/c.grid[0])*c.grid[0]:this.originalPageX;f=h?k-this.offset.click.left<h[0]||k-this.offset.click.left>h[2]?k-this.offset.click.left<h[0]?k+c.grid[0]:k-c.grid[0]:k:k}}return{top:g-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:d.scrollTop()),left:f-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:d.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1},_trigger:function(b,c,d){d=d||this._uiHash(),a.ui.plugin.call(this,b,[c,d]),b=="drag"&&(this.positionAbs=this._convertPositionTo("absolute"));return a.Widget.prototype._trigger.call(this,b,c,d)},plugins:{},_uiHash:function(a){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),a.extend(a.ui.draggable,{version:"1.8.17"}),a.ui.plugin.add("draggable","connectToSortable",{start:function(b,c){var d=a(this).data("draggable"),e=d.options,f=a.extend({},c,{item:d.element});d.sortables=[],a(e.connectToSortable).each(function(){var c=a.data(this,"sortable");c&&!c.options.disabled&&(d.sortables.push({instance:c,shouldRevert:c.options.revert}),c.refreshPositions(),c._trigger("activate",b,f))})},stop:function(b,c){var d=a(this).data("draggable"),e=a.extend({},c,{item:d.element});a.each(d.sortables,function(){this.instance.isOver?(this.instance.isOver=0,d.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=!0),this.instance._mouseStop(b),this.instance.options.helper=this.instance.options._helper,d.options.helper=="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",b,e))})},drag:function(b,c){var d=a(this).data("draggable"),e=this,f=function(b){var c=this.offset.click.top,d=this.offset.click.left,e=this.positionAbs.top,f=this.positionAbs.left,g=b.height,h=b.width,i=b.top,j=b.left;return a.ui.isOver(e+c,f+d,i,j,g,h)};a.each(d.sortables,function(f){this.instance.positionAbs=d.positionAbs,this.instance.helperProportions=d.helperProportions,this.instance.offset.click=d.offset.click,this.instance._intersectsWith(this.instance.containerCache)?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=a(e).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return c.helper[0]},b.target=this.instance.currentItem[0],this.instance._mouseCapture(b,!0),this.instance._mouseStart(b,!0,!0),this.instance.offset.click.top=d.offset.click.top,this.instance.offset.click.left=d.offset.click.left,this.instance.offset.parent.left-=d.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=d.offset.parent.top-this.instance.offset.parent.top,d._trigger("toSortable",b),d.dropped=this.instance.element,d.currentItem=d.element,this.instance.fromOutside=d),this.instance.currentItem&&this.instance._mouseDrag(b)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",b,this.instance._uiHash(this.instance)),this.instance._mouseStop(b,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),d._trigger("fromSortable",b),d.dropped=!1)})}}),a.ui.plugin.add("draggable","cursor",{start:function(b,c){var d=a("body"),e=a(this).data("draggable").options;d.css("cursor")&&(e._cursor=d.css("cursor")),d.css("cursor",e.cursor)},stop:function(b,c){var d=a(this).data("draggable").options;d._cursor&&a("body").css("cursor",d._cursor)}}),a.ui.plugin.add("draggable","opacity",{start:function(b,c){var d=a(c.helper),e=a(this).data("draggable").options;d.css("opacity")&&(e._opacity=d.css("opacity")),d.css("opacity",e.opacity)},stop:function(b,c){var d=a(this).data("draggable").options;d._opacity&&a(c.helper).css("opacity",d._opacity)}}),a.ui.plugin.add("draggable","scroll",{start:function(b,c){var d=a(this).data("draggable");d.scrollParent[0]!=document&&d.scrollParent[0].tagName!="HTML"&&(d.overflowOffset=d.scrollParent.offset())},drag:function(b,c){var d=a(this).data("draggable"),e=d.options,f=!1;if(d.scrollParent[0]!=document&&d.scrollParent[0].tagName!="HTML"){if(!e.axis||e.axis!="x")d.overflowOffset.top+d.scrollParent[0].offsetHeight-b.pageY<e.scrollSensitivity?d.scrollParent[0].scrollTop=f=d.scrollParent[0].scrollTop+e.scrollSpeed:b.pageY-d.overflowOffset.top<e.scrollSensitivity&&(d.scrollParent[0].scrollTop=f=d.scrollParent[0].scrollTop-e.scrollSpeed);if(!e.axis||e.axis!="y")d.overflowOffset.left+d.scrollParent[0].offsetWidth-b.pageX<e.scrollSensitivity?d.scrollParent[0].scrollLeft=f=d.scrollParent[0].scrollLeft+e.scrollSpeed:b.pageX-d.overflowOffset.left<e.scrollSensitivity&&(d.scrollParent[0].scrollLeft=f=d.scrollParent[0].scrollLeft-e.scrollSpeed)}else{if(!e.axis||e.axis!="x")b.pageY-a(document).scrollTop()<e.scrollSensitivity?f=a(document).scrollTop(a(document).scrollTop()-e.scrollSpeed):a(window).height()-(b.pageY-a(document).scrollTop())<e.scrollSensitivity&&(f=a(document).scrollTop(a(document).scrollTop()+e.scrollSpeed));if(!e.axis||e.axis!="y")b.pageX-a(document).scrollLeft()<e.scrollSensitivity?f=a(document).scrollLeft(a(document).scrollLeft()-e.scrollSpeed):a(window).width()-(b.pageX-a(document).scrollLeft())<e.scrollSensitivity&&(f=a(document).scrollLeft(a(document).scrollLeft()+e.scrollSpeed))}f!==!1&&a.ui.ddmanager&&!e.dropBehaviour&&a.ui.ddmanager.prepareOffsets(d,b)}}),a.ui.plugin.add("draggable","snap",{start:function(b,c){var d=a(this).data("draggable"),e=d.options;d.snapElements=[],a(e.snap.constructor!=String?e.snap.items||":data(draggable)":e.snap).each(function(){var b=a(this),c=b.offset();this!=d.element[0]&&d.snapElements.push({item:this,width:b.outerWidth(),height:b.outerHeight(),top:c.top,left:c.left})})},drag:function(b,c){var d=a(this).data("draggable"),e=d.options,f=e.snapTolerance,g=c.offset.left,h=g+d.helperProportions.width,i=c.offset.top,j=i+d.helperProportions.height;for(var k=d.snapElements.length-1;k>=0;k--){var l=d.snapElements[k].left,m=l+d.snapElements[k].width,n=d.snapElements[k].top,o=n+d.snapElements[k].height;if(!(l-f<g&&g<m+f&&n-f<i&&i<o+f||l-f<g&&g<m+f&&n-f<j&&j<o+f||l-f<h&&h<m+f&&n-f<i&&i<o+f||l-f<h&&h<m+f&&n-f<j&&j<o+f)){d.snapElements[k].snapping&&d.options.snap.release&&d.options.snap.release.call(d.element,b,a.extend(d._uiHash(),{snapItem:d.snapElements[k].item})),d.snapElements[k].snapping=!1;continue}if(e.snapMode!="inner"){var p=Math.abs(n-j)<=f,q=Math.abs(o-i)<=f,r=Math.abs(l-h)<=f,s=Math.abs(m-g)<=f;p&&(c.position.top=d._convertPositionTo("relative",{top:n-d.helperProportions.height,left:0}).top-d.margins.top),q&&(c.position.top=d._convertPositionTo("relative",{top:o,left:0}).top-d.margins.top),r&&(c.position.left=d._convertPositionTo("relative",{top:0,left:l-d.helperProportions.width}).left-d.margins.left),s&&(c.position.left=d._convertPositionTo("relative",{top:0,left:m}).left-d.margins.left)}var t=p||q||r||s;if(e.snapMode!="outer"){var p=Math.abs(n-i)<=f,q=Math.abs(o-j)<=f,r=Math.abs(l-g)<=f,s=Math.abs(m-h)<=f;p&&(c.position.top=d._convertPositionTo("relative",{top:n,left:0}).top-d.margins.top),q&&(c.position.top=d._convertPositionTo("relative",{top:o-d.helperProportions.height,left:0}).top-d.margins.top),r&&(c.position.left=d._convertPositionTo("relative",{top:0,left:l}).left-d.margins.left),s&&(c.position.left=d._convertPositionTo("relative",{top:0,left:m-d.helperProportions.width}).left-d.margins.left)}!d.snapElements[k].snapping&&(p||q||r||s||t)&&d.options.snap.snap&&d.options.snap.snap.call(d.element,b,a.extend(d._uiHash(),{snapItem:d.snapElements[k].item})),d.snapElements[k].snapping=p||q||r||s||t}}}),a.ui.plugin.add("draggable","stack",{start:function(b,c){var d=a(this).data("draggable").options,e=a.makeArray(a(d.stack)).sort(function(b,c){return(parseInt(a(b).css("zIndex"),10)||0)-(parseInt(a(c).css("zIndex"),10)||0)});if(!!e.length){var f=parseInt(e[0].style.zIndex)||0;a(e).each(function(a){this.style.zIndex=f+a}),this[0].style.zIndex=f+e.length}}}),a.ui.plugin.add("draggable","zIndex",{start:function(b,c){var d=a(c.helper),e=a(this).data("draggable").options;d.css("zIndex")&&(e._zIndex=d.css("zIndex")),d.css("zIndex",e.zIndex)},stop:function(b,c){var d=a(this).data("draggable").options;d._zIndex&&a(c.helper).css("zIndex",d._zIndex)}})})(jQuery);/*
+ * jQuery UI Slider 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.widget.js
+ */(function(a,b){var c=5;a.widget("ui.slider",a.ui.mouse,{widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null},_create:function(){var b=this,d=this.options,e=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),f="<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>",g=d.values&&d.values.length||1,h=[];this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"+(d.disabled?" ui-slider-disabled ui-disabled":"")),this.range=a([]),d.range&&(d.range===!0&&(d.values||(d.values=[this._valueMin(),this._valueMin()]),d.values.length&&d.values.length!==2&&(d.values=[d.values[0],d.values[0]])),this.range=a("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(d.range==="min"||d.range==="max"?" ui-slider-range-"+d.range:"")));for(var i=e.length;i<g;i+=1)h.push(f);this.handles=e.add(a(h.join("")).appendTo(b.element)),this.handle=this.handles.eq(0),this.handles.add(this.range).filter("a").click(function(a){a.preventDefault()}).hover(function(){d.disabled||a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")}).focus(function(){d.disabled?a(this).blur():(a(".ui-slider .ui-state-focus").removeClass("ui-state-focus"),a(this).addClass("ui-state-focus"))}).blur(function(){a(this).removeClass("ui-state-focus")}),this.handles.each(function(b){a(this).data("index.ui-slider-handle",b)}),this.handles.keydown(function(d){var e=!0,f=a(this).data("index.ui-slider-handle"),g,h,i,j;if(!b.options.disabled){switch(d.keyCode){case a.ui.keyCode.HOME:case a.ui.keyCode.END:case a.ui.keyCode.PAGE_UP:case a.ui.keyCode.PAGE_DOWN:case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:e=!1;if(!b._keySliding){b._keySliding=!0,a(this).addClass("ui-state-active"),g=b._start(d,f);if(g===!1)return}}j=b.options.step,b.options.values&&b.options.values.length?h=i=b.values(f):h=i=b.value();switch(d.keyCode){case a.ui.keyCode.HOME:i=b._valueMin();break;case a.ui.keyCode.END:i=b._valueMax();break;case a.ui.keyCode.PAGE_UP:i=b._trimAlignValue(h+(b._valueMax()-b._valueMin())/c);break;case a.ui.keyCode.PAGE_DOWN:i=b._trimAlignValue(h-(b._valueMax()-b._valueMin())/c);break;case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:if(h===b._valueMax())return;i=b._trimAlignValue(h+j);break;case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:if(h===b._valueMin())return;i=b._trimAlignValue(h-j)}b._slide(d,f,i);return e}}).keyup(function(c){var d=a(this).data("index.ui-slider-handle");b._keySliding&&(b._keySliding=!1,b._stop(c,d),b._change(c,d),a(this).removeClass("ui-state-active"))}),this._refreshValue(),this._animateOff=!1},destroy:function(){this.handles.remove(),this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider"),this._mouseDestroy();return this},_mouseCapture:function(b){var c=this.options,d,e,f,g,h,i,j,k,l;if(c.disabled)return!1;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),d={x:b.pageX,y:b.pageY},e=this._normValueFromMouse(d),f=this._valueMax()-this._valueMin()+1,h=this,this.handles.each(function(b){var c=Math.abs(e-h.values(b));f>c&&(f=c,g=a(this),i=b)}),c.range===!0&&this.values(1)===c.min&&(i+=1,g=a(this.handles[i])),j=this._start(b,i);if(j===!1)return!1;this._mouseSliding=!0,h._handleIndex=i,g.addClass("ui-state-active").focus(),k=g.offset(),l=!a(b.target).parents().andSelf().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:b.pageX-k.left-g.width()/2,top:b.pageY-k.top-g.height()/2-(parseInt(g.css("borderTopWidth"),10)||0)-(parseInt(g.css("borderBottomWidth"),10)||0)+(parseInt(g.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(b,i,e),this._animateOff=!0;return!0},_mouseStart:function(a){return!0},_mouseDrag:function(a){var b={x:a.pageX,y:a.pageY},c=this._normValueFromMouse(b);this._slide(a,this._handleIndex,c);return!1},_mouseStop:function(a){this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(a,this._handleIndex),this._change(a,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1;return!1},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(a){var b,c,d,e,f;this.orientation==="horizontal"?(b=this.elementSize.width,c=a.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(b=this.elementSize.height,c=a.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),d=c/b,d>1&&(d=1),d<0&&(d=0),this.orientation==="vertical"&&(d=1-d),e=this._valueMax()-this._valueMin(),f=this._valueMin()+d*e;return this._trimAlignValue(f)},_start:function(a,b){var c={handle:this.handles[b],value:this.value()};this.options.values&&this.options.values.length&&(c.value=this.values(b),c.values=this.values());return this._trigger("start",a,c)},_slide:function(a,b,c){var d,e,f;this.options.values&&this.options.values.length?(d=this.values(b?0:1),this.options.values.length===2&&this.options.range===!0&&(b===0&&c>d||b===1&&c<d)&&(c=d),c!==this.values(b)&&(e=this.values(),e[b]=c,f=this._trigger("slide",a,{handle:this.handles[b],value:c,values:e}),d=this.values(b?0:1),f!==!1&&this.values(b,c,!0))):c!==this.value()&&(f=this._trigger("slide",a,{handle:this.handles[b],value:c}),f!==!1&&this.value(c))},_stop:function(a,b){var c={handle:this.handles[b],value:this.value()};this.options.values&&this.options.values.length&&(c.value=this.values(b),c.values=this.values()),this._trigger("stop",a,c)},_change:function(a,b){if(!this._keySliding&&!this._mouseSliding){var c={handle:this.handles[b],value:this.value()};this.options.values&&this.options.values.length&&(c.value=this.values(b),c.values=this.values()),this._trigger("change",a,c)}},value:function(a){if(arguments.length)this.options.value=this._trimAlignValue(a),this._refreshValue(),this._change(null,0);else return this._value()},values:function(b,c){var d,e,f;if(arguments.length>1)this.options.values[b]=this._trimAlignValue(c),this._refreshValue(),this._change(null,b);else{if(!arguments.length)return this._values();if(!a.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(b):this.value();d=this.options.values,e=arguments[0];for(f=0;f<d.length;f+=1)d[f]=this._trimAlignValue(e[f]),this._change(null,f);this._refreshValue()}},_setOption:function(b,c){var d,e=0;a.isArray(this.options.values)&&(e=this.options.values.length),a.Widget.prototype._setOption.apply(this,arguments);switch(b){case"disabled":c?(this.handles.filter(".ui-state-focus").blur(),this.handles.removeClass("ui-state-hover"),this.handles.propAttr("disabled",!0),this.element.addClass("ui-disabled")):(this.handles.propAttr("disabled",!1),this.element.removeClass("ui-disabled"));break;case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue();break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":this._animateOff=!0,this._refreshValue();for(d=0;d<e;d+=1)this._change(null,d);this._animateOff=!1}},_value:function(){var a=this.options.value;a=this._trimAlignValue(a);return a},_values:function(a){var b,c,d;if(arguments.length){b=this.options.values[a],b=this._trimAlignValue(b);return b}c=this.options.values.slice();for(d=0;d<c.length;d+=1)c[d]=this._trimAlignValue(c[d]);return c},_trimAlignValue:function(a){if(a<=this._valueMin())return this._valueMin();if(a>=this._valueMax())return this._valueMax();var b=this.options.step>0?this.options.step:1,c=(a-this._valueMin())%b,d=a-c;Math.abs(c)*2>=b&&(d+=c>0?b:-b);return parseFloat(d.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var b=this.options.range,c=this.options,d=this,e=this._animateOff?!1:c.animate,f,g={},h,i,j,k;this.options.values&&this.options.values.length?this.handles.each(function(b,i){f=(d.values(b)-d._valueMin())/(d._valueMax()-d._valueMin())*100,g[d.orientation==="horizontal"?"left":"bottom"]=f+"%",a(this).stop(1,1)[e?"animate":"css"](g,c.animate),d.options.range===!0&&(d.orientation==="horizontal"?(b===0&&d.range.stop(1,1)[e?"animate":"css"]({left:f+"%"},c.animate),b===1&&d.range[e?"animate":"css"]({width:f-h+"%"},{queue:!1,duration:c.animate})):(b===0&&d.range.stop(1,1)[e?"animate":"css"]({bottom:f+"%"},c.animate),b===1&&d.range[e?"animate":"css"]({height:f-h+"%"},{queue:!1,duration:c.animate}))),h=f}):(i=this.value(),j=this._valueMin(),k=this._valueMax(),f=k!==j?(i-j)/(k-j)*100:0,g[d.orientation==="horizontal"?"left":"bottom"]=f+"%",this.handle.stop(1,1)[e?"animate":"css"](g,c.animate),b==="min"&&this.orientation==="horizontal"&&this.range.stop(1,1)[e?"animate":"css"]({width:f+"%"},c.animate),b==="max"&&this.orientation==="horizontal"&&this.range[e?"animate":"css"]({width:100-f+"%"},{queue:!1,duration:c.animate}),b==="min"&&this.orientation==="vertical"&&this.range.stop(1,1)[e?"animate":"css"]({height:f+"%"},c.animate),b==="max"&&this.orientation==="vertical"&&this.range[e?"animate":"css"]({height:100-f+"%"},{queue:!1,duration:c.animate}))}}),a.extend(a.ui.slider,{version:"1.8.17"})})(jQuery);
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/jquery-ui/jquery-ui-1.8.custom.min.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/jquery-ui/jquery-ui-1.8.custom.min.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/jquery-ui/jquery-ui-1.8.custom.min.js	(revision 29468)
@@ -0,0 +1,84 @@
+/*!
+ * jQuery UI 1.8
+ *
+ * Copyright (c) 2010 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 1.8
+ *
+ * Copyright (c) 2010 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(a){a.ui={version:"1.8",plugin:{add:function(c,d,f){var e=a.ui[c].prototype;for(var b in f){e.plugins[b]=e.plugins[b]||[];e.plugins[b].push([d,f[b]])}},call:function(b,d,c){var f=b.plugins[d];if(!f||!b.element[0].parentNode){return}for(var e=0;e<f.length;e++){if(b.options[f[e][0]]){f[e][1].apply(b.element,c)}}}},contains:function(d,c){return document.compareDocumentPosition?d.compareDocumentPosition(c)&16:d!==c&&d.contains(c)},hasScroll:function(e,c){if(a(e).css("overflow")=="hidden"){return false}var b=(c&&c=="left")?"scrollLeft":"scrollTop",d=false;if(e[b]>0){return true}e[b]=1;d=(e[b]>0);e[b]=0;return d},isOverAxis:function(c,b,d){return(c>b)&&(c<(b+d))},isOver:function(g,c,f,e,b,d){return a.ui.isOverAxis(g,f,b)&&a.ui.isOverAxis(c,e,d)},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}};a.fn.extend({_focus:a.fn.focus,focus:function(b,c){return typeof b==="number"?this.each(function(){var d=this;setTimeout(function(){a(d).focus();(c&&c.call(d))},b)}):this._focus.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 b;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){b=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{b=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!b.length?a(document):b},zIndex:function(e){if(e!==undefined){return this.css("zIndex",e)}if(this.length){var c=a(this[0]),b,d;while(c.length&&c[0]!==document){b=c.css("position");if(b=="absolute"||b=="relative"||b=="fixed"){d=parseInt(c.css("zIndex"));if(!isNaN(d)&&d!=0){return d}}c=c.parent()}}return 0}});a.extend(a.expr[":"],{data:function(d,c,b){return !!a.data(d,b[3])},focusable:function(c){var d=c.nodeName.toLowerCase(),b=a.attr(c,"tabindex");return(/input|select|textarea|button|object/.test(d)?!c.disabled:"a"==d||"area"==d?c.href||!isNaN(b):!isNaN(b))&&!a(c)["area"==d?"parents":"closest"](":hidden").length},tabbable:function(c){var b=a.attr(c,"tabindex");return(isNaN(b)||b>=0)&&a(c).is(":focusable")}})})(jQuery);;/*!
+ * jQuery UI Widget 1.8
+ *
+ * Copyright (c) 2010 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/Widget
+ *//*
+ * jQuery UI Widget 1.8
+ *
+ * Copyright (c) 2010 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/Widget
+ */
+(function(b){var a=b.fn.remove;b.fn.remove=function(c,d){return this.each(function(){if(!d){if(!c||b.filter(c,[this]).length){b("*",this).add(this).each(function(){b(this).triggerHandler("remove")})}}return a.call(b(this),c,d)})};b.widget=function(d,f,c){var e=d.split(".")[0],h;d=d.split(".")[1];h=e+"-"+d;if(!c){c=f;f=b.Widget}b.expr[":"][h]=function(i){return !!b.data(i,d)};b[e]=b[e]||{};b[e][d]=function(i,j){if(arguments.length){this._createWidget(i,j)}};var g=new f();g.options=b.extend({},g.options);b[e][d].prototype=b.extend(true,g,{namespace:e,widgetName:d,widgetEventPrefix:b[e][d].prototype.widgetEventPrefix||d,widgetBaseClass:h},c);b.widget.bridge(d,b[e][d])};b.widget.bridge=function(d,c){b.fn[d]=function(g){var e=typeof g==="string",f=Array.prototype.slice.call(arguments,1),h=this;g=!e&&f.length?b.extend.apply(null,[true,g].concat(f)):g;if(e&&g.substring(0,1)==="_"){return h}if(e){this.each(function(){var i=b.data(this,d),j=i&&b.isFunction(i[g])?i[g].apply(i,f):i;if(j!==i&&j!==undefined){h=j;return false}})}else{this.each(function(){var i=b.data(this,d);if(i){if(g){i.option(g)}i._init()}else{b.data(this,d,new c(g,this))}})}return h}};b.Widget=function(c,d){if(arguments.length){this._createWidget(c,d)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(d,e){this.element=b(e).data(this.widgetName,this);this.options=b.extend(true,{},this.options,b.metadata&&b.metadata.get(e)[this.widgetName],d);var c=this;this.element.bind("remove."+this.widgetName,function(){c.destroy()});this._create();this._init()},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled")},widget:function(){return this.element},option:function(e,f){var d=e,c=this;if(arguments.length===0){return b.extend({},c.options)}if(typeof e==="string"){if(f===undefined){return this.options[e]}d={};d[e]=f}b.each(d,function(g,h){c._setOption(g,h)});return c},_setOption:function(c,d){this.options[c]=d;if(c==="disabled"){this.widget()[d?"addClass":"removeClass"](this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").attr("aria-disabled",d)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(d,e,f){var h=this.options[d];e=b.Event(e);e.type=(d===this.widgetEventPrefix?d:this.widgetEventPrefix+d).toLowerCase();f=f||{};if(e.originalEvent){for(var c=b.event.props.length,g;c;){g=b.event.props[--c];e[g]=e.originalEvent[g]}}this.element.trigger(e,f);return !(b.isFunction(h)&&h.call(this.element[0],e,f)===false||e.isDefaultPrevented())}}})(jQuery);;/*!
+ * jQuery UI Mouse 1.8
+ *
+ * Copyright (c) 2010 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/Mouse
+ *
+ * Depends:
+ *	jquery.ui.widget.js
+ *//*
+ * jQuery UI Mouse 1.8
+ *
+ * Copyright (c) 2010 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/Mouse
+ *
+ * Depends:
+ *	jquery.ui.widget.js
+ */
+(function(a){a.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var b=this;this.element.bind("mousedown."+this.widgetName,function(c){return b._mouseDown(c)}).bind("click."+this.widgetName,function(c){if(b._preventClickEvent){b._preventClickEvent=false;c.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(d){d.originalEvent=d.originalEvent||{};if(d.originalEvent.mouseHandled){return}(this._mouseStarted&&this._mouseUp(d));this._mouseDownEvent=d;var c=this,e=(d.which==1),b=(typeof this.options.cancel=="string"?a(d.target).parents().add(d.target).filter(this.options.cancel).length:false);if(!e||b||!this._mouseCapture(d)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){c.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(d)!==false);if(!this._mouseStarted){d.preventDefault();return true}}this._mouseMoveDelegate=function(f){return c._mouseMove(f)};this._mouseUpDelegate=function(f){return c._mouseUp(f)};a(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);(a.browser.safari||d.preventDefault());d.originalEvent.mouseHandled=true;return true},_mouseMove:function(b){if(a.browser.msie&&!b.button){return this._mouseUp(b)}if(this._mouseStarted){this._mouseDrag(b);return b.preventDefault()}if(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,b)!==false);(this._mouseStarted?this._mouseDrag(b):this._mouseUp(b))}return !this._mouseStarted},_mouseUp:function(b){a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=(b.target==this._mouseDownEvent.target);this._mouseStop(b)}return false},_mouseDistanceMet:function(b){return(Math.max(Math.abs(this._mouseDownEvent.pageX-b.pageX),Math.abs(this._mouseDownEvent.pageY-b.pageY))>=this.options.distance)},_mouseDelayMet:function(b){return this.mouseDelayMet},_mouseStart:function(b){},_mouseDrag:function(b){},_mouseStop:function(b){},_mouseCapture:function(b){return true}})})(jQuery);;/*
+ * jQuery UI Draggable 1.8
+ *
+ * Copyright (c) 2010 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/Draggables
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.widget.js
+ */(function(a){a.widget("ui.draggable",a.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){if(this.options.helper=="original"&&!(/^(?:r|a|f)/).test(this.element.css("position"))){this.element[0].style.position="relative"}(this.options.addClasses&&this.element.addClass("ui-draggable"));(this.options.disabled&&this.element.addClass("ui-draggable-disabled"));this._mouseInit()},destroy:function(){if(!this.element.data("draggable")){return}this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this},_mouseCapture:function(b){var c=this.options;if(this.helper||c.disabled||a(b.target).is(".ui-resizable-handle")){return false}this.handle=this._getHandle(b);if(!this.handle){return false}return true},_mouseStart:function(b){var c=this.options;this.helper=this._createHelper(b);this._cacheHelperProportions();if(a.ui.ddmanager){a.ui.ddmanager.current=this}this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this.position=this._generatePosition(b);this.originalPageX=b.pageX;this.originalPageY=b.pageY;(c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt));if(c.containment){this._setContainment()}if(this._trigger("start",b)===false){this._clear();return false}this._cacheHelperProportions();if(a.ui.ddmanager&&!c.dropBehaviour){a.ui.ddmanager.prepareOffsets(this,b)}this.helper.addClass("ui-draggable-dragging");this._mouseDrag(b,true);return true},_mouseDrag:function(b,d){this.position=this._generatePosition(b);this.positionAbs=this._convertPositionTo("absolute");if(!d){var c=this._uiHash();if(this._trigger("drag",b,c)===false){this._mouseUp({});return false}this.position=c.position}if(!this.options.axis||this.options.axis!="y"){this.helper[0].style.left=this.position.left+"px"}if(!this.options.axis||this.options.axis!="x"){this.helper[0].style.top=this.position.top+"px"}if(a.ui.ddmanager){a.ui.ddmanager.drag(this,b)}return false},_mouseStop:function(c){var d=false;if(a.ui.ddmanager&&!this.options.dropBehaviour){d=a.ui.ddmanager.drop(this,c)}if(this.dropped){d=this.dropped;this.dropped=false}if(!this.element[0]||!this.element[0].parentNode){return false}if((this.options.revert=="invalid"&&!d)||(this.options.revert=="valid"&&d)||this.options.revert===true||(a.isFunction(this.options.revert)&&this.options.revert.call(this.element,d))){var b=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){if(b._trigger("stop",c)!==false){b._clear()}})}else{if(this._trigger("stop",c)!==false){this._clear()}}return false},cancel:function(){if(this.helper.is(".ui-draggable-dragging")){this._mouseUp({})}else{this._clear()}return this},_getHandle:function(b){var c=!this.options.handle||!a(this.options.handle,this.element).length?true:false;a(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==b.target){c=true}});return c},_createHelper:function(c){var d=this.options;var b=a.isFunction(d.helper)?a(d.helper.apply(this.element[0],[c])):(d.helper=="clone"?this.element.clone():this.element);if(!b.parents("body").length){b.appendTo((d.appendTo=="parent"?this.element[0].parentNode:d.appendTo))}if(b[0]!=this.element[0]&&!(/(fixed|absolute)/).test(b.css("position"))){b.css("position","absolute")}return b},_adjustOffsetFromHelper:function(b){if(typeof b=="string"){b=b.split(" ")}if(a.isArray(b)){b={left:+b[0],top:+b[1]||0}}if("left" in b){this.offset.click.left=b.left+this.margins.left}if("right" in b){this.offset.click.left=this.helperProportions.width-b.right+this.margins.left}if("top" in b){this.offset.click.top=b.top+this.margins.top}if("bottom" in b){this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top}},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])){b.left+=this.scrollParent.scrollLeft();b.top+=this.scrollParent.scrollTop()}if((this.offsetParent[0]==document.body)||(this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)){b={top:0,left:0}}return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var b=this.element.position();return{top:b.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:b.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else{return{top:0,left:0}}},_cacheMargins:function(){this.margins={left:(parseInt(this.element.css("marginLeft"),10)||0),top:(parseInt(this.element.css("marginTop"),10)||0)}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e=this.options;if(e.containment=="parent"){e.containment=this.helper[0].parentNode}if(e.containment=="document"||e.containment=="window"){this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,a(e.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a(e.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]}if(!(/^(document|window|parent)$/).test(e.containment)&&e.containment.constructor!=Array){var c=a(e.containment)[0];if(!c){return}var d=a(e.containment).offset();var b=(a(c).css("overflow")!="hidden");this.containment=[d.left+(parseInt(a(c).css("borderLeftWidth"),10)||0)+(parseInt(a(c).css("paddingLeft"),10)||0)-this.margins.left,d.top+(parseInt(a(c).css("borderTopWidth"),10)||0)+(parseInt(a(c).css("paddingTop"),10)||0)-this.margins.top,d.left+(b?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(a(c).css("borderLeftWidth"),10)||0)-(parseInt(a(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,d.top+(b?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(a(c).css("borderTopWidth"),10)||0)-(parseInt(a(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}else{if(e.containment.constructor==Array){this.containment=e.containment}}},_convertPositionTo:function(f,h){if(!h){h=this.position}var c=f=="absolute"?1:-1;var e=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=(/(html|body)/i).test(b[0].tagName);return{top:(h.top+this.offset.relative.top*c+this.offset.parent.top*c-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(g?0:b.scrollTop()))*c)),left:(h.left+this.offset.relative.left*c+this.offset.parent.left*c-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:b.scrollLeft())*c))}},_generatePosition:function(e){var h=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,i=(/(html|body)/i).test(b[0].tagName);var d=e.pageX;var c=e.pageY;if(this.originalPosition){if(this.containment){if(e.pageX-this.offset.click.left<this.containment[0]){d=this.containment[0]+this.offset.click.left}if(e.pageY-this.offset.click.top<this.containment[1]){c=this.containment[1]+this.offset.click.top}if(e.pageX-this.offset.click.left>this.containment[2]){d=this.containment[2]+this.offset.click.left}if(e.pageY-this.offset.click.top>this.containment[3]){c=this.containment[3]+this.offset.click.top}}if(h.grid){var g=this.originalPageY+Math.round((c-this.originalPageY)/h.grid[1])*h.grid[1];c=this.containment?(!(g-this.offset.click.top<this.containment[1]||g-this.offset.click.top>this.containment[3])?g:(!(g-this.offset.click.top<this.containment[1])?g-h.grid[1]:g+h.grid[1])):g;var f=this.originalPageX+Math.round((d-this.originalPageX)/h.grid[0])*h.grid[0];d=this.containment?(!(f-this.offset.click.left<this.containment[0]||f-this.offset.click.left>this.containment[2])?f:(!(f-this.offset.click.left<this.containment[0])?f-h.grid[0]:f+h.grid[0])):f}}return{top:(c-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(i?0:b.scrollTop())))),left:(d-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():i?0:b.scrollLeft())))}},_clear:function(){this.helper.removeClass("ui-draggable-dragging");if(this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval){this.helper.remove()}this.helper=null;this.cancelHelperRemoval=false},_trigger:function(b,c,d){d=d||this._uiHash();a.ui.plugin.call(this,b,[c,d]);if(b=="drag"){this.positionAbs=this._convertPositionTo("absolute")}return a.Widget.prototype._trigger.call(this,b,c,d)},plugins:{},_uiHash:function(b){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}});a.extend(a.ui.draggable,{version:"1.8"});a.ui.plugin.add("draggable","connectToSortable",{start:function(c,e){var d=a(this).data("draggable"),f=d.options,b=a.extend({},e,{item:d.element});d.sortables=[];a(f.connectToSortable).each(function(){var g=a.data(this,"sortable");if(g&&!g.options.disabled){d.sortables.push({instance:g,shouldRevert:g.options.revert});g._refreshItems();g._trigger("activate",c,b)}})},stop:function(c,e){var d=a(this).data("draggable"),b=a.extend({},e,{item:d.element});a.each(d.sortables,function(){if(this.instance.isOver){this.instance.isOver=0;d.cancelHelperRemoval=true;this.instance.cancelHelperRemoval=false;if(this.shouldRevert){this.instance.options.revert=true}this.instance._mouseStop(c);this.instance.options.helper=this.instance.options._helper;if(d.options.helper=="original"){this.instance.currentItem.css({top:"auto",left:"auto"})}}else{this.instance.cancelHelperRemoval=false;this.instance._trigger("deactivate",c,b)}})},drag:function(c,f){var e=a(this).data("draggable"),b=this;var d=function(i){var n=this.offset.click.top,m=this.offset.click.left;var g=this.positionAbs.top,k=this.positionAbs.left;var j=i.height,l=i.width;var p=i.top,h=i.left;return a.ui.isOver(g+n,k+m,p,h,j,l)};a.each(e.sortables,function(g){this.instance.positionAbs=e.positionAbs;this.instance.helperProportions=e.helperProportions;this.instance.offset.click=e.offset.click;if(this.instance._intersectsWith(this.instance.containerCache)){if(!this.instance.isOver){this.instance.isOver=1;this.instance.currentItem=a(b).clone().appendTo(this.instance.element).data("sortable-item",true);this.instance.options._helper=this.instance.options.helper;this.instance.options.helper=function(){return f.helper[0]};c.target=this.instance.currentItem[0];this.instance._mouseCapture(c,true);this.instance._mouseStart(c,true,true);this.instance.offset.click.top=e.offset.click.top;this.instance.offset.click.left=e.offset.click.left;this.instance.offset.parent.left-=e.offset.parent.left-this.instance.offset.parent.left;this.instance.offset.parent.top-=e.offset.parent.top-this.instance.offset.parent.top;e._trigger("toSortable",c);e.dropped=this.instance.element;e.currentItem=e.element;this.instance.fromOutside=e}if(this.instance.currentItem){this.instance._mouseDrag(c)}}else{if(this.instance.isOver){this.instance.isOver=0;this.instance.cancelHelperRemoval=true;this.instance.options.revert=false;this.instance._trigger("out",c,this.instance._uiHash(this.instance));this.instance._mouseStop(c,true);this.instance.options.helper=this.instance.options._helper;this.instance.currentItem.remove();if(this.instance.placeholder){this.instance.placeholder.remove()}e._trigger("fromSortable",c);e.dropped=false}}})}});a.ui.plugin.add("draggable","cursor",{start:function(c,d){var b=a("body"),e=a(this).data("draggable").options;if(b.css("cursor")){e._cursor=b.css("cursor")}b.css("cursor",e.cursor)},stop:function(b,c){var d=a(this).data("draggable").options;if(d._cursor){a("body").css("cursor",d._cursor)}}});a.ui.plugin.add("draggable","iframeFix",{start:function(b,c){var d=a(this).data("draggable").options;a(d.iframeFix===true?"iframe":d.iframeFix).each(function(){a('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1000}).css(a(this).offset()).appendTo("body")})},stop:function(b,c){a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)})}});a.ui.plugin.add("draggable","opacity",{start:function(c,d){var b=a(d.helper),e=a(this).data("draggable").options;if(b.css("opacity")){e._opacity=b.css("opacity")}b.css("opacity",e.opacity)},stop:function(b,c){var d=a(this).data("draggable").options;if(d._opacity){a(c.helper).css("opacity",d._opacity)}}});a.ui.plugin.add("draggable","scroll",{start:function(c,d){var b=a(this).data("draggable");if(b.scrollParent[0]!=document&&b.scrollParent[0].tagName!="HTML"){b.overflowOffset=b.scrollParent.offset()}},drag:function(d,e){var c=a(this).data("draggable"),f=c.options,b=false;if(c.scrollParent[0]!=document&&c.scrollParent[0].tagName!="HTML"){if(!f.axis||f.axis!="x"){if((c.overflowOffset.top+c.scrollParent[0].offsetHeight)-d.pageY<f.scrollSensitivity){c.scrollParent[0].scrollTop=b=c.scrollParent[0].scrollTop+f.scrollSpeed}else{if(d.pageY-c.overflowOffset.top<f.scrollSensitivity){c.scrollParent[0].scrollTop=b=c.scrollParent[0].scrollTop-f.scrollSpeed}}}if(!f.axis||f.axis!="y"){if((c.overflowOffset.left+c.scrollParent[0].offsetWidth)-d.pageX<f.scrollSensitivity){c.scrollParent[0].scrollLeft=b=c.scrollParent[0].scrollLeft+f.scrollSpeed}else{if(d.pageX-c.overflowOffset.left<f.scrollSensitivity){c.scrollParent[0].scrollLeft=b=c.scrollParent[0].scrollLeft-f.scrollSpeed}}}}else{if(!f.axis||f.axis!="x"){if(d.pageY-a(document).scrollTop()<f.scrollSensitivity){b=a(document).scrollTop(a(document).scrollTop()-f.scrollSpeed)}else{if(a(window).height()-(d.pageY-a(document).scrollTop())<f.scrollSensitivity){b=a(document).scrollTop(a(document).scrollTop()+f.scrollSpeed)}}}if(!f.axis||f.axis!="y"){if(d.pageX-a(document).scrollLeft()<f.scrollSensitivity){b=a(document).scrollLeft(a(document).scrollLeft()-f.scrollSpeed)}else{if(a(window).width()-(d.pageX-a(document).scrollLeft())<f.scrollSensitivity){b=a(document).scrollLeft(a(document).scrollLeft()+f.scrollSpeed)}}}}if(b!==false&&a.ui.ddmanager&&!f.dropBehaviour){a.ui.ddmanager.prepareOffsets(c,d)}}});a.ui.plugin.add("draggable","snap",{start:function(c,d){var b=a(this).data("draggable"),e=b.options;b.snapElements=[];a(e.snap.constructor!=String?(e.snap.items||":data(draggable)"):e.snap).each(function(){var g=a(this);var f=g.offset();if(this!=b.element[0]){b.snapElements.push({item:this,width:g.outerWidth(),height:g.outerHeight(),top:f.top,left:f.left})}})},drag:function(u,p){var g=a(this).data("draggable"),q=g.options;var y=q.snapTolerance;var x=p.offset.left,w=x+g.helperProportions.width,f=p.offset.top,e=f+g.helperProportions.height;for(var v=g.snapElements.length-1;v>=0;v--){var s=g.snapElements[v].left,n=s+g.snapElements[v].width,m=g.snapElements[v].top,A=m+g.snapElements[v].height;if(!((s-y<x&&x<n+y&&m-y<f&&f<A+y)||(s-y<x&&x<n+y&&m-y<e&&e<A+y)||(s-y<w&&w<n+y&&m-y<f&&f<A+y)||(s-y<w&&w<n+y&&m-y<e&&e<A+y))){if(g.snapElements[v].snapping){(g.options.snap.release&&g.options.snap.release.call(g.element,u,a.extend(g._uiHash(),{snapItem:g.snapElements[v].item})))}g.snapElements[v].snapping=false;continue}if(q.snapMode!="inner"){var c=Math.abs(m-e)<=y;var z=Math.abs(A-f)<=y;var j=Math.abs(s-w)<=y;var k=Math.abs(n-x)<=y;if(c){p.position.top=g._convertPositionTo("relative",{top:m-g.helperProportions.height,left:0}).top-g.margins.top}if(z){p.position.top=g._convertPositionTo("relative",{top:A,left:0}).top-g.margins.top}if(j){p.position.left=g._convertPositionTo("relative",{top:0,left:s-g.helperProportions.width}).left-g.margins.left}if(k){p.position.left=g._convertPositionTo("relative",{top:0,left:n}).left-g.margins.left}}var h=(c||z||j||k);if(q.snapMode!="outer"){var c=Math.abs(m-f)<=y;var z=Math.abs(A-e)<=y;var j=Math.abs(s-x)<=y;var k=Math.abs(n-w)<=y;if(c){p.position.top=g._convertPositionTo("relative",{top:m,left:0}).top-g.margins.top}if(z){p.position.top=g._convertPositionTo("relative",{top:A-g.helperProportions.height,left:0}).top-g.margins.top}if(j){p.position.left=g._convertPositionTo("relative",{top:0,left:s}).left-g.margins.left}if(k){p.position.left=g._convertPositionTo("relative",{top:0,left:n-g.helperProportions.width}).left-g.margins.left}}if(!g.snapElements[v].snapping&&(c||z||j||k||h)){(g.options.snap.snap&&g.options.snap.snap.call(g.element,u,a.extend(g._uiHash(),{snapItem:g.snapElements[v].item})))}g.snapElements[v].snapping=(c||z||j||k||h)}}});a.ui.plugin.add("draggable","stack",{start:function(c,d){var f=a(this).data("draggable").options;var e=a.makeArray(a(f.stack)).sort(function(h,g){return(parseInt(a(h).css("zIndex"),10)||0)-(parseInt(a(g).css("zIndex"),10)||0)});if(!e.length){return}var b=parseInt(e[0].style.zIndex)||0;a(e).each(function(g){this.style.zIndex=b+g});this[0].style.zIndex=b+e.length}});a.ui.plugin.add("draggable","zIndex",{start:function(c,d){var b=a(d.helper),e=a(this).data("draggable").options;if(b.css("zIndex")){e._zIndex=b.css("zIndex")}b.css("zIndex",e.zIndex)},stop:function(b,c){var d=a(this).data("draggable").options;if(d._zIndex){a(c.helper).css("zIndex",d._zIndex)}}})})(jQuery);;/*
+ * jQuery UI Slider 1.8
+ *
+ * Copyright (c) 2010 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/Slider
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.widget.js
+ */(function(b){var a=5;b.widget("ui.slider",b.ui.mouse,{widgetEventPrefix:"slide",options:{animate:false,distance:0,max:100,min:0,orientation:"horizontal",range:false,step:1,value:0,values:null},_create:function(){var c=this,d=this.options;this._keySliding=false;this._mouseSliding=false;this._animateOff=true;this._handleIndex=null;this._detectOrientation();this._mouseInit();this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget ui-widget-content ui-corner-all");if(d.disabled){this.element.addClass("ui-slider-disabled ui-disabled")}this.range=b([]);if(d.range){if(d.range===true){this.range=b("<div></div>");if(!d.values){d.values=[this._valueMin(),this._valueMin()]}if(d.values.length&&d.values.length!=2){d.values=[d.values[0],d.values[0]]}}else{this.range=b("<div></div>")}this.range.appendTo(this.element).addClass("ui-slider-range");if(d.range=="min"||d.range=="max"){this.range.addClass("ui-slider-range-"+d.range)}this.range.addClass("ui-widget-header")}if(b(".ui-slider-handle",this.element).length==0){b('<a href="#"></a>').appendTo(this.element).addClass("ui-slider-handle")}if(d.values&&d.values.length){while(b(".ui-slider-handle",this.element).length<d.values.length){b('<a href="#"></a>').appendTo(this.element).addClass("ui-slider-handle")}}this.handles=b(".ui-slider-handle",this.element).addClass("ui-state-default ui-corner-all");this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(e){e.preventDefault()}).hover(function(){if(!d.disabled){b(this).addClass("ui-state-hover")}},function(){b(this).removeClass("ui-state-hover")}).focus(function(){if(!d.disabled){b(".ui-slider .ui-state-focus").removeClass("ui-state-focus");b(this).addClass("ui-state-focus")}else{b(this).blur()}}).blur(function(){b(this).removeClass("ui-state-focus")});this.handles.each(function(e){b(this).data("index.ui-slider-handle",e)});this.handles.keydown(function(j){var g=true;var f=b(this).data("index.ui-slider-handle");if(c.options.disabled){return}switch(j.keyCode){case b.ui.keyCode.HOME:case b.ui.keyCode.END:case b.ui.keyCode.PAGE_UP:case b.ui.keyCode.PAGE_DOWN:case b.ui.keyCode.UP:case b.ui.keyCode.RIGHT:case b.ui.keyCode.DOWN:case b.ui.keyCode.LEFT:g=false;if(!c._keySliding){c._keySliding=true;b(this).addClass("ui-state-active");c._start(j,f)}break}var h,e,i=c._step();if(c.options.values&&c.options.values.length){h=e=c.values(f)}else{h=e=c.value()}switch(j.keyCode){case b.ui.keyCode.HOME:e=c._valueMin();break;case b.ui.keyCode.END:e=c._valueMax();break;case b.ui.keyCode.PAGE_UP:e=h+((c._valueMax()-c._valueMin())/a);break;case b.ui.keyCode.PAGE_DOWN:e=h-((c._valueMax()-c._valueMin())/a);break;case b.ui.keyCode.UP:case b.ui.keyCode.RIGHT:if(h==c._valueMax()){return}e=h+i;break;case b.ui.keyCode.DOWN:case b.ui.keyCode.LEFT:if(h==c._valueMin()){return}e=h-i;break}c._slide(j,f,e);return g}).keyup(function(f){var e=b(this).data("index.ui-slider-handle");if(c._keySliding){c._keySliding=false;c._stop(f,e);c._change(f,e);b(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");this._mouseDestroy();return this},_mouseCapture:function(e){var f=this.options;if(f.disabled){return false}this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();var i={x:e.pageX,y:e.pageY};var k=this._normValueFromMouse(i);var d=this._valueMax()-this._valueMin()+1,g;var l=this,j;this.handles.each(function(m){var n=Math.abs(k-l.values(m));if(d>n){d=n;g=b(this);j=m}});if(f.range==true&&this.values(1)==f.min){g=b(this.handles[++j])}this._start(e,j);this._mouseSliding=true;l._handleIndex=j;g.addClass("ui-state-active").focus();var h=g.offset();var c=!b(e.target).parents().andSelf().is(".ui-slider-handle");this._clickOffset=c?{left:0,top:0}:{left:e.pageX-h.left-(g.width()/2),top:e.pageY-h.top-(g.height()/2)-(parseInt(g.css("borderTopWidth"),10)||0)-(parseInt(g.css("borderBottomWidth"),10)||0)+(parseInt(g.css("marginTop"),10)||0)};k=this._normValueFromMouse(i);this._slide(e,j,k);this._animateOff=true;return true},_mouseStart:function(c){return true},_mouseDrag:function(e){var c={x:e.pageX,y:e.pageY};var d=this._normValueFromMouse(c);this._slide(e,this._handleIndex,d);return false},_mouseStop:function(c){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(c,this._handleIndex);this._change(c,this._handleIndex);this._handleIndex=null;this._clickOffset=null;this._animateOff=false;return false},_detectOrientation:function(){this.orientation=this.options.orientation=="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(e){var d,i;if("horizontal"==this.orientation){d=this.elementSize.width;i=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{d=this.elementSize.height;i=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}var g=(i/d);if(g>1){g=1}if(g<0){g=0}if("vertical"==this.orientation){g=1-g}var f=this._valueMax()-this._valueMin(),j=g*f,c=j%this.options.step,h=this._valueMin()+j-c;if(c>(this.options.step/2)){h+=this.options.step}return parseFloat(h.toFixed(5))},_start:function(e,d){var c={handle:this.handles[d],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(d);c.values=this.values()}this._trigger("start",e,c)},_slide:function(g,f,e){var h=this.handles[f];if(this.options.values&&this.options.values.length){var c=this.values(f?0:1);if((this.options.values.length==2&&this.options.range===true)&&((f==0&&e>c)||(f==1&&e<c))){e=c}if(e!=this.values(f)){var d=this.values();d[f]=e;var i=this._trigger("slide",g,{handle:this.handles[f],value:e,values:d});var c=this.values(f?0:1);if(i!==false){this.values(f,e,true)}}}else{if(e!=this.value()){var i=this._trigger("slide",g,{handle:this.handles[f],value:e});if(i!==false){this.value(e)}}}},_stop:function(e,d){var c={handle:this.handles[d],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(d);c.values=this.values()}this._trigger("stop",e,c)},_change:function(e,d){if(!this._keySliding&&!this._mouseSliding){var c={handle:this.handles[d],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(d);c.values=this.values()}this._trigger("change",e,c)}},value:function(c){if(arguments.length){this.options.value=this._trimValue(c);this._refreshValue();this._change(null,0)}return this._value()},values:function(e,h){if(arguments.length>1){this.options.values[e]=this._trimValue(h);this._refreshValue();this._change(null,e)}if(arguments.length){if(b.isArray(arguments[0])){var g=this.options.values,d=arguments[0];for(var f=0,c=g.length;f<c;f++){g[f]=this._trimValue(d[f]);this._change(null,f)}this._refreshValue()}else{if(this.options.values&&this.options.values.length){return this._values(e)}else{return this.value()}}}else{return this._values()}},_setOption:function(d,e){var c,f=0;if(jQuery.isArray(this.options.values)){f=this.options.values.length}b.Widget.prototype._setOption.apply(this,arguments);switch(d){case"disabled":if(e){this.handles.filter(".ui-state-focus").blur();this.handles.removeClass("ui-state-hover");this.handles.attr("disabled","disabled");this.element.addClass("ui-disabled")}else{this.handles.removeAttr("disabled");this.element.removeClass("ui-disabled")}case"orientation":this._detectOrientation();this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation);this._refreshValue();break;case"value":this._animateOff=true;this._refreshValue();this._change(null,0);this._animateOff=false;break;case"values":this._animateOff=true;this._refreshValue();for(c=0;c<f;c++){this._change(null,c)}this._animateOff=false;break}},_step:function(){var c=this.options.step;return c},_value:function(){var c=this.options.value;c=this._trimValue(c);return c},_values:function(d){if(arguments.length){var g=this.options.values[d];g=this._trimValue(g);return g}else{var f=this.options.values.slice();for(var e=0,c=f.length;e<c;e++){f[e]=this._trimValue(f[e])}return f}},_trimValue:function(c){if(c<this._valueMin()){c=this._valueMin()}if(c>this._valueMax()){c=this._valueMax()}return c},_valueMin:function(){var c=this.options.min;return c},_valueMax:function(){var c=this.options.max;return c},_refreshValue:function(){var g=this.options.range,e=this.options,m=this;var d=(!this._animateOff)?e.animate:false;if(this.options.values&&this.options.values.length){var j,i;this.handles.each(function(q,o){var p=(m.values(q)-m._valueMin())/(m._valueMax()-m._valueMin())*100;var n={};n[m.orientation=="horizontal"?"left":"bottom"]=p+"%";b(this).stop(1,1)[d?"animate":"css"](n,e.animate);if(m.options.range===true){if(m.orientation=="horizontal"){(q==0)&&m.range.stop(1,1)[d?"animate":"css"]({left:p+"%"},e.animate);(q==1)&&m.range[d?"animate":"css"]({width:(p-lastValPercent)+"%"},{queue:false,duration:e.animate})}else{(q==0)&&m.range.stop(1,1)[d?"animate":"css"]({bottom:(p)+"%"},e.animate);(q==1)&&m.range[d?"animate":"css"]({height:(p-lastValPercent)+"%"},{queue:false,duration:e.animate})}}lastValPercent=p})}else{var k=this.value(),h=this._valueMin(),l=this._valueMax(),f=l!=h?(k-h)/(l-h)*100:0;var c={};c[m.orientation=="horizontal"?"left":"bottom"]=f+"%";this.handle.stop(1,1)[d?"animate":"css"](c,e.animate);(g=="min")&&(this.orientation=="horizontal")&&this.range.stop(1,1)[d?"animate":"css"]({width:f+"%"},e.animate);(g=="max")&&(this.orientation=="horizontal")&&this.range[d?"animate":"css"]({width:(100-f)+"%"},{queue:false,duration:e.animate});(g=="min")&&(this.orientation=="vertical")&&this.range.stop(1,1)[d?"animate":"css"]({height:f+"%"},e.animate);(g=="max")&&(this.orientation=="vertical")&&this.range[d?"animate":"css"]({height:(100-f)+"%"},{queue:false,duration:e.animate})}}});b.extend(b.ui.slider,{version:"1.8"})})(jQuery);;
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/jquery.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/jquery.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/jquery.js	(revision 29468)
@@ -0,0 +1,2 @@
+/*! jQuery v1.8.3 jquery.com | jquery.org/license */
+(function(e,t){function _(e){var t=M[e]={};return v.each(e.split(y),function(e,n){t[n]=!0}),t}function H(e,n,r){if(r===t&&e.nodeType===1){var i="data-"+n.replace(P,"-$1").toLowerCase();r=e.getAttribute(i);if(typeof r=="string"){try{r=r==="true"?!0:r==="false"?!1:r==="null"?null:+r+""===r?+r:D.test(r)?v.parseJSON(r):r}catch(s){}v.data(e,n,r)}else r=t}return r}function B(e){var t;for(t in e){if(t==="data"&&v.isEmptyObject(e[t]))continue;if(t!=="toJSON")return!1}return!0}function et(){return!1}function tt(){return!0}function ut(e){return!e||!e.parentNode||e.parentNode.nodeType===11}function at(e,t){do e=e[t];while(e&&e.nodeType!==1);return e}function ft(e,t,n){t=t||0;if(v.isFunction(t))return v.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return v.grep(e,function(e,r){return e===t===n});if(typeof t=="string"){var r=v.grep(e,function(e){return e.nodeType===1});if(it.test(t))return v.filter(t,r,!n);t=v.filter(t,r)}return v.grep(e,function(e,r){return v.inArray(e,t)>=0===n})}function lt(e){var t=ct.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function At(e,t){if(t.nodeType!==1||!v.hasData(e))return;var n,r,i,s=v._data(e),o=v._data(t,s),u=s.events;if(u){delete o.handle,o.events={};for(n in u)for(r=0,i=u[n].length;r<i;r++)v.event.add(t,n,u[n][r])}o.data&&(o.data=v.extend({},o.data))}function Ot(e,t){var n;if(t.nodeType!==1)return;t.clearAttributes&&t.clearAttributes(),t.mergeAttributes&&t.mergeAttributes(e),n=t.nodeName.toLowerCase(),n==="object"?(t.parentNode&&(t.outerHTML=e.outerHTML),v.support.html5Clone&&e.innerHTML&&!v.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):n==="input"&&Et.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):n==="option"?t.selected=e.defaultSelected:n==="input"||n==="textarea"?t.defaultValue=e.defaultValue:n==="script"&&t.text!==e.text&&(t.text=e.text),t.removeAttribute(v.expando)}function Mt(e){return typeof e.getElementsByTagName!="undefined"?e.getElementsByTagName("*"):typeof e.querySelectorAll!="undefined"?e.querySelectorAll("*"):[]}function _t(e){Et.test(e.type)&&(e.defaultChecked=e.checked)}function Qt(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Jt.length;while(i--){t=Jt[i]+n;if(t in e)return t}return r}function Gt(e,t){return e=t||e,v.css(e,"display")==="none"||!v.contains(e.ownerDocument,e)}function Yt(e,t){var n,r,i=[],s=0,o=e.length;for(;s<o;s++){n=e[s];if(!n.style)continue;i[s]=v._data(n,"olddisplay"),t?(!i[s]&&n.style.display==="none"&&(n.style.display=""),n.style.display===""&&Gt(n)&&(i[s]=v._data(n,"olddisplay",nn(n.nodeName)))):(r=Dt(n,"display"),!i[s]&&r!=="none"&&v._data(n,"olddisplay",r))}for(s=0;s<o;s++){n=e[s];if(!n.style)continue;if(!t||n.style.display==="none"||n.style.display==="")n.style.display=t?i[s]||"":"none"}return e}function Zt(e,t,n){var r=Rt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function en(e,t,n,r){var i=n===(r?"border":"content")?4:t==="width"?1:0,s=0;for(;i<4;i+=2)n==="margin"&&(s+=v.css(e,n+$t[i],!0)),r?(n==="content"&&(s-=parseFloat(Dt(e,"padding"+$t[i]))||0),n!=="margin"&&(s-=parseFloat(Dt(e,"border"+$t[i]+"Width"))||0)):(s+=parseFloat(Dt(e,"padding"+$t[i]))||0,n!=="padding"&&(s+=parseFloat(Dt(e,"border"+$t[i]+"Width"))||0));return s}function tn(e,t,n){var r=t==="width"?e.offsetWidth:e.offsetHeight,i=!0,s=v.support.boxSizing&&v.css(e,"boxSizing")==="border-box";if(r<=0||r==null){r=Dt(e,t);if(r<0||r==null)r=e.style[t];if(Ut.test(r))return r;i=s&&(v.support.boxSizingReliable||r===e.style[t]),r=parseFloat(r)||0}return r+en(e,t,n||(s?"border":"content"),i)+"px"}function nn(e){if(Wt[e])return Wt[e];var t=v("<"+e+">").appendTo(i.body),n=t.css("display");t.remove();if(n==="none"||n===""){Pt=i.body.appendChild(Pt||v.extend(i.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!Ht||!Pt.createElement)Ht=(Pt.contentWindow||Pt.contentDocument).document,Ht.write("<!doctype html><html><body>"),Ht.close();t=Ht.body.appendChild(Ht.createElement(e)),n=Dt(t,"display"),i.body.removeChild(Pt)}return Wt[e]=n,n}function fn(e,t,n,r){var i;if(v.isArray(t))v.each(t,function(t,i){n||sn.test(e)?r(e,i):fn(e+"["+(typeof i=="object"?t:"")+"]",i,n,r)});else if(!n&&v.type(t)==="object")for(i in t)fn(e+"["+i+"]",t[i],n,r);else r(e,t)}function Cn(e){return function(t,n){typeof t!="string"&&(n=t,t="*");var r,i,s,o=t.toLowerCase().split(y),u=0,a=o.length;if(v.isFunction(n))for(;u<a;u++)r=o[u],s=/^\+/.test(r),s&&(r=r.substr(1)||"*"),i=e[r]=e[r]||[],i[s?"unshift":"push"](n)}}function kn(e,n,r,i,s,o){s=s||n.dataTypes[0],o=o||{},o[s]=!0;var u,a=e[s],f=0,l=a?a.length:0,c=e===Sn;for(;f<l&&(c||!u);f++)u=a[f](n,r,i),typeof u=="string"&&(!c||o[u]?u=t:(n.dataTypes.unshift(u),u=kn(e,n,r,i,u,o)));return(c||!u)&&!o["*"]&&(u=kn(e,n,r,i,"*",o)),u}function Ln(e,n){var r,i,s=v.ajaxSettings.flatOptions||{};for(r in n)n[r]!==t&&((s[r]?e:i||(i={}))[r]=n[r]);i&&v.extend(!0,e,i)}function An(e,n,r){var i,s,o,u,a=e.contents,f=e.dataTypes,l=e.responseFields;for(s in l)s in r&&(n[l[s]]=r[s]);while(f[0]==="*")f.shift(),i===t&&(i=e.mimeType||n.getResponseHeader("content-type"));if(i)for(s in a)if(a[s]&&a[s].test(i)){f.unshift(s);break}if(f[0]in r)o=f[0];else{for(s in r){if(!f[0]||e.converters[s+" "+f[0]]){o=s;break}u||(u=s)}o=o||u}if(o)return o!==f[0]&&f.unshift(o),r[o]}function On(e,t){var n,r,i,s,o=e.dataTypes.slice(),u=o[0],a={},f=0;e.dataFilter&&(t=e.dataFilter(t,e.dataType));if(o[1])for(n in e.converters)a[n.toLowerCase()]=e.converters[n];for(;i=o[++f];)if(i!=="*"){if(u!=="*"&&u!==i){n=a[u+" "+i]||a["* "+i];if(!n)for(r in a){s=r.split(" ");if(s[1]===i){n=a[u+" "+s[0]]||a["* "+s[0]];if(n){n===!0?n=a[r]:a[r]!==!0&&(i=s[0],o.splice(f--,0,i));break}}}if(n!==!0)if(n&&e["throws"])t=n(t);else try{t=n(t)}catch(l){return{state:"parsererror",error:n?l:"No conversion from "+u+" to "+i}}}u=i}return{state:"success",data:t}}function Fn(){try{return new e.XMLHttpRequest}catch(t){}}function In(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}function $n(){return setTimeout(function(){qn=t},0),qn=v.now()}function Jn(e,t){v.each(t,function(t,n){var r=(Vn[t]||[]).concat(Vn["*"]),i=0,s=r.length;for(;i<s;i++)if(r[i].call(e,t,n))return})}function Kn(e,t,n){var r,i=0,s=0,o=Xn.length,u=v.Deferred().always(function(){delete a.elem}),a=function(){var t=qn||$n(),n=Math.max(0,f.startTime+f.duration-t),r=n/f.duration||0,i=1-r,s=0,o=f.tweens.length;for(;s<o;s++)f.tweens[s].run(i);return u.notifyWith(e,[f,i,n]),i<1&&o?n:(u.resolveWith(e,[f]),!1)},f=u.promise({elem:e,props:v.extend({},t),opts:v.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:qn||$n(),duration:n.duration,tweens:[],createTween:function(t,n,r){var i=v.Tween(e,f.opts,t,n,f.opts.specialEasing[t]||f.opts.easing);return f.tweens.push(i),i},stop:function(t){var n=0,r=t?f.tweens.length:0;for(;n<r;n++)f.tweens[n].run(1);return t?u.resolveWith(e,[f,t]):u.rejectWith(e,[f,t]),this}}),l=f.props;Qn(l,f.opts.specialEasing);for(;i<o;i++){r=Xn[i].call(f,e,l,f.opts);if(r)return r}return Jn(f,l),v.isFunction(f.opts.start)&&f.opts.start.call(e,f),v.fx.timer(v.extend(a,{anim:f,queue:f.opts.queue,elem:e})),f.progress(f.opts.progress).done(f.opts.done,f.opts.complete).fail(f.opts.fail).always(f.opts.always)}function Qn(e,t){var n,r,i,s,o;for(n in e){r=v.camelCase(n),i=t[r],s=e[n],v.isArray(s)&&(i=s[1],s=e[n]=s[0]),n!==r&&(e[r]=s,delete e[n]),o=v.cssHooks[r];if(o&&"expand"in o){s=o.expand(s),delete e[r];for(n in s)n in e||(e[n]=s[n],t[n]=i)}else t[r]=i}}function Gn(e,t,n){var r,i,s,o,u,a,f,l,c,h=this,p=e.style,d={},m=[],g=e.nodeType&&Gt(e);n.queue||(l=v._queueHooks(e,"fx"),l.unqueued==null&&(l.unqueued=0,c=l.empty.fire,l.empty.fire=function(){l.unqueued||c()}),l.unqueued++,h.always(function(){h.always(function(){l.unqueued--,v.queue(e,"fx").length||l.empty.fire()})})),e.nodeType===1&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],v.css(e,"display")==="inline"&&v.css(e,"float")==="none"&&(!v.support.inlineBlockNeedsLayout||nn(e.nodeName)==="inline"?p.display="inline-block":p.zoom=1)),n.overflow&&(p.overflow="hidden",v.support.shrinkWrapBlocks||h.done(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t){s=t[r];if(Un.exec(s)){delete t[r],a=a||s==="toggle";if(s===(g?"hide":"show"))continue;m.push(r)}}o=m.length;if(o){u=v._data(e,"fxshow")||v._data(e,"fxshow",{}),"hidden"in u&&(g=u.hidden),a&&(u.hidden=!g),g?v(e).show():h.done(function(){v(e).hide()}),h.done(function(){var t;v.removeData(e,"fxshow",!0);for(t in d)v.style(e,t,d[t])});for(r=0;r<o;r++)i=m[r],f=h.createTween(i,g?u[i]:0),d[i]=u[i]||v.style(e,i),i in u||(u[i]=f.start,g&&(f.end=f.start,f.start=i==="width"||i==="height"?1:0))}}function Yn(e,t,n,r,i){return new Yn.prototype.init(e,t,n,r,i)}function Zn(e,t){var n,r={height:e},i=0;t=t?1:0;for(;i<4;i+=2-t)n=$t[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}function tr(e){return v.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:!1}var n,r,i=e.document,s=e.location,o=e.navigator,u=e.jQuery,a=e.$,f=Array.prototype.push,l=Array.prototype.slice,c=Array.prototype.indexOf,h=Object.prototype.toString,p=Object.prototype.hasOwnProperty,d=String.prototype.trim,v=function(e,t){return new v.fn.init(e,t,n)},m=/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,g=/\S/,y=/\s+/,b=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,w=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,E=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,S=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,T=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,N=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,C=/^-ms-/,k=/-([\da-z])/gi,L=function(e,t){return(t+"").toUpperCase()},A=function(){i.addEventListener?(i.removeEventListener("DOMContentLoaded",A,!1),v.ready()):i.readyState==="complete"&&(i.detachEvent("onreadystatechange",A),v.ready())},O={};v.fn=v.prototype={constructor:v,init:function(e,n,r){var s,o,u,a;if(!e)return this;if(e.nodeType)return this.context=this[0]=e,this.length=1,this;if(typeof e=="string"){e.charAt(0)==="<"&&e.charAt(e.length-1)===">"&&e.length>=3?s=[null,e,null]:s=w.exec(e);if(s&&(s[1]||!n)){if(s[1])return n=n instanceof v?n[0]:n,a=n&&n.nodeType?n.ownerDocument||n:i,e=v.parseHTML(s[1],a,!0),E.test(s[1])&&v.isPlainObject(n)&&this.attr.call(e,n,!0),v.merge(this,e);o=i.getElementById(s[2]);if(o&&o.parentNode){if(o.id!==s[2])return r.find(e);this.length=1,this[0]=o}return this.context=i,this.selector=e,this}return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e)}return v.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),v.makeArray(e,this))},selector:"",jquery:"1.8.3",length:0,size:function(){return this.length},toArray:function(){return l.call(this)},get:function(e){return e==null?this.toArray():e<0?this[this.length+e]:this[e]},pushStack:function(e,t,n){var r=v.merge(this.constructor(),e);return r.prevObject=this,r.context=this.context,t==="find"?r.selector=this.selector+(this.selector?" ":"")+n:t&&(r.selector=this.selector+"."+t+"("+n+")"),r},each:function(e,t){return v.each(this,e,t)},ready:function(e){return v.ready.promise().done(e),this},eq:function(e){return e=+e,e===-1?this.slice(e):this.slice(e,e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(l.apply(this,arguments),"slice",l.call(arguments).join(","))},map:function(e){return this.pushStack(v.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:[].sort,splice:[].splice},v.fn.init.prototype=v.fn,v.extend=v.fn.extend=function(){var e,n,r,i,s,o,u=arguments[0]||{},a=1,f=arguments.length,l=!1;typeof u=="boolean"&&(l=u,u=arguments[1]||{},a=2),typeof u!="object"&&!v.isFunction(u)&&(u={}),f===a&&(u=this,--a);for(;a<f;a++)if((e=arguments[a])!=null)for(n in e){r=u[n],i=e[n];if(u===i)continue;l&&i&&(v.isPlainObject(i)||(s=v.isArray(i)))?(s?(s=!1,o=r&&v.isArray(r)?r:[]):o=r&&v.isPlainObject(r)?r:{},u[n]=v.extend(l,o,i)):i!==t&&(u[n]=i)}return u},v.extend({noConflict:function(t){return e.$===v&&(e.$=a),t&&e.jQuery===v&&(e.jQuery=u),v},isReady:!1,readyWait:1,holdReady:function(e){e?v.readyWait++:v.ready(!0)},ready:function(e){if(e===!0?--v.readyWait:v.isReady)return;if(!i.body)return setTimeout(v.ready,1);v.isReady=!0;if(e!==!0&&--v.readyWait>0)return;r.resolveWith(i,[v]),v.fn.trigger&&v(i).trigger("ready").off("ready")},isFunction:function(e){return v.type(e)==="function"},isArray:Array.isArray||function(e){return v.type(e)==="array"},isWindow:function(e){return e!=null&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return e==null?String(e):O[h.call(e)]||"object"},isPlainObject:function(e){if(!e||v.type(e)!=="object"||e.nodeType||v.isWindow(e))return!1;try{if(e.constructor&&!p.call(e,"constructor")&&!p.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||p.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw new Error(e)},parseHTML:function(e,t,n){var r;return!e||typeof e!="string"?null:(typeof t=="boolean"&&(n=t,t=0),t=t||i,(r=E.exec(e))?[t.createElement(r[1])]:(r=v.buildFragment([e],t,n?null:[]),v.merge([],(r.cacheable?v.clone(r.fragment):r.fragment).childNodes)))},parseJSON:function(t){if(!t||typeof t!="string")return null;t=v.trim(t);if(e.JSON&&e.JSON.parse)return e.JSON.parse(t);if(S.test(t.replace(T,"@").replace(N,"]").replace(x,"")))return(new Function("return "+t))();v.error("Invalid JSON: "+t)},parseXML:function(n){var r,i;if(!n||typeof n!="string")return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(s){r=t}return(!r||!r.documentElement||r.getElementsByTagName("parsererror").length)&&v.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&g.test(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(C,"ms-").replace(k,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,n,r){var i,s=0,o=e.length,u=o===t||v.isFunction(e);if(r){if(u){for(i in e)if(n.apply(e[i],r)===!1)break}else for(;s<o;)if(n.apply(e[s++],r)===!1)break}else if(u){for(i in e)if(n.call(e[i],i,e[i])===!1)break}else for(;s<o;)if(n.call(e[s],s,e[s++])===!1)break;return e},trim:d&&!d.call("\ufeff\u00a0")?function(e){return e==null?"":d.call(e)}:function(e){return e==null?"":(e+"").replace(b,"")},makeArray:function(e,t){var n,r=t||[];return e!=null&&(n=v.type(e),e.length==null||n==="string"||n==="function"||n==="regexp"||v.isWindow(e)?f.call(r,e):v.merge(r,e)),r},inArray:function(e,t,n){var r;if(t){if(c)return c.call(t,e,n);r=t.length,n=n?n<0?Math.max(0,r+n):n:0;for(;n<r;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,s=0;if(typeof r=="number")for(;s<r;s++)e[i++]=n[s];else while(n[s]!==t)e[i++]=n[s++];return e.length=i,e},grep:function(e,t,n){var r,i=[],s=0,o=e.length;n=!!n;for(;s<o;s++)r=!!t(e[s],s),n!==r&&i.push(e[s]);return i},map:function(e,n,r){var i,s,o=[],u=0,a=e.length,f=e instanceof v||a!==t&&typeof a=="number"&&(a>0&&e[0]&&e[a-1]||a===0||v.isArray(e));if(f)for(;u<a;u++)i=n(e[u],u,r),i!=null&&(o[o.length]=i);else for(s in e)i=n(e[s],s,r),i!=null&&(o[o.length]=i);return o.concat.apply([],o)},guid:1,proxy:function(e,n){var r,i,s;return typeof n=="string"&&(r=e[n],n=e,e=r),v.isFunction(e)?(i=l.call(arguments,2),s=function(){return e.apply(n,i.concat(l.call(arguments)))},s.guid=e.guid=e.guid||v.guid++,s):t},access:function(e,n,r,i,s,o,u){var a,f=r==null,l=0,c=e.length;if(r&&typeof r=="object"){for(l in r)v.access(e,n,l,r[l],1,o,i);s=1}else if(i!==t){a=u===t&&v.isFunction(i),f&&(a?(a=n,n=function(e,t,n){return a.call(v(e),n)}):(n.call(e,i),n=null));if(n)for(;l<c;l++)n(e[l],r,a?i.call(e[l],l,n(e[l],r)):i,u);s=1}return s?e:f?n.call(e):c?n(e[0],r):o},now:function(){return(new Date).getTime()}}),v.ready.promise=function(t){if(!r){r=v.Deferred();if(i.readyState==="complete")setTimeout(v.ready,1);else if(i.addEventListener)i.addEventListener("DOMContentLoaded",A,!1),e.addEventListener("load",v.ready,!1);else{i.attachEvent("onreadystatechange",A),e.attachEvent("onload",v.ready);var n=!1;try{n=e.frameElement==null&&i.documentElement}catch(s){}n&&n.doScroll&&function o(){if(!v.isReady){try{n.doScroll("left")}catch(e){return setTimeout(o,50)}v.ready()}}()}}return r.promise(t)},v.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(e,t){O["[object "+t+"]"]=t.toLowerCase()}),n=v(i);var M={};v.Callbacks=function(e){e=typeof e=="string"?M[e]||_(e):v.extend({},e);var n,r,i,s,o,u,a=[],f=!e.once&&[],l=function(t){n=e.memory&&t,r=!0,u=s||0,s=0,o=a.length,i=!0;for(;a&&u<o;u++)if(a[u].apply(t[0],t[1])===!1&&e.stopOnFalse){n=!1;break}i=!1,a&&(f?f.length&&l(f.shift()):n?a=[]:c.disable())},c={add:function(){if(a){var t=a.length;(function r(t){v.each(t,function(t,n){var i=v.type(n);i==="function"?(!e.unique||!c.has(n))&&a.push(n):n&&n.length&&i!=="string"&&r(n)})})(arguments),i?o=a.length:n&&(s=t,l(n))}return this},remove:function(){return a&&v.each(arguments,function(e,t){var n;while((n=v.inArray(t,a,n))>-1)a.splice(n,1),i&&(n<=o&&o--,n<=u&&u--)}),this},has:function(e){return v.inArray(e,a)>-1},empty:function(){return a=[],this},disable:function(){return a=f=n=t,this},disabled:function(){return!a},lock:function(){return f=t,n||c.disable(),this},locked:function(){return!f},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],a&&(!r||f)&&(i?f.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},v.extend({Deferred:function(e){var t=[["resolve","done",v.Callbacks("once memory"),"resolved"],["reject","fail",v.Callbacks("once memory"),"rejected"],["notify","progress",v.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return v.Deferred(function(n){v.each(t,function(t,r){var s=r[0],o=e[t];i[r[1]](v.isFunction(o)?function(){var e=o.apply(this,arguments);e&&v.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===i?n:this,[e])}:n[s])}),e=null}).promise()},promise:function(e){return e!=null?v.extend(e,r):r}},i={};return r.pipe=r.then,v.each(t,function(e,s){var o=s[2],u=s[3];r[s[1]]=o.add,u&&o.add(function(){n=u},t[e^1][2].disable,t[2][2].lock),i[s[0]]=o.fire,i[s[0]+"With"]=o.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=l.call(arguments),r=n.length,i=r!==1||e&&v.isFunction(e.promise)?r:0,s=i===1?e:v.Deferred(),o=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?l.call(arguments):r,n===u?s.notifyWith(t,n):--i||s.resolveWith(t,n)}},u,a,f;if(r>1){u=new Array(r),a=new Array(r),f=new Array(r);for(;t<r;t++)n[t]&&v.isFunction(n[t].promise)?n[t].promise().done(o(t,f,n)).fail(s.reject).progress(o(t,a,u)):--i}return i||s.resolveWith(f,n),s.promise()}}),v.support=function(){var t,n,r,s,o,u,a,f,l,c,h,p=i.createElement("div");p.setAttribute("className","t"),p.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=p.getElementsByTagName("*"),r=p.getElementsByTagName("a")[0];if(!n||!r||!n.length)return{};s=i.createElement("select"),o=s.appendChild(i.createElement("option")),u=p.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:r.getAttribute("href")==="/a",opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:u.value==="on",optSelected:o.selected,getSetAttribute:p.className!=="t",enctype:!!i.createElement("form").enctype,html5Clone:i.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",boxModel:i.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},u.checked=!0,t.noCloneChecked=u.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!o.disabled;try{delete p.test}catch(d){t.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",h=function(){t.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick"),p.detachEvent("onclick",h)),u=i.createElement("input"),u.value="t",u.setAttribute("type","radio"),t.radioValue=u.value==="t",u.setAttribute("checked","checked"),u.setAttribute("name","t"),p.appendChild(u),a=i.createDocumentFragment(),a.appendChild(p.lastChild),t.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,t.appendChecked=u.checked,a.removeChild(u),a.appendChild(p);if(p.attachEvent)for(l in{submit:!0,change:!0,focusin:!0})f="on"+l,c=f in p,c||(p.setAttribute(f,"return;"),c=typeof p[f]=="function"),t[l+"Bubbles"]=c;return v(function(){var n,r,s,o,u="padding:0;margin:0;border:0;display:block;overflow:hidden;",a=i.getElementsByTagName("body")[0];if(!a)return;n=i.createElement("div"),n.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",a.insertBefore(n,a.firstChild),r=i.createElement("div"),n.appendChild(r),r.innerHTML="<table><tr><td></td><td>t</td></tr></table>",s=r.getElementsByTagName("td"),s[0].style.cssText="padding:0;margin:0;border:0;display:none",c=s[0].offsetHeight===0,s[0].style.display="",s[1].style.display="none",t.reliableHiddenOffsets=c&&s[0].offsetHeight===0,r.innerHTML="",r.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=r.offsetWidth===4,t.doesNotIncludeMarginInBodyOffset=a.offsetTop!==1,e.getComputedStyle&&(t.pixelPosition=(e.getComputedStyle(r,null)||{}).top!=="1%",t.boxSizingReliable=(e.getComputedStyle(r,null)||{width:"4px"}).width==="4px",o=i.createElement("div"),o.style.cssText=r.style.cssText=u,o.style.marginRight=o.style.width="0",r.style.width="1px",r.appendChild(o),t.reliableMarginRight=!parseFloat((e.getComputedStyle(o,null)||{}).marginRight)),typeof r.style.zoom!="undefined"&&(r.innerHTML="",r.style.cssText=u+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=r.offsetWidth===3,r.style.display="block",r.style.overflow="visible",r.innerHTML="<div></div>",r.firstChild.style.width="5px",t.shrinkWrapBlocks=r.offsetWidth!==3,n.style.zoom=1),a.removeChild(n),n=r=s=o=null}),a.removeChild(p),n=r=s=o=u=a=p=null,t}();var D=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;v.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(v.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?v.cache[e[v.expando]]:e[v.expando],!!e&&!B(e)},data:function(e,n,r,i){if(!v.acceptData(e))return;var s,o,u=v.expando,a=typeof n=="string",f=e.nodeType,l=f?v.cache:e,c=f?e[u]:e[u]&&u;if((!c||!l[c]||!i&&!l[c].data)&&a&&r===t)return;c||(f?e[u]=c=v.deletedIds.pop()||v.guid++:c=u),l[c]||(l[c]={},f||(l[c].toJSON=v.noop));if(typeof n=="object"||typeof n=="function")i?l[c]=v.extend(l[c],n):l[c].data=v.extend(l[c].data,n);return s=l[c],i||(s.data||(s.data={}),s=s.data),r!==t&&(s[v.camelCase(n)]=r),a?(o=s[n],o==null&&(o=s[v.camelCase(n)])):o=s,o},removeData:function(e,t,n){if(!v.acceptData(e))return;var r,i,s,o=e.nodeType,u=o?v.cache:e,a=o?e[v.expando]:v.expando;if(!u[a])return;if(t){r=n?u[a]:u[a].data;if(r){v.isArray(t)||(t in r?t=[t]:(t=v.camelCase(t),t in r?t=[t]:t=t.split(" ")));for(i=0,s=t.length;i<s;i++)delete r[t[i]];if(!(n?B:v.isEmptyObject)(r))return}}if(!n){delete u[a].data;if(!B(u[a]))return}o?v.cleanData([e],!0):v.support.deleteExpando||u!=u.window?delete u[a]:u[a]=null},_data:function(e,t,n){return v.data(e,t,n,!0)},acceptData:function(e){var t=e.nodeName&&v.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),v.fn.extend({data:function(e,n){var r,i,s,o,u,a=this[0],f=0,l=null;if(e===t){if(this.length){l=v.data(a);if(a.nodeType===1&&!v._data(a,"parsedAttrs")){s=a.attributes;for(u=s.length;f<u;f++)o=s[f].name,o.indexOf("data-")||(o=v.camelCase(o.substring(5)),H(a,o,l[o]));v._data(a,"parsedAttrs",!0)}}return l}return typeof e=="object"?this.each(function(){v.data(this,e)}):(r=e.split(".",2),r[1]=r[1]?"."+r[1]:"",i=r[1]+"!",v.access(this,function(n){if(n===t)return l=this.triggerHandler("getData"+i,[r[0]]),l===t&&a&&(l=v.data(a,e),l=H(a,e,l)),l===t&&r[1]?this.data(r[0]):l;r[1]=n,this.each(function(){var t=v(this);t.triggerHandler("setData"+i,r),v.data(this,e,n),t.triggerHandler("changeData"+i,r)})},null,n,arguments.length>1,null,!1))},removeData:function(e){return this.each(function(){v.removeData(this,e)})}}),v.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=v._data(e,t),n&&(!r||v.isArray(n)?r=v._data(e,t,v.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=v.queue(e,t),r=n.length,i=n.shift(),s=v._queueHooks(e,t),o=function(){v.dequeue(e,t)};i==="inprogress"&&(i=n.shift(),r--),i&&(t==="fx"&&n.unshift("inprogress"),delete s.stop,i.call(e,o,s)),!r&&s&&s.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return v._data(e,n)||v._data(e,n,{empty:v.Callbacks("once memory").add(function(){v.removeData(e,t+"queue",!0),v.removeData(e,n,!0)})})}}),v.fn.extend({queue:function(e,n){var r=2;return typeof e!="string"&&(n=e,e="fx",r--),arguments.length<r?v.queue(this[0],e):n===t?this:this.each(function(){var t=v.queue(this,e,n);v._queueHooks(this,e),e==="fx"&&t[0]!=="inprogress"&&v.dequeue(this,e)})},dequeue:function(e){return this.each(function(){v.dequeue(this,e)})},delay:function(e,t){return e=v.fx?v.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,s=v.Deferred(),o=this,u=this.length,a=function(){--i||s.resolveWith(o,[o])};typeof e!="string"&&(n=e,e=t),e=e||"fx";while(u--)r=v._data(o[u],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(a));return a(),s.promise(n)}});var j,F,I,q=/[\t\r\n]/g,R=/\r/g,U=/^(?:button|input)$/i,z=/^(?:button|input|object|select|textarea)$/i,W=/^a(?:rea|)$/i,X=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,V=v.support.getSetAttribute;v.fn.extend({attr:function(e,t){return v.access(this,v.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){v.removeAttr(this,e)})},prop:function(e,t){return v.access(this,v.prop,e,t,arguments.length>1)},removeProp:function(e){return e=v.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,s,o,u;if(v.isFunction(e))return this.each(function(t){v(this).addClass(e.call(this,t,this.className))});if(e&&typeof e=="string"){t=e.split(y);for(n=0,r=this.length;n<r;n++){i=this[n];if(i.nodeType===1)if(!i.className&&t.length===1)i.className=e;else{s=" "+i.className+" ";for(o=0,u=t.length;o<u;o++)s.indexOf(" "+t[o]+" ")<0&&(s+=t[o]+" ");i.className=v.trim(s)}}}return this},removeClass:function(e){var n,r,i,s,o,u,a;if(v.isFunction(e))return this.each(function(t){v(this).removeClass(e.call(this,t,this.className))});if(e&&typeof e=="string"||e===t){n=(e||"").split(y);for(u=0,a=this.length;u<a;u++){i=this[u];if(i.nodeType===1&&i.className){r=(" "+i.className+" ").replace(q," ");for(s=0,o=n.length;s<o;s++)while(r.indexOf(" "+n[s]+" ")>=0)r=r.replace(" "+n[s]+" "," ");i.className=e?v.trim(r):""}}}return this},toggleClass:function(e,t){var n=typeof e,r=typeof t=="boolean";return v.isFunction(e)?this.each(function(n){v(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if(n==="string"){var i,s=0,o=v(this),u=t,a=e.split(y);while(i=a[s++])u=r?u:!o.hasClass(i),o[u?"addClass":"removeClass"](i)}else if(n==="undefined"||n==="boolean")this.className&&v._data(this,"__className__",this.className),this.className=this.className||e===!1?"":v._data(this,"__className__")||""})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;n<r;n++)if(this[n].nodeType===1&&(" "+this[n].className+" ").replace(q," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,s=this[0];if(!arguments.length){if(s)return n=v.valHooks[s.type]||v.valHooks[s.nodeName.toLowerCase()],n&&"get"in n&&(r=n.get(s,"value"))!==t?r:(r=s.value,typeof r=="string"?r.replace(R,""):r==null?"":r);return}return i=v.isFunction(e),this.each(function(r){var s,o=v(this);if(this.nodeType!==1)return;i?s=e.call(this,r,o.val()):s=e,s==null?s="":typeof s=="number"?s+="":v.isArray(s)&&(s=v.map(s,function(e){return e==null?"":e+""})),n=v.valHooks[this.type]||v.valHooks[this.nodeName.toLowerCase()];if(!n||!("set"in n)||n.set(this,s,"value")===t)this.value=s})}}),v.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,s=e.type==="select-one"||i<0,o=s?null:[],u=s?i+1:r.length,a=i<0?u:s?i:0;for(;a<u;a++){n=r[a];if((n.selected||a===i)&&(v.support.optDisabled?!n.disabled:n.getAttribute("disabled")===null)&&(!n.parentNode.disabled||!v.nodeName(n.parentNode,"optgroup"))){t=v(n).val();if(s)return t;o.push(t)}}return o},set:function(e,t){var n=v.makeArray(t);return v(e).find("option").each(function(){this.selected=v.inArray(v(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attrFn:{},attr:function(e,n,r,i){var s,o,u,a=e.nodeType;if(!e||a===3||a===8||a===2)return;if(i&&v.isFunction(v.fn[n]))return v(e)[n](r);if(typeof e.getAttribute=="undefined")return v.prop(e,n,r);u=a!==1||!v.isXMLDoc(e),u&&(n=n.toLowerCase(),o=v.attrHooks[n]||(X.test(n)?F:j));if(r!==t){if(r===null){v.removeAttr(e,n);return}return o&&"set"in o&&u&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r)}return o&&"get"in o&&u&&(s=o.get(e,n))!==null?s:(s=e.getAttribute(n),s===null?t:s)},removeAttr:function(e,t){var n,r,i,s,o=0;if(t&&e.nodeType===1){r=t.split(y);for(;o<r.length;o++)i=r[o],i&&(n=v.propFix[i]||i,s=X.test(i),s||v.attr(e,i,""),e.removeAttribute(V?i:n),s&&n in e&&(e[n]=!1))}},attrHooks:{type:{set:function(e,t){if(U.test(e.nodeName)&&e.parentNode)v.error("type property can't be changed");else if(!v.support.radioValue&&t==="radio"&&v.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}},value:{get:function(e,t){return j&&v.nodeName(e,"button")?j.get(e,t):t in e?e.value:null},set:function(e,t,n){if(j&&v.nodeName(e,"button"))return j.set(e,t,n);e.value=t}}},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(e,n,r){var i,s,o,u=e.nodeType;if(!e||u===3||u===8||u===2)return;return o=u!==1||!v.isXMLDoc(e),o&&(n=v.propFix[n]||n,s=v.propHooks[n]),r!==t?s&&"set"in s&&(i=s.set(e,r,n))!==t?i:e[n]=r:s&&"get"in s&&(i=s.get(e,n))!==null?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):z.test(e.nodeName)||W.test(e.nodeName)&&e.href?0:t}}}}),F={get:function(e,n){var r,i=v.prop(e,n);return i===!0||typeof i!="boolean"&&(r=e.getAttributeNode(n))&&r.nodeValue!==!1?n.toLowerCase():t},set:function(e,t,n){var r;return t===!1?v.removeAttr(e,n):(r=v.propFix[n]||n,r in e&&(e[r]=!0),e.setAttribute(n,n.toLowerCase())),n}},V||(I={name:!0,id:!0,coords:!0},j=v.valHooks.button={get:function(e,n){var r;return r=e.getAttributeNode(n),r&&(I[n]?r.value!=="":r.specified)?r.value:t},set:function(e,t,n){var r=e.getAttributeNode(n);return r||(r=i.createAttribute(n),e.setAttributeNode(r)),r.value=t+""}},v.each(["width","height"],function(e,t){v.attrHooks[t]=v.extend(v.attrHooks[t],{set:function(e,n){if(n==="")return e.setAttribute(t,"auto"),n}})}),v.attrHooks.contenteditable={get:j.get,set:function(e,t,n){t===""&&(t="false"),j.set(e,t,n)}}),v.support.hrefNormalized||v.each(["href","src","width","height"],function(e,n){v.attrHooks[n]=v.extend(v.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return r===null?t:r}})}),v.support.style||(v.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||t},set:function(e,t){return e.style.cssText=t+""}}),v.support.optSelected||(v.propHooks.selected=v.extend(v.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),v.support.enctype||(v.propFix.enctype="encoding"),v.support.checkOn||v.each(["radio","checkbox"],function(){v.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}}),v.each(["radio","checkbox"],function(){v.valHooks[this]=v.extend(v.valHooks[this],{set:function(e,t){if(v.isArray(t))return e.checked=v.inArray(v(e).val(),t)>=0}})});var $=/^(?:textarea|input|select)$/i,J=/^([^\.]*|)(?:\.(.+)|)$/,K=/(?:^|\s)hover(\.\S+|)\b/,Q=/^key/,G=/^(?:mouse|contextmenu)|click/,Y=/^(?:focusinfocus|focusoutblur)$/,Z=function(e){return v.event.special.hover?e:e.replace(K,"mouseenter$1 mouseleave$1")};v.event={add:function(e,n,r,i,s){var o,u,a,f,l,c,h,p,d,m,g;if(e.nodeType===3||e.nodeType===8||!n||!r||!(o=v._data(e)))return;r.handler&&(d=r,r=d.handler,s=d.selector),r.guid||(r.guid=v.guid++),a=o.events,a||(o.events=a={}),u=o.handle,u||(o.handle=u=function(e){return typeof v=="undefined"||!!e&&v.event.triggered===e.type?t:v.event.dispatch.apply(u.elem,arguments)},u.elem=e),n=v.trim(Z(n)).split(" ");for(f=0;f<n.length;f++){l=J.exec(n[f])||[],c=l[1],h=(l[2]||"").split(".").sort(),g=v.event.special[c]||{},c=(s?g.delegateType:g.bindType)||c,g=v.event.special[c]||{},p=v.extend({type:c,origType:l[1],data:i,handler:r,guid:r.guid,selector:s,needsContext:s&&v.expr.match.needsContext.test(s),namespace:h.join(".")},d),m=a[c];if(!m){m=a[c]=[],m.delegateCount=0;if(!g.setup||g.setup.call(e,i,h,u)===!1)e.addEventListener?e.addEventListener(c,u,!1):e.attachEvent&&e.attachEvent("on"+c,u)}g.add&&(g.add.call(e,p),p.handler.guid||(p.handler.guid=r.guid)),s?m.splice(m.delegateCount++,0,p):m.push(p),v.event.global[c]=!0}e=null},global:{},remove:function(e,t,n,r,i){var s,o,u,a,f,l,c,h,p,d,m,g=v.hasData(e)&&v._data(e);if(!g||!(h=g.events))return;t=v.trim(Z(t||"")).split(" ");for(s=0;s<t.length;s++){o=J.exec(t[s])||[],u=a=o[1],f=o[2];if(!u){for(u in h)v.event.remove(e,u+t[s],n,r,!0);continue}p=v.event.special[u]||{},u=(r?p.delegateType:p.bindType)||u,d=h[u]||[],l=d.length,f=f?new RegExp("(^|\\.)"+f.split(".").sort().join("\\.(?:.*\\.|)")+"(\\.|$)"):null;for(c=0;c<d.length;c++)m=d[c],(i||a===m.origType)&&(!n||n.guid===m.guid)&&(!f||f.test(m.namespace))&&(!r||r===m.selector||r==="**"&&m.selector)&&(d.splice(c--,1),m.selector&&d.delegateCount--,p.remove&&p.remove.call(e,m));d.length===0&&l!==d.length&&((!p.teardown||p.teardown.call(e,f,g.handle)===!1)&&v.removeEvent(e,u,g.handle),delete h[u])}v.isEmptyObject(h)&&(delete g.handle,v.removeData(e,"events",!0))},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(n,r,s,o){if(!s||s.nodeType!==3&&s.nodeType!==8){var u,a,f,l,c,h,p,d,m,g,y=n.type||n,b=[];if(Y.test(y+v.event.triggered))return;y.indexOf("!")>=0&&(y=y.slice(0,-1),a=!0),y.indexOf(".")>=0&&(b=y.split("."),y=b.shift(),b.sort());if((!s||v.event.customEvent[y])&&!v.event.global[y])return;n=typeof n=="object"?n[v.expando]?n:new v.Event(y,n):new v.Event(y),n.type=y,n.isTrigger=!0,n.exclusive=a,n.namespace=b.join("."),n.namespace_re=n.namespace?new RegExp("(^|\\.)"+b.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,h=y.indexOf(":")<0?"on"+y:"";if(!s){u=v.cache;for(f in u)u[f].events&&u[f].events[y]&&v.event.trigger(n,r,u[f].handle.elem,!0);return}n.result=t,n.target||(n.target=s),r=r!=null?v.makeArray(r):[],r.unshift(n),p=v.event.special[y]||{};if(p.trigger&&p.trigger.apply(s,r)===!1)return;m=[[s,p.bindType||y]];if(!o&&!p.noBubble&&!v.isWindow(s)){g=p.delegateType||y,l=Y.test(g+y)?s:s.parentNode;for(c=s;l;l=l.parentNode)m.push([l,g]),c=l;c===(s.ownerDocument||i)&&m.push([c.defaultView||c.parentWindow||e,g])}for(f=0;f<m.length&&!n.isPropagationStopped();f++)l=m[f][0],n.type=m[f][1],d=(v._data(l,"events")||{})[n.type]&&v._data(l,"handle"),d&&d.apply(l,r),d=h&&l[h],d&&v.acceptData(l)&&d.apply&&d.apply(l,r)===!1&&n.preventDefault();return n.type=y,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(s.ownerDocument,r)===!1)&&(y!=="click"||!v.nodeName(s,"a"))&&v.acceptData(s)&&h&&s[y]&&(y!=="focus"&&y!=="blur"||n.target.offsetWidth!==0)&&!v.isWindow(s)&&(c=s[h],c&&(s[h]=null),v.event.triggered=y,s[y](),v.event.triggered=t,c&&(s[h]=c)),n.result}return},dispatch:function(n){n=v.event.fix(n||e.event);var r,i,s,o,u,a,f,c,h,p,d=(v._data(this,"events")||{})[n.type]||[],m=d.delegateCount,g=l.call(arguments),y=!n.exclusive&&!n.namespace,b=v.event.special[n.type]||{},w=[];g[0]=n,n.delegateTarget=this;if(b.preDispatch&&b.preDispatch.call(this,n)===!1)return;if(m&&(!n.button||n.type!=="click"))for(s=n.target;s!=this;s=s.parentNode||this)if(s.disabled!==!0||n.type!=="click"){u={},f=[];for(r=0;r<m;r++)c=d[r],h=c.selector,u[h]===t&&(u[h]=c.needsContext?v(h,this).index(s)>=0:v.find(h,this,null,[s]).length),u[h]&&f.push(c);f.length&&w.push({elem:s,matches:f})}d.length>m&&w.push({elem:this,matches:d.slice(m)});for(r=0;r<w.length&&!n.isPropagationStopped();r++){a=w[r],n.currentTarget=a.elem;for(i=0;i<a.matches.length&&!n.isImmediatePropagationStopped();i++){c=a.matches[i];if(y||!n.namespace&&!c.namespace||n.namespace_re&&n.namespace_re.test(c.namespace))n.data=c.data,n.handleObj=c,o=((v.event.special[c.origType]||{}).handle||c.handler).apply(a.elem,g),o!==t&&(n.result=o,o===!1&&(n.preventDefault(),n.stopPropagation()))}}return b.postDispatch&&b.postDispatch.call(this,n),n.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return e.which==null&&(e.which=t.charCode!=null?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,s,o,u=n.button,a=n.fromElement;return e.pageX==null&&n.clientX!=null&&(r=e.target.ownerDocument||i,s=r.documentElement,o=r.body,e.pageX=n.clientX+(s&&s.scrollLeft||o&&o.scrollLeft||0)-(s&&s.clientLeft||o&&o.clientLeft||0),e.pageY=n.clientY+(s&&s.scrollTop||o&&o.scrollTop||0)-(s&&s.clientTop||o&&o.clientTop||0)),!e.relatedTarget&&a&&(e.relatedTarget=a===e.target?n.toElement:a),!e.which&&u!==t&&(e.which=u&1?1:u&2?3:u&4?2:0),e}},fix:function(e){if(e[v.expando])return e;var t,n,r=e,s=v.event.fixHooks[e.type]||{},o=s.props?this.props.concat(s.props):this.props;e=v.Event(r);for(t=o.length;t;)n=o[--t],e[n]=r[n];return e.target||(e.target=r.srcElement||i),e.target.nodeType===3&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,r):e},special:{load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(e,t,n){v.isWindow(this)&&(this.onbeforeunload=n)},teardown:function(e,t){this.onbeforeunload===t&&(this.onbeforeunload=null)}}},simulate:function(e,t,n,r){var i=v.extend(new v.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?v.event.trigger(i,null,t):v.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},v.event.handle=v.event.dispatch,v.removeEvent=i.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]=="undefined"&&(e[r]=null),e.detachEvent(r,n))},v.Event=function(e,t){if(!(this instanceof v.Event))return new v.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?tt:et):this.type=e,t&&v.extend(this,t),this.timeStamp=e&&e.timeStamp||v.now(),this[v.expando]=!0},v.Event.prototype={preventDefault:function(){this.isDefaultPrevented=tt;var e=this.originalEvent;if(!e)return;e.preventDefault?e.preventDefault():e.returnValue=!1},stopPropagation:function(){this.isPropagationStopped=tt;var e=this.originalEvent;if(!e)return;e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=tt,this.stopPropagation()},isDefaultPrevented:et,isPropagationStopped:et,isImmediatePropagationStopped:et},v.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){v.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,s=e.handleObj,o=s.selector;if(!i||i!==r&&!v.contains(r,i))e.type=s.origType,n=s.handler.apply(this,arguments),e.type=t;return n}}}),v.support.submitBubbles||(v.event.special.submit={setup:function(){if(v.nodeName(this,"form"))return!1;v.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=v.nodeName(n,"input")||v.nodeName(n,"button")?n.form:t;r&&!v._data(r,"_submit_attached")&&(v.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),v._data(r,"_submit_attached",!0))})},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&v.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){if(v.nodeName(this,"form"))return!1;v.event.remove(this,"._submit")}}),v.support.changeBubbles||(v.event.special.change={setup:function(){if($.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")v.event.add(this,"propertychange._change",function(e){e.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),v.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),v.event.simulate("change",this,e,!0)});return!1}v.event.add(this,"beforeactivate._change",function(e){var t=e.target;$.test(t.nodeName)&&!v._data(t,"_change_attached")&&(v.event.add(t,"change._change",function(e){this.parentNode&&!e.isSimulated&&!e.isTrigger&&v.event.simulate("change",this.parentNode,e,!0)}),v._data(t,"_change_attached",!0))})},handle:function(e){var t=e.target;if(this!==t||e.isSimulated||e.isTrigger||t.type!=="radio"&&t.type!=="checkbox")return e.handleObj.handler.apply(this,arguments)},teardown:function(){return v.event.remove(this,"._change"),!$.test(this.nodeName)}}),v.support.focusinBubbles||v.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){v.event.simulate(t,e.target,v.event.fix(e),!0)};v.event.special[t]={setup:function(){n++===0&&i.addEventListener(e,r,!0)},teardown:function(){--n===0&&i.removeEventListener(e,r,!0)}}}),v.fn.extend({on:function(e,n,r,i,s){var o,u;if(typeof e=="object"){typeof n!="string"&&(r=r||n,n=t);for(u in e)this.on(u,n,r,e[u],s);return this}r==null&&i==null?(i=n,r=n=t):i==null&&(typeof n=="string"?(i=r,r=t):(i=r,r=n,n=t));if(i===!1)i=et;else if(!i)return this;return s===1&&(o=i,i=function(e){return v().off(e),o.apply(this,arguments)},i.guid=o.guid||(o.guid=v.guid++)),this.each(function(){v.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,s;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,v(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if(typeof e=="object"){for(s in e)this.off(s,n,e[s]);return this}if(n===!1||typeof n=="function")r=n,n=t;return r===!1&&(r=et),this.each(function(){v.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},live:function(e,t,n){return v(this.context).on(e,this.selector,t,n),this},die:function(e,t){return v(this.context).off(e,this.selector||"**",t),this},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return arguments.length===1?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){v.event.trigger(e,t,this)})},triggerHandler:function(e,t){if(this[0])return v.event.trigger(e,t,this[0],!0)},toggle:function(e){var t=arguments,n=e.guid||v.guid++,r=0,i=function(n){var i=(v._data(this,"lastToggle"+e.guid)||0)%r;return v._data(this,"lastToggle"+e.guid,i+1),n.preventDefault(),t[i].apply(this,arguments)||!1};i.guid=n;while(r<t.length)t[r++].guid=n;return this.click(i)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),v.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 contextmenu".split(" "),function(e,t){v.fn[t]=function(e,n){return n==null&&(n=e,e=null),arguments.length>0?this.on(t,null,e,n):this.trigger(t)},Q.test(t)&&(v.event.fixHooks[t]=v.event.keyHooks),G.test(t)&&(v.event.fixHooks[t]=v.event.mouseHooks)}),function(e,t){function nt(e,t,n,r){n=n||[],t=t||g;var i,s,a,f,l=t.nodeType;if(!e||typeof e!="string")return n;if(l!==1&&l!==9)return[];a=o(t);if(!a&&!r)if(i=R.exec(e))if(f=i[1]){if(l===9){s=t.getElementById(f);if(!s||!s.parentNode)return n;if(s.id===f)return n.push(s),n}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(f))&&u(t,s)&&s.id===f)return n.push(s),n}else{if(i[2])return S.apply(n,x.call(t.getElementsByTagName(e),0)),n;if((f=i[3])&&Z&&t.getElementsByClassName)return S.apply(n,x.call(t.getElementsByClassName(f),0)),n}return vt(e.replace(j,"$1"),t,n,r,a)}function rt(e){return function(t){var n=t.nodeName.toLowerCase();return n==="input"&&t.type===e}}function it(e){return function(t){var n=t.nodeName.toLowerCase();return(n==="input"||n==="button")&&t.type===e}}function st(e){return N(function(t){return t=+t,N(function(n,r){var i,s=e([],n.length,t),o=s.length;while(o--)n[i=s[o]]&&(n[i]=!(r[i]=n[i]))})})}function ot(e,t,n){if(e===t)return n;var r=e.nextSibling;while(r){if(r===t)return-1;r=r.nextSibling}return 1}function ut(e,t){var n,r,s,o,u,a,f,l=L[d][e+" "];if(l)return t?0:l.slice(0);u=e,a=[],f=i.preFilter;while(u){if(!n||(r=F.exec(u)))r&&(u=u.slice(r[0].length)||u),a.push(s=[]);n=!1;if(r=I.exec(u))s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=r[0].replace(j," ");for(o in i.filter)(r=J[o].exec(u))&&(!f[o]||(r=f[o](r)))&&(s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=o,n.matches=r);if(!n)break}return t?u.length:u?nt.error(e):L(e,a).slice(0)}function at(e,t,r){var i=t.dir,s=r&&t.dir==="parentNode",o=w++;return t.first?function(t,n,r){while(t=t[i])if(s||t.nodeType===1)return e(t,n,r)}:function(t,r,u){if(!u){var a,f=b+" "+o+" ",l=f+n;while(t=t[i])if(s||t.nodeType===1){if((a=t[d])===l)return t.sizset;if(typeof a=="string"&&a.indexOf(f)===0){if(t.sizset)return t}else{t[d]=l;if(e(t,r,u))return t.sizset=!0,t;t.sizset=!1}}}else while(t=t[i])if(s||t.nodeType===1)if(e(t,r,u))return t}}function ft(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function lt(e,t,n,r,i){var s,o=[],u=0,a=e.length,f=t!=null;for(;u<a;u++)if(s=e[u])if(!n||n(s,r,i))o.push(s),f&&t.push(u);return o}function ct(e,t,n,r,i,s){return r&&!r[d]&&(r=ct(r)),i&&!i[d]&&(i=ct(i,s)),N(function(s,o,u,a){var f,l,c,h=[],p=[],d=o.length,v=s||dt(t||"*",u.nodeType?[u]:u,[]),m=e&&(s||!t)?lt(v,h,e,u,a):v,g=n?i||(s?e:d||r)?[]:o:m;n&&n(m,g,u,a);if(r){f=lt(g,p),r(f,[],u,a),l=f.length;while(l--)if(c=f[l])g[p[l]]=!(m[p[l]]=c)}if(s){if(i||e){if(i){f=[],l=g.length;while(l--)(c=g[l])&&f.push(m[l]=c);i(null,g=[],f,a)}l=g.length;while(l--)(c=g[l])&&(f=i?T.call(s,c):h[l])>-1&&(s[f]=!(o[f]=c))}}else g=lt(g===o?g.splice(d,g.length):g),i?i(null,o,g,a):S.apply(o,g)})}function ht(e){var t,n,r,s=e.length,o=i.relative[e[0].type],u=o||i.relative[" "],a=o?1:0,f=at(function(e){return e===t},u,!0),l=at(function(e){return T.call(t,e)>-1},u,!0),h=[function(e,n,r){return!o&&(r||n!==c)||((t=n).nodeType?f(e,n,r):l(e,n,r))}];for(;a<s;a++)if(n=i.relative[e[a].type])h=[at(ft(h),n)];else{n=i.filter[e[a].type].apply(null,e[a].matches);if(n[d]){r=++a;for(;r<s;r++)if(i.relative[e[r].type])break;return ct(a>1&&ft(h),a>1&&e.slice(0,a-1).join("").replace(j,"$1"),n,a<r&&ht(e.slice(a,r)),r<s&&ht(e=e.slice(r)),r<s&&e.join(""))}h.push(n)}return ft(h)}function pt(e,t){var r=t.length>0,s=e.length>0,o=function(u,a,f,l,h){var p,d,v,m=[],y=0,w="0",x=u&&[],T=h!=null,N=c,C=u||s&&i.find.TAG("*",h&&a.parentNode||a),k=b+=N==null?1:Math.E;T&&(c=a!==g&&a,n=o.el);for(;(p=C[w])!=null;w++){if(s&&p){for(d=0;v=e[d];d++)if(v(p,a,f)){l.push(p);break}T&&(b=k,n=++o.el)}r&&((p=!v&&p)&&y--,u&&x.push(p))}y+=w;if(r&&w!==y){for(d=0;v=t[d];d++)v(x,m,a,f);if(u){if(y>0)while(w--)!x[w]&&!m[w]&&(m[w]=E.call(l));m=lt(m)}S.apply(l,m),T&&!u&&m.length>0&&y+t.length>1&&nt.uniqueSort(l)}return T&&(b=k,c=N),x};return o.el=0,r?N(o):o}function dt(e,t,n){var r=0,i=t.length;for(;r<i;r++)nt(e,t[r],n);return n}function vt(e,t,n,r,s){var o,u,f,l,c,h=ut(e),p=h.length;if(!r&&h.length===1){u=h[0]=h[0].slice(0);if(u.length>2&&(f=u[0]).type==="ID"&&t.nodeType===9&&!s&&i.relative[u[1].type]){t=i.find.ID(f.matches[0].replace($,""),t,s)[0];if(!t)return n;e=e.slice(u.shift().length)}for(o=J.POS.test(e)?-1:u.length-1;o>=0;o--){f=u[o];if(i.relative[l=f.type])break;if(c=i.find[l])if(r=c(f.matches[0].replace($,""),z.test(u[0].type)&&t.parentNode||t,s)){u.splice(o,1),e=r.length&&u.join("");if(!e)return S.apply(n,x.call(r,0)),n;break}}}return a(e,h)(r,t,s,n,z.test(e)),n}function mt(){}var n,r,i,s,o,u,a,f,l,c,h=!0,p="undefined",d=("sizcache"+Math.random()).replace(".",""),m=String,g=e.document,y=g.documentElement,b=0,w=0,E=[].pop,S=[].push,x=[].slice,T=[].indexOf||function(e){var t=0,n=this.length;for(;t<n;t++)if(this[t]===e)return t;return-1},N=function(e,t){return e[d]=t==null||t,e},C=function(){var e={},t=[];return N(function(n,r){return t.push(n)>i.cacheLength&&delete e[t.shift()],e[n+" "]=r},e)},k=C(),L=C(),A=C(),O="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",_=M.replace("w","w#"),D="([*^$|!~]?=)",P="\\["+O+"*("+M+")"+O+"*(?:"+D+O+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+_+")|)|)"+O+"*\\]",H=":("+M+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+P+")|[^:]|\\\\.)*|.*))\\)|)",B=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+O+"*((?:-\\d)?\\d*)"+O+"*\\)|)(?=[^-]|$)",j=new RegExp("^"+O+"+|((?:^|[^\\\\])(?:\\\\.)*)"+O+"+$","g"),F=new RegExp("^"+O+"*,"+O+"*"),I=new RegExp("^"+O+"*([\\x20\\t\\r\\n\\f>+~])"+O+"*"),q=new RegExp(H),R=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,U=/^:not/,z=/[\x20\t\r\n\f]*[+~]/,W=/:not\($/,X=/h\d/i,V=/input|select|textarea|button/i,$=/\\(?!\\)/g,J={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),NAME:new RegExp("^\\[name=['\"]?("+M+")['\"]?\\]"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+H),POS:new RegExp(B,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+O+"*(even|odd|(([+-]|)(\\d*)n|)"+O+"*(?:([+-]|)"+O+"*(\\d+)|))"+O+"*\\)|)","i"),needsContext:new RegExp("^"+O+"*[>+~]|"+B,"i")},K=function(e){var t=g.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}},Q=K(function(e){return e.appendChild(g.createComment("")),!e.getElementsByTagName("*").length}),G=K(function(e){return e.innerHTML="<a href='#'></a>",e.firstChild&&typeof e.firstChild.getAttribute!==p&&e.firstChild.getAttribute("href")==="#"}),Y=K(function(e){e.innerHTML="<select></select>";var t=typeof e.lastChild.getAttribute("multiple");return t!=="boolean"&&t!=="string"}),Z=K(function(e){return e.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",!e.getElementsByClassName||!e.getElementsByClassName("e").length?!1:(e.lastChild.className="e",e.getElementsByClassName("e").length===2)}),et=K(function(e){e.id=d+0,e.innerHTML="<a name='"+d+"'></a><div name='"+d+"'></div>",y.insertBefore(e,y.firstChild);var t=g.getElementsByName&&g.getElementsByName(d).length===2+g.getElementsByName(d+0).length;return r=!g.getElementById(d),y.removeChild(e),t});try{x.call(y.childNodes,0)[0].nodeType}catch(tt){x=function(e){var t,n=[];for(;t=this[e];e++)n.push(t);return n}}nt.matches=function(e,t){return nt(e,null,null,t)},nt.matchesSelector=function(e,t){return nt(t,null,null,[e]).length>0},s=nt.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(i===1||i===9||i===11){if(typeof e.textContent=="string")return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=s(e)}else if(i===3||i===4)return e.nodeValue}else for(;t=e[r];r++)n+=s(t);return n},o=nt.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?t.nodeName!=="HTML":!1},u=nt.contains=y.contains?function(e,t){var n=e.nodeType===9?e.documentElement:e,r=t&&t.parentNode;return e===r||!!(r&&r.nodeType===1&&n.contains&&n.contains(r))}:y.compareDocumentPosition?function(e,t){return t&&!!(e.compareDocumentPosition(t)&16)}:function(e,t){while(t=t.parentNode)if(t===e)return!0;return!1},nt.attr=function(e,t){var n,r=o(e);return r||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):r||Y?e.getAttribute(t):(n=e.getAttributeNode(t),n?typeof e[t]=="boolean"?e[t]?t:null:n.specified?n.value:null:null)},i=nt.selectors={cacheLength:50,createPseudo:N,match:J,attrHandle:G?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},find:{ID:r?function(e,t,n){if(typeof t.getElementById!==p&&!n){var r=t.getElementById(e);return r&&r.parentNode?[r]:[]}}:function(e,n,r){if(typeof n.getElementById!==p&&!r){var i=n.getElementById(e);return i?i.id===e||typeof i.getAttributeNode!==p&&i.getAttributeNode("id").value===e?[i]:t:[]}},TAG:Q?function(e,t){if(typeof t.getElementsByTagName!==p)return t.getElementsByTagName(e)}:function(e,t){var n=t.getElementsByTagName(e);if(e==="*"){var r,i=[],s=0;for(;r=n[s];s++)r.nodeType===1&&i.push(r);return i}return n},NAME:et&&function(e,t){if(typeof t.getElementsByName!==p)return t.getElementsByName(name)},CLASS:Z&&function(e,t,n){if(typeof t.getElementsByClassName!==p&&!n)return t.getElementsByClassName(e)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace($,""),e[3]=(e[4]||e[5]||"").replace($,""),e[2]==="~="&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),e[1]==="nth"?(e[2]||nt.error(e[0]),e[3]=+(e[3]?e[4]+(e[5]||1):2*(e[2]==="even"||e[2]==="odd")),e[4]=+(e[6]+e[7]||e[2]==="odd")):e[2]&&nt.error(e[0]),e},PSEUDO:function(e){var t,n;if(J.CHILD.test(e[0]))return null;if(e[3])e[2]=e[3];else if(t=e[4])q.test(t)&&(n=ut(t,!0))&&(n=t.indexOf(")",t.length-n)-t.length)&&(t=t.slice(0,n),e[0]=e[0].slice(0,n)),e[2]=t;return e.slice(0,3)}},filter:{ID:r?function(e){return e=e.replace($,""),function(t){return t.getAttribute("id")===e}}:function(e){return e=e.replace($,""),function(t){var n=typeof t.getAttributeNode!==p&&t.getAttributeNode("id");return n&&n.value===e}},TAG:function(e){return e==="*"?function(){return!0}:(e=e.replace($,"").toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[d][e+" "];return t||(t=new RegExp("(^|"+O+")"+e+"("+O+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==p&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r,i){var s=nt.attr(r,e);return s==null?t==="!=":t?(s+="",t==="="?s===n:t==="!="?s!==n:t==="^="?n&&s.indexOf(n)===0:t==="*="?n&&s.indexOf(n)>-1:t==="$="?n&&s.substr(s.length-n.length)===n:t==="~="?(" "+s+" ").indexOf(n)>-1:t==="|="?s===n||s.substr(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r){return e==="nth"?function(e){var t,i,s=e.parentNode;if(n===1&&r===0)return!0;if(s){i=0;for(t=s.firstChild;t;t=t.nextSibling)if(t.nodeType===1){i++;if(e===t)break}}return i-=r,i===n||i%n===0&&i/n>=0}:function(t){var n=t;switch(e){case"only":case"first":while(n=n.previousSibling)if(n.nodeType===1)return!1;if(e==="first")return!0;n=t;case"last":while(n=n.nextSibling)if(n.nodeType===1)return!1;return!0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||nt.error("unsupported pseudo: "+e);return r[d]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?N(function(e,n){var i,s=r(e,t),o=s.length;while(o--)i=T.call(e,s[o]),e[i]=!(n[i]=s[o])}):function(e){return r(e,0,n)}):r}},pseudos:{not:N(function(e){var t=[],n=[],r=a(e.replace(j,"$1"));return r[d]?N(function(e,t,n,i){var s,o=r(e,null,i,[]),u=e.length;while(u--)if(s=o[u])e[u]=!(t[u]=s)}):function(e,i,s){return t[0]=e,r(t,null,s,n),!n.pop()}}),has:N(function(e){return function(t){return nt(e,t).length>0}}),contains:N(function(e){return function(t){return(t.textContent||t.innerText||s(t)).indexOf(e)>-1}}),enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&!!e.checked||t==="option"&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},parent:function(e){return!i.pseudos.empty(e)},empty:function(e){var t;e=e.firstChild;while(e){if(e.nodeName>"@"||(t=e.nodeType)===3||t===4)return!1;e=e.nextSibling}return!0},header:function(e){return X.test(e.nodeName)},text:function(e){var t,n;return e.nodeName.toLowerCase()==="input"&&(t=e.type)==="text"&&((n=e.getAttribute("type"))==null||n.toLowerCase()===t)},radio:rt("radio"),checkbox:rt("checkbox"),file:rt("file"),password:rt("password"),image:rt("image"),submit:it("submit"),reset:it("reset"),button:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&e.type==="button"||t==="button"},input:function(e){return V.test(e.nodeName)},focus:function(e){var t=e.ownerDocument;return e===t.activeElement&&(!t.hasFocus||t.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},active:function(e){return e===e.ownerDocument.activeElement},first:st(function(){return[0]}),last:st(function(e,t){return[t-1]}),eq:st(function(e,t,n){return[n<0?n+t:n]}),even:st(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:st(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:st(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:st(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}},f=y.compareDocumentPosition?function(e,t){return e===t?(l=!0,0):(!e.compareDocumentPosition||!t.compareDocumentPosition?e.compareDocumentPosition:e.compareDocumentPosition(t)&4)?-1:1}:function(e,t){if(e===t)return l=!0,0;if(e.sourceIndex&&t.sourceIndex)return e.sourceIndex-t.sourceIndex;var n,r,i=[],s=[],o=e.parentNode,u=t.parentNode,a=o;if(o===u)return ot(e,t);if(!o)return-1;if(!u)return 1;while(a)i.unshift(a),a=a.parentNode;a=u;while(a)s.unshift(a),a=a.parentNode;n=i.length,r=s.length;for(var f=0;f<n&&f<r;f++)if(i[f]!==s[f])return ot(i[f],s[f]);return f===n?ot(e,s[f],-1):ot(i[f],t,1)},[0,0].sort(f),h=!l,nt.uniqueSort=function(e){var t,n=[],r=1,i=0;l=h,e.sort(f);if(l){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e},nt.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},a=nt.compile=function(e,t){var n,r=[],i=[],s=A[d][e+" "];if(!s){t||(t=ut(e)),n=t.length;while(n--)s=ht(t[n]),s[d]?r.push(s):i.push(s);s=A(e,pt(i,r))}return s},g.querySelectorAll&&function(){var e,t=vt,n=/'|\\/g,r=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,i=[":focus"],s=[":active"],u=y.matchesSelector||y.mozMatchesSelector||y.webkitMatchesSelector||y.oMatchesSelector||y.msMatchesSelector;K(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||i.push("\\["+O+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||i.push(":checked")}),K(function(e){e.innerHTML="<p test=''></p>",e.querySelectorAll("[test^='']").length&&i.push("[*^$]="+O+"*(?:\"\"|'')"),e.innerHTML="<input type='hidden'/>",e.querySelectorAll(":enabled").length||i.push(":enabled",":disabled")}),i=new RegExp(i.join("|")),vt=function(e,r,s,o,u){if(!o&&!u&&!i.test(e)){var a,f,l=!0,c=d,h=r,p=r.nodeType===9&&e;if(r.nodeType===1&&r.nodeName.toLowerCase()!=="object"){a=ut(e),(l=r.getAttribute("id"))?c=l.replace(n,"\\$&"):r.setAttribute("id",c),c="[id='"+c+"'] ",f=a.length;while(f--)a[f]=c+a[f].join("");h=z.test(e)&&r.parentNode||r,p=a.join(",")}if(p)try{return S.apply(s,x.call(h.querySelectorAll(p),0)),s}catch(v){}finally{l||r.removeAttribute("id")}}return t(e,r,s,o,u)},u&&(K(function(t){e=u.call(t,"div");try{u.call(t,"[test!='']:sizzle"),s.push("!=",H)}catch(n){}}),s=new RegExp(s.join("|")),nt.matchesSelector=function(t,n){n=n.replace(r,"='$1']");if(!o(t)&&!s.test(n)&&!i.test(n))try{var a=u.call(t,n);if(a||e||t.document&&t.document.nodeType!==11)return a}catch(f){}return nt(n,null,null,[t]).length>0})}(),i.pseudos.nth=i.pseudos.eq,i.filters=mt.prototype=i.pseudos,i.setFilters=new mt,nt.attr=v.attr,v.find=nt,v.expr=nt.selectors,v.expr[":"]=v.expr.pseudos,v.unique=nt.uniqueSort,v.text=nt.getText,v.isXMLDoc=nt.isXML,v.contains=nt.contains}(e);var nt=/Until$/,rt=/^(?:parents|prev(?:Until|All))/,it=/^.[^:#\[\.,]*$/,st=v.expr.match.needsContext,ot={children:!0,contents:!0,next:!0,prev:!0};v.fn.extend({find:function(e){var t,n,r,i,s,o,u=this;if(typeof e!="string")return v(e).filter(function(){for(t=0,n=u.length;t<n;t++)if(v.contains(u[t],this))return!0});o=this.pushStack("","find",e);for(t=0,n=this.length;t<n;t++){r=o.length,v.find(e,this[t],o);if(t>0)for(i=r;i<o.length;i++)for(s=0;s<r;s++)if(o[s]===o[i]){o.splice(i--,1);break}}return o},has:function(e){var t,n=v(e,this),r=n.length;return this.filter(function(){for(t=0;t<r;t++)if(v.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1),"not",e)},filter:function(e){return this.pushStack(ft(this,e,!0),"filter",e)},is:function(e){return!!e&&(typeof e=="string"?st.test(e)?v(e,this.context).index(this[0])>=0:v.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,s=[],o=st.test(e)||typeof e!="string"?v(e,t||this.context):0;for(;r<i;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&n.nodeType!==11){if(o?o.index(n)>-1:v.find.matchesSelector(n,e)){s.push(n);break}n=n.parentNode}}return s=s.length>1?v.unique(s):s,this.pushStack(s,"closest",e)},index:function(e){return e?typeof e=="string"?v.inArray(this[0],v(e)):v.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(e,t){var n=typeof e=="string"?v(e,t):v.makeArray(e&&e.nodeType?[e]:e),r=v.merge(this.get(),n);return this.pushStack(ut(n[0])||ut(r[0])?r:v.unique(r))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}}),v.fn.andSelf=v.fn.addBack,v.each({parent:function(e){var t=e.parentNode;return t&&t.nodeType!==11?t:null},parents:function(e){return v.dir(e,"parentNode")},parentsUntil:function(e,t,n){return v.dir(e,"parentNode",n)},next:function(e){return at(e,"nextSibling")},prev:function(e){return at(e,"previousSibling")},nextAll:function(e){return v.dir(e,"nextSibling")},prevAll:function(e){return v.dir(e,"previousSibling")},nextUntil:function(e,t,n){return v.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return v.dir(e,"previousSibling",n)},siblings:function(e){return v.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return v.sibling(e.firstChild)},contents:function(e){return v.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:v.merge([],e.childNodes)}},function(e,t){v.fn[e]=function(n,r){var i=v.map(this,t,n);return nt.test(e)||(r=n),r&&typeof r=="string"&&(i=v.filter(r,i)),i=this.length>1&&!ot[e]?v.unique(i):i,this.length>1&&rt.test(e)&&(i=i.reverse()),this.pushStack(i,e,l.call(arguments).join(","))}}),v.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),t.length===1?v.find.matchesSelector(t[0],e)?[t[0]]:[]:v.find.matches(e,t)},dir:function(e,n,r){var i=[],s=e[n];while(s&&s.nodeType!==9&&(r===t||s.nodeType!==1||!v(s).is(r)))s.nodeType===1&&i.push(s),s=s[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)e.nodeType===1&&e!==t&&n.push(e);return n}});var ct="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ht=/ jQuery\d+="(?:null|\d+)"/g,pt=/^\s+/,dt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,vt=/<([\w:]+)/,mt=/<tbody/i,gt=/<|&#?\w+;/,yt=/<(?:script|style|link)/i,bt=/<(?:script|object|embed|option|style)/i,wt=new RegExp("<(?:"+ct+")[\\s/>]","i"),Et=/^(?:checkbox|radio)$/,St=/checked\s*(?:[^=]|=\s*.checked.)/i,xt=/\/(java|ecma)script/i,Tt=/^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,Nt={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,"",""]},Ct=lt(i),kt=Ct.appendChild(i.createElement("div"));Nt.optgroup=Nt.option,Nt.tbody=Nt.tfoot=Nt.colgroup=Nt.caption=Nt.thead,Nt.th=Nt.td,v.support.htmlSerialize||(Nt._default=[1,"X<div>","</div>"]),v.fn.extend({text:function(e){return v.access(this,function(e){return e===t?v.text(this):this.empty().append((this[0]&&this[0].ownerDocument||i).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(v.isFunction(e))return this.each(function(t){v(this).wrapAll(e.call(this,t))});if(this[0]){var t=v(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&e.firstChild.nodeType===1)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return v.isFunction(e)?this.each(function(t){v(this).wrapInner(e.call(this,t))}):this.each(function(){var t=v(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=v.isFunction(e);return this.each(function(n){v(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){v.nodeName(this,"body")||v(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(e,this.firstChild)})},before:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(e,this),"before",this.selector)}},after:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this.nextSibling)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(this,e),"after",this.selector)}},remove:function(e,t){var n,r=0;for(;(n=this[r])!=null;r++)if(!e||v.filter(e,[n]).length)!t&&n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),v.cleanData([n])),n.parentNode&&n.parentNode.removeChild(n);return this},empty:function(){var e,t=0;for(;(e=this[t])!=null;t++){e.nodeType===1&&v.cleanData(e.getElementsByTagName("*"));while(e.firstChild)e.removeChild(e.firstChild)}return this},clone:function(e,t){return e=e==null?!1:e,t=t==null?e:t,this.map(function(){return v.clone(this,e,t)})},html:function(e){return v.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return n.nodeType===1?n.innerHTML.replace(ht,""):t;if(typeof e=="string"&&!yt.test(e)&&(v.support.htmlSerialize||!wt.test(e))&&(v.support.leadingWhitespace||!pt.test(e))&&!Nt[(vt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(dt,"<$1></$2>");try{for(;r<i;r++)n=this[r]||{},n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),n.innerHTML=e);n=0}catch(s){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){return ut(this[0])?this.length?this.pushStack(v(v.isFunction(e)?e():e),"replaceWith",e):this:v.isFunction(e)?this.each(function(t){var n=v(this),r=n.html();n.replaceWith(e.call(this,t,r))}):(typeof e!="string"&&(e=v(e).detach()),this.each(function(){var t=this.nextSibling,n=this.parentNode;v(this).remove(),t?v(t).before(e):v(n).append(e)}))},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=[].concat.apply([],e);var i,s,o,u,a=0,f=e[0],l=[],c=this.length;if(!v.support.checkClone&&c>1&&typeof f=="string"&&St.test(f))return this.each(function(){v(this).domManip(e,n,r)});if(v.isFunction(f))return this.each(function(i){var s=v(this);e[0]=f.call(this,i,n?s.html():t),s.domManip(e,n,r)});if(this[0]){i=v.buildFragment(e,this,l),o=i.fragment,s=o.firstChild,o.childNodes.length===1&&(o=s);if(s){n=n&&v.nodeName(s,"tr");for(u=i.cacheable||c-1;a<c;a++)r.call(n&&v.nodeName(this[a],"table")?Lt(this[a],"tbody"):this[a],a===u?o:v.clone(o,!0,!0))}o=s=null,l.length&&v.each(l,function(e,t){t.src?v.ajax?v.ajax({url:t.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):v.error("no ajax"):v.globalEval((t.text||t.textContent||t.innerHTML||"").replace(Tt,"")),t.parentNode&&t.parentNode.removeChild(t)})}return this}}),v.buildFragment=function(e,n,r){var s,o,u,a=e[0];return n=n||i,n=!n.nodeType&&n[0]||n,n=n.ownerDocument||n,e.length===1&&typeof a=="string"&&a.length<512&&n===i&&a.charAt(0)==="<"&&!bt.test(a)&&(v.support.checkClone||!St.test(a))&&(v.support.html5Clone||!wt.test(a))&&(o=!0,s=v.fragments[a],u=s!==t),s||(s=n.createDocumentFragment(),v.clean(e,n,s,r),o&&(v.fragments[a]=u&&s)),{fragment:s,cacheable:o}},v.fragments={},v.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){v.fn[e]=function(n){var r,i=0,s=[],o=v(n),u=o.length,a=this.length===1&&this[0].parentNode;if((a==null||a&&a.nodeType===11&&a.childNodes.length===1)&&u===1)return o[t](this[0]),this;for(;i<u;i++)r=(i>0?this.clone(!0):this).get(),v(o[i])[t](r),s=s.concat(r);return this.pushStack(s,e,o.selector)}}),v.extend({clone:function(e,t,n){var r,i,s,o;v.support.html5Clone||v.isXMLDoc(e)||!wt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(kt.innerHTML=e.outerHTML,kt.removeChild(o=kt.firstChild));if((!v.support.noCloneEvent||!v.support.noCloneChecked)&&(e.nodeType===1||e.nodeType===11)&&!v.isXMLDoc(e)){Ot(e,o),r=Mt(e),i=Mt(o);for(s=0;r[s];++s)i[s]&&Ot(r[s],i[s])}if(t){At(e,o);if(n){r=Mt(e),i=Mt(o);for(s=0;r[s];++s)At(r[s],i[s])}}return r=i=null,o},clean:function(e,t,n,r){var s,o,u,a,f,l,c,h,p,d,m,g,y=t===i&&Ct,b=[];if(!t||typeof t.createDocumentFragment=="undefined")t=i;for(s=0;(u=e[s])!=null;s++){typeof u=="number"&&(u+="");if(!u)continue;if(typeof u=="string")if(!gt.test(u))u=t.createTextNode(u);else{y=y||lt(t),c=t.createElement("div"),y.appendChild(c),u=u.replace(dt,"<$1></$2>"),a=(vt.exec(u)||["",""])[1].toLowerCase(),f=Nt[a]||Nt._default,l=f[0],c.innerHTML=f[1]+u+f[2];while(l--)c=c.lastChild;if(!v.support.tbody){h=mt.test(u),p=a==="table"&&!h?c.firstChild&&c.firstChild.childNodes:f[1]==="<table>"&&!h?c.childNodes:[];for(o=p.length-1;o>=0;--o)v.nodeName(p[o],"tbody")&&!p[o].childNodes.length&&p[o].parentNode.removeChild(p[o])}!v.support.leadingWhitespace&&pt.test(u)&&c.insertBefore(t.createTextNode(pt.exec(u)[0]),c.firstChild),u=c.childNodes,c.parentNode.removeChild(c)}u.nodeType?b.push(u):v.merge(b,u)}c&&(u=c=y=null);if(!v.support.appendChecked)for(s=0;(u=b[s])!=null;s++)v.nodeName(u,"input")?_t(u):typeof u.getElementsByTagName!="undefined"&&v.grep(u.getElementsByTagName("input"),_t);if(n){m=function(e){if(!e.type||xt.test(e.type))return r?r.push(e.parentNode?e.parentNode.removeChild(e):e):n.appendChild(e)};for(s=0;(u=b[s])!=null;s++)if(!v.nodeName(u,"script")||!m(u))n.appendChild(u),typeof u.getElementsByTagName!="undefined"&&(g=v.grep(v.merge([],u.getElementsByTagName("script")),m),b.splice.apply(b,[s+1,0].concat(g)),s+=g.length)}return b},cleanData:function(e,t){var n,r,i,s,o=0,u=v.expando,a=v.cache,f=v.support.deleteExpando,l=v.event.special;for(;(i=e[o])!=null;o++)if(t||v.acceptData(i)){r=i[u],n=r&&a[r];if(n){if(n.events)for(s in n.events)l[s]?v.event.remove(i,s):v.removeEvent(i,s,n.handle);a[r]&&(delete a[r],f?delete i[u]:i.removeAttribute?i.removeAttribute(u):i[u]=null,v.deletedIds.push(r))}}}}),function(){var e,t;v.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}},e=v.uaMatch(o.userAgent),t={},e.browser&&(t[e.browser]=!0,t.version=e.version),t.chrome?t.webkit=!0:t.webkit&&(t.safari=!0),v.browser=t,v.sub=function(){function e(t,n){return new e.fn.init(t,n)}v.extend(!0,e,this),e.superclass=this,e.fn=e.prototype=this(),e.fn.constructor=e,e.sub=this.sub,e.fn.init=function(r,i){return i&&i instanceof v&&!(i instanceof e)&&(i=e(i)),v.fn.init.call(this,r,i,t)},e.fn.init.prototype=e.fn;var t=e(i);return e}}();var Dt,Pt,Ht,Bt=/alpha\([^)]*\)/i,jt=/opacity=([^)]*)/,Ft=/^(top|right|bottom|left)$/,It=/^(none|table(?!-c[ea]).+)/,qt=/^margin/,Rt=new RegExp("^("+m+")(.*)$","i"),Ut=new RegExp("^("+m+")(?!px)[a-z%]+$","i"),zt=new RegExp("^([-+])=("+m+")","i"),Wt={BODY:"block"},Xt={position:"absolute",visibility:"hidden",display:"block"},Vt={letterSpacing:0,fontWeight:400},$t=["Top","Right","Bottom","Left"],Jt=["Webkit","O","Moz","ms"],Kt=v.fn.toggle;v.fn.extend({css:function(e,n){return v.access(this,function(e,n,r){return r!==t?v.style(e,n,r):v.css(e,n)},e,n,arguments.length>1)},show:function(){return Yt(this,!0)},hide:function(){return Yt(this)},toggle:function(e,t){var n=typeof e=="boolean";return v.isFunction(e)&&v.isFunction(t)?Kt.apply(this,arguments):this.each(function(){(n?e:Gt(this))?v(this).show():v(this).hide()})}}),v.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Dt(e,"opacity");return n===""?"1":n}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":v.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(!e||e.nodeType===3||e.nodeType===8||!e.style)return;var s,o,u,a=v.camelCase(n),f=e.style;n=v.cssProps[a]||(v.cssProps[a]=Qt(f,a)),u=v.cssHooks[n]||v.cssHooks[a];if(r===t)return u&&"get"in u&&(s=u.get(e,!1,i))!==t?s:f[n];o=typeof r,o==="string"&&(s=zt.exec(r))&&(r=(s[1]+1)*s[2]+parseFloat(v.css(e,n)),o="number");if(r==null||o==="number"&&isNaN(r))return;o==="number"&&!v.cssNumber[a]&&(r+="px");if(!u||!("set"in u)||(r=u.set(e,r,i))!==t)try{f[n]=r}catch(l){}},css:function(e,n,r,i){var s,o,u,a=v.camelCase(n);return n=v.cssProps[a]||(v.cssProps[a]=Qt(e.style,a)),u=v.cssHooks[n]||v.cssHooks[a],u&&"get"in u&&(s=u.get(e,!0,i)),s===t&&(s=Dt(e,n)),s==="normal"&&n in Vt&&(s=Vt[n]),r||i!==t?(o=parseFloat(s),r||v.isNumeric(o)?o||0:s):s},swap:function(e,t,n){var r,i,s={};for(i in t)s[i]=e.style[i],e.style[i]=t[i];r=n.call(e);for(i in t)e.style[i]=s[i];return r}}),e.getComputedStyle?Dt=function(t,n){var r,i,s,o,u=e.getComputedStyle(t,null),a=t.style;return u&&(r=u.getPropertyValue(n)||u[n],r===""&&!v.contains(t.ownerDocument,t)&&(r=v.style(t,n)),Ut.test(r)&&qt.test(n)&&(i=a.width,s=a.minWidth,o=a.maxWidth,a.minWidth=a.maxWidth=a.width=r,r=u.width,a.width=i,a.minWidth=s,a.maxWidth=o)),r}:i.documentElement.currentStyle&&(Dt=function(e,t){var n,r,i=e.currentStyle&&e.currentStyle[t],s=e.style;return i==null&&s&&s[t]&&(i=s[t]),Ut.test(i)&&!Ft.test(t)&&(n=s.left,r=e.runtimeStyle&&e.runtimeStyle.left,r&&(e.runtimeStyle.left=e.currentStyle.left),s.left=t==="fontSize"?"1em":i,i=s.pixelLeft+"px",s.left=n,r&&(e.runtimeStyle.left=r)),i===""?"auto":i}),v.each(["height","width"],function(e,t){v.cssHooks[t]={get:function(e,n,r){if(n)return e.offsetWidth===0&&It.test(Dt(e,"display"))?v.swap(e,Xt,function(){return tn(e,t,r)}):tn(e,t,r)},set:function(e,n,r){return Zt(e,n,r?en(e,t,r,v.support.boxSizing&&v.css(e,"boxSizing")==="border-box"):0)}}}),v.support.opacity||(v.cssHooks.opacity={get:function(e,t){return jt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=v.isNumeric(t)?"alpha(opacity="+t*100+")":"",s=r&&r.filter||n.filter||"";n.zoom=1;if(t>=1&&v.trim(s.replace(Bt,""))===""&&n.removeAttribute){n.removeAttribute("filter");if(r&&!r.filter)return}n.filter=Bt.test(s)?s.replace(Bt,i):s+" "+i}}),v(function(){v.support.reliableMarginRight||(v.cssHooks.marginRight={get:function(e,t){return v.swap(e,{display:"inline-block"},function(){if(t)return Dt(e,"marginRight")})}}),!v.support.pixelPosition&&v.fn.position&&v.each(["top","left"],function(e,t){v.cssHooks[t]={get:function(e,n){if(n){var r=Dt(e,t);return Ut.test(r)?v(e).position()[t]+"px":r}}}})}),v.expr&&v.expr.filters&&(v.expr.filters.hidden=function(e){return e.offsetWidth===0&&e.offsetHeight===0||!v.support.reliableHiddenOffsets&&(e.style&&e.style.display||Dt(e,"display"))==="none"},v.expr.filters.visible=function(e){return!v.expr.filters.hidden(e)}),v.each({margin:"",padding:"",border:"Width"},function(e,t){v.cssHooks[e+t]={expand:function(n){var r,i=typeof n=="string"?n.split(" "):[n],s={};for(r=0;r<4;r++)s[e+$t[r]+t]=i[r]||i[r-2]||i[0];return s}},qt.test(e)||(v.cssHooks[e+t].set=Zt)});var rn=/%20/g,sn=/\[\]$/,on=/\r?\n/g,un=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,an=/^(?:select|textarea)/i;v.fn.extend({serialize:function(){return v.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?v.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||an.test(this.nodeName)||un.test(this.type))}).map(function(e,t){var n=v(this).val();return n==null?null:v.isArray(n)?v.map(n,function(e,n){return{name:t.name,value:e.replace(on,"\r\n")}}):{name:t.name,value:n.replace(on,"\r\n")}}).get()}}),v.param=function(e,n){var r,i=[],s=function(e,t){t=v.isFunction(t)?t():t==null?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};n===t&&(n=v.ajaxSettings&&v.ajaxSettings.traditional);if(v.isArray(e)||e.jquery&&!v.isPlainObject(e))v.each(e,function(){s(this.name,this.value)});else for(r in e)fn(r,e[r],n,s);return i.join("&").replace(rn,"+")};var ln,cn,hn=/#.*$/,pn=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,dn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,vn=/^(?:GET|HEAD)$/,mn=/^\/\//,gn=/\?/,yn=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bn=/([?&])_=[^&]*/,wn=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,En=v.fn.load,Sn={},xn={},Tn=["*/"]+["*"];try{cn=s.href}catch(Nn){cn=i.createElement("a"),cn.href="",cn=cn.href}ln=wn.exec(cn.toLowerCase())||[],v.fn.load=function(e,n,r){if(typeof e!="string"&&En)return En.apply(this,arguments);if(!this.length)return this;var i,s,o,u=this,a=e.indexOf(" ");return a>=0&&(i=e.slice(a,e.length),e=e.slice(0,a)),v.isFunction(n)?(r=n,n=t):n&&typeof n=="object"&&(s="POST"),v.ajax({url:e,type:s,dataType:"html",data:n,complete:function(e,t){r&&u.each(r,o||[e.responseText,t,e])}}).done(function(e){o=arguments,u.html(i?v("<div>").append(e.replace(yn,"")).find(i):e)}),this},v.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,t){v.fn[t]=function(e){return this.on(t,e)}}),v.each(["get","post"],function(e,n){v[n]=function(e,r,i,s){return v.isFunction(r)&&(s=s||i,i=r,r=t),v.ajax({type:n,url:e,data:r,success:i,dataType:s})}}),v.extend({getScript:function(e,n){return v.get(e,t,n,"script")},getJSON:function(e,t,n){return v.get(e,t,n,"json")},ajaxSetup:function(e,t){return t?Ln(e,v.ajaxSettings):(t=e,e=v.ajaxSettings),Ln(e,t),e},ajaxSettings:{url:cn,isLocal:dn.test(ln[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":Tn},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":v.parseJSON,"text xml":v.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:Cn(Sn),ajaxTransport:Cn(xn),ajax:function(e,n){function T(e,n,s,a){var l,y,b,w,S,T=n;if(E===2)return;E=2,u&&clearTimeout(u),o=t,i=a||"",x.readyState=e>0?4:0,s&&(w=An(c,x,s));if(e>=200&&e<300||e===304)c.ifModified&&(S=x.getResponseHeader("Last-Modified"),S&&(v.lastModified[r]=S),S=x.getResponseHeader("Etag"),S&&(v.etag[r]=S)),e===304?(T="notmodified",l=!0):(l=On(c,w),T=l.state,y=l.data,b=l.error,l=!b);else{b=T;if(!T||e)T="error",e<0&&(e=0)}x.status=e,x.statusText=(n||T)+"",l?d.resolveWith(h,[y,T,x]):d.rejectWith(h,[x,T,b]),x.statusCode(g),g=t,f&&p.trigger("ajax"+(l?"Success":"Error"),[x,c,l?y:b]),m.fireWith(h,[x,T]),f&&(p.trigger("ajaxComplete",[x,c]),--v.active||v.event.trigger("ajaxStop"))}typeof e=="object"&&(n=e,e=t),n=n||{};var r,i,s,o,u,a,f,l,c=v.ajaxSetup({},n),h=c.context||c,p=h!==c&&(h.nodeType||h instanceof v)?v(h):v.event,d=v.Deferred(),m=v.Callbacks("once memory"),g=c.statusCode||{},b={},w={},E=0,S="canceled",x={readyState:0,setRequestHeader:function(e,t){if(!E){var n=e.toLowerCase();e=w[n]=w[n]||e,b[e]=t}return this},getAllResponseHeaders:function(){return E===2?i:null},getResponseHeader:function(e){var n;if(E===2){if(!s){s={};while(n=pn.exec(i))s[n[1].toLowerCase()]=n[2]}n=s[e.toLowerCase()]}return n===t?null:n},overrideMimeType:function(e){return E||(c.mimeType=e),this},abort:function(e){return e=e||S,o&&o.abort(e),T(0,e),this}};d.promise(x),x.success=x.done,x.error=x.fail,x.complete=m.add,x.statusCode=function(e){if(e){var t;if(E<2)for(t in e)g[t]=[g[t],e[t]];else t=e[x.status],x.always(t)}return this},c.url=((e||c.url)+"").replace(hn,"").replace(mn,ln[1]+"//"),c.dataTypes=v.trim(c.dataType||"*").toLowerCase().split(y),c.crossDomain==null&&(a=wn.exec(c.url.toLowerCase()),c.crossDomain=!(!a||a[1]===ln[1]&&a[2]===ln[2]&&(a[3]||(a[1]==="http:"?80:443))==(ln[3]||(ln[1]==="http:"?80:443)))),c.data&&c.processData&&typeof c.data!="string"&&(c.data=v.param(c.data,c.traditional)),kn(Sn,c,n,x);if(E===2)return x;f=c.global,c.type=c.type.toUpperCase(),c.hasContent=!vn.test(c.type),f&&v.active++===0&&v.event.trigger("ajaxStart");if(!c.hasContent){c.data&&(c.url+=(gn.test(c.url)?"&":"?")+c.data,delete c.data),r=c.url;if(c.cache===!1){var N=v.now(),C=c.url.replace(bn,"$1_="+N);c.url=C+(C===c.url?(gn.test(c.url)?"&":"?")+"_="+N:"")}}(c.data&&c.hasContent&&c.contentType!==!1||n.contentType)&&x.setRequestHeader("Content-Type",c.contentType),c.ifModified&&(r=r||c.url,v.lastModified[r]&&x.setRequestHeader("If-Modified-Since",v.lastModified[r]),v.etag[r]&&x.setRequestHeader("If-None-Match",v.etag[r])),x.setRequestHeader("Accept",c.dataTypes[0]&&c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+(c.dataTypes[0]!=="*"?", "+Tn+"; q=0.01":""):c.accepts["*"]);for(l in c.headers)x.setRequestHeader(l,c.headers[l]);if(!c.beforeSend||c.beforeSend.call(h,x,c)!==!1&&E!==2){S="abort";for(l in{success:1,error:1,complete:1})x[l](c[l]);o=kn(xn,c,n,x);if(!o)T(-1,"No Transport");else{x.readyState=1,f&&p.trigger("ajaxSend",[x,c]),c.async&&c.timeout>0&&(u=setTimeout(function(){x.abort("timeout")},c.timeout));try{E=1,o.send(b,T)}catch(k){if(!(E<2))throw k;T(-1,k)}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var Mn=[],_n=/\?/,Dn=/(=)\?(?=&|$)|\?\?/,Pn=v.now();v.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Mn.pop()||v.expando+"_"+Pn++;return this[e]=!0,e}}),v.ajaxPrefilter("json jsonp",function(n,r,i){var s,o,u,a=n.data,f=n.url,l=n.jsonp!==!1,c=l&&Dn.test(f),h=l&&!c&&typeof a=="string"&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Dn.test(a);if(n.dataTypes[0]==="jsonp"||c||h)return s=n.jsonpCallback=v.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,o=e[s],c?n.url=f.replace(Dn,"$1"+s):h?n.data=a.replace(Dn,"$1"+s):l&&(n.url+=(_n.test(f)?"&":"?")+n.jsonp+"="+s),n.converters["script json"]=function(){return u||v.error(s+" was not called"),u[0]},n.dataTypes[0]="json",e[s]=function(){u=arguments},i.always(function(){e[s]=o,n[s]&&(n.jsonpCallback=r.jsonpCallback,Mn.push(s)),u&&v.isFunction(o)&&o(u[0]),u=o=t}),"script"}),v.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){return v.globalEval(e),e}}}),v.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),v.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=i.head||i.getElementsByTagName("head")[0]||i.documentElement;return{send:function(s,o){n=i.createElement("script"),n.async="async",e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,i){if(i||!n.readyState||/loaded|complete/.test(n.readyState))n.onload=n.onreadystatechange=null,r&&n.parentNode&&r.removeChild(n),n=t,i||o(200,"success")},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(0,1)}}}});var Hn,Bn=e.ActiveXObject?function(){for(var e in Hn)Hn[e](0,1)}:!1,jn=0;v.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&Fn()||In()}:Fn,function(e){v.extend(v.support,{ajax:!!e,cors:!!e&&"withCredentials"in e})}(v.ajaxSettings.xhr()),v.support.ajax&&v.ajaxTransport(function(n){if(!n.crossDomain||v.support.cors){var r;return{send:function(i,s){var o,u,a=n.xhr();n.username?a.open(n.type,n.url,n.async,n.username,n.password):a.open(n.type,n.url,n.async);if(n.xhrFields)for(u in n.xhrFields)a[u]=n.xhrFields[u];n.mimeType&&a.overrideMimeType&&a.overrideMimeType(n.mimeType),!n.crossDomain&&!i["X-Requested-With"]&&(i["X-Requested-With"]="XMLHttpRequest");try{for(u in i)a.setRequestHeader(u,i[u])}catch(f){}a.send(n.hasContent&&n.data||null),r=function(e,i){var u,f,l,c,h;try{if(r&&(i||a.readyState===4)){r=t,o&&(a.onreadystatechange=v.noop,Bn&&delete Hn[o]);if(i)a.readyState!==4&&a.abort();else{u=a.status,l=a.getAllResponseHeaders(),c={},h=a.responseXML,h&&h.documentElement&&(c.xml=h);try{c.text=a.responseText}catch(p){}try{f=a.statusText}catch(p){f=""}!u&&n.isLocal&&!n.crossDomain?u=c.text?200:404:u===1223&&(u=204)}}}catch(d){i||s(-1,d)}c&&s(u,f,c,l)},n.async?a.readyState===4?setTimeout(r,0):(o=++jn,Bn&&(Hn||(Hn={},v(e).unload(Bn)),Hn[o]=r),a.onreadystatechange=r):r()},abort:function(){r&&r(0,1)}}}});var qn,Rn,Un=/^(?:toggle|show|hide)$/,zn=new RegExp("^(?:([-+])=|)("+m+")([a-z%]*)$","i"),Wn=/queueHooks$/,Xn=[Gn],Vn={"*":[function(e,t){var n,r,i=this.createTween(e,t),s=zn.exec(t),o=i.cur(),u=+o||0,a=1,f=20;if(s){n=+s[2],r=s[3]||(v.cssNumber[e]?"":"px");if(r!=="px"&&u){u=v.css(i.elem,e,!0)||n||1;do a=a||".5",u/=a,v.style(i.elem,e,u+r);while(a!==(a=i.cur()/o)&&a!==1&&--f)}i.unit=r,i.start=u,i.end=s[1]?u+(s[1]+1)*n:n}return i}]};v.Animation=v.extend(Kn,{tweener:function(e,t){v.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;r<i;r++)n=e[r],Vn[n]=Vn[n]||[],Vn[n].unshift(t)},prefilter:function(e,t){t?Xn.unshift(e):Xn.push(e)}}),v.Tween=Yn,Yn.prototype={constructor:Yn,init:function(e,t,n,r,i,s){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=s||(v.cssNumber[n]?"":"px")},cur:function(){var e=Yn.propHooks[this.prop];return e&&e.get?e.get(this):Yn.propHooks._default.get(this)},run:function(e){var t,n=Yn.propHooks[this.prop];return this.options.duration?this.pos=t=v.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Yn.propHooks._default.set(this),this}},Yn.prototype.init.prototype=Yn.prototype,Yn.propHooks={_default:{get:function(e){var t;return e.elem[e.prop]==null||!!e.elem.style&&e.elem.style[e.prop]!=null?(t=v.css(e.elem,e.prop,!1,""),!t||t==="auto"?0:t):e.elem[e.prop]},set:function(e){v.fx.step[e.prop]?v.fx.step[e.prop](e):e.elem.style&&(e.elem.style[v.cssProps[e.prop]]!=null||v.cssHooks[e.prop])?v.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},Yn.propHooks.scrollTop=Yn.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},v.each(["toggle","show","hide"],function(e,t){var n=v.fn[t];v.fn[t]=function(r,i,s){return r==null||typeof r=="boolean"||!e&&v.isFunction(r)&&v.isFunction(i)?n.apply(this,arguments):this.animate(Zn(t,!0),r,i,s)}}),v.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Gt).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=v.isEmptyObject(e),s=v.speed(t,n,r),o=function(){var t=Kn(this,v.extend({},e),s);i&&t.stop(!0)};return i||s.queue===!1?this.each(o):this.queue(s.queue,o)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return typeof e!="string"&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=e!=null&&e+"queueHooks",s=v.timers,o=v._data(this);if(n)o[n]&&o[n].stop&&i(o[n]);else for(n in o)o[n]&&o[n].stop&&Wn.test(n)&&i(o[n]);for(n=s.length;n--;)s[n].elem===this&&(e==null||s[n].queue===e)&&(s[n].anim.stop(r),t=!1,s.splice(n,1));(t||!r)&&v.dequeue(this,e)})}}),v.each({slideDown:Zn("show"),slideUp:Zn("hide"),slideToggle:Zn("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){v.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),v.speed=function(e,t,n){var r=e&&typeof e=="object"?v.extend({},e):{complete:n||!n&&t||v.isFunction(e)&&e,duration:e,easing:n&&t||t&&!v.isFunction(t)&&t};r.duration=v.fx.off?0:typeof r.duration=="number"?r.duration:r.duration in v.fx.speeds?v.fx.speeds[r.duration]:v.fx.speeds._default;if(r.queue==null||r.queue===!0)r.queue="fx";return r.old=r.complete,r.complete=function(){v.isFunction(r.old)&&r.old.call(this),r.queue&&v.dequeue(this,r.queue)},r},v.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},v.timers=[],v.fx=Yn.prototype.init,v.fx.tick=function(){var e,n=v.timers,r=0;qn=v.now();for(;r<n.length;r++)e=n[r],!e()&&n[r]===e&&n.splice(r--,1);n.length||v.fx.stop(),qn=t},v.fx.timer=function(e){e()&&v.timers.push(e)&&!Rn&&(Rn=setInterval(v.fx.tick,v.fx.interval))},v.fx.interval=13,v.fx.stop=function(){clearInterval(Rn),Rn=null},v.fx.speeds={slow:600,fast:200,_default:400},v.fx.step={},v.expr&&v.expr.filters&&(v.expr.filters.animated=function(e){return v.grep(v.timers,function(t){return e===t.elem}).length});var er=/^(?:body|html)$/i;v.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){v.offset.setOffset(this,e,t)});var n,r,i,s,o,u,a,f={top:0,left:0},l=this[0],c=l&&l.ownerDocument;if(!c)return;return(r=c.body)===l?v.offset.bodyOffset(l):(n=c.documentElement,v.contains(n,l)?(typeof l.getBoundingClientRect!="undefined"&&(f=l.getBoundingClientRect()),i=tr(c),s=n.clientTop||r.clientTop||0,o=n.clientLeft||r.clientLeft||0,u=i.pageYOffset||n.scrollTop,a=i.pageXOffset||n.scrollLeft,{top:f.top+u-s,left:f.left+a-o}):f)},v.offset={bodyOffset:function(e){var t=e.offsetTop,n=e.offsetLeft;return v.support.doesNotIncludeMarginInBodyOffset&&(t+=parseFloat(v.css(e,"marginTop"))||0,n+=parseFloat(v.css(e,"marginLeft"))||0),{top:t,left:n}},setOffset:function(e,t,n){var r=v.css(e,"position");r==="static"&&(e.style.position="relative");var i=v(e),s=i.offset(),o=v.css(e,"top"),u=v.css(e,"left"),a=(r==="absolute"||r==="fixed")&&v.inArray("auto",[o,u])>-1,f={},l={},c,h;a?(l=i.position(),c=l.top,h=l.left):(c=parseFloat(o)||0,h=parseFloat(u)||0),v.isFunction(t)&&(t=t.call(e,n,s)),t.top!=null&&(f.top=t.top-s.top+c),t.left!=null&&(f.left=t.left-s.left+h),"using"in t?t.using.call(e,f):i.css(f)}},v.fn.extend({position:function(){if(!this[0])return;var e=this[0],t=this.offsetParent(),n=this.offset(),r=er.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(v.css(e,"marginTop"))||0,n.left-=parseFloat(v.css(e,"marginLeft"))||0,r.top+=parseFloat(v.css(t[0],"borderTopWidth"))||0,r.left+=parseFloat(v.css(t[0],"borderLeftWidth"))||0,{top:n.top-r.top,left:n.left-r.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||i.body;while(e&&!er.test(e.nodeName)&&v.css(e,"position")==="static")e=e.offsetParent;return e||i.body})}}),v.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);v.fn[e]=function(i){return v.access(this,function(e,i,s){var o=tr(e);if(s===t)return o?n in o?o[n]:o.document.documentElement[i]:e[i];o?o.scrollTo(r?v(o).scrollLeft():s,r?s:v(o).scrollTop()):e[i]=s},e,i,arguments.length,null)}}),v.each({Height:"height",Width:"width"},function(e,n){v.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){v.fn[i]=function(i,s){var o=arguments.length&&(r||typeof i!="boolean"),u=r||(i===!0||s===!0?"margin":"border");return v.access(this,function(n,r,i){var s;return v.isWindow(n)?n.document.documentElement["client"+e]:n.nodeType===9?(s=n.documentElement,Math.max(n.body["scroll"+e],s["scroll"+e],n.body["offset"+e],s["offset"+e],s["client"+e])):i===t?v.css(n,r,i,u):v.style(n,r,i,u)},n,o?i:t,o,null)}})}),e.jQuery=e.$=v,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return v})})(window);
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/jquerybbq/jquery.bbq.min.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/jquerybbq/jquery.bbq.min.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/jquerybbq/jquery.bbq.min.js	(revision 29468)
@@ -0,0 +1,18 @@
+﻿/*
+ * jQuery BBQ: Back Button & Query Library - v1.2.1 - 2/17/2010
+ * http://benalman.com/projects/jquery-bbq-plugin/
+ * 
+ * Copyright (c) 2010 "Cowboy" Ben Alman
+ * Dual licensed under the MIT and GPL licenses.
+ * http://benalman.com/about/license/
+ */
+(function($,p){var i,m=Array.prototype.slice,r=decodeURIComponent,a=$.param,c,l,v,b=$.bbq=$.bbq||{},q,u,j,e=$.event.special,d="hashchange",A="querystring",D="fragment",y="elemUrlAttr",g="location",k="href",t="src",x=/^.*\?|#.*$/g,w=/^.*\#/,h,C={};function E(F){return typeof F==="string"}function B(G){var F=m.call(arguments,1);return function(){return G.apply(this,F.concat(m.call(arguments)))}}function n(F){return F.replace(/^[^#]*#?(.*)$/,"$1")}function o(F){return F.replace(/(?:^[^?#]*\?([^#]*).*$)?.*/,"$1")}function f(H,M,F,I,G){var O,L,K,N,J;if(I!==i){K=F.match(H?/^([^#]*)\#?(.*)$/:/^([^#?]*)\??([^#]*)(#?.*)/);J=K[3]||"";if(G===2&&E(I)){L=I.replace(H?w:x,"")}else{N=l(K[2]);I=E(I)?l[H?D:A](I):I;L=G===2?I:G===1?$.extend({},I,N):$.extend({},N,I);L=a(L);if(H){L=L.replace(h,r)}}O=K[1]+(H?"#":L||!K[1]?"?":"")+L+J}else{O=M(F!==i?F:p[g][k])}return O}a[A]=B(f,0,o);a[D]=c=B(f,1,n);c.noEscape=function(G){G=G||"";var F=$.map(G.split(""),encodeURIComponent);h=new RegExp(F.join("|"),"g")};c.noEscape(",/");$.deparam=l=function(I,F){var H={},G={"true":!0,"false":!1,"null":null};$.each(I.replace(/\+/g," ").split("&"),function(L,Q){var K=Q.split("="),P=r(K[0]),J,O=H,M=0,R=P.split("]["),N=R.length-1;if(/\[/.test(R[0])&&/\]$/.test(R[N])){R[N]=R[N].replace(/\]$/,"");R=R.shift().split("[").concat(R);N=R.length-1}else{N=0}if(K.length===2){J=r(K[1]);if(F){J=J&&!isNaN(J)?+J:J==="undefined"?i:G[J]!==i?G[J]:J}if(N){for(;M<=N;M++){P=R[M]===""?O.length:R[M];O=O[P]=M<N?O[P]||(R[M+1]&&isNaN(R[M+1])?{}:[]):J}}else{if($.isArray(H[P])){H[P].push(J)}else{if(H[P]!==i){H[P]=[H[P],J]}else{H[P]=J}}}}else{if(P){H[P]=F?i:""}}});return H};function z(H,F,G){if(F===i||typeof F==="boolean"){G=F;F=a[H?D:A]()}else{F=E(F)?F.replace(H?w:x,""):F}return l(F,G)}l[A]=B(z,0);l[D]=v=B(z,1);$[y]||($[y]=function(F){return $.extend(C,F)})({a:k,base:k,iframe:t,img:t,input:t,form:"action",link:k,script:t});j=$[y];function s(I,G,H,F){if(!E(H)&&typeof H!=="object"){F=H;H=G;G=i}return this.each(function(){var L=$(this),J=G||j()[(this.nodeName||"").toLowerCase()]||"",K=J&&L.attr(J)||"";L.attr(J,a[I](K,H,F))})}$.fn[A]=B(s,A);$.fn[D]=B(s,D);b.pushState=q=function(I,F){if(E(I)&&/^#/.test(I)&&F===i){F=2}var H=I!==i,G=c(p[g][k],H?I:{},H?F:2);p[g][k]=G+(/#/.test(G)?"":"#")};b.getState=u=function(F,G){return F===i||typeof F==="boolean"?v(F):v(G)[F]};b.removeState=function(F){var G={};if(F!==i){G=u();$.each($.isArray(F)?F:arguments,function(I,H){delete G[H]})}q(G,2)};e[d]=$.extend(e[d],{add:function(F){var H;function G(J){var I=J[D]=c();J.getState=function(K,L){return K===i||typeof K==="boolean"?l(I,K):l(I,L)[K]};H.apply(this,arguments)}if($.isFunction(F)){H=F;return G}else{H=F.handler;F.handler=G}}})})(jQuery,this);
+/*
+ * jQuery hashchange event - v1.2 - 2/11/2010
+ * http://benalman.com/projects/jquery-hashchange-plugin/
+ * 
+ * Copyright (c) 2010 "Cowboy" Ben Alman
+ * Dual licensed under the MIT and GPL licenses.
+ * http://benalman.com/about/license/
+ */
+(function($,i,b){var j,k=$.event.special,c="location",d="hashchange",l="href",f=$.browser,g=document.documentMode,h=f.msie&&(g===b||g<8),e="on"+d in i&&!h;function a(m){m=m||i[c][l];return m.replace(/^[^#]*#?(.*)$/,"$1")}$[d+"Delay"]=100;k[d]=$.extend(k[d],{setup:function(){if(e){return false}$(j.start)},teardown:function(){if(e){return false}$(j.stop)}});j=(function(){var m={},r,n,o,q;function p(){o=q=function(s){return s};if(h){n=$('<iframe src="javascript:0"/>').hide().insertAfter("body")[0].contentWindow;q=function(){return a(n.document[c][l])};o=function(u,s){if(u!==s){var t=n.document;t.open().close();t[c].hash="#"+u}};o(a())}}m.start=function(){if(r){return}var t=a();o||p();(function s(){var v=a(),u=q(t);if(v!==t){o(t=v,u);$(i).trigger(d)}else{if(u!==t){i[c][l]=i[c][l].replace(/#.*/,"")+"#"+u}}r=setTimeout(s,$[d+"Delay"])})()};m.stop=function(){if(!n){r&&clearTimeout(r);r=0}};return m})()})(jQuery,this);
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/js-hotkeys/README.md
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/js-hotkeys/README.md	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/js-hotkeys/README.md	(revision 29468)
@@ -0,0 +1,45 @@
+#About
+**jQuery Hotkeys** is a plug-in that lets you easily add and remove handlers for keyboard events anywhere in your code supporting almost any key combination.  
+
+This plugin is based off of the plugin by Tzury Bar Yochay: [jQuery.hotkeys](http://github.com/tzuryby/hotkeys)
+
+The syntax is as follows:
+
+    $(expression).bind(types, keys, handler);
+    $(expression).unbind(types, handler);
+    
+    $(document).bind('keydown', 'ctrl+a', fn);
+    
+    // e.g. replace '$' sign with 'EUR'
+    $('input.foo').bind('keyup', '$', function(){
+      this.value = this.value.replace('$', 'EUR');
+    });
+
+## Types
+Supported types are `'keydown'`, `'keyup'` and `'keypress'`
+
+## Notes
+
+If you want to use more than one modifiers (e.g. alt+ctrl+z) you should define them by an alphabetical order e.g. alt+ctrl+shift
+
+Hotkeys aren't tracked if you're inside of an input element (unless you explicitly bind the hotkey directly to the input). This helps to avoid conflict with normal user typing.
+
+## jQuery Compatibility
+
+Works with jQuery 1.4.2 and newer.
+
+It known to be working with all the major browsers on all available platforms (Win/Mac/Linux)
+
+ * IE 6/7/8
+ * FF 1.5/2/3
+ * Opera-9
+ * Safari-3
+ * Chrome-0.2
+
+### Addendum
+
+Firefox is the most liberal one in the manner of letting you capture all short-cuts even those that are built-in in the browser such as `Ctrl-t` for new tab, or `Ctrl-a` for selecting all text. You can always bubble them up to the browser by returning `true` in your handler.
+
+Others, (IE) either let you handle built-in short-cuts, but will add their functionality after your code has executed. Or (Opera/Safari) will *not* pass those events to the DOM at all.
+
+*So, if you bind `Ctrl-Q` or `Alt-F4` and your Safari/Opera window is closed don't be surprised.*
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/js-hotkeys/jquery.hotkeys.min.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/js-hotkeys/jquery.hotkeys.min.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/js-hotkeys/jquery.hotkeys.min.js	(revision 29468)
@@ -0,0 +1,15 @@
+﻿/*
+ * jQuery Hotkeys Plugin
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ *
+ * http://github.com/jeresig/jquery.hotkeys
+ *
+ * Based upon the plugin by Tzury Bar Yochay:
+ * http://github.com/tzuryby/hotkeys
+ *
+ * Original idea by:
+ * Binny V A, http://www.openjs.com/scripts/events/keyboard_shortcuts/
+*/
+
+(function(b){b.hotkeys={version:"0.8",specialKeys:{8:"backspace",9:"tab",13:"return",16:"shift",17:"ctrl",18:"alt",19:"pause",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"insert",46:"del",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9",106:"*",107:"+",109:"-",110:".",111:"/",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12",144:"numlock",145:"scroll",191:"/",224:"meta",219:"[",221:"]"},shiftNums:{"`":"~","1":"!","2":"@","3":"#","4":"$","5":"%","6":"^","7":"&","8":"*","9":"(","0":")","-":"_","=":"+",";":": ","'":'"',",":"<",".":">","/":"?","\\":"|"}};function a(d){if(typeof d.data!=="string"){return}var c=d.handler,e=d.data.toLowerCase().split(" ");d.handler=function(n){if(this!==n.target&&(/textarea|select/i.test(n.target.nodeName)||n.target.type==="text")){return}var h=n.type!=="keypress"&&b.hotkeys.specialKeys[n.which],o=String.fromCharCode(n.which).toLowerCase(),k,m="",g={};if(n.altKey&&h!=="alt"){m+="alt+"}if(n.ctrlKey&&h!=="ctrl"){m+="ctrl+"}if(n.metaKey&&!n.ctrlKey&&h!=="meta"){m+="meta+"}if(n.shiftKey&&h!=="shift"){m+="shift+"}if(h){g[m+h]=true}else{g[m+o]=true;g[m+b.hotkeys.shiftNums[o]]=true;if(m==="shift+"){g[b.hotkeys.shiftNums[o]]=true}}for(var j=0,f=e.length;j<f;j++){if(g[e[j]]){return c.apply(this,arguments)}}}}b.each(["keydown","keyup","keypress"],function(){b.event.special[this]={add:a}})})(jQuery);
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/mousewheel.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/mousewheel.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/mousewheel.js	(revision 29468)
@@ -0,0 +1,84 @@
+/*! Copyright (c) 2011 Brandon Aaron (http://brandonaaron.net)
+ * Licensed under the MIT License (LICENSE.txt).
+ *
+ * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
+ * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
+ * Thanks to: Seamus Leahy for adding deltaX and deltaY
+ *
+ * Version: 3.0.6
+ * 
+ * Requires: 1.2.2+
+ */
+
+(function($) {
+
+var types = ['DOMMouseScroll', 'mousewheel'];
+
+if ($.event.fixHooks) {
+    for ( var i=types.length; i; ) {
+        $.event.fixHooks[ types[--i] ] = $.event.mouseHooks;
+    }
+}
+
+$.event.special.mousewheel = {
+    setup: function() {
+        if ( this.addEventListener ) {
+            for ( var i=types.length; i; ) {
+                this.addEventListener( types[--i], handler, false );
+            }
+        } else {
+            this.onmousewheel = handler;
+        }
+    },
+    
+    teardown: function() {
+        if ( this.removeEventListener ) {
+            for ( var i=types.length; i; ) {
+                this.removeEventListener( types[--i], handler, false );
+            }
+        } else {
+            this.onmousewheel = null;
+        }
+    }
+};
+
+$.fn.extend({
+    mousewheel: function(fn) {
+        return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel");
+    },
+    
+    unmousewheel: function(fn) {
+        return this.unbind("mousewheel", fn);
+    }
+});
+
+
+function handler(event) {
+    var orgEvent = event || window.event, args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true, deltaX = 0, deltaY = 0;
+    event = $.event.fix(orgEvent);
+    event.type = "mousewheel";
+    
+    // Old school scrollwheel delta
+    if ( orgEvent.wheelDelta ) { delta = orgEvent.wheelDelta/120; }
+    if ( orgEvent.detail     ) { delta = -orgEvent.detail/3; }
+    
+    // New school multidimensional scroll (touchpads) deltas
+    deltaY = delta;
+    
+    // Gecko
+    if ( orgEvent.axis !== undefined && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {
+        deltaY = 0;
+        deltaX = -1*delta;
+    }
+    
+    // Webkit
+    if ( orgEvent.wheelDeltaY !== undefined ) { deltaY = orgEvent.wheelDeltaY/120; }
+    if ( orgEvent.wheelDeltaX !== undefined ) { deltaX = -1*orgEvent.wheelDeltaX/120; }
+    
+    // Add event and delta to the front of the arguments
+    args.unshift(event, delta, deltaX, deltaY);
+    
+    return ($.event.dispatch || $.event.handle).apply(this, args);
+}
+
+})(jQuery);
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/requestanimationframe.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/requestanimationframe.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/requestanimationframe.js	(revision 29468)
@@ -0,0 +1,24 @@
+(function() {
+    var lastTime = 0;
+    var vendors = ['ms', 'moz', 'webkit', 'o'];
+    for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
+        window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame'];
+        window.cancelAnimationFrame = 
+          window[vendors[x]+'CancelAnimationFrame'] || window[vendors[x]+'CancelRequestAnimationFrame'];
+    }
+ 
+    if (!window.requestAnimationFrame)
+        window.requestAnimationFrame = function(callback, element) {
+            var currTime = new Date().getTime();
+            var timeToCall = Math.max(0, 16 - (currTime - lastTime));
+            var id = window.setTimeout(function() { callback(currTime + timeToCall); }, 
+              timeToCall);
+            lastTime = currTime + timeToCall;
+            return id;
+        };
+ 
+    if (!window.cancelAnimationFrame)
+        window.cancelAnimationFrame = function(id) {
+            clearTimeout(id);
+        };
+}());
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/taphold.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/taphold.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/taphold.js	(revision 29468)
@@ -0,0 +1,136 @@
+/**
+ *  Copyright (c) 2011 Zauber S.A. <http://www.zaubersoftware.com/>
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ * 
+ *  @author Guido Marucci Blas - guido@zaubersoftware.com
+ *  @description Adds a handler for a custom event 'taphold' that handles a
+ *  tap and hold on touch interfaces.
+ */
+(function($) {
+    var TAP_AND_HOLD_TRIGGER_TIMER = 1000;
+    var MAX_DISTANCE_ALLOWED_IN_TAP_AND_HOLD_EVENT = 5;
+    var TOUCHSTART = "touchstart";
+    var TOUCHEND = "touchend";
+    var TOUCHMOVE = "touchmove";
+
+    // For debugging only
+    // var TOUCHSTART = "mousedown";
+    // var TOUCHEND = "mouseup";
+    // var TOUCHMOVE = "mousemove";
+
+    var tapAndHoldTimer = null;
+
+    function calculateEuclideanDistance(x1, y1, x2, y2) {
+        var diffX = (x2 - x1);
+        var diffY = (y2 - y1);
+        return Math.sqrt((diffX * diffX) + (diffY * diffY));
+    };
+
+    function onTouchStart(event) {
+        var e = event.originalEvent;
+
+        // Only start detector if and only if one finger is over the widget
+        if (!e.touches || (e.targetTouches.length === 1 && e.touches.length === 1)) {
+            startTapAndHoldDetector.call(this, event)
+            var element = $(this);
+            element.bind(TOUCHMOVE, onTouchMove);
+            element.bind(TOUCHEND, onTouchEnd); 
+        } else {
+            stopTapAndHoldDetector.call(this);
+        }   
+    };
+
+    function onTouchMove(event) {
+        if (tapAndHoldTimer == null) {
+            return;
+        }
+
+        var e = event.originalEvent;
+        var x = (e.changedTouches) ? e.changedTouches[0].pageX: e.pageX;
+        var y = (e.changedTouches) ? e.changedTouches[0].pageY: e.pageY;
+        
+        var tapAndHoldPoint = $(this).data("taphold.point");
+        var euclideanDistance = calculateEuclideanDistance(tapAndHoldPoint.x, tapAndHoldPoint.y, x, y);
+                
+        if (euclideanDistance > MAX_DISTANCE_ALLOWED_IN_TAP_AND_HOLD_EVENT) {
+            stopTapAndHoldDetector.call(this);
+        }
+    };
+
+    function onTouchEnd(event) {
+        stopTapAndHoldDetector.call(this);
+    };
+
+    function onTapAndHold(event) {
+        clear.call(this);
+        $(this).data("taphold.handler").call(this, event);
+    };
+
+    function clear() {
+        tapAndHoldTimer = null;
+        $(this).unbind(TOUCHMOVE, onTouchMove);
+        $(this).unbind(TOUCHEND, onTouchEnd);   
+    };
+
+    function startTapAndHoldDetector(event) {
+        if (tapAndHoldTimer != null) {
+            return;
+        }
+        var self = this;
+        tapAndHoldTimer = setTimeout(function(){
+            onTapAndHold.call(self, event)
+        }, TAP_AND_HOLD_TRIGGER_TIMER);
+
+        // Stores tap x & y
+        var e = event.originalEvent;
+        var tapAndHoldPoint = {};
+        tapAndHoldPoint.x = (e.changedTouches) ? e.changedTouches[0].pageX: e.pageX;
+        tapAndHoldPoint.y = (e.changedTouches) ? e.changedTouches[0].pageY: e.pageY;
+        $(this).data("taphold.point", tapAndHoldPoint);
+    };
+
+    function stopTapAndHoldDetector() {
+        clearTimeout(tapAndHoldTimer);
+        clear.call(this);   
+    };
+
+    $.event.special["taphold"] = {
+        setup: function() {
+            
+        },
+
+        add: function(handleObj) {
+            $(this).data("taphold.handler", handleObj.handler);
+            if (handleObj.data) {
+                $(this).bind(TOUCHSTART, handleObj.data, onTouchStart);
+            } else {
+                $(this).bind(TOUCHSTART, onTouchStart);
+            }
+        },
+
+        remove: function(handleObj) {
+            stopTapAndHoldDetector.call(this);
+            if (handleObj.data) {
+                $(this).unbind(TOUCHSTART, handleObj.data, onTouchStart);
+            } else {
+                $(this).unbind(TOUCHSTART, onTouchStart);
+            }
+        },
+
+        teardown: function() {
+            
+        }
+    };
+
+})(jQuery);
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/touch.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/touch.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/lib/touch.js	(revision 29468)
@@ -0,0 +1,28 @@
+function touchHandler(event)
+{   
+    
+    var touches = event.changedTouches,
+        first = touches[0],
+        type = "";
+         switch(event.type)
+    {
+        case "touchstart": type="mousedown"; break;
+        case "touchmove":  type="mousemove"; break;        
+        case "touchend":   type="mouseup"; break;
+        default: return;
+    }
+
+             //initMouseEvent(type, canBubble, cancelable, view, clickCount, 
+    //           screenX, screenY, clientX, clientY, ctrlKey, 
+    //           altKey, shiftKey, metaKey, button, relatedTarget);
+    
+    var simulatedEvent = document.createEvent("MouseEvent");
+    simulatedEvent.initMouseEvent(type, true, true, window, 1, 
+                              first.screenX, first.screenY, 
+                              first.clientX, first.clientY, false, 
+                              false, false, false, 0/*left*/, null);
+    if(touches.length < 2) {
+      first.target.dispatchEvent(simulatedEvent);
+      event.preventDefault();
+    }
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/method-draw.compiled.css
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/method-draw.compiled.css	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/method-draw.compiled.css	(revision 29468)
@@ -0,0 +1,417 @@
+#svg_editor .jPicker .Icon{display:inline-block;height:24px;position:relative;text-align:left;width:25px}
+#svg_editor .jPicker .Icon span.Color,#svg_editor .jPicker .Icon span.Alpha{background-position:2px 2px;display:block;height:100%;left:0;position:absolute;top:0;width:100%}
+#svg_editor .jPicker .Icon span.Image{background-repeat:no-repeat;cursor:pointer;display:block;height:100%;left:0;position:absolute;top:0;width:100%}
+#svg_editor .jPicker.Container{z-index:10}
+table#svg_editor .jPicker{width:545px;z-index:20}
+#svg_editor .jPicker .Move{background-color:#ddd;border-color:#fff #666 #666 #fff;border-style:solid;border-width:1px;cursor:move;height:12px;padding:0}
+#svg_editor .jPicker .Title{display:none}
+#svg_editor .jPicker div.Map{border:solid #000 1px;cursor:crosshair;height:260px;margin:0;overflow:hidden;padding:0;position:relative;width:260px}
+#svg_editor .jPicker div[class="Map"]{height:256px;width:256px}
+#svg_editor .jPicker div.Bar{border:solid #000 1px;cursor:n-resize;height:260px;margin:0 15px;overflow:hidden;padding:0;position:relative;width:24px}
+#svg_editor .jPicker div[class="Bar"]{height:256px;width:20px}
+#svg_editor .jPicker .Map .Map1,#svg_editor .jPicker .Map .Map2,#svg_editor .jPicker .Map .Map3,#svg_editor .jPicker .Bar .Map1,#svg_editor .jPicker .Bar .Map2,#svg_editor .jPicker .Bar .Map3,#svg_editor .jPicker .Bar .Map4,#svg_editor .jPicker .Bar .Map5,#svg_editor .jPicker .Bar .Map6{background-color:transparent;background-image:none;display:block;left:0;position:absolute;top:0}
+#svg_editor .jPicker .Map .Map1,#svg_editor .jPicker .Map .Map2,#svg_editor .jPicker .Map .Map3{height:2596px;width:256px}
+#svg_editor .jPicker .Bar .Map1,#svg_editor .jPicker .Bar .Map2,#svg_editor .jPicker .Bar .Map3,#svg_editor .jPicker .Bar .Map4{height:3896px;width:20px}
+#svg_editor .jPicker .Bar .Map5,#svg_editor .jPicker .Bar .Map6{height:256px;width:20px}
+#svg_editor .jPicker .Map .Map1,#svg_editor .jPicker .Map .Map2,#svg_editor .jPicker .Bar .Map6{background-repeat:no-repeat}
+#svg_editor .jPicker .Map .Map3,#svg_editor .jPicker .Bar .Map5{background-repeat:repeat}
+#svg_editor .jPicker .Bar .Map1,#svg_editor .jPicker .Bar .Map2,#svg_editor .jPicker .Bar .Map3,#svg_editor .jPicker .Bar .Map4{background-repeat:repeat-x}
+#svg_editor .jPicker .Map .Arrow{display:block;position:absolute}
+#svg_editor .jPicker .Bar .Arrow{display:block;left:0;position:absolute}
+#svg_editor .jPicker .Preview{font-size:9px;text-align:center}
+#svg_editor .jPicker .Preview div.bgt{height:62px;margin:0 auto;padding:0;width:62px}
+#svg_editor .jPicker .Preview div span{border:1px solid #000;display:block;height:30px;margin:0 auto;padding:0;width:60px}
+#svg_editor .jPicker .Preview .Active{border-bottom-width:0}
+#svg_editor .jPicker .Preview .Current{border-top-width:0;cursor:pointer}
+#svg_editor .jPicker .Button{text-align:center;width:115px}
+#svg_editor .jPicker .Button input{width:100px}
+#svg_editor .jPicker td.Radio{margin:0;padding:0;width:31px}
+#svg_editor .jPicker td.Radio input{margin:0 5px 0 0;padding:0}
+#svg_editor .jPicker td.Text{font-size:12px!important;height:22px;margin:0;padding:0;text-align:left;width:70px}
+#svg_editor .jPicker tr.Hex td.Text{width:100px;color:#666}
+#svg_editor .jPicker tr.Hex td.Text span{width:100px;color:#333}
+#svg_editor .jPicker td.Text input{background-color:#fff;border:1px inset #aaa;height:15px;margin:0 0 0 5px;text-align:left;width:30px;color:#333}
+#svg_editor #color_picker .jPicker tr.Hex td.Text input.Hex{width:50px;display:inline-block;float:none}
+#svg_editor .jPicker tr.Hex td.Text input.AHex{width:20px;display:none}
+#svg_editor .jPicker .Grid{text-align:center;float:right;width:108px}
+#svg_editor .jPicker .Grid span.QuickColor{cursor:pointer;display:inline-block;height:15px;line-height:15px;margin:0;padding:0;width:18px}
+#svg_editor .jPicker td{vertical-align:top}
+#svg_editor .jPicker td.colorsquare{width:275px}
+#svg_editor .jPicker .prev_div{margin-top:-15px}
+#svg_editor .jPicker .actions{position:absolute;bottom:20px;left:20px;right:20px}
+#svg_editor .jPicker .actions .Ok{position:absolute;top:0;right:0}
+#svg_editor .jPicker .actions .Cancel{position:absolute;top:0;left:0}
+#svg_editor .jPicker .color_preview{width:62px;margin:0 auto}
+h2.jGraduate_Title{display:none}
+.jGraduate_Picker{position:absolute;padding:20px}
+.jGraduate_tabs li{display:inline-block;padding:5px 10px;margin-right:5px;cursor:pointer}
+li.jGraduate_tab_current{background:#fff;border-radius:3px 3px 0 0}
+.jGraduate_colPick{display:none}
+.jGraduate_gradPick{display:none;overflow:visible}
+.jGraduate_tabs{position:relative;background-color:#ddd;padding:10px 10px 0 10px;margin:-20px -20px 20px -20px;border-radius:3px 3px 0 0}
+div.jGraduate_Swatch{float:left;margin:0 15px 0 0}
+div.jGraduate_GradContainer{border:solid #000 1px;background-image:url(../images/map-opacity.png);background-position:0 0;height:256px;width:256px;position:relative}
+div.jGraduate_GradContainer div.grad_coord{background:rgba(0,0,0,0.8);border:2px solid white;border-radius:15px;-moz-border-radius:5px;width:14px;height:14px;position:absolute;margin:-7px -7px;top:0;left:0;text-align:center;font-size:8px;line-height:14px;color:white;text-decoration:none;cursor:pointer;-moz-user-select:none;-webkit-user-select:none}
+.jGraduate_AlphaArrows{position:absolute;margin-top:-10px;margin-left:250.5px}
+div.jGraduate_Opacity{border:2px inset #eee;margin-top:14px;background-color:black;background-image:url(../images/Maps.png);background-position:0 -2816px;height:20px;cursor:ew-resize}
+div.jGraduate_StopSlider{margin:-10px 0 0 -10px;width:276px;overflow:visible;background:white;height:45px;cursor:pointer}
+div.jGraduate_StopSection{width:120px;float:left}
+div.jGraduate_StopSection.jGraduate_SpreadMethod{display:none}
+input.jGraduate_Ok,input.jGraduate_Cancel{display:block;width:100px}
+input.jGraduate_Ok{margin:0 0 5px 0}
+.colorBox{float:left;height:16px;width:16px;border:1px solid #808080;cursor:pointer;margin:4px 4px 4px 30px}
+.colorBox+label{float:left;margin-top:7px}
+label.jGraduate_Form_Heading{color:#333;padding:2px;font-weight:bold;font-size:13px}
+div.jGraduate_Form_Section{-moz-border-radius:5px;-webkit-border-radius:5px;padding:15px 5px 5px 5px;margin:5px 2px;width:100px;text-align:center;overflow:auto;background:#eee}
+div.jGraduate_Form label{padding:0 2px;color:#333}
+div.jGraduate_StopSection input[type=text],div.jGraduate_Slider input[type=text]{width:33px;color:#333}
+div.jGraduate_LightBox{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#000;opacity:.5;display:none}
+div.jGraduate_stopPicker{position:absolute;display:none;background:white;padding:20px;border-radius:3px;width:530px;height:300px;box-shadow:0 5px 25px black}
+.jGraduate_gradPick{width:526px}
+.jGraduate_gradPick div.jGraduate_Slider{line-height:160%}
+.jGraduate_gradPick div.jGraduate_Slider label:last-child{position:absolute;right:10px;top:0;color:#999;font-weight:bold}
+.jGraduate_gradPick div.jGraduate_Slider label:last-child input{margin:0 3px 0 0;color:#333}
+.jGraduate_gradPick .jGraduate_Form{float:left;width:270px;position:absolute;left:284px;width:266px;height:200px;top:195px;margin:-3px 3px 0 10px;line-height:200%}
+.jGraduate_gradPick .jGraduate_Form label,.jGraduate_gradPick .jGraduate_Form input{width:auto;float:left}
+.jGraduate_gradPick .jGraduate_Form.jGraduate_rg_field label,.jGraduate_gradPick .jGraduate_Form.jGraduate_rg_field input{width:auto;float:left;font-size:11px}
+.jGraduate_gradPick .jGraduate_Form.jGraduate_rg_field #color_picker_jGraduate_match_ctr{float:none}
+.jGraduate_gradPick .jGraduate_Form label{clear:left}
+.jGraduate_gradPick .jGraduate_Points{position:static;float:left;margin:0;width:auto}
+.jGraduate_Colorblocks{display:table;border-spacing:0 5px}
+.jGraduate_colorblock{display:table-row}
+.jGraduate_Colorblocks .jGraduate_colorblock>*{display:table-cell;vertical-align:middle;margin:0;float:none}
+.jGraduate_gradPick .jGraduate_Form_Section{padding-top:9px}
+.jGraduate_Slider{text-align:center;float:left;width:100%;position:relative;margin:5px 0}
+.jGraduate_Slider .jGraduate_Form_Section{border:0;width:250px;padding:0 2px;overflow:visible}
+.jGraduate_Slider label.prelabel{width:40px;text-align:left}
+.jGraduate_SliderBar{width:140px;float:left;margin:0 5px;border:1px solid #BBB;height:20px;position:relative}
+div.jGraduate_Slider input{margin-top:5px}
+div.jGraduate_Slider img{top:0;left:0;position:absolute;cursor:ew-resize}
+.jPicker .Button .Ok,.jGraduate_Picker .jGraduate_OkCancel .jGraduate_Ok{-webkit-appearance:none;margin:0;position:absolute;bottom:5px;right:5px}
+.jPicker .Button .Cancel,.jGraduate_Picker .jGraduate_OkCancel .jGraduate_Cancel{margin:0;position:absolute;bottom:5px;left:5px}
+body{background:#3f3f3c;font:13px/120% 'Lucida Sans','Lucida Grande','Lucida Sans Unicode',sans-serif;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin:0;padding:0}
+::selection{background:#000;color:#fff}
+::-moz-selection{background:#000;color:#fff}
+html,body{overflow:hidden;width:100%;height:100%}
+::-webkit-scrollbar{width:5px;height:5px;background:#444}
+::-webkit-scrollbar-track{border-radius:10px;background:#444}
+::-webkit-scrollbar-thumb{border-radius:10px;background:#666}
+::-webkit-scrollbar-corner{background:#444}
+#browser-not-supported{font-size:.8em;font-family:Verdana,Helvetica,Arial;color:#000}
+#svgroot{-moz-user-select:none;-webkit-user-select:none;position:absolute;top:0;left:0}
+#svg_editor{background:#2f2f2c}
+#menu_bar{padding:0 0 0 50px;background:#2f2f2c;position:relative;z-index:2}
+#menu_bar.active .menu.open .menu_list{display:block}
+.menu{position:relative;z-index:5;color:#333;display:inline-block}
+.menu_title{cursor:pointer;display:inline-block;padding:7px 10px;z-index:10;color:#fff;position:relative;height:16px;vertical-align:top}
+.touch .menu_title{padding:7px 17px;height:26px;line-height:26px}
+.menu .menu_title:hover{background:rgba(255,255,255,0.1)}
+.menu_list .separator{margin:5px 0;border-top:solid #ddd 1px}
+.menu_list{display:none;position:absolute;top:28px;left:0;white-space:nowrap;background:white;padding:7px 0;border-radius:0 3px 3px 3px;box-shadow:0 0 20px rgba(0,0,0,0.8)}
+.touch .menu_list{top:38px}
+#menu_bar.active .menu.open .menu_title{background:white;color:#333}
+.menu_list .menu_item{position:relative;overflow:hidden;line-height:22px;padding:5px 69px 5px 25px;cursor:default;color:#333}
+.menu_list .menu_item.tool_button{background:transparent;border:0;margin:0;padding:5px 55px 5px 25px;height:auto;width:auto}
+.menu_list .menu_item.push_button_pressed:before{content:'â';position:absolute;display:block;left:7px;top:3px;width:20px;height:20px}
+.menu_list .menu_item:hover,.menu_list .menu_item.push_button_pressed:hover{background:rgba(0,0,0,0.1);color:#000}
+.menu_list .menu_item.disabled:hover,.menu_list .menu_item.push_button_pressed.disabled:hover{background:transparent;color:#333}
+.menu_list .menu_item.push_button_pressed{background:transparent;border:0;width:auto;height:auto;margin:0}
+.menu_list .menu_item span{display:block;position:absolute;right:10px;padding:5px;background:rgba(0,0,0,0.1);top:6px;height:10px;text-align:center;font-size:10px;line-height:120%}
+#svgcanvas{line-height:normal;display:inline-block;background-color:#a0a0a0;text-align:center;vertical-align:middle;width:640px;height:480px;position:relative;background:#3f3f3c}
+#rulers>div{position:absolute;background:#2f2f2c;z-index:1;overflow:hidden;-webkit-font-smoothing:none}
+#rulers #ruler_corner{top:30px;left:50px;width:15px;height:15px;border:solid #444 1px;z-index:2}
+#ruler_x{height:15px;top:30px;left:66px;right:175px;border-top:solid #444 1px;border-right:solid #444 1px}
+#ruler_x_cursor{height:15px;border-right:dotted #999 1px;position:absolute;background:#2f2f2c}
+#ruler_y_cursor{width:15px;border-top:dotted #999 1px;position:absolute;background:#2f2f2c}
+#rulers.moved #ruler_corner,#rulers.moved #ruler_x{top:101px}
+#ruler_y{width:15px;top:46px;left:50px;bottom:40px;border-left:solid #444 1px;border-bottom:solid #444 1px}
+#rulers.moved #ruler_y{top:116px}
+#ruler_x canvas:first-child{margin-left:-16px}
+#ruler_x canvas{float:left}
+#ruler_y canvas{margin-top:-16px}
+#ruler_x>div,#ruler_y>div{overflow:hidden}
+#palette{display:block;position:absolute;z-index:2;left:10px;bottom:5px;width:410px;right:145px;height:30px}
+.palette_item{height:20%;width:5.2%;float:left;cursor:url(../images/eyedropper.png) 0 16,crosshair}
+.palette_item.transparent,.palette_item.white,.palette_item.black{background:#fff;position:absolute;width:10px;height:10px;left:-10px;top:0}
+.palette_item.transparent{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNXG14zYAAAAVdEVYdENyZWF0aW9uIFRpbWUAOC8yMi8xMg1cp6sAAABESURBVBiVjdBBCgAgCETRr/e/87SJKFPLnfIcQRMIwMBIShIAvgZzoSrfkzrs8WyF1+kX9r3p8AE7nL7kSpSshN+JEQ8GixkF0mSevgAAAABJRU5ErkJggg==)}
+.palette_item.black{background:#000;top:10px}
+.palette_item.white{background:#fff;top:20px}
+#color_tools{position:relative;width:48px;height:48px;margin:6px 6px 0 6px}
+.touch #color_tools{width:auto;height:auto}
+#tool_fill{position:absolute;top:0;left:0;z-index:1}
+.touch #tool_fill{position:static;width:36px;height:36px;margin-bottom:10px}
+#tool_fill.active,#tool_stroke.active{z-index:2}
+#tool_stroke{top:14px;left:14px}
+.touch #tool_fill.active,.touch #tool_stroke.active{outline:4px solid #09f}
+#tool_fill,#tool_stroke,#tool_canvas{box-shadow:0 0 0 1px #2f2f2c;position:absolute}
+.touch #tool_fill,.touch #tool_stroke,.touch #tool_canvas{position:relative;top:0;left:0}
+#color_canvas_tools{float:left;cursor:pointer}
+#tool_fill .color_block{width:24px;height:24px;overflow:hidden;border:solid #ccc 1px}
+.touch #tool_eyedropper{margin-top:6px}
+.touch #tool_fill .color_block{width:36px;height:36px}
+.touch #tool_fill .color_block svg{width:36px!important;height:36px!important}
+.touch #tool_switch{display:none}
+#use_panel .tool_button,#path_node_panel .tool_button{color:#999;border:solid #3f3f3c 1px;border-radius:3px;padding:3px 10px 3px 40px;background:transparent;position:relative;margin-top:10px;width:90px;height:23px;line-height:24px}
+#use_panel .tool_button{padding-left:10px;margin-bottom:10px;width:124px}
+#path_node_panel .tool_button img,#path_node_panel .tool_button svg{position:absolute;left:5px;top:3px}
+#color_tools #tool_fill .color_block:hover,#color_tools #tool_stroke .color_block:hover{border-color:#fff}
+#color_tools #tool_fill .color_block>div{position:absolute;top:0;left:0}
+.touch #color_tools #tool_fill .color_block>div{position:relative}
+#color_tools #tool_fill .color_block #fill_bg,#color_tools #tool_stroke .color_block #stroke_bg{position:absolute;top:1px;left:1px;bottom:1px;right:1px}
+.touch #color_tools #tool_fill .color_block #fill_bg,.touch #color_tools #tool_stroke .color_block #stroke_bg{width:36px;height:36px;right:auto;bottom:auto}
+.touch #tool_stroke{position:relative;top:0;left:0;z-index:0}
+#stroke_color:after{content:'';position:absolute;display:block;width:8px;height:8px;left:8px;top:8px;background:#ccc;box-shadow:0 0 0 1px #000}
+.touch #stroke_color:after{height:14px;left:10px;position:absolute;top:10px;width:14px}
+#color_tools #tool_switch{cursor:pointer;opacity:.7;width:11px;height:11px;background:transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABV0RVh0Q3JlYXRpb24gVGltZQA2LzE0LzEyP6j5+gAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNXG14zYAAAB4SURBVBiVjZHRCYUwDEVvxIF0kZKN7EjiIrrReR/PSNSKXiikcE5JUtMeADMzXQIcdRfgFWqlyyB7ap1wL+0HAnIv1DqRJUBxTkLUWXIvh9AHkIeb58UkIUnDMH4ZR0otCfhv4ynbtp7ut722ZniFG8L9xx4Ek6QfN9huARmYwR0AAAAASUVORK5CYII=) top left no-repeat;position:absolute;top:-2px;left:28px}
+#color_tools #cross:hover{opacity:1}
+#color_tools #tool_stroke:hover #stroke_color:after{background:#fff}
+#color_tools #tool_stroke .color_block{width:24px;height:24px;overflow:hidden;border:solid #ccc 1px}
+.touch #color_tools #tool_stroke .color_block{width:36px;height:36px}
+#color_tools #tool_stroke .color_block>div{position:absolute;bottom:0;right:0}
+.touch #color_tools #tool_stroke .color_block>div{position:relative}
+#color_tools .icon_label{padding:0;width:24px;height:100%;cursor:pointer;position:absolute}
+#linkLabel>svg{height:20px;padding-top:4px}
+div#workarea{display:inline-table-cell;position:absolute;top:30px;left:50px;bottom:40px;right:175px;background-color:#444;overflow:auto;text-align:center;-webkit-transition:-webkit-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);-moz-transition:-moz-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);-o-transition:-o-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);-ms-transition:-ms-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);transition:transform 500ms cubic-bezier(0.13,0.66,0.24,0.92)}
+.touch div#workarea{top:40px}
+.menu .menu_list{display:none;position:absolute}
+.tool_button,.tool_button_current,.tool_button_pressed{cursor:pointer}
+.tool_button:hover,.push_button:hover,.buttonup:hover,.buttondown,.tool_button_current,.push_button_pressed{background-color:#fff}
+.tool_button.disabled,.tool_button.disabled:hover{opacity:.3;background-color:#aaa}
+#tools_left .tool_button{background:#2f2f2c;position:relative}
+#tools_left .tool_button.loaded{background:#ccc}
+#tools_left .tool_button.loaded:hover{background:#fff}
+#tools_left .tool_button:after,#tools_left .tool_button_current:after{position:absolute;content:'';border:solid #2f2f2c 2px;top:-1px;left:-1px;width:26px;height:26px;z-index:0}
+#tools_left .tool_button_current{background-color:#0cf}
+#main_icon span{position:absolute;width:100%;height:100%;display:block;z-index:2}
+#tools_top{position:absolute;width:160px;height:100%;background:#2f2f2c;right:0;top:20px;border-bottom:0;overflow:visible;padding:0 0 0 15px}
+.touch #tools_top{top:30px}
+label{display:block;color:#999}
+div#font-selector{width:140px;height:300px;overflow:auto;margin:0 auto;position:absolute;top:27px;right:0;border:1px solid black;padding:10px;display:none;background-color:white;z-index:10;border-radius:3px;box-shadow:0 5px 10px rgba(0,0,0,0.7)}
+div#font-selector img{width:100%}
+div#font-selector .font-item{border-bottom:solid #ddd 1px;padding:5px 10px;margin:0 -10px}
+div#font-selector .font-item:hover{background-color:#eee}
+#tools_top #marker_panel *{float:left}
+#tools_top #marker_panel h4{float:none}
+#tools_top #marker_panel .dropdown .icon_label{width:36px;height:20px;margin-top:2px;border:solid #3f3f3c 1px;text-align:center}
+#tools_top #marker_panel .dropdown button{margin-top:2px}
+#tools_top #marker_panel #marker_panel_title{float:none;color:#fff;margin-bottom:3px}
+#tools_top #marker_panel .dropdown .icon_label img{float:none}
+#color_picker input[type=text],#color_picker input[type=number]{width:30px;background:#fff}
+.dropdown_set input[type=text],.dropdown_set input[type=number]{width:50px}
+input[type=text].wide,input[type=number].wide{width:110px}
+input[type=text].tuco,input[type=number].tuco{width:150px}
+input[type=submit],input[type=button],button{background:#4f80ff;color:#fff;border-radius:3px;padding:7px 17px;border:0;line-height:140%;font-size:14px;font-weight:bold;font-family:sans-serif}
+input[type=submit]:hover,button:hover{box-shadow:inset 0 3px 10px rgba(255,255,255,0.1),inset 0 -3px 10px rgba(0,0,0,0.2)}
+input[type=submit]:hover,button:hover{background:#2f84c1}
+input[type=submit]:active,button:active{box-shadow:inset 0 2px 2px rgba(0,0,0,0.2);border-bottom:solid rgba(255,255,255,0.1) 1px}
+#tools_left{position:absolute;border-right:0;width:50px;top:30px;bottom:0;left:0;background:#2f2f2c;z-index:4}
+#workarea.wireframe #svgcontent *{fill:none;stroke:#000;stroke-width:1px;stroke-opacity:1.0;stroke-dasharray:0;opacity:1;pointer-events:stroke;vector-effect:non-scaling-stroke;filter:none}
+#workarea.wireframe #svgcontent text{fill:#000;stroke:none}
+#workarea.wireframe #canvasBackground>rect{fill:#FFF!important}
+#workarea #canvasBackground>rect{stroke:transparent!important}
+.context_panel{display:none}
+#canvas_panel{display:block}
+#multiselected_panel .selected_tool{vertical-align:12px}
+#cur_context_panel{position:absolute;top:47px;left:68px;line-height:22px;overflow:auto;border-bottom:0;border-right:0;padding-left:5px;font-size:12px;background:black;color:#999;opacity:.5;padding:0 10px;border-radius:0 10px 10px 0}
+#cur_context_panel a{float:none;text-decoration:none;color:#fff}
+#cur_context_panel a:hover{text-decoration:underline}
+#tools_left .tool_button,#tools_left .tool_button_current{position:relative;z-index:11}
+.flyout_arrow_horiz{position:absolute;bottom:-1px;right:0;z-index:10}
+.dropdown{position:relative;float:left}
+.dropdown button{width:21px;height:22px;padding:0 3px 0 3px;border:0;background-color:#555;border-radius:0 2px 2px 0;margin-left:-1px;position:relative}
+.dropdown button:hover{background-color:#666}
+.dropdown button:after{content:'';position:absolute;border:solid transparent 4px;border-top-color:#999;top:9px;left:6px}
+.dropdown button.down{border-left:1px solid #808080;border-top:1px solid #808080;border-right:1px solid #fff;border-bottom:1px solid #fff;background-color:#b0b0b0}
+.dropdown ul{list-style:none;position:absolute;margin:0;padding:0;left:-80px;top:26px;z-index:4;display:none}
+.dropup ul{top:auto;bottom:26px;border-radius:3px;box-shadow:0 5px 10px #000}
+.dropup ul:after{content:'';display:block;position:absolute;bottom:-10px;right:50%;top:auto;width:0;height:0;border:solid transparent 5px;border-top-color:#fff}
+.dropdown li{display:block;width:120px;padding:5px 10px;color:#333;background:#fff;margin:0;line-height:16px}
+.dropdown li:first-child{border-radius:3px 3px 0 0}
+.dropdown li:last-child{border-radius:0 0 3px 3px}
+.dropdown li:hover{background-color:#ddd;color:#000}
+.dropdown li.special{padding:10px;background:white;border:0;box-shadow:0 3px 10px black;border-radius:3px!important}
+.dropdown li.special:after{content:'';display:block;position:absolute;top:-10px;right:50%;border:solid transparent 5px;border-bottom-color:#fff}
+.dropdown li.special.down:after{bottom:-10px;right:50%;top:auto;border:solid transparent 5px;border-top-color:#fff}
+.tool_button,.push_button,.tool_button_current,.push_button_pressed{height:27px;width:27px;border:solid #2f2f2c 8px;border-left-width:13px;margin:0;background-color:#ddd;cursor:pointer}
+#main_menu li#tool_open,#main_menu li#tool_import{position:relative;overflow:hidden}
+#tool_image{overflow:hidden}
+#tool_open input,#tool_import input,#tool_import_bitmap input{position:absolute;opacity:0;font-size:10em;top:-5px;right:-5px;margin:0;cursor:pointer}
+.disabled{opacity:.5;cursor:default}
+.width_label{padding-right:5px}
+#text{position:absolute;left:-9999px}
+#tool_bold span,#tool_italic span{position:absolute;width:100%;height:100%;top:0;left:0;background:#ccc;opacity:0}
+#url_notice{padding-top:4px;display:none}
+#color_picker{position:absolute;display:none;background:#fff;height:350px;border-radius:3px;z-index:5;box-shadow:0 5px 10px #000;width:530px}
+.tools_flyout{position:absolute;display:none;cursor:pointer;width:385px;z-index:10;left:47px!important;height:324px;background:#fff;border-radius:5px;box-shadow:0 5px 10px rgba(0,0,0,0.5)}
+.tools_flyout_v{position:absolute;display:none;cursor:pointer;width:30px}
+.tools_flyout .tool_button{float:left;background-color:#fff;height:24px;width:24px}
+#tools_bottom{position:absolute;left:50px;right:0;bottom:0;height:40px;overflow:visible;background:#2f2f2c}
+#tools_bottom_1{width:115px;float:left}
+#tools_bottom_2{position:relative;float:left;margin-top:5px}
+#tools_bottom input[type=text]{width:3.2em}
+#tools_top h4{color:#fff;font-weight:normal;margin:0;padding:10px 0 5px 0}
+#tools_top .dropdown .icon_label{border:1px solid transparent;height:auto}
+#tools_top.multiselected #align_tools{display:none}
+#tools_top.multiselected #multiselected_panel{display:block!important}
+#tools_top.multiselected #multiselected_panel .hidable{display:none}
+.draginput_cell{float:left;height:26px;height:26px;border:solid #3f3f3c 10px;outline:solid #2f2f2c 1px;background:#ddd;cursor:pointer;position:relative}
+.draginput_cell:hover{background:#fff}
+.draginput_cell:after{content:'';position:absolute;top:0;left:0;border:solid #3f3f3c 1px;height:26px;width:26px;z-index:0}
+.align_buttons .draginput_cell:nth-child(1){border-radius:3px 0 0 0}
+.align_buttons .draginput_cell:nth-child(3){border-radius:0 3px 0 0}
+.align_buttons .draginput_cell:nth-child(4){border-radius:0 0 0 3px}
+.align_buttons .draginput_cell:nth-child(6){border-radius:0 0 3px 0}
+.align_buttons .push_button{display:block;float:left}
+#option_lists ul{display:none;position:absolute;height:auto;z-index:3;margin:0;list-style:none;padding-left:0}
+#option_lists .optcols2{width:70px;margin-left:-15px}
+#option_lists .optcols3{width:192px;margin-left:-105px;margin-top:-25px;background:#fff;padding:5px;box-shadow:0 5px 10px #000;border-radius:3px}
+#option_lists .optcols3:after{content:'';display:block;position:absolute;top:-10px;right:70px;border:solid transparent 5px;border-bottom-color:#fff}
+#option_lists .tool_button,#option_lists .push_button,#option_lists .tool_button_current,#option_lists .push_button_pressed{border:0;background:transparent}
+#option_lists .tool_button:hover{background:#ddd}
+#option_lists ul li.current{background-color:#f4e284}
+#option_lists .optcols4{width:130px;margin-left:-44px}
+#option_lists ul[class^=optcols] li{float:left}
+ul li.current{background-color:#f4e284}
+#option_lists ul li{margin:0;border-radius:0;-moz-border-radius:0;-webkit-border-radius:0}
+#copyright{text-align:right;padding-right:.3em}
+#svg_source_editor{display:none}
+#svg_source_editor #svg_source_overlay{position:absolute;top:0;right:0;left:0;bottom:0;background-color:black;opacity:.6;z-index:5}
+#svg_source_editor #svg_source_container{position:absolute;top:30px;left:100px;right:100px;bottom:30px;background-color:#fff;border-radius:3px;opacity:1.0;text-align:center;z-index:6;padding:15px 0}
+#svg_source_editor form{position:absolute;display:block;top:15px;bottom:55px;left:15px;right:12px;padding:5px;font-size:12px}
+#svg_source_textarea{width:100%;height:100%;line-height:140%;font-family:'Lucida Sans','Lucida Grande','Lucida Sans Unicode',sans-serif;font-size:12px}
+#svg_source_editor #tool_source_back{position:absolute;bottom:45px;left:15px;right:15px}
+#svg_source_editor #tool_source_back #tool_source_save{display:block;position:absolute;right:0}
+#svg_source_editor #tool_source_back #tool_source_cancel{display:block;position:absolute;left:0}
+button.cancel,input.Cancel,input.cancel,input.jGraduate_Cancel,button.cancel{-webkit-appearance:none;background-color:#999;box-shadow:0 0 1px rgba(0,0,0,0.5);margin:0}
+#shape_buttons{overflow:auto;top:0;bottom:0;left:110px;right:0;position:absolute;vertical-align:top}
+#shape_cats{min-width:110px;display:block;position:absolute;left:0;top:0;height:300px;background:#eee;border-radius:3px 0 0 3px;z-index:2}
+#shape_cats>div{line-height:1em;padding:0 .5em;border-bottom:1px solid #ddd;background:#e8e8e8;color:#444;height:26px;line-height:26px}
+#shape_cats>div:first-child{border-radius:3px 0 0 0}
+#shape_cats>div:last-child{border-radius:0 0 0 3px}
+#shape_cats div:hover{background:#efefef;color:#000}
+#shape_cats div.current{font-weight:bold;background:#3f3f3c;color:#fff;position:relative}
+#shape_cats div.current:after{content:'';position:absolute;right:-26px;top:0;border:solid transparent 13px;border-left-color:#3f3f3c}
+.toolbar_button button .svg_icon{display:none}
+#dialog_box{display:none}
+#dialog_box_overlay{background:black;opacity:.5;height:100%;left:0;position:absolute;top:0;width:100%;z-index:6}
+#dialog_content{height:95px;margin:10px 10px 5px 10px;overflow:auto;text-align:left;font-size:13px}
+#dialog_buttons input:last-child{background:#999!important;position:absolute;left:10px;bottom:10px}
+#dialog_buttons input:first-child{position:absolute;right:10px;bottom:10px}
+#dialog_content.prompt{height:75px}
+#dialog_content p{margin:10px;line-height:1.3em}
+#dialog_container{position:absolute;left:50%;top:50%;width:300px;margin-left:-150px;height:150px;margin-top:-80px;position:fixed;z-index:50001;background:#fff}
+#dialog_container,#dialog_content{border-radius:3px}
+#dialog_buttons input[type=text]{width:90%;display:block;margin:0 0 5px 11px}
+#dialog_buttons input[type=button]{margin:0 1em}
+.invisible{visibility:none}
+.ui-slider{position:relative;text-align:left}
+.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}
+.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0}
+.ui-slider-horizontal{height:.8em}
+.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}
+.ui-slider-horizontal .ui-slider-range{top:0;height:100%}
+.ui-slider-horizontal .ui-slider-range-min{left:0}
+.ui-slider-horizontal .ui-slider-range-max{right:0}
+.ui-slider-vertical{width:.8em;height:100px}
+.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}
+.ui-slider-vertical .ui-slider-range{left:0;width:100%}
+.ui-slider-vertical .ui-slider-range-min{bottom:0}
+.ui-slider-vertical .ui-slider-range-max{top:0}
+.ui-slider{background:#3f3f3c;border-radius:10px}
+.ui-slider-handle{box-shadow:0 3px 3px rgba(0,0,0,0.3);border-radius:30px;background:#fff;background-image:-ms-linear-gradient(top,#ccc 0,#fff 100%);background-image:-moz-linear-gradient(top,#ccc 0,#fff 100%);background-image:-o-linear-gradient(top,#ccc 0,#fff 100%);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#ccc),color-stop(1,#fff));background-image:-webkit-linear-gradient(top,#ccc 0,#fff 100%);background-image:linear-gradient(top,#ccc 0,#fff 100%)}
+.ui-slider-handle:focus{outline:0}
+#shape_buttons{background:#fff;border-radius:0 3px 3px 0;padding:10px}
+.tools_flyout .tool_button,.tools_flyout .tool_flyout{background:#fff;width:40px;height:40px;margin:5px;border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;border-width:0}
+.contextMenu{position:absolute;z-index:99999;border:solid 1px rgba(0,0,0,.33);background:rgba(255,255,255,.95);padding:5px 0;margin:0;display:none;font:12px/15px 'Lucida Sans','Lucida Grande',Helvetica,Verdana,sans-serif;border-radius:5px;-moz-border-radius:5px;-moz-box-shadow:2px 5px 10px rgba(0,0,0,.3);-webkit-box-shadow:2px 5px 10px rgba(0,0,0,.3);box-shadow:2px 5px 10px rgba(0,0,0,.3)}
+.touch .contextMenu{border:solid 5px rgba(0,0,0,.7);padding:0;margin:0 0 0 20px;font:18px/24px sans-serif;border-radius:5px;-webkit-box-shadow:2px 5px 20px 3px #000;box-shadow:2px 5px 20px rgba(0,0,0,0.5)}
+.touch .contextMenu:after{content:'';width:0;height:0;border:solid transparent 10px;border-right-color:rgba(0,0,0,.7);position:absolute;top:50%;left:-25px;margin-top:-10px;z-index:1000}
+.contextMenu LI{list-style:none;padding:0;margin:0}
+.contextMenu .shortcut{width:115px;text-align:right;float:right}
+.touch .contextMenu .shortcut{display:none}
+.touch .shortcut{display:none}
+.contextMenu A{-moz-user-select:none;-webkit-user-select:none;color:#222;text-decoration:none;display:block;line-height:20px;height:20px;background-position:6px center;background-repeat:no-repeat;outline:0;padding:0 15px 1px 20px}
+.touch .contextMenu A{padding:0 15px;border-bottom:#;font-weight:bold;border-top:solid 1px #e3e3e3;height:40px;line-height:40px;min-width:200px}
+.contextMenu LI.hover A{background-color:#2e5dea;color:white;cursor:default}
+.contextMenu LI.disabled A{color:#999}
+.touch .contextMenu LI.disabled A{display:none}
+.contextMenu LI.hover.disabled A{background-color:transparent}
+.contextMenu LI.separator{border-top:solid 1px #e3e3e3;padding-top:5px;margin-top:5px}
+.touch .contextMenu LI.separator{border-top:0;margin:0;padding:0}
+#menu{display:none;position:absolute;top:0;left:0;right:0;height:30px;background:#000;z-index:10;color:#fff}
+#workarea.rect,#workarea.line,#workarea.ellipse,#workarea.path,#workarea.shapelib{cursor:crosshair}
+#workarea.text{cursor:text}
+#workarea.eyedropper{cursor:url(../images/eyedropper.png) 0 16,crosshair}
+#workarea.fhpath{cursor:url(../images/pencil_cursor.png) 0 20,crosshair}
+#workarea.rotate *{cursor:url(../images/rotate.png) 12 12,auto}
+#workarea.select text,#workarea.multiselect text{cursor:default}
+#workarea.n-resize *{cursor:n-resize!important}
+#workarea.e-resize *{cursor:e-resize!important}
+#workarea.w-resize *{cursor:w-resize!important}
+#workarea.s-resize *{cursor:s-resize!important}
+#workarea.ne-resize *{cursor:ne-resize!important}
+#workarea.se-resize *{cursor:se-resize!important}
+#workarea.nw-resize *{cursor:nw-resize!important}
+#workarea.sw-resize *{cursor:sw-resize!important}
+#workarea.copy{cursor:copy}
+#workarea.zoom{cursor:crosshair;cursor:-moz-zoom-in;cursor:-webkit-zoom-in}
+#workarea.zoom.out{cursor:crosshair;cursor:-moz-zoom-out;cursor:-webkit-zoom-out}
+#selectorRubberBand{shape-rendering:crispEdges}
+.clearfix:before,.clearfix:after{content:"";display:table}
+.clearfix:after{clear:both}
+.clearfix{*zoom:1}
+#group_title{display:none}
+#base_unit_container{display:none;position:absolute;z-index:20}
+.draginput{background:#3f3f3c;border-radius:3px;-webkit-font-smoothing:antialiased;width:70px;height:70px;display:block;position:relative;float:left;margin:0 5px 5px 0}
+.draginput .caret{border:solid transparent 5px;border-top-color:#999;position:absolute;width:0;height:0;right:5px;margin-top:-2px;top:50%}
+.draginput label{margin:28px 10px 0 5px;font-size:14px;color:white;font-weight:bold;font-family:sans-serif}
+.draginput label#resolution_label,.draginput label#seg_type_label{font:bold 12px/110% sans-serif;position:absolute;left:auto;right:10px;z-index:0;text-align:right}
+.draginput label#seg_type_label{margin-top:40px}
+.draginput label#seg_type_label .caret{top:66%}
+.draginput label#resolution_label .pull{position:relative;left:-15px}
+.draginput label#resolution_label span{right:-13px;left:auto;font-size:16px;top:2px;font-weight:bold;color:white}
+.touch .draginput.active:after{content:attr(data-value);display:block;position:absolute;background:#fff;font-size:16px;top:0;width:30px;left:-50px;padding:0 5px;color:#333;z-index:10;font-family:sans-serif;font-weight:bold;text-align:right;padding-right:10px;height:20px;line-height:20px;letter-spacing:-1px}
+.touch .draginput.active:before{content:'';height:0;width:0;position:absolute;top:5px;left:-5px;border:solid transparent 5px;border-left-color:#fff}
+.draginput input{border:0;background:transparent;font:24px/normal sans-serif;text-align:center;color:#4f80ff;padding:30px 0 16px;width:100%;height:24px;position:relative;z-index:2}
+.draginput.twocol{width:145px}
+#tool_font_family .caret{right:40px;top:55%}
+#tool_font_family select{width:110px}
+#tool_bold,#tool_italic{font:bold 20px/35px serif;text-align:center;position:absolute;padding:0;color:#ccc;background:transparent;border:0;width:35px;height:35px;margin:0;top:0;right:0}
+#tool_italic{border-top:solid #2f2f2c 2px;top:35px;font-weight:bold;font-style:italic;font-size:24px}
+#tool_bold:hover,#tool_italic:hover{color:#fff}
+#tool_bold.active,#tool_italic.active{color:#50a0ff}
+#preview_font{font-size:20px;color:#fff;height:70px;line-height:75px;padding:0 0 0 10px;white-space:nowrap;width:100px;overflow:hidden;border-right:solid #2f2f2c 2px;position:relative}
+#preview_font:after{content:'';position:absolute;right:0;top:3px;bottom:3px;width:15px;border-right:solid #3f3f3c 10px;background:transparent url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAxIDEiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxsaW5lYXJHcmFkaWVudCBpZD0iZzU4MCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIwJSIgeTE9IjAlIiB4Mj0iMTAwJSIgeTI9IjAlIj48c3RvcCBzdG9wLWNvbG9yPSIjM2YzZjNjIiBzdG9wLW9wYWNpdHk9IjAiIG9mZnNldD0iMCIvPjxzdG9wIHN0b3AtY29sb3I9IiMzZjNmM2MiIG9mZnNldD0iMC43Ii8+PC9saW5lYXJHcmFkaWVudD48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBmaWxsPSJ1cmwoI2c1ODApIiAvPjwvc3ZnPg==)}
+.draginput input,.draginput input:hover,.draginput input:active{cursor:url(../images/drag.png),move;cursor:-webkit-grab;cursor:-moz-grab}
+.draginput input[type="checkbox"],.draginput input[type="checkbox"]:hover,.draginput input[type="checkbox"]:active{cursor:pointer}
+.draginput.checkbox{cursor:pointer}
+.draginput.active input,.draginput.active input:hover,.draginput.active input:active{cursor:url(../images/dragging.png),move;cursor:-webkit-grabbing;cursor:-moz-grabbing}
+.draginput span{font:11px/130% sans-serif;color:#ccc;display:block;position:absolute;top:5px;left:5px;text-align:left}
+.draginput.error{background:#900}
+.draginput.error input{color:#fff}
+.draginput.stroke_tool{text-align:center}
+.draginput select{-webkit-appearance:none;opacity:0;display:block;position:absolute;height:100%;width:100%;margin:0;z-index:1;top:0;left:0}
+.draginput_cursor{position:absolute;top:50%;width:100%;border-top:solid rgba(50,100,200,0.25) 3px;margin-top:-2px;z-index:0}
+.draginput input[readonly=readonly]{-webkit-appearance:none;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
+.draginput input:focus{background:#50a0ff;color:#fff;outline:0;box-shadow:0 0 5px 2px #50a0ff}
+.draginput input:focus+span{z-index:10;color:#fff}
+.draginput .push_bottom{bottom:0;position:absolute}
+#zoom_label{height:20px;background:transparent;cursor:default!important;width:auto;padding:0 10px;margin:0}
+#zoom_panel{padding:9px 0;right:175px;position:absolute}
+#zoom_label img,#zoom_label svg{width:16px;height:16px}
+#logo svg{pointer-events:none}
+#zoomLabel{width:16px;height:16px;cursor:pointer;background:#ccc}
+#zoomLabel:after{content:'';position:absolute;border-left:solid #2f2f2c 1px;left:0;height:16px}
+#zoom_label input{color:#ccc;font-size:13px;height:auto;width:auto;padding:0;cursor:default;position:static}
+#zoom_label span{top:0;left:0}
+body.dragging *{cursor:url(../images/dragging.png),move;cursor:-webkit-grabbing;cursor:-moz-grabbing}
+body.drag *{cursor:url(../images/dragging.png),move;cursor:-webkit-grabbing;cursor:-moz-grabbing}
+input[readonly=readonly]:focus{box-shadow:none}
+#color_canvas_tools,#fill_bg,#stroke_bg{background:#fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMAQMAAABsu86kAAAAA3NCSVQICAjb4U/gAAAABlBMVEXu7u7///8o06qaAAAACXBIWXMAAAsSAAALEgHS3X78AAAAFXRFWHRDcmVhdGlvbiBUaW1lADcvMjIvMTL7FNdCAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M1cbXjNgAAABFJREFUCJljYP7AgIb+MKAhAM8/C5vWL6zSAAAAAElFTkSuQmCC) top left repeat}
+#color_canvas_tools{width:60px;height:40px;margin:23px 5px 5px 5px;position:relative;overflow:hidden}
+#color_canvas_tools{display:block}
+#tool_angle_indicator{width:50px;height:50px;border-radius:50px;background:rgba(255,255,255,0.05);position:absolute;bottom:2px;left:10px}
+#tool_angle_indicator_cursor{width:4px;height:25px;border-top:solid #50a0ff 3px;position:absolute;margin:0 0 0 23px;-webkit-transform-origin:50% 0;-moz-transform-origin:50% 0;-o-transform-origin:50% 0;-ms-transform-origin:50% 0;transform-origin:50% 0}
+#stroke_style_label{font-size:30px;margin-top:33px;letter-spacing:-1px}
+.stroke_tool .caret{top:60%}
+#tool_align_relative{position:absolute;top:-5px;left:0;right:20px;display:block}
+#tool_align_relative select{width:100%;display:block}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/method-draw.compiled.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/method-draw.compiled.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/method-draw.compiled.js	(revision 29468)
@@ -0,0 +1,692 @@
+function touchHandler(a){var s=a.changedTouches,g=s[0],b="";switch(a.type){case "touchstart":b="mousedown";break;case "touchmove":b="mousemove";break;case "touchend":b="mouseup";break;default:return}var p=document.createEvent("MouseEvent");p.initMouseEvent(b,true,true,window,1,g.screenX,g.screenY,g.clientX,g.clientY,false,false,false,false,0,null);if(s.length<2){g.target.dispatchEvent(p);a.preventDefault()}};(function(a){function s(g){if(typeof g.data==="string"){var b=g.handler,p=g.data.toLowerCase().split(" ");g.handler=function(w){if(!(this!==w.target&&(/textarea|select/i.test(w.target.nodeName)||w.target.type==="text"))){var c=w.type!=="keypress"&&a.hotkeys.specialKeys[w.which],f=String.fromCharCode(w.which).toLowerCase(),d="",n={};if(w.altKey&&c!=="alt")d+="alt+";if(w.ctrlKey&&c!=="ctrl")d+="ctrl+";if(w.metaKey&&!w.ctrlKey&&c!=="meta")d+="meta+";if(w.shiftKey&&c!=="shift")d+="shift+";if(c)n[d+c]=
+true;else{n[d+f]=true;n[d+a.hotkeys.shiftNums[f]]=true;if(d==="shift+")n[a.hotkeys.shiftNums[f]]=true}c=0;for(f=p.length;c<f;c++)if(n[p[c]])return b.apply(this,arguments)}}}}a.hotkeys={version:"0.8",specialKeys:{8:"backspace",9:"tab",13:"return",16:"shift",17:"ctrl",18:"alt",19:"pause",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"insert",46:"del",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9",
+106:"*",107:"+",109:"-",110:".",111:"/",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12",144:"numlock",145:"scroll",191:"/",224:"meta",219:"[",221:"]"},shiftNums:{"`":"~","1":"!","2":"@","3":"#","4":"$","5":"%","6":"^","7":"&","8":"*","9":"(","0":")","-":"_","=":"+",";":": ","'":'"',",":"<",".":">","/":"?","\\":"|"}};a.each(["keydown","keyup","keypress"],function(){a.event.special[this]={add:s}})})(jQuery);(function(a,s){function g(ca){return typeof ca==="string"}function b(ca){var U=d.call(arguments,1);return function(){return ca.apply(this,U.concat(d.call(arguments)))}}function p(ca,U,Z,na,pa){var ma;if(na!==f){U=Z.match(ca?/^([^#]*)\#?(.*)$/:/^([^#?]*)\??([^#]*)(#?.*)/);Z=U[3]||"";if(pa===2&&g(na))na=na.replace(ca?ea:V,"");else{ma=q(U[2]);na=g(na)?q[ca?ga:N](na):na;na=pa===2?na:pa===1?a.extend({},na,ma):a.extend({},ma,na);na=v(na);if(ca)na=na.replace(Ba,n)}ca=U[1]+(ca?"#":na||!U[1]?"?":"")+na+Z}else ca=
+U(Z!==f?Z:s[oa][Y]);return ca}function w(ca,U,Z){if(U===f||typeof U==="boolean"){Z=U;U=v[ca?ga:N]()}else U=g(U)?U.replace(ca?ea:V,""):U;return q(U,Z)}function c(ca,U,Z,na){if(!g(Z)&&typeof Z!=="object"){na=Z;Z=U;U=f}return this.each(function(){var pa=a(this),ma=U||S()[(this.nodeName||"").toLowerCase()]||"",la=ma&&pa.attr(ma)||"";pa.attr(ma,v[ca](la,Z,na))})}var f,d=Array.prototype.slice,n=decodeURIComponent,v=a.param,B,q,L,Q=a.bbq=a.bbq||{},K,I,S,R=a.event.special,N="querystring",ga="fragment",oa=
+"location",Y="href",V=/^.*\?|#.*$/g,ea=/^.*\#/,Ba,ja={};v[N]=b(p,0,function(ca){return ca.replace(/(?:^[^?#]*\?([^#]*).*$)?.*/,"$1")});v[ga]=B=b(p,1,function(ca){return ca.replace(/^[^#]*#?(.*)$/,"$1")});B.noEscape=function(ca){ca=ca||"";ca=a.map(ca.split(""),encodeURIComponent);Ba=RegExp(ca.join("|"),"g")};B.noEscape(",/");a.deparam=q=function(ca,U){var Z={},na={"true":true,"false":false,"null":null};a.each(ca.replace(/\+/g," ").split("&"),function(pa,ma){var la=ma.split("="),ya=n(la[0]),za=Z,Ja=
+0,Ia=ya.split("]["),Fa=Ia.length-1;if(/\[/.test(Ia[0])&&/\]$/.test(Ia[Fa])){Ia[Fa]=Ia[Fa].replace(/\]$/,"");Ia=Ia.shift().split("[").concat(Ia);Fa=Ia.length-1}else Fa=0;if(la.length===2){la=n(la[1]);if(U)la=la&&!isNaN(la)?+la:la==="undefined"?f:na[la]!==f?na[la]:la;if(Fa)for(;Ja<=Fa;Ja++){ya=Ia[Ja]===""?za.length:Ia[Ja];za=za[ya]=Ja<Fa?za[ya]||(Ia[Ja+1]&&isNaN(Ia[Ja+1])?{}:[]):la}else if(a.isArray(Z[ya]))Z[ya].push(la);else Z[ya]=Z[ya]!==f?[Z[ya],la]:la}else if(ya)Z[ya]=U?f:""});return Z};q[N]=b(w,
+0);q[ga]=L=b(w,1);a.elemUrlAttr||(a.elemUrlAttr=function(ca){return a.extend(ja,ca)})({a:Y,base:Y,iframe:"src",img:"src",input:"src",form:"action",link:Y,script:"src"});S=a.elemUrlAttr;a.fn[N]=b(c,N);a.fn[ga]=b(c,ga);Q.pushState=K=function(ca,U){if(g(ca)&&/^#/.test(ca)&&U===f)U=2;var Z=ca!==f;Z=B(s[oa][Y],Z?ca:{},Z?U:2);s[oa][Y]=Z+(/#/.test(Z)?"":"#")};Q.getState=I=function(ca,U){return ca===f||typeof ca==="boolean"?L(ca):L(U)[ca]};Q.removeState=function(ca){var U={};if(ca!==f){U=I();a.each(a.isArray(ca)?
+ca:arguments,function(Z,na){delete U[na]})}K(U,2)};R.hashchange=a.extend(R.hashchange,{add:function(ca){function U(na){var pa=na[ga]=B();na.getState=function(ma,la){return ma===f||typeof ma==="boolean"?q(pa,ma):q(pa,la)[ma]};Z.apply(this,arguments)}var Z;if(a.isFunction(ca)){Z=ca;return U}else{Z=ca.handler;ca.handler=U}}})})(jQuery,this);
+(function(a,s,g){function b(B){B=B||s[c][f];return B.replace(/^[^#]*#?(.*)$/,"$1")}var p,w=a.event.special,c="location",f="href",d=document.documentMode,n=a.browser.msie&&(d===g||d<8),v="onhashchange"in s&&!n;a.hashchangeDelay=100;w.hashchange=a.extend(w.hashchange,{setup:function(){if(v)return false;a(p.start)},teardown:function(){if(v)return false;a(p.stop)}});p=function(){function B(){K=I=function(S){return S};if(n){Q=a('<iframe src="javascript:0"/>').hide().insertAfter("body")[0].contentWindow;
+I=function(){return b(Q.document[c][f])};K=function(S,R){if(S!==R){var N=Q.document;N.open().close();N[c].hash="#"+S}};K(b())}}var q={},L,Q,K,I;q.start=function(){if(!L){var S=b();K||B();(function R(){var N=b(),ga=I(S);if(N!==S){K(S=N,ga);a(s).trigger("hashchange")}else if(ga!==S)s[c][f]=s[c][f].replace(/#.*/,"")+"#"+ga;L=setTimeout(R,a.hashchangeDelay)})()}};q.stop=function(){if(!Q){L&&clearTimeout(L);L=0}};return q}()})(jQuery,this);(function(a){var s={},g;a.svgIcons=function(b,p){function w(ca,U){if(ca!=="ajax"){if(S)return;var Z=(Q=Y[0].contentDocument)&&Q.getElementById("svg_eof");if(!Z&&!(U&&Z)){R++;if(R<50)setTimeout(w,20);else{f();S=true}return}S=true}L=a(Q.firstChild).children();if(p.no_img)setTimeout(function(){I||c()},500);else{Z=oa+"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNzUiIGhlaWdodD0iMjc1Ij48L3N2Zz4%3D";K=a(new Image).attr({src:Z,width:0,height:0}).appendTo("body").load(function(){c(true)}).error(function(){c()})}}
+function c(ca,U){if(!I){if(p.no_img)ca=false;if(ca){var Z=a(document.createElement("div"));Z.hide().appendTo("body")}if(U){var na=p.fallback_path?p.fallback_path:"";a.each(U,function(Fa,Ma){a("#"+Fa);var Da=a(new Image).attr({"class":"svg_icon",src:na+Ma,width:B,height:q,alt:"icon"});ja(Da,Fa)})}else for(var pa=L.length,ma=0;ma<pa;ma++){var la=L[ma],ya=la.id;if(ya==="svg_eof")break;a("#"+ya);la=la.getElementsByTagNameNS(n,"svg")[0];var za=document.createElementNS(n,"svg");za.setAttributeNS(n,"viewBox",
+[0,0,B,q].join(" "));var Ja=la.getAttribute("width"),Ia=la.getAttribute("height");la.removeAttribute("width");la.removeAttribute("height");la.getAttribute("viewBox")||la.setAttribute("viewBox",[0,0,Ja,Ia].join(" "));za.setAttribute("xmlns",n);za.setAttribute("width",B);za.setAttribute("height",q);za.setAttribute("xmlns:xlink",v);za.setAttribute("class","svg_icon");ga||(la=la.cloneNode(true));za.appendChild(la);if(ca){ga||za.cloneNode(true);Z.empty().append(za);la=oa+d(Z.html());la=a(new Image).attr({"class":"svg_icon",
+src:la})}else la=g(a(za),ma);ja(la,ya)}p.placement&&a.each(p.placement,function(Fa,Ma){s[Ma]&&a(Fa).each(function(Da){var wa=s[Ma].clone();if(Da>0&&!ca)wa=g(wa,Da,true);Ba(a(this),wa,Ma)})});if(!U){ca&&Z.remove();Y&&Y.remove();K&&K.remove()}p.resize&&a.resizeSvgIcons(p.resize);I=true;p.callback&&p.callback(s)}}function f(){if(b.indexOf(".svgz")!=-1){var ca=b.replace(".svgz",".svg");window.console&&console.log(".svgz failed, trying with .svg");a.svgIcons(ca,p)}else p.fallback&&c(false,p.fallback)}
+function d(ca){if(window.btoa)return window.btoa(ca);var U=Array(Math.floor((ca.length+2)/3)*4),Z,na,pa,ma,la,ya,za=0,Ja=0;do{Z=ca.charCodeAt(za++);na=ca.charCodeAt(za++);pa=ca.charCodeAt(za++);ma=Z>>2;Z=(Z&3)<<4|na>>4;la=(na&15)<<2|pa>>6;ya=pa&63;if(isNaN(na))la=ya=64;else if(isNaN(pa))ya=64;U[Ja++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(ma);U[Ja++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(Z);U[Ja++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(la);
+U[Ja++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(ya)}while(za<ca.length);return U.join("")}var n="http://www.w3.org/2000/svg",v="http://www.w3.org/1999/xlink",B=p.w?p.w:24,q=p.h?p.h:24,L,Q,K,I=false,S=false,R=0,N=navigator.userAgent,ga=!!window.opera;N.indexOf("Safari/")>-1&&N.indexOf("Chrome/");var oa="data:image/svg+xml;charset=utf-8;base64,";if(p.svgz){var Y=a('<object data="'+b+'" type=image/svg+xml>').appendTo("body").hide();try{Q=Y[0].contentDocument;Y.load(w);
+w(0,true)}catch(V){f()}}else{var ea=new DOMParser;a.ajax({url:b,dataType:"string",success:function(ca){if(ca){Q=ea.parseFromString(ca,"text/xml");a(function(){w("ajax")})}else a(f)},error:function(ca){if(window.opera)a(function(){f()});else if(ca.responseText){Q=ea.parseFromString(ca.responseText,"text/xml");Q.childNodes.length||a(f);a(function(){w("ajax")})}else a(f)}})}var Ba=function(ca,U,Z,na){ga&&U.css("visibility","hidden");if(p.replace){na&&U.attr("id",Z);(Z=ca.attr("class"))&&U.attr("class",
+"svg_icon "+Z);ca.replaceWith(U)}else ca.append(U);ga&&setTimeout(function(){U.removeAttr("style")},1)},ja=function(ca,U){if(p.id_match===undefined||p.id_match!==false)Ba(holder,ca,U,true);s[U]=ca};g=function(ca,U){var Z=ca.find("defs");if(!Z.length)return ca;Z=ga?Z.find("*").filter(function(){return!!this.id}):Z.find("[id]");var na=ca[0].getElementsByTagName("*"),pa=na.length;Z.each(function(ma){var la=this.id;a(Q).find("#"+la);this.id=ma="x"+la+U+ma;la="url(#"+la+")";var ya="url(#"+ma+")";for(ma=
+0;ma<pa;ma++){var za=na[ma];za.getAttribute("fill")===la&&za.setAttribute("fill",ya);za.getAttribute("stroke")===la&&za.setAttribute("stroke",ya);za.getAttribute("filter")===la&&za.setAttribute("filter",ya)}});return ca}};a.getSvgIcon=function(b,p){var w=s[b];if(p&&w)w=g(w,0,true).clone(true);return w};a.resizeSvgIcons=function(b){var p=!a(".svg_icon:first").length;a.each(b,function(w,c){var f=a.isArray(c),d=f?c[0]:c,n=f?c[1]:c;if(p)w=w.replace(/\.svg_icon/g,"svg");a(w).each(function(){this.setAttribute("width",
+d);this.setAttribute("height",n);if(window.opera&&window.widget){this.parentNode.style.width=d+"px";this.parentNode.style.height=n+"px"}})})}})(jQuery);(function(){function a(b,p,w){b=document.createElementNS(s.svg,b);if(g)for(var c in p)b.setAttribute(c,p[c]);else for(c in p){var f=p[c],d=b[c];if(d&&d.constructor==="SVGLength")d.baseVal.value=f;else b.setAttribute(c,f)}w&&w.appendChild(b);return b}var s={svg:"http://www.w3.org/2000/svg",xlink:"http://www.w3.org/1999/xlink"};if(!window.console)window.console=new function(){this.log=function(){};this.dir=function(){}};$.jGraduate={Paint:function(b){b=b||{};this.alpha=isNaN(b.alpha)?100:b.alpha;if(b.copy){this.type=
+b.copy.type;this.alpha=b.copy.alpha;this.radialGradient=this.linearGradient=this.solidColor=null;switch(this.type){case "solidColor":this.solidColor=b.copy.solidColor;break;case "linearGradient":this.linearGradient=b.copy.linearGradient.cloneNode(true);break;case "radialGradient":this.radialGradient=b.copy.radialGradient.cloneNode(true)}}else if(b.linearGradient){this.type="linearGradient";this.radialGradient=this.solidColor=null;this.linearGradient=b.linearGradient.cloneNode(true)}else if(b.radialGradient){this.type=
+"radialGradient";this.linearGradient=this.solidColor=null;this.radialGradient=b.radialGradient.cloneNode(true)}else if(b.solidColor){this.type="solidColor";this.solidColor=b.solidColor}else{this.type="none";this.radialGradient=this.linearGradient=this.solidColor=null}}};jQuery.fn.jGraduateDefaults={paint:new $.jGraduate.Paint,window:{pickerTitle:"Drag markers to pick a paint"},images:{clientPath:"images/"},newstop:"inverse"};var g=navigator.userAgent.indexOf("Gecko/")>=0;jQuery.fn.jGraduate=function(b){var p=
+arguments;return this.each(function(){function w(ia,aa,ka,M,P){var da=P||a("stop",{"stop-color":aa,"stop-opacity":ka,offset:ia},ea);if(P){aa=P.getAttribute("stop-color");ka=P.getAttribute("stop-opacity");ia=P.getAttribute("offset")}else ea.appendChild(da);if(ka===null)ka=1;P=a("path",{d:"M-6.2,0.9c3.6-4,6.7-4.3,6.7-12.4c-0.2,7.9,3.1,8.8,6.5,12.4c3.5,3.8,2.9,9.6,0,12.3c-3.1,2.8-10.4,2.7-13.2,0C-9.6,9.9-9.4,4.4-6.2,0.9z",fill:"url(#jGraduate_trans)",transform:"translate("+(10+ia*ga)+", 26)"},kb);var Ea=
+a("path",{d:"M-6.2,0.9c3.6-4,6.7-4.3,6.7-12.4c-0.2,7.9,3.1,8.8,6.5,12.4c3.5,3.8,2.9,9.6,0,12.3c-3.1,2.8-10.4,2.7-13.2,0C-9.6,9.9-9.4,4.4-6.2,0.9z",fill:aa,"fill-opacity":ka,transform:"translate("+(10+ia*ga)+", 26)",stroke:"#000","stroke-width":1.5},kb);$(Ea).mousedown(function(Oa){c(this);Va=cb;S.mousemove(n).mouseup(f);ta=vb.offset();Oa.preventDefault();return false}).data("stop",da).data("bg",P).dblclick(function(){$("div.jGraduate_LightBox").show();for(var Oa=this,Wa=+da.getAttribute("stop-opacity")||
+1,Za=da.getAttribute("stop-color")||1,nb=(parseFloat(Wa)*255).toString(16);nb.length<2;)nb="0"+nb;aa=Za.substr(1)+nb;$("#"+q+"_jGraduate_stopPicker").css({left:100,bottom:15}).jPicker({window:{title:"Pick the start color and opacity for the gradient"},images:{clientPath:B.images.clientPath},color:{active:aa,alphaSupport:true}},function(Ra){Za=Ra.val("hex")?"#"+Ra.val("hex"):"none";Wa=Ra.val("a")!==null?Ra.val("a")/256:1;Oa.setAttribute("fill",Za);Oa.setAttribute("fill-opacity",Wa);da.setAttribute("stop-color",
+Za);da.setAttribute("stop-opacity",Wa);$("div.jGraduate_LightBox").hide();$("#"+q+"_jGraduate_stopPicker").hide()},null,function(){$("div.jGraduate_LightBox").hide();$("#"+q+"_jGraduate_stopPicker").hide()})});$(ea).find("stop").each(function(){var Oa=$(this);if(+this.getAttribute("offset")>ia){if(!aa){var Wa=this.getAttribute("stop-color"),Za=this.getAttribute("stop-opacity");da.setAttribute("stop-color",Wa);Ea.setAttribute("fill",Wa);da.setAttribute("stop-opacity",Za===null?1:Za);Ea.setAttribute("fill-opacity",
+Za===null?1:Za)}Oa.before(da);return false}});M&&c(Ea);return da}function c(ia){cb&&cb.setAttribute("stroke","#000");ia.setAttribute("stroke","blue");cb=ia;cb.parentNode.appendChild(cb)}function f(){S.unbind("mousemove",n);if(Ga.getAttribute("display")!=="none"){Ga.setAttribute("display","none");var ia=$(cb),aa=ia.data("stop");ia=ia.data("bg");$([cb,aa,ia]).remove()}Va=null}function d(){var ia=Sa?"rotate("+Sa+","+Ha+","+db+") ":"";$a===1&&Ka===1?ea.removeAttribute("gradientTransform"):ea.setAttribute("gradientTransform",
+ia+"translate("+-Ha*($a-1)+","+-db*(Ka-1)+") scale("+$a+","+Ka+")")}function n(ia){var aa=ia.pageX-ta.left;ia=ia.pageY-ta.top;aa=aa<10?10:aa>ga+10?ga+10:aa;var ka="translate("+aa+", 26)";if(ia<-60||ia>130){Ga.setAttribute("display","block");Ga.setAttribute("transform",ka)}else Ga.setAttribute("display","none");Va.setAttribute("transform",ka);$.data(Va,"bg").setAttribute("transform",ka);$.data(Va,"stop").setAttribute("offset",(aa-10)/ga);var M=0;$(ea).find("stop").each(function(){var P=this.getAttribute("offset"),
+da=$(this);if(P<M){da.prev().before(da);va=$(ea).find("stop")}M=P})}var v=$(this),B=$.extend(true,{},jQuery.fn.jGraduateDefaults,b),q=v.attr("id"),L="#"+v.attr("id")+" ";if(L){var Q=function(){switch(v.paint.type){case "radialGradient":v.paint.linearGradient=null;break;case "linearGradient":v.paint.radialGradient=null;break;case "solidColor":v.paint.radialGradient=v.paint.linearGradient=null}$.isFunction(v.okCallback)&&v.okCallback(v.paint);v.hide()},K=function(){$.isFunction(v.cancelCallback)&&v.cancelCallback();
+v.hide()};$.extend(true,v,{paint:new $.jGraduate.Paint({copy:B.paint}),okCallback:$.isFunction(p[1])&&p[1]||null,cancelCallback:$.isFunction(p[2])&&p[2]||null});v.position();var I=null,S=$(window);if(v.paint.type=="none")v.paint=$.jGraduate.Paint({solidColor:"ffffff"});v.addClass("jGraduate_Picker");v.html('<ul class="jGraduate_tabs"><li class="jGraduate_tab_color jGraduate_tab_current" data-type="col">Solid Color</li><li class="jGraduate_tab_lingrad" data-type="lg">Linear Gradient</li><li class="jGraduate_tab_radgrad" data-type="rg">Radial Gradient</li></ul><div class="jGraduate_colPick"></div><div class="jGraduate_gradPick"></div><div class="jGraduate_LightBox"></div><div id="'+
+q+'_jGraduate_stopPicker" class="jGraduate_stopPicker"></div>');var R=$(L+"> .jGraduate_colPick"),N=$(L+"> .jGraduate_gradPick");N.html('<div id="'+q+'_jGraduate_Swatch" class="jGraduate_Swatch"><h2 class="jGraduate_Title">'+B.window.pickerTitle+'</h2><div id="'+q+'_jGraduate_GradContainer" class="jGraduate_GradContainer"></div><div id="'+q+'_jGraduate_StopSlider" class="jGraduate_StopSlider"></div></div><div class="jGraduate_Form jGraduate_Points jGraduate_lg_field"><div class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">Begin Point</label><div class="jGraduate_Form_Section"><label>x:</label><input type="text" id="'+
+q+'_jGraduate_x1" size="3" title="Enter starting x value between 0.0 and 1.0"/><label> y:</label><input type="text" id="'+q+'_jGraduate_y1" size="3" title="Enter starting y value between 0.0 and 1.0"/></div></div><div class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">End Point</label><div class="jGraduate_Form_Section"><label>x:</label><input type="text" id="'+q+'_jGraduate_x2" size="3" title="Enter ending x value between 0.0 and 1.0"/><label> y:</label><input type="text" id="'+
+q+'_jGraduate_y2" size="3" title="Enter ending y value between 0.0 and 1.0"/></div></div></div><div class="jGraduate_Form jGraduate_Points jGraduate_rg_field"><div class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">Center Point</label><div class="jGraduate_Form_Section"><label>x:</label><input type="text" id="'+q+'_jGraduate_cx" size="3" title="Enter x value between 0.0 and 1.0"/><label> y:</label><input type="text" id="'+q+'_jGraduate_cy" size="3" title="Enter y value between 0.0 and 1.0"/></div></div><div class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">Focal Point</label><div class="jGraduate_Form_Section"><label>Match center: <input type="checkbox" checked="checked" id="'+
+q+'_jGraduate_match_ctr"/></label><br/><label>x:</label><input type="text" id="'+q+'_jGraduate_fx" size="3" title="Enter x value between 0.0 and 1.0"/><label> y:</label><input type="text" id="'+q+'_jGraduate_fy" size="3" title="Enter y value between 0.0 and 1.0"/></div></div></div><div class="jGraduate_StopSection jGraduate_SpreadMethod"><label class="jGraduate_Form_Heading">Spread method</label><div class="jGraduate_Form_Section"><select class="jGraduate_spreadMethod"><option value=pad selected>Pad</option><option value=reflect>Reflect</option><option value=repeat>Repeat</option></select></div></div><div class="jGraduate_Form"><div class="jGraduate_Slider jGraduate_RadiusField jGraduate_rg_field"><label class="prelabel">Radius:</label><div id="'+
+q+'_jGraduate_Radius" class="jGraduate_SliderBar jGraduate_Radius" title="Click to set radius"><img id="'+q+'_jGraduate_RadiusArrows" class="jGraduate_RadiusArrows" src="'+B.images.clientPath+'rangearrows2.gif"></div><label><input type="text" id="'+q+'_jGraduate_RadiusInput" size="3" value="100"/>%</label></div><div class="jGraduate_Slider jGraduate_EllipField jGraduate_rg_field"><label class="prelabel">Ellip:</label><div id="'+q+'_jGraduate_Ellip" class="jGraduate_SliderBar jGraduate_Ellip" title="Click to set Ellip"><img id="'+
+q+'_jGraduate_EllipArrows" class="jGraduate_EllipArrows" src="'+B.images.clientPath+'rangearrows2.gif"></div><label><input type="text" id="'+q+'_jGraduate_EllipInput" size="3" value="0"/>%</label></div><div class="jGraduate_Slider jGraduate_AngleField jGraduate_rg_field"><label class="prelabel">Angle:</label><div id="'+q+'_jGraduate_Angle" class="jGraduate_SliderBar jGraduate_Angle" title="Click to set Angle"><img id="'+q+'_jGraduate_AngleArrows" class="jGraduate_AngleArrows" src="'+B.images.clientPath+
+'rangearrows2.gif"></div><label><input type="text" id="'+q+'_jGraduate_AngleInput" size="3" value="0"/>\u00ba&nbsp;</label></div><div class="jGraduate_Slider jGraduate_OpacField"><label class="prelabel">Opac:</label><div id="'+q+'_jGraduate_Opac" class="jGraduate_SliderBar jGraduate_Opac" title="Click to set Opac"><img id="'+q+'_jGraduate_OpacArrows" class="jGraduate_OpacArrows" src="'+B.images.clientPath+'rangearrows2.gif"></div><label><input type="text" id="'+q+'_jGraduate_OpacInput" size="3" value="100"/>%</label></div></div><div class="jGraduate_OkCancel"><input type="button" id="'+
+q+'_jGraduate_Ok" class="jGraduate_Ok" value="OK"/><input type="button" id="'+q+'_jGraduate_Cancel" class="jGraduate_Cancel" value="Cancel"/></div>');var ga=256,oa=ga-0,Y=ga-0,V,ea,Ba,ja={};$(".jGraduate_SliderBar").width(145);var ca=$("#"+q+"_jGraduate_GradContainer")[0],U=a("svg",{id:q+"_jgraduate_svg",width:ga,height:ga,xmlns:s.svg},ca);V=V||v.paint.type;var Z=ea=v.paint[V],na=v.paint.alpha,pa=V==="solidColor";switch(V){case "solidColor":case "linearGradient":if(!pa){ea.id=q+"_lg_jgraduate_grad";
+Z=ea=U.appendChild(ea)}a("radialGradient",{id:q+"_rg_jgraduate_grad"},U);if(V==="linearGradient")break;case "radialGradient":if(!pa){ea.id=q+"_rg_jgraduate_grad";Z=ea=U.appendChild(ea)}a("linearGradient",{id:q+"_lg_jgraduate_grad"},U)}if(pa){Z=ea=$("#"+q+"_lg_jgraduate_grad")[0];I=v.paint[V];w(0,"#"+I,1);var ma=typeof B.newstop;if(ma==="string")switch(B.newstop){case "same":w(1,"#"+I,1);break;case "inverse":ma="";for(var la=0;la<6;la+=2){I.substr(la,2);var ya=(255-parseInt(I.substr(la,2),16)).toString(16);
+if(ya.length<2)ya=0+ya;ma+=ya}w(1,"#"+ma,1);break;case "white":w(1,"#ffffff",1);break;case "black":w(1,"#000000",1)}else if(ma==="object")w(1,B.newstop.color||"#"+I,"opac"in B.newstop?B.newstop.opac:1)}I=parseFloat(Z.getAttribute("x1")||0);ma=parseFloat(Z.getAttribute("y1")||0);la=parseFloat(Z.getAttribute("x2")||1);ya=parseFloat(Z.getAttribute("y2")||0);var za=parseFloat(Z.getAttribute("cx")||0.5),Ja=parseFloat(Z.getAttribute("cy")||0.5),Ia=parseFloat(Z.getAttribute("fx")||za),Fa=parseFloat(Z.getAttribute("fy")||
+Ja);Ba=a("rect",{id:q+"_jgraduate_rect",x:0,y:0,width:oa,height:Y,fill:"url(#"+q+"_jgraduate_grad)","fill-opacity":na/100},U);var Ma=$("<div/>").attr({"class":"grad_coord jGraduate_lg_field",title:"Begin Stop"}).text(1).css({top:ma*ga,left:I*ga}).data("coord","start").appendTo(ca),Da=Ma.clone().text(2).css({top:ya*ga,left:la*ga}).attr("title","End stop").data("coord","end").appendTo(ca),wa=$("<div/>").attr({"class":"grad_coord jGraduate_rg_field",title:"Center stop"}).text("C").css({top:Ja*ga,left:za*
+ga}).data("coord","center").appendTo(ca),ra=wa.clone().text("F").css({top:Fa*ga,left:Ia*ga,display:"none"}).attr("title","Focus point").data("coord","focus").appendTo(ca);ra[0].id=q+"_jGraduate_focusCoord";$(L+" .grad_coord");$.each(["x1","y1","x2","y2","cx","cy","fx","fy"],function(ia,aa){var ka=ea.getAttribute(aa),M=isNaN(aa[1]);ka||(ka=M?"0.5":aa==="x2"?"1.0":"0.0");ja[aa]=$("#"+q+"_jGraduate_"+aa).val(ka).change(function(){if(isNaN(parseFloat(this.value))||this.value<0)this.value=0;else if(this.value>
+1)this.value=1;if(!(aa[0]==="f"&&!eb))if(M&&V==="radialGradient"||!M&&V==="linearGradient")ea.setAttribute(aa,this.value);var P=M?aa[0]==="c"?wa:ra:aa[1]==="1"?Ma:Da,da=aa.indexOf("x")>=0?"left":"top";P.css(da,this.value*ga)}).change()});var va,kb,vb=$("#"+q+"_jGraduate_StopSlider"),cb,Ta,Va,Ga=a("path",{d:"m9.75,-6l-19.5,19.5m0,-19.5l19.5,19.5",fill:"none",stroke:"#D00","stroke-width":5,display:"none"},Ta),ta,$a=1,Ka=1,Sa=0,Ha=za,db=Ja;Ta=a("svg",{width:"100%",height:45},vb[0]);ca=a("pattern",{width:16,
+height:16,patternUnits:"userSpaceOnUse",id:"jGraduate_trans"},Ta);a("image",{width:16,height:16},ca).setAttributeNS(s.xlink,"xlink:href",B.images.clientPath+"map-opacity.png");$(Ta).on("click touchstart",function(ia){ta=vb.offset();if(ia.target.tagName!=="path"){var aa=ia.pageX-ta.left-8;aa=aa<10?10:aa>ga+10?ga+10:aa;w(aa/ga,0,0,true);ia.stopPropagation()}});$(Ta).mouseover(function(){Ta.appendChild(Ga)});kb=a("g",{},Ta);a("line",{x1:10,y1:15,x2:ga+10,y2:15,"stroke-width":2,stroke:"#000"},Ta);var lb=
+N.find(".jGraduate_spreadMethod").change(function(){ea.setAttribute("spreadMethod",$(this).val())}),Ua=null,Xa=function(ia){var aa=ia.pageX-hb.left,ka=ia.pageY-hb.top;aa=aa<0?0:aa>ga?ga:aa;ka=ka<0?0:ka>ga?ga:ka;Ua.css("left",aa).css("top",ka);aa=aa/oa;ka=ka/Y;var M=Ua.data("coord"),P=ea;switch(M){case "start":ja.x1.val(aa);ja.y1.val(ka);P.setAttribute("x1",aa);P.setAttribute("y1",ka);break;case "end":ja.x2.val(aa);ja.y2.val(ka);P.setAttribute("x2",aa);P.setAttribute("y2",ka);break;case "center":ja.cx.val(aa);
+ja.cy.val(ka);P.setAttribute("cx",aa);P.setAttribute("cy",ka);Ha=aa;db=ka;d();break;case "focus":ja.fx.val(aa);ja.fy.val(ka);P.setAttribute("fx",aa);P.setAttribute("fy",ka);d()}ia.preventDefault()},wb=function(){Ua=null;S.unbind("mousemove",Xa).unbind("mouseup",wb)};va=ea.getElementsByTagNameNS(s.svg,"stop");if(sa<2){for(;sa<2;){ea.appendChild(document.createElementNS(s.svg,"stop"));++sa}va=ea.getElementsByTagNameNS(s.svg,"stop")}var sa=va.length;for(la=0;la<sa;la++)w(0,0,0,0,va[la]);lb.val(ea.getAttribute("spreadMethod")||
+"pad");var hb,eb=false;Ba.setAttribute("fill-opacity",na/100);$("#"+q+" div.grad_coord").mousedown(function(ia){ia.preventDefault();Ua=$(this);Ua.offset();hb=Ua.parent().offset();S.mousemove(Xa).mouseup(wb)});$("#"+q+"_jGraduate_Ok").bind("click touchstart",function(){v.paint.type=V;v.paint[V]=ea.cloneNode(true);v.paint.solidColor=null;Q()});$("#"+q+"_jGraduate_Cancel").bind("click touchstart",function(){K()});if(V==="radialGradient")if(eb)ra.show();else{ra.hide();ja.fx.val("");ja.fy.val("")}$("#"+
+q+"_jGraduate_match_ctr")[0].checked=!eb;var sb,ib;$("#"+q+"_jGraduate_match_ctr").change(function(){eb=!this.checked;ra.toggle(eb);ja.fx.val("");ja.fy.val("");var ia=ea;if(eb){var aa=sb||0.5,ka=ib||0.5;ia.setAttribute("fx",aa);ia.setAttribute("fy",ka);ja.fx.val(aa);ja.fy.val(ka)}else{sb=ia.getAttribute("fx");ib=ia.getAttribute("fy");ia.removeAttribute("fx");ia.removeAttribute("fy")}});va=ea.getElementsByTagNameNS(s.svg,"stop");sa=va.length;if(sa<2){for(;sa<2;){ea.appendChild(document.createElementNS(s.svg,
+"stop"));++sa}va=ea.getElementsByTagNameNS(s.svg,"stop")}var ab;na=N=0;if(V==="radialGradient"){U=ea.gradientTransform.baseVal;if(U.numberOfItems===2){sa=U.getItem(0);U=U.getItem(1);if(sa.type===2&&U.type===3){sa=U.matrix;if(sa.a!==1)N=Math.round(-(1-sa.a)*100);else if(sa.d!==1)N=Math.round((1-sa.d)*100)}}else if(U.numberOfItems===3){ca=U.getItem(0);sa=U.getItem(1);U=U.getItem(2);if(ca.type===4&&sa.type===2&&U.type===3){na=Math.round(ca.angle);sa=U.matrix;if(sa.a!==1)N=Math.round(-(1-sa.a)*100);else if(sa.d!==
+1)N=Math.round((1-sa.d)*100)}}}N={radius:{handle:"#"+q+"_jGraduate_RadiusArrows",input:"#"+q+"_jGraduate_RadiusInput",val:(ea.getAttribute("r")||0.5)*100},opacity:{handle:"#"+q+"_jGraduate_OpacArrows",input:"#"+q+"_jGraduate_OpacInput",val:v.paint.alpha||100},ellip:{handle:"#"+q+"_jGraduate_EllipArrows",input:"#"+q+"_jGraduate_EllipInput",val:N},angle:{handle:"#"+q+"_jGraduate_AngleArrows",input:"#"+q+"_jGraduate_AngleInput",val:na}};$.each(N,function(ia,aa){var ka=$(aa.handle);ka.mousedown(function(M){var P=
+ka.parent();ab={type:ia,elem:ka,input:$(aa.input),parent:P,offset:P.offset()};S.mousemove(ob).mouseup(pb);M.preventDefault()});$(aa.input).val(aa.val).change(function(){var M=+this.value,P=0,da=V==="radialGradient";switch(ia){case "radius":da&&ea.setAttribute("r",M/100);P=Math.pow(M/100,0.4)/2*145;break;case "opacity":v.paint.alpha=M;Ba.setAttribute("fill-opacity",M/100);P=M*1.45;break;case "ellip":$a=Ka=1;if(M===0){P=72.5;break}if(M>99.5)M=99.5;if(M>0)Ka=1-M/100;else $a=-(M/100)-1;P=145*((M+100)/
+2)/100;da&&d();break;case "angle":Sa=M;P=Sa/180;P+=0.5;P*=145;da&&d()}if(P>145)P=145;else if(P<0)P=0;ka.css({"margin-left":P-5})}).change()});var ob=function(ia){var aa=ia.pageX-ab.offset.left-parseInt(ab.parent.css("border-left-width"));if(aa>145)aa=145;if(aa<=0)aa=0;var ka=aa-5;aa/=145;switch(ab.type){case "radius":aa=Math.pow(aa*2,2.5);if(aa>0.98&&aa<1.02)aa=1;if(aa<=0.01)aa=0.01;ea.setAttribute("r",aa);break;case "opacity":v.paint.alpha=parseInt(aa*100);Ba.setAttribute("fill-opacity",aa);break;
+case "ellip":Ka=$a=1;if(aa<0.5){aa/=0.5;$a=aa<=0?0.01:aa}else if(aa>0.5){aa/=0.5;aa=2-aa;Ka=aa<=0?0.01:aa}d();aa-=1;if(Ka===aa+1)aa=Math.abs(aa);break;case "angle":aa-=0.5;Sa=aa*=180;d();aa/=100}ab.elem.css({"margin-left":ka});aa=Math.round(aa*100);ab.input.val(aa);ia.preventDefault()},pb=function(){S.unbind("mousemove",ob).unbind("mouseup",pb);ab=null};for(N=(v.paint.alpha*255/100).toString(16);N.length<2;)N="0"+N;N=N.split(".")[0];I=v.paint.solidColor=="none"?"":v.paint.solidColor+N;pa||(I=va[0].getAttribute("stop-color"));
+$.extend($.fn.jPicker.defaults.window,{alphaSupport:true,effects:{type:"show",speed:0}});R.jPicker({window:{title:B.window.pickerTitle},images:{clientPath:B.images.clientPath},color:{active:I,alphaSupport:true}},function(ia){v.paint.type="solidColor";v.paint.alpha=ia.val("ahex")?Math.round(ia.val("a")/255*100):100;v.paint.solidColor=ia.val("hex")?ia.val("hex"):"none";v.paint.radialGradient=null;Q()},null,function(){K()});var fb=$(L+" .jGraduate_tabs li");fb.on("click touchstart",function(){fb.removeClass("jGraduate_tab_current");
+$(this).addClass("jGraduate_tab_current");$(L+" > div").hide();var ia=$(this).attr("data-type");$(L+" .jGraduate_gradPick").show();if(ia==="rg"||ia==="lg"){$(".jGraduate_"+ia+"_field").show();$(".jGraduate_"+(ia==="lg"?"rg":"lg")+"_field").hide();$("#"+q+"_jgraduate_rect")[0].setAttribute("fill","url(#"+q+"_"+ia+"_jgraduate_grad)");V=ia==="lg"?"linearGradient":"radialGradient";$("#"+q+"_jGraduate_OpacInput").val(v.paint.alpha).change();var aa=$("#"+q+"_"+ia+"_jgraduate_grad")[0];if(ea!==aa){var ka=
+$(ea).find("stop");$(aa).empty().append(ka);ea=aa;aa=lb.val();ea.setAttribute("spreadMethod",aa)}eb=ia==="rg"&&ea.getAttribute("fx")!=null&&!(za==Ia&&Ja==Fa);$("#"+q+"_jGraduate_focusCoord").toggle(eb);if(eb)$("#"+q+"_jGraduate_match_ctr")[0].checked=false}else{$(L+" .jGraduate_gradPick").hide();$(L+" .jGraduate_colPick").show()}});$(L+" > div").hide();fb.removeClass("jGraduate_tab_current");var tb;switch(v.paint.type){case "linearGradient":tb=$(L+" .jGraduate_tab_lingrad");break;case "radialGradient":tb=
+$(L+" .jGraduate_tab_radgrad");break;default:tb=$(L+" .jGraduate_tab_color")}v.show();setTimeout(function(){tb.addClass("jGraduate_tab_current").click()},10)}else alert("Container element must have an id attribute to maintain unique id strings for sub-elements.")})}})();jQuery&&function(){var a=$(window),s=$(document);$.extend($.fn,{contextMenu:function(g,b){if(g.menu==undefined)return false;if(g.inSpeed==undefined)g.inSpeed=150;if(g.outSpeed==undefined)g.outSpeed=75;if(g.inSpeed==0)g.inSpeed=-1;if(g.outSpeed==0)g.outSpeed=-1;$(this).each(function(){var p=$(this),w=$(p).offset(),c=$("#"+g.menu);c.addClass("contextMenu");$(this).bind("mousedown",function(d){$(this).on("mouseup",function(n){var v=$(this);v.unbind("mouseup");$(".contextMenu").hide();if(d.button===2||
+g.allowLeft||d.ctrlKey&&svgedit.browser.isMac())svgedit.browser.isTouch()||f(n,d,v)})});svgedit.browser.isTouch()&&$(this).bind("taphold",function(d){var n=$(this);n.unbind("mouseup");f(d,d,n)});var f=function(d,n,v){if(typeof n=="undefined")n=d;d.stopPropagation();if(p.hasClass("disabled")||n.altKey)return false;var B=d.pageX,q=d.pageY;if(svgedit.browser.isTouch()){B=d.originalEvent.touches[0].pageX;q=d.originalEvent.touches[0].pageY}d=a.width()-c.width();n=a.height()-c.height();if(B>d-15)B=d-15;
+if(q>n-30)q=n-30;if(svgedit.browser.isTouch())q-=c.height()/2;s.unbind("click");c.css({top:q,left:B}).fadeIn(g.inSpeed);c.find("A").mouseover(function(){c.find("LI.hover").removeClass("hover");$(this).parent().addClass("hover")}).mouseout(function(){c.find("LI.hover").removeClass("hover")});s.keypress(function(L){switch(L.keyCode){case 38:if(c.find("LI.hover").length){c.find("LI.hover").removeClass("hover").prevAll("LI:not(.disabled)").eq(0).addClass("hover");c.find("LI.hover").length||c.find("LI:last").addClass("hover")}else c.find("LI:last").addClass("hover");
+break;case 40:if(c.find("LI.hover").length==0)c.find("LI:first").addClass("hover");else{c.find("LI.hover").removeClass("hover").nextAll("LI:not(.disabled)").eq(0).addClass("hover");c.find("LI.hover").length||c.find("LI:first").addClass("hover")}break;case 13:c.find("LI.hover A").trigger("click");break;case 27:s.trigger("click")}});c.find("A").unbind("mouseup");c.find("LI:not(.disabled) A").mouseup(function(){s.unbind("click").unbind("keypress");$(".contextMenu").hide();b&&b($(this).attr("href").substr(1),
+$(v),{x:B-w.left,y:q-w.top,docX:B,docY:q});return false});setTimeout(function(){s.click(function(){s.unbind("click").unbind("keypress");c.fadeOut(g.outSpeed);return false})},0)};if($.browser.mozilla)$("#"+g.menu).each(function(){$(this).css({MozUserSelect:"none"})});else $.browser.msie?$("#"+g.menu).each(function(){$(this).bind("selectstart.disableTextSelect",function(){return false})}):$("#"+g.menu).each(function(){$(this).bind("mousedown.disableTextSelect",function(){return false})});$(p).add($("UL.contextMenu")).bind("contextmenu",
+function(){return false})});return $(this)},disableContextMenuItems:function(g){if(g==undefined){$(this).find("LI").addClass("disabled");return $(this)}$(this).each(function(){if(g!=undefined)for(var b=g.split(","),p=0;p<b.length;p++)$(this).find('A[href="'+b[p]+'"]').parent().addClass("disabled")});return $(this)},enableContextMenuItems:function(g){if(g==undefined){$(this).find("LI.disabled").removeClass("disabled");return $(this)}$(this).each(function(){if(g!=undefined)for(var b=g.split(","),p=
+0;p<b.length;p++)$(this).find('A[href="'+b[p]+'"]').parent().removeClass("disabled")});return $(this)},disableContextMenu:function(){$(this).each(function(){$(this).addClass("disabled")});return $(this)},enableContextMenu:function(){$(this).each(function(){$(this).removeClass("disabled")});return $(this)},destroyContextMenu:function(){$(this).each(function(){$(this).unbind("mousedown").unbind("mouseup")});return $(this)}})}(jQuery);var svgedit=svgedit||{};
+(function(){if(!svgedit.browser)svgedit.browser={};var a=!!document.createElementNS&&!!document.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect;svgedit.browser.supportsSvg=function(){return a};if(svgedit.browser.supportsSvg()){var s=navigator.userAgent,g=document.createElementNS("http://www.w3.org/2000/svg","svg"),b=!!window.opera,p=s.indexOf("AppleWebKit")>=0,w=s.indexOf("Gecko/")>=0,c=s.indexOf("MSIE")>=0,f=s.indexOf("Chrome/")>=0,d=s.indexOf("Windows")>=0,n=s.indexOf("Macintosh")>=
+0,v="ontouchstart"in window,B=!!g.querySelector,q=!!document.evaluate,L=function(){var oa=document.createElementNS("http://www.w3.org/2000/svg","path");oa.setAttribute("d","M0,0 10,10");var Y=oa.pathSegList;oa=oa.createSVGPathSegLinetoAbs(5,5);try{Y.replaceItem(oa,0);return true}catch(V){}return false}(),Q=function(){var oa=document.createElementNS("http://www.w3.org/2000/svg","path");oa.setAttribute("d","M0,0 10,10");var Y=oa.pathSegList;oa=oa.createSVGPathSegLinetoAbs(5,5);try{Y.insertItemBefore(oa,
+0);return true}catch(V){}return false}(),K=function(){var oa=document.createElementNS("http://www.w3.org/2000/svg","svg"),Y=document.createElementNS("http://www.w3.org/2000/svg","svg");document.documentElement.appendChild(oa);Y.setAttribute("x",5);oa.appendChild(Y);var V=document.createElementNS("http://www.w3.org/2000/svg","text");V.textContent="a";Y.appendChild(V);Y=V.getStartPositionOfChar(0);Y=Y.x;document.documentElement.removeChild(oa);return Y===0}(),I=function(){var oa=document.createElementNS("http://www.w3.org/2000/svg",
+"svg");document.documentElement.appendChild(oa);var Y=document.createElementNS("http://www.w3.org/2000/svg","path");Y.setAttribute("d","M0,0 C0,0 10,10 10,0");oa.appendChild(Y);Y=Y.getBBox();document.documentElement.removeChild(oa);return Y.height>4&&Y.height<5}(),S=function(){var oa=document.createElementNS("http://www.w3.org/2000/svg","svg");document.documentElement.appendChild(oa);var Y=document.createElementNS("http://www.w3.org/2000/svg","path");Y.setAttribute("d","M0,0 10,0");var V=document.createElementNS("http://www.w3.org/2000/svg",
+"path");V.setAttribute("d","M5,0 15,0");var ea=document.createElementNS("http://www.w3.org/2000/svg","g");ea.appendChild(Y);ea.appendChild(V);oa.appendChild(ea);Y=ea.getBBox();document.documentElement.removeChild(oa);return Y.width==15}(),R=function(){var oa=document.createElementNS("http://www.w3.org/2000/svg","rect");oa.setAttribute("x",0.1);(oa=oa.cloneNode(false).getAttribute("x").indexOf(",")==-1)||$.alert("NOTE: This version of Opera is known to contain bugs in SVG-edit.\n\t\tPlease upgrade to the <a href='http://opera.com'>latest version</a> in which the problems have been fixed.");
+return oa}(),N=function(){var oa=document.createElementNS("http://www.w3.org/2000/svg","rect");oa.setAttribute("style","vector-effect:non-scaling-stroke");return oa.style.vectorEffect==="non-scaling-stroke"}(),ga=function(){var oa=document.createElementNS("http://www.w3.org/2000/svg","rect").transform.baseVal,Y=g.createSVGTransform();oa.appendItem(Y);return oa.getItem(0)==Y}();svgedit.browser.isOpera=function(){return b};svgedit.browser.isWebkit=function(){return p};svgedit.browser.isGecko=function(){return w};
+svgedit.browser.isIE=function(){return c};svgedit.browser.isChrome=function(){return f};svgedit.browser.isWindows=function(){return d};svgedit.browser.isMac=function(){return n};svgedit.browser.isTouch=function(){return v};svgedit.browser.supportsSelectors=function(){return B};svgedit.browser.supportsXpath=function(){return q};svgedit.browser.supportsPathReplaceItem=function(){return L};svgedit.browser.supportsPathInsertItemBefore=function(){return Q};svgedit.browser.supportsPathBBox=function(){return I};
+svgedit.browser.supportsHVLineContainerBBox=function(){return S};svgedit.browser.supportsGoodTextCharPos=function(){return K};svgedit.browser.supportsEditableText=function(){return b};svgedit.browser.supportsGoodDecimals=function(){return R};svgedit.browser.supportsNonScalingStroke=function(){return N};svgedit.browser.supportsNativeTransformLists=function(){return ga}}else window.location="browser-not-supported.html"})();svgedit=svgedit||{};
+(function(){if(!svgedit.transformlist)svgedit.transformlist={};var a=document.createElementNS("http://www.w3.org/2000/svg","svg"),s={};svgedit.transformlist.SVGTransformList=function(g){this._elem=g||null;this._xforms=[];this._update=function(){var b="";a.createSVGMatrix();for(var p=0;p<this.numberOfItems;++p){var w=this._list.getItem(p);b=b;w=w;var c=w.matrix,f="";switch(w.type){case 1:f="matrix("+[c.a,c.b,c.c,c.d,c.e,c.f].join(",")+")";break;case 2:f="translate("+c.e+","+c.f+")";break;case 3:f=
+c.a==c.d?"scale("+c.a+")":"scale("+c.a+","+c.d+")";break;case 4:var d=0;f=0;if(w.angle!=0){d=1-c.a;f=(d*c.f+c.b*c.e)/(d*d+c.b*c.b);d=(c.e-c.b*f)/d}f="rotate("+w.angle+" "+d+","+f+")"}b=b+(f+" ")}this._elem.setAttribute("transform",b)};this._list=this;this._init=function(){var b=this._elem.getAttribute("transform");if(b)for(var p=/\s*((scale|matrix|rotate|translate)\s*\(.*?\))\s*,?\s*/,w=true;w;){w=b.match(p);b=b.replace(p,"");if(w&&w[1]){var c=w[1].split(/\s*\(/),f=c[0];c=c[1].match(/\s*(.*?)\s*\)/);
+c[1]=c[1].replace(/(\d)-/g,"$1 -");var d=c[1].split(/[, ]+/),n="abcdef".split(""),v=a.createSVGMatrix();$.each(d,function(L,Q){d[L]=parseFloat(Q);if(f=="matrix")v[n[L]]=d[L]});c=a.createSVGTransform();var B="set"+f.charAt(0).toUpperCase()+f.slice(1),q=f=="matrix"?[v]:d;if(f=="scale"&&q.length==1)q.push(q[0]);else if(f=="translate"&&q.length==1)q.push(0);else if(f=="rotate"&&q.length==1){q.push(0);q.push(0)}c[B].apply(c,q);this._list.appendItem(c)}}};this._removeFromOtherLists=function(b){if(b){var p=
+false,w;for(w in s){for(var c=s[w],f=0,d=c._xforms.length;f<d;++f)if(c._xforms[f]==b){p=true;c.removeItem(f);break}if(p)break}}};this.numberOfItems=0;this.clear=function(){this.numberOfItems=0;this._xforms=[]};this.initialize=function(b){this.numberOfItems=1;this._removeFromOtherLists(b);this._xforms=[b]};this.getItem=function(b){if(b<this.numberOfItems&&b>=0)return this._xforms[b];throw{code:1};};this.insertItemBefore=function(b,p){var w=null;if(p>=0)if(p<this.numberOfItems){this._removeFromOtherLists(b);
+w=Array(this.numberOfItems+1);for(var c=0;c<p;++c)w[c]=this._xforms[c];w[c]=b;for(var f=c+1;c<this.numberOfItems;++f,++c)w[f]=this._xforms[c];this.numberOfItems++;this._xforms=w;w=b;this._list._update()}else w=this._list.appendItem(b);return w};this.replaceItem=function(b,p){var w=null;if(p<this.numberOfItems&&p>=0){this._removeFromOtherLists(b);w=this._xforms[p]=b;this._list._update()}return w};this.removeItem=function(b){if(b<this.numberOfItems&&b>=0){for(var p=this._xforms[b],w=Array(this.numberOfItems-
+1),c=0;c<b;++c)w[c]=this._xforms[c];for(b=c;b<this.numberOfItems-1;++b,++c)w[b]=this._xforms[c+1];this.numberOfItems--;this._xforms=w;this._list._update();return p}else throw{code:1};};this.appendItem=function(b){this._removeFromOtherLists(b);this._xforms.push(b);this.numberOfItems++;this._list._update();return b}};svgedit.transformlist.resetListMap=function(){s={}};svgedit.transformlist.removeElementFromListMap=function(g){g.id&&s[g.id]&&delete s[g.id]};svgedit.transformlist.getTransformList=function(g){if(svgedit.browser.supportsNativeTransformLists())if(g.transform)return g.transform.baseVal;
+else if(g.gradientTransform)return g.gradientTransform.baseVal;else{if(g.patternTransform)return g.patternTransform.baseVal}else{var b=g.id;b||(b="temp");var p=s[b];if(!p||b=="temp"){s[b]=new svgedit.transformlist.SVGTransformList(g);s[b]._init();p=s[b]}return p}return null}})();svgedit=svgedit||{};
+(function(){if(!svgedit.math)svgedit.math={};var a=document.createElementNS("http://www.w3.org/2000/svg","svg");svgedit.math.transformPoint=function(s,g,b){return{x:b.a*s+b.c*g+b.e,y:b.b*s+b.d*g+b.f}};svgedit.math.isIdentity=function(s){return s.a===1&&s.b===0&&s.c===0&&s.d===1&&s.e===0&&s.f===0};svgedit.math.matrixMultiply=function(){for(var s=arguments,g=s.length,b=s[g-1];g-- >1;)b=s[g-1].multiply(b);if(Math.abs(b.a)<1.0E-14)b.a=0;if(Math.abs(b.b)<1.0E-14)b.b=0;if(Math.abs(b.c)<1.0E-14)b.c=0;if(Math.abs(b.d)<
+1.0E-14)b.d=0;if(Math.abs(b.e)<1.0E-14)b.e=0;if(Math.abs(b.f)<1.0E-14)b.f=0;return b};svgedit.math.hasMatrixTransform=function(s){if(!s)return false;for(var g=s.numberOfItems;g--;){var b=s.getItem(g);if(b.type==1&&!svgedit.math.isIdentity(b.matrix))return true}return false};svgedit.math.transformBox=function(s,g,b,p,w){var c={x:s,y:g},f={x:s+b,y:g};b={x:s+b,y:g+p};s={x:s,y:g+p};g=svgedit.math.transformPoint;c=g(c.x,c.y,w);var d=p=c.x,n=c.y,v=c.y;f=g(f.x,f.y,w);p=Math.min(p,f.x);d=Math.max(d,f.x);
+n=Math.min(n,f.y);v=Math.max(v,f.y);s=g(s.x,s.y,w);p=Math.min(p,s.x);d=Math.max(d,s.x);n=Math.min(n,s.y);v=Math.max(v,s.y);b=g(b.x,b.y,w);p=Math.min(p,b.x);d=Math.max(d,b.x);n=Math.min(n,b.y);v=Math.max(v,b.y);return{tl:c,tr:f,bl:s,br:b,aabox:{x:p,y:n,width:d-p,height:v-n}}};svgedit.math.transformListToTransform=function(s,g,b){if(s==null)return a.createSVGTransformFromMatrix(a.createSVGMatrix());g=g==undefined?0:g;b=b==undefined?s.numberOfItems-1:b;g=parseInt(g);b=parseInt(b);if(g>b){var p=b;b=g;
+g=p}p=a.createSVGMatrix();for(g=g;g<=b;++g){var w=g>=0&&g<s.numberOfItems?s.getItem(g).matrix:a.createSVGMatrix();p=svgedit.math.matrixMultiply(p,w)}return a.createSVGTransformFromMatrix(p)};svgedit.math.getMatrix=function(s){s=svgedit.transformlist.getTransformList(s);return svgedit.math.transformListToTransform(s).matrix};svgedit.math.snapToAngle=function(s,g,b,p){var w=Math.PI/4;b=b-s;var c=p-g;p=Math.sqrt(b*b+c*c);w=Math.round(Math.atan2(c,b)/w)*w;return{x:s+p*Math.cos(w),y:g+p*Math.sin(w),a:w}};
+svgedit.math.rectsIntersect=function(s,g){if(!s||!g)return false;return g.x<s.x+s.width&&g.x+g.width>s.x&&g.y<s.y+s.height&&g.y+g.height>s.y}})();svgedit=svgedit||{};
+(function(){if(!svgedit.units)svgedit.units={};var a=["x","x1","cx","rx","width"],s=["y","y1","cy","ry","height"],g=$.merge(["r","radius"],a);$.merge(g,s);var b,p={px:1};svgedit.units.init=function(c){b=c;c=document.createElementNS("http://www.w3.org/2000/svg","svg");document.body.appendChild(c);var f=document.createElementNS("http://www.w3.org/2000/svg","rect");f.setAttribute("width","1em");f.setAttribute("height","1ex");f.setAttribute("x","1in");c.appendChild(f);f=f.getBBox();document.body.removeChild(c);
+c=f.x;p.em=f.width;p.ex=f.height;p["in"]=c;p.cm=c/2.54;p.mm=c/25.4;p.pt=c/72;p.pc=c/6;p["%"]=0};svgedit.units.getTypeMap=function(){return p};svgedit.units.shortFloat=function(c){var f=b.getRoundDigits();if(isNaN(c)){if($.isArray(c))return svgedit.units.shortFloat(c[0])+","+svgedit.units.shortFloat(c[1])}else return+(+c).toFixed(f);return parseFloat(c).toFixed(f)-0};svgedit.units.convertUnit=function(c,f){f=f||b.getBaseUnit();return svgedit.unit.shortFloat(c/p[f])};svgedit.units.setUnitAttr=function(c,
+f,d){isNaN(d)||c.getAttribute(f);c.setAttribute(f,d)};var w={line:["x1","x2","y1","y2"],circle:["cx","cy","r"],ellipse:["cx","cy","rx","ry"],foreignObject:["x","y","width","height"],rect:["x","y","width","height"],image:["x","y","width","height"],use:["x","y","width","height"],text:["x","y"]};svgedit.units.convertAttrs=function(c){var f=c.tagName,d=b.getBaseUnit();if(f=w[f])for(var n=f.length,v=0;v<n;v++){var B=f[v],q=c.getAttribute(B);if(q)isNaN(q)||c.setAttribute(B,q/p[d]+d)}};svgedit.units.convertToNum=
+function(c,f){if(!isNaN(f))return f-0;if(f.substr(-1)==="%"){var d=f.substr(0,f.length-1)/100,n=b.getWidth(),v=b.getHeight();return a.indexOf(c)>=0?d*n:s.indexOf(c)>=0?d*v:d*Math.sqrt(n*n+v*v)/Math.sqrt(2)}else{n=f.substr(-2);d=f.substr(0,f.length-2);return d*p[n]}};svgedit.units.isValidUnit=function(c,f,d){var n=false;if(g.indexOf(c)>=0)if(isNaN(f)){f=f.toLowerCase();$.each(p,function(q){if(!n)if(RegExp("^-?[\\d\\.]+"+q+"$").test(f))n=true})}else n=true;else if(c=="id"){c=false;try{var v=b.getElement(f);
+c=v==null||v===d}catch(B){}return c}else n=true;return n}})();svgedit=svgedit||{};
+(function(){function a(c){if(svgedit.browser.supportsHVLineContainerBBox())try{return c.getBBox()}catch(f){}var d=$.data(c,"ref"),n=null;if(d){var v=$(d).children().clone().attr("visibility","hidden");$(w).append(v);n=v.filter("line, path")}else n=$(c).find("line, path");var B=false;if(n.length){n.each(function(){var q=this.getBBox();if(!q.width||!q.height)B=true});if(B){c=d?v:$(c).children();ret=getStrokedBBox(c)}else ret=c.getBBox()}else ret=c.getBBox();d&&v.remove();return ret}if(!svgedit.utilities)svgedit.utilities=
+{};var s="a,circle,ellipse,foreignObject,g,image,line,path,polygon,polyline,rect,svg,text,tspan,use".split(","),g=null,b=null,p=null,w=null;svgedit.utilities.init=function(c){g=c;b=c.getDOMDocument();p=c.getDOMContainer();w=c.getSVGRoot()};svgedit.utilities.toXml=function(c){return $("<p/>").text(c).html()};svgedit.utilities.fromXml=function(c){return $("<p/>").html(c).text()};svgedit.utilities.encode64=function(c){c=svgedit.utilities.convertToXMLReferences(c);if(window.btoa)return window.btoa(c);
+var f=Array(Math.floor((c.length+2)/3)*4),d,n,v,B,q,L,Q=0,K=0;do{d=c.charCodeAt(Q++);n=c.charCodeAt(Q++);v=c.charCodeAt(Q++);B=d>>2;d=(d&3)<<4|n>>4;q=(n&15)<<2|v>>6;L=v&63;if(isNaN(n))q=L=64;else if(isNaN(v))L=64;f[K++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(B);f[K++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(d);f[K++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(q);f[K++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(L)}while(Q<
+c.length);return f.join("")};svgedit.utilities.decode64=function(c){if(window.atob)return window.atob(c);var f="",d,n,v="",B,q="",L=0;c=c.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(c.charAt(L++));n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(c.charAt(L++));B="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(c.charAt(L++));q="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(c.charAt(L++));
+d=d<<2|n>>4;n=(n&15)<<4|B>>2;v=(B&3)<<6|q;f+=String.fromCharCode(d);if(B!=64)f+=String.fromCharCode(n);if(q!=64)f+=String.fromCharCode(v)}while(L<c.length);return unescape(f)};svgedit.utilities.convertToXMLReferences=function(c){for(var f="",d=0;d<c.length;d++){var n=c.charCodeAt(d);if(n<128)f+=c[d];else if(n>127)f+="&#"+n+";"}return f};svgedit.utilities.text2xml=function(c){if(c.indexOf("<svg:svg")>=0)c=c.replace(/<(\/?)svg:/g,"<$1").replace("xmlns:svg","xmlns");var f;try{var d=window.DOMParser?
+new DOMParser:new ActiveXObject("Microsoft.XMLDOM");d.async=false}catch(n){throw Error("XML Parser could not be instantiated");}try{f=d.loadXML?d.loadXML(c)?d:false:d.parseFromString(c,"text/xml")}catch(v){throw Error("Error parsing XML string");}return f};svgedit.utilities.bboxToObj=function(c){return{x:c.x,y:c.y,width:c.width,height:c.height}};svgedit.utilities.walkTree=function(c,f){if(c&&c.nodeType==1){f(c);for(var d=c.childNodes.length;d--;)svgedit.utilities.walkTree(c.childNodes.item(d),f)}};
+svgedit.utilities.walkTreePost=function(c,f){if(c&&c.nodeType==1){for(var d=c.childNodes.length;d--;)svgedit.utilities.walkTree(c.childNodes.item(d),f);f(c)}};svgedit.utilities.getUrlFromAttr=function(c){if(c)if(c.indexOf('url("')===0)return c.substring(5,c.indexOf('"',6));else if(c.indexOf("url('")===0)return c.substring(5,c.indexOf("'",6));else if(c.indexOf("url(")===0)return c.substring(4,c.indexOf(")"));return null};svgedit.utilities.getHref=function(c){if(c)return c.getAttributeNS("http://www.w3.org/1999/xlink",
+"href")};svgedit.utilities.setHref=function(c,f){c.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",f)};svgedit.utilities.findDefs=function(c){c=g.getSVGContent().documentElement;var f=c.getElementsByTagNameNS("http://www.w3.org/2000/svg","defs");return f=f.length>0?f[0]:c.insertBefore(c.ownerDocument.createElementNS("http://www.w3.org/2000/svg","defs"),c.firstChild.nextSibling)};svgedit.utilities.getPathBBox=function(c){var f=c.pathSegList,d=f.numberOfItems;c=[[],[]];var n=f.getItem(0),
+v=[n.x,n.y];for(n=0;n<d;n++){var B=f.getItem(n);if(typeof B.x!="undefined"){c[0].push(v[0]);c[1].push(v[1]);if(B.x1){for(var q=[B.x1,B.y1],L=[B.x2,B.y2],Q=[B.x,B.y],K=0;K<2;K++){B=function(ga){return Math.pow(1-ga,3)*v[K]+3*Math.pow(1-ga,2)*ga*q[K]+3*(1-ga)*Math.pow(ga,2)*L[K]+Math.pow(ga,3)*Q[K]};var I=6*v[K]-12*q[K]+6*L[K],S=-3*v[K]+9*q[K]-9*L[K]+3*Q[K],R=3*q[K]-3*v[K];if(S==0){if(I!=0){I=-R/I;0<I&&I<1&&c[K].push(B(I))}}else{R=Math.pow(I,2)-4*R*S;if(!(R<0)){var N=(-I+Math.sqrt(R))/(2*S);0<N&&N<
+1&&c[K].push(B(N));I=(-I-Math.sqrt(R))/(2*S);0<I&&I<1&&c[K].push(B(I))}}}v=Q}else{c[0].push(B.x);c[1].push(B.y)}}}f=Math.min.apply(null,c[0]);d=Math.max.apply(null,c[0])-f;n=Math.min.apply(null,c[1]);c=Math.max.apply(null,c[1])-n;return{x:f,y:n,width:d,height:c}};svgedit.utilities.getBBox=function(c){var f=c||g.getSelectedElements()[0];if(c.nodeType!=1)return null;c=null;var d=f.nodeName;switch(d){case "text":if(f.textContent===""){f.textContent="a";c=f.getBBox();f.textContent=""}else try{c=f.getBBox()}catch(n){}break;
+case "path":if(svgedit.browser.supportsPathBBox())try{c=f.getBBox()}catch(v){}else c=svgedit.utilities.getPathBBox(f);break;case "g":case "a":c=a(f);break;default:if(d==="use")c=a(f,true);if(d==="use")c||(c=f.getBBox());else if(~s.indexOf(d))try{c=f.getBBox()}catch(B){f=$(f).closest("foreignObject");if(f.length)try{c=f[0].getBBox()}catch(q){c=null}else c=null}}if(c)c=svgedit.utilities.bboxToObj(c);return c};svgedit.utilities.getRotationAngle=function(c,f){var d=c||g.getSelectedElements()[0];d=svgedit.transformlist.getTransformList(d);
+if(!d)return 0;for(var n=d.numberOfItems,v=0;v<n;++v){var B=d.getItem(v);if(B.type==4)return f?B.angle*Math.PI/180:B.angle}return 0};svgedit.utilities.getElem=svgedit.browser.supportsSelectors()?function(c){return w.querySelector("#"+c)}:svgedit.browser.supportsXpath()?function(c){return b.evaluate('svg:svg[@id="svgroot"]//svg:*[@id="'+c+'"]',p,function(){return"http://www.w3.org/2000/svg"},9,null).singleNodeValue}:function(c){return $(w).find("[id="+c+"]")[0]};svgedit.utilities.assignAttributes=
+function(c,f,d,n){d||(d=0);svgedit.browser.isOpera()||w.suspendRedraw(d);for(var v in f)if(d=v.substr(0,4)==="xml:"?"http://www.w3.org/XML/1998/namespace":v.substr(0,6)==="xlink:"?"http://www.w3.org/1999/xlink":null)c.setAttributeNS(d,v,f[v]);else n?svgedit.units.setUnitAttr(c,v,f[v]):c.setAttribute(v,f[v]);svgedit.browser.isOpera()||w.unsuspendRedraw(null)};svgedit.utilities.cleanupElement=function(c){var f=w.suspendRedraw(60),d={"fill-opacity":1,"stop-opacity":1,opacity:1,stroke:"none","stroke-dasharray":"none",
+"stroke-linejoin":"miter","stroke-linecap":"butt","stroke-opacity":1,"stroke-width":1,rx:0,ry:0},n;for(n in d){var v=d[n];c.getAttribute(n)==v&&c.removeAttribute(n)}w.unsuspendRedraw(f)}})();svgedit=svgedit||{};
+(function(){if(!svgedit.sanitize)svgedit.sanitize={};var a={};a["http://www.w3.org/1999/xlink"]="xlink";a["http://www.w3.org/XML/1998/namespace"]="xml";a["http://www.w3.org/2000/xmlns/"]="xmlns";a["http://svg-edit.googlecode.com"]="se";a["http://www.w3.org/1999/xhtml"]="xhtml";a["http://www.w3.org/1998/Math/MathML"]="mathml";var s={};$.each(a,function(p,w){s[w]=p});var g={a:["class","clip-path","clip-rule","fill","fill-opacity","fill-rule","filter","id","mask","opacity","stroke","stroke-dasharray",
+"stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform","xlink:href","xlink:title"],circle:["class","clip-path","clip-rule","cx","cy","fill","fill-opacity","fill-rule","filter","id","mask","opacity","r","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform"],clipPath:["class",
+"clipPathUnits","id"],defs:[],style:["type"],desc:[],ellipse:["class","clip-path","clip-rule","cx","cy","fill","fill-opacity","fill-rule","filter","id","mask","opacity","requiredFeatures","rx","ry","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform"],feGaussianBlur:["class","color-interpolation-filters","id","requiredFeatures","stdDeviation"],filter:["class","color-interpolation-filters",
+"filterRes","filterUnits","height","id","primitiveUnits","requiredFeatures","width","x","xlink:href","y"],foreignObject:["class","font-size","height","id","opacity","requiredFeatures","style","transform","width","x","y"],g:["class","clip-path","clip-rule","id","display","fill","fill-opacity","fill-rule","filter","mask","opacity","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage",
+"transform","font-family","font-size","font-style","font-weight","text-anchor","data-locked"],image:["class","clip-path","clip-rule","filter","height","id","mask","opacity","requiredFeatures","style","systemLanguage","transform","width","x","xlink:href","xlink:title","y"],line:["shape-rendering","class","clip-path","clip-rule","fill","fill-opacity","fill-rule","filter","id","marker-end","marker-mid","marker-start","mask","opacity","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset",
+"stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform","x1","x2","y1","y2"],linearGradient:["class","id","gradientTransform","gradientUnits","requiredFeatures","spreadMethod","systemLanguage","x1","x2","xlink:href","y1","y2"],marker:["id","class","markerHeight","markerUnits","markerWidth","orient","preserveAspectRatio","refX","refY","systemLanguage","viewBox"],mask:["class","height","id","maskContentUnits","maskUnits","width","x",
+"y"],metadata:["class","id"],path:["class","clip-path","clip-rule","d","fill","fill-opacity","fill-rule","filter","id","marker-end","marker-mid","marker-start","mask","opacity","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform"],pattern:["class","height","id","patternContentUnits","patternTransform","patternUnits","requiredFeatures","style","systemLanguage","viewBox",
+"width","x","xlink:href","y"],polygon:["class","clip-path","clip-rule","id","fill","fill-opacity","fill-rule","filter","id","class","marker-end","marker-mid","marker-start","mask","opacity","points","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform"],polyline:["class","clip-path","clip-rule","id","fill","fill-opacity","fill-rule","filter","marker-end","marker-mid",
+"marker-start","mask","opacity","points","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform"],radialGradient:["class","cx","cy","fx","fy","gradientTransform","gradientUnits","id","r","requiredFeatures","spreadMethod","systemLanguage","xlink:href"],rect:["shape-rendering","class","clip-path","clip-rule","fill","fill-opacity","fill-rule","filter","height","id","mask",
+"opacity","requiredFeatures","rx","ry","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform","width","x","y"],stop:["class","id","offset","requiredFeatures","stop-color","stop-opacity","style","systemLanguage"],svg:["class","clip-path","clip-rule","filter","id","height","mask","preserveAspectRatio","requiredFeatures","style","systemLanguage","viewBox","width","x","xmlns","xmlns:se",
+"xmlns:xlink","y"],"switch":["class","id","requiredFeatures","systemLanguage"],symbol:["class","fill","fill-opacity","fill-rule","filter","font-family","font-size","font-style","font-weight","id","opacity","preserveAspectRatio","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform","viewBox"],text:["class","clip-path","clip-rule","fill","fill-opacity","fill-rule",
+"filter","font-family","font-size","font-style","font-weight","id","mask","opacity","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","text-anchor","transform","x","xml:space","y"],textPath:["class","id","method","requiredFeatures","spacing","startOffset","style","systemLanguage","transform","xlink:href"],title:[],tspan:["class","clip-path","clip-rule","dx","dy","fill",
+"fill-opacity","fill-rule","filter","font-family","font-size","font-style","font-weight","id","mask","opacity","requiredFeatures","rotate","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","text-anchor","textLength","transform","x","xml:space","y"],use:["class","clip-path","clip-rule","fill","fill-opacity","fill-rule","filter","height","id","mask","stroke","stroke-dasharray","stroke-dashoffset",
+"stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","transform","width","x","xlink:href","y"],annotation:["encoding"],"annotation-xml":["encoding"],maction:["actiontype","other","selection"],math:["class","id","display","xmlns"],menclose:["notation"],merror:[],mfrac:["linethickness"],mi:["mathvariant"],mmultiscripts:[],mn:[],mo:["fence","lspace","maxsize","minsize","rspace","stretchy"],mover:[],mpadded:["lspace","width","height","depth","voffset"],mphantom:[],
+mprescripts:[],mroot:[],mrow:["xlink:href","xlink:type","xmlns:xlink"],mspace:["depth","height","width"],msqrt:[],mstyle:["displaystyle","mathbackground","mathcolor","mathvariant","scriptlevel"],msub:[],msubsup:[],msup:[],mtable:["align","columnalign","columnlines","columnspacing","displaystyle","equalcolumns","equalrows","frame","rowalign","rowlines","rowspacing","width"],mtd:["columnalign","columnspan","rowalign","rowspan"],mtext:[],mtr:["columnalign","rowalign"],munder:[],munderover:[],none:[],
+semantics:[]},b={};$.each(g,function(p,w){var c={};$.each(w,function(f,d){if(d.indexOf(":")>=0){var n=d.split(":");c[n[1]]=s[n[0]]}else c[d]=d=="xmlns"?"http://www.w3.org/2000/xmlns/":null});b[p]=c});svgedit.sanitize.getNSMap=function(){return a};svgedit.sanitize.sanitizeSvg=function(p){if(p.nodeType==3){p.nodeValue=p.nodeValue.replace(/^\s+|\s+$/g,"");p.nodeValue.length||p.parentNode.removeChild(p)}if(p.nodeType==1){var w=p.parentNode;if(p.ownerDocument&&w){var c=g[p.nodeName],f=b[p.nodeName];if(c!=
+undefined){for(var d=[],n=p.attributes.length;n--;){var v=p.attributes.item(n),B=v.nodeName,q=v.localName,L=v.namespaceURI;if(!(f.hasOwnProperty(q)&&L==f[q]&&L!="http://www.w3.org/2000/xmlns/")&&!(L=="http://www.w3.org/2000/xmlns/"&&a[v.nodeValue])){B.indexOf("se:")==0&&d.push([B,v.nodeValue]);p.removeAttributeNS(L,q)}if(svgedit.browser.isGecko())switch(B){case "transform":case "gradientTransform":case "patternTransform":q=v.nodeValue.replace(/(\d)-/g,"$1 -");p.setAttribute(B,q)}if(B=="style"){v=
+v.nodeValue.split(";");for(B=v.length;B--;){q=v[B].split(":");c.indexOf(q[0])>=0&&p.setAttribute(q[0],q[1])}p.removeAttribute("style")}}$.each(d,function(Q,K){p.setAttributeNS("http://svg-edit.googlecode.com",K[0],K[1])});if((n=svgedit.utilities.getHref(p))&&["filter","linearGradient","pattern","radialGradient","textPath","use"].indexOf(p.nodeName)>=0)if(n[0]!="#"){svgedit.utilities.setHref(p,"");p.removeAttributeNS("http://www.w3.org/1999/xlink","href")}if(p.nodeName=="use"&&!svgedit.utilities.getHref(p))w.removeChild(p);
+else{$.each(["clip-path","fill","filter","marker-end","marker-mid","marker-start","mask","stroke"],function(Q,K){var I=p.getAttribute(K);if(I)if((I=svgedit.utilities.getUrlFromAttr(I))&&I[0]!=="#"){p.setAttribute(K,"");p.removeAttribute(K)}});for(n=p.childNodes.length;n--;)svgedit.sanitize.sanitizeSvg(p.childNodes.item(n))}}else{for(c=[];p.hasChildNodes();)c.push(w.insertBefore(p.firstChild,p));w.removeChild(p);for(n=c.length;n--;)svgedit.sanitize.sanitizeSvg(c[n])}}}}})();svgedit=svgedit||{};
+(function(){if(!svgedit.history)svgedit.history={};svgedit.history.HistoryEventTypes={BEFORE_APPLY:"before_apply",AFTER_APPLY:"after_apply",BEFORE_UNAPPLY:"before_unapply",AFTER_UNAPPLY:"after_unapply"};svgedit.history.MoveElementCommand=function(a,s,g,b){this.elem=a;this.text=b?"Move "+a.tagName+" to "+b:"Move "+a.tagName;this.oldNextSibling=s;this.oldParent=g;this.newNextSibling=a.nextSibling;this.newParent=a.parentNode};svgedit.history.MoveElementCommand.type=function(){return"svgedit.history.MoveElementCommand"};svgedit.history.MoveElementCommand.prototype.type=
+svgedit.history.MoveElementCommand.type;svgedit.history.MoveElementCommand.prototype.getText=function(){return this.text};svgedit.history.MoveElementCommand.prototype.apply=function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_APPLY,this);this.elem=this.newParent.insertBefore(this.elem,this.newNextSibling);a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_APPLY,this)};svgedit.history.MoveElementCommand.prototype.unapply=function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_UNAPPLY,
+this);this.elem=this.oldParent.insertBefore(this.elem,this.oldNextSibling);a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_UNAPPLY,this)};svgedit.history.MoveElementCommand.prototype.elements=function(){return[this.elem]};svgedit.history.InsertElementCommand=function(a,s){this.elem=a;this.text=s||"Create "+a.tagName;this.parent=a.parentNode;this.nextSibling=this.elem.nextSibling};svgedit.history.InsertElementCommand.type=function(){return"svgedit.history.InsertElementCommand"};svgedit.history.InsertElementCommand.prototype.type=
+svgedit.history.InsertElementCommand.type;svgedit.history.InsertElementCommand.prototype.getText=function(){return this.text};svgedit.history.InsertElementCommand.prototype.apply=function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_APPLY,this);this.elem=this.parent.insertBefore(this.elem,this.nextSibling);a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_APPLY,this)};svgedit.history.InsertElementCommand.prototype.unapply=function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_UNAPPLY,
+this);this.parent=this.elem.parentNode;this.elem=this.elem.parentNode.removeChild(this.elem);a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_UNAPPLY,this)};svgedit.history.InsertElementCommand.prototype.elements=function(){return[this.elem]};svgedit.history.RemoveElementCommand=function(a,s,g,b){this.elem=a;this.text=b||"Delete "+a.tagName;this.nextSibling=s;this.parent=g;svgedit.transformlist.removeElementFromListMap(a)};svgedit.history.RemoveElementCommand.type=function(){return"svgedit.history.RemoveElementCommand"};
+svgedit.history.RemoveElementCommand.prototype.type=svgedit.history.RemoveElementCommand.type;svgedit.history.RemoveElementCommand.prototype.getText=function(){return this.text};svgedit.history.RemoveElementCommand.prototype.apply=function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_APPLY,this);svgedit.transformlist.removeElementFromListMap(this.elem);this.parent=this.elem.parentNode;this.elem=this.parent.removeChild(this.elem);a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_APPLY,
+this)};svgedit.history.RemoveElementCommand.prototype.unapply=function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_UNAPPLY,this);svgedit.transformlist.removeElementFromListMap(this.elem);this.nextSibling==null&&window.console&&console.log("Error: reference element was lost");this.parent.insertBefore(this.elem,this.nextSibling);a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_UNAPPLY,this)};svgedit.history.RemoveElementCommand.prototype.elements=function(){return[this.elem]};
+svgedit.history.ChangeElementCommand=function(a,s,g){this.elem=a;this.text=g?"Change "+a.tagName+" "+g:"Change "+a.tagName;this.newValues={};this.oldValues=s;for(var b in s)this.newValues[b]=b=="#text"?a.textContent:b=="#href"?svgedit.utilities.getHref(a):a.getAttribute(b)};svgedit.history.ChangeElementCommand.type=function(){return"svgedit.history.ChangeElementCommand"};svgedit.history.ChangeElementCommand.prototype.type=svgedit.history.ChangeElementCommand.type;svgedit.history.ChangeElementCommand.prototype.getText=
+function(){return this.text};svgedit.history.ChangeElementCommand.prototype.apply=function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_APPLY,this);var s=false,g;for(g in this.newValues){if(this.newValues[g])if(g=="#text")this.elem.textContent=this.newValues[g];else g=="#href"?svgedit.utilities.setHref(this.elem,this.newValues[g]):this.elem.setAttribute(g,this.newValues[g]);else if(g=="#text")this.elem.textContent="";else{this.elem.setAttribute(g,"");this.elem.removeAttribute(g)}if(g==
+"transform")s=true}if(!s)if(s=svgedit.utilities.getRotationAngle(this.elem)){g=elem.getBBox();s=["rotate(",s," ",g.x+g.width/2,",",g.y+g.height/2,")"].join("");s!=elem.getAttribute("transform")&&elem.setAttribute("transform",s)}a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_APPLY,this);return true};svgedit.history.ChangeElementCommand.prototype.unapply=function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_UNAPPLY,this);var s=false,g;for(g in this.oldValues){if(this.oldValues[g])if(g==
+"#text")this.elem.textContent=this.oldValues[g];else g=="#href"?svgedit.utilities.setHref(this.elem,this.oldValues[g]):this.elem.setAttribute(g,this.oldValues[g]);else if(g=="#text")this.elem.textContent="";else this.elem.removeAttribute(g);if(g=="transform")s=true}if(!s)if(s=svgedit.utilities.getRotationAngle(this.elem)){g=this.elem.getBBox();s=["rotate(",s," ",g.x+g.width/2,",",g.y+g.height/2,")"].join("");s!=this.elem.getAttribute("transform")&&this.elem.setAttribute("transform",s)}svgedit.transformlist.removeElementFromListMap(this.elem);
+a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_UNAPPLY,this);return true};svgedit.history.ChangeElementCommand.prototype.elements=function(){return[this.elem]};svgedit.history.BatchCommand=function(a){this.text=a||"Batch Command";this.stack=[]};svgedit.history.BatchCommand.type=function(){return"svgedit.history.BatchCommand"};svgedit.history.BatchCommand.prototype.type=svgedit.history.BatchCommand.type;svgedit.history.BatchCommand.prototype.getText=function(){return this.text};svgedit.history.BatchCommand.prototype.apply=
+function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_APPLY,this);for(var s=this.stack.length,g=0;g<s;++g)this.stack[g].apply(a);a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_APPLY,this)};svgedit.history.BatchCommand.prototype.unapply=function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_UNAPPLY,this);for(var s=this.stack.length-1;s>=0;s--)this.stack[s].unapply(a);a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_UNAPPLY,
+this)};svgedit.history.BatchCommand.prototype.elements=function(){for(var a=[],s=this.stack.length;s--;)for(var g=this.stack[s].elements(),b=g.length;b--;)a.indexOf(g[b])==-1&&a.push(g[b]);return a};svgedit.history.BatchCommand.prototype.addSubCommand=function(a){this.stack.push(a)};svgedit.history.BatchCommand.prototype.isEmpty=function(){return this.stack.length==0};svgedit.history.UndoManager=function(a){this.handler_=a||null;this.undoStackPointer=0;this.undoStack=[];this.undoChangeStackPointer=
+-1;this.undoableChangeStack=[]};svgedit.history.UndoManager.prototype.resetUndoStack=function(){this.undoStack=[];this.undoStackPointer=0};svgedit.history.UndoManager.prototype.getUndoStackSize=function(){return this.undoStackPointer};svgedit.history.UndoManager.prototype.getRedoStackSize=function(){return this.undoStack.length-this.undoStackPointer};svgedit.history.UndoManager.prototype.getNextUndoCommandText=function(){return this.undoStackPointer>0?this.undoStack[this.undoStackPointer-1].getText():
+""};svgedit.history.UndoManager.prototype.getNextRedoCommandText=function(){return this.undoStackPointer<this.undoStack.length?this.undoStack[this.undoStackPointer].getText():""};svgedit.history.UndoManager.prototype.undo=function(){this.undoStackPointer>0&&this.undoStack[--this.undoStackPointer].unapply(this.handler_)};svgedit.history.UndoManager.prototype.redo=function(){this.undoStackPointer<this.undoStack.length&&this.undoStack.length>0&&this.undoStack[this.undoStackPointer++].apply(this.handler_)};
+svgedit.history.UndoManager.prototype.addCommandToHistory=function(a){if(this.undoStackPointer<this.undoStack.length&&this.undoStack.length>0)this.undoStack=this.undoStack.splice(0,this.undoStackPointer);this.undoStack.push(a);this.undoStackPointer=this.undoStack.length};svgedit.history.UndoManager.prototype.beginUndoableChange=function(a,s){for(var g=++this.undoChangeStackPointer,b=s.length,p=Array(b),w=Array(b);b--;){var c=s[b];if(c!=null){w[b]=c;p[b]=c.getAttribute(a)}}this.undoableChangeStack[g]=
+{attrName:a,oldValues:p,elements:w}};svgedit.history.UndoManager.prototype.finishUndoableChange=function(){for(var a=this.undoChangeStackPointer--,s=this.undoableChangeStack[a],g=s.elements.length,b=s.attrName,p=new svgedit.history.BatchCommand("Change "+b);g--;){var w=s.elements[g];if(w!=null){var c={};c[b]=s.oldValues[g];c[b]!=w.getAttribute(b)&&p.addSubCommand(new svgedit.history.ChangeElementCommand(w,c,b))}}this.undoableChangeStack[a]=null;return p}})();svgedit=svgedit||{};
+(function(){if(!svgedit.select)svgedit.select={};var a,s,g;svgedit.select.Selector=function(b,p){this.id=b;this.selectedElement=p;this.locked=true;this.selectorGroup=a.createSVGElement({element:"g",attr:{id:"selectorGroup"+this.id}});this.selectorRect=this.selectorGroup.appendChild(a.createSVGElement({element:"path",attr:{id:"selectedBox"+this.id,fill:"none",stroke:"#4F80FF","stroke-width":"1","shape-rendering":"crispEdges",style:"pointer-events:none"}}));svgedit.browser.isTouch()&&this.selectorRect.setAttribute("stroke-opacity",
+0.3);this.gripCoords={nw:null,n:null,ne:null,e:null,se:null,s:null,sw:null,w:null};this.reset(this.selectedElement)};svgedit.select.Selector.prototype.reset=function(b){this.locked=true;this.selectedElement=b;this.resize();this.selectorGroup.setAttribute("display","inline")};svgedit.select.Selector.prototype.updateGripCursors=function(b){var p=[];b=Math.round(b/45);if(b<0)b+=8;for(var w in g.selectorGrips)p.push(w);for(;b>0;){p.push(p.shift());b--}b=0;for(w in g.selectorGrips){g.selectorGrips[w].setAttribute("style",
+"cursor:"+p[b]+"-resize");b++}};svgedit.select.Selector.prototype.showGrips=function(b){g.selectorGripsGroup.setAttribute("display",b?"inline":"none");var p=this.selectedElement;this.hasGrips=b;if(p&&b){this.selectorGroup.appendChild(g.selectorGripsGroup);this.updateGripCursors(svgedit.utilities.getRotationAngle(p))}};svgedit.select.Selector.prototype.resize=function(){var b=this.selectorRect,p=g,w=p.selectorGrips,c=this.selectedElement,f=c.getAttribute("stroke-width"),d=a.currentZoom(),n=1/d;if(c.getAttribute("stroke")!==
+"none"&&!isNaN(f))n+=f/2;var v=c.tagName;if(v==="text")n+=2/d;f=svgedit.transformlist.getTransformList(c);f=svgedit.math.transformListToTransform(f).matrix;f.e*=d;f.f*=d;var B=svgedit.utilities.getBBox(c);if(v==="g"&&!$.data(c,"gsvg"))if(v=a.getStrokedBBox(c.childNodes))B=v;v=B.x;var q=B.y,L=B.width;B=B.height;n*=d;d=svgedit.math.transformBox(v*d,q*d,L*d,B*d,f);f=d.aabox;v=f.x-n;q=f.y-n;L=f.width+n*2;var Q=f.height+n*2;f=v+L/2;B=q+Q/2;if(c=svgedit.utilities.getRotationAngle(c)){v=a.svgRoot().createSVGTransform();
+v.setRotate(-c,f,B);v=v.matrix;d.tl=svgedit.math.transformPoint(d.tl.x,d.tl.y,v);d.tr=svgedit.math.transformPoint(d.tr.x,d.tr.y,v);d.bl=svgedit.math.transformPoint(d.bl.x,d.bl.y,v);d.br=svgedit.math.transformPoint(d.br.x,d.br.y,v);v=d.tl;L=v.x;Q=v.y;var K=v.x,I=v.y;v=Math.min;q=Math.max;L=v(L,v(d.tr.x,v(d.bl.x,d.br.x)))-n;Q=v(Q,v(d.tr.y,v(d.bl.y,d.br.y)))-n;K=q(K,q(d.tr.x,q(d.bl.x,d.br.x)))+n;I=q(I,q(d.tr.y,q(d.bl.y,d.br.y)))+n;v=L;q=Q;L=K-L;Q=I-Q}n=a.svgRoot().suspendRedraw(100);b.setAttribute("d",
+"M"+v+","+q+" L"+(v+L)+","+q+" "+(v+L)+","+(q+Q)+" "+v+","+(q+Q)+"z");this.selectorGroup.setAttribute("transform",c?"rotate("+[c,f,B].join(",")+")":"");if(svgedit.browser.isTouch()){v-=15.75;q-=15.75}else{v-=4;q-=4}this.gripCoords={nw:[v,q].map(Math.round),ne:[v+L,q].map(Math.round),sw:[v,q+Q].map(Math.round),se:[v+L,q+Q].map(Math.round),n:[v+L/2,q].map(Math.round),w:[v,q+Q/2].map(Math.round),e:[v+L,q+Q/2].map(Math.round),s:[v+L/2,q+Q].map(Math.round)};for(var S in this.gripCoords){b=this.gripCoords[S];
+w[S].setAttribute("x",b[0]);w[S].setAttribute("y",b[1])}this.rotateCoords={nw:[v,q],ne:[v+L+8,q],sw:[v,q+Q+8],se:[v+L+8,q+Q+8]};for(S in this.rotateCoords){b=this.rotateCoords[S];p.rotateGrips[S].setAttribute("cx",b[0]);p.rotateGrips[S].setAttribute("cy",b[1])}a.svgRoot().unsuspendRedraw(n)};svgedit.select.SelectorManager=function(){this.rubberBandBox=this.selectorParentGroup=null;this.selectors=[];this.selectorMap={};this.selectorGrips={nw:null,n:null,ne:null,e:null,se:null,s:null,sw:null,w:null};
+this.selectorGripsGroup=null;this.rotateGrips={nw:null,ne:null,se:null,sw:null};this.initGroup()};svgedit.select.SelectorManager.prototype.initGroup=function(){this.selectorParentGroup&&this.selectorParentGroup.parentNode&&this.selectorParentGroup.parentNode.removeChild(this.selectorParentGroup);this.selectorParentGroup=a.createSVGElement({element:"g",attr:{id:"selectorParentGroup"}});this.selectorGripsGroup=a.createSVGElement({element:"g",attr:{display:"none"}});this.selectorParentGroup.appendChild(this.selectorGripsGroup);
+a.svgRoot().appendChild(this.selectorParentGroup);this.selectorMap={};this.selectors=[];this.rubberBandBox=null;for(var b in this.rotateGrips){var p=a.createSVGElement({element:"circle",attr:{id:"selectorGrip_rotate_"+b,fill:"#000",r:8,stroke:"#000","fill-opacity":0,"stroke-opacity":0,"stroke-width":0,style:"cursor:url("+s.imgPath+"rotate.png) 12 12, auto;"}});$.data(p,"dir",b);$.data(p,"type","rotate");this.rotateGrips[b]=this.selectorGripsGroup.appendChild(p)}for(b in this.selectorGrips){p=a.createSVGElement({element:"rect",
+attr:{id:"selectorGrip_resize_"+b,width:8,height:8,fill:"#4F80FF",stroke:"rgba(0,0,0,0)","stroke-width":1,style:"cursor:"+b+"-resize","pointer-events":"all"}});if(svgedit.browser.isTouch()){p.setAttribute("width",30.5);p.setAttribute("height",30.5);p.setAttribute("fill-opacity",0.3)}$.data(p,"dir",b);$.data(p,"type","resize");this.selectorGrips[b]=this.selectorGripsGroup.appendChild(p)}if(!$("#canvasBackground").length){b=s.dimensions;b=a.createSVGElement({element:"svg",attr:{id:"canvasBackground",
+width:b[0],height:b[1],x:0,y:0,overflow:svgedit.browser.isWebkit()?"none":"visible",style:"pointer-events:none"}});p=a.createSVGElement({element:"defs",attr:{id:"placeholder_defs"}});var w=a.createSVGElement({element:"pattern",attr:{id:"checkerPattern",patternUnits:"userSpaceOnUse",x:0,y:0,width:20,height:20,viewBox:"0 0 10 10"}}),c=a.createSVGElement({element:"rect",attr:{x:0,y:0,width:10,height:10,fill:"#fff"}}),f=a.createSVGElement({element:"rect",attr:{x:0,y:0,width:5,height:5,fill:"#eee"}}),
+d=a.createSVGElement({element:"rect",attr:{x:5,y:5,width:5,height:5,fill:"#eee"}}),n=a.createSVGElement({element:"rect",attr:{width:"100%",height:"100%",x:0,y:0,"stroke-width":1,stroke:"#000",fill:"url(#checkerPattern)",style:"pointer-events:none"}});b.appendChild(p);p.appendChild(w);w.appendChild(c);w.appendChild(f);w.appendChild(d);b.appendChild(n);a.svgRoot().insertBefore(b,a.svgContent())}};svgedit.select.SelectorManager.prototype.requestSelector=function(b){if(b==null)return null;var p=this.selectors.length;
+if(typeof this.selectorMap[b.id]=="object"){this.selectorMap[b.id].locked=true;return this.selectorMap[b.id]}for(var w=0;w<p;++w)if(this.selectors[w]&&!this.selectors[w].locked){this.selectors[w].locked=true;this.selectors[w].reset(b);this.selectorMap[b.id]=this.selectors[w];return this.selectors[w]}this.selectors[p]=new svgedit.select.Selector(p,b);this.selectorParentGroup.appendChild(this.selectors[p].selectorGroup);this.selectorMap[b.id]=this.selectors[p];return this.selectors[p]};svgedit.select.SelectorManager.prototype.releaseSelector=
+function(b){if(b!=null)for(var p=this.selectors.length,w=this.selectorMap[b.id],c=0;c<p;++c)if(this.selectors[c]&&this.selectors[c]==w){w.locked==false&&console.log("WARNING! selector was released but was already unlocked");delete this.selectorMap[b.id];w.locked=false;w.selectedElement=null;w.showGrips(false);try{w.selectorGroup.setAttribute("display","none")}catch(f){}break}};svgedit.select.SelectorManager.prototype.getRubberBandBox=function(){if(!this.rubberBandBox)this.rubberBandBox=this.selectorParentGroup.appendChild(a.createSVGElement({element:"rect",
+attr:{id:"selectorRubberBand",fill:"none",stroke:"#666","stroke-width":1,"stroke-dasharray":"3,2",display:"none",style:"pointer-events:none"}}));return this.rubberBandBox};svgedit.select.init=function(b,p){s=b;a=p;g=new svgedit.select.SelectorManager;a.createSVGElement({element:"g",attr:{id:"hover_group"}})};svgedit.select.getSelectorManager=function(){return g}})();svgedit=svgedit||{};
+(function(){if(!svgedit.draw)svgedit.draw={};var a="a,circle,ellipse,foreignObject,g,image,line,path,polygon,polyline,rect,svg,text,tspan,use".split(","),s={LET_DOCUMENT_DECIDE:0,ALWAYS_RANDOMIZE:1,NEVER_RANDOMIZE:2},g=s.LET_DOCUMENT_DECIDE;svgedit.draw.Layer=function(b,p){this.name_=b;this.group_=p};svgedit.draw.Layer.prototype.getName=function(){return this.name_};svgedit.draw.Layer.prototype.getGroup=function(){return this.group_};svgedit.draw.randomizeIds=function(b,p){g=b==false?s.NEVER_RANDOMIZE:
+s.ALWAYS_RANDOMIZE;if(g==s.ALWAYS_RANDOMIZE&&!p.getNonce())p.setNonce(Math.floor(Math.random()*100001));else g==s.NEVER_RANDOMIZE&&p.getNonce()&&p.clearNonce()};svgedit.draw.Drawing=function(b,p){if(!b||!b.tagName||!b.namespaceURI||b.tagName!="svg"||b.namespaceURI!="http://www.w3.org/2000/svg")throw"Error: svgedit.draw.Drawing instance initialized without a <svg> element";this.svgElem_=b;this.obj_num=0;this.idPrefix=p||"svg_";this.releasedNums=[];this.all_layers=[];this.current_layer=null;this.nonce_=
+"";var w=this.svgElem_.getAttributeNS("http://svg-edit.googlecode.com","nonce");if(w&&g!=s.NEVER_RANDOMIZE)this.nonce_=w;else g==s.ALWAYS_RANDOMIZE&&this.setNonce(Math.floor(Math.random()*100001))};svgedit.draw.Drawing.prototype.getElem_=function(b){return this.svgElem_.querySelector?this.svgElem_.querySelector("#"+b):$(this.svgElem_).find("[id="+b+"]")[0]};svgedit.draw.Drawing.prototype.getSvgElem=function(){return this.svgElem_};svgedit.draw.Drawing.prototype.getNonce=function(){return this.nonce_};
+svgedit.draw.Drawing.prototype.setNonce=function(b){this.svgElem_.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:se","http://svg-edit.googlecode.com");this.svgElem_.setAttributeNS("http://svg-edit.googlecode.com","se:nonce",b);this.nonce_=b};svgedit.draw.Drawing.prototype.clearNonce=function(){this.nonce_=""};svgedit.draw.Drawing.prototype.getId=function(){return this.nonce_?this.idPrefix+this.nonce_+"_"+this.obj_num:this.idPrefix+this.obj_num};svgedit.draw.Drawing.prototype.getNextId=function(){var b=
+this.obj_num,p=false;if(this.releasedNums.length>0){this.obj_num=this.releasedNums.pop();p=true}else this.obj_num++;for(var w=this.getId();this.getElem_(w);){if(p){this.obj_num=b;p=false}this.obj_num++;w=this.getId()}if(p)this.obj_num=b;return w};svgedit.draw.Drawing.prototype.releaseId=function(b){var p=this.idPrefix+(this.nonce_?this.nonce_+"_":"");if(typeof b!="string"||b.indexOf(p)!=0)return false;b=parseInt(b.substr(p.length));if(typeof b!="number"||b<=0||this.releasedNums.indexOf(b)!=-1)return false;
+this.releasedNums.push(b);return true};svgedit.draw.Drawing.prototype.getNumLayers=function(){return this.all_layers.length};svgedit.draw.Drawing.prototype.hasLayer=function(b){for(var p=0;p<this.getNumLayers();p++)if(this.all_layers[p][0]==b)return true;return false};svgedit.draw.Drawing.prototype.getLayerName=function(b){if(b>=0&&b<this.getNumLayers())return this.all_layers[b][0];return""};svgedit.draw.Drawing.prototype.getCurrentLayer=function(){return this.current_layer};svgedit.draw.Drawing.prototype.getCurrentLayerName=
+function(){for(var b=0;b<this.getNumLayers();++b)if(this.all_layers[b][1]==this.current_layer)return this.getLayerName(b);return""};svgedit.draw.Drawing.prototype.setCurrentLayer=function(b){for(var p=0;p<this.getNumLayers();++p)if(b==this.getLayerName(p)){if(this.current_layer!=this.all_layers[p][1]){this.current_layer.setAttribute("style","pointer-events:none");this.current_layer=this.all_layers[p][1];this.current_layer.setAttribute("style","pointer-events:all")}return true}return false};svgedit.draw.Drawing.prototype.deleteCurrentLayer=
+function(){if(this.current_layer&&this.getNumLayers()>1){var b=this.current_layer.parentNode.removeChild(this.current_layer);this.identifyLayers();return b}return null};svgedit.draw.Drawing.prototype.identifyLayers=function(){this.all_layers=[];for(var b=this.svgElem_.childNodes.length,p=[],w=[],c=null,f=false,d=0;d<b;++d){var n=this.svgElem_.childNodes.item(d);if(n&&n.nodeType==1)if(n.tagName=="g"){f=true;var v=$("title",n).text();if(!v&&svgedit.browser.isOpera()&&n.querySelectorAll)v=$(n.querySelectorAll("title")).text();
+if(v){w.push(v);this.all_layers.push([v,n]);c=n;svgedit.utilities.walkTree(n,function(B){B.setAttribute("style","pointer-events:inherit")});c.setAttribute("style","pointer-events:none")}else p.push(n)}else if(~a.indexOf(n.nodeName)){svgedit.utilities.getBBox(n);p.push(n)}}b=this.svgElem_.ownerDocument;if(p.length>0||!f){for(d=1;w.indexOf("Layer "+d)>=0;)d++;w="Layer "+d;c=b.createElementNS("http://www.w3.org/2000/svg","g");f=b.createElementNS("http://www.w3.org/2000/svg","title");f.textContent=w;
+c.appendChild(f);for(f=0;f<p.length;++f)c.appendChild(p[f]);this.svgElem_.appendChild(c);this.all_layers.push([w,c])}svgedit.utilities.walkTree(c,function(B){B.setAttribute("style","pointer-events:inherit")});this.current_layer=c.getAttribute("data-locked")==="true"?this.all_layers.slice(-2)[0][1]:c;this.current_layer.setAttribute("style","pointer-events:all")};svgedit.draw.Drawing.prototype.createLayer=function(b){var p=this.svgElem_.ownerDocument,w=p.createElementNS("http://www.w3.org/2000/svg",
+"g");p=p.createElementNS("http://www.w3.org/2000/svg","title");p.textContent=b;w.appendChild(p);this.svgElem_.appendChild(w);this.identifyLayers();return w};svgedit.draw.Drawing.prototype.getLayerVisibility=function(b){for(var p=null,w=0;w<this.getNumLayers();++w)if(this.getLayerName(w)==b){p=this.all_layers[w][1];break}if(!p)return false;return p.getAttribute("display")!="none"};svgedit.draw.Drawing.prototype.setLayerVisibility=function(b,p){if(typeof p!="boolean")return null;for(var w=null,c=0;c<
+this.getNumLayers();++c)if(this.getLayerName(c)==b){w=this.all_layers[c][1];break}if(!w)return null;w.getAttribute("display");w.setAttribute("display",p?"inline":"none");return w};svgedit.draw.Drawing.prototype.getLayerOpacity=function(b){for(var p=0;p<this.getNumLayers();++p)if(this.getLayerName(p)==b){(b=this.all_layers[p][1].getAttribute("opacity"))||(b="1.0");return parseFloat(b)}return null};svgedit.draw.Drawing.prototype.setLayerOpacity=function(b,p){if(!(typeof p!="number"||p<0||p>1))for(var w=
+0;w<this.getNumLayers();++w)if(this.getLayerName(w)==b){this.all_layers[w][1].setAttribute("opacity",p);break}}})();svgedit=svgedit||{};
+(function(){if(!svgedit.path)svgedit.path={};var a={pathNodeTooltip:"Drag node to move it. Double-click node to change segment type",pathCtrlPtTooltip:"Drag control point to adjust curve properties"},s={2:["x","y"],4:["x","y"],6:["x","y","x1","y1","x2","y2"],8:["x","y","x1","y1"],10:["x","y","r1","r2","angle","largeArcFlag","sweepFlag"],12:["x"],14:["y"],16:["x","y","x2","y2"],18:["x","y"]},g=[],b=false,p={};svgedit.path.setLinkControlPoints=function(f){b=f};var w=svgedit.path.path=null;svgedit.path.init=
+function(f){w=f;g=[0,"ClosePath"];$.each(["Moveto","Lineto","CurvetoCubic","CurvetoQuadratic","Arc","LinetoHorizontal","LinetoVertical","CurvetoCubicSmooth","CurvetoQuadraticSmooth"],function(d,n){g.push(n+"Abs");g.push(n+"Rel")})};svgedit.path.insertItemBefore=function(f,d,n){f=f.pathSegList;if(svgedit.browser.supportsPathInsertItemBefore())f.insertItemBefore(d,n);else{for(var v=f.numberOfItems,B=[],q=0;q<v;q++){var L=f.getItem(q);B.push(L)}f.clear();for(q=0;q<v;q++){q==n&&f.appendItem(d);f.appendItem(B[q])}}};
+svgedit.path.ptObjToArr=function(f,d){for(var n=s[f],v=n.length,B=Array(v),q=0;q<v;q++)B[q]=d[n[q]];return B};svgedit.path.getGripPt=function(f,d){var n={x:d?d.x:f.item.x,y:d?d.y:f.item.y},v=f.path;if(v.matrix)n=svgedit.math.transformPoint(n.x,n.y,v.matrix);n.x*=w.getCurrentZoom();n.y*=w.getCurrentZoom();return n};svgedit.path.getPointFromGrip=function(f,d){var n={x:f.x,y:f.y};if(d.matrix){f=svgedit.math.transformPoint(n.x,n.y,d.imatrix);n.x=f.x;n.y=f.y}n.x/=w.getCurrentZoom();n.y/=w.getCurrentZoom();
+return n};svgedit.path.addPointGrip=function(f,d,n){var v=svgedit.path.getGripContainer(),B=svgedit.utilities.getElem("pathpointgrip_"+f);if(!B){B=document.createElementNS("http://www.w3.org/2000/svg","rect");svgedit.utilities.assignAttributes(B,{id:"pathpointgrip_"+f,display:"none",width:svgedit.browser.isTouch()?30:5,height:svgedit.browser.isTouch()?30:5,fill:"#fff",stroke:"#4F80FF","shape-rendering":"crispEdges","stroke-width":1,cursor:"move",style:"pointer-events:all","xlink:title":a.pathNodeTooltip});
+B=v.appendChild(B);$("#pathpointgrip_"+f).dblclick(function(){svgedit.path.path&&svgedit.path.path.setSegType()})}if(d&&n)svgedit.utilities.assignAttributes(B,{x:d-(svgedit.browser.isTouch()?15:2.5),y:n-(svgedit.browser.isTouch()?15:2.5),display:"inline"});return B};svgedit.path.getGripContainer=function(){var f=svgedit.utilities.getElem("pathpointgrip_container");if(!f){f=svgedit.utilities.getElem("selectorParentGroup").appendChild(document.createElementNS("http://www.w3.org/2000/svg","g"));f.id=
+"pathpointgrip_container"}return f};svgedit.path.addCtrlGrip=function(f){var d=svgedit.utilities.getElem("ctrlpointgrip_"+f);if(d)return d;d=document.createElementNS("http://www.w3.org/2000/svg","circle");svgedit.utilities.assignAttributes(d,{id:"ctrlpointgrip_"+f,display:"none",r:svgedit.browser.isTouch()?15:3,fill:"#4F80FF",stroke:"#4F80FF","stroke-opacity":0,"stroke-width":"3",cursor:"move",style:"pointer-events:all","xlink:title":a.pathCtrlPtTooltip});svgedit.path.getGripContainer().appendChild(d);
+return d};svgedit.path.getCtrlLine=function(f){var d=svgedit.utilities.getElem("ctrlLine_"+f);if(d)return d;d=document.createElementNS("http://www.w3.org/2000/svg","line");svgedit.utilities.assignAttributes(d,{id:"ctrlLine_"+f,stroke:"#4F80FF","stroke-width":1,style:"pointer-events:none"});svgedit.path.getGripContainer().appendChild(d);return d};svgedit.path.getPointGrip=function(f,d){var n=svgedit.path.addPointGrip(f.index);if(d){var v=svgedit.path.getGripPt(f);svgedit.utilities.assignAttributes(n,
+{x:v.x-(svgedit.browser.isTouch()?15:2.5),y:v.y-(svgedit.browser.isTouch()?15:2.5),display:"inline"})}return n};svgedit.path.getControlPoints=function(f){var d=f.item,n=f.index;if(!d||!("x1"in d)||!("x2"in d))return null;var v={};svgedit.path.getGripContainer();for(var B=[svgedit.path.path.segs[n-1].item,d],q=1;q<3;q++){var L=n+"c"+q,Q=v["c"+q+"_line"]=svgedit.path.getCtrlLine(L),K=svgedit.path.getGripPt(f,{x:d["x"+q],y:d["y"+q]}),I=svgedit.path.getGripPt(f,{x:B[q-1].x,y:B[q-1].y});svgedit.utilities.assignAttributes(Q,
+{x1:K.x,y1:K.y,x2:I.x,y2:I.y,display:"inline"});v["c"+q+"_line"]=Q;pointGrip=v["c"+q]=svgedit.path.addCtrlGrip(L);svgedit.utilities.assignAttributes(pointGrip,{cx:K.x,cy:K.y,display:"inline"});v["c"+q]=pointGrip}return v};svgedit.path.replacePathSeg=function(f,d,n,v){v=v||svgedit.path.path.elem;f=v["createSVGPathSeg"+g[f]].apply(v,n);if(svgedit.browser.supportsPathReplaceItem())v.pathSegList.replaceItem(f,d);else{n=v.pathSegList;v=n.numberOfItems;for(var B=[],q=0;q<v;q++){var L=n.getItem(q);B.push(L)}n.clear();
+for(q=0;q<v;q++)q==d?n.appendItem(f):n.appendItem(B[q])}};svgedit.path.getSegSelector=function(f,d){var n=f.index,v=svgedit.utilities.getElem("segline_"+n);if(!v){var B=svgedit.path.getGripContainer();v=document.createElementNS("http://www.w3.org/2000/svg","path");svgedit.utilities.assignAttributes(v,{id:"segline_"+n,display:"none",fill:"none",stroke:"#0ff","stroke-opacity":1,"shape-rendering":"crispEdges","stroke-width":2,style:"pointer-events:none",d:"M0,0 0,0"});B.appendChild(v)}if(d){n=f.prev;
+if(!n){v.setAttribute("display","none");return v}n=svgedit.path.getGripPt(n);svgedit.path.replacePathSeg(2,0,[n.x,n.y],v);B=svgedit.path.ptObjToArr(f.type,f.item,true);for(var q=0;q<B.length;q+=2){n=svgedit.path.getGripPt(f,{x:B[q],y:B[q+1]});B[q]=n.x;B[q+1]=n.y}svgedit.path.replacePathSeg(f.type,1,B,v)}return v};svgedit.path.smoothControlPoints=this.smoothControlPoints=function(f,d,n){var v=f.x-n.x,B=f.y-n.y,q=d.x-n.x,L=d.y-n.y;if((v!=0||B!=0)&&(q!=0||L!=0)){f=Math.atan2(B,v);d=Math.atan2(L,q);v=
+Math.sqrt(v*v+B*B);q=Math.sqrt(q*q+L*L);B=w.getSVGRoot().createSVGPoint();L=w.getSVGRoot().createSVGPoint();if(f<0)f+=2*Math.PI;if(d<0)d+=2*Math.PI;var Q=Math.abs(f-d),K=Math.abs(Math.PI-Q)/2;if(f-d>0){f=Q<Math.PI?f+K:f-K;d=Q<Math.PI?d-K:d+K}else{f=Q<Math.PI?f-K:f+K;d=Q<Math.PI?d+K:d-K}B.x=v*Math.cos(f)+n.x;B.y=v*Math.sin(f)+n.y;L.x=q*Math.cos(d)+n.x;L.y=q*Math.sin(d)+n.y;return[B,L]}};svgedit.path.Segment=function(f,d){this.selected=false;this.index=f;this.item=d;this.type=d.pathSegType;this.ctrlpts=
+[];this.segsel=this.ptgrip=null};svgedit.path.Segment.prototype.showCtrlPts=function(f){for(var d in this.ctrlpts)this.ctrlpts[d].setAttribute("display",f?"inline":"none")};svgedit.path.Segment.prototype.selectCtrls=function(){$("#ctrlpointgrip_"+this.index+"c1, #ctrlpointgrip_"+this.index+"c2").attr("fill","#4F80FF")};svgedit.path.Segment.prototype.show=function(f){if(this.ptgrip){this.ptgrip.setAttribute("display",f?"inline":"none");this.segsel.setAttribute("display",f?"inline":"none");this.showCtrlPts(f)}};
+svgedit.path.Segment.prototype.select=function(f){if(this.ptgrip){this.ptgrip.setAttribute("stroke",f?"#4F80FF":"#4F80FF");this.ptgrip.setAttribute("fill",f?"#4F80FF":"#fff");this.segsel.setAttribute("display",f?"inline":"none");this.ctrlpts&&this.selectCtrls(f);this.selected=f}};svgedit.path.Segment.prototype.addGrip=function(){this.ptgrip=svgedit.path.getPointGrip(this,true);this.ctrlpts=svgedit.path.getControlPoints(this,true);this.segsel=svgedit.path.getSegSelector(this,true)};svgedit.path.Segment.prototype.update=
+function(f){if(this.ptgrip){var d=svgedit.path.getGripPt(this),n=svgedit.browser.isTouch()?15:2.5;svgedit.utilities.assignAttributes(this.ptgrip,this.ptgrip.nodeName=="rect"?{x:d.x-n,y:d.y-n}:{cx:d.x,cy:d.y});svgedit.path.getSegSelector(this,true);if(this.ctrlpts){if(f){this.item=svgedit.path.path.elem.pathSegList.getItem(this.index);this.type=this.item.pathSegType}svgedit.path.getControlPoints(this)}}};svgedit.path.Segment.prototype.move=function(f,d){var n=this.item;n=this.ctrlpts?[n.x+=f,n.y+=
+d,n.x1,n.y1,n.x2+=f,n.y2+=d]:[n.x+=f,n.y+=d];svgedit.path.replacePathSeg(this.type,this.index,n);if(this.next&&this.next.ctrlpts){n=this.next.item;n=[n.x,n.y,n.x1+=f,n.y1+=d,n.x2,n.y2];svgedit.path.replacePathSeg(this.next.type,this.next.index,n)}if(this.mate){n=this.mate.item;n=[n.x+=f,n.y+=d];svgedit.path.replacePathSeg(this.mate.type,this.mate.index,n)}this.update(true);this.next&&this.next.update(true)};svgedit.path.Segment.prototype.setLinked=function(f){var d,n,v;if(f==2){n=1;d=this.next;if(!d)return;
+v=this.item}else{n=2;d=this.prev;if(!d)return;v=d.item}var B=d.item;B["x"+n]=v.x+v.x-this.item["x"+f];B["y"+n]=v.y+v.y-this.item["y"+f];svgedit.path.replacePathSeg(d.type,d.index,[B.x,B.y,B.x1,B.y1,B.x2,B.y2]);d.update(true)};svgedit.path.Segment.prototype.moveCtrl=function(f,d,n){var v=this.item;v["x"+f]+=d;v["y"+f]+=n;svgedit.path.replacePathSeg(this.type,this.index,[v.x,v.y,v.x1,v.y1,v.x2,v.y2]);this.update(true)};svgedit.path.Segment.prototype.setType=function(f,d){svgedit.path.replacePathSeg(f,
+this.index,d);this.type=f;this.item=svgedit.path.path.elem.pathSegList.getItem(this.index);this.showCtrlPts(f===6);this.ctrlpts=svgedit.path.getControlPoints(this);this.update(true)};svgedit.path.Path=function(f){if(!f||f.tagName!=="path")throw"svgedit.path.Path constructed without a <path> element";this.elem=f;this.segs=[];this.selected_pts=[];svgedit.path.path=this;this.init()};svgedit.path.Path.prototype.init=function(){$(svgedit.path.getGripContainer()).find("*").attr("display","none");var f=
+this.elem.pathSegList,d=f.numberOfItems;this.segs=[];this.selected_pts=[];this.first_seg=null;for(var n=0;n<d;n++){var v=f.getItem(n);v=new svgedit.path.Segment(n,v);v.path=this;this.segs.push(v)}f=this.segs;v=null;for(n=0;n<d;n++){var B=f[n],q=n+1>=d?null:f[n+1],L=n-1<0?null:f[n-1];if(B.type===2){if(L&&L.type!==1){q=f[v];q.next=f[v+1];q.next.prev=q;q.addGrip()}v=n}else if(q&&q.type===1){B.next=f[v+1];B.next.prev=B;B.mate=f[v];B.addGrip();if(this.first_seg==null)this.first_seg=B}else if(q){if(B.type!==
+1){B.addGrip();if(q&&q.type!==2){B.next=q;B.next.prev=B}}}else if(B.type!==1){q=f[v];q.next=f[v+1];q.next.prev=q;q.addGrip();B.addGrip();if(!this.first_seg)this.first_seg=f[v]}}return this};svgedit.path.Path.prototype.eachSeg=function(f){for(var d=this.segs.length,n=0;n<d;n++)if(f.call(this.segs[n],n)===false)break};svgedit.path.Path.prototype.addSeg=function(f){var d=this.segs[f];if(d.prev){var n=d.prev,v;switch(d.item.pathSegType){case 4:var B=(d.item.x+n.item.x)/2,q=(d.item.y+n.item.y)/2;v=this.elem.createSVGPathSegLinetoAbs(B,
+q);break;case 6:v=(n.item.x+d.item.x1)/2;var L=(d.item.x1+d.item.x2)/2,Q=(d.item.x2+d.item.x)/2,K=(v+L)/2;L=(L+Q)/2;B=(K+L)/2;var I=(n.item.y+d.item.y1)/2,S=(d.item.y1+d.item.y2)/2;n=(d.item.y2+d.item.y)/2;var R=(I+S)/2;S=(S+n)/2;q=(R+S)/2;v=this.elem.createSVGPathSegCurvetoCubicAbs(B,q,v,I,K,R);svgedit.path.replacePathSeg(d.type,f,[d.item.x,d.item.y,L,S,Q,n])}svgedit.path.insertItemBefore(this.elem,v,f)}};svgedit.path.Path.prototype.deleteSeg=function(f){var d=this.segs[f],n=this.elem.pathSegList;
+d.show(false);var v=d.next;if(d.mate){var B=[v.item.x,v.item.y];svgedit.path.replacePathSeg(2,v.index,B);svgedit.path.replacePathSeg(4,d.index,B);n.removeItem(d.mate.index)}else{if(!d.prev){B=[v.item.x,v.item.y];svgedit.path.replacePathSeg(2,d.next.index,B)}n.removeItem(f)}};svgedit.path.Path.prototype.subpathIsClosed=function(f){var d=false;svgedit.path.path.eachSeg(function(n){if(n<=f)return true;if(this.type===2)return false;else if(this.type===1){d=true;return false}});return d};svgedit.path.Path.prototype.removePtFromSelection=
+function(f){var d=this.selected_pts.indexOf(f);if(d!=-1){this.segs[f].select(false);this.selected_pts.splice(d,1)}};svgedit.path.Path.prototype.clearSelection=function(){this.eachSeg(function(){this.select(false)});this.selected_pts=[]};svgedit.path.Path.prototype.storeD=function(){this.last_d=this.elem.getAttribute("d")};svgedit.path.Path.prototype.show=function(f){this.eachSeg(function(){this.show(f)});f&&this.selectPt(this.first_seg.index);return this};svgedit.path.Path.prototype.movePts=function(f,
+d){for(var n=this.selected_pts.length;n--;)this.segs[this.selected_pts[n]].move(f,d)};svgedit.path.Path.prototype.moveCtrl=function(f,d){var n=this.segs[this.selected_pts[0]];n.moveCtrl(this.dragctrl,f,d);b&&n.setLinked(this.dragctrl)};svgedit.path.Path.prototype.setSegType=function(f){this.storeD();for(var d=this.selected_pts.length,n;d--;){var v=this.segs[this.selected_pts[d]],B=v.prev;if(B){if(!f){n="Toggle Path Segment Type";f=v.type==6?4:6}f-=0;var q=v.item.x,L=v.item.y,Q=B.item.x;B=B.item.y;
+var K;switch(f){case 6:if(v.olditem){Q=v.olditem;K=[q,L,Q.x1,Q.y1,Q.x2,Q.y2]}else{K=q-Q;var I=L-B;K=[q,L,Q+K/3,B+I/3,q-K/3,L-I/3]}break;case 4:K=[q,L];v.olditem=v.item}v.setType(f,K)}}svgedit.path.path.endChanges(n)};svgedit.path.Path.prototype.selectPt=function(f,d){this.clearSelection();f==null&&this.eachSeg(function(n){if(this.prev)f=n});this.addPtsToSelection(f);if(d){this.dragctrl=d;b&&this.segs[f].setLinked(d)}};svgedit.path.Path.prototype.update=function(){var f=this.elem;if(svgedit.utilities.getRotationAngle(f)){this.matrix=
+svgedit.math.getMatrix(f);this.imatrix=this.matrix.inverse()}else this.imatrix=this.matrix=null;this.eachSeg(function(d){this.item=f.pathSegList.getItem(d);this.update()});return this};svgedit.path.getPath_=function(f){var d=p[f.id];d||(d=p[f.id]=new svgedit.path.Path(f));return d};svgedit.path.removePath_=function(f){f in p&&delete p[f]};var c=function(f,d,n,v,B,q,L){dx=f-n;dy=d-v;r=Math.sqrt(dx*dx+dy*dy);theta=Math.atan2(dy,dx)+L;dx=r*Math.cos(theta)+n;dy=r*Math.sin(theta)+v;dx-=B;dy-=q;r=Math.sqrt(dx*
+dx+dy*dy);theta=Math.atan2(dy,dx)-L;return{x:(r*Math.cos(theta)+B)/1,y:(r*Math.sin(theta)+q)/1}};svgedit.path.recalcRotatedPath=function(){var f=svgedit.path.path.elem,d=svgedit.utilities.getRotationAngle(f,true);if(d){var n=svgedit.utilities.getBBox(f),v=svgedit.path.path.oldbbox,B=v.x+v.width/2;v=v.y+v.height/2;var q=n.x+n.width/2;n=n.y+n.height/2;q=q-B;var L=n-v;n=Math.sqrt(q*q+L*L);L=Math.atan2(L,q)+d;q=n*Math.cos(L)+B;n=n*Math.sin(L)+v;L=f.pathSegList;for(var Q=L.numberOfItems;Q;){Q-=1;var K=
+L.getItem(Q),I=K.pathSegType;if(I!=1){var S=c(K.x,K.y,B,v,q,n,d);S=[S.x,S.y];if(K.x1!=null&&K.x2!=null){c_vals1=c(K.x1,K.y1,B,v,q,n,d);c_vals2=c(K.x2,K.y2,B,v,q,n,d);S.splice(S.length,0,c_vals1.x,c_vals1.y,c_vals2.x,c_vals2.y)}svgedit.path.replacePathSeg(I,Q,S)}}svgedit.utilities.getBBox(f);B=svgroot.createSVGTransform();f=svgedit.transformlist.getTransformList(f);B.setRotate(d*180/Math.PI,q,n);f.replaceItem(B,0)}};svgedit.path.clearData=function(){p={}}})();if(!window.console){window.console={};window.console.log=function(){};window.console.dir=function(){}}if(window.opera){window.console.log=function(a){opera.postError(a)};window.console.dir=function(){}}
+(function(){var a=jQuery.fn.attr;jQuery.fn.attr=function(s,g){var b=this.length;if(!b)return a.apply(this,arguments);for(var p=0;p<b;p++){var w=this[p];if(w.namespaceURI==="http://www.w3.org/2000/svg")if(g!==undefined)w.setAttribute(s,g);else if($.isArray(s)){b=s.length;for(p={};b--;){var c=s[b],f=w.getAttribute(c);if(f||f==="0")f=isNaN(f)?f:f-0;p[c]=f}return p}else if(typeof s==="object")for(c in s)w.setAttribute(c,s[c]);else{if((f=w.getAttribute(s))||f==="0")f=isNaN(f)?f:f-0;return f}else return a.apply(this,
+arguments)}return this}})();
+$.SvgCanvas=function(a,s){function g(e,k){for(var l=svgedit.utilities.getBBox(e),C=0;C<2;C++){var A=C===0?"fill":"stroke",G=e.getAttribute(A);if(G&&G.indexOf("url(")===0){G=P(G);if(G.tagName==="linearGradient"){var D=G.getAttribute("x1")||0,z=G.getAttribute("y1")||0,F=G.getAttribute("x2")||1,h=G.getAttribute("y2")||0;D=l.width*D+l.x;z=l.height*z+l.y;F=l.width*F+l.x;h=l.height*h+l.y;D=N(D,z,k);h=N(F,h,k);F={};F.x1=(D.x-l.x)/l.width;F.y1=(D.y-l.y)/l.height;F.x2=(h.x-l.x)/l.width;F.y2=(h.y-l.y)/l.height;
+G=G.cloneNode(true);$(G).attr(F);G.id=ka();gb().appendChild(G);e.setAttribute(A,"url(#"+G.id+")")}}}}var b="http://www.w3.org/2000/svg",p={show_outside_canvas:true,selectNew:true,dimensions:[640,480]};s&&$.extend(p,s);var w=p.dimensions,c=this,f=a.ownerDocument,d=f.importNode(svgedit.utilities.text2xml('<svg id="svgroot" xmlns="'+b+'" xlinkns="http://www.w3.org/1999/xlink" width="'+w[0]+'" height="'+w[1]+'" x="'+w[0]+'" y="'+w[1]+'" overflow="visible"><defs><filter id="canvashadow" filterUnits="objectBoundingBox"><feGaussianBlur in="SourceAlpha" stdDeviation="4" result="blur"/><feOffset in="blur" dx="5" dy="5" result="offsetBlur"/><feMerge><feMergeNode in="offsetBlur"/><feMergeNode in="SourceGraphic"/></feMerge></filter></defs></svg>').documentElement,
+true);a.appendChild(d);var n=f.createElementNS(b,"svg");(c.clearSvgContentElement=function(){for(;n.firstChild;)n.removeChild(n.firstChild);$(n).attr({id:"svgcontent",width:w[0],height:w[1],x:w[0],y:w[1],overflow:p.show_outside_canvas?"visible":"hidden",xmlns:b,"xmlns:se":"http://svg-edit.googlecode.com","xmlns:xlink":"http://www.w3.org/1999/xlink"}).appendTo(d);var e=f.createComment(" Created with Method Draw - http://github.com/duopixel/Method-Draw/ ");n.appendChild(e)})();var v="svg_";c.setIdPrefix=
+function(e){v=e};c.current_drawing_=new svgedit.draw.Drawing(n,v);var B=c.getCurrentDrawing=function(){return c.current_drawing_},q=1,L=null,Q={shape:{fill:(p.initFill.color=="none"?"":"#")+p.initFill.color,fill_paint:null,fill_opacity:p.initFill.opacity,stroke:"#"+p.initStroke.color,stroke_paint:null,stroke_opacity:p.initStroke.opacity,stroke_width:p.initStroke.width,stroke_dasharray:"none",opacity:p.initOpacity}};Q.text=$.extend(true,{},Q.shape);$.extend(Q.text,{fill:"#000000",stroke_width:0,font_size:24,
+font_family:"Helvetica, Arial, sans-serif"});var K=Q.shape,I=Array(1),S=this.addSvgElementFromJson=function(e){var k=svgedit.utilities.getElem(e.attr.id),l=B().getCurrentLayer();if(k&&e.element!=k.tagName){l.removeChild(k);k=null}if(!k){k=f.createElementNS(b,e.element);if(l)(L||l).appendChild(k)}e.curStyles&&svgedit.utilities.assignAttributes(k,{fill:K.fill,stroke:K.stroke,"stroke-width":K.stroke_width,"stroke-dasharray":K.stroke_dasharray,"stroke-opacity":K.stroke_opacity,"fill-opacity":K.fill_opacity,
+opacity:K.opacity/2,style:"pointer-events:inherit"},100);svgedit.utilities.assignAttributes(k,e.attr,100);svgedit.utilities.cleanupElement(k);return k},R=c.getTransformList=svgedit.transformlist.getTransformList,N=svgedit.math.transformPoint,ga=c.matrixMultiply=svgedit.math.matrixMultiply,oa=c.hasMatrixTransform=svgedit.math.hasMatrixTransform,Y=c.transformListToTransform=svgedit.math.transformListToTransform,V=svgedit.math.snapToAngle,ea=svgedit.math.getMatrix;svgedit.units.init({getBaseUnit:function(){return p.baseUnit},
+getElement:svgedit.utilities.getElem,getHeight:function(){return n.getAttribute("height")/q},getWidth:function(){return n.getAttribute("width")/q},getRoundDigits:function(){return $a.round_digits}});var Ba=c.convertToNum=svgedit.units.convertToNum;svgedit.utilities.init({getDOMDocument:function(){return f},getDOMContainer:function(){return a},getSVGRoot:function(){return d},getSelectedElements:function(){return I},getSVGContent:function(){return n}});var ja=c.getUrlFromAttr=svgedit.utilities.getUrlFromAttr,
+ca=c.getHref=svgedit.utilities.getHref,U=c.setHref=svgedit.utilities.setHref,Z=svgedit.utilities.getPathBBox;c.getBBox=svgedit.utilities.getBBox;var na=c.getRotationAngle=svgedit.utilities.getRotationAngle,pa=c.getElem=svgedit.utilities.getElem,ma=c.assignAttributes=svgedit.utilities.assignAttributes,la=this.cleanupElement=svgedit.utilities.cleanupElement,ya=svgedit.sanitize.getNSMap(),za=c.sanitizeSvg=svgedit.sanitize.sanitizeSvg,Ja=svgedit.history.MoveElementCommand,Ia=svgedit.history.InsertElementCommand,
+Fa=svgedit.history.RemoveElementCommand,Ma=svgedit.history.ChangeElementCommand,Da=svgedit.history.BatchCommand;c.undoMgr=new svgedit.history.UndoManager({handleHistoryEvent:function(e,k){var l=svgedit.history.HistoryEventTypes;if(e==l.BEFORE_UNAPPLY||e==l.BEFORE_APPLY)c.clearSelection();else if(e==l.AFTER_APPLY||e==l.AFTER_UNAPPLY){var C=k.elements();c.pathActions.clear();M("changed",C);C=k.type();l=e==l.AFTER_APPLY;if(C==Ja.type())(l?k.newParent:k.oldParent)==n&&c.identifyLayers();else if(C==Ia.type()||
+C==Fa.type()){k.parent==n&&c.identifyLayers();if(C==Ia.type())l&&Ta(k.elem);else l||Ta(k.elem);k.elem.tagName==="use"&&Gb(k.elem)}else if(C==Ma.type()){k.elem.tagName=="title"&&k.elem.parentNode.parentNode==n&&c.identifyLayers();l=l?k.newValues:k.oldValues;l.stdDeviation&&c.setBlurOffsets(k.elem.parentNode,l.stdDeviation)}}}});var wa=function(e){c.undoMgr.addCommandToHistory(e)};svgedit.select.init(p,{createSVGElement:function(e){return c.addSvgElementFromJson(e)},svgRoot:function(){return d},svgContent:function(){return n},
+currentZoom:function(){return q},getStrokedBBox:function(e){return c.getStrokedBBox([e])}});var ra=this.selectorManager=svgedit.select.getSelectorManager();svgedit.path.init({getCurrentZoom:function(){return q},getSVGRoot:function(){return d}});svgedit.utilities.snapToGrid=function(e){var k=p.snappingStep,l=p.baseUnit;if(l!=="px")k*=svgedit.units.getTypeMap()[l];return e=Math.round(e/k)*k};var va=svgedit.utilities.snapToGrid,kb={exportNoBlur:"Blurred elements will appear as un-blurred",exportNoforeignObject:"foreignObject elements will not appear",
+exportNoDashArray:"Strokes will appear filled",exportNoText:"Text may not appear as expected"},vb=["clip-path","fill","filter","marker-end","marker-mid","marker-start","mask","stroke"],cb=$.data,Ta=function(e){var k=$(e).attr(vb),l;for(l in k){var C=k[l];if(C&&C.indexOf("url(")===0){C=ja(C).substr(1);if(!pa(C)){gb().appendChild(sb[C]);delete sb[C]}}}e=e.getElementsByTagName("*");if(e.length){k=0;for(l=e.length;k<l;k++)Ta(e[k])}},Va={},Ga=p.imgPath+"logo.png",ta=[],$a={round_digits:5},Ka=false,Sa=
+null,Ha="select",db="none",lb={},Ua=Q.text,Xa=K,wb=null,sa=null,hb=[],eb={},sb={};c.clipBoard=[];var ib=this.runExtensions=function(e,k,l){var C=false;if(l)C=[];$.each(eb,function(A,G){if(e in G)if(l)C.push(G[e](k));else C=G[e](k)});return C};this.addExtension=function(e,k){if(e in eb)console.log('Cannot add extension "'+e+'", an extension by that name already exists"');else{var l=$.isFunction(k)?k($.extend(c.getPrivateMethods(),{svgroot:d,svgcontent:n,nonce:B().getNonce(),selectorManager:ra})):k;
+eb[e]=l;M("extension_added",l)}};var ab=this.round=function(e){return parseInt(e*q)/q},ob=this.getIntersectionList=function(e){if(sa==null)return null;var k=L||B().getCurrentLayer();hb.length||(hb=fb(k));var l=null;try{l=k.getIntersectionList(e,null)}catch(C){}if(l==null||typeof l.item!="function"){l=[];if(e)e=e;else{e=sa.getBBox();k={};for(var A in e)k[A]=e[A]/q;e=k}for(A=hb.length;A--;)e.width&&e.width&&svgedit.math.rectsIntersect(e,hb[A].bbox)&&l.push(hb[A].elem)}return l};getStrokedBBox=this.getStrokedBBox=
+function(e){e||(e=pb());if(!e.length)return false;var k=function(h){try{var m=svgedit.utilities.getBBox(h),o=svgedit.utilities.getRotationAngle(h);if(o&&o%90||svgedit.math.hasMatrixTransform(svgedit.transformlist.getTransformList(h))){o=false;if(["ellipse","path","line","polyline","polygon"].indexOf(h.tagName)>=0)m=o=c.convertToPath(h,true);else if(h.tagName=="rect"){var u=h.getAttribute("rx"),E=h.getAttribute("ry");if(u||E)m=o=c.convertToPath(h,true)}if(!o){var H=h.cloneNode(true),J=document.createElementNS(b,
+"g"),O=h.parentNode;O.appendChild(J);J.appendChild(H);m=svgedit.utilities.bboxToObj(J.getBBox());O.removeChild(J)}}return m}catch(W){console.log(h,W)}},l;$.each(e,function(){if(!l)if(this.parentNode)l=k(this)});if(l==null)return null;var C=l.x+l.width,A=l.y+l.height,G=l.x,D=l.y,z=function(h){var m=h.getAttribute("stroke-width"),o=0;if(h.getAttribute("stroke")!="none"&&!isNaN(m))o+=m/2;return o},F=[];$.each(e,function(h,m){var o=k(m);if(o){var u=z(m);G=Math.min(G,o.x-u);D=Math.min(D,o.y-u);F.push(o)}});
+l.x=G;l.y=D;$.each(e,function(h,m){var o=F[h];if(o&&m.nodeType==1){var u=z(m);C=Math.max(C,o.x+o.width+u);A=Math.max(A,o.y+o.height+u)}});l.width=C-G;l.height=A-D;return l};var pb=this.getVisibleElements=function(e){e||(e=$(n).children());e.find("#canvas_background").length&&e.splice(0,1);var k=[];$(e).children().each(function(l,C){try{C.getBBox()&&k.push(C)}catch(A){}});return k.reverse()},fb=this.getVisibleElementsAndBBoxes=function(e){e||(e=$(n).children());var k=[];$(e).children().each(function(l,
+C){try{C.getBBox()&&k.push({elem:C,bbox:getStrokedBBox([C])})}catch(A){}});return k.reverse()},tb=this.groupSvgElem=function(e){var k=document.createElementNS(b,"g");e.parentNode.replaceChild(k,e);$(k).append(e).data("gsvg",e)[0].id=ka()},ia=function(e){var k=document.createElementNS(e.namespaceURI,e.nodeName);k.removeAttribute("id");$.each(e.attributes,function(C,A){A.localName!="-moz-math-font-style"&&k.setAttributeNS(A.namespaceURI,A.nodeName,A.nodeValue)});if(svgedit.browser.isWebkit()&&e.nodeName==
+"path"){var l=La.convertPath(e);k.setAttribute("d",l)}$.each(e.childNodes,function(C,A){switch(A.nodeType){case 1:k.appendChild(ia(A));break;case 3:k.textContent=A.nodeValue}});if($(e).data("gsvg"))$(k).data("gsvg",k.firstChild);else if($(e).data("symbol")){e=$(e).data("symbol");$(k).data("ref",e).data("symbol",e)}else k.tagName=="image"&&Fb(k);k.id=ka();return k},aa,ka,M;(function(e){var k={};aa=e.getId=function(){return B().getId()};ka=e.getNextId=function(){return B().getNextId()};M=e.call=function(l,
+C){if(k[l])return k[l](this,C)};e.bind=function(l,C){var A=k[l];k[l]=C;return A}})(c);this.prepareSvg=function(e){this.sanitizeSvg(e.documentElement);e=e.getElementsByTagNameNS(b,"path");for(var k=0,l=e.length;k<l;++k){var C=e[k];C.setAttribute("d",La.convertPath(C));La.fixEnd(C)}};var P=this.getRefElem=function(e){return pa(ja(e).substr(1))},da=function(e){if(!svgedit.browser.isGecko())return e;var k=e.cloneNode(true);e.parentNode.insertBefore(k,e);e.parentNode.removeChild(e);ra.releaseSelector(e);
+I[0]=k;ra.requestSelector(k).showGrips(true);return k};this.setRotationAngle=function(e,k){e=parseFloat(e);var l=I[0];if(l){var C=l.getAttribute("transform"),A=svgedit.utilities.getBBox(l),G=A.x+A.width/2,D=A.y+A.height/2;A=R(l);A.numberOfItems>0&&A.getItem(0).type==4&&A.removeItem(0);if(e!=0){G=N(G,D,Y(A).matrix);D=d.createSVGTransform();D.setRotate(e,G.x,G.y);A.numberOfItems?A.insertItemBefore(D,0):A.appendItem(D)}else A.numberOfItems==0&&l.removeAttribute("transform");if(!k){A=l.getAttribute("transform");
+l.setAttribute("transform",C);Ya("transform",A,I);M("changed",I)}pa("pathpointgrip_container");l=ra.requestSelector(I[0]);l.resize();l.updateGripCursors(e)}};var Ea=this.recalculateAllSelectedDimensions=function(){for(var e=new Da(db=="none"?"position":"size"),k=I.length;k--;){var l=Ra(I[k]);l&&e.addSubCommand(l)}if(!e.isEmpty()){wa(e);M("changed",I)}},Oa=[0,"z","M","m","L","l","C","c","Q","q","A","a","H","h","V","v","S","s","T","t"],Wa=function(e){console.log([e.a,e.b,e.c,e.d,e.e,e.f])},Za=this.remapElement=
+function(e,k,l){var C=p.gridSnapping&&e.parentNode.parentNode.localName==="svg",A=function(){if(C)for(var o in k)k[o]=va(k[o]);ma(e,k,1E3,true)};box=svgedit.utilities.getBBox(e);for(var G=0;G<2;G++){var D=G===0?"fill":"stroke",z=e.getAttribute(D);if(z&&z.indexOf("url(")===0)if(l.a<0||l.d<0){z=P(z).cloneNode(true);if(l.a<0){var F=z.getAttribute("x1"),h=z.getAttribute("x2");z.setAttribute("x1",-(F-1));z.setAttribute("x2",-(h-1))}if(l.d<0){F=z.getAttribute("y1");h=z.getAttribute("y2");z.setAttribute("y1",
+-(F-1));z.setAttribute("y2",-(h-1))}z.id=ka();gb().appendChild(z);e.setAttribute(D,"url(#"+z.id+")")}}G=e.tagName;if(G==="g"||G==="text"||G==="use")if(l.a==1&&l.b==0&&l.c==0&&l.d==1&&(l.e!=0||l.f!=0)){D=Y(e).matrix;D=ga(D.inverse(),l,D);k.x=parseFloat(k.x)+D.e;k.y=parseFloat(k.y)+D.f}else{D=R(e);z=d.createSVGTransform();z.setMatrix(ga(Y(D).matrix,l));D.clear();D.appendItem(z)}switch(G){case "foreignObject":case "rect":case "image":if(G==="image"&&(l.a<0||l.d<0)){D=R(e);z=d.createSVGTransform();z.setMatrix(ga(Y(D).matrix,
+l));D.clear();D.appendItem(z)}else{D=N(k.x,k.y,l);k.width=l.a*k.width;k.height=l.d*k.height;k.x=D.x+Math.min(0,k.width);k.y=D.y+Math.min(0,k.height);k.width=Math.abs(k.width);k.height=Math.abs(k.height)}A();break;case "ellipse":G=N(k.cx,k.cy,l);k.cx=G.x;k.cy=G.y;k.rx=l.a*k.rx;k.ry=l.d*k.ry;k.rx=Math.abs(k.rx);k.ry=Math.abs(k.ry);A();break;case "circle":G=N(k.cx,k.cy,l);k.cx=G.x;k.cy=G.y;G=svgedit.math.transformBox(box.x,box.y,box.width,box.height,l);k.r=Math.min((G.tr.x-G.tl.x)/2,(G.bl.y-G.tl.y)/
+2);if(k.r)k.r=Math.abs(k.r);A();break;case "line":D=N(k.x1,k.y1,l);F=N(k.x2,k.y2,l);k.x1=D.x;k.y1=D.y;k.x2=F.x;k.y2=F.y;case "text":l=e.querySelectorAll("tspan");for(G=l.length;G--;){D=Ba("x",e.getAttribute("x"));z=Ba("x",l[G].getAttribute("x"));F=Ba("y",e.getAttribute("y"));h=Ba("y",l[G].getAttribute("y"));var m={};if(!isNaN(D)&&!isNaN(z)&&D!=0&&z!=0&&k.x)m.x=k.x-(D-z);if(!isNaN(F)&&!isNaN(h)&&F!=0&&h!=0&&k.y)m.y=k.y-(F-h);if(m.x||m.y)ma(l[G],m,1E3,true)}A();break;case "use":A();break;case "g":(A=
+$(e).data("gsvg"))&&ma(A,k,1E3,true);break;case "polyline":case "polygon":A=k.points.length;for(G=0;G<A;++G){h=k.points[G];h=N(h.x,h.y,l);k.points[G].x=h.x;k.points[G].y=h.y}A=k.points.length;l="";for(G=0;G<A;++G){h=k.points[G];l+=h.x+","+h.y+" "}e.setAttribute("points",l);break;case "path":D=e.pathSegList;A=D.numberOfItems;k.d=Array(A);for(G=0;G<A;++G){z=D.getItem(G);k.d[G]={type:z.pathSegType,x:z.x,y:z.y,x1:z.x1,y1:z.y1,x2:z.x2,y2:z.y2,r1:z.r1,r2:z.r2,angle:z.angle,largeArcFlag:z.largeArcFlag,sweepFlag:z.sweepFlag}}A=
+k.d.length;G=k.d[0];m=N(G.x,G.y,l);k.d[0].x=m.x;k.d[0].y=m.y;for(G=1;G<A;++G){z=k.d[G];D=z.type;if(D%2==0){h=N(z.x!=undefined?z.x:m.x,z.y!=undefined?z.y:m.y,l);D=N(z.x1,z.y1,l);F=N(z.x2,z.y2,l);z.x=h.x;z.y=h.y;z.x1=D.x;z.y1=D.y;z.x2=F.x;z.y2=F.y}else{z.x=l.a*z.x;z.y=l.d*z.y;z.x1=l.a*z.x1;z.y1=l.d*z.y1;z.x2=l.a*z.x2;z.y2=l.d*z.y2}z.r1=l.a*z.r1;z.r2=l.d*z.r2}l="";A=k.d.length;for(G=0;G<A;++G){z=k.d[G];D=z.type;l+=Oa[D];switch(D){case 13:case 12:l+=z.x+" ";break;case 15:case 14:l+=z.y+" ";break;case 3:case 5:case 19:case 2:case 4:case 18:l+=
+z.x+","+z.y+" ";break;case 7:case 6:l+=z.x1+","+z.y1+" "+z.x2+","+z.y2+" "+z.x+","+z.y+" ";break;case 9:case 8:l+=z.x1+","+z.y1+" "+z.x+","+z.y+" ";break;case 11:case 10:l+=z.r1+","+z.r2+" "+z.angle+" "+ +z.largeArcFlag+" "+ +z.sweepFlag+" "+z.x+","+z.y+" ";break;case 17:case 16:l+=z.x2+","+z.y2+" "+z.x+","+z.y+" "}}e.setAttribute("d",l)}},nb=function(e,k,l){e=P(e).firstChild;var C=R(e),A=d.createSVGTransform();A.setTranslate(k,l);C.appendItem(A);Ra(e)},Ra=this.recalculateDimensions=function(e){if(e==
+null)return null;var k=R(e);if(k&&k.numberOfItems>0){for(var l=k.numberOfItems;l--;){var C=k.getItem(l);if(C.type===0)k.removeItem(l);else if(C.type===1)svgedit.math.isIdentity(C.matrix)&&k.removeItem(l);else C.type===4&&C.angle===0&&k.removeItem(l)}if(k.numberOfItems===1&&na(e))return null}if(!k||k.numberOfItems==0){e.removeAttribute("transform");return null}if(k){l=k.numberOfItems;for(var A=[];l--;){C=k.getItem(l);if(C.type===1)A.push([C.matrix,l]);else if(A.length)A=[]}if(A.length===2){l=d.createSVGTransformFromMatrix(ga(A[1][0],
+A[0][0]));k.removeItem(A[0][1]);k.removeItem(A[1][1]);k.insertItemBefore(l,A[1][1])}l=k.numberOfItems;if(l>=2&&k.getItem(l-2).type===1&&k.getItem(l-1).type===2){A=d.createSVGTransform();C=ga(k.getItem(l-2).matrix,k.getItem(l-1).matrix);A.setMatrix(C);k.removeItem(l-2);k.removeItem(l-2);k.appendItem(A)}}switch(e.tagName){case "line":case "polyline":case "polygon":case "path":break;default:if(k.numberOfItems===1&&k.getItem(0).type===1||k.numberOfItems===2&&k.getItem(0).type===1&&k.getItem(0).type===
+4)return null}var G=$(e).data("gsvg");l=new Da("Transform");var D={},z=null;C=[];switch(e.tagName){case "line":C=["x1","y1","x2","y2"];break;case "circle":C=["cx","cy","r"];break;case "ellipse":C=["cx","cy","rx","ry"];break;case "foreignObject":case "rect":case "image":C=["width","height","x","y"];break;case "use":case "text":case "tspan":C=["x","y"];break;case "polygon":case "polyline":z={};z.points=e.getAttribute("points");A=e.points;var F=A.numberOfItems;D.points=Array(F);for(var h=0;h<F;++h){var m=
+A.getItem(h);D.points[h]={x:m.x,y:m.y}}break;case "path":z={};z.d=e.getAttribute("d");D.d=e.getAttribute("d")}if(C.length){D=$(e).attr(C);$.each(D,function(Ca,Pa){D[Ca]=Ba(Ca,Pa)})}else if(G)D={x:$(G).attr("x")||0,y:$(G).attr("y")||0};if(z==null){z=$.extend(true,{},D);$.each(z,function(Ca,Pa){z[Ca]=Ba(Ca,Pa)})}z.transform=Sa?Sa:"";if(e.tagName=="g"&&!G||e.tagName=="a"){A=svgedit.utilities.getBBox(e);var o={x:A.x+A.width/2,y:A.y+A.height/2},u=N(A.x+A.width/2,A.y+A.height/2,Y(k).matrix);C=d.createSVGMatrix();
+if(A=na(e)){h=A*Math.PI/180;F=Math.abs(h)>1.0E-10?Math.sin(h)/(1-Math.cos(h)):2/h;for(h=0;h<k.numberOfItems;++h){C=k.getItem(h);if(C.type==4){C=C.matrix;o.y=(F*C.e+C.f)/2;o.x=(C.e-F*C.f)/2;k.removeItem(h);break}}}h=C=G=0;var E=k.numberOfItems;if(E)var H=k.getItem(0).matrix;if(E>=3&&k.getItem(E-2).type==3&&k.getItem(E-3).type==2&&k.getItem(E-1).type==2){h=3;var J=k.getItem(E-3).matrix,O=k.getItem(E-2).matrix,W=k.getItem(E-1).matrix;F=e.childNodes;for(m=F.length;m--;){var ba=F.item(m);C=G=0;if(ba.nodeType==
+1){var T=R(ba);if(T){C=Y(T).matrix;G=na(ba);var fa=Sa,ha=[];Sa=ba.getAttribute("transform");if(G||oa(T)){var X=d.createSVGTransform();X.setMatrix(ga(J,O,W,C));T.clear();T.appendItem(X);ha.push(X)}else{G=ga(C.inverse(),W,C);X=d.createSVGMatrix();X.e=-G.e;X.f=-G.f;C=ga(X.inverse(),C.inverse(),J,O,W,C,G.inverse());var qa=d.createSVGTransform(),ua=d.createSVGTransform(),Aa=d.createSVGTransform();qa.setTranslate(G.e,G.f);ua.setScale(C.a,C.d);Aa.setTranslate(X.e,X.f);T.appendItem(Aa);T.appendItem(ua);T.appendItem(qa);
+ha.push(Aa);ha.push(ua);ha.push(qa)}l.addSubCommand(Ra(ba));Sa=fa}}}k.removeItem(E-1);k.removeItem(E-2);k.removeItem(E-3)}else if(E>=3&&k.getItem(E-1).type==1){h=3;C=Y(k).matrix;X=d.createSVGTransform();X.setMatrix(C);k.clear();k.appendItem(X)}else if((E==1||E>1&&k.getItem(1).type!=3)&&k.getItem(0).type==2){h=2;G=Y(k).matrix;k.removeItem(0);C=Y(k).matrix.inverse();C=ga(C,G);G=C.e;C=C.f;if(G!=0||C!=0){F=e.childNodes;m=F.length;for(E=[];m--;){ba=F.item(m);if(ba.nodeType==1){if(ba.getAttribute("clip-path")){fa=
+ba.getAttribute("clip-path");if(E.indexOf(fa)===-1){nb(fa,G,C);E.push(fa)}}fa=Sa;Sa=ba.getAttribute("transform");if(T=R(ba)){J=d.createSVGTransform();J.setTranslate(G,C);T.numberOfItems?T.insertItemBefore(J,0):T.appendItem(J);l.addSubCommand(Ra(ba));T=e.getElementsByTagNameNS(b,"use");ba="#"+ba.id;for(J=T.length;J--;){O=T.item(J);if(ba==ca(O)){W=d.createSVGTransform();W.setTranslate(-G,-C);R(O).insertItemBefore(W,0);l.addSubCommand(Ra(O))}}Sa=fa}}}E=[];Sa=fa}}else if(E==1&&k.getItem(0).type==1&&!A){h=
+1;C=k.getItem(0).matrix;F=e.childNodes;for(m=F.length;m--;){ba=F.item(m);if(ba.nodeType==1){fa=Sa;Sa=ba.getAttribute("transform");if(T=R(ba)){G=ga(C,Y(T).matrix);E=d.createSVGTransform();E.setMatrix(G);T.clear();T.appendItem(E,0);l.addSubCommand(Ra(ba));Sa=fa;fa=ba.getAttribute("stroke-width");ba.getAttribute("stroke")!=="none"&&!isNaN(fa)&&ba.setAttribute("stroke-width",fa*((Math.abs(G.a)+Math.abs(G.d))/2))}}}k.clear()}else{if(A){o=d.createSVGTransform();o.setRotate(A,u.x,u.y);k.numberOfItems?k.insertItemBefore(o,
+0):k.appendItem(o)}k.numberOfItems==0&&e.removeAttribute("transform");return null}if(h==2){if(A){u={x:o.x+H.e,y:o.y+H.f};o=d.createSVGTransform();o.setRotate(A,u.x,u.y);k.numberOfItems?k.insertItemBefore(o,0):k.appendItem(o)}}else if(h==3){C=Y(k).matrix;H=d.createSVGTransform();H.setRotate(A,o.x,o.y);H=H.matrix;o=d.createSVGTransform();o.setRotate(A,u.x,u.y);u=o.matrix.inverse();fa=C.inverse();u=ga(fa,u,H,C);G=u.e;C=u.f;if(G!=0||C!=0){F=e.childNodes;for(m=F.length;m--;){ba=F.item(m);if(ba.nodeType==
+1){fa=Sa;Sa=ba.getAttribute("transform");T=R(ba);J=d.createSVGTransform();J.setTranslate(G,C);T.numberOfItems?T.insertItemBefore(J,0):T.appendItem(J);l.addSubCommand(Ra(ba));Sa=fa}}}if(A)k.numberOfItems?k.insertItemBefore(o,0):k.appendItem(o)}}else{A=svgedit.utilities.getBBox(e);if(!A&&e.tagName!="path")return null;C=d.createSVGMatrix();if(G=na(e)){o={x:A.x+A.width/2,y:A.y+A.height/2};u=N(A.x+A.width/2,A.y+A.height/2,Y(k).matrix);h=G*Math.PI/180;F=Math.abs(h)>1.0E-10?Math.sin(h)/(1-Math.cos(h)):2/
+h;for(h=0;h<k.numberOfItems;++h){C=k.getItem(h);if(C.type==4){C=C.matrix;o.y=(F*C.e+C.f)/2;o.x=(C.e-F*C.f)/2;k.removeItem(h);break}}}h=0;E=k.numberOfItems;if(!svgedit.browser.isWebkit())if((H=e.getAttribute("fill"))&&H.indexOf("url(")===0){H=P(H);fa="pattern";if(H.tagName!==fa)fa="gradient";if(H.getAttribute(fa+"Units")==="userSpaceOnUse"){C=Y(k).matrix;A=R(H);A=Y(A).matrix;C=ga(C,A);A="matrix("+[C.a,C.b,C.c,C.d,C.e,C.f].join(",")+")";H.setAttribute(fa+"Transform",A)}}if(E>=3&&k.getItem(E-2).type==
+3&&k.getItem(E-3).type==2&&k.getItem(E-1).type==2){h=3;C=Y(k,E-3,E-1).matrix;k.removeItem(E-1);k.removeItem(E-2);k.removeItem(E-3)}else if(E==4&&k.getItem(E-1).type==1){h=3;C=Y(k).matrix;X=d.createSVGTransform();X.setMatrix(C);k.clear();k.appendItem(X);C=d.createSVGMatrix()}else if((E==1||E>1&&k.getItem(1).type!=3)&&k.getItem(0).type==2){h=2;H=k.getItem(0).matrix;fa=Y(k,1).matrix;A=fa.inverse();C=ga(A,H,fa);k.removeItem(0)}else if(E==1&&k.getItem(0).type==1&&!G){C=Y(k).matrix;switch(e.tagName){case "line":D=
+$(e).attr(["x1","y1","x2","y2"]);case "polyline":case "polygon":D.points=e.getAttribute("points");if(D.points){A=e.points;F=A.numberOfItems;D.points=Array(F);for(h=0;h<F;++h){m=A.getItem(h);D.points[h]={x:m.x,y:m.y}}}case "path":D.d=e.getAttribute("d");h=1;k.clear()}}else{h=4;if(G){o=d.createSVGTransform();o.setRotate(G,u.x,u.y);k.numberOfItems?k.insertItemBefore(o,0):k.appendItem(o)}k.numberOfItems==0&&e.removeAttribute("transform");return null}if(h==1||h==2||h==3)Za(e,D,C);if(h==2){if(G){oa(k)||
+(u={x:o.x+C.e,y:o.y+C.f});o=d.createSVGTransform();o.setRotate(G,u.x,u.y);k.numberOfItems?k.insertItemBefore(o,0):k.appendItem(o)}}else if(h==3&&G){C=Y(k).matrix;H=d.createSVGTransform();H.setRotate(G,o.x,o.y);H=H.matrix;o=d.createSVGTransform();o.setRotate(G,u.x,u.y);u=o.matrix.inverse();fa=C.inverse();u=ga(fa,u,H,C);Za(e,D,u);if(G)k.numberOfItems?k.insertItemBefore(o,0):k.appendItem(o)}}k.numberOfItems==0&&e.removeAttribute("transform");l.addSubCommand(new Ma(e,z));return l},mb=null,xa=this.clearSelection=
+function(e){if(I[0]!=null)for(var k=I.length,l=0;l<k;++l){var C=I[l];if(C==null)break;ra.releaseSelector(C);I[l]=null}e||M("selected",I)},qb=this.addToSelection=function(e,k){if(e.length!=0){for(var l=0;l<I.length;){if(I[l]==null)break;++l}for(var C=e.length;C--;){var A=e[C];if(A&&svgedit.utilities.getBBox(A)){if(A.tagName==="a"&&A.childNodes.length===1)A=A.firstChild;if(I.indexOf(A)==-1){I[l]=A;l++;A=ra.requestSelector(A);I.length>1&&A.showGrips(false)}}}M("selected",I);k||I.length==1?ra.requestSelector(I[0]).showGrips(true):
+ra.requestSelector(I[0]).showGrips(false);for(I.sort(function(G,D){if(G&&D&&G.compareDocumentPosition)return 3-(D.compareDocumentPosition(G)&6);else if(G==null)return 1});I[0]==null;)I.shift(0)}},rb=this.selectOnly=function(e,k){xa(true);qb(e,k)};this.removeFromSelection=function(e){if(I[0]!=null)if(e.length!=0){var k=Array(I.length);j=0;len=I.length;for(var l=0;l<len;++l){var C=I[l];if(C)if(e.indexOf(C)==-1){k[j]=C;j++}else ra.releaseSelector(C)}I=k}};this.selectAllInCurrentLayer=function(){var e=
+B().getCurrentLayer();if(e){Ha="select";rb($(L||e).children())}};var Bb=this.getMouseTarget=function(e){if(e==null||e.target==null)return null;e=e.target;if(e.correspondingUseElement)e=e.correspondingUseElement;if(["http://www.w3.org/1998/Math/MathML","http://www.w3.org/1999/xhtml"].indexOf(e.namespaceURI)>=0&&e.id!="svgcanvas")for(;e.nodeName!="foreignObject";){e=e.parentNode;if(!e)return d}var k=B().getCurrentLayer();if([d,a,n,k].indexOf(e)>=0)return d;if($(e).closest("#selectorParentGroup").length)return ra.selectorParentGroup;
+for(;e.parentNode&&e.parentNode!==(L||k);)e=e.parentNode;return e};(function(){var e=null,k=null,l=null,C=null,A=null,G={},D={minx:null,miny:null,maxx:null,maxy:null};$(a).mousedown(function(z){if(!c.spaceKey){var F=z.button===2;mb=n.getScreenCTM().inverse();isBotchedZoom=svgedit.browser.isGecko();var h=N(z.pageX,z.pageY,mb),m=h.x*(isBotchedZoom?1:q);h=h.y*(isBotchedZoom?1:q);z.preventDefault();if(F)Ha="select";m=m/q;h=h/q;var o=Bb(z);if(o.tagName==="a"&&o.childNodes.length===1)o=o.firstChild;var u=
+C=k=m,E=A=l=h;if(p.gridSnapping){m=va(m);h=va(h);k=va(k);l=va(l)}if(o==ra.selectorParentGroup&&I[0]!=null){o=z.target;var H=cb(o,"type");if(H=="rotate"){Ha="rotate";current_rotate_mode=cb(o,"dir")}else if(H=="resize"){Ha="resize";db=cb(o,"dir")}o=I[0]}Sa=o.getAttribute("transform");H=R(o);switch(Ha){case "select":Ka=true;db="none";if(F)Ka=false;if(o!=d){if(I.indexOf(o)==-1){z.shiftKey||xa(true);qb([o]);wb=o;La.clear()}if(!F)for(F=0;F<I.length;++F)if(I[F]!=null){var J=R(I[F]);J.numberOfItems?J.insertItemBefore(d.createSVGTransform(),
+0):J.appendItem(d.createSVGTransform())}}else if(!F){xa();Ha="multiselect";if(sa==null)sa=ra.getRubberBandBox();C*=q;A*=q;ma(sa,{x:C,y:A,width:0,height:0,display:"inline"},100)}break;case "zoom":Ka=true;if(sa==null)sa=ra.getRubberBandBox();ma(sa,{x:u*q,y:u*q,width:0,height:0,display:"inline"},100);break;case "resize":Ka=true;k=m;l=h;G=svgedit.utilities.getBBox($("#selectedBox0")[0]);var O={};$.each(G,function(W,ba){O[W]=ba/q});G=O;F=na(o)?1:0;if(oa(H)){H.insertItemBefore(d.createSVGTransform(),F);
+H.insertItemBefore(d.createSVGTransform(),F);H.insertItemBefore(d.createSVGTransform(),F)}else{H.appendItem(d.createSVGTransform());H.appendItem(d.createSVGTransform());H.appendItem(d.createSVGTransform());if(svgedit.browser.supportsNonScalingStroke()){if(m=svgedit.browser.isWebkit())J=function(W){var ba=W.getAttributeNS(null,"stroke");W.removeAttributeNS(null,"stroke");setTimeout(function(){W.setAttributeNS(null,"stroke",ba)},0)};o.style.vectorEffect="non-scaling-stroke";m&&J(o);h=o.getElementsByTagName("*");
+u=h.length;for(F=0;F<u;F++){h[F].style.vectorEffect="non-scaling-stroke";m&&J(h[F])}}}break;case "fhellipse":case "fhrect":case "fhpath":Ka=true;e=u+","+E+" ";J=K.stroke_width==0?1:K.stroke_width;S({element:"polyline",curStyles:true,attr:{points:e,id:ka(),fill:"none",opacity:K.opacity/2,"stroke-linecap":"round",style:"pointer-events:none"}});D.minx=u;D.maxx=u;D.miny=E;D.maxy=E;break;case "image":Ka=true;J=S({element:"image",attr:{x:m,y:h,width:0,height:0,id:ka(),opacity:K.opacity/2,style:"pointer-events:inherit"}});
+U(J,Ga);Fb(J);break;case "square":case "rect":Ka=true;k=m;l=h;S({element:"rect",curStyles:true,attr:{x:m,y:h,width:0,height:0,id:ka(),opacity:K.opacity/2}});break;case "line":Ka=true;J=K.stroke_width==0?1:K.stroke_width;S({element:"line",curStyles:true,attr:{x1:m,y1:h,x2:m,y2:h,id:ka(),stroke:K.stroke,"stroke-width":J,"stroke-dasharray":K.stroke_dasharray,"stroke-linejoin":K.stroke_linejoin,"stroke-linecap":K.stroke_linecap,"stroke-opacity":K.stroke_opacity,fill:"none",opacity:K.opacity/2,style:"pointer-events:none"}});
+break;case "circle":Ka=true;S({element:"circle",curStyles:true,attr:{cx:m,cy:h,r:0,id:ka(),opacity:K.opacity/2}});break;case "ellipse":Ka=true;S({element:"ellipse",curStyles:true,attr:{cx:m,cy:h,rx:0,ry:0,id:ka(),opacity:K.opacity/2}});break;case "text":Ka=true;S({element:"text",curStyles:true,attr:{x:m,y:h,id:ka(),fill:Ua.fill,"stroke-width":Ua.stroke_width,"font-size":Ua.font_size,"font-family":Ua.font_family,"text-anchor":"left","xml:space":"preserve",opacity:K.opacity}});break;case "path":case "pathedit":k*=
+q;l*=q;La.mouseDown(z,o,k,l);Ka=true;break;case "textedit":k*=q;l*=q;bb.mouseDown(z,o,k,l);Ka=true;break;case "rotate":Ka=true;c.undoMgr.beginUndoableChange("transform",I);document.getElementById("workarea").className="rotate"}J=ib("mouseDown",{event:z,start_x:k,start_y:l,selectedElements:I},true);$.each(J,function(W,ba){if(ba&&ba.started)Ka=true});if(Ha)document.getElementById("workarea").className=Ha=="resize"?z.target.style.cursor:Ha}}).mousemove(function(z){if(!(z.originalEvent.touches&&z.originalEvent.touches.length>
+1))if(Ka)if(!(z.button===1||c.spaceKey)){var F=I[0],h=N(z.pageX,z.pageY,mb),m=h.x*(isBotchedZoom?1:q);h=h.y*(isBotchedZoom?1:q);var o=pa(aa()),u=x=m/q,E=y=h/q;if(p.gridSnapping){x=va(x);y=va(y)}z.preventDefault();switch(Ha){case "select":if(I[0]!==null){u=x-k;var H=y-l;if(p.gridSnapping){u=va(u);H=va(H)}if(z.shiftKey){var J=V(k,l,x,y);x=J.x;y=J.y}if(u!=0||H!=0){E=I.length;for(var O=0;O<E;++O){F=I[O];if(F==null)break;var W=d.createSVGTransform();o=R(F);if(J){u=J.x-k;H=J.y-l}W.setTranslate(u,H);o.numberOfItems?
+o.replaceItem(W,0):o.appendItem(W);ra.requestSelector(F).resize()}if(z.altKey)if(!c.addClones){c.addClones=c.cloneSelectedElements(0,0,W);c.removeClones=function(){c.addClones&&c.addClones.forEach(function(ua){ua.parentNode&&ua.parentNode.removeChild(ua);c.addClones=false})};window.addEventListener("keyup",c.removeClones)}M("transition",I)}}break;case "multiselect":u*=q;E*=q;ma(sa,{x:Math.min(C,u),y:Math.min(A,E),width:Math.abs(u-C),height:Math.abs(E-A)},100);o=[];u=[];J=ob();E=I.length;for(O=0;O<
+E;++O){H=J.indexOf(I[O]);if(H==-1)o.push(I[O]);else J[H]=null}E=J.length;for(O=0;O<E;++O)J[O]&&u.push(J[O]);o.length>0&&c.removeFromSelection(o);u.length>0&&qb(u);break;case "resize":o=R(F);u=(J=oa(o))?G:svgedit.utilities.getBBox(F);E=u.x;O=u.y;var ba=u.width,T=u.height;u=x-k;H=y-l;if(p.gridSnapping){u=va(u);H=va(H);T=va(T);ba=va(ba)}if(W=na(F)){var fa=Math.sqrt(u*u+H*H);H=Math.atan2(H,u)-W*Math.PI/180;u=fa*Math.cos(H);H=fa*Math.sin(H)}if(db.indexOf("n")==-1&&db.indexOf("s")==-1)H=0;if(db.indexOf("e")==
+-1&&db.indexOf("w")==-1)u=0;var ha=fa=0,X=T?(T+H)/T:1,qa=ba?(ba+u)/ba:1;if(db.indexOf("n")>=0){X=T?(T-H)/T:1;ha=T}if(db.indexOf("w")>=0){qa=ba?(ba-u)/ba:1;fa=ba}u=d.createSVGTransform();H=d.createSVGTransform();ba=d.createSVGTransform();if(p.gridSnapping){E=va(E);fa=va(fa);O=va(O);ha=va(ha)}u.setTranslate(-(E+fa),-(O+ha));if(z.shiftKey)if(qa==1)qa=X;else X=qa;H.setScale(qa,X);ba.setTranslate(E+fa,O+ha);if(J){J=W?1:0;o.replaceItem(u,2+J);o.replaceItem(H,1+J);o.replaceItem(ba,0+J)}else{J=o.numberOfItems;
+o.replaceItem(ba,J-3);o.replaceItem(H,J-2);o.replaceItem(u,J-1)}ra.requestSelector(F).resize();M("transition",I);break;case "zoom":u*=q;E*=q;ma(sa,{x:Math.min(C*q,u),y:Math.min(A*q,E),width:Math.abs(u-C*q),height:Math.abs(E-A*q)},100);break;case "text":ma(o,{x:x,y:y},1E3);break;case "line":u=null;window.opera||d.suspendRedraw(1E3);if(p.gridSnapping){x=va(x);y=va(y)}E=x;J=y;if(z.shiftKey){J=V(k,l,E,J);E=J.x;J=J.y}o.setAttributeNS(null,"x2",E);o.setAttributeNS(null,"y2",J);window.opera||d.unsuspendRedraw(u);
+break;case "foreignObject":case "square":case "rect":case "image":u=Math.abs(x-k);J=Math.abs(y-l);if(Ha=="square"||z.shiftKey){u=J=Math.max(u,J);E=k<x?k:k-u;O=l<y?l:l-J}else{E=Math.min(k,x);O=Math.min(l,y)}if(z.altKey){u*=2;J*=2;E=k-u/2;O=l-J/2}if(p.gridSnapping){u=va(u);J=va(J);E=va(E);O=va(O)}ma(o,{width:u,height:J,x:E,y:O},1E3);break;case "circle":u=$(o).attr(["cx","cy"]);J=u.cx;E=u.cy;u=Math.sqrt((x-J)*(x-J)+(y-E)*(y-E));if(p.gridSnapping)u=va(u);o.setAttributeNS(null,"r",u);break;case "ellipse":u=
+$(o).attr(["cx","cy"]);J=Math.abs(k+(x-k)/2);E=Math.abs(l+(y-l)/2);u=null;window.opera||d.suspendRedraw(1E3);if(p.gridSnapping){x=va(x);J=va(J);y=va(y);E=va(E)}O=Math.abs(k-J);H=Math.abs(l-E);if(z.shiftKey){H=O;E=y>l?l+O:l-O}if(z.altKey){J=k;E=l;O=Math.abs(x-J);H=z.shiftKey?O:Math.abs(y-E)}o.setAttributeNS(null,"rx",O);o.setAttributeNS(null,"ry",H);o.setAttributeNS(null,"cx",J);o.setAttributeNS(null,"cy",E);window.opera||d.unsuspendRedraw(u);break;case "fhellipse":case "fhrect":D.minx=Math.min(u,
+D.minx);D.maxx=Math.max(u,D.maxx);D.miny=Math.min(E,D.miny);D.maxy=Math.max(E,D.maxy);case "fhpath":e+=+u+","+E+" ";o.setAttributeNS(null,"points",e);break;case "path":case "pathedit":x*=q;y*=q;if(p.gridSnapping){x=va(x);y=va(y);k=va(k);l=va(l)}if(z.shiftKey){if(J=svgedit.path.path){o=J.dragging?J.dragging[0]:k;J=J.dragging?J.dragging[1]:l}else{o=k;J=l}J=V(o,J,x,y);x=J.x;y=J.y}if(sa&&sa.getAttribute("display")!=="none"){u*=q;E*=q;ma(sa,{x:Math.min(C*q,u),y:Math.min(A*q,E),width:Math.abs(u-C*q),height:Math.abs(E-
+A*q)},100)}La.mouseMove(z,x,y);break;case "textedit":x*=q;y*=q;bb.mouseMove(m,h);break;case "rotate":u=svgedit.utilities.getBBox(F);J=u.x+u.width/2;E=u.y+u.height/2;o=ea(F);o=N(J,E,o);J=o.x;E=o.y;o=u.x;O=u.y;if(current_rotate_mode=="nw")o=u.x+u.width;if(current_rotate_mode=="se")O=u.y+u.height;if(current_rotate_mode=="sw"){o=u.x+u.width;O=u.y+u.height}compensation_angle=(Math.atan2(E-O,J-o)*(180/Math.PI)-90)%360;W=(Math.atan2(E-y,J-x)*(180/Math.PI)-90)%360;W+=compensation_angle;if(p.gridSnapping)W=
+va(W);if(z.shiftKey)W=Math.round(W/45)*45;c.setRotationAngle(W<-180?360+W:W,true);M("transition",I)}ib("mouseMove",{event:z,mouse_x:m,mouse_y:h,selected:F})}}).click(function(z){z.preventDefault();return false}).dblclick(function(z){var F=z.target.parentNode,h=Bb(z),m=h.tagName;if(F!==L){if(m==="text"&&Ha!=="textedit"){z=N(z.pageX,z.pageY,mb);bb.select(h,z.x,z.y)}if((m==="g"||m==="a")&&na(h)){Db(h);h=I[0];xa(true)}L&&Eb();F.tagName!=="g"&&F.tagName!=="a"||F===B().getCurrentLayer()||h===ra.selectorParentGroup||
+Kb(h)}}).mouseup(function(z){c.addClones=false;window.removeEventListener("keyup",c.removeClones);I=I.filter(Boolean);if(z.button!==2){var F=wb;wb=null;if(Ka){var h=N(z.pageX,z.pageY,mb),m=h.x*q;h=h.y*q;var o=m/q,u=h/q,E=pa(aa()),H=false;Ka=false;switch(Ha){case "resize":case "multiselect":if(sa!=null){sa.setAttribute("display","none");hb=[]}Ha="select";case "select":if(I[0]!=null){if(I.length==1){m=I[0];switch(m.tagName){case "g":case "use":case "image":case "foreignObject":break;default:Xa.fill=
+m.getAttribute("fill");Xa.fill_opacity=m.getAttribute("fill-opacity");Xa.stroke=m.getAttribute("stroke");Xa.stroke_opacity=m.getAttribute("stroke-opacity");Xa.stroke_width=m.getAttribute("stroke-width");Xa.stroke_dasharray=m.getAttribute("stroke-dasharray");Xa.stroke_linejoin=m.getAttribute("stroke-linejoin");Xa.stroke_linecap=m.getAttribute("stroke-linecap")}if(m.tagName=="text"){Ua.font_size=m.getAttribute("font-size");Ua.font_family=m.getAttribute("font-family")}ra.requestSelector(m).showGrips(true)}Ea();
+C=(m=svgedit.browser.isGecko())?C*q:C;A=m?A*q:A;m=Math.abs(u-A);if(m>1||m>1){z=I.length;for(m=0;m<z;++m){if(I[m]==null)break;I[m].firstChild||ra.requestSelector(I[m]).resize()}}else{m=z.target;if(I[0].nodeName==="path"&&I[1]==null)La.select(I[0]);else z.shiftKey&&F!=m&&c.removeFromSelection([m])}if(svgedit.browser.supportsNonScalingStroke())if(z=I[0]){z.removeAttribute("style");svgedit.utilities.walkTree(z,function(W){W.removeAttribute("style")})}}return;case "zoom":sa!=null&&sa.setAttribute("display",
+"none");M("zoomed",{x:Math.min(C,o),y:Math.min(A,u),width:Math.abs(o-C),height:Math.abs(u-A),factor:z.altKey?0.5:2});return;case "fhpath":F=E.getAttribute("points");u=F.indexOf(",");if(H=u>=0?F.indexOf(",",u+1)>=0:F.indexOf(" ",F.indexOf(" ")+1)>=0)E=La.smoothPolylineIntoPath(E);break;case "line":F=$(E).attr(["x1","x2","y1","y2"]);H=F.x1!=F.x2||F.y1!=F.y2;break;case "foreignObject":case "square":case "rect":case "image":F=$(E).attr(["width","height"]);H=F.width!=0||F.height!=0||Ha==="image";break;
+case "circle":H=E.getAttribute("r")!=0;break;case "ellipse":F=$(E).attr(["rx","ry"]);H=F.rx!=null||F.ry!=null;break;case "fhellipse":if(D.maxx-D.minx>0&&D.maxy-D.miny>0){E=S({element:"ellipse",curStyles:true,attr:{cx:(D.minx+D.maxx)/2,cy:(D.miny+D.maxy)/2,rx:(D.maxx-D.minx)/2,ry:(D.maxy-D.miny)/2,id:aa()}});M("changed",[E]);H=true}break;case "fhrect":if(D.maxx-D.minx>0&&D.maxy-D.miny>0){E=S({element:"rect",curStyles:true,attr:{x:D.minx,y:D.miny,width:D.maxx-D.minx,height:D.maxy-D.miny,id:aa()}});
+M("changed",[E]);H=true}break;case "text":H=true;rb([E]);bb.start(E);break;case "path":E=null;Ka=true;F=La.mouseUp(z,E,m,h);E=F.element;H=F.keep;break;case "pathedit":H=true;E=null;La.mouseUp(z);break;case "textedit":H=false;E=null;bb.mouseUp(z,m,h);break;case "rotate":H=true;E=null;Ha="select";F=c.undoMgr.finishUndoableChange();F.isEmpty()||wa(F);Ea();M("changed",I)}m=ib("mouseUp",{event:z,mouse_x:m,mouse_y:h},true);$.each(m,function(W,ba){if(ba){H=ba.keep||H;E=ba.element;Ka=ba.started||Ka}});if(!H&&
+E!=null){B().releaseId(aa());E.parentNode.removeChild(E);E=null;for(m=z.target;m.parentNode.parentNode.tagName=="g";)m=m.parentNode;if((Ha!="path"||!drawn_path)&&m.parentNode.id!="selectorParentGroup"&&m.id!="svgcanvas"&&m.id!="svgroot"){c.setMode("select");rb([m],true)}}else if(E!=null){c.addedNew=true;z=0.2;var J;if(false.beginElement&&E.getAttribute("opacity")!=K.opacity){J=$(false).clone().attr({to:K.opacity,dur:z}).appendTo(E);try{J[0].beginElement()}catch(O){}}else z=0;setTimeout(function(){J&&
+J.remove();E.setAttribute("opacity",K.opacity);E.setAttribute("style","pointer-events:inherit");la(E);if(Ha==="path")La.toEditMode(E);else p.selectNew&&rb([E],true);wa(new Ia(E));M("changed",[E])},z*1E3)}Sa=null}}});$(a).bind("mousewheel DOMMouseScroll",function(z){if(z.shiftKey){z.preventDefault();mb=n.getScreenCTM().inverse();var F=N(z.pageX,z.pageY,mb);F={x:F.x,y:F.y,width:0,height:0};if(z.wheelDelta)if(z.wheelDelta>=120)F.factor=2;else{if(z.wheelDelta<=-120)F.factor=0.5}else if(z.detail)if(z.detail>
+0)F.factor=0.5;else if(z.detail<0)F.factor=2;F.factor&&M("zoomed",F)}})})();var Fb=function(e){$(e).click(function(k){k.preventDefault()})},bb=c.textActions=function(){function e(T){var fa=h.value==="";$(h).focus();if(!arguments.length)if(fa)T=0;else{if(h.selectionEnd!==h.selectionStart)return;T=h.selectionEnd}var ha;ha=E[T];fa||h.setSelectionRange(T,T);m=pa("text_cursor");if(!m){m=document.createElementNS(b,"line");ma(m,{id:"text_cursor",stroke:"#333","stroke-width":1});m=pa("selectorParentGroup").appendChild(m)}u||
+(u=setInterval(function(){var X=m.getAttribute("display")==="none";m.setAttribute("display",X?"inline":"none")},600));fa=G(ha.x,H.y);ha=G(ha.x,H.y+H.height);ma(m,{x1:fa.x,y1:fa.y,x2:ha.x,y2:ha.y,visibility:"visible",display:"inline"});o&&o.setAttribute("d","M 0 0")}function k(T,fa,ha){if(T===fa)e(fa);else{ha||h.setSelectionRange(T,fa);o=pa("text_selectblock");if(!o){o=document.createElementNS(b,"path");ma(o,{id:"text_selectblock",fill:"green",opacity:0.5,style:"pointer-events:none"});pa("selectorParentGroup").appendChild(o)}T=
+E[T];var X=E[fa];m.setAttribute("visibility","hidden");fa=G(T.x,H.y);ha=G(T.x+(X.x-T.x),H.y);var qa=G(T.x,H.y+H.height);T=G(T.x+(X.x-T.x),H.y+H.height);ma(o,{d:"M"+fa.x+","+fa.y+" L"+ha.x+","+ha.y+" "+T.x+","+T.y+" "+qa.x+","+qa.y+"z",display:"inline"})}}function l(T,fa){var ha=d.createSVGPoint();ha.x=T;ha.y=fa;if(E.length==1)return 0;ha=F.getCharNumAtPosition(ha);if(ha<0){ha=E.length-2;if(T<=E[0].x)ha=0}else if(ha>=E.length-2)ha=E.length-2;var X=E[ha];T>X.x+X.width/2&&ha++;return ha}function C(T,
+fa,ha){var X=h.selectionStart;T=l(T,fa);k(Math.min(X,T),Math.max(X,T),!ha)}function A(T,fa){var ha={x:T,y:fa};ha.x/=q;ha.y/=q;if(J){var X=N(ha.x,ha.y,J.inverse());ha.x=X.x;ha.y=X.y}return ha}function G(T,fa){var ha={x:T,y:fa};if(J){var X=N(ha.x,ha.y,J);ha.x=X.x;ha.y=X.y}ha.x*=q;ha.y*=q;return ha}function D(T){k(0,F.textContent.length);$(this).unbind(T)}function z(T){if(ba&&F){var fa=N(T.pageX,T.pageY,mb);fa=A(fa.x*q,fa.y*q);fa=l(fa.x,fa.y);var ha=F.textContent,X=ha.substr(0,fa).replace(/[a-z0-9]+$/i,
+"").length;ha=ha.substr(fa).match(/^[a-z0-9]+/i);k(X,(ha?ha[0].length:0)+fa);$(T.target).click(D);setTimeout(function(){$(T.target).unbind("click",D)},300)}}var F,h,m,o,u,E=[],H,J,O,W,ba;return{select:function(T,fa,ha){F=T;bb.toEditMode(fa,ha)},start:function(T){F=T;bb.toEditMode()},mouseDown:function(T,fa,ha,X){T=A(ha,X);h.focus();e(l(T.x,T.y));O=ha;W=X},mouseMove:function(T,fa){var ha=A(T,fa);C(ha.x,ha.y)},mouseUp:function(T,fa,ha){var X=A(fa,ha);C(X.x,X.y,true);T.target!==F&&fa<O+2&&fa>O-2&&ha<
+W+2&&ha>W-2&&bb.toSelectMode(true)},setCursor:e,toEditMode:function(T,fa){rb([F],false);ba=false;Ha="textedit";ra.requestSelector(F).showGrips(false);ra.requestSelector(F);bb.init();$(F).css("cursor","text");if(arguments.length){var ha=A(T,fa);e(l(ha.x,ha.y))}else e();setTimeout(function(){ba=true},300)},toSelectMode:function(T){Ha="select";clearInterval(u);u=null;o&&$(o).attr("display","none");m&&$(m).attr("visibility","hidden");$(F).css("cursor","move");if(T){xa();$(F).css("cursor","move");M("selected",
+[F]);qb([F],true)}F&&!F.textContent.length&&c.deleteSelectedElements();$(h).blur();F=false},setInputElem:function(T){h=T},clear:function(){Ha=="textedit"&&bb.toSelectMode()},init:function(){if(F){if(!F.parentNode){F=I[0];ra.requestSelector(F).showGrips(false)}var T=F.textContent.length,fa=F.getAttribute("transform");H=svgedit.utilities.getBBox(F);J=fa?ea(F):null;E=Array(T);h.focus();$(F).unbind("dblclick",z).dblclick(z);if(!T)var ha={x:H.x+H.width/2,width:0};for(fa=0;fa<T;fa++){var X=F.getStartPositionOfChar(fa);
+ha=F.getEndPositionOfChar(fa);if(!svgedit.browser.supportsGoodTextCharPos()){var qa=c.contentW*q;X.x-=qa;ha.x-=qa;X.x/=q;ha.x/=q}E[fa]={x:X.x,y:H.y,width:ha.x-X.x,height:H.height}}E.push({x:ha.x,width:0});k(h.selectionStart,h.selectionEnd,true)}}}}(),La=c.pathActions=function(){var e=false,k,l,C;svgedit.path.Path.prototype.endChanges=function(D){if(svgedit.browser.isWebkit()){var z=this.elem;z.setAttribute("d",La.convertPath(z))}D=new Ma(this.elem,{d:this.last_d},D);wa(D);M("changed",[this.elem])};
+svgedit.path.Path.prototype.addPtsToSelection=function(D){$.isArray(D)||(D=[D]);for(var z=0;z<D.length;z++){var F=D[z],h=this.segs[F];h.ptgrip&&this.selected_pts.indexOf(F)==-1&&F>=0&&this.selected_pts.push(F)}this.selected_pts.sort();z=this.selected_pts.length;for(D=Array(z);z--;){h=this.segs[this.selected_pts[z]];h.select(true);D[z]=h.ptgrip}La.canDeleteNodes=true;La.closed_subpath=this.subpathIsClosed(this.selected_pts[0]);M("selected",D)};var A=k=null,G=false;this.lastCtrlPoint=[0,0];return{mouseDown:function(D,
+z,F,h){if(Ha==="path"){mouse_x=F;mouse_y=h;F=mouse_x/q;z=mouse_y/q;h=pa("path_stretch_line");l=[F,z];if(p.gridSnapping){F=va(F);z=va(z);mouse_x=va(mouse_x);mouse_y=va(mouse_y)}if(!h){h=document.createElementNS(b,"path");ma(h,{id:"path_stretch_line",stroke:"#22C","stroke-width":"0.5",fill:"none"});h=pa("selectorParentGroup").appendChild(h)}h.setAttribute("display","inline");this.stretchy=h;var m=null;if(A){m=A.pathSegList;for(var o=m.numberOfItems,u=6/q,E=false;o;){o--;var H=m.getItem(o),J=H.x;H=H.y;
+if(F>=J-u&&F<=J+u&&z>=H-u&&z<=H+u){E=true;break}}u=aa();svgedit.path.removePath_(u);u=pa(u);J=m.numberOfItems;if(E){if(o<=1&&J>=2){F=m.getItem(0).x;z=m.getItem(0).y;o=svgedit.path.first_grip?svgedit.path.first_grip[0]/q:m.getItem(0).x;E=svgedit.path.first_grip?svgedit.path.first_grip[1]/q:m.getItem(0).y;D=h.pathSegList.getItem(1);D=D.pathSegType===4?A.createSVGPathSegLinetoAbs(F,z):A.createSVGPathSegCurvetoCubicAbs(F,z,D.x1/q,D.y1/q,o,E);F=A.createSVGPathSegClosePath();m.appendItem(D);m.appendItem(F)}else if(J<
+3)return m=false;$(h).remove();element=u;A=null;Ka=false;if(e){svgedit.path.path.matrix&&Za(u,{},svgedit.path.path.matrix.inverse());F=u.getAttribute("d");h=$(svgedit.path.path.elem).attr("d");$(svgedit.path.path.elem).attr("d",h+F);$(u).remove();svgedit.path.path.matrix&&svgedit.path.recalcRotatedPath();svgedit.path.path.init();La.toEditMode(svgedit.path.path.elem);svgedit.path.path.selectPt();return false}}else{if(!$.contains(a,Bb(D))){console.log("Clicked outside canvas");return false}m=A.pathSegList.numberOfItems;
+o=A.pathSegList.getItem(m-1);u=o.x;o=o.y;if(D.shiftKey){z=V(u,o,F,z);F=z.x;z=z.y}D=h.pathSegList.getItem(1);D=D.pathSegType===4?A.createSVGPathSegLinetoAbs(ab(F),ab(z)):A.createSVGPathSegCurvetoCubicAbs(ab(F),ab(z),D.x1/q,D.y1/q,D.x2/q,D.y2/q);A.pathSegList.appendItem(D);F*=q;z*=q;h.setAttribute("d",["M",F,z,F,z].join(" "));h=svgedit.path.addCtrlGrip("1c1");D=svgedit.path.addCtrlGrip("0c2");u=svgedit.path.getCtrlLine(1);o=svgedit.path.getCtrlLine(2);h.setAttribute("cx",F);h.setAttribute("cy",z);D.setAttribute("cx",
+F);D.setAttribute("cy",z);u.setAttribute("x1",F);u.setAttribute("x2",F);u.setAttribute("y1",z);u.setAttribute("y2",z);o.setAttribute("x1",F);o.setAttribute("x2",F);o.setAttribute("y1",z);o.setAttribute("y2",z);h=m;if(e)h+=svgedit.path.path.segs.length;svgedit.path.addPointGrip(h,F,z)}m=true}else{d_attr="M"+F+","+z+" ";A=S({element:"path",curStyles:true,attr:{d:d_attr,id:ka(),opacity:K.opacity/2}});h.setAttribute("d",["M",mouse_x,mouse_y,mouse_x,mouse_y].join(" "));h=e?svgedit.path.path.segs.length:
+0;svgedit.path.addPointGrip(h,mouse_x,mouse_y);svgedit.path.first_grip=null}}else if(svgedit.path.path){svgedit.path.path.storeD();u=D.target.id;if(u.substr(0,14)=="pathpointgrip_"){z=svgedit.path.path.cur_pt=parseInt(u.substr(14));svgedit.path.path.dragging=[F,h];u=svgedit.path.path.segs[z];if(D.shiftKey)u.selected?svgedit.path.path.removePtFromSelection(z):svgedit.path.path.addPtsToSelection(z);else{if(svgedit.path.path.selected_pts.length<=1||!u.selected)svgedit.path.path.clearSelection();svgedit.path.path.addPtsToSelection(z)}}else if(u.indexOf("ctrlpointgrip_")==
+0){svgedit.path.path.dragging=[F,h];D=u.split("_")[1].split("c");z=D[0]-0;m=D=D[1]-0;o=svgedit.path.path.segs[z];svgedit.path.path.selectPt(z,D);if(m==2){E=1;u=o.next}else{E=2;u=o.prev}if(!u)return;D=function(O,W){return Math.sqrt(Math.pow(O.x-W.x,2)+Math.pow(O.y-W.y,2))};z={x:o.item["x"+m],y:o.item["y"+m]};m=m==2?{x:o.item.x,y:o.item.y}:{x:u.item.x,y:u.item.y};o={x:u.item["x"+E],y:u.item["y"+E]};u=D(z,m);D=D(o,m);z=Math.abs(Math.round(Math.atan2(z.y-m.y,z.x-m.x)*(180/Math.PI),0)-Math.round(Math.atan2(o.y-
+m.y,o.x-m.x)*(180/Math.PI),0))==180;if(Math.abs(u-D)<5&&z){svgedit.path.setLinkControlPoints(true);svgedit.path.is_linked=true}else{svgedit.path.setLinkControlPoints(false);svgedit.path.is_linked=false}}if(!svgedit.path.path.dragging){if(sa==null)sa=ra.getRubberBandBox();ma(sa,{x:F*q,y:h*q,width:0,height:0,display:"inline"},100)}}},mouseMove:function(D,z,F){G=true;var h=!D.altKey;if(Ha==="path"){if(A){var m=A.pathSegList,o=m.numberOfItems-1,u=svgedit.path.addCtrlGrip("1c1"),E=svgedit.path.addCtrlGrip("0c2");
+if(l){var H=E.getAttribute("cx")/q||0,J=E.getAttribute("cy")/q||0;u.setAttribute("cx",z);u.setAttribute("cy",F);u.setAttribute("display","inline");D=l[0];u=l[1];m.getItem(o);var O=z/q,W=F/q;H=h?D+(D-O):H;h=h?u+(u-W):J;E.setAttribute("cx",H*q);E.setAttribute("cy",h*q);E.setAttribute("display","inline");E=svgedit.path.getCtrlLine(1);J=svgedit.path.getCtrlLine(2);ma(E,{x1:z,y1:F,x2:D*q,y2:u*q,display:"inline"});ma(J,{x1:H*q,y1:h*q,x2:D*q,y2:u*q,display:"inline"});if(o===0)C=[z,F];else{m=m.getItem(o-
+1);z=m.x;F=m.y;if(m.pathSegType===6){z+=z-m.x2;F+=F-m.y2}else if(C){z=C[0]/q;F=C[1]/q}svgedit.path.replacePathSeg(6,o,[D,u,this.lastCtrlPoint[0]/q,this.lastCtrlPoint[1]/q,H,h],A)}}else if(h=this.stretchy){o=m.getItem(o);m=z;u=F;if(D.target.id==="pathpointgrip_0"&&svgedit.path.first_grip){m=svgedit.path.first_grip[0];u=svgedit.path.first_grip[1]}if(o.pathSegType===6)svgedit.path.replacePathSeg(6,1,[z,F,(this.lastCtrlPoint[0]/q||o.x+(o.x-o.x2))*q,(this.lastCtrlPoint[1]/q||o.y+(o.y-o.y2))*q,m,u],h);
+else C?svgedit.path.replacePathSeg(6,1,[z,F,C[0],C[1],z,F],h):svgedit.path.replacePathSeg(4,1,[z,F],h)}}}else if(svgedit.path.path.dragging){m=svgedit.path.getPointFromGrip({x:svgedit.path.path.dragging[0],y:svgedit.path.path.dragging[1]},svgedit.path.path);D=svgedit.path.getPointFromGrip({x:z,y:F},svgedit.path.path);o=D.x-m.x;m=D.y-m.y;svgedit.path.path.dragging=[z,F];!h||!svgedit.path.is_linked?svgedit.path.setLinkControlPoints(false):svgedit.path.setLinkControlPoints(true);svgedit.path.path.dragctrl?
+svgedit.path.path.moveCtrl(o,m):svgedit.path.path.movePts(o,m)}else{svgedit.path.path.selected_pts=[];svgedit.path.path.eachSeg(function(){if(this.next||this.prev){var ba=sa.getBBox(),T=svgedit.path.getGripPt(this);ba=svgedit.math.rectsIntersect(ba,{x:T.x,y:T.y,width:0,height:0});this.select(ba);ba&&svgedit.path.path.selected_pts.push(this.index)}})}},mouseUp:function(D,z,F,h){var m=pa("ctrlpointgrip_1c1"),o=pa("ctrlpointgrip_0c2");this.lastCtrlPoint=m?[m.getAttribute("cx"),m.getAttribute("cy")]:
+[F,h];if(!svgedit.path.first_grip&&o)svgedit.path.first_grip=[o.getAttribute("cx"),o.getAttribute("cy")];if(Ha==="path"){l=null;if(!A){z=pa(aa());Ka=false;C=null}return{keep:true,element:z}}if(svgedit.path.path.dragging){z=svgedit.path.path.cur_pt;svgedit.path.path.dragging=false;svgedit.path.path.dragctrl=false;svgedit.path.path.update();G&&svgedit.path.path.endChanges("Move path point(s)");!D.shiftKey&&!G&&svgedit.path.path.selectPt(z)}else if(sa&&sa.getAttribute("display")!="none"){sa.setAttribute("display",
+"none");sa.getAttribute("width")<=2&&sa.getAttribute("height")<=2&&La.toSelectMode(D.target)}else La.toSelectMode(D.target);G=false},toEditMode:function(D){svgedit.path.path=svgedit.path.getPath_(D);Ha="pathedit";xa();svgedit.path.path.show(true).update();svgedit.path.path.oldbbox=svgedit.utilities.getBBox(svgedit.path.path.elem);e=false},toSelectMode:function(D){var z=D==svgedit.path.path.elem;Ha="select";svgedit.path.path.show(false);k=false;xa();svgedit.path.path.matrix&&svgedit.path.recalcRotatedPath();
+if(z){M("selected",[D]);qb([D],true)}},addSubPath:function(D){if(D){Ha="path";e=true}else{La.clear(true);La.toEditMode(svgedit.path.path.elem)}},select:function(D){if(k===D){La.toEditMode(D);Ha="pathedit"}else k=D},reorient:function(){var D=I[0];if(D)if(na(D)!=0){var z=new Da("Reorient path"),F={d:D.getAttribute("d"),transform:D.getAttribute("transform")};z.addSubCommand(new Ma(D,F));xa();this.resetOrientation(D);wa(z);svgedit.path.getPath_(D).show(false).matrix=null;this.clear();qb([D],true);M("changed",
+I)}},clear:function(D){k=null;if(A){var z=pa(aa());$(pa("path_stretch_line")).remove();D&&$(z).remove();$(pa("pathpointgrip_container")).find("*").attr("display","none");A=C=null;Ka=false}else Ha=="pathedit"&&this.toSelectMode();svgedit.path.path&&svgedit.path.path.init().show(false)},resetOrientation:function(D){if(D==null||D.nodeName!="path")return false;var z=R(D),F=Y(z).matrix;z.clear();D.removeAttribute("transform");z=D.pathSegList;for(var h=z.numberOfItems,m=0;m<h;++m){var o=z.getItem(m),u=
+o.pathSegType;if(u!=1){var E=[];$.each(["",1,2],function(H,J){var O=o["x"+J],W=o["y"+J];if(O!==undefined&&W!==undefined){O=N(O,W,F);E.splice(E.length,0,O.x,O.y)}});svgedit.path.replacePathSeg(u,m,E,D)}}g(D,F)},zoomChange:function(){Ha=="pathedit"&&svgedit.path.path.update()},getNodePoint:function(){if(svgedit.path.path){var D=svgedit.path.path.segs[svgedit.path.path.selected_pts.length?svgedit.path.path.selected_pts[0]:1];return{x:D.item.x,y:D.item.y,type:D.type}}},linkControlPoints:function(D){svgedit.path.setLinkControlPoints(D)},
+clonePathNode:function(){svgedit.path.path.storeD();for(var D=svgedit.path.path.selected_pts,z=D.length,F=[];z--;){var h=D[z];svgedit.path.path.addSeg(h);F.push(h+z);F.push(h+z+1)}svgedit.path.path.init().addPtsToSelection(F);svgedit.path.path.endChanges("Clone path node(s)")},opencloseSubPath:function(){var D=svgedit.path.path.selected_pts;if(D.length===1){var z=svgedit.path.path.elem,F=z.pathSegList,h=D[0],m=null,o=null;svgedit.path.path.eachSeg(function(J){if(this.type===2&&J<=h)o=this.item;if(J<=
+h)return true;if(this.type===2){m=J;return false}else if(this.type===1)return m=false});if(m==null)m=svgedit.path.path.segs.length-1;if(m!==false){var u=z.createSVGPathSegLinetoAbs(o.x,o.y),E=z.createSVGPathSegClosePath();if(m==svgedit.path.path.segs.length){F.appendItem(u);F.appendItem(E)}else{svgedit.path.insertItemBefore(z,E,m);svgedit.path.insertItemBefore(z,u,m)}svgedit.path.path.init().selectPt(m+1)}else if(svgedit.path.path.segs[h].mate){F.removeItem(h);F.removeItem(h);svgedit.path.path.init().selectPt(h-
+1)}else{for(D=0;D<F.numberOfItems;D++){var H=F.getItem(D);if(H.pathSegType===2)u=D;else if(D===h)F.removeItem(u);else if(H.pathSegType===1&&h<D){E=D-1;F.removeItem(D);break}}for(D=h-u-1;D--;)svgedit.path.insertItemBefore(z,F.getItem(u),E);z=F.getItem(u);svgedit.path.replacePathSeg(2,u,[z.x,z.y]);D=h;svgedit.path.path.init().selectPt(0)}}},deletePathNode:function(){if(La.canDeleteNodes){svgedit.path.path.storeD();for(var D=svgedit.path.path.selected_pts,z=D.length;z--;)svgedit.path.path.deleteSeg(D[z]);
+var F=function(){var h=svgedit.path.path.elem.pathSegList,m=h.numberOfItems,o=function(H,J){for(;J--;)h.removeItem(H)};if(m<=1)return true;for(;m--;){var u=h.getItem(m);if(u.pathSegType===1){u=h.getItem(m-1);var E=h.getItem(m-2);if(u.pathSegType===2){o(m-1,2);F();break}else if(E.pathSegType===2){o(m-2,3);F();break}}else if(u.pathSegType===2)if(m>0){u=h.getItem(m-1).pathSegType;if(u===2){o(m-1,1);F();break}else if(u===1&&h.numberOfItems-1===m){o(m,1);F();break}}}return false};F();if(svgedit.path.path.elem.pathSegList.numberOfItems<=
+1){c.setMode("select");c.deleteSelectedElements()}else{svgedit.path.path.init();svgedit.path.path.clearSelection();if(window.opera){D=$(svgedit.path.path.elem);D.attr("d",D.attr("d"))}svgedit.path.path.endChanges("Delete path node(s)")}}},smoothPolylineIntoPath:function(D){var z=D.points,F=z.numberOfItems;if(F>=4){var h=z.getItem(0),m=null;D=[];D.push(["M",h.x,",",h.y," C"].join(""));for(var o=1;o<=F-4;o+=3){var u=z.getItem(o),E=z.getItem(o+1),H=z.getItem(o+2);if(m)if((h=svgedit.path.smoothControlPoints(m,
+u,h))&&h.length==2){u=D[D.length-1].split(",");u[2]=h[0].x;u[3]=h[0].y;D[D.length-1]=u.join(",");u=h[1]}D.push([u.x,u.y,E.x,E.y,H.x,H.y].join(","));h=H;m=E}for(D.push("L");o<F;++o){E=z.getItem(o);D.push([E.x,E.y].join(","))}D=D.join(" ");D=S({element:"path",curStyles:true,attr:{id:aa(),d:D,fill:"none"}})}return D},setSegType:function(D){svgedit.path.path.setSegType(D)},moveNode:function(D,z){var F=svgedit.path.path.selected_pts;if(F.length){svgedit.path.path.storeD();F=svgedit.path.path.segs[F[0]];
+var h={x:0,y:0};h[D]=z-F.item[D];F.move(h.x,h.y);svgedit.path.path.endChanges("Move path point")}},fixEnd:function(D){for(var z=D.pathSegList,F=z.numberOfItems,h,m=0;m<F;++m){var o=z.getItem(m);if(o.pathSegType===2)h=o;if(o.pathSegType===1){o=z.getItem(m-1);if(o.x!=h.x||o.y!=h.y){z=D.createSVGPathSegLinetoAbs(h.x,h.y);svgedit.path.insertItemBefore(D,z,m);La.fixEnd(D);break}}}svgedit.browser.isWebkit()&&D.setAttribute("d",La.convertPath(D))},convertPath:function(D,z){for(var F=D.pathSegList,h=F.numberOfItems,
+m=0,o=0,u="",E=null,H=0;H<h;++H){var J=F.getItem(H),O=J.x||0,W=J.y||0,ba=J.x1||0,T=J.y1||0,fa=J.x2||0,ha=J.y2||0,X=J.pathSegType,qa=Oa[X]["to"+(z?"Lower":"Upper")+"Case"](),ua=function(Aa,Ca,Pa){Ca=Ca?" "+Ca.join(" "):"";Pa=Pa?" "+svgedit.units.shortFloat(Pa):"";$.each(Aa,function(Qa,Na){Aa[Qa]=svgedit.units.shortFloat(Na)});u+=qa+Aa.join(" ")+Ca+Pa};switch(X){case 1:u+="z";break;case 12:O-=m;case 13:if(z){m+=O;qa="l"}else{O+=m;m=O;qa="L"}ua([[O,o]]);break;case 14:W-=o;case 15:if(z){o+=W;qa="l"}else{W+=
+o;o=W;qa="L"}ua([[m,W]]);break;case 2:case 4:case 18:O-=m;W-=o;case 5:case 3:if(E&&F.getItem(H-1).pathSegType===1&&!z){m=E[0];o=E[1]}case 19:if(z){m+=O;o+=W}else{O+=m;W+=o;m=O;o=W}if(X===3)E=[m,o];ua([[O,W]]);break;case 6:O-=m;ba-=m;fa-=m;W-=o;T-=o;ha-=o;case 7:if(z){m+=O;o+=W}else{O+=m;ba+=m;fa+=m;W+=o;T+=o;ha+=o;m=O;o=W}ua([[ba,T],[fa,ha],[O,W]]);break;case 8:O-=m;ba-=m;W-=o;T-=o;case 9:if(z){m+=O;o+=W}else{O+=m;ba+=m;W+=o;T+=o;m=O;o=W}ua([[ba,T],[O,W]]);break;case 10:O-=m;W-=o;case 11:if(z){m+=
+O;o+=W}else{O+=m;W+=o;m=O;o=W}ua([[J.r1,J.r2]],[J.angle,J.largeArcFlag?1:0,J.sweepFlag?1:0],[O,W]);break;case 16:O-=m;fa-=m;W-=o;ha-=o;case 17:if(z){m+=O;o+=W}else{O+=m;fa+=m;W+=o;ha+=o;m=O;o=W}ua([[fa,ha],[O,W]])}}return u}}}(),yb=this.removeUnusedDefElems=function(){var e=n.getElementsByTagNameNS(b,"defs");if(!e||!e.length)return 0;for(var k=[],l=0,C=["fill","stroke","filter","marker-start","marker-mid","marker-end"],A=C.length,G=n.getElementsByTagNameNS(b,"*"),D=G.length,z=0;z<D;z++){for(var F=
+G[z],h=0;h<A;h++)if(F){var m=ja(F.getAttribute(C[h]));m&&k.push(m.substr(1))}(F=ca(F))&&F.indexOf("#")===0&&k.push(F.substr(1))}e=$(e).find("linearGradient, radialGradient, filter, marker, svg, symbol");defelem_ids=[];for(z=e.length;z--;){C=e[z];A=C.id;if(k.indexOf(A)<0){sb[A]=C;C.parentNode.removeChild(C);l++}}return l};this.svgCanvasToString=function(){for(;yb()>0;);La.clear(true);$.each(n.childNodes,function(l,C){l&&C.nodeType===8&&C.data.indexOf("Created with")>=0&&n.insertBefore(C,n.firstChild)});
+if(L){Eb();rb([L])}$("#canvasGrid").attr("display","none");var e=[];$(n).find("g:data(gsvg)").each(function(){for(var l=this.attributes,C=l.length,A=0;A<C;A++)if(l[A].nodeName=="id"||l[A].nodeName=="style")C--;if(C<=0){l=this.firstChild;e.push(l);$(this).replaceWith(l)}});var k=this.svgToString(n,0);e.length&&$(e).each(function(){tb(this)});return k};this.svgToString=function(e,k){var l=[],C=svgedit.utilities.toXml,A=p.baseUnit,G=RegExp("^-?[\\d\\.]+"+A+"$");if(e){la(e);var D=e.attributes,z,F,h=e.childNodes;
+for(F=0;F<k;F++)l.push(" ");l.push("<");l.push(e.nodeName);if(e.id==="svgcontent"){F=zb();if(A!=="px"){F.w=svgedit.units.convertUnit(F.w,A)+A;F.h=svgedit.units.convertUnit(F.h,A)+A}l.push(' width="'+F.w+'" height="'+F.h+'" xmlns="'+b+'"');var m={};$(e).find("*").andSelf().each(function(){$.each(this.attributes,function(H,J){var O=J.namespaceURI;if(O&&!m[O]&&ya[O]!=="xmlns"&&ya[O]!=="xml"){m[O]=true;l.push(" xmlns:"+ya[O]+'="'+O+'"')}})});F=D.length;for(A=["width","height","xmlns","x","y","viewBox",
+"id","overflow"];F--;){z=D.item(F);var o=C(z.nodeValue);if(z.nodeName.indexOf("xmlns:")!==0)if(o!=""&&A.indexOf(z.localName)==-1)if(!z.namespaceURI||ya[z.namespaceURI]){l.push(" ");l.push(z.nodeName);l.push('="');l.push(o);l.push('"')}}}else{if(e.nodeName==="defs"&&!e.firstChild)return;var u=["-moz-math-font-style","_moz-math-font-style"];for(F=D.length-1;F>=0;F--){z=D.item(F);o=C(z.nodeValue);if(!(u.indexOf(z.localName)>=0))if(o!="")if(o.indexOf("pointer-events")!==0)if(!(z.localName==="class"&&
+o.indexOf("se_")===0)){l.push(" ");if(z.localName==="d")o=La.convertPath(e,true);if(isNaN(o)){if(G.test(o))o=svgedit.units.shortFloat(o)+A}else o=svgedit.units.shortFloat(o);if($a.apply&&e.nodeName==="image"&&z.localName==="href"&&$a.images&&$a.images==="embed"){var E=Va[o];if(E)o=E}if(!z.namespaceURI||z.namespaceURI==b||ya[z.namespaceURI]){l.push(z.nodeName);l.push('="');l.push(o);l.push('"')}}}}if(e.hasChildNodes()){l.push(">");k++;D=false;for(F=0;F<h.length;F++){A=h.item(F);switch(A.nodeType){case 1:l.push("\n");
+l.push(this.svgToString(h.item(F),k));break;case 3:A=A.nodeValue.replace(/^\s+|\s+$/g,"");if(A!=""){D=true;l.push(C(A)+"")}break;case 4:l.push("\n");l.push(Array(k+1).join(" "));l.push("<![CDATA[");l.push(A.nodeValue);l.push("]]\>");break;case 8:l.push("\n");l.push(Array(k+1).join(" "));l.push("<!--");l.push(A.data);l.push("--\>")}}k--;if(!D){l.push("\n");for(F=0;F<k;F++)l.push(" ")}l.push("</");l.push(e.nodeName);l.push(">")}else l.push("/>")}return l.join("")};this.embedImage=function(e,k){$(new Image).load(function(){var l=
+document.createElement("canvas");l.width=this.width;l.height=this.height;l.getContext("2d").drawImage(this,0,0);try{var C=";svgedit_url="+encodeURIComponent(e);C=l.toDataURL().replace(";base64",C+";base64");Va[e]=C}catch(A){Va[e]=false}Ga=e;k&&k(Va[e])}).attr("src",e)};this.setGoodImage=function(e){Ga=e};this.open=function(){};this.save=function(e){xa();e&&$.extend($a,e);$a.apply=true;e=this.svgCanvasToString();M("saved",e)};this.rasterExport=function(){xa();var e=[],k={feGaussianBlur:kb.exportNoBlur,
+foreignObject:kb.exportNoforeignObject,"[stroke-dasharray]":kb.exportNoDashArray},l=$(n);if(!("font"in $("<canvas>")[0].getContext("2d")))k.text=kb.exportNoText;$.each(k,function(C,A){l.find(C).length&&e.push(A)});k=this.svgCanvasToString();M("exported",{svg:k,issues:e})};this.getSvgString=function(){$a.apply=false;return this.svgCanvasToString()};this.randomizeIds=function(){arguments.length>0&&arguments[0]==false?svgedit.draw.randomizeIds(false,B()):svgedit.draw.randomizeIds(true,B())};var Hb=this.uniquifyElems=
+function(e){var k={},l=["filter","linearGradient","pattern","radialGradient","symbol","textPath","use"];svgedit.utilities.walkTree(e,function(z){if(z.nodeType==1){if(z.id){z.id in k||(k[z.id]={elem:null,attrs:[],hrefs:[]});k[z.id].elem=z}$.each(vb,function(h,m){var o=z.getAttributeNode(m);if(o){var u=svgedit.utilities.getUrlFromAttr(o.value);if(u=u?u.substr(1):null){u in k||(k[u]={elem:null,attrs:[],hrefs:[]});k[u].attrs.push(o)}}});var F=svgedit.utilities.getHref(z);if(F&&l.indexOf(z.nodeName)>=
+0)if(F=F.substr(1)){F in k||(k[F]={elem:null,attrs:[],hrefs:[]});k[F].hrefs.push(z)}}});for(var C in k)if(C){var A=k[C].elem;if(A){e=ka();A.id=e;A=k[C].attrs;for(var G=A.length;G--;){var D=A[G];D.ownerElement.setAttribute(D.name,"url(#"+e+")")}A=k[C].hrefs;for(G=A.length;G--;)svgedit.utilities.setHref(A[G],"#"+e)}}},Gb=this.setUseData=function(e){var k=$(e);if(e.tagName!=="use")k=k.find("use");k.each(function(){var l=ca(this).substr(1);if(l=pa(l)){$(this).data("ref",l);if(l.tagName=="symbol"||l.tagName==
+"svg")$(this).data("symbol",l).data("ref",l)}})},Ib=this.convertGradients=function(e){var k=$(e).find("linearGradient, radialGradient");if(!k.length&&svgedit.browser.isWebkit())k=$(e).find("*").filter(function(){return this.tagName.indexOf("Gradient")>=0});k.each(function(){if($(this).attr("gradientUnits")==="userSpaceOnUse"){var l=$(n).find('[fill="url(#'+this.id+')"],[stroke="url(#'+this.id+')"]');if(l.length)if(l=svgedit.utilities.getBBox(l[0]))if(this.tagName==="linearGradient"){var C=$(this).attr(["x1",
+"y1","x2","y2"]),A=this.gradientTransform.baseVal;if(A&&A.numberOfItems>0){var G=Y(A).matrix;A=N(C.x1,C.y1,G);G=N(C.x2,C.y2,G);C.x1=A.x;C.y1=A.y;C.x2=G.x;C.y2=G.y;this.removeAttribute("gradientTransform")}$(this).attr({x1:(C.x1-l.x)/l.width,y1:(C.y1-l.y)/l.height,x2:(C.x2-l.x)/l.width,y2:(C.y2-l.y)/l.height});this.removeAttribute("gradientUnits")}}})},Lb=this.convertToGroup=function(e){e||(e=I[0]);var k=$(e),l=new Da,C;if(k.data("gsvg")){l=$(e.firstChild).attr(["x","y"]);$(e.firstChild.firstChild).unwrap();
+$(e).removeData("gsvg");C=R(e);var A=d.createSVGTransform();A.setTranslate(l.x,l.y);C.appendItem(A);Ra(e);M("selected",[e])}else if(k.data("symbol")){e=k.data("symbol");C=k.attr("transform");A=k.attr(["x","y"]);var G=e.getAttribute("viewBox");if(G){G=G.split(" ");A.x-=+G[0];A.y-=+G[1]}C+=" translate("+(A.x||0)+","+(A.y||0)+")";A=k.prev();l.addSubCommand(new Fa(k[0],k[0].nextSibling,k[0].parentNode));k.remove();G=$(n).find("use:data(symbol)").length;k=f.createElementNS(b,"g");for(var D=e.childNodes,
+z=0;z<D.length;z++)k.appendChild(D[z].cloneNode(true));if(svgedit.browser.isGecko()){D=$(gb()).children("linearGradient,radialGradient,pattern").clone();$(k).append(D)}C&&k.setAttribute("transform",C);C=e.parentNode;Hb(k);svgedit.browser.isGecko()&&$(gb()).append($(k).find("linearGradient,radialGradient,pattern"));k.id=ka();A.after(k);if(C){if(!G){A=e.nextSibling;C.removeChild(e);l.addSubCommand(new Fa(e,A,C))}l.addSubCommand(new Ia(k))}Gb(k);svgedit.browser.isGecko()?Ib(gb()):Ib(k);svgedit.utilities.walkTreePost(k,
+function(F){try{Ra(F)}catch(h){console.log(h)}});$(k).find("a,circle,ellipse,foreignObject,g,image,line,path,polygon,polyline,rect,svg,text,tspan,use").each(function(){if(!this.id)this.id=ka()});rb([k]);(e=Db(k,true))&&l.addSubCommand(e);wa(l)}else console.log("Unexpected element to ungroup:",e)};this.setSvgString=function(e){try{var k=svgedit.utilities.text2xml(e);this.prepareSvg(k);var l=new Da("Change Source"),C=n.nextSibling,A=d.removeChild(n);l.addSubCommand(new Fa(A,C,d));n=f.adoptNode?f.adoptNode(k.documentElement):
+f.importNode(k.documentElement,true);d.appendChild(n);var G=$(n);c.current_drawing_=new svgedit.draw.Drawing(n,v);var D=B().getNonce();D?M("setnonce",D):M("unsetnonce");G.find("image").each(function(){var J=this;Fb(J);var O=ca(this);if(O.indexOf("data:")===0){var W=O.match(/svgedit_url=(.*?);/);if(W){var ba=decodeURIComponent(W[1]);$(new Image).load(function(){J.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",ba)}).attr("src",ba)}}c.embedImage(O)});G.find("svg").each(function(){if(!$(this).closest("defs").length){Hb(this);
+var J=this.parentNode;if(J.childNodes.length===1&&J.nodeName==="g"){$(J).data("gsvg",this);J.id=J.id||ka()}else tb(this)}});G.find("linearGradient, radialGradient, pattern").appendTo(gb());Gb(G);Ib(G[0]);svgedit.utilities.walkTreePost(n,function(J){try{Ra(J)}catch(O){console.log(O)}});var z={id:"svgcontent",overflow:p.show_outside_canvas?"visible":"hidden"},F=false;if(G.attr("viewBox")){var h=G.attr("viewBox").split(" ");z.width=h[2];z.height=h[3]}else $.each(["width","height"],function(J,O){var W=
+G.attr(O);W||(W="100%");if((W+"").substr(-1)==="%")F=true;else z[O]=Ba(O,W)});xb();G.children().find("a,circle,ellipse,foreignObject,g,image,line,path,polygon,polyline,rect,svg,text,tspan,use").each(function(){if(!this.id)this.id=ka()});if(F){var m=getStrokedBBox();z.width=m.width+m.x;z.height=m.height+m.y}if(z.width<=0)z.width=200;if(z.height<=0)z.height=200;G.attr(z);this.contentW=z.width;this.contentH=z.height;$("#canvas_width").val(this.contentW);$("#canvas_height").val(this.contentH);var o=$("#canvas_background");
+if(o.length){var u=o.attr("fill-opacity");u=u?parseInt(u)*100:100;fill=this.getPaint(o.attr("fill"),u,"canvas")}else fill=this.getPaint("none",100,"canvas");methodDraw.paintBox.canvas.setPaint(fill);l.addSubCommand(new Ia(n));var E=G.attr(["width","height"]);l.addSubCommand(new Ma(d,E));q=1;svgedit.transformlist.resetListMap();xa();svgedit.path.clearData();d.appendChild(ra.selectorParentGroup);wa(l);M("changed",[n])}catch(H){console.log(H);return false}return true};this.getPaint=function(e,k,l){var C=
+null;if(e.indexOf("url(#")===0){e=(e=svgCanvas.getRefElem(e))?e.cloneNode(true):$("#"+l+"_color defs *")[0];C={alpha:k};C[e.tagName]=e}else C=e.indexOf("#")===0?{alpha:k,solidColor:e.substr(1)}:{alpha:k,solidColor:"none"};return new $.jGraduate.Paint(C)};this.importSvgString=function(e){try{var k=svgedit.utilities.encode64(e.length+e).substr(0,32),l=false;if(lb[k])if($(lb[k].symbol).parents("#svgroot").length)l=true;var C=new Da("Import SVG");if(l)var A=lb[k].symbol,G=lb[k].xform;else{var D=svgedit.utilities.text2xml(e);
+this.prepareSvg(D);var z;z=f.adoptNode?f.adoptNode(D.documentElement):f.importNode(D.documentElement,true);Hb(z);var F=Ba("width",z.getAttribute("width")),h=Ba("height",z.getAttribute("height")),m=z.getAttribute("viewBox"),o=m?m.split(" "):[0,0,F,h];for(e=0;e<4;++e)o[e]=+o[e];n.getAttribute("width");var u=+n.getAttribute("height");G=h>F?"scale("+u/3/o[3]+")":"scale("+u/3/o[2]+")";G="translate(0) "+G+" translate(0)";A=f.createElementNS(b,"symbol");var E=gb();for(svgedit.browser.isGecko()&&$(z).find("linearGradient, radialGradient, pattern").appendTo(E);z.firstChild;)A.appendChild(z.firstChild);
+var H=z.attributes;for(z=0;z<H.length;z++){var J=H[z];A.setAttribute(J.nodeName,J.nodeValue)}A.id=ka();lb[k]={symbol:A,xform:G};gb().appendChild(A);C.addSubCommand(new Ia(A))}var O=f.createElementNS(b,"use");O.id=ka();U(O,"#"+A.id);(L||B().getCurrentLayer()).appendChild(O);C.addSubCommand(new Ia(O));xa();O.setAttribute("transform",G);Ra(O);$(O).data("symbol",A).data("ref",A);qb([O]);wa(C);M("changed",[n])}catch(W){console.log(W);return false}return true};var xb=c.identifyLayers=function(){Eb();B().identifyLayers()};
+this.createLayer=function(e){var k=new Da("Create Layer");e=B().createLayer(e);k.addSubCommand(new Ia(e));wa(k);xa();M("changed",[e])};this.cloneLayer=function(e){var k=new Da("Duplicate Layer"),l=f.createElementNS(b,"g"),C=f.createElementNS(b,"title");C.textContent=e;l.appendChild(C);C=B().getCurrentLayer();$(C).after(l);C=C.childNodes;for(var A=0;A<C.length;A++){var G=C[A];G.localName!="title"&&l.appendChild(ia(G))}xa();xb();k.addSubCommand(new Ia(l));wa(k);c.setCurrentLayer(e);M("changed",[l])};
+this.deleteCurrentLayer=function(){var e=B().getCurrentLayer(),k=e.nextSibling,l=e.parentNode;if(e=B().deleteCurrentLayer()){var C=new Da("Delete Layer");C.addSubCommand(new Fa(e,k,l));wa(C);xa();M("changed",[l]);return true}return false};this.setCurrentLayer=function(e){(e=B().setCurrentLayer(svgedit.utilities.toXml(e)))&&xa();return e};this.renameCurrentLayer=function(e){var k=B();if(k.current_layer){var l=k.current_layer;if(!c.setCurrentLayer(e)){for(var C=new Da("Rename Layer"),A=0;A<k.getNumLayers();++A)if(k.all_layers[A][1]==
+l)break;var G=k.getLayerName(A);k.all_layers[A][0]=svgedit.utilities.toXml(e);var D=l.childNodes.length;for(A=0;A<D;++A){var z=l.childNodes.item(A);if(z&&z.tagName=="title"){for(;z.firstChild;)z.removeChild(z.firstChild);z.textContent=e;C.addSubCommand(new Ma(z,{"#text":G}));wa(C);M("changed",[l]);return true}}}k.current_layer=l}return false};this.setCurrentLayerPosition=function(e){var k=B();if(k.current_layer&&e>=0&&e<k.getNumLayers()){for(var l=0;l<k.getNumLayers();++l)if(k.all_layers[l][1]==k.current_layer)break;
+if(l==k.getNumLayers())return false;if(l!=e){var C=null,A=k.current_layer.nextSibling;if(e>l){if(e<k.getNumLayers()-1)C=k.all_layers[e+1][1]}else C=k.all_layers[e][1];n.insertBefore(k.current_layer,C);wa(new Ja(k.current_layer,A,n));xb();c.setCurrentLayer(k.getLayerName(e));return true}}return false};this.setLayerVisibility=function(e,k){var l=B(),C=l.getLayerVisibility(e),A=l.setLayerVisibility(e,k);if(A)wa(new Ma(A,{display:C?"inline":"none"},"Layer Visibility"));else return false;if(A==l.getCurrentLayer()){xa();
+La.clear()}return true};this.moveSelectedToLayer=function(e){for(var k=null,l=B(),C=0;C<l.getNumLayers();++C)if(l.getLayerName(C)==e){k=l.all_layers[C][1];break}if(!k)return false;e=new Da("Move Elements to Layer");l=I;for(C=l.length;C--;){var A=l[C];if(A){var G=A.nextSibling,D=A.parentNode;k.appendChild(A);e.addSubCommand(new Ja(A,G,D))}}wa(e);return true};this.mergeLayer=function(e){var k=new Da("Merge Layer"),l=B(),C=$(l.current_layer).prev()[0];if(C){for(k.addSubCommand(new Fa(l.current_layer,
+l.current_layer.nextSibling,n));l.current_layer.firstChild;){var A=l.current_layer.firstChild;if(A.localName=="title"){k.addSubCommand(new Fa(A,A.nextSibling,l.current_layer));l.current_layer.removeChild(A)}else{var G=A.nextSibling;C.appendChild(A);k.addSubCommand(new Ja(A,G,l.current_layer))}}n.removeChild(l.current_layer);if(!e){xa();xb();M("changed",[n]);wa(k)}l.current_layer=C;return k}};this.mergeAllLayers=function(){var e=new Da("Merge all Layers"),k=B();for(k.current_layer=k.all_layers[k.getNumLayers()-
+1][1];$(n).children("g").length>1;)e.addSubCommand(c.mergeLayer(true));xa();xb();M("changed",[n]);wa(e)};var Eb=this.leaveContext=function(){var e=ta.length;if(e){for(var k=0;k<e;k++){var l=ta[k],C=cb(l,"orig_opac");C!==1?l.setAttribute("opacity",C):l.removeAttribute("opacity");l.setAttribute("style","pointer-events: inherit")}ta=[];xa(true);M("contextset",null)}L=null},Kb=this.setContext=function(e){Eb();if(typeof e==="string")e=pa(e);L=e;$(e).parentsUntil("#svgcontent").andSelf().siblings().each(function(){var k=
+this.getAttribute("opacity")||1;cb(this,"orig_opac",k);this.setAttribute("opacity",k*0.33);this.setAttribute("style","pointer-events: none");ta.push(this)});xa();M("contextset",L)};this.clear=function(){La.clear();xa();c.clearSvgContentElement();c.current_drawing_=new svgedit.draw.Drawing(n);c.createLayer("Layer 1");c.undoMgr.resetUndoStack();ra.initGroup();sa=ra.getRubberBandBox();M("cleared")};this.linkControlPoints=La.linkControlPoints;this.getContentElem=function(){return n};this.getRootElem=
+function(){return d};this.getSelectedElems=function(){return I};var zb=this.getResolution=function(){var e=n.getAttribute("width")/q,k=n.getAttribute("height")/q;return{w:e,h:k,zoom:q}};this.getZoom=function(){return q};this.getVersion=function(){return"svgcanvas.js ($Rev: 2082 $)"};this.setUiStrings=function(e){$.extend(kb,e.notification)};this.setConfig=function(e){$.extend(p,e)};this.getTitle=function(e){if(e=e||I[0]){e=$(e).data("gsvg")||$(e).data("symbol")||e;e=e.childNodes;for(var k=0;k<e.length;k++)if(e[k].nodeName==
+"title")return e[k].textContent;return""}};this.setGroupTitle=function(e){var k=I[0];k=$(k).data("gsvg")||k;var l=$(k).children("title"),C=new Da("Set Label");if(e.length)if(l.length){l=l[0];C.addSubCommand(new Ma(l,{"#text":l.textContent}));l.textContent=e}else{l=f.createElementNS(b,"title");l.textContent=e;$(k).prepend(l);C.addSubCommand(new Ia(l))}else{C.addSubCommand(new Fa(l[0],l.nextSibling,k));l.remove()}wa(C)};this.getDocumentTitle=function(){return c.getTitle(n)};this.setDocumentTitle=function(e){for(var k=
+n.childNodes,l=false,C="",A=new Da("Change Image Title"),G=0;G<k.length;G++)if(k[G].nodeName=="title"){l=k[G];C=l.textContent;break}if(!l){l=f.createElementNS(b,"title");n.insertBefore(l,n.firstChild)}if(e.length)l.textContent=e;else l.parentNode.removeChild(l);A.addSubCommand(new Ma(l,{"#text":C}));wa(A)};this.getEditorNS=function(e){e&&n.setAttribute("xmlns:se","http://svg-edit.googlecode.com");return"http://svg-edit.googlecode.com"};this.setResolution=function(e,k){var l=zb(),C=l.w;l=l.h;var A;
+if(e=="fit"){var G=getStrokedBBox();if(G){A=new Da("Fit Canvas to Content");var D=pb();qb(D);var z=[],F=[];$.each(D,function(){z.push(G.x*-1);F.push(G.y*-1)});D=c.moveSelectedElements(z,F,true);A.addSubCommand(D);xa();e=Math.round(G.width);k=Math.round(G.height)}else return false}if(e!=C||k!=l){D=d.suspendRedraw(1E3);A||(A=new Da("Change Image Dimensions"));e=Ba("width",e);k=Ba("height",k);n.setAttribute("width",e);n.setAttribute("height",k);this.contentW=e;this.contentH=k;A.addSubCommand(new Ma(n,
+{width:C,height:l}));n.setAttribute("viewBox",[0,0,e/q,k/q].join(" "));A.addSubCommand(new Ma(n,{viewBox:["0 0",C,l].join(" ")}));wa(A);d.unsuspendRedraw(D);if(background=document.getElementById("canvas_background")){background.setAttribute("x",-1);background.setAttribute("y",-1);background.setAttribute("width",e+2);background.setAttribute("height",k+2)}M("changed",[n])}return[e,k]};this.getOffset=function(){return $(n).attr(["x","y"])};this.setBBoxZoom=function(e,k,l){var C=0.85,A=function(G){if(!G)return false;
+var D=Math.min(Math.round(k/G.width*100*C)/100,Math.round(l/G.height*100*C)/100);c.setZoom(D);return{zoom:D,bbox:G}};if(typeof e=="object"){e=e;if(e.width==0||e.height==0){c.setZoom(e.zoom?e.zoom:q*e.factor);return{zoom:q,bbox:e}}return A(e)}switch(e){case "selection":if(!I[0])return;e=$.map(I,function(G){if(G)return G});e=getStrokedBBox(e);break;case "canvas":e=zb();C=0.95;e={width:e.w,height:e.h,x:0,y:0};break;case "content":e=getStrokedBBox();break;case "layer":e=getStrokedBBox(pb(B().getCurrentLayer()));
+break;default:return}return A(e)};this.setZoom=function(e){var k=zb();n.setAttribute("viewBox","0 0 "+k.w/e+" "+k.h/e);q=e;$.each(I,function(l,C){C&&ra.requestSelector(C).resize()});La.zoomChange();ib("zoomChanged",e)};this.getMode=function(){return Ha};this.setMode=function(e){La.clear();bb.clear();$("#workarea").attr("class",e);Xa=I[0]&&I[0].nodeName=="text"?Ua:K;Ha=e};this.getColor=function(e){return Xa[e]};this.setColor=function(e,k,l){K[e]=k;Xa[e+"_paint"]={type:"solidColor"};for(var C=[],A=
+I.length;A--;){var G=I[A];if(G)if(G.tagName=="g")svgedit.utilities.walkTree(G,function(D){D.nodeName!="g"&&C.push(D)});else if(e=="fill")G.tagName!="polyline"&&G.tagName!="line"&&C.push(G);else C.push(G)}if(C.length>0)if(l)Ab(e,k,C);else{Ya(e,k,C);M("changed",C)}};var gb=function(){var e=n.getElementsByTagNameNS(b,"defs");if(e.length>0)e=e[0];else{e=f.createElementNS(b,"defs");n.firstChild?n.insertBefore(e,n.firstChild.nextSibling):n.appendChild(e)}return e},Nb=this.setGradient=function(e){if(!(!Xa[e+
+"_paint"]||Xa[e+"_paint"].type=="solidColor")){var k=c[e+"Grad"],l=Mb(k),C=gb();if(l)k=l;else{k=C.appendChild(f.importNode(k,true));k.id=ka()}c.setColor(e,"url(#"+k.id+")");if(e=="canvas")(e=document.getElementById("canvas_background"))&&e.setAttribute("fill","url(#"+k.id+")")}},Mb=function(e){var k=gb();k=$(k).find("linearGradient, radialGradient");for(var l=k.length,C=["r","cx","cy","fx","fy"];l--;){var A=k[l];if(e.tagName=="linearGradient"){if(e.getAttribute("x1")!=A.getAttribute("x1")||e.getAttribute("y1")!=
+A.getAttribute("y1")||e.getAttribute("x2")!=A.getAttribute("x2")||e.getAttribute("y2")!=A.getAttribute("y2"))continue}else{var G=$(e).attr(C),D=$(A).attr(C),z=false;$.each(C,function(E,H){if(G[H]!=D[H])z=true});if(z)continue}var F=e.getElementsByTagNameNS(b,"stop"),h=A.getElementsByTagNameNS(b,"stop");if(F.length==h.length){for(var m=F.length;m--;){var o=F[m],u=h[m];if(o.getAttribute("offset")!=u.getAttribute("offset")||o.getAttribute("stop-opacity")!=u.getAttribute("stop-opacity")||o.getAttribute("stop-color")!=
+u.getAttribute("stop-color"))break}if(m==-1)return A}}return null};this.setPaint=function(e,k){var l=new $.jGraduate.Paint(k);this.setPaintOpacity(e,l.alpha/100,true);Xa[e+"_paint"]=l;switch(l.type){case "solidColor":if(l.solidColor!="none"&&l.solidColor!="#none")this.setColor(e,"#"+l.solidColor);else{this.setColor(e,"none");document.querySelector(e=="fill"?"#fill_color rect":"#stroke_color rect").setAttribute("fill","none")}break;case "linearGradient":case "radialGradient":c[e+"Grad"]=l[l.type];
+Nb(e)}};this.getStrokeWidth=function(){return Xa.stroke_width};this.setStrokeWidth=function(e){if(e==0&&["line","path"].indexOf(Ha)>=0)c.setStrokeWidth(1);else{Xa.stroke_width=e;for(var k=[],l=I.length;l--;){var C=I[l];if(C)C.tagName=="g"?svgedit.utilities.walkTree(C,function(A){A.nodeName!="g"&&k.push(A)}):k.push(C)}if(k.length>0){Ya("stroke-width",e,k);M("changed",I)}}};this.setStrokeAttr=function(e,k){K[e.replace("-","_")]=k;for(var l=[],C=I.length;C--;){var A=I[C];if(A)A.tagName=="g"?svgedit.utilities.walkTree(A,
+function(G){G.nodeName!="g"&&l.push(G)}):l.push(A)}if(l.length>0){Ya(e,k,l);M("changed",I)}};this.getStyle=function(){return K};this.getOpacity=function(){return K.opacity};this.setOpacity=function(e){K.opacity=e;Ya("opacity",e)};this.getFillOpacity=function(){return K.fill_opacity};this.getStrokeOpacity=function(){return K.stroke_opacity};this.setPaintOpacity=function(e,k,l){K[e+"_opacity"]=k;l?Ab(e+"-opacity",k):Ya(e+"-opacity",k)};this.getBlur=function(e){var k=0;if(e)if(e.getAttribute("filter"))if(e=
+pa(e.id+"_blur"))k=e.firstChild.getAttribute("stdDeviation");return k};(function(){function e(){var A=c.undoMgr.finishUndoableChange();k.addSubCommand(A);wa(k);l=k=null}var k=null,l=null,C=false;c.setBlurNoUndo=function(A){if(l)if(A===0){Ab("filter","");C=true}else{var G=I[0];C&&Ab("filter","url(#"+G.id+"_blur)");if(svgedit.browser.isWebkit()){G.removeAttribute("filter");G.setAttribute("filter","url(#"+G.id+"_blur)")}Ab("stdDeviation",A,[l.firstChild]);c.setBlurOffsets(l,A)}else c.setBlur(A)};c.setBlurOffsets=
+function(A,G){if(G>3)ma(A,{x:"-50%",y:"-50%",width:"200%",height:"200%"},100);else if(!svgedit.browser.isWebkit()){A.removeAttribute("x");A.removeAttribute("y");A.removeAttribute("width");A.removeAttribute("height")}};c.setBlur=function(A,G){if(k)e();else{var D=I[0],z=D.id;l=pa(z+"_blur");A-=0;var F=new Da;if(l){if(A===0)l=null}else{var h=S({element:"feGaussianBlur",attr:{"in":"SourceGraphic",stdDeviation:A}});l=S({element:"filter",attr:{id:z+"_blur"}});l.appendChild(h);gb().appendChild(l);F.addSubCommand(new Ia(l))}h=
+{filter:D.getAttribute("filter")};if(A===0){D.removeAttribute("filter");F.addSubCommand(new Ma(D,h))}else{Ya("filter","url(#"+z+"_blur)");F.addSubCommand(new Ma(D,h));c.setBlurOffsets(l,A);k=F;c.undoMgr.beginUndoableChange("stdDeviation",[l?l.firstChild:null]);if(G){c.setBlurNoUndo(A);e()}}}}})();this.getBold=function(){var e=true;I.filter(Boolean).forEach(function(k){if(k.getAttribute("font-weight")!="bold")e=false});return e};this.setBold=function(e){var k=I.filter(Boolean);k.forEach(function(l){if(l!=
+null&&l.tagName=="text")Ya("font-weight",e?"bold":"normal")});k[0].textContent||bb.setCursor()};this.getItalic=function(){var e=true;I.filter(Boolean).forEach(function(k){if(k.getAttribute("font-style")!="italic")e=false});return e};this.setItalic=function(e){var k=I.filter(Boolean);k.forEach(function(l){if(l!=null&&l.tagName=="text")Ya("font-style",e?"italic":"normal")});k[0].textContent||bb.setCursor()};this.getFontFamily=function(){return Ua.font_family};this.setFontFamily=function(e){Ua.font_family=
+e;Ya("font-family",e);I[0]&&!I[0].textContent&&bb.setCursor()};this.setFontColor=function(e){Ua.fill=e;Ya("fill",e)};this.getFontSize=function(){return Ua.fill};this.getFontSize=function(){return Ua.font_size};this.setFontSize=function(e){Ua.font_size=e;Ya("font-size",e);I[0].textContent||bb.setCursor()};this.getText=function(){var e=I[0];if(e==null)return"";return e.textContent};this.setTextContent=function(e){Ya("#text",e);bb.init(e);bb.setCursor()};this.setImageURL=function(e){var k=I[0];if(k){var l=
+$(k).attr(["width","height"]);l=!l.width||!l.height;var C=ca(k);if(C!==e)l=true;else if(!l)return;var A=new Da("Change Image URL");U(k,e);A.addSubCommand(new Ma(k,{"#href":C}));l?$(new Image).load(function(){var G=$(k).attr(["width","height"]);$(k).attr({width:this.width,height:this.height});ra.requestSelector(k).resize();A.addSubCommand(new Ma(k,G));wa(A);M("changed",[k])}).attr("src",e):wa(A)}};this.setLinkURL=function(e){var k=I[0];if(k){if(k.tagName!=="a"){k=$(k).parents("a");if(k.length)k=k[0];
+else return}var l=ca(k);if(l!==e){var C=new Da("Change Link URL");U(k,e);C.addSubCommand(new Ma(k,{"#href":l}));wa(C)}}};this.elementsAreSame=function(e){return!e.length||e[0]==null?null:I.every(function(k){return k&&I[0]?k.nodeName==I[0].nodeName:null})};this.setRectRadius=function(e){c.elementsAreSame(I)&&I[0].tagName=="rect"&&I.forEach(function(k){var l=k.getAttribute("rx");if(l!=e){k.setAttribute("rx",e);k.setAttribute("ry",e);wa(new Ma(k,{rx:l,ry:l},"Radius"));M("changed",[k])}})};this.makeHyperlink=
+function(e){c.groupSelectedElements("a",e)};this.removeHyperlink=function(){c.ungroupSelectedElement()};this.setSegType=function(e){La.setSegType(e)};this.convertToPath=function(e,k){if(e==null)$.each(I,function(ba,T){T&&c.convertToPath(T)});else{if(!k)var l=new Da("Convert element to Path");var C=k?{}:{fill:K.fill,"fill-opacity":K.fill_opacity,stroke:K.stroke,"stroke-width":K.stroke_width,"stroke-dasharray":K.stroke_dasharray,"stroke-linejoin":K.stroke_linejoin,"stroke-linecap":K.stroke_linecap,
+"stroke-opacity":K.stroke_opacity,opacity:K.opacity,visibility:"hidden"};$.each(["marker-start","marker-end","marker-mid","filter","clip-path"],function(){if(e.getAttribute(this))C[this]=e.getAttribute(this)});var A=S({element:"path",attr:C}),G=e.getAttribute("transform");G&&A.setAttribute("transform",G);var D=e.id,z=e.parentNode;e.nextSibling?z.insertBefore(A,e):z.appendChild(A);var F="",h=function(ba){$.each(ba,function(T,fa){var ha=fa[1];F+=fa[0];for(var X=0;X<ha.length;X+=2)F+=ha[X]+","+ha[X+
+1]+" "})},m=1.81;switch(e.tagName){case "ellipse":case "circle":var o=$(e).attr(["rx","ry","cx","cy"]),u=o.cx,E=o.cy,H=o.rx;o=o.ry;if(e.tagName=="circle")H=o=$(e).attr("r");h([["M",[u-H,E]],["C",[u-H,E-o/m,u-H/m,E-o,u,E-o]],["C",[u+H/m,E-o,u+H,E-o/m,u+H,E]],["C",[u+H,E+o/m,u+H/m,E+o,u,E+o]],["C",[u-H/m,E+o,u-H,E+o/m,u-H,E]],["Z",[]]]);break;case "path":F=e.getAttribute("d");break;case "line":o=$(e).attr(["x1","y1","x2","y2"]);F="M"+o.x1+","+o.y1+"L"+o.x2+","+o.y2;break;case "polyline":case "polygon":F=
+"M"+e.getAttribute("points");break;case "rect":o=$(e).attr(["rx","ry"]);H=o.rx;o=o.ry;var J=e.getBBox();u=J.x;E=J.y;var O=J.width;J=J.height;m=4-m;if(!H&&!o)h([["M",[u,E]],["L",[u+O,E]],["L",[u+O,E+J]],["L",[u,E+J]],["L",[u,E]],["Z",[]]]);else{o||(o=H);h([["M",[u,E+o]],["C",[u,E+o/m,u+H/m,E,u+H,E]],["L",[u+O-H,E]],["C",[u+O-H/m,E,u+O,E+o/m,u+O,E+o]],["L",[u+O,E+J-o]],["C",[u+O,E+J-o/m,u+O-H/m,E+J,u+O-H,E+J]],["L",[u+H,E+J]],["C",[u+H/m,E+J,u,E+J-o/m,u,E+J-o]],["L",[u,E+o]],["Z",[]]])}break;default:A.parentNode.removeChild(A)}F&&
+A.setAttribute("d",F);if(k){La.resetOrientation(A);l=false;try{l=A.getBBox()}catch(W){}A.parentNode.removeChild(A);return l}else{if(G){G=R(A);oa(G)&&La.resetOrientation(A)}l.addSubCommand(new Fa(e,e.nextSibling,z));l.addSubCommand(new Ia(A));xa();e.parentNode.removeChild(e);A.setAttribute("id",D);A.removeAttribute("visibility");qb([A],true);wa(l)}}};var Ab=this.changeSelectedAttributeNoUndo=function(e,k,l){var C=d.suspendRedraw(1E3);Ha=="pathedit"&&La.moveNode(e,k);l=l||I;for(var A=l.length,G=["g",
+"polyline","path"];A--;){var D=l[A];if(D!=null){Ha==="textedit"&&e!=="#text"&&D.textContent.length&&bb.toSelectMode(D);if((e==="x"||e==="y")&&G.indexOf(D.tagName)>=0){var z=getStrokedBBox([D]);c.moveSelectedElements((e==="x"?k-z.x:0)*q,(e==="y"?k-z.y:0)*q,true)}else{z=e==="#text"?D.textContent:D.getAttribute(e);if(z==null)z="";if(z!==String(k)){if(e=="#text"){svgedit.utilities.getBBox(D);D.textContent=k}else e=="#href"?U(D,k):D.setAttribute(e,k);I.indexOf(D)>=0&&setTimeout(function(){D.parentNode&&
+ra.requestSelector(D).resize()},0);z=na(D);if(z!=0&&e!="transform")for(var F=R(D),h=F.numberOfItems;h--;)if(F.getItem(h).type==4){F.removeItem(h);var m=svgedit.utilities.getBBox(D),o=N(m.x+m.width/2,m.y+m.height/2,Y(F).matrix);m=o.x;o=o.y;var u=d.createSVGTransform();u.setRotate(z,m,o);F.insertItemBefore(u,h);break}}}}}d.unsuspendRedraw(C)},Ya=this.changeSelectedAttribute=function(e,k,l){l=l||I;c.undoMgr.beginUndoableChange(e,l);Ab(e,k,l);e=c.undoMgr.finishUndoableChange();e.isEmpty()||wa(e)};this.deleteSelectedElements=
+function(){for(var e=new Da("Delete Elements"),k=I.length,l=[],C=0;C<k;++C){var A=I[C];if(A==null)break;var G=A.parentNode,D=A;ra.releaseSelector(D);svgedit.path.removePath_(D.id);if(G.tagName==="a"&&G.childNodes.length===1){D=G;G=G.parentNode}var z=D.nextSibling;D=G.removeChild(D);l.push(A);I[C]=null;e.addSubCommand(new Fa(D,z,G))}e.isEmpty()||wa(e);M("changed",l);xa()};this.cutSelectedElements=function(){for(var e=new Da("Cut Elements"),k=I.length,l=[],C=0;C<k;++C){var A=I[C];if(A==null)break;var G=
+A.parentNode,D=A;ra.releaseSelector(D);svgedit.path.removePath_(D.id);var z=D.nextSibling;D=G.removeChild(D);l.push(A);I[C]=null;e.addSubCommand(new Fa(D,z,G))}e.isEmpty()||wa(e);M("changed",l);xa();c.clipBoard=l};this.copySelectedElements=function(){c.clipBoard=$.merge([],I)};this.pasteElements=function(){var e=c.clipBoard,k=e.length;if(k){for(var l=[],C=new Da("Paste elements");k--;){var A=e[k];if(A){var G=ia(A);if(!pa(A.id))G.id=A.id;l.push(G);(L||B().getCurrentLayer()).appendChild(G);C.addSubCommand(new Ia(G))}}svgCanvas.clearSelection();
+setTimeout(function(){rb(l)},100);wa(C);M("changed",l)}};this.groupSelectedElements=function(e){e||(e="g");var k="";switch(e){case "a":k="Make hyperlink";var l="";if(arguments.length>1)l=arguments[1];break;default:e="g";k="Group Elements"}k=new Da(k);var C=S({element:e,attr:{id:ka()}});e==="a"&&U(C,l);k.addSubCommand(new Ia(C));for(l=I.length;l--;){var A=I[l];if(A!=null){if(A.parentNode.tagName==="a"&&A.parentNode.childNodes.length===1)A=A.parentNode;var G=A.nextSibling,D=A.parentNode;C.appendChild(A);
+k.addSubCommand(new Ja(A,G,D))}}k.isEmpty()||wa(k);rb([C],true)};var Db=this.pushGroupProperties=function(e,k){var l=e.childNodes,C=l.length,A=e.getAttribute("transform"),G=R(e),D=Y(G).matrix,z=new Da("Push group properties"),F=0,h=na(e),m=$(e).attr(["filter","opacity"]),o,u;for(F=0;F<C;F++){var E=l[F];if(E.nodeType===1){if(m.opacity!==null&&m.opacity!==1){E.getAttribute("opacity");var H=Math.round((E.getAttribute("opacity")||1)*m.opacity*100)/100;Ya("opacity",H,[E])}if(m.filter){var J=H=this.getBlur(E);
+u||(u=this.getBlur(e));if(H)H=u-0+(H-0);else if(H===0)H=u;if(J)o=P(E.getAttribute("filter"));else if(o){o=ia(o);gb().appendChild(o)}else o=P(m.filter);o.id=E.id+"_"+(o.firstChild.tagName==="feGaussianBlur"?"blur":"filter");Ya("filter","url(#"+o.id+")",[E]);if(H){Ya("stdDeviation",H,[o.firstChild]);c.setBlurOffsets(o,H)}}H=R(E);if(~E.tagName.indexOf("Gradient"))H=null;if(H)if(E.tagName!=="defs")if(G.numberOfItems){if(h&&G.numberOfItems==1){var O=G.getItem(0).matrix,W=d.createSVGMatrix();if(J=na(E))W=
+H.getItem(0).matrix;var ba=svgedit.utilities.getBBox(E),T=Y(H).matrix,fa=N(ba.x+ba.width/2,ba.y+ba.height/2,T);ba=h+J;T=d.createSVGTransform();T.setRotate(ba,fa.x,fa.y);O=ga(O,W,T.matrix.inverse());J&&H.removeItem(0);if(ba)H.numberOfItems?H.insertItemBefore(T,0):H.appendItem(T);if(O.e||O.f){J=d.createSVGTransform();J.setTranslate(O.e,O.f);H.numberOfItems?H.insertItemBefore(J,0):H.appendItem(J)}}else{J=E.getAttribute("transform");O={};O.transform=J?J:"";J=d.createSVGTransform();O=Y(H).matrix;W=O.inverse();
+O=ga(W,D,O);J.setMatrix(O);H.appendItem(J)}(E=Ra(E))&&z.addSubCommand(E)}}}if(A){O={};O.transform=A;e.setAttribute("transform","");e.removeAttribute("transform");z.addSubCommand(new Ma(e,O))}if(k&&!z.isEmpty())return z};this.ungroupSelectedElement=function(){var e=I[0];if($(e).data("gsvg")||$(e).data("symbol"))Lb(e);else if(e.tagName==="use"){var k=pa(ca(e).substr(1));$(e).data("symbol",k).data("ref",k);Lb(e)}else{k=$(e).parents("a");if(k.length)e=k[0];if(e.tagName==="g"||e.tagName==="a"){k=new Da("Ungroup Elements");
+var l=Db(e,true);l&&k.addSubCommand(l);l=e.parentNode;for(var C=e.nextSibling,A=Array(e.childNodes.length),G=0;e.firstChild;){var D=e.firstChild,z=D.nextSibling,F=D.parentNode;if(D.tagName==="title"){k.addSubCommand(new Fa(D,D.nextSibling,F));F.removeChild(D)}else{A[G++]=D=l.insertBefore(D,C);k.addSubCommand(new Ja(D,z,F))}}xa();C=e.nextSibling;e=l.removeChild(e);k.addSubCommand(new Fa(e,C,l));k.isEmpty()||wa(k);qb(A)}}};this.moveToTopSelectedElement=function(){var e=I.filter(Boolean).reverse(),k=
+new Da("Move to top");e.forEach(function(l){l=l;var C=l.parentNode,A=l.nextSibling;l=l.parentNode.appendChild(l);if(A!=l.nextSibling){k.addSubCommand(new Ja(l,A,C,"top"));M("changed",[l])}k.isEmpty()||wa(k)})};this.moveToBottomSelectedElement=function(){var e=I.filter(Boolean).reverse(),k=new Da("Move to top");e.forEach(function(l){l=l;var C=l.parentNode,A=l.nextSibling,G=l.parentNode.firstChild;if(G.tagName=="title")G=G.nextSibling;if(G.tagName=="defs")G=G.nextSibling;l=l.parentNode.insertBefore(l,
+G);if(A!=l.nextSibling){k.addSubCommand(new Ja(l,A,C,"bottom"));M("changed",[l])}});k.isEmpty()||wa(k)};this.moveUpDownSelected=function(e){var k=I.filter(Boolean);e=="Down"&&k.reverse();var l=new Da("Move "+e);k.forEach(function(C){hb=[];var A,G,D=$(ob(getStrokedBBox([C]))).toArray();e=="Down"&&D.reverse();$.each(D,function(){if(G){A=this;return false}else if(this==C)G=true});if(A){D=C.parentNode;var z=C.nextSibling;$(A)[e=="Down"?"before":"after"](C);if(z!=C.nextSibling){l.addSubCommand(new Ja(C,
+z,D,"Move "+e));M("changed",[C])}}});l.isEmpty()||wa(l)};this.moveSelectedElements=function(e,k,l){if(e.constructor!=Array){e/=q;k/=q}l=l||true;for(var C=new Da("position"),A=I.length;A--;){var G=I[A];if(G!=null){var D=d.createSVGTransform(),z=R(G);e.constructor==Array?D.setTranslate(e[A],k[A]):D.setTranslate(e,k);z.numberOfItems?z.insertItemBefore(D,0):z.appendItem(D);(D=Ra(G))&&C.addSubCommand(D);ra.requestSelector(G).resize()}}if(!C.isEmpty()){l&&wa(C);M("changed",I);return C}};this.cloneSelectedElements=
+function(e,k,l){for(var C=new Da("Clone Elements"),A=I.length,G=0;G<A;++G){var D=I[G];if(D==null)break}A=I.slice(0,G);this.clearSelection(true);G=A.length;for(clones=[];G--;){D=A[G];var z=ia(A[G]),F=L||B().getCurrentLayer();if(l){tlist=R(z);tlist.removeItem(l);Ra(z);F.insertBefore(z,D)}else F.appendChild(z);clones.push(z);C.addSubCommand(new Ia(z))}if(!C.isEmpty()){qb(A.reverse());l||this.moveSelectedElements(e,k,false);wa(C)}return clones};this.alignSelectedElements=function(e,k){var l=[],C=Number.MAX_VALUE,
+A=Number.MIN_VALUE,G=Number.MAX_VALUE,D=Number.MIN_VALUE,z=Number.MIN_VALUE,F=Number.MIN_VALUE,h=I.length;if(h){for(var m=0;m<h;++m){if(I[m]==null)break;l[m]=getStrokedBBox([I[m]]);switch(k){case "smallest":if((e=="l"||e=="c"||e=="r")&&(z==Number.MIN_VALUE||z>l[m].width)||(e=="t"||e=="m"||e=="b")&&(F==Number.MIN_VALUE||F>l[m].height)){C=l[m].x;G=l[m].y;A=l[m].x+l[m].width;D=l[m].y+l[m].height;z=l[m].width;F=l[m].height}break;case "largest":if((e=="l"||e=="c"||e=="r")&&(z==Number.MIN_VALUE||z<l[m].width)||
+(e=="t"||e=="m"||e=="b")&&(F==Number.MIN_VALUE||F<l[m].height)){C=l[m].x;G=l[m].y;A=l[m].x+l[m].width;D=l[m].y+l[m].height;z=l[m].width;F=l[m].height}break;default:if(l[m].x<C)C=l[m].x;if(l[m].y<G)G=l[m].y;if(l[m].x+l[m].width>A)A=l[m].x+l[m].width;if(l[m].y+l[m].height>D)D=l[m].y+l[m].height}}if(k=="page"){G=C=0;A=c.contentW;D=c.contentH}z=Array(h);F=Array(h);for(m=0;m<h;++m){if(I[m]==null)break;var o=l[m];z[m]=0;F[m]=0;switch(e){case "l":z[m]=C-o.x;break;case "c":z[m]=(C+A)/2-(o.x+o.width/2);break;
+case "r":z[m]=A-(o.x+o.width);break;case "t":F[m]=G-o.y;break;case "m":F[m]=(G+D)/2-(o.y+o.height/2);break;case "b":F[m]=D-(o.y+o.height)}}this.moveSelectedElements(z,F)}};this.contentW=zb().w;this.contentH=zb().h;this.updateCanvas=function(e,k){d.setAttribute("width",e);d.setAttribute("height",k);var l=$("#canvasBackground")[0],C=n.getAttribute("x"),A=n.getAttribute("y"),G=e/2-this.contentW*q/2,D=k/2-this.contentH*q/2;ma(n,{width:this.contentW*q,height:this.contentH*q,x:G,y:D,viewBox:"0 0 "+this.contentW+
+" "+this.contentH});ma(l,{width:n.getAttribute("width"),height:n.getAttribute("height"),x:G,y:D});(l=pa("background_image"))&&ma(l,{width:"100%",height:"100%"});ra.selectorParentGroup.setAttribute("transform","translate("+G+","+D+")");return{x:G,y:D,old_x:C,old_y:A,d_x:G-C,d_y:D-A}};this.setBackground=function(e,k){var l=pa("canvasBackground"),C=$(l).find("rect")[0],A=pa("background_image");C.setAttribute("fill",e);if(k){if(!A){A=f.createElementNS(b,"image");ma(A,{id:"background_image",width:"100%",
+height:"100%",preserveAspectRatio:"xMinYMin",style:"pointer-events:none"})}U(A,k);l.appendChild(A)}else A&&A.parentNode.removeChild(A)};this.cycleElement=function(e){var k=I[0],l=false,C=pb(L||B().getCurrentLayer());if(C.length){if(k==null){e=e?C.length-1:0;l=C[e]}else for(var A=C.length;A--;)if(C[A]==k){e=e?A-1:A+1;if(e>=C.length)e=0;else if(e<0)e=C.length-1;l=C[e];break}rb([l],true);M("selected",I)}};this.clear();this.getPrivateMethods=function(){return{addCommandToHistory:wa,setGradient:Nb,addSvgElementFromJson:S,
+assignAttributes:ma,BatchCommand:Da,call:M,ChangeElementCommand:Ma,copyElem:ia,ffClone:da,findDefs:gb,findDuplicateGradient:Mb,getElem:pa,getId:aa,getIntersectionList:ob,getMouseTarget:Bb,getNextId:ka,getPathBBox:Z,getUrlFromAttr:ja,hasMatrixTransform:oa,identifyLayers:xb,InsertElementCommand:Ia,isIdentity:svgedit.math.isIdentity,logMatrix:Wa,matrixMultiply:ga,MoveElementCommand:Ja,preventClickDefault:Fb,recalculateAllSelectedDimensions:Ea,recalculateDimensions:Ra,remapElement:Za,RemoveElementCommand:Fa,
+removeUnusedDefElems:yb,round:ab,runExtensions:ib,sanitizeSvg:za,SVGEditTransformList:svgedit.transformlist.SVGTransformList,toString:toString,transformBox:svgedit.math.transformBox,transformListToTransform:Y,transformPoint:N,walkTree:svgedit.utilities.walkTree}}};(function(){document.addEventListener("touchstart",touchHandler,true);document.addEventListener("touchmove",touchHandler,true);document.addEventListener("touchend",touchHandler,true);document.addEventListener("touchcancel",touchHandler,true);if(!window.methodDraw)window.methodDraw=function(a){function s(d,n){var v=g.setSvgString(d)!==false;n=n||a.noop;v?n(true):a.alert(uiStrings.notification.errorLoadingSVG,function(){n(false)})}var g,b={},p=false;curConfig={canvas_expansion:1,dimensions:[580,400],
+initFill:{color:"fff",opacity:1},initStroke:{width:1.5,color:"000",opacity:1},initOpacity:1,imgPath:"images/",extPath:"extensions/",jGraduatePath:"jgraduate/images/",extensions:[],initTool:"select",wireframe:false,colorPickerCSS:false,gridSnapping:false,gridColor:"#000",baseUnit:"px",snappingStep:10,showRulers:svgedit.browser.isTouch()?false:true,show_outside_canvas:false,no_save_warning:true,initFont:"Helvetica, Arial, sans-serif"};uiStrings=b.uiStrings={common:{ok:"OK",cancel:"Cancel",key_up:"Up",
+key_down:"Down",key_backspace:"Backspace",key_del:"Del"},layers:{layer:"Layer"},notification:{invalidAttrValGiven:"Invalid value given",noContentToFitTo:"No content to fit to",dupeLayerName:"There is already a layer named that!",enterUniqueLayerName:"Please enter a unique layer name",enterNewLayerName:"Please enter the new layer name",layerHasThatName:"Layer already has that name",QmoveElemsToLayer:'Move selected elements to layer "%s"?',QwantToClear:"<strong>Do you want to clear the drawing?</strong>\nThis will also erase your undo history",
+QwantToOpen:"Do you want to open a new file?\nThis will also erase your undo history",QerrorsRevertToSource:"There were parsing errors in your SVG source.\nRevert back to original SVG source?",QignoreSourceChanges:"Ignore changes made to SVG source?",featNotSupported:"Feature not supported",enterNewImgURL:"Enter the new image URL",defsFailOnSave:"NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",loadingImage:"Loading image, please wait...",
+saveFromBrowser:'Select "Save As..." in your browser to save this image as a %s file.',noteTheseIssues:"Also note the following issues: ",unsavedChanges:"There are unsaved changes.",enterNewLinkURL:"Enter the new hyperlink URL",errorLoadingSVG:"Error: Unable to load SVG data",URLloadFail:"Unable to load from URL",retrieving:'Retrieving "%s" ...'}};var w={},c={};b.curConfig=curConfig;b.tool_scale=1;b.setConfig=function(d){a.extend(true,curConfig,d);if(d.extensions)curConfig.extensions=d.extensions};
+b.setCustomHandlers=function(d){b.ready(function(){if(d.open){a('#tool_open > input[type="file"]').remove();a("#tool_open").show();g.open=d.open}if(d.save){b.show_save_warning=false;g.bind("saved",d.save)}d.pngsave&&g.bind("exported",d.pngsave);c=d})};b.randomizeIds=function(){g.randomizeIds(arguments)};b.init=function(){(function(){var h=window.opener;if(h)try{var m=h.document.createEvent("Event");m.initEvent("methodDrawReady",true,true);h.document.documentElement.dispatchEvent(m)}catch(o){}})();
+(function(){a("body").toggleClass("touch",svgedit.browser.isTouch());var h=a.deparam.querystring(true);if(!a.isEmptyObject(h)){if(h.dimensions)h.dimensions=h.dimensions.split(",");if(h.extensions)h.extensions=h.extensions.split(",");if(h.bkgd_color)h.bkgd_color="#"+h.bkgd_color;methodDraw.setConfig(h);var m=h.source,o=a.param.querystring();if(!m)if(o.indexOf("source=data:")>=0)m=o.match(/source=(data:[^&]*)/)[1];if(m)if(m.indexOf("data:")===0){m=m.replace(/ /g,"+");b.loadFromDataURI(m)}else b.loadFromString(m);
+else if(o.indexOf("paramurl=")!==-1)methodDraw.loadFromURL(o.substr(9));else h.url&&methodDraw.loadFromURL(h.url)}})();a("#canvas_width").val(curConfig.dimensions[0]);a("#canvas_height").val(curConfig.dimensions[1]);var d=function(){a.each(curConfig.extensions,function(){var h=this;a.getScript(curConfig.extPath+h,function(m){if(!m){m=document.createElement("script");m.src=curConfig.extPath+h;document.querySelector("head").appendChild(m)}})})};document.location.protocol==="file:"?setTimeout(d,100):
+d();a.svgIcons(curConfig.imgPath+"svg_edit_icons.svg",{w:27,h:27,id_match:false,no_img:true,fallback_path:curConfig.imgPath,fallback:{logo:"logo.png",select:"select.png",select_node:"select_node.png",pencil:"pencil.png",pen:"line.png",rect:"square.png",ellipse:"ellipse.png",path:"path.png",text:"text.png",image:"image.png",zoom:"zoom.png","delete":"delete.png",spapelib:"shapelib.png",node_delete:"node_delete.png",align_left:"align-left.png",align_center:"align-center.png",align_right:"align-right.png",
+align_top:"align-top.png",align_middle:"align-middle.png",align_bottom:"align-bottom.png",arrow_right:"flyouth.png",arrow_down:"dropdown.gif"},placement:{"#logo":"logo","#tool_select":"select","#tool_fhpath":"pencil","#tool_line":"pen","#tool_rect,#tools_rect_show":"rect","#tool_ellipse,#tools_ellipse_show":"ellipse","#tool_path":"path","#tool_text,#layer_rename":"text","#tool_image":"image","#tool_zoom":"zoom","#tool_node_clone":"node_clone","#tool_node_delete":"node_delete","#tool_add_subpath":"add_subpath",
+"#tool_openclose_path":"open_path","#tool_alignleft, #tool_posleft":"align_left","#tool_aligncenter, #tool_poscenter":"align_center","#tool_alignright, #tool_posright":"align_right","#tool_aligntop, #tool_postop":"align_top","#tool_alignmiddle, #tool_posmiddle":"align_middle","#tool_alignbottom, #tool_posbottom":"align_bottom","#cur_position":"align","#zoomLabel":"zoom"},resize:{"#logo .svg_icon":15,".flyout_arrow_horiz .svg_icon":5,"#fill_bg .svg_icon, #stroke_bg .svg_icon":svgedit.browser.isTouch()?
+24:24,".palette_item:first .svg_icon":svgedit.browser.isTouch()?30:16,"#zoomLabel .svg_icon":16,"#zoom_dropdown .svg_icon":7},callback:function(){a(".toolbar_button button > svg, .toolbar_button button > img").each(function(){a(this).parent().prepend(this)});a(".tool_button, .tool_button_current").addClass("loaded");var h=a("#tools_left");if(h.length!=0){h.offset();h.outerHeight()}a(".tools_flyout").each(function(){var m=a("#"+this.id+"_show"),o=m.attr("data-curopt");if(!m.children("svg, img").length){o=
+a(o).children().clone();if(o.length){o[0].removeAttribute("style");m.append(o)}}});methodDraw.runCallbacks();setTimeout(function(){a(".flyout_arrow_horiz:empty").each(function(){a(this).append(a.getSvgIcon("arrow_right").width(5).height(5))})},1)}});a("#rulers").on("dblclick",function(h){a("#base_unit_container").css({top:h.pageY-10,left:h.pageX-50,display:"block"})});a("#base_unit_container").on("mouseleave mouseenter",function(){t=setTimeout(function(){a("#base_unit_container").fadeOut(500)},200);
+event.type=="mouseover"&&clearTimeout(t)});a("#base_unit").on("change",function(){savePreferences()});b.canvas=g=new a.SvgCanvas(document.getElementById("svgcanvas"),curConfig);b.show_save_warning=false;b.paintBox={fill:null,stroke:null,canvas:null};d=navigator.platform.indexOf("Mac")>=0;var n=navigator.userAgent.indexOf("AppleWebKit")>=0,v=d?"meta+":"ctrl+",B=g.pathActions,q=g.undoMgr,L=svgedit.utilities,Q=curConfig.imgPath+"placeholder.svg",K=a("#workarea"),I=a("#cmenu_canvas"),S=null,R=1,N="toolbars",
+ga="";d||a(".shortcut").each(function(){var h=a(this).text();a(this).text(h.split("\u2318").join("Ctrl+"))});(function(){a("#dialog_container").draggable({cancel:"#dialog_content, #dialog_buttons *",containment:"window"});var h=a("#dialog_box"),m=a("#dialog_buttons"),o=function(u,E,H,J){a("#dialog_content").html("<p>"+E.replace(/\n/g,"</p><p>")+"</p>").toggleClass("prompt",u=="prompt");m.empty();var O=a('<input type="button" value="'+uiStrings.common.ok+'">').appendTo(m);u!="alert"&&a('<input type="button" value="'+
+uiStrings.common.cancel+'">').appendTo(m).on("click touchstart",function(){h.hide();H(false)});if(u=="prompt"){var W=a('<input type="text">').prependTo(m);W.val(J||"");W.bind("keydown","return",function(){O.trigger("click touchstart")})}u=="process"&&O.hide();h.show();O.on("click touchstart",function(){h.hide();var ba=u=="prompt"?W.val():true;H&&H(ba)}).focus();u=="prompt"&&W.focus()};a.alert=function(u,E){o("alert",u,E)};a.confirm=function(u,E){o("confirm",u,E)};a.process_cancel=function(u,E){o("process",
+u,E)};a.prompt=function(u,E,H){o("prompt",u,H,E)}})();var oa=function(){var h=a(".tool_button_current");if(h.length&&h[0].id!=="tool_select"){h.removeClass("tool_button_current").addClass("tool_button");a("#tool_select").addClass("tool_button_current").removeClass("tool_button")}g.setMode("select")},Y=null,V=false,ea=false,Ba="",ja=function(h,m){var o=g.getResolution(),u=K;a("#svgcanvas").position();if(u=g.setBBoxZoom(m,u.width()-15,u.height()-15)){var E=u.zoom;u=u.bbox;if(E<0.0010)wa({value:0.1});
+else{typeof animatedZoom!="undefined"&&h.cancelAnimationFrame(animatedZoom);var H=Date.now(),J=E-o.zoom;a("#zoom");var O=o.zoom,W=function(){var ba=(Date.now()-H)/500;ba=Math.pow(ba-1,3)+1;g.setZoom(O+J*ba);G();if(ba<1&&ba>-0.9)h.animatedZoom=requestAnimationFrame(W);else{a("#zoom").val(parseInt(E*100));a("option","#zoom_select").removeAttr("selected");a("option[value="+parseInt(E*100)+"]","#zoom_select").attr("selected","selected")}};W();g.getMode()=="zoom"&&u.width&&oa();xb()}}};a("#cur_context_panel").delegate("a",
+"click",function(){var h=a(this);h.attr("data-root")?g.leaveContext():g.setContext(h.text());g.clearSelection();return false});var ca=function(){b.paintBox.fill.prep();b.paintBox.stroke.prep()},U={},Z=function(h){a.each(h,function(m,o){var u=a(m).children(),E=m+"_show",H=a(E),J=false;u.addClass("tool_button").unbind("click mousedown mouseup").each(function(ba){var T=o[ba];U[T.sel]=T.fn;if(T.isDefault)J=ba;ba=function(fa){var ha=T;if(fa.type==="keydown"){var X=a(ha.parent+"_show").hasClass("tool_button_current"),
+qa=a(ha.parent+"_show").attr("data-curopt");a.each(h[T.parent],function(Aa,Ca){if(Ca.sel==qa)ha=!fa.shiftKey||!X?Ca:h[T.parent][Aa+1]||h[T.parent][0]})}if(a(this).hasClass("disabled"))return false;ra(E)&&ha.fn();var ua=ha.icon?a.getSvgIcon(ha.icon,true):a(ha.sel).children().eq(0).clone();ua[0].setAttribute("width",H.width());ua[0].setAttribute("height",H.height());H.children(":not(.flyout_arrow_horiz)").remove();H.append(ua).attr("data-curopt",ha.sel)};a(this).mouseup(ba);T.key&&a(document).bind("keydown",
+T.key[0]+" shift+"+T.key[0],ba)});if(J)H.attr("data-curopt",o[J].sel);else H.attr("data-curopt")||H.attr("data-curopt",o[0].sel);var O,W=a(E).position();a(m).css({left:W.left+34,top:W.top+77});H.mousedown(function(ba){a("#workarea").one("mousedown",function(){a("#tools_shapelib").hide()});a("#tools_shapelib").is(":visible")&&ra(E,false);if(H.hasClass("disabled"))return false;var T=a(m),fa=W.left+34,ha=T.width()*-1,X=T.data("shown_popop")?200:0;O=setTimeout(function(){H.data("isLibrary")?T.css("left",
+fa).show():T.css("left",ha).show().animate({left:fa},50);T.data("shown_popop",true)},X);ba.preventDefault()}).mouseup(function(){clearTimeout(O);var ba=a(this).attr("data-curopt");if(H.data("isLibrary")&&a(E.replace("_show","")).is(":visible"))ra(E,true);else ra(E)&&ba in U&&U[ba]()})});ma()},na=function(h,m){return a("<div>",{"class":"tools_flyout",id:h}).appendTo("#svg_editor").append(m)},pa=function(){a(".tools_flyout").each(function(){var h=a("#"+this.id+"_show"),m=h.offset();h=h.outerWidth();
+a(this).css({left:(m.left+h)*R,top:m.top})})},ma=function(){a(".tools_flyout").each(function(){var h=a("#"+this.id+"_show");if(!h.data("isLibrary")){var m=[];a(this).children().each(function(){m.push(this.title)});h[0].title=m.join(" / ")}})},la,ya=function(h,m,o){var u=null;if(h.indexOf("url(#")===0){h=(h=g.getRefElem(h))?h.cloneNode(true):a("#"+o+"_color defs *")[0];u={alpha:m};u[h.tagName]=h}else u=h.indexOf("#")===0?{alpha:m,solidColor:h.substr(1)}:{alpha:m,solidColor:"none"};return new a.jGraduate.Paint(u)},
+za=g.getResolution();if(curConfig.baseUnit!=="px"){za.w=svgedit.units.convertUnit(za.w)+curConfig.baseUnit;za.h=svgedit.units.convertUnit(za.h)+curConfig.baseUnit}var Ja=function(h){g.createLayer("background");cur_shape=g.addSvgElementFromJson({element:"rect",attr:{x:-1,y:-1,width:za.w+2,height:za.h+2,stroke:"none",id:"canvas_background",opacity:1,fill:h||"#fff",style:"pointer-events:none"}});g.setCurrentLayer("Layer 1");g.setCurrentLayerPosition("1")};document.getElementById("canvas_background")||
+Ja();document.getElementById("canvas_background").getAttribute("fill");var Ia=b.setImageURL=function(h){h||(h=Q);g.setImageURL(h);a("#image_url").val(h)},Fa=function(){var h=Y;if(h!=null&&!h.parentNode)h=null;if(V&&V[0]!=null&&!V[0].parentNode)V=false;var m=g.getCurrentDrawing().getCurrentLayerName(),o=g.getMode(),u=curConfig.baseUnit!=="px"?curConfig.baseUnit:null,E=o=="pathedit";if(E){a(".context_panel").hide();a("#path_node_panel").show();a("#stroke_panel").hide();m=B.getNodePoint();a("#tool_add_subpath").removeClass("push_button_pressed").addClass("tool_button");
+a("#tool_node_delete").toggleClass("disabled",!B.canDeleteNodes);zb("#tool_openclose_path",B.closed_subpath?"open_path":"close_path");if(m){E=a("#seg_type");if(u){m.x=svgedit.units.convertUnit(m.x);m.y=svgedit.units.convertUnit(m.y)}a("#path_node_x").val(Math.round(m.x));a("#path_node_y").val(Math.round(m.y));if(m.type){E.val(m.type).removeAttr("disabled");a("#seg_type_label").html(m.type==4?"Straight":"Curve")}else E.val(4).attr("disabled","disabled")}a("#tools_top").removeClass("multiselected");
+a("#stroke_panel").hide();a("#canvas_panel").hide()}else{var H=a("#cmenu_canvas li");a(".context_panel").hide();a(".menu_item","#edit_menu").addClass("disabled");a(".menu_item","#object_menu").addClass("disabled");if(V){V=V.filter(Boolean);(h=g.elementsAreSame(V)?V[0]:null)&&a("#tools_top").addClass("multiselected")}if(!h&&!V){a("#tools_top").removeClass("multiselected");a("#stroke_panel").hide();a("#canvas_panel").show()}if(h!=null){a("#stroke_panel").show();var J=h.nodeName,O=g.getRotationAngle(h);
+a("#angle").val(Math.round(O));O=g.getBlur(h);a("#blur").val(O);if(!E&&o!="pathedit"){a("#selected_panel").show();a(".action_selected").removeClass("disabled");var W,ba;if(["g","polyline","path"].indexOf(J)>=0)if(o=g.getStrokedBBox([h])){W=o.x;ba=o.y}if(u){W=svgedit.units.convertUnit(W);ba=svgedit.units.convertUnit(ba)}a("#"+J+"_x").val(Math.round(W));a("#"+J+"_y").val(Math.round(ba));if(J==="polyline"){a("#path_x").val(Math.round(W));a("#path_y").val(Math.round(ba))}["image","text","path","g","use"].indexOf(J)==
+-1&&a(".action_path_convert_selected").removeClass("disabled");J==="path"&&a(".action_path_selected").removeClass("disabled")}u=null;if(T==="a"){u=g.getHref(h);a("#g_panel").show()}if(h.parentNode.tagName==="a")if(!a(h).siblings().length){a("#a_panel").show();u=g.getHref(h.parentNode)}a("#tool_make_link, #tool_make_link").toggle(!u);u&&a("#link_url").val(u);u={g:[],a:[],rect:["rx","width","height","x","y"],image:["width","height","x","y"],circle:["cx","cy","r"],ellipse:["cx","cy","rx","ry"],line:["x1",
+"y1","x2","y2"],text:["x","y"],use:[],path:[]};var T=h.tagName;a(h).data("gsvg")&&a("#g_panel").show();if(T=="path"||T=="polyline")a("#path_panel").show();if(u[T]){u=u[T];a("#"+T+"_panel").show();T=="rect"?a("#cornerRadiusLabel").show():a("#cornerRadiusLabel").hide();a.each(u,function(fa,ha){var X=h.getAttribute(ha);if(curConfig.baseUnit!=="px"&&h[ha])X=svgedit.units.convertUnit(h[ha].baseVal.value);var qa=document.getElementById(T+"_"+ha);qa.value=Math.round(X)||0;qa.getAttribute("data-cursor")===
+"true"&&a.fn.dragInput.updateCursor(qa)});if(T=="text"){u=h.getAttribute("font-family");document.getElementById("font_family_dropdown").selectedIndex=3;a("#text_panel").css("display","inline");a("#tool_italic").toggleClass("active",g.getItalic());a("#tool_bold").toggleClass("active",g.getBold());a("#font_family").val(u);a("#font_size").val(h.getAttribute("font-size"));a("#text").val(h.textContent);a("#preview_font").text(u.split(",")[0].replace(/'/g,"")).css("font-family",u);g.addedNew&&setTimeout(function(){a("#text").focus().select()},
+100)}else if(T=="image")Ia(g.getHref(h));else if(T==="g"||T==="use"){a("#container_panel").show();a(".action_group_selected").removeClass("disabled");g.getTitle()}}H[(T==="g"?"en":"dis")+"ableContextMenuItems"]("#ungroup");H[(T==="g"||!V?"dis":"en")+"ableContextMenuItems"]("#group")}if(V){a("#multiselected_panel").show();a(".action_multi_selected").removeClass("disabled");H.enableContextMenuItems("#group").disableContextMenuItems("#ungroup")}h||H.disableContextMenuItems("#delete,#cut,#copy,#group,#ungroup,#move_front,#move_up,#move_down,#move_back");
+q.getUndoStackSize()>0?a("#tool_undo").removeClass("disabled"):a("#tool_undo").addClass("disabled");q.getRedoStackSize()>0?a("#tool_redo").removeClass("disabled"):a("#tool_redo").addClass("disabled");g.addedNew=false;if(h&&!E||V){a("#selLayerNames").removeAttr("disabled").val(m);I.enableContextMenuItems("#delete,#cut,#copy,#move_front,#move_up,#move_down,#move_back")}}};a("#text").on("focus",function(){});a("#text").on("blur",function(){});g.bind("selected",function(h,m){var o=g.getMode();o==="select"&&
+oa();if(o==="pathedit")return Fa();Y=m.length==1||m[1]==null?m[0]:null;m=m.filter(Boolean);V=m.length>=2?m:false;if(g.elementsAreSame(V))Y=V[0];if(Y!=null){a("#multiselected_panel").hide();if(Y!=null)switch(Y.tagName){case "use":a(".context_panel").hide();a("#use_panel").show();break;case "image":a(".context_panel").hide();a("#image_panel").show();break;case "foreignObject":a(".context_panel").hide();break;case "g":case "a":o=null;for(var u=Y.getElementsByTagName("*"),E=0,H=u.length;E<H;E++){var J=
+u[E].getAttribute("stroke-width");if(E===0)o=J;else if(o!==J)o=null}a("#stroke_width").val(o===null?"0":o);Fa();break;default:a("#stroke_width").val(Y.getAttribute("stroke-width")||0);o=Y.getAttribute("stroke-dasharray")||"none";a("option","#stroke_style").removeAttr("selected");a('#stroke_style option[value="'+o+'"]').attr("selected","selected");a("#stroke_style").trigger("change");a.fn.dragInput.updateCursor(a("#stroke_width")[0]);a.fn.dragInput.updateCursor(a("#blur")[0])}if(Y!=null){o=(Y.getAttribute("opacity")||
+1)*100;a("#group_opacity").val(o);a.fn.dragInput.updateCursor(a("#group_opacity")[0])}V.length&&a("#tools_top").addClass("multiselected")}else if(V.length){a(".context_panel").hide();a("#tools_top").removeClass("multiselected");a("#multiselected_panel").show()}else{a(".context_panel").hide();a("#canvas_panel").show();a("#tools_top").removeClass("multiselected")}g.runExtensions("selectedChanged",{elems:m,selectedElement:Y,multiselected:V})});g.bind("transition",function(h,m){var o=g.getMode(),u=m[0];
+if(u){V=m.length>=2&&m[1]!=null?m:null;if(!V)switch(o){case "rotate":o=g.getRotationAngle(u);a("#angle").val(Math.round(o));rotateCursor(o);a("#tool_reorient").toggleClass("disabled",o==0)}g.runExtensions("elementTransition",{elems:m})}});g.bind("changed",function(h,m){var o=g.getMode();o==="select"&&oa();for(var u=0;u<m.length;++u){var E=m[u];if(E&&E.tagName==="svg")G();else if(E&&Y&&Y.parentNode==null)Y=E}b.show_save_warning=true;Fa();if(Y&&o==="select"){b.paintBox.fill.update();b.paintBox.stroke.update()}g.runExtensions("elementChanged",
+{elems:m})});g.bind("saved",function(h,m){b.show_save_warning=false;m='<?xml version="1.0"?>\n'+m;var o=navigator.userAgent;if(~o.indexOf("MSIE"))Eb(0,true);else{var u=h.open("data:image/svg+xml;base64,"+L.encode64(m)),E=a.pref("save_notice_done");if(E!=="all"){var H=uiStrings.notification.saveFromBrowser.replace("%s","SVG");if(o.indexOf("Gecko/")!==-1)if(m.indexOf("<defs")!==-1){H+="\n\n"+uiStrings.notification.defsFailOnSave;a.pref("save_notice_done","all");E="all"}else a.pref("save_notice_done",
+"part");else a.pref("save_notice_done","all");E!=="part"&&u.alert(H)}}});g.bind("exported",function(h,m){var o=m.issues;a("#export_canvas").length||a("<canvas>",{id:"export_canvas"}).hide().appendTo("body");var u=a("#export_canvas")[0];u.width=g.contentW;u.height=g.contentH;canvg(u,m.svg,{renderCallback:function(){var E=u.toDataURL("image/png");S.location.href=E;if(a.pref("export_notice_done")!=="all"){E=uiStrings.notification.saveFromBrowser.replace("%s","PNG");if(o.length)E+="\n\n"+uiStrings.notification.noteTheseIssues+
+"\n \u2022 "+o.join("\n \u2022 ");a.pref("export_notice_done","all");S.alert(E)}}})});g.bind("zoomed",ja);g.bind("contextset",function(h,m){var o="";if(m){var u="";o='<a href="#" data-root="y">'+g.getCurrentDrawing().getCurrentLayerName()+"</a>";a(m).parentsUntil("#svgcontent > g").andSelf().each(function(){if(this.id){u+=" > "+this.id;o+=this!==m?' > <a href="#">'+this.id+"</a>":" > "+this.id}});Ba=u}else Ba=null;a("#cur_context_panel").toggle(!!m).html(o)});g.bind("extension_added",function(h,m){function o(){if(la){clearTimeout(la);
+la=null}E||(la=setTimeout(function(){E=true;Mb(w.iconsize)},50))}var u=false,E=false,H=true,J=function(){if(m.callback&&!u&&H){u=true;m.callback()}},O=[];m.context_tools&&a.each(m.context_tools,function(ha,X){var qa=X.container_id?' id="'+X.container_id+'"':"",ua=a("#"+X.panel);ua.length||(ua=a("<div>",{id:X.panel}).appendTo("#tools_top").hide());switch(X.type){case "tool_button":var Aa='<div class="tool_button">'+X.id+"</div>",Ca=a(Aa).appendTo(ua);X.events&&a.each(X.events,function(Na,jb){a(Ca).bind(Na,
+jb)});break;case "select":Aa="<label"+qa+'><select id="'+X.id+'">';a.each(X.options,function(Na,jb){Aa+='<option value="'+Na+'"'+(Na==X.defval?" selected":"")+">"+jb+"</option>"});Aa+="</select></label>";var Pa=a(Aa).appendTo(ua).find("select");a.each(X.events,function(Na,jb){a(Pa).bind(Na,jb)});break;case "button-select":Aa='<div id="'+X.id+'" class="dropdown toolset" title="'+X.title+'"><div id="cur_'+X.id+'" class="icon_label"></div><button></button></div>';qa=a('<ul id="'+X.id+'_opts"></ul>').appendTo("#option_lists");
+X.colnum&&qa.addClass("optcols"+X.colnum);a(Aa).appendTo(ua).children();O.push({elem:"#"+X.id,list:"#"+X.id+"_opts",title:X.title,callback:X.events.change,cur:"#cur_"+X.id});break;case "input":Aa="<label"+qa+'><span id="'+X.id+'_label">'+X.label+':</span><input id="'+X.id+'" title="'+X.title+'" size="'+(X.size||"4")+'" value="'+(X.defval||"")+'" type="text"/></label>';var Qa=a(Aa).appendTo(ua).find("input");X.spindata&&Qa.SpinButton(X.spindata);X.events&&a.each(X.events,function(Na,jb){Qa.bind(Na,
+jb)})}});if(m.buttons){var W={},ba={},T=m.svgicons,fa={};a.each(m.buttons,function(ha,X){for(var qa,ua=X.id,Aa=ha;a("#"+ua).length;)ua=X.id+"_"+ ++Aa;if(T){W[ua]=X.icon;Aa=X.svgicon?X.svgicon:X.id;if(X.type=="app_menu")ba["#"+ua+" > div"]=Aa;else ba["#"+ua]=Aa}else qa=X.type=="menu"?"":a('<img src="'+X.icon+'">');var Ca,Pa;switch(X.type){case "mode_flyout":case "mode":Ca="tool_button";if(X.cls)Ca+=" "+X.cls;Pa="#tools_left";break;case "context":Ca="tool_button";Pa="#"+X.panel;a(Pa).length||a("<div>",
+{id:X.panel}).appendTo("#tools_top");break;case "menu":Ca="menu_item tool_button";Pa="#"+(X.after||X.panel);break;case "app_menu":Ca="";Pa=X.parent||"#main_menu ul";a(Pa).length||a("<div>",{id:X.panel}).appendTo("#tools_top")}var Qa=a(X.list||X.type=="app_menu"?"<li/>":"<div/>").attr("id",ua).attr("title",X.title).addClass(Ca);if(!X.includeWith&&!X.list){if("position"in X)a(Pa).children().eq(X.position).before(Qa);else X.type!="menu"||!X.after?Qa.appendTo(Pa):a(Pa).after(Qa);if(X.type=="mode_flyout"){Aa=
+a(Qa);Ca=Aa.parent();if(!Aa.parent().hasClass("tools_flyout")){var Na=Aa[0].id.replace("tool_","tools_"),jb=Aa.clone().attr("id",Na+"_show").append(a("<div>",{"class":"flyout_arrow_horiz"}));Aa.before(jb);Ca=na(Na,Aa);Ca.data("isLibrary",true);jb.data("isLibrary",true)}ba["#"+Na+"_show"]=X.id;ua=fa["#"+Ca[0].id]=[{sel:"#"+ua,fn:X.events.click,icon:X.id,isDefault:true},ub]}else if(X.type=="app_menu"||X.type=="menu")Qa.append(X.title)}else if(X.list){Qa.addClass("push_button");a("#"+X.list+"_opts").append(Qa);
+if(X.isDefault){a("#cur_"+X.list).append(Qa.children().clone());Aa=X.svgicon?X.svgicon:X.id;ba["#cur_"+X.list]=Aa}}else if(X.includeWith){Pa=X.includeWith;Aa=a(Pa.button);Ca=Aa.parent();if(!Aa.parent().hasClass("tools_flyout")){Na=Aa[0].id.replace("tool_","tools_");jb=Aa.clone().attr("id",Na+"_show").append(a("<div>",{"class":"flyout_arrow_horiz"}));Aa.before(jb);Ca=na(Na,Aa)}var ub=C.getButtonData(Pa.button);if(Pa.isDefault)ba["#"+Na+"_show"]=X.id;ua=fa["#"+Ca[0].id]=[{sel:"#"+ua,fn:X.events.click,
+icon:X.id,key:X.key,isDefault:X.includeWith?X.includeWith.isDefault:0},ub];Na="position"in Pa?Pa.position:"last";ub=Ca.children().length;if(!isNaN(Na)&&Na>=0&&Na<ub)Ca.children().eq(Na).before(Qa);else{Ca.append(Qa);ua.reverse()}}T||Qa.append(qa);X.list||a.each(X.events,function(Cb,Jb){if(Cb=="click")if(X.type=="mode"){X.includeWith?Qa.bind(Cb,Jb):Qa.bind(Cb,function(){ra(Qa)&&Jb()});if(X.key){a(document).bind("keydown",X.key,Jb);X.title&&Qa.attr("title",X.title+" ["+X.key+"]")}}else Qa.bind(Cb,Jb);
+else Qa.bind(Cb,Jb)});Z(fa)});a.each(O,function(){vb(this.elem,this.list,this.callback,{seticon:true})});if(T)H=false;a.svgIcons(T,{w:27,h:27,id_match:false,no_img:!n,fallback:W,placement:ba,callback:function(){w.iconsize&&w.iconsize!="m"&&o();H=true;J()}})}J()});g.textActions.setInputElem(a("#text")[0]);var Ma='<div class="palette_item transparent" data-rgb="none"></div>\t\t\t\t\t\t\t\t<div class="palette_item black" data-rgb="#000000"></div>\t\t\t\t\t\t\t\t<div class="palette_item white" data-rgb="#ffffff"></div>';
+["#444444","#482816","#422C10","#3B2F0E","#32320F","#293414","#1F361B","#153723","#0C372C","#083734","#0E353B","#1A333F","#273141","#332D40","#3E2A3C","#462735","#4B252D","#4D2425","#4C261D","#666666","#845335","#7B572D","#6F5C2A","#62612C","#546433","#46673D","#396849","#306856","#2D6862","#33666C","#426373","#535F75","#645A73","#74556D","#805064","#884D58","#8B4D4B","#894F3F","#999999","#C48157","#B8874D","#A98E49","#97944B","#849854","#729C62","#619E73","#559E84","#529D94","#5B9BA2","#6D97AB",
+"#8391AE","#9A8AAB","#AF84A3","#BF7E96","#C97A86","#CE7975","#CC7C65","#BBBBBB","#FFB27C","#FABA6F","#E6C36A","#CFCA6D","#B8D078","#A0D58A","#8CD79F","#7DD8B5","#7AD6CA","#84D3DB","#9ACEE6","#B6C7EA","#D3BEE7","#EDB6DC","#FFAFCC","#FFAAB8","#FFA9A2","#FFAC8D","#DDDDDD","#FFE7A2","#FFF093","#FFFA8D","#FFFF91","#EEFF9F","#D1FFB4","#B9FFCE","#A8FFE9","#A4FFFF","#B1FFFF","#CBFFFF","#EDFFFF","#FFF5FF","#FFEBFF","#FFE2FF","#FFDCEC","#FFDBD2","#FFDFB8"].forEach(function(h){Ma+='<div class="palette_item" style="background-color: '+
+h+';" data-rgb="'+h+'"></div>'});a("#palette").append(Ma);var Da=a("#tool_angle_indicator");a("#tool_reorient");rotateCursor=function(h){h="rotate("+h+"deg)";Da.css({"-webkit-transform":h,"-moz-transform":h,"-o-transform":h,"-ms-transform":h,transform:h})};var wa=function(h){var m=h.value/100;if(m<0.0010)h.value=0.1;else{h=g.getZoom();var o=K;ja(window,{width:0,height:0,x:(o[0].scrollLeft+o.width()/2)/h,y:(o[0].scrollTop+o.height()/2)/h,zoom:m},true)}};a("#stroke_style").change(function(){g.setStrokeAttr("stroke-dasharray",
+a(this).val());a("#stroke_style_label").html(this.options[this.selectedIndex].text);window.opera&&a("<p/>").hide().appendTo("body").remove()});a("#seg_type").change(function(){g.setSegType(a(this).val());a("#seg_type_label").html(this.options[this.selectedIndex].text)});a("select").change(function(){a(this).blur()});a("#font_family").change(function(){g.setFontFamily(this.value)});a("#text").keyup(function(){g.setTextContent(this.value)});changeAttribute=function(h){var m=h.getAttribute("data-attr"),
+o=h.getAttribute("data-multiplier")||1;o=parseFloat(o);o=h.value*o;if(!svgedit.units.isValidUnit(m,o,Y)){a.alert(uiStrings.notification.invalidAttrValGiven);h.value=Y.getAttribute(m);return false}g.changeSelectedAttributeNoUndo(m,o)};picking=false;a(document).on("mouseup",function(){picking=false});a("#palette").on("mousemove mousedown touchstart touchmove",".palette_item",function(h){h.preventDefault();if(h.type=="mousedown")picking=true;if(picking){var m=a("#tool_stroke").hasClass("active"),o=m?
+"stroke":"fill",u=a(this).attr("data-rgb"),E=null,H=true;if(h.type=="mousedown")H=false;if(u==="transparent"||u==="initial"||u==="#none"){u="none";E=new a.jGraduate.Paint}else E=new a.jGraduate.Paint({alpha:100,solidColor:u.substr(1)});b.paintBox[o].setPaint(E);if(m){g.setColor("stroke",u,H);u!="none"&&g.getStrokeOpacity()!=1&&g.setPaintOpacity("stroke",1)}else{g.setColor("fill",u,H);u!="none"&&g.getFillOpacity()!=1&&g.setPaintOpacity("fill",1)}}}).bind("contextmenu",function(h){h.preventDefault()});
+a("#toggle_stroke_tools").toggle(function(){a(".stroke_tool").css("display","table-cell");a(this).addClass("expanded");Db()},function(){a(".stroke_tool").css("display","none");a(this).removeClass("expanded");Db()});var ra=function(h,m){if(a(h).hasClass("disabled"))return false;if(a(h).parent().hasClass("tools_flyout"))return true;var o=o||"normal";m||a(".tools_flyout").fadeOut(o);a("#styleoverrides").text("");a(".tool_button_current").removeClass("tool_button_current").addClass("tool_button");a(h).addClass("tool_button_current").removeClass("tool_button");
+return true};(function(){var h=null,m=null,o=K[0],u=false,E=false;a("#svgcanvas").on("mousemove mouseup touchend",function(H){if(u!==false){o.scrollLeft-=H.clientX-h;o.scrollTop-=H.clientY-m;h=H.clientX;m=H.clientY;if(H.type==="mouseup"||H.type==="touchend")u=false;return false}}).on("mousedown touchmove",function(H){if(H.button===1||E===true||H.originalEvent.touches&&H.originalEvent.touches.length>=2){u=true;h=H.clientX;m=H.clientY;return false}});a(window).mouseup(function(){u=false});a(document).bind("keydown",
+"space",function(H){H.preventDefault();g.spaceKey=E=true}).bind("keyup","space",function(H){H.preventDefault();g.spaceKey=E=false}).bind("keydown","alt",function(){g.getMode()==="zoom"&&K.addClass("out")}).bind("keyup","alt",function(){g.getMode()==="zoom"&&K.removeClass("out")})})();var va=a(".menu"),kb=function(h){h.target.style.background="#fff";setTimeout(function(){h.target.style.background="#ddd"},50);setTimeout(function(){h.target.style.background="#fff"},150);setTimeout(function(){h.target.style.background=
+"#ddd"},200);setTimeout(function(){h.target.style.background=""},200);setTimeout(function(){a("#menu_bar").removeClass("active")},220);return false};a(".menu_item").on("mousedown touchstart",function(h){kb(h)});a("svg, body").on("mousedown  touchstart",function(h){if(!(h.target.nodeName&&h.target.nodeName.toLowerCase()==="input"))if(!a(h.target).hasClass("menu_title")&&!a(h.target).parent().hasClass("menu_title"))!a(h.target).hasClass("disabled")&&a(h.target).hasClass("menu_item")?kb(h):a("#menu_bar").removeClass("active")});
+a("#workarea").on("mousewheel",function(h,m,o,u){if(h.altKey){h.preventDefault();zoom=parseInt(a("#zoom").val());a("#zoom").val(parseInt(zoom+u*10)).change()}});a(".menu_title").on("mousedown",function(){a("#tools_shapelib").hide();a("#menu_bar").toggleClass("active");va.removeClass("open");a(this).parent().addClass("open")}).on("mouseover",function(){va.removeClass("open");a(this).parent().addClass("open")});b.addDropDown=function(h,m,o){if(a(h).length!=0){var u=a(h).find("button"),E=a(h).find("ul").attr("id",
+a(h)[0].id+"-list");o||a("#option_lists").append(E);var H=false;o&&a(h).addClass("dropup");E.find("li").bind("mouseup",m);a(window).mouseup(function(){if(!H){u.removeClass("down");E.hide()}H=false});u.bind("mousedown",function(){if(u.hasClass("down")){u.removeClass("down");E.hide()}else{u.addClass("down");if(!o){var J=a(h).offset();E.css({top:J.top,left:J.left-110})}E.show();H=true}}).hover(function(){H=true}).mouseout(function(){H=false})}};var vb=function(h,m,o,u){var E=a(h);m=a(m);var H=false,
+J=u.dropUp;J&&a(h).addClass("dropup");m.find("li").bind("mouseup",function(){if(u.seticon){zb("#cur_"+E[0].id,a(this).children());a(this).addClass("current").siblings().removeClass("current")}o.apply(this,arguments)});a(window).mouseup(function(){if(!H){E.removeClass("down");m.hide();m.css({top:0,left:0})}H=false});m.height();a(h).bind("mousedown",function(){var O=a(h).offset();if(J){O.top-=m.height();O.left+=8}else O.top+=a(h).height();a(m).offset(O);if(E.hasClass("down")){E.removeClass("down");
+m.hide();m.css({top:0,left:0})}else{E.addClass("down");m.show();H=true;return false}}).hover(function(){H=true}).mouseout(function(){H=false});u.multiclick&&m.mousedown(function(){H=true})};a("#font_family_dropdown").change(function(){var h=this.options[this.selectedIndex].value,m=this.options[this.selectedIndex].text;a("#preview_font").html(m).css("font-family",h);a("#font_family").val(h).change()});a("div","#position_opts").each(function(){this.addEventListener("mouseup",function(){var h=this.id.replace("tool_pos",
+"").charAt(0);g.alignSelectedElements(h,"page")})});(function(){var h,m=function(){a(h).blur()};a("#svg_editor").find("button, select, input:not(#text)").focus(function(){h=this;N="toolbars";K.mousedown(m)}).blur(function(){N="canvas";K.unbind("mousedown",m);g.getMode()=="textedit"&&a("#text").focus()})})();var cb=function(){ra("#tool_select")&&g.setMode("select")},Ta=function(){ra("#tool_fhpath")&&g.setMode("fhpath")},Va=function(){ra("#tool_line")&&g.setMode("line")},Ga=function(){ra("#tool_rect")&&
+g.setMode("rect")},ta=function(){ra("#tool_ellipse")&&g.setMode("ellipse")},$a=function(){ra("#tool_image")&&g.setMode("image")},Ka=function(){ra("#tool_zoom")&&g.setMode("zoom")},Sa=function(){if(ra("#tool_zoom")){yb();oa()}},Ha=function(){ra("#tool_text")&&g.setMode("text")},db=function(){ra("#tool_path")&&g.setMode("path")},lb=function(){if(Y!=null||V)g.deleteSelectedElements();B.getNodePoint()&&B.deletePathNode()},Ua=function(){if(Y!=null||V){xa(a("#edit_menu"));g.cutSelectedElements()}},Xa=function(){if(Y!=
+null||V){xa(a("#edit_menu"));g.copySelectedElements()}},wb=function(){xa(a("#edit_menu"));var h=g.getZoom(),m=(K[0].scrollLeft+K.width()/2)/h-g.contentW;h=(K[0].scrollTop+K.height()/2)/h-g.contentH;g.pasteElements("point",m,h)},sa=function(){if(Y!=null){xa(a("#object_menu"));g.moveToTopSelectedElement()}},hb=function(){if(Y!=null){xa(a("#object_menu"));g.moveToBottomSelectedElement()}},eb=function(){if(Y!=null){xa(a("#object_menu"));g.moveUpDownSelected("Up")}},sb=function(){if(Y!=null){xa(a("#object_menu"));
+g.moveUpDownSelected("Down")}},ib=function(h){if(Y!=null){xa(a("#object_menu"));g.moveUpDownSelected(h)}},ab=function(){if(Y!=null){g.convertToPath();var h=g.getSelectedElems();g.selectorManager.requestSelector(h[0]).reset(h[0]);g.selectorManager.requestSelector(h[0]).selectorRect.setAttribute("display","none");g.setMode("pathedit");B.toEditMode(h[0]);g.clearSelection();Fa()}},ob=function(){Y!=null&&B.reorient()},pb=function(){if(Y!=null||V)a.prompt(uiStrings.notification.enterNewLinkURL,"http://",
+function(h){h&&g.makeHyperlink(h)})},fb=function(h,m){if(Y!=null||V){if(curConfig.gridSnapping){var o=g.getZoom()*curConfig.snappingStep;h*=o;m*=o}a("input").blur();g.moveSelectedElements(h,m)}},tb=function(){},ia=function(){B.getNodePoint()&&B.clonePathNode()},aa=function(){B.getNodePoint()&&B.deletePathNode()},ka=function(){var h=a("#tool_add_subpath"),m=!h.hasClass("push_button_pressed");m?h.addClass("push_button_pressed").removeClass("tool_button"):h.removeClass("push_button_pressed").addClass("tool_button");
+B.addSubPath(m)},M=function(){B.opencloseSubPath()},P=function(){g.cycleElement(1)},da=function(){g.cycleElement(0)},Ea=function(h,m){if(!(Y==null||V)){h||(m*=-1);var o=a("#angle").val()*1+m;g.setRotationAngle(o);Fa()}},Oa=function(){var h=curConfig.dimensions;a.confirm(uiStrings.notification.QwantToClear,function(m){if(m){oa();g.clear();g.setResolution(h[0],h[1]);G(true);yb();Fa();ca();g.runExtensions("onNewDocument")}})},Wa=function(){g.setBold(!g.getBold());Fa()},Za=function(){g.setItalic(!g.getItalic());
+Fa()},nb=function(){if(!c.pngsave){var h=uiStrings.notification.loadingImage;S=window.open("data:text/html;charset=utf-8,<title>"+h+"</title><h1>"+h+"</h1>")}window.canvg?g.rasterExport():a.getScript("canvg/rgbcolor.js",function(){a.getScript("canvg/canvg.js",function(){g.rasterExport()})})},Ra=function(){g.open()},mb=function(){},xa=function(h){var m=h.prev();m.css({background:"white",color:"black"});setTimeout(function(){m.removeAttr("style")},200)},qb=function(){if(q.getUndoStackSize()>0){xa(a("#edit_menu"));
+q.undo()}},rb=function(){if(q.getRedoStackSize()>0){xa(a("#edit_menu"));q.redo()}},Bb=function(){if(V){xa(a("#object_menu"));g.groupSelectedElements()}else if(Y){xa(a("#object_menu"));g.ungroupSelectedElement()}},Fb=function(){xa(a("#edit_menu"));g.cloneSelectedElements(20,20)},bb=function(){var h=this.id.replace("tool_align","").charAt(0);g.alignSelectedElements(h,a("#align_relative_to").val())},La=function(){var h=document.querySelector("#tool_stroke rect");a("#tool_stroke").toggleClass("active");
+a("#tool_fill").toggleClass("active");var m=document.querySelector("#tool_fill rect"),o=m.getAttribute("fill"),u=h.getAttribute("fill");h=parseFloat(h.getAttribute("stroke-opacity"));if(isNaN(h))h=100;m=parseFloat(m.getAttribute("fill-opacity"));if(isNaN(m))m=100;u=ya(u,h,"stroke");o=ya(o,m,"fill");b.paintBox.fill.setPaint(u,true);b.paintBox.stroke.setPaint(o,true)},yb=function(h){var m=g.getResolution();h=h?m.zoom*h:1;a("#zoom").val(h*100);g.setZoom(h);xb();G(true)},Hb=function(){xa(a("#view_menu"));
+!a("#tool_wireframe").hasClass("push_button_pressed")?a("#tool_wireframe").addClass("push_button_pressed"):a("#tool_wireframe").removeClass("push_button_pressed");K.toggleClass("wireframe");if(!k){var h=a("#wireframe_rules");h.length?h.empty():a('<style id="wireframe_rules"></style>').appendTo("head");xb()}},Gb=function(){xa(a("#view_menu"));var h=!a("#tool_snap").hasClass("push_button_pressed");h?a("#tool_snap").addClass("push_button_pressed"):a("#tool_snap").removeClass("push_button_pressed");curConfig.gridSnapping=
+h},Ib=function(){window.self!=window.top&&top.exit_fullscreen()},Lb=function(){xa(a("#view_menu"));if(a("#tool_rulers").hasClass("push_button_pressed")){a("#tool_rulers").removeClass("push_button_pressed");a("#show_rulers").attr("checked",false);curConfig.showRulers=false}else{a("#tool_rulers").addClass("push_button_pressed");a("#show_rulers").attr("checked",true);curConfig.showRulers=true}a("#rulers").toggle(!!curConfig.showRulers)},xb=function(){if(!k){var h="#workarea.wireframe #svgcontent * { stroke-width: "+
+1/g.getZoom()+"px; }";a("#wireframe_rules").text(K.hasClass("wireframe")?h:"")}},Eb=function(h,m){if(!ea){xa(a("#view_menu"));ea=true;a("#save_output_btns").toggle(!!m);a("#tool_source_back").toggle(!m);var o=ga=g.getSvgString();a("#svg_source_textarea").val(o);a("#svg_source_editor").fadeIn();a("#svg_source_textarea").focus().select()}},Kb=function(){if(ea){if(g.setSvgString(a("#svg_source_textarea").val())){g.clearSelection();Ya();yb();ca()}else a.confirm(uiStrings.notification.QerrorsRevertToSource,
+function(h){if(!h)return false;g.clearSelection();Ya();yb();ca()});oa()}},zb=b.setIcon=function(h,m){var o=typeof m==="string"?a.getSvgIcon(m,true):m.clone();o?a(h).find("img").replaceWith(o):console.log("NOTE: Icon image missing: "+m)},gb;gb=function(){var h=/^(Moz|Webkit|Khtml|O|ms|Icab)(?=[A-Z])/,m=document.getElementsByTagName("script")[0],o;for(o in m.style)if(h.test(o))return o.match(h)[0];if("WebkitOpacity"in m.style)return"Webkit";if("KhtmlOpacity"in m.style)return"Khtml";return""}();var Nb=
+function(h,m){gb.toLowerCase();var o=["top","left","bottom","right"];h.each(function(){for(var u=a(this),E=u.outerWidth()*(m-1),H=u.outerHeight()*(m-1),J=0;J<4;J++){var O=o[J],W=u.data("orig_margin-"+O);if(W==null){W=parseInt(u.css("margin-"+O));u.data("orig_margin-"+O,W)}W=W*m;if(O==="right")W+=E;else if(O==="bottom")W+=H;u.css("margin-"+O,W)}})},Mb=b.setIconSize=function(h,m){if(!(h==w.size&&!m)){var o=a("#tools_top .toolset, #editor_panel > *, #history_panel > *,\t\t\t\t#main_button, #tools_left > *, #path_node_panel > *, #multiselected_panel > *,\t\t\t\t#g_panel > *, #tool_font_size > *, .tools_flyout"),
+u=1;u=typeof h=="number"?h:{s:0.75,m:1,l:1.25,xl:1.5}[h];b.tool_scale=R=u;pa();var E=o.parents(":hidden");E.css("visibility","hidden").show();Nb(o,u);E.css("visibility","visible").hide();o=a("#tool_size_rules");if(o.length)o.empty();else o=a('<style id="tool_size_rules"></style>').appendTo("head");if(h!="m"){var H="";a.each(cssResizeRules,function(J,O){J="#svg_editor "+J.replace(/,/g,", #svg_editor");H+=J+"{";a.each(O,function(W,ba){if(typeof ba==="number")var T=ba*u+"px";else if(ba[h]||ba.all)T=
+ba[h]||ba.all;H+=W+":"+T+";"});H+="}"});E="-"+gb.toLowerCase()+"-";H+="#tools_top .toolset, #editor_panel > *, #history_panel > *,\t\t\t\t#main_button, #tools_left > *, #path_node_panel > *, #multiselected_panel > *,\t\t\t\t#g_panel > *, #tool_font_size > *, .tools_flyout{"+E+"transform: scale("+u+");} #svg_editor div.toolset .toolset {"+E+"transform: scale(1); margin: 1px !important;} #svg_editor .ui-slider {"+E+"transform: scale("+1/u+");}";o.text(H)}pa()}},Ab=function(){a("#dialog_box").hide();
+if(ea){if(ea)ga!==a("#svg_source_textarea").val()?a.confirm(uiStrings.notification.QignoreSourceChanges,function(h){h&&Ya()}):Ya();Db()}else Ba&&g.leaveContext()},Ya=function(){a("#svg_source_editor").hide();ea=false;a("#svg_source_textarea").blur()};a(window).width();a(window).height();var Db=a.noop;a(window).resize(function(){G()});(function(){K.scroll(function(){if(a("#ruler_x").length!=0)a("#ruler_x")[0].scrollLeft=K[0].scrollLeft;if(a("#ruler_y").length!=0)a("#ruler_y")[0].scrollTop=K[0].scrollTop})})();
+a("#url_notice").click(function(){a.alert(this.title)});a("#change_image_url").click(function(){var h=g.getHref(Y);h=h.indexOf("data:")===0?"":h;a.prompt(uiStrings.notification.enterNewImgURL,h,function(m){m&&Ia(m)})});var e=function(h){var m=h[0].id=="stroke_color"?"stroke":"fill",o=h[0].id=="canvas_color";if(o)m="canvas";var u=b.paintBox[m].paint;h=m=="stroke"?"Pick a Stroke Paint and Opacity":"Pick a Fill Paint and Opacity";o=o?{right:175,top:50}:{left:50,bottom:50};a("#color_picker").draggable({cancel:".jGraduate_tabs, .jGraduate_colPick, .jGraduate_gradPick, .jPicker",
+containment:"window"}).removeAttr("style").css(o).jGraduate({paint:u,window:{pickerTitle:h},images:{clientPath:curConfig.jGraduatePath},newstop:"inverse"},function(E){u=new a.jGraduate.Paint(E);b.paintBox[m].setPaint(u);g.setPaint(m,u);a("#color_picker").hide()},function(){a("#color_picker").hide()})};d=function(h,m){var o=document.getElementById("canvas_background"),u={color:"fff",opacity:1};if(m=="stroke")u=curConfig.initStroke;if(m=="fill")u=curConfig.initFill;if(m=="canvas"&&o)if(o=o.getAttribute("fill").match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/))u=
+{color:("0"+parseInt(o[1],10).toString(16)).slice(-2)+("0"+parseInt(o[2],10).toString(16)).slice(-2)+("0"+parseInt(o[3],10).toString(16)).slice(-2),opacity:1};o=(new DOMParser).parseFromString('<svg xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"\t\t\t\t\tfill="#'+u.color+'" opacity="'+u.opacity+'"/>\t\t\t\t\t<defs><linearGradient id="gradbox_"/></defs></svg>',"text/xml").documentElement;o=a(h)[0].appendChild(document.importNode(o,true));m==="canvas"?o.setAttribute("width",60.5):
+o.setAttribute("width","100%");this.rect=o.firstChild;this.defs=o.getElementsByTagName("defs")[0];this.grad=this.defs.firstChild;this.paint=new a.jGraduate.Paint({solidColor:u.color});this.type=m;this.setPaint=function(E,H){this.paint=E;var J="none",O=E.type,W=E.alpha/100;switch(O){case "solidColor":J=E[O]=="none"||E[O]=="one"?"none":"#"+E[O];break;case "linearGradient":case "radialGradient":this.defs.removeChild(this.grad);this.grad=this.defs.appendChild(E[O]);J="url(#"+(this.grad.id="gradbox_"+
+this.type)+")"}this.rect.setAttribute("fill",J);this.rect.setAttribute("opacity",W);if(this.type=="canvas")if(O=document.getElementById("canvas_background")){za=g.getResolution();O.setAttribute("x",-1);O.setAttribute("y",-1);O.setAttribute("width",za.w+2);O.setAttribute("height",za.h+2);J.indexOf("url")==-1&&O.setAttribute("fill",J)}else Ja(J);if(H){g.setColor(this.type,J,true);g.setPaintOpacity(this.type,W,true)}};this.update=function(E){if(Y){var H=this.type;switch(Y.tagName){case "use":case "image":case "foreignObject":return;
+case "g":case "a":for(var J=null,O=Y.getElementsByTagName("*"),W=0,ba=O.length;W<ba;W++){var T=O[W].getAttribute(H);if(W===0)J=T;else if(J!==T){J=null;break}}if(J===null){O=null;return}O=J;J=1;break;default:J=parseFloat(Y.getAttribute(H+"-opacity"));if(isNaN(J))J=1;O=H==="fill"?"black":"none";O=Y.getAttribute(H)||O}if(E){g.setColor(H,O,true);g.setPaintOpacity(H,J,true)}J*=100;this.setPaint(ya(O,J,H))}};this.prep=function(){switch(this.paint.type){case "linearGradient":case "radialGradient":var E=
+new a.jGraduate.Paint({copy:this.paint});g.setPaint(m,E)}}};b.paintBox.fill=new d("#fill_color","fill");b.paintBox.stroke=new d("#stroke_color","stroke");b.paintBox.canvas=new d("#canvas_color","canvas");a("#stroke_width").val(curConfig.initStroke.width);a("#group_opacity").val(curConfig.initOpacity*100);d=b.paintBox.fill.rect.cloneNode(false);d.setAttribute("style","vector-effect:non-scaling-stroke");var k=d.style.vectorEffect==="non-scaling-stroke";d.removeAttribute("style");d=b.paintBox.fill.rect.ownerDocument.createElementNS("http://www.w3.org/2000/svg",
+"feGaussianBlur");typeof d.stdDeviationX==="undefined"&&a("#tool_blur").hide();a(d).remove();setTimeout(function(){g.embedImage("images/placeholder.svg",function(h){if(!h){a("#image_save_opts [value=embed]").attr("disabled","disabled");a("#image_save_opts input").val(["ref"]);w.img_save="ref";a("#image_opt_embed").css("color","#666").attr("title",uiStrings.notification.featNotSupported)}})},1E3);a("#tool_fill").click(function(){if(a("#tool_fill").hasClass("active"))e(a("#fill_color"));else{a("#tool_fill").addClass("active");
+a("#tool_stroke").removeClass("active")}});a("#tool_stroke").on("click",function(){if(a("#tool_stroke").hasClass("active"))e(a("#stroke_color"));else{a("#tool_stroke").addClass("active");a("#tool_fill").removeClass("active")}});a("#tool_canvas").on("click touchstart",function(){e(a("#canvas_color"))});a("#tool_stroke").on("touchstart",function(){a("#tool_stroke").addClass("active");a("#tool_fill").removeClass("active");e(a("#stroke_color"))});a("#tool_fill").on("touchstart",function(){a("#tool_fill").addClass("active");
+a("#tool_stroke").removeClass("active");e(a("#fill_color"))});a("#zoom_select").on("change",function(){var h=this.options[this.selectedIndex].text;h=h.split("%")[0];a("#zoom").val(h).trigger("change")});a(".push_button").mousedown(function(){a(this).hasClass("disabled")||a(this).addClass("push_button_pressed").removeClass("push_button")}).mouseout(function(){a(this).removeClass("push_button_pressed").addClass("push_button")}).mouseup(function(){a(this).removeClass("push_button_pressed").addClass("push_button")});
+a(window).bind("load resize",function(){K.css("line-height",K.height()+"px")});var l=function(){var h=a("#canvas_width"),m=a("#canvas_height"),o=h.val(),u=m.val();if(o!="fit"&&!svgedit.units.isValidUnit("width",o)){a.alert(uiStrings.notification.invalidAttrValGiven);h.parent().addClass("error");return false}h.parent().removeClass("error");if(u!="fit"&&!svgedit.units.isValidUnit("height",u)){a.alert(uiStrings.notification.invalidAttrValGiven);m.parent().addClass("error");return false}m.parent().removeClass("error");
+if(!g.setResolution(o,u)){a.alert(uiStrings.notification.noContentToFitTo);o=g.getResolution();h.val(o.w);m.val(o.h);return false}G()};a("#resolution").change(function(){var h=a("#canvas_width")[0],m=a("#canvas_height")[0];if(this.selectedIndex)if(this.value=="content"){h.value="fit";m.value="fit";l();var o=g.getResolution();h.value=o.w;m.value=o.h}else{var u=this.value.split("x");u[0]=parseInt(u[0]);u[1]=parseInt(u[1]);var E=u[0]-h.value,H=u[1]-m.value,J=Date.now(),O=function(W){W=(W-J)/1E3;W=Math.pow(W-
+1,3)+1;h.value=(u[0]-E+W*E).toFixed(0);m.value=(u[1]-H+W*H).toFixed(0);l();if(W>=1){W=g.getResolution();a("#canvas_width").val(W.w.toFixed());a("#canvas_height").val(W.h.toFixed());a("#resolution_label").html("<div class='pull'>"+W.w+"<span>\u00d7</span></br>"+W.h+"</div>")}else requestAnimationFrame(O)};O(Date.now())}else{a("#resolution_label").html("Custom");h.removeAttribute("readonly");h.focus();h.select();if(h.value=="fit"){h.value=100;m.value=100}}});a("#zoom").change(function(){wa(this)});
+a("input,select").attr("autocomplete","off");var C=function(){var h=[{sel:"#tool_select",fn:cb,evt:"click",key:["V",true]},{sel:"#tool_fhpath",fn:Ta,evt:"click",key:["Q",true]},{sel:"#tool_line",fn:Va,evt:"click",key:["L",true]},{sel:"#tool_rect",fn:Ga,evt:"click",key:["R",true],icon:"rect"},{sel:"#tool_ellipse",fn:ta,evt:"mouseup",key:["C",true],icon:"ellipse"},{sel:"#tool_path",fn:db,evt:"click",key:["P",true]},{sel:"#tool_text",fn:Ha,evt:"click",key:["T",true]},{sel:"#tool_image",fn:$a,evt:"mouseup"},
+{sel:"#tool_zoom",fn:Ka,evt:"mouseup",key:["Z",true]},{sel:"#tool_clear",fn:Oa,evt:"mouseup",key:[v+"N",true]},{sel:"#tool_save",fn:function(){if(ea)Kb();else{xa(a("#file_menu"));g.save({images:w.img_save,round_digits:6})}},evt:"mouseup",key:[v+"S",true]},{sel:"#tool_export",fn:nb,evt:"mouseup"},{sel:"#tool_open",fn:Ra,evt:"mouseup"},{sel:"#tool_import",fn:mb,evt:"mouseup"},{sel:"#tool_source",fn:Eb,evt:"click",key:[v+"U",true]},{sel:"#tool_wireframe",fn:Hb,evt:"click"},{sel:"#tool_snap",fn:Gb,evt:"click"},
+{sel:"#tool_rulers",fn:Lb,evt:"click"},{sel:"#tool_source_cancel,#svg_source_overlay,#tool_docprops_cancel,#tool_prefs_cancel",fn:Ab,evt:"click",key:["esc",false,false],hidekey:true},{sel:"#tool_source_save",fn:Kb,evt:"click"},{sel:"#tool_delete,#tool_delete_multi",fn:lb,evt:"click",key:["del/backspace",true]},{sel:"#tool_reorient",fn:ob,evt:"click"},{sel:"#tool_node_link",fn:tb,evt:"change"},{sel:"#tool_node_clone",fn:ia,evt:"click"},{sel:"#tool_node_delete",fn:aa,evt:"click"},{sel:"#tool_openclose_path",
+fn:M,evt:"click"},{sel:"#tool_add_subpath",fn:ka,evt:"click"},{sel:"#tool_move_top",fn:sa,evt:"click",key:v+"shift+up"},{sel:"#tool_move_bottom",fn:hb,evt:"click",key:v+"shift+down"},{sel:"#tool_move_up",fn:eb,evt:"click",key:[v+"up",true]},{sel:"#tool_move_down",fn:sb,evt:"click",key:[v+"down",true]},{sel:"#tool_topath",fn:ab,evt:"click"},{sel:"#tool_make_link,#tool_make_link_multi",fn:pb,evt:"click"},{sel:"#tool_clone,#tool_clone_multi",fn:Fb,evt:"click",key:[v+"D",true]},{sel:"#tool_group",fn:Bb,
+evt:"click",key:[v+"G",true]},{sel:"#tool_ungroup",fn:Bb,evt:"click",key:v+"shift+G"},{sel:"#tool_unlink_use",fn:Bb,evt:"click"},{sel:"[id^=tool_align]",fn:bb,evt:"click"},{sel:"#tool_undo",fn:qb,evt:"click",key:v+"z"},{sel:"#tool_redo",fn:rb,evt:"click",key:["y",true]},{sel:"#tool_cut",fn:Ua,evt:"click",key:[v+"x",true]},{sel:"#tool_copy",fn:Xa,evt:"click",key:v+"c"},{sel:"#tool_paste",fn:wb,evt:"click",key:v+"v"},{sel:"#tool_switch",fn:La,evt:"click",key:["x",true]},{sel:"#tool_bold",fn:Wa,evt:"mousedown",
+key:[v+"B",true]},{sel:"#tool_italic",fn:Za,evt:"mousedown",key:[v+"I",true]},{sel:"#copy_save_done",fn:Ab,evt:"click"},{key:"ctrl+left",fn:function(){Ea(0,1)}},{key:"ctrl+right",fn:function(){Ea(1,1)}},{key:"ctrl+shift+left",fn:function(){Ea(0,5)}},{key:"ctrl+shift+right",fn:function(){Ea(1,5)}},{key:"shift+O",fn:da},{key:"shift+P",fn:P},{key:[v+"+",true],fn:function(){yb(2)}},{key:[v+"-",true],fn:function(){yb(0.5)}},{key:["up",true],fn:function(){fb(0,-1)}},{key:["down",true],fn:function(){fb(0,
+1)}},{key:["left",true],fn:function(){fb(-1,0)}},{key:["right",true],fn:function(){fb(1,0)}},{key:"shift+up",fn:function(){fb(0,-10)}},{key:"shift+down",fn:function(){fb(0,10)}},{key:"shift+left",fn:function(){fb(-10,0)}},{key:"shift+right",fn:function(){fb(10,0)}},{key:["alt+up",true],fn:function(){g.cloneSelectedElements(0,-1)}},{key:["alt+down",true],fn:function(){g.cloneSelectedElements(0,1)}},{key:["alt+left",true],fn:function(){g.cloneSelectedElements(-1,0)}},{key:["alt+right",true],fn:function(){g.cloneSelectedElements(1,
+0)}},{key:["alt+shift+up",true],fn:function(){g.cloneSelectedElements(0,-10)}},{key:["alt+shift+down",true],fn:function(){g.cloneSelectedElements(0,10)}},{key:["alt+shift+left",true],fn:function(){g.cloneSelectedElements(-10,0)}},{key:["alt+shift+right",true],fn:function(){g.cloneSelectedElements(10,0)}},{key:v+"A",fn:function(){g.selectAllInCurrentLayer()}},{key:"I",fn:function(){var o=a(".tool_button_current");if(o.length&&o[0].id!=="tool_eyedropper"){o.removeClass("tool_button_current").addClass("tool_button");
+a("#tool_eyedropper").addClass("tool_button_current").removeClass("tool_button")}g.setMode("eyedropper")}},{key:v+"shift+z",fn:rb},{key:"esc",fn:Ib}],m={"4/Shift+4":"#tools_rect_show","5/Shift+5":"#tools_ellipse_show"};return{setAll:function(){var o={};a.each(h,function(u,E){if(E.sel){var H=a(E.sel);if(H.length==0)return true;if(E.evt){if(svgedit.browser.isTouch()&&E.evt==="click")E.evt="mousedown";H[E.evt](E.fn)}if(E.parent&&a(E.parent+"_show").length!=0){var J=a(E.parent);J.length||(J=na(E.parent.substr(1)));
+J.append(H);a.isArray(o[E.parent])||(o[E.parent]=[]);o[E.parent].push(E)}}if(E.key){var O=E.fn,W=false;if(a.isArray(E.key)){J=E.key[0];if(E.key.length>1)W=E.key[1]}else J=E.key;J+="";svgedit.browser.isMac&&J.indexOf("+")!=-1&&J.split("+")[0]=="ctrl"&&J.replace("ctrl","cmd");a.each(J.split("/"),function(T,fa){a(document).bind("keydown",fa,function(ha){O();W&&ha.preventDefault();return false})});if(E.sel&&!E.hidekey&&H.attr("title")){var ba=H.attr("title").split("[")[0]+" ("+J+")";m[J]=E.sel;H.parents("#main_menu").length||
+H.attr("title",ba)}}});Z(o);a(window).bind("keydown","tab",function(u){if(N==="canvas"){u.preventDefault();P()}}).bind("keydown","shift+tab",function(u){if(N==="canvas"){u.preventDefault();da()}});a("#tool_zoom").dblclick(Sa)},setTitles:function(){a.each(m,function(o,u){var E=a(u).parents("#main_menu").length;a(u).each(function(){var H=E?a(this).text().split(" [")[0]:this.title.split(" [")[0],J="";a.each(o.split("/"),function(O,W){var ba=W.split("+"),T="";if(ba.length>1){T=ba[0]+"+";W=ba[1]}J+=(O?
+"/":"")+T+(uiStrings["key_"+W]||W)});if(E)this.lastChild.textContent=H+" ["+J+"]";else this.title=H+" ["+J+"]"})})},getButtonData:function(o){var u;a.each(h,function(E,H){if(H.sel===o)u=H});return u}}}();C.setAll();b.ready(function(){var h=curConfig.initTool,m=a("#tools_left, #svg_editor .tools_flyout"),o=m.find("#tool_"+h);h=m.find("#"+h);(o.length?o:h.length?h:a("#tool_select")).click().mouseup();curConfig.wireframe&&a("#tool_wireframe").click();curConfig.showlayers&&toggleSidePanel();a("#rulers").toggle(!!curConfig.showRulers)});
+a("#canvas_height").dragInput({min:10,max:null,step:10,callback:l,cursor:false,dragAdjust:0.1});a("#canvas_width").dragInput({min:10,max:null,step:10,callback:l,cursor:false,dragAdjust:0.1});a("#rect_width").dragInput({min:1,max:null,step:1,callback:changeAttribute,cursor:false});a("#rect_height").dragInput({min:1,max:null,step:1,callback:changeAttribute,cursor:false});a("#ellipse_cx").dragInput({min:1,max:null,step:1,callback:changeAttribute,cursor:false});a("#ellipse_cy").dragInput({min:1,max:null,
+step:1,callback:changeAttribute,cursor:false});a("#ellipse_rx").dragInput({min:1,max:null,step:1,callback:changeAttribute,cursor:false});a("#ellipse_ry").dragInput({min:1,max:null,step:1,callback:changeAttribute,cursor:false});a("#image_height").dragInput({min:1,max:null,step:1,callback:changeAttribute,cursor:false});a("#circle_cx").dragInput({min:1,max:null,step:1,callback:changeAttribute,cursor:false});a("#circle_cy").dragInput({min:1,max:null,step:1,callback:changeAttribute,cursor:false});a("#circle_r").dragInput({min:1,
+max:null,step:1,callback:changeAttribute,cursor:false});a("#image_height").dragInput({min:0,max:null,step:1,callback:changeAttribute,cursor:false});a("#selected_x").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#selected_y").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#path_node_x").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#path_node_y").dragInput({min:null,max:null,step:1,callback:changeAttribute,
+cursor:false});a("#image_width").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#line_x1").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#line_x2").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#line_y1").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#line_y2").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#path_x").dragInput({min:null,
+max:null,step:1,callback:changeAttribute,cursor:false});a("#path_y").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#rect_x").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#rect_y").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#g_x").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#g_y").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#image_x").dragInput({min:null,
+max:null,step:1,callback:changeAttribute,cursor:false});a("#text_y").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#text_x").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#image_y").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#rect_rx").dragInput({min:0,max:100,step:1,callback:changeAttribute,cursor:true});a("#stroke_width").dragInput({min:0,max:99,step:1,callback:function(h){var m=h.value;if(m==0&&
+Y&&["line","polyline"].indexOf(Y.nodeName)>=0)m=h.value=1;g.setStrokeWidth(m)},cursor:true,smallStep:0.1,start:1.5});a("#angle").dragInput({min:-180,max:180,step:1,callback:function(h){g.setRotationAngle(h.value,true);rotateCursor(h.value);a("#tool_reorient").toggleClass("disabled",h.value==0)},cursor:false,dragAdjust:0.5});a("#font_size").dragInput({min:1,max:250,step:1,callback:function(h){g.setFontSize(h.value)},cursor:true,stepfunc:function(h,m){var o=h.value-0,u=o+m,E=u>=o;if(m===0)return o;
+return o>=24?E?Math.round(o*1.1):Math.round(o/1.1):o<=1?E?o*2:o/2:u},dragAdjust:0.15});a("#group_opacity").dragInput({min:0,max:100,step:5,callback:changeAttribute,cursor:true,start:100});a("#blur").dragInput({min:0,max:10,step:0.1,callback:function(h,m){val=h.value;a("#blur").val(val);m?g.setBlur(val,true):g.setBlurNoUndo(val)},cursor:true,start:0});a("#zoom").val(g.getZoom()*100);a("#workarea").contextMenu({menu:"cmenu_canvas",inSpeed:0},function(h){switch(h){case "delete":lb();break;case "cut":Ua();
+break;case "copy":Xa();break;case "paste":g.pasteElements();break;case "paste_in_place":g.pasteElements("in_place");break;case "group":g.groupSelectedElements();break;case "ungroup":g.ungroupSelectedElement();break;case "move_front":sa();break;case "move_up":ib("Up");break;case "move_down":ib("Down");break;case "move_back":hb();break;default:svgedit.contextmenu&&svgedit.contextmenu.hasCustomHandler(h)&&svgedit.contextmenu.getCustomHandler(h).call()}});a(".contextMenu li").mousedown(function(h){h.preventDefault()});
+a("#cmenu_canvas li").disableContextMenu();I.enableContextMenuItems("#delete,#cut,#copy");window.onbeforeunload=function(){if(q.getUndoStackSize()===0)b.show_save_warning=false;if(!curConfig.no_save_warning&&b.show_save_warning)return uiStrings.notification.unsavedChanges};b.openPrep=function(h){a("#main_menu").hide();q.getUndoStackSize()===0?h(true):a.confirm(uiStrings.notification.QwantToOpen,h)};if(window.FileReader){d=function(h){h.stopPropagation();h.preventDefault();a("#workarea").removeAttr("style");
+a("#main_menu").hide();var m=null;if(m=h.type=="drop"?h.dataTransfer.files[0]:this.files[0])if(m.type.indexOf("image")!=-1)if(m.type.indexOf("svg")!=-1){h=new FileReader;h.onloadend=function(o){g.importSvgString(o.target.result,true);g.ungroupSelectedElement();g.ungroupSelectedElement();g.groupSelectedElements();g.alignSelectedElements("m","page");g.alignSelectedElements("c","page")};h.readAsText(m)}else{h=new FileReader;h.onloadend=function(o){insertNewImage=function(J,O){var W=g.addSvgElementFromJson({element:"image",
+attr:{x:0,y:0,width:J,height:O,id:g.getNextId(),style:"pointer-events:inherit"}});g.setHref(W,o.target.result);g.selectOnly([W]);g.alignSelectedElements("m","page");g.alignSelectedElements("c","page");Fa()};var u=100,E=100,H=new Image;H.src=o.target.result;document.body.appendChild(H);H.onload=function(){u=H.offsetWidth;E=H.offsetHeight;insertNewImage(u,E);document.body.removeChild(H)}};h.readAsDataURL(m)}};K=a("#workarea");K[0].addEventListener("dragenter",function(h){h.stopPropagation();h.preventDefault();
+K.css({"-webkit-transform":"scale3d(1.1,1.1,1)","-moz-transform":"scale3d(1.1,1.1,1)","-o-transform":"scale(1.1)","-ms-transform":"scale3d(1.1,1.1,1)",transform:"scale3d(1.1,1.1,1)"})},false);K[0].addEventListener("dragover",function(h){h.stopPropagation();h.preventDefault()},false);K[0].addEventListener("dragleave",function(h){K.removeAttr("style");h.stopPropagation();h.preventDefault()},false);K[0].addEventListener("drop",d,false);var A=a('<input type="file">').change(function(){var h=this;b.openPrep(function(m){if(m){g.clear();
+if(h.files.length==1){m=new FileReader;m.onloadend=function(o){s(o.target.result);G()};m.readAsText(h.files[0])}}})});a("#tool_open").show().prepend(A);d=a('<input type="file">').change(d);a("#tool_import").show().prepend(d)}var G=b.updateCanvas=function(h,m){var o=K.width(),u=K.height(),E=o,H=u,J=g.getZoom(),O=K,W=a("#svgcanvas"),ba={x:O[0].scrollLeft+E/2,y:O[0].scrollTop+H/2},T=curConfig.canvas_expansion;o=Math.max(E,g.contentW*J*T);u=Math.max(H,g.contentH*J*T);o==E&&u==H?K.css("overflow","hidden"):
+K.css("overflow","scroll");T=W.height()/2;var fa=W.width()/2;W.width(o).height(u);var ha=u/2,X=o/2,qa=g.updateCanvas(o,u),ua=X/fa;o=o/2-E/2;u=u/2-H/2;if(m){m.x+=qa.x;m.y+=qa.y}else m={x:X+(ba.x-fa)*ua,y:ha+(ba.y-T)*ua};if(h)if(g.contentW>O.width()){K[0].scrollLeft=qa.x-10;K[0].scrollTop=qa.y-10}else{O[0].scrollLeft=o;O[0].scrollTop=u}else{O[0].scrollLeft=m.x-E/2;O[0].scrollTop=m.y-H/2}if(curConfig.showRulers){E=W;J=J;document.getElementById("workarea");document.getElementById("title_show");J||(J=
+g.getZoom());E||(E=a("#svgcanvas"));H=g.getContentElem();O=svgedit.units.getTypeMap()[curConfig.baseUnit];for(W=0;W<2;W++){fa=(ba=W===0)?"x":"y";ua=ba?"width":"height";T=H.getAttribute(fa)-0;fa=a("#ruler_"+fa+" canvas:first");$hcanv=fa.clone();fa.replaceWith($hcanv);o=$hcanv[0];ha=fa=E[ua]()*2;o.parentNode.style[ua]=ha+"px";X=0;var Aa;qa=o.getContext("2d");qa.fillStyle="rgb(200,0,0)";qa.fillRect(0,0,o.width,o.height);$hcanv.siblings().remove();if(fa>=3E4){var Ca=parseInt(fa/3E4)+1;Aa=Array(Ca);Aa[0]=
+qa;for(u=1;u<Ca;u++){o[ua]=3E4;var Pa=o.cloneNode(true);o.parentNode.appendChild(Pa);Aa[u]=Pa.getContext("2d")}Pa[ua]=fa%3E4;fa=3E4}o[ua]=fa;ua=O*J;var Qa=50/ua;o=1;for(u=0;u<D.length;u++){o=Ca=D[u];if(Qa<=Ca)break}Qa=o*ua;qa.font="normal 9px 'Lucida Grande', sans-serif";qa.fillStyle="#777";for(var Na=T/ua%o*ua,jb=Na-Qa;Na<ha;Na+=Qa){jb+=Qa;u=Math.round(Na)+0.5;if(ba){qa.moveTo(u,15);qa.lineTo(u,0)}else{qa.moveTo(15,u);qa.lineTo(0,u)}Ca=(jb-T)/ua;if(o>=1)u=Math.round(Ca);else{u=(o+"").split(".")[1].length;
+u=Ca.toFixed(u)-0}if(u!==0&&u!==1E3&&u%1E3===0)u=u/1E3+"K";if(ba){qa.fillText(u,Na+2,8);qa.fillStyle="#777"}else{Ca=(u+"").split("");for(u=0;u<Ca.length;u++){qa.fillText(Ca[u],1,Na+9+u*9);qa.fillStyle="#777"}}Ca=Qa/10;for(u=1;u<10;u++){var ub=Math.round(Na+Ca*u)+0.5;if(Aa&&ub>fa){X++;qa.stroke();if(X>=Aa.length){u=10;Na=ha;continue}qa=Aa[X];Na-=3E4;ub=Math.round(Na+Ca*u)+0.5}var Cb=u%2?12:10;if(ba){qa.moveTo(ub,15);qa.lineTo(ub,Cb)}else{qa.moveTo(15,ub);qa.lineTo(Cb,ub)}}}qa.strokeStyle="#666";qa.stroke()}K.scroll()}},
+D=[];for(d=0.1;d<1E5;d*=10){D.push(1*d);D.push(2*d);D.push(5*d)}G(true);try{var z=function(h){if(window.JSON&&JSON.stringify)return JSON.stringify(h);var m=arguments.callee;if(typeof h=="boolean"||typeof h=="number")return h+"";else if(typeof h=="string")return'"'+h.replace(/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,function(E){return"\\u"+("0000"+E.charCodeAt(0).toString(16)).slice(-4)})+'"';else if(h.length){for(var o=
+0;o<h.length;o++)h[o]=m(h[o]);return"["+h.join(",")+"]"}else{o=[];for(var u in h)o.push(m(u)+":"+m(h[u]));return"{"+o.join(",")+"}"}};window.addEventListener("message",function(h){var m=parseInt(h.data.substr(0,h.data.indexOf(";")));try{h.source.postMessage("SVGe"+m+";"+z(eval(h.data)),"*")}catch(o){h.source.postMessage("SVGe"+m+";error:"+o.message,"*")}},false)}catch(F){window.embed_error=F}a(function(){window.svgCanvas=g;g.ready=methodDraw.ready});b.setLang=function(h,m){a.pref("lang",h);a("#lang_select").val(h);
+if(m){g.runExtensions("langChanged",h);ma();a.each({"#stroke_color":"#tool_stroke .icon_label, #tool_stroke .color_block","#fill_color":"#tool_fill label, #tool_fill .color_block","#linejoin_miter":"#cur_linejoin","#linecap_butt":"#cur_linecap"},function(o,u){a(u).attr("title",a(o)[0].title)});a("#multiselected_panel div[id^=tool_align]").each(function(){a("#tool_pos"+this.id.substr(10))[0].title=this.title})}}};var f=[];b.ready=function(d){p?d():f.push(d)};b.runCallbacks=function(){a.each(f,function(){this()});
+p=true};b.loadFromString=function(d){b.ready(function(){s(d)})};b.loadFromURL=function(d,n){n||(n={});var v=n.cache,B=n.callback;b.ready(function(){a.ajax({url:d,dataType:"text",cache:!!v,success:function(q){s(q,B)},error:function(q,L,Q){q.status!=404&&q.responseText?s(q.responseText,B):a.alert(uiStrings.notification.URLloadFail+": \n"+Q+"",B)}})})};b.loadFromDataURI=function(d){b.ready(function(){var n=d.substring(26);s(svgedit.utilities.decode64(n))})};b.addExtension=function(){var d=arguments;
+a(function(){g&&g.addExtension.apply(this,d)})};return b}(jQuery);$(methodDraw.init)})();$.fn.dragInput=function(a){return this.each(function(){this.repeating=false;this.dragCfg={min:a&&!isNaN(parseFloat(a.min))?Number(a.min):null,max:a&&!isNaN(parseFloat(a.max))?Number(a.max):null,step:a&&Number(a.step)?a.step:1,stepfunc:a&&a.stepfunc?a.stepfunc:false,dragAdjust:a&&a.dragAdjust?a.dragAdjust:1,height:70,cursor:a&&a.cursor?Boolean(a.cursor):false,start:a&&a.start?Number(a.start):0,_btn_width:20,_direction:null,_delay:null,_repeat:null,callback:a&&a.callback?a.callback:null};this.dragCfg.smallStep=
+a&&a.smallStep?a.smallStep:this.dragCfg.step/2;var s=this.dragCfg.dragAdjust,g=$(this).parent(),b=$(this),p=this.dragCfg.height,w=this.dragCfg.min,c=this.dragCfg.max,f=this.dragCfg.step,d=c-w>0?(c-w)/f:200,n=d/p*f,v=0,B=this.getAttribute("data-attr"),q=methodDraw.canvas,L=svgedit.browser.isTouch(),Q=true,K=d&&this.dragCfg.cursor?$("<div class='draginput_cursor' />").appendTo(g):false;b.attr("readonly","readonly");K&&!isNaN(this.dragCfg.start)&&K.css("top",this.dragCfg.start*-1/n+p);this.adjustValue=
+function(I,S){var R;I=parseFloat(I);R=isNaN(this.value)?this.dragCfg.reset:$.isFunction(this.dragCfg.stepfunc)?this.dragCfg.stepfunc(this,I):Number((Number(this.value)+Number(I)).toFixed(5));if(c!==null)R=Math.min(R,c);if(w!==null)R=Math.max(R,w);K&&this.updateCursor(R);this.value=R;g.attr("data-value",R);$.isFunction(this.dragCfg.callback)&&this.dragCfg.callback(this,S)};g.toggleClass("draginput",g.is("label"));this.move=function(I,S,R){if(L)I=I.originalEvent.touches[0];if(v===0)v=S;S=(I.pageY-v)*
+-1;v=I.pageY;R=S*n*s;this.adjustValue(R.toFixed(f<1?1:0))};this.stop=function(){var I=q.getSelectedElems();$("body").removeClass("dragging");g.removeClass("active");Q=true;$(window).unbind("mousemove.draginput touchmove.draginput mouseup.draginput touchend.draginput");v=0;if(I[0]){I=q.undoMgr.finishUndoableChange();I.isEmpty()||q.undoMgr.addCommandToHistory(I)}this.adjustValue(0,Q)};this.updateCursor=function(){var I=parseFloat(this.value)*-1/n+p;K.css("top",I)};this.launch=function(I){var S=q.getSelectedElems();
+if(L)I=I.originalEvent.touches[0];var R=I.pageY,N=this.value,ga=this;q.undoMgr.beginUndoableChange(B,S);$("body").addClass("dragging");g.addClass("active");$(window).bind("mousemove.draginput touchmove.draginput",function(oa){ga.move(oa,R,parseFloat(N))});$(window).bind("mouseup.draginput touchend.draginput",function(){ga.stop()})};$(this).attr("readonly","readonly").attr("data-scale",n).attr("data-domain",p).attr("data-cursor",K!=false).bind("mousedown touchstart",function(I){this.blur();this.launch(I)}).bind("dblclick taphold",
+function(){this.removeAttribute("readonly","readonly");this.focus();this.select()}).keydown(function(I){switch(I.keyCode){case 13:this.adjustValue(0);this.blur()}}).focus(function(){this.getAttribute("readonly")==="readonly"&&this.blur()}).blur(function(){this.setAttribute("readonly","readonly")}).bind("mousewheel",function(I,S,R,N){S=q.getSelectedElems();Q&&q.undoMgr.beginUndoableChange(B,S);Q=false;clearTimeout(window.undoTimeout);window.undoTimeout=setTimeout(function(){ga.stop()},200);var ga=
+this;if(N>0)this.adjustValue(this.dragCfg.step);else N<0&&this.adjustValue(-this.dragCfg.step);I.preventDefault()})})};$.fn.dragInput.updateCursor=function(a){var s=parseFloat(a.value),g=parseFloat(a.getAttribute("data-scale")),b=parseFloat(a.getAttribute("data-domain"));s=s*-1/g+b+"px";a=a.parentNode.lastChild;if(a.className=="draginput_cursor")a.style.top=s};svgedit=svgedit||{};
+(function(){var a=this;if(!svgedit.contextmenu)svgedit.contextmenu={};a.contextMenuExtensions={};methodDraw.ready(function(){for(menuItem in contextMenuExtensions){var s=contextMenuExtensions[menuItem];Object.keys(a.contextMenuExtensions).length==0&&$("#cmenu_canvas").append("<li class='separator'>");var g=s.shortcut||"";$("#cmenu_canvas").append("<li class='disabled'><a href='#"+s.id+"'>"+s.label+"<span class='shortcut'>"+g+"</span></a></li>")}});svgedit.contextmenu.resetCustomMenus=function(){a.contextMenuExtensions=
+{}};svgedit.contextmenu.add=function(s){if(s&&s.id&&s.label&&s.action&&typeof s.action=="function")if(s.id in a.contextMenuExtensions)console.error('Cannot add extension "'+s.id+'", an extension by that name already exists"');else{console.log("Registed contextmenu item: {id:"+s.id+", label:"+s.label+"}");a.contextMenuExtensions[s.id]=s}else console.error("Menu items must be defined and have at least properties: id, label, action, where action must be a function")};svgedit.contextmenu.hasCustomHandler=
+function(s){return a.contextMenuExtensions[s]&&true};svgedit.contextmenu.getCustomHandler=function(s){return a.contextMenuExtensions[s].action}})();(function(a,s){function g(p){return!a(p).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}function b(p,w){var c=p.nodeName.toLowerCase();if("area"===c){c=p.parentNode;var f=c.name;if(!p.href||!f||c.nodeName.toLowerCase()!=="map")return false;c=a("img[usemap=#"+f+"]")[0];return!!c&&g(c)}return(/input|select|textarea|button|object/.test(c)?!p.disabled:"a"==c?p.href||w:w)&&g(p)}a.ui=a.ui||{};a.ui.version||(a.extend(a.ui,{version:"1.8.17",
+keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,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,WINDOWS:91}}),a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(p,w){return typeof p=="number"?this.each(function(){var c=
+this;setTimeout(function(){a(c).focus();w&&w.call(c)},p)}):this._focus.apply(this,arguments)},scrollParent:function(){var p;a.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?p=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(a.curCSS(this,"position",1))&&/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0):p=this.parents().filter(function(){return/(auto|scroll)/.test(a.curCSS(this,
+"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!p.length?a(document):p},zIndex:function(p){if(p!==s)return this.css("zIndex",p);if(this.length){p=a(this[0]);for(var w;p.length&&p[0]!==document;){w=p.css("position");if(w==="absolute"||w==="relative"||w==="fixed"){w=parseInt(p.css("zIndex"),10);if(!isNaN(w)&&w!==0)return w}p=p.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":
+"mousedown")+".ui-disableSelection",function(p){p.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),a.each(["Width","Height"],function(p,w){function c(v,B,q,L){a.each(f,function(){B-=parseFloat(a.curCSS(v,"padding"+this,true))||0;q&&(B-=parseFloat(a.curCSS(v,"border"+this+"Width",true))||0);L&&(B-=parseFloat(a.curCSS(v,"margin"+this,true))||0)});return B}var f=w==="Width"?["Left","Right"]:["Top","Bottom"],d=w.toLowerCase(),n={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,
+outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};a.fn["inner"+w]=function(v){if(v===s)return n["inner"+w].call(this);return this.each(function(){a(this).css(d,c(this,v)+"px")})};a.fn["outer"+w]=function(v,B){if(typeof v!="number")return n["outer"+w].call(this,v);return this.each(function(){a(this).css(d,c(this,v,true,B)+"px")})}}),a.extend(a.expr[":"],{data:function(p,w,c){return!!a.data(p,c[3])},focusable:function(p){return b(p,!isNaN(a.attr(p,"tabindex")))},tabbable:function(p){var w=a.attr(p,
+"tabindex"),c=isNaN(w);return(c||w>=0)&&b(p,!c)}}),a(function(){var p=document.body,w=p.appendChild(w=document.createElement("div"));a.extend(w.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=w.offsetHeight===100;a.support.selectstart="onselectstart"in w;p.removeChild(w).style.display="none"}),a.extend(a.ui,{plugin:{add:function(p,w,c){p=a.ui[p].prototype;for(var f in c){p.plugins[f]=p.plugins[f]||[];p.plugins[f].push([w,c[f]])}},call:function(p,w,c){if((w=p.plugins[w])&&
+p.element[0].parentNode)for(var f=0;f<w.length;f++)p.options[w[f][0]]&&w[f][1].apply(p.element,c)}},contains:function(p,w){return document.compareDocumentPosition?p.compareDocumentPosition(w)&16:p!==w&&p.contains(w)},hasScroll:function(p,w){if(a(p).css("overflow")==="hidden")return false;var c=w&&w==="left"?"scrollLeft":"scrollTop",f=false;if(p[c]>0)return true;p[c]=1;f=p[c]>0;p[c]=0;return f},isOverAxis:function(p,w,c){return p>w&&p<w+c},isOver:function(p,w,c,f,d,n){return a.ui.isOverAxis(p,c,d)&&
+a.ui.isOverAxis(w,f,n)}}))})(jQuery);
+(function(a,s){if(a.cleanData){var g=a.cleanData;a.cleanData=function(p){for(var w=0,c;(c=p[w])!=null;w++)try{a(c).triggerHandler("remove")}catch(f){}g(p)}}else{var b=a.fn.remove;a.fn.remove=function(p,w){return this.each(function(){w||(!p||a.filter(p,[this]).length)&&a("*",this).add([this]).each(function(){try{a(this).triggerHandler("remove")}catch(c){}});return b.call(a(this),p,w)})}}a.widget=function(p,w,c){var f=p.split(".")[0],d;p=p.split(".")[1];d=f+"-"+p;c||(c=w,w=a.Widget);a.expr[":"][d]=
+function(n){return!!a.data(n,p)};a[f]=a[f]||{};a[f][p]=function(n,v){arguments.length&&this._createWidget(n,v)};w=new w;w.options=a.extend(true,{},w.options);a[f][p].prototype=a.extend(true,w,{namespace:f,widgetName:p,widgetEventPrefix:a[f][p].prototype.widgetEventPrefix||p,widgetBaseClass:d},c);a.widget.bridge(p,a[f][p])};a.widget.bridge=function(p,w){a.fn[p]=function(c){var f=typeof c=="string",d=Array.prototype.slice.call(arguments,1),n=this;c=!f&&d.length?a.extend.apply(null,[true,c].concat(d)):
+c;if(f&&c.charAt(0)==="_")return n;f?this.each(function(){var v=a.data(this,p),B=v&&a.isFunction(v[c])?v[c].apply(v,d):v;if(B!==v&&B!==s){n=B;return false}}):this.each(function(){var v=a.data(this,p);v?v.option(c||{})._init():a.data(this,p,new w(c,this))});return n}};a.Widget=function(p,w){arguments.length&&this._createWidget(p,w)};a.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(p,w){a.data(w,this.widgetName,this);this.element=a(w);this.options=
+a.extend(true,{},this.options,this._getCreateOptions(),p);var c=this;this.element.bind("remove."+this.widgetName,function(){c.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return a.metadata&&a.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+
+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(p,w){var c=p;if(arguments.length===0)return a.extend({},this.options);if(typeof p=="string"){if(w===s)return this.options[p];c={};c[p]=w}this._setOptions(c);return this},_setOptions:function(p){var w=this;a.each(p,function(c,f){w._setOption(c,f)});return this},_setOption:function(p,w){this.options[p]=w;p==="disabled"&&this.widget()[w?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",
+w);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(p,w,c){var f,d=this.options[p];c=c||{};w=a.Event(w);w.type=(p===this.widgetEventPrefix?p:this.widgetEventPrefix+p).toLowerCase();w.target=this.element[0];if(p=w.originalEvent)for(f in p)f in w||(w[f]=p[f]);this.element.trigger(w,c);return!(a.isFunction(d)&&d.call(this.element[0],w,c)===false||w.isDefaultPrevented())}}})(jQuery);
+(function(a){var s=false;a(document).mouseup(function(){s=false});a.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var g=this;this.element.bind("mousedown."+this.widgetName,function(b){return g._mouseDown(b)}).bind("click."+this.widgetName,function(b){if(true===a.data(b.target,g.widgetName+".preventClickEvent")){a.removeData(b.target,g.widgetName+".preventClickEvent");b.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+
+this.widgetName)},_mouseDown:function(g){if(!s){this._mouseStarted&&this._mouseUp(g);this._mouseDownEvent=g;var b=this,p=g.which==1,w=typeof this.options.cancel=="string"&&g.target.nodeName?a(g.target).closest(this.options.cancel).length:false;if(!p||w||!this._mouseCapture(g))return true;(this.mouseDelayMet=!this.options.delay)||(this._mouseDelayTimer=setTimeout(function(){b.mouseDelayMet=true},this.options.delay));if(this._mouseDistanceMet(g)&&this._mouseDelayMet(g)){this._mouseStarted=this._mouseStart(g)!==
+false;if(!this._mouseStarted){g.preventDefault();return true}}true===a.data(g.target,this.widgetName+".preventClickEvent")&&a.removeData(g.target,this.widgetName+".preventClickEvent");this._mouseMoveDelegate=function(c){return b._mouseMove(c)};this._mouseUpDelegate=function(c){return b._mouseUp(c)};a(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);g.preventDefault();return s=true}},_mouseMove:function(g){if(a.browser.msie&&
+!(document.documentMode>=9)&&!g.button)return this._mouseUp(g);if(this._mouseStarted){this._mouseDrag(g);return g.preventDefault()}this._mouseDistanceMet(g)&&this._mouseDelayMet(g)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,g)!==false,this._mouseStarted?this._mouseDrag(g):this._mouseUp(g));return!this._mouseStarted},_mouseUp:function(g){a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);this._mouseStarted&&
+(this._mouseStarted=false,g.target==this._mouseDownEvent.target&&a.data(g.target,this.widgetName+".preventClickEvent",true),this._mouseStop(g));return false},_mouseDistanceMet:function(g){return Math.max(Math.abs(this._mouseDownEvent.pageX-g.pageX),Math.abs(this._mouseDownEvent.pageY-g.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery);
+(function(a){a.widget("ui.draggable",a.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){this.options.helper=="original"&&
+!/^(?:r|a|f)/.test(this.element.css("position"))&&(this.element[0].style.position="relative");this.options.addClasses&&this.element.addClass("ui-draggable");this.options.disabled&&this.element.addClass("ui-draggable-disabled");this._mouseInit()},destroy:function(){if(this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this}},_mouseCapture:function(s){var g=this.options;
+if(this.helper||g.disabled||a(s.target).is(".ui-resizable-handle"))return false;this.handle=this._getHandle(s);if(!this.handle)return false;g.iframeFix&&a(g.iframeFix===true?"iframe":g.iframeFix).each(function(){a('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(a(this).offset()).appendTo("body")});return true},_mouseStart:function(s){var g=this.options;this.helper=
+this._createHelper(s);this._cacheHelperProportions();a.ui.ddmanager&&(a.ui.ddmanager.current=this);this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};a.extend(this.offset,{click:{left:s.pageX-this.offset.left,top:s.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});
+this.originalPosition=this.position=this._generatePosition(s);this.originalPageX=s.pageX;this.originalPageY=s.pageY;g.cursorAt&&this._adjustOffsetFromHelper(g.cursorAt);g.containment&&this._setContainment();if(this._trigger("start",s)===false){this._clear();return false}this._cacheHelperProportions();a.ui.ddmanager&&!g.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,s);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(s,true);a.ui.ddmanager&&a.ui.ddmanager.dragStart(this,s);return true},
+_mouseDrag:function(s,g){this.position=this._generatePosition(s);this.positionAbs=this._convertPositionTo("absolute");if(!g){var b=this._uiHash();if(this._trigger("drag",s,b)===false){this._mouseUp({});return false}this.position=b.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";a.ui.ddmanager&&a.ui.ddmanager.drag(this,s);return false},_mouseStop:function(s){var g=
+false;a.ui.ddmanager&&!this.options.dropBehaviour&&(g=a.ui.ddmanager.drop(this,s));this.dropped&&(g=this.dropped,this.dropped=false);if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper=="original")return false;if(this.options.revert=="invalid"&&!g||this.options.revert=="valid"&&g||this.options.revert===true||a.isFunction(this.options.revert)&&this.options.revert.call(this.element,g)){var b=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),
+function(){b._trigger("stop",s)!==false&&b._clear()})}else this._trigger("stop",s)!==false&&this._clear();return false},_mouseUp:function(s){this.options.iframeFix===true&&a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)});a.ui.ddmanager&&a.ui.ddmanager.dragStop(this,s);return a.ui.mouse.prototype._mouseUp.call(this,s)},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(s){var g=!this.options.handle||
+!a(this.options.handle,this.element).length?true:false;a(this.options.handle,this.element).find("*").andSelf().each(function(){this==s.target&&(g=true)});return g},_createHelper:function(s){var g=this.options;s=a.isFunction(g.helper)?a(g.helper.apply(this.element[0],[s])):g.helper=="clone"?this.element.clone().removeAttr("id"):this.element;s.parents("body").length||s.appendTo(g.appendTo=="parent"?this.element[0].parentNode:g.appendTo);s[0]!=this.element[0]&&!/(fixed|absolute)/.test(s.css("position"))&&
+s.css("position","absolute");return s},_adjustOffsetFromHelper:function(s){typeof s=="string"&&(s=s.split(" "));a.isArray(s)&&(s={left:+s[0],top:+s[1]||0});"left"in s&&(this.offset.click.left=s.left+this.margins.left);"right"in s&&(this.offset.click.left=this.helperProportions.width-s.right+this.margins.left);"top"in s&&(this.offset.click.top=s.top+this.margins.top);"bottom"in s&&(this.offset.click.top=this.helperProportions.height-s.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=
+this.helper.offsetParent();var s=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])&&(s.left+=this.scrollParent.scrollLeft(),s.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)s={top:0,left:0};return{top:s.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:s.left+(parseInt(this.offsetParent.css("borderLeftWidth"),
+10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var s=this.element.position();return{top:s.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:s.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),
+10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var s=this.options;s.containment=="parent"&&(s.containment=this.helper[0].parentNode);if(s.containment=="document"||s.containment=="window")this.containment=[s.containment=="document"?0:a(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,s.containment=="document"?0:a(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,
+(s.containment=="document"?0:a(window).scrollLeft())+a(s.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(s.containment=="document"?0:a(window).scrollTop())+(a(s.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(s.containment)&&s.containment.constructor!=Array){s=a(s.containment);var g=s[0];if(g){s.offset();var b=a(g).css("overflow")!=
+"hidden";this.containment=[(parseInt(a(g).css("borderLeftWidth"),10)||0)+(parseInt(a(g).css("paddingLeft"),10)||0),(parseInt(a(g).css("borderTopWidth"),10)||0)+(parseInt(a(g).css("paddingTop"),10)||0),(b?Math.max(g.scrollWidth,g.offsetWidth):g.offsetWidth)-(parseInt(a(g).css("borderLeftWidth"),10)||0)-(parseInt(a(g).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(b?Math.max(g.scrollHeight,g.offsetHeight):g.offsetHeight)-(parseInt(a(g).css("borderTopWidth"),
+10)||0)-(parseInt(a(g).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom];this.relative_container=s}}else s.containment.constructor==Array&&(this.containment=s.containment)},_convertPositionTo:function(s,g){g||(g=this.position);var b=s=="absolute"?1:-1,p=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,w=/(html|body)/i.test(p[0].tagName);return{top:g.top+
+this.offset.relative.top*b+this.offset.parent.top*b-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():w?0:p.scrollTop())*b),left:g.left+this.offset.relative.left*b+this.offset.parent.left*b-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():w?0:p.scrollLeft())*b)}},_generatePosition:function(s){var g=this.options,b=this.cssPosition=="absolute"&&
+(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,p=/(html|body)/i.test(b[0].tagName),w=s.pageX,c=s.pageY;if(this.originalPosition){var f;if(this.containment){if(this.relative_container){f=this.relative_container.offset();f=[this.containment[0]+f.left,this.containment[1]+f.top,this.containment[2]+f.left,this.containment[3]+f.top]}else f=this.containment;s.pageX-this.offset.click.left<f[0]&&(w=f[0]+this.offset.click.left);
+s.pageY-this.offset.click.top<f[1]&&(c=f[1]+this.offset.click.top);s.pageX-this.offset.click.left>f[2]&&(w=f[2]+this.offset.click.left);s.pageY-this.offset.click.top>f[3]&&(c=f[3]+this.offset.click.top)}if(g.grid){c=g.grid[1]?this.originalPageY+Math.round((c-this.originalPageY)/g.grid[1])*g.grid[1]:this.originalPageY;c=f?c-this.offset.click.top<f[1]||c-this.offset.click.top>f[3]?c-this.offset.click.top<f[1]?c+g.grid[1]:c-g.grid[1]:c:c;w=g.grid[0]?this.originalPageX+Math.round((w-this.originalPageX)/
+g.grid[0])*g.grid[0]:this.originalPageX;w=f?w-this.offset.click.left<f[0]||w-this.offset.click.left>f[2]?w-this.offset.click.left<f[0]?w+g.grid[0]:w-g.grid[0]:w:w}}return{top:c-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():p?0:b.scrollTop()),left:w-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&a.browser.version<
+526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():p?0:b.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging");this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove();this.helper=null;this.cancelHelperRemoval=false},_trigger:function(s,g,b){b=b||this._uiHash();a.ui.plugin.call(this,s,[g,b]);s=="drag"&&(this.positionAbs=this._convertPositionTo("absolute"));return a.Widget.prototype._trigger.call(this,s,g,
+b)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}});a.extend(a.ui.draggable,{version:"1.8.17"});a.ui.plugin.add("draggable","connectToSortable",{start:function(s,g){var b=a(this).data("draggable"),p=b.options,w=a.extend({},g,{item:b.element});b.sortables=[];a(p.connectToSortable).each(function(){var c=a.data(this,"sortable");c&&!c.options.disabled&&(b.sortables.push({instance:c,shouldRevert:c.options.revert}),
+c.refreshPositions(),c._trigger("activate",s,w))})},stop:function(s,g){var b=a(this).data("draggable"),p=a.extend({},g,{item:b.element});a.each(b.sortables,function(){this.instance.isOver?(this.instance.isOver=0,b.cancelHelperRemoval=true,this.instance.cancelHelperRemoval=false,this.shouldRevert&&(this.instance.options.revert=true),this.instance._mouseStop(s),this.instance.options.helper=this.instance.options._helper,b.options.helper=="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})):
+(this.instance.cancelHelperRemoval=false,this.instance._trigger("deactivate",s,p))})},drag:function(s,g){var b=a(this).data("draggable"),p=this;a.each(b.sortables,function(){this.instance.positionAbs=b.positionAbs;this.instance.helperProportions=b.helperProportions;this.instance.offset.click=b.offset.click;this.instance._intersectsWith(this.instance.containerCache)?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=a(p).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item",
+true),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return g.helper[0]},s.target=this.instance.currentItem[0],this.instance._mouseCapture(s,true),this.instance._mouseStart(s,true,true),this.instance.offset.click.top=b.offset.click.top,this.instance.offset.click.left=b.offset.click.left,this.instance.offset.parent.left-=b.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=b.offset.parent.top-this.instance.offset.parent.top,
+b._trigger("toSortable",s),b.dropped=this.instance.element,b.currentItem=b.element,this.instance.fromOutside=b),this.instance.currentItem&&this.instance._mouseDrag(s)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=true,this.instance.options.revert=false,this.instance._trigger("out",s,this.instance._uiHash(this.instance)),this.instance._mouseStop(s,true),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&
+this.instance.placeholder.remove(),b._trigger("fromSortable",s),b.dropped=false)})}});a.ui.plugin.add("draggable","cursor",{start:function(){var s=a("body"),g=a(this).data("draggable").options;s.css("cursor")&&(g._cursor=s.css("cursor"));s.css("cursor",g.cursor)},stop:function(){var s=a(this).data("draggable").options;s._cursor&&a("body").css("cursor",s._cursor)}});a.ui.plugin.add("draggable","opacity",{start:function(s,g){var b=a(g.helper),p=a(this).data("draggable").options;b.css("opacity")&&(p._opacity=
+b.css("opacity"));b.css("opacity",p.opacity)},stop:function(s,g){var b=a(this).data("draggable").options;b._opacity&&a(g.helper).css("opacity",b._opacity)}});a.ui.plugin.add("draggable","scroll",{start:function(){var s=a(this).data("draggable");s.scrollParent[0]!=document&&s.scrollParent[0].tagName!="HTML"&&(s.overflowOffset=s.scrollParent.offset())},drag:function(s){var g=a(this).data("draggable"),b=g.options,p=false;if(g.scrollParent[0]!=document&&g.scrollParent[0].tagName!="HTML"){if(!b.axis||
+b.axis!="x")g.overflowOffset.top+g.scrollParent[0].offsetHeight-s.pageY<b.scrollSensitivity?g.scrollParent[0].scrollTop=p=g.scrollParent[0].scrollTop+b.scrollSpeed:s.pageY-g.overflowOffset.top<b.scrollSensitivity&&(g.scrollParent[0].scrollTop=p=g.scrollParent[0].scrollTop-b.scrollSpeed);if(!b.axis||b.axis!="y")g.overflowOffset.left+g.scrollParent[0].offsetWidth-s.pageX<b.scrollSensitivity?g.scrollParent[0].scrollLeft=p=g.scrollParent[0].scrollLeft+b.scrollSpeed:s.pageX-g.overflowOffset.left<b.scrollSensitivity&&
+(g.scrollParent[0].scrollLeft=p=g.scrollParent[0].scrollLeft-b.scrollSpeed)}else{if(!b.axis||b.axis!="x")s.pageY-a(document).scrollTop()<b.scrollSensitivity?p=a(document).scrollTop(a(document).scrollTop()-b.scrollSpeed):a(window).height()-(s.pageY-a(document).scrollTop())<b.scrollSensitivity&&(p=a(document).scrollTop(a(document).scrollTop()+b.scrollSpeed));if(!b.axis||b.axis!="y")s.pageX-a(document).scrollLeft()<b.scrollSensitivity?p=a(document).scrollLeft(a(document).scrollLeft()-b.scrollSpeed):
+a(window).width()-(s.pageX-a(document).scrollLeft())<b.scrollSensitivity&&(p=a(document).scrollLeft(a(document).scrollLeft()+b.scrollSpeed))}p!==false&&a.ui.ddmanager&&!b.dropBehaviour&&a.ui.ddmanager.prepareOffsets(g,s)}});a.ui.plugin.add("draggable","snap",{start:function(){var s=a(this).data("draggable"),g=s.options;s.snapElements=[];a(g.snap.constructor!=String?g.snap.items||":data(draggable)":g.snap).each(function(){var b=a(this),p=b.offset();this!=s.element[0]&&s.snapElements.push({item:this,
+width:b.outerWidth(),height:b.outerHeight(),top:p.top,left:p.left})})},drag:function(s,g){for(var b=a(this).data("draggable"),p=b.options,w=p.snapTolerance,c=g.offset.left,f=c+b.helperProportions.width,d=g.offset.top,n=d+b.helperProportions.height,v=b.snapElements.length-1;v>=0;v--){var B=b.snapElements[v].left,q=B+b.snapElements[v].width,L=b.snapElements[v].top,Q=L+b.snapElements[v].height;if(B-w<c&&c<q+w&&L-w<d&&d<Q+w||B-w<c&&c<q+w&&L-w<n&&n<Q+w||B-w<f&&f<q+w&&L-w<d&&d<Q+w||B-w<f&&f<q+w&&L-w<n&&
+n<Q+w){if(p.snapMode!="inner"){var K=Math.abs(L-n)<=w,I=Math.abs(Q-d)<=w,S=Math.abs(B-f)<=w,R=Math.abs(q-c)<=w;K&&(g.position.top=b._convertPositionTo("relative",{top:L-b.helperProportions.height,left:0}).top-b.margins.top);I&&(g.position.top=b._convertPositionTo("relative",{top:Q,left:0}).top-b.margins.top);S&&(g.position.left=b._convertPositionTo("relative",{top:0,left:B-b.helperProportions.width}).left-b.margins.left);R&&(g.position.left=b._convertPositionTo("relative",{top:0,left:q}).left-b.margins.left)}var N=
+K||I||S||R;if(p.snapMode!="outer"){K=Math.abs(L-d)<=w;I=Math.abs(Q-n)<=w;S=Math.abs(B-c)<=w;R=Math.abs(q-f)<=w;K&&(g.position.top=b._convertPositionTo("relative",{top:L,left:0}).top-b.margins.top);I&&(g.position.top=b._convertPositionTo("relative",{top:Q-b.helperProportions.height,left:0}).top-b.margins.top);S&&(g.position.left=b._convertPositionTo("relative",{top:0,left:B}).left-b.margins.left);R&&(g.position.left=b._convertPositionTo("relative",{top:0,left:q-b.helperProportions.width}).left-b.margins.left)}!b.snapElements[v].snapping&&
+(K||I||S||R||N)&&b.options.snap.snap&&b.options.snap.snap.call(b.element,s,a.extend(b._uiHash(),{snapItem:b.snapElements[v].item}));b.snapElements[v].snapping=K||I||S||R||N}else{b.snapElements[v].snapping&&b.options.snap.release&&b.options.snap.release.call(b.element,s,a.extend(b._uiHash(),{snapItem:b.snapElements[v].item}));b.snapElements[v].snapping=false}}}});a.ui.plugin.add("draggable","stack",{start:function(){var s=a(this).data("draggable").options;s=a.makeArray(a(s.stack)).sort(function(b,
+p){return(parseInt(a(b).css("zIndex"),10)||0)-(parseInt(a(p).css("zIndex"),10)||0)});if(s.length){var g=parseInt(s[0].style.zIndex)||0;a(s).each(function(b){this.style.zIndex=g+b});this[0].style.zIndex=g+s.length}}});a.ui.plugin.add("draggable","zIndex",{start:function(s,g){var b=a(g.helper),p=a(this).data("draggable").options;b.css("zIndex")&&(p._zIndex=b.css("zIndex"));b.css("zIndex",p.zIndex)},stop:function(s,g){var b=a(this).data("draggable").options;b._zIndex&&a(g.helper).css("zIndex",b._zIndex)}})})(jQuery);
+(function(a){a.widget("ui.slider",a.ui.mouse,{widgetEventPrefix:"slide",options:{animate:false,distance:0,max:100,min:0,orientation:"horizontal",range:false,step:1,value:0,values:null},_create:function(){var s=this,g=this.options,b=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),p=g.values&&g.values.length||1,w=[];this._mouseSliding=this._keySliding=false;this._animateOff=true;this._handleIndex=null;this._detectOrientation();this._mouseInit();this.element.addClass("ui-slider ui-slider-"+
+this.orientation+" ui-widget ui-widget-content ui-corner-all"+(g.disabled?" ui-slider-disabled ui-disabled":""));this.range=a([]);g.range&&(g.range===true&&(g.values||(g.values=[this._valueMin(),this._valueMin()]),g.values.length&&g.values.length!==2&&(g.values=[g.values[0],g.values[0]])),this.range=a("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(g.range==="min"||g.range==="max"?" ui-slider-range-"+g.range:"")));for(var c=b.length;c<p;c+=1)w.push("<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>");
+this.handles=b.add(a(w.join("")).appendTo(s.element));this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(f){f.preventDefault()}).hover(function(){g.disabled||a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")}).focus(function(){g.disabled?a(this).blur():(a(".ui-slider .ui-state-focus").removeClass("ui-state-focus"),a(this).addClass("ui-state-focus"))}).blur(function(){a(this).removeClass("ui-state-focus")});this.handles.each(function(f){a(this).data("index.ui-slider-handle",
+f)});this.handles.keydown(function(f){var d=true,n=a(this).data("index.ui-slider-handle"),v,B,q;if(!s.options.disabled){switch(f.keyCode){case a.ui.keyCode.HOME:case a.ui.keyCode.END:case a.ui.keyCode.PAGE_UP:case a.ui.keyCode.PAGE_DOWN:case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:d=false;if(!s._keySliding){s._keySliding=true;a(this).addClass("ui-state-active");v=s._start(f,n);if(v===false)return}}v=s.options.step;s.options.values&&s.options.values.length?
+B=q=s.values(n):B=q=s.value();switch(f.keyCode){case a.ui.keyCode.HOME:q=s._valueMin();break;case a.ui.keyCode.END:q=s._valueMax();break;case a.ui.keyCode.PAGE_UP:q=s._trimAlignValue(B+(s._valueMax()-s._valueMin())/5);break;case a.ui.keyCode.PAGE_DOWN:q=s._trimAlignValue(B-(s._valueMax()-s._valueMin())/5);break;case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:if(B===s._valueMax())return;q=s._trimAlignValue(B+v);break;case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:if(B===s._valueMin())return;q=s._trimAlignValue(B-
+v)}s._slide(f,n,q);return d}}).keyup(function(f){var d=a(this).data("index.ui-slider-handle");s._keySliding&&(s._keySliding=false,s._stop(f,d),s._change(f,d),a(this).removeClass("ui-state-active"))});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");this._mouseDestroy();
+return this},_mouseCapture:function(s){var g=this.options,b,p,w,c,f;if(g.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();b=this._normValueFromMouse({x:s.pageX,y:s.pageY});p=this._valueMax()-this._valueMin()+1;c=this;this.handles.each(function(d){var n=Math.abs(b-c.values(d));p>n&&(p=n,w=a(this),f=d)});g.range===true&&this.values(1)===g.min&&(f+=1,w=a(this.handles[f]));if(this._start(s,f)===false)return false;
+this._mouseSliding=true;c._handleIndex=f;w.addClass("ui-state-active").focus();g=w.offset();this._clickOffset=!a(s.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:s.pageX-g.left-w.width()/2,top:s.pageY-g.top-w.height()/2-(parseInt(w.css("borderTopWidth"),10)||0)-(parseInt(w.css("borderBottomWidth"),10)||0)+(parseInt(w.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(s,f,b);return this._animateOff=true},_mouseStart:function(){return true},_mouseDrag:function(s){var g=
+this._normValueFromMouse({x:s.pageX,y:s.pageY});this._slide(s,this._handleIndex,g);return false},_mouseStop:function(s){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(s,this._handleIndex);this._change(s,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(s){var g,b;this.orientation==="horizontal"?
+(g=this.elementSize.width,b=s.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(g=this.elementSize.height,b=s.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0));s=b/g;s>1&&(s=1);s<0&&(s=0);this.orientation==="vertical"&&(s=1-s);g=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+s*g)},_start:function(s,g){var b={handle:this.handles[g],value:this.value()};this.options.values&&this.options.values.length&&(b.value=this.values(g),
+b.values=this.values());return this._trigger("start",s,b)},_slide:function(s,g,b){var p,w,c;this.options.values&&this.options.values.length?(p=this.values(g?0:1),this.options.values.length===2&&this.options.range===true&&(g===0&&b>p||g===1&&b<p)&&(b=p),b!==this.values(g)&&(w=this.values(),w[g]=b,c=this._trigger("slide",s,{handle:this.handles[g],value:b,values:w}),this.values(g?0:1),c!==false&&this.values(g,b,true))):b!==this.value()&&(c=this._trigger("slide",s,{handle:this.handles[g],value:b}),c!==
+false&&this.value(b))},_stop:function(s,g){var b={handle:this.handles[g],value:this.value()};this.options.values&&this.options.values.length&&(b.value=this.values(g),b.values=this.values());this._trigger("stop",s,b)},_change:function(s,g){if(!this._keySliding&&!this._mouseSliding){var b={handle:this.handles[g],value:this.value()};this.options.values&&this.options.values.length&&(b.value=this.values(g),b.values=this.values());this._trigger("change",s,b)}},value:function(s){if(arguments.length){this.options.value=
+this._trimAlignValue(s);this._refreshValue();this._change(null,0)}else return this._value()},values:function(s,g){var b,p,w;if(arguments.length>1){this.options.values[s]=this._trimAlignValue(g);this._refreshValue();this._change(null,s)}else{if(!arguments.length)return this._values();if(!a.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(s):this.value();b=this.options.values;p=arguments[0];for(w=0;w<b.length;w+=1){b[w]=this._trimAlignValue(p[w]);this._change(null,
+w)}this._refreshValue()}},_setOption:function(s,g){var b,p=0;a.isArray(this.options.values)&&(p=this.options.values.length);a.Widget.prototype._setOption.apply(this,arguments);switch(s){case "disabled":g?(this.handles.filter(".ui-state-focus").blur(),this.handles.removeClass("ui-state-hover"),this.handles.propAttr("disabled",true),this.element.addClass("ui-disabled")):(this.handles.propAttr("disabled",false),this.element.removeClass("ui-disabled"));break;case "orientation":this._detectOrientation();
+this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation);this._refreshValue();break;case "value":this._animateOff=true;this._refreshValue();this._change(null,0);this._animateOff=false;break;case "values":this._animateOff=true;this._refreshValue();for(b=0;b<p;b+=1)this._change(null,b);this._animateOff=false}},_value:function(){var s=this.options.value;return s=this._trimAlignValue(s)},_values:function(s){var g,b;if(arguments.length){g=this.options.values[s];
+return g=this._trimAlignValue(g)}g=this.options.values.slice();for(b=0;b<g.length;b+=1)g[b]=this._trimAlignValue(g[b]);return g},_trimAlignValue:function(s){if(s<=this._valueMin())return this._valueMin();if(s>=this._valueMax())return this._valueMax();var g=this.options.step>0?this.options.step:1,b=(s-this._valueMin())%g;s=s-b;Math.abs(b)*2>=g&&(s+=b>0?g:-g);return parseFloat(s.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var s=
+this.options.range,g=this.options,b=this,p=this._animateOff?false:g.animate,w,c={},f,d,n,v;this.options.values&&this.options.values.length?this.handles.each(function(B){w=(b.values(B)-b._valueMin())/(b._valueMax()-b._valueMin())*100;c[b.orientation==="horizontal"?"left":"bottom"]=w+"%";a(this).stop(1,1)[p?"animate":"css"](c,g.animate);b.options.range===true&&(b.orientation==="horizontal"?(B===0&&b.range.stop(1,1)[p?"animate":"css"]({left:w+"%"},g.animate),B===1&&b.range[p?"animate":"css"]({width:w-
+f+"%"},{queue:false,duration:g.animate})):(B===0&&b.range.stop(1,1)[p?"animate":"css"]({bottom:w+"%"},g.animate),B===1&&b.range[p?"animate":"css"]({height:w-f+"%"},{queue:false,duration:g.animate})));f=w}):(d=this.value(),n=this._valueMin(),v=this._valueMax(),w=v!==n?(d-n)/(v-n)*100:0,c[b.orientation==="horizontal"?"left":"bottom"]=w+"%",this.handle.stop(1,1)[p?"animate":"css"](c,g.animate),s==="min"&&this.orientation==="horizontal"&&this.range.stop(1,1)[p?"animate":"css"]({width:w+"%"},g.animate),
+s==="max"&&this.orientation==="horizontal"&&this.range[p?"animate":"css"]({width:100-w+"%"},{queue:false,duration:g.animate}),s==="min"&&this.orientation==="vertical"&&this.range.stop(1,1)[p?"animate":"css"]({height:w+"%"},g.animate),s==="max"&&this.orientation==="vertical"&&this.range[p?"animate":"css"]({height:100-w+"%"},{queue:false,duration:g.animate}))}});a.extend(a.ui.slider,{version:"1.8.17"})})(jQuery);(function(a){Math.precision=function(c,f){if(f===undefined)f=0;return Math.round(c*Math.pow(10,f))/Math.pow(10,f)};var s=function(c,f){var d=this,n=c.find("img:first"),v=0,B=100,q=100,L=0,Q=100,K=100,I=0,S=0,R,N,ga=[],oa=function(U){for(var Z=0;Z<ga.length;Z++)ga[Z].call(d,d,U)},Y=function(U){var Z=c.offset();R={l:Z.left|0,t:Z.top|0};clearTimeout(N);N=setTimeout(function(){Ba.call(d,U)},0);a(document).bind("mousemove",V).bind("mouseup",ea);U.preventDefault()},V=function(U){clearTimeout(N);N=setTimeout(function(){Ba.call(d,
+U)},0);U.stopPropagation();U.preventDefault();return false},ea=function(U){a(document).unbind("mouseup",ea).unbind("mousemove",V);U.stopPropagation();U.preventDefault();return false},Ba=function(U){var Z=U.pageX-R.l;U=U.pageY-R.t;var na=c.w,pa=c.h;if(Z<0)Z=0;else if(Z>na)Z=na;if(U<0)U=0;else if(U>pa)U=pa;ja.call(d,"xy",{x:Z/na*q+v,y:U/pa*K+L})},ja=function(U,Z,na){if(Z===undefined){if(U===undefined||U==null)U="xy";switch(U.toLowerCase()){case "x":return I;case "y":return S;default:return{x:I,y:S}}}if(!(na!=
+null&&na==d)){var pa=false,ma,la;if(U==null)U="xy";switch(U.toLowerCase()){case "x":ma=Z&&(Z.x&&Z.x|0||Z|0)||0;break;case "y":la=Z&&(Z.y&&Z.y|0||Z|0)||0;break;default:ma=Z&&Z.x&&Z.x|0||0;la=Z&&Z.y&&Z.y|0||0}if(ma!=null){if(ma<v)ma=v;else if(ma>B)ma=B;if(I!=ma){I=ma;pa=true}}if(la!=null){if(la<L)la=L;else if(la>Q)la=Q;if(S!=la){S=la;pa=true}}pa&&oa.call(d,na||d)}},ca=function(U){a.isFunction(U)&&ga.push(U)};a.extend(true,d,{val:ja,range:function(U,Z){if(Z===undefined){if(U===undefined||U==null)U="all";
+switch(U.toLowerCase()){case "minx":return v;case "maxx":return B;case "rangex":return{minX:v,maxX:B,rangeX:q};case "miny":return L;case "maxy":return Q;case "rangey":return{minY:L,maxY:Q,rangeY:K};default:return{minX:v,maxX:B,rangeX:q,minY:L,maxY:Q,rangeY:K}}}var na,pa,ma,la;if(U==null)U="all";switch(U.toLowerCase()){case "minx":na=Z&&(Z.minX&&Z.minX|0||Z|0)||0;break;case "maxx":pa=Z&&(Z.maxX&&Z.maxX|0||Z|0)||0;break;case "rangex":na=Z&&Z.minX&&Z.minX|0||0;pa=Z&&Z.maxX&&Z.maxX|0||0;break;case "miny":ma=
+Z&&(Z.minY&&Z.minY|0||Z|0)||0;break;case "maxy":la=Z&&(Z.maxY&&Z.maxY|0||Z|0)||0;break;case "rangey":ma=Z&&Z.minY&&Z.minY|0||0;la=Z&&Z.maxY&&Z.maxY|0||0;break;default:na=Z&&Z.minX&&Z.minX|0||0;pa=Z&&Z.maxX&&Z.maxX|0||0;ma=Z&&Z.minY&&Z.minY|0||0;la=Z&&Z.maxY&&Z.maxY|0||0}if(na!=null&&v!=na){v=na;q=B-v}if(pa!=null&&B!=pa){B=pa;q=B-v}if(ma!=null&&L!=ma){L=ma;K=Q-L}if(la!=null&&Q!=la){Q=la;K=Q-L}},bind:ca,unbind:function(U){if(a.isFunction(U))for(var Z;(Z=a.inArray(U,ga))!=-1;)ga.splice(Z,1)},destroy:function(){a(document).unbind("mouseup",
+ea).unbind("mousemove",V);c.unbind("mousedown",Y);ga=n=c=null}});n.src=f.arrow&&f.arrow.image;n.w=f.arrow&&f.arrow.width||n.width();n.h=f.arrow&&f.arrow.height||n.height();c.w=f.map&&f.map.width||c.width();c.h=f.map&&f.map.height||c.height();c.bind("mousedown",Y);ca.call(d,function(){var U=0,Z=0,na=c.w,pa=c.h,ma=n.w,la=n.h;setTimeout(function(){if(q>0)U=I==B?na:I/q*na|0;if(K>0)Z=S==Q?pa:S/K*pa|0;if(ma>=na)U=(na>>1)-(ma>>1);else U-=ma>>1;if(la>=pa)Z=(pa>>1)-(la>>1);else Z-=la>>1;n.css({left:U+"px",
+top:Z+"px"})},0)})},g=function(c,f,d,n){var v=this;c=c.find("td.Text input");var B=c.eq(3),q=c.eq(4),L=c.eq(5),Q=c.length>7?c.eq(6):null,K=c.eq(0),I=c.eq(1),S=c.eq(2),R=c.eq(c.length>7?7:6),N=c.length>7?c.eq(8):null,ga=function(ja){if(!(ja.target.value==""&&ja.target!=R.get(0)&&(d!=null&&ja.target!=d.get(0)||d==null))){if(!V(ja))return ja;switch(ja.target){case B.get(0):switch(ja.keyCode){case 38:B.val(ea.call(v,(B.val()<<0)+1,0,255));f.val("r",B.val(),ja.target);return false;case 40:B.val(ea.call(v,
+(B.val()<<0)-1,0,255));f.val("r",B.val(),ja.target);return false}break;case q.get(0):switch(ja.keyCode){case 38:q.val(ea.call(v,(q.val()<<0)+1,0,255));f.val("g",q.val(),ja.target);return false;case 40:q.val(ea.call(v,(q.val()<<0)-1,0,255));f.val("g",q.val(),ja.target);return false}break;case L.get(0):switch(ja.keyCode){case 38:L.val(ea.call(v,(L.val()<<0)+1,0,255));f.val("b",L.val(),ja.target);return false;case 40:L.val(ea.call(v,(L.val()<<0)-1,0,255));f.val("b",L.val(),ja.target);return false}break;
+case Q&&Q.get(0):switch(ja.keyCode){case 38:Q.val(ea.call(v,parseFloat(Q.val())+1,0,100));f.val("a",Math.precision(Q.val()*255/100,n),ja.target);return false;case 40:Q.val(ea.call(v,parseFloat(Q.val())-1,0,100));f.val("a",Math.precision(Q.val()*255/100,n),ja.target);return false}break;case K.get(0):switch(ja.keyCode){case 38:K.val(ea.call(v,(K.val()<<0)+1,0,360));f.val("h",K.val(),ja.target);return false;case 40:K.val(ea.call(v,(K.val()<<0)-1,0,360));f.val("h",K.val(),ja.target);return false}break;
+case I.get(0):switch(ja.keyCode){case 38:I.val(ea.call(v,(I.val()<<0)+1,0,100));f.val("s",I.val(),ja.target);return false;case 40:I.val(ea.call(v,(I.val()<<0)-1,0,100));f.val("s",I.val(),ja.target);return false}break;case S.get(0):switch(ja.keyCode){case 38:S.val(ea.call(v,(S.val()<<0)+1,0,100));f.val("v",S.val(),ja.target);return false;case 40:S.val(ea.call(v,(S.val()<<0)-1,0,100));f.val("v",S.val(),ja.target);return false}}}},oa=function(ja){if(!(ja.target.value==""&&ja.target!=R.get(0)&&(d!=null&&
+ja.target!=d.get(0)||d==null))){if(!V(ja))return ja;switch(ja.target){case B.get(0):B.val(ea.call(v,B.val(),0,255));f.val("r",B.val(),ja.target);break;case q.get(0):q.val(ea.call(v,q.val(),0,255));f.val("g",q.val(),ja.target);break;case L.get(0):L.val(ea.call(v,L.val(),0,255));f.val("b",L.val(),ja.target);break;case Q&&Q.get(0):Q.val(ea.call(v,Q.val(),0,100));f.val("a",Math.precision(Q.val()*255/100,n),ja.target);break;case K.get(0):K.val(ea.call(v,K.val(),0,360));f.val("h",K.val(),ja.target);break;
+case I.get(0):I.val(ea.call(v,I.val(),0,100));f.val("s",I.val(),ja.target);break;case S.get(0):S.val(ea.call(v,S.val(),0,100));f.val("v",S.val(),ja.target);break;case R.get(0):R.val(R.val().replace(/[^a-fA-F0-9]/g,"").toLowerCase().substring(0,6));d&&d.val(R.val());f.val("hex",R.val()!=""?R.val():null,ja.target);break;case d&&d.get(0):d.val(d.val().replace(/[^a-fA-F0-9]/g,"").toLowerCase().substring(0,6));R.val(d.val());f.val("hex",d.val()!=""?d.val():null,ja.target);break;case N&&N.get(0):N.val(N.val().replace(/[^a-fA-F0-9]/g,
+"").toLowerCase().substring(0,2));f.val("a",N.val()!=null?parseInt(N.val(),16):null,ja.target)}}},Y=function(ja){if(f.val()!=null)switch(ja.target){case B.get(0):B.val(f.val("r"));break;case q.get(0):q.val(f.val("g"));break;case L.get(0):L.val(f.val("b"));break;case Q&&Q.get(0):Q.val(Math.precision(f.val("a")*100/255,n));break;case K.get(0):K.val(f.val("h"));break;case I.get(0):I.val(f.val("s"));break;case S.get(0):S.val(f.val("v"));break;case R.get(0):case d&&d.get(0):R.val(f.val("hex"));d&&d.val(f.val("hex"));
+break;case N&&N.get(0):N.val(f.val("ahex").substring(6))}},V=function(ja){switch(ja.keyCode){case 9:case 16:case 29:case 37:case 39:return false;case "c".charCodeAt():case "v".charCodeAt():if(ja.ctrlKey)return false}return true},ea=function(ja,ca,U){if(ja==""||isNaN(ja))return ca;if(ja>U)return U;if(ja<ca)return ca;return ja},Ba=function(ja,ca){var U=ja.val("all");if(ca!=B.get(0))B.val(U!=null?U.r:"");if(ca!=q.get(0))q.val(U!=null?U.g:"");if(ca!=L.get(0))L.val(U!=null?U.b:"");if(Q&&ca!=Q.get(0))Q.val(U!=
+null?Math.precision(U.a*100/255,n):"");if(ca!=K.get(0))K.val(U!=null?U.h:"");if(ca!=I.get(0))I.val(U!=null?U.s:"");if(ca!=S.get(0))S.val(U!=null?U.v:"");if(ca!=R.get(0)&&(d&&ca!=d.get(0)||!d))R.val(U!=null?U.hex:"");if(d&&ca!=d.get(0)&&ca!=R.get(0))d.val(U!=null?U.hex:"");if(N&&ca!=N.get(0))N.val(U!=null?U.ahex.substring(6):"")};a.extend(true,v,{destroy:function(){B.add(q).add(L).add(Q).add(K).add(I).add(S).add(R).add(d).add(N).unbind("keyup",oa).unbind("blur",Y);B.add(q).add(L).add(Q).add(K).add(I).add(S).unbind("keydown",
+ga);f.unbind(Ba);N=R=S=I=K=Q=L=q=B=null}});B.add(q).add(L).add(Q).add(K).add(I).add(S).add(R).add(d).add(N).bind("keyup",oa).bind("blur",Y);B.add(q).add(L).add(Q).add(K).add(I).add(S).bind("keydown",ga);f.bind(Ba)};a.jPicker={List:[],Color:function(c){var f=this,d,n,v,B,q,L,Q,K=[],I=function(R){for(var N=0;N<K.length;N++)K[N].call(f,f,R)},S=function(R,N,ga){if(N===undefined){if(R===undefined||R==null||R=="")R="all";if(d==null)return null;switch(R.toLowerCase()){case "ahex":return w.rgbaToHex({r:d,
+g:n,b:v,a:B});case "hex":return S("ahex").substring(0,6);case "all":return{r:d,g:n,b:v,a:B,h:q,s:L,v:Q,hex:S.call(f,"hex"),ahex:S.call(f,"ahex")};default:N={};for(var oa=0;oa<R.length;oa++)switch(R.charAt(oa)){case "r":if(R.length==1)N=d;else N.r=d;break;case "g":if(R.length==1)N=n;else N.g=n;break;case "b":if(R.length==1)N=v;else N.b=v;break;case "a":if(R.length==1)N=B;else N.a=B;break;case "h":if(R.length==1)N=q;else N.h=q;break;case "s":if(R.length==1)N=L;else N.s=L;break;case "v":if(R.length==
+1)N=Q;else N.v=Q}return N=={}?S.call(f,"all"):N}}if(!(ga!=null&&ga==f)){var Y=false;if(R==null)R="";if(N==null){if(d!=null){d=null;Y=true}if(n!=null){n=null;Y=true}if(v!=null){v=null;Y=true}if(B!=null){B=null;Y=true}if(q!=null){q=null;Y=true}if(L!=null){L=null;Y=true}if(Q!=null){Q=null;Y=true}Y&&I.call(f,ga||f)}else switch(R.toLowerCase()){case "ahex":case "hex":N=w.hexToRgba(N&&(N.ahex||N.hex)||N||"00000000");S.call(f,"rgba",{r:N.r,g:N.g,b:N.b,a:R=="ahex"?N.a:B!=null?B:255},ga);break;default:if(N&&
+(N.ahex!=null||N.hex!=null)){S.call(f,"ahex",N.ahex||N.hex||"00000000",ga);break}var V={},ea=false,Ba=false;if(N.r!==undefined&&!R.indexOf("r")==-1)R+="r";if(N.g!==undefined&&!R.indexOf("g")==-1)R+="g";if(N.b!==undefined&&!R.indexOf("b")==-1)R+="b";if(N.a!==undefined&&!R.indexOf("a")==-1)R+="a";if(N.h!==undefined&&!R.indexOf("h")==-1)R+="h";if(N.s!==undefined&&!R.indexOf("s")==-1)R+="s";if(N.v!==undefined&&!R.indexOf("v")==-1)R+="v";for(oa=0;oa<R.length;oa++)switch(R.charAt(oa)){case "r":if(Ba)continue;
+ea=true;V.r=N&&N.r&&N.r|0||N&&N|0||0;if(V.r<0)V.r=0;else if(V.r>255)V.r=255;if(d!=V.r){d=V.r;Y=true}break;case "g":if(Ba)continue;ea=true;V.g=N&&N.g&&N.g|0||N&&N|0||0;if(V.g<0)V.g=0;else if(V.g>255)V.g=255;if(n!=V.g){n=V.g;Y=true}break;case "b":if(Ba)continue;ea=true;V.b=N&&N.b&&N.b|0||N&&N|0||0;if(V.b<0)V.b=0;else if(V.b>255)V.b=255;if(v!=V.b){v=V.b;Y=true}break;case "a":V.a=N&&N.a!=null?N.a|0:N!=null?N|0:255;if(V.a<0)V.a=0;else if(V.a>255)V.a=255;if(B!=V.a){B=V.a;Y=true}break;case "h":if(ea)continue;
+Ba=true;V.h=N&&N.h&&N.h|0||N&&N|0||0;if(V.h<0)V.h=0;else if(V.h>360)V.h=360;if(q!=V.h){q=V.h;Y=true}break;case "s":if(ea)continue;Ba=true;V.s=N&&N.s!=null?N.s|0:N!=null?N|0:100;if(V.s<0)V.s=0;else if(V.s>100)V.s=100;if(L!=V.s){L=V.s;Y=true}break;case "v":if(ea)continue;Ba=true;V.v=N&&N.v!=null?N.v|0:N!=null?N|0:100;if(V.v<0)V.v=0;else if(V.v>100)V.v=100;if(Q!=V.v){Q=V.v;Y=true}}if(Y){if(ea){d=d||0;n=n||0;v=v||0;N=w.rgbToHsv({r:d,g:n,b:v});q=N.h;L=N.s;Q=N.v}else if(Ba){q=q||0;L=L!=null?L:100;Q=Q!=
+null?Q:100;N=w.hsvToRgb({h:q,s:L,v:Q});d=N.r;n=N.g;v=N.b}B=B!=null?B:255;I.call(f,ga||f)}}}};a.extend(true,f,{val:S,bind:function(R){a.isFunction(R)&&K.push(R)},unbind:function(R){if(a.isFunction(R))for(var N;(N=a.inArray(R,K))!=-1;)K.splice(N,1)},destroy:function(){K=null}});if(c)if(c.ahex!=null)S("ahex",c);else if(c.hex!=null)S((c.a!=null?"a":"")+"hex",c.a!=null?{ahex:c.hex+w.intToHex(c.a)}:c);else if(c.r!=null&&c.g!=null&&c.b!=null)S("rgb"+(c.a!=null?"a":""),c);else if(c.h!=null&&c.s!=null&&c.v!=
+null)S("hsv"+(c.a!=null?"a":""),c)},ColorMethods:{hexToRgba:function(c){c=this.validateHex(c);if(c=="")return{r:null,g:null,b:null,a:null};var f="00",d="00",n="00",v="255";if(c.length==6)c+="ff";if(c.length>6){f=c.substring(0,2);d=c.substring(2,4);n=c.substring(4,6);v=c.substring(6,c.length)}else{if(c.length>4){f=c.substring(4,c.length);c=c.substring(0,4)}if(c.length>2){d=c.substring(2,c.length);c=c.substring(0,2)}if(c.length>0)n=c.substring(0,c.length)}return{r:this.hexToInt(f),g:this.hexToInt(d),
+b:this.hexToInt(n),a:this.hexToInt(v)}},validateHex:function(c){if(typeof c=="object")return"";c=c.toLowerCase().replace(/[^a-f0-9]/g,"");if(c.length>8)c=c.substring(0,8);return c},rgbaToHex:function(c){return this.intToHex(c.r)+this.intToHex(c.g)+this.intToHex(c.b)+this.intToHex(c.a)},intToHex:function(c){c=(c|0).toString(16);if(c.length==1)c="0"+c;return c.toLowerCase()},hexToInt:function(c){return parseInt(c,16)},rgbToHsv:function(c){var f=c.r/255,d=c.g/255;c=c.b/255;var n={h:0,s:0,v:0},v=0,B=
+0;if(f>=d&&f>=c){B=f;v=d>c?c:d}else if(d>=c&&d>=f){B=d;v=f>c?c:f}else{B=c;v=d>f?f:d}n.v=B;n.s=B?(B-v)/B:0;if(n.s){v=B-v;n.h=f==B?(d-c)/v:d==B?2+(c-f)/v:4+(f-d)/v;n.h=parseInt(n.h*60);if(n.h<0)n.h+=360}else n.h=0;n.s=n.s*100|0;n.v=n.v*100|0;return n},hsvToRgb:function(c){var f={r:0,g:0,b:0,a:100},d=c.h,n=c.s;c=c.v;if(n==0)f.r=c==0?f.g=f.b=0:f.g=f.b=c*255/100|0;else{if(d==360)d=0;d/=60;n/=100;c/=100;var v=d|0,B=d-v;d=c*(1-n);var q=c*(1-n*B);n=c*(1-n*(1-B));switch(v){case 0:f.r=c;f.g=n;f.b=d;break;case 1:f.r=
+q;f.g=c;f.b=d;break;case 2:f.r=d;f.g=c;f.b=n;break;case 3:f.r=d;f.g=q;f.b=c;break;case 4:f.r=n;f.g=d;f.b=c;break;case 5:f.r=c;f.g=d;f.b=q}f.r=f.r*255|0;f.g=f.g*255|0;f.b=f.b*255|0}return f}}};var b=a.jPicker.Color,p=a.jPicker.List,w=a.jPicker.ColorMethods;a.fn.jPicker=function(c){var f=arguments;return this.each(function(){var d=this,n=a.extend(true,{},a.fn.jPicker.defaults,c);if(a(d).get(0).nodeName.toLowerCase()=="input"){a.extend(true,n,{window:{bindToInput:true,expandable:true,input:a(d)}});if(a(d).val()==
+""){n.color.active=new b({hex:null});n.color.current=new b({hex:null})}else if(w.validateHex(a(d).val())){n.color.active=new b({hex:a(d).val(),a:n.color.active.val("a")});n.color.current=new b({hex:a(d).val(),a:n.color.active.val("a")})}}if(n.window.expandable)a(d).after('<span class="jPicker"><span class="Icon"><span class="Color">&nbsp;</span><span class="Alpha">&nbsp;</span><span class="Image" title="Click To Open Color Picker">&nbsp;</span><span class="Container">&nbsp;</span></span></span>');
+else n.window.liveUpdate=false;var v=parseFloat(navigator.appVersion.split("MSIE")[1])<7&&document.body.filters,B=null,q=null,L=null,Q=null,K=null,I=null,S=null,R=null,N=null,ga=null,oa=null,Y=null,V=null,ea=null,Ba=null,ja=null,ca=null,U=null,Z=null,na=null,pa=null,ma=null,la=null,ya=null,za=null,Ja=null,Ia=null,Fa=null,Ma=function(M){var P=ka.active,da=P.val("hex"),Ea,Oa;n.color.mode=M;switch(M){case "h":setTimeout(function(){Ta.call(d,q,"transparent");Ga.call(d,Q,0);ta.call(d,Q,100);Ga.call(d,
+K,260);ta.call(d,K,100);Ta.call(d,L,"transparent");Ga.call(d,S,0);ta.call(d,S,100);Ga.call(d,R,260);ta.call(d,R,100);Ga.call(d,N,260);ta.call(d,N,100);Ga.call(d,ga,260);ta.call(d,ga,100);Ga.call(d,Y,260);ta.call(d,Y,100)},0);V.range("all",{minX:0,maxX:100,minY:0,maxY:100});ea.range("rangeY",{minY:0,maxY:360});if(P.val("ahex")==null)break;V.val("xy",{x:P.val("s"),y:100-P.val("v")},V);ea.val("y",360-P.val("h"),ea);break;case "s":setTimeout(function(){Ta.call(d,q,"transparent");Ga.call(d,Q,-260);Ga.call(d,
+K,-520);Ga.call(d,S,-260);Ga.call(d,R,-520);Ga.call(d,Y,260);ta.call(d,Y,100)},0);V.range("all",{minX:0,maxX:360,minY:0,maxY:100});ea.range("rangeY",{minY:0,maxY:100});if(P.val("ahex")==null)break;V.val("xy",{x:P.val("h"),y:100-P.val("v")},V);ea.val("y",100-P.val("s"),ea);break;case "v":setTimeout(function(){Ta.call(d,q,"000000");Ga.call(d,Q,-780);Ga.call(d,K,260);Ta.call(d,L,da);Ga.call(d,S,-520);Ga.call(d,R,260);ta.call(d,R,100);Ga.call(d,Y,260);ta.call(d,Y,100)},0);V.range("all",{minX:0,maxX:360,
+minY:0,maxY:100});ea.range("rangeY",{minY:0,maxY:100});if(P.val("ahex")==null)break;V.val("xy",{x:P.val("h"),y:100-P.val("s")},V);ea.val("y",100-P.val("v"),ea);break;case "r":Ea=-1040;Oa=-780;V.range("all",{minX:0,maxX:255,minY:0,maxY:255});ea.range("rangeY",{minY:0,maxY:255});if(P.val("ahex")==null)break;V.val("xy",{x:P.val("b"),y:255-P.val("g")},V);ea.val("y",255-P.val("r"),ea);break;case "g":Ea=-1560;Oa=-1820;V.range("all",{minX:0,maxX:255,minY:0,maxY:255});ea.range("rangeY",{minY:0,maxY:255});
+if(P.val("ahex")==null)break;V.val("xy",{x:P.val("b"),y:255-P.val("r")},V);ea.val("y",255-P.val("g"),ea);break;case "b":Ea=-2080;Oa=-2860;V.range("all",{minX:0,maxX:255,minY:0,maxY:255});ea.range("rangeY",{minY:0,maxY:255});if(P.val("ahex")==null)break;V.val("xy",{x:P.val("r"),y:255-P.val("g")},V);ea.val("y",255-P.val("b"),ea);break;case "a":setTimeout(function(){Ta.call(d,q,"transparent");Ga.call(d,Q,-260);Ga.call(d,K,-520);Ga.call(d,S,260);Ga.call(d,R,260);ta.call(d,R,100);Ga.call(d,Y,0);ta.call(d,
+Y,100)},0);V.range("all",{minX:0,maxX:360,minY:0,maxY:100});ea.range("rangeY",{minY:0,maxY:255});if(P.val("ahex")==null)break;V.val("xy",{x:P.val("h"),y:100-P.val("v")},V);ea.val("y",255-P.val("a"),ea);break;default:throw"Invalid Mode";}switch(M){case "s":case "v":case "a":setTimeout(function(){ta.call(d,Q,100);ta.call(d,S,100);Ga.call(d,N,260);ta.call(d,N,100);Ga.call(d,ga,260);ta.call(d,ga,100)},0);break;case "r":case "g":case "b":setTimeout(function(){Ta.call(d,q,"transparent");Ta.call(d,L,"transparent");
+ta.call(d,S,100);ta.call(d,Q,100);Ga.call(d,Q,Ea);Ga.call(d,K,Ea-260);Ga.call(d,S,Oa-780);Ga.call(d,R,Oa-520);Ga.call(d,N,Oa);Ga.call(d,ga,Oa-260);Ga.call(d,Y,260);ta.call(d,Y,100)},0)}P.val("ahex")!=null&&Da.call(d,P)},Da=function(M,P){if(P==null||P!=ea&&P!=V)va.call(d,M,P);setTimeout(function(){kb.call(d,M);vb.call(d,M);cb.call(d,M)},0)},wa=function(M,P){var da=ka.active;if(!(P!=V&&da.val()==null)){var Ea=M.val("all");switch(n.color.mode){case "h":da.val("sv",{s:Ea.x,v:100-Ea.y},P);break;case "s":case "a":da.val("hv",
+{h:Ea.x,v:100-Ea.y},P);break;case "v":da.val("hs",{h:Ea.x,s:100-Ea.y},P);break;case "r":da.val("gb",{g:255-Ea.y,b:Ea.x},P);break;case "g":da.val("rb",{r:255-Ea.y,b:Ea.x},P);break;case "b":da.val("rg",{r:Ea.x,g:255-Ea.y},P)}}},ra=function(M,P){var da=ka.active;if(!(P!=ea&&da.val()==null))switch(n.color.mode){case "h":da.val("h",{h:360-M.val("y")},P);break;case "s":da.val("s",{s:100-M.val("y")},P);break;case "v":da.val("v",{v:100-M.val("y")},P);break;case "r":da.val("r",{r:255-M.val("y")},P);break;
+case "g":da.val("g",{g:255-M.val("y")},P);break;case "b":da.val("b",{b:255-M.val("y")},P);break;case "a":da.val("a",255-M.val("y"),P)}},va=function(M,P){if(P!=V)switch(n.color.mode){case "h":var da=M.val("sv");V.val("xy",{x:da!=null?da.s:100,y:100-(da!=null?da.v:100)},P);break;case "s":case "a":da=M.val("hv");V.val("xy",{x:da&&da.h||0,y:100-(da!=null?da.v:100)},P);break;case "v":da=M.val("hs");V.val("xy",{x:da&&da.h||0,y:100-(da!=null?da.s:100)},P);break;case "r":da=M.val("bg");V.val("xy",{x:da&&
+da.b||0,y:255-(da&&da.g||0)},P);break;case "g":da=M.val("br");V.val("xy",{x:da&&da.b||0,y:255-(da&&da.r||0)},P);break;case "b":da=M.val("rg");V.val("xy",{x:da&&da.r||0,y:255-(da&&da.g||0)},P)}if(P!=ea)switch(n.color.mode){case "h":ea.val("y",360-(M.val("h")||0),P);break;case "s":da=M.val("s");ea.val("y",100-(da!=null?da:100),P);break;case "v":da=M.val("v");ea.val("y",100-(da!=null?da:100),P);break;case "r":ea.val("y",255-(M.val("r")||0),P);break;case "g":ea.val("y",255-(M.val("g")||0),P);break;case "b":ea.val("y",
+255-(M.val("b")||0),P);break;case "a":da=M.val("a");ea.val("y",255-(da!=null?da:255),P)}},kb=function(M){try{var P=M.val("all");na.css({backgroundColor:P&&"#"+P.hex||"transparent"});ta.call(d,na,P&&Math.precision(P.a*100/255,4)||0)}catch(da){}},vb=function(M){switch(n.color.mode){case "h":Ta.call(d,q,(new b({h:M.val("h")||0,s:100,v:100})).val("hex"));break;case "s":case "a":var P=M.val("s");ta.call(d,K,100-(P!=null?P:100));break;case "v":P=M.val("v");ta.call(d,Q,P!=null?P:100);break;case "r":ta.call(d,
+K,Math.precision((M.val("r")||0)/255*100,4));break;case "g":ta.call(d,K,Math.precision((M.val("g")||0)/255*100,4));break;case "b":ta.call(d,K,Math.precision((M.val("b")||0)/255*100))}M=M.val("a");ta.call(d,I,Math.precision((255-(M||0))*100/255,4))},cb=function(M){switch(n.color.mode){case "h":var P=M.val("a");ta.call(d,oa,Math.precision((255-(P||0))*100/255,4));break;case "s":P=M.val("hva");var da=new b({h:P&&P.h||0,s:100,v:P!=null?P.v:100});Ta.call(d,L,da.val("hex"));ta.call(d,R,100-(P!=null?P.v:
+100));ta.call(d,oa,Math.precision((255-(P&&P.a||0))*100/255,4));break;case "v":P=M.val("hsa");da=new b({h:P&&P.h||0,s:P!=null?P.s:100,v:100});Ta.call(d,L,da.val("hex"));ta.call(d,oa,Math.precision((255-(P&&P.a||0))*100/255,4));break;case "r":case "g":case "b":da=P=0;M=M.val("rgba");if(n.color.mode=="r"){P=M&&M.b||0;da=M&&M.g||0}else if(n.color.mode=="g"){P=M&&M.b||0;da=M&&M.r||0}else if(n.color.mode=="b"){P=M&&M.r||0;da=M&&M.g||0}var Ea=da>P?P:da;ta.call(d,R,P>da?Math.precision((P-da)/(255-da)*100,
+4):0);ta.call(d,N,da>P?Math.precision((da-P)/(255-P)*100,4):0);ta.call(d,ga,Math.precision(Ea/255*100,4));ta.call(d,oa,Math.precision((255-(M&&M.a||0))*100/255,4));break;case "a":P=M.val("a");Ta.call(d,L,M.val("hex")||"000000");ta.call(d,oa,P!=null?0:100);ta.call(d,Y,P!=null?100:0)}},Ta=function(M,P){M.css({backgroundColor:P&&P.length==6&&"#"+P||"transparent"})},Va=function(M,P){if(v&&(P.indexOf("AlphaBar.png")!=-1||P.indexOf("Bars.png")!=-1||P.indexOf("Maps.png")!=-1)){M.attr("pngSrc",P);M.css({backgroundImage:"none",
+filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+P+"', sizingMethod='scale')"})}else M.css({backgroundImage:"url('"+P+"')"})},Ga=function(M,P){M.css({top:P+"px"})},ta=function(M,P){M.css({visibility:P>0?"visible":"hidden"});if(P>0&&P<100)if(v){var da=M.attr("pngSrc");da!=null&&(da.indexOf("AlphaBar.png")!=-1||da.indexOf("Bars.png")!=-1||da.indexOf("Maps.png")!=-1)?M.css({filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+da+"', sizingMethod='scale') progid:DXImageTransform.Microsoft.Alpha(opacity="+
+P+")"}):M.css({opacity:Math.precision(P/100,4)})}else M.css({opacity:Math.precision(P/100,4)});else if(P==0||P==100)if(v){da=M.attr("pngSrc");da!=null&&(da.indexOf("AlphaBar.png")!=-1||da.indexOf("Bars.png")!=-1||da.indexOf("Maps.png")!=-1)?M.css({filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+da+"', sizingMethod='scale')"}):M.css({opacity:""})}else M.css({opacity:""})},$a=function(){ka.active.val("ahex",ka.current.val("ahex"))},Ka=function(){ka.current.val("ahex",ka.active.val("ahex"))},
+Sa=function(M){a(this).parents("tbody:first").find('input:radio[value!="'+M.target.value+'"]').removeAttr("checked");Ma.call(d,M.target.value)},Ha=function(){$a.call(d)},db=function(){$a.call(d);n.window.expandable&&fb.call(d);a.isFunction(ob)&&ob.call(d,ka.active,la)},lb=function(){Ka.call(d);n.window.expandable&&fb.call(d);a.isFunction(ib)&&ib.call(d,ka.active,ma)},Ua=function(){pb.call(d)},Xa=function(M){var P=M.val("hex");pa.css({backgroundColor:P&&"#"+P||"transparent"});ta.call(d,pa,Math.precision((M.val("a")||
+0)*100/255,4))},wb=function(M){var P=M.val("hex");M=M.val("va");za.css({backgroundColor:P&&"#"+P||"transparent"});ta.call(d,Ja,Math.precision((255-(M&&M.a||0))*100/255,4));if(n.window.bindToInput&&n.window.updateInputColor)n.window.input.css({backgroundColor:P&&"#"+P||"transparent",color:M==null||M.v>75?"#000000":"#ffffff"})},sa=function(M){ja=parseInt(B.css("left"));ca=parseInt(B.css("top"));U=M.pageX;Z=M.pageY;a(document).bind("mousemove",hb).bind("mouseup",eb);M.preventDefault()},hb=function(M){B.css({left:ja-
+(U-M.pageX)+"px",top:ca-(Z-M.pageY)+"px"});n.window.expandable&&!a.support.boxModel&&B.prev().css({left:B.css("left"),top:B.css("top")});M.stopPropagation();M.preventDefault();return false},eb=function(M){a(document).unbind("mousemove",hb).unbind("mouseup",eb);M.stopPropagation();M.preventDefault();return false},sb=function(M){M.preventDefault();M.stopPropagation();ka.active.val("ahex",a(this).attr("title")||null,M.target);return false},ib=a.isFunction(f[1])&&f[1]||null,ab=a.isFunction(f[2])&&f[2]||
+null,ob=a.isFunction(f[3])&&f[3]||null,pb=function(){ka.current.val("ahex",ka.active.val("ahex"));var M=function(){if(!(!n.window.expandable||a.support.boxModel)){var P=B.find("table:first");B.before("<iframe/>");B.prev().css({width:P.width(),height:B.height(),opacity:0,position:"absolute",left:B.css("left"),top:B.css("top")})}};if(n.window.expandable){a(document.body).children("div.jPicker.Container").css({zIndex:10});B.css({zIndex:20})}switch(n.window.effects.type){case "fade":B.fadeIn(n.window.effects.speed.show,
+M);break;case "slide":B.slideDown(n.window.effects.speed.show,M);break;default:B.show(n.window.effects.speed.show,M)}},fb=function(){var M=function(){n.window.expandable&&B.css({zIndex:10});!n.window.expandable||a.support.boxModel||B.prev().remove()};switch(n.window.effects.type){case "fade":B.fadeOut(n.window.effects.speed.hide,M);break;case "slide":B.slideUp(n.window.effects.speed.hide,M);break;default:B.hide(n.window.effects.speed.hide,M)}},tb=function(){var M=n.window,P=M.expandable?a(d).next().find(".Container:first"):
+null;B=M.expandable?a("<div/>"):a(d);B.addClass("jPicker Container");M.expandable&&B.hide();B.get(0).onselectstart=function(xa){if(xa.target.nodeName.toLowerCase()!=="input")return false};var da=ka.active.val("all");if(M.alphaPrecision<0)M.alphaPrecision=0;else if(M.alphaPrecision>2)M.alphaPrecision=2;var Ea='<table class="jPicker" cellpadding="0" cellspacing="0"><tbody>'+(M.expandable?'<tr><td class="Move" colspan="5">&nbsp;</td></tr>':"")+'<tr><td rowspan="9"><h2 class="Title">'+(M.title||aa.text.title)+
+'</h2><div class="Map"><span class="Map1">&nbsp;</span><span class="Map2">&nbsp;</span><span class="Map3">&nbsp;</span><img src="'+ia.clientPath+ia.colorMap.arrow.file+'" class="Arrow"/></div></td><td rowspan="9"><div class="Bar"><span class="Map1">&nbsp;</span><span class="Map2">&nbsp;</span><span class="Map3">&nbsp;</span><span class="Map4">&nbsp;</span><span class="Map5">&nbsp;</span><span class="Map6">&nbsp;</span><img src="'+ia.clientPath+ia.colorBar.arrow.file+'" class="Arrow"/></div></td><td colspan="2" class="Preview"><div class="prev_div">'+
+aa.text.newColor+'<div class="color_preview"><span class="Active" title="'+aa.tooltips.colors.newColor+'">&nbsp;</span><span class="Current" title="'+aa.tooltips.colors.currentColor+'">&nbsp;</span></div></div>'+aa.text.currentColor+'</td><td rowspan="9" class="Button"><input type="button" class="Ok" value="'+aa.text.ok+'" title="'+aa.tooltips.buttons.ok+'"/><input type="button" class="Cancel" value="'+aa.text.cancel+'" title="'+aa.tooltips.buttons.cancel+'"/><div class="Grid">&nbsp;</div></td></tr><tr class="Hue"><td class="Radio"><label title="'+
+aa.tooltips.hue.radio+'"><input type="radio" value="h"'+(n.color.mode=="h"?' checked="checked"':"")+'/>H:</label></td><td class="Text"><input type="text" maxlength="3" value="'+(da!=null?da.h:"")+'" title="'+aa.tooltips.hue.textbox+'"/>&nbsp;\u00ba</td></tr><tr class="Saturation"><td class="Radio"><label title="'+aa.tooltips.saturation.radio+'"><input type="radio" value="s"'+(n.color.mode=="s"?' checked="checked"':"")+'/>S:</label></td><td class="Text"><input type="text" maxlength="3" value="'+(da!=
+null?da.s:"")+'" title="'+aa.tooltips.saturation.textbox+'"/>&nbsp;%</td></tr><tr class="Value"><td class="Radio"><label title="'+aa.tooltips.value.radio+'"><input type="radio" value="v"'+(n.color.mode=="v"?' checked="checked"':"")+'/>V:</label></td><td class="Text"><input type="text" maxlength="3" value="'+(da!=null?da.v:"")+'" title="'+aa.tooltips.value.textbox+'"/>&nbsp;%<br/><br/></td></tr><tr class="Red"><td class="Radio"><label title="'+aa.tooltips.red.radio+'"><input type="radio" value="r"'+
+(n.color.mode=="r"?' checked="checked"':"")+'/>R:</label></td><td class="Text"><input type="text" maxlength="3" value="'+(da!=null?da.r:"")+'" title="'+aa.tooltips.red.textbox+'"/></td></tr><tr class="Green"><td class="Radio"><label title="'+aa.tooltips.green.radio+'"><input type="radio" value="g"'+(n.color.mode=="g"?' checked="checked"':"")+'/>G:</label></td><td class="Text"><input type="text" maxlength="3" value="'+(da!=null?da.g:"")+'" title="'+aa.tooltips.green.textbox+'"/></td></tr><tr class="Blue"><td class="Radio"><label title="'+
+aa.tooltips.blue.radio+'"><input type="radio" value="b"'+(n.color.mode=="b"?' checked="checked"':"")+'/>B:</label></td><td class="Text"><input type="text" maxlength="3" value="'+(da!=null?da.b:"")+'" title="'+aa.tooltips.blue.textbox+'"/></td></tr><tr class="Alpha"><td class="Radio">'+(M.alphaSupport?'<label title="'+aa.tooltips.alpha.radio+'"><input type="radio" value="a"'+(n.color.mode=="a"?' checked="checked"':"")+"/>A:</label>":"&nbsp;")+'</td><td class="Text">'+(M.alphaSupport?'<input type="text" maxlength="'+
+(3+M.alphaPrecision)+'" value="'+(da!=null?Math.precision(da.a*100/255,M.alphaPrecision):"")+'" title="'+aa.tooltips.alpha.textbox+'"/>&nbsp;%':"&nbsp;")+'</td></tr><tr class="Hex"><td colspan="2" class="Text"><label title="'+aa.tooltips.hex.textbox+'">#:<input type="text" maxlength="6" class="Hex" value="'+(da!=null?da.hex:"")+'"/></label>'+(M.alphaSupport?'<input type="text" maxlength="2" class="AHex" value="'+(da!=null?da.ahex.substring(6):"")+'" title="'+aa.tooltips.hex.alpha+'"/></td>':"&nbsp;")+
+"</tr></tbody></table>";if(M.expandable){B.html(Ea);a(document.body).children("div.jPicker.Container").length==0?a(document.body).prepend(B):a(document.body).children("div.jPicker.Container:last").after(B);B.mousedown(function(){a(document.body).children("div.jPicker.Container").css({zIndex:10});B.css({zIndex:20})});B.css({left:M.position.x=="left"?P.offset().left-530-(M.position.y=="center"?25:0)+"px":M.position.x=="center"?P.offset().left-260+"px":M.position.x=="right"?P.offset().left-10+(M.position.y==
+"center"?25:0)+"px":M.position.x=="screenCenter"?(a(document).width()>>1)-260+"px":P.offset().left+parseInt(M.position.x)+"px",position:"absolute",top:M.position.y=="top"?P.offset().top-312+"px":M.position.y=="center"?P.offset().top-156+"px":M.position.y=="bottom"?P.offset().top+25+"px":P.offset().top+parseInt(M.position.y)+"px"})}else{B=a(d);B.html(Ea)}Ea=B.find("tbody:first");q=Ea.find("div.Map:first");L=Ea.find("div.Bar:first");var Oa=q.find("span"),Wa=L.find("span");Q=Oa.filter(".Map1:first");
+K=Oa.filter(".Map2:first");I=Oa.filter(".Map3:first");S=Wa.filter(".Map1:first");R=Wa.filter(".Map2:first");N=Wa.filter(".Map3:first");ga=Wa.filter(".Map4:first");oa=Wa.filter(".Map5:first");Y=Wa.filter(".Map6:first");V=new s(q,{map:{width:ia.colorMap.width,height:ia.colorMap.height},arrow:{image:ia.clientPath+ia.colorMap.arrow.file,width:ia.colorMap.arrow.width,height:ia.colorMap.arrow.height}});V.bind(wa);ea=new s(L,{map:{width:ia.colorBar.width,height:ia.colorBar.height},arrow:{image:ia.clientPath+
+ia.colorBar.arrow.file,width:ia.colorBar.arrow.width,height:ia.colorBar.arrow.height}});ea.bind(ra);Ba=new g(Ea,ka.active,M.expandable&&M.bindToInput?M.input:null,M.alphaPrecision);Oa=da!=null?da.hex:null;var Za=Ea.find(".Preview");Wa=Ea.find(".Button");na=Za.find(".Active:first").css({backgroundColor:Oa&&"#"+Oa||"transparent"});pa=Za.find(".Current:first").css({backgroundColor:Oa&&"#"+Oa||"transparent"}).bind("click",Ha);ta.call(d,pa,Math.precision(ka.current.val("a")*100)/255,4);ma=Wa.find(".Ok:first").bind("click touchstart",
+lb);la=Wa.find(".Cancel:first").bind("click touchstart",db);ya=Wa.find(".Grid:first");setTimeout(function(){Va.call(d,Q,ia.clientPath+"Maps.png");Va.call(d,K,ia.clientPath+"Maps.png");Va.call(d,I,ia.clientPath+"map-opacity.png");Va.call(d,S,ia.clientPath+"Bars.png");Va.call(d,R,ia.clientPath+"Bars.png");Va.call(d,N,ia.clientPath+"Bars.png");Va.call(d,ga,ia.clientPath+"Bars.png");Va.call(d,oa,ia.clientPath+"bar-opacity.png");Va.call(d,Y,ia.clientPath+"AlphaBar.png");Va.call(d,Za.find("div:last"),ia.clientPath+
+"preview-opacity.png")},0);Ea.find("td.Radio input").bind("click  touchstart",Sa);if(ka.quickList&&ka.quickList.length>0){Wa="";for(i=0;i<ka.quickList.length;i++){if((typeof ka.quickList[i]).toString().toLowerCase()=="string")ka.quickList[i]=new b({hex:ka.quickList[i]});var nb=ka.quickList[i].val("a"),Ra=ka.quickList[i].val("ahex");if(!M.alphaSupport&&Ra)Ra=Ra.substring(0,6)+"ff";var mb=ka.quickList[i].val("hex");Wa+='<span class="QuickColor"'+(Ra&&' title="#'+Ra+'"'||"")+' style="background-color:'+
+(mb&&"#"+mb||"")+";"+(mb?"":"background-image:url("+ia.clientPath+"NoColor.png)")+(M.alphaSupport&&nb&&nb<255?";opacity:"+Math.precision(nb/255,4)+";filter:Alpha(opacity="+Math.precision(nb/2.55,4)+")":"")+'">&nbsp;</span>'}Va.call(d,ya,ia.clientPath+"bar-opacity.png");ya.html(Wa);ya.find(".QuickColor").click(sb)}Ma.call(d,n.color.mode);ka.active.bind(Da);a.isFunction(ab)&&ka.active.bind(ab);ka.current.bind(Xa);if(M.expandable){d.icon=P.parents(".Icon:first");za=d.icon.find(".Color:first").css({backgroundColor:Oa&&
+"#"+Oa||"transparent"});Ja=d.icon.find(".Alpha:first");Va.call(d,Ja,ia.clientPath+"bar-opacity.png");ta.call(d,Ja,Math.precision((255-(da!=null?da.a:0))*100/255,4));Ia=d.icon.find(".Image:first").css({backgroundImage:"url('"+ia.clientPath+ia.picker.file+"')"}).bind("click",Ua);if(M.bindToInput&&M.updateInputColor)M.input.css({backgroundColor:Oa&&"#"+Oa||"transparent",color:da==null||da.v>75?"#000000":"#ffffff"});Fa=Ea.find(".Move:first").bind("mousedown",sa);ka.active.bind(wb)}else pb.call(d)},ia=
+n.images,aa=n.localization,ka={active:(typeof n.color.active).toString().toLowerCase()=="string"?new b({ahex:!n.window.alphaSupport&&n.color.active?n.color.active.substring(0,6)+"ff":n.color.active}):new b({ahex:!n.window.alphaSupport&&n.color.active.val("ahex")?n.color.active.val("ahex").substring(0,6)+"ff":n.color.active.val("ahex")}),current:(typeof n.color.active).toString().toLowerCase()=="string"?new b({ahex:!n.window.alphaSupport&&n.color.active?n.color.active.substring(0,6)+"ff":n.color.active}):
+new b({ahex:!n.window.alphaSupport&&n.color.active.val("ahex")?n.color.active.val("ahex").substring(0,6)+"ff":n.color.active.val("ahex")}),quickList:n.color.quickList};a.extend(true,d,{commitCallback:ib,liveCallback:ab,cancelCallback:ob,color:ka,show:pb,hide:fb,destroy:function(){B.find("td.Radio input  touchstart").unbind("click",Sa);pa.unbind("click  touchstart",Ha);la.unbind("click  touchstart",db);ma.unbind("click  touchstart",lb);if(n.window.expandable){Ia.unbind("click",Ua);Fa.unbind("mousedown",
+sa);d.icon=null}B.find(".QuickColor").unbind("click",sb);Y=oa=ga=N=R=S=I=K=Q=L=q=null;V.destroy();V=null;ea.destroy();ea=null;Ba.destroy();ab=ob=ib=ya=la=ma=pa=na=Ba=null;B.html("");for(i=0;i<p.length;i++)p[i]==d&&p.splice(i,1)}});p.push(d);setTimeout(function(){tb.call(d)},0)})};a.fn.jPicker.defaults={window:{title:null,effects:{type:"slide",speed:{show:"slow",hide:"fast"}},position:{x:"screenCenter",y:"top"},expandable:false,liveUpdate:true,alphaSupport:false,alphaPrecision:0,updateInputColor:true},
+color:{mode:"h",active:new b({ahex:"#ffcc00ff"}),quickList:[new b({h:360,s:33,v:100}),new b({h:360,s:66,v:100}),new b({h:360,s:100,v:100}),new b({h:360,s:100,v:75}),new b({h:360,s:100,v:50}),new b({h:180,s:0,v:100}),new b({h:30,s:33,v:100}),new b({h:30,s:66,v:100}),new b({h:30,s:100,v:100}),new b({h:30,s:100,v:75}),new b({h:30,s:100,v:50}),new b({h:180,s:0,v:90}),new b({h:60,s:33,v:100}),new b({h:60,s:66,v:100}),new b({h:60,s:100,v:100}),new b({h:60,s:100,v:75}),new b({h:60,s:100,v:50}),new b({h:180,
+s:0,v:80}),new b({h:90,s:33,v:100}),new b({h:90,s:66,v:100}),new b({h:90,s:100,v:100}),new b({h:90,s:100,v:75}),new b({h:90,s:100,v:50}),new b({h:180,s:0,v:70}),new b({h:120,s:33,v:100}),new b({h:120,s:66,v:100}),new b({h:120,s:100,v:100}),new b({h:120,s:100,v:75}),new b({h:120,s:100,v:50}),new b({h:180,s:0,v:60}),new b({h:150,s:33,v:100}),new b({h:150,s:66,v:100}),new b({h:150,s:100,v:100}),new b({h:150,s:100,v:75}),new b({h:150,s:100,v:50}),new b({h:180,s:0,v:50}),new b({h:180,s:33,v:100}),new b({h:180,
+s:66,v:100}),new b({h:180,s:100,v:100}),new b({h:180,s:100,v:75}),new b({h:180,s:100,v:50}),new b({h:180,s:0,v:40}),new b({h:210,s:33,v:100}),new b({h:210,s:66,v:100}),new b({h:210,s:100,v:100}),new b({h:210,s:100,v:75}),new b({h:210,s:100,v:50}),new b({h:180,s:0,v:30}),new b({h:240,s:33,v:100}),new b({h:240,s:66,v:100}),new b({h:240,s:100,v:100}),new b({h:240,s:100,v:75}),new b({h:240,s:100,v:50}),new b({h:180,s:0,v:20}),new b({h:270,s:33,v:100}),new b({h:270,s:66,v:100}),new b({h:270,s:100,v:100}),
+new b({h:270,s:100,v:75}),new b({h:270,s:100,v:50}),new b({h:180,s:0,v:10}),new b({h:300,s:33,v:100}),new b({h:300,s:66,v:100}),new b({h:300,s:100,v:100}),new b({h:300,s:100,v:75}),new b({h:300,s:100,v:50}),new b({h:180,s:0,v:0}),new b({h:330,s:33,v:100}),new b({h:330,s:66,v:100}),new b({h:330,s:100,v:100}),new b({h:330,s:100,v:75}),new b({h:330,s:100,v:50}),new b]},images:{clientPath:"/jPicker/images/",colorMap:{width:256,height:256,arrow:{file:"mappoint.gif",width:15,height:15}},colorBar:{width:20,
+height:256,arrow:{file:"rangearrows.gif",width:20,height:7}},picker:{file:"picker.gif",width:25,height:24}},localization:{text:{title:"Drag Markers To Pick A Color",newColor:"new",currentColor:"current",ok:"OK",cancel:"Cancel"},tooltips:{colors:{newColor:"New Color - Press &ldquo;OK&rdquo; To Commit",currentColor:"Click To Revert To Original Color"},buttons:{ok:"Commit To This Color Selection",cancel:"Cancel And Revert To Original Color"},hue:{radio:"Set To &ldquo;Hue&rdquo; Color Mode",textbox:"Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)"},
+saturation:{radio:"Set To &ldquo;Saturation&rdquo; Color Mode",textbox:"Enter A &ldquo;Saturation&rdquo; Value (0-100%)"},value:{radio:"Set To &ldquo;Value&rdquo; Color Mode",textbox:"Enter A &ldquo;Value&rdquo; Value (0-100%)"},red:{radio:"Set To &ldquo;Red&rdquo; Color Mode",textbox:"Enter A &ldquo;Red&rdquo; Value (0-255)"},green:{radio:"Set To &ldquo;Green&rdquo; Color Mode",textbox:"Enter A &ldquo;Green&rdquo; Value (0-255)"},blue:{radio:"Set To &ldquo;Blue&rdquo; Color Mode",textbox:"Enter A &ldquo;Blue&rdquo; Value (0-255)"},
+alpha:{radio:"Set To &ldquo;Alpha&rdquo; Color Mode",textbox:"Enter A &ldquo;Alpha&rdquo; Value (0-100)"},hex:{textbox:"Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)",alpha:"Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)"}}}}})(jQuery,"1.1.6");(function(a){function s(p){var w=p||window.event,c=[].slice.call(arguments,1),f=0,d=0,n=0;p=a.event.fix(w);p.type="mousewheel";if(w.wheelDelta)f=w.wheelDelta/120;if(w.detail)f=-w.detail/3;n=f;if(w.axis!==undefined&&w.axis===w.HORIZONTAL_AXIS){n=0;d=-1*f}if(w.wheelDeltaY!==undefined)n=w.wheelDeltaY/120;if(w.wheelDeltaX!==undefined)d=-1*w.wheelDeltaX/120;c.unshift(p,f,d,n);return(a.event.dispatch||a.event.handle).apply(this,c)}var g=["DOMMouseScroll","mousewheel"];if(a.event.fixHooks)for(var b=g.length;b;)a.event.fixHooks[g[--b]]=
+a.event.mouseHooks;a.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var p=g.length;p;)this.addEventListener(g[--p],s,false);else this.onmousewheel=s},teardown:function(){if(this.removeEventListener)for(var p=g.length;p;)this.removeEventListener(g[--p],s,false);else this.onmousewheel=null}};a.fn.extend({mousewheel:function(p){return p?this.bind("mousewheel",p):this.trigger("mousewheel")},unmousewheel:function(p){return this.unbind("mousewheel",p)}})})(jQuery);methodDraw.addExtension("eyedropper",function(a){var s=methodDraw.canvas,g=svgedit.history.ChangeElementCommand,b={fillPaint:"red",fillOpacity:1,strokePaint:"black",strokeOpacity:1,strokeWidth:5,strokeDashArray:null,opacity:1,strokeLinecap:"butt",strokeLinejoin:"miter"},p=function(w,c,f){var d=null;if(w.indexOf("url(#")===0){w=(w=s.getRefElem(w))?w.cloneNode(true):$("#"+f+"_color defs *")[0];d={alpha:c};d[w.tagName]=w}else d=w.indexOf("#")===0?{alpha:c,solidColor:w.substr(1)}:{alpha:c,solidColor:"none"};
+return new $.jGraduate.Paint(d)};return{name:"eyedropper",svgicons:"extensions/eyedropper-icon.xml",buttons:[{id:"tool_eyedropper",type:"mode",title:"Eye Dropper Tool",position:8,key:"I",icon:"extensions/eyedropper.png",events:{click:function(){s.setMode("eyedropper")}}}],mouseDown:function(w){var c=s.getMode(),f=w.event;f=f.target.id==="svgroot"?document.getElementById("canvas_background"):f.target;if(c=="eyedropper"&&f){b.fillPaint=f.getAttribute("fill")||"white";b.fillOpacity=f.getAttribute("fill-opacity")||
+1;b.strokePaint=f.getAttribute("stroke")||"none";b.strokeOpacity=f.getAttribute("stroke-opacity")||1;b.strokeWidth=f.getAttribute("stroke-width");b.strokeDashArray=f.getAttribute("stroke-dasharray");b.strokeLinecap=f.getAttribute("stroke-linecap");b.strokeLinejoin=f.getAttribute("stroke-linejoin");b.opacity=f.getAttribute("opacity")||1;w.selectedElements=w.selectedElements.filter(Boolean);if(w.selectedElements.length){if($.inArray(w.selectedElements.nodeName,["g","use"])==-1){var d={},n=function(B,
+q,L){d[q]=B.getAttribute(q);B.setAttribute(q,L)},v=new a.BatchCommand;w.selectedElements.forEach(function(B){b.fillPaint&&n(B,"fill",b.fillPaint);b.fillOpacity&&n(B,"fill-opacity",b.fillOpacity);b.strokePaint&&n(B,"stroke",b.strokePaint);b.strokeOpacity&&n(B,"stroke-opacity",b.strokeOpacity);b.strokeWidth&&n(B,"stroke-width",b.strokeWidth);b.strokeDashArray&&n(B,"stroke-dasharray",b.strokeDashArray);b.opacity&&n(B,"opacity",b.opacity);b.strokeLinecap&&n(B,"stroke-linecap",b.strokeLinecap);b.strokeLinejoin&&
+n(B,"stroke-linejoin",b.strokeLinejoin);v.addSubCommand(new g(B,d));d={}});w=p(b.fillPaint,b.fillOpacity*100,"fill");c=p(b.strokePaint,b.strokeOpacity*100,"stroke");methodDraw.paintBox.fill.update(true);methodDraw.paintBox.stroke.update(true);s.undoMgr.addCommandToHistory(v)}}else{w=p(b.fillPaint,b.fillOpacity*100,"fill");c=p(b.strokePaint,b.strokeOpacity*100,"stroke");methodDraw.paintBox.fill.setPaint(w);methodDraw.paintBox.stroke.setPaint(c)}}}}});methodDraw.addExtension("view_grid",function(a){function s(n){f.attr("width");f.attr("height");var v=svgedit.units.getTypeMap()[methodDraw.curConfig.baseUnit],B=[0.01,0.1,1,10,100,1E3];b.getContentElem().getAttribute("x");var q=w;v=v*n;var L=100/v,Q=1;for(n=0;n<B.length;n++){var K=B[n];Q=K;if(L<=K)break}B=Q*v;q.width=B;q.height=B;v=q.getContext("2d");L=B/10;v.globalAlpha=0.2;v.strokeStyle="#000";for(n=1;n<10;n++){Q=Math.round(L*n)+0.5;v.moveTo(Q,B);v.lineTo(Q,0);v.moveTo(B,Q);v.lineTo(0,Q)}v.stroke();
+v.beginPath();v.globalAlpha=0.5;v.moveTo(0.5,B);v.lineTo(0.5,0);v.moveTo(B,0.5);v.lineTo(0,0.5);v.stroke();q=q.toDataURL("image/png");d.setAttribute("width",B);d.setAttribute("height",B);d.parentNode.setAttribute("width",B);d.parentNode.setAttribute("height",B);b.setHref(d,q)}if(!document.getElementById("canvasGrid")){var g=document.getElementById("svgcanvas").ownerDocument,b=methodDraw.canvas,p=false;a=a.assignAttributes;var w=document.createElement("canvas");$(w).hide().appendTo("body");var c=g.createElementNS("http://www.w3.org/2000/svg",
+"g");a(c,{id:"canvasGrid",width:"100%",height:"100%",x:0,y:0,overflow:"visible",display:"none"});var f=$("#canvas_background");f.after(c);c=g.createElementNS("http://www.w3.org/2000/svg","pattern");a(c,{id:"gridpattern",patternUnits:"userSpaceOnUse",x:0,y:0,width:100,height:100});var d=g.createElementNS("http://www.w3.org/2000/svg","image");a(d,{x:0,y:0,width:100,height:100});c.appendChild(d);$("#svgroot defs").append(c);g=g.createElementNS("http://www.w3.org/2000/svg","rect");a(g,{width:"100%",height:"100%",
+x:0,y:0,"stroke-width":0,stroke:"none",fill:"url(#gridpattern)",style:"pointer-events: none; display:visible;"});$("#canvasGrid").append(g)}return{name:"view_grid",zoomChanged:function(n){p&&s(n)},buttons:[{id:"view_grid",type:"menu",after:"tool_wireframe",panel:"view_menu",title:"View Grid",events:{click:function(){if($("#view_grid").hasClass("push_button_pressed")){methodDraw.curConfig.showGrid=p=false;$("#view_grid").removeClass("push_button_pressed");$("#canvasGrid").attr("display","none")}else{methodDraw.curConfig.showGrid=
+p=true;$("#view_grid").addClass("push_button_pressed");$("#canvasGrid").attr("display","inline");s(b.getZoom())}}}}]}});methodDraw.addExtension("shapes",function(){function a(){$("#shape_buttons").empty();$("#shape_buttons").append(L.buttons)}function s(K){var I=q[K];if(I){L=I;I.buttons.length||g(K,I);a()}else{$("#shape_buttons").html("Loading...");$.getJSON("extensions/shapelib/"+K+".json",function(S){L=q[K]={data:S.data,size:S.size,fill:S.fill};g(K,S);a()})}}function g(K,I){var S=L.size||300,R=L.fill||false,N=S*0.05;N=[-N,-N,S+N*2,S+N*2].join(" ");S=R?0:S/30;S=(new DOMParser).parseFromString('<svg xmlns="http://www.w3.org/2000/svg"><svg viewBox="'+
+N+'"><path fill="#333" stroke="transparent" stroke-width="'+S+'" /></svg></svg>',"text/xml");S.documentElement.setAttribute("width",40);S.documentElement.setAttribute("height",40);S=$(document.importNode(S.documentElement,true));R=I.data;L.buttons=[];for(var ga in R){N=R[ga];var oa=S.clone();oa.find("path").attr("d",N);N=oa.wrap('<div class="tool_button">').parent().attr({id:Q+"_"+ga,title:ga});L.buttons.push(N[0])}}var b,p,w=methodDraw.canvas,c,f,d,n=w.getRootElem(),v={},B={basic:"Basic",object:"Objects",
+symbol:"Symbols",arrow:"Arrows",flowchart:"Flowchart",nature:"Nature",game:"Cards & Chess",dialog_balloon:"Dialog balloons",music:"Music",weather:"Weather &amp; Time",ui:"User Interface",social:"Social Web"},q={basic:{data:{star_points_5:"m1,116.58409l113.82668,0l35.17332,-108.13487l35.17334,108.13487l113.82666,0l-92.08755,66.83026l35.17514,108.13487l-92.08759,-66.83208l-92.08757,66.83208l35.17515,-108.13487l-92.08758,-66.83026z",donut:"m1,150l0,0c0,-82.29042 66.70958,-149 149,-149l0,0c39.51724,0 77.41599,15.69816 105.35889,43.64108c27.94293,27.94293 43.64111,65.84165 43.64111,105.35892l0,0c0,82.29041 -66.70958,149 -149,149l0,0c-82.29041,0 -149,-66.70959 -149,-149zm74.5,0l0,0c0,41.1452 33.35481,74.5 74.5,74.5c41.14522,0 74.5,-33.3548 74.5,-74.5c0,-41.1452 -33.3548,-74.5 -74.5,-74.5l0,0c-41.14519,0 -74.5,33.35481 -74.5,74.5z",
+triangle:"m1,280.375l149,-260.75l149,260.75z",right_triangle:"m1,299l0,-298l298,298z",diamond:"m1,150l149,-149l149,149l-149,149l-149,-149z",pentagon:"m1.00035,116.97758l148.99963,-108.4053l148.99998,108.4053l-56.91267,175.4042l-184.1741,0l-56.91284,-175.4042z",hexagon:"m1,149.99944l63.85715,-127.71428l170.28572,0l63.85713,127.71428l-63.85713,127.71428l-170.28572,0l-63.85715,-127.71428z",septagon1:"m0.99917,191.06511l29.51249,-127.7108l119.48833,-56.83673l119.48836,56.83673l29.51303,127.7108l-82.69087,102.41679l-132.62103,0l-82.69031,-102.41679z",
+heptagon:"m1,88.28171l87.28172,-87.28171l123.43653,0l87.28172,87.28171l0,123.43654l-87.28172,87.28172l-123.43653,0l-87.28172,-87.28172l0,-123.43654z",decagon:"m1,150.00093l28.45646,-88.40318l74.49956,-54.63682l92.08794,0l74.50002,54.63682l28.45599,88.40318l-28.45599,88.40318l-74.50002,54.63681l-92.08794,0l-74.49956,-54.63681l-28.45646,-88.40318z",dodecagon:"m1,110.07421l39.92579,-69.14842l69.14842,-39.92579l79.85159,0l69.14842,39.92579l39.92578,69.14842l0,79.85159l-39.92578,69.14842l-69.14842,39.92578l-79.85159,0l-69.14842,-39.92578l-39.92579,-69.14842l0,-79.85159z",
+trapezoid:"m1,299l55.875,-298l186.25001,0l55.87498,298z",dialog_balloon_1:"m0.99786,35.96579l0,0c0,-19.31077 15.28761,-34.96524 34.14583,-34.96524l15.52084,0l0,0l74.50001,0l139.68748,0c9.05606,0 17.74118,3.68382 24.14478,10.24108c6.40356,6.55726 10.00107,15.45081 10.00107,24.72416l0,87.41311l0,0l0,52.44785l0,0c0,19.31078 -15.2876,34.96524 -34.14584,34.96524l-139.68748,0l-97.32507,88.90848l22.82506,-88.90848l-15.52084,0c-18.85822,0 -34.14583,-15.65446 -34.14583,-34.96524l0,0l0,-52.44785l0,0z",heart:"m150,73c61,-175 300,0 0,225c-300,-225 -61,-400 0,-225z",
+cylinder:"m299.0007,83.77844c0,18.28676 -66.70958,33.11111 -149.00002,33.11111m149.00002,-33.11111l0,0c0,18.28676 -66.70958,33.11111 -149.00002,33.11111c-82.29041,0 -148.99997,-14.82432 -148.99997,-33.11111m0,0l0,0c0,-18.28674 66.70956,-33.1111 148.99997,-33.1111c82.29044,0 149.00002,14.82436 149.00002,33.1111l0,132.44449c0,18.28674 -66.70958,33.11105 -149.00002,33.11105c-82.29041,0 -148.99997,-14.82431 -148.99997,-33.11105z",arrow_up:"m1.49805,149.64304l148.50121,-148.00241l148.50121,148.00241l-74.25061,0l0,148.71457l-148.5012,0l0,-148.71457z",
+arrow_u_turn:"m1.00059,299.00055l0,-167.62497l0,0c0,-72.00411 58.37087,-130.37499 130.375,-130.37499l0,0l0,0c34.57759,0 67.73898,13.7359 92.18906,38.18595c24.45006,24.45005 38.18593,57.61144 38.18593,92.18904l0,18.625l37.24997,0l-74.49995,74.50002l-74.50002,-74.50002l37.25,0l0,-18.625c0,-30.8589 -25.0161,-55.87498 -55.87498,-55.87498l0,0l0,0c-30.85892,0 -55.875,25.01608 -55.875,55.87498l0,167.62497z",arrow_left_up:"m0.99865,224.5l74.50004,-74.5l0,37.25l111.74991,0l0,-111.75l-37.25,0l74.5,-74.5l74.5,74.5l-37.25,0l0,186.25l-186.24989,0l0,37.25l-74.50005,-74.5z",
+plaque:"m-0.00197,49.94376l0,0c27.5829,0 49.94327,-22.36036 49.94327,-49.94327l199.76709,0l0,0c0,27.5829 22.36037,49.94327 49.94325,49.94327l0,199.7671l0,0c-27.58289,0 -49.94325,22.36034 -49.94325,49.94325l-199.76709,0c0,-27.58292 -22.36037,-49.94325 -49.94327,-49.94325z",page:"m249.3298,298.99744l9.9335,-39.73413l39.73413,-9.93355l-49.66763,49.66768l-248.33237,0l0,-298.00001l298.00001,0l0,248.33234",cross:"m0.99844,99.71339l98.71494,0l0,-98.71495l101.26279,0l0,98.71495l98.71495,0l0,101.2628l-98.71495,0l0,98.71494l-101.26279,0l0,-98.71494l-98.71494,0z",
+divide:"m150,0.99785l0,0c25.17819,0 45.58916,20.41097 45.58916,45.58916c0,25.17821 -20.41096,45.58916 -45.58916,45.58916c-25.17822,0 -45.58916,-20.41093 -45.58916,-45.58916c0,-25.1782 20.41093,-45.58916 45.58916,-45.58916zm0,296.25203c-25.17822,0 -45.58916,-20.41095 -45.58916,-45.58917c0,-25.17819 20.41093,-45.58916 45.58916,-45.58916c25.17819,0 45.58916,20.41096 45.58916,45.58916c0,25.17822 -20.41096,45.58917 -45.58916,45.58917zm-134.06754,-193.71518l268.13507,0l0,91.17833l-268.13507,0z",minus:"m0.99887,102.39503l297.49445,0l0,95.2112l-297.49445,0z",
+times:"m1.00089,73.36786l72.36697,-72.36697l76.87431,76.87368l76.87431,-76.87368l72.36765,72.36697l-76.87433,76.87431l76.87433,76.87431l-72.36765,72.36765l-76.87431,-76.87433l-76.87431,76.87433l-72.36697,-72.36765l76.87368,-76.87431l-76.87368,-76.87431z"},buttons:[]}},L=q.basic,Q="shapelib";return{svgicons:"extensions/ext-shapes.xml",buttons:[{id:"tool_shapelib",type:"mode_flyout",position:6,title:"Shape library",icon:"extensions/ext-shapes.png",events:{click:function(){w.setMode(Q)}}}],callback:function(){var K=
+$('<div id="shape_buttons">');$("#tools_shapelib > *").wrapAll(K);var I=$("#tools_shapelib_show");s("basic");$("#shape_buttons").mouseup(function(R){R=$(R.target).closest("div.tool_button");if(R.length){var N=R.children().clone().attr({width:24,height:24});I.children(":not(.flyout_arrow_horiz)").remove();I.append(N).attr("data-curopt","#"+R[0].id).mouseup();w.setMode(Q);p=R[0].id.substr((Q+"_").length);b=L.data[p];$(".tools_flyout").fadeOut()}});K=$('<div id="shape_cats">');var S="";$.each(B,function(R,
+N){S+="<div data-cat="+R+">"+N+"</div>"});K.html(S).children().bind("mouseup",function(){var R=$(this);R.siblings().removeClass("current");R.addClass("current");s(R.attr("data-cat"));return false});K.children().eq(0).addClass("current");$("#tools_shapelib").prepend(K);I.mouseup(function(){w.setMode(b?Q:"select")});$("#tool_shapelib").remove();K=$("#tools_shapelib").height();$("#tools_shapelib").css({"margin-top":-(K/2),"margin-left":3})},mouseDown:function(K){if(w.getMode()===Q){var I=f=K.start_x;
+K=d=K.start_y;var S=w.getStyle();c=w.addSvgElementFromJson({element:"path",curStyles:true,attr:{d:b,id:w.getNextId(),opacity:S.opacity/2,style:"pointer-events:none"}});c.setAttribute("d",b);if(/[a-z]/.test(b)){b=L.data[p]=w.pathActions.convertPath(c);c.setAttribute("d",b);w.pathActions.fixEnd(c)}c.setAttribute("transform","translate("+I+","+K+") scale(0.005) translate("+-I+","+-K+")");w.recalculateDimensions(c);w.getTransformList(c);v=c.getBBox();totalScale={sx:1,sy:1};return{started:true}}},mouseMove:function(K){if(w.getMode()===
+Q){var I=w.getZoom(),S=K.event,R=K.mouse_x/I,N=K.mouse_y/I;K=w.getTransformList(c);var ga=c.getBBox();I=ga.x;var oa=ga.y,Y=ga.width,V=ga.height,ea=R-f,Ba=N-d,ja={x:Math.min(f,R),y:Math.min(d,N),width:Math.abs(R-f),height:Math.abs(N-d)},ca=ga=0;V=V?(V+Ba)/V:1;Y=Y?(Y+ea)/Y:1;Y=ja.width/v.width;V=ja.height/v.height;Y=Y||1;V=V||1;if(R<f)ga=v.width;if(N<d)ca=v.height;R=n.createSVGTransform();N=n.createSVGTransform();ja=n.createSVGTransform();R.setTranslate(-(I+ga),-(oa+ca));if(S.shiftKey){replaced=true;
+S=Math.min(Math.abs(Y),Math.abs(V));Y=S*(Y<0?-1:1);V=S*(V<0?-1:1);if(totalScale.sx!=totalScale.sy){S=totalScale.sx>totalScale.sy?1:totalScale.sx/totalScale.sy;Y*=totalScale.sy>totalScale.sx?1:totalScale.sy/totalScale.sx;V*=S}}totalScale.sx*=Y;totalScale.sy*=V;N.setScale(Y,V);ja.setTranslate(I+ga,oa+ca);K.appendItem(ja);K.appendItem(N);K.appendItem(R);w.recalculateDimensions(c);v=c.getBBox()}},mouseUp:function(K){if(w.getMode()===Q){if(K.mouse_x==f&&K.mouse_y==d)return{keep:false,element:c,started:false};
+w.setMode("select");return{keep:true,element:c,started:false}}}}});(function(){for(var a=0,s=["ms","moz","webkit","o"],g=0;g<s.length&&!window.requestAnimationFrame;++g){window.requestAnimationFrame=window[s[g]+"RequestAnimationFrame"];window.cancelAnimationFrame=window[s[g]+"CancelAnimationFrame"]||window[s[g]+"CancelRequestAnimationFrame"]}if(!window.requestAnimationFrame)window.requestAnimationFrame=function(b){var p=(new Date).getTime(),w=Math.max(0,16-(p-a)),c=window.setTimeout(function(){b(p+w)},w);a=p+w;return c};if(!window.cancelAnimationFrame)window.cancelAnimationFrame=
+function(b){clearTimeout(b)}})();(function(a){function s(q){var L=q.originalEvent;if(!L.touches||L.targetTouches.length===1&&L.touches.length===1){c.call(this,q);q=a(this);q.bind(v,g);q.bind(n,b)}else{clearTimeout(B);w.call(this)}}function g(q){if(B!=null){var L=q.originalEvent;q=L.changedTouches?L.changedTouches[0].pageX:L.pageX;L=L.changedTouches?L.changedTouches[0].pageY:L.pageY;var Q=a(this).data("taphold.point");q=q-Q.x;L=L-Q.y;if(Math.sqrt(q*q+L*L)>d){clearTimeout(B);w.call(this)}}}function b(){clearTimeout(B);w.call(this)}
+function p(q){w.call(this);a(this).data("taphold.handler").call(this,q)}function w(){B=null;a(this).unbind(v,g);a(this).unbind(n,b)}function c(q){if(B==null){var L=this;B=setTimeout(function(){p.call(L,q)},f);var Q=q.originalEvent,K={};K.x=Q.changedTouches?Q.changedTouches[0].pageX:Q.pageX;K.y=Q.changedTouches?Q.changedTouches[0].pageY:Q.pageY;a(this).data("taphold.point",K)}}var f=1E3,d=5,n="touchend",v="touchmove",B=null;a.event.special.taphold={setup:function(){},add:function(q){a(this).data("taphold.handler",
+q.handler);q.data?a(this).bind("touchstart",q.data,s):a(this).bind("touchstart",s)},remove:function(q){clearTimeout(B);w.call(this);q.data?a(this).unbind("touchstart",q.data,s):a(this).unbind("touchstart",s)},teardown:function(){}}})(jQuery);
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/method-draw.manifest
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/method-draw.manifest	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/method-draw.manifest	(revision 29468)
@@ -0,0 +1,121 @@
+﻿CACHE MANIFEST
+svg-editor.html
+images/logo.png
+jgraduate/css/jPicker-1.0.9.css
+jgraduate/css/jGraduate-0.2.0.css
+svg-editor.css
+spinbtn/JQuerySpinBtn.css
+jquery.js
+js-hotkeys/jquery.hotkeys.min.js
+jquery-ui/jquery-ui-1.7.2.custom.min.js
+jgraduate/jpicker-1.0.9.min.js
+jgraduate/jquery.jgraduate.js
+spinbtn/JQuerySpinBtn.js
+svgcanvas.js
+svg-editor.js
+images/align-bottom.png
+images/align-center.png
+images/align-left.png
+images/align-middle.png
+images/align-right.png
+images/align-top.png
+images/bold.png
+images/cancel.png
+images/circle.png
+images/clear.png
+images/clone.png
+images/copy.png
+images/cut.png
+images/delete.png
+images/document-properties.png
+images/dropdown.gif
+images/ellipse.png
+images/eye.png
+images/flyouth.png
+images/flyup.gif
+images/freehand-circle.png
+images/freehand-square.png
+images/go-down.png
+images/go-up.png
+images/image.png
+images/italic.png
+images/line.png
+images/logo.png
+images/logo.svg
+images/move_bottom.png
+images/move_top.png
+images/none.png
+images/open.png
+images/paste.png
+images/path.png
+images/polygon.png
+images/rect.png
+images/redo.png
+images/save.png
+images/select.png
+images/sep.png
+images/shape_group.png
+images/shape_ungroup.png
+images/source.png
+images/square.png
+images/text.png
+images/undo.png
+images/view-refresh.png
+images/wave.png
+images/zoom.png
+locale/locale.js
+locale/lang.af.js
+locale/lang.ar.js
+locale/lang.az.js
+locale/lang.be.js
+locale/lang.bg.js
+locale/lang.ca.js
+locale/lang.cs.js
+locale/lang.cy.js
+locale/lang.da.js
+locale/lang.de.js
+locale/lang.el.js
+locale/lang.en.js
+locale/lang.es.js
+locale/lang.et.js
+locale/lang.fa.js
+locale/lang.fi.js
+locale/lang.fr.js
+locale/lang.ga.js
+locale/lang.gl.js
+locale/lang.hi.js
+locale/lang.hr.js
+locale/lang.hu.js
+locale/lang.hy.js
+locale/lang.id.js
+locale/lang.is.js
+locale/lang.it.js
+locale/lang.iw.js
+locale/lang.ja.js
+locale/lang.ko.js
+locale/lang.lt.js
+locale/lang.lv.js
+locale/lang.mk.js
+locale/lang.ms.js
+locale/lang.mt.js
+locale/lang.nl.js
+locale/lang.no.js
+locale/lang.pl.js
+locale/lang.pt-PT.js
+locale/lang.ro.js
+locale/lang.ru.js
+locale/lang.sk.js
+locale/lang.sl.js
+locale/lang.sq.js
+locale/lang.sr.js
+locale/lang.sv.js
+locale/lang.sw.js
+locale/lang.th.js
+locale/lang.tl.js
+locale/lang.tr.js
+locale/lang.uk.js
+locale/lang.vi.js
+locale/lang.yi.js
+locale/lang.zh-CN.js
+locale/lang.zh-TW.js
+locale/lang.zh.js
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/browser.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/browser.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/browser.js	(revision 29468)
@@ -0,0 +1,181 @@
+/**
+ * Package: svgedit.browser
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Jeff Schiller
+ * Copyright(c) 2010 Alexis Deveria
+ */
+
+// Dependencies:
+// 1) jQuery (for $.alert())
+
+var svgedit = svgedit || {};
+
+(function() {
+
+if (!svgedit.browser) {
+	svgedit.browser = {};
+}
+var supportsSvg_ = (function() {
+        return !!document.createElementNS && !!document.createElementNS('http://www.w3.org/2000/svg', 'svg').createSVGRect;
+})();
+svgedit.browser.supportsSvg = function() { return supportsSvg_; }
+if(!svgedit.browser.supportsSvg()) {
+	window.location = "browser-not-supported.html";
+}
+else{
+
+var svgns = 'http://www.w3.org/2000/svg';
+var userAgent = navigator.userAgent;
+var svg = document.createElementNS(svgns, 'svg');
+
+// Note: Browser sniffing should only be used if no other detection method is possible
+var isOpera_ = !!window.opera;
+var isWebkit_ = userAgent.indexOf("AppleWebKit") >= 0;
+var isGecko_ = userAgent.indexOf('Gecko/') >= 0;
+var isIE_ = userAgent.indexOf('MSIE') >= 0;
+var isChrome_ = userAgent.indexOf('Chrome/') >= 0;
+var isWindows_ = userAgent.indexOf('Windows') >= 0;
+var isMac_ = userAgent.indexOf('Macintosh') >= 0;
+var isTouch_ = 'ontouchstart' in window;
+
+var supportsSelectors_ = (function() {
+	return !!svg.querySelector;
+})();
+
+var supportsXpath_ = (function() {
+	return !!document.evaluate;
+})();
+
+// segList functions (for FF1.5 and 2.0)
+var supportsPathReplaceItem_ = (function() {
+	var path = document.createElementNS(svgns, 'path');
+	path.setAttribute('d','M0,0 10,10');
+	var seglist = path.pathSegList;
+	var seg = path.createSVGPathSegLinetoAbs(5,5);
+	try {
+		seglist.replaceItem(seg, 0);
+		return true;
+	} catch(err) {}
+	return false;
+})();
+
+var supportsPathInsertItemBefore_ = (function() {
+	var path = document.createElementNS(svgns,'path');
+	path.setAttribute('d','M0,0 10,10');
+	var seglist = path.pathSegList;
+	var seg = path.createSVGPathSegLinetoAbs(5,5);
+	try {
+		seglist.insertItemBefore(seg, 0);
+		return true;
+	} catch(err) {}
+	return false;
+})();
+
+// text character positioning (for IE9)
+var supportsGoodTextCharPos_ = (function() {
+   var retValue = false;
+   var svgroot = document.createElementNS(svgns, 'svg');
+   var svgcontent = document.createElementNS(svgns, 'svg');
+   document.documentElement.appendChild(svgroot);
+   svgcontent.setAttribute('x', 5);
+   svgroot.appendChild(svgcontent);
+   var text = document.createElementNS(svgns,'text');
+   text.textContent = 'a';
+   svgcontent.appendChild(text);
+   var pos = text.getStartPositionOfChar(0)
+   pos = pos.x; //if you put it on one line it fails when compiled
+   document.documentElement.removeChild(svgroot);
+   return (pos === 0);
+})();
+
+var supportsPathBBox_ = (function() {
+	var svgcontent = document.createElementNS(svgns, 'svg');
+	document.documentElement.appendChild(svgcontent);
+	var path = document.createElementNS(svgns, 'path');
+	path.setAttribute('d','M0,0 C0,0 10,10 10,0');
+	svgcontent.appendChild(path);
+	var bbox = path.getBBox();
+	document.documentElement.removeChild(svgcontent);
+	return (bbox.height > 4 && bbox.height < 5);
+})();
+
+// Support for correct bbox sizing on groups with horizontal/vertical lines
+var supportsHVLineContainerBBox_ = (function() {
+	var svgcontent = document.createElementNS(svgns, 'svg');
+	document.documentElement.appendChild(svgcontent);
+	var path = document.createElementNS(svgns, 'path');
+	path.setAttribute('d','M0,0 10,0');
+	var path2 = document.createElementNS(svgns, 'path');
+	path2.setAttribute('d','M5,0 15,0');
+	var g = document.createElementNS(svgns, 'g');
+	g.appendChild(path);
+	g.appendChild(path2);
+	svgcontent.appendChild(g);
+	var bbox = g.getBBox();
+	document.documentElement.removeChild(svgcontent);
+	// Webkit gives 0, FF gives 10, Opera (correctly) gives 15
+	return (bbox.width == 15);
+})();
+
+var supportsEditableText_ = (function() {
+	// TODO: Find better way to check support for this
+	return isOpera_;
+})();
+
+var supportsGoodDecimals_ = (function() {
+	// Correct decimals on clone attributes (Opera < 10.5/win/non-en)
+	var rect = document.createElementNS(svgns, 'rect');
+	rect.setAttribute('x',.1);
+	var crect = rect.cloneNode(false);
+	var retValue = (crect.getAttribute('x').indexOf(',') == -1);
+	if(!retValue) {
+		$.alert("NOTE: This version of Opera is known to contain bugs in SVG-edit.\n\
+		Please upgrade to the <a href='http://opera.com'>latest version</a> in which the problems have been fixed.");
+	}
+	return retValue;
+})();
+
+var supportsNonScalingStroke_ = (function() {
+	var rect = document.createElementNS(svgns, 'rect');
+	rect.setAttribute('style','vector-effect:non-scaling-stroke');
+	return rect.style.vectorEffect === 'non-scaling-stroke';
+})();
+
+var supportsNativeSVGTransformLists_ = (function() {
+	var rect = document.createElementNS(svgns, 'rect');
+	var rxform = rect.transform.baseVal;
+	
+	var t1 = svg.createSVGTransform();
+	rxform.appendItem(t1);
+	return rxform.getItem(0) == t1;
+})();
+
+// Public API
+
+svgedit.browser.isOpera = function() { return isOpera_; }
+svgedit.browser.isWebkit = function() { return isWebkit_; }
+svgedit.browser.isGecko = function() { return isGecko_; }
+svgedit.browser.isIE = function() { return isIE_; }
+svgedit.browser.isChrome = function() { return isChrome_; }
+svgedit.browser.isWindows = function() { return isWindows_; }
+svgedit.browser.isMac = function() { return isMac_; }
+svgedit.browser.isTouch = function() { return isTouch_; }
+
+svgedit.browser.supportsSelectors = function() { return supportsSelectors_; }
+svgedit.browser.supportsXpath = function() { return supportsXpath_; }
+
+svgedit.browser.supportsPathReplaceItem = function() { return supportsPathReplaceItem_; }
+svgedit.browser.supportsPathInsertItemBefore = function() { return supportsPathInsertItemBefore_; }
+svgedit.browser.supportsPathBBox = function() { return supportsPathBBox_; }
+svgedit.browser.supportsHVLineContainerBBox = function() { return supportsHVLineContainerBBox_; }
+svgedit.browser.supportsGoodTextCharPos = function() { return supportsGoodTextCharPos_; }
+svgedit.browser.supportsEditableText = function() { return supportsEditableText_; }
+svgedit.browser.supportsGoodDecimals = function() { return supportsGoodDecimals_; }
+svgedit.browser.supportsNonScalingStroke = function() { return supportsNonScalingStroke_; }
+svgedit.browser.supportsNativeTransformLists = function() { return supportsNativeSVGTransformLists_; }
+
+}
+
+})();
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/dialog.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/dialog.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/dialog.js	(revision 29468)
@@ -0,0 +1,49 @@
+// This sets up alternative dialog boxes. They mostly work the same way as
+// their UI counterparts, expect instead of returning the result, a callback
+// needs to be included that returns the result as its first parameter.
+// In the future we may want to add additional types of dialog boxes, since 
+// they should be easy to handle this way.
+
+(function() {
+	$('#dialog_container').draggable({cancel:'#dialog_content, #dialog_buttons *', containment: 'window'});
+	var box = $('#dialog_box'), btn_holder = $('#dialog_buttons');
+	
+	var dbox = function(type, msg, callback, defText) {
+		$('#dialog_content').html('<p>'+msg.replace(/\n/g,'</p><p>')+'</p>')
+			.toggleClass('prompt',(type=='prompt'));
+		btn_holder.empty();
+		
+		var ok = $('<input type="button" value="' + uiStrings.common.ok + '">').appendTo(btn_holder);
+	
+		if(type != 'alert') {
+			$('<input type="button" value="' + uiStrings.common.cancel + '">')
+				.appendTo(btn_holder)
+				.on("click touchstart", function() { box.hide();callback(false)});
+		}
+		
+		if(type == 'prompt') {
+			var input = $('<input type="text">').prependTo(btn_holder);
+			input.val(defText || '');
+			input.bind('keydown', 'return', function() {ok.trigger("click touchstart");});
+		}
+		
+		if(type == 'process') {
+			ok.hide();
+		}
+
+		box.show();
+		
+		ok.on("click touchstart", function() { 
+			box.hide();
+			var resp = (type == 'prompt')?input.val():true;
+			if(callback) callback(resp);
+		}).focus();
+		
+		if(type == 'prompt') input.focus();
+	}
+	
+	$.alert = function(msg, cb) { dbox('alert', msg, cb);};
+	$.confirm = function(msg, cb) {	dbox('confirm', msg, cb);};
+	$.process_cancel = function(msg, cb) {	dbox('process', msg, cb);};
+	$.prompt = function(msg, txt, cb) { dbox('prompt', msg, cb, txt);};
+}());
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/dragupload.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/dragupload.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/dragupload.js	(revision 29468)
@@ -0,0 +1,11 @@
+window.onload = function () {
+  document.querySelector('body').addEventListener('drop', function(e) {
+    e.preventDefault();
+    var reader = new FileReader();
+    reader.onload = function(evt) {
+      //document.querySelector('img').src = evt.target.result;
+    };
+
+    reader.readAsDataURL(e.dataTransfer.files[0]);
+  }, false);
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/draw.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/draw.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/draw.js	(revision 29468)
@@ -0,0 +1,533 @@
+/**
+ * Package: svgedit.draw
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2011 Jeff Schiller
+ */
+
+// Dependencies:
+// 1) jQuery
+// 2) browser.js
+// 3) svgutils.js
+
+var svgedit = svgedit || {};
+
+(function() {
+
+if (!svgedit.draw) {
+	svgedit.draw = {};
+}
+
+var svg_ns = "http://www.w3.org/2000/svg";
+var se_ns = "http://svg-edit.googlecode.com";
+var xmlns_ns = "http://www.w3.org/2000/xmlns/";
+
+var visElems = 'a,circle,ellipse,foreignObject,g,image,line,path,polygon,polyline,rect,svg,text,tspan,use';
+var visElems_arr = visElems.split(',');
+
+var RandomizeModes = {
+	LET_DOCUMENT_DECIDE: 0,
+	ALWAYS_RANDOMIZE: 1,
+	NEVER_RANDOMIZE: 2
+};
+var randomize_ids = RandomizeModes.LET_DOCUMENT_DECIDE;
+
+/**
+ * This class encapsulates the concept of a layer in the drawing
+ * @param name {String} Layer name
+ * @param child {SVGGElement} Layer SVG group.
+ */
+svgedit.draw.Layer = function(name, group) {
+	this.name_ = name;
+	this.group_ = group;
+};
+
+svgedit.draw.Layer.prototype.getName = function() {
+	return this.name_;
+};
+
+svgedit.draw.Layer.prototype.getGroup = function() {
+	return this.group_;
+};
+
+
+// Called to ensure that drawings will or will not have randomized ids.
+// The current_drawing will have its nonce set if it doesn't already.
+// 
+// Params:
+// enableRandomization - flag indicating if documents should have randomized ids
+svgedit.draw.randomizeIds = function(enableRandomization, current_drawing) {
+	randomize_ids = enableRandomization == false ?
+		RandomizeModes.NEVER_RANDOMIZE :
+		RandomizeModes.ALWAYS_RANDOMIZE;
+
+	if (randomize_ids == RandomizeModes.ALWAYS_RANDOMIZE && !current_drawing.getNonce()) {
+		current_drawing.setNonce(Math.floor(Math.random() * 100001));
+	} else if (randomize_ids == RandomizeModes.NEVER_RANDOMIZE && current_drawing.getNonce()) {
+		current_drawing.clearNonce();
+	}
+};
+
+/**
+ * This class encapsulates the concept of a SVG-edit drawing
+ *
+ * @param svgElem {SVGSVGElement} The SVG DOM Element that this JS object
+ *     encapsulates.  If the svgElem has a se:nonce attribute on it, then
+ *     IDs will use the nonce as they are generated.
+ * @param opt_idPrefix {String} The ID prefix to use.  Defaults to "svg_"
+ *     if not specified.
+ */
+svgedit.draw.Drawing = function(svgElem, opt_idPrefix) {
+	if (!svgElem || !svgElem.tagName || !svgElem.namespaceURI ||
+		svgElem.tagName != 'svg' || svgElem.namespaceURI != svg_ns) {
+		throw "Error: svgedit.draw.Drawing instance initialized without a <svg> element";
+	}
+
+	/**
+	 * The SVG DOM Element that represents this drawing.
+	 * @type {SVGSVGElement}
+	 */
+	this.svgElem_ = svgElem;
+	
+	/**
+	 * The latest object number used in this drawing.
+	 * @type {number}
+	 */
+	this.obj_num = 0;
+	
+	/**
+	 * The prefix to prepend to each element id in the drawing.
+	 * @type {String}
+	 */
+	this.idPrefix = opt_idPrefix || "svg_";
+	
+	/**
+	 * An array of released element ids to immediately reuse.
+	 * @type {Array.<number>}
+	 */
+	this.releasedNums = [];
+
+	/**
+	 * The z-ordered array of tuples containing layer names and <g> elements.
+	 * The first layer is the one at the bottom of the rendering.
+	 * TODO: Turn this into an Array.<Layer>
+	 * @type {Array.<Array.<String, SVGGElement>>}
+	 */
+	this.all_layers = [];
+
+	/**
+	 * The current layer being used.
+	 * TODO: Make this a {Layer}.
+	 * @type {SVGGElement}
+	 */
+	this.current_layer = null;
+
+	/**
+	 * The nonce to use to uniquely identify elements across drawings.
+	 * @type {!String}
+	 */
+	this.nonce_ = "";
+	var n = this.svgElem_.getAttributeNS(se_ns, 'nonce');
+	// If already set in the DOM, use the nonce throughout the document
+	// else, if randomizeIds(true) has been called, create and set the nonce.
+	if (!!n && randomize_ids != RandomizeModes.NEVER_RANDOMIZE) {
+		this.nonce_ = n;
+	} else if (randomize_ids == RandomizeModes.ALWAYS_RANDOMIZE) {
+		this.setNonce(Math.floor(Math.random() * 100001));
+	}
+};
+
+svgedit.draw.Drawing.prototype.getElem_ = function(id) {
+	if(this.svgElem_.querySelector) {
+		// querySelector lookup
+		return this.svgElem_.querySelector('#'+id);
+	} else {
+		// jQuery lookup: twice as slow as xpath in FF
+		return $(this.svgElem_).find('[id=' + id + ']')[0];
+	}
+};
+
+svgedit.draw.Drawing.prototype.getSvgElem = function() {
+	return this.svgElem_;
+};
+
+svgedit.draw.Drawing.prototype.getNonce = function() {
+	return this.nonce_;
+};
+
+svgedit.draw.Drawing.prototype.setNonce = function(n) {
+	this.svgElem_.setAttributeNS(xmlns_ns, 'xmlns:se', se_ns);
+	this.svgElem_.setAttributeNS(se_ns, 'se:nonce', n);
+	this.nonce_ = n;
+};
+
+svgedit.draw.Drawing.prototype.clearNonce = function() {
+	// We deliberately leave any se:nonce attributes alone,
+	// we just don't use it to randomize ids.
+	this.nonce_ = "";
+};
+
+/**
+ * Returns the latest object id as a string.
+ * @return {String} The latest object Id.
+ */
+svgedit.draw.Drawing.prototype.getId = function() {
+	return this.nonce_ ?
+		this.idPrefix + this.nonce_ +'_' + this.obj_num :
+ 		this.idPrefix + this.obj_num;
+};
+
+/**
+ * Returns the next object Id as a string.
+ * @return {String} The next object Id to use.
+ */
+svgedit.draw.Drawing.prototype.getNextId = function() {
+	var oldObjNum = this.obj_num;
+	var restoreOldObjNum = false;
+
+	// If there are any released numbers in the release stack, 
+	// use the last one instead of the next obj_num.
+	// We need to temporarily use obj_num as that is what getId() depends on.
+	if (this.releasedNums.length > 0) {
+		this.obj_num = this.releasedNums.pop();
+		restoreOldObjNum = true;
+	} else {
+		// If we are not using a released id, then increment the obj_num.
+		this.obj_num++;
+	}
+
+	// Ensure the ID does not exist.
+	var id = this.getId();
+	while (this.getElem_(id)) {
+		if (restoreOldObjNum) {
+			this.obj_num = oldObjNum;
+			restoreOldObjNum = false;
+		}
+		this.obj_num++;
+		id = this.getId();
+	}
+	// Restore the old object number if required.
+	if (restoreOldObjNum) {
+		this.obj_num = oldObjNum;
+	}
+	return id;
+};
+
+// Function: svgedit.draw.Drawing.releaseId
+// Releases the object Id, letting it be used as the next id in getNextId().
+// This method DOES NOT remove any elements from the DOM, it is expected
+// that client code will do this.
+//
+// Parameters:
+// id - The id to release.
+//
+// Returns:
+// True if the id was valid to be released, false otherwise.
+svgedit.draw.Drawing.prototype.releaseId = function(id) {
+	// confirm if this is a valid id for this Document, else return false
+	var front = this.idPrefix + (this.nonce_ ? this.nonce_ +'_' : '');
+	if (typeof id != typeof '' || id.indexOf(front) != 0) {
+		return false;
+	}
+	// extract the obj_num of this id
+	var num = parseInt(id.substr(front.length));
+
+	// if we didn't get a positive number or we already released this number
+	// then return false.
+	if (typeof num != typeof 1 || num <= 0 || this.releasedNums.indexOf(num) != -1) {
+		return false;
+	}
+	
+	// push the released number into the released queue
+	this.releasedNums.push(num);
+
+	return true;
+};
+
+// Function: svgedit.draw.Drawing.getNumLayers
+// Returns the number of layers in the current drawing.
+// 
+// Returns:
+// The number of layers in the current drawing.
+svgedit.draw.Drawing.prototype.getNumLayers = function() {
+	return this.all_layers.length;
+};
+
+// Function: svgedit.draw.Drawing.hasLayer
+// Check if layer with given name already exists
+svgedit.draw.Drawing.prototype.hasLayer = function(name) {
+	for(var i = 0; i < this.getNumLayers(); i++) {
+		if(this.all_layers[i][0] == name) return true;
+	}
+	return false;
+};
+
+
+// Function: svgedit.draw.Drawing.getLayerName
+// Returns the name of the ith layer. If the index is out of range, an empty string is returned.
+//
+// Parameters:
+// i - the zero-based index of the layer you are querying.
+// 
+// Returns:
+// The name of the ith layer
+svgedit.draw.Drawing.prototype.getLayerName = function(i) {
+	if (i >= 0 && i < this.getNumLayers()) {
+		return this.all_layers[i][0];
+	}
+	return "";
+};
+
+// Function: svgedit.draw.Drawing.getCurrentLayer
+// Returns:
+// The SVGGElement representing the current layer.
+svgedit.draw.Drawing.prototype.getCurrentLayer = function() {
+	return this.current_layer;
+};
+
+// Function: getCurrentLayerName
+// Returns the name of the currently selected layer. If an error occurs, an empty string 
+// is returned.
+//
+// Returns:
+// The name of the currently active layer.
+svgedit.draw.Drawing.prototype.getCurrentLayerName = function() {
+	for (var i = 0; i < this.getNumLayers(); ++i) {
+		if (this.all_layers[i][1] == this.current_layer) {
+			return this.getLayerName(i);
+		}
+	}
+	return "";
+};
+
+// Function: setCurrentLayer
+// Sets the current layer. If the name is not a valid layer name, then this function returns
+// false. Otherwise it returns true. This is not an undo-able action.
+//
+// Parameters:
+// name - the name of the layer you want to switch to.
+//
+// Returns:
+// true if the current layer was switched, otherwise false
+svgedit.draw.Drawing.prototype.setCurrentLayer = function(name) {
+	for (var i = 0; i < this.getNumLayers(); ++i) {
+		if (name == this.getLayerName(i)) {
+			if (this.current_layer != this.all_layers[i][1]) {
+				this.current_layer.setAttribute("style", "pointer-events:none");
+				this.current_layer = this.all_layers[i][1];
+				this.current_layer.setAttribute("style", "pointer-events:all");
+			}
+			return true;
+		}
+	}
+	return false;
+};
+
+
+// Function: svgedit.draw.Drawing.deleteCurrentLayer
+// Deletes the current layer from the drawing and then clears the selection. This function 
+// then calls the 'changed' handler.  This is an undoable action.
+// Returns:
+// The SVGGElement of the layer removed or null.
+svgedit.draw.Drawing.prototype.deleteCurrentLayer = function() {
+	if (this.current_layer && this.getNumLayers() > 1) {
+		// actually delete from the DOM and return it
+		var parent = this.current_layer.parentNode;
+		var nextSibling = this.current_layer.nextSibling;
+		var oldLayerGroup = parent.removeChild(this.current_layer);
+		this.identifyLayers();
+		return oldLayerGroup;
+	}
+	return null;
+};
+
+// Function: svgedit.draw.Drawing.identifyLayers
+// Updates layer system and sets the current layer to the
+// top-most layer (last <g> child of this drawing).
+svgedit.draw.Drawing.prototype.identifyLayers = function() {
+	this.all_layers = [];
+	var numchildren = this.svgElem_.childNodes.length;
+	// loop through all children of SVG element
+	var orphans = [], layernames = [];
+	var a_layer = null;
+	var childgroups = false;
+	for (var i = 0; i < numchildren; ++i) {
+		var child = this.svgElem_.childNodes.item(i);
+		// for each g, find its layer name
+		if (child && child.nodeType == 1) {
+			if (child.tagName == "g") {
+				childgroups = true;
+				var name = $("title",child).text();
+				
+				// Hack for Opera 10.60
+				if(!name && svgedit.browser.isOpera() && child.querySelectorAll) {
+					name = $(child.querySelectorAll('title')).text();
+				}
+
+				// store layer and name in global variable
+				if (name) {
+					layernames.push(name);
+					this.all_layers.push( [name,child] );
+					a_layer = child;
+					svgedit.utilities.walkTree(child, function(e){e.setAttribute("style", "pointer-events:inherit");});
+					a_layer.setAttribute("style", "pointer-events:none");
+				}
+				// if group did not have a name, it is an orphan
+				else {
+					orphans.push(child);
+				}
+			}
+			// if child has is "visible" (i.e. not a <title> or <defs> element), then it is an orphan
+			else if(~visElems_arr.indexOf(child.nodeName)) {
+				var bb = svgedit.utilities.getBBox(child);
+				orphans.push(child);
+			}
+		}
+	}
+	
+	// create a new layer and add all the orphans to it
+	var svgdoc = this.svgElem_.ownerDocument;
+	if (orphans.length > 0 || !childgroups) {
+		var i = 1;
+		// TODO(codedread): What about internationalization of "Layer"?
+		while (layernames.indexOf(("Layer " + i)) >= 0) { i++; }
+		var newname = "Layer " + i;
+		a_layer = svgdoc.createElementNS(svg_ns, "g");
+		var layer_title = svgdoc.createElementNS(svg_ns, "title");
+		layer_title.textContent = newname;
+		a_layer.appendChild(layer_title);
+		for (var j = 0; j < orphans.length; ++j) {
+			a_layer.appendChild(orphans[j]);
+		}
+		this.svgElem_.appendChild(a_layer);
+		this.all_layers.push( [newname, a_layer] );
+	}
+	svgedit.utilities.walkTree(a_layer, function(e){e.setAttribute("style","pointer-events:inherit");});
+	if (a_layer.getAttribute("data-locked") === "true") {
+		this.current_layer = this.all_layers.slice(-2)[0][1]
+	}
+	else {
+		this.current_layer = a_layer
+	}
+	this.current_layer.setAttribute("style","pointer-events:all");
+};
+
+// Function: svgedit.draw.Drawing.createLayer
+// Creates a new top-level layer in the drawing with the given name and 
+// sets the current layer to it.
+//
+// Parameters:
+// name - The given name
+//
+// Returns:
+// The SVGGElement of the new layer, which is also the current layer
+// of this drawing.
+svgedit.draw.Drawing.prototype.createLayer = function(name) {
+	var svgdoc = this.svgElem_.ownerDocument;
+	var new_layer = svgdoc.createElementNS(svg_ns, "g");
+	var layer_title = svgdoc.createElementNS(svg_ns, "title");
+	layer_title.textContent = name;
+	new_layer.appendChild(layer_title);
+	this.svgElem_.appendChild(new_layer);
+	this.identifyLayers();
+	return new_layer;
+};
+
+// Function: svgedit.draw.Drawing.getLayerVisibility
+// Returns whether the layer is visible.  If the layer name is not valid, then this function
+// returns false.
+//
+// Parameters:
+// layername - the name of the layer which you want to query.
+//
+// Returns:
+// The visibility state of the layer, or false if the layer name was invalid.
+svgedit.draw.Drawing.prototype.getLayerVisibility = function(layername) {
+	// find the layer
+	var layer = null;
+	for (var i = 0; i < this.getNumLayers(); ++i) {
+		if (this.getLayerName(i) == layername) {
+			layer = this.all_layers[i][1];
+			break;
+		}
+	}
+	if (!layer) return false;
+	return (layer.getAttribute('display') != 'none');
+};
+
+// Function: svgedit.draw.Drawing.setLayerVisibility
+// Sets the visibility of the layer. If the layer name is not valid, this function return 
+// false, otherwise it returns true. This is an undo-able action.
+//
+// Parameters:
+// layername - the name of the layer to change the visibility
+// bVisible - true/false, whether the layer should be visible
+//
+// Returns:
+// The SVGGElement representing the layer if the layername was valid, otherwise null.
+svgedit.draw.Drawing.prototype.setLayerVisibility = function(layername, bVisible) {
+	if (typeof bVisible != typeof true) {
+		return null;
+	}
+	// find the layer
+	var layer = null;
+	for (var i = 0; i < this.getNumLayers(); ++i) {
+		if (this.getLayerName(i) == layername) {
+			layer = this.all_layers[i][1];
+			break;
+		}
+	}
+	if (!layer) return null;
+	
+	var oldDisplay = layer.getAttribute("display");
+	if (!oldDisplay) oldDisplay = "inline";
+	layer.setAttribute("display", bVisible ? "inline" : "none");
+	return layer;
+};
+
+
+// Function: svgedit.draw.Drawing.getLayerOpacity
+// Returns the opacity of the given layer.  If the input name is not a layer, null is returned.
+//
+// Parameters: 
+// layername - name of the layer on which to get the opacity
+//
+// Returns:
+// The opacity value of the given layer.  This will be a value between 0.0 and 1.0, or null
+// if layername is not a valid layer
+svgedit.draw.Drawing.prototype.getLayerOpacity = function(layername) {
+	for (var i = 0; i < this.getNumLayers(); ++i) {
+		if (this.getLayerName(i) == layername) {
+			var g = this.all_layers[i][1];
+			var opacity = g.getAttribute('opacity');
+			if (!opacity) {
+				opacity = '1.0';
+			}
+			return parseFloat(opacity);
+		}
+	}
+	return null;
+};
+
+// Function: svgedit.draw.Drawing.setLayerOpacity
+// Sets the opacity of the given layer.  If the input name is not a layer, nothing happens.
+// If opacity is not a value between 0.0 and 1.0, then nothing happens.
+//
+// Parameters:
+// layername - name of the layer on which to set the opacity
+// opacity - a float value in the range 0.0-1.0
+svgedit.draw.Drawing.prototype.setLayerOpacity = function(layername, opacity) {
+	if (typeof opacity != typeof 1.0 || opacity < 0.0 || opacity > 1.0) {
+		return;
+	}
+	for (var i = 0; i < this.getNumLayers(); ++i) {
+		if (this.getLayerName(i) == layername) {
+			var g = this.all_layers[i][1];
+			g.setAttribute("opacity", opacity);
+			break;
+		}
+	}
+};
+
+})();
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/embedapi.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/embedapi.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/embedapi.js	(revision 29468)
@@ -0,0 +1,173 @@
+﻿/*
+function embedded_svg_edit(frame){
+  //initialize communication
+  this.frame = frame;
+  this.stack = []; //callback stack
+  
+  var editapi = this;
+  
+  window.addEventListener("message", function(e){
+    if(e.data.substr(0,5) == "ERROR"){
+      editapi.stack.splice(0,1)[0](e.data,"error")
+    }else{
+      editapi.stack.splice(0,1)[0](e.data)
+    }
+  }, false)
+}
+
+embedded_svg_edit.prototype.call = function(code, callback){
+  this.stack.push(callback);
+  this.frame.contentWindow.postMessage(code,"*");
+}
+
+embedded_svg_edit.prototype.getSvgString = function(callback){
+  this.call("svgCanvas.getSvgString()",callback)
+}
+
+embedded_svg_edit.prototype.setSvgString = function(svg){
+  this.call("svgCanvas.setSvgString('"+svg.replace(/'/g, "\\'")+"')");
+}
+*/
+
+
+/*
+Embedded SVG-edit API
+
+General usage:
+- Have an iframe somewhere pointing to a version of svg-edit > r1000
+- Initialize the magic with:
+var svgCanvas = new embedded_svg_edit(window.frames['svgedit']);
+- Pass functions in this format:
+svgCanvas.setSvgString("string")
+- Or if a callback is needed:
+svgCanvas.setSvgString("string")(function(data, error){
+  if(error){
+    //there was an error
+  }else{
+    //handle data
+  }
+})
+
+Everything is done with the same API as the real svg-edit, 
+and all documentation is unchanged. The only difference is
+when handling returns, the callback notation is used instead. 
+
+var blah = new embedded_svg_edit(window.frames['svgedit']);
+blah.clearSelection("woot","blah",1337,[1,2,3,4,5,"moo"],-42,{a: "tree",b:6, c: 9})(function(){console.log("GET DATA",arguments)})
+*/
+
+function embedded_svg_edit(frame){
+  //initialize communication
+  this.frame = frame;
+  //this.stack = [] //callback stack
+  this.callbacks = {}; //successor to stack
+  this.encode = embedded_svg_edit.encode;
+  //List of functions extracted with this:
+  //Run in firebug on http://svg-edit.googlecode.com/svn/trunk/docs/files/svgcanvas-js.html
+  
+  //for(var i=0,q=[],f = document.querySelectorAll("div.CFunction h3.CTitle a");i<f.length;i++){q.push(f[i].name)};q
+  //var functions = ["clearSelection", "addToSelection", "removeFromSelection", "open", "save", "getSvgString", "setSvgString",
+  //"createLayer", "deleteCurrentLayer", "setCurrentLayer", "renameCurrentLayer", "setCurrentLayerPosition", "setLayerVisibility",
+  //"moveSelectedToLayer", "clear"];
+  
+  
+  //Newer, well, it extracts things that aren't documented as well. All functions accessible through the normal thingy can now be accessed though the API
+  //var l=[];for(var i in svgCanvas){if(typeof svgCanvas[i] == "function"){l.push(i)}};
+  //run in svgedit itself
+  var functions = ["updateElementFromJson", "embedImage", "fixOperaXML", "clearSelection", "addToSelection",
+		"removeFromSelection", "addNodeToSelection", "open", "save", "getSvgString", "setSvgString", "createLayer",
+		"deleteCurrentLayer", "getCurrentDrawing", "setCurrentLayer", "renameCurrentLayer", "setCurrentLayerPosition",
+		"setLayerVisibility", "moveSelectedToLayer", "clear", "clearPath", "getNodePoint", "clonePathNode", "deletePathNode",
+		"getResolution", "getImageTitle", "setImageTitle", "setResolution", "setBBoxZoom", "setZoom", "getMode", "setMode",
+		"getStrokeColor", "setStrokeColor", "getFillColor", "setFillColor", "setStrokePaint", "setFillPaint", "getStrokeWidth",
+		"setStrokeWidth", "getStrokeStyle", "setStrokeStyle", "getOpacity", "setOpacity", "getFillOpacity", "setFillOpacity",
+		"getStrokeOpacity", "setStrokeOpacity", "getTransformList", "getBBox", "getRotationAngle", "setRotationAngle", "each",
+		"bind", "setIdPrefix", "getBold", "setBold", "getItalic", "setItalic", "getFontFamily", "setFontFamily", "getFontSize",
+		"setFontSize", "getText", "setTextContent", "setImageURL", "setRectRadius", "setSegType", "quickClone",
+		"changeSelectedAttributeNoUndo", "changeSelectedAttribute", "deleteSelectedElements", "groupSelectedElements",
+		"ungroupSelectedElement", "moveToTopSelectedElement", "moveToBottomSelectedElement", "moveSelectedElements",
+		"getStrokedBBox", "getVisibleElements", "cycleElement", "getUndoStackSize", "getRedoStackSize", "getNextUndoCommandText",
+		"getNextRedoCommandText", "undo", "redo", "cloneSelectedElements", "alignSelectedElements", "getZoom", "getVersion",
+		"setIconSize", "setLang", "setCustomHandlers"];
+  
+  //TODO: rewrite the following, it's pretty scary.
+  for(var i = 0; i < functions.length; i++){
+    this[functions[i]] = (function(d){
+      return function(){
+        var t = this //new callback
+        for(var g = 0, args = []; g < arguments.length; g++){
+          args.push(arguments[g]);
+        }
+        var cbid = t.send(d,args, function(){})  //the callback (currently it's nothing, but will be set later
+        
+        return function(newcallback){
+          t.callbacks[cbid] = newcallback; //set callback
+        }
+      }
+    })(functions[i])
+  }
+  //TODO: use AddEvent for Trident browsers, currently they dont support SVG, but they do support onmessage
+  var t = this;
+  window.addEventListener("message", function(e){
+    if(e.data.substr(0,4)=="SVGe"){ //because svg-edit is too longish
+      var data = e.data.substr(4);
+      var cbid = data.substr(0, data.indexOf(";"));
+      if(t.callbacks[cbid]){
+        if(data.substr(0,6) != "error:"){
+          t.callbacks[cbid](eval("("+data.substr(cbid.length+1)+")"))
+        }else{
+          t.callbacks[cbid](data, "error");
+        }
+      }
+    }
+    //this.stack.shift()[0](e.data,e.data.substr(0,5) == "ERROR"?'error':null) //replace with shift
+  }, false)
+}
+
+embedded_svg_edit.encode = function(obj){
+  //simple partial JSON encoder implementation
+  if(window.JSON && JSON.stringify) return JSON.stringify(obj);
+  var enc = arguments.callee; //for purposes of recursion
+  
+  if(typeof obj == "boolean" || typeof obj == "number"){
+      return obj+'' //should work...
+  }else if(typeof obj == "string"){
+    //a large portion of this is stolen from Douglas Crockford's json2.js
+    return '"'+
+          obj.replace(
+            /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g
+          , function (a) {
+            return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+          })
+          +'"'; //note that this isn't quite as purtyful as the usualness
+  }else if(obj.length){ //simple hackish test for arrayish-ness
+    for(var i = 0; i < obj.length; i++){
+      obj[i] = enc(obj[i]); //encode every sub-thingy on top
+    }
+    return "["+obj.join(",")+"]";
+  }else{
+    var pairs = []; //pairs will be stored here
+    for(var k in obj){ //loop through thingys
+      pairs.push(enc(k)+":"+enc(obj[k])); //key: value
+    }
+    return "{"+pairs.join(",")+"}" //wrap in the braces
+  }
+}
+
+embedded_svg_edit.prototype.send = function(name, args, callback){
+  var cbid = Math.floor(Math.random()*31776352877+993577).toString();
+  //this.stack.push(callback);
+  this.callbacks[cbid] = callback;
+  for(var argstr = [], i = 0; i < args.length; i++){
+    argstr.push(this.encode(args[i]))
+  }
+  var t = this;
+  setTimeout(function(){//delay for the callback to be set in case its synchronous
+    t.frame.contentWindow.postMessage(cbid+";svgCanvas['"+name+"']("+argstr.join(",")+")","*");
+  }, 0);
+  return cbid;
+  //this.stack.shift()("svgCanvas['"+name+"']("+argstr.join(",")+")")
+}
+
+
+
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/history.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/history.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/history.js	(revision 29468)
@@ -0,0 +1,601 @@
+/**
+ * Package: svedit.history
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Jeff Schiller
+ */
+
+// Dependencies:
+// 1) jQuery
+// 2) svgtransformlist.js
+// 3) svgutils.js
+
+var svgedit = svgedit || {};
+
+(function() {
+
+if (!svgedit.history) {
+	svgedit.history = {};
+}
+
+// Group: Undo/Redo history management
+
+
+svgedit.history.HistoryEventTypes = {
+	BEFORE_APPLY: 'before_apply',
+	AFTER_APPLY: 'after_apply',
+	BEFORE_UNAPPLY: 'before_unapply',
+	AFTER_UNAPPLY: 'after_unapply'
+};
+
+var removedElements = {};
+
+/**
+ * Interface: svgedit.history.HistoryCommand
+ * An interface that all command objects must implement.
+ *
+ * interface svgedit.history.HistoryCommand {
+ *   void apply(svgedit.history.HistoryEventHandler);
+ *   void unapply(svgedit.history.HistoryEventHandler);
+ *   Element[] elements();
+ *   String getText();
+ *
+ *   static String type();
+ * }
+ *
+ * Interface: svgedit.history.HistoryEventHandler
+ * An interface for objects that will handle history events.
+ *
+ * interface svgedit.history.HistoryEventHandler {
+ *   void handleHistoryEvent(eventType, command);
+ * }
+ *
+ * eventType is a string conforming to one of the HistoryEvent types.
+ * command is an object fulfilling the HistoryCommand interface.
+ */
+
+// Class: svgedit.history.MoveElementCommand
+// implements svgedit.history.HistoryCommand
+// History command for an element that had its DOM position changed
+//
+// Parameters:
+// elem - The DOM element that was moved
+// oldNextSibling - The element's next sibling before it was moved
+// oldParent - The element's parent before it was moved
+// text - An optional string visible to user related to this change
+svgedit.history.MoveElementCommand = function(elem, oldNextSibling, oldParent, text) {
+	this.elem = elem;
+	this.text = text ? ("Move " + elem.tagName + " to " + text) : ("Move " + elem.tagName);
+	this.oldNextSibling = oldNextSibling;
+	this.oldParent = oldParent;
+	this.newNextSibling = elem.nextSibling;
+	this.newParent = elem.parentNode;
+};
+svgedit.history.MoveElementCommand.type = function() { return 'svgedit.history.MoveElementCommand'; }
+svgedit.history.MoveElementCommand.prototype.type = svgedit.history.MoveElementCommand.type;
+
+// Function: svgedit.history.MoveElementCommand.getText
+svgedit.history.MoveElementCommand.prototype.getText = function() {
+	return this.text;
+};
+
+// Function: svgedit.history.MoveElementCommand.apply
+// Re-positions the element
+svgedit.history.MoveElementCommand.prototype.apply = function(handler) {
+	// TODO(codedread): Refactor this common event code into a base HistoryCommand class.
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_APPLY, this);
+	}
+
+	this.elem = this.newParent.insertBefore(this.elem, this.newNextSibling);
+
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_APPLY, this);
+	}
+};
+
+// Function: svgedit.history.MoveElementCommand.unapply
+// Positions the element back to its original location
+svgedit.history.MoveElementCommand.prototype.unapply = function(handler) {
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_UNAPPLY, this);
+	}
+		
+	this.elem = this.oldParent.insertBefore(this.elem, this.oldNextSibling);
+
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_UNAPPLY, this);
+	}
+};
+
+// Function: svgedit.history.MoveElementCommand.elements
+// Returns array with element associated with this command
+svgedit.history.MoveElementCommand.prototype.elements = function() {
+	return [this.elem];
+};
+
+
+// Class: svgedit.history.InsertElementCommand
+// implements svgedit.history.HistoryCommand
+// History command for an element that was added to the DOM
+//
+// Parameters:
+// elem - The newly added DOM element
+// text - An optional string visible to user related to this change
+svgedit.history.InsertElementCommand = function(elem, text) {
+	this.elem = elem;
+	this.text = text || ("Create " + elem.tagName);
+	this.parent = elem.parentNode;
+	this.nextSibling = this.elem.nextSibling;
+};
+svgedit.history.InsertElementCommand.type = function() { return 'svgedit.history.InsertElementCommand'; }
+svgedit.history.InsertElementCommand.prototype.type = svgedit.history.InsertElementCommand.type;
+
+// Function: svgedit.history.InsertElementCommand.getText
+svgedit.history.InsertElementCommand.prototype.getText = function() {
+	return this.text;
+};
+
+// Function: svgedit.history.InsertElementCommand.apply
+// Re-Inserts the new element
+svgedit.history.InsertElementCommand.prototype.apply = function(handler) { 
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_APPLY, this);
+	}
+
+	this.elem = this.parent.insertBefore(this.elem, this.nextSibling); 
+
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_APPLY, this);
+	}
+};
+
+// Function: svgedit.history.InsertElementCommand.unapply
+// Removes the element
+svgedit.history.InsertElementCommand.prototype.unapply = function(handler) {
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_UNAPPLY, this);
+	}
+
+	this.parent = this.elem.parentNode;
+	this.elem = this.elem.parentNode.removeChild(this.elem);
+
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_UNAPPLY, this);
+	}
+};
+
+// Function: svgedit.history.InsertElementCommand.elements
+// Returns array with element associated with this command
+svgedit.history.InsertElementCommand.prototype.elements = function() {
+	return [this.elem];
+};
+
+
+// Class: svgedit.history.RemoveElementCommand
+// implements svgedit.history.HistoryCommand
+// History command for an element removed from the DOM
+//
+// Parameters:
+// elem - The removed DOM element
+// oldNextSibling - the DOM element's nextSibling when it was in the DOM
+// oldParent - The DOM element's parent
+// text - An optional string visible to user related to this change
+svgedit.history.RemoveElementCommand = function(elem, oldNextSibling, oldParent, text) {
+	this.elem = elem;
+	this.text = text || ("Delete " + elem.tagName);
+	this.nextSibling = oldNextSibling;
+	this.parent = oldParent;
+
+	// special hack for webkit: remove this element's entry in the svgTransformLists map
+	svgedit.transformlist.removeElementFromListMap(elem);
+};
+svgedit.history.RemoveElementCommand.type = function() { return 'svgedit.history.RemoveElementCommand'; }
+svgedit.history.RemoveElementCommand.prototype.type = svgedit.history.RemoveElementCommand.type;
+
+// Function: svgedit.history.RemoveElementCommand.getText
+svgedit.history.RemoveElementCommand.prototype.getText = function() {
+	return this.text;
+};
+
+// Function: RemoveElementCommand.apply
+// Re-removes the new element
+svgedit.history.RemoveElementCommand.prototype.apply = function(handler) {	
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_APPLY, this);
+	}
+
+	svgedit.transformlist.removeElementFromListMap(this.elem);
+	this.parent = this.elem.parentNode;
+	this.elem = this.parent.removeChild(this.elem);
+
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_APPLY, this);
+	}
+};
+
+// Function: RemoveElementCommand.unapply
+// Re-adds the new element
+svgedit.history.RemoveElementCommand.prototype.unapply = function(handler) { 
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_UNAPPLY, this);
+	}
+
+	svgedit.transformlist.removeElementFromListMap(this.elem);
+	if(this.nextSibling == null) {
+		if(window.console) console.log('Error: reference element was lost');
+	}
+	this.parent.insertBefore(this.elem, this.nextSibling);
+
+
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_UNAPPLY, this);
+	}
+};
+
+// Function: RemoveElementCommand.elements
+// Returns array with element associated with this command
+svgedit.history.RemoveElementCommand.prototype.elements = function() {
+	return [this.elem];
+};
+
+
+// Class: svgedit.history.ChangeElementCommand
+// implements svgedit.history.HistoryCommand
+// History command to make a change to an element. 
+// Usually an attribute change, but can also be textcontent.
+//
+// Parameters:
+// elem - The DOM element that was changed
+// attrs - An object with the attributes to be changed and the values they had *before* the change
+// text - An optional string visible to user related to this change
+svgedit.history.ChangeElementCommand = function(elem, attrs, text) {
+	this.elem = elem;
+	this.text = text ? ("Change " + elem.tagName + " " + text) : ("Change " + elem.tagName);
+	this.newValues = {};
+	this.oldValues = attrs;
+	for (var attr in attrs) {
+		if (attr == "#text") this.newValues[attr] = elem.textContent;
+		else if (attr == "#href") this.newValues[attr] = svgedit.utilities.getHref(elem);
+		else this.newValues[attr] = elem.getAttribute(attr);
+	}
+};
+svgedit.history.ChangeElementCommand.type = function() { return 'svgedit.history.ChangeElementCommand'; }
+svgedit.history.ChangeElementCommand.prototype.type = svgedit.history.ChangeElementCommand.type;
+
+// Function: svgedit.history.ChangeElementCommand.getText
+svgedit.history.ChangeElementCommand.prototype.getText = function() {
+	return this.text;
+};
+
+// Function: svgedit.history.ChangeElementCommand.apply
+// Performs the stored change action
+svgedit.history.ChangeElementCommand.prototype.apply = function(handler) {
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_APPLY, this);
+	}
+
+	var bChangedTransform = false;
+	for(var attr in this.newValues ) {
+		if (this.newValues[attr]) {
+			if (attr == "#text") this.elem.textContent = this.newValues[attr];
+			else if (attr == "#href") svgedit.utilities.setHref(this.elem, this.newValues[attr])
+			else this.elem.setAttribute(attr, this.newValues[attr]);
+		}
+		else {
+			if (attr == "#text") {
+				this.elem.textContent = "";
+			}
+			else {
+				this.elem.setAttribute(attr, "");
+				this.elem.removeAttribute(attr);
+			}
+		}
+
+		if (attr == "transform") { bChangedTransform = true; }
+	}
+
+	// relocate rotational transform, if necessary
+	if(!bChangedTransform) {
+		var angle = svgedit.utilities.getRotationAngle(this.elem);
+		if (angle) {
+			var bbox = elem.getBBox();
+			var cx = bbox.x + bbox.width/2,
+				cy = bbox.y + bbox.height/2;
+			var rotate = ["rotate(", angle, " ", cx, ",", cy, ")"].join('');
+			if (rotate != elem.getAttribute("transform")) {
+				elem.setAttribute("transform", rotate);
+			}
+		}
+	}
+
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_APPLY, this);
+	}
+
+	return true;
+};
+
+// Function: svgedit.history.ChangeElementCommand.unapply
+// Reverses the stored change action
+svgedit.history.ChangeElementCommand.prototype.unapply = function(handler) {
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_UNAPPLY, this);
+	}
+
+	var bChangedTransform = false;
+	for(var attr in this.oldValues ) {
+		if (this.oldValues[attr]) {
+			if (attr == "#text") this.elem.textContent = this.oldValues[attr];
+			else if (attr == "#href") svgedit.utilities.setHref(this.elem, this.oldValues[attr]);
+			else this.elem.setAttribute(attr, this.oldValues[attr]);
+		}
+		else {
+			if (attr == "#text") {
+				this.elem.textContent = "";
+			}
+			else this.elem.removeAttribute(attr);
+		}
+		if (attr == "transform") { bChangedTransform = true; }
+	}
+	// relocate rotational transform, if necessary
+	if(!bChangedTransform) {
+		var angle = svgedit.utilities.getRotationAngle(this.elem);
+		if (angle) {
+			var bbox = this.elem.getBBox();
+			var cx = bbox.x + bbox.width/2,
+				cy = bbox.y + bbox.height/2;
+			var rotate = ["rotate(", angle, " ", cx, ",", cy, ")"].join('');
+			if (rotate != this.elem.getAttribute("transform")) {
+				this.elem.setAttribute("transform", rotate);
+			}
+		}
+	}
+
+	// Remove transformlist to prevent confusion that causes bugs like 575.
+	svgedit.transformlist.removeElementFromListMap(this.elem);
+
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_UNAPPLY, this);
+	}
+
+	return true;
+};
+
+// Function: ChangeElementCommand.elements
+// Returns array with element associated with this command
+svgedit.history.ChangeElementCommand.prototype.elements = function() {
+	return [this.elem];
+};
+
+
+// TODO: create a 'typing' command object that tracks changes in text
+// if a new Typing command is created and the top command on the stack is also a Typing
+// and they both affect the same element, then collapse the two commands into one
+
+
+// Class: svgedit.history.BatchCommand
+// implements svgedit.history.HistoryCommand
+// History command that can contain/execute multiple other commands
+//
+// Parameters:
+// text - An optional string visible to user related to this change
+svgedit.history.BatchCommand = function(text) {
+	this.text = text || "Batch Command";
+	this.stack = [];
+};
+svgedit.history.BatchCommand.type = function() { return 'svgedit.history.BatchCommand'; }
+svgedit.history.BatchCommand.prototype.type = svgedit.history.BatchCommand.type;
+
+// Function: svgedit.history.BatchCommand.getText
+svgedit.history.BatchCommand.prototype.getText = function() {
+	return this.text;
+};
+
+// Function: svgedit.history.BatchCommand.apply
+// Runs "apply" on all subcommands
+svgedit.history.BatchCommand.prototype.apply = function(handler) {
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_APPLY, this);
+	}
+
+	var len = this.stack.length;
+	for (var i = 0; i < len; ++i) {
+		this.stack[i].apply(handler);
+	}
+
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_APPLY, this);
+	}
+};
+
+// Function: svgedit.history.BatchCommand.unapply
+// Runs "unapply" on all subcommands
+svgedit.history.BatchCommand.prototype.unapply = function(handler) {
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_UNAPPLY, this);
+	}
+
+	for (var i = this.stack.length-1; i >= 0; i--) {
+		this.stack[i].unapply(handler);
+	}
+
+	if (handler) {
+		handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_UNAPPLY, this);
+	}
+};
+
+// Function: svgedit.history.BatchCommand.elements
+// Iterate through all our subcommands and returns all the elements we are changing
+svgedit.history.BatchCommand.prototype.elements = function() {
+	var elems = [];
+	var cmd = this.stack.length;
+	while (cmd--) {
+		var thisElems = this.stack[cmd].elements();
+		var elem = thisElems.length;
+		while (elem--) {
+			if (elems.indexOf(thisElems[elem]) == -1) elems.push(thisElems[elem]);
+		}
+	}
+	return elems;
+};
+
+// Function: svgedit.history.BatchCommand.addSubCommand
+// Adds a given command to the history stack
+//
+// Parameters:
+// cmd - The undo command object to add
+svgedit.history.BatchCommand.prototype.addSubCommand = function(cmd) {
+	this.stack.push(cmd);
+};
+
+// Function: svgedit.history.BatchCommand.isEmpty
+// Returns a boolean indicating whether or not the batch command is empty
+svgedit.history.BatchCommand.prototype.isEmpty = function() {
+	return this.stack.length == 0;
+};
+
+
+// Class: svgedit.history.UndoManager
+// Parameters:
+// historyEventHandler - an object that conforms to the HistoryEventHandler interface
+// (see above)
+svgedit.history.UndoManager = function(historyEventHandler) {
+	this.handler_ = historyEventHandler || null;
+	this.undoStackPointer = 0;
+	this.undoStack = [];
+
+	// this is the stack that stores the original values, the elements and
+	// the attribute name for begin/finish
+	this.undoChangeStackPointer = -1;
+	this.undoableChangeStack = [];
+};
+	
+// Function: svgedit.history.UndoManager.resetUndoStack
+// Resets the undo stack, effectively clearing the undo/redo history
+svgedit.history.UndoManager.prototype.resetUndoStack = function() {
+	this.undoStack = [];
+	this.undoStackPointer = 0;
+};
+
+// Function: svgedit.history.UndoManager.getUndoStackSize
+// Returns: 
+// Integer with the current size of the undo history stack
+svgedit.history.UndoManager.prototype.getUndoStackSize = function() {
+	return this.undoStackPointer;
+};
+
+// Function: svgedit.history.UndoManager.getRedoStackSize
+// Returns: 
+// Integer with the current size of the redo history stack
+svgedit.history.UndoManager.prototype.getRedoStackSize = function() {
+	return this.undoStack.length - this.undoStackPointer;
+};
+
+// Function: svgedit.history.UndoManager.getNextUndoCommandText
+// Returns: 
+// String associated with the next undo command
+svgedit.history.UndoManager.prototype.getNextUndoCommandText = function() { 
+	return this.undoStackPointer > 0 ? this.undoStack[this.undoStackPointer-1].getText() : "";
+};
+
+// Function: svgedit.history.UndoManager.getNextRedoCommandText
+// Returns: 
+// String associated with the next redo command
+svgedit.history.UndoManager.prototype.getNextRedoCommandText = function() { 
+	return this.undoStackPointer < this.undoStack.length ? this.undoStack[this.undoStackPointer].getText() : "";
+};
+
+// Function: svgedit.history.UndoManager.undo
+// Performs an undo step
+svgedit.history.UndoManager.prototype.undo = function() {
+	if (this.undoStackPointer > 0) {
+		var cmd = this.undoStack[--this.undoStackPointer];
+		cmd.unapply(this.handler_);
+	}
+};
+
+// Function: svgedit.history.UndoManager.redo		
+// Performs a redo step
+svgedit.history.UndoManager.prototype.redo = function() {
+	if (this.undoStackPointer < this.undoStack.length && this.undoStack.length > 0) {
+		var cmd = this.undoStack[this.undoStackPointer++];
+		cmd.apply(this.handler_);
+	}
+};
+	
+// Function: svgedit.history.UndoManager.addCommandToHistory
+// Adds a command object to the undo history stack
+//
+// Parameters: 
+// cmd - The command object to add
+svgedit.history.UndoManager.prototype.addCommandToHistory = function(cmd) {
+	// FIXME: we MUST compress consecutive text changes to the same element
+	// (right now each keystroke is saved as a separate command that includes the
+	// entire text contents of the text element)
+	// TODO: consider limiting the history that we store here (need to do some slicing)
+	
+	// if our stack pointer is not at the end, then we have to remove
+	// all commands after the pointer and insert the new command
+	if (this.undoStackPointer < this.undoStack.length && this.undoStack.length > 0) {
+		this.undoStack = this.undoStack.splice(0, this.undoStackPointer);
+	}
+	this.undoStack.push(cmd);
+	this.undoStackPointer = this.undoStack.length;
+};
+
+
+// Function: svgedit.history.UndoManager.beginUndoableChange
+// This function tells the canvas to remember the old values of the 
+// attrName attribute for each element sent in.  The elements and values 
+// are stored on a stack, so the next call to finishUndoableChange() will 
+// pop the elements and old values off the stack, gets the current values
+// from the DOM and uses all of these to construct the undo-able command.
+//
+// Parameters: 
+// attrName - The name of the attribute being changed
+// elems - Array of DOM elements being changed
+svgedit.history.UndoManager.prototype.beginUndoableChange = function(attrName, elems) {
+	var p = ++this.undoChangeStackPointer;
+	var i = elems.length;
+	var oldValues = new Array(i), elements = new Array(i);
+	while (i--) {
+		var elem = elems[i];
+		if (elem == null) continue;
+		elements[i] = elem;
+		oldValues[i] = elem.getAttribute(attrName);
+	}
+	this.undoableChangeStack[p] = {'attrName': attrName,
+							'oldValues': oldValues,
+							'elements': elements};
+};
+
+// Function: svgedit.history.UndoManager.finishUndoableChange
+// This function returns a BatchCommand object which summarizes the
+// change since beginUndoableChange was called.  The command can then
+// be added to the command history
+//
+// Returns: 
+// Batch command object with resulting changes
+svgedit.history.UndoManager.prototype.finishUndoableChange = function() {
+	var p = this.undoChangeStackPointer--;
+	var changeset = this.undoableChangeStack[p];
+	var i = changeset['elements'].length;
+	var attrName = changeset['attrName'];
+	var batchCmd = new svgedit.history.BatchCommand("Change " + attrName);
+	while (i--) {
+		var elem = changeset['elements'][i];
+		if (elem == null) continue;
+		var changes = {};
+		changes[attrName] = changeset['oldValues'][i];
+		if (changes[attrName] != elem.getAttribute(attrName)) {
+			batchCmd.addSubCommand(new svgedit.history.ChangeElementCommand(elem, changes, attrName));
+		}
+	}
+	this.undoableChangeStack[p] = null;
+	return batchCmd;
+};
+
+
+})();
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/math.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/math.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/math.js	(revision 29468)
@@ -0,0 +1,247 @@
+/**
+ * Package: svedit.math
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ * Copyright(c) 2010 Jeff Schiller
+ */
+
+// Dependencies:
+// None.
+
+var svgedit = svgedit || {};
+
+(function() {
+
+if (!svgedit.math) {
+	svgedit.math = {};
+}
+
+// Constants
+var NEAR_ZERO = 1e-14;
+
+// Throw away SVGSVGElement used for creating matrices/transforms.
+var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
+
+// Function: svgedit.math.transformPoint
+// A (hopefully) quicker function to transform a point by a matrix
+// (this function avoids any DOM calls and just does the math)
+// 
+// Parameters:
+// x - Float representing the x coordinate
+// y - Float representing the y coordinate
+// m - Matrix object to transform the point with
+// Returns a x,y object representing the transformed point
+svgedit.math.transformPoint = function(x, y, m) {
+	return { x: m.a * x + m.c * y + m.e, y: m.b * x + m.d * y + m.f};
+};
+
+
+// Function: svgedit.math.isIdentity
+// Helper function to check if the matrix performs no actual transform 
+// (i.e. exists for identity purposes)
+//
+// Parameters: 
+// m - The matrix object to check
+//
+// Returns:
+// Boolean indicating whether or not the matrix is 1,0,0,1,0,0
+svgedit.math.isIdentity = function(m) {
+	return (m.a === 1 && m.b === 0 && m.c === 0 && m.d === 1 && m.e === 0 && m.f === 0);
+};
+
+
+// Function: svgedit.math.matrixMultiply
+// This function tries to return a SVGMatrix that is the multiplication m1*m2.
+// We also round to zero when it's near zero
+// 
+// Parameters:
+// >= 2 Matrix objects to multiply
+//
+// Returns: 
+// The matrix object resulting from the calculation
+svgedit.math.matrixMultiply = function() {
+	var args = arguments, i = args.length, m = args[i-1];
+	
+	while(i-- > 1) {
+		var m1 = args[i-1];
+		m = m1.multiply(m);
+	}
+	if (Math.abs(m.a) < NEAR_ZERO) m.a = 0;
+	if (Math.abs(m.b) < NEAR_ZERO) m.b = 0;
+	if (Math.abs(m.c) < NEAR_ZERO) m.c = 0;
+	if (Math.abs(m.d) < NEAR_ZERO) m.d = 0;
+	if (Math.abs(m.e) < NEAR_ZERO) m.e = 0;
+	if (Math.abs(m.f) < NEAR_ZERO) m.f = 0;
+	
+	return m;
+};
+
+// Function: svgedit.math.hasMatrixTransform
+// See if the given transformlist includes a non-indentity matrix transform
+//
+// Parameters: 
+// tlist - The transformlist to check
+//
+// Returns: 
+// Boolean on whether or not a matrix transform was found
+svgedit.math.hasMatrixTransform = function(tlist) {
+	if(!tlist) return false;
+	var num = tlist.numberOfItems;
+	while (num--) {
+		var xform = tlist.getItem(num);
+		if (xform.type == 1 && !svgedit.math.isIdentity(xform.matrix)) return true;
+	}
+	return false;
+};
+
+// Function: svgedit.math.transformBox
+// Transforms a rectangle based on the given matrix
+//
+// Parameters:
+// l - Float with the box's left coordinate
+// t - Float with the box's top coordinate
+// w - Float with the box width
+// h - Float with the box height
+// m - Matrix object to transform the box by
+// 
+// Returns:
+// An object with the following values:
+// * tl - The top left coordinate (x,y object)
+// * tr - The top right coordinate (x,y object)
+// * bl - The bottom left coordinate (x,y object)
+// * br - The bottom right coordinate (x,y object)
+// * aabox - Object with the following values:
+// * Float with the axis-aligned x coordinate
+// * Float with the axis-aligned y coordinate
+// * Float with the axis-aligned width coordinate
+// * Float with the axis-aligned height coordinate
+svgedit.math.transformBox = function(l, t, w, h, m) {
+	var topleft = {x:l,y:t},
+		topright = {x:(l+w),y:t},
+		botright = {x:(l+w),y:(t+h)},
+		botleft = {x:l,y:(t+h)};
+	var transformPoint = svgedit.math.transformPoint;
+	topleft = transformPoint( topleft.x, topleft.y, m );
+	var minx = topleft.x,
+		maxx = topleft.x,
+		miny = topleft.y,
+		maxy = topleft.y;
+	topright = transformPoint( topright.x, topright.y, m );
+	minx = Math.min(minx, topright.x);
+	maxx = Math.max(maxx, topright.x);
+	miny = Math.min(miny, topright.y);
+	maxy = Math.max(maxy, topright.y);
+	botleft = transformPoint( botleft.x, botleft.y, m);
+	minx = Math.min(minx, botleft.x);
+	maxx = Math.max(maxx, botleft.x);
+	miny = Math.min(miny, botleft.y);
+	maxy = Math.max(maxy, botleft.y);
+	botright = transformPoint( botright.x, botright.y, m );
+	minx = Math.min(minx, botright.x);
+	maxx = Math.max(maxx, botright.x);
+	miny = Math.min(miny, botright.y);
+	maxy = Math.max(maxy, botright.y);
+
+	return {tl:topleft, tr:topright, bl:botleft, br:botright, 
+			aabox: {x:minx, y:miny, width:(maxx-minx), height:(maxy-miny)} };
+};
+
+// Function: svgedit.math.transformListToTransform
+// This returns a single matrix Transform for a given Transform List
+// (this is the equivalent of SVGTransformList.consolidate() but unlike
+//  that method, this one does not modify the actual SVGTransformList)
+// This function is very liberal with its min,max arguments
+// 
+// Parameters:
+// tlist - The transformlist object
+// min - Optional integer indicating start transform position
+// max - Optional integer indicating end transform position
+//
+// Returns:
+// A single matrix transform object
+svgedit.math.transformListToTransform = function(tlist, min, max) {
+	if(tlist == null) {
+		// Or should tlist = null have been prevented before this?
+		return svg.createSVGTransformFromMatrix(svg.createSVGMatrix());
+	}
+	var min = min == undefined ? 0 : min;
+	var max = max == undefined ? (tlist.numberOfItems-1) : max;
+	min = parseInt(min);
+	max = parseInt(max);
+	if (min > max) { var temp = max; max = min; min = temp; }
+	var m = svg.createSVGMatrix();
+	for (var i = min; i <= max; ++i) {
+		// if our indices are out of range, just use a harmless identity matrix
+		var mtom = (i >= 0 && i < tlist.numberOfItems ? 
+						tlist.getItem(i).matrix :
+						svg.createSVGMatrix());
+		m = svgedit.math.matrixMultiply(m, mtom);
+	}
+	return svg.createSVGTransformFromMatrix(m);
+};
+
+
+// Function: svgedit.math.getMatrix
+// Get the matrix object for a given element
+//
+// Parameters:
+// elem - The DOM element to check
+// 
+// Returns:
+// The matrix object associated with the element's transformlist
+svgedit.math.getMatrix = function(elem) {
+	var tlist = svgedit.transformlist.getTransformList(elem);
+	return svgedit.math.transformListToTransform(tlist).matrix;
+};
+
+
+// Function: svgedit.math.snapToAngle
+// Returns a 45 degree angle coordinate associated with the two given 
+// coordinates
+// 
+// Parameters:
+// x1 - First coordinate's x value
+// x2 - Second coordinate's x value
+// y1 - First coordinate's y value
+// y2 - Second coordinate's y value
+//
+// Returns: 
+// Object with the following values:
+// x - The angle-snapped x value
+// y - The angle-snapped y value
+// snapangle - The angle at which to snap
+svgedit.math.snapToAngle = function(x1,y1,x2,y2) {
+	var snap = Math.PI/4; // 45 degrees
+	var dx = x2 - x1;
+	var dy = y2 - y1;
+	var angle = Math.atan2(dy,dx);
+	var dist = Math.sqrt(dx * dx + dy * dy);
+	var snapangle= Math.round(angle/snap)*snap;
+	var x = x1 + dist*Math.cos(snapangle);	
+	var y = y1 + dist*Math.sin(snapangle);
+	//console.log(x1,y1,x2,y2,x,y,angle)
+	return {x:x, y:y, a:snapangle};
+};
+
+
+// Function: rectsIntersect
+// Check if two rectangles (BBoxes objects) intersect each other
+//
+// Paramaters:
+// r1 - The first BBox-like object
+// r2 - The second BBox-like object
+//
+// Returns:
+// Boolean that's true if rectangles intersect
+svgedit.math.rectsIntersect = function(r1, r2) {
+  if (!r1 || !r2) return false;
+	return r2.x < (r1.x+r1.width) && 
+		(r2.x+r2.width) > r1.x &&
+		r2.y < (r1.y+r1.height) &&
+		(r2.y+r2.height) > r1.y;
+};
+
+
+})();
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/method-draw.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/method-draw.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/method-draw.js	(revision 29468)
@@ -0,0 +1,4140 @@
+/*
+ * svg-editor.js
+ *
+ * Licensed under the MIT License
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ * Copyright(c) 2010 Pavol Rusnak
+ * Copyright(c) 2010 Jeff Schiller
+ * Copyright(c) 2010 Narendra Sisodiya
+* Copyright(c)  2012 Mark MacKay
+ *
+ */
+
+// Dependencies:
+// 1) units.js
+// 2) browser.js
+// 3) svgcanvas.js
+
+(function() { 
+  
+  document.addEventListener("touchstart", touchHandler, true);
+  document.addEventListener("touchmove", touchHandler, true);
+  document.addEventListener("touchend", touchHandler, true);
+  document.addEventListener("touchcancel", touchHandler, true);
+  
+	if(!window.methodDraw) window.methodDraw = function($) {
+		var svgCanvas;
+		var Editor = {};
+		var is_ready = false;
+		curConfig = {
+		  canvas_expansion: 1, 
+		  dimensions: [580,400], 
+		  initFill: {color: 'fff', opacity: 1},
+		  initStroke: {width: 1.5, color: '000', opacity: 1},
+			initOpacity: 1,
+			imgPath: 'images/',
+			extPath: 'extensions/',
+			jGraduatePath: 'jgraduate/images/',
+			extensions: [],
+			initTool: 'select',
+			wireframe: false,
+			colorPickerCSS: false,
+			gridSnapping: false,
+			gridColor: "#000",
+			baseUnit: 'px',
+			snappingStep: 10,
+			showRulers: (svgedit.browser.isTouch()) ? false : true,
+			show_outside_canvas: false,
+			no_save_warning: true,
+			initFont: 'Helvetica, Arial, sans-serif'
+		},
+			uiStrings = Editor.uiStrings = {
+				common: {
+					"ok":"OK",
+					"cancel":"Cancel",
+					"key_up":"Up",
+					"key_down":"Down",
+					"key_backspace":"Backspace",
+					"key_del":"Del"
+	
+				},
+				// This is needed if the locale is English, since the locale strings are not read in that instance.
+				layers: {
+					"layer":"Layer"
+				},
+				notification: {
+					"invalidAttrValGiven":"Invalid value given",
+					"noContentToFitTo":"No content to fit to",
+					"dupeLayerName":"There is already a layer named that!",
+					"enterUniqueLayerName":"Please enter a unique layer name",
+					"enterNewLayerName":"Please enter the new layer name",
+					"layerHasThatName":"Layer already has that name",
+					"QmoveElemsToLayer":"Move selected elements to layer \"%s\"?",
+					"QwantToClear":"<strong>Do you want to clear the drawing?</strong>\nThis will also erase your undo history",
+					"QwantToOpen":"Do you want to open a new file?\nThis will also erase your undo history",
+					"QerrorsRevertToSource":"There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+					"QignoreSourceChanges":"Ignore changes made to SVG source?",
+					"featNotSupported":"Feature not supported",
+					"enterNewImgURL":"Enter the new image URL",
+					"defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+					"loadingImage":"Loading image, please wait...",
+					"saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+					"noteTheseIssues": "Also note the following issues: ",
+					"unsavedChanges": "There are unsaved changes.",
+					"enterNewLinkURL": "Enter the new hyperlink URL",
+					"errorLoadingSVG": "Error: Unable to load SVG data",
+					"URLloadFail": "Unable to load from URL",
+					"retrieving": 'Retrieving "%s" ...'
+				}
+			};
+		
+
+		var curPrefs = {}; //$.extend({}, defaultPrefs);
+		var customHandlers = {};
+		Editor.curConfig = curConfig;
+		Editor.tool_scale = 1;
+		
+		Editor.setConfig = function(opts) {
+			$.extend(true, curConfig, opts);
+			if(opts.extensions) {
+				curConfig.extensions = opts.extensions;
+			}
+		}
+		
+		// Extension mechanisms must call setCustomHandlers with two functions: opts.open and opts.save
+		// opts.open's responsibilities are:
+		// 	- invoke a file chooser dialog in 'open' mode
+		//	- let user pick a SVG file
+		//	- calls setCanvas.setSvgString() with the string contents of that file
+		// opts.save's responsibilities are:
+		//	- accept the string contents of the current document 
+		//	- invoke a file chooser dialog in 'save' mode
+		// 	- save the file to location chosen by the user
+		Editor.setCustomHandlers = function(opts) {
+			Editor.ready(function() {
+				if(opts.open) {
+					$('#tool_open > input[type="file"]').remove();
+					$('#tool_open').show();
+					svgCanvas.open = opts.open;
+				}
+				if(opts.save) {
+					Editor.show_save_warning = false;
+					svgCanvas.bind("saved", opts.save);
+				}
+				if(opts.pngsave) {
+					svgCanvas.bind("exported", opts.pngsave);
+				}
+				customHandlers = opts;
+			});
+		}
+		
+		Editor.randomizeIds = function() {
+			svgCanvas.randomizeIds(arguments)
+		}
+
+		Editor.init = function() {
+			// For external openers
+			(function() {
+				// let the opener know SVG Edit is ready
+				var w = window.opener;
+				if (w) {
+			    		try {
+						var methodDrawReadyEvent = w.document.createEvent("Event");
+						methodDrawReadyEvent.initEvent("methodDrawReady", true, true);
+						w.document.documentElement.dispatchEvent(methodDrawReadyEvent);
+			    		}
+					catch(e) {}
+				}
+			})();
+
+			(function() {
+  			$("body").toggleClass("touch", svgedit.browser.isTouch());
+				// Load config/data from URL if given
+				var urldata = $.deparam.querystring(true);
+				if(!$.isEmptyObject(urldata)) {
+					if(urldata.dimensions) {
+						urldata.dimensions = urldata.dimensions.split(',');
+					}
+					
+					if(urldata.extensions) {
+						urldata.extensions = urldata.extensions.split(',');
+					}
+					
+					if(urldata.bkgd_color) {
+						urldata.bkgd_color = '#' + urldata.bkgd_color;
+					}
+
+					methodDraw.setConfig(urldata);
+					
+					var src = urldata.source;
+					var qstr = $.param.querystring();
+					
+					if(!src) { // urldata.source may have been null if it ended with '='
+						if(qstr.indexOf('source=data:') >= 0) {
+							src = qstr.match(/source=(data:[^&]*)/)[1];
+						}
+					}
+					
+					if(src) {
+						if(src.indexOf("data:") === 0) {
+							// plusses get replaced by spaces, so re-insert
+							src = src.replace(/ /g, "+");
+							Editor.loadFromDataURI(src);
+						} else {
+							Editor.loadFromString(src);
+						}
+					} else if(qstr.indexOf('paramurl=') !== -1) {
+						// Get paramater URL (use full length of remaining location.href)
+						methodDraw.loadFromURL(qstr.substr(9));
+					} else if(urldata.url) {
+						methodDraw.loadFromURL(urldata.url);
+					}
+				}
+			})();
+			
+			$("#canvas_width").val(curConfig.dimensions[0]);
+			$("#canvas_height").val(curConfig.dimensions[1]);
+			
+			var extFunc = function() {
+				$.each(curConfig.extensions, function() {
+					var extname = this;
+					$.getScript(curConfig.extPath + extname, function(d) {
+						// Fails locally in Chrome 5
+						if(!d) {
+							var s = document.createElement('script');
+							s.src = curConfig.extPath + extname;
+							document.querySelector('head').appendChild(s);
+						}
+					});
+				});
+			}
+			
+			// Load extensions
+			// Bit of a hack to run extensions in local Opera/IE9
+			if(document.location.protocol === 'file:') {
+				setTimeout(extFunc, 100);
+			} else {
+				extFunc();
+			}
+			$.svgIcons(curConfig.imgPath + 'svg_edit_icons.svg', {
+				w:27, h:27,
+				id_match: false,
+ 				no_img: true, // Opera & Firefox 4 gives odd behavior w/images
+				fallback_path: curConfig.imgPath,
+				fallback:{
+				  'logo':'logo.png',
+					'select':'select.png',
+					'select_node':'select_node.png',
+					'pencil':'pencil.png',
+					'pen':'line.png',
+					'rect':'square.png',
+					'ellipse':'ellipse.png',
+					'path':'path.png',
+					'text':'text.png',
+					'image':'image.png',
+					'zoom':'zoom.png',
+					'delete':'delete.png',
+					'spapelib':'shapelib.png',
+					'node_delete':'node_delete.png',				
+					'align_left':'align-left.png',
+					'align_center':'align-center.png',
+					'align_right':'align-right.png',
+					'align_top':'align-top.png',
+					'align_middle':'align-middle.png',
+					'align_bottom':'align-bottom.png',
+					'arrow_right':'flyouth.png',
+					'arrow_down':'dropdown.gif'
+				},
+				placement: {
+				  '#logo':'logo',
+					'#tool_select':'select',
+					'#tool_fhpath':'pencil',
+					'#tool_line':'pen',
+					'#tool_rect,#tools_rect_show':'rect',
+					'#tool_ellipse,#tools_ellipse_show':'ellipse',
+					'#tool_path':'path',
+					'#tool_text,#layer_rename':'text',
+					'#tool_image':'image',
+					'#tool_zoom':'zoom',
+					'#tool_node_clone':'node_clone',
+					'#tool_node_delete':'node_delete',
+					'#tool_add_subpath':'add_subpath',
+					'#tool_openclose_path':'open_path',
+					'#tool_alignleft, #tool_posleft':'align_left',
+					'#tool_aligncenter, #tool_poscenter':'align_center',
+					'#tool_alignright, #tool_posright':'align_right',
+					'#tool_aligntop, #tool_postop':'align_top',
+					'#tool_alignmiddle, #tool_posmiddle':'align_middle',
+					'#tool_alignbottom, #tool_posbottom':'align_bottom',
+					'#cur_position':'align',
+					'#zoomLabel':'zoom'
+				},
+				resize: {
+					'#logo .svg_icon': 15,
+					'.flyout_arrow_horiz .svg_icon': 5,
+					'#fill_bg .svg_icon, #stroke_bg .svg_icon': svgedit.browser.isTouch() ? 24 : 24,
+					'.palette_item:first .svg_icon': svgedit.browser.isTouch() ? 30 : 16,
+					'#zoomLabel .svg_icon': 16,
+					'#zoom_dropdown .svg_icon': 7
+				},
+				callback: function(icons) {
+					$('.toolbar_button button > svg, .toolbar_button button > img').each(function() {
+						$(this).parent().prepend(this);
+					});
+					$('.tool_button, .tool_button_current').addClass("loaded")
+					var tleft = $('#tools_left');
+					if (tleft.length != 0) {
+						var min_height = tleft.offset().top + tleft.outerHeight();
+					}
+					
+					// Look for any missing flyout icons from plugins
+					$('.tools_flyout').each(function() {
+						var shower = $('#' + this.id + '_show');
+						var sel = shower.attr('data-curopt');
+						// Check if there's an icon here
+						if(!shower.children('svg, img').length) {
+							var clone = $(sel).children().clone();
+							if(clone.length) {
+								clone[0].removeAttribute('style'); //Needed for Opera
+								shower.append(clone);
+							}
+						}
+					});
+					methodDraw.runCallbacks();
+					
+					setTimeout(function() {
+						$('.flyout_arrow_horiz:empty').each(function() {
+							$(this).append($.getSvgIcon('arrow_right').width(5).height(5));
+						});
+					}, 1);
+				}
+			});
+			
+			$('#rulers').on("dblclick", function(e){
+			  $("#base_unit_container").css({
+			    top: e.pageY-10,
+			    left: e.pageX-50,
+			    display: 'block'
+		    })
+			})
+			$("#base_unit_container")
+  			.on("mouseleave mouseenter", function(e){
+  			  t = setTimeout(function(){$("#base_unit_container").fadeOut(500)}, 200)
+  			  if(event.type == "mouseover") clearTimeout(t)  
+  			})
+  		$("#base_unit")
+    		.on("change", function(e) {
+    			savePreferences();
+    		});
+
+			Editor.canvas = svgCanvas = new $.SvgCanvas(document.getElementById("svgcanvas"), curConfig);
+			Editor.show_save_warning = false;
+			Editor.paintBox = {fill: null, stroke:null, canvas:null};
+			var palette = ["#444444", "#482816", "#422C10", "#3B2F0E", "#32320F", 
+										 "#293414", "#1F361B", "#153723", "#0C372C", 
+										 "#083734", "#0E353B", "#1A333F", "#273141", 
+										 "#332D40", "#3E2A3C", "#462735", "#4B252D", 
+										 "#4D2425", "#4C261D", "#666666", "#845335", "#7B572D", 
+										 "#6F5C2A", "#62612C", "#546433", "#46673D", 
+										 "#396849", "#306856", "#2D6862", "#33666C", 
+										 "#426373", "#535F75", "#645A73", "#74556D", 
+										 "#805064", "#884D58", "#8B4D4B", "#894F3F", 
+										 "#999999", "#C48157", "#B8874D", "#A98E49", "#97944B", 
+										 "#849854", "#729C62", "#619E73", "#559E84", 
+										 "#529D94", "#5B9BA2", "#6D97AB", "#8391AE", 
+										 "#9A8AAB", "#AF84A3", "#BF7E96", "#C97A86", 
+										 "#CE7975", "#CC7C65", "#BBBBBB", "#FFB27C", "#FABA6F", 
+										 "#E6C36A", "#CFCA6D", "#B8D078", "#A0D58A",
+										 "#8CD79F", "#7DD8B5", "#7AD6CA", "#84D3DB", 
+										 "#9ACEE6", "#B6C7EA", "#D3BEE7", "#EDB6DC", 
+										 "#FFAFCC", "#FFAAB8", "#FFA9A2", "#FFAC8D", 
+										 "#DDDDDD", "#FFE7A2", "#FFF093", "#FFFA8D", "#FFFF91", 
+										 "#EEFF9F", "#D1FFB4", "#B9FFCE", "#A8FFE9", 
+										 "#A4FFFF", "#B1FFFF", "#CBFFFF", "#EDFFFF", 
+										 "#FFF5FF", "#FFEBFF", "#FFE2FF", "#FFDCEC", 
+										 "#FFDBD2", "#FFDFB8"
+			           ],
+				isMac = (navigator.platform.indexOf("Mac") >= 0),
+				isWebkit = (navigator.userAgent.indexOf("AppleWebKit") >= 0),
+				modKey = (isMac ? "meta+" : "ctrl+"), // â
+				path = svgCanvas.pathActions,
+				undoMgr = svgCanvas.undoMgr,
+				Utils = svgedit.utilities,
+				default_img_url = curConfig.imgPath + "placeholder.svg",
+				workarea = $("#workarea"),
+				canv_menu = $("#cmenu_canvas"),
+				exportWindow = null, 
+				tool_scale = 1,
+				ui_context = 'toolbars',
+				orig_source = '';
+				
+
+			// This puts the correct shortcuts in the menus
+			if (!isMac) {
+			 $('.shortcut').each(function(){
+			   var text = $(this).text();
+			   $(this).text(text.split("â").join("Ctrl+"))
+			 }); 
+			}
+
+			// This sets up alternative dialog boxes. They mostly work the same way as
+			// their UI counterparts, expect instead of returning the result, a callback
+			// needs to be included that returns the result as its first parameter.
+			// In the future we may want to add additional types of dialog boxes, since 
+			// they should be easy to handle this way.
+			(function() {
+				$('#dialog_container').draggable({cancel:'#dialog_content, #dialog_buttons *', containment: 'window'});
+				var box = $('#dialog_box'), btn_holder = $('#dialog_buttons');
+				
+				var dbox = function(type, msg, callback, defText) {
+					$('#dialog_content').html('<p>'+msg.replace(/\n/g,'</p><p>')+'</p>')
+						.toggleClass('prompt',(type=='prompt'));
+					btn_holder.empty();
+					
+					var ok = $('<input type="button" value="' + uiStrings.common.ok + '">').appendTo(btn_holder);
+				
+					if(type != 'alert') {
+						$('<input type="button" value="' + uiStrings.common.cancel + '">')
+							.appendTo(btn_holder)
+							.on("click touchstart", function() { box.hide();callback(false)});
+					}
+					
+					if(type == 'prompt') {
+						var input = $('<input type="text">').prependTo(btn_holder);
+						input.val(defText || '');
+						input.bind('keydown', 'return', function() {ok.trigger("click touchstart");});
+					}
+					
+					if(type == 'process') {
+						ok.hide();
+					}
+		
+					box.show();
+					
+					ok.on("click touchstart", function() { 
+						box.hide();
+						var resp = (type == 'prompt')?input.val():true;
+						if(callback) callback(resp);
+					}).focus();
+					
+					if(type == 'prompt') input.focus();
+				}
+				
+				$.alert = function(msg, cb) { dbox('alert', msg, cb);};
+				$.confirm = function(msg, cb) {	dbox('confirm', msg, cb);};
+				$.process_cancel = function(msg, cb) {	dbox('process', msg, cb);};
+				$.prompt = function(msg, txt, cb) { dbox('prompt', msg, cb, txt);};
+			}());
+			
+			var setSelectMode = function() {
+				var curr = $('.tool_button_current');
+				if(curr.length && curr[0].id !== 'tool_select') {
+					curr.removeClass('tool_button_current').addClass('tool_button');
+					$('#tool_select').addClass('tool_button_current').removeClass('tool_button');
+				}
+				svgCanvas.setMode('select');
+			};
+			
+			var setEyedropperMode = function() {
+			  var curr = $('.tool_button_current');
+				if(curr.length && curr[0].id !== 'tool_eyedropper') {
+					curr.removeClass('tool_button_current').addClass('tool_button');
+					$('#tool_eyedropper').addClass('tool_button_current').removeClass('tool_button');
+				}
+				svgCanvas.setMode('eyedropper');
+		  }
+			
+			var togglePathEditMode = function(editmode, elems) {
+				$('#tools_bottom_2,#tools_bottom_3').toggle(!editmode);
+				if(editmode) {
+					// Change select icon
+					$('.context_panel').hide();
+					$('#path_node_panel').show();
+					$('.tool_button_current').removeClass('tool_button_current').addClass('tool_button');
+					$('#tool_select').addClass('tool_button_current').removeClass('tool_button');
+					setIcon('#tool_select', 'select_node');
+					multiselected = false;
+				} else {
+				  if (elems[0]) {
+				    var selector = svgCanvas.selectorManager.requestSelector(elems[0])
+				    selector.reset(elems[0]);
+				    selector.selectorRect.setAttribute('display', 'inline');
+				  }
+				  
+				  setIcon('#tool_select', 'select');
+				}
+			}
+		
+			// used to make the flyouts stay on the screen longer the very first time
+			var flyoutspeed = 1250;
+			var textBeingEntered = false;
+			var selectedElement = null;
+			var multiselected = false;
+			var editingsource = false;
+			var docprops = false;
+			var preferences = false;
+			var cur_context = '';
+			
+			var saveHandler = function(window,svg) {
+				Editor.show_save_warning = false;
+			
+				// by default, we add the XML prolog back, systems integrating SVG-edit (wikis, CMSs) 
+				// can just provide their own custom save handler and might not want the XML prolog
+				svg = '<?xml version="1.0"?>\n' + svg;
+				
+				// Opens the SVG in new window, with warning about Mozilla bug #308590 when applicable
+				
+				var ua = navigator.userAgent;
+
+				// Chrome 5 (and 6?) don't allow saving, show source instead ( http://code.google.com/p/chromium/issues/detail?id=46735 )
+				// IE9 doesn't allow standalone Data URLs ( https://connect.microsoft.com/IE/feedback/details/542600/data-uri-images-fail-when-loaded-by-themselves )
+				if(~ua.indexOf('MSIE')) {
+					showSourceEditor(0,true);
+					return;	
+				}
+				var win = window.open("data:image/svg+xml;base64," + Utils.encode64(svg));
+				
+				// Alert will only appear the first time saved OR the first time the bug is encountered
+				var done = $.pref('save_notice_done');
+				if(done !== "all") {
+		
+					var note = uiStrings.notification.saveFromBrowser.replace('%s', 'SVG');
+					
+					// Check if FF and has <defs/>
+					if(ua.indexOf('Gecko/') !== -1) {
+						if(svg.indexOf('<defs') !== -1) {
+							note += "\n\n" + uiStrings.notification.defsFailOnSave;
+							$.pref('save_notice_done', 'all');
+							done = "all";
+						} else {
+							$.pref('save_notice_done', 'part');
+						}
+					} else {
+						$.pref('save_notice_done', 'all'); 
+					}
+					
+					if(done !== 'part') {
+						win.alert(note);
+					}
+				}
+			};
+			
+			var exportHandler = function(window, data) {
+				var issues = data.issues;
+				
+				if(!$('#export_canvas').length) {
+					$('<canvas>', {id: 'export_canvas'}).hide().appendTo('body');
+				}
+				var c = $('#export_canvas')[0];
+				
+				c.width = svgCanvas.contentW;
+				c.height = svgCanvas.contentH;
+				canvg(c, data.svg, {renderCallback: function() {
+					var datauri = c.toDataURL('image/png');
+					exportWindow.location.href = datauri;
+					var done = $.pref('export_notice_done');
+					if(done !== "all") {
+						var note = uiStrings.notification.saveFromBrowser.replace('%s', 'PNG');
+						
+						// Check if there's issues
+						if(issues.length) {
+							var pre = "\n \u2022 ";
+							note += ("\n\n" + uiStrings.notification.noteTheseIssues + pre + issues.join(pre));
+						} 
+						
+						// Note that this will also prevent the notice even though new issues may appear later.
+						// May want to find a way to deal with that without annoying the user
+						$.pref('export_notice_done', 'all'); 
+						exportWindow.alert(note);
+					}
+				}});
+			};
+			
+			// called when we've selected a different element
+			var selectedChanged = function(window,elems) {			  
+				var mode = svgCanvas.getMode();
+				if(mode === "select") setSelectMode();
+				if (mode === "pathedit") return updateContextPanel();
+				// if elems[1] is present, then we have more than one element
+				selectedElement = (elems.length == 1 || elems[1] == null ? elems[0] : null);
+				elems = elems.filter(Boolean)
+				multiselected = (elems.length >= 2) ? elems : false;
+				if (svgCanvas.elementsAreSame(multiselected)) selectedElement = multiselected[0]
+				if (selectedElement != null) {
+				  $('#multiselected_panel').hide()
+					updateToolbar();
+					if (multiselected.length) {//multiselected elements are the same
+					  $('#tools_top').addClass('multiselected')
+					}
+				}
+				else if (multiselected.length) {
+				  $('.context_panel').hide()
+				  $('#tools_top').removeClass('multiselected')
+				  $('#multiselected_panel').show()
+				}
+				else {
+				  $('.context_panel').hide()
+				  $('#canvas_panel').show()
+				  $('#tools_top').removeClass('multiselected')
+				}
+				svgCanvas.runExtensions("selectedChanged", {
+					elems: elems,
+					selectedElement: selectedElement,
+					multiselected: multiselected
+				});
+			};
+		
+			// Call when part of element is in process of changing, generally
+			// on mousemove actions like rotate, move, etc.
+			var elementTransition = function(window,elems) {
+				var mode = svgCanvas.getMode();
+				var elem = elems[0];
+				
+				if(!elem) return;
+				
+				multiselected = (elems.length >= 2 && elems[1] != null) ? elems : null;
+				// Only updating fields for single elements for now
+				if(!multiselected) {
+					switch ( mode ) {
+						case "rotate":
+							var ang = svgCanvas.getRotationAngle(elem);
+							$('#angle').val(Math.round(ang));
+							rotateCursor(ang);
+							$('#tool_reorient').toggleClass('disabled', ang == 0);
+							break;
+						
+						// TODO: Update values that change on move/resize, etc
+// 						case "select":
+// 						case "resize":
+// 							break;
+					}
+				}
+				svgCanvas.runExtensions("elementTransition", {
+					elems: elems
+				});
+			};
+		
+			// called when any element has changed
+			var elementChanged = function(window,elems) {
+				var mode = svgCanvas.getMode();
+				if(mode === "select") {
+					setSelectMode();
+				}
+				
+				for (var i = 0; i < elems.length; ++i) {
+					var elem = elems[i];
+					
+					// if the element changed was the svg, then it could be a resolution change
+					if (elem && elem.tagName === "svg") {
+						//populateLayers();
+						updateCanvas();
+					} 
+					// Update selectedElement if element is no longer part of the image.
+					// This occurs for the text elements in Firefox
+					else if(elem && selectedElement && selectedElement.parentNode == null) {
+// 						|| elem && elem.tagName == "path" && !multiselected) { // This was added in r1430, but not sure why
+						selectedElement = elem;
+					}
+				}
+				
+				Editor.show_save_warning = true;
+		
+				// we update the contextual panel with potentially new
+				// positional/sizing information (we DON'T want to update the
+				// toolbar here as that creates an infinite loop)
+				// also this updates the history buttons
+		
+				// we tell it to skip focusing the text control if the
+				// text element was previously in focus
+				updateContextPanel();
+				
+				// In the event a gradient was flipped:
+				if(selectedElement && mode === "select") {
+					Editor.paintBox.fill.update();
+					Editor.paintBox.stroke.update();
+				}
+				
+				svgCanvas.runExtensions("elementChanged", {
+					elems: elems
+				});
+			};
+			
+			var zoomChanged = function(window, bbox, autoCenter) {
+				var scrbar = 15,
+					res = svgCanvas.getResolution(),
+					w_area = workarea,
+					canvas_pos = $('#svgcanvas').position();
+				var z_info = svgCanvas.setBBoxZoom(bbox, w_area.width()-scrbar, w_area.height()-scrbar);
+				if(!z_info) return;
+				var zoomlevel = z_info.zoom,
+					bb = z_info.bbox;
+				
+				if(zoomlevel < .001) {
+					changeZoom({value: .1});
+					return;
+				}
+				if (typeof animatedZoom != 'undefined') window.cancelAnimationFrame(animatedZoom)
+				// zoom duration 500ms
+				var start = Date.now();
+				var duration = 500;
+				var diff = (zoomlevel) - (res.zoom)
+				var zoom = $('#zoom')[0]
+				var current_zoom = res.zoom
+				var animateZoom = function(timestamp) {
+				  var progress = Date.now() - start
+				  var tick = progress / duration
+          tick = (Math.pow((tick-1), 3) +1);
+          svgCanvas.setZoom(current_zoom + (diff*tick));
+				  updateCanvas();
+				  if (tick < 1 && tick > -.90) {
+            window.animatedZoom = requestAnimationFrame(animateZoom)
+				  }
+				  else {
+				    $("#zoom").val(parseInt(zoomlevel*100))
+				    $("option", "#zoom_select").removeAttr("selected")
+				    $("option[value="+ parseInt(zoomlevel*100) +"]", "#zoom_select").attr("selected", "selected")
+				  }
+				}
+				animateZoom()
+				
+ 			  
+				
+				//if(autoCenter) {
+				//	updateCanvas();
+				//} else {
+				//	updateCanvas(false, {x: bb.x * zoomlevel + (bb.width * zoomlevel)/2, y: bb.y * zoomlevel + (bb.height * zoomlevel)/2});
+				//}
+		
+				if(svgCanvas.getMode() == 'zoom' && bb.width) {
+					// Go to select if a zoom box was drawn
+					setSelectMode();
+				}
+				
+				zoomDone();
+			}
+			
+			$('#cur_context_panel').delegate('a', 'click', function() {
+				var link = $(this);
+				if(link.attr('data-root')) {
+					svgCanvas.leaveContext();
+				} else {
+					svgCanvas.setContext(link.text());
+				}
+				svgCanvas.clearSelection();
+				return false;
+			});
+			
+			var contextChanged = function(win, context) {
+				
+				var link_str = '';
+				if(context) {
+					var str = '';
+					link_str = '<a href="#" data-root="y">' + svgCanvas.getCurrentDrawing().getCurrentLayerName() + '</a>';
+					
+					$(context).parentsUntil('#svgcontent > g').andSelf().each(function() {
+						if(this.id) {
+							str += ' > ' + this.id;
+							if(this !== context) {
+								link_str += ' > <a href="#">' + this.id + '</a>';
+							} else {
+								link_str += ' > ' + this.id;
+							}
+						}
+					});
+
+					cur_context = str;
+				} else {
+					cur_context = null;
+				}
+				$('#cur_context_panel').toggle(!!context).html(link_str);
+
+			}
+			
+			// Makes sure the current selected paint is available to work with
+			var prepPaints = function() {
+				Editor.paintBox.fill.prep();
+				Editor.paintBox.stroke.prep();
+			}
+			
+			var flyout_funcs = {};
+			
+			var setupFlyouts = function(holders) {
+				$.each(holders, function(hold_sel, btn_opts) {
+					var buttons = $(hold_sel).children();
+					var show_sel = hold_sel + '_show';
+					var shower = $(show_sel);
+					var def = false;
+					buttons.addClass('tool_button')
+						.unbind('click mousedown mouseup') // may not be necessary
+						.each(function(i) {
+							// Get this buttons options
+							var opts = btn_opts[i];
+							
+							// Remember the function that goes with this ID
+							flyout_funcs[opts.sel] = opts.fn;
+
+							if(opts.isDefault) def = i;
+
+							// Clicking the icon in flyout should set this set's icon
+							var func = function(event) {
+								var options = opts;
+								//find the currently selected tool if comes from keystroke
+								if (event.type === "keydown") {
+									var flyoutIsSelected = $(options.parent + "_show").hasClass('tool_button_current'); 
+									var currentOperation = $(options.parent + "_show").attr("data-curopt");
+									$.each(holders[opts.parent], function(i, tool){
+										if (tool.sel == currentOperation) {
+											if(!event.shiftKey || !flyoutIsSelected) {
+												options = tool;
+											}
+											else {
+												options = holders[opts.parent][i+1] || holders[opts.parent][0];
+											}
+										}
+									});
+								}
+								if($(this).hasClass('disabled')) return false;
+								if (toolButtonClick(show_sel)) {
+									options.fn();
+								}
+								if(options.icon) {
+									var icon = $.getSvgIcon(options.icon, true);
+								} else {
+									var icon = $(options.sel).children().eq(0).clone();
+								}
+
+								icon[0].setAttribute('width',shower.width());
+								icon[0].setAttribute('height',shower.height());
+								shower.children(':not(.flyout_arrow_horiz)').remove();
+								shower.append(icon).attr('data-curopt', options.sel); // This sets the current mode
+							}
+
+							$(this).mouseup(func);
+
+							if(opts.key) {
+								$(document).bind('keydown', opts.key[0] + " shift+" + opts.key[0], func);
+							}
+						});
+
+					if(def) {
+						shower.attr('data-curopt', btn_opts[def].sel);
+					} else if(!shower.attr('data-curopt')) {
+						// Set first as default
+						shower.attr('data-curopt', btn_opts[0].sel);
+					}
+					
+					var timer;
+					
+					var pos = $(show_sel).position();
+					$(hold_sel).css({'left': pos.left+34, 'top': pos.top+77});
+					
+					// Clicking the "show" icon should set the current mode
+					shower.mousedown(function(evt) {
+					  $('#workarea').one("mousedown", function(){$('#tools_shapelib').hide()})
+            if ($('#tools_shapelib').is(":visible")) toolButtonClick(show_sel, false);
+						if(shower.hasClass('disabled')) return false;
+						var holder = $(hold_sel);
+						var l = pos.left+34;
+						var w = holder.width()*-1;
+						var time = holder.data('shown_popop')?200:0;
+						timer = setTimeout(function() {
+							// Show corresponding menu
+							if(!shower.data('isLibrary')) {
+								holder.css('left', w).show().animate({
+									left: l
+								},50);
+							} else {
+								holder.css('left', l).show();
+							}
+							holder.data('shown_popop',true);
+						},time);
+						evt.preventDefault();
+					}).mouseup(function(evt) {
+						clearTimeout(timer);
+						var opt = $(this).attr('data-curopt');
+						// Is library and popped up, so do nothing
+						if(shower.data('isLibrary') && $(show_sel.replace('_show','')).is(':visible')) {
+							toolButtonClick(show_sel, true);
+							return;
+						}
+						if (toolButtonClick(show_sel) && (opt in flyout_funcs)) {
+							flyout_funcs[opt]();
+						}
+					});
+					
+					// 	$('#tools_rect').mouseleave(function(){$('#tools_rect').fadeOut();});
+				});
+				
+				setFlyoutTitles();
+			}
+			
+			var makeFlyoutHolder = function(id, child) {
+				var div = $('<div>',{
+					'class': 'tools_flyout',
+					id: id
+				}).appendTo('#svg_editor').append(child);
+				
+				return div;
+			}
+			
+			var setFlyoutPositions = function() {
+				$('.tools_flyout').each(function() {
+					var shower = $('#' + this.id + '_show');
+					var pos = shower.offset();
+					var w = shower.outerWidth();
+					$(this).css({left: (pos.left + w)*tool_scale, top: pos.top});
+				});
+			}
+			
+			var setFlyoutTitles = function() {
+				$('.tools_flyout').each(function() {
+					var shower = $('#' + this.id + '_show');
+					if(shower.data('isLibrary')) return;
+					
+					var tooltips = [];
+					$(this).children().each(function() {
+						tooltips.push(this.title);
+					});
+					shower[0].title = tooltips.join(' / ');
+				});
+			}
+
+			var resize_timer;			
+			
+			var extAdded = function(window, ext) {
+		
+				var cb_called = false;
+				var resize_done = false;
+				var cb_ready = true; // Set to false to delay callback (e.g. wait for $.svgIcons)
+				
+				function prepResize() {
+					if(resize_timer) {
+						clearTimeout(resize_timer);
+						resize_timer = null;
+					}
+					if(!resize_done) {
+						resize_timer = setTimeout(function() {
+							resize_done = true;
+							setIconSize(curPrefs.iconsize);
+						}, 50);	
+					}
+				}
+
+				
+				var runCallback = function() {
+					if(ext.callback && !cb_called && cb_ready) {
+						cb_called = true;
+						ext.callback();
+					}
+				}
+		
+				var btn_selects = [];
+		
+				if(ext.context_tools) {
+					$.each(ext.context_tools, function(i, tool) {
+						// Add select tool
+						var cont_id = tool.container_id?(' id="' + tool.container_id + '"'):"";
+						
+						var panel = $('#' + tool.panel);
+						
+						// create the panel if it doesn't exist
+						if(!panel.length)
+							panel = $('<div>', {id: tool.panel}).appendTo("#tools_top").hide();
+						
+						// TODO: Allow support for other types, or adding to existing tool
+						switch (tool.type) {
+						case 'tool_button':
+							var html = '<div class="tool_button">' + tool.id + '</div>';
+							var div = $(html).appendTo(panel);
+							if (tool.events) {
+								$.each(tool.events, function(evt, func) {
+									$(div).bind(evt, func);
+								});
+							}
+							break;
+						case 'select':
+							var html = '<label' + cont_id + '>'
+								+ '<select id="' + tool.id + '">';
+							$.each(tool.options, function(val, text) {
+								var sel = (val == tool.defval) ? " selected":"";
+								html += '<option value="'+val+'"' + sel + '>' + text + '</option>';
+							});
+							html += "</select></label>";
+							// Creates the tool, hides & adds it, returns the select element
+							var sel = $(html).appendTo(panel).find('select');
+							
+							$.each(tool.events, function(evt, func) {
+								$(sel).bind(evt, func);
+							});
+							break;
+						case 'button-select': 
+							var html = '<div id="' + tool.id + '" class="dropdown toolset" title="' + tool.title + '">'
+								+ '<div id="cur_' + tool.id + '" class="icon_label"></div><button></button></div>';
+							
+							var list = $('<ul id="' + tool.id + '_opts"></ul>').appendTo('#option_lists');
+							if(tool.colnum) {
+								list.addClass('optcols' + tool.colnum);
+							}
+							
+							// Creates the tool, hides & adds it, returns the select element
+							var dropdown = $(html).appendTo(panel).children();
+							
+							btn_selects.push({
+								elem: ('#' + tool.id),
+								list: ('#' + tool.id + '_opts'),
+								title: tool.title,
+								callback: tool.events.change,
+								cur: ('#cur_' + tool.id)
+							});
+
+							break;
+						case 'input':
+							var html = '<label' + cont_id + '>'
+								+ '<span id="' + tool.id + '_label">' 
+								+ tool.label + ':</span>'
+								+ '<input id="' + tool.id + '" title="' + tool.title
+								+ '" size="' + (tool.size || "4") + '" value="' + (tool.defval || "") + '" type="text"/></label>'
+								
+							// Creates the tool, hides & adds it, returns the select element
+							
+							// Add to given tool.panel
+							var inp = $(html).appendTo(panel).find('input');
+							
+							if(tool.spindata) {
+								inp.SpinButton(tool.spindata);
+							}
+							
+							if(tool.events) {
+								$.each(tool.events, function(evt, func) {
+									inp.bind(evt, func);
+								});
+							}
+							break;
+							
+						default:
+							break;
+						}
+					});
+				}
+				
+				if(ext.buttons) {
+					var fallback_obj = {},
+						placement_obj = {},
+						svgicons = ext.svgicons;
+					var holders = {};
+					
+				
+					// Add buttons given by extension
+					$.each(ext.buttons, function(i, btn) {
+						var icon;
+						var id = btn.id;
+						var num = i;
+						// Give button a unique ID
+						while($('#'+id).length) {
+							id = btn.id + '_' + (++num);
+						}
+						if(!svgicons) {
+							icon = (btn.type == "menu") ? "" : $('<img src="' + btn.icon + '">');
+						} else {
+							fallback_obj[id] = btn.icon;
+							var svgicon = btn.svgicon ? btn.svgicon : btn.id;
+							if(btn.type == 'app_menu') {
+								placement_obj['#' + id + ' > div'] = svgicon;
+							} else {
+								placement_obj['#' + id] = svgicon;
+							}
+						}
+						
+						var cls, parent;
+						
+						
+						
+						// Set button up according to its type
+						switch ( btn.type ) {
+						case 'mode_flyout':
+						case 'mode':
+							cls = 'tool_button';
+							if(btn.cls) {
+  						  cls += " " + btn.cls;
+  						}
+							parent = "#tools_left";
+							break;
+						case 'context':
+							cls = 'tool_button';
+							parent = "#" + btn.panel;
+							// create the panel if it doesn't exist
+							if(!$(parent).length)
+								$('<div>', {id: btn.panel}).appendTo("#tools_top");
+							break;
+						case 'menu':
+							cls = 'menu_item tool_button';
+							parent = "#" + (btn.after || btn.panel);
+							break;
+						case 'app_menu':
+							cls = '';
+							parent = btn.parent || '#main_menu ul';
+							// create the panel if it doesn't exist
+							if(!$(parent).length)
+								$('<div>', {id: btn.panel}).appendTo("#tools_top");
+							break;
+						}
+						
+						var button = $((btn.list || btn.type == 'app_menu')?'<li/>':'<div/>')
+							.attr("id", id)
+							.attr("title", btn.title)
+							.addClass(cls);
+						if(!btn.includeWith && !btn.list) {
+							if("position" in btn) {
+								$(parent).children().eq(btn.position).before(button);
+							} else {
+								if (btn.type != "menu" || !btn.after) button.appendTo(parent);
+								else $(parent).after(button);
+							}
+
+							if(btn.type =='mode_flyout') {
+							// Add to flyout menu / make flyout menu
+	// 							var opts = btn.includeWith;
+	// 							// opts.button, default, position
+								var ref_btn = $(button);
+								
+								var flyout_holder = ref_btn.parent();
+								// Create a flyout menu if there isn't one already
+								if(!ref_btn.parent().hasClass('tools_flyout')) {
+									// Create flyout placeholder
+									var tls_id = ref_btn[0].id.replace('tool_','tools_')
+									var show_btn = ref_btn.clone()
+										.attr('id',tls_id + '_show')
+										.append($('<div>',{'class':'flyout_arrow_horiz'}));
+										
+									ref_btn.before(show_btn);
+								
+									// Create a flyout div
+									flyout_holder = makeFlyoutHolder(tls_id, ref_btn);
+									flyout_holder.data('isLibrary', true);
+									show_btn.data('isLibrary', true);
+								} 
+								
+								
+								
+	// 							var ref_data = Actions.getButtonData(opts.button);
+								
+								placement_obj['#' + tls_id + '_show'] = btn.id;
+								// TODO: Find way to set the current icon using the iconloader if this is not default
+								
+								// Include data for extension button as well as ref button
+								var cur_h = holders['#'+flyout_holder[0].id] = [{
+									sel: '#'+id,
+									fn: btn.events.click,
+									icon: btn.id,
+                  //key: btn.key,
+									isDefault: true
+								}, ref_data];
+
+							} else if(btn.type == 'app_menu' || btn.type == 'menu') {
+								button.append(btn.title);
+							}
+							
+						} else if(btn.list) {
+							// Add button to list
+							button.addClass('push_button');
+							$('#' + btn.list + '_opts').append(button);
+ 							if(btn.isDefault) {
+ 								$('#cur_' + btn.list).append(button.children().clone());
+ 								var svgicon = btn.svgicon?btn.svgicon:btn.id;
+	 							placement_obj['#cur_' + btn.list] = svgicon;
+ 							}
+						} else if(btn.includeWith) {
+							// Add to flyout menu / make flyout menu
+							var opts = btn.includeWith;
+							// opts.button, default, position
+							var ref_btn = $(opts.button);
+							
+							var flyout_holder = ref_btn.parent();
+							// Create a flyout menu if there isn't one already
+							if(!ref_btn.parent().hasClass('tools_flyout')) {
+								// Create flyout placeholder
+								var tls_id = ref_btn[0].id.replace('tool_','tools_')
+								var show_btn = ref_btn.clone()
+									.attr('id',tls_id + '_show')
+									.append($('<div>',{'class':'flyout_arrow_horiz'}));
+									
+								ref_btn.before(show_btn);
+							
+								// Create a flyout div
+								flyout_holder = makeFlyoutHolder(tls_id, ref_btn);
+							} 
+							
+							var ref_data = Actions.getButtonData(opts.button);
+							
+							if(opts.isDefault) {
+								placement_obj['#' + tls_id + '_show'] = btn.id;
+							} 
+							// TODO: Find way to set the current icon using the iconloader if this is not default
+							
+							// Include data for extension button as well as ref button
+							var cur_h = holders['#'+flyout_holder[0].id] = [{
+								sel: '#'+id,
+								fn: btn.events.click,
+								icon: btn.id,
+								key: btn.key,
+								isDefault: btn.includeWith?btn.includeWith.isDefault:0
+							}, ref_data];
+							
+							// {sel:'#tool_rect', fn: clickRect, evt: 'mouseup', key: 4, parent: '#tools_rect', icon: 'rect'}
+								
+							var pos  = ("position" in opts)?opts.position:'last';
+							var len = flyout_holder.children().length;
+							
+							// Add at given position or end
+							if(!isNaN(pos) && pos >= 0 && pos < len) {
+								flyout_holder.children().eq(pos).before(button);
+							} else {
+								flyout_holder.append(button);
+								cur_h.reverse();
+							}
+						} 
+						
+						if(!svgicons) {
+							button.append(icon);
+						}
+						
+						if(!btn.list) {
+							// Add given events to button
+							$.each(btn.events, function(name, func) {
+								if(name == "click") {
+									if(btn.type == 'mode') {
+										if(btn.includeWith) {
+											button.bind(name, func);
+										} else {
+											button.bind(name, function() {
+												if(toolButtonClick(button)) {
+													func();
+												}
+											});
+										}
+										if(btn.key) {
+											$(document).bind('keydown', btn.key, func);
+											if(btn.title) button.attr("title", btn.title + ' ['+btn.key+']');
+										}
+									} else {
+										button.bind(name, func);
+									}
+								} else {
+									button.bind(name, func);
+								}
+							});
+						}
+						setupFlyouts(holders);
+					});
+					
+					$.each(btn_selects, function() {
+						addAltDropDown(this.elem, this.list, this.callback, {seticon: true}); 
+					});
+					
+					if (svgicons)
+						cb_ready = false; // Delay callback
+
+					$.svgIcons(svgicons, {
+						w:27, h:27,
+						id_match: false,
+						no_img: (!isWebkit),
+						fallback: fallback_obj,
+						placement: placement_obj,
+						callback: function(icons) {
+							// Non-ideal hack to make the icon match the current size
+							if(curPrefs.iconsize && curPrefs.iconsize != 'm') {
+								prepResize();
+							}
+							cb_ready = true; // Ready for callback
+							runCallback();
+						}
+				
+					});
+				}
+				
+				runCallback();
+			};
+			
+			var getPaint = function(color, opac, type) {
+				// update the editor's fill paint
+				var opts = null;
+				if (color.indexOf("url(#") === 0) {
+					var refElem = svgCanvas.getRefElem(color);
+					if(refElem) {
+						refElem = refElem.cloneNode(true);
+					} else {
+						refElem =  $("#" + type + "_color defs *")[0];
+					}
+					
+					opts = { alpha: opac };
+					opts[refElem.tagName] = refElem;
+				} 
+				else if (color.indexOf("#") === 0) {
+					opts = {
+						alpha: opac,
+						solidColor: color.substr(1)
+					};
+				}
+				else {
+					opts = {
+						alpha: opac,
+						solidColor: 'none'
+					};
+				}
+				return new $.jGraduate.Paint(opts);
+			};	
+			
+			// set the canvas properties at init
+			var res = svgCanvas.getResolution();
+			if(curConfig.baseUnit !== "px") {
+				res.w = svgedit.units.convertUnit(res.w) + curConfig.baseUnit;
+				res.h = svgedit.units.convertUnit(res.h) + curConfig.baseUnit;
+			}
+			
+			var createBackground = function(fill) {
+        svgCanvas.createLayer("background")
+  			cur_shape = svgCanvas.addSvgElementFromJson({
+  				"element": "rect",
+  				"attr": {
+  					"x": -1,
+  					"y": -1,
+  					"width": res.w+2,
+  					"height": res.h+2,
+  					"stroke": "none",
+  					"id": "canvas_background",
+  					"opacity": 1,
+  					"fill": fill || "#fff",
+  					"style": "pointer-events:none"
+  				}
+  			});
+  			svgCanvas.setCurrentLayer("Layer 1")
+  			svgCanvas.setCurrentLayerPosition("1")
+      }
+			
+			// create a new layer background if it doesn't exist
+			if (!document.getElementById('canvas_background')) createBackground();
+			var fill = document.getElementById('canvas_background').getAttribute("fill");
+			
+			// updates the toolbar (colors, opacity, etc) based on the selected element
+			// This function also updates the opacity and id elements that are in the context panel
+			var updateToolbar = function() {
+				if (selectedElement != null) {
+					switch ( selectedElement.tagName ) {
+					case 'use':
+					  $(".context_panel").hide();
+					  $("#use_panel").show();
+					  break;
+					case 'image':
+  					$(".context_panel").hide();
+  				  $("#image_panel").show();
+  				  break;
+					case 'foreignObject':
+  					$(".context_panel").hide();
+						break;
+					case 'g':
+					case 'a':
+						// Look for common styles
+						var gWidth = null;
+						
+						var childs = selectedElement.getElementsByTagName('*');
+						for(var i = 0, len = childs.length; i < len; i++) {
+							var swidth = childs[i].getAttribute("stroke-width");
+							if(i === 0) {
+								gWidth = swidth;
+							} else if(gWidth !== swidth) {
+								gWidth = null;
+							}
+						}
+						
+						$('#stroke_width').val(gWidth === null ? "0" : gWidth);
+            updateContextPanel();
+						break;
+					default:
+						//removed because multiselect shouldnt set color
+						//Editor.paintBox.fill.update(false);
+						//Editor.paintBox.stroke.update(false);
+						
+						$('#stroke_width').val(selectedElement.getAttribute("stroke-width") || 0);
+						var dash = selectedElement.getAttribute("stroke-dasharray") || "none"
+						$('option', '#stroke_style').removeAttr('selected');
+						$('#stroke_style option[value="'+ dash +'"]').attr("selected", "selected");
+						$('#stroke_style').trigger('change');
+
+	          $.fn.dragInput.updateCursor($('#stroke_width')[0])
+	          $.fn.dragInput.updateCursor($('#blur')[0])
+					}
+	
+				}
+				
+				// All elements including image and group have opacity
+				if(selectedElement != null) {
+					var opac_perc = ((selectedElement.getAttribute("opacity")||1.0)*100);
+					$('#group_opacity').val(opac_perc);
+					$.fn.dragInput.updateCursor($('#group_opacity')[0])
+				}
+			};
+		
+			var setImageURL = Editor.setImageURL = function(url) {
+				if(!url) url = default_img_url;
+				
+				svgCanvas.setImageURL(url);
+				$('#image_url').val(url);
+			}
+		
+			var setInputWidth = function(elem) {
+				var w = Math.min(Math.max(12 + elem.value.length * 6, 50), 300);
+				$(elem).width(w);
+			}
+		
+			// updates the context panel tools based on the selected element
+			var updateContextPanel = function(e) {
+			var elem = selectedElement;
+				// If element has just been deleted, consider it null
+				if(elem != null && !elem.parentNode) elem = null;
+				if (multiselected && multiselected[0] != null && !multiselected[0].parentNode) multiselected = false;
+				
+				var currentLayerName = svgCanvas.getCurrentDrawing().getCurrentLayerName();
+				var currentMode = svgCanvas.getMode();
+				var unit = curConfig.baseUnit !== 'px' ? curConfig.baseUnit : null;
+				var is_node = currentMode == 'pathedit'; //elem ? (elem.id && elem.id.indexOf('pathpointgrip') == 0) : false;
+				
+				if (is_node) {
+				  $('.context_panel').hide();
+				  $('#path_node_panel').show();
+				  $('#stroke_panel').hide();
+					var point = path.getNodePoint();
+					$('#tool_add_subpath').removeClass('push_button_pressed').addClass('tool_button');
+					$('#tool_node_delete').toggleClass('disabled', !path.canDeleteNodes);
+					
+					// Show open/close button based on selected point
+					setIcon('#tool_openclose_path', path.closed_subpath ? 'open_path' : 'close_path');
+					
+					if(point) {
+						var seg_type = $('#seg_type');
+						if(unit) {
+							point.x = svgedit.units.convertUnit(point.x);
+							point.y = svgedit.units.convertUnit(point.y);
+						}
+						$('#path_node_x').val(Math.round(point.x));
+						$('#path_node_y').val(Math.round(point.y));
+						if(point.type) {
+							seg_type.val(point.type).removeAttr('disabled');
+							$("#seg_type_label").html(point.type == 4 ? "Straight" : "Curve")
+						} else {
+							seg_type.val(4).attr('disabled','disabled');
+						}
+					}
+					$("#tools_top").removeClass("multiselected")			  
+          $("#stroke_panel").hide();
+          $("#canvas_panel").hide();
+					return;
+				}
+				
+				var menu_items = $('#cmenu_canvas li');
+				$('.context_panel').hide();
+				$('.menu_item', '#edit_menu').addClass('disabled');
+				$('.menu_item', '#object_menu').addClass('disabled');
+				
+        
+        //hack to show the proper multialign box
+        if (multiselected) {
+          multiselected = multiselected.filter(Boolean);
+          elem = (svgCanvas.elementsAreSame(multiselected)) ? multiselected[0] : null
+          if (elem) $("#tools_top").addClass("multiselected")
+        }
+
+        if (!elem && !multiselected) {
+          $("#tools_top").removeClass("multiselected")			  
+          $("#stroke_panel").hide();
+          $("#canvas_panel").show();
+				}
+		
+				if (elem != null) {
+				  $("#stroke_panel").show();
+					var elname = elem.nodeName;
+					var angle = svgCanvas.getRotationAngle(elem);
+					$('#angle').val(Math.round(angle));
+					
+					var blurval = svgCanvas.getBlur(elem);
+					$('#blur').val(blurval);
+					if(!is_node && currentMode != 'pathedit') {
+						$('#selected_panel').show();
+						$('.action_selected').removeClass('disabled');
+						// Elements in this array already have coord fields
+            var x, y
+						if(['g', 'polyline', 'path'].indexOf(elname) >= 0) {
+							var bb = svgCanvas.getStrokedBBox([elem]);
+							if(bb) {
+								x = bb.x;
+								y = bb.y;
+							}
+						}
+						
+						if(unit) {
+							x = svgedit.units.convertUnit(x);
+							y = svgedit.units.convertUnit(y);
+						}
+
+						$("#" + elname +"_x").val(Math.round(x))
+						$("#" + elname +"_y").val(Math.round(y))
+						if (elname === "polyline") {
+						  //we're acting as if polylines were paths
+						  $("#path_x").val(Math.round(x))
+  						$("#path_y").val(Math.round(y))
+						}
+											
+					  // Elements in this array cannot be converted to a path
+  					var no_path = ['image', 'text', 'path', 'g', 'use'].indexOf(elname) == -1;
+  					if (no_path) $('.action_path_convert_selected').removeClass('disabled');
+  					if (elname === "path") $('.action_path_selected').removeClass('disabled');
+  
+					}
+					
+					var link_href = null;
+					if (el_name === 'a') {
+						link_href = svgCanvas.getHref(elem);
+						$('#g_panel').show();
+					}
+					
+					if(elem.parentNode.tagName === 'a') {
+						if(!$(elem).siblings().length) {
+							$('#a_panel').show();
+							link_href = svgCanvas.getHref(elem.parentNode);
+						}
+					}
+					
+					// Hide/show the make_link buttons
+					$('#tool_make_link, #tool_make_link').toggle(!link_href);
+					
+					if(link_href) {
+						$('#link_url').val(link_href);
+					}
+					
+					// update contextual tools here
+					var panels = {
+						g: [],
+						a: [],
+						rect: ['rx','width','height', 'x', 'y'],
+						image: ['width','height', 'x', 'y'],
+						circle: ['cx','cy','r'],
+						ellipse: ['cx','cy','rx','ry'],
+						line: ['x1','y1','x2','y2'], 
+						text: ['x', 'y'],
+						'use': [],
+						path : []
+					};
+					
+					var el_name = elem.tagName;
+					
+ 					if($(elem).data('gsvg')) {
+ 						$('#g_panel').show();
+ 					}
+ 					
+ 					if (el_name == "path" || el_name == "polyline") {
+ 					  $('#path_panel').show();
+ 					}
+					
+					if(panels[el_name]) {
+						var cur_panel = panels[el_name];
+						$('#' + el_name + '_panel').show();
+			      
+			      // corner radius has to live in a different panel
+			      // because otherwise it changes the position of the 
+			      // of the elements
+			      if(el_name == "rect") $("#cornerRadiusLabel").show()
+			      else $("#cornerRadiusLabel").hide()
+						
+						$.each(cur_panel, function(i, item) {
+							var attrVal = elem.getAttribute(item);
+							if(curConfig.baseUnit !== 'px' && elem[item]) {
+								var bv = elem[item].baseVal.value;
+								attrVal = svgedit.units.convertUnit(bv);
+							}
+							
+							//update the draginput cursors
+						  var name_item = document.getElementById(el_name + '_' + item);
+							name_item.value = Math.round(attrVal) || 0;
+							if (name_item.getAttribute("data-cursor") === "true") {
+      				  $.fn.dragInput.updateCursor(name_item );
+      				}
+						});
+						
+						if(el_name == 'text') {
+							var font_family = elem.getAttribute("font-family");
+							var select = document.getElementById("font_family_dropdown");
+							select.selectedIndex = 3
+							
+							$('#text_panel').css("display", "inline");	
+							$('#tool_italic').toggleClass('active', svgCanvas.getItalic())
+							$('#tool_bold').toggleClass('active', svgCanvas.getBold())
+							$('#font_family').val(font_family);
+							$('#font_size').val(elem.getAttribute("font-size"));
+							$('#text').val(elem.textContent);
+							$('#preview_font').text(font_family.split(",")[0].replace(/'/g, "")).css('font-family', font_family);
+							if (svgCanvas.addedNew) {
+								// Timeout needed for IE9
+								setTimeout(function() {
+									$('#text').focus().select();
+								},100);
+							}
+						} // text
+						else if(el_name == 'image') {
+							setImageURL(svgCanvas.getHref(elem));
+						} // image
+						else if(el_name === 'g' || el_name === 'use') {
+							$('#container_panel').show();
+							$('.action_group_selected').removeClass('disabled');
+							var title = svgCanvas.getTitle();
+						}
+					}
+					menu_items[(el_name === 'g' ? 'en':'dis') + 'ableContextMenuItems']('#ungroup');
+					menu_items[((el_name === 'g' || !multiselected) ? 'dis':'en') + 'ableContextMenuItems']('#group');
+				}
+				
+				if (multiselected) {
+					$('#multiselected_panel').show();
+					$('.action_multi_selected').removeClass('disabled');
+					menu_items
+						.enableContextMenuItems('#group')
+						.disableContextMenuItems('#ungroup');
+				} 
+				
+				if (!elem) {
+					menu_items.disableContextMenuItems('#delete,#cut,#copy,#group,#ungroup,#move_front,#move_up,#move_down,#move_back');
+				}
+				
+				// update history buttons
+				if (undoMgr.getUndoStackSize() > 0) {
+					$('#tool_undo').removeClass( 'disabled');
+				}
+				else {
+					$('#tool_undo').addClass( 'disabled');
+				}
+				if (undoMgr.getRedoStackSize() > 0) {
+					$('#tool_redo').removeClass( 'disabled');
+				}
+				else {
+					$('#tool_redo').addClass( 'disabled');
+				}
+				
+				svgCanvas.addedNew = false;
+				
+				if ( (elem && !is_node)	|| multiselected) {
+					// update the selected elements' layer
+					$('#selLayerNames').removeAttr('disabled').val(currentLayerName);
+					
+					// Enable regular menu options
+					canv_menu.enableContextMenuItems('#delete,#cut,#copy,#move_front,#move_up,#move_down,#move_back');
+				}
+			};
+		
+			$('#text').on("focus", function(e){ textBeingEntered = true; } );
+			$('#text').on("blur", function(){ textBeingEntered = false; } );
+		  
+			// bind the selected event to our function that handles updates to the UI
+			svgCanvas.bind("selected", selectedChanged);
+			svgCanvas.bind("transition", elementTransition);
+			svgCanvas.bind("changed", elementChanged);
+			svgCanvas.bind("saved", saveHandler);
+			svgCanvas.bind("exported", exportHandler);
+			svgCanvas.bind("zoomed", zoomChanged);
+			svgCanvas.bind("contextset", contextChanged);
+			svgCanvas.bind("extension_added", extAdded);
+			svgCanvas.textActions.setInputElem($("#text")[0]);
+		
+			var str = '<div class="palette_item transparent" data-rgb="none"></div>\
+								<div class="palette_item black" data-rgb="#000000"></div>\
+								<div class="palette_item white" data-rgb="#ffffff"></div>'
+			palette.forEach(function(item, i){
+				str += '<div class="palette_item" style="background-color: ' + item + ';" data-rgb="' + item + '"></div>';
+			});
+			$('#palette').append(str);
+			
+			var changeFontSize = function(ctl) {
+				svgCanvas.setFontSize(ctl.value);
+			}
+			
+			var changeStrokeWidth = function(ctl) {
+				var val = ctl.value;
+				if(val == 0 && selectedElement && ['line', 'polyline'].indexOf(selectedElement.nodeName) >= 0) {
+					val = ctl.value = 1;
+				}
+				svgCanvas.setStrokeWidth(val);
+			}
+			
+			//cache
+			var $indicator = $('#tool_angle_indicator')
+			var $reorient = $('#tool_reorient')
+			
+			rotateCursor = function(angle){
+			  var rotate_string = 'rotate('+ angle + 'deg)'
+  			$indicator.css({
+  			  '-webkit-transform': rotate_string,
+  			  '-moz-transform': rotate_string,
+  			  '-o-transform': rotate_string,
+  			  '-ms-transform': rotate_string,
+  			  'transform': rotate_string
+  			});
+			}
+			
+			var changeRotationAngle = function(ctl) {
+			  var preventUndo = true;
+				svgCanvas.setRotationAngle(ctl.value, preventUndo);
+				rotateCursor(ctl.value)
+				$('#tool_reorient').toggleClass('disabled', ctl.value == 0);
+			}
+			
+			var changeZoom = function(ctl) {
+				var zoomlevel = ctl.value / 100;
+				if(zoomlevel < .001) {
+					ctl.value = .1;
+					return;
+				}
+				var zoom = svgCanvas.getZoom();
+				var w_area = workarea;
+				zoomChanged(window, {
+					width: 0,
+					height: 0,
+					// center pt of scroll position
+					x: (w_area[0].scrollLeft + w_area.width()/2)/zoom, 
+					y: (w_area[0].scrollTop + w_area.height()/2)/zoom,
+					zoom: zoomlevel
+				}, true);
+			}
+			
+			var changeBlur = function(ctl, completed) {
+				val = ctl.value;
+				$('#blur').val(val);
+				if (completed) {
+				  svgCanvas.setBlur(val, true);
+				}
+				else {
+				  svgCanvas.setBlurNoUndo(val);
+				}
+			}
+		
+			var operaRepaint = function() {
+				// Repaints canvas in Opera. Needed for stroke-dasharray change as well as fill change
+				if(!window.opera) return;
+				$('<p/>').hide().appendTo('body').remove();
+			}
+		
+			$('#stroke_style').change(function(){
+				svgCanvas.setStrokeAttr('stroke-dasharray', $(this).val());
+				$("#stroke_style_label").html(this.options[this.selectedIndex].text)
+				operaRepaint();
+			});
+			
+			$('#seg_type').change(function() {
+				svgCanvas.setSegType($(this).val());
+				$("#seg_type_label").html(this.options[this.selectedIndex].text)
+			});
+		
+			// Lose focus for select elements when changed (Allows keyboard shortcuts to work better)
+			$('select').change(function(){$(this).blur();});
+		
+			$('#font_family').change(function() {
+				svgCanvas.setFontFamily(this.value);
+			});
+				
+			$('#text').keyup(function(){
+				svgCanvas.setTextContent(this.value);
+			});
+		  
+			changeAttribute = function(el, completed) {
+				var attr = el.getAttribute("data-attr");
+				var multiplier = el.getAttribute("data-multiplier") || 1;
+				multiplier = parseFloat(multiplier);
+				var val = el.value * multiplier;
+				var valid = svgedit.units.isValidUnit(attr, val, selectedElement);
+				if(!valid) {
+					$.alert(uiStrings.notification.invalidAttrValGiven);
+					el.value = selectedElement.getAttribute(attr);
+					return false;
+				}
+				//if (!noUndo) svgCanvas.changeSelectedAttribute(attr, val);
+				svgCanvas.changeSelectedAttributeNoUndo(attr, val);
+			};
+			
+			picking = false;
+			$(document).on("mouseup", function(){picking = false;})
+
+			$('#palette').on("mousemove mousedown touchstart touchmove", ".palette_item", function(evt){
+				evt.preventDefault();
+
+				if (evt.type == "mousedown") picking = true;
+				if (picking) {
+					var isStroke = $('#tool_stroke').hasClass('active');
+					var picker = isStroke ? "stroke" : "fill";
+					var color = $(this).attr('data-rgb');
+					var paint = null;
+					var noUndo = true;
+					if (evt.type == "mousedown") noUndo = false 
+					// Webkit-based browsers returned 'initial' here for no stroke
+					if (color === 'transparent' || color === 'initial' || color === '#none') {
+						color = 'none';
+						paint = new $.jGraduate.Paint();
+					}
+					else {
+						paint = new $.jGraduate.Paint({alpha: 100, solidColor: color.substr(1)});
+					}
+					
+					Editor.paintBox[picker].setPaint(paint);
+					
+					if (isStroke) {
+						svgCanvas.setColor('stroke', color, noUndo);
+						if (color != 'none' && svgCanvas.getStrokeOpacity() != 1) {
+							svgCanvas.setPaintOpacity('stroke', 1.0);
+						}
+					} else {
+						svgCanvas.setColor('fill', color, noUndo);
+						if (color != 'none' && svgCanvas.getFillOpacity() != 1) {
+							svgCanvas.setPaintOpacity('fill', 1.0);
+						}
+					}
+				}
+			}).bind('contextmenu', function(e) {e.preventDefault()});
+		
+			$("#toggle_stroke_tools").toggle(function() {
+				$(".stroke_tool").css('display','table-cell');
+				$(this).addClass('expanded');
+				resetScrollPos();
+			}, function() {
+				$(".stroke_tool").css('display','none');
+				$(this).removeClass('expanded');
+				resetScrollPos();
+			});
+		
+			// This is a common function used when a tool has been clicked (chosen)
+			// It does several common things:
+			// - removes the tool_button_current class from whatever tool currently has it
+			// - hides any flyouts
+			// - adds the tool_button_current class to the button passed in
+			var toolButtonClick = function(button, noHiding) {
+				if ($(button).hasClass('disabled')) return false;
+				if($(button).parent().hasClass('tools_flyout')) return true;
+				var fadeFlyouts = fadeFlyouts || 'normal';
+				if(!noHiding) {
+					$('.tools_flyout').fadeOut(fadeFlyouts);
+				}
+				$('#styleoverrides').text('');
+				$('.tool_button_current').removeClass('tool_button_current').addClass('tool_button');
+				$(button).addClass('tool_button_current').removeClass('tool_button');
+				return true;
+			};
+			
+			(function() {
+				var last_x = null, last_y = null, w_area = workarea[0], 
+					panning = false, keypan = false;
+				
+				var move_pan = function(evt) {    
+  					if(panning === false) return;
+
+  				  w_area.scrollLeft -= (evt.clientX - last_x);
+  					w_area.scrollTop -= (evt.clientY - last_y);
+  					last_x = evt.clientX;
+  					last_y = evt.clientY;
+  					if(evt.type === 'mouseup' || evt.type === 'touchend') panning = false;
+  					return false;
+  			}
+  			
+  			var start_pan = function(evt) {
+  				if(evt.button === 1 || keypan === true || (evt.originalEvent.touches && evt.originalEvent.touches.length >= 2)) {
+  					panning = true;
+  					last_x = evt.clientX;
+  					last_y = evt.clientY;
+  					return false;
+  				}
+			  }
+				
+				$('#svgcanvas')
+				  .on('mousemove mouseup touchend', move_pan)
+				  .on("mousedown touchmove", start_pan)
+				
+				$(window).mouseup(function() {
+					panning = false;
+				});
+				
+				$(document).bind('keydown', 'space', function(evt) {
+					evt.preventDefault();
+					svgCanvas.spaceKey = keypan = true;
+					
+				}).bind('keyup', 'space', function(evt) {
+					evt.preventDefault();
+					svgCanvas.spaceKey = keypan = false;
+				}).bind('keydown', 'alt', function(evt) {
+					if(svgCanvas.getMode() === 'zoom') {
+						workarea.addClass('out');
+					}
+				}).bind('keyup', 'alt', function(evt) {
+					if(svgCanvas.getMode() === 'zoom') {
+						workarea.removeClass('out');
+					}
+				})
+			}());
+			
+			
+			function setStrokeOpt(opt, changeElem) {
+				var id = opt.id;
+				var bits = id.split('_');
+				var pre = bits[0];
+				var val = bits[1];
+			
+				if(changeElem) {
+					svgCanvas.setStrokeAttr('stroke-' + pre, val);
+				}
+				operaRepaint();
+				setIcon('#cur_' + pre , id, 20);
+				$(opt).addClass('current').siblings().removeClass('current');
+			}
+			
+      //menu handling
+      var menus = $('.menu');
+      var blinker = function(e) {
+        e.target.style.background = "#fff";
+        setTimeout(function(){e.target.style.background = "#ddd";}, 50);
+        setTimeout(function(){e.target.style.background = "#fff";}, 150);
+        setTimeout(function(){e.target.style.background = "#ddd";}, 200);
+        setTimeout(function(){e.target.style.background = "";}, 200);
+        setTimeout(function(){$('#menu_bar').removeClass('active')}, 220);
+        return false;
+      }
+      var closer = function(e){
+        if (e.target.nodeName && e.target.nodeName.toLowerCase() === "input") return false;
+        if (!$(e.target).hasClass("menu_title") && !$(e.target).parent().hasClass("menu_title")) {
+          if(!$(e.target).hasClass("disabled") && $(e.target).hasClass("menu_item")) blinker(e)
+          else $('#menu_bar').removeClass('active')
+
+        }  
+      }
+      
+      $('.menu_item').on('mousedown touchstart', function(e){blinker(e)});
+      $("svg, body").on('mousedown  touchstart', function(e){closer(e)});
+      
+      var accumulatedDelta = 0
+      $('#workarea').on('mousewheel', function(e, delta, deltaX, deltaY){
+        if (e.altKey) {
+          e.preventDefault();
+          zoom = parseInt($("#zoom").val())
+          $("#zoom").val(parseInt(zoom + deltaY*10)).change()
+        }
+      })
+			$('.menu_title')
+			  .on('mousedown', function() {
+			    $("#tools_shapelib").hide()
+			    $("#menu_bar").toggleClass('active');
+			    menus.removeClass('open');
+          $(this).parent().addClass('open');
+			  })
+        .on('mouseover', function() {
+           menus.removeClass('open');
+           $(this).parent().addClass('open');
+         });
+
+			
+			// Made public for UI customization.
+			// TODO: Group UI functions into a public methodDraw.ui interface.
+			Editor.addDropDown = function(elem, callback, dropUp) {
+				if ($(elem).length == 0) return; // Quit if called on non-existant element
+				var button = $(elem).find('button');
+				
+				var list = $(elem).find('ul').attr('id', $(elem)[0].id + '-list');
+				
+				if(!dropUp) {
+					// Move list to place where it can overflow container
+					$('#option_lists').append(list);
+				}
+				
+				var on_button = false;
+				if(dropUp) {
+					$(elem).addClass('dropup');
+				}
+			
+				list.find('li').bind('mouseup', callback);
+				
+				$(window).mouseup(function(evt) {
+					if(!on_button) {
+						button.removeClass('down');
+						list.hide();
+					}
+					on_button = false;
+				});
+				
+				button.bind('mousedown',function() {
+					if (!button.hasClass('down')) {
+						button.addClass('down');
+						
+						if(!dropUp) {
+							var pos = $(elem).offset();
+							// position slider
+							list.css({
+								top: pos.top,
+								left: pos.left - 110
+							});
+						}
+						list.show();
+						
+						on_button = true;
+					} else {
+						button.removeClass('down');
+						list.hide();
+					}
+				}).hover(function() {
+					on_button = true;
+				}).mouseout(function() {
+					on_button = false;
+				});
+			}
+			
+			// TODO: Combine this with addDropDown or find other way to optimize
+			var addAltDropDown = function(elem, list, callback, opts) {
+				var button = $(elem);
+				var list = $(list);
+				var on_button = false;
+				var dropUp = opts.dropUp;
+				if(dropUp) {
+					$(elem).addClass('dropup');
+				}
+				list.find('li').bind('mouseup', function() {
+					if(opts.seticon) {
+						setIcon('#cur_' + button[0].id , $(this).children());
+						$(this).addClass('current').siblings().removeClass('current');
+					}
+					callback.apply(this, arguments);
+
+				});
+				
+				$(window).mouseup(function(evt) {
+					if(!on_button) {
+						button.removeClass('down');
+						list.hide();
+						list.css({top:0, left:0});
+					}
+					on_button = false;
+				});
+				
+				var height = list.height();
+				$(elem).bind('mousedown',function() {
+					var off = $(elem).offset();
+					if(dropUp) {
+						off.top -= list.height();
+						off.left += 8;
+					} else {
+						off.top += $(elem).height();
+					}
+					$(list).offset(off);
+					
+					if (!button.hasClass('down')) {
+						button.addClass('down');
+						list.show();
+						on_button = true;
+						return false;
+					} else {
+						button.removeClass('down');
+						// CSS position must be reset for Webkit
+						list.hide();
+						list.css({top:0, left:0});
+					}
+				}).hover(function() {
+					on_button = true;
+				}).mouseout(function() {
+					on_button = false;
+				});
+				
+				if(opts.multiclick) {
+					list.mousedown(function() {
+						on_button = true;
+					});
+				}
+			}
+			
+			$('#font_family_dropdown').change(function() {
+				var fam = this.options[this.selectedIndex].value
+				var fam_display = this.options[this.selectedIndex].text
+				$('#preview_font').html(fam_display).css("font-family", fam);
+				$('#font_family').val(fam).change();
+			});
+			
+			$('div', '#position_opts').each(function(){
+			  this.addEventListener("mouseup", function(){
+				  var letter = this.id.replace('tool_pos','').charAt(0);
+				  svgCanvas.alignSelectedElements(letter, 'page');
+				})
+			});
+			
+			/*
+			
+			When a flyout icon is selected
+				(if flyout) {
+				- Change the icon
+				- Make pressing the button run its stuff
+				}
+				- Run its stuff
+			
+			When its shortcut key is pressed
+				- If not current in list, do as above
+				, else:
+				- Just run its stuff
+			
+			*/
+			
+			// Unfocus text input when workarea is mousedowned.
+			(function() {
+				var inp;
+				var unfocus = function() {
+					$(inp).blur();
+				}
+				
+				$('#svg_editor').find('button, select, input:not(#text)').focus(function() {
+					inp = this;
+					ui_context = 'toolbars';
+					workarea.mousedown(unfocus);
+				}).blur(function() {
+					ui_context = 'canvas';
+					workarea.unbind('mousedown', unfocus);
+					// Go back to selecting text if in textedit mode
+					if(svgCanvas.getMode() == 'textedit') {
+						$('#text').focus();
+					}
+				});
+				
+			}());
+
+			var clickSelect = function() {
+				if (toolButtonClick('#tool_select')) {
+					svgCanvas.setMode('select');
+				}
+			};
+		
+			var clickFHPath = function() {
+				if (toolButtonClick('#tool_fhpath')) {
+					svgCanvas.setMode('fhpath');
+				}
+			};
+		
+			var clickLine = function() {
+				if (toolButtonClick('#tool_line')) {
+					svgCanvas.setMode('line');
+				}
+			};
+		
+			var clickSquare = function(){
+				if (toolButtonClick('#tool_square')) {
+					svgCanvas.setMode('square');
+				}
+			};
+			
+			var clickRect = function(){
+				if (toolButtonClick('#tool_rect')) {
+					svgCanvas.setMode('rect');
+				}
+			};
+			
+			var clickFHRect = function(){
+				if (toolButtonClick('#tool_fhrect')) {
+					svgCanvas.setMode('fhrect');
+				}
+			};
+			
+			var clickCircle = function(){
+				if (toolButtonClick('#tool_circle')) {
+					svgCanvas.setMode('circle');
+				}
+			};
+		
+			var clickEllipse = function(){
+				if (toolButtonClick('#tool_ellipse')) {
+					svgCanvas.setMode('ellipse');
+				}
+			};
+		
+			var clickFHEllipse = function(){
+				if (toolButtonClick('#tool_fhellipse')) {
+					svgCanvas.setMode('fhellipse');
+				}
+			};
+			
+			var clickImage = function(){
+				if (toolButtonClick('#tool_image')) {
+					svgCanvas.setMode('image');
+				}
+			};
+		
+			var clickZoom = function(){
+				if (toolButtonClick('#tool_zoom')) {
+					svgCanvas.setMode('zoom');
+				}
+			};
+		
+			var dblclickZoom = function(){
+				if (toolButtonClick('#tool_zoom')) {
+					zoomImage();
+					setSelectMode();
+				}
+			};
+		
+			var clickText = function(){
+				if (toolButtonClick('#tool_text')) {
+					svgCanvas.setMode('text');
+				}
+			};
+			
+			var clickPath = function(){
+				if (toolButtonClick('#tool_path')) {
+					svgCanvas.setMode('path');
+				}
+			};
+
+			// Delete is a contextual tool that only appears in the ribbon if
+			// an element has been selected
+			var deleteSelected = function() {
+				if (selectedElement != null || multiselected) {
+					svgCanvas.deleteSelectedElements();
+				}
+				if (path.getNodePoint()) {
+					path.deletePathNode();
+				}
+			};
+		
+			var cutSelected = function() {
+				if (selectedElement != null || multiselected) {
+					flash($('#edit_menu'));
+					svgCanvas.cutSelectedElements();
+				}
+			};
+			
+			var copySelected = function() {
+				if (selectedElement != null || multiselected) {
+				  flash($('#edit_menu'));
+					svgCanvas.copySelectedElements();
+				}
+			};
+			
+			var pasteSelected = function() {
+			  flash($('#edit_menu'));
+				var zoom = svgCanvas.getZoom();				
+				var x = (workarea[0].scrollLeft + workarea.width()/2)/zoom  - svgCanvas.contentW; 
+				var y = (workarea[0].scrollTop + workarea.height()/2)/zoom  - svgCanvas.contentH;
+				svgCanvas.pasteElements('point', x, y); 
+			}
+			
+			var moveToTopSelected = function() {
+				if (selectedElement != null) {
+				  flash($('#object_menu'));
+					svgCanvas.moveToTopSelectedElement();
+				}
+			};
+			
+			var moveToBottomSelected = function() {
+				if (selectedElement != null) {
+				  flash($('#object_menu'));
+					svgCanvas.moveToBottomSelectedElement();
+				}
+			};
+			
+			var moveUpSelected = function() {
+				if (selectedElement != null) {
+			  flash($('#object_menu'));
+					svgCanvas.moveUpDownSelected("Up");
+				}
+			};
+
+			var moveDownSelected = function() {
+				if (selectedElement != null) {
+				  flash($('#object_menu'));
+					svgCanvas.moveUpDownSelected("Down");
+				}
+			};
+			
+			var moveUpDownSelected = function(dir) {
+				if (selectedElement != null) {
+				  flash($('#object_menu'));
+					svgCanvas.moveUpDownSelected(dir);
+				}
+			};
+
+			var convertToPath = function() {
+				if (selectedElement != null) {
+					svgCanvas.convertToPath();
+					var elems = svgCanvas.getSelectedElems()
+					svgCanvas.selectorManager.requestSelector(elems[0]).reset(elems[0])
+					svgCanvas.selectorManager.requestSelector(elems[0]).selectorRect.setAttribute("display", "none");
+					svgCanvas.setMode("pathedit")
+					path.toEditMode(elems[0]);
+					svgCanvas.clearSelection();
+          updateContextPanel();
+				}
+			}
+			
+			var reorientPath = function() {
+				if (selectedElement != null) {
+					path.reorient();
+				}
+			}
+		
+			var makeHyperlink = function() {
+				if (selectedElement != null || multiselected) {
+					$.prompt(uiStrings.notification.enterNewLinkURL, "http://", function(url) {
+						if(url) svgCanvas.makeHyperlink(url);
+					});
+				}
+			}
+		
+			var moveSelected = function(dx,dy) {
+				if (selectedElement != null || multiselected) {
+					if(curConfig.gridSnapping) {
+						// Use grid snap value regardless of zoom level
+						var multi = svgCanvas.getZoom() * curConfig.snappingStep;
+						dx *= multi;
+						dy *= multi;
+					}
+					$('input').blur()
+					svgCanvas.moveSelectedElements(dx,dy);
+				}
+			};
+		
+			var linkControlPoints = function() {
+			//	var linked = document.getElementById('tool_node_link').checked;
+			//	path.linkControlPoints(linked);
+			}
+		
+			var clonePathNode = function() {
+				if (path.getNodePoint()) {
+					path.clonePathNode();
+				}
+			};
+			
+			var deletePathNode = function() {
+				if (path.getNodePoint()) {
+					path.deletePathNode();
+				}
+			};
+		
+			var addSubPath = function() {
+				var button = $('#tool_add_subpath');
+				var sp = !button.hasClass('push_button_pressed');
+				if (sp) {
+					button.addClass('push_button_pressed').removeClass('tool_button');
+				} else {
+					button.removeClass('push_button_pressed').addClass('tool_button');
+				}
+				
+				path.addSubPath(sp);
+				
+			};
+		
+			var opencloseSubPath = function() {
+				path.opencloseSubPath();
+			}	
+			
+			var selectNext = function() {
+				svgCanvas.cycleElement(1);
+			};
+			
+			var selectPrev = function() {
+				svgCanvas.cycleElement(0);
+			};
+			
+			var rotateSelected = function(cw,step) {
+				if (selectedElement == null || multiselected) return;
+				if(!cw) step *= -1;
+				var new_angle = $('#angle').val()*1 + step;
+				svgCanvas.setRotationAngle(new_angle);
+				updateContextPanel();
+			};
+			
+			var clickClear = function(){
+				var dims = curConfig.dimensions;
+				$.confirm(uiStrings.notification.QwantToClear, function(ok) {
+					if(!ok) return;
+					setSelectMode();
+					svgCanvas.clear();
+					svgCanvas.setResolution(dims[0], dims[1]);
+					updateCanvas(true);
+					zoomImage();
+					updateContextPanel();
+					prepPaints();
+					svgCanvas.runExtensions('onNewDocument');
+				});
+			};
+			
+			var clickBold = function(){
+				svgCanvas.setBold( !svgCanvas.getBold() );
+				updateContextPanel();
+			};
+			
+			var clickItalic = function(){
+				svgCanvas.setItalic( !svgCanvas.getItalic() );
+				updateContextPanel();
+			};
+			
+			var clickExport = function() {
+				// Open placeholder window (prevents popup)
+				if(!customHandlers.pngsave)  {
+					var str = uiStrings.notification.loadingImage;
+					exportWindow = window.open("data:text/html;charset=utf-8,<title>" + str + "<\/title><h1>" + str + "<\/h1>");
+				}
+
+				if(window.canvg) {
+					svgCanvas.rasterExport();
+				} else {
+					$.getScript('canvg/rgbcolor.js', function() {
+						$.getScript('canvg/canvg.js', function() {
+							svgCanvas.rasterExport();
+						});
+					});
+				}
+			}
+			
+			// by default, svgCanvas.open() is a no-op.
+			// it is up to an extension mechanism (opera widget, etc) 
+			// to call setCustomHandlers() which will make it do something
+			var clickOpen = function(){
+				svgCanvas.open();
+			};
+			var clickImport = function(){
+			};
+			
+		  var flash = function($menu){
+		    var menu_title = $menu.prev();
+		    menu_title.css({
+		      "background": "white",
+		      "color": "black"
+		    });
+		    setTimeout(function(){menu_title.removeAttr("style")}, 200);
+		  }
+		  
+			var clickUndo = function(){
+				if (undoMgr.getUndoStackSize() > 0) {
+				  flash($('#edit_menu'));
+					undoMgr.undo();
+				}
+			};
+		
+			var clickRedo = function(){
+				if (undoMgr.getRedoStackSize() > 0) {
+				  flash($('#edit_menu'));
+					undoMgr.redo();
+				}
+			};
+			
+			var clickGroup = function(){
+				// group
+				if (multiselected) {
+				  flash($('#object_menu'));
+					svgCanvas.groupSelectedElements();
+				}
+				// ungroup
+				else if(selectedElement){
+				  flash($('#object_menu'));
+					svgCanvas.ungroupSelectedElement();
+				}
+			};
+			
+			var clickClone = function(){
+			  flash($('#edit_menu'));
+				svgCanvas.cloneSelectedElements(20,20);
+			};
+			
+			var clickAlign = function() {
+				var letter = this.id.replace('tool_align','').charAt(0);
+				svgCanvas.alignSelectedElements(letter, $('#align_relative_to').val());
+			};
+			
+			var clickSwitch = function() {
+				var stroke_rect = document.querySelector('#tool_stroke rect');
+				$("#tool_stroke").toggleClass('active')
+				$("#tool_fill").toggleClass('active')
+				var fill_rect = document.querySelector('#tool_fill rect');
+				var fill_color = fill_rect.getAttribute("fill");
+				var stroke_color = stroke_rect.getAttribute("fill");
+				var stroke_opacity = parseFloat(stroke_rect.getAttribute("stroke-opacity"));
+				if (isNaN(stroke_opacity)) {stroke_opacity = 100;}
+				var fill_opacity = parseFloat(fill_rect.getAttribute("fill-opacity"));
+				if (isNaN(fill_opacity)) {fill_opacity = 100;}
+				var stroke = getPaint(stroke_color, stroke_opacity, "stroke");
+				var fill = getPaint(fill_color, fill_opacity, "fill");
+				Editor.paintBox.fill.setPaint(stroke, true);
+				Editor.paintBox.stroke.setPaint(fill, true);
+				
+			};
+			
+			var zoomImage = function(multiplier) {
+				var res = svgCanvas.getResolution();
+				multiplier = multiplier?res.zoom * multiplier:1;
+		// 		setResolution(res.w * multiplier, res.h * multiplier, true);
+				$('#zoom').val(multiplier * 100);
+				svgCanvas.setZoom(multiplier);
+				zoomDone();
+				updateCanvas(true);
+			};
+			
+			var zoomDone = function() {
+		// 		updateBgImage();
+				updateWireFrame();
+				//updateCanvas(); // necessary?
+			}
+		
+			var clickWireframe = function() {
+			  flash($('#view_menu'));
+				var wf = !$('#tool_wireframe').hasClass('push_button_pressed');
+				if (wf) 
+					$('#tool_wireframe').addClass('push_button_pressed');
+				else
+					$('#tool_wireframe').removeClass('push_button_pressed');
+				workarea.toggleClass('wireframe');
+				
+				if(supportsNonSS) return;
+				var wf_rules = $('#wireframe_rules');
+				if(!wf_rules.length) {
+					wf_rules = $('<style id="wireframe_rules"><\/style>').appendTo('head');
+				} else {
+					wf_rules.empty();
+				}
+				
+				updateWireFrame();
+			}
+			
+			var clickSnapGrid = function() {
+			  flash($('#view_menu'));
+				var sg = !$('#tool_snap').hasClass('push_button_pressed');
+				if (sg) 
+					$('#tool_snap').addClass('push_button_pressed');
+				else
+					$('#tool_snap').removeClass('push_button_pressed');		
+				curConfig.gridSnapping = sg;
+			}
+			
+			var minimizeModal = function() {
+        
+			  if (window.self != window.top) { //we're in an iframe
+		      top.exit_fullscreen();
+		    }
+			}
+			
+			var clickRulers = function() {
+			  flash($('#view_menu'));
+				var rulers = !$('#tool_rulers').hasClass('push_button_pressed');
+				if (rulers) {
+					$('#tool_rulers').addClass('push_button_pressed');
+					$('#show_rulers').attr("checked", true);
+					curConfig.showRulers = true;
+				}
+				else {
+					$('#tool_rulers').removeClass('push_button_pressed');
+					$('#show_rulers').attr("checked", false);
+					curConfig.showRulers = false;
+				}
+				$('#rulers').toggle(!!curConfig.showRulers)
+			}
+			
+			var updateWireFrame = function() {
+				// Test support
+				if(supportsNonSS) return;
+		
+				var rule = "#workarea.wireframe #svgcontent * { stroke-width: " + 1/svgCanvas.getZoom() + "px; }";
+				$('#wireframe_rules').text(workarea.hasClass('wireframe') ? rule : "");
+			}
+		
+			var showSourceEditor = function(e, forSaving){
+				if (editingsource) return;
+				flash($('#view_menu'));
+				editingsource = true;
+				
+				$('#save_output_btns').toggle(!!forSaving);
+				$('#tool_source_back').toggle(!forSaving);
+				
+				var str = orig_source = svgCanvas.getSvgString();
+				$('#svg_source_textarea').val(str);
+				$('#svg_source_editor').fadeIn();
+				$('#svg_source_textarea').focus().select();
+			};
+			
+			var clickSave = function(){
+			  flash($('#file_menu'));
+				// In the future, more options can be provided here
+				var saveOpts = {
+					'images': curPrefs.img_save,
+					'round_digits': 6
+				}
+				svgCanvas.save(saveOpts);
+			};
+			
+			var saveSourceEditor = function(){
+				if (!editingsource) return;
+		
+				var saveChanges = function() {
+					svgCanvas.clearSelection();
+					hideSourceEditor();
+					zoomImage();
+					prepPaints();
+				}
+		
+				if (!svgCanvas.setSvgString($('#svg_source_textarea').val())) {
+					$.confirm(uiStrings.notification.QerrorsRevertToSource, function(ok) {
+						if(!ok) return false;
+						saveChanges();
+					});
+				} else {
+					saveChanges();
+				}
+				setSelectMode();		
+			};
+			
+			function setBackground(color, url) {
+// 				if(color == curPrefs.bkgd_color && url == curPrefs.bkgd_url) return;
+				$.pref('bkgd_color', color);
+				$.pref('bkgd_url', url);
+				
+				// This should be done in svgcanvas.js for the borderRect fill
+				svgCanvas.setBackground(color, url);
+			}
+			
+			var setIcon = Editor.setIcon = function(elem, icon_id, forcedSize) {
+				var icon = (typeof icon_id === 'string') ? $.getSvgIcon(icon_id, true) : icon_id.clone();
+				if(!icon) {
+					console.log('NOTE: Icon image missing: ' + icon_id);
+					return;
+				}
+
+				$(elem).find("img").replaceWith(icon);
+			}
+		
+			var ua_prefix;
+			(ua_prefix = function() {
+				var regex = /^(Moz|Webkit|Khtml|O|ms|Icab)(?=[A-Z])/;
+				var someScript = document.getElementsByTagName('script')[0];
+				for(var prop in someScript.style) {
+					if(regex.test(prop)) {
+						// test is faster than match, so it's better to perform
+						// that on the lot and match only when necessary
+						return prop.match(regex)[0];
+					}
+				}
+			
+				// Nothing found so far?
+				if('WebkitOpacity' in someScript.style) return 'Webkit';
+				if('KhtmlOpacity' in someScript.style) return 'Khtml';
+				
+				return '';
+			}());
+			
+			var scaleElements = function(elems, scale) {
+				var prefix = '-' + ua_prefix.toLowerCase() + '-';
+				
+				var sides = ['top', 'left', 'bottom', 'right'];
+			
+				elems.each(function() {
+// 					console.log('go', scale);
+
+					// Handled in CSS
+					// this.style[ua_prefix + 'Transform'] = 'scale(' + scale + ')';
+				
+					var el = $(this);
+					
+					var w = el.outerWidth() * (scale - 1);
+					var h = el.outerHeight() * (scale - 1);
+					var margins = {};
+					
+					for(var i = 0; i < 4; i++) {
+						var s = sides[i];
+						
+						var cur = el.data('orig_margin-' + s);
+						if(cur == null) {
+							cur = parseInt(el.css('margin-' + s));
+							// Cache the original margin
+							el.data('orig_margin-' + s, cur);
+						}
+						var val = cur * scale;
+						if(s === 'right') {
+							val += w;
+						} else if(s === 'bottom') {
+							val += h;
+						}
+						
+						el.css('margin-' + s, val);
+// 						el.css('outline', '1px solid red');
+					}
+				});
+			}
+			
+			var setIconSize = Editor.setIconSize = function(size, force) {
+				if(size == curPrefs.size && !force) return;
+// 				return;
+// 				var elems = $('.tool_button, .push_button, .tool_button_current, .disabled, .icon_label, #url_notice, #tool_open');
+				
+				var sel_toscale = '#tools_top .toolset, #editor_panel > *, #history_panel > *,\
+				#main_button, #tools_left > *, #path_node_panel > *, #multiselected_panel > *,\
+				#g_panel > *, #tool_font_size > *, .tools_flyout';
+				
+				var elems = $(sel_toscale);
+				
+				var scale = 1;
+				
+				if(typeof size == 'number') {
+					scale = size;
+				} else {
+					var icon_sizes = { s:.75, m:1, l:1.25, xl:1.5 };
+					scale = icon_sizes[size];
+				}
+				
+				Editor.tool_scale = tool_scale = scale;
+				
+				setFlyoutPositions();				
+				var hidden_ps = elems.parents(':hidden');
+				hidden_ps.css('visibility', 'hidden').show();
+				scaleElements(elems, scale);
+				hidden_ps.css('visibility', 'visible').hide();
+				
+				var rule_elem = $('#tool_size_rules');
+				if(!rule_elem.length) {
+					rule_elem = $('<style id="tool_size_rules"><\/style>').appendTo('head');
+				} else {
+					rule_elem.empty();
+				}
+				
+				if(size != 'm') {
+					var style_str = '';
+					$.each(cssResizeRules, function(selector, rules) {
+						selector = '#svg_editor ' + selector.replace(/,/g,', #svg_editor');
+						style_str += selector + '{';
+						$.each(rules, function(prop, values) {
+							if(typeof values === 'number') {
+								var val = (values * scale) + 'px';
+							} else if(values[size] || values.all) {
+								var val = (values[size] || values.all);
+							}
+							style_str += (prop + ':' + val + ';');
+						});
+						style_str += '}';
+					});
+					//this.style[ua_prefix + 'Transform'] = 'scale(' + scale + ')';
+					var prefix = '-' + ua_prefix.toLowerCase() + '-';
+					style_str += (sel_toscale + '{' + prefix + 'transform: scale(' + scale + ');}'
+					+ ' #svg_editor div.toolset .toolset {' + prefix + 'transform: scale(1); margin: 1px !important;}' // Hack for markers
+					+ ' #svg_editor .ui-slider {' + prefix + 'transform: scale(' + (1/scale) + ');}' // Hack for sliders
+					);
+					rule_elem.text(style_str);
+				}
+				
+				setFlyoutPositions();
+			}
+		
+			var cancelOverlays = function() {
+				$('#dialog_box').hide();
+				if (!editingsource && !docprops && !preferences) {
+					if(cur_context) {
+						svgCanvas.leaveContext();
+					}
+					return;
+				};
+		
+				if (editingsource) {
+					if (orig_source !== $('#svg_source_textarea').val()) {
+						$.confirm(uiStrings.notification.QignoreSourceChanges, function(ok) {
+							if(ok) hideSourceEditor();
+						});
+					} else {
+						hideSourceEditor();
+					}
+				}
+				else if (docprops) {
+					hideDocProperties();
+				} else if (preferences) {
+					hidePreferences();
+				}
+				resetScrollPos();
+			};
+		
+			var hideSourceEditor = function(){
+				$('#svg_source_editor').hide();
+				editingsource = false;
+				$('#svg_source_textarea').blur();
+			};
+
+			var win_wh = {width:$(window).width(), height:$(window).height()};
+			
+			var resetScrollPos = $.noop, curScrollPos;
+			
+			/* Fix for Issue 781: Drawing area jumps to top-left corner on window resize (IE9)
+			if(svgedit.browser.isIE()) {
+				(function() {
+					resetScrollPos = function() {
+						if(workarea[0].scrollLeft === 0 
+						&& workarea[0].scrollTop === 0) {
+							workarea[0].scrollLeft = curScrollPos.left;
+							workarea[0].scrollTop = curScrollPos.top;
+						}
+					}
+				
+					curScrollPos = {
+						left: workarea[0].scrollLeft,
+						top: workarea[0].scrollTop
+					};
+					
+					$(window).resize(resetScrollPos);
+					methodDraw.ready(function() {
+						// TODO: Find better way to detect when to do this to minimize
+						// flickering effect
+						setTimeout(function() {
+							resetScrollPos();
+						}, 500);
+					});
+					
+					workarea.scroll(function() {
+						curScrollPos = {
+							left: workarea[0].scrollLeft,
+							top: workarea[0].scrollTop
+						};
+					});
+				}());
+			}*/
+			
+			$(window).resize(function(evt) {
+					updateCanvas();
+			});
+			
+			(function() {
+				workarea.scroll(function() {
+					// TODO:  jQuery's scrollLeft/Top() wouldn't require a null check
+					if ($('#ruler_x').length != 0) {
+						$('#ruler_x')[0].scrollLeft = workarea[0].scrollLeft;
+					}
+					if ($('#ruler_y').length != 0) {
+						$('#ruler_y')[0].scrollTop = workarea[0].scrollTop;	
+					}
+				});
+
+			}());
+			
+			$('#url_notice').click(function() {
+				$.alert(this.title);
+			});
+			
+			$('#change_image_url').click(promptImgURL);
+			
+			function promptImgURL() {
+				var curhref = svgCanvas.getHref(selectedElement);
+				curhref = curhref.indexOf("data:") === 0?"":curhref;
+				$.prompt(uiStrings.notification.enterNewImgURL, curhref, function(url) {
+					if(url) setImageURL(url);
+				});
+			}
+			
+			// TODO: go back to the color boxes having white background-color and then setting
+			//       background-image to none.png (otherwise partially transparent gradients look weird)	
+			var colorPicker = function(elem) {
+				var picker = elem[0].id == 'stroke_color' ? 'stroke' : 'fill';
+				var is_background = elem[0].id == "canvas_color"
+				if (is_background) picker = 'canvas'
+// 				var opacity = (picker == 'stroke' ? $('#stroke_opacity') : $('#fill_opacity'));
+				var paint = Editor.paintBox[picker].paint;
+				
+				var title = (picker == 'stroke' ? 'Pick a Stroke Paint and Opacity' : 'Pick a Fill Paint and Opacity');
+				var was_none = false;
+				var pos = is_background ? {'right': 175, 'top': 50} : {'left': 50, 'bottom': 50}
+				
+				$("#color_picker")
+					.draggable({cancel:'.jGraduate_tabs, .jGraduate_colPick, .jGraduate_gradPick, .jPicker', containment: 'window'})
+					.removeAttr("style")
+					.css(pos)
+					.jGraduate(
+					{ 
+						paint: paint,
+						window: { pickerTitle: title },
+						images: { clientPath: curConfig.jGraduatePath },
+						newstop: 'inverse'
+					},
+					function(p) {
+						paint = new $.jGraduate.Paint(p);
+						
+						Editor.paintBox[picker].setPaint(paint);
+						svgCanvas.setPaint(picker, paint);
+						
+						$('#color_picker').hide();
+					},
+					function(p) {
+						$('#color_picker').hide();
+					});
+			};
+		
+			var PaintBox = function(container, type) {
+			  var background = document.getElementById("canvas_background");
+			  var cur = {color: "fff", opacity: 1}
+			  if (type == "stroke") cur = curConfig['initStroke'];
+			  if (type == "fill") cur = curConfig['initFill'];
+			  if (type == "canvas" && background) {
+          		var rgb = background.getAttribute("fill").match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
+          		if (rgb) {
+            		var hex = 	("0" + parseInt(rgb[1],10).toString(16)).slice(-2) +
+                           		("0" + parseInt(rgb[2],10).toString(16)).slice(-2) +
+                           		("0" + parseInt(rgb[3],10).toString(16)).slice(-2);
+            		cur = {color: hex, opacity: 1}
+          		}
+			  }
+
+				// set up gradients to be used for the buttons
+				var svgdocbox = new DOMParser().parseFromString(
+					'<svg xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"\
+					fill="#' + cur.color + '" opacity="' + cur.opacity + '"/>\
+					<defs><linearGradient id="gradbox_"/></defs></svg>', 'text/xml');
+				var docElem = svgdocbox.documentElement;
+				
+				docElem = $(container)[0].appendChild(document.importNode(docElem, true));
+        if (type === 'canvas') docElem.setAttribute('width',60.5);
+        else docElem.setAttribute('width',"100%");
+				
+				this.rect = docElem.firstChild;
+				this.defs = docElem.getElementsByTagName('defs')[0];
+				this.grad = this.defs.firstChild;
+				this.paint = new $.jGraduate.Paint({solidColor: cur.color});
+				this.type = type;
+
+				this.setPaint = function(paint, apply, noUndo) {
+					this.paint = paint;
+					var fillAttr = "none";
+					var ptype = paint.type;
+					var opac = paint.alpha / 100;
+					switch ( ptype ) {
+						case 'solidColor':
+							fillAttr = (paint[ptype] == 'none' || paint[ptype] == 'one') ? 'none' : "#" + paint[ptype];
+							break;
+						case 'linearGradient':
+						case 'radialGradient':
+							this.defs.removeChild(this.grad);
+							this.grad = this.defs.appendChild(paint[ptype]);
+							var id = this.grad.id = 'gradbox_' + this.type;
+							fillAttr = "url(#" + id + ')';
+					}
+					this.rect.setAttribute('fill', fillAttr);
+					this.rect.setAttribute('opacity', opac);
+
+					if (this.type == "canvas") {
+					  //recache background in case it changed
+					  var background = document.getElementById("canvas_background");
+					  if (background) {
+					    res = svgCanvas.getResolution()
+					    background.setAttribute("x", -1);
+					    background.setAttribute("y", -1);
+					    background.setAttribute("width", res.w+2);
+					    background.setAttribute("height", res.h+2);
+					    if (fillAttr.indexOf("url") == -1) background.setAttribute('fill', fillAttr)
+					  }
+					  else createBackground(fillAttr)
+					}
+					
+					if(apply) {
+						svgCanvas.setColor(this.type, fillAttr, true);
+						svgCanvas.setPaintOpacity(this.type, opac, true);
+					}
+					
+				}
+				
+				this.update = function(apply) {
+					if(!selectedElement) return;
+					var type = this.type;
+					switch ( selectedElement.tagName ) {
+					case 'use':
+					case 'image':
+					case 'foreignObject':
+						// These elements don't have fill or stroke, so don't change 
+						// the current value
+						return;
+					case 'g':
+					case 'a':
+						var gPaint = null;
+					
+						var childs = selectedElement.getElementsByTagName('*');
+						for(var i = 0, len = childs.length; i < len; i++) {
+							var elem = childs[i];
+							var p = elem.getAttribute(type);
+							if(i === 0) {
+								gPaint = p;
+							} else if(gPaint !== p) {
+								gPaint = null;
+								break;
+							}
+						}
+						if(gPaint === null) {
+							// No common color, don't update anything
+							var paintColor = null;
+							return;
+						}
+						var paintColor = gPaint;
+						
+						var paintOpacity = 1;
+						break;
+					default:
+						var paintOpacity = parseFloat(selectedElement.getAttribute(type + "-opacity"));
+						if (isNaN(paintOpacity)) {
+							paintOpacity = 1.0;
+						}
+						
+						var defColor = type === "fill" ? "black" : "none";
+						var paintColor = selectedElement.getAttribute(type) || defColor;
+					}
+					if(apply) {
+						svgCanvas.setColor(type, paintColor, true);
+						svgCanvas.setPaintOpacity(type, paintOpacity, true);
+					}
+
+					paintOpacity *= 100;					
+					
+					var paint = getPaint(paintColor, paintOpacity, type);
+					// update the rect inside #fill_color/#stroke_color
+					this.setPaint(paint);
+				}
+				
+				this.prep = function() {
+					var ptype = this.paint.type;
+				
+					switch ( ptype ) {
+						case 'linearGradient':
+						case 'radialGradient':
+							var paint = new $.jGraduate.Paint({copy: this.paint});
+							svgCanvas.setPaint(type, paint);
+					}
+				}
+			};
+			
+			Editor.paintBox.fill = new PaintBox('#fill_color', 'fill');
+			Editor.paintBox.stroke = new PaintBox('#stroke_color', 'stroke');
+			Editor.paintBox.canvas = new PaintBox('#canvas_color', 'canvas');
+
+			$('#stroke_width').val(curConfig.initStroke.width);
+			$('#group_opacity').val(curConfig.initOpacity * 100);
+			
+			// Use this SVG elem to test vectorEffect support
+			var test_el = Editor.paintBox.fill.rect.cloneNode(false);
+			test_el.setAttribute('style','vector-effect:non-scaling-stroke');
+			var supportsNonSS = (test_el.style.vectorEffect === 'non-scaling-stroke');
+			test_el.removeAttribute('style');
+			var svgdocbox = Editor.paintBox.fill.rect.ownerDocument;
+			// Use this to test support for blur element. Seems to work to test support in Webkit
+			var blur_test = svgdocbox.createElementNS('http://www.w3.org/2000/svg', 'feGaussianBlur');
+			if(typeof blur_test.stdDeviationX === "undefined") {
+				$('#tool_blur').hide();
+			}
+			$(blur_test).remove();
+
+			
+			
+			// Test for embedImage support (use timeout to not interfere with page load)
+			setTimeout(function() {
+				svgCanvas.embedImage('images/placeholder.svg', function(datauri) {
+					if(!datauri) {
+						// Disable option
+						$('#image_save_opts [value=embed]').attr('disabled','disabled');
+						$('#image_save_opts input').val(['ref']);
+						curPrefs.img_save = 'ref';
+						$('#image_opt_embed').css('color','#666').attr('title',uiStrings.notification.featNotSupported);
+					}
+				});
+			},1000);
+				
+			$('#tool_fill').click(function(){
+			  if ($('#tool_fill').hasClass('active')) {
+				  colorPicker($('#fill_color'));
+				}
+				else {
+				  $('#tool_fill').addClass('active');
+				  $("#tool_stroke").removeClass('active');
+				}
+			});
+			
+			$('#tool_stroke').on("click", function(){
+			  if ($('#tool_stroke').hasClass('active')) {
+				  colorPicker($('#stroke_color'));
+				}
+				else {
+				  $('#tool_stroke').addClass('active');
+				  $("#tool_fill").removeClass('active');
+				}
+			});
+			
+			$('#tool_canvas').on("click touchstart", function(){
+				  colorPicker($('#canvas_color'));
+			});
+			
+			$('#tool_stroke').on("touchstart", function(){
+			    $('#tool_stroke').addClass('active');
+				  $("#tool_fill").removeClass('active');
+				  colorPicker($('#stroke_color'));
+			});
+
+      $('#tool_fill').on("touchstart", function(){
+			    $('#tool_fill').addClass('active');
+				  $("#tool_stroke").removeClass('active');
+				  colorPicker($('#fill_color'));
+			});
+			
+			$('#zoom_select').on("change", function() {
+				var val = this.options[this.selectedIndex].text
+        val = val.split("%")[0]
+				$("#zoom").val(val).trigger("change")
+			});
+		
+			$('.push_button').mousedown(function() { 
+				if (!$(this).hasClass('disabled')) {
+					$(this).addClass('push_button_pressed').removeClass('push_button');
+				}
+			}).mouseout(function() {
+				$(this).removeClass('push_button_pressed').addClass('push_button');
+			}).mouseup(function() {
+				$(this).removeClass('push_button_pressed').addClass('push_button');
+			});
+			
+		
+		// 	function changeResolution(x,y) {
+		// 		var zoom = svgCanvas.getResolution().zoom;
+		// 		setResolution(x * zoom, y * zoom);
+		// 	}
+			
+			var centerCanvas = function() {
+				// this centers the canvas vertically in the workarea (horizontal handled in CSS)
+				workarea.css('line-height', workarea.height() + 'px');
+			};
+			
+			$(window).bind('load resize', centerCanvas);
+		
+			function stepFontSize(elem, step) {
+				var orig_val = elem.value-0;
+				var sug_val = orig_val + step;
+				var increasing = sug_val >= orig_val;
+				if(step === 0) return orig_val;
+				
+				if(orig_val >= 24) {
+					if(increasing) {
+						return Math.round(orig_val * 1.1);
+					} else {
+						return Math.round(orig_val / 1.1);
+					}
+				} else if(orig_val <= 1) {
+					if(increasing) {
+						return orig_val * 2;			
+					} else {
+						return orig_val / 2;
+					}
+				} else {
+					return sug_val;
+				}
+			}
+			
+			function stepZoom(elem, step) {
+				var orig_val = elem.value-0;
+				if(orig_val === 0) return 100;
+				var sug_val = orig_val + step;
+				if(step === 0) return orig_val;
+				
+				if(orig_val >= 100) {
+					return sug_val;
+				} else {
+					if(sug_val >= orig_val) {
+						return orig_val * 2;
+					} else {
+						return orig_val / 2;
+					}
+				}
+			}
+				
+		var changeCanvasSize = function(ctl){
+		  var width = $("#canvas_width");
+			var height = $("#canvas_height");
+			var w = width.val();
+			var h = height.val()
+			
+			if(w != "fit" && !svgedit.units.isValidUnit('width', w)) {
+				$.alert(uiStrings.notification.invalidAttrValGiven);
+				width.parent().addClass('error');
+				return false;
+			}
+
+			width.parent().removeClass('error');
+
+			if(h != "fit" && !svgedit.units.isValidUnit('height', h)) {
+				$.alert(uiStrings.notification.invalidAttrValGiven);
+				height.parent().addClass('error');
+				return false;
+			} 
+			height.parent().removeClass('error');
+			if(!svgCanvas.setResolution(w, h)) {
+				$.alert(uiStrings.notification.noContentToFitTo);
+				var dims = svgCanvas.getResolution()
+				width.val(dims.w)
+				height.val(dims.h)
+				return false;
+			}
+			 updateCanvas();
+		}
+		
+		
+			$('#resolution').change(function(){
+				var w = $('#canvas_width')[0];
+				var h = $('#canvas_height')[0];
+				if(!this.selectedIndex) {
+				  $('#resolution_label').html("Custom");
+				  w.removeAttribute("readonly");
+				  w.focus();
+				  w.select();
+					if(w.value == 'fit') {
+						w.value = 100
+						h.value = 100
+					}
+				} else if(this.value == 'content') {
+					w.value = 'fit'
+					h.value = 'fit'
+					changeCanvasSize();
+					var res = svgCanvas.getResolution()
+					w.value = res.w
+					h.value = res.h
+					
+				} else {
+					var dims = this.value.split('x');
+					dims[0] = parseInt(dims[0]); 
+					dims[1] = parseInt(dims[1]);
+					var diff_w = dims[0] - w.value;
+					var diff_h = dims[1] - h.value;
+					//animate
+					var start = Date.now();
+					var duration = 1000;
+					var animateCanvasSize = function(timestamp) {
+					  var progress = timestamp - start
+					  var tick = progress / duration
+            tick = (Math.pow((tick-1), 3) +1);
+					  w.value = (dims[0] - diff_w + (tick*diff_w)).toFixed(0);
+					  h.value = (dims[1] - diff_h + (tick*diff_h)).toFixed(0);
+					  changeCanvasSize();
+					  if (tick >= 1) {
+					    var res = svgCanvas.getResolution()
+					    $('#canvas_width').val(res.w.toFixed())
+					    $('#canvas_height').val(res.h.toFixed())
+					    $('#resolution_label').html("<div class='pull'>" + res.w + "<span>Ã</span></br>" + res.h + "</div>");
+					  }
+					  else {
+					    requestAnimationFrame(animateCanvasSize)
+					  }
+					}
+					animateCanvasSize(Date.now())
+
+				}
+			});
+			
+			$('#zoom').change(function(){
+			  changeZoom(this)
+			})
+		
+			//Prevent browser from erroneously repopulating fields
+			$('input,select').attr("autocomplete","off");
+			
+			// Associate all button actions as well as non-button keyboard shortcuts
+			var Actions = function() {
+				// sel:'selector', fn:function, evt:'event', key:[key, preventDefault, NoDisableInInput]
+				var tool_buttons = [
+					{sel:'#tool_select', fn: clickSelect, evt: 'click', key: ['V', true]},
+					{sel:'#tool_fhpath', fn: clickFHPath, evt: 'click', key: ['Q', true]},
+					{sel:'#tool_line', fn: clickLine, evt: 'click', key: ['L', true]},
+					{sel:'#tool_rect', fn: clickRect, evt: 'click', key: ['R', true], icon: 'rect'},
+					{sel:'#tool_ellipse', fn: clickEllipse, evt: 'mouseup', key: ['C', true], icon: 'ellipse'},
+					//{sel:'#tool_circle', fn: clickCircle, evt: 'mouseup', icon: 'circle'},
+					//{sel:'#tool_fhellipse', fn: clickFHEllipse, evt: 'mouseup', parent: '#tools_ellipse', icon: 'fh_ellipse'},
+					{sel:'#tool_path', fn: clickPath, evt: 'click', key: ['P', true]},
+					{sel:'#tool_text', fn: clickText, evt: 'click', key: ['T', true]},
+					{sel:'#tool_image', fn: clickImage, evt: 'mouseup'},
+					{sel:'#tool_zoom', fn: clickZoom, evt: 'mouseup', key: ['Z', true]},
+					{sel:'#tool_clear', fn: clickClear, evt: 'mouseup', key: [modKey + 'N', true]},
+					{sel:'#tool_save', fn: function() { editingsource?saveSourceEditor():clickSave()}, evt: 'mouseup', key: [modKey + 'S', true]},
+					{sel:'#tool_export', fn: clickExport, evt: 'mouseup'},
+					{sel:'#tool_open', fn: clickOpen, evt: 'mouseup'},
+					{sel:'#tool_import', fn: clickImport, evt: 'mouseup'},
+					{sel:'#tool_source', fn: showSourceEditor, evt: 'click', key: [modKey + 'U', true]},
+					{sel:'#tool_wireframe', fn: clickWireframe, evt: 'click'},
+					{sel:'#tool_snap', fn: clickSnapGrid, evt: 'click'},
+					{sel:'#tool_rulers', fn: clickRulers, evt: 'click'},
+					{sel:'#tool_source_cancel,#svg_source_overlay,#tool_docprops_cancel,#tool_prefs_cancel', fn: cancelOverlays, evt: 'click', key: ['esc', false, false], hidekey: true},
+					{sel:'#tool_source_save', fn: saveSourceEditor, evt: 'click'},
+					{sel:'#tool_delete,#tool_delete_multi', fn: deleteSelected, evt: 'click', key: ['del/backspace', true]},
+					{sel:'#tool_reorient', fn: reorientPath, evt: 'click'},
+					{sel:'#tool_node_link', fn: linkControlPoints, evt: 'change'},
+					{sel:'#tool_node_clone', fn: clonePathNode, evt: 'click'},
+					{sel:'#tool_node_delete', fn: deletePathNode, evt: 'click'},
+					{sel:'#tool_openclose_path', fn: opencloseSubPath, evt: 'click'},
+					{sel:'#tool_add_subpath', fn: addSubPath, evt: 'click'},
+					{sel:'#tool_move_top', fn: moveToTopSelected, evt: 'click', key: modKey + 'shift+up'},
+					{sel:'#tool_move_bottom', fn: moveToBottomSelected, evt: 'click', key: modKey + 'shift+down'},
+					{sel:'#tool_move_up', fn: moveUpSelected, evt:'click', key: [modKey+'up', true]},
+					{sel:'#tool_move_down', fn: moveDownSelected, evt:'click', key: [modKey+'down', true]},
+					{sel:'#tool_topath', fn: convertToPath, evt: 'click'},
+					{sel:'#tool_make_link,#tool_make_link_multi', fn: makeHyperlink, evt: 'click'},
+					{sel:'#tool_clone,#tool_clone_multi', fn: clickClone, evt: 'click', key: [modKey + 'D', true]},
+					{sel:'#tool_group', fn: clickGroup, evt: 'click', key: [modKey + 'G', true]},
+					{sel:'#tool_ungroup', fn: clickGroup, evt: 'click', key: modKey + 'shift+G'},
+					{sel:'#tool_unlink_use', fn: clickGroup, evt: 'click'},
+					{sel:'[id^=tool_align]', fn: clickAlign, evt: 'click'},
+					{sel:'#tool_undo', fn: clickUndo, evt: 'click', key: modKey + 'z'},
+					{sel:'#tool_redo', fn: clickRedo, evt: 'click', key: ['y', true]},
+					{sel:'#tool_cut', fn: cutSelected, evt: 'click', key: [modKey+'x', true]},
+					{sel:'#tool_copy', fn: copySelected, evt: 'click', key: modKey+'c'},
+					{sel:'#tool_paste', fn: pasteSelected, evt: 'click', key: modKey+'v'},
+					{sel:'#tool_switch', fn: clickSwitch, evt: 'click', key: ['x', true]},
+					{sel:'#tool_bold', fn: clickBold, evt: 'mousedown', key: [modKey + 'B', true]},
+					{sel:'#tool_italic', fn: clickItalic, evt: 'mousedown',  key: [modKey + 'I', true]},
+					//{sel:'#sidepanel_handle', fn: toggleSidePanel, key: ['X']},
+					{sel:'#copy_save_done', fn: cancelOverlays, evt: 'click'},
+					
+					// Shortcuts not associated with buttons
+					
+					{key: 'ctrl+left', fn: function(){rotateSelected(0,1)}},
+					{key: 'ctrl+right', fn: function(){rotateSelected(1,1)}},
+					{key: 'ctrl+shift+left', fn: function(){rotateSelected(0,5)}},					
+					{key: 'ctrl+shift+right', fn: function(){rotateSelected(1,5)}},
+					{key: 'shift+O', fn: selectPrev},
+					{key: 'shift+P', fn: selectNext},
+					{key: [modKey+'+', true], fn: function(){zoomImage(2);}},
+					{key: [modKey+'-', true], fn: function(){zoomImage(.5);}},
+					{key: ['up', true], fn: function(){moveSelected(0,-1);}},
+					{key: ['down', true], fn: function(){moveSelected(0,1);}},
+					{key: ['left', true], fn: function(){moveSelected(-1,0);}},
+					{key: ['right', true], fn: function(){moveSelected(1,0);}},
+					{key: 'shift+up', fn: function(){moveSelected(0,-10)}},
+					{key: 'shift+down', fn: function(){moveSelected(0,10)}},
+					{key: 'shift+left', fn: function(){moveSelected(-10,0)}},
+					{key: 'shift+right', fn: function(){moveSelected(10,0)}},
+					{key: ['alt+up', true], fn: function(){svgCanvas.cloneSelectedElements(0,-1)}},
+					{key: ['alt+down', true], fn: function(){svgCanvas.cloneSelectedElements(0,1)}},
+					{key: ['alt+left', true], fn: function(){svgCanvas.cloneSelectedElements(-1,0)}},
+					{key: ['alt+right', true], fn: function(){svgCanvas.cloneSelectedElements(1,0)}},
+					{key: ['alt+shift+up', true], fn: function(){svgCanvas.cloneSelectedElements(0,-10)}},
+					{key: ['alt+shift+down', true], fn: function(){svgCanvas.cloneSelectedElements(0,10)}},
+					{key: ['alt+shift+left', true], fn: function(){svgCanvas.cloneSelectedElements(-10,0)}},
+					{key: ['alt+shift+right', true], fn: function(){svgCanvas.cloneSelectedElements(10,0)}},	
+					{key: modKey + 'A', fn: function(){svgCanvas.selectAllInCurrentLayer();}},
+					{key: 'I', fn: function(){setEyedropperMode()}},
+
+					// Standard shortcuts
+					{key: modKey + 'shift+z', fn: clickRedo},
+					{key: 'esc', fn: minimizeModal}
+				];
+				
+				// Tooltips not directly associated with a single function
+				var key_assocs = {
+					'4/Shift+4': '#tools_rect_show',
+					'5/Shift+5': '#tools_ellipse_show'
+				};
+			
+				return {
+					setAll: function() {
+						var flyouts = {};
+						
+						$.each(tool_buttons, function(i, opts)  {				
+							// Bind function to button
+							if(opts.sel) {
+								var btn = $(opts.sel);
+								if (btn.length == 0) return true; // Skip if markup does not exist
+								if(opts.evt) {
+								  if (svgedit.browser.isTouch() && opts.evt === "click") opts.evt = "mousedown" 
+									btn[opts.evt](opts.fn);
+								}
+		
+								// Add to parent flyout menu, if able to be displayed
+								if(opts.parent && $(opts.parent + '_show').length != 0) {
+									var f_h = $(opts.parent);
+									if(!f_h.length) {
+										f_h = makeFlyoutHolder(opts.parent.substr(1));
+									}
+									
+									f_h.append(btn);
+									
+									if(!$.isArray(flyouts[opts.parent])) {
+										flyouts[opts.parent] = [];
+									}
+									flyouts[opts.parent].push(opts);
+								}
+							}
+							
+							
+							// Bind function to shortcut key
+							if(opts.key) {
+								// Set shortcut based on options
+								var keyval, shortcut = '', disInInp = true, fn = opts.fn, pd = false;
+								if($.isArray(opts.key)) {
+									keyval = opts.key[0];
+									if(opts.key.length > 1) pd = opts.key[1];
+									if(opts.key.length > 2) disInInp = opts.key[2];
+								} else {
+									keyval = opts.key;
+								}
+								keyval += '';
+								if (svgedit.browser.isMac && keyval.indexOf("+") != -1) {
+								  var modifier_key =  keyval.split("+")[0];
+								  if (modifier_key == "ctrl") keyval.replace("ctrl", "cmd")
+								}
+								
+								$.each(keyval.split('/'), function(i, key) {
+									$(document).bind('keydown', key, function(e) {
+										fn();
+										if(pd) {
+											e.preventDefault();
+										}
+										// Prevent default on ALL keys?
+										return false;
+									});
+								});
+								
+								// Put shortcut in title
+								if(opts.sel && !opts.hidekey && btn.attr('title')) {
+									var new_title = btn.attr('title').split('[')[0] + ' (' + keyval + ')';
+									key_assocs[keyval] = opts.sel;
+									// Disregard for menu items
+									if(!btn.parents('#main_menu').length) {
+										btn.attr('title', new_title);
+									}
+								}
+							}
+						});
+						
+						// Setup flyouts
+						setupFlyouts(flyouts);
+						
+						$(window).bind('keydown', 'tab', function(e) {
+							if(ui_context === 'canvas') {
+								e.preventDefault();
+								selectNext();
+							}
+						}).bind('keydown', 'shift+tab', function(e) {
+							if(ui_context === 'canvas') {
+								e.preventDefault();
+								selectPrev();
+							}
+						});
+						
+						$('#tool_zoom').dblclick(dblclickZoom);
+					},
+					setTitles: function() {
+						$.each(key_assocs, function(keyval, sel)  {
+							var menu = ($(sel).parents('#main_menu').length);
+						
+							$(sel).each(function() {
+								if(menu) {
+									var t = $(this).text().split(' [')[0];
+								} else {
+									var t = this.title.split(' [')[0];							
+								}
+								var key_str = '';
+								// Shift+Up
+								$.each(keyval.split('/'), function(i, key) {
+									var mod_bits = key.split('+'), mod = '';
+									if(mod_bits.length > 1) {
+										mod = mod_bits[0] + '+';
+										key = mod_bits[1];
+									}
+									key_str += (i?'/':'') + mod + (uiStrings['key_'+key] || key);
+								});
+								if(menu) {
+									this.lastChild.textContent = t +' ['+key_str+']';
+								} else {
+									this.title = t +' ['+key_str+']';
+								}
+							});
+						});
+					},
+					getButtonData: function(sel) {
+						var b;
+						$.each(tool_buttons, function(i, btn) {
+							if(btn.sel === sel) b = btn;
+						});
+						return b;
+					}
+				};
+			}();
+			
+			Actions.setAll();
+			
+			// Select given tool
+			Editor.ready(function() {
+				var tool,
+					itool = curConfig.initTool,
+					container = $("#tools_left, #svg_editor .tools_flyout"),
+					pre_tool = container.find("#tool_" + itool),
+					reg_tool = container.find("#" + itool);
+				if(pre_tool.length) {
+					tool = pre_tool;
+				} else if(reg_tool.length){
+					tool = reg_tool;
+				} else {
+					tool = $("#tool_select");
+				}
+				tool.click().mouseup();
+				
+				if(curConfig.wireframe) {
+					$('#tool_wireframe').click();
+				}
+				
+				if(curConfig.showlayers) {
+					toggleSidePanel();
+				}
+				
+				$('#rulers').toggle(!!curConfig.showRulers);
+			});
+		
+			
+			$('#canvas_height').dragInput({ min: 10,   max: null,  step: 10,  callback: changeCanvasSize,    cursor: false, dragAdjust: .1         }); 
+			$('#canvas_width') .dragInput({ min: 10,   max: null,  step: 10,  callback: changeCanvasSize,    cursor: false, dragAdjust: .1         });                         
+			$('#rect_width')   .dragInput({ min: 1,    max: null,  step:  1,  callback: changeAttribute,     cursor: false                         }); 
+			$('#rect_height')  .dragInput({ min: 1,    max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#ellipse_cx')   .dragInput({ min: 1,    max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#ellipse_cy')   .dragInput({ min: 1,    max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#ellipse_rx')   .dragInput({ min: 1,    max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#ellipse_ry')   .dragInput({ min: 1,    max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$("#image_height") .dragInput({ min: 1,    max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#circle_cx')    .dragInput({ min: 1,    max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#circle_cy')    .dragInput({ min: 1,    max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#circle_r')     .dragInput({ min: 1,    max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$("#image_height") .dragInput({ min: 0,    max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#selected_x')   .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#selected_y')   .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$("#path_node_x")  .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$("#path_node_y")  .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$("#image_width")  .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#line_x1')      .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#line_x2')      .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#line_y1')      .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#line_y2')      .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#path_x')       .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#path_y')       .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#rect_x')       .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#rect_y')       .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#g_x')      .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#g_y')      .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#image_x')      .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#text_y')       .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#text_x')       .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#image_y')      .dragInput({ min: null, max: null,  step:  1,  callback: changeAttribute,     cursor: false                         });
+			$('#rect_rx')      .dragInput({ min: 0,    max: 100,   step:  1,  callback: changeAttribute,    cursor: true                          });
+	    $('#stroke_width') .dragInput({ min: 0,    max: 99,    step:  1,  callback: changeStrokeWidth,   cursor: true, smallStep: 0.1, start: 1.5          });
+			$('#angle')        .dragInput({ min: -180, max: 180,   step:  1,  callback: changeRotationAngle, cursor: false, dragAdjust: 0.5      });
+			$('#font_size')    .dragInput({ min: 1, max: 250, step: 1, callback: changeFontSize, cursor: true, stepfunc: stepFontSize, dragAdjust: .15 });
+			$('#group_opacity').dragInput({ min: 0,    max: 100,   step:  5,  callback: changeAttribute,       cursor: true,  start: 100             });
+			$('#blur')         .dragInput({ min: 0,    max: 10,    step: .1,  callback: changeBlur,          cursor: true,  start: 0               });
+				// Set default zoom 
+			$('#zoom').val(svgCanvas.getZoom() * 100);
+			
+			$("#workarea").contextMenu({
+					menu: 'cmenu_canvas',
+					inSpeed: 0
+				},
+				function(action, el, pos) {
+					switch ( action ) {
+						case 'delete':
+							deleteSelected();
+							break;
+						case 'cut':
+							cutSelected();
+							break;
+						case 'copy':
+							copySelected();
+							break;
+						case 'paste':
+							svgCanvas.pasteElements();
+							break;
+						case 'paste_in_place':
+							svgCanvas.pasteElements('in_place');
+							break;
+						case 'group':
+							svgCanvas.groupSelectedElements();
+							break;
+						case 'ungroup':         
+							svgCanvas.ungroupSelectedElement();  
+							break;
+						case 'move_front':
+							moveToTopSelected();
+							break;
+						case 'move_up':
+							moveUpDownSelected('Up');
+							break;
+						case 'move_down':
+							moveUpDownSelected('Down');
+							break;
+						case 'move_back':
+							moveToBottomSelected();
+							break;
+  						default:
+ 							if(svgedit.contextmenu && svgedit.contextmenu.hasCustomHandler(action)){
+ 								svgedit.contextmenu.getCustomHandler(action).call();
+  							}
+  							break;
+					}
+					
+			});
+			
+			$('.contextMenu li').mousedown(function(ev) {
+				ev.preventDefault();
+			})
+			
+			$('#cmenu_canvas li').disableContextMenu();
+			canv_menu.enableContextMenuItems('#delete,#cut,#copy');
+			
+			window.onbeforeunload = function() { 
+				// Suppress warning if page is empty 
+				if(undoMgr.getUndoStackSize() === 0) {
+					Editor.show_save_warning = false;
+				}
+
+				// show_save_warning is set to "false" when the page is saved.
+				if(!curConfig.no_save_warning && Editor.show_save_warning) {
+					// Browser already asks question about closing the page
+					return uiStrings.notification.unsavedChanges; 
+				}
+			};
+			
+			Editor.openPrep = function(func) {
+				$('#main_menu').hide();
+				if(undoMgr.getUndoStackSize() === 0) {
+					func(true);
+				} else {
+					$.confirm(uiStrings.notification.QwantToOpen, func);
+				}
+			}
+						
+			if (window.FileReader) {
+			  
+			  var import_image = function(e) {
+			    e.stopPropagation();
+          e.preventDefault();
+          $("#workarea").removeAttr("style");
+					$('#main_menu').hide();
+					var file = null;
+					if (e.type == "drop") file = e.dataTransfer.files[0]
+					else file = this.files[0];
+					if (file) {
+					  if(file.type.indexOf("image") != -1) {
+					    //detected an image
+					  
+					    //svg handing
+  				  	if(file.type.indexOf("svg") != -1) {
+  				  		var reader = new FileReader();
+  				  		reader.onloadend = function(e) {
+  				  			svgCanvas.importSvgString(e.target.result, true);
+  				  			svgCanvas.ungroupSelectedElement()
+  				  			svgCanvas.ungroupSelectedElement()
+  				  			svgCanvas.groupSelectedElements()
+  				  			svgCanvas.alignSelectedElements("m", "page")
+  				  			svgCanvas.alignSelectedElements("c", "page")
+  				  		};
+  				  		reader.readAsText(file);
+  				  	}
+					
+					    //image handling
+					    else {
+					      var reader = new FileReader();
+  				  		reader.onloadend = function(e) {
+                  // lets insert the new image until we know its dimensions
+  				  			insertNewImage = function(img_width, img_height){
+    			  				  var newImage = svgCanvas.addSvgElementFromJson({
+            					"element": "image",
+            					"attr": {
+            						"x": 0,
+            						"y": 0,
+            						"width": img_width,
+            						"height": img_height,
+            						"id": svgCanvas.getNextId(),
+            						"style": "pointer-events:inherit"
+            					}
+            				});
+            				svgCanvas.setHref(newImage, e.target.result);
+            				svgCanvas.selectOnly([newImage])
+            				svgCanvas.alignSelectedElements("m", "page")
+    				  			svgCanvas.alignSelectedElements("c", "page")
+            				updateContextPanel();
+        	  			}
+  				  		  // put a placeholder img so we know the default dimensions
+  				  		  var img_width = 100;
+  				  		  var img_height = 100;
+  				  		  var img = new Image()
+  				  		  img.src = e.target.result
+                  document.body.appendChild(img);
+                  img.onload = function() {
+                    img_width = img.offsetWidth
+                    img_height = img.offsetHeight
+                    insertNewImage(img_width, img_height);
+                    document.body.removeChild(img);
+                  }
+  				  		};
+  				  		reader.readAsDataURL(file)
+					    }
+					  }
+					}
+				}
+			  
+			  var workarea = $("#workarea")
+			  
+			  function onDragEnter(e) {
+          e.stopPropagation();
+          e.preventDefault();
+          workarea.css({
+            "-webkit-transform": "scale3d(1.1,1.1,1)",
+            "-moz-transform": "scale3d(1.1,1.1,1)",
+            "-o-transform": "scale(1.1)",
+            "-ms-transform": "scale3d(1.1,1.1,1)",
+            "transform": "scale3d(1.1,1.1,1)"
+          })
+
+        }
+
+        function onDragOver(e) {
+          e.stopPropagation();
+          e.preventDefault();
+        }
+
+        function onDragLeave(e) {
+          workarea.removeAttr("style")
+          e.stopPropagation();
+          e.preventDefault();
+        }
+
+  		workarea[0].addEventListener('dragenter', onDragEnter, false);
+        workarea[0].addEventListener('dragover', onDragOver, false);
+        workarea[0].addEventListener('dragleave', onDragLeave, false);
+        workarea[0].addEventListener('drop', import_image, false);
+			  
+				var open = $('<input type="file">').change(function() {
+					var f = this;
+					Editor.openPrep(function(ok) {
+						if(!ok) return;
+						svgCanvas.clear();
+						if(f.files.length==1) {
+							var reader = new FileReader();
+							reader.onloadend = function(e) {
+								loadSvgString(e.target.result);
+								updateCanvas();
+							};
+							reader.readAsText(f.files[0]);
+						}
+					});
+				});
+				$("#tool_open").show().prepend(open);
+				
+				var img_import = $('<input type="file">').change(import_image);
+				$("#tool_import").show().prepend(img_import);
+			}
+
+			
+			var updateCanvas = Editor.updateCanvas = function(center, new_ctr) {
+				var w = workarea.width(), h = workarea.height();
+				var w_orig = w, h_orig = h;
+				var zoom = svgCanvas.getZoom();
+				var w_area = workarea;
+				var cnvs = $("#svgcanvas");
+				
+				var old_ctr = {
+					x: w_area[0].scrollLeft + w_orig/2,
+					y: w_area[0].scrollTop + h_orig/2
+				};
+				
+				var multi = curConfig.canvas_expansion;
+				w = Math.max(w_orig, svgCanvas.contentW * zoom * multi);
+				h = Math.max(h_orig, svgCanvas.contentH * zoom * multi);
+				
+				if(w == w_orig && h == h_orig) {
+					workarea.css('overflow','hidden');
+				} else {
+					workarea.css('overflow','scroll');
+				}
+				
+				var old_can_y = cnvs.height()/2;
+				var old_can_x = cnvs.width()/2;
+				cnvs.width(w).height(h);
+				var new_can_y = h/2;
+				var new_can_x = w/2;
+				var offset = svgCanvas.updateCanvas(w, h);
+				
+				var ratio = new_can_x / old_can_x;
+		
+				var scroll_x = w/2 - w_orig/2;
+				var scroll_y = h/2 - h_orig/2;
+				
+				if(!new_ctr) {
+		
+					var old_dist_x = old_ctr.x - old_can_x;
+					var new_x = new_can_x + old_dist_x * ratio;
+		
+					var old_dist_y = old_ctr.y - old_can_y;
+					var new_y = new_can_y + old_dist_y * ratio;
+		
+					new_ctr = {
+						x: new_x,
+						y: new_y
+					};
+					
+				} else {
+					new_ctr.x += offset.x,
+					new_ctr.y += offset.y;
+				}
+				
+				//width.val(offset.x)
+				//height.val(offset.y)
+				
+				if(center) {
+					// Go to top-left for larger documents
+					if(svgCanvas.contentW > w_area.width()) {
+						// Top-left
+						workarea[0].scrollLeft = offset.x - 10;
+						workarea[0].scrollTop = offset.y - 10;
+					} else {
+						// Center
+						w_area[0].scrollLeft = scroll_x;
+						w_area[0].scrollTop = scroll_y;
+					}
+				} else {
+					w_area[0].scrollLeft = new_ctr.x - w_orig/2;
+					w_area[0].scrollTop = new_ctr.y - h_orig/2;
+				}
+				if(curConfig.showRulers) {
+					updateRulers(cnvs, zoom);
+					workarea.scroll();
+				}
+			}
+			
+			// Make [1,2,5] array
+			var r_intervals = [];
+			for(var i = .1; i < 1E5; i *= 10) {
+				r_intervals.push(1 * i);
+				r_intervals.push(2 * i);
+				r_intervals.push(5 * i);
+			}
+			
+			function updateRulers(scanvas, zoom) {
+			  var workarea = document.getElementById("workarea");
+			  var title_show = document.getElementById("title_show");
+			  var offset_x = 66;
+			  var offset_y = 48;
+				if(!zoom) zoom = svgCanvas.getZoom();
+				if(!scanvas) scanvas = $("#svgcanvas");
+				
+				var limit = 30000;
+				
+				var c_elem = svgCanvas.getContentElem();
+				
+				var units = svgedit.units.getTypeMap();
+				var unit = units[curConfig.baseUnit]; // 1 = 1px
+			
+				for(var d = 0; d < 2; d++) {
+					var is_x = (d === 0);
+					var dim = is_x ? 'x' : 'y';
+					var lentype = is_x?'width':'height';
+					var content_d = c_elem.getAttribute(dim)-0;
+					
+					var $hcanv_orig = $('#ruler_' + dim + ' canvas:first');
+					
+					// Bit of a hack to fully clear the canvas in Safari & IE9
+					$hcanv = $hcanv_orig.clone();
+					$hcanv_orig.replaceWith($hcanv);
+					
+					var hcanv = $hcanv[0];
+					
+					// Set the canvas size to the width of the container
+					var ruler_len = scanvas[lentype]()*2;
+					var total_len = ruler_len;
+					hcanv.parentNode.style[lentype] = total_len + 'px';
+					
+					var canv_count = 1;
+					var ctx_num = 0;
+					var ctx_arr;
+					var ctx = hcanv.getContext("2d");
+					
+					ctx.fillStyle = "rgb(200,0,0)"; 
+					ctx.fillRect(0,0,hcanv.width,hcanv.height); 
+					
+					// Remove any existing canvasses
+					$hcanv.siblings().remove();
+					
+					// Create multiple canvases when necessary (due to browser limits)
+					if(ruler_len >= limit) {
+						var num = parseInt(ruler_len / limit) + 1;
+						ctx_arr = Array(num);
+						ctx_arr[0] = ctx;
+						for(var i = 1; i < num; i++) {
+							hcanv[lentype] = limit;
+							var copy = hcanv.cloneNode(true);
+							hcanv.parentNode.appendChild(copy);
+							ctx_arr[i] = copy.getContext('2d');
+						}
+						
+						copy[lentype] = ruler_len % limit;
+						
+						// set copy width to last
+						ruler_len = limit;
+					}
+					
+					hcanv[lentype] = ruler_len;
+					
+					var u_multi = unit * zoom;
+					
+					// Calculate the main number interval
+					var raw_m = 50 / u_multi;
+					var multi = 1;
+					for(var i = 0; i < r_intervals.length; i++) {
+						var num = r_intervals[i];
+						multi = num;
+						if(raw_m <= num) {
+							break;
+						}
+					}
+					
+					var big_int = multi * u_multi;
+					ctx.font = "normal 9px 'Lucida Grande', sans-serif";
+					ctx.fillStyle = "#777";
+
+					var ruler_d = ((content_d / u_multi) % multi) * u_multi;
+					var label_pos = ruler_d - big_int;
+					for (; ruler_d < total_len; ruler_d += big_int) {
+						label_pos += big_int;
+						var real_d = ruler_d - content_d;
+
+						var cur_d = Math.round(ruler_d) + .5;
+						if(is_x) {
+							ctx.moveTo(cur_d, 15);
+							ctx.lineTo(cur_d, 0);
+						} else {
+							ctx.moveTo(15, cur_d);
+							ctx.lineTo(0, cur_d);
+						}
+	
+						var num = (label_pos - content_d) / u_multi;
+						var label;
+						if(multi >= 1) {
+							label = Math.round(num);
+						} else {
+							var decs = (multi+'').split('.')[1].length;
+							label = num.toFixed(decs)-0;
+						}
+						
+						// Do anything special for negative numbers?
+// 						var is_neg = label < 0;
+// 						real_d2 = Math.abs(real_d2);
+						
+						// Change 1000s to Ks
+						if(label !== 0 && label !== 1000 && label % 1000 === 0) {
+							label = (label / 1000) + 'K';
+						}
+						
+						if(is_x) {
+							ctx.fillText(label, ruler_d+2, 8);
+							ctx.fillStyle = "#777";
+						} else {
+							var str = (label+'').split('');
+							for(var i = 0; i < str.length; i++) {
+								ctx.fillText(str[i], 1, (ruler_d+9) + i*9);
+								ctx.fillStyle = "#777";
+							}
+						}
+						
+						var part = big_int / 10;
+						for(var i = 1; i < 10; i++) {
+							var sub_d = Math.round(ruler_d + part * i) + .5;
+							if(ctx_arr && sub_d > ruler_len) {
+								ctx_num++;
+								ctx.stroke();
+								if(ctx_num >= ctx_arr.length) {
+									i = 10;
+									ruler_d = total_len;
+									continue;
+								}
+								ctx = ctx_arr[ctx_num];
+								ruler_d -= limit;
+								sub_d = Math.round(ruler_d + part * i) + .5;
+							}
+							
+							var line_num = (i % 2)?12:10;
+							if(is_x) {
+								ctx.moveTo(sub_d, 15);
+								ctx.lineTo(sub_d, line_num);
+							} else {
+								ctx.moveTo(15, sub_d);
+								ctx.lineTo(line_num ,sub_d);
+							}
+						}
+					}
+					ctx.strokeStyle = "#666";
+					ctx.stroke();
+				}
+			}
+		
+// 			$(function() {
+				updateCanvas(true);
+// 			});
+			
+		//	var revnums = "svg-editor.js ($Rev: 2083 $) ";
+		//	revnums += svgCanvas.getVersion();
+		//	$('#copyright')[0].setAttribute("title", revnums);
+		
+			// Callback handler for embedapi.js
+ 			try{
+ 				var json_encode = function(obj){
+ 			  //simple partial JSON encoder implementation
+ 			  if(window.JSON && JSON.stringify) return JSON.stringify(obj);
+ 			  var enc = arguments.callee; //for purposes of recursion
+ 			  if(typeof obj == "boolean" || typeof obj == "number"){
+ 				  return obj+'' //should work...
+ 			  }else if(typeof obj == "string"){
+ 				//a large portion of this is stolen from Douglas Crockford's json2.js
+ 				return '"'+
+ 					  obj.replace(
+ 						/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g
+ 					  , function (a) {
+ 						return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+ 					  })
+ 					  +'"'; //note that this isn't quite as purtyful as the usualness
+ 			  }else if(obj.length){ //simple hackish test for arrayish-ness
+ 				for(var i = 0; i < obj.length; i++){
+ 				  obj[i] = enc(obj[i]); //encode every sub-thingy on top
+ 				}
+ 				return "["+obj.join(",")+"]";
+ 			  }else{
+ 				var pairs = []; //pairs will be stored here
+ 				for(var k in obj){ //loop through thingys
+ 				  pairs.push(enc(k)+":"+enc(obj[k])); //key: value
+ 				}
+ 				return "{"+pairs.join(",")+"}" //wrap in the braces
+ 			  }
+ 			}
+ 			  window.addEventListener("message", function(e){
+ 				var cbid = parseInt(e.data.substr(0, e.data.indexOf(";")));
+ 				try{
+					e.source.postMessage("SVGe"+cbid+";"+json_encode(eval(e.data)), "*");
+ 			  }catch(err){					
+					e.source.postMessage("SVGe"+cbid+";error:"+err.message, "*");
+ 			  }
+ 			}, false)
+ 			}catch(err){
+ 			  window.embed_error = err;
+			}
+			
+		
+		
+			// For Compatibility with older extensions
+			$(function() {
+				window.svgCanvas = svgCanvas;
+				svgCanvas.ready = methodDraw.ready;
+			});
+		
+		
+			Editor.setLang = function(lang, allStrings) {
+				$.pref('lang', lang);
+				$('#lang_select').val(lang);
+				if(allStrings) {
+				
+					var notif = allStrings.notification;
+					
+					svgCanvas.runExtensions("langChanged", lang);
+					
+					// Update flyout tooltips
+					setFlyoutTitles();
+					
+					// Copy title for certain tool elements
+					var elems = {
+						'#stroke_color': '#tool_stroke .icon_label, #tool_stroke .color_block',
+						'#fill_color': '#tool_fill label, #tool_fill .color_block',
+						'#linejoin_miter': '#cur_linejoin',
+						'#linecap_butt': '#cur_linecap'
+					}
+					
+					$.each(elems, function(source, dest) {
+						$(dest).attr('title', $(source)[0].title);
+					});
+					
+					// Copy alignment titles
+					$('#multiselected_panel div[id^=tool_align]').each(function() {
+						$('#tool_pos' + this.id.substr(10))[0].title = this.title;
+					});
+					
+				}
+			};
+		};
+		
+		var callbacks = [];
+		
+		function loadSvgString(str, callback) {
+			var success = svgCanvas.setSvgString(str) !== false;
+			callback = callback || $.noop;
+			if(success) {
+				callback(true);
+			} else {
+				$.alert(uiStrings.notification.errorLoadingSVG, function() {
+					callback(false);
+				});
+			}
+		}
+		
+		Editor.ready = function(cb) {
+			if(!is_ready) {
+				callbacks.push(cb);
+			} else {
+				cb();
+			}
+		};
+
+		Editor.runCallbacks = function() {
+			$.each(callbacks, function() {
+				this();
+			});
+			is_ready = true;
+		};
+		
+		Editor.loadFromString = function(str) {
+			Editor.ready(function() {
+				loadSvgString(str);
+			});
+		};
+		
+		Editor.loadFromURL = function(url, opts) {
+			if(!opts) opts = {};
+
+			var cache = opts.cache;
+			var cb = opts.callback;
+		
+			Editor.ready(function() {
+				$.ajax({
+					'url': url,
+					'dataType': 'text',
+					cache: !!cache,
+					success: function(str) {
+						loadSvgString(str, cb);
+					},
+					error: function(xhr, stat, err) {
+						if(xhr.status != 404 && xhr.responseText) {
+							loadSvgString(xhr.responseText, cb);
+						} else {
+							$.alert(uiStrings.notification.URLloadFail + ": \n"+err+'', cb);
+						}
+					}
+				});
+			});
+		};
+		
+		Editor.loadFromDataURI = function(str) {
+			Editor.ready(function() {
+				var pre = 'data:image/svg+xml;base64,';
+				var src = str.substring(pre.length);
+				loadSvgString(svgedit.utilities.decode64(src));
+			});
+		};
+		
+		Editor.addExtension = function() {
+			var args = arguments;
+			
+			// Note that we don't want this on Editor.ready since some extensions
+			// may want to run before then (like server_opensave).
+			$(function() {
+				if(svgCanvas) svgCanvas.addExtension.apply(this, args);
+			});
+		};
+
+		return Editor;
+	}(jQuery);
+	
+	// Run init once DOM is loaded
+	$(methodDraw.init);
+	
+
+})();
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/path.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/path.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/path.js	(revision 29468)
@@ -0,0 +1,979 @@
+/**
+ * Package: svgedit.path
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2011 Alexis Deveria
+ * Copyright(c) 2011 Jeff Schiller
+ */
+
+// Dependencies:
+// 1) jQuery
+// 2) browser.js
+// 3) math.js
+// 4) svgutils.js
+
+var svgedit = svgedit || {};
+
+(function() {
+
+if (!svgedit.path) {
+	svgedit.path = {};
+}
+
+var svgns = "http://www.w3.org/2000/svg";
+
+var uiStrings = {
+	"pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+	"pathCtrlPtTooltip": "Drag control point to adjust curve properties"
+};
+
+var segData = {
+	2: ['x','y'],
+	4: ['x','y'],
+	6: ['x','y','x1','y1','x2','y2'],
+	8: ['x','y','x1','y1'],
+	10: ['x','y','r1','r2','angle','largeArcFlag','sweepFlag'],
+	12: ['x'],
+	14: ['y'],
+	16: ['x','y','x2','y2'],
+	18: ['x','y']
+};
+
+var pathFuncs = [];
+
+var link_control_pts = false;
+
+// Stores references to paths via IDs.
+// TODO: Make this cross-document happy.
+var pathData = {};
+
+svgedit.path.setLinkControlPoints = function(lcp) {
+	link_control_pts = lcp;
+};
+
+svgedit.path.path = null;
+
+var editorContext_ = null;
+
+svgedit.path.init = function(editorContext) {
+	editorContext_ = editorContext;
+	
+	pathFuncs = [0,'ClosePath'];
+	var pathFuncsStrs = ['Moveto', 'Lineto', 'CurvetoCubic', 'CurvetoQuadratic', 'Arc',
+		'LinetoHorizontal', 'LinetoVertical','CurvetoCubicSmooth','CurvetoQuadraticSmooth'];
+	$.each(pathFuncsStrs, function(i,s) {
+		pathFuncs.push(s+'Abs');
+		pathFuncs.push(s+'Rel');
+	});
+};
+
+svgedit.path.insertItemBefore = function(elem, newseg, index) {
+	// Support insertItemBefore on paths for FF2
+	var list = elem.pathSegList;
+
+	if(svgedit.browser.supportsPathInsertItemBefore()) {
+		list.insertItemBefore(newseg, index);
+		return;
+	}
+	//TODO!!!
+	var len = list.numberOfItems;
+	var arr = [];
+	for(var i=0; i<len; i++) {
+		var cur_seg = list.getItem(i);
+		arr.push(cur_seg)				
+	}
+	list.clear();
+	for(var i=0; i<len; i++) {
+		if(i == index) { //index+1
+			list.appendItem(newseg);
+		}
+		list.appendItem(arr[i]);
+	}
+};
+
+// TODO: See if this should just live in replacePathSeg
+svgedit.path.ptObjToArr = function(type, seg_item) {
+	var arr = segData[type], len = arr.length;
+	var out = Array(len);
+	for(var i=0; i<len; i++) {
+		out[i] = seg_item[arr[i]];
+	}
+	return out;
+};
+
+svgedit.path.getGripPt = function(seg, alt_pt) {
+	var out = {
+		x: alt_pt? alt_pt.x : seg.item.x,
+		y: alt_pt? alt_pt.y : seg.item.y
+	}, path = seg.path;
+
+	if(path.matrix) {
+		var pt = svgedit.math.transformPoint(out.x, out.y, path.matrix);
+		out = pt;
+	}
+
+	out.x *= editorContext_.getCurrentZoom();
+	out.y *= editorContext_.getCurrentZoom();
+
+	return out;
+};
+
+svgedit.path.getPointFromGrip = function(pt, path) {
+	var out = {
+		x: pt.x,
+		y: pt.y
+	}
+
+	if(path.matrix) {
+		var pt = svgedit.math.transformPoint(out.x, out.y, path.imatrix);
+		out.x = pt.x;
+		out.y = pt.y;
+	}
+
+	out.x /= editorContext_.getCurrentZoom();
+	out.y /= editorContext_.getCurrentZoom();
+
+	return out;
+};
+
+svgedit.path.addPointGrip = function(index, x, y) {
+	// create the container of all the point grips
+	var pointGripContainer = svgedit.path.getGripContainer();
+
+	var pointGrip = svgedit.utilities.getElem("pathpointgrip_"+index);
+	// create it
+	if (!pointGrip) {
+		pointGrip = document.createElementNS(svgns, "rect");
+		svgedit.utilities.assignAttributes(pointGrip, {
+			'id': "pathpointgrip_" + index,
+			'display': "none",
+			'width': svgedit.browser.isTouch() ? 30 : 5,
+			'height': svgedit.browser.isTouch() ? 30 : 5,
+			'fill': "#fff",
+			'stroke': "#4F80FF",
+			'shape-rendering': "crispEdges",
+			'stroke-width': 1,
+			'cursor': 'move',
+			'style': 'pointer-events:all',
+			'xlink:title': uiStrings.pathNodeTooltip
+		});
+		pointGrip = pointGripContainer.appendChild(pointGrip);
+
+		var grip = $('#pathpointgrip_'+index);
+		grip.dblclick(function() {
+			if(svgedit.path.path) svgedit.path.path.setSegType();
+		});
+	}
+	if(x && y) {
+		// set up the point grip element and display it
+		svgedit.utilities.assignAttributes(pointGrip, {
+			'x': x-(svgedit.browser.isTouch() ? 15 : 2.5),
+			'y': y-(svgedit.browser.isTouch() ? 15 : 2.5),
+			'display': "inline"
+		});
+	}
+	return pointGrip;
+};
+
+svgedit.path.getGripContainer = function() {
+	var c = svgedit.utilities.getElem("pathpointgrip_container");
+	if (!c) {
+		var parent = svgedit.utilities.getElem("selectorParentGroup");
+		c = parent.appendChild(document.createElementNS(svgns, "g"));
+		c.id = "pathpointgrip_container";
+	}
+	return c;
+};
+
+svgedit.path.addCtrlGrip = function(id) {
+	var pointGrip = svgedit.utilities.getElem("ctrlpointgrip_"+id);
+	if(pointGrip) return pointGrip;
+		
+	pointGrip = document.createElementNS(svgns, "circle");
+	svgedit.utilities.assignAttributes(pointGrip, {
+		'id': "ctrlpointgrip_" + id,
+		'display': "none",
+		'r': svgedit.browser.isTouch() ? 15 : 3,
+		'fill': "#4F80FF",
+		'stroke': '#4F80FF',
+		'stroke-opacity': 0,
+		'stroke-width': '3',
+		'cursor': 'move',
+		'style': 'pointer-events:all',
+		'xlink:title': uiStrings.pathCtrlPtTooltip
+	});
+	svgedit.path.getGripContainer().appendChild(pointGrip);
+	return pointGrip;
+};
+
+svgedit.path.getCtrlLine = function(id) {
+	var ctrlLine = svgedit.utilities.getElem("ctrlLine_"+id);
+	if(ctrlLine) return ctrlLine;
+
+	ctrlLine = document.createElementNS(svgns, "line");
+	svgedit.utilities.assignAttributes(ctrlLine, {
+		'id': "ctrlLine_"+id,
+		'stroke': "#4F80FF",
+		'stroke-width': 1,
+		"style": "pointer-events:none"
+	});
+	svgedit.path.getGripContainer().appendChild(ctrlLine);
+	return ctrlLine;
+};
+
+svgedit.path.getPointGrip = function(seg, update) {
+	var index = seg.index;
+	var pointGrip = svgedit.path.addPointGrip(index);
+	if(update) {
+		var pt = svgedit.path.getGripPt(seg);
+		svgedit.utilities.assignAttributes(pointGrip, {
+			'x': pt.x-(svgedit.browser.isTouch() ? 15 : 2.5),
+			'y': pt.y-(svgedit.browser.isTouch() ? 15 : 2.5),
+			'display': "inline"
+		});
+	}
+
+	return pointGrip;
+};
+
+svgedit.path.getControlPoints = function(seg) {
+	var item = seg.item;
+	var index = seg.index;
+	if(!item || !("x1" in item) || !("x2" in item)) return null;
+	var cpt = {};			
+	var pointGripContainer = svgedit.path.getGripContainer();
+
+	// Note that this is intentionally not seg.prev.item
+	var prev = svgedit.path.path.segs[index-1].item;
+
+	var seg_items = [prev, item];
+
+	for(var i=1; i<3; i++) {
+		var id = index + 'c' + i;
+
+		var ctrlLine = cpt['c' + i + '_line'] = svgedit.path.getCtrlLine(id);
+
+		var pt = svgedit.path.getGripPt(seg, {x:item['x' + i], y:item['y' + i]});
+		var gpt = svgedit.path.getGripPt(seg, {x:seg_items[i-1].x, y:seg_items[i-1].y});
+
+		svgedit.utilities.assignAttributes(ctrlLine, {
+			'x1': pt.x,
+			'y1': pt.y,
+			'x2': gpt.x,
+			'y2': gpt.y,
+			'display': "inline"
+		});
+
+		cpt['c' + i + '_line'] = ctrlLine;
+
+		// create it
+		pointGrip = cpt['c' + i] = svgedit.path.addCtrlGrip(id);
+		svgedit.utilities.assignAttributes(pointGrip, {
+			'cx': pt.x,
+			'cy': pt.y,
+			'display': "inline"
+		});
+		cpt['c' + i] = pointGrip;
+	}
+	return cpt;
+};
+
+// This replaces the segment at the given index. Type is given as number.
+svgedit.path.replacePathSeg = function(type, index, pts, elem) {
+	var path = elem || svgedit.path.path.elem;
+	var func = 'createSVGPathSeg' + pathFuncs[type];
+	var seg = path[func].apply(path, pts);
+
+	if(svgedit.browser.supportsPathReplaceItem()) {
+		path.pathSegList.replaceItem(seg, index);
+	} else {
+		var segList = path.pathSegList;
+		var len = segList.numberOfItems;
+		var arr = [];
+		for(var i=0; i<len; i++) {
+			var cur_seg = segList.getItem(i);
+			arr.push(cur_seg)				
+		}
+		segList.clear();
+		for(var i=0; i<len; i++) {
+			if(i == index) {
+				segList.appendItem(seg);
+			} else {
+				segList.appendItem(arr[i]);
+			}
+		}
+	}
+};
+
+svgedit.path.getSegSelector = function(seg, update) {
+	var index = seg.index;
+	var segLine = svgedit.utilities.getElem("segline_" + index);
+	if(!segLine) {
+		var pointGripContainer = svgedit.path.getGripContainer();
+		// create segline
+		segLine = document.createElementNS(svgns, "path");
+		svgedit.utilities.assignAttributes(segLine, {
+			'id': "segline_" + index,
+			'display': 'none',
+			'fill': "none",
+			'stroke': "#0ff",
+			'stroke-opacity': 1,
+			"shape-rendering": "crispEdges",
+			'stroke-width': 2,
+			'style':'pointer-events:none',
+			'd': 'M0,0 0,0'
+		});
+		pointGripContainer.appendChild(segLine);
+	} 
+
+	if(update) {
+		var prev = seg.prev;
+		if(!prev) {
+			segLine.setAttribute("display", "none");
+			return segLine;
+		}
+
+		var pt = svgedit.path.getGripPt(prev);
+		// Set start point
+		svgedit.path.replacePathSeg(2, 0, [pt.x, pt.y], segLine);
+
+		var pts = svgedit.path.ptObjToArr(seg.type, seg.item, true);
+		for(var i=0; i < pts.length; i+=2) {
+			var pt = svgedit.path.getGripPt(seg, {x:pts[i], y:pts[i+1]});
+			pts[i] = pt.x;
+			pts[i+1] = pt.y;
+		}
+
+		svgedit.path.replacePathSeg(seg.type, 1, pts, segLine);
+	}
+	return segLine;
+};
+
+// Function: smoothControlPoints
+// Takes three points and creates a smoother line based on them
+// 
+// Parameters: 
+// ct1 - Object with x and y values (first control point)
+// ct2 - Object with x and y values (second control point)
+// pt - Object with x and y values (third point)
+//
+// Returns: 
+// Array of two "smoothed" point objects
+svgedit.path.smoothControlPoints = this.smoothControlPoints = function(ct1, ct2, pt) {
+	// each point must not be the origin
+	var x1 = ct1.x - pt.x,
+		y1 = ct1.y - pt.y,
+		x2 = ct2.x - pt.x,
+		y2 = ct2.y - pt.y;
+		
+	if ( (x1 != 0 || y1 != 0) && (x2 != 0 || y2 != 0) ) {
+		var anglea = Math.atan2(y1,x1),
+			angleb = Math.atan2(y2,x2),
+			r1 = Math.sqrt(x1*x1+y1*y1),
+			r2 = Math.sqrt(x2*x2+y2*y2),
+			nct1 = editorContext_.getSVGRoot().createSVGPoint(),
+			nct2 = editorContext_.getSVGRoot().createSVGPoint();				
+		if (anglea < 0) { anglea += 2*Math.PI; }
+		if (angleb < 0) { angleb += 2*Math.PI; }
+		
+		var angleBetween = Math.abs(anglea - angleb),
+			angleDiff = Math.abs(Math.PI - angleBetween)/2;
+		
+		var new_anglea, new_angleb;
+		if (anglea - angleb > 0) {
+			new_anglea = angleBetween < Math.PI ? (anglea + angleDiff) : (anglea - angleDiff);
+			new_angleb = angleBetween < Math.PI ? (angleb - angleDiff) : (angleb + angleDiff);
+		}
+		else {
+			new_anglea = angleBetween < Math.PI ? (anglea - angleDiff) : (anglea + angleDiff);
+			new_angleb = angleBetween < Math.PI ? (angleb + angleDiff) : (angleb - angleDiff);
+		}
+		
+		// rotate the points
+		nct1.x = r1 * Math.cos(new_anglea) + pt.x;
+		nct1.y = r1 * Math.sin(new_anglea) + pt.y;
+		nct2.x = r2 * Math.cos(new_angleb) + pt.x;
+		nct2.y = r2 * Math.sin(new_angleb) + pt.y;
+		
+		return [nct1, nct2];
+	}
+	return undefined;
+};
+
+svgedit.path.Segment = function(index, item) {
+	this.selected = false;
+	this.index = index;
+	this.item = item;
+	this.type = item.pathSegType;
+	
+	this.ctrlpts = [];
+	this.ptgrip = null;
+	this.segsel = null;
+};
+
+svgedit.path.Segment.prototype.showCtrlPts = function(y) {
+	for (var i in this.ctrlpts) {
+		this.ctrlpts[i].setAttribute("display", y ? "inline" : "none");
+	}
+};
+
+svgedit.path.Segment.prototype.selectCtrls = function(y) {
+	$('#ctrlpointgrip_' + this.index + 'c1, #ctrlpointgrip_' + this.index + 'c2').
+		attr('fill', '#4F80FF');
+};
+
+svgedit.path.Segment.prototype.show = function(y) {
+	if(this.ptgrip) {
+		this.ptgrip.setAttribute("display", y ? "inline" : "none");
+		this.segsel.setAttribute("display", y ? "inline" : "none");
+		// Show/hide all control points if available
+		this.showCtrlPts(y);
+	}
+};
+
+svgedit.path.Segment.prototype.select = function(y) {
+	if(this.ptgrip) {
+		this.ptgrip.setAttribute("stroke", y ? "#4F80FF" : "#4F80FF");
+		this.ptgrip.setAttribute("fill", y ? "#4F80FF" : "#fff");
+		this.segsel.setAttribute("display", y ? "inline" : "none");
+		if(this.ctrlpts) {
+			this.selectCtrls(y);
+		}
+		this.selected = y;
+	}
+};
+
+svgedit.path.Segment.prototype.addGrip = function() {
+	this.ptgrip = svgedit.path.getPointGrip(this, true);
+	this.ctrlpts = svgedit.path.getControlPoints(this, true);
+	this.segsel = svgedit.path.getSegSelector(this, true);
+};
+
+svgedit.path.Segment.prototype.update = function(full) {
+	if(this.ptgrip) {
+		var pt = svgedit.path.getGripPt(this);
+		var reposition = (svgedit.browser.isTouch() ? 15 : 2.5)
+		var properties = (this.ptgrip.nodeName == "rect") ? {'x': pt.x-reposition, 'y': pt.y-reposition} : {'cx': pt.x, 'cy': pt.y};
+		svgedit.utilities.assignAttributes(this.ptgrip, properties);
+		svgedit.path.getSegSelector(this, true);
+
+		if(this.ctrlpts) {
+			if(full) {
+				this.item = svgedit.path.path.elem.pathSegList.getItem(this.index);
+				this.type = this.item.pathSegType;
+			}
+			svgedit.path.getControlPoints(this);
+		} 
+		// this.segsel.setAttribute("display", y?"inline":"none");
+	}
+};
+
+svgedit.path.Segment.prototype.move = function(dx, dy) {
+	var item = this.item;
+	if(this.ctrlpts) {
+		var cur_pts = [item.x += dx, item.y += dy, 
+			item.x1, item.y1, item.x2 += dx, item.y2 += dy];
+	} else {
+		var cur_pts = [item.x += dx, item.y += dy];
+	}
+	svgedit.path.replacePathSeg(this.type, this.index, cur_pts);
+
+	if(this.next && this.next.ctrlpts) {
+		var next = this.next.item;
+		var next_pts = [next.x, next.y, 
+			next.x1 += dx, next.y1 += dy, next.x2, next.y2];
+		svgedit.path.replacePathSeg(this.next.type, this.next.index, next_pts);
+	}
+
+	if(this.mate) {
+		// The last point of a closed subpath has a "mate",
+		// which is the "M" segment of the subpath
+		var item = this.mate.item;
+		var pts = [item.x += dx, item.y += dy];
+		svgedit.path.replacePathSeg(this.mate.type, this.mate.index, pts);
+		// Has no grip, so does not need "updating"?
+	}
+
+	this.update(true);
+	if(this.next) this.next.update(true);
+};
+
+svgedit.path.Segment.prototype.setLinked = function(num) {
+	var seg, anum, pt;
+	if (num == 2) {
+		anum = 1;
+		seg = this.next;
+		if(!seg) return;
+		pt = this.item;
+	} else {
+		anum = 2;
+		seg = this.prev;
+		if(!seg) return;
+		pt = seg.item;
+	}
+
+	var item = seg.item;
+	item['x' + anum] = pt.x + pt.x - this.item['x' + num];
+	item['y' + anum] = pt.y + pt.y - this.item['y' + num];
+
+	var pts = [item.x, item.y,
+		item.x1, item.y1,
+		item.x2, item.y2];
+	svgedit.path.replacePathSeg(seg.type, seg.index, pts);
+	seg.update(true);
+};
+
+svgedit.path.Segment.prototype.moveCtrl = function(num, dx, dy) {
+	var item = this.item;
+
+	item['x' + num] += dx;
+	item['y' + num] += dy;
+
+	var pts = [item.x,item.y,
+		item.x1,item.y1, item.x2,item.y2];
+		
+	svgedit.path.replacePathSeg(this.type, this.index, pts);
+	this.update(true);
+};
+
+svgedit.path.Segment.prototype.setType = function(new_type, pts) {
+	svgedit.path.replacePathSeg(new_type, this.index, pts);
+	this.type = new_type;
+	this.item = svgedit.path.path.elem.pathSegList.getItem(this.index);
+	this.showCtrlPts(new_type === 6);
+	this.ctrlpts = svgedit.path.getControlPoints(this);
+	this.update(true);
+};
+
+svgedit.path.Path = function(elem) {
+	if(!elem || elem.tagName !== "path") {
+		throw "svgedit.path.Path constructed without a <path> element";
+	}
+
+	this.elem = elem;
+	this.segs = [];
+	this.selected_pts = [];
+	svgedit.path.path = this;
+
+	this.init();
+};
+
+// Reset path data
+svgedit.path.Path.prototype.init = function() {
+	// Hide all grips, etc
+	$(svgedit.path.getGripContainer()).find("*").attr("display", "none");
+	var segList = this.elem.pathSegList;
+	var len = segList.numberOfItems;
+	this.segs = [];
+	this.selected_pts = [];
+	this.first_seg = null;
+	
+	// Set up segs array
+	for(var i=0; i < len; i++) {
+		var item = segList.getItem(i);
+		var segment = new svgedit.path.Segment(i, item);
+		segment.path = this;
+		this.segs.push(segment);
+	}	
+	
+	var segs = this.segs;
+	var start_i = null;
+
+	for(var i=0; i < len; i++) {
+		var seg = segs[i]; 
+		var next_seg = (i+1) >= len ? null : segs[i+1];
+		var prev_seg = (i-1) < 0 ? null : segs[i-1];
+		
+		if(seg.type === 2) {
+			if(prev_seg && prev_seg.type !== 1) {
+				// New sub-path, last one is open,
+				// so add a grip to last sub-path's first point
+				var start_seg = segs[start_i];
+				start_seg.next = segs[start_i+1];
+				start_seg.next.prev = start_seg;
+				start_seg.addGrip();
+			}
+			// Remember that this is a starter seg
+			start_i = i;
+		} else if(next_seg && next_seg.type === 1) {
+			// This is the last real segment of a closed sub-path
+			// Next is first seg after "M"
+			seg.next = segs[start_i+1];
+			
+			// First seg after "M"'s prev is this
+			seg.next.prev = seg;
+			seg.mate = segs[start_i];
+			seg.addGrip();
+			if(this.first_seg == null) {
+				this.first_seg = seg;
+			}
+		} else if(!next_seg) {
+			if(seg.type !== 1) {
+				// Last seg, doesn't close so add a grip
+				// to last sub-path's first point
+				var start_seg = segs[start_i];
+				start_seg.next = segs[start_i+1];
+				start_seg.next.prev = start_seg;
+				start_seg.addGrip();
+				seg.addGrip();
+
+				if(!this.first_seg) {
+					// Open path, so set first as real first and add grip
+					this.first_seg = segs[start_i];
+				}
+			}
+		} else if(seg.type !== 1){
+			// Regular segment, so add grip and its "next"
+			seg.addGrip();
+			
+			// Don't set its "next" if it's an "M"
+			if(next_seg && next_seg.type !== 2) {
+				seg.next = next_seg;
+				seg.next.prev = seg;
+			}
+		}
+	}
+	return this;
+};
+
+svgedit.path.Path.prototype.eachSeg = function(fn) {
+	var len = this.segs.length
+	for(var i=0; i < len; i++) {
+		var ret = fn.call(this.segs[i], i);
+		if(ret === false) break;
+	}
+};
+
+svgedit.path.Path.prototype.addSeg = function(index) {
+	// Adds a new segment
+	var seg = this.segs[index];
+	if(!seg.prev) return;
+
+	var prev = seg.prev;
+	var newseg;
+	switch(seg.item.pathSegType) {
+	case 4:
+		var new_x = (seg.item.x + prev.item.x) / 2;
+		var new_y = (seg.item.y + prev.item.y) / 2;
+		newseg = this.elem.createSVGPathSegLinetoAbs(new_x, new_y);
+		break;
+	case 6: //make it a curved segment to preserve the shape (WRS)
+		// http://en.wikipedia.org/wiki/De_Casteljau%27s_algorithm#Geometric_interpretation
+		var p0_x = (prev.item.x + seg.item.x1)/2;
+		var p1_x = (seg.item.x1 + seg.item.x2)/2;
+		var p2_x = (seg.item.x2 + seg.item.x)/2;
+		var p01_x = (p0_x + p1_x)/2;
+		var p12_x = (p1_x + p2_x)/2;
+		var new_x = (p01_x + p12_x)/2;
+		var p0_y = (prev.item.y + seg.item.y1)/2;
+		var p1_y = (seg.item.y1 + seg.item.y2)/2;
+		var p2_y = (seg.item.y2 + seg.item.y)/2;
+		var p01_y = (p0_y + p1_y)/2;
+		var p12_y = (p1_y + p2_y)/2;
+		var new_y = (p01_y + p12_y)/2;
+		newseg = this.elem.createSVGPathSegCurvetoCubicAbs(new_x,new_y, p0_x,p0_y, p01_x,p01_y);
+		var pts = [seg.item.x,seg.item.y,p12_x,p12_y,p2_x,p2_y];
+		svgedit.path.replacePathSeg(seg.type,index,pts);
+		break;
+	}
+
+	svgedit.path.insertItemBefore(this.elem, newseg, index);
+};
+
+svgedit.path.Path.prototype.deleteSeg = function(index) {
+	var seg = this.segs[index];
+	var list = this.elem.pathSegList;
+	
+	seg.show(false);
+	var next = seg.next;
+	if(seg.mate) {
+		// Make the next point be the "M" point
+		var pt = [next.item.x, next.item.y];
+		svgedit.path.replacePathSeg(2, next.index, pt);
+		
+		// Reposition last node
+		svgedit.path.replacePathSeg(4, seg.index, pt);
+		
+		list.removeItem(seg.mate.index);
+	} else if(!seg.prev) {
+		// First node of open path, make next point the M
+		var item = seg.item;
+		var pt = [next.item.x, next.item.y];
+		svgedit.path.replacePathSeg(2, seg.next.index, pt);
+		list.removeItem(index);
+		
+	} else {
+		list.removeItem(index);
+	}
+};
+
+svgedit.path.Path.prototype.subpathIsClosed = function(index) {
+	var closed = false;
+	// Check if subpath is already open
+	svgedit.path.path.eachSeg(function(i) {
+		if(i <= index) return true;
+		if(this.type === 2) {
+			// Found M first, so open
+			return false;
+		} else if(this.type === 1) {
+			// Found Z first, so closed
+			closed = true;
+			return false;
+		}
+	});
+	
+	return closed;
+};
+
+svgedit.path.Path.prototype.removePtFromSelection = function(index) {
+	var pos = this.selected_pts.indexOf(index);
+	if(pos == -1) {
+		return;
+	} 
+	this.segs[index].select(false);
+	this.selected_pts.splice(pos, 1);
+};
+
+svgedit.path.Path.prototype.clearSelection = function() {
+	this.eachSeg(function(i) {
+		// 'this' is the segment here
+		this.select(false);
+	});
+	this.selected_pts = [];
+};
+
+svgedit.path.Path.prototype.storeD = function() {
+	this.last_d = this.elem.getAttribute('d');
+};
+
+svgedit.path.Path.prototype.show = function(y) {
+	// Shows this path's segment grips
+	this.eachSeg(function() {
+		// 'this' is the segment here
+		this.show(y);
+	});
+	if(y) {
+		this.selectPt(this.first_seg.index);
+	}
+	return this;
+};
+
+// Move selected points 
+svgedit.path.Path.prototype.movePts = function(d_x, d_y) {
+	var i = this.selected_pts.length;
+	while(i--) {
+		var seg = this.segs[this.selected_pts[i]];
+		seg.move(d_x, d_y);
+	}
+};
+
+svgedit.path.Path.prototype.moveCtrl = function(d_x, d_y) {
+	var seg = this.segs[this.selected_pts[0]];
+	seg.moveCtrl(this.dragctrl, d_x, d_y);
+	if(link_control_pts) {
+		seg.setLinked(this.dragctrl);
+	}
+};
+
+svgedit.path.Path.prototype.setSegType = function(new_type) {
+	this.storeD();
+	var i = this.selected_pts.length;
+	var text;
+	while(i--) {
+		var sel_pt = this.selected_pts[i];
+		
+		// Selected seg
+		var cur = this.segs[sel_pt];
+		var prev = cur.prev;
+		if(!prev) continue;
+		
+		if(!new_type) { // double-click, so just toggle
+			text = "Toggle Path Segment Type";
+
+			// Toggle segment to curve/straight line
+			var old_type = cur.type;
+			
+			new_type = (old_type == 6) ? 4 : 6;
+		} 
+		
+		new_type = new_type-0;
+		
+		var cur_x = cur.item.x;
+		var cur_y = cur.item.y;
+		var prev_x = prev.item.x;
+		var prev_y = prev.item.y;
+		var points;
+		switch ( new_type ) {
+		case 6:
+			if(cur.olditem) {
+				var old = cur.olditem;
+				points = [cur_x,cur_y, old.x1,old.y1, old.x2,old.y2];
+			} else {
+				var diff_x = cur_x - prev_x;
+				var diff_y = cur_y - prev_y;
+				// get control points from straight line segment
+				/*
+				var ct1_x = (prev_x + (diff_y/2));
+				var ct1_y = (prev_y - (diff_x/2));
+				var ct2_x = (cur_x + (diff_y/2));
+				var ct2_y = (cur_y - (diff_x/2));
+				*/
+				//create control points on the line to preserve the shape (WRS)
+				var ct1_x = (prev_x + (diff_x/3));
+				var ct1_y = (prev_y + (diff_y/3));
+				var ct2_x = (cur_x - (diff_x/3));
+				var ct2_y = (cur_y - (diff_y/3));
+				points = [cur_x,cur_y, ct1_x,ct1_y, ct2_x,ct2_y];
+			}
+			break;
+		case 4:
+			points = [cur_x,cur_y];
+			
+			// Store original prevve segment nums
+			cur.olditem = cur.item;
+			break;
+		}
+		
+		cur.setType(new_type, points);
+	}
+	svgedit.path.path.endChanges(text);
+};
+
+svgedit.path.Path.prototype.selectPt = function(pt, ctrl_num) {
+	this.clearSelection();
+	if(pt == null) {
+		this.eachSeg(function(i) {
+			// 'this' is the segment here.
+			if(this.prev) {
+				pt = i;
+			}
+		});
+	}
+	this.addPtsToSelection(pt);
+	if(ctrl_num) {
+		this.dragctrl = ctrl_num;
+		
+		if(link_control_pts) {
+			this.segs[pt].setLinked(ctrl_num);
+		}
+	}
+};
+
+// Update position of all points
+svgedit.path.Path.prototype.update = function() {
+	var elem = this.elem;
+	if(svgedit.utilities.getRotationAngle(elem)) {
+		this.matrix = svgedit.math.getMatrix(elem);
+		this.imatrix = this.matrix.inverse();
+	} else {
+		this.matrix = null;
+		this.imatrix = null;
+	}
+
+	this.eachSeg(function(i) {
+		this.item = elem.pathSegList.getItem(i);
+		this.update();
+	});
+
+	return this;
+};
+
+svgedit.path.getPath_ = function(elem) {
+	var p = pathData[elem.id];
+	if(!p) p = pathData[elem.id] = new svgedit.path.Path(elem);
+	return p;
+};
+
+svgedit.path.removePath_ = function(id) {
+	if(id in pathData) delete pathData[id];
+};
+
+var getRotVals = function(x, y, oldcx, oldcy, newcx, newcy, angle) {
+	dx = x - oldcx;
+	dy = y - oldcy;
+	
+	// rotate the point around the old center
+	r = Math.sqrt(dx*dx + dy*dy);
+	theta = Math.atan2(dy,dx) + angle;
+	dx = r * Math.cos(theta) + oldcx;
+	dy = r * Math.sin(theta) + oldcy;
+	
+	// dx,dy should now hold the actual coordinates of each
+	// point after being rotated
+
+	// now we want to rotate them around the new center in the reverse direction
+	dx -= newcx;
+	dy -= newcy;
+	
+	r = Math.sqrt(dx*dx + dy*dy);
+	theta = Math.atan2(dy,dx) - angle;
+	return {'x':(r * Math.cos(theta) + newcx)/1,
+		'y':(r * Math.sin(theta) + newcy)/1};
+};
+
+// If the path was rotated, we must now pay the piper:
+// Every path point must be rotated into the rotated coordinate system of 
+// its old center, then determine the new center, then rotate it back
+// This is because we want the path to remember its rotation
+
+// TODO: This is still using ye olde transform methods, can probably
+// be optimized or even taken care of by recalculateDimensions
+svgedit.path.recalcRotatedPath = function() {
+	var current_path = svgedit.path.path.elem;
+	var angle = svgedit.utilities.getRotationAngle(current_path, true);
+	if(!angle) return;
+//	selectedBBoxes[0] = svgedit.path.path.oldbbox;
+	var box = svgedit.utilities.getBBox(current_path),
+		oldbox = svgedit.path.path.oldbbox,//selectedBBoxes[0],
+		oldcx = oldbox.x + oldbox.width/2,
+		oldcy = oldbox.y + oldbox.height/2,
+		newcx = box.x + box.width/2,
+		newcy = box.y + box.height/2,
+		
+	// un-rotate the new center to the proper position
+		dx = newcx - oldcx,
+		dy = newcy - oldcy,
+		r = Math.sqrt(dx*dx + dy*dy),
+		theta = Math.atan2(dy,dx) + angle;
+		
+	newcx = r * Math.cos(theta) + oldcx;
+	newcy = r * Math.sin(theta) + oldcy;
+	
+	var list = current_path.pathSegList,
+		i = list.numberOfItems;
+	while (i) {
+		i -= 1;
+		var seg = list.getItem(i),
+			type = seg.pathSegType;
+		if(type == 1) continue;
+		
+		var rvals = getRotVals(seg.x,seg.y, oldcx, oldcy, newcx, newcy, angle),
+			points = [rvals.x, rvals.y];
+		if(seg.x1 != null && seg.x2 != null) {
+			c_vals1 = getRotVals(seg.x1, seg.y1, oldcx, oldcy, newcx, newcy, angle);
+			c_vals2 = getRotVals(seg.x2, seg.y2, oldcx, oldcy, newcx, newcy, angle);
+			points.splice(points.length, 0, c_vals1.x , c_vals1.y, c_vals2.x, c_vals2.y);
+		}
+		svgedit.path.replacePathSeg(type, i, points);
+	} // loop for each point
+
+	box = svgedit.utilities.getBBox(current_path);						
+//	selectedBBoxes[0].x = box.x; selectedBBoxes[0].y = box.y;
+//	selectedBBoxes[0].width = box.width; selectedBBoxes[0].height = box.height;
+	
+	// now we must set the new transform to be rotated around the new center
+	var R_nc = svgroot.createSVGTransform(),
+		tlist = svgedit.transformlist.getTransformList(current_path);
+	R_nc.setRotate((angle * 180.0 / Math.PI), newcx, newcy);
+	tlist.replaceItem(R_nc,0);
+};
+
+// ====================================
+// Public API starts here
+
+svgedit.path.clearData =  function() {
+	pathData = {};
+};
+
+})();
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/sanitize.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/sanitize.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/sanitize.js	(revision 29468)
@@ -0,0 +1,273 @@
+/**
+ * Package: svgedit.sanitize
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ * Copyright(c) 2010 Jeff Schiller
+ */
+
+// Dependencies:
+// 1) browser.js
+// 2) svgutils.js
+
+var svgedit = svgedit || {};
+
+(function() {
+
+if (!svgedit.sanitize) {
+	svgedit.sanitize = {};
+}
+
+// Namespace constants
+var svgns = "http://www.w3.org/2000/svg",
+	xlinkns = "http://www.w3.org/1999/xlink",
+	xmlns = "http://www.w3.org/XML/1998/namespace",
+	xmlnsns = "http://www.w3.org/2000/xmlns/", // see http://www.w3.org/TR/REC-xml-names/#xmlReserved
+	se_ns = "http://svg-edit.googlecode.com",
+	htmlns = "http://www.w3.org/1999/xhtml",
+	mathns = "http://www.w3.org/1998/Math/MathML";
+
+// map namespace URIs to prefixes
+var nsMap_ = {};
+nsMap_[xlinkns] = 'xlink';
+nsMap_[xmlns] = 'xml';
+nsMap_[xmlnsns] = 'xmlns';
+nsMap_[se_ns] = 'se';
+nsMap_[htmlns] = 'xhtml';
+nsMap_[mathns] = 'mathml';
+
+// map prefixes to namespace URIs
+var nsRevMap_ = {};
+$.each(nsMap_, function(key,value){
+	nsRevMap_[value] = key;
+});
+
+// this defines which elements and attributes that we support
+var svgWhiteList_ = {
+	// SVG Elements
+	"a": ["class", "clip-path", "clip-rule", "fill", "fill-opacity", "fill-rule", "filter", "id", "mask", "opacity", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "systemLanguage", "transform", "xlink:href", "xlink:title"],
+	"circle": ["class", "clip-path", "clip-rule", "cx", "cy", "fill", "fill-opacity", "fill-rule", "filter", "id", "mask", "opacity", "r", "requiredFeatures", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "systemLanguage", "transform"],
+	"clipPath": ["class", "clipPathUnits", "id"],
+	"defs": [],
+        "style" : ["type"],
+	"desc": [],
+	"ellipse": ["class", "clip-path", "clip-rule", "cx", "cy", "fill", "fill-opacity", "fill-rule", "filter", "id", "mask", "opacity", "requiredFeatures", "rx", "ry", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "systemLanguage", "transform"],
+	"feGaussianBlur": ["class", "color-interpolation-filters", "id", "requiredFeatures", "stdDeviation"],
+	"filter": ["class", "color-interpolation-filters", "filterRes", "filterUnits", "height", "id", "primitiveUnits", "requiredFeatures", "width", "x", "xlink:href", "y"],
+	"foreignObject": ["class", "font-size", "height", "id", "opacity", "requiredFeatures", "style", "transform", "width", "x", "y"],
+	"g": ["class", "clip-path", "clip-rule", "id", "display", "fill", "fill-opacity", "fill-rule", "filter", "mask", "opacity", "requiredFeatures", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "systemLanguage", "transform", "font-family", "font-size", "font-style", "font-weight", "text-anchor", "data-locked"],
+	"image": ["class", "clip-path", "clip-rule", "filter", "height", "id", "mask", "opacity", "requiredFeatures", "style", "systemLanguage", "transform", "width", "x", "xlink:href", "xlink:title", "y"],
+	"line": ["shape-rendering", "class", "clip-path", "clip-rule", "fill", "fill-opacity", "fill-rule", "filter", "id", "marker-end", "marker-mid", "marker-start", "mask", "opacity", "requiredFeatures", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "systemLanguage", "transform", "x1", "x2", "y1", "y2"],
+	"linearGradient": ["class", "id", "gradientTransform", "gradientUnits", "requiredFeatures", "spreadMethod", "systemLanguage", "x1", "x2", "xlink:href", "y1", "y2"],
+	"marker": ["id", "class", "markerHeight", "markerUnits", "markerWidth", "orient", "preserveAspectRatio", "refX", "refY", "systemLanguage", "viewBox"],
+	"mask": ["class", "height", "id", "maskContentUnits", "maskUnits", "width", "x", "y"],
+	"metadata": ["class", "id"],
+	"path": ["class", "clip-path", "clip-rule", "d", "fill", "fill-opacity", "fill-rule", "filter", "id", "marker-end", "marker-mid", "marker-start", "mask", "opacity", "requiredFeatures", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "systemLanguage", "transform"],
+	"pattern": ["class", "height", "id", "patternContentUnits", "patternTransform", "patternUnits", "requiredFeatures", "style", "systemLanguage", "viewBox", "width", "x", "xlink:href", "y"],
+	"polygon": ["class", "clip-path", "clip-rule", "id", "fill", "fill-opacity", "fill-rule", "filter", "id", "class", "marker-end", "marker-mid", "marker-start", "mask", "opacity", "points", "requiredFeatures", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "systemLanguage", "transform"],
+	"polyline": ["class", "clip-path", "clip-rule", "id", "fill", "fill-opacity", "fill-rule", "filter", "marker-end", "marker-mid", "marker-start", "mask", "opacity", "points", "requiredFeatures", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "systemLanguage", "transform"],
+	"radialGradient": ["class", "cx", "cy", "fx", "fy", "gradientTransform", "gradientUnits", "id", "r", "requiredFeatures", "spreadMethod", "systemLanguage", "xlink:href"],
+	"rect": ["shape-rendering", "class", "clip-path", "clip-rule", "fill", "fill-opacity", "fill-rule", "filter", "height", "id", "mask", "opacity", "requiredFeatures", "rx", "ry", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "systemLanguage", "transform", "width", "x", "y"],
+	"stop": ["class", "id", "offset", "requiredFeatures", "stop-color", "stop-opacity", "style", "systemLanguage"],
+	"svg": ["class", "clip-path", "clip-rule", "filter", "id", "height", "mask", "preserveAspectRatio", "requiredFeatures", "style", "systemLanguage", "viewBox", "width", "x", "xmlns", "xmlns:se", "xmlns:xlink", "y"],
+	"switch": ["class", "id", "requiredFeatures", "systemLanguage"],
+	"symbol": ["class", "fill", "fill-opacity", "fill-rule", "filter", "font-family", "font-size", "font-style", "font-weight", "id", "opacity", "preserveAspectRatio", "requiredFeatures", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "systemLanguage", "transform", "viewBox"],
+	"text": ["class", "clip-path", "clip-rule", "fill", "fill-opacity", "fill-rule", "filter", "font-family", "font-size", "font-style", "font-weight", "id", "mask", "opacity", "requiredFeatures", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "systemLanguage", "text-anchor", "transform", "x", "xml:space", "y"],
+	"textPath": ["class", "id", "method", "requiredFeatures", "spacing", "startOffset", "style", "systemLanguage", "transform", "xlink:href"],
+	"title": [],
+	"tspan": ["class", "clip-path", "clip-rule", "dx", "dy", "fill", "fill-opacity", "fill-rule", "filter", "font-family", "font-size", "font-style", "font-weight", "id", "mask", "opacity", "requiredFeatures", "rotate", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "systemLanguage", "text-anchor", "textLength", "transform", "x", "xml:space", "y"],
+	"use": ["class", "clip-path", "clip-rule", "fill", "fill-opacity", "fill-rule", "filter", "height", "id", "mask", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "transform", "width", "x", "xlink:href", "y"],
+	
+	// MathML Elements
+	"annotation": ["encoding"],
+	"annotation-xml": ["encoding"],
+	"maction": ["actiontype", "other", "selection"],
+	"math": ["class", "id", "display", "xmlns"],
+	"menclose": ["notation"],
+	"merror": [],
+	"mfrac": ["linethickness"],
+	"mi": ["mathvariant"],
+	"mmultiscripts": [],
+	"mn": [],
+	"mo": ["fence", "lspace", "maxsize", "minsize", "rspace", "stretchy"],
+	"mover": [],
+	"mpadded": ["lspace", "width", "height", "depth", "voffset"],
+	"mphantom": [],
+	"mprescripts": [],
+	"mroot": [],
+	"mrow": ["xlink:href", "xlink:type", "xmlns:xlink"],
+	"mspace": ["depth", "height", "width"],
+	"msqrt": [],
+	"mstyle": ["displaystyle", "mathbackground", "mathcolor", "mathvariant", "scriptlevel"],
+	"msub": [],
+	"msubsup": [],
+	"msup": [],
+	"mtable": ["align", "columnalign", "columnlines", "columnspacing", "displaystyle", "equalcolumns", "equalrows", "frame", "rowalign", "rowlines", "rowspacing", "width"],
+	"mtd": ["columnalign", "columnspan", "rowalign", "rowspan"],
+	"mtext": [],
+	"mtr": ["columnalign", "rowalign"],
+	"munder": [],
+	"munderover": [],
+	"none": [],
+	"semantics": []
+};
+
+// Produce a Namespace-aware version of svgWhitelist
+var svgWhiteListNS_ = {};
+$.each(svgWhiteList_, function(elt,atts){
+	var attNS = {};
+	$.each(atts, function(i, att){
+		if (att.indexOf(':') >= 0) {
+			var v = att.split(':');
+			attNS[v[1]] = nsRevMap_[v[0]];
+		} else {
+			attNS[att] = att == 'xmlns' ? xmlnsns : null;
+		}
+	});
+	svgWhiteListNS_[elt] = attNS;
+});
+
+// temporarily expose these
+svgedit.sanitize.getNSMap = function() { return nsMap_; }
+
+// Function: svgedit.sanitize.sanitizeSvg
+// Sanitizes the input node and its children
+// It only keeps what is allowed from our whitelist defined above
+//
+// Parameters:
+// node - The DOM element to be checked, will also check its children
+svgedit.sanitize.sanitizeSvg = function(node) {
+	// we only care about element nodes
+	// automatically return for all comment, etc nodes
+	// for text, we do a whitespace trim
+	if (node.nodeType == 3) {
+		node.nodeValue = node.nodeValue.replace(/^\s+|\s+$/g, "");
+		// Remove empty text nodes
+		if(!node.nodeValue.length) node.parentNode.removeChild(node);
+	}
+	if (node.nodeType != 1) return;
+	var doc = node.ownerDocument;
+	var parent = node.parentNode;
+	// can parent ever be null here?  I think the root node's parent is the document...
+	if (!doc || !parent) return;
+	
+	var allowedAttrs = svgWhiteList_[node.nodeName];
+	var allowedAttrsNS = svgWhiteListNS_[node.nodeName];
+
+	// if this element is allowed
+	if (allowedAttrs != undefined) {
+
+		var se_attrs = [];
+	
+		var i = node.attributes.length;
+		while (i--) {
+			// if the attribute is not in our whitelist, then remove it
+			// could use jQuery's inArray(), but I don't know if that's any better
+			var attr = node.attributes.item(i);
+			var attrName = attr.nodeName;
+			var attrLocalName = attr.localName;
+			var attrNsURI = attr.namespaceURI;
+			// Check that an attribute with the correct localName in the correct namespace is on 
+			// our whitelist or is a namespace declaration for one of our allowed namespaces
+			if (!(allowedAttrsNS.hasOwnProperty(attrLocalName) && attrNsURI == allowedAttrsNS[attrLocalName] && attrNsURI != xmlnsns) &&
+				!(attrNsURI == xmlnsns && nsMap_[attr.nodeValue]) ) 
+			{
+				// TODO(codedread): Programmatically add the se: attributes to the NS-aware whitelist.
+				// Bypassing the whitelist to allow se: prefixes. Is there
+				// a more appropriate way to do this?
+				if(attrName.indexOf('se:') == 0) {
+					se_attrs.push([attrName, attr.nodeValue]);
+				} 
+				node.removeAttributeNS(attrNsURI, attrLocalName);
+			}
+			
+			// Add spaces before negative signs where necessary
+			if(svgedit.browser.isGecko()) {
+				switch ( attrName ) {
+				case "transform":
+				case "gradientTransform":
+				case "patternTransform":
+					var val = attr.nodeValue.replace(/(\d)-/g, "$1 -");
+					node.setAttribute(attrName, val);
+				}
+			}
+			
+			// for the style attribute, rewrite it in terms of XML presentational attributes
+			if (attrName == "style") {
+				var props = attr.nodeValue.split(";"),
+					p = props.length;
+				while(p--) {
+					var nv = props[p].split(":");
+					// now check that this attribute is supported
+					if (allowedAttrs.indexOf(nv[0]) >= 0) {
+						node.setAttribute(nv[0],nv[1]);
+					}
+				}
+				node.removeAttribute('style');
+			}
+		}
+		
+		$.each(se_attrs, function(i, attr) {
+			node.setAttributeNS(se_ns, attr[0], attr[1]);
+		});
+		
+		// for some elements that have a xlink:href, ensure the URI refers to a local element
+		// (but not for links)
+		var href = svgedit.utilities.getHref(node);
+		if(href && 
+		   ["filter", "linearGradient", "pattern",
+		   "radialGradient", "textPath", "use"].indexOf(node.nodeName) >= 0)
+		{
+			// TODO: we simply check if the first character is a #, is this bullet-proof?
+			if (href[0] != "#") {
+				// remove the attribute (but keep the element)
+				svgedit.utilities.setHref(node, "");
+				node.removeAttributeNS(xlinkns, "href");
+			}
+		}
+		
+		// Safari crashes on a <use> without a xlink:href, so we just remove the node here
+		if (node.nodeName == "use" && !svgedit.utilities.getHref(node)) {
+			parent.removeChild(node);
+			return;
+		}
+		// if the element has attributes pointing to a non-local reference, 
+		// need to remove the attribute
+		$.each(["clip-path", "fill", "filter", "marker-end", "marker-mid", "marker-start", "mask", "stroke"],function(i,attr) {
+			var val = node.getAttribute(attr);
+			if (val) {
+				val = svgedit.utilities.getUrlFromAttr(val);
+				// simply check for first character being a '#'
+				if (val && val[0] !== "#") {
+					node.setAttribute(attr, "");
+					node.removeAttribute(attr);
+				}
+			}
+		});
+		
+		// recurse to children
+		i = node.childNodes.length;
+		while (i--) { svgedit.sanitize.sanitizeSvg(node.childNodes.item(i)); }
+	}
+	// else, remove this element
+	else {
+		// remove all children from this node and insert them before this node
+		// FIXME: in the case of animation elements this will hardly ever be correct
+		var children = [];
+		while (node.hasChildNodes()) {
+			children.push(parent.insertBefore(node.firstChild, node));
+		}
+
+		// remove this node from the document altogether
+		parent.removeChild(node);
+
+		// call sanitizeSvg on each of those children
+		var i = children.length;
+		while (i--) { svgedit.sanitize.sanitizeSvg(children[i]); }
+
+	}
+};
+
+})();
+
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/select.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/select.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/select.js	(revision 29468)
@@ -0,0 +1,608 @@
+/**
+ * Package: svedit.select
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ * Copyright(c) 2010 Jeff Schiller
+ */
+
+// Dependencies:
+// 1) jQuery
+// 2) browser.js
+// 3) math.js
+// 4) svgutils.js
+
+var svgedit = svgedit || {};
+
+(function() {
+
+if (!svgedit.select) {
+	svgedit.select = {};
+}
+
+var svgFactory_;
+var config_;
+var selectorManager_; // A Singleton
+
+// Class: svgedit.select.Selector
+// Private class for DOM element selection boxes
+// 
+// Parameters:
+// id - integer to internally indentify the selector
+// elem - DOM element associated with this selector
+svgedit.select.Selector = function(id, elem) {
+	// this is the selector's unique number
+	this.id = id;
+
+	// this holds a reference to the element for which this selector is being used
+	this.selectedElement = elem;
+
+	// this is a flag used internally to track whether the selector is being used or not
+	this.locked = true;
+
+	// this holds a reference to the <g> element that holds all visual elements of the selector
+	this.selectorGroup = svgFactory_.createSVGElement({
+		'element': 'g',
+		'attr': {'id': ('selectorGroup' + this.id)}
+	});
+
+	// this holds a reference to the path rect
+	this.selectorRect = this.selectorGroup.appendChild(
+		svgFactory_.createSVGElement({
+			'element': 'path',
+			'attr': {
+				'id': ('selectedBox' + this.id),
+				'fill': 'none',
+				'stroke': '#4F80FF',
+				'stroke-width': '1',
+				'shape-rendering': 'crispEdges',
+				'style': 'pointer-events:none'
+			}
+		})
+	);
+	
+	if (svgedit.browser.isTouch()) {
+	  this.selectorRect.setAttribute("stroke-opacity", 0.3);
+	}
+
+	// this holds a reference to the grip coordinates for this selector
+	this.gripCoords = {
+		'nw': null,
+		'n' : null,
+		'ne': null,
+		'e' : null,
+		'se': null,
+		's' : null,
+		'sw': null,
+		'w' : null
+	};
+
+	this.reset(this.selectedElement);
+};
+
+
+// Function: svgedit.select.Selector.reset 
+// Used to reset the id and element that the selector is attached to
+//
+// Parameters: 
+// e - DOM element associated with this selector
+svgedit.select.Selector.prototype.reset = function(e) {
+	this.locked = true;
+	this.selectedElement = e;
+	this.resize();
+	this.selectorGroup.setAttribute('display', 'inline');
+};
+
+// Function: svgedit.select.Selector.updateGripCursors
+// Updates cursors for corner grips on rotation so arrows point the right way
+//
+// Parameters:
+// angle - Float indicating current rotation angle in degrees
+svgedit.select.Selector.prototype.updateGripCursors = function(angle) {
+	var dir_arr = [];
+	var steps = Math.round(angle / 45);
+	if(steps < 0) steps += 8;
+	for (var dir in selectorManager_.selectorGrips) {
+		dir_arr.push(dir);
+	}
+	while(steps > 0) {
+		dir_arr.push(dir_arr.shift());
+		steps--;
+	}
+	var i = 0;
+	for (var dir in selectorManager_.selectorGrips) {
+		selectorManager_.selectorGrips[dir].setAttribute('style', ('cursor:' + dir_arr[i] + '-resize'));
+		i++;
+	};
+};
+
+// Function: svgedit.select.Selector.showGrips
+// Show the resize grips of this selector
+//
+// Parameters:
+// show - boolean indicating whether grips should be shown or not
+svgedit.select.Selector.prototype.showGrips = function(show) {
+	// TODO: use suspendRedraw() here
+	var bShow = show ? 'inline' : 'none';
+	selectorManager_.selectorGripsGroup.setAttribute('display', bShow);
+	var elem = this.selectedElement;
+	this.hasGrips = show;
+	if(elem && show) {
+		this.selectorGroup.appendChild(selectorManager_.selectorGripsGroup);
+		this.updateGripCursors(svgedit.utilities.getRotationAngle(elem));
+	}
+};
+
+// Function: svgedit.select.Selector.resize
+// Updates the selector to match the element's size
+svgedit.select.Selector.prototype.resize = function() {
+	var selectedBox = this.selectorRect,
+		mgr = selectorManager_,
+		selectedGrips = mgr.selectorGrips,
+		selected = this.selectedElement,
+		sw = selected.getAttribute('stroke-width'),
+		current_zoom = svgFactory_.currentZoom();
+	var offset = 1/current_zoom;
+	if (selected.getAttribute('stroke') !== 'none' && !isNaN(sw)) {
+		offset += (sw/2);
+	}
+
+	var tagName = selected.tagName;
+	if (tagName === 'text') {
+		offset += 2/current_zoom;
+	}
+
+	// loop and transform our bounding box until we reach our first rotation
+	var tlist = svgedit.transformlist.getTransformList(selected);
+	var m = svgedit.math.transformListToTransform(tlist).matrix;
+
+	// This should probably be handled somewhere else, but for now
+	// it keeps the selection box correctly positioned when zoomed
+	m.e *= current_zoom;
+	m.f *= current_zoom;
+
+	var bbox = svgedit.utilities.getBBox(selected);
+	if(tagName === 'g' && !$.data(selected, 'gsvg')) {
+		// The bbox for a group does not include stroke vals, so we
+		// get the bbox based on its children. 
+		var stroked_bbox = svgFactory_.getStrokedBBox(selected.childNodes);
+		if(stroked_bbox) {
+			bbox = stroked_bbox;
+		}
+	}
+
+	// apply the transforms
+	var l=bbox.x, t=bbox.y, w=bbox.width, h=bbox.height,
+		bbox = {x:l, y:t, width:w, height:h};
+
+	// we need to handle temporary transforms too
+	// if skewed, get its transformed box, then find its axis-aligned bbox
+	
+	//*
+	offset *= current_zoom;
+	
+	var nbox = svgedit.math.transformBox(l*current_zoom, t*current_zoom, w*current_zoom, h*current_zoom, m),
+		aabox = nbox.aabox,
+		nbax = aabox.x - offset,
+		nbay = aabox.y - offset,
+		nbaw = aabox.width + (offset * 2),
+		nbah = aabox.height + (offset * 2);
+		
+	// now if the shape is rotated, un-rotate it
+	var cx = nbax + nbaw/2,
+		cy = nbay + nbah/2;
+
+	var angle = svgedit.utilities.getRotationAngle(selected);
+	if (angle) {
+		var rot = svgFactory_.svgRoot().createSVGTransform();
+		rot.setRotate(-angle,cx,cy);
+		var rotm = rot.matrix;
+		nbox.tl = svgedit.math.transformPoint(nbox.tl.x,nbox.tl.y,rotm);
+		nbox.tr = svgedit.math.transformPoint(nbox.tr.x,nbox.tr.y,rotm);
+		nbox.bl = svgedit.math.transformPoint(nbox.bl.x,nbox.bl.y,rotm);
+		nbox.br = svgedit.math.transformPoint(nbox.br.x,nbox.br.y,rotm);
+
+		// calculate the axis-aligned bbox
+		var tl = nbox.tl;
+		var minx = tl.x,
+			miny = tl.y,
+			maxx = tl.x,
+			maxy = tl.y;
+
+		var Min = Math.min, Max = Math.max;
+
+		minx = Min(minx, Min(nbox.tr.x, Min(nbox.bl.x, nbox.br.x) ) ) - offset;
+		miny = Min(miny, Min(nbox.tr.y, Min(nbox.bl.y, nbox.br.y) ) ) - offset;
+		maxx = Max(maxx, Max(nbox.tr.x, Max(nbox.bl.x, nbox.br.x) ) ) + offset;
+		maxy = Max(maxy, Max(nbox.tr.y, Max(nbox.bl.y, nbox.br.y) ) ) + offset;
+
+		nbax = minx;
+		nbay = miny;
+		nbaw = (maxx-minx);
+		nbah = (maxy-miny);
+	}
+	var sr_handle = svgFactory_.svgRoot().suspendRedraw(100);
+
+	var dstr = 'M' + nbax + ',' + nbay
+				+ ' L' + (nbax+nbaw) + ',' + nbay
+				+ ' ' + (nbax+nbaw) + ',' + (nbay+nbah)
+				+ ' ' + nbax + ',' + (nbay+nbah) + 'z';
+	selectedBox.setAttribute('d', dstr);
+	
+	var xform = angle ? 'rotate(' + [angle,cx,cy].join(',') + ')' : '';
+	this.selectorGroup.setAttribute('transform', xform);
+
+		if(svgedit.browser.isTouch()) {
+		  nbax -= 15.75;
+  		nbay -= 15.75;
+		}
+		else {
+		  nbax -= 4;
+  		nbay -= 4;
+		}
+		this.gripCoords = {
+			'nw': [nbax, nbay].map(Math.round),
+			'ne': [nbax+nbaw, nbay].map(Math.round),
+			'sw': [nbax, nbay+nbah].map(Math.round),
+			'se': [nbax+nbaw, nbay+nbah].map(Math.round),
+			'n':  [nbax + (nbaw)/2, nbay].map(Math.round),
+			'w':	[nbax, nbay + (nbah)/2].map(Math.round),
+			'e':	[nbax + nbaw, nbay + (nbah)/2].map(Math.round),
+			's':	[nbax + (nbaw)/2, nbay + nbah].map(Math.round)
+		};
+
+		for(var dir in this.gripCoords) {
+			var coords = this.gripCoords[dir];
+			selectedGrips[dir].setAttribute('x', coords[0]);
+			selectedGrips[dir].setAttribute('y', coords[1]);
+		};
+		
+		this.rotateCoords = {
+			'nw': [nbax, nbay],
+			'ne': [nbax+nbaw+8, nbay],
+			'sw': [nbax, nbay+nbah+8],
+			'se': [nbax+nbaw+8, nbay+nbah+8]
+		};
+		
+    for(var dir in this.rotateCoords) {
+      var coords = this.rotateCoords[dir];
+		  mgr.rotateGrips[dir].setAttribute('cx', coords[0]); 
+		  mgr.rotateGrips[dir].setAttribute('cy', coords[1]);
+	  }
+
+	svgFactory_.svgRoot().unsuspendRedraw(sr_handle);
+};
+
+
+// Class: svgedit.select.SelectorManager
+svgedit.select.SelectorManager = function() {
+	// this will hold the <g> element that contains all selector rects/grips
+	this.selectorParentGroup = null;
+
+	// this is a special rect that is used for multi-select
+	this.rubberBandBox = null;
+
+	// this will hold objects of type svgedit.select.Selector (see above)
+	this.selectors = [];
+
+	// this holds a map of SVG elements to their Selector object
+	this.selectorMap = {};
+
+	// this holds a reference to the grip elements
+	this.selectorGrips = {
+		'nw': null,
+		'n' :  null,
+		'ne': null,
+		'e' :  null,
+		'se': null,
+		's' :  null,
+		'sw': null,
+		'w' :  null
+	};
+
+	this.selectorGripsGroup = null;
+	//this.rotateGripConnector = null;
+	this.rotateGrips = {
+	  'nw': null,
+		'ne': null,
+		'se': null,
+		'sw': null
+	};
+
+	this.initGroup();
+};
+
+// Function: svgedit.select.SelectorManager.initGroup
+// Resets the parent selector group element
+svgedit.select.SelectorManager.prototype.initGroup = function() {
+	// remove old selector parent group if it existed
+	if (this.selectorParentGroup && this.selectorParentGroup.parentNode) {
+		this.selectorParentGroup.parentNode.removeChild(this.selectorParentGroup);
+	}
+
+	// create parent selector group and add it to svgroot
+	this.selectorParentGroup = svgFactory_.createSVGElement({
+		'element': 'g',
+		'attr': {'id': 'selectorParentGroup'}
+	});
+	this.selectorGripsGroup = svgFactory_.createSVGElement({
+		'element': 'g',
+		'attr': {'display': 'none'}
+	});
+	this.selectorParentGroup.appendChild(this.selectorGripsGroup);
+	svgFactory_.svgRoot().appendChild(this.selectorParentGroup);
+
+	this.selectorMap = {};
+	this.selectors = [];
+	this.rubberBandBox = null;
+
+  for (var dir in this.rotateGrips) {
+	  var grip = svgFactory_.createSVGElement({
+  			'element': 'circle',
+  			'attr': {
+  				'id': 'selectorGrip_rotate_' + dir,
+  				'fill': '#000',
+  				'r': 8,
+  				'stroke': '#000',
+  				"fill-opacity": 0,
+  				"stroke-opacity": 0,
+  				'stroke-width': 0,
+  				'style': 'cursor:url(' + config_.imgPath + 'rotate.png) 12 12, auto;'
+  			}
+  	})
+  $.data(grip, 'dir', dir);
+	$.data(grip, 'type', 'rotate');
+	this.rotateGrips[dir] = this.selectorGripsGroup.appendChild(grip);
+	}
+
+	// add the corner grips
+	for (var dir in this.selectorGrips) {
+		var grip = svgFactory_.createSVGElement({
+			'element': 'rect',
+			'attr': {
+				'id': ('selectorGrip_resize_' + dir),
+				'width': 8,
+  			'height': 8,
+  			'fill': "#4F80FF",
+  			'stroke': "rgba(0,0,0,0)",
+  			'stroke-width': 1,
+				'style': ('cursor:' + dir + '-resize'),
+				'pointer-events': 'all'
+			}
+		});
+		if (svgedit.browser.isTouch()) {
+		  
+		  grip.setAttribute("width", 30.5)
+		  grip.setAttribute("height", 30.5)
+		  grip.setAttribute("fill-opacity", 0.3)
+		}
+		
+		$.data(grip, 'dir', dir);
+		$.data(grip, 'type', 'resize');
+		this.selectorGrips[dir] = this.selectorGripsGroup.appendChild(grip);
+	}
+
+	if($('#canvasBackground').length) return;
+
+	var dims = config_.dimensions;
+	var canvasbg = svgFactory_.createSVGElement({
+		'element': 'svg',
+		'attr': {
+			'id': 'canvasBackground',
+			'width': dims[0],
+			'height': dims[1],
+			'x': 0,
+			'y': 0,
+			'overflow': (svgedit.browser.isWebkit() ? 'none' : 'visible'), // Chrome 7 has a problem with this when zooming out
+			'style': 'pointer-events:none'
+		}
+	});
+
+  var defs = svgFactory_.createSVGElement({
+    'element': 'defs',
+    'attr': {
+      'id': 'placeholder_defs'
+    }
+  })
+  
+  var pattern = svgFactory_.createSVGElement({
+    'element': 'pattern',
+    'attr': {
+      'id': 'checkerPattern',
+      'patternUnits': 'userSpaceOnUse',
+      'x': 0,
+      'y': 0,
+      'width': 20,
+      'height': 20,
+      'viewBox': '0 0 10 10'
+    }
+  })
+  
+  var pattern_bg = svgFactory_.createSVGElement({
+    'element': 'rect',
+    'attr': {
+      'x': 0,
+      'y': 0,
+      'width': 10,
+      'height': 10,
+      'fill': "#fff"
+    }
+  })
+
+  var pattern_square1 = svgFactory_.createSVGElement({
+    'element': 'rect',
+    'attr': {
+      'x': 0,
+      'y': 0,
+      'width': 5,
+      'height': 5,
+      'fill': "#eee"
+    }
+  })
+  
+  var pattern_square2 = svgFactory_.createSVGElement({
+    'element': 'rect',
+    'attr': {
+      'x': 5,
+      'y': 5,
+      'width': 5,
+      'height': 5,
+      'fill': "#eee"
+    }
+  })
+
+	var rect = svgFactory_.createSVGElement({
+		'element': 'rect',
+		'attr': {
+			'width': '100%',
+			'height': '100%',
+			'x': 0,
+			'y': 0,
+			'stroke-width': 1,
+			'stroke': '#000',
+			'fill': 'url(#checkerPattern)',
+			'style': 'pointer-events:none'
+		}
+	});
+
+	// Both Firefox and WebKit are too slow with this filter region (especially at higher
+	// zoom levels) and Opera has at least one bug
+//	if (!svgedit.browser.isOpera()) rect.setAttribute('filter', 'url(#canvashadow)');
+	canvasbg.appendChild(defs);
+	defs.appendChild(pattern);
+	pattern.appendChild(pattern_bg);
+	pattern.appendChild(pattern_square1);
+	pattern.appendChild(pattern_square2);
+	canvasbg.appendChild(rect);
+
+	svgFactory_.svgRoot().insertBefore(canvasbg, svgFactory_.svgContent());
+};
+
+// Function: svgedit.select.SelectorManager.requestSelector
+// Returns the selector based on the given element
+//
+// Parameters:
+// elem - DOM element to get the selector for
+svgedit.select.SelectorManager.prototype.requestSelector = function(elem) {
+	if (elem == null) return null;
+	var N = this.selectors.length;
+	// If we've already acquired one for this element, return it.
+	if (typeof(this.selectorMap[elem.id]) == 'object') {
+		this.selectorMap[elem.id].locked = true;
+		return this.selectorMap[elem.id];
+	}
+	for (var i = 0; i < N; ++i) {
+		if (this.selectors[i] && !this.selectors[i].locked) {
+			this.selectors[i].locked = true;
+			this.selectors[i].reset(elem);
+			this.selectorMap[elem.id] = this.selectors[i];
+			return this.selectors[i];
+		}
+	}
+	// if we reached here, no available selectors were found, we create one
+	this.selectors[N] = new svgedit.select.Selector(N, elem);
+	this.selectorParentGroup.appendChild(this.selectors[N].selectorGroup);
+	this.selectorMap[elem.id] = this.selectors[N];
+	return this.selectors[N];
+};
+
+// Function: svgedit.select.SelectorManager.releaseSelector
+// Removes the selector of the given element (hides selection box) 
+//
+// Parameters:
+// elem - DOM element to remove the selector for
+svgedit.select.SelectorManager.prototype.releaseSelector = function(elem) {
+	if (elem == null) return;
+	var N = this.selectors.length,
+		sel = this.selectorMap[elem.id];
+	for (var i = 0; i < N; ++i) {
+		if (this.selectors[i] && this.selectors[i] == sel) {
+			if (sel.locked == false) {
+				// TODO(codedread): Ensure this exists in this module.
+				console.log('WARNING! selector was released but was already unlocked');
+			}
+			delete this.selectorMap[elem.id];
+			sel.locked = false;
+			sel.selectedElement = null;
+			sel.showGrips(false);
+
+			// remove from DOM and store reference in JS but only if it exists in the DOM
+			try {
+				sel.selectorGroup.setAttribute('display', 'none');
+			} catch(e) { }
+
+			break;
+		}
+	}
+};
+
+// Function: svgedit.select.SelectorManager.getRubberBandBox
+// Returns the rubberBandBox DOM element. This is the rectangle drawn by the user for selecting/zooming
+svgedit.select.SelectorManager.prototype.getRubberBandBox = function() {
+	if (!this.rubberBandBox) {
+		this.rubberBandBox = this.selectorParentGroup.appendChild(
+			svgFactory_.createSVGElement({
+				'element': 'rect',
+				'attr': {
+					'id': 'selectorRubberBand',
+					'fill': 'none',
+					'stroke': '#666',
+					'stroke-width': 1,
+					'stroke-dasharray': '3,2', 
+					'display': 'none',
+					'style': 'pointer-events:none'
+				}
+			})
+		);
+	}
+	return this.rubberBandBox;
+};
+
+
+/**
+ * Interface: svgedit.select.SVGFactory
+ * An object that creates SVG elements for the canvas.
+ *
+ * interface svgedit.select.SVGFactory {
+ *   SVGElement createSVGElement(jsonMap);
+ *   SVGSVGElement svgRoot();
+ *   SVGSVGElement svgContent();
+ *
+ *   Number currentZoom();
+ *   Object getStrokedBBox(Element[]); // TODO(codedread): Remove when getStrokedBBox() has been put into svgutils.js
+ * }
+ */
+
+/**
+ * Function: svgedit.select.init()
+ * Initializes this module.
+ *
+ * Parameters:
+ * config - an object containing configurable parameters (imgPath)
+ * svgFactory - an object implementing the SVGFactory interface (see above).
+ */
+svgedit.select.init = function(config, svgFactory) {
+	config_ = config;
+	svgFactory_ = svgFactory;
+	selectorManager_ = new svgedit.select.SelectorManager();
+	//for hovering elements
+	svgFactory_.createSVGElement({
+		'element': 'g',
+		'attr': {
+			'id': 'hover_group'
+		}
+	})
+};
+
+/**
+ * Function: svgedit.select.getSelectorManager
+ *
+ * Returns:
+ * The SelectorManager instance.
+ */
+svgedit.select.getSelectorManager = function() {
+	return selectorManager_;
+};
+
+})();
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/svgcanvas.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/svgcanvas.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/svgcanvas.js	(revision 29468)
@@ -0,0 +1,9047 @@
+/*
+ * svgcanvas.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ * Copyright(c) 2010 Pavol Rusnak
+ * Copyright(c) 2010 Jeff Schiller
+ *
+ */
+
+// Dependencies:
+// 1) jQuery
+// 2) browser.js
+// 3) svgtransformlist.js
+// 4) math.js
+// 5) units.js
+// 6) svgutils.js
+// 7) sanitize.js
+// 8) history.js
+// 9) select.js
+// 10) draw.js
+// 11) path.js
+
+/*jslint browser: true*/
+
+if(!window.console) {
+	window.console = {};
+	window.console.log = function(str) {};
+	window.console.dir = function(str) {};
+}
+
+if(window.opera) {
+	window.console.log = function(str) { opera.postError(str); };
+	window.console.dir = function(str) {};
+}
+
+(function() {
+
+	// This fixes $(...).attr() to work as expected with SVG elements.
+	// Does not currently use *AttributeNS() since we rarely need that.
+	
+	// See http://api.jquery.com/attr/ for basic documentation of .attr()
+	
+	// Additional functionality: 
+	// - When getting attributes, a string that's a number is return as type number.
+	// - If an array is supplied as first parameter, multiple values are returned
+	// as an object with values for each given attributes
+
+	var proxied = jQuery.fn.attr, svgns = "http://www.w3.org/2000/svg";
+	jQuery.fn.attr = function(key, value) {
+		var len = this.length;
+		if(!len) return proxied.apply(this, arguments);
+		for(var i=0; i<len; i++) {
+			var elem = this[i];
+			// set/get SVG attribute
+			if(elem.namespaceURI === svgns) {
+				// Setting attribute
+				if(value !== undefined) {
+					elem.setAttribute(key, value);
+				} else if($.isArray(key)) {
+					// Getting attributes from array
+					var j = key.length, obj = {};
+
+					while(j--) {
+						var aname = key[j];
+						var attr = elem.getAttribute(aname);
+						// This returns a number when appropriate
+						if(attr || attr === "0") {
+							attr = isNaN(attr)?attr:attr-0;
+						}
+						obj[aname] = attr;
+					}
+					return obj;
+				
+				} else if(typeof key === "object") {
+					// Setting attributes form object
+					for(var v in key) {
+						elem.setAttribute(v, key[v]);
+					}
+				// Getting attribute
+				} else {
+					var attr = elem.getAttribute(key);
+					if(attr || attr === "0") {
+						attr = isNaN(attr)?attr:attr-0;
+					}
+
+					return attr;
+				}
+			} else {
+				return proxied.apply(this, arguments);
+			}
+		}
+		return this;
+	};
+	
+}());
+
+// Class: SvgCanvas
+// The main SvgCanvas class that manages all SVG-related functions
+//
+// Parameters:
+// container - The container HTML element that should hold the SVG root element
+// config - An object that contains configuration data
+$.SvgCanvas = function(container, config)
+{
+// Namespace constants
+var svgns = "http://www.w3.org/2000/svg",
+	xlinkns = "http://www.w3.org/1999/xlink",
+	xmlns = "http://www.w3.org/XML/1998/namespace",
+	xmlnsns = "http://www.w3.org/2000/xmlns/", // see http://www.w3.org/TR/REC-xml-names/#xmlReserved
+	se_ns = "http://svg-edit.googlecode.com",
+	htmlns = "http://www.w3.org/1999/xhtml",
+	mathns = "http://www.w3.org/1998/Math/MathML";
+
+// Default configuration options
+var curConfig = {
+	show_outside_canvas: true,
+	selectNew: true,
+	dimensions: [640, 480]
+};
+
+// Update config with new one if given
+if(config) {
+	$.extend(curConfig, config);
+}
+
+// Array with width/height of canvas
+var dimensions = curConfig.dimensions;
+
+var canvas = this;
+
+// "document" element associated with the container (same as window.document using default svg-editor.js)
+// NOTE: This is not actually a SVG document, but a HTML document.
+var svgdoc = container.ownerDocument;
+
+// This is a container for the document being edited, not the document itself.
+var svgroot = svgdoc.importNode(svgedit.utilities.text2xml(
+		'<svg id="svgroot" xmlns="' + svgns + '" xlinkns="' + xlinkns + '" ' +
+			'width="' + dimensions[0] + '" height="' + dimensions[1] + '" x="' + dimensions[0] + '" y="' + dimensions[1] + '" overflow="visible">' +
+			'<defs>' +
+				'<filter id="canvashadow" filterUnits="objectBoundingBox">' +
+					'<feGaussianBlur in="SourceAlpha" stdDeviation="4" result="blur"/>'+
+					'<feOffset in="blur" dx="5" dy="5" result="offsetBlur"/>'+
+					'<feMerge>'+
+						'<feMergeNode in="offsetBlur"/>'+
+						'<feMergeNode in="SourceGraphic"/>'+
+					'</feMerge>'+
+				'</filter>'+
+			'</defs>'+
+		'</svg>').documentElement, true);
+container.appendChild(svgroot);
+
+// The actual element that represents the final output SVG element
+var svgcontent = svgdoc.createElementNS(svgns, "svg");
+
+// This function resets the svgcontent element while keeping it in the DOM.
+var clearSvgContentElement = canvas.clearSvgContentElement = function() {
+	while (svgcontent.firstChild) { svgcontent.removeChild(svgcontent.firstChild); }
+
+	// TODO: Clear out all other attributes first?
+	$(svgcontent).attr({
+		id: 'svgcontent',
+		width: dimensions[0],
+		height: dimensions[1],
+		x: dimensions[0],
+		y: dimensions[1],
+		overflow: curConfig.show_outside_canvas ? 'visible' : 'hidden',
+		xmlns: svgns,
+		"xmlns:se": se_ns,
+		"xmlns:xlink": xlinkns
+	}).appendTo(svgroot);
+
+	// TODO: make this string optional and set by the client
+	var comment = svgdoc.createComment(" Created with Method Draw - http://github.com/duopixel/Method-Draw/ ");
+	svgcontent.appendChild(comment);
+};
+clearSvgContentElement();
+
+// Prefix string for element IDs
+var idprefix = "svg_";
+
+// Function: setIdPrefix
+// Changes the ID prefix to the given value
+//
+// Parameters: 
+// p - String with the new prefix 
+canvas.setIdPrefix = function(p) {
+	idprefix = p;
+};
+
+// Current svgedit.draw.Drawing object
+// @type {svgedit.draw.Drawing}
+canvas.current_drawing_ = new svgedit.draw.Drawing(svgcontent, idprefix);
+
+// Function: getCurrentDrawing
+// Returns the current Drawing.
+// @return {svgedit.draw.Drawing}
+var getCurrentDrawing = canvas.getCurrentDrawing = function() {
+	return canvas.current_drawing_;
+};
+
+// Float displaying the current zoom level (1 = 100%, .5 = 50%, etc)
+var current_zoom = 1;
+
+// pointer to current group (for in-group editing)
+var current_group = null;
+
+// Object containing data for the currently selected styles
+var all_properties = {
+	shape: {
+		fill: (curConfig.initFill.color == 'none' ? '' : '#') + curConfig.initFill.color,
+		fill_paint: null,
+		fill_opacity: curConfig.initFill.opacity,
+		stroke: "#" + curConfig.initStroke.color,
+		stroke_paint: null,
+		stroke_opacity: curConfig.initStroke.opacity,
+		stroke_width: curConfig.initStroke.width,
+		stroke_dasharray: 'none',
+		opacity: curConfig.initOpacity
+	}
+};
+
+all_properties.text = $.extend(true, {}, all_properties.shape);
+$.extend(all_properties.text, {
+	fill: "#000000",
+	stroke_width: 0,
+	font_size: 24,
+	font_family: 'Helvetica, Arial, sans-serif'
+});
+
+// Current shape style properties
+var cur_shape = all_properties.shape;
+
+// Array with all the currently selected elements
+// default size of 1 until it needs to grow bigger
+var selectedElements = new Array(1);
+
+// Function: addSvgElementFromJson
+// Create a new SVG element based on the given object keys/values and add it to the current layer
+// The element will be ran through cleanupElement before being returned 
+//
+// Parameters:
+// data - Object with the following keys/values:
+// * element - tag name of the SVG element to create
+// * attr - Object with attributes key-values to assign to the new element
+// * curStyles - Boolean indicating that current style attributes should be applied first
+//
+// Returns: The new element
+var addSvgElementFromJson = this.addSvgElementFromJson = function(data) {
+	var shape = svgedit.utilities.getElem(data.attr.id);
+	// if shape is a path but we need to create a rect/ellipse, then remove the path
+	var current_layer = getCurrentDrawing().getCurrentLayer();
+	if (shape && data.element != shape.tagName) {
+		current_layer.removeChild(shape);
+		shape = null;
+	}
+	if (!shape) {
+		shape = svgdoc.createElementNS(svgns, data.element);
+		if (current_layer) {
+			(current_group || current_layer).appendChild(shape);
+		}
+	}
+	if(data.curStyles) {
+		svgedit.utilities.assignAttributes(shape, {
+			"fill": cur_shape.fill,
+			"stroke": cur_shape.stroke,
+			"stroke-width": cur_shape.stroke_width,
+			"stroke-dasharray": cur_shape.stroke_dasharray,
+			"stroke-opacity": cur_shape.stroke_opacity,
+			"fill-opacity": cur_shape.fill_opacity,
+			"opacity": cur_shape.opacity / 2,
+			"style": "pointer-events:inherit"
+		}, 100);
+	}
+	svgedit.utilities.assignAttributes(shape, data.attr, 100);
+	svgedit.utilities.cleanupElement(shape);
+	return shape;
+};
+
+
+// import svgtransformlist.js
+var getTransformList = canvas.getTransformList = svgedit.transformlist.getTransformList;
+
+// import from math.js.
+var transformPoint = svgedit.math.transformPoint;
+var matrixMultiply = canvas.matrixMultiply = svgedit.math.matrixMultiply;
+var hasMatrixTransform = canvas.hasMatrixTransform = svgedit.math.hasMatrixTransform;
+var transformListToTransform = canvas.transformListToTransform = svgedit.math.transformListToTransform;
+var snapToAngle = svgedit.math.snapToAngle;
+var getMatrix = svgedit.math.getMatrix;
+
+// initialize from units.js
+// send in an object implementing the ElementContainer interface (see units.js)
+svgedit.units.init({
+	getBaseUnit: function() { return curConfig.baseUnit; },
+	getElement: svgedit.utilities.getElem,
+	getHeight: function() { return svgcontent.getAttribute("height")/current_zoom; },
+	getWidth: function() { return svgcontent.getAttribute("width")/current_zoom; },
+	getRoundDigits: function() { return save_options.round_digits; }
+});
+// import from units.js
+var convertToNum = canvas.convertToNum = svgedit.units.convertToNum;
+
+// import from svgutils.js
+svgedit.utilities.init({
+	getDOMDocument: function() { return svgdoc; },
+	getDOMContainer: function() { return container; },
+	getSVGRoot: function() { return svgroot; },
+	// TODO: replace this mostly with a way to get the current drawing.
+	getSelectedElements: function() { return selectedElements; },
+	getSVGContent: function() { return svgcontent; }
+});
+var getUrlFromAttr = canvas.getUrlFromAttr = svgedit.utilities.getUrlFromAttr;
+var getHref = canvas.getHref = svgedit.utilities.getHref;
+var setHref = canvas.setHref = svgedit.utilities.setHref;
+var getPathBBox = svgedit.utilities.getPathBBox;
+var getBBox = canvas.getBBox = svgedit.utilities.getBBox;
+var getRotationAngle = canvas.getRotationAngle = svgedit.utilities.getRotationAngle;
+var getElem = canvas.getElem = svgedit.utilities.getElem;
+var assignAttributes = canvas.assignAttributes = svgedit.utilities.assignAttributes;
+var cleanupElement = this.cleanupElement = svgedit.utilities.cleanupElement;
+
+// import from sanitize.js
+var nsMap = svgedit.sanitize.getNSMap();
+var sanitizeSvg = canvas.sanitizeSvg = svgedit.sanitize.sanitizeSvg;
+
+// import from history.js
+var MoveElementCommand = svgedit.history.MoveElementCommand;
+var InsertElementCommand = svgedit.history.InsertElementCommand;
+var RemoveElementCommand = svgedit.history.RemoveElementCommand;
+var ChangeElementCommand = svgedit.history.ChangeElementCommand;
+var BatchCommand = svgedit.history.BatchCommand;
+// Implement the svgedit.history.HistoryEventHandler interface.
+canvas.undoMgr = new svgedit.history.UndoManager({
+	handleHistoryEvent: function(eventType, cmd) {
+		var EventTypes = svgedit.history.HistoryEventTypes;
+		// TODO: handle setBlurOffsets.
+		if (eventType == EventTypes.BEFORE_UNAPPLY || eventType == EventTypes.BEFORE_APPLY) {
+			canvas.clearSelection();
+		} else if (eventType == EventTypes.AFTER_APPLY || eventType == EventTypes.AFTER_UNAPPLY) {
+			var elems = cmd.elements();
+			canvas.pathActions.clear();
+			call("changed", elems);
+			
+			var cmdType = cmd.type();
+			var isApply = (eventType == EventTypes.AFTER_APPLY);
+			if (cmdType == MoveElementCommand.type()) {
+				var parent = isApply ? cmd.newParent : cmd.oldParent;
+				if (parent == svgcontent) {
+					canvas.identifyLayers();
+				}
+			} else if (cmdType == InsertElementCommand.type() ||
+					cmdType == RemoveElementCommand.type()) {
+				if (cmd.parent == svgcontent) {
+					canvas.identifyLayers();
+				}
+				if (cmdType == InsertElementCommand.type()) {
+					if (isApply) restoreRefElems(cmd.elem);
+				} else {
+					if (!isApply) restoreRefElems(cmd.elem);
+				}
+				
+				if(cmd.elem.tagName === 'use') {
+					setUseData(cmd.elem);
+				}
+			} else if (cmdType == ChangeElementCommand.type()) {
+				// if we are changing layer names, re-identify all layers
+				if (cmd.elem.tagName == "title" && cmd.elem.parentNode.parentNode == svgcontent) {
+					canvas.identifyLayers();
+				}
+				var values = isApply ? cmd.newValues : cmd.oldValues;
+				// If stdDeviation was changed, update the blur.
+				if (values["stdDeviation"]) {
+					canvas.setBlurOffsets(cmd.elem.parentNode, values["stdDeviation"]);
+				}
+				
+				// Remove & Re-add hack for Webkit (issue 775) 
+				//if(cmd.elem.tagName === 'use' && svgedit.browser.isWebkit()) {
+				//	var elem = cmd.elem;
+				//	if(!elem.getAttribute('x') && !elem.getAttribute('y')) {
+				//		var parent = elem.parentNode;
+				//		var sib = elem.nextSibling;
+				//		parent.removeChild(elem);
+				//		parent.insertBefore(elem, sib);
+				//	}
+				//}
+			}
+		}
+	}
+});
+var addCommandToHistory = function(cmd) {
+	canvas.undoMgr.addCommandToHistory(cmd);
+};
+
+// import from select.js
+svgedit.select.init(curConfig, {
+	createSVGElement: function(jsonMap) { return canvas.addSvgElementFromJson(jsonMap); },
+	svgRoot: function() { return svgroot; },
+	svgContent: function() { return svgcontent; },
+	currentZoom: function() { return current_zoom; },
+	// TODO(codedread): Remove when getStrokedBBox() has been put into svgutils.js.
+	getStrokedBBox: function(elems) { return canvas.getStrokedBBox([elems]); }
+});
+// this object manages selectors for us
+var selectorManager = this.selectorManager = svgedit.select.getSelectorManager();
+// this object manages selectors for us
+
+// Import from path.js
+svgedit.path.init({
+	getCurrentZoom: function() { return current_zoom; },
+	getSVGRoot: function() { return svgroot; }
+});
+
+// Function: snapToGrid
+// round value to for snapping
+// NOTE: This function did not move to svgutils.js since it depends on curConfig.
+svgedit.utilities.snapToGrid = function(value){
+	var stepSize = curConfig.snappingStep;
+	var unit = curConfig.baseUnit;
+	if(unit !== "px") {
+	stepSize *= svgedit.units.getTypeMap()[unit];
+	}
+	value = Math.round(value/stepSize)*stepSize;
+	return value;
+};
+var snapToGrid = svgedit.utilities.snapToGrid;
+
+// Interface strings, usually for title elements
+var uiStrings = {
+	"exportNoBlur": "Blurred elements will appear as un-blurred",
+	"exportNoforeignObject": "foreignObject elements will not appear",
+	"exportNoDashArray": "Strokes will appear filled",
+	"exportNoText": "Text may not appear as expected"
+};
+
+var visElems = 'a,circle,ellipse,foreignObject,g,image,line,path,polygon,polyline,rect,svg,text,tspan,use';
+var ref_attrs = ["clip-path", "fill", "filter", "marker-end", "marker-mid", "marker-start", "mask", "stroke"];
+
+var elData = $.data;
+
+// Animation element to change the opacity of any newly created element
+var opac_ani = false; //document.createElementNS(svgns, 'animate');
+//$(opac_ani).attr({
+//	attributeName: 'opacity',
+//	begin: 'indefinite',
+//	dur: 0,
+//	fill: 'freeze'
+//}).appendTo(svgroot);
+
+var restoreRefElems = function(elem) {
+	// Look for missing reference elements, restore any found
+	var attrs = $(elem).attr(ref_attrs);
+	for(var o in attrs) {
+		var val = attrs[o];
+		if (val && val.indexOf('url(') === 0) {
+			var id = getUrlFromAttr(val).substr(1);
+			var ref = getElem(id);
+			if(!ref) {
+				findDefs().appendChild(removedElements[id]);
+				delete removedElements[id];
+			}
+		}
+	}
+	
+	var childs = elem.getElementsByTagName('*');
+	
+	if(childs.length) {
+		for(var i = 0, l = childs.length; i < l; i++) {
+			restoreRefElems(childs[i]);
+		}
+	}
+};
+
+(function() {
+	// TODO For Issue 208: this is a start on a thumbnail
+	//	var svgthumb = svgdoc.createElementNS(svgns, "use");
+	//	svgthumb.setAttribute('width', '100');
+	//	svgthumb.setAttribute('height', '100');
+	//	svgedit.utilities.setHref(svgthumb, '#svgcontent');
+	//	svgroot.appendChild(svgthumb);
+
+})();
+
+// Object to contain image data for raster images that were found encodable
+var encodableImages = {},
+	
+	// String with image URL of last loadable image
+	last_good_img_url = curConfig.imgPath + 'logo.png',
+	
+	// Array with current disabled elements (for in-group editing)
+	disabled_elems = [],
+	
+	// Object with save options
+	save_options = {round_digits: 5},
+	
+	// Boolean indicating whether or not a draw action has been started
+	started = false,
+	
+	// String with an element's initial transform attribute value
+	start_transform = null,
+	
+	// String indicating the current editor mode
+	current_mode = "select",
+	
+	// String with the current direction in which an element is being resized
+	current_resize_mode = "none",
+	
+	// Object with IDs for imported files, to see if one was already added
+	import_ids = {};
+
+// Current text style properties
+var cur_text = all_properties.text,
+	
+	// Current general properties
+	cur_properties = cur_shape,
+	
+	// Array with selected elements' Bounding box object
+//	selectedBBoxes = new Array(1),
+	
+	// The DOM element that was just selected
+	justSelected = null,
+	
+	// DOM element for selection rectangle drawn by the user
+	rubberBox = null,
+	
+	// Array of current BBoxes (still needed?)
+	curBBoxes = [],
+	
+	// Object to contain all included extensions
+	extensions = {},
+	
+	// Canvas point for the most recent right click
+	lastClickPoint = null,
+	
+	// Map of deleted reference elements
+	removedElements = {}
+
+// Clipboard for cut, copy&pasted elements
+canvas.clipBoard = [];
+
+// Should this return an array by default, so extension results aren't overwritten?
+var runExtensions = this.runExtensions = function(action, vars, returnArray) {
+	var result = false;
+	if(returnArray) result = [];
+	$.each(extensions, function(name, opts) {
+		if(action in opts) {
+			if(returnArray) {
+				result.push(opts[action](vars))
+			} else {
+				result = opts[action](vars);
+			}
+		}
+	});
+	return result;
+}
+
+
+// Function: addExtension
+// Add an extension to the editor
+// 
+// Parameters:
+// name - String with the ID of the extension
+// ext_func - Function supplied by the extension with its data
+this.addExtension = function(name, ext_func) {
+	if(!(name in extensions)) {
+		// Provide private vars/funcs here. Is there a better way to do this?
+		
+		if($.isFunction(ext_func)) {
+		var ext = ext_func($.extend(canvas.getPrivateMethods(), {
+			svgroot: svgroot,
+			svgcontent: svgcontent,
+			nonce: getCurrentDrawing().getNonce(),
+			selectorManager: selectorManager
+		}));
+		} else {
+			var ext = ext_func;
+		}
+		extensions[name] = ext;
+		call("extension_added", ext);
+	} else {
+		console.log('Cannot add extension "' + name + '", an extension by that name already exists"');
+	}
+};
+	
+// This method rounds the incoming value to the nearest value based on the current_zoom
+var round = this.round = function(val) {
+	return parseInt(val*current_zoom)/current_zoom;
+};
+
+// This method sends back an array or a NodeList full of elements that
+// intersect the multi-select rubber-band-box on the current_layer only.
+// 
+// Since the only browser that supports the SVG DOM getIntersectionList is Opera, 
+// we need to provide an implementation here.  We brute-force it for now.
+// 
+// Reference:
+// Firefox does not implement getIntersectionList(), see https://bugzilla.mozilla.org/show_bug.cgi?id=501421
+// Webkit does not implement getIntersectionList(), see https://bugs.webkit.org/show_bug.cgi?id=11274
+var getIntersectionList = this.getIntersectionList = function(rect) {
+	if (rubberBox == null) { return null; }
+
+	var parent = current_group || getCurrentDrawing().getCurrentLayer();
+	
+	if(!curBBoxes.length) {
+		// Cache all bboxes
+		curBBoxes = getVisibleElementsAndBBoxes(parent);
+	}
+	
+	var resultList = null;
+	try {
+		resultList = parent.getIntersectionList(rect, null);
+	} catch(e) { }
+
+	if (resultList == null || typeof(resultList.item) != "function") {
+		resultList = [];
+		
+		if(!rect) {
+			var rubberBBox = rubberBox.getBBox();
+			var bb = {};
+			
+			for(var o in rubberBBox) {
+				bb[o] = rubberBBox[o] / current_zoom;
+			}
+			rubberBBox = bb;
+			
+		} else {
+			var rubberBBox = rect;
+		}
+		var i = curBBoxes.length;
+		while (i--) {
+			if(!rubberBBox.width || !rubberBBox.width) continue;
+			if (svgedit.math.rectsIntersect(rubberBBox, curBBoxes[i].bbox))  {
+				resultList.push(curBBoxes[i].elem);
+			}
+		}
+	}
+	// addToSelection expects an array, but it's ok to pass a NodeList 
+	// because using square-bracket notation is allowed: 
+	// http://www.w3.org/TR/DOM-Level-2-Core/ecma-script-binding.html
+	return resultList;
+};
+
+// TODO(codedread): Migrate this into svgutils.js
+// Function: getStrokedBBox
+// Get the bounding box for one or more stroked and/or transformed elements
+// 
+// Parameters:
+// elems - Array with DOM elements to check
+// 
+// Returns:
+// A single bounding box object
+getStrokedBBox = this.getStrokedBBox = function(elems) {
+	if(!elems) elems = getVisibleElements();
+	if(!elems.length) return false;
+	
+	// Make sure the expected BBox is returned if the element is a group
+	var getCheckedBBox = function(elem) {
+	
+		try {
+			// TODO: Fix issue with rotated groups. Currently they work
+			// fine in FF, but not in other browsers (same problem mentioned
+			// in Issue 339 comment #2).
+			
+			var bb = svgedit.utilities.getBBox(elem);
+			
+			var angle = svgedit.utilities.getRotationAngle(elem);
+			if ((angle && angle % 90) ||
+			    svgedit.math.hasMatrixTransform(svgedit.transformlist.getTransformList(elem))) {
+				// Accurate way to get BBox of rotated element in Firefox:
+				// Put element in group and get its BBox
+				
+				var good_bb = false;
+				
+				// Get the BBox from the raw path for these elements
+				var elemNames = ['ellipse','path','line','polyline','polygon'];
+				if(elemNames.indexOf(elem.tagName) >= 0) {
+					bb = good_bb = canvas.convertToPath(elem, true);
+				} else if(elem.tagName == 'rect') {
+					// Look for radius
+					var rx = elem.getAttribute('rx');
+					var ry = elem.getAttribute('ry');
+					if(rx || ry) {
+						bb = good_bb = canvas.convertToPath(elem, true);
+					}
+				}
+				
+				if(!good_bb) {
+					// Must use clone else FF freaks out
+					var clone = elem.cloneNode(true); 
+					var g = document.createElementNS(svgns, "g");
+					var parent = elem.parentNode;
+					parent.appendChild(g);
+					g.appendChild(clone);
+					bb = svgedit.utilities.bboxToObj(g.getBBox());
+					parent.removeChild(g);
+				}
+				
+
+				// Old method: Works by giving the rotated BBox,
+				// this is (unfortunately) what Opera and Safari do
+				// natively when getting the BBox of the parent group
+// 						var angle = angle * Math.PI / 180.0;
+// 						var rminx = Number.MAX_VALUE, rminy = Number.MAX_VALUE, 
+// 							rmaxx = Number.MIN_VALUE, rmaxy = Number.MIN_VALUE;
+// 						var cx = round(bb.x + bb.width/2),
+// 							cy = round(bb.y + bb.height/2);
+// 						var pts = [ [bb.x - cx, bb.y - cy], 
+// 									[bb.x + bb.width - cx, bb.y - cy],
+// 									[bb.x + bb.width - cx, bb.y + bb.height - cy],
+// 									[bb.x - cx, bb.y + bb.height - cy] ];
+// 						var j = 4;
+// 						while (j--) {
+// 							var x = pts[j][0],
+// 								y = pts[j][1],
+// 								r = Math.sqrt( x*x + y*y );
+// 							var theta = Math.atan2(y,x) + angle;
+// 							x = round(r * Math.cos(theta) + cx);
+// 							y = round(r * Math.sin(theta) + cy);
+// 		
+// 							// now set the bbox for the shape after it's been rotated
+// 							if (x < rminx) rminx = x;
+// 							if (y < rminy) rminy = y;
+// 							if (x > rmaxx) rmaxx = x;
+// 							if (y > rmaxy) rmaxy = y;
+// 						}
+// 						
+// 						bb.x = rminx;
+// 						bb.y = rminy;
+// 						bb.width = rmaxx - rminx;
+// 						bb.height = rmaxy - rminy;
+			}
+			return bb;
+		} catch(e) { 
+			console.log(elem, e);
+		} 
+	};
+
+	var full_bb;
+	$.each(elems, function() {
+		if(full_bb) return;
+		if(!this.parentNode) return;
+		full_bb = getCheckedBBox(this);
+	});
+	
+	// This shouldn't ever happen...
+	if(full_bb == null) return null;
+	
+	// full_bb doesn't include the stoke, so this does no good!
+// 		if(elems.length == 1) return full_bb;
+	
+	var max_x = full_bb.x + full_bb.width;
+	var max_y = full_bb.y + full_bb.height;
+	var min_x = full_bb.x;
+	var min_y = full_bb.y;
+	
+	// FIXME: same re-creation problem with this function as getCheckedBBox() above
+	var getOffset = function(elem) {
+		var sw = elem.getAttribute("stroke-width");
+		var offset = 0;
+		if (elem.getAttribute("stroke") != "none" && !isNaN(sw)) {
+			offset += sw/2;
+		}
+		return offset;
+	}
+	var bboxes = [];
+	$.each(elems, function(i, elem) {
+		var cur_bb = getCheckedBBox(elem);
+		if(cur_bb) {
+			var offset = getOffset(elem);
+			min_x = Math.min(min_x, cur_bb.x - offset);
+			min_y = Math.min(min_y, cur_bb.y - offset);
+			bboxes.push(cur_bb);
+		}
+	});
+	
+	full_bb.x = min_x;
+	full_bb.y = min_y;
+	
+	$.each(elems, function(i, elem) {
+		var cur_bb = bboxes[i];
+		// ensure that elem is really an element node
+		if (cur_bb && elem.nodeType == 1) {
+			var offset = getOffset(elem);
+			max_x = Math.max(max_x, cur_bb.x + cur_bb.width + offset);
+			max_y = Math.max(max_y, cur_bb.y + cur_bb.height + offset);
+		}
+	});
+	
+	full_bb.width = max_x - min_x;
+	full_bb.height = max_y - min_y;
+	return full_bb;
+}
+
+// Function: getVisibleElements
+// Get all elements that have a BBox (excludes <defs>, <title>, etc).
+// Note that 0-opacity, off-screen etc elements are still considered "visible"
+// for this function
+//
+// Parameters:
+// parent - The parent DOM element to search within
+//
+// Returns:
+// An array with all "visible" elements.
+var getVisibleElements = this.getVisibleElements = function(parent) {
+	if(!parent) parent = $(svgcontent).children(); // Prevent layers from being included
+	if (parent.find("#canvas_background").length) parent.splice(0, 1) // Prevent background from being included
+	var contentElems = [];
+	$(parent).children().each(function(i, elem) {
+		try {
+			if (elem.getBBox()) {
+				contentElems.push(elem);
+			}
+		} catch(e) {}
+	});
+	return contentElems.reverse();
+};
+
+// Function: getVisibleElementsAndBBoxes
+// Get all elements that have a BBox (excludes <defs>, <title>, etc).
+// Note that 0-opacity, off-screen etc elements are still considered "visible"
+// for this function
+//
+// Parameters:
+// parent - The parent DOM element to search within
+//
+// Returns:
+// An array with objects that include:
+// * elem - The element
+// * bbox - The element's BBox as retrieved from getStrokedBBox
+var getVisibleElementsAndBBoxes = this.getVisibleElementsAndBBoxes = function(parent) {
+	if(!parent) parent = $(svgcontent).children(); // Prevent layers from being included
+	
+	var contentElems = [];
+	$(parent).children().each(function(i, elem) {
+		try {
+			if (elem.getBBox()) {
+				contentElems.push({'elem':elem, 'bbox':getStrokedBBox([elem])});
+			}
+		} catch(e) {}
+	});
+	return contentElems.reverse();
+};
+
+// Function: groupSvgElem
+// Wrap an SVG element into a group element, mark the group as 'gsvg'
+//
+// Parameters:
+// elem - SVG element to wrap
+var groupSvgElem = this.groupSvgElem = function(elem) {
+	var g = document.createElementNS(svgns, "g");
+	elem.parentNode.replaceChild(g, elem);
+	$(g).append(elem).data('gsvg', elem)[0].id = getNextId();
+}
+
+// Function: copyElem
+// Create a clone of an element, updating its ID and its children's IDs when needed
+//
+// Parameters:
+// el - DOM element to clone
+//
+// Returns: The cloned element
+var copyElem = function(el) {
+  var new_el = document.createElementNS(el.namespaceURI, el.nodeName);
+  // set the copied element's new id
+	new_el.removeAttribute("id");
+	// manually create a copy of the element
+	$.each(el.attributes, function(i, attr) {
+		if (attr.localName != '-moz-math-font-style') {
+			new_el.setAttributeNS(attr.namespaceURI, attr.nodeName, attr.nodeValue);
+		}
+	});
+	
+	// Opera's "d" value needs to be reset for Opera/Win/non-EN
+	// Also needed for webkit (else does not keep curved segments on clone)
+	if(svgedit.browser.isWebkit() && el.nodeName == 'path') {
+		var fixed_d = pathActions.convertPath(el);
+		new_el.setAttribute('d', fixed_d);
+	}
+
+	// now create copies of all children
+	$.each(el.childNodes, function(i, child) {
+		switch(child.nodeType) {
+			case 1: // element node
+				new_el.appendChild(copyElem(child));
+				break;
+			case 3: // text node
+				new_el.textContent = child.nodeValue;
+				break;
+			default:
+				break;
+		}
+	});
+	
+	if($(el).data('gsvg')) {
+		$(new_el).data('gsvg', new_el.firstChild);
+	} else if($(el).data('symbol')) {
+		var ref = $(el).data('symbol');
+		$(new_el).data('ref', ref).data('symbol', ref);
+	}
+	else if(new_el.tagName == 'image') {
+		preventClickDefault(new_el);
+	}
+	new_el.id = getNextId();
+	return new_el;
+};
+
+// Set scope for these functions
+var getId, getNextId, call;
+
+(function(c) {
+
+	// Object to contain editor event names and callback functions
+	var events = {};
+
+	getId = c.getId = function() { return getCurrentDrawing().getId(); };
+	getNextId = c.getNextId = function() { return getCurrentDrawing().getNextId(); };
+	
+	// Function: call
+	// Run the callback function associated with the given event
+	//
+	// Parameters:
+	// event - String with the event name
+	// arg - Argument to pass through to the callback function
+	call = c.call = function(event, arg) {
+		if (events[event]) {
+			return events[event](this, arg);
+		}
+	};
+	
+	// Function: bind
+	// Attaches a callback function to an event
+	//
+	// Parameters:
+	// event - String indicating the name of the event
+	// f - The callback function to bind to the event
+	// 
+	// Return:
+	// The previous event
+	c.bind = function(event, f) {
+	  var old = events[event];
+		events[event] = f;
+		return old;
+	};
+	
+}(canvas));
+
+// Function: canvas.prepareSvg
+// Runs the SVG Document through the sanitizer and then updates its paths.
+//
+// Parameters:
+// newDoc - The SVG DOM document
+this.prepareSvg = function(newDoc) {
+	this.sanitizeSvg(newDoc.documentElement);
+
+	// convert paths into absolute commands
+	var paths = newDoc.getElementsByTagNameNS(svgns, "path");
+	for (var i = 0, len = paths.length; i < len; ++i) {
+		var path = paths[i];
+		path.setAttribute('d', pathActions.convertPath(path));
+		pathActions.fixEnd(path);
+	}
+};
+
+// Function getRefElem
+// Get the reference element associated with the given attribute value
+//
+// Parameters:
+// attrVal - The attribute value as a string
+var getRefElem = this.getRefElem = function(attrVal) {
+	return getElem(getUrlFromAttr(attrVal).substr(1));
+}
+
+// Function: ffClone
+// Hack for Firefox bugs where text element features aren't updated or get 
+// messed up. See issue 136 and issue 137.
+// This function clones the element and re-selects it 
+// TODO: Test for this bug on load and add it to "support" object instead of 
+// browser sniffing
+//
+// Parameters: 
+// elem - The (text) DOM element to clone
+var ffClone = function(elem) {
+	if(!svgedit.browser.isGecko()) return elem;
+	var clone = elem.cloneNode(true)
+	elem.parentNode.insertBefore(clone, elem);
+	elem.parentNode.removeChild(elem);
+	selectorManager.releaseSelector(elem);
+	selectedElements[0] = clone;
+	selectorManager.requestSelector(clone).showGrips(true);
+	return clone;
+}
+
+
+// this.each is deprecated, if any extension used this it can be recreated by doing this:
+// $(canvas.getRootElem()).children().each(...)
+
+// this.each = function(cb) {
+// 	$(svgroot).children().each(cb);
+// };
+
+
+// Function: setRotationAngle
+// Removes any old rotations if present, prepends a new rotation at the
+// transformed center
+//
+// Parameters:
+// val - The new rotation angle in degrees
+// preventUndo - Boolean indicating whether the action should be undoable or not
+this.setRotationAngle = function(val, preventUndo) {
+	// ensure val is the proper type
+	val = parseFloat(val);
+	var elem = selectedElements[0];
+	if (!elem) return;
+	var oldTransform = elem.getAttribute("transform");
+	var bbox = svgedit.utilities.getBBox(elem);
+	var cx = bbox.x+bbox.width/2, cy = bbox.y+bbox.height/2;
+	var tlist = getTransformList(elem);
+	
+	// only remove the real rotational transform if present (i.e. at index=0)
+	if (tlist.numberOfItems > 0) {
+		var xform = tlist.getItem(0);
+		if (xform.type == 4) {
+			tlist.removeItem(0);
+		}
+	}
+	// find R_nc and insert it
+	if (val != 0) {
+		var center = transformPoint(cx,cy,transformListToTransform(tlist).matrix);
+		var R_nc = svgroot.createSVGTransform();
+		R_nc.setRotate(val, center.x, center.y);
+		if(tlist.numberOfItems) {
+			tlist.insertItemBefore(R_nc, 0);
+		} else {
+			tlist.appendItem(R_nc);
+		}
+	}
+	else if (tlist.numberOfItems == 0) {
+		elem.removeAttribute("transform");
+	}
+	
+	if (!preventUndo) {
+		// we need to undo it, then redo it so it can be undo-able! :)
+		// TODO: figure out how to make changes to transform list undo-able cross-browser?
+		var newTransform = elem.getAttribute("transform");
+		elem.setAttribute("transform", oldTransform);
+		changeSelectedAttribute("transform",newTransform,selectedElements);
+		call("changed", selectedElements);
+	}
+	var pointGripContainer = getElem("pathpointgrip_container");
+// 		if(elem.nodeName == "path" && pointGripContainer) {
+// 			pathActions.setPointContainerTransform(elem.getAttribute("transform"));
+// 		}
+	var selector = selectorManager.requestSelector(selectedElements[0]);
+	selector.resize();
+	selector.updateGripCursors(val);
+};
+
+// Function: recalculateAllSelectedDimensions
+// Runs recalculateDimensions on the selected elements, 
+// adding the changes to a single batch command
+var recalculateAllSelectedDimensions = this.recalculateAllSelectedDimensions = function() {
+	var text = (current_resize_mode == "none" ? "position" : "size");
+	var batchCmd = new BatchCommand(text);
+
+	var i = selectedElements.length;
+	while(i--) {
+		var elem = selectedElements[i];
+// 			if(getRotationAngle(elem) && !hasMatrixTransform(getTransformList(elem))) continue;
+		var cmd = recalculateDimensions(elem);
+		if (cmd) {
+			batchCmd.addSubCommand(cmd);
+		}
+	}
+
+	if (!batchCmd.isEmpty()) {
+		addCommandToHistory(batchCmd);
+		call("changed", selectedElements);
+	}
+};
+
+// this is how we map paths to our preferred relative segment types
+var pathMap = [0, 'z', 'M', 'm', 'L', 'l', 'C', 'c', 'Q', 'q', 'A', 'a', 
+					'H', 'h', 'V', 'v', 'S', 's', 'T', 't'];
+					
+// Debug tool to easily see the current matrix in the browser's console
+var logMatrix = function(m) {
+	console.log([m.a,m.b,m.c,m.d,m.e,m.f]);
+};
+
+// Function: remapElement
+// Applies coordinate changes to an element based on the given matrix
+//
+// Parameters:
+// selected - DOM element to be changed
+// changes - Object with changes to be remapped
+// m - Matrix object to use for remapping coordinates
+var remapElement = this.remapElement = function(selected,changes,m) {
+
+	var remap = function(x,y) { return transformPoint(x,y,m); },
+		scalew = function(w) { return m.a*w; },
+		scaleh = function(h) { return m.d*h; },
+		doSnapping = curConfig.gridSnapping && selected.parentNode.parentNode.localName === "svg",
+		finishUp = function() {
+			if(doSnapping) for(var o in changes) changes[o] = snapToGrid(changes[o]);
+			assignAttributes(selected, changes, 1000, true);
+		}
+		box = svgedit.utilities.getBBox(selected);
+	
+	for(var i = 0; i < 2; i++) {
+		var type = i === 0 ? 'fill' : 'stroke';
+		var attrVal = selected.getAttribute(type);
+		if(attrVal && attrVal.indexOf('url(') === 0) {
+			if(m.a < 0 || m.d < 0) {
+				var grad = getRefElem(attrVal);
+				var newgrad = grad.cloneNode(true);
+	
+				if(m.a < 0) {
+					//flip x
+					var x1 = newgrad.getAttribute('x1');
+					var x2 = newgrad.getAttribute('x2');
+					newgrad.setAttribute('x1', -(x1 - 1));
+					newgrad.setAttribute('x2', -(x2 - 1));
+				} 
+				
+				if(m.d < 0) {
+					//flip y
+					var y1 = newgrad.getAttribute('y1');
+					var y2 = newgrad.getAttribute('y2');
+					newgrad.setAttribute('y1', -(y1 - 1));
+					newgrad.setAttribute('y2', -(y2 - 1));
+				}
+				newgrad.id = getNextId();
+				findDefs().appendChild(newgrad);
+				selected.setAttribute(type, 'url(#' + newgrad.id + ')');
+			}
+			
+			// Not really working :(
+// 			if(selected.tagName === 'path') {
+// 				reorientGrads(selected, m);
+// 			}
+		}
+	}
+
+
+	var elName = selected.tagName;
+	if(elName === "g" || elName === "text" || elName === "use") {
+		// if it was a translate, then just update x,y
+		if (m.a == 1 && m.b == 0 && m.c == 0 && m.d == 1 && 
+			(m.e != 0 || m.f != 0) ) 
+		{
+			// [T][M] = [M][T']
+			// therefore [T'] = [M_inv][T][M]
+			var existing = transformListToTransform(selected).matrix,
+				t_new = matrixMultiply(existing.inverse(), m, existing);
+			changes.x = parseFloat(changes.x) + t_new.e;
+			changes.y = parseFloat(changes.y) + t_new.f;
+		}
+		else {
+			// we just absorb all matrices into the element and don't do any remapping
+			var chlist = getTransformList(selected);
+			var mt = svgroot.createSVGTransform();
+			mt.setMatrix(matrixMultiply(transformListToTransform(chlist).matrix,m));
+			chlist.clear();
+			chlist.appendItem(mt);
+		}
+	}
+	
+	// now we have a set of changes and an applied reduced transform list
+	// we apply the changes directly to the DOM
+	switch (elName)
+	{
+		case "foreignObject":
+		case "rect":
+		case "image":
+			
+			// Allow images to be inverted (give them matrix when flipped)
+			if(elName === 'image' && (m.a < 0 || m.d < 0)) {
+				// Convert to matrix
+				var chlist = getTransformList(selected);
+				var mt = svgroot.createSVGTransform();
+				mt.setMatrix(matrixMultiply(transformListToTransform(chlist).matrix,m));
+				chlist.clear();
+				chlist.appendItem(mt);
+			} else {
+				var pt1 = remap(changes.x,changes.y);
+				
+				changes.width = scalew(changes.width);
+				changes.height = scaleh(changes.height);
+				
+				changes.x = pt1.x + Math.min(0,changes.width);
+				changes.y = pt1.y + Math.min(0,changes.height);
+				changes.width = Math.abs(changes.width);
+				changes.height = Math.abs(changes.height);
+			}
+			finishUp();
+			break;
+		case "ellipse":
+			var c = remap(changes.cx,changes.cy);
+			changes.cx = c.x;
+			changes.cy = c.y;
+			changes.rx = scalew(changes.rx);
+			changes.ry = scaleh(changes.ry);
+		
+			changes.rx = Math.abs(changes.rx);
+			changes.ry = Math.abs(changes.ry);
+			finishUp();
+			break;
+		case "circle":
+			var c = remap(changes.cx,changes.cy);
+			changes.cx = c.x;
+			changes.cy = c.y;
+			// take the minimum of the new selected box's dimensions for the new circle radius
+			var tbox = svgedit.math.transformBox(box.x, box.y, box.width, box.height, m);
+			var w = tbox.tr.x - tbox.tl.x, h = tbox.bl.y - tbox.tl.y;
+			changes.r = Math.min(w/2, h/2);
+
+			if(changes.r) changes.r = Math.abs(changes.r);
+			finishUp();
+			break;
+		case "line":
+			var pt1 = remap(changes.x1,changes.y1),
+				pt2 = remap(changes.x2,changes.y2);
+			changes.x1 = pt1.x;
+			changes.y1 = pt1.y;
+			changes.x2 = pt2.x;
+			changes.y2 = pt2.y;
+			
+		case "text":
+			var tspan = selected.querySelectorAll('tspan');
+			var i = tspan.length
+			while(i--) {
+				var selX = convertToNum("x", selected.getAttribute('x'));
+				var tx = convertToNum("x", tspan[i].getAttribute('x'));
+				var selY = convertToNum("y", selected.getAttribute('y'));
+				var ty = convertToNum("y", tspan[i].getAttribute('y'));
+				var offset = new Object();
+				if (!isNaN(selX) && !isNaN(tx) && selX!=0 && tx!=0 && changes.x)
+					offset.x = changes.x - (selX - tx);
+				if (!isNaN(selY) && !isNaN(ty) && selY!=0 && ty!=0 && changes.y)
+					offset.y = changes.y - (selY - ty);
+				if (offset.x || offset.y)
+					assignAttributes(tspan[i], offset, 1000, true);
+			}
+			finishUp();
+			break;
+		case "use":
+			finishUp();
+			break;
+		case "g":
+			var gsvg = $(selected).data('gsvg');
+			if(gsvg) {
+				assignAttributes(gsvg, changes, 1000, true);
+			}
+			break;
+		case "polyline":
+		case "polygon":
+			var len = changes.points.length;
+			for (var i = 0; i < len; ++i) {
+				var pt = changes.points[i];
+				pt = remap(pt.x,pt.y);
+				changes.points[i].x = pt.x;
+				changes.points[i].y = pt.y;
+			}
+
+			var len = changes.points.length;
+			var pstr = "";
+			for (var i = 0; i < len; ++i) {
+				var pt = changes.points[i];
+				pstr += pt.x + "," + pt.y + " ";
+			}
+			selected.setAttribute("points", pstr);
+			break;
+		case "path":
+		
+			var segList = selected.pathSegList;
+			var len = segList.numberOfItems;
+			changes.d = new Array(len);
+			for (var i = 0; i < len; ++i) {
+				var seg = segList.getItem(i);
+				changes.d[i] = {
+					type: seg.pathSegType,
+					x: seg.x,
+					y: seg.y,
+					x1: seg.x1,
+					y1: seg.y1,
+					x2: seg.x2,
+					y2: seg.y2,
+					r1: seg.r1,
+					r2: seg.r2,
+					angle: seg.angle,
+					largeArcFlag: seg.largeArcFlag,
+					sweepFlag: seg.sweepFlag
+				};
+			}
+			
+			var len = changes.d.length,
+				firstseg = changes.d[0],
+				currentpt = remap(firstseg.x,firstseg.y);
+			changes.d[0].x = currentpt.x;
+			changes.d[0].y = currentpt.y;
+			for (var i = 1; i < len; ++i) {
+				var seg = changes.d[i];
+				var type = seg.type;
+				// if absolute or first segment, we want to remap x, y, x1, y1, x2, y2
+				// if relative, we want to scalew, scaleh
+				if (type % 2 == 0) { // absolute
+					var thisx = (seg.x != undefined) ? seg.x : currentpt.x, // for V commands
+						thisy = (seg.y != undefined) ? seg.y : currentpt.y, // for H commands
+						pt = remap(thisx,thisy),
+						pt1 = remap(seg.x1,seg.y1),
+						pt2 = remap(seg.x2,seg.y2);
+					seg.x = pt.x;
+					seg.y = pt.y;
+					seg.x1 = pt1.x;
+					seg.y1 = pt1.y;
+					seg.x2 = pt2.x;
+					seg.y2 = pt2.y;
+					seg.r1 = scalew(seg.r1),
+					seg.r2 = scaleh(seg.r2);
+				}
+				else { // relative
+					seg.x = scalew(seg.x);
+					seg.y = scaleh(seg.y);
+					seg.x1 = scalew(seg.x1);
+					seg.y1 = scaleh(seg.y1);
+					seg.x2 = scalew(seg.x2);
+					seg.y2 = scaleh(seg.y2);
+					seg.r1 = scalew(seg.r1),
+					seg.r2 = scaleh(seg.r2);
+				}
+			} // for each segment
+		
+			var dstr = "";
+			var len = changes.d.length;
+			for (var i = 0; i < len; ++i) {
+				var seg = changes.d[i];
+				var type = seg.type;
+				dstr += pathMap[type];
+				switch(type) {
+					case 13: // relative horizontal line (h)
+					case 12: // absolute horizontal line (H)
+						dstr += seg.x + " ";
+						break;
+					case 15: // relative vertical line (v)
+					case 14: // absolute vertical line (V)
+						dstr += seg.y + " ";
+						break;
+					case 3: // relative move (m)
+					case 5: // relative line (l)
+					case 19: // relative smooth quad (t)
+					case 2: // absolute move (M)
+					case 4: // absolute line (L)
+					case 18: // absolute smooth quad (T)
+						dstr += seg.x + "," + seg.y + " ";
+						break;
+					case 7: // relative cubic (c)
+					case 6: // absolute cubic (C)
+						dstr += seg.x1 + "," + seg.y1 + " " + seg.x2 + "," + seg.y2 + " " +
+							 seg.x + "," + seg.y + " ";
+						break;
+					case 9: // relative quad (q) 
+					case 8: // absolute quad (Q)
+						dstr += seg.x1 + "," + seg.y1 + " " + seg.x + "," + seg.y + " ";
+						break;
+					case 11: // relative elliptical arc (a)
+					case 10: // absolute elliptical arc (A)
+						dstr += seg.r1 + "," + seg.r2 + " " + seg.angle + " " + (+seg.largeArcFlag) +
+							" " + (+seg.sweepFlag) + " " + seg.x + "," + seg.y + " ";
+						break;
+					case 17: // relative smooth cubic (s)
+					case 16: // absolute smooth cubic (S)
+						dstr += seg.x2 + "," + seg.y2 + " " + seg.x + "," + seg.y + " ";
+						break;
+				}
+			}
+
+			selected.setAttribute("d", dstr);
+			break;
+	}
+};
+
+// Function: updateClipPath
+// Updates a <clipPath>s values based on the given translation of an element
+//
+// Parameters:
+// attr - The clip-path attribute value with the clipPath's ID
+// tx - The translation's x value
+// ty - The translation's y value
+var updateClipPath = function(attr, tx, ty) {
+	var path = getRefElem(attr).firstChild;
+	
+	var cp_xform = getTransformList(path);
+	
+	var newxlate = svgroot.createSVGTransform();
+	newxlate.setTranslate(tx, ty);
+
+	cp_xform.appendItem(newxlate);
+	
+	// Update clipPath's dimensions
+	recalculateDimensions(path);
+}
+
+// Function: recalculateDimensions
+// Decides the course of action based on the element's transform list
+//
+// Parameters:
+// selected - The DOM element to recalculate
+//
+// Returns: 
+// Undo command object with the resulting change
+var recalculateDimensions = this.recalculateDimensions = function(selected) {
+	if (selected == null) return null;
+	
+	var tlist = getTransformList(selected);
+	
+	// remove any unnecessary transforms
+	if (tlist && tlist.numberOfItems > 0) {
+		var k = tlist.numberOfItems;
+		while (k--) {
+			var xform = tlist.getItem(k);
+			if (xform.type === 0) {
+				tlist.removeItem(k);
+			}
+			// remove identity matrices
+			else if (xform.type === 1) {
+				if (svgedit.math.isIdentity(xform.matrix)) {
+					tlist.removeItem(k);
+				}
+			}
+			// remove zero-degree rotations
+			else if (xform.type === 4) {
+				if (xform.angle === 0) {
+					tlist.removeItem(k);
+				}
+			}
+		}
+		// End here if all it has is a rotation
+		if(tlist.numberOfItems === 1 && getRotationAngle(selected)) return null;
+	}
+	
+	// if this element had no transforms, we are done
+	if (!tlist || tlist.numberOfItems == 0) {
+		selected.removeAttribute("transform");
+		return null;
+	}
+	
+	// TODO: Make this work for more than 2
+	if (tlist) {
+		var k = tlist.numberOfItems;
+		var mxs = [];
+		while (k--) {
+			var xform = tlist.getItem(k);
+			if (xform.type === 1) {
+				mxs.push([xform.matrix, k]);
+			} else if(mxs.length) {
+				mxs = [];
+			}
+		}
+		if(mxs.length === 2) {
+			var m_new = svgroot.createSVGTransformFromMatrix(matrixMultiply(mxs[1][0], mxs[0][0]));
+			tlist.removeItem(mxs[0][1]);
+			tlist.removeItem(mxs[1][1]);
+			tlist.insertItemBefore(m_new, mxs[1][1]);
+		}
+		
+		// combine matrix + translate
+		k = tlist.numberOfItems;
+		if(k >= 2 && tlist.getItem(k-2).type === 1 && tlist.getItem(k-1).type === 2) {
+			var mt = svgroot.createSVGTransform();
+			
+			var m = matrixMultiply(
+				tlist.getItem(k-2).matrix, 
+				tlist.getItem(k-1).matrix
+			);		
+			mt.setMatrix(m);
+			tlist.removeItem(k-2);
+			tlist.removeItem(k-2);
+			tlist.appendItem(mt);
+		}
+	}
+	
+	// If it still has a single [M] or [R][M], return null too (prevents BatchCommand from being returned).
+	switch ( selected.tagName ) {
+		// Ignore these elements, as they can absorb the [M]
+		case 'line':
+		case 'polyline':
+		case 'polygon':
+		case 'path':
+			break;
+		default:
+			if(
+				(tlist.numberOfItems === 1 && tlist.getItem(0).type === 1)
+				||  (tlist.numberOfItems === 2 && tlist.getItem(0).type === 1 && tlist.getItem(0).type === 4)
+			) {
+				return null;
+			}
+	}
+	
+	// Grouped SVG element 
+	var gsvg = $(selected).data('gsvg');
+	
+	// we know we have some transforms, so set up return variable		
+	var batchCmd = new BatchCommand("Transform");
+	
+	// store initial values that will be affected by reducing the transform list
+	var changes = {}, initial = null, attrs = [];
+	switch (selected.tagName)
+	{
+		case "line":
+			attrs = ["x1", "y1", "x2", "y2"];
+			break;
+		case "circle":
+			attrs = ["cx", "cy", "r"];
+			break;
+		case "ellipse":
+			attrs = ["cx", "cy", "rx", "ry"];
+			break;
+		case "foreignObject":
+		case "rect":
+		case "image":
+			attrs = ["width", "height", "x", "y"];
+			break;
+		case "use":
+		case "text":
+		case "tspan":
+			attrs = ["x", "y"];
+			break;
+		case "polygon":
+		case "polyline":
+			initial = {};
+			initial["points"] = selected.getAttribute("points");
+			var list = selected.points;
+			var len = list.numberOfItems;
+			changes["points"] = new Array(len);
+			for (var i = 0; i < len; ++i) {
+				var pt = list.getItem(i);
+				changes["points"][i] = {x:pt.x,y:pt.y};
+			}
+			break;
+		case "path":
+			initial = {};
+			initial["d"] = selected.getAttribute("d");
+			changes["d"] = selected.getAttribute("d");
+			break;
+	} // switch on element type to get initial values
+	
+	if(attrs.length) {
+		changes = $(selected).attr(attrs);
+		$.each(changes, function(attr, val) {
+			changes[attr] = convertToNum(attr, val);
+		});
+	} else if(gsvg) {
+		// GSVG exception
+		changes = {
+			x: $(gsvg).attr('x') || 0,
+			y: $(gsvg).attr('y') || 0
+		};
+	}
+	
+	// if we haven't created an initial array in polygon/polyline/path, then 
+	// make a copy of initial values and include the transform
+	if (initial == null) {
+		initial = $.extend(true, {}, changes);
+		$.each(initial, function(attr, val) {
+			initial[attr] = convertToNum(attr, val);
+		});
+	}
+	// save the start transform value too
+	initial["transform"] = start_transform ? start_transform : "";
+	
+	// if it's a regular group, we have special processing to flatten transforms
+	if ((selected.tagName == "g" && !gsvg) || selected.tagName == "a") {
+		var box = svgedit.utilities.getBBox(selected),
+			oldcenter = {x: box.x+box.width/2, y: box.y+box.height/2},
+			newcenter = transformPoint(box.x+box.width/2, box.y+box.height/2,
+							transformListToTransform(tlist).matrix),
+			m = svgroot.createSVGMatrix();
+		
+		
+		// temporarily strip off the rotate and save the old center
+		var gangle = getRotationAngle(selected);
+		if (gangle) {
+			var a = gangle * Math.PI / 180;
+			if ( Math.abs(a) > (1.0e-10) ) {
+				var s = Math.sin(a)/(1 - Math.cos(a));
+			} else {
+				// FIXME: This blows up if the angle is exactly 0!
+				var s = 2/a;
+			}
+			for (var i = 0; i < tlist.numberOfItems; ++i) {
+				var xform = tlist.getItem(i);
+				if (xform.type == 4) {
+					// extract old center through mystical arts
+					var rm = xform.matrix;
+					oldcenter.y = (s*rm.e + rm.f)/2;
+					oldcenter.x = (rm.e - s*rm.f)/2;
+					tlist.removeItem(i);
+					break;
+				}
+			}
+		}
+		var tx = 0, ty = 0,
+			operation = 0,
+			N = tlist.numberOfItems;
+
+		if(N) {
+			var first_m = tlist.getItem(0).matrix;
+		}
+
+		// first, if it was a scale then the second-last transform will be it
+		if (N >= 3 && tlist.getItem(N-2).type == 3 && 
+			tlist.getItem(N-3).type == 2 && tlist.getItem(N-1).type == 2) 
+		{
+			operation = 3; // scale
+		
+			// if the children are unrotated, pass the scale down directly
+			// otherwise pass the equivalent matrix() down directly
+			var tm = tlist.getItem(N-3).matrix,
+				sm = tlist.getItem(N-2).matrix,
+				tmn = tlist.getItem(N-1).matrix;
+		
+			var children = selected.childNodes;
+			var c = children.length;
+			while (c--) {
+				var child = children.item(c);
+				tx = 0;
+				ty = 0;
+				if (child.nodeType == 1) {
+					var childTlist = getTransformList(child);
+
+					// some children might not have a transform (<metadata>, <defs>, etc)
+					if (!childTlist) continue;
+
+					var m = transformListToTransform(childTlist).matrix;
+
+					// Convert a matrix to a scale if applicable
+// 					if(hasMatrixTransform(childTlist) && childTlist.numberOfItems == 1) {
+// 						if(m.b==0 && m.c==0 && m.e==0 && m.f==0) {
+// 							childTlist.removeItem(0);
+// 							var translateOrigin = svgroot.createSVGTransform(),
+// 								scale = svgroot.createSVGTransform(),
+// 								translateBack = svgroot.createSVGTransform();
+// 							translateOrigin.setTranslate(0, 0);
+// 							scale.setScale(m.a, m.d);
+// 							translateBack.setTranslate(0, 0);
+// 							childTlist.appendItem(translateBack);
+// 							childTlist.appendItem(scale);
+// 							childTlist.appendItem(translateOrigin);
+// 						}
+// 					}
+				
+					var angle = getRotationAngle(child);
+					var old_start_transform = start_transform;
+					var childxforms = [];
+					start_transform = child.getAttribute("transform");
+					if(angle || hasMatrixTransform(childTlist)) {
+						var e2t = svgroot.createSVGTransform();
+						e2t.setMatrix(matrixMultiply(tm, sm, tmn, m));
+						childTlist.clear();
+						childTlist.appendItem(e2t);
+						childxforms.push(e2t);
+					}
+					// if not rotated or skewed, push the [T][S][-T] down to the child
+					else {
+						// update the transform list with translate,scale,translate
+						
+						// slide the [T][S][-T] from the front to the back
+						// [T][S][-T][M] = [M][T2][S2][-T2]
+						
+						// (only bringing [-T] to the right of [M])
+						// [T][S][-T][M] = [T][S][M][-T2]
+						// [-T2] = [M_inv][-T][M]
+						var t2n = matrixMultiply(m.inverse(), tmn, m);
+						// [T2] is always negative translation of [-T2]
+						var t2 = svgroot.createSVGMatrix();
+						t2.e = -t2n.e;
+						t2.f = -t2n.f;
+						
+						// [T][S][-T][M] = [M][T2][S2][-T2]
+						// [S2] = [T2_inv][M_inv][T][S][-T][M][-T2_inv]
+						var s2 = matrixMultiply(t2.inverse(), m.inverse(), tm, sm, tmn, m, t2n.inverse());
+
+						var translateOrigin = svgroot.createSVGTransform(),
+							scale = svgroot.createSVGTransform(),
+							translateBack = svgroot.createSVGTransform();
+						translateOrigin.setTranslate(t2n.e, t2n.f);
+						scale.setScale(s2.a, s2.d);
+						translateBack.setTranslate(t2.e, t2.f);
+						childTlist.appendItem(translateBack);
+						childTlist.appendItem(scale);
+						childTlist.appendItem(translateOrigin);
+						childxforms.push(translateBack);
+						childxforms.push(scale);
+						childxforms.push(translateOrigin);
+// 						logMatrix(translateBack.matrix);
+// 						logMatrix(scale.matrix);
+					} // not rotated
+					batchCmd.addSubCommand( recalculateDimensions(child) );
+					// TODO: If any <use> have this group as a parent and are 
+					// referencing this child, then we need to impose a reverse 
+					// scale on it so that when it won't get double-translated
+//						var uses = selected.getElementsByTagNameNS(svgns, "use");
+//						var href = "#"+child.id;
+//						var u = uses.length;
+//						while (u--) {
+//							var useElem = uses.item(u);
+//							if(href == getHref(useElem)) {
+//								var usexlate = svgroot.createSVGTransform();
+//								usexlate.setTranslate(-tx,-ty);
+//								getTransformList(useElem).insertItemBefore(usexlate,0);
+//								batchCmd.addSubCommand( recalculateDimensions(useElem) );
+//							}
+//						}
+					start_transform = old_start_transform;
+				} // element
+			} // for each child
+			// Remove these transforms from group
+			tlist.removeItem(N-1);
+			tlist.removeItem(N-2);
+			tlist.removeItem(N-3);
+		}
+		else if (N >= 3 && tlist.getItem(N-1).type == 1)
+		{
+			operation = 3; // scale
+			m = transformListToTransform(tlist).matrix;
+			var e2t = svgroot.createSVGTransform();
+			e2t.setMatrix(m);
+			tlist.clear();
+			tlist.appendItem(e2t);
+		}			
+		// next, check if the first transform was a translate 
+		// if we had [ T1 ] [ M ] we want to transform this into [ M ] [ T2 ]
+		// therefore [ T2 ] = [ M_inv ] [ T1 ] [ M ]
+		else if ( (N == 1 || (N > 1 && tlist.getItem(1).type != 3)) && 
+			tlist.getItem(0).type == 2) 
+		{
+			operation = 2; // translate
+			var T_M = transformListToTransform(tlist).matrix;
+			tlist.removeItem(0);
+			var M_inv = transformListToTransform(tlist).matrix.inverse();
+			var M2 = matrixMultiply( M_inv, T_M );
+			
+			tx = M2.e;
+			ty = M2.f;
+
+			if (tx != 0 || ty != 0) {
+				// we pass the translates down to the individual children
+				var children = selected.childNodes;
+				var c = children.length;
+				
+				var clipPaths_done = [];
+				
+				while (c--) {
+					var child = children.item(c);
+					if (child.nodeType == 1) {
+					
+						// Check if child has clip-path
+						if(child.getAttribute('clip-path')) {
+							// tx, ty
+							var attr = child.getAttribute('clip-path');
+							if(clipPaths_done.indexOf(attr) === -1) {
+								updateClipPath(attr, tx, ty);
+								clipPaths_done.push(attr);
+							}							
+						}
+
+						var old_start_transform = start_transform;
+						start_transform = child.getAttribute("transform");
+						
+						var childTlist = getTransformList(child);
+						// some children might not have a transform (<metadata>, <defs>, etc)
+						if (childTlist) {
+							var newxlate = svgroot.createSVGTransform();
+							newxlate.setTranslate(tx,ty);
+							if(childTlist.numberOfItems) {
+								childTlist.insertItemBefore(newxlate, 0);
+							} else {
+								childTlist.appendItem(newxlate);
+							}
+							batchCmd.addSubCommand( recalculateDimensions(child) );
+							// If any <use> have this group as a parent and are 
+							// referencing this child, then impose a reverse translate on it
+							// so that when it won't get double-translated
+							var uses = selected.getElementsByTagNameNS(svgns, "use");
+							var href = "#"+child.id;
+							var u = uses.length;
+							while (u--) {
+								var useElem = uses.item(u);
+								if(href == getHref(useElem)) {
+									var usexlate = svgroot.createSVGTransform();
+									usexlate.setTranslate(-tx,-ty);
+									getTransformList(useElem).insertItemBefore(usexlate,0);
+									batchCmd.addSubCommand( recalculateDimensions(useElem) );
+								}
+							}
+							start_transform = old_start_transform;
+						}
+					}
+				}
+				
+				clipPaths_done = [];
+				
+				start_transform = old_start_transform;
+			}
+		}
+		// else, a matrix imposition from a parent group
+		// keep pushing it down to the children
+		else if (N == 1 && tlist.getItem(0).type == 1 && !gangle) {
+			operation = 1;
+			var m = tlist.getItem(0).matrix,
+				children = selected.childNodes,
+				c = children.length;
+			while (c--) {
+				var child = children.item(c);
+				if (child.nodeType == 1) {
+					var old_start_transform = start_transform;
+					start_transform = child.getAttribute("transform");
+					var childTlist = getTransformList(child);
+					
+					if (!childTlist) continue;
+					
+					var em = matrixMultiply(m, transformListToTransform(childTlist).matrix);
+					var e2m = svgroot.createSVGTransform();
+					e2m.setMatrix(em);
+					childTlist.clear();
+					childTlist.appendItem(e2m,0);
+					
+					batchCmd.addSubCommand( recalculateDimensions(child) );
+					start_transform = old_start_transform;
+					
+					// Convert stroke
+					// TODO: Find out if this should actually happen somewhere else
+					var sw = child.getAttribute("stroke-width");
+					if (child.getAttribute("stroke") !== "none" && !isNaN(sw)) {
+						var avg = (Math.abs(em.a) + Math.abs(em.d)) / 2;
+						child.setAttribute('stroke-width', sw * avg);
+					}
+
+				}
+			}
+			tlist.clear();
+		}
+		// else it was just a rotate
+		else {
+			if (gangle) {
+				var newRot = svgroot.createSVGTransform();
+				newRot.setRotate(gangle,newcenter.x,newcenter.y);
+				if(tlist.numberOfItems) {
+					tlist.insertItemBefore(newRot, 0);
+				} else {
+					tlist.appendItem(newRot);
+				}
+			}
+			if (tlist.numberOfItems == 0) {
+				selected.removeAttribute("transform");
+			}
+			return null;			
+		}
+		
+		// if it was a translate, put back the rotate at the new center
+		if (operation == 2) {
+			if (gangle) {
+				newcenter = {
+					x: oldcenter.x + first_m.e,
+					y: oldcenter.y + first_m.f
+				};
+			
+				var newRot = svgroot.createSVGTransform();
+				newRot.setRotate(gangle,newcenter.x,newcenter.y);
+				if(tlist.numberOfItems) {
+					tlist.insertItemBefore(newRot, 0);
+				} else {
+					tlist.appendItem(newRot);
+				}
+			}
+		}
+		// if it was a resize
+		else if (operation == 3) {
+			var m = transformListToTransform(tlist).matrix;
+			var roldt = svgroot.createSVGTransform();
+			roldt.setRotate(gangle, oldcenter.x, oldcenter.y);
+			var rold = roldt.matrix;
+			var rnew = svgroot.createSVGTransform();
+			rnew.setRotate(gangle, newcenter.x, newcenter.y);
+			var rnew_inv = rnew.matrix.inverse(),
+				m_inv = m.inverse(),
+				extrat = matrixMultiply(m_inv, rnew_inv, rold, m);
+
+			tx = extrat.e;
+			ty = extrat.f;
+
+			if (tx != 0 || ty != 0) {
+				// now push this transform down to the children
+				// we pass the translates down to the individual children
+				var children = selected.childNodes;
+				var c = children.length;
+				while (c--) {
+					var child = children.item(c);
+					if (child.nodeType == 1) {
+						var old_start_transform = start_transform;
+						start_transform = child.getAttribute("transform");
+						var childTlist = getTransformList(child);
+						var newxlate = svgroot.createSVGTransform();
+						newxlate.setTranslate(tx,ty);
+						if(childTlist.numberOfItems) {
+							childTlist.insertItemBefore(newxlate, 0);
+						} else {
+							childTlist.appendItem(newxlate);
+						}
+
+						batchCmd.addSubCommand( recalculateDimensions(child) );
+						start_transform = old_start_transform;
+					}
+				}
+			}
+			
+			if (gangle) {
+				if(tlist.numberOfItems) {
+					tlist.insertItemBefore(rnew, 0);
+				} else {
+					tlist.appendItem(rnew);
+				}
+			}
+		}
+	}
+	// else, it's a non-group
+	else {
+
+		// FIXME: box might be null for some elements (<metadata> etc), need to handle this
+		var box = svgedit.utilities.getBBox(selected);
+
+		// Paths (and possbly other shapes) will have no BBox while still in <defs>,
+		// but we still may need to recalculate them (see issue 595).
+		// TODO: Figure out how to get BBox from these elements in case they
+		// have a rotation transform
+		
+		if(!box && selected.tagName != 'path') return null;
+		
+
+		var m = svgroot.createSVGMatrix(),
+			// temporarily strip off the rotate and save the old center
+			angle = getRotationAngle(selected);
+		if (angle) {
+			var oldcenter = {x: box.x+box.width/2, y: box.y+box.height/2},
+			newcenter = transformPoint(box.x+box.width/2, box.y+box.height/2,
+							transformListToTransform(tlist).matrix);
+		
+			var a = angle * Math.PI / 180;
+			if ( Math.abs(a) > (1.0e-10) ) {
+				var s = Math.sin(a)/(1 - Math.cos(a));
+			} else {
+				// FIXME: This blows up if the angle is exactly 0!
+				var s = 2/a;
+			}
+			for (var i = 0; i < tlist.numberOfItems; ++i) {
+				var xform = tlist.getItem(i);
+				if (xform.type == 4) {
+					// extract old center through mystical arts
+					var rm = xform.matrix;
+					oldcenter.y = (s*rm.e + rm.f)/2;
+					oldcenter.x = (rm.e - s*rm.f)/2;
+					tlist.removeItem(i);
+					break;
+				}
+			}
+		}
+		
+		// 2 = translate, 3 = scale, 4 = rotate, 1 = matrix imposition
+		var operation = 0;
+		var N = tlist.numberOfItems;
+		
+		// Check if it has a gradient with userSpaceOnUse, in which case
+		// adjust it by recalculating the matrix transform.
+		// TODO: Make this work in Webkit using svgedit.transformlist.SVGTransformList
+		if(!svgedit.browser.isWebkit()) {
+			var fill = selected.getAttribute('fill');
+			if(fill && fill.indexOf('url(') === 0) {
+				var paint = getRefElem(fill);
+				var type = 'pattern';
+				if(paint.tagName !== type) type = 'gradient';
+				var attrVal = paint.getAttribute(type + 'Units');
+				if(attrVal === 'userSpaceOnUse') {
+					//Update the userSpaceOnUse element
+					m = transformListToTransform(tlist).matrix;
+					var gtlist = getTransformList(paint);
+					var gmatrix = transformListToTransform(gtlist).matrix;
+					m = matrixMultiply(m, gmatrix);
+					var m_str = "matrix(" + [m.a,m.b,m.c,m.d,m.e,m.f].join(",") + ")";
+					paint.setAttribute(type + 'Transform', m_str);
+				}
+			}
+		}
+
+		// first, if it was a scale of a non-skewed element, then the second-last  
+		// transform will be the [S]
+		// if we had [M][T][S][T] we want to extract the matrix equivalent of
+		// [T][S][T] and push it down to the element
+		if (N >= 3 && tlist.getItem(N-2).type == 3 && 
+			tlist.getItem(N-3).type == 2 && tlist.getItem(N-1).type == 2) 
+			
+			// Removed this so a <use> with a given [T][S][T] would convert to a matrix. 
+			// Is that bad?
+			//  && selected.nodeName != "use"
+		{
+			operation = 3; // scale
+			m = transformListToTransform(tlist,N-3,N-1).matrix;
+			tlist.removeItem(N-1);
+			tlist.removeItem(N-2);
+			tlist.removeItem(N-3);
+		} // if we had [T][S][-T][M], then this was a skewed element being resized
+		// Thus, we simply combine it all into one matrix
+		else if(N == 4 && tlist.getItem(N-1).type == 1) {
+			operation = 3; // scale
+			m = transformListToTransform(tlist).matrix;
+			var e2t = svgroot.createSVGTransform();
+			e2t.setMatrix(m);
+			tlist.clear();
+			tlist.appendItem(e2t);
+			// reset the matrix so that the element is not re-mapped
+			m = svgroot.createSVGMatrix();
+		} // if we had [R][T][S][-T][M], then this was a rotated matrix-element  
+		// if we had [T1][M] we want to transform this into [M][T2]
+		// therefore [ T2 ] = [ M_inv ] [ T1 ] [ M ] and we can push [T2] 
+		// down to the element
+		else if ( (N == 1 || (N > 1 && tlist.getItem(1).type != 3)) && 
+			tlist.getItem(0).type == 2) 
+		{
+			operation = 2; // translate
+			var oldxlate = tlist.getItem(0).matrix,
+				meq = transformListToTransform(tlist,1).matrix,
+				meq_inv = meq.inverse();
+			m = matrixMultiply( meq_inv, oldxlate, meq );
+			tlist.removeItem(0);
+		}
+		// else if this child now has a matrix imposition (from a parent group)
+		// we might be able to simplify
+		else if (N == 1 && tlist.getItem(0).type == 1 && !angle) {
+			// Remap all point-based elements
+			m = transformListToTransform(tlist).matrix;
+			switch (selected.tagName) {
+				case 'line':
+					changes = $(selected).attr(["x1","y1","x2","y2"]);
+				case 'polyline':
+				case 'polygon':
+					changes.points = selected.getAttribute("points");
+					if(changes.points) {
+						var list = selected.points;
+						var len = list.numberOfItems;
+						changes.points = new Array(len);
+						for (var i = 0; i < len; ++i) {
+							var pt = list.getItem(i);
+							changes.points[i] = {x:pt.x,y:pt.y};
+						}
+					}
+				case 'path':
+					changes.d = selected.getAttribute("d");
+					operation = 1;
+					tlist.clear();
+					break;
+				default:
+					break;
+			}
+		}
+		// if it was a rotation, put the rotate back and return without a command
+		// (this function has zero work to do for a rotate())
+		else {
+			operation = 4; // rotation
+			if (angle) {
+				var newRot = svgroot.createSVGTransform();
+				newRot.setRotate(angle,newcenter.x,newcenter.y);
+				
+				if(tlist.numberOfItems) {
+					tlist.insertItemBefore(newRot, 0);
+				} else {
+					tlist.appendItem(newRot);
+				}
+			}
+			if (tlist.numberOfItems == 0) {
+				selected.removeAttribute("transform");
+			}
+			return null;
+		}
+		
+		// if it was a translate or resize, we need to remap the element and absorb the xform
+		if (operation == 1 || operation == 2 || operation == 3) {
+			remapElement(selected,changes,m);
+		} // if we are remapping
+		
+		// if it was a translate, put back the rotate at the new center
+		if (operation == 2) {
+			if (angle) {
+				if(!hasMatrixTransform(tlist)) {
+					newcenter = {
+						x: oldcenter.x + m.e,
+						y: oldcenter.y + m.f
+					};
+				}
+				var newRot = svgroot.createSVGTransform();
+				newRot.setRotate(angle, newcenter.x, newcenter.y);
+				if(tlist.numberOfItems) {
+					tlist.insertItemBefore(newRot, 0);
+				} else {
+					tlist.appendItem(newRot);
+				}
+			}
+		}
+		// [Rold][M][T][S][-T] became [Rold][M]
+		// we want it to be [Rnew][M][Tr] where Tr is the
+		// translation required to re-center it
+		// Therefore, [Tr] = [M_inv][Rnew_inv][Rold][M]
+		else if (operation == 3 && angle) {
+			var m = transformListToTransform(tlist).matrix;
+			var roldt = svgroot.createSVGTransform();
+			roldt.setRotate(angle, oldcenter.x, oldcenter.y);
+			var rold = roldt.matrix;
+			var rnew = svgroot.createSVGTransform();
+			rnew.setRotate(angle, newcenter.x, newcenter.y);
+			var rnew_inv = rnew.matrix.inverse();
+			var m_inv = m.inverse();
+			var extrat = matrixMultiply(m_inv, rnew_inv, rold, m);
+		
+			remapElement(selected,changes,extrat);
+			if (angle) {
+				if(tlist.numberOfItems) {
+					tlist.insertItemBefore(rnew, 0);
+				} else {
+					tlist.appendItem(rnew);
+				}
+			}
+		}
+	} // a non-group
+
+	// if the transform list has been emptied, remove it
+	if (tlist.numberOfItems == 0) {
+		selected.removeAttribute("transform");
+	}
+	
+	batchCmd.addSubCommand(new ChangeElementCommand(selected, initial));
+	
+	return batchCmd;
+};
+
+// Root Current Transformation Matrix in user units
+var root_sctm = null;
+
+// Group: Selection
+
+// Function: clearSelection
+// Clears the selection.  The 'selected' handler is then called.
+// Parameters: 
+// noCall - Optional boolean that when true does not call the "selected" handler
+var clearSelection = this.clearSelection = function(noCall) {
+	if (selectedElements[0] != null) {
+		var len = selectedElements.length;
+		for (var i = 0; i < len; ++i) {
+			var elem = selectedElements[i];
+			if (elem == null) break;
+			selectorManager.releaseSelector(elem);
+			selectedElements[i] = null;
+		}
+//		selectedBBoxes[0] = null;
+	}
+	if(!noCall) call("selected", selectedElements);
+};
+
+// TODO: do we need to worry about selectedBBoxes here?
+
+
+// Function: addToSelection
+// Adds a list of elements to the selection.  The 'selected' handler is then called.
+//
+// Parameters:
+// elemsToAdd - an array of DOM elements to add to the selection
+// showGrips - a boolean flag indicating whether the resize grips should be shown
+var addToSelection = this.addToSelection = function(elemsToAdd, showGrips) {
+	if (elemsToAdd.length == 0) { return; }
+	// find the first null in our selectedElements array
+	var j = 0;
+	
+	while (j < selectedElements.length) {
+		if (selectedElements[j] == null) { 
+			break;
+		}
+		++j;
+	}
+
+	// now add each element consecutively
+	var i = elemsToAdd.length;
+	while (i--) {
+		var elem = elemsToAdd[i];
+		if (!elem || !svgedit.utilities.getBBox(elem)) continue;
+
+		if(elem.tagName === 'a' && elem.childNodes.length === 1) {
+			// Make "a" element's child be the selected element 
+			elem = elem.firstChild;
+		}
+
+		// if it's not already there, add it
+		if (selectedElements.indexOf(elem) == -1) {
+
+			selectedElements[j] = elem;
+
+			// only the first selectedBBoxes element is ever used in the codebase these days
+//			if (j == 0) selectedBBoxes[0] = svgedit.utilities.getBBox(elem);
+			j++;
+			var sel = selectorManager.requestSelector(elem);
+	
+			if (selectedElements.length > 1) {
+				sel.showGrips(false);
+			}
+		}
+	}
+	call("selected", selectedElements);
+	if (showGrips || selectedElements.length == 1) selectorManager.requestSelector(selectedElements[0]).showGrips(true)
+  else selectorManager.requestSelector(selectedElements[0]).showGrips(false);
+
+	// make sure the elements are in the correct order
+	// See: http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-compareDocumentPosition
+
+	selectedElements.sort(function(a,b) {
+		if(a && b && a.compareDocumentPosition) {
+			return 3 - (b.compareDocumentPosition(a) & 6);	
+		} else if(a == null) {
+			return 1;
+		}
+	});
+	
+	// Make sure first elements are not null
+	while(selectedElements[0] == null) selectedElements.shift(0);
+};
+
+// Function: selectOnly()
+// Selects only the given elements, shortcut for clearSelection(); addToSelection()
+//
+// Parameters:
+// elems - an array of DOM elements to be selected
+var selectOnly = this.selectOnly = function(elems, showGrips) {
+	clearSelection(true);
+	addToSelection(elems, showGrips);
+}
+
+// TODO: could use slice here to make this faster?
+// TODO: should the 'selected' handler
+
+// Function: removeFromSelection
+// Removes elements from the selection.
+//
+// Parameters:
+// elemsToRemove - an array of elements to remove from selection
+var removeFromSelection = this.removeFromSelection = function(elemsToRemove) {
+	if (selectedElements[0] == null) { return; }
+	if (elemsToRemove.length == 0) { return; }
+
+	// find every element and remove it from our array copy
+	var newSelectedItems = new Array(selectedElements.length);
+		j = 0,
+		len = selectedElements.length;
+	for (var i = 0; i < len; ++i) {
+		var elem = selectedElements[i];
+		if (elem) {
+			// keep the item
+			if (elemsToRemove.indexOf(elem) == -1) {
+				newSelectedItems[j] = elem;
+				j++;
+			}
+			else { // remove the item and its selector
+				selectorManager.releaseSelector(elem);
+			}
+		}
+	}
+	// the copy becomes the master now
+	selectedElements = newSelectedItems;
+};
+
+// Function: selectAllInCurrentLayer
+// Clears the selection, then adds all elements in the current layer to the selection.
+this.selectAllInCurrentLayer = function() {
+	var current_layer = getCurrentDrawing().getCurrentLayer();
+	if (current_layer) {
+		current_mode = "select";
+		selectOnly($(current_group || current_layer).children());
+	}
+};
+
+// Function: getMouseTarget
+// Gets the desired element from a mouse event
+// 
+// Parameters:
+// evt - Event object from the mouse event
+// 
+// Returns:
+// DOM element we want
+var getMouseTarget = this.getMouseTarget = function(evt) {
+	if (evt == null || evt.target == null) {
+		return null;
+	}
+	var mouse_target = evt.target;
+	
+	// if it was a <use>, Opera and WebKit return the SVGElementInstance
+	if (mouse_target.correspondingUseElement) mouse_target = mouse_target.correspondingUseElement;
+	
+	// for foreign content, go up until we find the foreignObject
+	// WebKit browsers set the mouse target to the svgcanvas div 
+	if ([mathns, htmlns].indexOf(mouse_target.namespaceURI) >= 0 && 
+		mouse_target.id != "svgcanvas") 
+	{
+		while (mouse_target.nodeName != "foreignObject") {
+			mouse_target = mouse_target.parentNode;
+			if(!mouse_target) return svgroot;
+		}
+	}
+	
+	// Get the desired mouse_target with jQuery selector-fu
+	// If it's root-like, select the root
+	var current_layer = getCurrentDrawing().getCurrentLayer();
+	if([svgroot, container, svgcontent, current_layer].indexOf(mouse_target) >= 0) {
+		return svgroot;
+	}
+	
+	var $target = $(mouse_target);
+
+	// If it's a selection grip, return the grip parent
+	if($target.closest('#selectorParentGroup').length) {
+		// While we could instead have just returned mouse_target, 
+		// this makes it easier to indentify as being a selector grip
+		return selectorManager.selectorParentGroup;
+	}
+
+	while (mouse_target.parentNode && mouse_target.parentNode !== (current_group || current_layer)) {
+		mouse_target = mouse_target.parentNode;
+	}
+	
+// 	
+// 	// go up until we hit a child of a layer
+// 	while (mouse_target.parentNode.parentNode.tagName == 'g') {
+// 		mouse_target = mouse_target.parentNode;
+// 	}
+	// Webkit bubbles the mouse event all the way up to the div, so we
+	// set the mouse_target to the svgroot like the other browsers
+// 	if (mouse_target.nodeName.toLowerCase() == "div") {
+// 		mouse_target = svgroot;
+// 	}
+	
+	return mouse_target;
+};
+
+// Mouse events
+(function() {
+	var d_attr = null,
+		start_x = null,
+		start_y = null,
+		r_start_x = null,
+		r_start_y = null,
+		init_bbox = {},
+		freehand = {
+			minx: null,
+			miny: null,
+			maxx: null,
+			maxy: null
+		};
+	
+	// - when we are in a create mode, the element is added to the canvas
+	//   but the action is not recorded until mousing up
+	// - when we are in select mode, select the element, remember the position
+	//   and do nothing else
+	var mouseDown = function(evt)
+	{
+		if (canvas.spaceKey) return;
+		var right_click = evt.button === 2;
+		
+		root_sctm = svgcontent.getScreenCTM().inverse();
+		isBotchedZoom = svgedit.browser.isGecko();
+		var pt = transformPoint( evt.pageX, evt.pageY, root_sctm ),
+			mouse_x = pt.x * (isBotchedZoom ? 1 : current_zoom),
+			mouse_y = pt.y * (isBotchedZoom ? 1 : current_zoom);
+			
+		evt.preventDefault();
+
+		if(right_click) {
+			current_mode = "select";
+			lastClickPoint = pt;
+		}
+		
+		var x = mouse_x / current_zoom,
+			y = mouse_y / current_zoom,
+			mouse_target = getMouseTarget(evt);
+		
+		if(mouse_target.tagName === 'a' && mouse_target.childNodes.length === 1) {
+			mouse_target = mouse_target.firstChild;
+		}
+		
+		// real_x/y ignores grid-snap value
+		var real_x = r_start_x = start_x = x;
+		var real_y = r_start_y = start_y = y;
+
+		if(curConfig.gridSnapping){
+			x = snapToGrid(x);
+			y = snapToGrid(y);
+			start_x = snapToGrid(start_x);
+			start_y = snapToGrid(start_y);
+		}
+
+		// if it is a selector grip, then it must be a single element selected, 
+		// set the mouse_target to that and update the mode to rotate/resize
+		
+		if (mouse_target == selectorManager.selectorParentGroup && selectedElements[0] != null) {
+			var grip = evt.target;
+			var griptype = elData(grip, "type");
+			// rotating
+			if (griptype == "rotate") {
+				current_mode = "rotate";
+				current_rotate_mode = elData(grip, "dir");
+			}
+			// resizing
+			else if(griptype == "resize") {
+				current_mode = "resize";
+				current_resize_mode = elData(grip, "dir");
+			}
+			mouse_target = selectedElements[0];
+		}
+		
+		start_transform = mouse_target.getAttribute("transform");
+		var tlist = getTransformList(mouse_target);
+		switch (current_mode) {
+			case "select":
+				started = true;
+				current_resize_mode = "none";
+				if(right_click) started = false;
+				
+				if (mouse_target != svgroot) {
+					// if this element is not yet selected, clear selection and select it
+					if (selectedElements.indexOf(mouse_target) == -1) {
+						// only clear selection if shift is not pressed (otherwise, add 
+						// element to selection)
+						if (!evt.shiftKey) {
+							// No need to do the call here as it will be done on addToSelection
+							clearSelection(true);
+						}
+						addToSelection([mouse_target]);
+						justSelected = mouse_target;
+						pathActions.clear();
+					}
+					// else if it's a path, go into pathedit mode in mouseup
+					
+					if(!right_click) {
+						// insert a dummy transform so if the element(s) are moved it will have
+						// a transform to use for its translate
+						for (var i = 0; i < selectedElements.length; ++i) {
+							if(selectedElements[i] == null) continue;
+							var slist = getTransformList(selectedElements[i]);
+							if(slist.numberOfItems) {
+								slist.insertItemBefore(svgroot.createSVGTransform(), 0);
+							} else {
+								slist.appendItem(svgroot.createSVGTransform());
+							}
+						}
+					}
+				}
+				else if(!right_click){
+					clearSelection();
+					current_mode = "multiselect";
+					if (rubberBox == null) {
+						rubberBox = selectorManager.getRubberBandBox();
+					}
+					r_start_x *= current_zoom;
+					r_start_y *= current_zoom;
+// 					console.log('p',[evt.pageX, evt.pageY]);					
+// 					console.log('c',[evt.clientX, evt.clientY]);	
+// 					console.log('o',[evt.offsetX, evt.offsetY]);	
+// 					console.log('s',[start_x, start_y]);
+					
+					assignAttributes(rubberBox, {
+						'x': r_start_x,
+						'y': r_start_y,
+						'width': 0,
+						'height': 0,
+						'display': 'inline'
+					}, 100);
+				}
+				break;
+			case "zoom": 
+				started = true;
+				if (rubberBox == null) {
+					rubberBox = selectorManager.getRubberBandBox();
+				}
+				assignAttributes(rubberBox, {
+						'x': real_x * current_zoom,
+						'y': real_x * current_zoom,
+						'width': 0,
+						'height': 0,
+						'display': 'inline'
+				}, 100);
+				break;
+			case "resize":
+				started = true;
+				start_x = x;
+				start_y = y;
+				
+				// Getting the BBox from the selection box, since we know we
+				// want to orient around it
+				init_bbox = svgedit.utilities.getBBox($('#selectedBox0')[0]);
+				var bb = {};
+				$.each(init_bbox, function(key, val) {
+					bb[key] = val/current_zoom;
+				});
+				init_bbox = bb;
+				// append three dummy transforms to the tlist so that
+				// we can translate,scale,translate in mousemove
+				var pos = getRotationAngle(mouse_target)?1:0;
+				
+				if(hasMatrixTransform(tlist)) {
+					tlist.insertItemBefore(svgroot.createSVGTransform(), pos);
+					tlist.insertItemBefore(svgroot.createSVGTransform(), pos);
+					tlist.insertItemBefore(svgroot.createSVGTransform(), pos);
+				} else {
+					tlist.appendItem(svgroot.createSVGTransform());
+					tlist.appendItem(svgroot.createSVGTransform());
+					tlist.appendItem(svgroot.createSVGTransform());
+					
+					if(svgedit.browser.supportsNonScalingStroke()) {
+						//Handle crash for newer Webkit: https://code.google.com/p/svg-edit/issues/detail?id=904
+						//Chromium issue: https://code.google.com/p/chromium/issues/detail?id=114625
+						// TODO: Remove this workaround (all isChrome blocks) once vendor fixes the issue
+						var isWebkit = svgedit.browser.isWebkit();
+						if(isWebkit) {
+							var delayedStroke = function(ele) {
+								var _stroke = ele.getAttributeNS(null, 'stroke');
+								ele.removeAttributeNS(null, 'stroke');
+								//Re-apply stroke after delay. Anything higher than 1 seems to cause flicker
+								setTimeout(function() { ele.setAttributeNS(null, 'stroke', _stroke) }, 0);
+							}
+						}
+						mouse_target.style.vectorEffect = 'non-scaling-stroke';
+						if(isWebkit) delayedStroke(mouse_target);
+
+						var all = mouse_target.getElementsByTagName('*'),
+						    len = all.length;
+						for(var i = 0; i < len; i++) {
+							all[i].style.vectorEffect = 'non-scaling-stroke';
+							if(isWebkit) delayedStroke(all[i]);
+						}
+					}
+				}
+				break;
+			case "fhellipse":
+			case "fhrect":
+			case "fhpath":
+				started = true;
+				d_attr = real_x + "," + real_y + " ";
+				var stroke_w = cur_shape.stroke_width == 0?1:cur_shape.stroke_width;
+				addSvgElementFromJson({
+					"element": "polyline",
+					"curStyles": true,
+					"attr": {
+						"points": d_attr,
+						"id": getNextId(),
+						"fill": "none",
+						"opacity": cur_shape.opacity / 2,
+						"stroke-linecap": "round",
+						"style": "pointer-events:none"
+					}
+				});
+				freehand.minx = real_x;
+				freehand.maxx = real_x;
+				freehand.miny = real_y;
+				freehand.maxy = real_y;
+				break;
+			case "image":
+				started = true;
+				var newImage = addSvgElementFromJson({
+					"element": "image",
+					"attr": {
+						"x": x,
+						"y": y,
+						"width": 0,
+						"height": 0,
+						"id": getNextId(),
+						"opacity": cur_shape.opacity / 2,
+						"style": "pointer-events:inherit"
+					}
+				});
+				setHref(newImage, last_good_img_url);
+				preventClickDefault(newImage);
+				break;
+			case "square":
+				// FIXME: once we create the rect, we lose information that this was a square
+				// (for resizing purposes this could be important)
+			case "rect":
+				started = true;
+				start_x = x;
+				start_y = y;
+				addSvgElementFromJson({
+					"element": "rect",
+					"curStyles": true,
+					"attr": {
+						"x": x,
+						"y": y,
+						"width": 0,
+						"height": 0,
+						"id": getNextId(),
+						"opacity": cur_shape.opacity / 2
+					}
+				});
+				break;
+			case "line":
+				started = true;
+				var stroke_w = cur_shape.stroke_width == 0?1:cur_shape.stroke_width;
+				addSvgElementFromJson({
+					"element": "line",
+					"curStyles": true,
+					"attr": {
+						"x1": x,
+						"y1": y,
+						"x2": x,
+						"y2": y,
+						"id": getNextId(),
+						"stroke": cur_shape.stroke,
+						"stroke-width": stroke_w,
+						"stroke-dasharray": cur_shape.stroke_dasharray,
+						"stroke-linejoin": cur_shape.stroke_linejoin,
+						"stroke-linecap": cur_shape.stroke_linecap,
+						"stroke-opacity": cur_shape.stroke_opacity,
+						"fill": "none",
+						"opacity": cur_shape.opacity / 2,
+						"style": "pointer-events:none"
+					}
+				});
+				break;
+			case "circle":
+				started = true;
+				addSvgElementFromJson({
+					"element": "circle",
+					"curStyles": true,
+					"attr": {
+						"cx": x,
+						"cy": y,
+						"r": 0,
+						"id": getNextId(),
+						"opacity": cur_shape.opacity / 2
+					}
+				});
+				break;
+			case "ellipse":
+				started = true;
+				addSvgElementFromJson({
+					"element": "ellipse",
+					"curStyles": true,
+					"attr": {
+						"cx": x,
+						"cy": y,
+						"rx": 0,
+						"ry": 0,
+						"id": getNextId(),
+						"opacity": cur_shape.opacity / 2
+					}
+				});
+				break;
+			case "text":
+				started = true;
+				var newText = addSvgElementFromJson({
+					"element": "text",
+					"curStyles": true,
+					"attr": {
+						"x": x,
+						"y": y,
+						"id": getNextId(),
+						"fill": cur_text.fill,
+						"stroke-width": cur_text.stroke_width,
+						"font-size": cur_text.font_size,
+						"font-family": cur_text.font_family,
+						"text-anchor": "left",
+						"xml:space": "preserve",
+						"opacity": cur_shape.opacity
+					}
+				});
+// 					newText.textContent = "text";
+				break;
+			case "path":
+				// Fall through
+			case "pathedit":
+				start_x *= current_zoom;
+				start_y *= current_zoom;
+				pathActions.mouseDown(evt, mouse_target, start_x, start_y);
+				started = true;
+				break;
+			case "textedit":
+				start_x *= current_zoom;
+				start_y *= current_zoom;
+				textActions.mouseDown(evt, mouse_target, start_x, start_y);
+				started = true;
+				break;
+			case "rotate":
+				started = true;
+				// we are starting an undoable change (a drag-rotation)
+				canvas.undoMgr.beginUndoableChange("transform", selectedElements);
+				document.getElementById("workarea").className = "rotate";
+				break;
+			default:
+				// This could occur in an extension
+				break;
+		}
+		
+		var ext_result = runExtensions("mouseDown", {
+			event: evt,
+			start_x: start_x,
+			start_y: start_y,
+			selectedElements: selectedElements
+		}, true);
+		
+		$.each(ext_result, function(i, r) {
+			if(r && r.started) {
+				started = true;
+			}
+		});
+		if (current_mode) {
+		  document.getElementById("workarea").className = 
+		    (current_mode == "resize")
+		    ? evt.target.style.cursor
+		    : current_mode
+		  }
+	};
+	
+	// in this function we do not record any state changes yet (but we do update
+	// any elements that are still being created, moved or resized on the canvas)
+	var mouseMove = function(evt) {
+	  	if (evt.originalEvent.touches && evt.originalEvent.touches.length > 1) return;
+		if (!started) return;
+		if(evt.button === 1 || canvas.spaceKey) return;
+		var selected = selectedElements[0],
+			pt = transformPoint( evt.pageX, evt.pageY, root_sctm ),
+			mouse_x = pt.x * (isBotchedZoom ? 1 : current_zoom),
+			mouse_y = pt.y * (isBotchedZoom ? 1 : current_zoom),
+			shape = getElem(getId());
+
+		var real_x = x = mouse_x / current_zoom;
+		var real_y = y = mouse_y / current_zoom;
+
+		if(curConfig.gridSnapping){
+			x = snapToGrid(x);
+			y = snapToGrid(y);
+		}
+
+		evt.preventDefault();
+		
+		switch (current_mode)
+		{
+			case "select":
+				// we temporarily use a translate on the element(s) being dragged
+				// this transform is removed upon mousing up and the element is 
+				// relocated to the new location
+				if (selectedElements[0] !== null) {
+					var dx = x - start_x;
+					var dy = y - start_y;
+					
+					if(curConfig.gridSnapping){
+						dx = snapToGrid(dx);
+						dy = snapToGrid(dy);
+					}
+      	  
+      	  if(evt.shiftKey) { 
+      	    var xya = snapToAngle(start_x,start_y,x,y); x=xya.x; y=xya.y;
+      	 }
+					if (dx != 0 || dy != 0) {
+						var len = selectedElements.length;
+						for (var i = 0; i < len; ++i) {
+							var selected = selectedElements[i];
+							if (selected == null) break;
+//							if (i==0) {
+//								var box = svgedit.utilities.getBBox(selected);
+// 									selectedBBoxes[i].x = box.x + dx;
+// 									selectedBBoxes[i].y = box.y + dy;
+//							}
+
+							// update the dummy transform in our transform list
+							// to be a translate
+							var xform = svgroot.createSVGTransform();
+							var tlist = getTransformList(selected);
+							// Note that if Webkit and there's no ID for this
+							// element, the dummy transform may have gotten lost.
+							// This results in unexpected behaviour
+							if (xya) {
+							  dx = xya.x - start_x
+							  dy = xya.y - start_y
+							}
+							xform.setTranslate(dx,dy);
+							if(tlist.numberOfItems) {
+								tlist.replaceItem(xform, 0);
+							} else {
+								tlist.appendItem(xform);
+							}
+							
+							// update our internal bbox that we're tracking while dragging
+							selectorManager.requestSelector(selected).resize();
+						}
+
+        	  //duplicate only once
+        	  // alt drag = create a clone and save the reference							
+  					if(evt.altKey) {
+  					  //clone doesn't exist yet
+  					  if (!canvas.addClones) {
+  					    canvas.addClones = canvas.cloneSelectedElements(0,0, xform);
+  					    canvas.removeClones = function(){
+  					      if (canvas.addClones) {
+  					        canvas.addClones.forEach(function(clone){
+  					          if (clone.parentNode) clone.parentNode.removeChild(clone)
+  					          canvas.addClones = false;
+  					        })
+  					      }
+  					    }
+  					    window.addEventListener("keyup", canvas.removeClones)
+        	    }
+        	  }
+			
+						call("transition", selectedElements);
+					}
+					
+
+
+					
+					
+				}
+				break;
+			case "multiselect":
+				real_x *= current_zoom;
+				real_y *= current_zoom;
+				assignAttributes(rubberBox, {
+					'x': Math.min(r_start_x, real_x),
+					'y': Math.min(r_start_y, real_y),
+					'width': Math.abs(real_x - r_start_x),
+					'height': Math.abs(real_y - r_start_y)
+				},100);
+
+				// for each selected:
+				// - if newList contains selected, do nothing
+				// - if newList doesn't contain selected, remove it from selected
+				// - for any newList that was not in selectedElements, add it to selected
+				var elemsToRemove = [], elemsToAdd = [],
+					newList = getIntersectionList(),
+					len = selectedElements.length;
+				
+				for (var i = 0; i < len; ++i) {
+					var ind = newList.indexOf(selectedElements[i]);
+					if (ind == -1) {
+						elemsToRemove.push(selectedElements[i]);
+					}
+					else {
+						newList[ind] = null;
+					}
+				}
+				
+				len = newList.length;
+				for (i = 0; i < len; ++i) { if (newList[i]) elemsToAdd.push(newList[i]); }
+				
+				if (elemsToRemove.length > 0) 
+					canvas.removeFromSelection(elemsToRemove);
+				
+				if (elemsToAdd.length > 0) 
+					addToSelection(elemsToAdd);
+					
+				break;
+			case "resize":
+				// we track the resize bounding box and translate/scale the selected element
+				// while the mouse is down, when mouse goes up, we use this to recalculate
+				// the shape's coordinates
+				var tlist = getTransformList(selected),
+					hasMatrix = hasMatrixTransform(tlist),
+					box = hasMatrix ? init_bbox : svgedit.utilities.getBBox(selected), 
+					left=box.x, top=box.y, width=box.width,
+					height=box.height, dx=(x-start_x), dy=(y-start_y);
+				
+				if(curConfig.gridSnapping){
+					dx = snapToGrid(dx);
+					dy = snapToGrid(dy);
+					height = snapToGrid(height);
+					width = snapToGrid(width);
+				}
+
+				// if rotated, adjust the dx,dy values
+				var angle = getRotationAngle(selected);
+				if (angle) {
+					var r = Math.sqrt( dx*dx + dy*dy ),
+						theta = Math.atan2(dy,dx) - angle * Math.PI / 180.0;
+					dx = r * Math.cos(theta);
+					dy = r * Math.sin(theta);
+				}
+
+				// if not stretching in y direction, set dy to 0
+				// if not stretching in x direction, set dx to 0
+				if(current_resize_mode.indexOf("n")==-1 && current_resize_mode.indexOf("s")==-1) {
+					dy = 0;
+				}
+				if(current_resize_mode.indexOf("e")==-1 && current_resize_mode.indexOf("w")==-1) {
+					dx = 0;
+				}				
+				
+				var ts = null,
+					tx = 0, ty = 0,
+					sy = height ? (height+dy)/height : 1, 
+					sx = width ? (width+dx)/width : 1;
+				// if we are dragging on the north side, then adjust the scale factor and ty
+				if(current_resize_mode.indexOf("n") >= 0) {
+					sy = height ? (height-dy)/height : 1;
+					ty = height;
+				}
+				
+				// if we dragging on the east side, then adjust the scale factor and tx
+				if(current_resize_mode.indexOf("w") >= 0) {
+					sx = width ? (width-dx)/width : 1;
+					tx = width;
+				}
+				
+				// update the transform list with translate,scale,translate
+				var translateOrigin = svgroot.createSVGTransform(),
+					scale = svgroot.createSVGTransform(),
+					translateBack = svgroot.createSVGTransform();
+
+				if(curConfig.gridSnapping){
+					left = snapToGrid(left);
+					tx = snapToGrid(tx);
+					top = snapToGrid(top);
+					ty = snapToGrid(ty);
+				}
+
+				translateOrigin.setTranslate(-(left+tx),-(top+ty));
+				if(evt.shiftKey) {
+					if(sx == 1) sx = sy
+					else sy = sx;
+				}
+				scale.setScale(sx,sy);
+				
+				translateBack.setTranslate(left+tx,top+ty);
+				if(hasMatrix) {
+					var diff = angle?1:0;
+					tlist.replaceItem(translateOrigin, 2+diff);
+					tlist.replaceItem(scale, 1+diff);
+					tlist.replaceItem(translateBack, 0+diff);
+				} else {
+					var N = tlist.numberOfItems;
+					tlist.replaceItem(translateBack, N-3);
+					tlist.replaceItem(scale, N-2);
+					tlist.replaceItem(translateOrigin, N-1);
+				}
+
+				selectorManager.requestSelector(selected).resize();
+				
+				call("transition", selectedElements);
+				
+				break;
+			case "zoom":
+				real_x *= current_zoom;
+				real_y *= current_zoom;
+				assignAttributes(rubberBox, {
+					'x': Math.min(r_start_x*current_zoom, real_x),
+					'y': Math.min(r_start_y*current_zoom, real_y),
+					'width': Math.abs(real_x - r_start_x*current_zoom),
+					'height': Math.abs(real_y - r_start_y*current_zoom)
+				},100);			
+				break;
+			case "text":
+				assignAttributes(shape,{
+					'x': x,
+					'y': y
+				},1000);
+				break;
+			case "line":
+				// Opera has a problem with suspendRedraw() apparently
+				var handle = null;
+				if (!window.opera) svgroot.suspendRedraw(1000);
+
+				if(curConfig.gridSnapping){
+					x = snapToGrid(x);
+					y = snapToGrid(y);
+				}
+
+				var x2 = x;
+				var y2 = y;					
+
+				if(evt.shiftKey) { var xya = snapToAngle(start_x,start_y,x2,y2); x2=xya.x; y2=xya.y; }
+				
+				shape.setAttributeNS(null, "x2", x2);
+				shape.setAttributeNS(null, "y2", y2);
+				if (!window.opera) svgroot.unsuspendRedraw(handle);
+				break;
+			case "foreignObject":
+				// fall through
+			case "square":
+				// fall through
+			case "rect":
+			case "image":
+				var square = (current_mode == 'square') || evt.shiftKey,
+					w = Math.abs(x - start_x),
+					h = Math.abs(y - start_y),
+					new_x, new_y;
+				if(square) {
+					w = h = Math.max(w, h);
+					new_x = start_x < x ? start_x : start_x - w;
+					new_y = start_y < y ? start_y : start_y - h;
+				} else {
+					new_x = Math.min(start_x,x);
+					new_y = Math.min(start_y,y);
+				}
+				if (evt.altKey){
+				  w *=2;
+				  h *=2; 
+				  new_x = start_x - w/2;
+				  new_y = start_y - h/2;
+				}
+	
+				if(curConfig.gridSnapping){
+					w = snapToGrid(w);
+					h = snapToGrid(h);
+					new_x = snapToGrid(new_x);
+					new_y = snapToGrid(new_y);
+				}
+
+				assignAttributes(shape,{
+					'width': w,
+					'height': h,
+					'x': new_x,
+					'y': new_y
+				},1000);
+				
+				break;
+			case "circle":
+				var c = $(shape).attr(["cx", "cy"]);
+				var cx = c.cx, cy = c.cy,
+					rad = Math.sqrt( (x-cx)*(x-cx) + (y-cy)*(y-cy) );
+				if(curConfig.gridSnapping){
+					rad = snapToGrid(rad);
+				}
+				shape.setAttributeNS(null, "r", rad);
+				break;
+			case "ellipse":
+				var c = $(shape).attr(["cx", "cy"]);
+				var cx = Math.abs(start_x + (x - start_x)/2)
+				var cy = Math.abs(start_y + (y - start_y)/2);
+ 
+				// Opera has a problem with suspendRedraw() apparently
+					handle = null;
+				if (!window.opera) svgroot.suspendRedraw(1000);
+				if(curConfig.gridSnapping){
+					x = snapToGrid(x);
+					cx = snapToGrid(cx);
+					y = snapToGrid(y);
+					cy = snapToGrid(cy);
+				}
+				var rx = Math.abs(start_x - cx)
+				var ry = Math.abs(start_y - cy);
+        if (evt.shiftKey) {
+          ry = rx
+          cy = (y > start_y) ? start_y + rx : start_y - rx
+          
+        }
+        if (evt.altKey) {
+          cx = start_x
+          cy = start_y
+          rx = Math.abs(x - cx)
+  				ry = evt.shiftKey ? rx : Math.abs(y - cy);
+        }
+				shape.setAttributeNS(null, "rx", rx );
+				shape.setAttributeNS(null, "ry", ry );
+				shape.setAttributeNS(null, "cx", cx );
+				shape.setAttributeNS(null, "cy", cy );
+				if (!window.opera) svgroot.unsuspendRedraw(handle);
+				break;
+			case "fhellipse":
+			case "fhrect":
+				freehand.minx = Math.min(real_x, freehand.minx);
+				freehand.maxx = Math.max(real_x, freehand.maxx);
+				freehand.miny = Math.min(real_y, freehand.miny);
+				freehand.maxy = Math.max(real_y, freehand.maxy);
+			// break; missing on purpose
+			case "fhpath":
+				d_attr += + real_x + "," + real_y + " ";
+				shape.setAttributeNS(null, "points", d_attr);
+				break;
+			// update path stretch line coordinates
+			case "path":
+				// fall through
+			case "pathedit":
+				x *= current_zoom;
+				y *= current_zoom;
+				
+				if(curConfig.gridSnapping){
+					x = snapToGrid(x);
+					y = snapToGrid(y);
+					start_x = snapToGrid(start_x);
+					start_y = snapToGrid(start_y);
+				}
+				if(evt.shiftKey) {
+					var path = svgedit.path.path;
+					if(path) {
+						var x1 = path.dragging?path.dragging[0]:start_x;
+						var y1 = path.dragging?path.dragging[1]:start_y;
+					} else {
+						var x1 = start_x;
+						var y1 = start_y;
+					}
+					var xya = snapToAngle(x1,y1,x,y);
+					x=xya.x; y=xya.y;
+				}
+				
+				if(rubberBox && rubberBox.getAttribute('display') !== 'none') {
+					real_x *= current_zoom;
+					real_y *= current_zoom;
+					assignAttributes(rubberBox, {
+						'x': Math.min(r_start_x*current_zoom, real_x),
+						'y': Math.min(r_start_y*current_zoom, real_y),
+						'width': Math.abs(real_x - r_start_x*current_zoom),
+						'height': Math.abs(real_y - r_start_y*current_zoom)
+					},100);	
+				}
+				pathActions.mouseMove(evt, x, y);
+				
+				break;
+			case "textedit":
+				x *= current_zoom;
+				y *= current_zoom;
+// 					if(rubberBox && rubberBox.getAttribute('display') != 'none') {
+// 						assignAttributes(rubberBox, {
+// 							'x': Math.min(start_x,x),
+// 							'y': Math.min(start_y,y),
+// 							'width': Math.abs(x-start_x),
+// 							'height': Math.abs(y-start_y)
+// 						},100);
+// 					}
+				
+				textActions.mouseMove(mouse_x, mouse_y);
+				
+				break;
+			case "rotate":
+				var box = svgedit.utilities.getBBox(selected),
+					cx = box.x + box.width/2, 
+					cy = box.y + box.height/2,
+					m = getMatrix(selected),
+					center = transformPoint(cx,cy,m);
+				cx = center.x;
+				cy = center.y;
+				var ccx = box.x // ne
+				var ccy = box.y // ne
+				if (current_rotate_mode == "nw")  ccx = box.x + box.width;
+				if (current_rotate_mode == "se")  ccy = box.y + box.height;
+				if (current_rotate_mode == "sw"){ ccx = box.x + box.width; ccy = box.y + box.height;  }
+				compensation_angle = ((Math.atan2(cy-ccy,cx-ccx)  * (180/Math.PI))-90) % 360;
+				var angle = ((Math.atan2(cy-y,cx-x)  * (180/Math.PI))-90) % 360;
+				angle += compensation_angle;
+				if(curConfig.gridSnapping){
+					angle = snapToGrid(angle);
+				}
+				if(evt.shiftKey) { // restrict rotations to nice angles (WRS)
+					var snap = 45;
+					angle= Math.round(angle/snap)*snap;
+				}
+
+				canvas.setRotationAngle(angle<-180?(360+angle):angle, true);
+				call("transition", selectedElements);
+				break;
+			default:
+				break;
+		}
+		
+		runExtensions("mouseMove", {
+			event: evt,
+			mouse_x: mouse_x,
+			mouse_y: mouse_y,
+			selected: selected
+		});
+
+	}; // mouseMove()
+	
+	
+	/* mouseover mode
+	var mouseOver = function(evt) {
+	  
+	  if(canvas.spaceKey || evt.button === 1 || current_mode != "select") return;
+	  evt.stopPropagation();
+	  mouse_target = getMouseTarget(evt);
+	  if (svghover.lastChild) svghover.removeChild(svghover.lastChild);
+	  
+	  if (mouse_target.id == "svgroot") return
+	  switch (mouse_target.nodeName) {
+	    case "polyline":
+	    case "line":
+	    case "path":
+	    case "ellipse":
+	    case "rect":
+					var clone = mouse_target.cloneNode(true); 
+					clone.setAttribute("stroke", "#c00")
+					clone.setAttribute("stroke-width", "1")
+					clone.setAttribute("stroke-opacity", "1")
+					clone.setAttribute("shape-rendering", "crispEdges")
+					clone.setAttribute("fill", "none")
+					hover_group.appendChild(clone);
+			break;
+				
+	    default:
+	    break;
+	  }
+	}
+	*/
+	
+	// - in create mode, the element's opacity is set properly, we create an InsertElementCommand
+	//   and store it on the Undo stack
+	// - in move/resize mode, the element's attributes which were affected by the move/resize are
+	//   identified, a ChangeElementCommand is created and stored on the stack for those attrs
+	//   this is done in when we recalculate the selected dimensions()
+	var mouseUp = function(evt)
+	{
+	  canvas.addClones = false;
+	  window.removeEventListener("keyup", canvas.removeClones)
+	  selectedElements = selectedElements.filter(Boolean)
+		if(evt.button === 2) return;
+		var tempJustSelected = justSelected;
+		justSelected = null;
+		if (!started) return;
+		var pt = transformPoint( evt.pageX, evt.pageY, root_sctm ),
+			mouse_x = pt.x * current_zoom,
+			mouse_y = pt.y * current_zoom,
+			x = mouse_x / current_zoom,
+			y = mouse_y / current_zoom,
+			element = getElem(getId()),
+			keep = false;
+
+		var real_x = x;
+		var real_y = y;
+
+		// TODO: Make true when in multi-unit mode
+		var useUnit = false; // (curConfig.baseUnit !== 'px');
+		started = false;
+		switch (current_mode)
+		{
+			// intentionally fall-through to select here
+			case "resize":
+			case "multiselect":
+				if (rubberBox != null) {
+					rubberBox.setAttribute("display", "none");
+					curBBoxes = [];
+				}
+				current_mode = "select";
+			case "select":
+				if (selectedElements[0] != null) {
+					// if we only have one selected element
+					if (selectedElements.length == 1) {
+						// set our current stroke/fill properties to the element's
+						var selected = selectedElements[0];
+						switch ( selected.tagName ) {
+							case "g":
+							case "use":
+							case "image":
+							case "foreignObject":
+								break;
+							default:
+								cur_properties.fill = selected.getAttribute("fill");
+								cur_properties.fill_opacity = selected.getAttribute("fill-opacity");
+								cur_properties.stroke = selected.getAttribute("stroke");
+								cur_properties.stroke_opacity = selected.getAttribute("stroke-opacity");
+								cur_properties.stroke_width = selected.getAttribute("stroke-width");
+								cur_properties.stroke_dasharray = selected.getAttribute("stroke-dasharray");
+								cur_properties.stroke_linejoin = selected.getAttribute("stroke-linejoin");
+								cur_properties.stroke_linecap = selected.getAttribute("stroke-linecap");
+						}
+						if (selected.tagName == "text") {
+							cur_text.font_size = selected.getAttribute("font-size");
+							cur_text.font_family = selected.getAttribute("font-family");
+						}
+						selectorManager.requestSelector(selected).showGrips(true);
+						
+						// This shouldn't be necessary as it was done on mouseDown...
+// 							call("selected", [selected]);
+					}
+					// always recalculate dimensions to strip off stray identity transforms
+					recalculateAllSelectedDimensions();
+
+					// if it was being dragged/resized
+					var isBotchedZoom = svgedit.browser.isGecko();
+					r_start_x = isBotchedZoom ? r_start_x * current_zoom : r_start_x; 
+					r_start_y = isBotchedZoom ? r_start_y * current_zoom : r_start_y; 
+					var difference_x = Math.abs(real_x-r_start_x);
+					var difference_y = Math.abs(real_y-r_start_y);
+
+					if (difference_y > 1 || difference_y > 1) {
+						var len = selectedElements.length;
+						for	(var i = 0; i < len; ++i) {
+							if (selectedElements[i] == null) break;
+							if(!selectedElements[i].firstChild) {
+								// Not needed for groups (incorrectly resizes elems), possibly not needed at all?
+								selectorManager.requestSelector(selectedElements[i]).resize();
+							}
+						}
+					}
+					// no change in position/size, so maybe we should move to pathedit
+					else {
+						var t = evt.target;
+						if (selectedElements[0].nodeName === "path" && selectedElements[1] == null) {
+							pathActions.select(selectedElements[0]);
+						} // if it was a path
+						// else, if it was selected and this is a shift-click, remove it from selection
+						else if (evt.shiftKey) {
+							if(tempJustSelected != t) {
+								canvas.removeFromSelection([t]);
+							}
+						}
+					} // no change in mouse position
+					
+					// Remove non-scaling stroke
+					if(svgedit.browser.supportsNonScalingStroke()) {
+						var elem = selectedElements[0];
+						if (elem) {
+							elem.removeAttribute('style');
+							svgedit.utilities.walkTree(elem, function(elem) {
+								elem.removeAttribute('style');
+							});
+						}
+					}
+
+				}
+				return;
+				break;
+			case "zoom":
+				if (rubberBox != null) {
+					rubberBox.setAttribute("display", "none");
+				}
+				var factor = evt.altKey?.5:2;
+				call("zoomed", {
+					'x': Math.min(r_start_x, real_x),
+					'y': Math.min(r_start_y, real_y),
+					'width': Math.abs(real_x - r_start_x),
+					'height': Math.abs(real_y - r_start_y),
+					'factor': factor
+				});
+				return;
+			case "fhpath":
+				// Check that the path contains at least 2 points; a degenerate one-point path
+				// causes problems.
+				// Webkit ignores how we set the points attribute with commas and uses space
+				// to separate all coordinates, see https://bugs.webkit.org/show_bug.cgi?id=29870
+				var coords = element.getAttribute('points');
+				var commaIndex = coords.indexOf(',');
+				if (commaIndex >= 0) {
+					keep = coords.indexOf(',', commaIndex+1) >= 0;
+				} else {
+					keep = coords.indexOf(' ', coords.indexOf(' ')+1) >= 0;
+				}
+				if (keep) {
+					element = pathActions.smoothPolylineIntoPath(element);
+				}
+				break;
+			case "line":
+				var attrs = $(element).attr(["x1", "x2", "y1", "y2"]);
+				keep = (attrs.x1 != attrs.x2 || attrs.y1 != attrs.y2);
+				break;
+			case "foreignObject":
+			case "square":
+			case "rect":
+			case "image":
+				var attrs = $(element).attr(["width", "height"]);
+				// Image should be kept regardless of size (use inherit dimensions later)
+				keep = (attrs.width != 0 || attrs.height != 0) || current_mode === "image";
+				break;
+			case "circle":
+				keep = (element.getAttribute('r') != 0);
+				break;
+			case "ellipse":
+				var attrs = $(element).attr(["rx", "ry"]);
+				keep = (attrs.rx != null || attrs.ry != null);
+				break;
+			case "fhellipse":
+				if ((freehand.maxx - freehand.minx) > 0 &&
+					(freehand.maxy - freehand.miny) > 0) {
+					element = addSvgElementFromJson({
+						"element": "ellipse",
+						"curStyles": true,
+						"attr": {
+							"cx": (freehand.minx + freehand.maxx) / 2,
+							"cy": (freehand.miny + freehand.maxy) / 2,
+							"rx": (freehand.maxx - freehand.minx) / 2,
+							"ry": (freehand.maxy - freehand.miny) / 2,
+							"id": getId()
+						}
+					});
+					call("changed",[element]);
+					keep = true;
+				}
+				break;
+			case "fhrect":
+				if ((freehand.maxx - freehand.minx) > 0 &&
+					(freehand.maxy - freehand.miny) > 0) {
+					element = addSvgElementFromJson({
+						"element": "rect",
+						"curStyles": true,
+						"attr": {
+							"x": freehand.minx,
+							"y": freehand.miny,
+							"width": (freehand.maxx - freehand.minx),
+							"height": (freehand.maxy - freehand.miny),
+							"id": getId()
+						}
+					});
+					call("changed",[element]);
+					keep = true;
+				}
+				break;
+			case "text":
+				keep = true;
+				selectOnly([element]);
+				textActions.start(element);
+				break;
+			case "path":
+				// set element to null here so that it is not removed nor finalized
+				element = null;
+				// continue to be set to true so that mouseMove happens
+				started = true;
+				
+				var res = pathActions.mouseUp(evt, element, mouse_x, mouse_y);
+				element = res.element;
+				keep = res.keep;
+				break;
+			case "pathedit":
+				keep = true;
+				element = null;
+				pathActions.mouseUp(evt);
+				break;
+			case "textedit":
+				keep = false;
+				element = null;
+				textActions.mouseUp(evt, mouse_x, mouse_y);
+				break;
+			case "rotate":
+				keep = true;
+				element = null;
+				current_mode = "select";
+				var batchCmd = canvas.undoMgr.finishUndoableChange();
+				if (!batchCmd.isEmpty()) { 
+					addCommandToHistory(batchCmd);
+				}
+				// perform recalculation to weed out any stray identity transforms that might get stuck
+				recalculateAllSelectedDimensions();
+				call("changed", selectedElements);
+				break;
+			default:
+				// This could occur in an extension
+				break;
+		}
+		
+		var ext_result = runExtensions("mouseUp", {
+			event: evt,
+			mouse_x: mouse_x,
+			mouse_y: mouse_y
+		}, true);
+		
+		$.each(ext_result, function(i, r) {
+			if(r) {
+				keep = r.keep || keep;
+				element = r.element;
+				started = r.started || started;
+			}
+		});
+		
+		if (!keep && element != null) {
+			getCurrentDrawing().releaseId(getId());
+			element.parentNode.removeChild(element);
+			element = null;
+			
+			var t = evt.target;
+			
+			// if this element is in a group, go up until we reach the top-level group 
+			// just below the layer groups
+			// TODO: once we implement links, we also would have to check for <a> elements
+			while (t.parentNode.parentNode.tagName == "g") {
+				t = t.parentNode;
+			}
+			// if we are not in the middle of creating a path, and we've clicked on some shape, 
+			// then go to Select mode.
+			// WebKit returns <div> when the canvas is clicked, Firefox/Opera return <svg>
+			if ( (current_mode != "path" || !drawn_path) &&
+				t.parentNode.id != "selectorParentGroup" &&
+				t.id != "svgcanvas" && t.id != "svgroot") 
+			{
+				// switch into "select" mode if we've clicked on an element
+				canvas.setMode("select");
+				selectOnly([t], true);
+			}
+			
+		} else if (element != null) {
+			canvas.addedNew = true;
+			
+			if(useUnit) svgedit.units.convertAttrs(element);
+			
+			var ani_dur = .2, c_ani;
+			if(opac_ani.beginElement && element.getAttribute('opacity') != cur_shape.opacity) {
+				c_ani = $(opac_ani).clone().attr({
+					to: cur_shape.opacity,
+					dur: ani_dur
+				}).appendTo(element);
+				try {
+					// Fails in FF4 on foreignObject
+					c_ani[0].beginElement();
+				} catch(e){}
+			} else {
+				ani_dur = 0;
+			}
+			
+			// Ideally this would be done on the endEvent of the animation,
+			// but that doesn't seem to be supported in Webkit
+			setTimeout(function() {
+				if(c_ani) c_ani.remove();
+				element.setAttribute("opacity", cur_shape.opacity);
+				element.setAttribute("style", "pointer-events:inherit");
+				cleanupElement(element);
+				if(current_mode === "path") {
+					pathActions.toEditMode(element);
+				} else {
+					if(curConfig.selectNew) {
+						selectOnly([element], true);
+					}
+				}
+				// we create the insert command that is stored on the stack
+				// undo means to call cmd.unapply(), redo means to call cmd.apply()
+				addCommandToHistory(new InsertElementCommand(element));
+				
+				call("changed",[element]);
+			}, ani_dur * 1000);
+		}
+		
+		start_transform = null;
+	};
+	
+	var dblClick = function(evt) {
+		var evt_target = evt.target;
+		var parent = evt_target.parentNode;
+		var mouse_target = getMouseTarget(evt);
+		var tagName = mouse_target.tagName;
+
+		if(parent === current_group) return;
+		
+		if(tagName === 'text' && current_mode !== 'textedit') {
+			var pt = transformPoint( evt.pageX, evt.pageY, root_sctm );
+			textActions.select(mouse_target, pt.x, pt.y);
+		}
+		
+		if((tagName === "g" || tagName === "a") && getRotationAngle(mouse_target)) {
+			// TODO: Allow method of in-group editing without having to do 
+			// this (similar to editing rotated paths)
+		
+			// Ungroup and regroup
+			pushGroupProperties(mouse_target);
+			mouse_target = selectedElements[0];
+			clearSelection(true);
+		}
+		// Reset context
+		if(current_group) {
+			leaveContext();
+		}
+		
+		if((parent.tagName !== 'g' && parent.tagName !== 'a') ||
+			parent === getCurrentDrawing().getCurrentLayer() ||
+			mouse_target === selectorManager.selectorParentGroup)
+		{
+			// Escape from in-group edit
+			return;
+		}
+		setContext(mouse_target);
+	}
+
+	// prevent links from being followed in the canvas
+	var handleLinkInCanvas = function(e) {
+		e.preventDefault();
+		return false;
+	};
+	
+	// Added mouseup to the container here.
+	// TODO(codedread): Figure out why after the Closure compiler, the window mouseup is ignored.
+	$(container).mousedown(mouseDown).mousemove(mouseMove).click(handleLinkInCanvas).dblclick(dblClick).mouseup(mouseUp);
+//	$(window).mouseup(mouseUp);
+	
+	$(container).bind("mousewheel DOMMouseScroll", function(e){
+		if(!e.shiftKey) return;
+		e.preventDefault();
+
+		root_sctm = svgcontent.getScreenCTM().inverse();
+		var pt = transformPoint( e.pageX, e.pageY, root_sctm );
+		var bbox = {
+			'x': pt.x,
+			'y': pt.y,
+			'width': 0,
+			'height': 0
+		};
+
+		// Respond to mouse wheel in IE/Webkit/Opera.
+		// (It returns up/dn motion in multiples of 120)
+		if(e.wheelDelta) {
+			if (e.wheelDelta >= 120) {
+				bbox.factor = 2;
+			} else if (e.wheelDelta <= -120) {
+				bbox.factor = .5;
+			}
+		} else if(e.detail) {
+			if (e.detail > 0) {
+				bbox.factor = .5;
+			} else if (e.detail < 0) {
+				bbox.factor = 2;			
+			}				
+		}
+		
+		if(!bbox.factor) return;
+		call("zoomed", bbox);
+	});
+	
+}());
+
+// Function: preventClickDefault
+// Prevents default browser click behaviour on the given element
+//
+// Parameters:
+// img - The DOM element to prevent the cilck on
+var preventClickDefault = function(img) {
+	$(img).click(function(e){e.preventDefault()});
+}
+
+// Group: Text edit functions
+// Functions relating to editing text elements
+var textActions = canvas.textActions = function() {
+	var curtext;
+	var textinput;
+	var cursor;
+	var selblock;
+	var blinker;
+	var chardata = [];
+	var textbb, transbb;
+	var matrix;
+	var last_x, last_y;
+	var allow_dbl;
+	
+	function setCursor(index) {
+		var empty = (textinput.value === "");
+		$(textinput).focus();
+	
+		if(!arguments.length) {
+			if(empty) {
+				index = 0;
+			} else {
+				if(textinput.selectionEnd !== textinput.selectionStart) return;
+				index = textinput.selectionEnd;
+			}
+		}
+		
+		var charbb;
+		charbb = chardata[index];
+		if(!empty) {
+			textinput.setSelectionRange(index, index);
+		}
+		cursor = getElem("text_cursor");
+		if (!cursor) {
+			cursor = document.createElementNS(svgns, "line");
+			assignAttributes(cursor, {
+				'id': "text_cursor",
+				'stroke': "#333",
+				'stroke-width': 1
+			});
+			cursor = getElem("selectorParentGroup").appendChild(cursor);
+		}
+		
+		if(!blinker) {
+			blinker = setInterval(function() {
+				var show = (cursor.getAttribute('display') === 'none');
+				cursor.setAttribute('display', show?'inline':'none');
+			}, 600);
+
+		}
+		
+		
+		var start_pt = ptToScreen(charbb.x, textbb.y);
+		var end_pt = ptToScreen(charbb.x, (textbb.y + textbb.height));
+		
+		assignAttributes(cursor, {
+			x1: start_pt.x,
+			y1: start_pt.y,
+			x2: end_pt.x,
+			y2: end_pt.y,
+			visibility: 'visible',
+			display: 'inline'
+		});
+		
+		if(selblock) selblock.setAttribute('d', 'M 0 0');
+	}
+	
+	function setSelection(start, end, skipInput) {
+		if(start === end) {
+			setCursor(end);
+			return;
+		}
+	
+		if(!skipInput) {
+			textinput.setSelectionRange(start, end);
+		}
+		
+		selblock = getElem("text_selectblock");
+		if (!selblock) {
+
+			selblock = document.createElementNS(svgns, "path");
+			assignAttributes(selblock, {
+				'id': "text_selectblock",
+				'fill': "green",
+				'opacity': .5,
+				'style': "pointer-events:none"
+			});
+			getElem("selectorParentGroup").appendChild(selblock);
+		}
+
+		
+		var startbb = chardata[start];
+		
+		var endbb = chardata[end];
+		
+		cursor.setAttribute('visibility', 'hidden');
+		
+		var tl = ptToScreen(startbb.x, textbb.y),
+			tr = ptToScreen(startbb.x + (endbb.x - startbb.x), textbb.y),
+			bl = ptToScreen(startbb.x, textbb.y + textbb.height),
+			br = ptToScreen(startbb.x + (endbb.x - startbb.x), textbb.y + textbb.height);
+		
+		
+		var dstr = "M" + tl.x + "," + tl.y
+					+ " L" + tr.x + "," + tr.y
+					+ " " + br.x + "," + br.y
+					+ " " + bl.x + "," + bl.y + "z";
+		
+		assignAttributes(selblock, {
+			d: dstr,
+			'display': 'inline'
+		});
+	}
+	
+	function getIndexFromPoint(mouse_x, mouse_y) {
+		// Position cursor here
+		var pt = svgroot.createSVGPoint();
+		pt.x = mouse_x;
+		pt.y = mouse_y;
+
+		// No content, so return 0
+		if(chardata.length == 1) return 0;
+		// Determine if cursor should be on left or right of character
+		var charpos = curtext.getCharNumAtPosition(pt);
+		if(charpos < 0) {
+			// Out of text range, look at mouse coords
+			charpos = chardata.length - 2;
+			if(mouse_x <= chardata[0].x) {
+				charpos = 0;
+			}
+		} else if(charpos >= chardata.length - 2) {
+			charpos = chardata.length - 2;
+		}
+		var charbb = chardata[charpos];
+		var mid = charbb.x + (charbb.width/2);
+		if(mouse_x > mid) {
+			charpos++;
+		}
+		return charpos;
+	}
+	
+	function setCursorFromPoint(mouse_x, mouse_y) {
+		setCursor(getIndexFromPoint(mouse_x, mouse_y));
+	}
+	
+	function setEndSelectionFromPoint(x, y, apply) {
+		var i1 = textinput.selectionStart;
+		var i2 = getIndexFromPoint(x, y);
+		
+		var start = Math.min(i1, i2);
+		var end = Math.max(i1, i2);
+		setSelection(start, end, !apply);
+	}
+		
+	function screenToPt(x_in, y_in) {
+		var out = {
+			x: x_in,
+			y: y_in
+		}
+		
+		out.x /= current_zoom;
+		out.y /= current_zoom;			
+
+		if(matrix) {
+			var pt = transformPoint(out.x, out.y, matrix.inverse());
+			out.x = pt.x;
+			out.y = pt.y;
+		}
+		
+		return out;
+	}	
+	
+	function ptToScreen(x_in, y_in) {
+		var out = {
+			x: x_in,
+			y: y_in
+		}
+		
+		if(matrix) {
+			var pt = transformPoint(out.x, out.y, matrix);
+			out.x = pt.x;
+			out.y = pt.y;
+		}
+		
+		out.x *= current_zoom;
+		out.y *= current_zoom;
+		
+		return out;
+	}
+	
+	function hideCursor() {
+		if(cursor) {
+			cursor.setAttribute('visibility', 'hidden');
+		}
+	}
+	
+	function selectAll(evt) {
+		setSelection(0, curtext.textContent.length);
+		$(this).unbind(evt);
+	}
+
+	function selectWord(evt) {
+		if(!allow_dbl || !curtext) return;
+	
+		var ept = transformPoint( evt.pageX, evt.pageY, root_sctm ),
+			mouse_x = ept.x * current_zoom,
+			mouse_y = ept.y * current_zoom;
+		var pt = screenToPt(mouse_x, mouse_y);
+		
+		var index = getIndexFromPoint(pt.x, pt.y);
+		var str = curtext.textContent;
+		var first = str.substr(0, index).replace(/[a-z0-9]+$/i, '').length;
+		var m = str.substr(index).match(/^[a-z0-9]+/i);
+		var last = (m?m[0].length:0) + index;
+		setSelection(first, last);
+		
+		// Set tripleclick
+		$(evt.target).click(selectAll);
+		setTimeout(function() {
+			$(evt.target).unbind('click', selectAll);
+		}, 300);
+		
+	}
+
+	return {
+		select: function(target, x, y) {
+			curtext = target;
+			textActions.toEditMode(x, y);
+		},
+		start: function(elem) {
+			curtext = elem;
+			textActions.toEditMode();
+		},
+		mouseDown: function(evt, mouse_target, start_x, start_y) {
+			var pt = screenToPt(start_x, start_y);
+		
+			textinput.focus();
+			setCursorFromPoint(pt.x, pt.y);
+			last_x = start_x;
+			last_y = start_y;
+			
+			// TODO: Find way to block native selection
+		},
+		mouseMove: function(mouse_x, mouse_y) {
+			var pt = screenToPt(mouse_x, mouse_y);
+			setEndSelectionFromPoint(pt.x, pt.y);
+		},			
+		mouseUp: function(evt, mouse_x, mouse_y) {
+			var pt = screenToPt(mouse_x, mouse_y);
+			
+			setEndSelectionFromPoint(pt.x, pt.y, true);
+			
+			// TODO: Find a way to make this work: Use transformed BBox instead of evt.target 
+// 				if(last_x === mouse_x && last_y === mouse_y
+// 					&& !svgedit.math.rectsIntersect(transbb, {x: pt.x, y: pt.y, width:0, height:0})) {
+// 					textActions.toSelectMode(true);				
+// 				}
+
+			if(
+				evt.target !== curtext
+				&&	mouse_x < last_x + 2
+				&& mouse_x > last_x - 2
+				&&	mouse_y < last_y + 2
+				&& mouse_y > last_y - 2) {
+
+				textActions.toSelectMode(true);
+			}
+
+		},
+		setCursor: setCursor,
+		toEditMode: function(x, y) {
+		  selectOnly([curtext], false)
+			allow_dbl = false;
+			current_mode = "textedit";
+    	selectorManager.requestSelector(curtext).showGrips(false);
+		
+			// Make selector group accept clicks
+			var sel = selectorManager.requestSelector(curtext).selectorRect;
+			
+			textActions.init();
+
+			$(curtext).css('cursor', 'text');
+			
+			if(!arguments.length) {
+				setCursor();
+			} else {
+				var pt = screenToPt(x, y);
+				setCursorFromPoint(pt.x, pt.y);
+			}
+			
+			setTimeout(function() {
+				allow_dbl = true;
+			}, 300);
+		},
+		toSelectMode: function(selectElem) {
+			current_mode = "select";
+			clearInterval(blinker);
+			blinker = null;
+			if(selblock) $(selblock).attr('display','none');
+			if(cursor) $(cursor).attr('visibility','hidden');
+			$(curtext).css('cursor', 'move');
+			
+			if(selectElem) {
+				clearSelection();
+				$(curtext).css('cursor', 'move');
+				
+				call("selected", [curtext]);
+				addToSelection([curtext], true);
+			}
+			if(curtext && !curtext.textContent.length) {
+				// No content, so delete
+				canvas.deleteSelectedElements();
+			}
+			
+			$(textinput).blur();
+			
+			curtext = false;
+			
+// 				if(svgedit.browser.supportsEditableText()) {
+// 					curtext.removeAttribute('editable');
+// 				}
+		},
+		setInputElem: function(elem) {
+			textinput = elem;
+// 			$(textinput).blur(hideCursor);
+		},
+		clear: function() {
+			if(current_mode == "textedit") {
+				textActions.toSelectMode();
+			}
+		},
+		init: function(inputElem) {
+			if(!curtext) return;
+
+// 				if(svgedit.browser.supportsEditableText()) {
+// 					curtext.select();
+// 					return;
+// 				}
+		
+			if(!curtext.parentNode) {
+				// Result of the ffClone, need to get correct element
+				curtext = selectedElements[0];
+				selectorManager.requestSelector(curtext).showGrips(false);
+			}
+			
+			var str = curtext.textContent;
+			var len = str.length;
+			
+			var xform = curtext.getAttribute('transform');
+
+			textbb = svgedit.utilities.getBBox(curtext);
+			
+			matrix = xform?getMatrix(curtext):null;
+
+			chardata = Array(len);
+			textinput.focus();
+			
+			$(curtext).unbind('dblclick', selectWord).dblclick(selectWord);
+			
+			if(!len) {
+				var end = {x: textbb.x + (textbb.width/2), width: 0};
+			}
+			
+			for(var i=0; i<len; i++) {
+				var start = curtext.getStartPositionOfChar(i);
+				var end = curtext.getEndPositionOfChar(i);
+				
+				if(!svgedit.browser.supportsGoodTextCharPos()) {
+					var offset = canvas.contentW * current_zoom;
+					start.x -= offset;
+					end.x -= offset;
+					
+					start.x /= current_zoom;
+					end.x /= current_zoom;
+				}
+				
+				// Get a "bbox" equivalent for each character. Uses the
+				// bbox data of the actual text for y, height purposes
+				
+				// TODO: Decide if y, width and height are actually necessary
+				chardata[i] = {
+					x: start.x,
+					y: textbb.y, // start.y?
+					width: end.x - start.x,
+					height: textbb.height
+				};
+			}
+			
+			// Add a last bbox for cursor at end of text
+			chardata.push({
+				x: end.x,
+				width: 0
+			});
+			setSelection(textinput.selectionStart, textinput.selectionEnd, true);
+		}
+	}
+}();
+
+// TODO: Migrate all of this code into path.js
+// Group: Path edit functions
+// Functions relating to editing path elements
+var pathActions = canvas.pathActions = function() {
+	
+	var subpath = false;
+	var current_path;
+	var newPoint, firstCtrl;
+	
+	function resetD(p) {
+		p.setAttribute("d", pathActions.convertPath(p));
+	}
+
+	// TODO: Move into path.js
+		svgedit.path.Path.prototype.endChanges = function(text) {
+			if(svgedit.browser.isWebkit()) resetD(this.elem);
+			var cmd = new ChangeElementCommand(this.elem, {d: this.last_d}, text);
+			addCommandToHistory(cmd);
+			call("changed", [this.elem]);
+		}
+
+		svgedit.path.Path.prototype.addPtsToSelection = function(indexes) {
+			if(!$.isArray(indexes)) indexes = [indexes];
+			for(var i=0; i< indexes.length; i++) {
+				var index = indexes[i];
+				var seg = this.segs[index];
+				if(seg.ptgrip) {
+					if(this.selected_pts.indexOf(index) == -1 && index >= 0) {
+						this.selected_pts.push(index);
+					}
+				}
+			};
+			this.selected_pts.sort();
+			var i = this.selected_pts.length,
+				grips = new Array(i);
+			// Loop through points to be selected and highlight each
+			while(i--) {
+				var pt = this.selected_pts[i];
+				var seg = this.segs[pt];
+				seg.select(true);
+				grips[i] = seg.ptgrip;
+			}
+			// TODO: Correct this:
+			pathActions.canDeleteNodes = true;
+			
+			pathActions.closed_subpath = this.subpathIsClosed(this.selected_pts[0]);
+			
+			call("selected", grips);
+		}
+
+	var current_path = null,
+		drawn_path = null,
+		hasMoved = false,
+		stretchy = null;
+
+	this.lastCtrlPoint = [0, 0];
+	
+	// This function converts a polyline (created by the fh_path tool) into
+	// a path element and coverts every three line segments into a single bezier
+	// curve in an attempt to smooth out the free-hand
+	var smoothPolylineIntoPath = function(element) {
+		var points = element.points;
+		var N = points.numberOfItems;
+		if (N >= 4) {
+			// loop through every 3 points and convert to a cubic bezier curve segment
+			// 
+			// NOTE: this is cheating, it means that every 3 points has the potential to 
+			// be a corner instead of treating each point in an equal manner.  In general,
+			// this technique does not look that good.
+			// 
+			// I am open to better ideas!
+			// 
+			// Reading:
+			// - http://www.efg2.com/Lab/Graphics/Jean-YvesQueinecBezierCurves.htm
+			// - http://www.codeproject.com/KB/graphics/BezierSpline.aspx?msg=2956963
+			// - http://www.ian-ko.com/ET_GeoWizards/UserGuide/smooth.htm
+			// - http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/Bezier/bezier-der.html
+			var curpos = points.getItem(0), prevCtlPt = null;
+			var d = [];
+			d.push(["M",curpos.x,",",curpos.y," C"].join(""));
+			for (var i = 1; i <= (N-4); i += 3) {
+				var ct1 = points.getItem(i);
+				var ct2 = points.getItem(i+1);
+				var end = points.getItem(i+2);
+				
+				// if the previous segment had a control point, we want to smooth out
+				// the control points on both sides
+				if (prevCtlPt) {
+					var newpts = svgedit.path.smoothControlPoints( prevCtlPt, ct1, curpos );
+					if (newpts && newpts.length == 2) {
+						var prevArr = d[d.length-1].split(',');
+						prevArr[2] = newpts[0].x;
+						prevArr[3] = newpts[0].y;
+						d[d.length-1] = prevArr.join(',');
+						ct1 = newpts[1];
+					}
+				}
+				
+				d.push([ct1.x,ct1.y,ct2.x,ct2.y,end.x,end.y].join(','));
+				
+				curpos = end;
+				prevCtlPt = ct2;
+			}
+			// handle remaining line segments
+			d.push("L");
+			for(;i < N;++i) {
+				var pt = points.getItem(i);
+				d.push([pt.x,pt.y].join(","));
+			}
+			d = d.join(" ");
+
+			// create new path element
+			element = addSvgElementFromJson({
+				"element": "path",
+				"curStyles": true,
+				"attr": {
+					"id": getId(),
+					"d": d,
+					"fill": "none"
+				}
+			});
+			// No need to call "changed", as this is already done under mouseUp
+		}
+		return element;
+	};
+
+	return {
+		mouseDown: function(evt, mouse_target, start_x, start_y) {
+			if(current_mode === "path") {
+				mouse_x = start_x;
+				mouse_y = start_y;
+				
+				var x = mouse_x/current_zoom,
+					y = mouse_y/current_zoom,
+					stretchy = getElem("path_stretch_line");
+				newPoint = [x, y];	
+				
+				if(curConfig.gridSnapping){
+					x = snapToGrid(x);
+					y = snapToGrid(y);
+					mouse_x = snapToGrid(mouse_x);
+					mouse_y = snapToGrid(mouse_y);
+				}
+
+				if (!stretchy) {
+					stretchy = document.createElementNS(svgns, "path");
+					assignAttributes(stretchy, {
+						'id': "path_stretch_line",
+						'stroke': "#22C",
+						'stroke-width': "0.5",
+						'fill': 'none'
+					});
+					stretchy = getElem("selectorParentGroup").appendChild(stretchy);
+				}
+				stretchy.setAttribute("display", "inline");
+
+				this.stretchy = stretchy;
+				
+				var keep = null;
+				
+				// if pts array is empty, create path element with M at current point
+				if (!drawn_path) {
+					d_attr = "M" + x + "," + y + " ";
+					drawn_path = addSvgElementFromJson({
+						"element": "path",
+						"curStyles": true,
+						"attr": {
+							"d": d_attr,
+							"id": getNextId(),
+							"opacity": cur_shape.opacity / 2
+						}
+					});
+					// set stretchy line to first point
+					stretchy.setAttribute('d', ['M', mouse_x, mouse_y, mouse_x, mouse_y].join(' '));
+					var index = subpath ? svgedit.path.path.segs.length : 0;
+					svgedit.path.addPointGrip(index, mouse_x, mouse_y);
+					svgedit.path.first_grip = null;
+				}
+				else {
+					// determine if we clicked on an existing point
+					var seglist = drawn_path.pathSegList;
+					var i = seglist.numberOfItems;
+					var FUZZ = 6/current_zoom;
+					var clickOnPoint = false;
+					while(i) {
+						i --;
+						var item = seglist.getItem(i);
+						var px = item.x, py = item.y;
+						// found a matching point
+						if ( x >= (px-FUZZ) && x <= (px+FUZZ) && y >= (py-FUZZ) && y <= (py+FUZZ) ) {
+							clickOnPoint = true;
+							break;
+						}
+					}
+					
+					// get path element that we are in the process of creating
+					var id = getId();
+				
+					// Remove previous path object if previously created
+					svgedit.path.removePath_(id);
+					
+					var newpath = getElem(id);
+					
+					var len = seglist.numberOfItems;
+					// if we clicked on an existing point, then we are done this path, commit it
+					// (i,i+1) are the x,y that were clicked on
+					if (clickOnPoint) {
+						// if clicked on any other point but the first OR
+						// the first point was clicked on and there are less than 3 points
+						// then leave the path open
+						// otherwise, close the path
+						if (i <= 1 && len >= 2) {
+
+							// Create end segment
+							var abs_x = seglist.getItem(0).x;
+							var abs_y = seglist.getItem(0).y;
+							var grip_x = svgedit.path.first_grip ? svgedit.path.first_grip[0]/current_zoom : seglist.getItem(0).x;
+							var grip_y = svgedit.path.first_grip ? svgedit.path.first_grip[1]/current_zoom : seglist.getItem(0).y;
+							
+
+							var s_seg = stretchy.pathSegList.getItem(1);
+							if(s_seg.pathSegType === 4) {
+								var newseg = drawn_path.createSVGPathSegLinetoAbs(abs_x, abs_y);
+							} else {
+								var newseg = drawn_path.createSVGPathSegCurvetoCubicAbs(
+									abs_x,
+									abs_y,
+									s_seg.x1 / current_zoom,
+									s_seg.y1 / current_zoom,
+									grip_x,
+									grip_y
+								);
+							}
+							var endseg = drawn_path.createSVGPathSegClosePath();
+							seglist.appendItem(newseg);
+							seglist.appendItem(endseg);
+						} else if(len < 3) {
+							keep = false;
+							return keep;
+						}
+						$(stretchy).remove();
+						
+						// this will signal to commit the path
+						element = newpath;
+						drawn_path = null;
+						started = false;
+						if(subpath) {
+
+							if(svgedit.path.path.matrix) {
+								remapElement(newpath, {}, svgedit.path.path.matrix.inverse());
+							}
+						
+							var new_d = newpath.getAttribute("d");
+							var orig_d = $(svgedit.path.path.elem).attr("d");
+							$(svgedit.path.path.elem).attr("d", orig_d + new_d);
+							$(newpath).remove();
+							if(svgedit.path.path.matrix) {
+								svgedit.path.recalcRotatedPath();
+							}
+							svgedit.path.path.init();
+							pathActions.toEditMode(svgedit.path.path.elem);
+							svgedit.path.path.selectPt();
+							return false;
+						}
+
+					}
+					// else, create a new point, update path element
+					else {
+						// Checks if current target or parents are #svgcontent
+						if(!$.contains(container, getMouseTarget(evt))) {
+							// Clicked outside canvas, so don't make point
+							console.log("Clicked outside canvas");
+							return false;
+						}
+
+						var num = drawn_path.pathSegList.numberOfItems;
+						var last = drawn_path.pathSegList.getItem(num -1);
+						var lastx = last.x, lasty = last.y;
+
+						if(evt.shiftKey) { var xya = snapToAngle(lastx,lasty,x,y); x=xya.x; y=xya.y; }
+						
+						// Use the segment defined by stretchy
+						var s_seg = stretchy.pathSegList.getItem(1);
+						if(s_seg.pathSegType === 4) {
+							var newseg = drawn_path.createSVGPathSegLinetoAbs(round(x), round(y));
+						} else {
+							var newseg = drawn_path.createSVGPathSegCurvetoCubicAbs(
+								round(x),
+								round(y),
+								s_seg.x1 / current_zoom,
+								s_seg.y1 / current_zoom,
+								s_seg.x2 / current_zoom,
+								s_seg.y2 / current_zoom
+							);
+						}
+						
+						drawn_path.pathSegList.appendItem(newseg);
+						
+						x *= current_zoom;
+						y *= current_zoom;
+						
+						// update everything to the latest point
+						stretchy.setAttribute('d', ['M', x, y, x, y].join(' '));
+						var pointGrip1 = svgedit.path.addCtrlGrip('1c1');
+						var pointGrip2 = svgedit.path.addCtrlGrip('0c2');
+						var ctrlLine = svgedit.path.getCtrlLine(1);
+						var ctrlLine2 = svgedit.path.getCtrlLine(2);
+
+						pointGrip1.setAttribute('cx', x);
+						pointGrip1.setAttribute('cy', y);
+						pointGrip2.setAttribute('cx', x);
+						pointGrip2.setAttribute('cy', y);
+
+						ctrlLine.setAttribute('x1', x);
+						ctrlLine.setAttribute('x2', x);
+						ctrlLine.setAttribute('y1', y);
+						ctrlLine.setAttribute('y2', y);
+
+						ctrlLine2.setAttribute('x1', x);
+						ctrlLine2.setAttribute('x2', x);
+						ctrlLine2.setAttribute('y1', y);
+						ctrlLine2.setAttribute('y2', y);
+
+						var index = num;
+						if(subpath) index += svgedit.path.path.segs.length;
+						svgedit.path.addPointGrip(index, x, y);
+					}
+   					keep = true;
+				}
+				return;
+			}
+			
+			// TODO: Make sure current_path isn't null at this point
+			if(!svgedit.path.path) return;
+			
+			svgedit.path.path.storeD();
+			
+			var id = evt.target.id;
+			if (id.substr(0,14) == "pathpointgrip_") {
+				// Select this point
+				var cur_pt = svgedit.path.path.cur_pt = parseInt(id.substr(14));
+				svgedit.path.path.dragging = [start_x, start_y];
+				var seg = svgedit.path.path.segs[cur_pt];
+				
+				// only clear selection if shift is not pressed (otherwise, add 
+				// node to selection)
+				if (!evt.shiftKey) {
+					if(svgedit.path.path.selected_pts.length <= 1 || !seg.selected) {
+						svgedit.path.path.clearSelection();
+					}
+					svgedit.path.path.addPtsToSelection(cur_pt);
+				} else if(seg.selected) {
+					svgedit.path.path.removePtFromSelection(cur_pt);
+				} else {
+					svgedit.path.path.addPtsToSelection(cur_pt);
+				}
+			} else if(id.indexOf("ctrlpointgrip_") == 0) {
+				svgedit.path.path.dragging = [start_x, start_y];
+				
+				var parts = id.split('_')[1].split('c');
+				var cur_pt = parts[0]-0;
+				var ctrl_num = parts[1]-0;
+				var num = ctrl_num;
+				var path = svgedit.path.path.segs[cur_pt];
+
+				svgedit.path.path.selectPt(cur_pt, ctrl_num);
+
+				/////////////////
+				//check if linked
+				var seg, anum, pt;
+				if (num == 2) {
+					anum = 1;
+					seg = path.next;
+					if(!seg) return;
+					pt = path.item;
+				} else {
+					anum = 2;
+					seg = path.prev;
+					if(!seg) return;
+					pt = seg.item;
+				}
+
+				var get_distance = function(pt1, pt2) {
+					var a = pt1.x - pt2.x;
+					var b = pt1.y - pt2.y;
+					return Math.sqrt(Math.pow(a, 2) + Math.pow(b, 2));
+				}
+
+				function get_angle(pt1, pt2)
+				{
+					var dy = pt1.y - pt2.y;
+					var dx = pt1.x - pt2.x;
+					var theta = Math.atan2(dy, dx);
+					return theta *= 180/Math.PI // rads to degs
+				}
+
+				var grip = {
+					x: path.item["x" + num],
+					y: path.item["y" + num]
+				}
+
+				if (num == 2) {
+					var node = {
+						x: path.item["x"],
+						y: path.item["y"]
+					}
+				}
+				else {
+					var node = {
+						x: seg.item["x"],
+						y: seg.item["y"]
+					}
+				}
+
+				var pair = {
+					x: seg.item["x" + anum],
+					y: seg.item["y" + anum]
+				}
+
+				var distance_between_node_grip = get_distance(grip, node);
+				var distance_between_pair_grip = get_distance(pair, node);
+				var angle_grip = Math.round(get_angle(grip, node), 0);
+				var angle_pair = Math.round(get_angle(pair, node), 0);
+				var is_complementary = (Math.abs(angle_grip - angle_pair) == 180);
+				//console.log("distance: " + Math.abs(distance_between_node_grip - distance_between_pair_grip) + " angle = " + (Math.round(Math.abs(get_angle(grip, node)) + Math.abs(get_angle(pair, node)), 0)))
+				if (Math.abs(distance_between_node_grip - distance_between_pair_grip) < 5 && is_complementary) {
+					svgedit.path.setLinkControlPoints(true);
+					svgedit.path.is_linked = true;
+				}
+				else {
+					svgedit.path.setLinkControlPoints(false);
+					svgedit.path.is_linked = false;
+				}
+
+
+				///////
+
+
+			}
+
+			// Start selection box
+			if(!svgedit.path.path.dragging) {
+				if (rubberBox == null) {
+					rubberBox = selectorManager.getRubberBandBox();
+				}
+				assignAttributes(rubberBox, {
+						'x': start_x * current_zoom,
+						'y': start_y * current_zoom,
+						'width': 0,
+						'height': 0,
+						'display': 'inline'
+				}, 100);
+			}
+		},
+		mouseMove: function(evt, mouse_x, mouse_y) {
+			hasMoved = true;
+			var is_linked = !evt.altKey;
+			if(current_mode === "path") {
+				if(!drawn_path) return;
+				var seglist = drawn_path.pathSegList;
+				var index = seglist.numberOfItems - 1;
+				var pointGrip1 = svgedit.path.addCtrlGrip('1c1'); 
+				var pointGrip2 = svgedit.path.addCtrlGrip('0c2');
+
+				if(newPoint) {
+					// First point
+
+					// Set control points
+					var current_pointGrip2_x = pointGrip2.getAttribute('cx') / current_zoom || 0;
+					var current_pointGrip2_y = pointGrip2.getAttribute('cy') / current_zoom || 0;
+
+					// dragging pointGrip1
+					pointGrip1.setAttribute('cx', mouse_x);
+					pointGrip1.setAttribute('cy', mouse_y);
+					pointGrip1.setAttribute('display', 'inline');
+
+					var pt_x = newPoint[0];
+					var pt_y = newPoint[1];
+					
+					// set curve
+					var seg = seglist.getItem(index);
+					var cur_x = mouse_x / current_zoom;
+					var cur_y = mouse_y / current_zoom;
+				  var alt_x = (is_linked) ?  (pt_x + (pt_x - cur_x)) : current_pointGrip2_x;
+				  var alt_y = (is_linked) ?  (pt_y + (pt_y - cur_y)) : current_pointGrip2_y;
+					
+					
+				  pointGrip2.setAttribute('cx', alt_x * current_zoom);
+				  pointGrip2.setAttribute('cy', alt_y * current_zoom);
+				  pointGrip2.setAttribute('display', 'inline');
+					
+					
+					var ctrlLine = svgedit.path.getCtrlLine(1);
+					var ctrlLine2 = svgedit.path.getCtrlLine(2);
+					assignAttributes(ctrlLine, {
+						x1: mouse_x,
+						y1: mouse_y,
+						x2: pt_x * current_zoom,
+						y2: pt_y * current_zoom,
+						display: 'inline'
+					});
+					
+
+					assignAttributes(ctrlLine2, {
+						x1: alt_x * current_zoom,
+						y1: alt_y * current_zoom,
+						x2: pt_x  * current_zoom,
+						y2: pt_y * current_zoom,
+						display: 'inline'
+					});
+
+
+					if(index === 0) {
+						firstCtrl = [mouse_x, mouse_y];
+					} else {
+						var last_x, last_y;
+						
+						var last = seglist.getItem(index - 1);
+						var last_x = last.x;
+						var last_y = last.y
+	
+						if(last.pathSegType === 6) {
+							last_x += (last_x - last.x2);
+							last_y += (last_y - last.y2);
+						} else if(firstCtrl) {
+							last_x = firstCtrl[0]/current_zoom;
+							last_y = firstCtrl[1]/current_zoom;
+						}
+						svgedit.path.replacePathSeg(6, index, [pt_x, pt_y, this.lastCtrlPoint[0]/current_zoom, this.lastCtrlPoint[1]/current_zoom, alt_x, alt_y], drawn_path);
+					}
+				} else {
+					var stretchy = this.stretchy;
+					if (stretchy) {
+						var prev = seglist.getItem(index);
+						var lastpoint = (evt.target.id === 'pathpointgrip_0');
+
+						var lastgripx = mouse_x;
+						var lastgripy = mouse_y;
+
+						if (lastpoint && svgedit.path.first_grip) {
+							lastgripx = svgedit.path.first_grip[0];
+							lastgripy = svgedit.path.first_grip[1];
+						}
+
+						if(prev.pathSegType === 6) {
+							var prev_x = this.lastCtrlPoint[0]/current_zoom || prev.x + (prev.x - prev.x2);
+							var prev_y = this.lastCtrlPoint[1]/current_zoom || prev.y + (prev.y - prev.y2);
+							svgedit.path.replacePathSeg(6, 1, [mouse_x, mouse_y, prev_x * current_zoom, prev_y * current_zoom, lastgripx, lastgripy], stretchy);							
+						} else if(firstCtrl) {
+							svgedit.path.replacePathSeg(6, 1, [mouse_x, mouse_y, firstCtrl[0], firstCtrl[1], mouse_x, mouse_y], stretchy);
+						} else {
+							svgedit.path.replacePathSeg(4, 1, [mouse_x, mouse_y], stretchy);
+						}
+					}
+				}
+				return;
+			}
+			// if we are dragging a point, let's move it
+			if (svgedit.path.path.dragging) {
+				var pt = svgedit.path.getPointFromGrip({
+					x: svgedit.path.path.dragging[0],
+					y: svgedit.path.path.dragging[1]
+				}, svgedit.path.path);
+				var mpt = svgedit.path.getPointFromGrip({
+					x: mouse_x,
+					y: mouse_y
+				}, svgedit.path.path);
+				var diff_x = mpt.x - pt.x;
+				var diff_y = mpt.y - pt.y;
+
+				svgedit.path.path.dragging = [mouse_x, mouse_y];
+				if (!is_linked || !svgedit.path.is_linked) svgedit.path.setLinkControlPoints(false);
+				else svgedit.path.setLinkControlPoints(true);
+
+				if(svgedit.path.path.dragctrl) {
+					svgedit.path.path.moveCtrl(diff_x, diff_y);
+				} else {
+					svgedit.path.path.movePts(diff_x, diff_y);
+				}
+			} else {
+				//select
+				svgedit.path.path.selected_pts = [];
+				svgedit.path.path.eachSeg(function(i) {
+					var seg = this;
+					if(!seg.next && !seg.prev) return;
+					var item = seg.item;
+					var rbb = rubberBox.getBBox();
+					
+					var pt = svgedit.path.getGripPt(seg);
+					var pt_bb = {
+						x: pt.x,
+						y: pt.y,
+						width: 0,
+						height: 0
+					};
+				
+					var sel = svgedit.math.rectsIntersect(rbb, pt_bb);
+
+					this.select(sel);
+					//Note that addPtsToSelection is not being run
+					if(sel) svgedit.path.path.selected_pts.push(seg.index);
+				});
+
+			}
+		}, 
+		mouseUp: function(evt, element, mouse_x, mouse_y) {
+			var lastpointgrip = getElem('ctrlpointgrip_1c1');
+			var firstpointgrip = getElem('ctrlpointgrip_0c2');
+			if (lastpointgrip)
+				this.lastCtrlPoint = [lastpointgrip.getAttribute('cx'), lastpointgrip.getAttribute('cy')];
+			else
+				this.lastCtrlPoint = [mouse_x, mouse_y]
+			if (!svgedit.path.first_grip && firstpointgrip) {
+				svgedit.path.first_grip = [firstpointgrip.getAttribute('cx'), firstpointgrip.getAttribute('cy')];
+			}
+			// Create mode
+			if(current_mode === "path") {
+				newPoint = null;
+				if(!drawn_path) {
+					element = getElem(getId());
+					started = false;
+					firstCtrl = null;
+				}
+
+				return {
+					keep: true,
+					element: element
+				}
+			}
+			
+			// Edit mode
+			
+			if (svgedit.path.path.dragging) {
+				var last_pt = svgedit.path.path.cur_pt;
+
+				svgedit.path.path.dragging = false;
+				svgedit.path.path.dragctrl = false;
+				svgedit.path.path.update();
+				
+			
+				if(hasMoved) {
+					svgedit.path.path.endChanges("Move path point(s)");
+				} 
+				
+				if(!evt.shiftKey && !hasMoved) {
+					svgedit.path.path.selectPt(last_pt);
+				} 
+			}
+			else if(rubberBox && rubberBox.getAttribute('display') != 'none') {
+				// Done with multi-node-select
+				rubberBox.setAttribute("display", "none");
+				
+				if(rubberBox.getAttribute('width') <= 2 && rubberBox.getAttribute('height') <= 2) {
+					pathActions.toSelectMode(evt.target);
+				}
+				
+			// else, move back to select mode	
+			} else {
+				pathActions.toSelectMode(evt.target);
+			}
+			hasMoved = false;
+		},
+		toEditMode: function(element) {
+			svgedit.path.path = svgedit.path.getPath_(element);
+			current_mode = "pathedit";
+			clearSelection();
+			svgedit.path.path.show(true).update();
+			svgedit.path.path.oldbbox = svgedit.utilities.getBBox(svgedit.path.path.elem);
+			subpath = false;
+		},
+		toSelectMode: function(elem) {
+			var selPath = (elem == svgedit.path.path.elem);
+			current_mode = "select";
+			svgedit.path.path.show(false);
+			current_path = false;
+			clearSelection();
+			
+			if(svgedit.path.path.matrix) {
+				// Rotated, so may need to re-calculate the center
+				svgedit.path.recalcRotatedPath();
+			}
+			
+			if(selPath) {
+				call("selected", [elem]);
+				addToSelection([elem], true);
+			}
+		},
+		addSubPath: function(on) {
+			if(on) {
+				// Internally we go into "path" mode, but in the UI it will
+				// still appear as if in "pathedit" mode.
+				current_mode = "path";
+				subpath = true;
+			} else {
+				pathActions.clear(true);
+				pathActions.toEditMode(svgedit.path.path.elem);
+			}
+		},
+		select: function(target) {
+			if (current_path === target) {
+				pathActions.toEditMode(target);
+				current_mode = "pathedit";
+			} // going into pathedit mode
+			else {
+				current_path = target;
+			}	
+		},
+		reorient: function() {
+			var elem = selectedElements[0];
+			if(!elem) return;
+			var angle = getRotationAngle(elem);
+			if(angle == 0) return;
+			
+			var batchCmd = new BatchCommand("Reorient path");
+			var changes = {
+				d: elem.getAttribute('d'),
+				transform: elem.getAttribute('transform')
+			};
+			batchCmd.addSubCommand(new ChangeElementCommand(elem, changes));
+			clearSelection();
+			this.resetOrientation(elem);
+			
+			addCommandToHistory(batchCmd);
+
+			// Set matrix to null
+			svgedit.path.getPath_(elem).show(false).matrix = null; 
+
+			this.clear();
+	
+			addToSelection([elem], true);
+			call("changed", selectedElements);
+		},
+		
+		clear: function(remove) {
+			current_path = null;
+			if (drawn_path) {
+				var elem = getElem(getId());
+				$(getElem("path_stretch_line")).remove();
+				if (remove) $(elem).remove();
+				$(getElem("pathpointgrip_container")).find('*').attr('display', 'none');
+				drawn_path = firstCtrl = null;
+				started = false;
+			} else if (current_mode == "pathedit") {
+				this.toSelectMode();
+			}
+			if(svgedit.path.path) svgedit.path.path.init().show(false);
+		},
+		resetOrientation: function(path) {
+			if(path == null || path.nodeName != 'path') return false;
+			var tlist = getTransformList(path);
+			var m = transformListToTransform(tlist).matrix;
+			tlist.clear();
+			path.removeAttribute("transform");
+			var segList = path.pathSegList;
+			
+			// Opera/win/non-EN throws an error here.
+			// TODO: Find out why!
+			// Presumed fixed in Opera 10.5, so commented out for now
+			
+// 			try {
+				var len = segList.numberOfItems;
+// 			} catch(err) {
+// 				var fixed_d = pathActions.convertPath(path);
+// 				path.setAttribute('d', fixed_d);
+// 				segList = path.pathSegList;
+// 				var len = segList.numberOfItems;
+// 			}
+			var last_x, last_y;
+
+
+			for (var i = 0; i < len; ++i) {
+				var seg = segList.getItem(i);
+				var type = seg.pathSegType;
+				if(type == 1) continue;
+				var pts = [];
+				$.each(['',1,2], function(j, n) {
+					var x = seg['x'+n], y = seg['y'+n];
+					if(x !== undefined && y !== undefined) {
+						var pt = transformPoint(x, y, m);
+						pts.splice(pts.length, 0, pt.x, pt.y);
+					}
+				});
+				svgedit.path.replacePathSeg(type, i, pts, path);
+			}
+			
+			reorientGrads(path, m);
+
+
+		},
+		zoomChange: function() {
+			if(current_mode == "pathedit") {
+				svgedit.path.path.update();
+			}
+		},
+		getNodePoint: function() {
+			if (!svgedit.path.path) return;
+			var sel_pt = svgedit.path.path.selected_pts.length ? svgedit.path.path.selected_pts[0] : 1;
+
+			var seg = svgedit.path.path.segs[sel_pt];
+			return {
+				x: seg.item.x,
+				y: seg.item.y,
+				type: seg.type
+			};
+		}, 
+		linkControlPoints: function(linkPoints) {
+			svgedit.path.setLinkControlPoints(linkPoints);
+		},
+		clonePathNode: function() {
+			svgedit.path.path.storeD();
+			
+			var sel_pts = svgedit.path.path.selected_pts;
+			var segs = svgedit.path.path.segs;
+			
+			var i = sel_pts.length;
+			var nums = [];
+
+			while(i--) {
+				var pt = sel_pts[i];
+				svgedit.path.path.addSeg(pt);
+				nums.push(pt + i);
+				nums.push(pt + i + 1);
+			}
+			
+			svgedit.path.path.init().addPtsToSelection(nums);
+
+			svgedit.path.path.endChanges("Clone path node(s)");
+		},
+		opencloseSubPath: function() {
+			var sel_pts = svgedit.path.path.selected_pts;
+			// Only allow one selected node for now
+			if(sel_pts.length !== 1) return;
+			
+			var elem = svgedit.path.path.elem;
+			var list = elem.pathSegList;
+
+			var len = list.numberOfItems;
+
+			var index = sel_pts[0];
+			
+			var open_pt = null;
+			var start_item = null;
+
+			// Check if subpath is already open
+			svgedit.path.path.eachSeg(function(i) {
+				if(this.type === 2 && i <= index) {
+					start_item = this.item;
+				}
+				if(i <= index) return true;
+				if(this.type === 2) {
+					// Found M first, so open
+					open_pt = i;
+					return false;
+				} else if(this.type === 1) {
+					// Found Z first, so closed
+					open_pt = false;
+					return false;
+				}
+			});
+			
+			if(open_pt == null) {
+				// Single path, so close last seg
+				open_pt = svgedit.path.path.segs.length - 1;
+			}
+
+			if(open_pt !== false) {
+				// Close this path
+				
+				// Create a line going to the previous "M"
+				var newseg = elem.createSVGPathSegLinetoAbs(start_item.x, start_item.y);
+			
+				var closer = elem.createSVGPathSegClosePath();
+				if(open_pt == svgedit.path.path.segs.length) {
+					list.appendItem(newseg);
+					list.appendItem(closer);
+				} else {
+					svgedit.path.insertItemBefore(elem, closer, open_pt);
+					svgedit.path.insertItemBefore(elem, newseg, open_pt);
+				}
+				
+				svgedit.path.path.init().selectPt(open_pt+1);
+				return;
+			}
+			
+			
+
+			// M 1,1 L 2,2 L 3,3 L 1,1 z // open at 2,2
+			// M 2,2 L 3,3 L 1,1
+			
+			// M 1,1 L 2,2 L 1,1 z M 4,4 L 5,5 L6,6 L 5,5 z 
+			// M 1,1 L 2,2 L 1,1 z [M 4,4] L 5,5 L(M)6,6 L 5,5 z 
+			
+			var seg = svgedit.path.path.segs[index];
+			
+			if(seg.mate) {
+				list.removeItem(index); // Removes last "L"
+				list.removeItem(index); // Removes the "Z"
+				svgedit.path.path.init().selectPt(index - 1);
+				return;
+			}
+			
+			var last_m, z_seg;
+			
+			// Find this sub-path's closing point and remove
+			for(var i=0; i<list.numberOfItems; i++) {
+				var item = list.getItem(i);
+
+				if(item.pathSegType === 2) {
+					// Find the preceding M
+					last_m = i;
+				} else if(i === index) {
+					// Remove it
+					list.removeItem(last_m);
+// 						index--;
+				} else if(item.pathSegType === 1 && index < i) {
+					// Remove the closing seg of this subpath
+					z_seg = i-1;
+					list.removeItem(i);
+					break;
+				}
+			}
+			
+			var num = (index - last_m) - 1;
+			
+			while(num--) {
+				svgedit.path.insertItemBefore(elem, list.getItem(last_m), z_seg);
+			}
+			
+			var pt = list.getItem(last_m);
+			
+			// Make this point the new "M"
+			svgedit.path.replacePathSeg(2, last_m, [pt.x, pt.y]);
+			
+			var i = index
+			
+			svgedit.path.path.init().selectPt(0);
+		},
+		deletePathNode: function() {
+			if(!pathActions.canDeleteNodes) return;
+			svgedit.path.path.storeD();
+			
+			var sel_pts = svgedit.path.path.selected_pts;
+			var i = sel_pts.length;
+
+			while(i--) {
+				var pt = sel_pts[i];
+				svgedit.path.path.deleteSeg(pt);
+			}
+			
+			// Cleanup
+			var cleanup = function() {
+				var segList = svgedit.path.path.elem.pathSegList;
+				var len = segList.numberOfItems;
+				
+				var remItems = function(pos, count) {
+					while(count--) {
+						segList.removeItem(pos);
+					}
+				}
+
+				if(len <= 1) return true;
+				
+				while(len--) {
+					var item = segList.getItem(len);
+					if(item.pathSegType === 1) {
+						var prev = segList.getItem(len-1);
+						var nprev = segList.getItem(len-2);
+						if(prev.pathSegType === 2) {
+							remItems(len-1, 2);
+							cleanup();
+							break;
+						} else if(nprev.pathSegType === 2) {
+							remItems(len-2, 3);
+							cleanup();
+							break;
+						}
+
+					} else if(item.pathSegType === 2) {
+						if(len > 0) {
+							var prev_type = segList.getItem(len-1).pathSegType;
+							// Path has M M  
+							if(prev_type === 2) {
+								remItems(len-1, 1);
+								cleanup();
+								break;
+							// Entire path ends with Z M 
+							} else if(prev_type === 1 && segList.numberOfItems-1 === len) {
+								remItems(len, 1);
+								cleanup();
+								break;
+							}
+						}
+					}
+				}	
+				return false;
+			}
+			
+			cleanup();
+			
+			// Completely delete a path with 1 or 0 segments
+			if(svgedit.path.path.elem.pathSegList.numberOfItems <= 1) {
+				canvas.setMode("select")
+				canvas.deleteSelectedElements();
+				return;
+			}
+			
+			svgedit.path.path.init();
+			
+			svgedit.path.path.clearSelection();
+			
+			// TODO: Find right way to select point now
+			// path.selectPt(sel_pt);
+			if(window.opera) { // Opera repaints incorrectly
+				var cp = $(svgedit.path.path.elem); cp.attr('d',cp.attr('d'));
+			}
+			svgedit.path.path.endChanges("Delete path node(s)");
+		},
+		smoothPolylineIntoPath: smoothPolylineIntoPath,
+		setSegType: function(v) {
+			svgedit.path.path.setSegType(v);
+		},
+		moveNode: function(attr, newValue) {
+			var sel_pts = svgedit.path.path.selected_pts;
+			if(!sel_pts.length) return;
+			
+			svgedit.path.path.storeD();
+			
+			// Get first selected point
+			var seg = svgedit.path.path.segs[sel_pts[0]];
+			var diff = {x:0, y:0};
+			diff[attr] = newValue - seg.item[attr];
+			
+			seg.move(diff.x, diff.y);
+			svgedit.path.path.endChanges("Move path point");
+		},
+		fixEnd: function(elem) {
+			// Adds an extra segment if the last seg before a Z doesn't end
+			// at its M point
+			// M0,0 L0,100 L100,100 z
+			var segList = elem.pathSegList;
+			var len = segList.numberOfItems;
+			var last_m;
+			for (var i = 0; i < len; ++i) {
+				var item = segList.getItem(i);
+				if(item.pathSegType === 2) {
+					last_m = item;
+				}
+				
+				if(item.pathSegType === 1) {
+					var prev = segList.getItem(i-1);
+					if(prev.x != last_m.x || prev.y != last_m.y) {
+						// Add an L segment here
+						var newseg = elem.createSVGPathSegLinetoAbs(last_m.x, last_m.y);
+						svgedit.path.insertItemBefore(elem, newseg, i);
+						// Can this be done better?
+						pathActions.fixEnd(elem);
+						break;
+					}
+					
+				}
+			}
+			if(svgedit.browser.isWebkit()) resetD(elem);
+		},
+		// Convert a path to one with only absolute or relative values
+		convertPath: function(path, toRel) {
+			var segList = path.pathSegList;
+			var len = segList.numberOfItems;
+			var curx = 0, cury = 0;
+			var d = "";
+			var last_m = null;
+			
+			for (var i = 0; i < len; ++i) {
+				var seg = segList.getItem(i);
+				// if these properties are not in the segment, set them to zero
+				var x = seg.x || 0,
+					y = seg.y || 0,
+					x1 = seg.x1 || 0,
+					y1 = seg.y1 || 0,
+					x2 = seg.x2 || 0,
+					y2 = seg.y2 || 0;
+	
+				var type = seg.pathSegType;
+				var letter = pathMap[type]['to'+(toRel?'Lower':'Upper')+'Case']();
+				
+				var addToD = function(pnts, more, last) {
+					var str = '';
+					var more = more?' '+more.join(' '):'';
+					var last = last?' '+svgedit.units.shortFloat(last):'';
+					$.each(pnts, function(i, pnt) {
+						pnts[i] = svgedit.units.shortFloat(pnt);
+					});
+					d += letter + pnts.join(' ') + more + last;
+				}
+				
+				switch (type) {
+					case 1: // z,Z closepath (Z/z)
+						d += "z";
+						break;
+					case 12: // absolute horizontal line (H)
+						x -= curx;
+					case 13: // relative horizontal line (h)
+						if(toRel) {
+							curx += x;
+							letter = 'l';
+						} else {
+							x += curx;
+							curx = x;
+							letter = 'L';
+						}
+						// Convert to "line" for easier editing
+						addToD([[x, cury]]);
+						break;
+					case 14: // absolute vertical line (V)
+						y -= cury;
+					case 15: // relative vertical line (v)
+						if(toRel) {
+							cury += y;
+							letter = 'l';
+						} else {
+							y += cury;
+							cury = y;
+							letter = 'L';
+						}
+						// Convert to "line" for easier editing
+						addToD([[curx, y]]);
+						break;
+					case 2: // absolute move (M)
+					case 4: // absolute line (L)
+					case 18: // absolute smooth quad (T)
+						x -= curx;
+						y -= cury;
+					case 5: // relative line (l)
+					case 3: // relative move (m)
+						// If the last segment was a "z", this must be relative to 
+						if(last_m && segList.getItem(i-1).pathSegType === 1 && !toRel) {
+							curx = last_m[0];
+							cury = last_m[1];
+						}
+					
+					case 19: // relative smooth quad (t)
+						if(toRel) {
+							curx += x;
+							cury += y;
+						} else {
+							x += curx;
+							y += cury;
+							curx = x;
+							cury = y;
+						}
+						if(type === 3) last_m = [curx, cury];
+						
+						addToD([[x,y]]);
+						break;
+					case 6: // absolute cubic (C)
+						x -= curx; x1 -= curx; x2 -= curx;
+						y -= cury; y1 -= cury; y2 -= cury;
+					case 7: // relative cubic (c)
+						if(toRel) {
+							curx += x;
+							cury += y;
+						} else {
+							x += curx; x1 += curx; x2 += curx;
+							y += cury; y1 += cury; y2 += cury;
+							curx = x;
+							cury = y;
+						}
+						addToD([[x1,y1],[x2,y2],[x,y]]);
+						break;
+					case 8: // absolute quad (Q)
+						x -= curx; x1 -= curx;
+						y -= cury; y1 -= cury;
+					case 9: // relative quad (q) 
+						if(toRel) {
+							curx += x;
+							cury += y;
+						} else {
+							x += curx; x1 += curx;
+							y += cury; y1 += cury;
+							curx = x;
+							cury = y;
+						}
+						addToD([[x1,y1],[x,y]]);
+						break;
+					case 10: // absolute elliptical arc (A)
+						x -= curx;
+						y -= cury;
+					case 11: // relative elliptical arc (a)
+						if(toRel) {
+							curx += x;
+							cury += y;
+						} else {
+							x += curx;
+							y += cury;
+							curx = x;
+							cury = y;
+						}
+						addToD([[seg.r1,seg.r2]], [
+								seg.angle,
+								(seg.largeArcFlag ? 1 : 0),
+								(seg.sweepFlag ? 1 : 0)
+							],[x,y]
+						);
+						break;
+					case 16: // absolute smooth cubic (S)
+						x -= curx; x2 -= curx;
+						y -= cury; y2 -= cury;
+					case 17: // relative smooth cubic (s)
+						if(toRel) {
+							curx += x;
+							cury += y;
+						} else {
+							x += curx; x2 += curx;
+							y += cury; y2 += cury;
+							curx = x;
+							cury = y;
+						}
+						addToD([[x2,y2],[x,y]]);
+						break;
+				} // switch on path segment type
+			} // for each segment
+			return d;
+		}
+	}
+}();
+// end pathActions
+
+// Group: Serialization
+
+// Function: removeUnusedDefElems
+// Looks at DOM elements inside the <defs> to see if they are referred to,
+// removes them from the DOM if they are not.
+// 
+// Returns:
+// The amount of elements that were removed
+var removeUnusedDefElems = this.removeUnusedDefElems = function() {
+	var defs = svgcontent.getElementsByTagNameNS(svgns, "defs");
+	if(!defs || !defs.length) return 0;
+	
+// 	if(!defs.firstChild) return;
+	
+	var defelem_uses = [],
+		numRemoved = 0;
+	var attrs = ['fill', 'stroke', 'filter', 'marker-start', 'marker-mid', 'marker-end'];
+	var alen = attrs.length;
+	
+	var all_els = svgcontent.getElementsByTagNameNS(svgns, '*');
+	var all_len = all_els.length;
+	
+	for(var i=0; i<all_len; i++) {
+		var el = all_els[i];
+		for(var j = 0; j < alen; j++) {
+		  if(el) {
+  			var ref = getUrlFromAttr(el.getAttribute(attrs[j]));
+  			if(ref) {
+  				defelem_uses.push(ref.substr(1));
+  			}
+			}
+		}
+		
+		// gradients can refer to other gradients
+		var href = getHref(el);
+		if (href && href.indexOf('#') === 0) {
+			defelem_uses.push(href.substr(1));
+		}
+	};
+	
+	var defelems = $(defs).find("linearGradient, radialGradient, filter, marker, svg, symbol");
+		defelem_ids = [],
+		i = defelems.length;
+	while (i--) {
+		var defelem = defelems[i];
+		var id = defelem.id;
+		if(defelem_uses.indexOf(id) < 0) {
+			// Not found, so remove (but remember)
+			removedElements[id] = defelem;
+			defelem.parentNode.removeChild(defelem);
+			numRemoved++;
+		}
+	}
+
+	return numRemoved;
+}
+
+// Function: svgCanvasToString
+// Main function to set up the SVG content for output 
+//
+// Returns: 
+// String containing the SVG image for output
+this.svgCanvasToString = function() {
+	// keep calling it until there are none to remove
+	while (removeUnusedDefElems() > 0) {};
+	
+	pathActions.clear(true);
+	
+	// Keep SVG-Edit comment on top
+	$.each(svgcontent.childNodes, function(i, node) {
+		if(i && node.nodeType === 8 && node.data.indexOf('Created with') >= 0) {
+			svgcontent.insertBefore(node, svgcontent.firstChild);
+		}
+	});
+	
+	// Move out of in-group editing mode
+	if(current_group) {
+		leaveContext();
+		selectOnly([current_group]);
+	}
+	
+	//hide grid, otherwise shows a black canvas
+	$('#canvasGrid').attr('display', 'none');
+	
+	var naked_svgs = [];
+	
+	// Unwrap gsvg if it has no special attributes (only id and style)
+	$(svgcontent).find('g:data(gsvg)').each(function() {
+		var attrs = this.attributes;
+		var len = attrs.length;
+		for(var i=0; i<len; i++) {
+			if(attrs[i].nodeName == 'id' || attrs[i].nodeName == 'style') {
+				len--;
+			}
+		}
+		// No significant attributes, so ungroup
+		if(len <= 0) {
+			var svg = this.firstChild;
+			naked_svgs.push(svg);
+			$(this).replaceWith(svg);
+		}
+	});
+	var output = this.svgToString(svgcontent, 0);
+	
+	// Rewrap gsvg
+	if(naked_svgs.length) {
+		$(naked_svgs).each(function() {
+			groupSvgElem(this);
+		});
+	}
+	
+	return output;
+};
+
+// Function: svgToString
+// Sub function ran on each SVG element to convert it to a string as desired
+// 
+// Parameters: 
+// elem - The SVG element to convert
+// indent - Integer with the amount of spaces to indent this tag
+//
+// Returns: 
+// String with the given element as an SVG tag
+this.svgToString = function(elem, indent) {
+	var out = new Array(), toXml = svgedit.utilities.toXml;
+	var unit = curConfig.baseUnit;
+	var unit_re = new RegExp('^-?[\\d\\.]+' + unit + '$');
+
+	if (elem) {
+		cleanupElement(elem);
+		var attrs = elem.attributes,
+			attr,
+			i,
+			childs = elem.childNodes;
+		
+		for (var i=0; i<indent; i++) out.push(" ");
+		out.push("<"); out.push(elem.nodeName);
+		if(elem.id === 'svgcontent') {
+			// Process root element separately
+			var res = getResolution();
+			
+			var vb = "";
+			// TODO: Allow this by dividing all values by current baseVal
+			// Note that this also means we should properly deal with this on import
+// 			if(curConfig.baseUnit !== "px") {
+// 				var unit = curConfig.baseUnit;
+// 				var unit_m = svgedit.units.getTypeMap()[unit];
+// 				res.w = svgedit.units.shortFloat(res.w / unit_m)
+// 				res.h = svgedit.units.shortFloat(res.h / unit_m)
+// 				vb = ' viewBox="' + [0, 0, res.w, res.h].join(' ') + '"';				
+// 				res.w += unit;
+// 				res.h += unit;
+// 			}
+			
+			if(unit !== "px") {
+				res.w = svgedit.units.convertUnit(res.w, unit) + unit;
+				res.h = svgedit.units.convertUnit(res.h, unit) + unit;
+			}
+			
+			out.push(' width="' + res.w + '" height="' + res.h + '"' + vb + ' xmlns="'+svgns+'"');
+			
+			var nsuris = {};
+			
+			// Check elements for namespaces, add if found
+			$(elem).find('*').andSelf().each(function() {
+				var el = this;
+				$.each(this.attributes, function(i, attr) {
+					var uri = attr.namespaceURI;
+					if(uri && !nsuris[uri] && nsMap[uri] !== 'xmlns' && nsMap[uri] !== 'xml' ) {
+						nsuris[uri] = true;
+						out.push(" xmlns:" + nsMap[uri] + '="' + uri +'"');
+					}
+				});
+			});
+			
+			var i = attrs.length;
+			var attr_names = ['width','height','xmlns','x','y','viewBox','id','overflow'];
+			while (i--) {
+				attr = attrs.item(i);
+				var attrVal = toXml(attr.nodeValue);
+				
+				// Namespaces have already been dealt with, so skip
+				if(attr.nodeName.indexOf('xmlns:') === 0) continue;
+
+				// only serialize attributes we don't use internally
+				if (attrVal != "" && attr_names.indexOf(attr.localName) == -1) 
+				{
+
+					if(!attr.namespaceURI || nsMap[attr.namespaceURI]) {
+						out.push(' '); 
+						out.push(attr.nodeName); out.push("=\"");
+						out.push(attrVal); out.push("\"");
+					}
+				}
+			}
+		} else {
+			// Skip empty defs
+			if(elem.nodeName === 'defs' && !elem.firstChild) return;
+		
+			var moz_attrs = ['-moz-math-font-style', '_moz-math-font-style'];
+			for (var i=attrs.length-1; i>=0; i--) {
+				attr = attrs.item(i);
+				var attrVal = toXml(attr.nodeValue);
+				//remove bogus attributes added by Gecko
+				if (moz_attrs.indexOf(attr.localName) >= 0) continue;
+				if (attrVal != "") {
+					if(attrVal.indexOf('pointer-events') === 0) continue;
+					if(attr.localName === "class" && attrVal.indexOf('se_') === 0) continue;
+					out.push(" "); 
+					if(attr.localName === 'd') attrVal = pathActions.convertPath(elem, true);
+					if(!isNaN(attrVal)) {
+						attrVal = svgedit.units.shortFloat(attrVal);
+					} else if(unit_re.test(attrVal)) {
+						attrVal = svgedit.units.shortFloat(attrVal) + unit;
+					}
+					
+					// Embed images when saving 
+					if(save_options.apply
+						&& elem.nodeName === 'image' 
+						&& attr.localName === 'href'
+						&& save_options.images
+						&& save_options.images === 'embed') 
+					{
+						var img = encodableImages[attrVal];
+						if(img) attrVal = img;
+					}
+					
+					// map various namespaces to our fixed namespace prefixes
+					// (the default xmlns attribute itself does not get a prefix)
+					if(!attr.namespaceURI || attr.namespaceURI == svgns || nsMap[attr.namespaceURI]) {
+						out.push(attr.nodeName); out.push("=\"");
+						out.push(attrVal); out.push("\"");
+					}
+				}
+			}
+		}
+
+		if (elem.hasChildNodes()) {
+			out.push(">");
+			indent++;
+			var bOneLine = false;
+			
+			for (var i=0; i<childs.length; i++)
+			{
+				var child = childs.item(i);
+				switch(child.nodeType) {
+				case 1: // element node
+					out.push("\n");
+					out.push(this.svgToString(childs.item(i), indent));
+					break;
+				case 3: // text node
+					var str = child.nodeValue.replace(/^\s+|\s+$/g, "");
+					if (str != "") {
+						bOneLine = true;
+						out.push(toXml(str) + "");
+					}
+					break;
+				case 4: // cdata node
+					out.push("\n");
+					out.push(new Array(indent+1).join(" "));
+					out.push("<![CDATA[");
+					out.push(child.nodeValue);
+					out.push("]]>");
+					break;
+				case 8: // comment
+					out.push("\n");
+					out.push(new Array(indent+1).join(" "));
+					out.push("<!--");
+					out.push(child.data);
+					out.push("-->");
+					break;
+				} // switch on node type
+			}
+			indent--;
+			if (!bOneLine) {
+				out.push("\n");
+				for (var i=0; i<indent; i++) out.push(" ");
+			}
+			out.push("</"); out.push(elem.nodeName); out.push(">");
+		} else {
+			out.push("/>");
+		}
+	}
+	return out.join('');
+}; // end svgToString()
+
+// Function: embedImage
+// Converts a given image file to a data URL when possible, then runs a given callback
+//
+// Parameters: 
+// val - String with the path/URL of the image
+// callback - Optional function to run when image data is found, supplies the
+// result (data URL or false) as first parameter.
+this.embedImage = function(val, callback) {
+
+	// load in the image and once it's loaded, get the dimensions
+	$(new Image()).load(function() {
+		// create a canvas the same size as the raster image
+		var canvas = document.createElement("canvas");
+		canvas.width = this.width;
+		canvas.height = this.height;
+		// load the raster image into the canvas
+		canvas.getContext("2d").drawImage(this,0,0);
+		// retrieve the data: URL
+		try {
+			var urldata = ';svgedit_url=' + encodeURIComponent(val);
+			urldata = canvas.toDataURL().replace(';base64',urldata+';base64');
+			encodableImages[val] = urldata;
+		} catch(e) {
+			encodableImages[val] = false;
+		}
+		last_good_img_url = val;
+		if(callback) callback(encodableImages[val]);
+	}).attr('src',val);
+}
+
+// Function: setGoodImage
+// Sets a given URL to be a "last good image" URL
+this.setGoodImage = function(val) {
+	last_good_img_url = val;
+}
+
+this.open = function() {
+	// Nothing by default, handled by optional widget/extension
+};
+
+// Function: save
+// Serializes the current drawing into SVG XML text and returns it to the 'saved' handler.
+// This function also includes the XML prolog.  Clients of the SvgCanvas bind their save
+// function to the 'saved' event.
+//
+// Returns: 
+// Nothing
+this.save = function(opts) {
+	// remove the selected outline before serializing
+	clearSelection();
+	// Update save options if provided
+	if(opts) $.extend(save_options, opts);
+	save_options.apply = true;
+	
+	// no need for doctype, see http://jwatt.org/svg/authoring/#doctype-declaration
+	var str = this.svgCanvasToString();
+	call("saved", str);
+};
+
+// Function: rasterExport
+// Generates a PNG Data URL based on the current image, then calls "exported" 
+// with an object including the string and any issues found
+this.rasterExport = function() {
+	// remove the selected outline before serializing
+	clearSelection();
+	
+	// Check for known CanVG issues 
+	var issues = [];
+	
+	// Selector and notice
+	var issue_list = {
+		'feGaussianBlur': uiStrings.exportNoBlur,
+		'foreignObject': uiStrings.exportNoforeignObject,
+		'[stroke-dasharray]': uiStrings.exportNoDashArray
+	};
+	var content = $(svgcontent);
+	
+	// Add font/text check if Canvas Text API is not implemented
+	if(!("font" in $('<canvas>')[0].getContext('2d'))) {
+		issue_list['text'] = uiStrings.exportNoText;
+	}
+	
+	$.each(issue_list, function(sel, descr) {
+		if(content.find(sel).length) {
+			issues.push(descr);
+		}
+	});
+
+	var str = this.svgCanvasToString();
+	call("exported", {svg: str, issues: issues});
+};
+
+// Function: getSvgString
+// Returns the current drawing as raw SVG XML text.
+//
+// Returns:
+// The current drawing as raw SVG XML text.
+this.getSvgString = function() {
+	save_options.apply = false;
+	return this.svgCanvasToString();
+};
+
+// Function: randomizeIds
+// This function determines whether to use a nonce in the prefix, when
+// generating IDs for future documents in SVG-Edit.
+// 
+//  Parameters:
+//   an opional boolean, which, if true, adds a nonce to the prefix. Thus
+//     svgCanvas.randomizeIds()  <==> svgCanvas.randomizeIds(true)
+//
+// if you're controlling SVG-Edit externally, and want randomized IDs, call
+// this BEFORE calling svgCanvas.setSvgString
+//
+this.randomizeIds = function() {
+	if (arguments.length > 0 && arguments[0] == false) {
+		svgedit.draw.randomizeIds(false, getCurrentDrawing());
+	} else {
+		svgedit.draw.randomizeIds(true, getCurrentDrawing());
+	}
+};
+
+// Function: uniquifyElems
+// Ensure each element has a unique ID
+//
+// Parameters:
+// g - The parent element of the tree to give unique IDs
+var uniquifyElems = this.uniquifyElems = function(g) {
+	var ids = {};
+	// TODO: Handle markers and connectors.  These are not yet re-identified properly
+	// as their referring elements do not get remapped.
+	//
+	// <marker id='se_marker_end_svg_7'/>
+	// <polyline id='svg_7' se:connector='svg_1 svg_6' marker-end='url(#se_marker_end_svg_7)'/>
+	// 
+	// Problem #1: if svg_1 gets renamed, we do not update the polyline's se:connector attribute
+	// Problem #2: if the polyline svg_7 gets renamed, we do not update the marker id nor the polyline's marker-end attribute
+	var ref_elems = ["filter", "linearGradient", "pattern",	"radialGradient", "symbol", "textPath", "use"];
+	
+	svgedit.utilities.walkTree(g, function(n) {
+		// if it's an element node
+		if (n.nodeType == 1) {
+			// and the element has an ID
+			if (n.id) {
+				// and we haven't tracked this ID yet
+				if (!(n.id in ids)) {
+					// add this id to our map
+					ids[n.id] = {elem:null, attrs:[], hrefs:[]};
+				}
+				ids[n.id]["elem"] = n;
+			}
+			
+			// now search for all attributes on this element that might refer
+			// to other elements
+			$.each(ref_attrs,function(i,attr) {
+				var attrnode = n.getAttributeNode(attr);
+				if (attrnode) {
+					// the incoming file has been sanitized, so we should be able to safely just strip off the leading #
+					var url = svgedit.utilities.getUrlFromAttr(attrnode.value),
+						refid = url ? url.substr(1) : null;
+					if (refid) {
+						if (!(refid in ids)) {
+							// add this id to our map
+							ids[refid] = {elem:null, attrs:[], hrefs:[]};
+						}
+						ids[refid]["attrs"].push(attrnode);
+					}
+				}
+			});
+			
+			// check xlink:href now
+			var href = svgedit.utilities.getHref(n);
+			// TODO: what if an <image> or <a> element refers to an element internally?
+			if(href && ref_elems.indexOf(n.nodeName) >= 0)
+			{
+				var refid = href.substr(1);
+				if (refid) {
+					if (!(refid in ids)) {
+						// add this id to our map
+						ids[refid] = {elem:null, attrs:[], hrefs:[]};
+					}
+					ids[refid]["hrefs"].push(n);
+				}
+			}						
+		}
+	});
+	
+	// in ids, we now have a map of ids, elements and attributes, let's re-identify
+	for (var oldid in ids) {
+		if (!oldid) continue;
+		var elem = ids[oldid]["elem"];
+		if (elem) {
+			var newid = getNextId();
+			
+			// assign element its new id
+			elem.id = newid;
+			
+			// remap all url() attributes
+			var attrs = ids[oldid]["attrs"];
+			var j = attrs.length;
+			while (j--) {
+				var attr = attrs[j];
+				attr.ownerElement.setAttribute(attr.name, "url(#" + newid + ")");
+			}
+			
+			// remap all href attributes
+			var hreffers = ids[oldid]["hrefs"];
+			var k = hreffers.length;
+			while (k--) {
+				var hreffer = hreffers[k];
+				svgedit.utilities.setHref(hreffer, "#"+newid);
+			}
+		}
+	}
+}
+
+// Function setUseData
+// Assigns reference data for each use element
+var setUseData = this.setUseData = function(parent) {
+	var elems = $(parent);
+	
+	if(parent.tagName !== 'use') {
+		elems = elems.find('use');
+	}
+	
+	elems.each(function() {
+		var id = getHref(this).substr(1);
+		var ref_elem = getElem(id);
+		if(!ref_elem) return;
+		$(this).data('ref', ref_elem);
+		if(ref_elem.tagName == 'symbol' || ref_elem.tagName == 'svg') {
+			$(this).data('symbol', ref_elem).data('ref', ref_elem);
+		}
+	});
+}
+
+// Function convertGradients
+// Converts gradients from userSpaceOnUse to objectBoundingBox
+var convertGradients = this.convertGradients = function(elem) {
+	var elems = $(elem).find('linearGradient, radialGradient');
+	if(!elems.length && svgedit.browser.isWebkit()) {
+		// Bug in webkit prevents regular *Gradient selector search
+		elems = $(elem).find('*').filter(function() {
+			return (this.tagName.indexOf('Gradient') >= 0);
+		});
+	}
+	
+	elems.each(function() {
+		var grad = this;
+		if($(grad).attr('gradientUnits') === 'userSpaceOnUse') {
+			// TODO: Support more than one element with this ref by duplicating parent grad
+			var elems = $(svgcontent).find('[fill="url(#' + grad.id + ')"],[stroke="url(#' + grad.id + ')"]');
+			if(!elems.length) return;
+			
+			// get object's bounding box
+			var bb = svgedit.utilities.getBBox(elems[0]);
+			
+			// This will occur if the element is inside a <defs> or a <symbol>,
+			// in which we shouldn't need to convert anyway.
+			if(!bb) return;
+			
+			if(grad.tagName === 'linearGradient') {
+				var g_coords = $(grad).attr(['x1', 'y1', 'x2', 'y2']);
+				
+				// If has transform, convert
+				var tlist = grad.gradientTransform.baseVal;
+				if(tlist && tlist.numberOfItems > 0) {
+					var m = transformListToTransform(tlist).matrix;
+					var pt1 = transformPoint(g_coords.x1, g_coords.y1, m);
+					var pt2 = transformPoint(g_coords.x2, g_coords.y2, m);
+					
+					g_coords.x1 = pt1.x;
+					g_coords.y1 = pt1.y;
+					g_coords.x2 = pt2.x;
+					g_coords.y2 = pt2.y;
+					grad.removeAttribute('gradientTransform');
+				}
+				
+				$(grad).attr({
+					x1: (g_coords.x1 - bb.x) / bb.width,
+					y1: (g_coords.y1 - bb.y) / bb.height,
+					x2: (g_coords.x2 - bb.x) / bb.width,
+					y2: (g_coords.y2 - bb.y) / bb.height
+				});
+				grad.removeAttribute('gradientUnits');
+			} else {
+				// Note: radialGradient elements cannot be easily converted 
+				// because userSpaceOnUse will keep circular gradients, while
+				// objectBoundingBox will x/y scale the gradient according to
+				// its bbox. 
+				
+				// For now we'll do nothing, though we should probably have
+				// the gradient be updated as the element is moved, as 
+				// inkscape/illustrator do.
+			
+//         				var g_coords = $(grad).attr(['cx', 'cy', 'r']);
+//         				
+// 						$(grad).attr({
+// 							cx: (g_coords.cx - bb.x) / bb.width,
+// 							cy: (g_coords.cy - bb.y) / bb.height,
+// 							r: g_coords.r
+// 						});
+// 						
+// 	        			grad.removeAttribute('gradientUnits');
+			}
+			
+
+		}
+	});
+}
+
+// Function: convertToGroup
+// Converts selected/given <use> or child SVG element to a group
+var convertToGroup = this.convertToGroup = function(elem) {
+	if(!elem) {
+		elem = selectedElements[0];
+	}
+	var $elem = $(elem);
+	
+	var batchCmd = new BatchCommand();
+	
+	var ts;
+	
+	if($elem.data('gsvg')) {
+		// Use the gsvg as the new group
+		var svg = elem.firstChild;
+		var pt = $(svg).attr(['x', 'y']);
+		
+		$(elem.firstChild.firstChild).unwrap();
+		$(elem).removeData('gsvg');
+		
+		var tlist = getTransformList(elem);
+		var xform = svgroot.createSVGTransform();
+		xform.setTranslate(pt.x, pt.y);
+		tlist.appendItem(xform);
+		recalculateDimensions(elem);
+		call("selected", [elem]);
+	} else if($elem.data('symbol')) {
+		elem = $elem.data('symbol');
+		
+		ts = $elem.attr('transform');
+		var pos = $elem.attr(['x','y']);
+
+		var vb = elem.getAttribute('viewBox');
+		
+		if(vb) {
+			var nums = vb.split(' ');
+			pos.x -= +nums[0];
+			pos.y -= +nums[1];
+		}
+		
+		// Not ideal, but works
+		ts += " translate(" + (pos.x || 0) + "," + (pos.y || 0) + ")";
+		
+		var prev = $elem.prev();
+		
+		// Remove <use> element
+		batchCmd.addSubCommand(new RemoveElementCommand($elem[0], $elem[0].nextSibling, $elem[0].parentNode));
+		$elem.remove();
+		
+		// See if other elements reference this symbol
+		var has_more = $(svgcontent).find('use:data(symbol)').length;
+			
+		var g = svgdoc.createElementNS(svgns, "g");
+		var childs = elem.childNodes;
+		
+		for(var i = 0; i < childs.length; i++) {
+			g.appendChild(childs[i].cloneNode(true));
+		}
+		
+		// Duplicate the gradients for Gecko, since they weren't included in the <symbol>
+		if(svgedit.browser.isGecko()) {
+			var dupeGrads = $(findDefs()).children('linearGradient,radialGradient,pattern').clone();
+			$(g).append(dupeGrads);
+		}
+		
+		if (ts) {
+			g.setAttribute("transform", ts);
+		}
+		
+		var parent = elem.parentNode;
+		
+		uniquifyElems(g);
+		
+		// Put the dupe gradients back into <defs> (after uniquifying them)
+		if(svgedit.browser.isGecko()) {
+			$(findDefs()).append( $(g).find('linearGradient,radialGradient,pattern') );
+		}
+	
+		// now give the g itself a new id
+		g.id = getNextId();
+		
+		prev.after(g);
+		
+		if(parent) {
+			if(!has_more) {
+				// remove symbol/svg element
+				var nextSibling = elem.nextSibling;
+				parent.removeChild(elem);
+				batchCmd.addSubCommand(new RemoveElementCommand(elem, nextSibling, parent));
+			}
+			batchCmd.addSubCommand(new InsertElementCommand(g));
+		}
+		
+		setUseData(g);
+		
+		if(svgedit.browser.isGecko()) {
+			convertGradients(findDefs());
+		} else {
+			convertGradients(g);
+		}
+		
+		// recalculate dimensions on the top-level children so that unnecessary transforms
+		// are removed
+		svgedit.utilities.walkTreePost(g, function(n){try{recalculateDimensions(n)}catch(e){console.log(e)}});
+		
+		// Give ID for any visible element missing one
+		$(g).find(visElems).each(function() {
+			if(!this.id) this.id = getNextId();
+		});
+		
+		selectOnly([g]);
+		
+		var cm = pushGroupProperties(g, true);
+		if(cm) {
+			batchCmd.addSubCommand(cm);
+		}
+
+		addCommandToHistory(batchCmd);
+		
+	} else {
+		console.log('Unexpected element to ungroup:', elem);
+	}
+}
+
+//   
+// Function: setSvgString
+// This function sets the current drawing as the input SVG XML.
+//
+// Parameters:
+// xmlString - The SVG as XML text.
+//
+// Returns:
+// This function returns false if the set was unsuccessful, true otherwise.
+this.setSvgString = function(xmlString) {
+	try {
+		// convert string into XML document
+		var newDoc = svgedit.utilities.text2xml(xmlString);
+
+		this.prepareSvg(newDoc);
+
+		var batchCmd = new BatchCommand("Change Source");
+
+		// remove old svg document
+		var nextSibling = svgcontent.nextSibling;
+		var oldzoom = svgroot.removeChild(svgcontent);
+		batchCmd.addSubCommand(new RemoveElementCommand(oldzoom, nextSibling, svgroot));
+	
+		// set new svg document
+		// If DOM3 adoptNode() available, use it. Otherwise fall back to DOM2 importNode()
+		if(svgdoc.adoptNode) {
+			svgcontent = svgdoc.adoptNode(newDoc.documentElement);
+		}
+		else {
+			svgcontent = svgdoc.importNode(newDoc.documentElement, true);
+		}
+		
+		svgroot.appendChild(svgcontent);
+		var content = $(svgcontent);
+		
+		canvas.current_drawing_ = new svgedit.draw.Drawing(svgcontent, idprefix);
+		
+		// retrieve or set the nonce
+		var nonce = getCurrentDrawing().getNonce();
+		if (nonce) {
+			call("setnonce", nonce);
+		} else {
+			call("unsetnonce");
+		}
+		
+		// change image href vals if possible
+		content.find('image').each(function() {
+			var image = this;
+			preventClickDefault(image);
+			var val = getHref(this);
+			if(val.indexOf('data:') === 0) {
+				// Check if an SVG-edit data URI
+				var m = val.match(/svgedit_url=(.*?);/);
+				if(m) {
+					var url = decodeURIComponent(m[1]);
+					$(new Image()).load(function() {
+						image.setAttributeNS(xlinkns,'xlink:href',url);
+					}).attr('src',url);
+				}
+			}
+			// Add to encodableImages if it loads
+			canvas.embedImage(val);
+		});
+	
+		// Wrap child SVGs in group elements
+		content.find('svg').each(function() {
+			// Skip if it's in a <defs>
+			if($(this).closest('defs').length) return;
+		
+			uniquifyElems(this);
+		
+			// Check if it already has a gsvg group
+			var pa = this.parentNode;
+			if(pa.childNodes.length === 1 && pa.nodeName === 'g') {
+				$(pa).data('gsvg', this);
+				pa.id = pa.id || getNextId();
+			} else {
+				groupSvgElem(this);
+			}
+		});
+		
+		// Put all paint elems in defs
+		
+		content.find('linearGradient, radialGradient, pattern').appendTo(findDefs());
+		
+		// Set ref element for <use> elements
+		
+		// TODO: This should also be done if the object is re-added through "redo"
+		setUseData(content);
+		
+		convertGradients(content[0]);
+		
+		// recalculate dimensions on the top-level children so that unnecessary transforms
+		// are removed
+		svgedit.utilities.walkTreePost(svgcontent, function(n){try{recalculateDimensions(n)}catch(e){console.log(e)}});
+		
+		var attrs = {
+			id: 'svgcontent',
+			overflow: curConfig.show_outside_canvas?'visible':'hidden'
+		};
+		
+		var percs = false;
+		
+		// determine proper size
+		if (content.attr("viewBox")) {
+			var vb = content.attr("viewBox").split(' ');
+			attrs.width = vb[2];
+			attrs.height = vb[3];
+		}
+		// handle content that doesn't have a viewBox
+		else {
+			$.each(['width', 'height'], function(i, dim) {
+				// Set to 100 if not given
+				var val = content.attr(dim);
+				
+				if(!val) val = '100%';
+				
+				if((val+'').substr(-1) === "%") {
+					// Use user units if percentage given
+					percs = true;
+				} else {
+					attrs[dim] = convertToNum(dim, val);
+				}
+			});
+		}
+		
+		// identify layers
+		identifyLayers();
+		
+		// Give ID for any visible layer children missing one
+		content.children().find(visElems).each(function() {
+			if(!this.id) this.id = getNextId();
+		});
+		
+		// Percentage width/height, so let's base it on visible elements
+		if(percs) {
+			var bb = getStrokedBBox();
+			attrs.width = bb.width + bb.x;
+			attrs.height = bb.height + bb.y;
+		}
+		
+		// Just in case negative numbers are given or 
+		// result from the percs calculation
+		if(attrs.width <= 0) attrs.width = 200;
+		if(attrs.height <= 0) attrs.height = 200;
+		
+		content.attr(attrs);
+		this.contentW = attrs['width'];
+		this.contentH = attrs['height'];
+		
+		$("#canvas_width").val(this.contentW)
+		$("#canvas_height").val(this.contentH)
+		var background = $("#canvas_background")
+		if (background.length) {
+			var opacity = background.attr("fill-opacity")
+			opacity = opacity ? parseInt(opacity)*100 : 100
+			fill = this.getPaint(background.attr("fill"), opacity, "canvas")
+			methodDraw.paintBox.canvas.setPaint(fill)
+		}
+		else {
+			fill = this.getPaint("none", 100, "canvas")
+			methodDraw.paintBox.canvas.setPaint(fill)
+		}
+
+		batchCmd.addSubCommand(new InsertElementCommand(svgcontent));
+		// update root to the correct size
+		var changes = content.attr(["width", "height"]);
+		batchCmd.addSubCommand(new ChangeElementCommand(svgroot, changes));
+		
+		// reset zoom
+		current_zoom = 1;
+		
+		// reset transform lists
+		svgedit.transformlist.resetListMap();
+		clearSelection();
+		svgedit.path.clearData();
+		svgroot.appendChild(selectorManager.selectorParentGroup);
+		
+		addCommandToHistory(batchCmd);
+		call("changed", [svgcontent]);
+	} catch(e) {
+		console.log(e);
+		return false;
+	}
+
+	return true;
+};
+
+
+this.getPaint = function(color, opac, type) {
+	// update the editor's fill paint
+	var opts = null;
+	if (color.indexOf("url(#") === 0) {
+		var refElem = svgCanvas.getRefElem(color);
+		if(refElem) {
+			refElem = refElem.cloneNode(true);
+		} else {
+			refElem =  $("#" + type + "_color defs *")[0];
+		}
+
+		opts = { alpha: opac };
+		opts[refElem.tagName] = refElem;
+	} 
+	else if (color.indexOf("#") === 0) {
+		opts = {
+			alpha: opac,
+			solidColor: color.substr(1)
+		};
+	}
+	else {
+		opts = {
+			alpha: opac,
+			solidColor: 'none'
+		};
+	}
+	return new $.jGraduate.Paint(opts);
+};
+
+// Function: importSvgString
+// This function imports the input SVG XML as a <symbol> in the <defs>, then adds a
+// <use> to the current layer.
+//
+// Parameters:
+// xmlString - The SVG as XML text.
+//
+// Returns:
+// This function returns false if the import was unsuccessful, true otherwise.
+// TODO: 
+// * properly handle if namespace is introduced by imported content (must add to svgcontent
+// and update all prefixes in the imported node)
+// * properly handle recalculating dimensions, recalculateDimensions() doesn't handle
+// arbitrary transform lists, but makes some assumptions about how the transform list 
+// was obtained
+// * import should happen in top-left of current zoomed viewport	
+this.importSvgString = function(xmlString) {
+
+	try {
+		// Get unique ID
+		var uid = svgedit.utilities.encode64(xmlString.length + xmlString).substr(0,32);
+		
+		var useExisting = false;
+
+		// Look for symbol and make sure symbol exists in image
+		if(import_ids[uid]) {
+			if( $(import_ids[uid].symbol).parents('#svgroot').length ) {
+				useExisting = true;
+			}
+		}
+		
+		var batchCmd = new BatchCommand("Import SVG");
+	
+		if(useExisting) {
+			var symbol = import_ids[uid].symbol;
+			var ts = import_ids[uid].xform;
+		} else {
+			// convert string into XML document
+			var newDoc = svgedit.utilities.text2xml(xmlString);
+	
+			this.prepareSvg(newDoc);
+	
+			// import new svg document into our document
+			var svg;
+			// If DOM3 adoptNode() available, use it. Otherwise fall back to DOM2 importNode()
+			if(svgdoc.adoptNode) {
+				svg = svgdoc.adoptNode(newDoc.documentElement);
+			}
+			else {
+				svg = svgdoc.importNode(newDoc.documentElement, true);
+			}
+			
+			uniquifyElems(svg);
+			
+			var innerw = convertToNum('width', svg.getAttribute("width")),
+				innerh = convertToNum('height', svg.getAttribute("height")),
+				innervb = svg.getAttribute("viewBox"),
+				// if no explicit viewbox, create one out of the width and height
+				vb = innervb ? innervb.split(" ") : [0,0,innerw,innerh];
+			for (var j = 0; j < 4; ++j)
+				vb[j] = +(vb[j]);
+	
+			// TODO: properly handle preserveAspectRatio
+			var canvasw = +svgcontent.getAttribute("width"),
+				canvash = +svgcontent.getAttribute("height");
+			// imported content should be 1/3 of the canvas on its largest dimension
+			
+			if (innerh > innerw) {
+				var ts = "scale(" + (canvash/3)/vb[3] + ")";
+			}
+			else {
+				var ts = "scale(" + (canvash/3)/vb[2] + ")";
+			}
+			
+			// Hack to make recalculateDimensions understand how to scale
+			ts = "translate(0) " + ts + " translate(0)";
+			
+			var symbol = svgdoc.createElementNS(svgns, "symbol");
+			var defs = findDefs();
+			
+			if(svgedit.browser.isGecko()) {
+				// Move all gradients into root for Firefox, workaround for this bug:
+				// https://bugzilla.mozilla.org/show_bug.cgi?id=353575
+				// TODO: Make this properly undo-able.
+				$(svg).find('linearGradient, radialGradient, pattern').appendTo(defs);
+			}
+	
+			while (svg.firstChild) {
+				var first = svg.firstChild;
+				symbol.appendChild(first);
+			}
+			var attrs = svg.attributes;
+			for(var i=0; i < attrs.length; i++) {
+				var attr = attrs[i];
+				symbol.setAttribute(attr.nodeName, attr.nodeValue);
+			}
+			symbol.id = getNextId();
+			
+			// Store data
+			import_ids[uid] = {
+				symbol: symbol,
+				xform: ts
+			}
+			
+			findDefs().appendChild(symbol);
+			batchCmd.addSubCommand(new InsertElementCommand(symbol));
+		}
+		
+		
+		var use_el = svgdoc.createElementNS(svgns, "use");
+		use_el.id = getNextId();
+		setHref(use_el, "#" + symbol.id);
+		
+		(current_group || getCurrentDrawing().getCurrentLayer()).appendChild(use_el);
+		batchCmd.addSubCommand(new InsertElementCommand(use_el));
+		clearSelection();
+		
+		use_el.setAttribute("transform", ts);
+		recalculateDimensions(use_el);
+		$(use_el).data('symbol', symbol).data('ref', symbol);
+		addToSelection([use_el]);
+		
+		// TODO: Find way to add this in a recalculateDimensions-parsable way
+// 				if (vb[0] != 0 || vb[1] != 0)
+// 					ts = "translate(" + (-vb[0]) + "," + (-vb[1]) + ") " + ts;
+		addCommandToHistory(batchCmd);
+		call("changed", [svgcontent]);
+
+	} catch(e) {
+		console.log(e);
+		return false;
+	}
+
+	return true;
+};
+
+// TODO(codedread): Move all layer/context functions in draw.js
+// Layer API Functions
+
+// Group: Layers
+
+// Function: identifyLayers
+// Updates layer system
+var identifyLayers = canvas.identifyLayers = function() {
+	leaveContext();
+	getCurrentDrawing().identifyLayers();
+};
+
+// Function: createLayer
+// Creates a new top-level layer in the drawing with the given name, sets the current layer 
+// to it, and then clears the selection  This function then calls the 'changed' handler.
+// This is an undoable action.
+//
+// Parameters:
+// name - The given name
+this.createLayer = function(name) {
+	var batchCmd = new BatchCommand("Create Layer");
+	var new_layer = getCurrentDrawing().createLayer(name);
+	batchCmd.addSubCommand(new InsertElementCommand(new_layer));
+	addCommandToHistory(batchCmd);
+	clearSelection();
+	call("changed", [new_layer]);
+};
+
+// Function: cloneLayer
+// Creates a new top-level layer in the drawing with the given name, copies all the current layer's contents
+// to it, and then clears the selection  This function then calls the 'changed' handler.
+// This is an undoable action.
+//
+// Parameters:
+// name - The given name
+this.cloneLayer = function(name) {
+	var batchCmd = new BatchCommand("Duplicate Layer");
+	var new_layer = svgdoc.createElementNS(svgns, "g");
+	var layer_title = svgdoc.createElementNS(svgns, "title");
+	layer_title.textContent = name;
+	new_layer.appendChild(layer_title);
+	var current_layer = getCurrentDrawing().getCurrentLayer();
+	$(current_layer).after(new_layer);
+	var childs = current_layer.childNodes;
+	for(var i = 0; i < childs.length; i++) {
+		var ch = childs[i];
+		if(ch.localName == 'title') continue;
+		new_layer.appendChild(copyElem(ch));
+	}
+	
+	clearSelection();
+	identifyLayers();
+
+	batchCmd.addSubCommand(new InsertElementCommand(new_layer));
+	addCommandToHistory(batchCmd);
+	canvas.setCurrentLayer(name);
+	call("changed", [new_layer]);
+};
+
+// Function: deleteCurrentLayer
+// Deletes the current layer from the drawing and then clears the selection. This function 
+// then calls the 'changed' handler.  This is an undoable action.
+this.deleteCurrentLayer = function() {
+	var current_layer = getCurrentDrawing().getCurrentLayer();
+	var nextSibling = current_layer.nextSibling;
+	var parent = current_layer.parentNode;
+	current_layer = getCurrentDrawing().deleteCurrentLayer();
+	if (current_layer) {
+		var batchCmd = new BatchCommand("Delete Layer");
+		// store in our Undo History
+		batchCmd.addSubCommand(new RemoveElementCommand(current_layer, nextSibling, parent));
+		addCommandToHistory(batchCmd);
+		clearSelection();
+		call("changed", [parent]);
+		return true;
+	}
+	return false;
+};
+
+// Function: setCurrentLayer
+// Sets the current layer. If the name is not a valid layer name, then this function returns
+// false. Otherwise it returns true. This is not an undo-able action.
+//
+// Parameters:
+// name - the name of the layer you want to switch to.
+//
+// Returns:
+// true if the current layer was switched, otherwise false
+this.setCurrentLayer = function(name) {
+	var result = getCurrentDrawing().setCurrentLayer(svgedit.utilities.toXml(name));
+	if (result) {
+		clearSelection();
+	}
+	return result;
+};
+
+// Function: renameCurrentLayer
+// Renames the current layer. If the layer name is not valid (i.e. unique), then this function 
+// does nothing and returns false, otherwise it returns true. This is an undo-able action.
+// 
+// Parameters:
+// newname - the new name you want to give the current layer.  This name must be unique 
+// among all layer names.
+//
+// Returns:
+// true if the rename succeeded, false otherwise.
+this.renameCurrentLayer = function(newname) {
+	var drawing = getCurrentDrawing();
+	if (drawing.current_layer) {
+		var oldLayer = drawing.current_layer;
+		// setCurrentLayer will return false if the name doesn't already exist
+		// this means we are free to rename our oldLayer
+		if (!canvas.setCurrentLayer(newname)) {
+			var batchCmd = new BatchCommand("Rename Layer");
+			// find the index of the layer
+			for (var i = 0; i < drawing.getNumLayers(); ++i) {
+				if (drawing.all_layers[i][1] == oldLayer) break;
+			}
+			var oldname = drawing.getLayerName(i);
+			drawing.all_layers[i][0] = svgedit.utilities.toXml(newname);
+		
+			// now change the underlying title element contents
+			var len = oldLayer.childNodes.length;
+			for (var i = 0; i < len; ++i) {
+				var child = oldLayer.childNodes.item(i);
+				// found the <title> element, now append all the
+				if (child && child.tagName == "title") {
+					// wipe out old name 
+					while (child.firstChild) { child.removeChild(child.firstChild); }
+					child.textContent = newname;
+
+					batchCmd.addSubCommand(new ChangeElementCommand(child, {"#text":oldname}));
+					addCommandToHistory(batchCmd);
+					call("changed", [oldLayer]);
+					return true;
+				}
+			}
+		}
+		drawing.current_layer = oldLayer;
+	}
+	return false;
+};
+
+// Function: setCurrentLayerPosition
+// Changes the position of the current layer to the new value. If the new index is not valid, 
+// this function does nothing and returns false, otherwise it returns true. This is an
+// undo-able action.
+//
+// Parameters:
+// newpos - The zero-based index of the new position of the layer.  This should be between
+// 0 and (number of layers - 1)
+// 
+// Returns:
+// true if the current layer position was changed, false otherwise.
+this.setCurrentLayerPosition = function(newpos) {
+	var drawing = getCurrentDrawing();
+	if (drawing.current_layer && newpos >= 0 && newpos < drawing.getNumLayers()) {
+		for (var oldpos = 0; oldpos < drawing.getNumLayers(); ++oldpos) {
+			if (drawing.all_layers[oldpos][1] == drawing.current_layer) break;
+		}
+		// some unknown error condition (current_layer not in all_layers)
+		if (oldpos == drawing.getNumLayers()) { return false; }
+		
+		if (oldpos != newpos) {
+			// if our new position is below us, we need to insert before the node after newpos
+			var refLayer = null;
+			var oldNextSibling = drawing.current_layer.nextSibling;
+			if (newpos > oldpos ) {
+				if (newpos < drawing.getNumLayers()-1) {
+					refLayer = drawing.all_layers[newpos+1][1];
+				}
+			}
+			// if our new position is above us, we need to insert before the node at newpos
+			else {
+				refLayer = drawing.all_layers[newpos][1];
+			}
+			svgcontent.insertBefore(drawing.current_layer, refLayer);
+			addCommandToHistory(new MoveElementCommand(drawing.current_layer, oldNextSibling, svgcontent));
+			
+			identifyLayers();
+			canvas.setCurrentLayer(drawing.getLayerName(newpos));
+			
+			return true;
+		}
+	}
+	
+	return false;
+};
+
+// Function: setLayerVisibility
+// Sets the visibility of the layer. If the layer name is not valid, this function return 
+// false, otherwise it returns true. This is an undo-able action.
+//
+// Parameters:
+// layername - the name of the layer to change the visibility
+// bVisible - true/false, whether the layer should be visible
+//
+// Returns:
+// true if the layer's visibility was set, false otherwise
+this.setLayerVisibility = function(layername, bVisible) {
+	var drawing = getCurrentDrawing();
+	var prevVisibility = drawing.getLayerVisibility(layername);
+	var layer = drawing.setLayerVisibility(layername, bVisible);
+	if (layer) {
+		var oldDisplay = prevVisibility ? 'inline' : 'none';
+		addCommandToHistory(new ChangeElementCommand(layer, {'display':oldDisplay}, 'Layer Visibility'));
+	} else {
+		return false;
+	}
+	
+	if (layer == drawing.getCurrentLayer()) {
+		clearSelection();
+		pathActions.clear();
+	}
+//		call("changed", [selected]);	
+	return true;
+};
+
+// Function: moveSelectedToLayer
+// Moves the selected elements to layername. If the name is not a valid layer name, then false 
+// is returned.  Otherwise it returns true. This is an undo-able action.
+//
+// Parameters:
+// layername - the name of the layer you want to which you want to move the selected elements
+//
+// Returns:
+// true if the selected elements were moved to the layer, false otherwise.
+this.moveSelectedToLayer = function(layername) {
+	// find the layer
+	var layer = null;
+	var drawing = getCurrentDrawing();
+	for (var i = 0; i < drawing.getNumLayers(); ++i) {
+		if (drawing.getLayerName(i) == layername) {
+			layer = drawing.all_layers[i][1];
+			break;
+		}
+	}
+	if (!layer) return false;
+	
+	var batchCmd = new BatchCommand("Move Elements to Layer");
+	
+	// loop for each selected element and move it
+	var selElems = selectedElements;
+	var i = selElems.length;
+	while (i--) {
+		var elem = selElems[i];
+		if (!elem) continue;
+		var oldNextSibling = elem.nextSibling;
+		// TODO: this is pretty brittle!
+		var oldLayer = elem.parentNode;
+		layer.appendChild(elem);
+		batchCmd.addSubCommand(new MoveElementCommand(elem, oldNextSibling, oldLayer));
+	}
+	
+	addCommandToHistory(batchCmd);
+	
+	return true;
+};
+
+this.mergeLayer = function(skipHistory) {
+	var batchCmd = new BatchCommand("Merge Layer");
+	var drawing = getCurrentDrawing();
+	var prev = $(drawing.current_layer).prev()[0];
+	if(!prev) return;
+	var childs = drawing.current_layer.childNodes;
+	var len = childs.length;
+	var layerNextSibling = drawing.current_layer.nextSibling;
+	batchCmd.addSubCommand(new RemoveElementCommand(drawing.current_layer, layerNextSibling, svgcontent));
+
+	while(drawing.current_layer.firstChild) {
+		var ch = drawing.current_layer.firstChild;
+		if(ch.localName == 'title') {
+			var chNextSibling = ch.nextSibling;
+			batchCmd.addSubCommand(new RemoveElementCommand(ch, chNextSibling, drawing.current_layer));
+			drawing.current_layer.removeChild(ch);
+			continue;
+		}
+		var oldNextSibling = ch.nextSibling;
+		prev.appendChild(ch);
+		batchCmd.addSubCommand(new MoveElementCommand(ch, oldNextSibling, drawing.current_layer));
+	}
+	
+	// Remove current layer
+	svgcontent.removeChild(drawing.current_layer);
+	
+	if(!skipHistory) {
+		clearSelection();
+		identifyLayers();
+
+		call("changed", [svgcontent]);
+		
+		addCommandToHistory(batchCmd);
+	}
+	
+	drawing.current_layer = prev;
+	return batchCmd;
+}
+
+this.mergeAllLayers = function() {
+	var batchCmd = new BatchCommand("Merge all Layers");
+	var drawing = getCurrentDrawing();
+	drawing.current_layer = drawing.all_layers[drawing.getNumLayers()-1][1];
+	while($(svgcontent).children('g').length > 1) {
+		batchCmd.addSubCommand(canvas.mergeLayer(true));
+	}
+	
+	clearSelection();
+	identifyLayers();
+	call("changed", [svgcontent]);
+	addCommandToHistory(batchCmd);
+}
+
+// Function: leaveContext
+// Return from a group context to the regular kind, make any previously
+// disabled elements enabled again
+var leaveContext = this.leaveContext = function() {
+	var len = disabled_elems.length;
+	if(len) {
+		for(var i = 0; i < len; i++) {
+			var elem = disabled_elems[i];
+			
+			var orig = elData(elem, 'orig_opac');
+			if(orig !== 1) {
+				elem.setAttribute('opacity', orig);
+			} else {
+				elem.removeAttribute('opacity');
+			}
+			elem.setAttribute('style', 'pointer-events: inherit');
+		}
+		disabled_elems = [];
+		clearSelection(true);
+		call("contextset", null);
+	}
+	current_group = null;
+}
+
+// Function: setContext
+// Set the current context (for in-group editing)
+var setContext = this.setContext = function(elem) {
+	leaveContext();
+	if(typeof elem === 'string') {
+		elem = getElem(elem);
+	}
+
+	// Edit inside this group
+	current_group = elem;
+	
+	// Disable other elements
+	$(elem).parentsUntil('#svgcontent').andSelf().siblings().each(function() {
+		var opac = this.getAttribute('opacity') || 1;
+		// Store the original's opacity
+		elData(this, 'orig_opac', opac);
+		this.setAttribute('opacity', opac * .33);
+		this.setAttribute('style', 'pointer-events: none');
+		disabled_elems.push(this);
+	});
+
+	clearSelection();
+	call("contextset", current_group);
+}
+
+// Group: Document functions
+
+// Function: clear
+// Clears the current document.  This is not an undoable action.
+this.clear = function() {
+	pathActions.clear();
+
+	clearSelection();
+
+	// clear the svgcontent node
+	canvas.clearSvgContentElement();
+
+	// create new document
+	canvas.current_drawing_ = new svgedit.draw.Drawing(svgcontent);
+
+	// create empty first layer
+	canvas.createLayer("Layer 1");
+	
+	// clear the undo stack
+	canvas.undoMgr.resetUndoStack();
+
+	// reset the selector manager
+	selectorManager.initGroup();
+
+	// reset the rubber band box
+	rubberBox = selectorManager.getRubberBandBox();
+
+	call("cleared");
+};
+
+// Function: linkControlPoints
+// Alias function
+this.linkControlPoints = pathActions.linkControlPoints;
+
+// Function: getContentElem
+// Returns the content DOM element
+this.getContentElem = function() { return svgcontent; };
+
+// Function: getRootElem
+// Returns the root DOM element
+this.getRootElem = function() { return svgroot; };
+
+// Function: getSelectedElems
+// Returns the array with selected DOM elements
+this.getSelectedElems = function() { return selectedElements; };
+
+// Function: getResolution
+// Returns the current dimensions and zoom level in an object
+var getResolution = this.getResolution = function() {
+// 		var vb = svgcontent.getAttribute("viewBox").split(' ');
+// 		return {'w':vb[2], 'h':vb[3], 'zoom': current_zoom};
+	
+	var width = svgcontent.getAttribute("width")/current_zoom;
+	var height = svgcontent.getAttribute("height")/current_zoom;
+	
+	return {
+		'w': width,
+		'h': height,
+		'zoom': current_zoom
+	};
+};
+
+// Function: getZoom
+// Returns the current zoom level
+this.getZoom = function(){return current_zoom;};
+
+// Function: getVersion
+// Returns a string which describes the revision number of SvgCanvas.
+this.getVersion = function() {
+	return "svgcanvas.js ($Rev: 2082 $)";
+};
+
+// Function: setUiStrings
+// Update interface strings with given values
+//
+// Parameters:
+// strs - Object with strings (see uiStrings for examples)
+this.setUiStrings = function(strs) {
+	$.extend(uiStrings, strs.notification);
+}
+
+// Function: setConfig
+// Update configuration options with given values
+//
+// Parameters:
+// opts - Object with options (see curConfig for examples)
+this.setConfig = function(opts) {
+	$.extend(curConfig, opts);
+}
+
+// Function: getTitle
+// Returns the current group/SVG's title contents
+this.getTitle = function(elem) {
+	elem = elem || selectedElements[0];
+	if(!elem) return;
+	elem = $(elem).data('gsvg') || $(elem).data('symbol') || elem;
+	var childs = elem.childNodes;
+	for (var i=0; i<childs.length; i++) {
+		if(childs[i].nodeName == 'title') {
+			return childs[i].textContent;
+		}
+	}
+	return '';
+}
+
+// Function: setGroupTitle
+// Sets the group/SVG's title content
+// TODO: Combine this with setDocumentTitle
+this.setGroupTitle = function(val) {
+	var elem = selectedElements[0];
+	elem = $(elem).data('gsvg') || elem;
+	
+	var ts = $(elem).children('title');
+	
+	var batchCmd = new BatchCommand("Set Label");
+	
+	if(!val.length) {
+		// Remove title element
+		var tsNextSibling = ts.nextSibling;
+		batchCmd.addSubCommand(new RemoveElementCommand(ts[0], tsNextSibling, elem));
+		ts.remove();
+	} else if(ts.length) {
+		// Change title contents
+		var title = ts[0];
+		batchCmd.addSubCommand(new ChangeElementCommand(title, {'#text': title.textContent}));
+		title.textContent = val;
+	} else {
+		// Add title element
+		title = svgdoc.createElementNS(svgns, "title");
+		title.textContent = val;
+		$(elem).prepend(title);
+		batchCmd.addSubCommand(new InsertElementCommand(title));
+	}
+
+	addCommandToHistory(batchCmd);
+}
+
+// Function: getDocumentTitle
+// Returns the current document title or an empty string if not found
+this.getDocumentTitle = function() {
+	return canvas.getTitle(svgcontent);
+}
+
+// Function: setDocumentTitle
+// Adds/updates a title element for the document with the given name.
+// This is an undoable action
+//
+// Parameters:
+// newtitle - String with the new title
+this.setDocumentTitle = function(newtitle) {
+	var childs = svgcontent.childNodes, doc_title = false, old_title = '';
+	
+	var batchCmd = new BatchCommand("Change Image Title");
+	
+	for (var i=0; i<childs.length; i++) {
+		if(childs[i].nodeName == 'title') {
+			doc_title = childs[i];
+			old_title = doc_title.textContent;
+			break;
+		}
+	}
+	if(!doc_title) {
+		doc_title = svgdoc.createElementNS(svgns, "title");
+		svgcontent.insertBefore(doc_title, svgcontent.firstChild);
+	} 
+	
+	if(newtitle.length) {
+		doc_title.textContent = newtitle;
+	} else {
+		// No title given, so element is not necessary
+		doc_title.parentNode.removeChild(doc_title);
+	}
+	batchCmd.addSubCommand(new ChangeElementCommand(doc_title, {'#text': old_title}));
+	addCommandToHistory(batchCmd);
+}
+
+// Function: getEditorNS
+// Returns the editor's namespace URL, optionally adds it to root element
+//
+// Parameters:
+// add - Boolean to indicate whether or not to add the namespace value
+this.getEditorNS = function(add) {
+	if(add) {
+		svgcontent.setAttribute('xmlns:se', se_ns);
+	}
+	return se_ns;
+}
+
+// Function: setResolution
+// Changes the document's dimensions to the given size
+//
+// Parameters: 
+// x - Number with the width of the new dimensions in user units. 
+// Can also be the string "fit" to indicate "fit to content"
+// y - Number with the height of the new dimensions in user units. 
+//
+// Returns:
+// Boolean to indicate if resolution change was succesful. 
+// It will fail on "fit to content" option with no content to fit to.
+this.setResolution = function(x, y) {
+	var res = getResolution();
+	var w = res.w, h = res.h;
+	var batchCmd;
+
+	if(x == 'fit') {
+		// Get bounding box
+		var bbox = getStrokedBBox();
+		
+		if(bbox) {
+			batchCmd = new BatchCommand("Fit Canvas to Content");
+			var visEls = getVisibleElements();
+			addToSelection(visEls);
+			var dx = [], dy = [];
+			$.each(visEls, function(i, item) {
+				dx.push(bbox.x*-1);
+				dy.push(bbox.y*-1);
+			});
+			
+			var cmd = canvas.moveSelectedElements(dx, dy, true);
+			batchCmd.addSubCommand(cmd);
+			clearSelection();
+			
+			x = Math.round(bbox.width);
+			y = Math.round(bbox.height);
+		} else {
+			return false;
+		}
+	}
+	if (x != w || y != h) {
+		var handle = svgroot.suspendRedraw(1000);
+		if(!batchCmd) {
+			batchCmd = new BatchCommand("Change Image Dimensions");
+		}
+
+		x = convertToNum('width', x);
+		y = convertToNum('height', y);
+		
+		svgcontent.setAttribute('width', x);
+		svgcontent.setAttribute('height', y);
+		
+		this.contentW = x;
+		this.contentH = y;
+		batchCmd.addSubCommand(new ChangeElementCommand(svgcontent, {"width":w, "height":h}));
+
+		svgcontent.setAttribute("viewBox", [0, 0, x/current_zoom, y/current_zoom].join(' '));
+		batchCmd.addSubCommand(new ChangeElementCommand(svgcontent, {"viewBox": ["0 0", w, h].join(' ')}));
+	
+		addCommandToHistory(batchCmd);
+		svgroot.unsuspendRedraw(handle);
+		background = document.getElementById("canvas_background");
+	  if (background) {
+	    background.setAttribute("x", -1)
+	    background.setAttribute("y", -1)
+	    background.setAttribute("width", x+2)
+	    background.setAttribute("height", y+2)
+	  }
+		call("changed", [svgcontent]);
+	}
+	return [x,y];
+};
+
+// Function: getOffset
+// Returns an object with x, y values indicating the svgcontent element's
+// position in the editor's canvas.
+this.getOffset = function() {
+	return $(svgcontent).attr(['x', 'y']);
+}
+
+// Function: setBBoxZoom
+// Sets the zoom level on the canvas-side based on the given value
+// 
+// Parameters:
+// val - Bounding box object to zoom to or string indicating zoom option 
+// editor_w - Integer with the editor's workarea box's width
+// editor_h - Integer with the editor's workarea box's height
+this.setBBoxZoom = function(val, editor_w, editor_h) {
+	var spacer = .85;
+	var bb;
+	var calcZoom = function(bb) {
+		if(!bb) return false;
+		var w_zoom = Math.round((editor_w / bb.width)*100 * spacer)/100;
+		var h_zoom = Math.round((editor_h / bb.height)*100 * spacer)/100;	
+		var zoomlevel = Math.min(w_zoom,h_zoom);
+		canvas.setZoom(zoomlevel);
+		return {'zoom': zoomlevel, 'bbox': bb};
+	}
+	
+	if(typeof val == 'object') {
+		bb = val;
+		if(bb.width == 0 || bb.height == 0) {
+			var newzoom = bb.zoom?bb.zoom:current_zoom * bb.factor;
+			canvas.setZoom(newzoom);
+			return {'zoom': current_zoom, 'bbox': bb};
+		}
+		return calcZoom(bb);
+	}
+
+	switch (val) {
+		case 'selection':
+			if(!selectedElements[0]) return;
+			var sel_elems = $.map(selectedElements, function(n){ if(n) return n; });
+			bb = getStrokedBBox(sel_elems);
+			break;
+		case 'canvas':
+			var res = getResolution();
+			spacer = .95;
+			bb = {width:res.w, height:res.h ,x:0, y:0};
+			break;
+		case 'content':
+			bb = getStrokedBBox();
+			break;
+		case 'layer':
+			bb = getStrokedBBox(getVisibleElements(getCurrentDrawing().getCurrentLayer()));
+			break;
+		default:
+			return;
+	}
+	return calcZoom(bb);
+}
+
+// Function: setZoom
+// Sets the zoom to the given level
+//
+// Parameters:
+// zoomlevel - Float indicating the zoom level to change to
+this.setZoom = function(zoomlevel) {
+	var res = getResolution();
+	svgcontent.setAttribute("viewBox", "0 0 " + res.w/zoomlevel + " " + res.h/zoomlevel);
+	current_zoom = zoomlevel;
+	$.each(selectedElements, function(i, elem) {
+		if(!elem) return;
+		selectorManager.requestSelector(elem).resize();
+	});
+	pathActions.zoomChange();
+	runExtensions("zoomChanged", zoomlevel);
+}
+
+// Function: getMode
+// Returns the current editor mode string
+this.getMode = function() {
+	return current_mode;
+};
+
+// Function: setMode
+// Sets the editor's mode to the given string
+//
+// Parameters:
+// name - String with the new mode to change to
+this.setMode = function(name) {
+	
+	pathActions.clear();
+	textActions.clear();
+	$("#workarea").attr("class", name);
+	cur_properties = (selectedElements[0] && selectedElements[0].nodeName == 'text') ? cur_text : cur_shape;
+	current_mode = name;
+};
+
+// Group: Element Styling
+
+// Function: getColor
+// Returns the current fill/stroke option
+this.getColor = function(type) {
+	return cur_properties[type];
+};
+
+// Function: setColor
+// Change the current stroke/fill color/gradient value
+// 
+// Parameters:
+// type - String indicating fill or stroke
+// val - The value to set the stroke attribute to
+// preventUndo - Boolean indicating whether or not this should be and undoable option
+this.setColor = function(type, val, preventUndo) {
+	cur_shape[type] = val;
+	cur_properties[type + '_paint'] = {type:"solidColor"};
+	var elems = [];
+	var i = selectedElements.length;
+	while (i--) {
+		var elem = selectedElements[i];
+		if (elem) {
+			if (elem.tagName == "g")
+				svgedit.utilities.walkTree(elem, function(e){if(e.nodeName!="g") elems.push(e);});
+			else {
+				if(type == 'fill') {
+					if(elem.tagName != "polyline" && elem.tagName != "line") {
+						elems.push(elem);
+					}
+				} else {
+					elems.push(elem);
+				}
+			}
+		}
+	}
+	if (elems.length > 0) {
+		if (!preventUndo) {
+			changeSelectedAttribute(type, val, elems);
+			call("changed", elems);
+		} else 
+			changeSelectedAttributeNoUndo(type, val, elems);
+	}
+}
+
+
+// Function: findDefs
+// Return the document's <defs> element, create it first if necessary
+var findDefs = function() {
+	var defs = svgcontent.getElementsByTagNameNS(svgns, "defs");
+	if (defs.length > 0) {
+		defs = defs[0];
+	}
+	else {
+		defs = svgdoc.createElementNS(svgns, "defs" );
+		if(svgcontent.firstChild) {
+			// first child is a comment, so call nextSibling
+			svgcontent.insertBefore( defs, svgcontent.firstChild.nextSibling);
+		} else {
+			svgcontent.appendChild(defs);
+		}
+	}
+	return defs;
+};
+
+// Function: setGradient
+// Apply the current gradient to selected element's fill or stroke
+//
+// Parameters
+// type - String indicating "fill" or "stroke" to apply to an element
+var setGradient = this.setGradient = function(type) {
+	if(!cur_properties[type + '_paint'] || cur_properties[type + '_paint'].type == "solidColor") return;
+	var grad = canvas[type + 'Grad'];
+	// find out if there is a duplicate gradient already in the defs
+	var duplicate_grad = findDuplicateGradient(grad);
+	var defs = findDefs();
+	// no duplicate found, so import gradient into defs
+	if (!duplicate_grad) {
+		var orig_grad = grad;
+		grad = defs.appendChild( svgdoc.importNode(grad, true) );
+		// get next id and set it on the grad
+		grad.id = getNextId();
+	}
+	else { // use existing gradient
+		grad = duplicate_grad;
+	}
+	canvas.setColor(type, "url(#" + grad.id + ")");
+	if (type == "canvas") {
+	  var background = document.getElementById("canvas_background");
+	  if (background) {
+	    background.setAttribute('fill', "url(#" + grad.id + ")")
+	  }
+	}
+}
+
+// Function: findDuplicateGradient
+// Check if exact gradient already exists
+//
+// Parameters:
+// grad - The gradient DOM element to compare to others
+//
+// Returns:
+// The existing gradient if found, null if not
+var findDuplicateGradient = function(grad) {
+	var defs = findDefs();
+	var existing_grads = $(defs).find("linearGradient, radialGradient");
+	var i = existing_grads.length;
+	var rad_attrs = ['r','cx','cy','fx','fy'];
+	while (i--) {
+		var og = existing_grads[i];
+		if(grad.tagName == "linearGradient") {
+			if (grad.getAttribute('x1') != og.getAttribute('x1') ||
+				grad.getAttribute('y1') != og.getAttribute('y1') ||
+				grad.getAttribute('x2') != og.getAttribute('x2') ||
+				grad.getAttribute('y2') != og.getAttribute('y2')) 
+			{
+				continue;
+			}
+		} else {
+			var grad_attrs = $(grad).attr(rad_attrs);
+			var og_attrs = $(og).attr(rad_attrs);
+			
+			var diff = false;
+			$.each(rad_attrs, function(i, attr) {
+				if(grad_attrs[attr] != og_attrs[attr]) diff = true;
+			});
+			
+			if(diff) continue;
+		}
+		
+		// else could be a duplicate, iterate through stops
+		var stops = grad.getElementsByTagNameNS(svgns, "stop");
+		var ostops = og.getElementsByTagNameNS(svgns, "stop");
+
+		if (stops.length != ostops.length) {
+			continue;
+		}
+
+		var j = stops.length;
+		while(j--) {
+			var stop = stops[j];
+			var ostop = ostops[j];
+
+			if (stop.getAttribute('offset') != ostop.getAttribute('offset') ||
+				stop.getAttribute('stop-opacity') != ostop.getAttribute('stop-opacity') ||
+				stop.getAttribute('stop-color') != ostop.getAttribute('stop-color')) 
+			{
+				break;
+			}
+		}
+
+		if (j == -1) {
+			return og;
+		}
+	} // for each gradient in defs
+
+	return null;
+};
+
+function reorientGrads(elem, m) {
+	var bb = svgedit.utilities.getBBox(elem);
+	for(var i = 0; i < 2; i++) {
+		var type = i === 0 ? 'fill' : 'stroke';
+		var attrVal = elem.getAttribute(type);
+		if(attrVal && attrVal.indexOf('url(') === 0) {
+			var grad = getRefElem(attrVal);
+			if(grad.tagName === 'linearGradient') {
+				var x1 = grad.getAttribute('x1') || 0;
+				var y1 = grad.getAttribute('y1') || 0;
+				var x2 = grad.getAttribute('x2') || 1;
+				var y2 = grad.getAttribute('y2') || 0;
+				
+				// Convert to USOU points
+				x1 = (bb.width * x1) + bb.x;
+				y1 = (bb.height * y1) + bb.y;
+				x2 = (bb.width * x2) + bb.x;
+				y2 = (bb.height * y2) + bb.y;
+			
+				// Transform those points
+				var pt1 = transformPoint(x1, y1, m);
+				var pt2 = transformPoint(x2, y2, m);
+				
+				// Convert back to BB points
+				var g_coords = {};
+				
+				g_coords.x1 = (pt1.x - bb.x) / bb.width;
+				g_coords.y1 = (pt1.y - bb.y) / bb.height;
+				g_coords.x2 = (pt2.x - bb.x) / bb.width;
+				g_coords.y2 = (pt2.y - bb.y) / bb.height;
+		
+				var newgrad = grad.cloneNode(true);
+				$(newgrad).attr(g_coords);
+	
+				newgrad.id = getNextId();
+				findDefs().appendChild(newgrad);
+				elem.setAttribute(type, 'url(#' + newgrad.id + ')');
+			}
+		}
+	}
+}
+
+// Function: setPaint
+// Set a color/gradient to a fill/stroke
+//
+// Parameters: 
+// type - String with "fill" or "stroke"
+// paint - The jGraduate paint object to apply
+this.setPaint = function(type, paint) {
+	// make a copy
+	var p = new $.jGraduate.Paint(paint);
+	this.setPaintOpacity(type, p.alpha/100, true);
+	// now set the current paint object
+	cur_properties[type + '_paint'] = p;
+	switch ( p.type ) {
+		case "solidColor":
+		  
+			if (p.solidColor != "none" && p.solidColor != "#none") {
+			  this.setColor(type, "#"+p.solidColor)
+			}
+			else {
+			  this.setColor(type, "none");
+			  var selector = (type == "fill") ? "#fill_color rect" : "#stroke_color rect" 
+			  document.querySelector(selector).setAttribute('fill', 'none');
+			}
+			break;
+		case "linearGradient":
+		case "radialGradient":
+			canvas[type + 'Grad'] = p[p.type];
+			setGradient(type);
+			break;
+		default:
+//			console.log("none!");
+	}
+};
+
+
+// this.setStrokePaint = function(p) {
+// 	// make a copy
+// 	var p = new $.jGraduate.Paint(p);
+// 	this.setStrokeOpacity(p.alpha/100);
+// 
+// 	// now set the current paint object
+// 	cur_properties.stroke_paint = p;
+// 	switch ( p.type ) {
+// 		case "solidColor":
+// 			this.setColor('stroke', p.solidColor != "none" ? "#"+p.solidColor : "none");;
+// 			break;
+// 		case "linearGradient"
+// 		case "radialGradient"
+// 			canvas.strokeGrad = p[p.type];
+// 			setGradient(type); 
+// 		default:
+// //			console.log("none!");
+// 	}
+// };
+// 
+// this.setFillPaint = function(p, addGrad) {
+// 	// make a copy
+// 	var p = new $.jGraduate.Paint(p);
+// 	this.setFillOpacity(p.alpha/100, true);
+// 
+// 	// now set the current paint object
+// 	cur_properties.fill_paint = p;
+// 	if (p.type == "solidColor") {
+// 		this.setColor('fill', p.solidColor != "none" ? "#"+p.solidColor : "none");
+// 	}
+// 	else if(p.type == "linearGradient") {
+// 		canvas.fillGrad = p.linearGradient;
+// 		if(addGrad) setGradient(); 
+// 	}
+// 	else if(p.type == "radialGradient") {
+// 		canvas.fillGrad = p.radialGradient;
+// 		if(addGrad) setGradient(); 
+// 	}
+// 	else {
+// //			console.log("none!");
+// 	}
+// };
+
+// Function: getStrokeWidth
+// Returns the current stroke-width value
+this.getStrokeWidth = function() {
+	return cur_properties.stroke_width;
+};
+
+// Function: setStrokeWidth
+// Sets the stroke width for the current selected elements
+// When attempting to set a line's width to 0, this changes it to 1 instead
+//
+// Parameters:
+// val - A Float indicating the new stroke width value
+this.setStrokeWidth = function(val) {
+	if(val == 0 && ['line', 'path'].indexOf(current_mode) >= 0) {
+		canvas.setStrokeWidth(1);
+		return;
+	}
+	cur_properties.stroke_width = val;
+	
+	var elems = [];
+	var i = selectedElements.length;
+	while (i--) {
+		var elem = selectedElements[i];
+		if (elem) {
+			if (elem.tagName == "g")
+				svgedit.utilities.walkTree(elem, function(e){if(e.nodeName!="g") elems.push(e);});
+			else 
+				elems.push(elem);
+		}
+	}		
+	if (elems.length > 0) {
+		changeSelectedAttribute("stroke-width", val, elems);
+		call("changed", selectedElements);
+	}
+};
+
+// Function: setStrokeAttr
+// Set the given stroke-related attribute the given value for selected elements
+//
+// Parameters:
+// attr - String with the attribute name
+// val - String or number with the attribute value
+this.setStrokeAttr = function(attr, val) {
+	cur_shape[attr.replace('-','_')] = val;
+	var elems = [];
+	var i = selectedElements.length;
+	while (i--) {
+		var elem = selectedElements[i];
+		if (elem) {
+			if (elem.tagName == "g")
+				svgedit.utilities.walkTree(elem, function(e){if(e.nodeName!="g") elems.push(e);});
+			else 
+				elems.push(elem);
+		}
+	}		
+	if (elems.length > 0) {
+		changeSelectedAttribute(attr, val, elems);
+		call("changed", selectedElements);
+	}
+};
+
+// Function: getStyle
+// Returns current style options
+this.getStyle = function() {
+	return cur_shape;
+}
+
+// Function: getOpacity
+// Returns the current opacity
+this.getOpacity = function() {
+	return cur_shape.opacity;
+};
+
+// Function: setOpacity
+// Sets the given opacity to the current selected elements
+this.setOpacity = function(val) {
+	cur_shape.opacity = val;
+	changeSelectedAttribute("opacity", val);
+};
+
+// Function: getOpacity
+// Returns the current fill opacity
+this.getFillOpacity = function() {
+	return cur_shape.fill_opacity;
+};
+
+// Function: getStrokeOpacity
+// Returns the current stroke opacity
+this.getStrokeOpacity = function() {
+	return cur_shape.stroke_opacity;
+};
+
+// Function: setPaintOpacity
+// Sets the current fill/stroke opacity
+//
+// Parameters:
+// type - String with "fill" or "stroke"
+// val - Float with the new opacity value
+// preventUndo - Boolean indicating whether or not this should be an undoable action
+this.setPaintOpacity = function(type, val, preventUndo) {
+	cur_shape[type + '_opacity'] = val;
+	if (!preventUndo)
+		changeSelectedAttribute(type + "-opacity", val);
+	else
+		changeSelectedAttributeNoUndo(type + "-opacity", val);
+};
+
+// Function: getBlur
+// Gets the stdDeviation blur value of the given element
+//
+// Parameters:
+// elem - The element to check the blur value for
+this.getBlur = function(elem) {
+	var val = 0;
+// 		var elem = selectedElements[0];
+	
+	if(elem) {
+		var filter_url = elem.getAttribute('filter');
+		if(filter_url) {
+			var blur = getElem(elem.id + '_blur');
+			if(blur) {
+				val = blur.firstChild.getAttribute('stdDeviation');
+			}
+		}
+	}
+	return val;
+};
+
+(function() {
+	var cur_command = null;
+	var filter = null;
+	var filterHidden = false;
+	
+	// Function: setBlurNoUndo
+	// Sets the stdDeviation blur value on the selected element without being undoable
+	//
+	// Parameters:
+	// val - The new stdDeviation value
+	canvas.setBlurNoUndo = function(val) {
+		if(!filter) {
+			canvas.setBlur(val);
+			return;
+		}
+		if(val === 0) {
+			// Don't change the StdDev, as that will hide the element.
+			// Instead, just remove the value for "filter"
+			changeSelectedAttributeNoUndo("filter", "");
+			filterHidden = true;
+		} else {
+			var elem = selectedElements[0];
+			if(filterHidden) {
+				changeSelectedAttributeNoUndo("filter", 'url(#' + elem.id + '_blur)');
+			}
+			if(svgedit.browser.isWebkit()) {
+				elem.removeAttribute('filter');
+				elem.setAttribute('filter', 'url(#' + elem.id + '_blur)');
+			}
+			changeSelectedAttributeNoUndo("stdDeviation", val, [filter.firstChild]);
+			canvas.setBlurOffsets(filter, val);
+		}
+	}
+	
+	function finishChange() {
+		var bCmd = canvas.undoMgr.finishUndoableChange();
+		cur_command.addSubCommand(bCmd);
+		addCommandToHistory(cur_command);
+		cur_command = null;	
+		filter = null;
+	}
+
+	// Function: setBlurOffsets
+	// Sets the x, y, with, height values of the filter element in order to
+	// make the blur not be clipped. Removes them if not neeeded
+	//
+	// Parameters:
+	// filter - The filter DOM element to update
+	// stdDev - The standard deviation value on which to base the offset size
+	canvas.setBlurOffsets = function(filter, stdDev) {
+		if(stdDev > 3) {
+			// TODO: Create algorithm here where size is based on expected blur
+			assignAttributes(filter, {
+				x: '-50%',
+				y: '-50%',
+				width: '200%',
+				height: '200%'
+			}, 100);
+		} else {
+			// Removing these attributes hides text in Chrome (see Issue 579)
+			if(!svgedit.browser.isWebkit()) {
+				filter.removeAttribute('x');
+				filter.removeAttribute('y');
+				filter.removeAttribute('width');
+				filter.removeAttribute('height');
+			}
+		}
+	}
+
+	// Function: setBlur 
+	// Adds/updates the blur filter to the selected element
+	//
+	// Parameters:
+	// val - Float with the new stdDeviation blur value
+	// complete - Boolean indicating whether or not the action should be completed (to add to the undo manager)
+	canvas.setBlur = function(val, complete) {
+		if(cur_command) {
+			finishChange();
+			return;
+		}
+	
+		// Looks for associated blur, creates one if not found
+		var elem = selectedElements[0];
+		var elem_id = elem.id;
+		filter = getElem(elem_id + '_blur');
+		
+		val -= 0;
+		
+		var batchCmd = new BatchCommand();
+		
+		// Blur found!
+		if(filter) {
+			if(val === 0) {
+				filter = null;
+			}
+		} else {
+			// Not found, so create
+			var newblur = addSvgElementFromJson({ "element": "feGaussianBlur",
+				"attr": {
+					"in": 'SourceGraphic',
+					"stdDeviation": val
+				}
+			});
+			
+			filter = addSvgElementFromJson({ "element": "filter",
+				"attr": {
+					"id": elem_id + '_blur'
+				}
+			});
+			
+			filter.appendChild(newblur);
+			findDefs().appendChild(filter);
+			
+			batchCmd.addSubCommand(new InsertElementCommand(filter));
+		}
+
+		var changes = {filter: elem.getAttribute('filter')};
+		
+		if(val === 0) {
+			elem.removeAttribute("filter");
+			batchCmd.addSubCommand(new ChangeElementCommand(elem, changes));
+			return;
+		} else {
+			changeSelectedAttribute("filter", 'url(#' + elem_id + '_blur)');
+			
+			batchCmd.addSubCommand(new ChangeElementCommand(elem, changes));
+			
+			canvas.setBlurOffsets(filter, val);
+		}
+		
+		cur_command = batchCmd;
+		canvas.undoMgr.beginUndoableChange("stdDeviation", [filter?filter.firstChild:null]);
+		if(complete) {
+			canvas.setBlurNoUndo(val);
+			finishChange();
+		}
+	};
+}());
+
+// Function: getBold
+// Check whether selected element is bold or not
+//
+// Returns:
+// Boolean indicating whether or not element is bold
+this.getBold = function() {
+	var selectedElems = selectedElements.filter(Boolean)
+	var isBold = true
+	selectedElems.forEach(function(el){
+	  if (el.getAttribute("font-weight") != "bold") isBold = false;
+	});
+	return isBold;
+};
+
+// Function: setBold
+// Make the selected element bold or normal
+//
+// Parameters:
+// b - Boolean indicating bold (true) or normal (false)
+this.setBold = function(b) {
+	var selectedElems = selectedElements.filter(Boolean)
+	selectedElems.forEach(function(selected){
+	  if (selected != null && selected.tagName  == "text") changeSelectedAttribute("font-weight", b ? "bold" : "normal");
+  });
+	if (!selectedElems[0].textContent)	textActions.setCursor();
+};
+
+// Function: getItalic
+// Check whether selected element is italic or not
+//
+// Returns:
+// Boolean indicating whether or not element is italic
+this.getItalic = function() {
+	var selectedElems = selectedElements.filter(Boolean)
+	var isItalic = true
+	selectedElems.forEach(function(el){
+	  if (el.getAttribute("font-style") != "italic") isItalic = false;
+	});
+	return isItalic;
+};
+
+// Function: setItalic
+// Make the selected element italic or normal
+//
+// Parameters:
+// b - Boolean indicating italic (true) or normal (false)
+this.setItalic = function(i) {
+	var selectedElems = selectedElements.filter(Boolean)
+	selectedElems.forEach(function(selected){
+	  if (selected != null && selected.tagName  == "text") changeSelectedAttribute("font-style", i ? "italic" : "normal");
+  });
+	if (!selectedElems[0].textContent) textActions.setCursor();
+};
+
+// Function: getFontFamily
+// Returns the current font family
+this.getFontFamily = function() {
+	return cur_text.font_family;
+};
+
+// Function: setFontFamily
+// Set the new font family
+//
+// Parameters:
+// val - String with the new font family
+this.setFontFamily = function(val) {
+	cur_text.font_family = val;
+	changeSelectedAttribute("font-family", val);
+	if(selectedElements[0] && !selectedElements[0].textContent) {
+		textActions.setCursor();
+	}
+};
+
+
+// Function: setFontColor
+// Set the new font color
+//
+// Parameters:
+// val - String with the new font color
+this.setFontColor = function(val) {
+	cur_text.fill = val;
+	changeSelectedAttribute("fill", val);
+};
+
+// Function: getFontColor
+// Returns the current font color
+this.getFontSize = function() {
+	return cur_text.fill;
+};
+
+// Function: getFontSize
+// Returns the current font size
+this.getFontSize = function() {
+	return cur_text.font_size;
+};
+
+// Function: setFontSize
+// Applies the given font size to the selected element
+//
+// Parameters:
+// val - Float with the new font size
+this.setFontSize = function(val) {
+	cur_text.font_size = val;
+	changeSelectedAttribute("font-size", val);
+	if(!selectedElements[0].textContent) {
+		textActions.setCursor();
+	}
+};
+
+// Function: getText
+// Returns the current text (textContent) of the selected element
+this.getText = function() {
+	var selected = selectedElements[0];
+	if (selected == null) { return ""; }
+	return selected.textContent;
+};
+
+// Function: setTextContent
+// Updates the text element with the given string
+//
+// Parameters:
+// val - String with the new text
+this.setTextContent = function(val) {
+	changeSelectedAttribute("#text", val);
+	textActions.init(val);
+	textActions.setCursor();
+};
+
+// Function: setImageURL
+// Sets the new image URL for the selected image element. Updates its size if
+// a new URL is given
+// 
+// Parameters:
+// val - String with the image URL/path
+this.setImageURL = function(val) {
+	var elem = selectedElements[0];
+	if(!elem) return;
+	
+	var attrs = $(elem).attr(['width', 'height']);
+	var setsize = (!attrs.width || !attrs.height);
+
+	var cur_href = getHref(elem);
+	
+	// Do nothing if no URL change or size change
+	if(cur_href !== val) {
+		setsize = true;
+	} else if(!setsize) return;
+
+	var batchCmd = new BatchCommand("Change Image URL");
+
+	setHref(elem, val);
+	batchCmd.addSubCommand(new ChangeElementCommand(elem, {
+		"#href": cur_href
+	}));
+
+	if(setsize) {
+		$(new Image()).load(function() {
+			var changes = $(elem).attr(['width', 'height']);
+		
+			$(elem).attr({
+				width: this.width,
+				height: this.height
+			});
+			
+			selectorManager.requestSelector(elem).resize();
+			
+			batchCmd.addSubCommand(new ChangeElementCommand(elem, changes));
+			addCommandToHistory(batchCmd);
+			call("changed", [elem]);
+		}).attr('src',val);
+	} else {
+		addCommandToHistory(batchCmd);
+	}
+};
+
+// Function: setLinkURL
+// Sets the new link URL for the selected anchor element.
+// 
+// Parameters:
+// val - String with the link URL/path
+this.setLinkURL = function(val) {
+	var elem = selectedElements[0];
+	if(!elem) return;
+	if(elem.tagName !== 'a') {
+		// See if parent is an anchor
+		var parents_a = $(elem).parents('a');
+		if(parents_a.length) {
+			elem = parents_a[0];
+		} else {
+			return;
+		}
+	}
+	
+	var cur_href = getHref(elem);
+	
+	if(cur_href === val) return;
+	
+	var batchCmd = new BatchCommand("Change Link URL");
+
+	setHref(elem, val);
+	batchCmd.addSubCommand(new ChangeElementCommand(elem, {
+		"#href": cur_href
+	}));
+
+	addCommandToHistory(batchCmd);
+};
+
+
+// Function elementAreSame
+// Checks if all the selected Elements are the same type
+// 
+// Parameters:
+// None
+
+this.elementsAreSame = function(elements) {
+  if (!elements.length || elements[0] == null) return null
+	else {
+	  var isSameElement = function(el) { 
+	    if (el && selectedElements[0])
+	      return (el.nodeName == selectedElements[0].nodeName);
+	    else return null;
+	  }
+	  return selectedElements.every(isSameElement);
+	}
+}
+
+
+// Function: setRectRadius
+// Sets the rx & ry values to the selected rect element to change its corner radius
+// 
+// Parameters:
+// val - The new radius
+this.setRectRadius = function(val) {
+	if (canvas.elementsAreSame(selectedElements) && selectedElements[0].tagName == "rect") {
+		var assign_rr = function(selected){
+		var r = selected.getAttribute("rx");
+  		if (r != val) {
+  			selected.setAttribute("rx", val);
+  			selected.setAttribute("ry", val);
+  			addCommandToHistory(new ChangeElementCommand(selected, {"rx":r, "ry":r}, "Radius"));
+  			call("changed", [selected]);
+  		}
+    }
+		selectedElements.forEach(assign_rr)
+	}
+};
+
+// Function: makeHyperlink
+// Wraps the selected element(s) in an anchor element or converts group to one
+this.makeHyperlink = function(url) {
+	canvas.groupSelectedElements('a', url);
+	
+	// TODO: If element is a single "g", convert to "a"
+	//	if(selectedElements.length > 1 && selectedElements[1]) {
+
+}
+
+// Function: removeHyperlink
+this.removeHyperlink = function() {
+	canvas.ungroupSelectedElement();
+}
+
+// Group: Element manipulation
+
+// Function: setSegType
+// Sets the new segment type to the selected segment(s). 
+//
+// Parameters:
+// new_type - Integer with the new segment type
+// See http://www.w3.org/TR/SVG/paths.html#InterfaceSVGPathSeg for list
+this.setSegType = function(new_type) {
+	pathActions.setSegType(new_type);
+}
+
+// TODO(codedread): Remove the getBBox argument and split this function into two.
+// Function: convertToPath
+// Convert selected element to a path, or get the BBox of an element-as-path
+//
+// Parameters: 
+// elem - The DOM element to be converted
+// getBBox - Boolean on whether or not to only return the path's BBox
+//
+// Returns:
+// If the getBBox flag is true, the resulting path's bounding box object.
+// Otherwise the resulting path element is returned.
+this.convertToPath = function(elem, getBBox) {
+	if(elem == null) {
+		var elems = selectedElements;
+		$.each(selectedElements, function(i, elem) {
+			if(elem) canvas.convertToPath(elem);
+		});
+		return;
+	}
+	
+	if(!getBBox) {
+		var batchCmd = new BatchCommand("Convert element to Path");
+	}
+	
+	var attrs = getBBox?{}:{
+		"fill": cur_shape.fill,
+		"fill-opacity": cur_shape.fill_opacity,
+		"stroke": cur_shape.stroke,
+		"stroke-width": cur_shape.stroke_width,
+		"stroke-dasharray": cur_shape.stroke_dasharray,
+		"stroke-linejoin": cur_shape.stroke_linejoin,
+		"stroke-linecap": cur_shape.stroke_linecap,
+		"stroke-opacity": cur_shape.stroke_opacity,
+		"opacity": cur_shape.opacity,
+		"visibility":"hidden"
+	};
+	
+	// any attribute on the element not covered by the above
+	// TODO: make this list global so that we can properly maintain it
+	// TODO: what about @transform, @clip-rule, @fill-rule, etc?
+	$.each(['marker-start', 'marker-end', 'marker-mid', 'filter', 'clip-path'], function() {
+		if (elem.getAttribute(this)) {
+			attrs[this] = elem.getAttribute(this);
+		}
+	});
+	
+	var path = addSvgElementFromJson({
+		"element": "path",
+		"attr": attrs
+	});
+	
+	var eltrans = elem.getAttribute("transform");
+	if(eltrans) {
+		path.setAttribute("transform",eltrans);
+	}
+	
+	var id = elem.id;
+	var parent = elem.parentNode;
+	if(elem.nextSibling) {
+		parent.insertBefore(path, elem);
+	} else {
+		parent.appendChild(path);
+	}
+	
+	var d = '';
+	
+	var joinSegs = function(segs) {
+		$.each(segs, function(j, seg) {
+			var l = seg[0], pts = seg[1];
+			d += l;
+			for(var i=0; i < pts.length; i+=2) {
+				d += (pts[i] +','+pts[i+1]) + ' ';
+			}
+		});
+	}
+
+	// Possibly the cubed root of 6, but 1.81 works best
+	var num = 1.81;
+
+	switch (elem.tagName) {
+	case 'ellipse':
+	case 'circle':
+		var a = $(elem).attr(['rx', 'ry', 'cx', 'cy']);
+		var cx = a.cx, cy = a.cy, rx = a.rx, ry = a.ry;
+		if(elem.tagName == 'circle') {
+			rx = ry = $(elem).attr('r');
+		}
+	
+		joinSegs([
+			['M',[(cx-rx),(cy)]],
+			['C',[(cx-rx),(cy-ry/num), (cx-rx/num),(cy-ry), (cx),(cy-ry)]],
+			['C',[(cx+rx/num),(cy-ry), (cx+rx),(cy-ry/num), (cx+rx),(cy)]],
+			['C',[(cx+rx),(cy+ry/num), (cx+rx/num),(cy+ry), (cx),(cy+ry)]],
+			['C',[(cx-rx/num),(cy+ry), (cx-rx),(cy+ry/num), (cx-rx),(cy)]],
+			['Z',[]]
+		]);
+		break;
+	case 'path':
+		d = elem.getAttribute('d');
+		break;
+	case 'line':
+		var a = $(elem).attr(["x1", "y1", "x2", "y2"]);
+		d = "M"+a.x1+","+a.y1+"L"+a.x2+","+a.y2;
+		break;
+	case 'polyline':
+	case 'polygon':
+		d = "M" + elem.getAttribute('points');
+		break;
+	case 'rect':
+		var r = $(elem).attr(['rx', 'ry']);
+		var rx = r.rx, ry = r.ry;
+		var b = elem.getBBox();
+		var x = b.x, y = b.y, w = b.width, h = b.height;
+		var num = 4-num; // Why? Because!
+		if(!rx && !ry) {
+			// Regular rect
+			joinSegs([
+				['M',[x, y]],
+				['L',[x+w, y]],
+				['L',[x+w, y+h]],
+				['L',[x, y+h]],
+				['L',[x, y]],
+				['Z',[]]
+			]);
+		} else {
+		  if (!ry) ry = rx
+			joinSegs([
+				['M',[x, y+ry]],
+				['C',[x,y+ry/num, x+rx/num,y, x+rx,y]],
+				['L',[x+w-rx, y]],
+				['C',[x+w-rx/num,y, x+w,y+ry/num, x+w,y+ry]],
+				['L',[x+w, y+h-ry]],
+				['C',[x+w, y+h-ry/num, x+w-rx/num,y+h, x+w-rx,y+h]],
+				['L',[x+rx, y+h]],
+				['C',[x+rx/num, y+h, x,y+h-ry/num, x,y+h-ry]],
+				['L',[x, y+ry]],
+				['Z',[]]
+			]);
+		}
+		break;
+	default:
+		path.parentNode.removeChild(path);
+		break;
+	}
+	
+	if(d) {
+		path.setAttribute('d',d);
+	}
+	
+	if(!getBBox) {
+		// Replace the current element with the converted one
+		
+		// Reorient if it has a matrix
+		if(eltrans) {
+			var tlist = getTransformList(path);
+			if(hasMatrixTransform(tlist)) {
+				pathActions.resetOrientation(path);
+			}
+		}
+		
+		var nextSibling = elem.nextSibling;
+		batchCmd.addSubCommand(new RemoveElementCommand(elem, nextSibling, parent));
+		batchCmd.addSubCommand(new InsertElementCommand(path));
+
+		clearSelection();
+		elem.parentNode.removeChild(elem)
+		path.setAttribute('id', id);
+		path.removeAttribute("visibility");
+		addToSelection([path], true);
+		
+		addCommandToHistory(batchCmd);
+		
+	} else {
+		// Get the correct BBox of the new path, then discard it
+		pathActions.resetOrientation(path);
+		var bb = false;
+		try {
+			bb = path.getBBox();
+		} catch(e) {
+			// Firefox fails
+		}
+		path.parentNode.removeChild(path);
+		return bb;
+	}
+};
+
+
+// Function: changeSelectedAttributeNoUndo
+// This function makes the changes to the elements. It does not add the change
+// to the history stack. 
+// 
+// Parameters:
+// attr - String with the attribute name
+// newValue - String or number with the new attribute value
+// elems - The DOM elements to apply the change to
+var changeSelectedAttributeNoUndo = this.changeSelectedAttributeNoUndo = function(attr, newValue, elems) {
+  	var handle = svgroot.suspendRedraw(1000);
+  	if(current_mode == 'pathedit') {
+  		// Editing node
+  		pathActions.moveNode(attr, newValue);
+  	}
+  	var elems = elems || selectedElements;
+  	var i = elems.length;
+  	var no_xy_elems = ['g', 'polyline', 'path'];
+  	var good_g_attrs = ['transform', 'opacity', 'filter'];
+  	while (i--) {
+  		var elem = elems[i];
+  		if (elem == null) continue;
+  		// Go into "select" mode for text changes
+  		if(current_mode === "textedit" && attr !== "#text" && elem.textContent.length) {
+  			textActions.toSelectMode(elem);
+  		}
+
+  		// Set x,y vals on elements that don't have them
+  		if((attr === 'x' || attr === 'y') && no_xy_elems.indexOf(elem.tagName) >= 0) {
+  			var bbox = getStrokedBBox([elem]);
+  			var diff_x = attr === 'x' ? newValue - bbox.x : 0;
+  			var diff_y = attr === 'y' ? newValue - bbox.y : 0;
+  			canvas.moveSelectedElements(diff_x*current_zoom, diff_y*current_zoom, true);
+  			continue;
+  		}
+
+  		var oldval = attr === "#text" ? elem.textContent : elem.getAttribute(attr);
+  		if (oldval == null)  oldval = "";
+  		if (oldval !== String(newValue)) {
+  			if (attr == "#text") {
+  				var old_w = svgedit.utilities.getBBox(elem).width;
+  				elem.textContent = newValue;
+
+  			} else if (attr == "#href") {
+  				setHref(elem, newValue);
+  			}
+  			else elem.setAttribute(attr, newValue);
+
+  			// Timeout needed for Opera & Firefox
+  			// codedread: it is now possible for this function to be called with elements
+  			// that are not in the selectedElements array, we need to only request a
+  			// selector if the element is in that array
+  			if (selectedElements.indexOf(elem) >= 0) {
+  				setTimeout(function() {
+  					// Due to element replacement, this element may no longer
+  					// be part of the DOM
+  					if(!elem.parentNode) return;
+  					selectorManager.requestSelector(elem).resize();
+  				},0);
+  			}
+  			// if this element was rotated, and we changed the position of this element
+  			// we need to update the rotational transform attribute 
+  			var angle = getRotationAngle(elem);
+  			if (angle != 0 && attr != "transform") {
+  				var tlist = getTransformList(elem);
+  				var n = tlist.numberOfItems;
+  				while (n--) {
+  					var xform = tlist.getItem(n);
+  					if (xform.type == 4) {
+  						// remove old rotate
+  						tlist.removeItem(n);
+
+  						var box = svgedit.utilities.getBBox(elem);
+  						var center = transformPoint(box.x+box.width/2, box.y+box.height/2, transformListToTransform(tlist).matrix);
+  						var cx = center.x,
+  							cy = center.y;
+  						var newrot = svgroot.createSVGTransform();
+  						newrot.setRotate(angle, cx, cy);
+  						tlist.insertItemBefore(newrot, n);
+  						break;
+  					}
+  				}
+  			}
+  		} // if oldValue != newValue
+  	} // for each elem
+  	svgroot.unsuspendRedraw(handle);
+};
+
+// Function: changeSelectedAttribute
+// Change the given/selected element and add the original value to the history stack
+// If you want to change all selectedElements, ignore the elems argument.
+// If you want to change only a subset of selectedElements, then send the
+// subset to this function in the elems argument.
+// 
+// Parameters:
+// attr - String with the attribute name
+// newValue - String or number with the new attribute value
+// elems - The DOM elements to apply the change to
+var changeSelectedAttribute = this.changeSelectedAttribute = function(attr, val, elems) {
+	var elems = elems || selectedElements;
+	canvas.undoMgr.beginUndoableChange(attr, elems);
+	var i = elems.length;
+
+	changeSelectedAttributeNoUndo(attr, val, elems);
+
+	var batchCmd = canvas.undoMgr.finishUndoableChange();
+	if (!batchCmd.isEmpty()) { 
+		addCommandToHistory(batchCmd);
+	}
+};
+
+// Function: deleteSelectedElements
+// Removes all selected elements from the DOM and adds the change to the 
+// history stack
+this.deleteSelectedElements = function() {
+	var batchCmd = new BatchCommand("Delete Elements");
+	var len = selectedElements.length;
+	var selectedCopy = []; //selectedElements is being deleted
+	for (var i = 0; i < len; ++i) {
+		var selected = selectedElements[i];
+		if (selected == null) break;
+
+		var parent = selected.parentNode;
+		var t = selected;
+		
+		// this will unselect the element and remove the selectedOutline
+		selectorManager.releaseSelector(t);
+		
+		// Remove the path if present.
+		svgedit.path.removePath_(t.id);
+		
+		// Get the parent if it's a single-child anchor
+		if(parent.tagName === 'a' && parent.childNodes.length === 1) {
+			t = parent;
+			parent = parent.parentNode;
+		}
+		
+		var nextSibling = t.nextSibling;
+		var elem = parent.removeChild(t);
+		selectedCopy.push(selected); //for the copy
+		selectedElements[i] = null;
+		batchCmd.addSubCommand(new RemoveElementCommand(elem, nextSibling, parent));
+	}
+	if (!batchCmd.isEmpty()) addCommandToHistory(batchCmd);
+	call("changed", selectedCopy);
+	clearSelection();
+};
+
+// Function: cutSelectedElements
+// Removes all selected elements from the DOM and adds the change to the 
+// history stack. Remembers removed elements on the clipboard
+
+// TODO: Combine similar code with deleteSelectedElements
+this.cutSelectedElements = function() {
+	var batchCmd = new BatchCommand("Cut Elements");
+	var len = selectedElements.length;
+	var selectedCopy = []; //selectedElements is being deleted
+	for (var i = 0; i < len; ++i) {
+		var selected = selectedElements[i];
+		if (selected == null) break;
+
+		var parent = selected.parentNode;
+		var t = selected;
+
+		// this will unselect the element and remove the selectedOutline
+		selectorManager.releaseSelector(t);
+
+		// Remove the path if present.
+		svgedit.path.removePath_(t.id);
+
+		var nextSibling = t.nextSibling;
+		var elem = parent.removeChild(t);
+		selectedCopy.push(selected); //for the copy
+		selectedElements[i] = null;
+		batchCmd.addSubCommand(new RemoveElementCommand(elem, nextSibling, parent));
+	}
+	if (!batchCmd.isEmpty()) addCommandToHistory(batchCmd);
+	call("changed", selectedCopy);
+	clearSelection();
+	
+	canvas.clipBoard = selectedCopy;
+};
+
+// Function: copySelectedElements
+// Remembers the current selected elements on the clipboard
+this.copySelectedElements = function() {
+	canvas.clipBoard = $.merge([], selectedElements);
+};
+
+this.pasteElements = function(type, x, y) {
+	var cb = canvas.clipBoard;
+	var len = cb.length;
+	if(!len) return;
+	
+	var pasted = [];
+	var batchCmd = new BatchCommand('Paste elements');
+	
+	// Move elements to lastClickPoint
+
+	while (len--) {
+		var elem = cb[len];
+		if(!elem) continue;
+		var copy = copyElem(elem);
+
+		// See if elem with elem ID is in the DOM already
+		if(!getElem(elem.id)) copy.id = elem.id;
+		pasted.push(copy);
+		(current_group || getCurrentDrawing().getCurrentLayer()).appendChild(copy);
+		batchCmd.addSubCommand(new InsertElementCommand(copy));
+	}
+	svgCanvas.clearSelection();
+	setTimeout(function(){selectOnly(pasted)},100);
+	
+
+	
+	addCommandToHistory(batchCmd);
+	call("changed", pasted);
+}
+
+// Function: groupSelectedElements
+// Wraps all the selected elements in a group (g) element
+
+// Parameters: 
+// type - type of element to group into, defaults to <g>
+this.groupSelectedElements = function(type) {
+	if(!type) type = 'g';
+	var cmd_str = '';
+	
+	switch ( type ) {
+		case "a":
+			cmd_str = "Make hyperlink";
+			var url = '';
+			if(arguments.length > 1) {
+				url = arguments[1];
+			}
+			break;
+		default:
+			type = 'g';
+			cmd_str = "Group Elements";
+			break;
+	}
+	
+	var batchCmd = new BatchCommand(cmd_str);
+	
+	// create and insert the group element
+	var g = addSvgElementFromJson({
+							"element": type,
+							"attr": {
+								"id": getNextId()
+							}
+						});
+	if(type === 'a') {
+		setHref(g, url);
+	}
+	batchCmd.addSubCommand(new InsertElementCommand(g));
+	
+	// now move all children into the group
+	var i = selectedElements.length;
+	while (i--) {
+		var elem = selectedElements[i];
+		if (elem == null) continue;
+		
+		if (elem.parentNode.tagName === 'a' && elem.parentNode.childNodes.length === 1) {
+			elem = elem.parentNode;
+		}
+		
+		var oldNextSibling = elem.nextSibling;
+		var oldParent = elem.parentNode;
+		g.appendChild(elem);
+		batchCmd.addSubCommand(new MoveElementCommand(elem, oldNextSibling, oldParent));			
+	}
+	if (!batchCmd.isEmpty()) addCommandToHistory(batchCmd);
+	
+	// update selection
+	selectOnly([g], true);
+};
+
+
+// Function: pushGroupProperties
+// Pushes all appropriate parent group properties down to its children, then
+// removes them from the group
+var pushGroupProperties = this.pushGroupProperties = function(g, undoable) {
+
+	var children = g.childNodes;
+	var len = children.length;
+	var xform = g.getAttribute("transform");
+
+	var glist = getTransformList(g);
+	var m = transformListToTransform(glist).matrix;
+	
+	var batchCmd = new BatchCommand("Push group properties");
+
+	// TODO: get all fill/stroke properties from the group that we are about to destroy
+	// "fill", "fill-opacity", "fill-rule", "stroke", "stroke-dasharray", "stroke-dashoffset", 
+	// "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", 
+	// "stroke-width"
+	// and then for each child, if they do not have the attribute (or the value is 'inherit')
+	// then set the child's attribute
+	
+	var i = 0;
+	var gangle = getRotationAngle(g);
+	
+	var gattrs = $(g).attr(['filter', 'opacity']);
+	var gfilter, gblur;
+	
+	for(var i = 0; i < len; i++) {
+		var elem = children[i];
+		
+		if(elem.nodeType !== 1) continue;
+		
+		if(gattrs.opacity !== null && gattrs.opacity !== 1) {
+			var c_opac = elem.getAttribute('opacity') || 1;
+			var new_opac = Math.round((elem.getAttribute('opacity') || 1) * gattrs.opacity * 100)/100;
+			changeSelectedAttribute('opacity', new_opac, [elem]);
+		}
+
+		if(gattrs.filter) {
+			var cblur = this.getBlur(elem);
+			var orig_cblur = cblur;
+			if(!gblur) gblur = this.getBlur(g);
+			if(cblur) {
+				// Is this formula correct?
+				cblur = (gblur-0) + (cblur-0);
+			} else if(cblur === 0) {
+				cblur = gblur;
+			}
+			
+			// If child has no current filter, get group's filter or clone it.
+			if(!orig_cblur) {
+				// Set group's filter to use first child's ID
+				if(!gfilter) {
+					gfilter = getRefElem(gattrs.filter);
+				} else {
+					// Clone the group's filter
+					gfilter = copyElem(gfilter);
+					findDefs().appendChild(gfilter);
+				}
+			} else {
+				gfilter = getRefElem(elem.getAttribute('filter'));
+			}
+
+			// Change this in future for different filters
+			var suffix = (gfilter.firstChild.tagName === 'feGaussianBlur')?'blur':'filter'; 
+			gfilter.id = elem.id + '_' + suffix;
+			changeSelectedAttribute('filter', 'url(#' + gfilter.id + ')', [elem]);
+			
+			// Update blur value 
+			if(cblur) {
+				changeSelectedAttribute('stdDeviation', cblur, [gfilter.firstChild]);
+				canvas.setBlurOffsets(gfilter, cblur);
+			}
+		}
+		
+		var chtlist = getTransformList(elem);
+
+		// Don't process gradient transforms
+		if(~elem.tagName.indexOf('Gradient')) chtlist = null;
+		
+		// Hopefully not a problem to add this. Necessary for elements like <desc/>
+		if(!chtlist) continue;
+		
+		// Apparently <defs> can get get a transformlist, but we don't want it to have one!
+		if(elem.tagName === 'defs') continue;
+		
+		if (glist.numberOfItems) {
+			// TODO: if the group's transform is just a rotate, we can always transfer the
+			// rotate() down to the children (collapsing consecutive rotates and factoring
+			// out any translates)
+			if (gangle && glist.numberOfItems == 1) {
+				// [Rg] [Rc] [Mc]
+				// we want [Tr] [Rc2] [Mc] where:
+				// 	- [Rc2] is at the child's current center but has the 
+				//	  sum of the group and child's rotation angles
+				// 	- [Tr] is the equivalent translation that this child 
+				// 	  undergoes if the group wasn't there
+				
+				// [Tr] = [Rg] [Rc] [Rc2_inv]
+				
+				// get group's rotation matrix (Rg)
+				var rgm = glist.getItem(0).matrix;
+				
+				// get child's rotation matrix (Rc)
+				var rcm = svgroot.createSVGMatrix();
+				var cangle = getRotationAngle(elem);
+				if (cangle) {
+					rcm = chtlist.getItem(0).matrix;
+				}
+				
+				// get child's old center of rotation
+				var cbox = svgedit.utilities.getBBox(elem);
+				var ceqm = transformListToTransform(chtlist).matrix;
+				var coldc = transformPoint(cbox.x+cbox.width/2, cbox.y+cbox.height/2,ceqm);
+				
+				// sum group and child's angles
+				var sangle = gangle + cangle;
+				
+				// get child's rotation at the old center (Rc2_inv)
+				var r2 = svgroot.createSVGTransform();
+				r2.setRotate(sangle, coldc.x, coldc.y);
+				
+				// calculate equivalent translate
+				var trm = matrixMultiply(rgm, rcm, r2.matrix.inverse());
+				
+				// set up tlist
+				if (cangle) {
+					chtlist.removeItem(0);
+				}
+				
+				if (sangle) {
+					if(chtlist.numberOfItems) {
+						chtlist.insertItemBefore(r2, 0);
+					} else {
+						chtlist.appendItem(r2);
+					}
+				}
+
+				if (trm.e || trm.f) {
+					var tr = svgroot.createSVGTransform();
+					tr.setTranslate(trm.e, trm.f);
+					if(chtlist.numberOfItems) {
+						chtlist.insertItemBefore(tr, 0);
+					} else {
+						chtlist.appendItem(tr);
+					}
+				}
+			}
+			else { // more complicated than just a rotate
+			
+				// transfer the group's transform down to each child and then
+				// call recalculateDimensions()				
+				var oldxform = elem.getAttribute("transform");
+				var changes = {};
+				changes["transform"] = oldxform ? oldxform : "";
+
+				var newxform = svgroot.createSVGTransform();
+
+				// [ gm ] [ chm ] = [ chm ] [ gm' ]
+				// [ gm' ] = [ chm_inv ] [ gm ] [ chm ]
+				var chm = transformListToTransform(chtlist).matrix,
+					chm_inv = chm.inverse();
+				var gm = matrixMultiply( chm_inv, m, chm );
+				newxform.setMatrix(gm);
+				chtlist.appendItem(newxform);
+			}
+			var cmd = recalculateDimensions(elem);
+			if(cmd)	batchCmd.addSubCommand(cmd);
+		}
+	}
+
+	
+	// remove transform and make it undo-able
+	if (xform) {
+		var changes = {};
+		changes["transform"] = xform;
+		g.setAttribute("transform", "");
+		g.removeAttribute("transform");				
+		batchCmd.addSubCommand(new ChangeElementCommand(g, changes));
+	}
+	
+	if (undoable && !batchCmd.isEmpty()) {
+		return batchCmd;
+	}
+}
+
+
+// Function: ungroupSelectedElement
+// Unwraps all the elements in a selected group (g) element. This requires
+// significant recalculations to apply group's transforms, etc to its children
+this.ungroupSelectedElement = function() {
+	var g = selectedElements[0];
+	if($(g).data('gsvg') || $(g).data('symbol')) {
+		// Is svg, so actually convert to group
+
+		convertToGroup(g);
+		return;
+	} else if(g.tagName === 'use') {
+		// Somehow doesn't have data set, so retrieve
+		var symbol = getElem(getHref(g).substr(1));
+		$(g).data('symbol', symbol).data('ref', symbol);
+		convertToGroup(g);
+		return;
+	}
+	var parents_a = $(g).parents('a');
+	if(parents_a.length) {
+		g = parents_a[0];
+	}
+	
+	// Look for parent "a"
+	if (g.tagName === "g" || g.tagName === "a") {
+		
+		var batchCmd = new BatchCommand("Ungroup Elements");
+		var cmd = pushGroupProperties(g, true);
+		if(cmd) batchCmd.addSubCommand(cmd);
+		
+		var parent = g.parentNode;
+		var anchor = g.nextSibling;
+		var children = new Array(g.childNodes.length);
+		
+		var i = 0;
+		
+		while (g.firstChild) {
+			var elem = g.firstChild;
+			var oldNextSibling = elem.nextSibling;
+			var oldParent = elem.parentNode;
+			
+			// Remove child title elements
+			if(elem.tagName === 'title') {
+				var nextSibling = elem.nextSibling;
+				batchCmd.addSubCommand(new RemoveElementCommand(elem, nextSibling, oldParent));
+				oldParent.removeChild(elem);
+				continue;
+			}
+			
+			children[i++] = elem = parent.insertBefore(elem, anchor);
+			batchCmd.addSubCommand(new MoveElementCommand(elem, oldNextSibling, oldParent));
+		}
+
+		// remove the group from the selection			
+		clearSelection();
+		
+		// delete the group element (but make undo-able)
+		var gNextSibling = g.nextSibling;
+		g = parent.removeChild(g);
+		batchCmd.addSubCommand(new RemoveElementCommand(g, gNextSibling, parent));
+
+		if (!batchCmd.isEmpty()) addCommandToHistory(batchCmd);
+		
+		// update selection
+		addToSelection(children);
+	}
+};
+
+// Function: moveToTopSelectedElement
+// Repositions the selected element to the bottom in the DOM to appear on top of
+// other elements
+this.moveToTopSelectedElement = function() {
+	var selected = selectedElements.filter(Boolean).reverse();
+	var batchCmd = new BatchCommand("Move to top");
+	selected.forEach(function(element){
+		var t = element;
+		var oldParent = t.parentNode;
+		var oldNextSibling = t.nextSibling;
+		t = t.parentNode.appendChild(t);
+		// If the element actually moved position, add the command and fire the changed
+		// event handler.
+		if (oldNextSibling != t.nextSibling) {
+			batchCmd.addSubCommand(new MoveElementCommand(t, oldNextSibling, oldParent, "top"));
+			call("changed", [t]);
+		}
+		if (!batchCmd.isEmpty()) addCommandToHistory(batchCmd);
+	})
+};
+
+// Function: moveToBottomSelectedElement
+// Repositions the selected element to the top in the DOM to appear under 
+// other elements
+this.moveToBottomSelectedElement = function() {
+	var selected = selectedElements.filter(Boolean).reverse();
+	var batchCmd = new BatchCommand("Move to top");
+	selected.forEach(function(element){
+		var t = element;
+		var oldParent = t.parentNode;
+		var oldNextSibling = t.nextSibling;
+		var firstChild = t.parentNode.firstChild;
+		if (firstChild.tagName == 'title') {
+			firstChild = firstChild.nextSibling;
+		}
+		// This can probably be removed, as the defs should not ever apppear
+		// inside a layer group
+		if (firstChild.tagName == 'defs') {
+			firstChild = firstChild.nextSibling;
+		}
+		t = t.parentNode.insertBefore(t, firstChild);
+		// If the element actually moved position, add the command and fire the changed
+		// event handler.
+		if (oldNextSibling != t.nextSibling) {
+			batchCmd.addSubCommand(new MoveElementCommand(t, oldNextSibling, oldParent, "bottom"));
+			call("changed", [t]);
+		}
+	})
+	if (!batchCmd.isEmpty()) addCommandToHistory(batchCmd);
+};
+
+// Function: moveUpDownSelected
+// Moves the select element up or down the stack, based on the visibly
+// intersecting elements
+//
+// Parameters: 
+// dir - String that's either 'Up' or 'Down'
+this.moveUpDownSelected = function(dir) {
+	var selected = selectedElements.filter(Boolean);
+	if(dir == 'Down') selected.reverse();
+	var batchCmd = new BatchCommand("Move " + dir);
+	selected.forEach(function(selected){
+		curBBoxes = [];
+		var closest, found_cur;
+		// jQuery sorts this list
+		var list = $(getIntersectionList(getStrokedBBox([selected]))).toArray();
+		if(dir == 'Down') list.reverse();
+
+		$.each(list, function() {
+			if(!found_cur) {
+				if(this == selected) {
+					found_cur = true;
+				}
+				return;
+			}
+			closest = this;
+			return false;
+		});
+		if(!closest) return;
+		
+		var t = selected;
+		var oldParent = t.parentNode;
+		var oldNextSibling = t.nextSibling;
+		$(closest)[dir == 'Down'?'before':'after'](t);
+		// If the element actually moved position, add the command and fire the changed
+		// event handler.
+		if (oldNextSibling != t.nextSibling) {
+			batchCmd.addSubCommand(new MoveElementCommand(t, oldNextSibling, oldParent, "Move " + dir));
+			call("changed", [t]);
+		}
+	});
+	if (!batchCmd.isEmpty()) addCommandToHistory(batchCmd);
+};
+
+// Function: moveSelectedElements
+// Moves selected elements on the X/Y axis 
+//
+// Parameters:
+// dx - Float with the distance to move on the x-axis
+// dy - Float with the distance to move on the y-axis
+// undoable - Boolean indicating whether or not the action should be undoable
+//
+// Returns:
+// Batch command for the move
+this.moveSelectedElements = function(dx, dy, undoable) {
+	// if undoable is not sent, default to true
+	// if single values, scale them to the zoom
+	if (dx.constructor != Array) {
+		dx /= current_zoom;
+		dy /= current_zoom;
+	}
+	var undoable = undoable || true;
+	var batchCmd = new BatchCommand("position");
+	var i = selectedElements.length;
+	while (i--) {
+		var selected = selectedElements[i];
+		if (selected != null) {
+//			if (i==0)
+//				selectedBBoxes[0] = svgedit.utilities.getBBox(selected);
+			
+//			var b = {};
+//			for(var j in selectedBBoxes[i]) b[j] = selectedBBoxes[i][j];
+//			selectedBBoxes[i] = b;
+			
+			var xform = svgroot.createSVGTransform();
+			var tlist = getTransformList(selected);
+			
+			// dx and dy could be arrays
+			if (dx.constructor == Array) {
+//				if (i==0) {
+//					selectedBBoxes[0].x += dx[0];
+//					selectedBBoxes[0].y += dy[0];
+//				}
+				xform.setTranslate(dx[i],dy[i]);
+			} else {
+//				if (i==0) {
+//					selectedBBoxes[0].x += dx;
+//					selectedBBoxes[0].y += dy;
+//				}
+				xform.setTranslate(dx,dy);
+			}
+
+			if(tlist.numberOfItems) {
+				tlist.insertItemBefore(xform, 0);
+			} else {
+				tlist.appendItem(xform);
+			}
+			
+			var cmd = recalculateDimensions(selected);
+			if (cmd) {
+				batchCmd.addSubCommand(cmd);
+			}
+			
+			selectorManager.requestSelector(selected).resize();
+		}
+	}
+	if (!batchCmd.isEmpty()) {
+		if (undoable)
+			addCommandToHistory(batchCmd);
+		call("changed", selectedElements);
+		return batchCmd;
+	}
+};
+
+// Function: cloneSelectedElements
+// Create deep DOM copies (clones) of all selected elements and move them slightly 
+// from their originals
+this.cloneSelectedElements = function(x,y, drag) {
+	var batchCmd = new BatchCommand("Clone Elements");
+	// find all the elements selected (stop at first null)
+	var len = selectedElements.length;
+	for (var i = 0; i < len; ++i) {
+		var elem = selectedElements[i];
+		if (elem == null) break;
+	}
+	// use slice to quickly get the subset of elements we need
+	var copiedElements = selectedElements.slice(0,i);
+	this.clearSelection(true);
+	// note that we loop in the reverse way because of the way elements are added
+	// to the selectedElements array (top-first)
+	var i = copiedElements.length;
+	clones = []
+	while (i--) {
+		// clone each element and replace it within copiedElements
+		var elem = copiedElements[i] 
+		var clone = copyElem(copiedElements[i]);
+		var parent = (current_group || getCurrentDrawing().getCurrentLayer())
+		if (drag) {
+		  //removed the dragged transform until that moment
+		  tlist = getTransformList(clone)
+      	  tlist.removeItem(drag)
+		  recalculateDimensions(clone)
+		  parent.insertBefore(clone, elem);
+		}
+		else {
+			parent.appendChild(clone);
+		}
+		clones.push(clone)
+		batchCmd.addSubCommand(new InsertElementCommand(clone));
+	}
+	
+	if (!batchCmd.isEmpty()) {
+		addToSelection(copiedElements.reverse()); // Need to reverse for correct selection-adding
+		if (!drag) this.moveSelectedElements(x,y,false);
+		addCommandToHistory(batchCmd);
+	}
+	return clones
+};
+
+// Function: alignSelectedElements
+// Aligns selected elements
+//
+// Parameters:
+// type - String with single character indicating the alignment type
+// relative_to - String that must be one of the following: 
+// "selected", "largest", "smallest", "page"
+this.alignSelectedElements = function(type, relative_to) {
+	var bboxes = [], angles = [];
+	var minx = Number.MAX_VALUE, maxx = Number.MIN_VALUE, miny = Number.MAX_VALUE, maxy = Number.MIN_VALUE;
+	var curwidth = Number.MIN_VALUE, curheight = Number.MIN_VALUE;
+	var len = selectedElements.length;
+	if (!len) return;
+	for (var i = 0; i < len; ++i) {
+		if (selectedElements[i] == null) break;
+		var elem = selectedElements[i];
+		bboxes[i] = getStrokedBBox([elem]);
+		
+		// now bbox is axis-aligned and handles rotation
+		switch (relative_to) {
+			case 'smallest':
+				if ( (type == 'l' || type == 'c' || type == 'r') && (curwidth == Number.MIN_VALUE || curwidth > bboxes[i].width) ||
+					 (type == 't' || type == 'm' || type == 'b') && (curheight == Number.MIN_VALUE || curheight > bboxes[i].height) ) {
+					minx = bboxes[i].x;
+					miny = bboxes[i].y;
+					maxx = bboxes[i].x + bboxes[i].width;
+					maxy = bboxes[i].y + bboxes[i].height;
+					curwidth = bboxes[i].width;
+					curheight = bboxes[i].height;
+				}
+				break;
+			case 'largest':
+				if ( (type == 'l' || type == 'c' || type == 'r') && (curwidth == Number.MIN_VALUE || curwidth < bboxes[i].width) ||
+					 (type == 't' || type == 'm' || type == 'b') && (curheight == Number.MIN_VALUE || curheight < bboxes[i].height) ) {
+					minx = bboxes[i].x;
+					miny = bboxes[i].y;
+					maxx = bboxes[i].x + bboxes[i].width;
+					maxy = bboxes[i].y + bboxes[i].height;
+					curwidth = bboxes[i].width;
+					curheight = bboxes[i].height;
+				}
+				break;
+			default: // 'selected'
+				if (bboxes[i].x < minx) minx = bboxes[i].x;
+				if (bboxes[i].y < miny) miny = bboxes[i].y;
+				if (bboxes[i].x + bboxes[i].width > maxx) maxx = bboxes[i].x + bboxes[i].width;
+				if (bboxes[i].y + bboxes[i].height > maxy) maxy = bboxes[i].y + bboxes[i].height;
+				break;
+		}
+	} // loop for each element to find the bbox and adjust min/max
+
+	if (relative_to == 'page') {
+		minx = 0;
+		miny = 0;
+		maxx = canvas.contentW;
+		maxy = canvas.contentH;
+	}
+
+	var dx = new Array(len);
+	var dy = new Array(len);
+	for (var i = 0; i < len; ++i) {
+		if (selectedElements[i] == null) break;
+		var elem = selectedElements[i];
+		var bbox = bboxes[i];
+		dx[i] = 0;
+		dy[i] = 0;
+		switch (type) {
+			case 'l': // left (horizontal)
+				dx[i] = minx - bbox.x;
+				break;
+			case 'c': // center (horizontal)
+				dx[i] = (minx+maxx)/2 - (bbox.x + bbox.width/2);
+				break;
+			case 'r': // right (horizontal)
+				dx[i] = maxx - (bbox.x + bbox.width);
+				break;
+			case 't': // top (vertical)
+				dy[i] = miny - bbox.y;
+				break;
+			case 'm': // middle (vertical)
+				dy[i] = (miny+maxy)/2 - (bbox.y + bbox.height/2);
+				break;
+			case 'b': // bottom (vertical)
+				dy[i] = maxy - (bbox.y + bbox.height);
+				break;
+		}
+	}
+	this.moveSelectedElements(dx,dy);
+};
+
+// Group: Additional editor tools
+
+this.contentW = getResolution().w;
+this.contentH = getResolution().h;
+
+// Function: updateCanvas
+// Updates the editor canvas width/height/position after a zoom has occurred 
+//
+// Parameters:
+// w - Float with the new width
+// h - Float with the new height
+//
+// Returns: 
+// Object with the following values:
+// * x - The canvas' new x coordinate
+// * y - The canvas' new y coordinate
+// * old_x - The canvas' old x coordinate
+// * old_y - The canvas' old y coordinate
+// * d_x - The x position difference
+// * d_y - The y position difference
+this.updateCanvas = function(w, h) {
+	svgroot.setAttribute("width", w);
+	svgroot.setAttribute("height", h);
+	var bg = $('#canvasBackground')[0];
+	var old_x = svgcontent.getAttribute('x');
+	var old_y = svgcontent.getAttribute('y');
+	var x = (w/2 - this.contentW*current_zoom/2);
+	var y = (h/2 - this.contentH*current_zoom/2);
+
+	assignAttributes(svgcontent, {
+		width: this.contentW*current_zoom,
+		height: this.contentH*current_zoom,
+		'x': x,
+		'y': y,
+		"viewBox" : "0 0 " + this.contentW + " " + this.contentH
+	});
+	
+	assignAttributes(bg, {
+		width: svgcontent.getAttribute('width'),
+		height: svgcontent.getAttribute('height'),
+		x: x,
+		y: y
+	});
+
+	var bg_img = getElem('background_image');
+	if (bg_img) {
+		assignAttributes(bg_img, {
+			'width': '100%',
+			'height': '100%'
+		});
+	}
+	
+	selectorManager.selectorParentGroup.setAttribute("transform","translate(" + x + "," + y + ")");
+	
+	return {x:x, y:y, old_x:old_x, old_y:old_y, d_x:x - old_x, d_y:y - old_y};
+}
+
+// Function: setBackground
+// Set the background of the editor (NOT the actual document)
+//
+// Parameters:
+// color - String with fill color to apply
+// url - URL or path to image to use
+this.setBackground = function(color, url) {
+	var bg =  getElem('canvasBackground');
+	var border = $(bg).find('rect')[0];
+	var bg_img = getElem('background_image');
+	border.setAttribute('fill',color);
+	if(url) {
+		if(!bg_img) {
+			bg_img = svgdoc.createElementNS(svgns, "image");
+			assignAttributes(bg_img, {
+				'id': 'background_image',
+				'width': '100%',
+				'height': '100%',
+				'preserveAspectRatio': 'xMinYMin',
+				'style':'pointer-events:none'
+			});
+		}
+		setHref(bg_img, url);
+		bg.appendChild(bg_img);
+	} else if(bg_img) {
+		bg_img.parentNode.removeChild(bg_img);
+	}
+}
+
+// Function: cycleElement
+// Select the next/previous element within the current layer
+//
+// Parameters:
+// next - Boolean where true = next and false = previous element
+this.cycleElement = function(next) {
+	var cur_elem = selectedElements[0];
+	var elem = false;
+	var all_elems = getVisibleElements(current_group || getCurrentDrawing().getCurrentLayer());
+	if(!all_elems.length) return;
+	if (cur_elem == null) {
+		var num = next?all_elems.length-1:0;
+		elem = all_elems[num];
+	} else {
+		var i = all_elems.length;
+		while(i--) {
+			if(all_elems[i] == cur_elem) {
+				var num = next?i-1:i+1;
+				if(num >= all_elems.length) {
+					num = 0;
+				} else if(num < 0) {
+					num = all_elems.length-1;
+				} 
+				elem = all_elems[num];
+				break;
+			} 
+		}
+	}		
+	selectOnly([elem], true);
+	call("selected", selectedElements);
+}
+
+this.clear();
+
+
+// DEPRECATED: getPrivateMethods 
+// Since all methods are/should be public somehow, this function should be removed
+
+// Being able to access private methods publicly seems wrong somehow,
+// but currently appears to be the best way to allow testing and provide
+// access to them to plugins.
+this.getPrivateMethods = function() {
+	var obj = {
+		addCommandToHistory: addCommandToHistory,
+		setGradient: setGradient,
+		addSvgElementFromJson: addSvgElementFromJson,
+		assignAttributes: assignAttributes,
+		BatchCommand: BatchCommand,
+		call: call,
+		ChangeElementCommand: ChangeElementCommand,
+		copyElem: copyElem,
+		ffClone: ffClone,
+		findDefs: findDefs,
+		findDuplicateGradient: findDuplicateGradient,
+		getElem: getElem,
+		getId: getId,
+		getIntersectionList: getIntersectionList,
+		getMouseTarget: getMouseTarget,
+		getNextId: getNextId,
+		getPathBBox: getPathBBox,
+		getUrlFromAttr: getUrlFromAttr,
+		hasMatrixTransform: hasMatrixTransform,
+		identifyLayers: identifyLayers,
+		InsertElementCommand: InsertElementCommand,
+		isIdentity: svgedit.math.isIdentity,
+		logMatrix: logMatrix,
+		matrixMultiply: matrixMultiply,
+		MoveElementCommand: MoveElementCommand,
+		preventClickDefault: preventClickDefault,
+		recalculateAllSelectedDimensions: recalculateAllSelectedDimensions,
+		recalculateDimensions: recalculateDimensions,
+		remapElement: remapElement,
+		RemoveElementCommand: RemoveElementCommand,
+		removeUnusedDefElems: removeUnusedDefElems,
+		round: round,
+		runExtensions: runExtensions,
+		sanitizeSvg: sanitizeSvg,
+		SVGEditTransformList: svgedit.transformlist.SVGTransformList,
+		toString: toString,
+		transformBox: svgedit.math.transformBox,
+		transformListToTransform: transformListToTransform,
+		transformPoint: transformPoint,
+		walkTree: svgedit.utilities.walkTree
+	}
+	return obj;
+};
+
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/svgtransformlist.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/svgtransformlist.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/svgtransformlist.js	(revision 29468)
@@ -0,0 +1,291 @@
+/**
+ * SVGTransformList
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ * Copyright(c) 2010 Jeff Schiller
+ */
+
+// Dependencies:
+// 1) browser.js
+
+var svgedit = svgedit || {};
+
+(function() {
+
+if (!svgedit.transformlist) {
+	svgedit.transformlist = {};
+}
+
+var svgroot = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
+
+// Helper function.
+function transformToString(xform) {
+	var m = xform.matrix,
+		text = "";
+	switch(xform.type) {
+		case 1: // MATRIX
+			text = "matrix(" + [m.a,m.b,m.c,m.d,m.e,m.f].join(",") + ")";
+			break;
+		case 2: // TRANSLATE
+			text = "translate(" + m.e + "," + m.f + ")";
+			break;
+		case 3: // SCALE
+			if (m.a == m.d) text = "scale(" + m.a + ")";
+			else text = "scale(" + m.a + "," + m.d + ")";
+			break;
+		case 4: // ROTATE
+			var cx = 0, cy = 0;
+			// this prevents divide by zero
+			if (xform.angle != 0) {
+				var K = 1 - m.a;
+				cy = ( K * m.f + m.b*m.e ) / ( K*K + m.b*m.b );
+				cx = ( m.e - m.b * cy ) / K;
+			}
+			text = "rotate(" + xform.angle + " " + cx + "," + cy + ")";
+			break;
+	}
+	return text;
+};
+
+
+/**
+ * Map of SVGTransformList objects.
+ */
+var listMap_ = {};
+
+
+// **************************************************************************************
+// SVGTransformList implementation for Webkit 
+// These methods do not currently raise any exceptions.
+// These methods also do not check that transforms are being inserted.  This is basically
+// implementing as much of SVGTransformList that we need to get the job done.
+//
+//  interface SVGEditTransformList { 
+//		attribute unsigned long numberOfItems;
+//		void   clear (  )
+//		SVGTransform initialize ( in SVGTransform newItem )
+//		SVGTransform getItem ( in unsigned long index ) (DOES NOT THROW DOMException, INDEX_SIZE_ERR)
+//		SVGTransform insertItemBefore ( in SVGTransform newItem, in unsigned long index ) (DOES NOT THROW DOMException, INDEX_SIZE_ERR)
+//		SVGTransform replaceItem ( in SVGTransform newItem, in unsigned long index ) (DOES NOT THROW DOMException, INDEX_SIZE_ERR)
+//		SVGTransform removeItem ( in unsigned long index ) (DOES NOT THROW DOMException, INDEX_SIZE_ERR)
+//		SVGTransform appendItem ( in SVGTransform newItem )
+//		NOT IMPLEMENTED: SVGTransform createSVGTransformFromMatrix ( in SVGMatrix matrix );
+//		NOT IMPLEMENTED: SVGTransform consolidate (  );
+//	}
+// **************************************************************************************
+svgedit.transformlist.SVGTransformList = function(elem) {
+	this._elem = elem || null;
+	this._xforms = [];
+	// TODO: how do we capture the undo-ability in the changed transform list?
+	this._update = function() {
+		var tstr = "";
+		var concatMatrix = svgroot.createSVGMatrix();
+		for (var i = 0; i < this.numberOfItems; ++i) {
+			var xform = this._list.getItem(i);
+			tstr += transformToString(xform) + " ";
+		}
+		this._elem.setAttribute("transform", tstr);
+	};
+	this._list = this;
+	this._init = function() {
+		// Transform attribute parser
+		var str = this._elem.getAttribute("transform");
+		if(!str) return;
+		
+		// TODO: Add skew support in future
+		var re = /\s*((scale|matrix|rotate|translate)\s*\(.*?\))\s*,?\s*/;
+		var arr = [];
+		var m = true;
+		while(m) {
+			m = str.match(re);
+			str = str.replace(re,'');
+			if(m && m[1]) {
+				var x = m[1];
+				var bits = x.split(/\s*\(/);
+				var name = bits[0];
+				var val_bits = bits[1].match(/\s*(.*?)\s*\)/);
+				val_bits[1] = val_bits[1].replace(/(\d)-/g, "$1 -");
+				var val_arr = val_bits[1].split(/[, ]+/);
+				var letters = 'abcdef'.split('');
+				var mtx = svgroot.createSVGMatrix();
+				$.each(val_arr, function(i, item) {
+					val_arr[i] = parseFloat(item);
+					if(name == 'matrix') {
+						mtx[letters[i]] = val_arr[i];
+					}
+				});
+				var xform = svgroot.createSVGTransform();
+				var fname = 'set' + name.charAt(0).toUpperCase() + name.slice(1);
+				var values = name=='matrix'?[mtx]:val_arr;
+				
+				if (name == 'scale' && values.length == 1) {
+					values.push(values[0]);
+				} else if (name == 'translate' && values.length == 1) {
+					values.push(0);
+				} else if (name == 'rotate' && values.length == 1) {
+					values.push(0);
+					values.push(0);
+				}
+				xform[fname].apply(xform, values);
+				this._list.appendItem(xform);
+			}
+		}
+	};
+	this._removeFromOtherLists = function(item) {
+		if (item) {
+			// Check if this transform is already in a transformlist, and
+			// remove it if so.
+			var found = false;
+			for (var id in listMap_) {
+				var tl = listMap_[id];
+				for (var i = 0, len = tl._xforms.length; i < len; ++i) {
+					if(tl._xforms[i] == item) {
+						found = true;
+						tl.removeItem(i);
+						break;
+					}
+				}
+				if (found) {
+					break;
+				}
+			}
+		}
+	};
+	
+	this.numberOfItems = 0;
+	this.clear = function() { 
+		this.numberOfItems = 0;
+		this._xforms = [];
+	};
+	
+	this.initialize = function(newItem) {
+		this.numberOfItems = 1;
+		this._removeFromOtherLists(newItem);
+		this._xforms = [newItem];
+	};
+	
+	this.getItem = function(index) {
+		if (index < this.numberOfItems && index >= 0) {
+			return this._xforms[index];
+		}
+		throw {code: 1}; // DOMException with code=INDEX_SIZE_ERR
+	};
+	
+	this.insertItemBefore = function(newItem, index) {
+		var retValue = null;
+		if (index >= 0) {
+			if (index < this.numberOfItems) {
+				this._removeFromOtherLists(newItem);
+				var newxforms = new Array(this.numberOfItems + 1);
+				// TODO: use array copying and slicing
+				for ( var i = 0; i < index; ++i) {
+					newxforms[i] = this._xforms[i];
+				}
+				newxforms[i] = newItem;
+				for ( var j = i+1; i < this.numberOfItems; ++j, ++i) {
+					newxforms[j] = this._xforms[i];
+				}
+				this.numberOfItems++;
+				this._xforms = newxforms;
+				retValue = newItem;
+				this._list._update();
+			}
+			else {
+				retValue = this._list.appendItem(newItem);
+			}
+		}
+		return retValue;
+	};
+	
+	this.replaceItem = function(newItem, index) {
+		var retValue = null;
+		if (index < this.numberOfItems && index >= 0) {
+			this._removeFromOtherLists(newItem);
+			this._xforms[index] = newItem;
+			retValue = newItem;
+			this._list._update();
+		}
+		return retValue;
+	};
+	
+	this.removeItem = function(index) {
+		if (index < this.numberOfItems && index >= 0) {
+			var retValue = this._xforms[index];
+			var newxforms = new Array(this.numberOfItems - 1);
+			for (var i = 0; i < index; ++i) {
+				newxforms[i] = this._xforms[i];
+			}
+			for (var j = i; j < this.numberOfItems-1; ++j, ++i) {
+				newxforms[j] = this._xforms[i+1];
+			}
+			this.numberOfItems--;
+			this._xforms = newxforms;
+			this._list._update();
+			return retValue;
+		} else {
+			throw {code: 1}; // DOMException with code=INDEX_SIZE_ERR
+		}
+	};
+	
+	this.appendItem = function(newItem) {
+		this._removeFromOtherLists(newItem);
+		this._xforms.push(newItem);
+		this.numberOfItems++;
+		this._list._update();
+		return newItem;
+	};
+};
+
+
+svgedit.transformlist.resetListMap = function() {
+	listMap_ = {};
+};
+
+/**
+ * Removes transforms of the given element from the map.
+ * Parameters:
+ * elem - a DOM Element
+ */
+svgedit.transformlist.removeElementFromListMap = function(elem) {
+	if (elem.id && listMap_[elem.id]) {
+		delete listMap_[elem.id];
+	}
+};
+
+// Function: getTransformList
+// Returns an object that behaves like a SVGTransformList for the given DOM element
+//
+// Parameters:
+// elem - DOM element to get a transformlist from
+svgedit.transformlist.getTransformList = function(elem) {
+	if (!svgedit.browser.supportsNativeTransformLists()) {
+		var id = elem.id;
+		if(!id) {
+			// Get unique ID for temporary element
+			id = 'temp';
+		}
+		var t = listMap_[id];
+		if (!t || id == 'temp') {
+			listMap_[id] = new svgedit.transformlist.SVGTransformList(elem);
+			listMap_[id]._init();
+			t = listMap_[id];
+		}
+		return t;
+	}
+	else if (elem.transform) {
+		return elem.transform.baseVal;
+	}
+	else if (elem.gradientTransform) {
+		return elem.gradientTransform.baseVal;
+	}
+	else if (elem.patternTransform) {
+		return elem.patternTransform.baseVal;
+	}
+
+	return null;
+};
+
+
+})();
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/svgutils.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/svgutils.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/svgutils.js	(revision 29468)
@@ -0,0 +1,648 @@
+/**
+ * Package: svgedit.utilities
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ * Copyright(c) 2010 Jeff Schiller
+ */
+
+// Dependencies:
+// 1) jQuery
+// 2) browser.js
+// 3) svgtransformlist.js
+
+var svgedit = svgedit || {};
+
+(function() {
+
+if (!svgedit.utilities) {
+	svgedit.utilities = {};
+}
+
+// Constants
+
+// String used to encode base64.
+var KEYSTR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
+var SVGNS = 'http://www.w3.org/2000/svg';
+var XLINKNS = 'http://www.w3.org/1999/xlink';
+var XMLNS = "http://www.w3.org/XML/1998/namespace";
+
+// Much faster than running getBBox() every time
+var visElems = 'a,circle,ellipse,foreignObject,g,image,line,path,polygon,polyline,rect,svg,text,tspan,use';
+var visElems_arr = visElems.split(',');
+//var hidElems = 'clipPath,defs,desc,feGaussianBlur,filter,linearGradient,marker,mask,metadata,pattern,radialGradient,stop,switch,symbol,title,textPath';
+
+var editorContext_ = null;
+var domdoc_ = null;
+var domcontainer_ = null;
+var svgroot_ = null;
+
+svgedit.utilities.init = function(editorContext) {
+	editorContext_ = editorContext;
+	domdoc_ = editorContext.getDOMDocument();
+	domcontainer_ = editorContext.getDOMContainer();
+	svgroot_ = editorContext.getSVGRoot();
+};
+
+// Function: svgedit.utilities.toXml
+// Converts characters in a string to XML-friendly entities.
+//
+// Example: "&" becomes "&amp;"
+//
+// Parameters:
+// str - The string to be converted
+//
+// Returns:
+// The converted string
+svgedit.utilities.toXml = function(str) {
+	return $('<p/>').text(str).html();
+};
+	
+// Function: svgedit.utilities.fromXml
+// Converts XML entities in a string to single characters. 
+// Example: "&amp;" becomes "&"
+//
+// Parameters:
+// str - The string to be converted
+//
+// Returns: 
+// The converted string
+svgedit.utilities.fromXml = function(str) {
+	return $('<p/>').html(str).text();
+};
+
+// This code was written by Tyler Akins and has been placed in the
+// public domain.  It would be nice if you left this header intact.
+// Base64 code from Tyler Akins -- http://rumkin.com
+
+// schiller: Removed string concatenation in favour of Array.join() optimization,
+//           also precalculate the size of the array needed.
+
+// Function: svgedit.utilities.encode64
+// Converts a string to base64
+svgedit.utilities.encode64 = function(input) {
+	// base64 strings are 4/3 larger than the original string
+//	input = svgedit.utilities.encodeUTF8(input); // convert non-ASCII characters
+	input = svgedit.utilities.convertToXMLReferences(input);
+	if(window.btoa) return window.btoa(input); // Use native if available
+	var output = new Array( Math.floor( (input.length + 2) / 3 ) * 4 );
+	var chr1, chr2, chr3;
+	var enc1, enc2, enc3, enc4;
+	var i = 0, p = 0;
+
+	do {
+		chr1 = input.charCodeAt(i++);
+		chr2 = input.charCodeAt(i++);
+		chr3 = input.charCodeAt(i++);
+
+		enc1 = chr1 >> 2;
+		enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
+		enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
+		enc4 = chr3 & 63;
+
+		if (isNaN(chr2)) {
+			enc3 = enc4 = 64;
+		} else if (isNaN(chr3)) {
+			enc4 = 64;
+		}
+
+		output[p++] = KEYSTR.charAt(enc1);
+		output[p++] = KEYSTR.charAt(enc2);
+		output[p++] = KEYSTR.charAt(enc3);
+		output[p++] = KEYSTR.charAt(enc4);
+	} while (i < input.length);
+
+	return output.join('');
+};
+
+// Function: svgedit.utilities.decode64
+// Converts a string from base64
+svgedit.utilities.decode64 = function(input) {
+	if(window.atob) return window.atob(input);
+	var output = "";
+	var chr1, chr2, chr3 = "";
+	var enc1, enc2, enc3, enc4 = "";
+	var i = 0;
+
+	 // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
+	 input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
+
+	 do {
+		enc1 = KEYSTR.indexOf(input.charAt(i++));
+		enc2 = KEYSTR.indexOf(input.charAt(i++));
+		enc3 = KEYSTR.indexOf(input.charAt(i++));
+		enc4 = KEYSTR.indexOf(input.charAt(i++));
+
+		chr1 = (enc1 << 2) | (enc2 >> 4);
+		chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
+		chr3 = ((enc3 & 3) << 6) | enc4;
+
+		output = output + String.fromCharCode(chr1);
+
+		if (enc3 != 64) {
+		   output = output + String.fromCharCode(chr2);
+		}
+		if (enc4 != 64) {
+		   output = output + String.fromCharCode(chr3);
+		}
+
+		chr1 = chr2 = chr3 = "";
+		enc1 = enc2 = enc3 = enc4 = "";
+
+	 } while (i < input.length);
+	 return unescape(output);
+};
+
+// Currently not being used, so commented out for now
+// based on http://phpjs.org/functions/utf8_encode:577
+// codedread:does not seem to work with webkit-based browsers on OSX
+// 		"encodeUTF8": function(input) {
+// 			//return unescape(encodeURIComponent(input)); //may or may not work
+// 			var output = '';
+// 			for (var n = 0; n < input.length; n++){
+// 				var c = input.charCodeAt(n);
+// 				if (c < 128) {
+// 					output += input[n];
+// 				}
+// 				else if (c > 127) {
+// 					if (c < 2048){
+// 						output += String.fromCharCode((c >> 6) | 192);
+// 					} 
+// 					else {
+// 						output += String.fromCharCode((c >> 12) | 224) + String.fromCharCode((c >> 6) & 63 | 128);
+// 					}
+// 					output += String.fromCharCode((c & 63) | 128);
+// 				}
+// 			}
+// 			return output;
+// 		},
+
+// Function: svgedit.utilities.convertToXMLReferences 
+// Converts a string to use XML references
+svgedit.utilities.convertToXMLReferences = function(input) {
+	var output = '';
+	for (var n = 0; n < input.length; n++){
+		var c = input.charCodeAt(n);
+		if (c < 128) {
+			output += input[n];
+		} else if(c > 127) {
+			output += ("&#" + c + ";");
+		}
+	}
+	return output;
+};
+
+// Function: svgedit.utilities.text2xml
+// Cross-browser compatible method of converting a string to an XML tree
+// found this function here: http://groups.google.com/group/jquery-dev/browse_thread/thread/c6d11387c580a77f
+svgedit.utilities.text2xml = function(sXML) {
+	if(sXML.indexOf('<svg:svg') >= 0) {
+		sXML = sXML.replace(/<(\/?)svg:/g, '<$1').replace('xmlns:svg', 'xmlns');
+	}
+
+	var out;
+	try{
+		var dXML = (window.DOMParser)?new DOMParser():new ActiveXObject("Microsoft.XMLDOM");
+		dXML.async = false;
+	} catch(e){ 
+		throw new Error("XML Parser could not be instantiated"); 
+	};
+	try{
+		if(dXML.loadXML) out = (dXML.loadXML(sXML))?dXML:false;
+		else out = dXML.parseFromString(sXML, "text/xml");
+	}
+	catch(e){ throw new Error("Error parsing XML string"); };
+	return out;
+};
+
+// Function: svgedit.utilities.bboxToObj
+// Converts a SVGRect into an object.
+// 
+// Parameters:
+// bbox - a SVGRect
+// 
+// Returns:
+// An object with properties names x, y, width, height.
+svgedit.utilities.bboxToObj = function(bbox) {
+	return {
+		x: bbox.x,
+		y: bbox.y,
+		width: bbox.width,
+		height: bbox.height
+	}
+};
+
+// Function: svgedit.utilities.walkTree
+// Walks the tree and executes the callback on each element in a top-down fashion
+//
+// Parameters:
+// elem - DOM element to traverse
+// cbFn - Callback function to run on each element
+svgedit.utilities.walkTree = function(elem, cbFn){
+	if (elem && elem.nodeType == 1) {
+		cbFn(elem);
+		var i = elem.childNodes.length;
+		while (i--) {
+			svgedit.utilities.walkTree(elem.childNodes.item(i), cbFn);
+		}
+	}
+};
+
+// Function: svgedit.utilities.walkTreePost
+// Walks the tree and executes the callback on each element in a depth-first fashion
+// TODO: FIXME: Shouldn't this be calling walkTreePost?
+//
+// Parameters:
+// elem - DOM element to traverse
+// cbFn - Callback function to run on each element
+svgedit.utilities.walkTreePost = function(elem, cbFn) {
+	if (elem && elem.nodeType == 1) {
+		var i = elem.childNodes.length;
+		while (i--) {
+			svgedit.utilities.walkTree(elem.childNodes.item(i), cbFn);
+		}
+		cbFn(elem);
+	}
+};
+
+// Function: svgedit.utilities.getUrlFromAttr
+// Extracts the URL from the url(...) syntax of some attributes.  
+// Three variants:
+// 	* <circle fill="url(someFile.svg#foo)" />
+//  * <circle fill="url('someFile.svg#foo')" />
+//  * <circle fill='url("someFile.svg#foo")' />
+//
+// Parameters:
+// attrVal - The attribute value as a string
+// 
+// Returns:
+// String with just the URL, like someFile.svg#foo
+svgedit.utilities.getUrlFromAttr = function(attrVal) {
+	if (attrVal) {		
+		// url("#somegrad")
+		if (attrVal.indexOf('url("') === 0) {
+			return attrVal.substring(5,attrVal.indexOf('"',6));
+		}
+		// url('#somegrad')
+		else if (attrVal.indexOf("url('") === 0) {
+			return attrVal.substring(5,attrVal.indexOf("'",6));
+		}
+		else if (attrVal.indexOf("url(") === 0) {
+			return attrVal.substring(4,attrVal.indexOf(')'));
+		}
+	}
+	return null;
+};
+
+// Function: svgedit.utilities.getHref
+// Returns the given element's xlink:href value
+svgedit.utilities.getHref = function(elem) {
+	if (elem) return elem.getAttributeNS(XLINKNS, "href");
+}
+
+// Function: svgedit.utilities.setHref
+// Sets the given element's xlink:href value
+svgedit.utilities.setHref = function(elem, val) {
+	elem.setAttributeNS(XLINKNS, "xlink:href", val);
+}
+
+// Function: findDefs
+// Parameters:
+// svgElement - The <svg> element.
+//
+// Returns:
+// The document's <defs> element, create it first if necessary
+svgedit.utilities.findDefs = function(svgElement) {
+	var svgElement = editorContext_.getSVGContent().documentElement;
+	var defs = svgElement.getElementsByTagNameNS(SVGNS, "defs");
+	if (defs.length > 0) {
+		defs = defs[0];
+	}
+	else {
+		// first child is a comment, so call nextSibling
+		defs = svgElement.insertBefore( svgElement.ownerDocument.createElementNS(SVGNS, "defs" ), svgElement.firstChild.nextSibling);
+	}
+	return defs;
+};
+
+// TODO(codedread): Consider moving the next to functions to bbox.js
+
+// Function: svgedit.utilities.getPathBBox
+// Get correct BBox for a path in Webkit
+// Converted from code found here:
+// http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html
+// 
+// Parameters:
+// path - The path DOM element to get the BBox for
+//
+// Returns:
+// A BBox-like object
+svgedit.utilities.getPathBBox = function(path) {
+	var seglist = path.pathSegList;
+	var tot = seglist.numberOfItems;
+	
+	var bounds = [[], []];
+	var start = seglist.getItem(0);
+	var P0 = [start.x, start.y];
+
+	for(var i=0; i < tot; i++) {
+		var seg = seglist.getItem(i);
+
+		if(typeof seg.x == 'undefined') continue;
+
+		// Add actual points to limits
+		bounds[0].push(P0[0]);
+		bounds[1].push(P0[1]);
+		
+		if(seg.x1) {
+			var P1 = [seg.x1, seg.y1],
+				P2 = [seg.x2, seg.y2],
+				P3 = [seg.x, seg.y];
+
+			for(var j=0; j < 2; j++) {
+
+				var calc = function(t) {
+					return Math.pow(1-t,3) * P0[j] 
+						+ 3 * Math.pow(1-t,2) * t * P1[j]
+						+ 3 * (1-t) * Math.pow(t,2) * P2[j]
+						+ Math.pow(t,3) * P3[j];
+				};
+
+				var b = 6 * P0[j] - 12 * P1[j] + 6 * P2[j];
+				var a = -3 * P0[j] + 9 * P1[j] - 9 * P2[j] + 3 * P3[j];
+				var c = 3 * P1[j] - 3 * P0[j];
+				
+				if(a == 0) {
+					if(b == 0) {
+						continue;
+					}
+					var t = -c / b;
+					if(0 < t && t < 1) {
+						bounds[j].push(calc(t));
+					}
+					continue;
+				}
+				
+				var b2ac = Math.pow(b,2) - 4 * c * a;
+				if(b2ac < 0) continue;
+				var t1 = (-b + Math.sqrt(b2ac))/(2 * a);
+				if(0 < t1 && t1 < 1) bounds[j].push(calc(t1));
+				var t2 = (-b - Math.sqrt(b2ac))/(2 * a);
+				if(0 < t2 && t2 < 1) bounds[j].push(calc(t2));
+			}
+			P0 = P3;
+		} else {
+			bounds[0].push(seg.x);
+			bounds[1].push(seg.y);
+		}
+	}
+	
+	var x = Math.min.apply(null, bounds[0]);
+	var w = Math.max.apply(null, bounds[0]) - x;
+	var y = Math.min.apply(null, bounds[1]);
+	var h = Math.max.apply(null, bounds[1]) - y;
+	return {
+		'x': x,
+		'y': y,
+		'width': w,
+		'height': h
+	};
+};
+
+// Function: groupBBFix
+// Get the given/selected element's bounding box object, checking for
+// horizontal/vertical lines (see issue 717)
+// Note that performance is currently terrible, so some way to improve would
+// be great.
+//
+// Parameters: 
+// selected - Container or <use> DOM element
+function groupBBFix(selected) {
+	if(svgedit.browser.supportsHVLineContainerBBox()) {
+		try { return selected.getBBox();} catch(e){} 
+	}
+	var ref = $.data(selected, 'ref');
+	var matched = null;
+	
+	if(ref) {
+		var copy = $(ref).children().clone().attr('visibility', 'hidden');
+		$(svgroot_).append(copy);
+		matched = copy.filter('line, path');
+	} else {
+		matched = $(selected).find('line, path');
+	}
+	
+	var issue = false;
+	if(matched.length) {
+		matched.each(function() {
+			var bb = this.getBBox();
+			if(!bb.width || !bb.height) {
+				issue = true;
+			}
+		});
+		if(issue) {
+			var elems = ref ? copy : $(selected).children();
+			ret = getStrokedBBox(elems);
+		} else {
+			ret = selected.getBBox();
+		}
+	} else {
+		ret = selected.getBBox();
+	}
+	if(ref) {
+		copy.remove();
+	}
+	return ret;
+}
+
+// Function: svgedit.utilities.getBBox
+// Get the given/selected element's bounding box object, convert it to be more
+// usable when necessary
+//
+// Parameters:
+// elem - Optional DOM element to get the BBox for
+svgedit.utilities.getBBox = function(elem) {
+	var selected = elem || editorContext_.getSelectedElements()[0];
+	if (elem.nodeType != 1) return null;
+	var ret = null;
+	var elname = selected.nodeName;
+	
+	switch ( elname ) {
+	case 'text':
+		if(selected.textContent === '') {
+			selected.textContent = 'a'; // Some character needed for the selector to use.
+			ret = selected.getBBox();
+			selected.textContent = '';
+		} else {
+			try { ret = selected.getBBox();} catch(e){}
+		}
+		break;
+	case 'path':
+		if(!svgedit.browser.supportsPathBBox()) {
+			ret = svgedit.utilities.getPathBBox(selected);
+		} else {
+			try { ret = selected.getBBox();} catch(e){}
+		}
+		break;
+	case 'g':
+	case 'a':
+		ret = groupBBFix(selected);
+		break;
+	default:
+
+		if(elname === 'use') {
+			ret = groupBBFix(selected, true);
+		}
+		
+		if(elname === 'use') {
+			if(!ret) ret = selected.getBBox();
+			//if(!svgedit.browser.isWebkit()) {
+			//	var bb = {};
+			//	bb.width = ret.width;
+			//	bb.height = ret.height;
+			//	bb.x = ret.x + parseFloat(selected.getAttribute('x')||0);
+			//	bb.y = ret.y + parseFloat(selected.getAttribute('y')||0);
+			//	ret = bb;
+			//}
+		} else if(~visElems_arr.indexOf(elname)) {
+			try { ret = selected.getBBox();} 
+			catch(e) { 
+				// Check if element is child of a foreignObject
+				var fo = $(selected).closest("foreignObject");
+				if(fo.length) {
+					try {
+						ret = fo[0].getBBox();
+					} catch(e) {
+						ret = null;
+					}
+				} else {
+					ret = null;
+				}
+			}
+		}
+	}
+	
+	if(ret) {
+		ret = svgedit.utilities.bboxToObj(ret);
+	}
+
+	// get the bounding box from the DOM (which is in that element's coordinate system)
+	return ret;
+};
+
+// Function: svgedit.utilities.getRotationAngle
+// Get the rotation angle of the given/selected DOM element
+//
+// Parameters:
+// elem - Optional DOM element to get the angle for
+// to_rad - Boolean that when true returns the value in radians rather than degrees
+//
+// Returns:
+// Float with the angle in degrees or radians
+svgedit.utilities.getRotationAngle = function(elem, to_rad) {
+	var selected = elem || editorContext_.getSelectedElements()[0];
+	// find the rotation transform (if any) and set it
+	var tlist = svgedit.transformlist.getTransformList(selected);
+	if(!tlist) return 0; // <svg> elements have no tlist
+	var N = tlist.numberOfItems;
+	for (var i = 0; i < N; ++i) {
+		var xform = tlist.getItem(i);
+		if (xform.type == 4) {
+			return to_rad ? xform.angle * Math.PI / 180.0 : xform.angle;
+		}
+	}
+	return 0.0;
+};
+
+// Function: getElem
+// Get a DOM element by ID within the SVG root element.
+//
+// Parameters:
+// id - String with the element's new ID
+if (svgedit.browser.supportsSelectors()) {
+	svgedit.utilities.getElem = function(id) {
+		// querySelector lookup
+		return svgroot_.querySelector('#'+id);
+	};
+} else if (svgedit.browser.supportsXpath()) {
+	svgedit.utilities.getElem = function(id) {
+		// xpath lookup
+		return domdoc_.evaluate(
+			'svg:svg[@id="svgroot"]//svg:*[@id="'+id+'"]',
+			domcontainer_, 
+			function() { return "http://www.w3.org/2000/svg"; },
+			9,
+			null).singleNodeValue;
+	};
+} else {
+	svgedit.utilities.getElem = function(id) {
+		// jQuery lookup: twice as slow as xpath in FF
+		return $(svgroot_).find('[id=' + id + ']')[0];
+	};
+}
+
+// Function: assignAttributes
+// Assigns multiple attributes to an element.
+//
+// Parameters: 
+// node - DOM element to apply new attribute values to
+// attrs - Object with attribute keys/values
+// suspendLength - Optional integer of milliseconds to suspend redraw
+// unitCheck - Boolean to indicate the need to use svgedit.units.setUnitAttr
+svgedit.utilities.assignAttributes = function(node, attrs, suspendLength, unitCheck) {
+	if(!suspendLength) suspendLength = 0;
+	// Opera has a problem with suspendRedraw() apparently
+	var handle = null;
+	if (!svgedit.browser.isOpera()) svgroot_.suspendRedraw(suspendLength);
+
+	for (var i in attrs) {
+		var ns = (i.substr(0,4) === "xml:" ? XMLNS : 
+			i.substr(0,6) === "xlink:" ? XLINKNS : null);
+			
+		if(ns) {
+			node.setAttributeNS(ns, i, attrs[i]);
+		} else if(!unitCheck) {
+			node.setAttribute(i, attrs[i]);
+		} else {
+			svgedit.units.setUnitAttr(node, i, attrs[i]);
+		}
+		
+	}
+	
+	if (!svgedit.browser.isOpera()) svgroot_.unsuspendRedraw(handle);
+};
+
+// Function: cleanupElement
+// Remove unneeded (default) attributes, makes resulting SVG smaller
+//
+// Parameters:
+// element - DOM element to clean up
+svgedit.utilities.cleanupElement = function(element) {
+	var handle = svgroot_.suspendRedraw(60);
+	var defaults = {
+		'fill-opacity':1,
+		'stop-opacity':1,
+		'opacity':1,
+		'stroke':'none',
+		'stroke-dasharray':'none',
+		'stroke-linejoin':'miter',
+		'stroke-linecap':'butt',
+		'stroke-opacity':1,
+		'stroke-width':1,
+		'rx':0,
+		'ry':0
+	}
+	
+	for(var attr in defaults) {
+		var val = defaults[attr];
+		if(element.getAttribute(attr) == val) {
+			element.removeAttribute(attr);
+		}
+	}
+	
+	svgroot_.unsuspendRedraw(handle);
+};
+
+
+})();
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/units.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/units.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/src/units.js	(revision 29468)
@@ -0,0 +1,281 @@
+/**
+ * Package: svgedit.units
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ * Copyright(c) 2010 Jeff Schiller
+ */
+
+// Dependencies:
+// 1) jQuery
+
+var svgedit = svgedit || {};
+
+(function() {
+
+if (!svgedit.units) {
+	svgedit.units = {};
+}
+
+var w_attrs = ['x', 'x1', 'cx', 'rx', 'width'];
+var h_attrs = ['y', 'y1', 'cy', 'ry', 'height'];
+var unit_attrs = $.merge(['r','radius'], w_attrs);
+
+var unitNumMap = {
+	'%':  2,
+	'em': 3,
+	'ex': 4,
+	'px': 5,
+	'cm': 6,
+	'mm': 7,
+	'in': 8,
+	'pt': 9,
+	'pc': 10
+};
+
+$.merge(unit_attrs, h_attrs);
+
+// Container of elements.
+var elementContainer_;
+
+/**
+ * Stores mapping of unit type to user coordinates.
+ */
+var typeMap_ = {px: 1};
+
+/**
+ * ElementContainer interface
+ *
+ * function getBaseUnit() - returns a string of the base unit type of the container ("em")
+ * function getElement() - returns an element in the container given an id
+ * function getHeight() - returns the container's height
+ * function getWidth() - returns the container's width
+ * function getRoundDigits() - returns the number of digits number should be rounded to
+ */
+
+/**
+ * Function: svgedit.units.init()
+ * Initializes this module.
+ *
+ * Parameters:
+ * elementContainer - an object implementing the ElementContainer interface.
+ */
+svgedit.units.init = function(elementContainer) {
+	elementContainer_ = elementContainer;
+
+	var svgns = 'http://www.w3.org/2000/svg';
+
+	// Get correct em/ex values by creating a temporary SVG.
+	var svg = document.createElementNS(svgns, 'svg');
+	document.body.appendChild(svg);
+	var rect = document.createElementNS(svgns,'rect');
+	rect.setAttribute('width',"1em");
+	rect.setAttribute('height',"1ex");
+	rect.setAttribute('x',"1in");
+	svg.appendChild(rect);
+	var bb = rect.getBBox();
+	document.body.removeChild(svg);
+
+	var inch = bb.x;
+	typeMap_['em'] = bb.width;
+	typeMap_['ex'] = bb.height;
+	typeMap_['in'] = inch;
+	typeMap_['cm'] = inch / 2.54;
+	typeMap_['mm'] = inch / 25.4;
+	typeMap_['pt'] = inch / 72;
+	typeMap_['pc'] = inch / 6;
+	typeMap_['%'] = 0;
+};
+
+// Group: Unit conversion functions
+
+// Function: svgedit.units.getTypeMap
+// Returns the unit object with values for each unit
+svgedit.units.getTypeMap = function() {
+	return typeMap_;
+};
+
+// Function: svgedit.units.shortFloat
+// Rounds a given value to a float with number of digits defined in save_options
+//
+// Parameters: 
+// val - The value as a String, Number or Array of two numbers to be rounded
+//
+// Returns:
+// If a string/number was given, returns a Float. If an array, return a string
+// with comma-seperated floats
+svgedit.units.shortFloat = function(val) {
+	var digits = elementContainer_.getRoundDigits();
+	if(!isNaN(val)) {
+		// Note that + converts to Number
+		return +((+val).toFixed(digits));
+	} else if($.isArray(val)) {
+		return svgedit.units.shortFloat(val[0]) + ',' + svgedit.units.shortFloat(val[1]);
+	}
+	return parseFloat(val).toFixed(digits) - 0;
+};
+
+// Function: svgedit.units.convertUnit
+// Converts the number to given unit or baseUnit
+svgedit.units.convertUnit = function(val, unit) {
+	unit = unit || elementContainer_.getBaseUnit();
+//	baseVal.convertToSpecifiedUnits(unitNumMap[unit]);
+//	var val = baseVal.valueInSpecifiedUnits;
+//	baseVal.convertToSpecifiedUnits(1);
+	return svgedit.unit.shortFloat(val / typeMap_[unit]);
+};
+
+// Function: svgedit.units.setUnitAttr
+// Sets an element's attribute based on the unit in its current value.
+//
+// Parameters: 
+// elem - DOM element to be changed
+// attr - String with the name of the attribute associated with the value
+// val - String with the attribute value to convert
+svgedit.units.setUnitAttr = function(elem, attr, val) {
+	if(!isNaN(val)) {
+		// New value is a number, so check currently used unit
+		var old_val = elem.getAttribute(attr);
+		
+		// Enable this for alternate mode
+//		if(old_val !== null && (isNaN(old_val) || elementContainer_.getBaseUnit() !== 'px')) {
+//			// Old value was a number, so get unit, then convert
+//			var unit;
+//			if(old_val.substr(-1) === '%') {
+//				var res = getResolution();
+//				unit = '%';
+//				val *= 100;
+//				if(w_attrs.indexOf(attr) >= 0) {
+//					val = val / res.w;
+//				} else if(h_attrs.indexOf(attr) >= 0) {
+//					val = val / res.h;
+//				} else {
+//					return val / Math.sqrt((res.w*res.w) + (res.h*res.h))/Math.sqrt(2);
+//				}
+//			} else {
+//				if(elementContainer_.getBaseUnit() !== 'px') {
+//					unit = elementContainer_.getBaseUnit();
+//				} else {
+//					unit = old_val.substr(-2);
+//				}
+//				val = val / typeMap_[unit];
+//			}
+//		
+//		val += unit;
+//		}
+	}
+	elem.setAttribute(attr, val);
+};
+
+var attrsToConvert = {
+	"line": ['x1', 'x2', 'y1', 'y2'],
+	"circle": ['cx', 'cy', 'r'],
+	"ellipse": ['cx', 'cy', 'rx', 'ry'],
+	"foreignObject": ['x', 'y', 'width', 'height'],
+	"rect": ['x', 'y', 'width', 'height'],
+	"image": ['x', 'y', 'width', 'height'],
+	"use": ['x', 'y', 'width', 'height'],
+	"text": ['x', 'y']
+};
+
+// Function: svgedit.units.convertAttrs
+// Converts all applicable attributes to the configured baseUnit
+//
+// Parameters:
+// element - a DOM element whose attributes should be converted
+svgedit.units.convertAttrs = function(element) {
+	var elName = element.tagName;
+	var unit = elementContainer_.getBaseUnit();
+	var attrs = attrsToConvert[elName];
+	if(!attrs) return;
+	var len = attrs.length
+	for(var i = 0; i < len; i++) {
+		var attr = attrs[i];
+		var cur = element.getAttribute(attr);
+		if(cur) {
+			if(!isNaN(cur)) {
+				element.setAttribute(attr, (cur / typeMap_[unit]) + unit);
+			} else {
+				// Convert existing?
+			}
+		}
+	}
+};
+
+// Function: svgedit.units.convertToNum
+// Converts given values to numbers. Attributes must be supplied in 
+// case a percentage is given
+//
+// Parameters:
+// attr - String with the name of the attribute associated with the value
+// val - String with the attribute value to convert
+svgedit.units.convertToNum = function(attr, val) {
+	// Return a number if that's what it already is
+	if(!isNaN(val)) return val-0;
+	
+	if(val.substr(-1) === '%') {
+		// Deal with percentage, depends on attribute
+		var num = val.substr(0, val.length-1)/100;
+		var width = elementContainer_.getWidth();
+		var height = elementContainer_.getHeight();
+		
+		if(w_attrs.indexOf(attr) >= 0) {
+			return num * width;
+		} else if(h_attrs.indexOf(attr) >= 0) {
+			return num * height;
+		} else {
+			return num * Math.sqrt((width*width) + (height*height))/Math.sqrt(2);
+		}
+	} else {
+		var unit = val.substr(-2);
+		var num = val.substr(0, val.length-2);
+		// Note that this multiplication turns the string into a number
+		return num * typeMap_[unit];
+	}
+};
+
+// Function: svgedit.units.isValidUnit
+// Check if an attribute's value is in a valid format
+//
+// Parameters: 
+// attr - String with the name of the attribute associated with the value
+// val - String with the attribute value to check
+svgedit.units.isValidUnit = function(attr, val, selectedElement) {
+	var valid = false;
+	if(unit_attrs.indexOf(attr) >= 0) {
+		// True if it's just a number
+		if(!isNaN(val)) {
+			valid = true;
+		} else {
+		// Not a number, check if it has a valid unit
+			val = val.toLowerCase();
+			$.each(typeMap_, function(unit) {
+				if(valid) return;
+				var re = new RegExp('^-?[\\d\\.]+' + unit + '$');
+				if(re.test(val)) valid = true;
+			});
+		}
+	} else if (attr == "id") {
+		// if we're trying to change the id, make sure it's not already present in the doc
+		// and the id value is valid.
+
+		var result = false;
+		// because getElem() can throw an exception in the case of an invalid id
+		// (according to http://www.w3.org/TR/xml-id/ IDs must be a NCName)
+		// we wrap it in an exception and only return true if the ID was valid and
+		// not already present
+		try {
+			var elem = elementContainer_.getElement(val);
+			result = (elem == null || elem === selectedElement);
+		} catch(e) {}
+		return result;
+	} else {
+		valid = true;
+	}
+	
+	return valid;
+};
+
+
+})();
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/svgedit.compiled.css
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/svgedit.compiled.css	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/svgedit.compiled.css	(revision 29468)
@@ -0,0 +1,417 @@
+#svg_editor .jPicker .Icon{display:inline-block;height:24px;position:relative;text-align:left;width:25px}
+#svg_editor .jPicker .Icon span.Color,#svg_editor .jPicker .Icon span.Alpha{background-position:2px 2px;display:block;height:100%;left:0;position:absolute;top:0;width:100%}
+#svg_editor .jPicker .Icon span.Image{background-repeat:no-repeat;cursor:pointer;display:block;height:100%;left:0;position:absolute;top:0;width:100%}
+#svg_editor .jPicker.Container{z-index:10}
+table#svg_editor .jPicker{width:545px;z-index:20}
+#svg_editor .jPicker .Move{background-color:#ddd;border-color:#fff #666 #666 #fff;border-style:solid;border-width:1px;cursor:move;height:12px;padding:0}
+#svg_editor .jPicker .Title{display:none}
+#svg_editor .jPicker div.Map{border:solid #000 1px;cursor:crosshair;height:260px;margin:0;overflow:hidden;padding:0;position:relative;width:260px}
+#svg_editor .jPicker div[class="Map"]{height:256px;width:256px}
+#svg_editor .jPicker div.Bar{border:solid #000 1px;cursor:n-resize;height:260px;margin:0 15px;overflow:hidden;padding:0;position:relative;width:24px}
+#svg_editor .jPicker div[class="Bar"]{height:256px;width:20px}
+#svg_editor .jPicker .Map .Map1,#svg_editor .jPicker .Map .Map2,#svg_editor .jPicker .Map .Map3,#svg_editor .jPicker .Bar .Map1,#svg_editor .jPicker .Bar .Map2,#svg_editor .jPicker .Bar .Map3,#svg_editor .jPicker .Bar .Map4,#svg_editor .jPicker .Bar .Map5,#svg_editor .jPicker .Bar .Map6{background-color:transparent;background-image:none;display:block;left:0;position:absolute;top:0}
+#svg_editor .jPicker .Map .Map1,#svg_editor .jPicker .Map .Map2,#svg_editor .jPicker .Map .Map3{height:2596px;width:256px}
+#svg_editor .jPicker .Bar .Map1,#svg_editor .jPicker .Bar .Map2,#svg_editor .jPicker .Bar .Map3,#svg_editor .jPicker .Bar .Map4{height:3896px;width:20px}
+#svg_editor .jPicker .Bar .Map5,#svg_editor .jPicker .Bar .Map6{height:256px;width:20px}
+#svg_editor .jPicker .Map .Map1,#svg_editor .jPicker .Map .Map2,#svg_editor .jPicker .Bar .Map6{background-repeat:no-repeat}
+#svg_editor .jPicker .Map .Map3,#svg_editor .jPicker .Bar .Map5{background-repeat:repeat}
+#svg_editor .jPicker .Bar .Map1,#svg_editor .jPicker .Bar .Map2,#svg_editor .jPicker .Bar .Map3,#svg_editor .jPicker .Bar .Map4{background-repeat:repeat-x}
+#svg_editor .jPicker .Map .Arrow{display:block;position:absolute}
+#svg_editor .jPicker .Bar .Arrow{display:block;left:0;position:absolute}
+#svg_editor .jPicker .Preview{font-size:9px;text-align:center}
+#svg_editor .jPicker .Preview div.bgt{height:62px;margin:0 auto;padding:0;width:62px}
+#svg_editor .jPicker .Preview div span{border:1px solid #000;display:block;height:30px;margin:0 auto;padding:0;width:60px}
+#svg_editor .jPicker .Preview .Active{border-bottom-width:0}
+#svg_editor .jPicker .Preview .Current{border-top-width:0;cursor:pointer}
+#svg_editor .jPicker .Button{text-align:center;width:115px}
+#svg_editor .jPicker .Button input{width:100px}
+#svg_editor .jPicker td.Radio{margin:0;padding:0;width:31px}
+#svg_editor .jPicker td.Radio input{margin:0 5px 0 0;padding:0}
+#svg_editor .jPicker td.Text{font-size:12px!important;height:22px;margin:0;padding:0;text-align:left;width:70px}
+#svg_editor .jPicker tr.Hex td.Text{width:100px;color:#666}
+#svg_editor .jPicker tr.Hex td.Text span{width:100px;color:#333}
+#svg_editor .jPicker td.Text input{background-color:#fff;border:1px inset #aaa;height:15px;margin:0 0 0 5px;text-align:left;width:30px;color:#333}
+#svg_editor #color_picker .jPicker tr.Hex td.Text input.Hex{width:50px;display:inline-block;float:none}
+#svg_editor .jPicker tr.Hex td.Text input.AHex{width:20px;display:none}
+#svg_editor .jPicker .Grid{text-align:center;float:right;width:108px}
+#svg_editor .jPicker .Grid span.QuickColor{cursor:pointer;display:inline-block;height:15px;line-height:15px;margin:0;padding:0;width:18px}
+#svg_editor .jPicker td{vertical-align:top}
+#svg_editor .jPicker td.colorsquare{width:275px}
+#svg_editor .jPicker .prev_div{margin-top:-15px}
+#svg_editor .jPicker .actions{position:absolute;bottom:20px;left:20px;right:20px}
+#svg_editor .jPicker .actions .Ok{position:absolute;top:0;right:0}
+#svg_editor .jPicker .actions .Cancel{position:absolute;top:0;left:0}
+#svg_editor .jPicker .color_preview{width:62px;margin:0 auto}
+h2.jGraduate_Title{display:none}
+.jGraduate_Picker{position:absolute;padding:20px}
+.jGraduate_tabs li{display:inline-block;padding:5px 10px;margin-right:5px;cursor:pointer}
+li.jGraduate_tab_current{background:#fff;border-radius:3px 3px 0 0}
+.jGraduate_colPick{display:none}
+.jGraduate_gradPick{display:none;overflow:visible}
+.jGraduate_tabs{position:relative;background-color:#ddd;padding:10px 10px 0 10px;margin:-20px -20px 20px -20px;border-radius:3px 3px 0 0}
+div.jGraduate_Swatch{float:left;margin:0 15px 0 0}
+div.jGraduate_GradContainer{border:solid #000 1px;background-image:url(../images/map-opacity.png);background-position:0 0;height:256px;width:256px;position:relative}
+div.jGraduate_GradContainer div.grad_coord{background:rgba(0,0,0,0.8);border:2px solid white;border-radius:15px;-moz-border-radius:5px;width:14px;height:14px;position:absolute;margin:-7px -7px;top:0;left:0;text-align:center;font-size:8px;line-height:14px;color:white;text-decoration:none;cursor:pointer;-moz-user-select:none;-webkit-user-select:none}
+.jGraduate_AlphaArrows{position:absolute;margin-top:-10px;margin-left:250.5px}
+div.jGraduate_Opacity{border:2px inset #eee;margin-top:14px;background-color:black;background-image:url(../images/Maps.png);background-position:0 -2816px;height:20px;cursor:ew-resize}
+div.jGraduate_StopSlider{margin:-10px 0 0 -10px;width:276px;overflow:visible;background:white;height:45px;cursor:pointer}
+div.jGraduate_StopSection{width:120px;float:left}
+div.jGraduate_StopSection.jGraduate_SpreadMethod{display:none}
+input.jGraduate_Ok,input.jGraduate_Cancel{display:block;width:100px}
+input.jGraduate_Ok{margin:0 0 5px 0}
+.colorBox{float:left;height:16px;width:16px;border:1px solid #808080;cursor:pointer;margin:4px 4px 4px 30px}
+.colorBox+label{float:left;margin-top:7px}
+label.jGraduate_Form_Heading{color:#333;padding:2px;font-weight:bold;font-size:13px}
+div.jGraduate_Form_Section{-moz-border-radius:5px;-webkit-border-radius:5px;padding:15px 5px 5px 5px;margin:5px 2px;width:100px;text-align:center;overflow:auto;background:#eee}
+div.jGraduate_Form label{padding:0 2px;color:#333}
+div.jGraduate_StopSection input[type=text],div.jGraduate_Slider input[type=text]{width:33px;color:#333}
+div.jGraduate_LightBox{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#000;opacity:.5;display:none}
+div.jGraduate_stopPicker{position:absolute;display:none;background:white;padding:20px;border-radius:3px;width:530px;height:300px;box-shadow:0 5px 25px black}
+.jGraduate_gradPick{width:526px}
+.jGraduate_gradPick div.jGraduate_Slider{line-height:160%}
+.jGraduate_gradPick div.jGraduate_Slider label:last-child{position:absolute;right:10px;top:0;color:#999;font-weight:bold}
+.jGraduate_gradPick div.jGraduate_Slider label:last-child input{margin:0 3px 0 0;color:#333}
+.jGraduate_gradPick .jGraduate_Form{float:left;width:270px;position:absolute;left:284px;width:266px;height:200px;top:195px;margin:-3px 3px 0 10px;line-height:200%}
+.jGraduate_gradPick .jGraduate_Form label,.jGraduate_gradPick .jGraduate_Form input{width:auto;float:left}
+.jGraduate_gradPick .jGraduate_Form.jGraduate_rg_field label,.jGraduate_gradPick .jGraduate_Form.jGraduate_rg_field input{width:auto;float:left;font-size:11px}
+.jGraduate_gradPick .jGraduate_Form.jGraduate_rg_field #color_picker_jGraduate_match_ctr{float:none}
+.jGraduate_gradPick .jGraduate_Form label{clear:left}
+.jGraduate_gradPick .jGraduate_Points{position:static;float:left;margin:0;width:auto}
+.jGraduate_Colorblocks{display:table;border-spacing:0 5px}
+.jGraduate_colorblock{display:table-row}
+.jGraduate_Colorblocks .jGraduate_colorblock>*{display:table-cell;vertical-align:middle;margin:0;float:none}
+.jGraduate_gradPick .jGraduate_Form_Section{padding-top:9px}
+.jGraduate_Slider{text-align:center;float:left;width:100%;position:relative;margin:5px 0}
+.jGraduate_Slider .jGraduate_Form_Section{border:0;width:250px;padding:0 2px;overflow:visible}
+.jGraduate_Slider label.prelabel{width:40px;text-align:left}
+.jGraduate_SliderBar{width:140px;float:left;margin:0 5px;border:1px solid #BBB;height:20px;position:relative}
+div.jGraduate_Slider input{margin-top:5px}
+div.jGraduate_Slider img{top:0;left:0;position:absolute;cursor:ew-resize}
+.jPicker .Button .Ok,.jGraduate_Picker .jGraduate_OkCancel .jGraduate_Ok{-webkit-appearance:none;margin:0;position:absolute;bottom:5px;right:5px}
+.jPicker .Button .Cancel,.jGraduate_Picker .jGraduate_OkCancel .jGraduate_Cancel{margin:0;position:absolute;bottom:5px;left:5px}
+body{background:#3f3f3c;font:13px/120% 'Lucida Sans','Lucida Grande','Lucida Sans Unicode',sans-serif;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin:0;padding:0}
+::selection{background:#000;color:#fff}
+::-moz-selection{background:#000;color:#fff}
+html,body{overflow:hidden;width:100%;height:100%}
+::-webkit-scrollbar{width:5px;height:5px;background:#444}
+::-webkit-scrollbar-track{border-radius:10px;background:#444}
+::-webkit-scrollbar-thumb{border-radius:10px;background:#666}
+::-webkit-scrollbar-corner{background:#444}
+#browser-not-supported{font-size:.8em;font-family:Verdana,Helvetica,Arial;color:#000}
+#svgroot{-moz-user-select:none;-webkit-user-select:none;position:absolute;top:0;left:0}
+#svg_editor{background:#2f2f2c}
+#menu_bar{padding:0 0 0 50px;background:#2f2f2c;position:relative;z-index:2}
+#menu_bar.active .menu.open .menu_list{display:block}
+.menu{position:relative;z-index:5;color:#333;display:inline-block}
+.menu_title{cursor:pointer;display:inline-block;padding:7px 10px;z-index:10;color:#fff;position:relative;height:16px;vertical-align:top}
+.touch .menu_title{padding:7px 17px;height:26px;line-height:26px}
+.menu .menu_title:hover{background:rgba(255,255,255,0.1)}
+.menu_list .separator{margin:5px 0;border-top:solid #ddd 1px}
+.menu_list{display:none;position:absolute;top:28px;left:0;white-space:nowrap;background:white;padding:7px 0;border-radius:0 3px 3px 3px;box-shadow:0 0 20px rgba(0,0,0,0.8)}
+.touch .menu_list{top:38px}
+#menu_bar.active .menu.open .menu_title{background:white;color:#333}
+.menu_list .menu_item{position:relative;overflow:hidden;line-height:22px;padding:5px 69px 5px 25px;cursor:default;color:#333}
+.menu_list .menu_item.tool_button{background:transparent;border:0;margin:0;padding:5px 55px 5px 25px;height:auto;width:auto}
+.menu_list .menu_item.push_button_pressed:before{content:'â';position:absolute;display:block;left:7px;top:3px;width:20px;height:20px}
+.menu_list .menu_item:hover,.menu_list .menu_item.push_button_pressed:hover{background:rgba(0,0,0,0.1);color:#000}
+.menu_list .menu_item.disabled:hover,.menu_list .menu_item.push_button_pressed.disabled:hover{background:transparent;color:#333}
+.menu_list .menu_item.push_button_pressed{background:transparent;border:0;width:auto;height:auto;margin:0}
+.menu_list .menu_item span{display:block;position:absolute;right:10px;padding:5px;background:rgba(0,0,0,0.1);top:6px;height:10px;text-align:center;font-size:10px;line-height:120%}
+#svgcanvas{line-height:normal;display:inline-block;background-color:#a0a0a0;text-align:center;vertical-align:middle;width:640px;height:480px;position:relative;background:#3f3f3c}
+#rulers>div{position:absolute;background:#2f2f2c;z-index:1;overflow:hidden;-webkit-font-smoothing:none}
+#rulers #ruler_corner{top:30px;left:50px;width:15px;height:15px;border:solid #444 1px;z-index:2}
+#ruler_x{height:15px;top:30px;left:66px;right:175px;border-top:solid #444 1px;border-right:solid #444 1px}
+#ruler_x_cursor{height:15px;border-right:dotted #999 1px;position:absolute;background:#2f2f2c}
+#ruler_y_cursor{width:15px;border-top:dotted #999 1px;position:absolute;background:#2f2f2c}
+#rulers.moved #ruler_corner,#rulers.moved #ruler_x{top:101px}
+#ruler_y{width:15px;top:46px;left:50px;bottom:40px;border-left:solid #444 1px;border-bottom:solid #444 1px}
+#rulers.moved #ruler_y{top:116px}
+#ruler_x canvas:first-child{margin-left:-16px}
+#ruler_x canvas{float:left}
+#ruler_y canvas{margin-top:-16px}
+#ruler_x>div,#ruler_y>div{overflow:hidden}
+#palette{display:block;position:absolute;z-index:2;left:10px;bottom:5px;width:410px;right:145px;height:30px}
+.palette_item{height:20%;width:5.2%;float:left;cursor:url(../images/eyedropper.png) 0 16,crosshair}
+.palette_item.transparent,.palette_item.white,.palette_item.black{background:#fff;position:absolute;width:10px;height:10px;left:-10px;top:0}
+.palette_item.transparent{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNXG14zYAAAAVdEVYdENyZWF0aW9uIFRpbWUAOC8yMi8xMg1cp6sAAABESURBVBiVjdBBCgAgCETRr/e/87SJKFPLnfIcQRMIwMBIShIAvgZzoSrfkzrs8WyF1+kX9r3p8AE7nL7kSpSshN+JEQ8GixkF0mSevgAAAABJRU5ErkJggg==)}
+.palette_item.black{background:#000;top:10px}
+.palette_item.white{background:#fff;top:20px}
+#color_tools{position:relative;width:48px;height:48px;margin:6px 6px 0 6px}
+.touch #color_tools{width:auto;height:auto}
+#tool_fill{position:absolute;top:0;left:0;z-index:1}
+.touch #tool_fill{position:static;width:36px;height:36px;margin-bottom:10px}
+#tool_fill.active,#tool_stroke.active{z-index:2}
+#tool_stroke{top:14px;left:14px}
+.touch #tool_fill.active,.touch #tool_stroke.active{outline:4px solid #09f}
+#tool_fill,#tool_stroke,#tool_canvas{box-shadow:0 0 0 1px #2f2f2c;position:absolute}
+.touch #tool_fill,.touch #tool_stroke,.touch #tool_canvas{position:relative;top:0;left:0}
+#color_canvas_tools{float:left;cursor:pointer}
+#tool_fill .color_block{width:24px;height:24px;overflow:hidden;border:solid #ccc 1px}
+.touch #tool_eyedropper{margin-top:6px}
+.touch #tool_fill .color_block{width:36px;height:36px}
+.touch #tool_fill .color_block svg{width:36px!important;height:36px!important}
+.touch #tool_switch{display:none}
+#use_panel .tool_button,#path_node_panel .tool_button{color:#999;border:solid #3f3f3c 1px;border-radius:3px;padding:3px 10px 3px 40px;background:transparent;position:relative;margin-top:10px;width:90px;height:23px;line-height:24px}
+#use_panel .tool_button{padding-left:10px;margin-bottom:10px;width:124px}
+#path_node_panel .tool_button img,#path_node_panel .tool_button svg{position:absolute;left:5px;top:3px}
+#color_tools #tool_fill .color_block:hover,#color_tools #tool_stroke .color_block:hover{border-color:#fff}
+#color_tools #tool_fill .color_block>div{position:absolute;top:0;left:0}
+.touch #color_tools #tool_fill .color_block>div{position:relative}
+#color_tools #tool_fill .color_block #fill_bg,#color_tools #tool_stroke .color_block #stroke_bg{position:absolute;top:1px;left:1px;bottom:1px;right:1px}
+.touch #color_tools #tool_fill .color_block #fill_bg,.touch #color_tools #tool_stroke .color_block #stroke_bg{width:36px;height:36px;right:auto;bottom:auto}
+.touch #tool_stroke{position:relative;top:0;left:0;z-index:0}
+#stroke_color:after{content:'';position:absolute;display:block;width:8px;height:8px;left:8px;top:8px;background:#ccc;box-shadow:0 0 0 1px #000}
+.touch #stroke_color:after{height:14px;left:10px;position:absolute;top:10px;width:14px}
+#color_tools #tool_switch{cursor:pointer;opacity:.7;width:11px;height:11px;background:transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABV0RVh0Q3JlYXRpb24gVGltZQA2LzE0LzEyP6j5+gAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNXG14zYAAAB4SURBVBiVjZHRCYUwDEVvxIF0kZKN7EjiIrrReR/PSNSKXiikcE5JUtMeADMzXQIcdRfgFWqlyyB7ap1wL+0HAnIv1DqRJUBxTkLUWXIvh9AHkIeb58UkIUnDMH4ZR0otCfhv4ynbtp7ut722ZniFG8L9xx4Ek6QfN9huARmYwR0AAAAASUVORK5CYII=) top left no-repeat;position:absolute;top:-2px;left:28px}
+#color_tools #cross:hover{opacity:1}
+#color_tools #tool_stroke:hover #stroke_color:after{background:#fff}
+#color_tools #tool_stroke .color_block{width:24px;height:24px;overflow:hidden;border:solid #ccc 1px}
+.touch #color_tools #tool_stroke .color_block{width:36px;height:36px}
+#color_tools #tool_stroke .color_block>div{position:absolute;bottom:0;right:0}
+.touch #color_tools #tool_stroke .color_block>div{position:relative}
+#color_tools .icon_label{padding:0;width:24px;height:100%;cursor:pointer;position:absolute}
+#linkLabel>svg{height:20px;padding-top:4px}
+div#workarea{display:inline-table-cell;position:absolute;top:30px;left:50px;bottom:40px;right:175px;background-color:#444;overflow:auto;text-align:center;-webkit-transition:-webkit-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);-moz-transition:-moz-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);-o-transition:-o-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);-ms-transition:-ms-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);transition:transform 500ms cubic-bezier(0.13,0.66,0.24,0.92)}
+.touch div#workarea{top:40px}
+.menu .menu_list{display:none;position:absolute}
+.tool_button,.tool_button_current,.tool_button_pressed{cursor:pointer}
+.tool_button:hover,.push_button:hover,.buttonup:hover,.buttondown,.tool_button_current,.push_button_pressed{background-color:#fff}
+.tool_button.disabled,.tool_button.disabled:hover{opacity:.3;background-color:#aaa}
+#tools_left .tool_button{background:#2f2f2c;position:relative}
+#tools_left .tool_button.loaded{background:#ccc}
+#tools_left .tool_button.loaded:hover{background:#fff}
+#tools_left .tool_button:after,#tools_left .tool_button_current:after{position:absolute;content:'';border:solid #2f2f2c 2px;top:-1px;left:-1px;width:26px;height:26px;z-index:0}
+#tools_left .tool_button_current{background-color:#0cf}
+#main_icon span{position:absolute;width:100%;height:100%;display:block;z-index:2}
+#tools_top{position:absolute;width:160px;height:100%;background:#2f2f2c;right:0;top:20px;border-bottom:0;overflow:visible;padding:0 0 0 15px}
+.touch #tools_top{top:30px}
+label{display:block;color:#999}
+div#font-selector{width:140px;height:300px;overflow:auto;margin:0 auto;position:absolute;top:27px;right:0;border:1px solid black;padding:10px;display:none;background-color:white;z-index:10;border-radius:3px;box-shadow:0 5px 10px rgba(0,0,0,0.7)}
+div#font-selector img{width:100%}
+div#font-selector .font-item{border-bottom:solid #ddd 1px;padding:5px 10px;margin:0 -10px}
+div#font-selector .font-item:hover{background-color:#eee}
+#tools_top #marker_panel *{float:left}
+#tools_top #marker_panel h4{float:none}
+#tools_top #marker_panel .dropdown .icon_label{width:36px;height:20px;margin-top:2px;border:solid #3f3f3c 1px;text-align:center}
+#tools_top #marker_panel .dropdown button{margin-top:2px}
+#tools_top #marker_panel #marker_panel_title{float:none;color:#fff;margin-bottom:3px}
+#tools_top #marker_panel .dropdown .icon_label img{float:none}
+#color_picker input[type=text],#color_picker input[type=number]{width:30px;background:#fff}
+.dropdown_set input[type=text],.dropdown_set input[type=number]{width:50px}
+input[type=text].wide,input[type=number].wide{width:110px}
+input[type=text].tuco,input[type=number].tuco{width:150px}
+input[type=submit],input[type=button],button{background:#4f80ff;color:#fff;border-radius:3px;padding:7px 17px;border:0;line-height:140%;font-size:14px;font-weight:bold;font-family:sans-serif}
+input[type=submit]:hover,button:hover{box-shadow:inset 0 3px 10px rgba(255,255,255,0.1),inset 0 -3px 10px rgba(0,0,0,0.2)}
+input[type=submit]:hover,button:hover{background:#2f84c1}
+input[type=submit]:active,button:active{box-shadow:inset 0 2px 2px rgba(0,0,0,0.2);border-bottom:solid rgba(255,255,255,0.1) 1px}
+#tools_left{position:absolute;border-right:0;width:50px;top:30px;bottom:0;left:0;background:#2f2f2c;z-index:4}
+#workarea.wireframe #svgcontent *{fill:none;stroke:#000;stroke-width:1px;stroke-opacity:1.0;stroke-dasharray:0;opacity:1;pointer-events:stroke;vector-effect:non-scaling-stroke;filter:none}
+#workarea.wireframe #svgcontent text{fill:#000;stroke:none}
+#workarea.wireframe #canvasBackground>rect{fill:#FFF!important}
+#workarea #canvasBackground>rect{stroke:transparent!important}
+.context_panel{display:none}
+#canvas_panel{display:block}
+#multiselected_panel .selected_tool{vertical-align:12px}
+#cur_context_panel{position:absolute;top:47px;left:68px;line-height:22px;overflow:auto;border-bottom:0;border-right:0;padding-left:5px;font-size:12px;background:black;color:#999;opacity:.5;padding:0 10px;border-radius:0 10px 10px 0}
+#cur_context_panel a{float:none;text-decoration:none;color:#fff}
+#cur_context_panel a:hover{text-decoration:underline}
+#tools_left .tool_button,#tools_left .tool_button_current{position:relative;z-index:11}
+.flyout_arrow_horiz{position:absolute;bottom:-1px;right:0;z-index:10}
+.dropdown{position:relative;float:left}
+.dropdown button{width:21px;height:22px;padding:0 3px 0 3px;border:0;background-color:#555;border-radius:0 2px 2px 0;margin-left:-1px;position:relative}
+.dropdown button:hover{background-color:#666}
+.dropdown button:after{content:'';position:absolute;border:solid transparent 4px;border-top-color:#999;top:9px;left:6px}
+.dropdown button.down{border-left:1px solid #808080;border-top:1px solid #808080;border-right:1px solid #fff;border-bottom:1px solid #fff;background-color:#b0b0b0}
+.dropdown ul{list-style:none;position:absolute;margin:0;padding:0;left:-80px;top:26px;z-index:4;display:none}
+.dropup ul{top:auto;bottom:26px;border-radius:3px;box-shadow:0 5px 10px #000}
+.dropup ul:after{content:'';display:block;position:absolute;bottom:-10px;right:50%;top:auto;width:0;height:0;border:solid transparent 5px;border-top-color:#fff}
+.dropdown li{display:block;width:120px;padding:5px 10px;color:#333;background:#fff;margin:0;line-height:16px}
+.dropdown li:first-child{border-radius:3px 3px 0 0}
+.dropdown li:last-child{border-radius:0 0 3px 3px}
+.dropdown li:hover{background-color:#ddd;color:#000}
+.dropdown li.special{padding:10px;background:white;border:0;box-shadow:0 3px 10px black;border-radius:3px!important}
+.dropdown li.special:after{content:'';display:block;position:absolute;top:-10px;right:50%;border:solid transparent 5px;border-bottom-color:#fff}
+.dropdown li.special.down:after{bottom:-10px;right:50%;top:auto;border:solid transparent 5px;border-top-color:#fff}
+.tool_button,.push_button,.tool_button_current,.push_button_pressed{height:27px;width:27px;border:solid #2f2f2c 8px;border-left-width:13px;margin:0;background-color:#ddd;cursor:pointer}
+#main_menu li#tool_open,#main_menu li#tool_import{position:relative;overflow:hidden}
+#tool_image{overflow:hidden}
+#tool_open input,#tool_import input,#tool_import_bitmap input{position:absolute;opacity:0;font-size:10em;top:-5px;right:-5px;margin:0;cursor:pointer}
+.disabled{opacity:.5;cursor:default}
+.width_label{padding-right:5px}
+#text{position:absolute;left:-9999px}
+#tool_bold span,#tool_italic span{position:absolute;width:100%;height:100%;top:0;left:0;background:#ccc;opacity:0}
+#url_notice{padding-top:4px;display:none}
+#color_picker{position:absolute;display:none;background:#fff;height:350px;border-radius:3px;z-index:5;box-shadow:0 5px 10px #000;width:530px}
+.tools_flyout{position:absolute;display:none;cursor:pointer;width:385px;z-index:10;left:47px!important;height:324px;background:#fff;border-radius:5px;box-shadow:0 5px 10px rgba(0,0,0,0.5)}
+.tools_flyout_v{position:absolute;display:none;cursor:pointer;width:30px}
+.tools_flyout .tool_button{float:left;background-color:#fff;height:24px;width:24px}
+#tools_bottom{position:absolute;left:50px;right:0;bottom:0;height:40px;overflow:visible;background:#2f2f2c}
+#tools_bottom_1{width:115px;float:left}
+#tools_bottom_2{position:relative;float:left;margin-top:5px}
+#tools_bottom input[type=text]{width:3.2em}
+#tools_top h4{color:#fff;font-weight:normal;margin:0;padding:10px 0 5px 0}
+#tools_top .dropdown .icon_label{border:1px solid transparent;height:auto}
+#tools_top.multiselected #align_tools{display:none}
+#tools_top.multiselected #multiselected_panel{display:block!important}
+#tools_top.multiselected #multiselected_panel .hidable{display:none}
+.draginput_cell{float:left;height:26px;height:26px;border:solid #3f3f3c 10px;outline:solid #2f2f2c 1px;background:#ddd;cursor:pointer;position:relative}
+.draginput_cell:hover{background:#fff}
+.draginput_cell:after{content:'';position:absolute;top:0;left:0;border:solid #3f3f3c 1px;height:26px;width:26px;z-index:0}
+.align_buttons .draginput_cell:nth-child(1){border-radius:3px 0 0 0}
+.align_buttons .draginput_cell:nth-child(3){border-radius:0 3px 0 0}
+.align_buttons .draginput_cell:nth-child(4){border-radius:0 0 0 3px}
+.align_buttons .draginput_cell:nth-child(6){border-radius:0 0 3px 0}
+.align_buttons .push_button{display:block;float:left}
+#option_lists ul{display:none;position:absolute;height:auto;z-index:3;margin:0;list-style:none;padding-left:0}
+#option_lists .optcols2{width:70px;margin-left:-15px}
+#option_lists .optcols3{width:192px;margin-left:-105px;margin-top:-25px;background:#fff;padding:5px;box-shadow:0 5px 10px #000;border-radius:3px}
+#option_lists .optcols3:after{content:'';display:block;position:absolute;top:-10px;right:70px;border:solid transparent 5px;border-bottom-color:#fff}
+#option_lists .tool_button,#option_lists .push_button,#option_lists .tool_button_current,#option_lists .push_button_pressed{border:0;background:transparent}
+#option_lists .tool_button:hover{background:#ddd}
+#option_lists ul li.current{background-color:#f4e284}
+#option_lists .optcols4{width:130px;margin-left:-44px}
+#option_lists ul[class^=optcols] li{float:left}
+ul li.current{background-color:#f4e284}
+#option_lists ul li{margin:0;border-radius:0;-moz-border-radius:0;-webkit-border-radius:0}
+#copyright{text-align:right;padding-right:.3em}
+#svg_source_editor{display:none}
+#svg_source_editor #svg_source_overlay{position:absolute;top:0;right:0;left:0;bottom:0;background-color:black;opacity:.6;z-index:5}
+#svg_source_editor #svg_source_container{position:absolute;top:30px;left:100px;right:100px;bottom:30px;background-color:#fff;border-radius:3px;opacity:1.0;text-align:center;z-index:6;padding:15px 0}
+#svg_source_editor form{position:absolute;display:block;top:15px;bottom:55px;left:15px;right:12px;padding:5px;font-size:12px}
+#svg_source_textarea{width:100%;height:100%;line-height:140%;font-family:'Lucida Sans','Lucida Grande','Lucida Sans Unicode',sans-serif;font-size:12px}
+#svg_source_editor #tool_source_back{position:absolute;bottom:45px;left:15px;right:15px}
+#svg_source_editor #tool_source_back #tool_source_save{display:block;position:absolute;right:0}
+#svg_source_editor #tool_source_back #tool_source_cancel{display:block;position:absolute;left:0}
+button.cancel,input.Cancel,input.cancel,input.jGraduate_Cancel,button.cancel{-webkit-appearance:none;background-color:#999;box-shadow:0 0 1px rgba(0,0,0,0.5);margin:0}
+#shape_buttons{overflow:auto;top:0;bottom:0;left:110px;right:0;position:absolute;vertical-align:top}
+#shape_cats{min-width:110px;display:block;position:absolute;left:0;top:0;height:300px;background:#eee;border-radius:3px 0 0 3px;z-index:2}
+#shape_cats>div{line-height:1em;padding:0 .5em;border-bottom:1px solid #ddd;background:#e8e8e8;color:#444;height:26px;line-height:26px}
+#shape_cats>div:first-child{border-radius:3px 0 0 0}
+#shape_cats>div:last-child{border-radius:0 0 0 3px}
+#shape_cats div:hover{background:#efefef;color:#000}
+#shape_cats div.current{font-weight:bold;background:#3f3f3c;color:#fff;position:relative}
+#shape_cats div.current:after{content:'';position:absolute;right:-26px;top:0;border:solid transparent 13px;border-left-color:#3f3f3c}
+.toolbar_button button .svg_icon{display:none}
+#dialog_box{display:none}
+#dialog_box_overlay{background:black;opacity:.5;height:100%;left:0;position:absolute;top:0;width:100%;z-index:6}
+#dialog_content{height:95px;margin:10px 10px 5px 10px;overflow:auto;text-align:left;font-size:13px}
+#dialog_buttons input:last-child{background:#999!important;position:absolute;left:10px;bottom:10px}
+#dialog_buttons input:first-child{position:absolute;right:10px;bottom:10px}
+#dialog_content.prompt{height:75px}
+#dialog_content p{margin:10px;line-height:1.3em}
+#dialog_container{position:absolute;left:50%;top:50%;width:300px;margin-left:-150px;height:150px;margin-top:-80px;position:fixed;z-index:50001;background:#fff}
+#dialog_container,#dialog_content{border-radius:3px}
+#dialog_buttons input[type=text]{width:90%;display:block;margin:0 0 5px 11px}
+#dialog_buttons input[type=button]{margin:0 1em}
+.invisible{visibility:none}
+.ui-slider{position:relative;text-align:left}
+.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}
+.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0}
+.ui-slider-horizontal{height:.8em}
+.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}
+.ui-slider-horizontal .ui-slider-range{top:0;height:100%}
+.ui-slider-horizontal .ui-slider-range-min{left:0}
+.ui-slider-horizontal .ui-slider-range-max{right:0}
+.ui-slider-vertical{width:.8em;height:100px}
+.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}
+.ui-slider-vertical .ui-slider-range{left:0;width:100%}
+.ui-slider-vertical .ui-slider-range-min{bottom:0}
+.ui-slider-vertical .ui-slider-range-max{top:0}
+.ui-slider{background:#3f3f3c;border-radius:10px}
+.ui-slider-handle{box-shadow:0 3px 3px rgba(0,0,0,0.3);border-radius:30px;background:#fff;background-image:-ms-linear-gradient(top,#ccc 0,#fff 100%);background-image:-moz-linear-gradient(top,#ccc 0,#fff 100%);background-image:-o-linear-gradient(top,#ccc 0,#fff 100%);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#ccc),color-stop(1,#fff));background-image:-webkit-linear-gradient(top,#ccc 0,#fff 100%);background-image:linear-gradient(top,#ccc 0,#fff 100%)}
+.ui-slider-handle:focus{outline:0}
+#shape_buttons{background:#fff;border-radius:0 3px 3px 0;padding:10px}
+.tools_flyout .tool_button,.tools_flyout .tool_flyout{background:#fff;width:40px;height:40px;margin:5px;border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;border-width:0}
+.contextMenu{position:absolute;z-index:99999;border:solid 1px rgba(0,0,0,.33);background:rgba(255,255,255,.95);padding:5px 0;margin:0;display:none;font:12px/15px 'Lucida Sans','Lucida Grande',Helvetica,Verdana,sans-serif;border-radius:5px;-moz-border-radius:5px;-moz-box-shadow:2px 5px 10px rgba(0,0,0,.3);-webkit-box-shadow:2px 5px 10px rgba(0,0,0,.3);box-shadow:2px 5px 10px rgba(0,0,0,.3)}
+.touch .contextMenu{border:solid 5px rgba(0,0,0,.7);padding:0;margin:0 0 0 20px;font:18px/24px sans-serif;border-radius:5px;-webkit-box-shadow:2px 5px 20px 3px #000;box-shadow:2px 5px 20px rgba(0,0,0,0.5)}
+.touch .contextMenu:after{content:'';width:0;height:0;border:solid transparent 10px;border-right-color:rgba(0,0,0,.7);position:absolute;top:50%;left:-25px;margin-top:-10px;z-index:1000}
+.contextMenu LI{list-style:none;padding:0;margin:0}
+.contextMenu .shortcut{width:115px;text-align:right;float:right}
+.touch .contextMenu .shortcut{display:none}
+.touch .shortcut{display:none}
+.contextMenu A{-moz-user-select:none;-webkit-user-select:none;color:#222;text-decoration:none;display:block;line-height:20px;height:20px;background-position:6px center;background-repeat:no-repeat;outline:0;padding:0 15px 1px 20px}
+.touch .contextMenu A{padding:0 15px;border-bottom:#;font-weight:bold;border-top:solid 1px #e3e3e3;height:40px;line-height:40px;min-width:200px}
+.contextMenu LI.hover A{background-color:#2e5dea;color:white;cursor:default}
+.contextMenu LI.disabled A{color:#999}
+.touch .contextMenu LI.disabled A{display:none}
+.contextMenu LI.hover.disabled A{background-color:transparent}
+.contextMenu LI.separator{border-top:solid 1px #e3e3e3;padding-top:5px;margin-top:5px}
+.touch .contextMenu LI.separator{border-top:0;margin:0;padding:0}
+#menu{display:none;position:absolute;top:0;left:0;right:0;height:30px;background:#000;z-index:10;color:#fff}
+#workarea.rect,#workarea.line,#workarea.ellipse,#workarea.path,#workarea.shapelib{cursor:crosshair}
+#workarea.text{cursor:text}
+#workarea.eyedropper{cursor:url(../images/eyedropper.png) 0 16,crosshair}
+#workarea.fhpath{cursor:url(../images/pencil_cursor.png) 0 20,crosshair}
+#workarea.rotate *{cursor:url(../images/rotate.png) 12 12,auto}
+#workarea.select text,#workarea.multiselect text{cursor:default}
+#workarea.n-resize *{cursor:n-resize!important}
+#workarea.e-resize *{cursor:e-resize!important}
+#workarea.w-resize *{cursor:w-resize!important}
+#workarea.s-resize *{cursor:s-resize!important}
+#workarea.ne-resize *{cursor:ne-resize!important}
+#workarea.se-resize *{cursor:se-resize!important}
+#workarea.nw-resize *{cursor:nw-resize!important}
+#workarea.sw-resize *{cursor:sw-resize!important}
+#workarea.copy{cursor:copy}
+#workarea.zoom{cursor:crosshair;cursor:-moz-zoom-in;cursor:-webkit-zoom-in}
+#workarea.zoom.out{cursor:crosshair;cursor:-moz-zoom-out;cursor:-webkit-zoom-out}
+#selectorRubberBand{shape-rendering:crispEdges}
+.clearfix:before,.clearfix:after{content:"";display:table}
+.clearfix:after{clear:both}
+.clearfix{*zoom:1}
+#group_title{display:none}
+#base_unit_container{display:none;position:absolute;z-index:20}
+.draginput{background:#3f3f3c;border-radius:3px;-webkit-font-smoothing:antialiased;width:70px;height:70px;display:block;position:relative;float:left;margin:0 5px 5px 0}
+.draginput .caret{border:solid transparent 5px;border-top-color:#999;position:absolute;width:0;height:0;right:5px;margin-top:-2px;top:50%}
+.draginput label{margin:28px 10px 0 5px;font-size:14px;color:white;font-weight:bold;font-family:sans-serif}
+.draginput label#resolution_label,.draginput label#seg_type_label{font:bold 12px/110% sans-serif;position:absolute;left:auto;right:10px;z-index:0;text-align:right}
+.draginput label#seg_type_label{margin-top:40px}
+.draginput label#seg_type_label .caret{top:66%}
+.draginput label#resolution_label .pull{position:relative;left:-15px}
+.draginput label#resolution_label span{right:-13px;left:auto;font-size:16px;top:2px;font-weight:bold;color:white}
+.touch .draginput.active:after{content:attr(data-value);display:block;position:absolute;background:#fff;font-size:16px;top:0;width:30px;left:-50px;padding:0 5px;color:#333;z-index:10;font-family:sans-serif;font-weight:bold;text-align:right;padding-right:10px;height:20px;line-height:20px;letter-spacing:-1px}
+.touch .draginput.active:before{content:'';height:0;width:0;position:absolute;top:5px;left:-5px;border:solid transparent 5px;border-left-color:#fff}
+.draginput input{border:0;background:transparent;font:24px/normal sans-serif;text-align:center;color:#4f80ff;padding:30px 0 16px;width:100%;height:24px;position:relative;z-index:2}
+.draginput.twocol{width:145px}
+#tool_font_family .caret{right:40px;top:55%}
+#tool_font_family select{width:110px}
+#tool_bold,#tool_italic{font:bold 20px/35px serif;text-align:center;position:absolute;padding:0;color:#ccc;background:transparent;border:0;width:35px;height:35px;margin:0;top:0;right:0}
+#tool_italic{border-top:solid #2f2f2c 2px;top:35px;font-weight:bold;font-style:italic;font-size:24px}
+#tool_bold:hover,#tool_italic:hover{color:#fff}
+#tool_bold.active,#tool_italic.active{color:#50a0ff}
+#preview_font{font-size:20px;color:#fff;height:70px;line-height:75px;padding:0 0 0 10px;white-space:nowrap;width:100px;overflow:hidden;border-right:solid #2f2f2c 2px;position:relative}
+#preview_font:after{content:'';position:absolute;right:0;top:3px;bottom:3px;width:15px;border-right:solid #3f3f3c 10px;background:transparent url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAxIDEiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxsaW5lYXJHcmFkaWVudCBpZD0iZzU4MCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIwJSIgeTE9IjAlIiB4Mj0iMTAwJSIgeTI9IjAlIj48c3RvcCBzdG9wLWNvbG9yPSIjM2YzZjNjIiBzdG9wLW9wYWNpdHk9IjAiIG9mZnNldD0iMCIvPjxzdG9wIHN0b3AtY29sb3I9IiMzZjNmM2MiIG9mZnNldD0iMC43Ii8+PC9saW5lYXJHcmFkaWVudD48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBmaWxsPSJ1cmwoI2c1ODApIiAvPjwvc3ZnPg==)}
+.draginput input,.draginput input:hover,.draginput input:active{cursor:url(../images/drag.png),move;cursor:-webkit-grab;cursor:-moz-grab}
+.draginput input[type="checkbox"],.draginput input[type="checkbox"]:hover,.draginput input[type="checkbox"]:active{cursor:pointer}
+.draginput.checkbox{cursor:pointer}
+.draginput.active input,.draginput.active input:hover,.draginput.active input:active{cursor:url(../images/dragging.png),move;cursor:-webkit-grabbing;cursor:-moz-grabbing}
+.draginput span{font:11px/130% sans-serif;color:#ccc;display:block;position:absolute;top:5px;left:5px;text-align:left}
+.draginput.error{background:#900}
+.draginput.error input{color:#fff}
+.draginput.stroke_tool{text-align:center}
+.draginput select{-webkit-appearance:none;opacity:0;display:block;position:absolute;height:100%;width:100%;margin:0;z-index:1;top:0;left:0}
+.draginput_cursor{position:absolute;top:50%;width:100%;border-top:solid rgba(50,100,200,0.25) 3px;margin-top:-2px;z-index:0}
+.draginput input[readonly=readonly]{-webkit-appearance:none;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
+.draginput input:focus{background:#50a0ff;color:#fff;outline:0;box-shadow:0 0 5px 2px #50a0ff}
+.draginput input:focus+span{z-index:10;color:#fff}
+.draginput .push_bottom{bottom:0;position:absolute}
+#zoom_label{height:20px;background:transparent;cursor:default!important;width:auto;padding:0 10px;margin:0}
+#zoom_panel{padding:9px 0;right:175px;position:absolute}
+#zoom_label img,#zoom_label svg{width:16px;height:16px}
+#logo svg{pointer-events:none}
+#zoomLabel{width:16px;height:16px;cursor:pointer;background:#ccc}
+#zoomLabel:after{content:'';position:absolute;border-left:solid #2f2f2c 1px;left:0;height:16px}
+#zoom_label input{color:#ccc;font-size:13px;height:auto;width:auto;padding:0;cursor:default;position:static}
+#zoom_label span{top:0;left:0}
+body.dragging *{cursor:url(../images/dragging.png),move;cursor:-webkit-grabbing;cursor:-moz-grabbing}
+body.drag *{cursor:url(../images/dragging.png),move;cursor:-webkit-grabbing;cursor:-moz-grabbing}
+input[readonly=readonly]:focus{box-shadow:none}
+#color_canvas_tools,#fill_bg,#stroke_bg{background:#fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMAQMAAABsu86kAAAAA3NCSVQICAjb4U/gAAAABlBMVEXu7u7///8o06qaAAAACXBIWXMAAAsSAAALEgHS3X78AAAAFXRFWHRDcmVhdGlvbiBUaW1lADcvMjIvMTL7FNdCAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M1cbXjNgAAABFJREFUCJljYP7AgIb+MKAhAM8/C5vWL6zSAAAAAElFTkSuQmCC) top left repeat}
+#color_canvas_tools{width:60px;height:40px;margin:23px 5px 5px 5px;position:relative;overflow:hidden}
+#color_canvas_tools{display:block}
+#tool_angle_indicator{width:50px;height:50px;border-radius:50px;background:rgba(255,255,255,0.05);position:absolute;bottom:2px;left:10px}
+#tool_angle_indicator_cursor{width:4px;height:25px;border-top:solid #50a0ff 3px;position:absolute;margin:0 0 0 23px;-webkit-transform-origin:50% 0;-moz-transform-origin:50% 0;-o-transform-origin:50% 0;-ms-transform-origin:50% 0;transform-origin:50% 0}
+#stroke_style_label{font-size:30px;margin-top:33px;letter-spacing:-1px}
+.stroke_tool .caret{top:60%}
+#tool_align_relative{position:absolute;top:-5px;left:0;right:20px;display:block}
+#tool_align_relative select{width:100%;display:block}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/svgedit.compiled.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/svgedit.compiled.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/svgedit.compiled.js	(revision 29468)
@@ -0,0 +1,691 @@
+function touchHandler(a){var s=a.changedTouches,g=s[0],b="";switch(a.type){case "touchstart":b="mousedown";break;case "touchmove":b="mousemove";break;case "touchend":b="mouseup";break;default:return}var p=document.createEvent("MouseEvent");p.initMouseEvent(b,true,true,window,1,g.screenX,g.screenY,g.clientX,g.clientY,false,false,false,false,0,null);if(s.length<2){g.target.dispatchEvent(p);a.preventDefault()}};(function(a){function s(g){if(typeof g.data==="string"){var b=g.handler,p=g.data.toLowerCase().split(" ");g.handler=function(w){if(!(this!==w.target&&(/textarea|select/i.test(w.target.nodeName)||w.target.type==="text"))){var c=w.type!=="keypress"&&a.hotkeys.specialKeys[w.which],f=String.fromCharCode(w.which).toLowerCase(),d="",n={};if(w.altKey&&c!=="alt")d+="alt+";if(w.ctrlKey&&c!=="ctrl")d+="ctrl+";if(w.metaKey&&!w.ctrlKey&&c!=="meta")d+="meta+";if(w.shiftKey&&c!=="shift")d+="shift+";if(c)n[d+c]=
+true;else{n[d+f]=true;n[d+a.hotkeys.shiftNums[f]]=true;if(d==="shift+")n[a.hotkeys.shiftNums[f]]=true}c=0;for(f=p.length;c<f;c++)if(n[p[c]])return b.apply(this,arguments)}}}}a.hotkeys={version:"0.8",specialKeys:{8:"backspace",9:"tab",13:"return",16:"shift",17:"ctrl",18:"alt",19:"pause",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"insert",46:"del",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9",
+106:"*",107:"+",109:"-",110:".",111:"/",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12",144:"numlock",145:"scroll",191:"/",224:"meta",219:"[",221:"]"},shiftNums:{"`":"~","1":"!","2":"@","3":"#","4":"$","5":"%","6":"^","7":"&","8":"*","9":"(","0":")","-":"_","=":"+",";":": ","'":'"',",":"<",".":">","/":"?","\\":"|"}};a.each(["keydown","keyup","keypress"],function(){a.event.special[this]={add:s}})})(jQuery);(function(a,s){function g(ca){return typeof ca==="string"}function b(ca){var U=d.call(arguments,1);return function(){return ca.apply(this,U.concat(d.call(arguments)))}}function p(ca,U,Z,na,pa){var ma;if(na!==f){U=Z.match(ca?/^([^#]*)\#?(.*)$/:/^([^#?]*)\??([^#]*)(#?.*)/);Z=U[3]||"";if(pa===2&&g(na))na=na.replace(ca?ea:V,"");else{ma=q(U[2]);na=g(na)?q[ca?ga:N](na):na;na=pa===2?na:pa===1?a.extend({},na,ma):a.extend({},ma,na);na=v(na);if(ca)na=na.replace(Ba,n)}ca=U[1]+(ca?"#":na||!U[1]?"?":"")+na+Z}else ca=
+U(Z!==f?Z:s[oa][Y]);return ca}function w(ca,U,Z){if(U===f||typeof U==="boolean"){Z=U;U=v[ca?ga:N]()}else U=g(U)?U.replace(ca?ea:V,""):U;return q(U,Z)}function c(ca,U,Z,na){if(!g(Z)&&typeof Z!=="object"){na=Z;Z=U;U=f}return this.each(function(){var pa=a(this),ma=U||S()[(this.nodeName||"").toLowerCase()]||"",la=ma&&pa.attr(ma)||"";pa.attr(ma,v[ca](la,Z,na))})}var f,d=Array.prototype.slice,n=decodeURIComponent,v=a.param,B,q,L,Q=a.bbq=a.bbq||{},K,I,S,R=a.event.special,N="querystring",ga="fragment",oa=
+"location",Y="href",V=/^.*\?|#.*$/g,ea=/^.*\#/,Ba,ja={};v[N]=b(p,0,function(ca){return ca.replace(/(?:^[^?#]*\?([^#]*).*$)?.*/,"$1")});v[ga]=B=b(p,1,function(ca){return ca.replace(/^[^#]*#?(.*)$/,"$1")});B.noEscape=function(ca){ca=ca||"";ca=a.map(ca.split(""),encodeURIComponent);Ba=RegExp(ca.join("|"),"g")};B.noEscape(",/");a.deparam=q=function(ca,U){var Z={},na={"true":true,"false":false,"null":null};a.each(ca.replace(/\+/g," ").split("&"),function(pa,ma){var la=ma.split("="),ya=n(la[0]),za=Z,Ja=
+0,Ia=ya.split("]["),Ha=Ia.length-1;if(/\[/.test(Ia[0])&&/\]$/.test(Ia[Ha])){Ia[Ha]=Ia[Ha].replace(/\]$/,"");Ia=Ia.shift().split("[").concat(Ia);Ha=Ia.length-1}else Ha=0;if(la.length===2){la=n(la[1]);if(U)la=la&&!isNaN(la)?+la:la==="undefined"?f:na[la]!==f?na[la]:la;if(Ha)for(;Ja<=Ha;Ja++){ya=Ia[Ja]===""?za.length:Ia[Ja];za=za[ya]=Ja<Ha?za[ya]||(Ia[Ja+1]&&isNaN(Ia[Ja+1])?{}:[]):la}else if(a.isArray(Z[ya]))Z[ya].push(la);else Z[ya]=Z[ya]!==f?[Z[ya],la]:la}else if(ya)Z[ya]=U?f:""});return Z};q[N]=b(w,
+0);q[ga]=L=b(w,1);a.elemUrlAttr||(a.elemUrlAttr=function(ca){return a.extend(ja,ca)})({a:Y,base:Y,iframe:"src",img:"src",input:"src",form:"action",link:Y,script:"src"});S=a.elemUrlAttr;a.fn[N]=b(c,N);a.fn[ga]=b(c,ga);Q.pushState=K=function(ca,U){if(g(ca)&&/^#/.test(ca)&&U===f)U=2;var Z=ca!==f;Z=B(s[oa][Y],Z?ca:{},Z?U:2);s[oa][Y]=Z+(/#/.test(Z)?"":"#")};Q.getState=I=function(ca,U){return ca===f||typeof ca==="boolean"?L(ca):L(U)[ca]};Q.removeState=function(ca){var U={};if(ca!==f){U=I();a.each(a.isArray(ca)?
+ca:arguments,function(Z,na){delete U[na]})}K(U,2)};R.hashchange=a.extend(R.hashchange,{add:function(ca){function U(na){var pa=na[ga]=B();na.getState=function(ma,la){return ma===f||typeof ma==="boolean"?q(pa,ma):q(pa,la)[ma]};Z.apply(this,arguments)}var Z;if(a.isFunction(ca)){Z=ca;return U}else{Z=ca.handler;ca.handler=U}}})})(jQuery,this);
+(function(a,s,g){function b(B){B=B||s[c][f];return B.replace(/^[^#]*#?(.*)$/,"$1")}var p,w=a.event.special,c="location",f="href",d=document.documentMode,n=a.browser.msie&&(d===g||d<8),v="onhashchange"in s&&!n;a.hashchangeDelay=100;w.hashchange=a.extend(w.hashchange,{setup:function(){if(v)return false;a(p.start)},teardown:function(){if(v)return false;a(p.stop)}});p=function(){function B(){K=I=function(S){return S};if(n){Q=a('<iframe src="javascript:0"/>').hide().insertAfter("body")[0].contentWindow;
+I=function(){return b(Q.document[c][f])};K=function(S,R){if(S!==R){var N=Q.document;N.open().close();N[c].hash="#"+S}};K(b())}}var q={},L,Q,K,I;q.start=function(){if(!L){var S=b();K||B();(function R(){var N=b(),ga=I(S);if(N!==S){K(S=N,ga);a(s).trigger("hashchange")}else if(ga!==S)s[c][f]=s[c][f].replace(/#.*/,"")+"#"+ga;L=setTimeout(R,a.hashchangeDelay)})()}};q.stop=function(){if(!Q){L&&clearTimeout(L);L=0}};return q}()})(jQuery,this);(function(a){var s={},g;a.svgIcons=function(b,p){function w(ca,U){if(ca!=="ajax"){if(S)return;var Z=(Q=Y[0].contentDocument)&&Q.getElementById("svg_eof");if(!Z&&!(U&&Z)){R++;if(R<50)setTimeout(w,20);else{f();S=true}return}S=true}L=a(Q.firstChild).children();if(p.no_img)setTimeout(function(){I||c()},500);else{Z=oa+"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNzUiIGhlaWdodD0iMjc1Ij48L3N2Zz4%3D";K=a(new Image).attr({src:Z,width:0,height:0}).appendTo("body").load(function(){c(true)}).error(function(){c()})}}
+function c(ca,U){if(!I){if(p.no_img)ca=false;if(ca){var Z=a(document.createElement("div"));Z.hide().appendTo("body")}if(U){var na=p.fallback_path?p.fallback_path:"";a.each(U,function(Ha,Ma){a("#"+Ha);var Da=a(new Image).attr({"class":"svg_icon",src:na+Ma,width:B,height:q,alt:"icon"});ja(Da,Ha)})}else for(var pa=L.length,ma=0;ma<pa;ma++){var la=L[ma],ya=la.id;if(ya==="svg_eof")break;a("#"+ya);la=la.getElementsByTagNameNS(n,"svg")[0];var za=document.createElementNS(n,"svg");za.setAttributeNS(n,"viewBox",
+[0,0,B,q].join(" "));var Ja=la.getAttribute("width"),Ia=la.getAttribute("height");la.removeAttribute("width");la.removeAttribute("height");la.getAttribute("viewBox")||la.setAttribute("viewBox",[0,0,Ja,Ia].join(" "));za.setAttribute("xmlns",n);za.setAttribute("width",B);za.setAttribute("height",q);za.setAttribute("xmlns:xlink",v);za.setAttribute("class","svg_icon");ga||(la=la.cloneNode(true));za.appendChild(la);if(ca){ga||za.cloneNode(true);Z.empty().append(za);la=oa+d(Z.html());la=a(new Image).attr({"class":"svg_icon",
+src:la})}else la=g(a(za),ma);ja(la,ya)}p.placement&&a.each(p.placement,function(Ha,Ma){s[Ma]&&a(Ha).each(function(Da){var wa=s[Ma].clone();if(Da>0&&!ca)wa=g(wa,Da,true);Ba(a(this),wa,Ma)})});if(!U){ca&&Z.remove();Y&&Y.remove();K&&K.remove()}p.resize&&a.resizeSvgIcons(p.resize);I=true;p.callback&&p.callback(s)}}function f(){if(b.indexOf(".svgz")!=-1){var ca=b.replace(".svgz",".svg");window.console&&console.log(".svgz failed, trying with .svg");a.svgIcons(ca,p)}else p.fallback&&c(false,p.fallback)}
+function d(ca){if(window.btoa)return window.btoa(ca);var U=Array(Math.floor((ca.length+2)/3)*4),Z,na,pa,ma,la,ya,za=0,Ja=0;do{Z=ca.charCodeAt(za++);na=ca.charCodeAt(za++);pa=ca.charCodeAt(za++);ma=Z>>2;Z=(Z&3)<<4|na>>4;la=(na&15)<<2|pa>>6;ya=pa&63;if(isNaN(na))la=ya=64;else if(isNaN(pa))ya=64;U[Ja++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(ma);U[Ja++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(Z);U[Ja++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(la);
+U[Ja++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(ya)}while(za<ca.length);return U.join("")}var n="http://www.w3.org/2000/svg",v="http://www.w3.org/1999/xlink",B=p.w?p.w:24,q=p.h?p.h:24,L,Q,K,I=false,S=false,R=0,N=navigator.userAgent,ga=!!window.opera;N.indexOf("Safari/")>-1&&N.indexOf("Chrome/");var oa="data:image/svg+xml;charset=utf-8;base64,";if(p.svgz){var Y=a('<object data="'+b+'" type=image/svg+xml>').appendTo("body").hide();try{Q=Y[0].contentDocument;Y.load(w);
+w(0,true)}catch(V){f()}}else{var ea=new DOMParser;a.ajax({url:b,dataType:"string",success:function(ca){if(ca){Q=ea.parseFromString(ca,"text/xml");a(function(){w("ajax")})}else a(f)},error:function(ca){if(window.opera)a(function(){f()});else if(ca.responseText){Q=ea.parseFromString(ca.responseText,"text/xml");Q.childNodes.length||a(f);a(function(){w("ajax")})}else a(f)}})}var Ba=function(ca,U,Z,na){ga&&U.css("visibility","hidden");if(p.replace){na&&U.attr("id",Z);(Z=ca.attr("class"))&&U.attr("class",
+"svg_icon "+Z);ca.replaceWith(U)}else ca.append(U);ga&&setTimeout(function(){U.removeAttr("style")},1)},ja=function(ca,U){if(p.id_match===undefined||p.id_match!==false)Ba(holder,ca,U,true);s[U]=ca};g=function(ca,U){var Z=ca.find("defs");if(!Z.length)return ca;Z=ga?Z.find("*").filter(function(){return!!this.id}):Z.find("[id]");var na=ca[0].getElementsByTagName("*"),pa=na.length;Z.each(function(ma){var la=this.id;a(Q).find("#"+la);this.id=ma="x"+la+U+ma;la="url(#"+la+")";var ya="url(#"+ma+")";for(ma=
+0;ma<pa;ma++){var za=na[ma];za.getAttribute("fill")===la&&za.setAttribute("fill",ya);za.getAttribute("stroke")===la&&za.setAttribute("stroke",ya);za.getAttribute("filter")===la&&za.setAttribute("filter",ya)}});return ca}};a.getSvgIcon=function(b,p){var w=s[b];if(p&&w)w=g(w,0,true).clone(true);return w};a.resizeSvgIcons=function(b){var p=!a(".svg_icon:first").length;a.each(b,function(w,c){var f=a.isArray(c),d=f?c[0]:c,n=f?c[1]:c;if(p)w=w.replace(/\.svg_icon/g,"svg");a(w).each(function(){this.setAttribute("width",
+d);this.setAttribute("height",n);if(window.opera&&window.widget){this.parentNode.style.width=d+"px";this.parentNode.style.height=n+"px"}})})}})(jQuery);(function(){function a(b,p,w){b=document.createElementNS(s.svg,b);if(g)for(var c in p)b.setAttribute(c,p[c]);else for(c in p){var f=p[c],d=b[c];if(d&&d.constructor==="SVGLength")d.baseVal.value=f;else b.setAttribute(c,f)}w&&w.appendChild(b);return b}var s={svg:"http://www.w3.org/2000/svg",xlink:"http://www.w3.org/1999/xlink"};if(!window.console)window.console=new function(){this.log=function(){};this.dir=function(){}};$.jGraduate={Paint:function(b){b=b||{};this.alpha=isNaN(b.alpha)?100:b.alpha;if(b.copy){this.type=
+b.copy.type;this.alpha=b.copy.alpha;this.radialGradient=this.linearGradient=this.solidColor=null;switch(this.type){case "solidColor":this.solidColor=b.copy.solidColor;break;case "linearGradient":this.linearGradient=b.copy.linearGradient.cloneNode(true);break;case "radialGradient":this.radialGradient=b.copy.radialGradient.cloneNode(true)}}else if(b.linearGradient){this.type="linearGradient";this.radialGradient=this.solidColor=null;this.linearGradient=b.linearGradient.cloneNode(true)}else if(b.radialGradient){this.type=
+"radialGradient";this.linearGradient=this.solidColor=null;this.radialGradient=b.radialGradient.cloneNode(true)}else if(b.solidColor){this.type="solidColor";this.solidColor=b.solidColor}else{this.type="none";this.radialGradient=this.linearGradient=this.solidColor=null}}};jQuery.fn.jGraduateDefaults={paint:new $.jGraduate.Paint,window:{pickerTitle:"Drag markers to pick a paint"},images:{clientPath:"images/"},newstop:"inverse"};var g=navigator.userAgent.indexOf("Gecko/")>=0;jQuery.fn.jGraduate=function(b){var p=
+arguments;return this.each(function(){function w(ia,aa,ka,M,P){var da=P||a("stop",{"stop-color":aa,"stop-opacity":ka,offset:ia},ea);if(P){aa=P.getAttribute("stop-color");ka=P.getAttribute("stop-opacity");ia=P.getAttribute("offset")}else ea.appendChild(da);if(ka===null)ka=1;P=a("path",{d:"M-6.2,0.9c3.6-4,6.7-4.3,6.7-12.4c-0.2,7.9,3.1,8.8,6.5,12.4c3.5,3.8,2.9,9.6,0,12.3c-3.1,2.8-10.4,2.7-13.2,0C-9.6,9.9-9.4,4.4-6.2,0.9z",fill:"url(#jGraduate_trans)",transform:"translate("+(10+ia*ga)+", 26)"},kb);var Ea=
+a("path",{d:"M-6.2,0.9c3.6-4,6.7-4.3,6.7-12.4c-0.2,7.9,3.1,8.8,6.5,12.4c3.5,3.8,2.9,9.6,0,12.3c-3.1,2.8-10.4,2.7-13.2,0C-9.6,9.9-9.4,4.4-6.2,0.9z",fill:aa,"fill-opacity":ka,transform:"translate("+(10+ia*ga)+", 26)",stroke:"#000","stroke-width":1.5},kb);$(Ea).mousedown(function(Oa){c(this);Va=cb;S.mousemove(n).mouseup(f);ta=vb.offset();Oa.preventDefault();return false}).data("stop",da).data("bg",P).dblclick(function(){$("div.jGraduate_LightBox").show();for(var Oa=this,Wa=+da.getAttribute("stop-opacity")||
+1,Za=da.getAttribute("stop-color")||1,nb=(parseFloat(Wa)*255).toString(16);nb.length<2;)nb="0"+nb;aa=Za.substr(1)+nb;$("#"+q+"_jGraduate_stopPicker").css({left:100,bottom:15}).jPicker({window:{title:"Pick the start color and opacity for the gradient"},images:{clientPath:B.images.clientPath},color:{active:aa,alphaSupport:true}},function(Ra){Za=Ra.val("hex")?"#"+Ra.val("hex"):"none";Wa=Ra.val("a")!==null?Ra.val("a")/256:1;Oa.setAttribute("fill",Za);Oa.setAttribute("fill-opacity",Wa);da.setAttribute("stop-color",
+Za);da.setAttribute("stop-opacity",Wa);$("div.jGraduate_LightBox").hide();$("#"+q+"_jGraduate_stopPicker").hide()},null,function(){$("div.jGraduate_LightBox").hide();$("#"+q+"_jGraduate_stopPicker").hide()})});$(ea).find("stop").each(function(){var Oa=$(this);if(+this.getAttribute("offset")>ia){if(!aa){var Wa=this.getAttribute("stop-color"),Za=this.getAttribute("stop-opacity");da.setAttribute("stop-color",Wa);Ea.setAttribute("fill",Wa);da.setAttribute("stop-opacity",Za===null?1:Za);Ea.setAttribute("fill-opacity",
+Za===null?1:Za)}Oa.before(da);return false}});M&&c(Ea);return da}function c(ia){cb&&cb.setAttribute("stroke","#000");ia.setAttribute("stroke","blue");cb=ia;cb.parentNode.appendChild(cb)}function f(){S.unbind("mousemove",n);if(Fa.getAttribute("display")!=="none"){Fa.setAttribute("display","none");var ia=$(cb),aa=ia.data("stop");ia=ia.data("bg");$([cb,aa,ia]).remove()}Va=null}function d(){var ia=Sa?"rotate("+Sa+","+Ga+","+db+") ":"";$a===1&&Ka===1?ea.removeAttribute("gradientTransform"):ea.setAttribute("gradientTransform",
+ia+"translate("+-Ga*($a-1)+","+-db*(Ka-1)+") scale("+$a+","+Ka+")")}function n(ia){var aa=ia.pageX-ta.left;ia=ia.pageY-ta.top;aa=aa<10?10:aa>ga+10?ga+10:aa;var ka="translate("+aa+", 26)";if(ia<-60||ia>130){Fa.setAttribute("display","block");Fa.setAttribute("transform",ka)}else Fa.setAttribute("display","none");Va.setAttribute("transform",ka);$.data(Va,"bg").setAttribute("transform",ka);$.data(Va,"stop").setAttribute("offset",(aa-10)/ga);var M=0;$(ea).find("stop").each(function(){var P=this.getAttribute("offset"),
+da=$(this);if(P<M){da.prev().before(da);va=$(ea).find("stop")}M=P})}var v=$(this),B=$.extend(true,{},jQuery.fn.jGraduateDefaults,b),q=v.attr("id"),L="#"+v.attr("id")+" ";if(L){var Q=function(){switch(v.paint.type){case "radialGradient":v.paint.linearGradient=null;break;case "linearGradient":v.paint.radialGradient=null;break;case "solidColor":v.paint.radialGradient=v.paint.linearGradient=null}$.isFunction(v.okCallback)&&v.okCallback(v.paint);v.hide()},K=function(){$.isFunction(v.cancelCallback)&&v.cancelCallback();
+v.hide()};$.extend(true,v,{paint:new $.jGraduate.Paint({copy:B.paint}),okCallback:$.isFunction(p[1])&&p[1]||null,cancelCallback:$.isFunction(p[2])&&p[2]||null});v.position();var I=null,S=$(window);if(v.paint.type=="none")v.paint=$.jGraduate.Paint({solidColor:"ffffff"});v.addClass("jGraduate_Picker");v.html('<ul class="jGraduate_tabs"><li class="jGraduate_tab_color jGraduate_tab_current" data-type="col">Solid Color</li><li class="jGraduate_tab_lingrad" data-type="lg">Linear Gradient</li><li class="jGraduate_tab_radgrad" data-type="rg">Radial Gradient</li></ul><div class="jGraduate_colPick"></div><div class="jGraduate_gradPick"></div><div class="jGraduate_LightBox"></div><div id="'+
+q+'_jGraduate_stopPicker" class="jGraduate_stopPicker"></div>');var R=$(L+"> .jGraduate_colPick"),N=$(L+"> .jGraduate_gradPick");N.html('<div id="'+q+'_jGraduate_Swatch" class="jGraduate_Swatch"><h2 class="jGraduate_Title">'+B.window.pickerTitle+'</h2><div id="'+q+'_jGraduate_GradContainer" class="jGraduate_GradContainer"></div><div id="'+q+'_jGraduate_StopSlider" class="jGraduate_StopSlider"></div></div><div class="jGraduate_Form jGraduate_Points jGraduate_lg_field"><div class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">Begin Point</label><div class="jGraduate_Form_Section"><label>x:</label><input type="text" id="'+
+q+'_jGraduate_x1" size="3" title="Enter starting x value between 0.0 and 1.0"/><label> y:</label><input type="text" id="'+q+'_jGraduate_y1" size="3" title="Enter starting y value between 0.0 and 1.0"/></div></div><div class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">End Point</label><div class="jGraduate_Form_Section"><label>x:</label><input type="text" id="'+q+'_jGraduate_x2" size="3" title="Enter ending x value between 0.0 and 1.0"/><label> y:</label><input type="text" id="'+
+q+'_jGraduate_y2" size="3" title="Enter ending y value between 0.0 and 1.0"/></div></div></div><div class="jGraduate_Form jGraduate_Points jGraduate_rg_field"><div class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">Center Point</label><div class="jGraduate_Form_Section"><label>x:</label><input type="text" id="'+q+'_jGraduate_cx" size="3" title="Enter x value between 0.0 and 1.0"/><label> y:</label><input type="text" id="'+q+'_jGraduate_cy" size="3" title="Enter y value between 0.0 and 1.0"/></div></div><div class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">Focal Point</label><div class="jGraduate_Form_Section"><label>Match center: <input type="checkbox" checked="checked" id="'+
+q+'_jGraduate_match_ctr"/></label><br/><label>x:</label><input type="text" id="'+q+'_jGraduate_fx" size="3" title="Enter x value between 0.0 and 1.0"/><label> y:</label><input type="text" id="'+q+'_jGraduate_fy" size="3" title="Enter y value between 0.0 and 1.0"/></div></div></div><div class="jGraduate_StopSection jGraduate_SpreadMethod"><label class="jGraduate_Form_Heading">Spread method</label><div class="jGraduate_Form_Section"><select class="jGraduate_spreadMethod"><option value=pad selected>Pad</option><option value=reflect>Reflect</option><option value=repeat>Repeat</option></select></div></div><div class="jGraduate_Form"><div class="jGraduate_Slider jGraduate_RadiusField jGraduate_rg_field"><label class="prelabel">Radius:</label><div id="'+
+q+'_jGraduate_Radius" class="jGraduate_SliderBar jGraduate_Radius" title="Click to set radius"><img id="'+q+'_jGraduate_RadiusArrows" class="jGraduate_RadiusArrows" src="'+B.images.clientPath+'rangearrows2.gif"></div><label><input type="text" id="'+q+'_jGraduate_RadiusInput" size="3" value="100"/>%</label></div><div class="jGraduate_Slider jGraduate_EllipField jGraduate_rg_field"><label class="prelabel">Ellip:</label><div id="'+q+'_jGraduate_Ellip" class="jGraduate_SliderBar jGraduate_Ellip" title="Click to set Ellip"><img id="'+
+q+'_jGraduate_EllipArrows" class="jGraduate_EllipArrows" src="'+B.images.clientPath+'rangearrows2.gif"></div><label><input type="text" id="'+q+'_jGraduate_EllipInput" size="3" value="0"/>%</label></div><div class="jGraduate_Slider jGraduate_AngleField jGraduate_rg_field"><label class="prelabel">Angle:</label><div id="'+q+'_jGraduate_Angle" class="jGraduate_SliderBar jGraduate_Angle" title="Click to set Angle"><img id="'+q+'_jGraduate_AngleArrows" class="jGraduate_AngleArrows" src="'+B.images.clientPath+
+'rangearrows2.gif"></div><label><input type="text" id="'+q+'_jGraduate_AngleInput" size="3" value="0"/>\u00ba&nbsp;</label></div><div class="jGraduate_Slider jGraduate_OpacField"><label class="prelabel">Opac:</label><div id="'+q+'_jGraduate_Opac" class="jGraduate_SliderBar jGraduate_Opac" title="Click to set Opac"><img id="'+q+'_jGraduate_OpacArrows" class="jGraduate_OpacArrows" src="'+B.images.clientPath+'rangearrows2.gif"></div><label><input type="text" id="'+q+'_jGraduate_OpacInput" size="3" value="100"/>%</label></div></div><div class="jGraduate_OkCancel"><input type="button" id="'+
+q+'_jGraduate_Ok" class="jGraduate_Ok" value="OK"/><input type="button" id="'+q+'_jGraduate_Cancel" class="jGraduate_Cancel" value="Cancel"/></div>');var ga=256,oa=ga-0,Y=ga-0,V,ea,Ba,ja={};$(".jGraduate_SliderBar").width(145);var ca=$("#"+q+"_jGraduate_GradContainer")[0],U=a("svg",{id:q+"_jgraduate_svg",width:ga,height:ga,xmlns:s.svg},ca);V=V||v.paint.type;var Z=ea=v.paint[V],na=v.paint.alpha,pa=V==="solidColor";switch(V){case "solidColor":case "linearGradient":if(!pa){ea.id=q+"_lg_jgraduate_grad";
+Z=ea=U.appendChild(ea)}a("radialGradient",{id:q+"_rg_jgraduate_grad"},U);if(V==="linearGradient")break;case "radialGradient":if(!pa){ea.id=q+"_rg_jgraduate_grad";Z=ea=U.appendChild(ea)}a("linearGradient",{id:q+"_lg_jgraduate_grad"},U)}if(pa){Z=ea=$("#"+q+"_lg_jgraduate_grad")[0];I=v.paint[V];w(0,"#"+I,1);var ma=typeof B.newstop;if(ma==="string")switch(B.newstop){case "same":w(1,"#"+I,1);break;case "inverse":ma="";for(var la=0;la<6;la+=2){I.substr(la,2);var ya=(255-parseInt(I.substr(la,2),16)).toString(16);
+if(ya.length<2)ya=0+ya;ma+=ya}w(1,"#"+ma,1);break;case "white":w(1,"#ffffff",1);break;case "black":w(1,"#000000",1)}else if(ma==="object")w(1,B.newstop.color||"#"+I,"opac"in B.newstop?B.newstop.opac:1)}I=parseFloat(Z.getAttribute("x1")||0);ma=parseFloat(Z.getAttribute("y1")||0);la=parseFloat(Z.getAttribute("x2")||1);ya=parseFloat(Z.getAttribute("y2")||0);var za=parseFloat(Z.getAttribute("cx")||0.5),Ja=parseFloat(Z.getAttribute("cy")||0.5),Ia=parseFloat(Z.getAttribute("fx")||za),Ha=parseFloat(Z.getAttribute("fy")||
+Ja);Ba=a("rect",{id:q+"_jgraduate_rect",x:0,y:0,width:oa,height:Y,fill:"url(#"+q+"_jgraduate_grad)","fill-opacity":na/100},U);var Ma=$("<div/>").attr({"class":"grad_coord jGraduate_lg_field",title:"Begin Stop"}).text(1).css({top:ma*ga,left:I*ga}).data("coord","start").appendTo(ca),Da=Ma.clone().text(2).css({top:ya*ga,left:la*ga}).attr("title","End stop").data("coord","end").appendTo(ca),wa=$("<div/>").attr({"class":"grad_coord jGraduate_rg_field",title:"Center stop"}).text("C").css({top:Ja*ga,left:za*
+ga}).data("coord","center").appendTo(ca),ra=wa.clone().text("F").css({top:Ha*ga,left:Ia*ga,display:"none"}).attr("title","Focus point").data("coord","focus").appendTo(ca);ra[0].id=q+"_jGraduate_focusCoord";$(L+" .grad_coord");$.each(["x1","y1","x2","y2","cx","cy","fx","fy"],function(ia,aa){var ka=ea.getAttribute(aa),M=isNaN(aa[1]);ka||(ka=M?"0.5":aa==="x2"?"1.0":"0.0");ja[aa]=$("#"+q+"_jGraduate_"+aa).val(ka).change(function(){if(isNaN(parseFloat(this.value))||this.value<0)this.value=0;else if(this.value>
+1)this.value=1;if(!(aa[0]==="f"&&!eb))if(M&&V==="radialGradient"||!M&&V==="linearGradient")ea.setAttribute(aa,this.value);var P=M?aa[0]==="c"?wa:ra:aa[1]==="1"?Ma:Da,da=aa.indexOf("x")>=0?"left":"top";P.css(da,this.value*ga)}).change()});var va,kb,vb=$("#"+q+"_jGraduate_StopSlider"),cb,Ta,Va,Fa=a("path",{d:"m9.75,-6l-19.5,19.5m0,-19.5l19.5,19.5",fill:"none",stroke:"#D00","stroke-width":5,display:"none"},Ta),ta,$a=1,Ka=1,Sa=0,Ga=za,db=Ja;Ta=a("svg",{width:"100%",height:45},vb[0]);ca=a("pattern",{width:16,
+height:16,patternUnits:"userSpaceOnUse",id:"jGraduate_trans"},Ta);a("image",{width:16,height:16},ca).setAttributeNS(s.xlink,"xlink:href",B.images.clientPath+"map-opacity.png");$(Ta).on("click touchstart",function(ia){ta=vb.offset();if(ia.target.tagName!=="path"){var aa=ia.pageX-ta.left-8;aa=aa<10?10:aa>ga+10?ga+10:aa;w(aa/ga,0,0,true);ia.stopPropagation()}});$(Ta).mouseover(function(){Ta.appendChild(Fa)});kb=a("g",{},Ta);a("line",{x1:10,y1:15,x2:ga+10,y2:15,"stroke-width":2,stroke:"#000"},Ta);var lb=
+N.find(".jGraduate_spreadMethod").change(function(){ea.setAttribute("spreadMethod",$(this).val())}),Ua=null,Xa=function(ia){var aa=ia.pageX-hb.left,ka=ia.pageY-hb.top;aa=aa<0?0:aa>ga?ga:aa;ka=ka<0?0:ka>ga?ga:ka;Ua.css("left",aa).css("top",ka);aa=aa/oa;ka=ka/Y;var M=Ua.data("coord"),P=ea;switch(M){case "start":ja.x1.val(aa);ja.y1.val(ka);P.setAttribute("x1",aa);P.setAttribute("y1",ka);break;case "end":ja.x2.val(aa);ja.y2.val(ka);P.setAttribute("x2",aa);P.setAttribute("y2",ka);break;case "center":ja.cx.val(aa);
+ja.cy.val(ka);P.setAttribute("cx",aa);P.setAttribute("cy",ka);Ga=aa;db=ka;d();break;case "focus":ja.fx.val(aa);ja.fy.val(ka);P.setAttribute("fx",aa);P.setAttribute("fy",ka);d()}ia.preventDefault()},wb=function(){Ua=null;S.unbind("mousemove",Xa).unbind("mouseup",wb)};va=ea.getElementsByTagNameNS(s.svg,"stop");if(sa<2){for(;sa<2;){ea.appendChild(document.createElementNS(s.svg,"stop"));++sa}va=ea.getElementsByTagNameNS(s.svg,"stop")}var sa=va.length;for(la=0;la<sa;la++)w(0,0,0,0,va[la]);lb.val(ea.getAttribute("spreadMethod")||
+"pad");var hb,eb=false;Ba.setAttribute("fill-opacity",na/100);$("#"+q+" div.grad_coord").mousedown(function(ia){ia.preventDefault();Ua=$(this);Ua.offset();hb=Ua.parent().offset();S.mousemove(Xa).mouseup(wb)});$("#"+q+"_jGraduate_Ok").bind("click touchstart",function(){v.paint.type=V;v.paint[V]=ea.cloneNode(true);v.paint.solidColor=null;Q()});$("#"+q+"_jGraduate_Cancel").bind("click touchstart",function(){K()});if(V==="radialGradient")if(eb)ra.show();else{ra.hide();ja.fx.val("");ja.fy.val("")}$("#"+
+q+"_jGraduate_match_ctr")[0].checked=!eb;var sb,ib;$("#"+q+"_jGraduate_match_ctr").change(function(){eb=!this.checked;ra.toggle(eb);ja.fx.val("");ja.fy.val("");var ia=ea;if(eb){var aa=sb||0.5,ka=ib||0.5;ia.setAttribute("fx",aa);ia.setAttribute("fy",ka);ja.fx.val(aa);ja.fy.val(ka)}else{sb=ia.getAttribute("fx");ib=ia.getAttribute("fy");ia.removeAttribute("fx");ia.removeAttribute("fy")}});va=ea.getElementsByTagNameNS(s.svg,"stop");sa=va.length;if(sa<2){for(;sa<2;){ea.appendChild(document.createElementNS(s.svg,
+"stop"));++sa}va=ea.getElementsByTagNameNS(s.svg,"stop")}var ab;na=N=0;if(V==="radialGradient"){U=ea.gradientTransform.baseVal;if(U.numberOfItems===2){sa=U.getItem(0);U=U.getItem(1);if(sa.type===2&&U.type===3){sa=U.matrix;if(sa.a!==1)N=Math.round(-(1-sa.a)*100);else if(sa.d!==1)N=Math.round((1-sa.d)*100)}}else if(U.numberOfItems===3){ca=U.getItem(0);sa=U.getItem(1);U=U.getItem(2);if(ca.type===4&&sa.type===2&&U.type===3){na=Math.round(ca.angle);sa=U.matrix;if(sa.a!==1)N=Math.round(-(1-sa.a)*100);else if(sa.d!==
+1)N=Math.round((1-sa.d)*100)}}}N={radius:{handle:"#"+q+"_jGraduate_RadiusArrows",input:"#"+q+"_jGraduate_RadiusInput",val:(ea.getAttribute("r")||0.5)*100},opacity:{handle:"#"+q+"_jGraduate_OpacArrows",input:"#"+q+"_jGraduate_OpacInput",val:v.paint.alpha||100},ellip:{handle:"#"+q+"_jGraduate_EllipArrows",input:"#"+q+"_jGraduate_EllipInput",val:N},angle:{handle:"#"+q+"_jGraduate_AngleArrows",input:"#"+q+"_jGraduate_AngleInput",val:na}};$.each(N,function(ia,aa){var ka=$(aa.handle);ka.mousedown(function(M){var P=
+ka.parent();ab={type:ia,elem:ka,input:$(aa.input),parent:P,offset:P.offset()};S.mousemove(ob).mouseup(pb);M.preventDefault()});$(aa.input).val(aa.val).change(function(){var M=+this.value,P=0,da=V==="radialGradient";switch(ia){case "radius":da&&ea.setAttribute("r",M/100);P=Math.pow(M/100,0.4)/2*145;break;case "opacity":v.paint.alpha=M;Ba.setAttribute("fill-opacity",M/100);P=M*1.45;break;case "ellip":$a=Ka=1;if(M===0){P=72.5;break}if(M>99.5)M=99.5;if(M>0)Ka=1-M/100;else $a=-(M/100)-1;P=145*((M+100)/
+2)/100;da&&d();break;case "angle":Sa=M;P=Sa/180;P+=0.5;P*=145;da&&d()}if(P>145)P=145;else if(P<0)P=0;ka.css({"margin-left":P-5})}).change()});var ob=function(ia){var aa=ia.pageX-ab.offset.left-parseInt(ab.parent.css("border-left-width"));if(aa>145)aa=145;if(aa<=0)aa=0;var ka=aa-5;aa/=145;switch(ab.type){case "radius":aa=Math.pow(aa*2,2.5);if(aa>0.98&&aa<1.02)aa=1;if(aa<=0.01)aa=0.01;ea.setAttribute("r",aa);break;case "opacity":v.paint.alpha=parseInt(aa*100);Ba.setAttribute("fill-opacity",aa);break;
+case "ellip":Ka=$a=1;if(aa<0.5){aa/=0.5;$a=aa<=0?0.01:aa}else if(aa>0.5){aa/=0.5;aa=2-aa;Ka=aa<=0?0.01:aa}d();aa-=1;if(Ka===aa+1)aa=Math.abs(aa);break;case "angle":aa-=0.5;Sa=aa*=180;d();aa/=100}ab.elem.css({"margin-left":ka});aa=Math.round(aa*100);ab.input.val(aa);ia.preventDefault()},pb=function(){S.unbind("mousemove",ob).unbind("mouseup",pb);ab=null};for(N=(v.paint.alpha*255/100).toString(16);N.length<2;)N="0"+N;N=N.split(".")[0];I=v.paint.solidColor=="none"?"":v.paint.solidColor+N;pa||(I=va[0].getAttribute("stop-color"));
+$.extend($.fn.jPicker.defaults.window,{alphaSupport:true,effects:{type:"show",speed:0}});R.jPicker({window:{title:B.window.pickerTitle},images:{clientPath:B.images.clientPath},color:{active:I,alphaSupport:true}},function(ia){v.paint.type="solidColor";v.paint.alpha=ia.val("ahex")?Math.round(ia.val("a")/255*100):100;v.paint.solidColor=ia.val("hex")?ia.val("hex"):"none";v.paint.radialGradient=null;Q()},null,function(){K()});var fb=$(L+" .jGraduate_tabs li");fb.on("click touchstart",function(){fb.removeClass("jGraduate_tab_current");
+$(this).addClass("jGraduate_tab_current");$(L+" > div").hide();var ia=$(this).attr("data-type");$(L+" .jGraduate_gradPick").show();if(ia==="rg"||ia==="lg"){$(".jGraduate_"+ia+"_field").show();$(".jGraduate_"+(ia==="lg"?"rg":"lg")+"_field").hide();$("#"+q+"_jgraduate_rect")[0].setAttribute("fill","url(#"+q+"_"+ia+"_jgraduate_grad)");V=ia==="lg"?"linearGradient":"radialGradient";$("#"+q+"_jGraduate_OpacInput").val(v.paint.alpha).change();var aa=$("#"+q+"_"+ia+"_jgraduate_grad")[0];if(ea!==aa){var ka=
+$(ea).find("stop");$(aa).empty().append(ka);ea=aa;aa=lb.val();ea.setAttribute("spreadMethod",aa)}eb=ia==="rg"&&ea.getAttribute("fx")!=null&&!(za==Ia&&Ja==Ha);$("#"+q+"_jGraduate_focusCoord").toggle(eb);if(eb)$("#"+q+"_jGraduate_match_ctr")[0].checked=false}else{$(L+" .jGraduate_gradPick").hide();$(L+" .jGraduate_colPick").show()}});$(L+" > div").hide();fb.removeClass("jGraduate_tab_current");var tb;switch(v.paint.type){case "linearGradient":tb=$(L+" .jGraduate_tab_lingrad");break;case "radialGradient":tb=
+$(L+" .jGraduate_tab_radgrad");break;default:tb=$(L+" .jGraduate_tab_color")}v.show();setTimeout(function(){tb.addClass("jGraduate_tab_current").click()},10)}else alert("Container element must have an id attribute to maintain unique id strings for sub-elements.")})}})();jQuery&&function(){var a=$(window),s=$(document);$.extend($.fn,{contextMenu:function(g,b){if(g.menu==undefined)return false;if(g.inSpeed==undefined)g.inSpeed=150;if(g.outSpeed==undefined)g.outSpeed=75;if(g.inSpeed==0)g.inSpeed=-1;if(g.outSpeed==0)g.outSpeed=-1;$(this).each(function(){var p=$(this),w=$(p).offset(),c=$("#"+g.menu);c.addClass("contextMenu");$(this).bind("mousedown",function(d){$(this).on("mouseup",function(n){var v=$(this);v.unbind("mouseup");$(".contextMenu").hide();if(d.button===2||
+g.allowLeft||d.ctrlKey&&svgedit.browser.isMac())svgedit.browser.isTouch()||f(n,d,v)})});svgedit.browser.isTouch()&&$(this).bind("taphold",function(d){var n=$(this);n.unbind("mouseup");f(d,d,n)});var f=function(d,n,v){if(typeof n=="undefined")n=d;d.stopPropagation();if(p.hasClass("disabled")||n.altKey)return false;var B=d.pageX,q=d.pageY;if(svgedit.browser.isTouch()){B=d.originalEvent.touches[0].pageX;q=d.originalEvent.touches[0].pageY}d=a.width()-c.width();n=a.height()-c.height();if(B>d-15)B=d-15;
+if(q>n-30)q=n-30;if(svgedit.browser.isTouch())q-=c.height()/2;s.unbind("click");c.css({top:q,left:B}).fadeIn(g.inSpeed);c.find("A").mouseover(function(){c.find("LI.hover").removeClass("hover");$(this).parent().addClass("hover")}).mouseout(function(){c.find("LI.hover").removeClass("hover")});s.keypress(function(L){switch(L.keyCode){case 38:if(c.find("LI.hover").length){c.find("LI.hover").removeClass("hover").prevAll("LI:not(.disabled)").eq(0).addClass("hover");c.find("LI.hover").length||c.find("LI:last").addClass("hover")}else c.find("LI:last").addClass("hover");
+break;case 40:if(c.find("LI.hover").length==0)c.find("LI:first").addClass("hover");else{c.find("LI.hover").removeClass("hover").nextAll("LI:not(.disabled)").eq(0).addClass("hover");c.find("LI.hover").length||c.find("LI:first").addClass("hover")}break;case 13:c.find("LI.hover A").trigger("click");break;case 27:s.trigger("click")}});c.find("A").unbind("mouseup");c.find("LI:not(.disabled) A").mouseup(function(){s.unbind("click").unbind("keypress");$(".contextMenu").hide();b&&b($(this).attr("href").substr(1),
+$(v),{x:B-w.left,y:q-w.top,docX:B,docY:q});return false});setTimeout(function(){s.click(function(){s.unbind("click").unbind("keypress");c.fadeOut(g.outSpeed);return false})},0)};if($.browser.mozilla)$("#"+g.menu).each(function(){$(this).css({MozUserSelect:"none"})});else $.browser.msie?$("#"+g.menu).each(function(){$(this).bind("selectstart.disableTextSelect",function(){return false})}):$("#"+g.menu).each(function(){$(this).bind("mousedown.disableTextSelect",function(){return false})});$(p).add($("UL.contextMenu")).bind("contextmenu",
+function(){return false})});return $(this)},disableContextMenuItems:function(g){if(g==undefined){$(this).find("LI").addClass("disabled");return $(this)}$(this).each(function(){if(g!=undefined)for(var b=g.split(","),p=0;p<b.length;p++)$(this).find('A[href="'+b[p]+'"]').parent().addClass("disabled")});return $(this)},enableContextMenuItems:function(g){if(g==undefined){$(this).find("LI.disabled").removeClass("disabled");return $(this)}$(this).each(function(){if(g!=undefined)for(var b=g.split(","),p=
+0;p<b.length;p++)$(this).find('A[href="'+b[p]+'"]').parent().removeClass("disabled")});return $(this)},disableContextMenu:function(){$(this).each(function(){$(this).addClass("disabled")});return $(this)},enableContextMenu:function(){$(this).each(function(){$(this).removeClass("disabled")});return $(this)},destroyContextMenu:function(){$(this).each(function(){$(this).unbind("mousedown").unbind("mouseup")});return $(this)}})}(jQuery);var svgedit=svgedit||{};
+(function(){if(!svgedit.browser)svgedit.browser={};var a=!!document.createElementNS&&!!document.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect;svgedit.browser.supportsSvg=function(){return a};if(svgedit.browser.supportsSvg()){var s=navigator.userAgent,g=document.createElementNS("http://www.w3.org/2000/svg","svg"),b=!!window.opera,p=s.indexOf("AppleWebKit")>=0,w=s.indexOf("Gecko/")>=0,c=s.indexOf("MSIE")>=0,f=s.indexOf("Chrome/")>=0,d=s.indexOf("Windows")>=0,n=s.indexOf("Macintosh")>=
+0,v="ontouchstart"in window,B=!!g.querySelector,q=!!document.evaluate,L=function(){var oa=document.createElementNS("http://www.w3.org/2000/svg","path");oa.setAttribute("d","M0,0 10,10");var Y=oa.pathSegList;oa=oa.createSVGPathSegLinetoAbs(5,5);try{Y.replaceItem(oa,0);return true}catch(V){}return false}(),Q=function(){var oa=document.createElementNS("http://www.w3.org/2000/svg","path");oa.setAttribute("d","M0,0 10,10");var Y=oa.pathSegList;oa=oa.createSVGPathSegLinetoAbs(5,5);try{Y.insertItemBefore(oa,
+0);return true}catch(V){}return false}(),K=function(){var oa=document.createElementNS("http://www.w3.org/2000/svg","svg"),Y=document.createElementNS("http://www.w3.org/2000/svg","svg");document.documentElement.appendChild(oa);Y.setAttribute("x",5);oa.appendChild(Y);var V=document.createElementNS("http://www.w3.org/2000/svg","text");V.textContent="a";Y.appendChild(V);Y=V.getStartPositionOfChar(0);Y=Y.x;document.documentElement.removeChild(oa);return Y===0}(),I=function(){var oa=document.createElementNS("http://www.w3.org/2000/svg",
+"svg");document.documentElement.appendChild(oa);var Y=document.createElementNS("http://www.w3.org/2000/svg","path");Y.setAttribute("d","M0,0 C0,0 10,10 10,0");oa.appendChild(Y);Y=Y.getBBox();document.documentElement.removeChild(oa);return Y.height>4&&Y.height<5}(),S=function(){var oa=document.createElementNS("http://www.w3.org/2000/svg","svg");document.documentElement.appendChild(oa);var Y=document.createElementNS("http://www.w3.org/2000/svg","path");Y.setAttribute("d","M0,0 10,0");var V=document.createElementNS("http://www.w3.org/2000/svg",
+"path");V.setAttribute("d","M5,0 15,0");var ea=document.createElementNS("http://www.w3.org/2000/svg","g");ea.appendChild(Y);ea.appendChild(V);oa.appendChild(ea);Y=ea.getBBox();document.documentElement.removeChild(oa);return Y.width==15}(),R=function(){var oa=document.createElementNS("http://www.w3.org/2000/svg","rect");oa.setAttribute("x",0.1);(oa=oa.cloneNode(false).getAttribute("x").indexOf(",")==-1)||$.alert("NOTE: This version of Opera is known to contain bugs in SVG-edit.\n\t\tPlease upgrade to the <a href='http://opera.com'>latest version</a> in which the problems have been fixed.");
+return oa}(),N=function(){var oa=document.createElementNS("http://www.w3.org/2000/svg","rect");oa.setAttribute("style","vector-effect:non-scaling-stroke");return oa.style.vectorEffect==="non-scaling-stroke"}(),ga=function(){var oa=document.createElementNS("http://www.w3.org/2000/svg","rect").transform.baseVal,Y=g.createSVGTransform();oa.appendItem(Y);return oa.getItem(0)==Y}();svgedit.browser.isOpera=function(){return b};svgedit.browser.isWebkit=function(){return p};svgedit.browser.isGecko=function(){return w};
+svgedit.browser.isIE=function(){return c};svgedit.browser.isChrome=function(){return f};svgedit.browser.isWindows=function(){return d};svgedit.browser.isMac=function(){return n};svgedit.browser.isTouch=function(){return v};svgedit.browser.supportsSelectors=function(){return B};svgedit.browser.supportsXpath=function(){return q};svgedit.browser.supportsPathReplaceItem=function(){return L};svgedit.browser.supportsPathInsertItemBefore=function(){return Q};svgedit.browser.supportsPathBBox=function(){return I};
+svgedit.browser.supportsHVLineContainerBBox=function(){return S};svgedit.browser.supportsGoodTextCharPos=function(){return K};svgedit.browser.supportsEditableText=function(){return b};svgedit.browser.supportsGoodDecimals=function(){return R};svgedit.browser.supportsNonScalingStroke=function(){return N};svgedit.browser.supportsNativeTransformLists=function(){return ga}}else window.location="browser-not-supported.html"})();svgedit=svgedit||{};
+(function(){if(!svgedit.transformlist)svgedit.transformlist={};var a=document.createElementNS("http://www.w3.org/2000/svg","svg"),s={};svgedit.transformlist.SVGTransformList=function(g){this._elem=g||null;this._xforms=[];this._update=function(){var b="";a.createSVGMatrix();for(var p=0;p<this.numberOfItems;++p){var w=this._list.getItem(p);b=b;w=w;var c=w.matrix,f="";switch(w.type){case 1:f="matrix("+[c.a,c.b,c.c,c.d,c.e,c.f].join(",")+")";break;case 2:f="translate("+c.e+","+c.f+")";break;case 3:f=
+c.a==c.d?"scale("+c.a+")":"scale("+c.a+","+c.d+")";break;case 4:var d=0;f=0;if(w.angle!=0){d=1-c.a;f=(d*c.f+c.b*c.e)/(d*d+c.b*c.b);d=(c.e-c.b*f)/d}f="rotate("+w.angle+" "+d+","+f+")"}b=b+(f+" ")}this._elem.setAttribute("transform",b)};this._list=this;this._init=function(){var b=this._elem.getAttribute("transform");if(b)for(var p=/\s*((scale|matrix|rotate|translate)\s*\(.*?\))\s*,?\s*/,w=true;w;){w=b.match(p);b=b.replace(p,"");if(w&&w[1]){var c=w[1].split(/\s*\(/),f=c[0];c=c[1].match(/\s*(.*?)\s*\)/);
+c[1]=c[1].replace(/(\d)-/g,"$1 -");var d=c[1].split(/[, ]+/),n="abcdef".split(""),v=a.createSVGMatrix();$.each(d,function(L,Q){d[L]=parseFloat(Q);if(f=="matrix")v[n[L]]=d[L]});c=a.createSVGTransform();var B="set"+f.charAt(0).toUpperCase()+f.slice(1),q=f=="matrix"?[v]:d;if(f=="scale"&&q.length==1)q.push(q[0]);else if(f=="translate"&&q.length==1)q.push(0);else if(f=="rotate"&&q.length==1){q.push(0);q.push(0)}c[B].apply(c,q);this._list.appendItem(c)}}};this._removeFromOtherLists=function(b){if(b){var p=
+false,w;for(w in s){for(var c=s[w],f=0,d=c._xforms.length;f<d;++f)if(c._xforms[f]==b){p=true;c.removeItem(f);break}if(p)break}}};this.numberOfItems=0;this.clear=function(){this.numberOfItems=0;this._xforms=[]};this.initialize=function(b){this.numberOfItems=1;this._removeFromOtherLists(b);this._xforms=[b]};this.getItem=function(b){if(b<this.numberOfItems&&b>=0)return this._xforms[b];throw{code:1};};this.insertItemBefore=function(b,p){var w=null;if(p>=0)if(p<this.numberOfItems){this._removeFromOtherLists(b);
+w=Array(this.numberOfItems+1);for(var c=0;c<p;++c)w[c]=this._xforms[c];w[c]=b;for(var f=c+1;c<this.numberOfItems;++f,++c)w[f]=this._xforms[c];this.numberOfItems++;this._xforms=w;w=b;this._list._update()}else w=this._list.appendItem(b);return w};this.replaceItem=function(b,p){var w=null;if(p<this.numberOfItems&&p>=0){this._removeFromOtherLists(b);w=this._xforms[p]=b;this._list._update()}return w};this.removeItem=function(b){if(b<this.numberOfItems&&b>=0){for(var p=this._xforms[b],w=Array(this.numberOfItems-
+1),c=0;c<b;++c)w[c]=this._xforms[c];for(b=c;b<this.numberOfItems-1;++b,++c)w[b]=this._xforms[c+1];this.numberOfItems--;this._xforms=w;this._list._update();return p}else throw{code:1};};this.appendItem=function(b){this._removeFromOtherLists(b);this._xforms.push(b);this.numberOfItems++;this._list._update();return b}};svgedit.transformlist.resetListMap=function(){s={}};svgedit.transformlist.removeElementFromListMap=function(g){g.id&&s[g.id]&&delete s[g.id]};svgedit.transformlist.getTransformList=function(g){if(svgedit.browser.supportsNativeTransformLists())if(g.transform)return g.transform.baseVal;
+else if(g.gradientTransform)return g.gradientTransform.baseVal;else{if(g.patternTransform)return g.patternTransform.baseVal}else{var b=g.id;b||(b="temp");var p=s[b];if(!p||b=="temp"){s[b]=new svgedit.transformlist.SVGTransformList(g);s[b]._init();p=s[b]}return p}return null}})();svgedit=svgedit||{};
+(function(){if(!svgedit.math)svgedit.math={};var a=document.createElementNS("http://www.w3.org/2000/svg","svg");svgedit.math.transformPoint=function(s,g,b){return{x:b.a*s+b.c*g+b.e,y:b.b*s+b.d*g+b.f}};svgedit.math.isIdentity=function(s){return s.a===1&&s.b===0&&s.c===0&&s.d===1&&s.e===0&&s.f===0};svgedit.math.matrixMultiply=function(){for(var s=arguments,g=s.length,b=s[g-1];g-- >1;)b=s[g-1].multiply(b);if(Math.abs(b.a)<1.0E-14)b.a=0;if(Math.abs(b.b)<1.0E-14)b.b=0;if(Math.abs(b.c)<1.0E-14)b.c=0;if(Math.abs(b.d)<
+1.0E-14)b.d=0;if(Math.abs(b.e)<1.0E-14)b.e=0;if(Math.abs(b.f)<1.0E-14)b.f=0;return b};svgedit.math.hasMatrixTransform=function(s){if(!s)return false;for(var g=s.numberOfItems;g--;){var b=s.getItem(g);if(b.type==1&&!svgedit.math.isIdentity(b.matrix))return true}return false};svgedit.math.transformBox=function(s,g,b,p,w){var c={x:s,y:g},f={x:s+b,y:g};b={x:s+b,y:g+p};s={x:s,y:g+p};g=svgedit.math.transformPoint;c=g(c.x,c.y,w);var d=p=c.x,n=c.y,v=c.y;f=g(f.x,f.y,w);p=Math.min(p,f.x);d=Math.max(d,f.x);
+n=Math.min(n,f.y);v=Math.max(v,f.y);s=g(s.x,s.y,w);p=Math.min(p,s.x);d=Math.max(d,s.x);n=Math.min(n,s.y);v=Math.max(v,s.y);b=g(b.x,b.y,w);p=Math.min(p,b.x);d=Math.max(d,b.x);n=Math.min(n,b.y);v=Math.max(v,b.y);return{tl:c,tr:f,bl:s,br:b,aabox:{x:p,y:n,width:d-p,height:v-n}}};svgedit.math.transformListToTransform=function(s,g,b){if(s==null)return a.createSVGTransformFromMatrix(a.createSVGMatrix());g=g==undefined?0:g;b=b==undefined?s.numberOfItems-1:b;g=parseInt(g);b=parseInt(b);if(g>b){var p=b;b=g;
+g=p}p=a.createSVGMatrix();for(g=g;g<=b;++g){var w=g>=0&&g<s.numberOfItems?s.getItem(g).matrix:a.createSVGMatrix();p=svgedit.math.matrixMultiply(p,w)}return a.createSVGTransformFromMatrix(p)};svgedit.math.getMatrix=function(s){s=svgedit.transformlist.getTransformList(s);return svgedit.math.transformListToTransform(s).matrix};svgedit.math.snapToAngle=function(s,g,b,p){var w=Math.PI/4;b=b-s;var c=p-g;p=Math.sqrt(b*b+c*c);w=Math.round(Math.atan2(c,b)/w)*w;return{x:s+p*Math.cos(w),y:g+p*Math.sin(w),a:w}};
+svgedit.math.rectsIntersect=function(s,g){if(!s||!g)return false;return g.x<s.x+s.width&&g.x+g.width>s.x&&g.y<s.y+s.height&&g.y+g.height>s.y}})();svgedit=svgedit||{};
+(function(){if(!svgedit.units)svgedit.units={};var a=["x","x1","cx","rx","width"],s=["y","y1","cy","ry","height"],g=$.merge(["r","radius"],a);$.merge(g,s);var b,p={px:1};svgedit.units.init=function(c){b=c;c=document.createElementNS("http://www.w3.org/2000/svg","svg");document.body.appendChild(c);var f=document.createElementNS("http://www.w3.org/2000/svg","rect");f.setAttribute("width","1em");f.setAttribute("height","1ex");f.setAttribute("x","1in");c.appendChild(f);f=f.getBBox();document.body.removeChild(c);
+c=f.x;p.em=f.width;p.ex=f.height;p["in"]=c;p.cm=c/2.54;p.mm=c/25.4;p.pt=c/72;p.pc=c/6;p["%"]=0};svgedit.units.getTypeMap=function(){return p};svgedit.units.shortFloat=function(c){var f=b.getRoundDigits();if(isNaN(c)){if($.isArray(c))return svgedit.units.shortFloat(c[0])+","+svgedit.units.shortFloat(c[1])}else return+(+c).toFixed(f);return parseFloat(c).toFixed(f)-0};svgedit.units.convertUnit=function(c,f){f=f||b.getBaseUnit();return svgedit.unit.shortFloat(c/p[f])};svgedit.units.setUnitAttr=function(c,
+f,d){isNaN(d)||c.getAttribute(f);c.setAttribute(f,d)};var w={line:["x1","x2","y1","y2"],circle:["cx","cy","r"],ellipse:["cx","cy","rx","ry"],foreignObject:["x","y","width","height"],rect:["x","y","width","height"],image:["x","y","width","height"],use:["x","y","width","height"],text:["x","y"]};svgedit.units.convertAttrs=function(c){var f=c.tagName,d=b.getBaseUnit();if(f=w[f])for(var n=f.length,v=0;v<n;v++){var B=f[v],q=c.getAttribute(B);if(q)isNaN(q)||c.setAttribute(B,q/p[d]+d)}};svgedit.units.convertToNum=
+function(c,f){if(!isNaN(f))return f-0;if(f.substr(-1)==="%"){var d=f.substr(0,f.length-1)/100,n=b.getWidth(),v=b.getHeight();return a.indexOf(c)>=0?d*n:s.indexOf(c)>=0?d*v:d*Math.sqrt(n*n+v*v)/Math.sqrt(2)}else{n=f.substr(-2);d=f.substr(0,f.length-2);return d*p[n]}};svgedit.units.isValidUnit=function(c,f,d){var n=false;if(g.indexOf(c)>=0)if(isNaN(f)){f=f.toLowerCase();$.each(p,function(q){if(!n)if(RegExp("^-?[\\d\\.]+"+q+"$").test(f))n=true})}else n=true;else if(c=="id"){c=false;try{var v=b.getElement(f);
+c=v==null||v===d}catch(B){}return c}else n=true;return n}})();svgedit=svgedit||{};
+(function(){function a(c){if(svgedit.browser.supportsHVLineContainerBBox())try{return c.getBBox()}catch(f){}var d=$.data(c,"ref"),n=null;if(d){var v=$(d).children().clone().attr("visibility","hidden");$(w).append(v);n=v.filter("line, path")}else n=$(c).find("line, path");var B=false;if(n.length){n.each(function(){var q=this.getBBox();if(!q.width||!q.height)B=true});if(B){c=d?v:$(c).children();ret=getStrokedBBox(c)}else ret=c.getBBox()}else ret=c.getBBox();d&&v.remove();return ret}if(!svgedit.utilities)svgedit.utilities=
+{};var s="a,circle,ellipse,foreignObject,g,image,line,path,polygon,polyline,rect,svg,text,tspan,use".split(","),g=null,b=null,p=null,w=null;svgedit.utilities.init=function(c){g=c;b=c.getDOMDocument();p=c.getDOMContainer();w=c.getSVGRoot()};svgedit.utilities.toXml=function(c){return $("<p/>").text(c).html()};svgedit.utilities.fromXml=function(c){return $("<p/>").html(c).text()};svgedit.utilities.encode64=function(c){c=svgedit.utilities.convertToXMLReferences(c);if(window.btoa)return window.btoa(c);
+var f=Array(Math.floor((c.length+2)/3)*4),d,n,v,B,q,L,Q=0,K=0;do{d=c.charCodeAt(Q++);n=c.charCodeAt(Q++);v=c.charCodeAt(Q++);B=d>>2;d=(d&3)<<4|n>>4;q=(n&15)<<2|v>>6;L=v&63;if(isNaN(n))q=L=64;else if(isNaN(v))L=64;f[K++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(B);f[K++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(d);f[K++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(q);f[K++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(L)}while(Q<
+c.length);return f.join("")};svgedit.utilities.decode64=function(c){if(window.atob)return window.atob(c);var f="",d,n,v="",B,q="",L=0;c=c.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(c.charAt(L++));n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(c.charAt(L++));B="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(c.charAt(L++));q="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(c.charAt(L++));
+d=d<<2|n>>4;n=(n&15)<<4|B>>2;v=(B&3)<<6|q;f+=String.fromCharCode(d);if(B!=64)f+=String.fromCharCode(n);if(q!=64)f+=String.fromCharCode(v)}while(L<c.length);return unescape(f)};svgedit.utilities.convertToXMLReferences=function(c){for(var f="",d=0;d<c.length;d++){var n=c.charCodeAt(d);if(n<128)f+=c[d];else if(n>127)f+="&#"+n+";"}return f};svgedit.utilities.text2xml=function(c){if(c.indexOf("<svg:svg")>=0)c=c.replace(/<(\/?)svg:/g,"<$1").replace("xmlns:svg","xmlns");var f;try{var d=window.DOMParser?
+new DOMParser:new ActiveXObject("Microsoft.XMLDOM");d.async=false}catch(n){throw Error("XML Parser could not be instantiated");}try{f=d.loadXML?d.loadXML(c)?d:false:d.parseFromString(c,"text/xml")}catch(v){throw Error("Error parsing XML string");}return f};svgedit.utilities.bboxToObj=function(c){return{x:c.x,y:c.y,width:c.width,height:c.height}};svgedit.utilities.walkTree=function(c,f){if(c&&c.nodeType==1){f(c);for(var d=c.childNodes.length;d--;)svgedit.utilities.walkTree(c.childNodes.item(d),f)}};
+svgedit.utilities.walkTreePost=function(c,f){if(c&&c.nodeType==1){for(var d=c.childNodes.length;d--;)svgedit.utilities.walkTree(c.childNodes.item(d),f);f(c)}};svgedit.utilities.getUrlFromAttr=function(c){if(c)if(c.indexOf('url("')===0)return c.substring(5,c.indexOf('"',6));else if(c.indexOf("url('")===0)return c.substring(5,c.indexOf("'",6));else if(c.indexOf("url(")===0)return c.substring(4,c.indexOf(")"));return null};svgedit.utilities.getHref=function(c){if(c)return c.getAttributeNS("http://www.w3.org/1999/xlink",
+"href")};svgedit.utilities.setHref=function(c,f){c.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",f)};svgedit.utilities.findDefs=function(c){c=g.getSVGContent().documentElement;var f=c.getElementsByTagNameNS("http://www.w3.org/2000/svg","defs");return f=f.length>0?f[0]:c.insertBefore(c.ownerDocument.createElementNS("http://www.w3.org/2000/svg","defs"),c.firstChild.nextSibling)};svgedit.utilities.getPathBBox=function(c){var f=c.pathSegList,d=f.numberOfItems;c=[[],[]];var n=f.getItem(0),
+v=[n.x,n.y];for(n=0;n<d;n++){var B=f.getItem(n);if(typeof B.x!="undefined"){c[0].push(v[0]);c[1].push(v[1]);if(B.x1){for(var q=[B.x1,B.y1],L=[B.x2,B.y2],Q=[B.x,B.y],K=0;K<2;K++){B=function(ga){return Math.pow(1-ga,3)*v[K]+3*Math.pow(1-ga,2)*ga*q[K]+3*(1-ga)*Math.pow(ga,2)*L[K]+Math.pow(ga,3)*Q[K]};var I=6*v[K]-12*q[K]+6*L[K],S=-3*v[K]+9*q[K]-9*L[K]+3*Q[K],R=3*q[K]-3*v[K];if(S==0){if(I!=0){I=-R/I;0<I&&I<1&&c[K].push(B(I))}}else{R=Math.pow(I,2)-4*R*S;if(!(R<0)){var N=(-I+Math.sqrt(R))/(2*S);0<N&&N<
+1&&c[K].push(B(N));I=(-I-Math.sqrt(R))/(2*S);0<I&&I<1&&c[K].push(B(I))}}}v=Q}else{c[0].push(B.x);c[1].push(B.y)}}}f=Math.min.apply(null,c[0]);d=Math.max.apply(null,c[0])-f;n=Math.min.apply(null,c[1]);c=Math.max.apply(null,c[1])-n;return{x:f,y:n,width:d,height:c}};svgedit.utilities.getBBox=function(c){var f=c||g.getSelectedElements()[0];if(c.nodeType!=1)return null;c=null;var d=f.nodeName;switch(d){case "text":if(f.textContent===""){f.textContent="a";c=f.getBBox();f.textContent=""}else try{c=f.getBBox()}catch(n){}break;
+case "path":if(svgedit.browser.supportsPathBBox())try{c=f.getBBox()}catch(v){}else c=svgedit.utilities.getPathBBox(f);break;case "g":case "a":c=a(f);break;default:if(d==="use")c=a(f,true);if(d==="use")c||(c=f.getBBox());else if(~s.indexOf(d))try{c=f.getBBox()}catch(B){f=$(f).closest("foreignObject");if(f.length)try{c=f[0].getBBox()}catch(q){c=null}else c=null}}if(c)c=svgedit.utilities.bboxToObj(c);return c};svgedit.utilities.getRotationAngle=function(c,f){var d=c||g.getSelectedElements()[0];d=svgedit.transformlist.getTransformList(d);
+if(!d)return 0;for(var n=d.numberOfItems,v=0;v<n;++v){var B=d.getItem(v);if(B.type==4)return f?B.angle*Math.PI/180:B.angle}return 0};svgedit.utilities.getElem=svgedit.browser.supportsSelectors()?function(c){return w.querySelector("#"+c)}:svgedit.browser.supportsXpath()?function(c){return b.evaluate('svg:svg[@id="svgroot"]//svg:*[@id="'+c+'"]',p,function(){return"http://www.w3.org/2000/svg"},9,null).singleNodeValue}:function(c){return $(w).find("[id="+c+"]")[0]};svgedit.utilities.assignAttributes=
+function(c,f,d,n){d||(d=0);svgedit.browser.isOpera()||w.suspendRedraw(d);for(var v in f)if(d=v.substr(0,4)==="xml:"?"http://www.w3.org/XML/1998/namespace":v.substr(0,6)==="xlink:"?"http://www.w3.org/1999/xlink":null)c.setAttributeNS(d,v,f[v]);else n?svgedit.units.setUnitAttr(c,v,f[v]):c.setAttribute(v,f[v]);svgedit.browser.isOpera()||w.unsuspendRedraw(null)};svgedit.utilities.cleanupElement=function(c){var f=w.suspendRedraw(60),d={"fill-opacity":1,"stop-opacity":1,opacity:1,stroke:"none","stroke-dasharray":"none",
+"stroke-linejoin":"miter","stroke-linecap":"butt","stroke-opacity":1,"stroke-width":1,rx:0,ry:0},n;for(n in d){var v=d[n];c.getAttribute(n)==v&&c.removeAttribute(n)}w.unsuspendRedraw(f)}})();svgedit=svgedit||{};
+(function(){if(!svgedit.sanitize)svgedit.sanitize={};var a={};a["http://www.w3.org/1999/xlink"]="xlink";a["http://www.w3.org/XML/1998/namespace"]="xml";a["http://www.w3.org/2000/xmlns/"]="xmlns";a["http://svg-edit.googlecode.com"]="se";a["http://www.w3.org/1999/xhtml"]="xhtml";a["http://www.w3.org/1998/Math/MathML"]="mathml";var s={};$.each(a,function(p,w){s[w]=p});var g={a:["class","clip-path","clip-rule","fill","fill-opacity","fill-rule","filter","id","mask","opacity","stroke","stroke-dasharray",
+"stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform","xlink:href","xlink:title"],circle:["class","clip-path","clip-rule","cx","cy","fill","fill-opacity","fill-rule","filter","id","mask","opacity","r","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform"],clipPath:["class",
+"clipPathUnits","id"],defs:[],style:["type"],desc:[],ellipse:["class","clip-path","clip-rule","cx","cy","fill","fill-opacity","fill-rule","filter","id","mask","opacity","requiredFeatures","rx","ry","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform"],feGaussianBlur:["class","color-interpolation-filters","id","requiredFeatures","stdDeviation"],filter:["class","color-interpolation-filters",
+"filterRes","filterUnits","height","id","primitiveUnits","requiredFeatures","width","x","xlink:href","y"],foreignObject:["class","font-size","height","id","opacity","requiredFeatures","style","transform","width","x","y"],g:["class","clip-path","clip-rule","id","display","fill","fill-opacity","fill-rule","filter","mask","opacity","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage",
+"transform","font-family","font-size","font-style","font-weight","text-anchor","data-locked"],image:["class","clip-path","clip-rule","filter","height","id","mask","opacity","requiredFeatures","style","systemLanguage","transform","width","x","xlink:href","xlink:title","y"],line:["shape-rendering","class","clip-path","clip-rule","fill","fill-opacity","fill-rule","filter","id","marker-end","marker-mid","marker-start","mask","opacity","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset",
+"stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform","x1","x2","y1","y2"],linearGradient:["class","id","gradientTransform","gradientUnits","requiredFeatures","spreadMethod","systemLanguage","x1","x2","xlink:href","y1","y2"],marker:["id","class","markerHeight","markerUnits","markerWidth","orient","preserveAspectRatio","refX","refY","systemLanguage","viewBox"],mask:["class","height","id","maskContentUnits","maskUnits","width","x",
+"y"],metadata:["class","id"],path:["class","clip-path","clip-rule","d","fill","fill-opacity","fill-rule","filter","id","marker-end","marker-mid","marker-start","mask","opacity","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform"],pattern:["class","height","id","patternContentUnits","patternTransform","patternUnits","requiredFeatures","style","systemLanguage","viewBox",
+"width","x","xlink:href","y"],polygon:["class","clip-path","clip-rule","id","fill","fill-opacity","fill-rule","filter","id","class","marker-end","marker-mid","marker-start","mask","opacity","points","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform"],polyline:["class","clip-path","clip-rule","id","fill","fill-opacity","fill-rule","filter","marker-end","marker-mid",
+"marker-start","mask","opacity","points","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform"],radialGradient:["class","cx","cy","fx","fy","gradientTransform","gradientUnits","id","r","requiredFeatures","spreadMethod","systemLanguage","xlink:href"],rect:["shape-rendering","class","clip-path","clip-rule","fill","fill-opacity","fill-rule","filter","height","id","mask",
+"opacity","requiredFeatures","rx","ry","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform","width","x","y"],stop:["class","id","offset","requiredFeatures","stop-color","stop-opacity","style","systemLanguage"],svg:["class","clip-path","clip-rule","filter","id","height","mask","preserveAspectRatio","requiredFeatures","style","systemLanguage","viewBox","width","x","xmlns","xmlns:se",
+"xmlns:xlink","y"],"switch":["class","id","requiredFeatures","systemLanguage"],symbol:["class","fill","fill-opacity","fill-rule","filter","font-family","font-size","font-style","font-weight","id","opacity","preserveAspectRatio","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform","viewBox"],text:["class","clip-path","clip-rule","fill","fill-opacity","fill-rule",
+"filter","font-family","font-size","font-style","font-weight","id","mask","opacity","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","text-anchor","transform","x","xml:space","y"],textPath:["class","id","method","requiredFeatures","spacing","startOffset","style","systemLanguage","transform","xlink:href"],title:[],tspan:["class","clip-path","clip-rule","dx","dy","fill",
+"fill-opacity","fill-rule","filter","font-family","font-size","font-style","font-weight","id","mask","opacity","requiredFeatures","rotate","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","text-anchor","textLength","transform","x","xml:space","y"],use:["class","clip-path","clip-rule","fill","fill-opacity","fill-rule","filter","height","id","mask","stroke","stroke-dasharray","stroke-dashoffset",
+"stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","transform","width","x","xlink:href","y"],annotation:["encoding"],"annotation-xml":["encoding"],maction:["actiontype","other","selection"],math:["class","id","display","xmlns"],menclose:["notation"],merror:[],mfrac:["linethickness"],mi:["mathvariant"],mmultiscripts:[],mn:[],mo:["fence","lspace","maxsize","minsize","rspace","stretchy"],mover:[],mpadded:["lspace","width","height","depth","voffset"],mphantom:[],
+mprescripts:[],mroot:[],mrow:["xlink:href","xlink:type","xmlns:xlink"],mspace:["depth","height","width"],msqrt:[],mstyle:["displaystyle","mathbackground","mathcolor","mathvariant","scriptlevel"],msub:[],msubsup:[],msup:[],mtable:["align","columnalign","columnlines","columnspacing","displaystyle","equalcolumns","equalrows","frame","rowalign","rowlines","rowspacing","width"],mtd:["columnalign","columnspan","rowalign","rowspan"],mtext:[],mtr:["columnalign","rowalign"],munder:[],munderover:[],none:[],
+semantics:[]},b={};$.each(g,function(p,w){var c={};$.each(w,function(f,d){if(d.indexOf(":")>=0){var n=d.split(":");c[n[1]]=s[n[0]]}else c[d]=d=="xmlns"?"http://www.w3.org/2000/xmlns/":null});b[p]=c});svgedit.sanitize.getNSMap=function(){return a};svgedit.sanitize.sanitizeSvg=function(p){if(p.nodeType==3){p.nodeValue=p.nodeValue.replace(/^\s+|\s+$/g,"");p.nodeValue.length||p.parentNode.removeChild(p)}if(p.nodeType==1){var w=p.parentNode;if(p.ownerDocument&&w){var c=g[p.nodeName],f=b[p.nodeName];if(c!=
+undefined){for(var d=[],n=p.attributes.length;n--;){var v=p.attributes.item(n),B=v.nodeName,q=v.localName,L=v.namespaceURI;if(!(f.hasOwnProperty(q)&&L==f[q]&&L!="http://www.w3.org/2000/xmlns/")&&!(L=="http://www.w3.org/2000/xmlns/"&&a[v.nodeValue])){B.indexOf("se:")==0&&d.push([B,v.nodeValue]);p.removeAttributeNS(L,q)}if(svgedit.browser.isGecko())switch(B){case "transform":case "gradientTransform":case "patternTransform":q=v.nodeValue.replace(/(\d)-/g,"$1 -");p.setAttribute(B,q)}if(B=="style"){v=
+v.nodeValue.split(";");for(B=v.length;B--;){q=v[B].split(":");c.indexOf(q[0])>=0&&p.setAttribute(q[0],q[1])}p.removeAttribute("style")}}$.each(d,function(Q,K){p.setAttributeNS("http://svg-edit.googlecode.com",K[0],K[1])});if((n=svgedit.utilities.getHref(p))&&["filter","linearGradient","pattern","radialGradient","textPath","use"].indexOf(p.nodeName)>=0)if(n[0]!="#"){svgedit.utilities.setHref(p,"");p.removeAttributeNS("http://www.w3.org/1999/xlink","href")}if(p.nodeName=="use"&&!svgedit.utilities.getHref(p))w.removeChild(p);
+else{$.each(["clip-path","fill","filter","marker-end","marker-mid","marker-start","mask","stroke"],function(Q,K){var I=p.getAttribute(K);if(I)if((I=svgedit.utilities.getUrlFromAttr(I))&&I[0]!=="#"){p.setAttribute(K,"");p.removeAttribute(K)}});for(n=p.childNodes.length;n--;)svgedit.sanitize.sanitizeSvg(p.childNodes.item(n))}}else{for(c=[];p.hasChildNodes();)c.push(w.insertBefore(p.firstChild,p));w.removeChild(p);for(n=c.length;n--;)svgedit.sanitize.sanitizeSvg(c[n])}}}}})();svgedit=svgedit||{};
+(function(){if(!svgedit.history)svgedit.history={};svgedit.history.HistoryEventTypes={BEFORE_APPLY:"before_apply",AFTER_APPLY:"after_apply",BEFORE_UNAPPLY:"before_unapply",AFTER_UNAPPLY:"after_unapply"};svgedit.history.MoveElementCommand=function(a,s,g,b){this.elem=a;this.text=b?"Move "+a.tagName+" to "+b:"Move "+a.tagName;this.oldNextSibling=s;this.oldParent=g;this.newNextSibling=a.nextSibling;this.newParent=a.parentNode};svgedit.history.MoveElementCommand.type=function(){return"svgedit.history.MoveElementCommand"};svgedit.history.MoveElementCommand.prototype.type=
+svgedit.history.MoveElementCommand.type;svgedit.history.MoveElementCommand.prototype.getText=function(){return this.text};svgedit.history.MoveElementCommand.prototype.apply=function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_APPLY,this);this.elem=this.newParent.insertBefore(this.elem,this.newNextSibling);a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_APPLY,this)};svgedit.history.MoveElementCommand.prototype.unapply=function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_UNAPPLY,
+this);this.elem=this.oldParent.insertBefore(this.elem,this.oldNextSibling);a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_UNAPPLY,this)};svgedit.history.MoveElementCommand.prototype.elements=function(){return[this.elem]};svgedit.history.InsertElementCommand=function(a,s){this.elem=a;this.text=s||"Create "+a.tagName;this.parent=a.parentNode;this.nextSibling=this.elem.nextSibling};svgedit.history.InsertElementCommand.type=function(){return"svgedit.history.InsertElementCommand"};svgedit.history.InsertElementCommand.prototype.type=
+svgedit.history.InsertElementCommand.type;svgedit.history.InsertElementCommand.prototype.getText=function(){return this.text};svgedit.history.InsertElementCommand.prototype.apply=function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_APPLY,this);this.elem=this.parent.insertBefore(this.elem,this.nextSibling);a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_APPLY,this)};svgedit.history.InsertElementCommand.prototype.unapply=function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_UNAPPLY,
+this);this.parent=this.elem.parentNode;this.elem=this.elem.parentNode.removeChild(this.elem);a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_UNAPPLY,this)};svgedit.history.InsertElementCommand.prototype.elements=function(){return[this.elem]};svgedit.history.RemoveElementCommand=function(a,s,g,b){this.elem=a;this.text=b||"Delete "+a.tagName;this.nextSibling=s;this.parent=g;svgedit.transformlist.removeElementFromListMap(a)};svgedit.history.RemoveElementCommand.type=function(){return"svgedit.history.RemoveElementCommand"};
+svgedit.history.RemoveElementCommand.prototype.type=svgedit.history.RemoveElementCommand.type;svgedit.history.RemoveElementCommand.prototype.getText=function(){return this.text};svgedit.history.RemoveElementCommand.prototype.apply=function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_APPLY,this);svgedit.transformlist.removeElementFromListMap(this.elem);this.parent=this.elem.parentNode;this.elem=this.parent.removeChild(this.elem);a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_APPLY,
+this)};svgedit.history.RemoveElementCommand.prototype.unapply=function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_UNAPPLY,this);svgedit.transformlist.removeElementFromListMap(this.elem);this.nextSibling==null&&window.console&&console.log("Error: reference element was lost");this.parent.insertBefore(this.elem,this.nextSibling);a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_UNAPPLY,this)};svgedit.history.RemoveElementCommand.prototype.elements=function(){return[this.elem]};
+svgedit.history.ChangeElementCommand=function(a,s,g){this.elem=a;this.text=g?"Change "+a.tagName+" "+g:"Change "+a.tagName;this.newValues={};this.oldValues=s;for(var b in s)this.newValues[b]=b=="#text"?a.textContent:b=="#href"?svgedit.utilities.getHref(a):a.getAttribute(b)};svgedit.history.ChangeElementCommand.type=function(){return"svgedit.history.ChangeElementCommand"};svgedit.history.ChangeElementCommand.prototype.type=svgedit.history.ChangeElementCommand.type;svgedit.history.ChangeElementCommand.prototype.getText=
+function(){return this.text};svgedit.history.ChangeElementCommand.prototype.apply=function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_APPLY,this);var s=false,g;for(g in this.newValues){if(this.newValues[g])if(g=="#text")this.elem.textContent=this.newValues[g];else g=="#href"?svgedit.utilities.setHref(this.elem,this.newValues[g]):this.elem.setAttribute(g,this.newValues[g]);else if(g=="#text")this.elem.textContent="";else{this.elem.setAttribute(g,"");this.elem.removeAttribute(g)}if(g==
+"transform")s=true}if(!s)if(s=svgedit.utilities.getRotationAngle(this.elem)){g=elem.getBBox();s=["rotate(",s," ",g.x+g.width/2,",",g.y+g.height/2,")"].join("");s!=elem.getAttribute("transform")&&elem.setAttribute("transform",s)}a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_APPLY,this);return true};svgedit.history.ChangeElementCommand.prototype.unapply=function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_UNAPPLY,this);var s=false,g;for(g in this.oldValues){if(this.oldValues[g])if(g==
+"#text")this.elem.textContent=this.oldValues[g];else g=="#href"?svgedit.utilities.setHref(this.elem,this.oldValues[g]):this.elem.setAttribute(g,this.oldValues[g]);else if(g=="#text")this.elem.textContent="";else this.elem.removeAttribute(g);if(g=="transform")s=true}if(!s)if(s=svgedit.utilities.getRotationAngle(this.elem)){g=this.elem.getBBox();s=["rotate(",s," ",g.x+g.width/2,",",g.y+g.height/2,")"].join("");s!=this.elem.getAttribute("transform")&&this.elem.setAttribute("transform",s)}svgedit.transformlist.removeElementFromListMap(this.elem);
+a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_UNAPPLY,this);return true};svgedit.history.ChangeElementCommand.prototype.elements=function(){return[this.elem]};svgedit.history.BatchCommand=function(a){this.text=a||"Batch Command";this.stack=[]};svgedit.history.BatchCommand.type=function(){return"svgedit.history.BatchCommand"};svgedit.history.BatchCommand.prototype.type=svgedit.history.BatchCommand.type;svgedit.history.BatchCommand.prototype.getText=function(){return this.text};svgedit.history.BatchCommand.prototype.apply=
+function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_APPLY,this);for(var s=this.stack.length,g=0;g<s;++g)this.stack[g].apply(a);a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_APPLY,this)};svgedit.history.BatchCommand.prototype.unapply=function(a){a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_UNAPPLY,this);for(var s=this.stack.length-1;s>=0;s--)this.stack[s].unapply(a);a&&a.handleHistoryEvent(svgedit.history.HistoryEventTypes.AFTER_UNAPPLY,
+this)};svgedit.history.BatchCommand.prototype.elements=function(){for(var a=[],s=this.stack.length;s--;)for(var g=this.stack[s].elements(),b=g.length;b--;)a.indexOf(g[b])==-1&&a.push(g[b]);return a};svgedit.history.BatchCommand.prototype.addSubCommand=function(a){this.stack.push(a)};svgedit.history.BatchCommand.prototype.isEmpty=function(){return this.stack.length==0};svgedit.history.UndoManager=function(a){this.handler_=a||null;this.undoStackPointer=0;this.undoStack=[];this.undoChangeStackPointer=
+-1;this.undoableChangeStack=[]};svgedit.history.UndoManager.prototype.resetUndoStack=function(){this.undoStack=[];this.undoStackPointer=0};svgedit.history.UndoManager.prototype.getUndoStackSize=function(){return this.undoStackPointer};svgedit.history.UndoManager.prototype.getRedoStackSize=function(){return this.undoStack.length-this.undoStackPointer};svgedit.history.UndoManager.prototype.getNextUndoCommandText=function(){return this.undoStackPointer>0?this.undoStack[this.undoStackPointer-1].getText():
+""};svgedit.history.UndoManager.prototype.getNextRedoCommandText=function(){return this.undoStackPointer<this.undoStack.length?this.undoStack[this.undoStackPointer].getText():""};svgedit.history.UndoManager.prototype.undo=function(){this.undoStackPointer>0&&this.undoStack[--this.undoStackPointer].unapply(this.handler_)};svgedit.history.UndoManager.prototype.redo=function(){this.undoStackPointer<this.undoStack.length&&this.undoStack.length>0&&this.undoStack[this.undoStackPointer++].apply(this.handler_)};
+svgedit.history.UndoManager.prototype.addCommandToHistory=function(a){if(this.undoStackPointer<this.undoStack.length&&this.undoStack.length>0)this.undoStack=this.undoStack.splice(0,this.undoStackPointer);this.undoStack.push(a);this.undoStackPointer=this.undoStack.length};svgedit.history.UndoManager.prototype.beginUndoableChange=function(a,s){for(var g=++this.undoChangeStackPointer,b=s.length,p=Array(b),w=Array(b);b--;){var c=s[b];if(c!=null){w[b]=c;p[b]=c.getAttribute(a)}}this.undoableChangeStack[g]=
+{attrName:a,oldValues:p,elements:w}};svgedit.history.UndoManager.prototype.finishUndoableChange=function(){for(var a=this.undoChangeStackPointer--,s=this.undoableChangeStack[a],g=s.elements.length,b=s.attrName,p=new svgedit.history.BatchCommand("Change "+b);g--;){var w=s.elements[g];if(w!=null){var c={};c[b]=s.oldValues[g];c[b]!=w.getAttribute(b)&&p.addSubCommand(new svgedit.history.ChangeElementCommand(w,c,b))}}this.undoableChangeStack[a]=null;return p}})();svgedit=svgedit||{};
+(function(){if(!svgedit.select)svgedit.select={};var a,s,g;svgedit.select.Selector=function(b,p){this.id=b;this.selectedElement=p;this.locked=true;this.selectorGroup=a.createSVGElement({element:"g",attr:{id:"selectorGroup"+this.id}});this.selectorRect=this.selectorGroup.appendChild(a.createSVGElement({element:"path",attr:{id:"selectedBox"+this.id,fill:"none",stroke:"#4F80FF","stroke-width":"1","shape-rendering":"crispEdges",style:"pointer-events:none"}}));svgedit.browser.isTouch()&&this.selectorRect.setAttribute("stroke-opacity",
+0.3);this.gripCoords={nw:null,n:null,ne:null,e:null,se:null,s:null,sw:null,w:null};this.reset(this.selectedElement)};svgedit.select.Selector.prototype.reset=function(b){this.locked=true;this.selectedElement=b;this.resize();this.selectorGroup.setAttribute("display","inline")};svgedit.select.Selector.prototype.updateGripCursors=function(b){var p=[];b=Math.round(b/45);if(b<0)b+=8;for(var w in g.selectorGrips)p.push(w);for(;b>0;){p.push(p.shift());b--}b=0;for(w in g.selectorGrips){g.selectorGrips[w].setAttribute("style",
+"cursor:"+p[b]+"-resize");b++}};svgedit.select.Selector.prototype.showGrips=function(b){g.selectorGripsGroup.setAttribute("display",b?"inline":"none");var p=this.selectedElement;this.hasGrips=b;if(p&&b){this.selectorGroup.appendChild(g.selectorGripsGroup);this.updateGripCursors(svgedit.utilities.getRotationAngle(p))}};svgedit.select.Selector.prototype.resize=function(){var b=this.selectorRect,p=g,w=p.selectorGrips,c=this.selectedElement,f=c.getAttribute("stroke-width"),d=a.currentZoom(),n=1/d;if(c.getAttribute("stroke")!==
+"none"&&!isNaN(f))n+=f/2;var v=c.tagName;if(v==="text")n+=2/d;f=svgedit.transformlist.getTransformList(c);f=svgedit.math.transformListToTransform(f).matrix;f.e*=d;f.f*=d;var B=svgedit.utilities.getBBox(c);if(v==="g"&&!$.data(c,"gsvg"))if(v=a.getStrokedBBox(c.childNodes))B=v;v=B.x;var q=B.y,L=B.width;B=B.height;n*=d;d=svgedit.math.transformBox(v*d,q*d,L*d,B*d,f);f=d.aabox;v=f.x-n;q=f.y-n;L=f.width+n*2;var Q=f.height+n*2;f=v+L/2;B=q+Q/2;if(c=svgedit.utilities.getRotationAngle(c)){v=a.svgRoot().createSVGTransform();
+v.setRotate(-c,f,B);v=v.matrix;d.tl=svgedit.math.transformPoint(d.tl.x,d.tl.y,v);d.tr=svgedit.math.transformPoint(d.tr.x,d.tr.y,v);d.bl=svgedit.math.transformPoint(d.bl.x,d.bl.y,v);d.br=svgedit.math.transformPoint(d.br.x,d.br.y,v);v=d.tl;L=v.x;Q=v.y;var K=v.x,I=v.y;v=Math.min;q=Math.max;L=v(L,v(d.tr.x,v(d.bl.x,d.br.x)))-n;Q=v(Q,v(d.tr.y,v(d.bl.y,d.br.y)))-n;K=q(K,q(d.tr.x,q(d.bl.x,d.br.x)))+n;I=q(I,q(d.tr.y,q(d.bl.y,d.br.y)))+n;v=L;q=Q;L=K-L;Q=I-Q}n=a.svgRoot().suspendRedraw(100);b.setAttribute("d",
+"M"+v+","+q+" L"+(v+L)+","+q+" "+(v+L)+","+(q+Q)+" "+v+","+(q+Q)+"z");this.selectorGroup.setAttribute("transform",c?"rotate("+[c,f,B].join(",")+")":"");if(svgedit.browser.isTouch()){v-=15.75;q-=15.75}else{v-=4;q-=4}this.gripCoords={nw:[v,q].map(Math.round),ne:[v+L,q].map(Math.round),sw:[v,q+Q].map(Math.round),se:[v+L,q+Q].map(Math.round),n:[v+L/2,q].map(Math.round),w:[v,q+Q/2].map(Math.round),e:[v+L,q+Q/2].map(Math.round),s:[v+L/2,q+Q].map(Math.round)};for(var S in this.gripCoords){b=this.gripCoords[S];
+w[S].setAttribute("x",b[0]);w[S].setAttribute("y",b[1])}this.rotateCoords={nw:[v,q],ne:[v+L+8,q],sw:[v,q+Q+8],se:[v+L+8,q+Q+8]};for(S in this.rotateCoords){b=this.rotateCoords[S];p.rotateGrips[S].setAttribute("cx",b[0]);p.rotateGrips[S].setAttribute("cy",b[1])}a.svgRoot().unsuspendRedraw(n)};svgedit.select.SelectorManager=function(){this.rubberBandBox=this.selectorParentGroup=null;this.selectors=[];this.selectorMap={};this.selectorGrips={nw:null,n:null,ne:null,e:null,se:null,s:null,sw:null,w:null};
+this.selectorGripsGroup=null;this.rotateGrips={nw:null,ne:null,se:null,sw:null};this.initGroup()};svgedit.select.SelectorManager.prototype.initGroup=function(){this.selectorParentGroup&&this.selectorParentGroup.parentNode&&this.selectorParentGroup.parentNode.removeChild(this.selectorParentGroup);this.selectorParentGroup=a.createSVGElement({element:"g",attr:{id:"selectorParentGroup"}});this.selectorGripsGroup=a.createSVGElement({element:"g",attr:{display:"none"}});this.selectorParentGroup.appendChild(this.selectorGripsGroup);
+a.svgRoot().appendChild(this.selectorParentGroup);this.selectorMap={};this.selectors=[];this.rubberBandBox=null;for(var b in this.rotateGrips){var p=a.createSVGElement({element:"circle",attr:{id:"selectorGrip_rotate_"+b,fill:"#000",r:8,stroke:"#000","fill-opacity":0,"stroke-opacity":0,"stroke-width":0,style:"cursor:url("+s.imgPath+"rotate.png) 12 12, auto;"}});$.data(p,"dir",b);$.data(p,"type","rotate");this.rotateGrips[b]=this.selectorGripsGroup.appendChild(p)}for(b in this.selectorGrips){p=a.createSVGElement({element:"rect",
+attr:{id:"selectorGrip_resize_"+b,width:8,height:8,fill:"#4F80FF",stroke:"rgba(0,0,0,0)","stroke-width":1,style:"cursor:"+b+"-resize","pointer-events":"all"}});if(svgedit.browser.isTouch()){p.setAttribute("width",30.5);p.setAttribute("height",30.5);p.setAttribute("fill-opacity",0.3)}$.data(p,"dir",b);$.data(p,"type","resize");this.selectorGrips[b]=this.selectorGripsGroup.appendChild(p)}if(!$("#canvasBackground").length){b=s.dimensions;b=a.createSVGElement({element:"svg",attr:{id:"canvasBackground",
+width:b[0],height:b[1],x:0,y:0,overflow:svgedit.browser.isWebkit()?"none":"visible",style:"pointer-events:none"}});p=a.createSVGElement({element:"defs",attr:{id:"placeholder_defs"}});var w=a.createSVGElement({element:"pattern",attr:{id:"checkerPattern",patternUnits:"userSpaceOnUse",x:0,y:0,width:20,height:20,viewBox:"0 0 10 10"}}),c=a.createSVGElement({element:"rect",attr:{x:0,y:0,width:10,height:10,fill:"#fff"}}),f=a.createSVGElement({element:"rect",attr:{x:0,y:0,width:5,height:5,fill:"#eee"}}),
+d=a.createSVGElement({element:"rect",attr:{x:5,y:5,width:5,height:5,fill:"#eee"}}),n=a.createSVGElement({element:"rect",attr:{width:"100%",height:"100%",x:0,y:0,"stroke-width":1,stroke:"#000",fill:"url(#checkerPattern)",style:"pointer-events:none"}});b.appendChild(p);p.appendChild(w);w.appendChild(c);w.appendChild(f);w.appendChild(d);b.appendChild(n);a.svgRoot().insertBefore(b,a.svgContent())}};svgedit.select.SelectorManager.prototype.requestSelector=function(b){if(b==null)return null;var p=this.selectors.length;
+if(typeof this.selectorMap[b.id]=="object"){this.selectorMap[b.id].locked=true;return this.selectorMap[b.id]}for(var w=0;w<p;++w)if(this.selectors[w]&&!this.selectors[w].locked){this.selectors[w].locked=true;this.selectors[w].reset(b);this.selectorMap[b.id]=this.selectors[w];return this.selectors[w]}this.selectors[p]=new svgedit.select.Selector(p,b);this.selectorParentGroup.appendChild(this.selectors[p].selectorGroup);this.selectorMap[b.id]=this.selectors[p];return this.selectors[p]};svgedit.select.SelectorManager.prototype.releaseSelector=
+function(b){if(b!=null)for(var p=this.selectors.length,w=this.selectorMap[b.id],c=0;c<p;++c)if(this.selectors[c]&&this.selectors[c]==w){w.locked==false&&console.log("WARNING! selector was released but was already unlocked");delete this.selectorMap[b.id];w.locked=false;w.selectedElement=null;w.showGrips(false);try{w.selectorGroup.setAttribute("display","none")}catch(f){}break}};svgedit.select.SelectorManager.prototype.getRubberBandBox=function(){if(!this.rubberBandBox)this.rubberBandBox=this.selectorParentGroup.appendChild(a.createSVGElement({element:"rect",
+attr:{id:"selectorRubberBand",fill:"none",stroke:"#666","stroke-width":1,"stroke-dasharray":"3,2",display:"none",style:"pointer-events:none"}}));return this.rubberBandBox};svgedit.select.init=function(b,p){s=b;a=p;g=new svgedit.select.SelectorManager;a.createSVGElement({element:"g",attr:{id:"hover_group"}})};svgedit.select.getSelectorManager=function(){return g}})();svgedit=svgedit||{};
+(function(){if(!svgedit.draw)svgedit.draw={};var a="a,circle,ellipse,foreignObject,g,image,line,path,polygon,polyline,rect,svg,text,tspan,use".split(","),s={LET_DOCUMENT_DECIDE:0,ALWAYS_RANDOMIZE:1,NEVER_RANDOMIZE:2},g=s.LET_DOCUMENT_DECIDE;svgedit.draw.Layer=function(b,p){this.name_=b;this.group_=p};svgedit.draw.Layer.prototype.getName=function(){return this.name_};svgedit.draw.Layer.prototype.getGroup=function(){return this.group_};svgedit.draw.randomizeIds=function(b,p){g=b==false?s.NEVER_RANDOMIZE:
+s.ALWAYS_RANDOMIZE;if(g==s.ALWAYS_RANDOMIZE&&!p.getNonce())p.setNonce(Math.floor(Math.random()*100001));else g==s.NEVER_RANDOMIZE&&p.getNonce()&&p.clearNonce()};svgedit.draw.Drawing=function(b,p){if(!b||!b.tagName||!b.namespaceURI||b.tagName!="svg"||b.namespaceURI!="http://www.w3.org/2000/svg")throw"Error: svgedit.draw.Drawing instance initialized without a <svg> element";this.svgElem_=b;this.obj_num=0;this.idPrefix=p||"svg_";this.releasedNums=[];this.all_layers=[];this.current_layer=null;this.nonce_=
+"";var w=this.svgElem_.getAttributeNS("http://svg-edit.googlecode.com","nonce");if(w&&g!=s.NEVER_RANDOMIZE)this.nonce_=w;else g==s.ALWAYS_RANDOMIZE&&this.setNonce(Math.floor(Math.random()*100001))};svgedit.draw.Drawing.prototype.getElem_=function(b){return this.svgElem_.querySelector?this.svgElem_.querySelector("#"+b):$(this.svgElem_).find("[id="+b+"]")[0]};svgedit.draw.Drawing.prototype.getSvgElem=function(){return this.svgElem_};svgedit.draw.Drawing.prototype.getNonce=function(){return this.nonce_};
+svgedit.draw.Drawing.prototype.setNonce=function(b){this.svgElem_.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:se","http://svg-edit.googlecode.com");this.svgElem_.setAttributeNS("http://svg-edit.googlecode.com","se:nonce",b);this.nonce_=b};svgedit.draw.Drawing.prototype.clearNonce=function(){this.nonce_=""};svgedit.draw.Drawing.prototype.getId=function(){return this.nonce_?this.idPrefix+this.nonce_+"_"+this.obj_num:this.idPrefix+this.obj_num};svgedit.draw.Drawing.prototype.getNextId=function(){var b=
+this.obj_num,p=false;if(this.releasedNums.length>0){this.obj_num=this.releasedNums.pop();p=true}else this.obj_num++;for(var w=this.getId();this.getElem_(w);){if(p){this.obj_num=b;p=false}this.obj_num++;w=this.getId()}if(p)this.obj_num=b;return w};svgedit.draw.Drawing.prototype.releaseId=function(b){var p=this.idPrefix+(this.nonce_?this.nonce_+"_":"");if(typeof b!="string"||b.indexOf(p)!=0)return false;b=parseInt(b.substr(p.length));if(typeof b!="number"||b<=0||this.releasedNums.indexOf(b)!=-1)return false;
+this.releasedNums.push(b);return true};svgedit.draw.Drawing.prototype.getNumLayers=function(){return this.all_layers.length};svgedit.draw.Drawing.prototype.hasLayer=function(b){for(var p=0;p<this.getNumLayers();p++)if(this.all_layers[p][0]==b)return true;return false};svgedit.draw.Drawing.prototype.getLayerName=function(b){if(b>=0&&b<this.getNumLayers())return this.all_layers[b][0];return""};svgedit.draw.Drawing.prototype.getCurrentLayer=function(){return this.current_layer};svgedit.draw.Drawing.prototype.getCurrentLayerName=
+function(){for(var b=0;b<this.getNumLayers();++b)if(this.all_layers[b][1]==this.current_layer)return this.getLayerName(b);return""};svgedit.draw.Drawing.prototype.setCurrentLayer=function(b){for(var p=0;p<this.getNumLayers();++p)if(b==this.getLayerName(p)){if(this.current_layer!=this.all_layers[p][1]){this.current_layer.setAttribute("style","pointer-events:none");this.current_layer=this.all_layers[p][1];this.current_layer.setAttribute("style","pointer-events:all")}return true}return false};svgedit.draw.Drawing.prototype.deleteCurrentLayer=
+function(){if(this.current_layer&&this.getNumLayers()>1){var b=this.current_layer.parentNode.removeChild(this.current_layer);this.identifyLayers();return b}return null};svgedit.draw.Drawing.prototype.identifyLayers=function(){this.all_layers=[];for(var b=this.svgElem_.childNodes.length,p=[],w=[],c=null,f=false,d=0;d<b;++d){var n=this.svgElem_.childNodes.item(d);if(n&&n.nodeType==1)if(n.tagName=="g"){f=true;var v=$("title",n).text();if(!v&&svgedit.browser.isOpera()&&n.querySelectorAll)v=$(n.querySelectorAll("title")).text();
+if(v){w.push(v);this.all_layers.push([v,n]);c=n;svgedit.utilities.walkTree(n,function(B){B.setAttribute("style","pointer-events:inherit")});c.setAttribute("style","pointer-events:none")}else p.push(n)}else if(~a.indexOf(n.nodeName)){svgedit.utilities.getBBox(n);p.push(n)}}b=this.svgElem_.ownerDocument;if(p.length>0||!f){for(d=1;w.indexOf("Layer "+d)>=0;)d++;w="Layer "+d;c=b.createElementNS("http://www.w3.org/2000/svg","g");f=b.createElementNS("http://www.w3.org/2000/svg","title");f.textContent=w;
+c.appendChild(f);for(f=0;f<p.length;++f)c.appendChild(p[f]);this.svgElem_.appendChild(c);this.all_layers.push([w,c])}svgedit.utilities.walkTree(c,function(B){B.setAttribute("style","pointer-events:inherit")});this.current_layer=c.getAttribute("data-locked")==="true"?this.all_layers.slice(-2)[0][1]:c;this.current_layer.setAttribute("style","pointer-events:all")};svgedit.draw.Drawing.prototype.createLayer=function(b){var p=this.svgElem_.ownerDocument,w=p.createElementNS("http://www.w3.org/2000/svg",
+"g");p=p.createElementNS("http://www.w3.org/2000/svg","title");p.textContent=b;w.appendChild(p);this.svgElem_.appendChild(w);this.identifyLayers();return w};svgedit.draw.Drawing.prototype.getLayerVisibility=function(b){for(var p=null,w=0;w<this.getNumLayers();++w)if(this.getLayerName(w)==b){p=this.all_layers[w][1];break}if(!p)return false;return p.getAttribute("display")!="none"};svgedit.draw.Drawing.prototype.setLayerVisibility=function(b,p){if(typeof p!="boolean")return null;for(var w=null,c=0;c<
+this.getNumLayers();++c)if(this.getLayerName(c)==b){w=this.all_layers[c][1];break}if(!w)return null;w.getAttribute("display");w.setAttribute("display",p?"inline":"none");return w};svgedit.draw.Drawing.prototype.getLayerOpacity=function(b){for(var p=0;p<this.getNumLayers();++p)if(this.getLayerName(p)==b){(b=this.all_layers[p][1].getAttribute("opacity"))||(b="1.0");return parseFloat(b)}return null};svgedit.draw.Drawing.prototype.setLayerOpacity=function(b,p){if(!(typeof p!="number"||p<0||p>1))for(var w=
+0;w<this.getNumLayers();++w)if(this.getLayerName(w)==b){this.all_layers[w][1].setAttribute("opacity",p);break}}})();svgedit=svgedit||{};
+(function(){if(!svgedit.path)svgedit.path={};var a={pathNodeTooltip:"Drag node to move it. Double-click node to change segment type",pathCtrlPtTooltip:"Drag control point to adjust curve properties"},s={2:["x","y"],4:["x","y"],6:["x","y","x1","y1","x2","y2"],8:["x","y","x1","y1"],10:["x","y","r1","r2","angle","largeArcFlag","sweepFlag"],12:["x"],14:["y"],16:["x","y","x2","y2"],18:["x","y"]},g=[],b=false,p={};svgedit.path.setLinkControlPoints=function(f){b=f};var w=svgedit.path.path=null;svgedit.path.init=
+function(f){w=f;g=[0,"ClosePath"];$.each(["Moveto","Lineto","CurvetoCubic","CurvetoQuadratic","Arc","LinetoHorizontal","LinetoVertical","CurvetoCubicSmooth","CurvetoQuadraticSmooth"],function(d,n){g.push(n+"Abs");g.push(n+"Rel")})};svgedit.path.insertItemBefore=function(f,d,n){f=f.pathSegList;if(svgedit.browser.supportsPathInsertItemBefore())f.insertItemBefore(d,n);else{for(var v=f.numberOfItems,B=[],q=0;q<v;q++){var L=f.getItem(q);B.push(L)}f.clear();for(q=0;q<v;q++){q==n&&f.appendItem(d);f.appendItem(B[q])}}};
+svgedit.path.ptObjToArr=function(f,d){for(var n=s[f],v=n.length,B=Array(v),q=0;q<v;q++)B[q]=d[n[q]];return B};svgedit.path.getGripPt=function(f,d){var n={x:d?d.x:f.item.x,y:d?d.y:f.item.y},v=f.path;if(v.matrix)n=svgedit.math.transformPoint(n.x,n.y,v.matrix);n.x*=w.getCurrentZoom();n.y*=w.getCurrentZoom();return n};svgedit.path.getPointFromGrip=function(f,d){var n={x:f.x,y:f.y};if(d.matrix){f=svgedit.math.transformPoint(n.x,n.y,d.imatrix);n.x=f.x;n.y=f.y}n.x/=w.getCurrentZoom();n.y/=w.getCurrentZoom();
+return n};svgedit.path.addPointGrip=function(f,d,n){var v=svgedit.path.getGripContainer(),B=svgedit.utilities.getElem("pathpointgrip_"+f);if(!B){B=document.createElementNS("http://www.w3.org/2000/svg","rect");svgedit.utilities.assignAttributes(B,{id:"pathpointgrip_"+f,display:"none",width:svgedit.browser.isTouch()?30:5,height:svgedit.browser.isTouch()?30:5,fill:"#fff",stroke:"#4F80FF","shape-rendering":"crispEdges","stroke-width":1,cursor:"move",style:"pointer-events:all","xlink:title":a.pathNodeTooltip});
+B=v.appendChild(B);$("#pathpointgrip_"+f).dblclick(function(){svgedit.path.path&&svgedit.path.path.setSegType()})}if(d&&n)svgedit.utilities.assignAttributes(B,{x:d-(svgedit.browser.isTouch()?15:2.5),y:n-(svgedit.browser.isTouch()?15:2.5),display:"inline"});return B};svgedit.path.getGripContainer=function(){var f=svgedit.utilities.getElem("pathpointgrip_container");if(!f){f=svgedit.utilities.getElem("selectorParentGroup").appendChild(document.createElementNS("http://www.w3.org/2000/svg","g"));f.id=
+"pathpointgrip_container"}return f};svgedit.path.addCtrlGrip=function(f){var d=svgedit.utilities.getElem("ctrlpointgrip_"+f);if(d)return d;d=document.createElementNS("http://www.w3.org/2000/svg","circle");svgedit.utilities.assignAttributes(d,{id:"ctrlpointgrip_"+f,display:"none",r:svgedit.browser.isTouch()?15:3,fill:"#4F80FF",stroke:"#4F80FF","stroke-opacity":0,"stroke-width":"3",cursor:"move",style:"pointer-events:all","xlink:title":a.pathCtrlPtTooltip});svgedit.path.getGripContainer().appendChild(d);
+return d};svgedit.path.getCtrlLine=function(f){var d=svgedit.utilities.getElem("ctrlLine_"+f);if(d)return d;d=document.createElementNS("http://www.w3.org/2000/svg","line");svgedit.utilities.assignAttributes(d,{id:"ctrlLine_"+f,stroke:"#4F80FF","stroke-width":1,style:"pointer-events:none"});svgedit.path.getGripContainer().appendChild(d);return d};svgedit.path.getPointGrip=function(f,d){var n=svgedit.path.addPointGrip(f.index);if(d){var v=svgedit.path.getGripPt(f);svgedit.utilities.assignAttributes(n,
+{x:v.x-(svgedit.browser.isTouch()?15:2.5),y:v.y-(svgedit.browser.isTouch()?15:2.5),display:"inline"})}return n};svgedit.path.getControlPoints=function(f){var d=f.item,n=f.index;if(!d||!("x1"in d)||!("x2"in d))return null;var v={};svgedit.path.getGripContainer();for(var B=[svgedit.path.path.segs[n-1].item,d],q=1;q<3;q++){var L=n+"c"+q,Q=v["c"+q+"_line"]=svgedit.path.getCtrlLine(L),K=svgedit.path.getGripPt(f,{x:d["x"+q],y:d["y"+q]}),I=svgedit.path.getGripPt(f,{x:B[q-1].x,y:B[q-1].y});svgedit.utilities.assignAttributes(Q,
+{x1:K.x,y1:K.y,x2:I.x,y2:I.y,display:"inline"});v["c"+q+"_line"]=Q;pointGrip=v["c"+q]=svgedit.path.addCtrlGrip(L);svgedit.utilities.assignAttributes(pointGrip,{cx:K.x,cy:K.y,display:"inline"});v["c"+q]=pointGrip}return v};svgedit.path.replacePathSeg=function(f,d,n,v){v=v||svgedit.path.path.elem;f=v["createSVGPathSeg"+g[f]].apply(v,n);if(svgedit.browser.supportsPathReplaceItem())v.pathSegList.replaceItem(f,d);else{n=v.pathSegList;v=n.numberOfItems;for(var B=[],q=0;q<v;q++){var L=n.getItem(q);B.push(L)}n.clear();
+for(q=0;q<v;q++)q==d?n.appendItem(f):n.appendItem(B[q])}};svgedit.path.getSegSelector=function(f,d){var n=f.index,v=svgedit.utilities.getElem("segline_"+n);if(!v){var B=svgedit.path.getGripContainer();v=document.createElementNS("http://www.w3.org/2000/svg","path");svgedit.utilities.assignAttributes(v,{id:"segline_"+n,display:"none",fill:"none",stroke:"#0ff","stroke-opacity":1,"shape-rendering":"crispEdges","stroke-width":2,style:"pointer-events:none",d:"M0,0 0,0"});B.appendChild(v)}if(d){n=f.prev;
+if(!n){v.setAttribute("display","none");return v}n=svgedit.path.getGripPt(n);svgedit.path.replacePathSeg(2,0,[n.x,n.y],v);B=svgedit.path.ptObjToArr(f.type,f.item,true);for(var q=0;q<B.length;q+=2){n=svgedit.path.getGripPt(f,{x:B[q],y:B[q+1]});B[q]=n.x;B[q+1]=n.y}svgedit.path.replacePathSeg(f.type,1,B,v)}return v};svgedit.path.smoothControlPoints=this.smoothControlPoints=function(f,d,n){var v=f.x-n.x,B=f.y-n.y,q=d.x-n.x,L=d.y-n.y;if((v!=0||B!=0)&&(q!=0||L!=0)){f=Math.atan2(B,v);d=Math.atan2(L,q);v=
+Math.sqrt(v*v+B*B);q=Math.sqrt(q*q+L*L);B=w.getSVGRoot().createSVGPoint();L=w.getSVGRoot().createSVGPoint();if(f<0)f+=2*Math.PI;if(d<0)d+=2*Math.PI;var Q=Math.abs(f-d),K=Math.abs(Math.PI-Q)/2;if(f-d>0){f=Q<Math.PI?f+K:f-K;d=Q<Math.PI?d-K:d+K}else{f=Q<Math.PI?f-K:f+K;d=Q<Math.PI?d+K:d-K}B.x=v*Math.cos(f)+n.x;B.y=v*Math.sin(f)+n.y;L.x=q*Math.cos(d)+n.x;L.y=q*Math.sin(d)+n.y;return[B,L]}};svgedit.path.Segment=function(f,d){this.selected=false;this.index=f;this.item=d;this.type=d.pathSegType;this.ctrlpts=
+[];this.segsel=this.ptgrip=null};svgedit.path.Segment.prototype.showCtrlPts=function(f){for(var d in this.ctrlpts)this.ctrlpts[d].setAttribute("display",f?"inline":"none")};svgedit.path.Segment.prototype.selectCtrls=function(){$("#ctrlpointgrip_"+this.index+"c1, #ctrlpointgrip_"+this.index+"c2").attr("fill","#4F80FF")};svgedit.path.Segment.prototype.show=function(f){if(this.ptgrip){this.ptgrip.setAttribute("display",f?"inline":"none");this.segsel.setAttribute("display",f?"inline":"none");this.showCtrlPts(f)}};
+svgedit.path.Segment.prototype.select=function(f){if(this.ptgrip){this.ptgrip.setAttribute("stroke",f?"#4F80FF":"#4F80FF");this.ptgrip.setAttribute("fill",f?"#4F80FF":"#fff");this.segsel.setAttribute("display",f?"inline":"none");this.ctrlpts&&this.selectCtrls(f);this.selected=f}};svgedit.path.Segment.prototype.addGrip=function(){this.ptgrip=svgedit.path.getPointGrip(this,true);this.ctrlpts=svgedit.path.getControlPoints(this,true);this.segsel=svgedit.path.getSegSelector(this,true)};svgedit.path.Segment.prototype.update=
+function(f){if(this.ptgrip){var d=svgedit.path.getGripPt(this),n=svgedit.browser.isTouch()?15:2.5;svgedit.utilities.assignAttributes(this.ptgrip,this.ptgrip.nodeName=="rect"?{x:d.x-n,y:d.y-n}:{cx:d.x,cy:d.y});svgedit.path.getSegSelector(this,true);if(this.ctrlpts){if(f){this.item=svgedit.path.path.elem.pathSegList.getItem(this.index);this.type=this.item.pathSegType}svgedit.path.getControlPoints(this)}}};svgedit.path.Segment.prototype.move=function(f,d){var n=this.item;n=this.ctrlpts?[n.x+=f,n.y+=
+d,n.x1,n.y1,n.x2+=f,n.y2+=d]:[n.x+=f,n.y+=d];svgedit.path.replacePathSeg(this.type,this.index,n);if(this.next&&this.next.ctrlpts){n=this.next.item;n=[n.x,n.y,n.x1+=f,n.y1+=d,n.x2,n.y2];svgedit.path.replacePathSeg(this.next.type,this.next.index,n)}if(this.mate){n=this.mate.item;n=[n.x+=f,n.y+=d];svgedit.path.replacePathSeg(this.mate.type,this.mate.index,n)}this.update(true);this.next&&this.next.update(true)};svgedit.path.Segment.prototype.setLinked=function(f){var d,n,v;if(f==2){n=1;d=this.next;if(!d)return;
+v=this.item}else{n=2;d=this.prev;if(!d)return;v=d.item}var B=d.item;B["x"+n]=v.x+v.x-this.item["x"+f];B["y"+n]=v.y+v.y-this.item["y"+f];svgedit.path.replacePathSeg(d.type,d.index,[B.x,B.y,B.x1,B.y1,B.x2,B.y2]);d.update(true)};svgedit.path.Segment.prototype.moveCtrl=function(f,d,n){var v=this.item;v["x"+f]+=d;v["y"+f]+=n;svgedit.path.replacePathSeg(this.type,this.index,[v.x,v.y,v.x1,v.y1,v.x2,v.y2]);this.update(true)};svgedit.path.Segment.prototype.setType=function(f,d){svgedit.path.replacePathSeg(f,
+this.index,d);this.type=f;this.item=svgedit.path.path.elem.pathSegList.getItem(this.index);this.showCtrlPts(f===6);this.ctrlpts=svgedit.path.getControlPoints(this);this.update(true)};svgedit.path.Path=function(f){if(!f||f.tagName!=="path")throw"svgedit.path.Path constructed without a <path> element";this.elem=f;this.segs=[];this.selected_pts=[];svgedit.path.path=this;this.init()};svgedit.path.Path.prototype.init=function(){$(svgedit.path.getGripContainer()).find("*").attr("display","none");var f=
+this.elem.pathSegList,d=f.numberOfItems;this.segs=[];this.selected_pts=[];this.first_seg=null;for(var n=0;n<d;n++){var v=f.getItem(n);v=new svgedit.path.Segment(n,v);v.path=this;this.segs.push(v)}f=this.segs;v=null;for(n=0;n<d;n++){var B=f[n],q=n+1>=d?null:f[n+1],L=n-1<0?null:f[n-1];if(B.type===2){if(L&&L.type!==1){q=f[v];q.next=f[v+1];q.next.prev=q;q.addGrip()}v=n}else if(q&&q.type===1){B.next=f[v+1];B.next.prev=B;B.mate=f[v];B.addGrip();if(this.first_seg==null)this.first_seg=B}else if(q){if(B.type!==
+1){B.addGrip();if(q&&q.type!==2){B.next=q;B.next.prev=B}}}else if(B.type!==1){q=f[v];q.next=f[v+1];q.next.prev=q;q.addGrip();B.addGrip();if(!this.first_seg)this.first_seg=f[v]}}return this};svgedit.path.Path.prototype.eachSeg=function(f){for(var d=this.segs.length,n=0;n<d;n++)if(f.call(this.segs[n],n)===false)break};svgedit.path.Path.prototype.addSeg=function(f){var d=this.segs[f];if(d.prev){var n=d.prev,v;switch(d.item.pathSegType){case 4:var B=(d.item.x+n.item.x)/2,q=(d.item.y+n.item.y)/2;v=this.elem.createSVGPathSegLinetoAbs(B,
+q);break;case 6:v=(n.item.x+d.item.x1)/2;var L=(d.item.x1+d.item.x2)/2,Q=(d.item.x2+d.item.x)/2,K=(v+L)/2;L=(L+Q)/2;B=(K+L)/2;var I=(n.item.y+d.item.y1)/2,S=(d.item.y1+d.item.y2)/2;n=(d.item.y2+d.item.y)/2;var R=(I+S)/2;S=(S+n)/2;q=(R+S)/2;v=this.elem.createSVGPathSegCurvetoCubicAbs(B,q,v,I,K,R);svgedit.path.replacePathSeg(d.type,f,[d.item.x,d.item.y,L,S,Q,n])}svgedit.path.insertItemBefore(this.elem,v,f)}};svgedit.path.Path.prototype.deleteSeg=function(f){var d=this.segs[f],n=this.elem.pathSegList;
+d.show(false);var v=d.next;if(d.mate){var B=[v.item.x,v.item.y];svgedit.path.replacePathSeg(2,v.index,B);svgedit.path.replacePathSeg(4,d.index,B);n.removeItem(d.mate.index)}else{if(!d.prev){B=[v.item.x,v.item.y];svgedit.path.replacePathSeg(2,d.next.index,B)}n.removeItem(f)}};svgedit.path.Path.prototype.subpathIsClosed=function(f){var d=false;svgedit.path.path.eachSeg(function(n){if(n<=f)return true;if(this.type===2)return false;else if(this.type===1){d=true;return false}});return d};svgedit.path.Path.prototype.removePtFromSelection=
+function(f){var d=this.selected_pts.indexOf(f);if(d!=-1){this.segs[f].select(false);this.selected_pts.splice(d,1)}};svgedit.path.Path.prototype.clearSelection=function(){this.eachSeg(function(){this.select(false)});this.selected_pts=[]};svgedit.path.Path.prototype.storeD=function(){this.last_d=this.elem.getAttribute("d")};svgedit.path.Path.prototype.show=function(f){this.eachSeg(function(){this.show(f)});f&&this.selectPt(this.first_seg.index);return this};svgedit.path.Path.prototype.movePts=function(f,
+d){for(var n=this.selected_pts.length;n--;)this.segs[this.selected_pts[n]].move(f,d)};svgedit.path.Path.prototype.moveCtrl=function(f,d){var n=this.segs[this.selected_pts[0]];n.moveCtrl(this.dragctrl,f,d);b&&n.setLinked(this.dragctrl)};svgedit.path.Path.prototype.setSegType=function(f){this.storeD();for(var d=this.selected_pts.length,n;d--;){var v=this.segs[this.selected_pts[d]],B=v.prev;if(B){if(!f){n="Toggle Path Segment Type";f=v.type==6?4:6}f-=0;var q=v.item.x,L=v.item.y,Q=B.item.x;B=B.item.y;
+var K;switch(f){case 6:if(v.olditem){Q=v.olditem;K=[q,L,Q.x1,Q.y1,Q.x2,Q.y2]}else{K=q-Q;var I=L-B;K=[q,L,Q+K/3,B+I/3,q-K/3,L-I/3]}break;case 4:K=[q,L];v.olditem=v.item}v.setType(f,K)}}svgedit.path.path.endChanges(n)};svgedit.path.Path.prototype.selectPt=function(f,d){this.clearSelection();f==null&&this.eachSeg(function(n){if(this.prev)f=n});this.addPtsToSelection(f);if(d){this.dragctrl=d;b&&this.segs[f].setLinked(d)}};svgedit.path.Path.prototype.update=function(){var f=this.elem;if(svgedit.utilities.getRotationAngle(f)){this.matrix=
+svgedit.math.getMatrix(f);this.imatrix=this.matrix.inverse()}else this.imatrix=this.matrix=null;this.eachSeg(function(d){this.item=f.pathSegList.getItem(d);this.update()});return this};svgedit.path.getPath_=function(f){var d=p[f.id];d||(d=p[f.id]=new svgedit.path.Path(f));return d};svgedit.path.removePath_=function(f){f in p&&delete p[f]};var c=function(f,d,n,v,B,q,L){dx=f-n;dy=d-v;r=Math.sqrt(dx*dx+dy*dy);theta=Math.atan2(dy,dx)+L;dx=r*Math.cos(theta)+n;dy=r*Math.sin(theta)+v;dx-=B;dy-=q;r=Math.sqrt(dx*
+dx+dy*dy);theta=Math.atan2(dy,dx)-L;return{x:(r*Math.cos(theta)+B)/1,y:(r*Math.sin(theta)+q)/1}};svgedit.path.recalcRotatedPath=function(){var f=svgedit.path.path.elem,d=svgedit.utilities.getRotationAngle(f,true);if(d){var n=svgedit.utilities.getBBox(f),v=svgedit.path.path.oldbbox,B=v.x+v.width/2;v=v.y+v.height/2;var q=n.x+n.width/2;n=n.y+n.height/2;q=q-B;var L=n-v;n=Math.sqrt(q*q+L*L);L=Math.atan2(L,q)+d;q=n*Math.cos(L)+B;n=n*Math.sin(L)+v;L=f.pathSegList;for(var Q=L.numberOfItems;Q;){Q-=1;var K=
+L.getItem(Q),I=K.pathSegType;if(I!=1){var S=c(K.x,K.y,B,v,q,n,d);S=[S.x,S.y];if(K.x1!=null&&K.x2!=null){c_vals1=c(K.x1,K.y1,B,v,q,n,d);c_vals2=c(K.x2,K.y2,B,v,q,n,d);S.splice(S.length,0,c_vals1.x,c_vals1.y,c_vals2.x,c_vals2.y)}svgedit.path.replacePathSeg(I,Q,S)}}svgedit.utilities.getBBox(f);B=svgroot.createSVGTransform();f=svgedit.transformlist.getTransformList(f);B.setRotate(d*180/Math.PI,q,n);f.replaceItem(B,0)}};svgedit.path.clearData=function(){p={}}})();if(!window.console){window.console={};window.console.log=function(){};window.console.dir=function(){}}if(window.opera){window.console.log=function(a){opera.postError(a)};window.console.dir=function(){}}
+(function(){var a=jQuery.fn.attr;jQuery.fn.attr=function(s,g){var b=this.length;if(!b)return a.apply(this,arguments);for(var p=0;p<b;p++){var w=this[p];if(w.namespaceURI==="http://www.w3.org/2000/svg")if(g!==undefined)w.setAttribute(s,g);else if($.isArray(s)){b=s.length;for(p={};b--;){var c=s[b],f=w.getAttribute(c);if(f||f==="0")f=isNaN(f)?f:f-0;p[c]=f}return p}else if(typeof s==="object")for(c in s)w.setAttribute(c,s[c]);else{if((f=w.getAttribute(s))||f==="0")f=isNaN(f)?f:f-0;return f}else return a.apply(this,
+arguments)}return this}})();
+$.SvgCanvas=function(a,s){function g(e,k){for(var l=svgedit.utilities.getBBox(e),C=0;C<2;C++){var A=C===0?"fill":"stroke",G=e.getAttribute(A);if(G&&G.indexOf("url(")===0){G=P(G);if(G.tagName==="linearGradient"){var D=G.getAttribute("x1")||0,z=G.getAttribute("y1")||0,F=G.getAttribute("x2")||1,h=G.getAttribute("y2")||0;D=l.width*D+l.x;z=l.height*z+l.y;F=l.width*F+l.x;h=l.height*h+l.y;D=N(D,z,k);h=N(F,h,k);F={};F.x1=(D.x-l.x)/l.width;F.y1=(D.y-l.y)/l.height;F.x2=(h.x-l.x)/l.width;F.y2=(h.y-l.y)/l.height;
+G=G.cloneNode(true);$(G).attr(F);G.id=ka();gb().appendChild(G);e.setAttribute(A,"url(#"+G.id+")")}}}}var b="http://www.w3.org/2000/svg",p={show_outside_canvas:true,selectNew:true,dimensions:[640,480]};s&&$.extend(p,s);var w=p.dimensions,c=this,f=a.ownerDocument,d=f.importNode(svgedit.utilities.text2xml('<svg id="svgroot" xmlns="'+b+'" xlinkns="http://www.w3.org/1999/xlink" width="'+w[0]+'" height="'+w[1]+'" x="'+w[0]+'" y="'+w[1]+'" overflow="visible"><defs><filter id="canvashadow" filterUnits="objectBoundingBox"><feGaussianBlur in="SourceAlpha" stdDeviation="4" result="blur"/><feOffset in="blur" dx="5" dy="5" result="offsetBlur"/><feMerge><feMergeNode in="offsetBlur"/><feMergeNode in="SourceGraphic"/></feMerge></filter></defs></svg>').documentElement,
+true);a.appendChild(d);var n=f.createElementNS(b,"svg");(c.clearSvgContentElement=function(){for(;n.firstChild;)n.removeChild(n.firstChild);$(n).attr({id:"svgcontent",width:w[0],height:w[1],x:w[0],y:w[1],overflow:p.show_outside_canvas?"visible":"hidden",xmlns:b,"xmlns:se":"http://svg-edit.googlecode.com","xmlns:xlink":"http://www.w3.org/1999/xlink"}).appendTo(d);var e=f.createComment(" Created with Method Draw - http://github.com/duopixel/Method-Draw/ ");n.appendChild(e)})();var v="svg_";c.setIdPrefix=
+function(e){v=e};c.current_drawing_=new svgedit.draw.Drawing(n,v);var B=c.getCurrentDrawing=function(){return c.current_drawing_},q=1,L=null,Q={shape:{fill:(p.initFill.color=="none"?"":"#")+p.initFill.color,fill_paint:null,fill_opacity:p.initFill.opacity,stroke:"#"+p.initStroke.color,stroke_paint:null,stroke_opacity:p.initStroke.opacity,stroke_width:p.initStroke.width,stroke_dasharray:"none",opacity:p.initOpacity}};Q.text=$.extend(true,{},Q.shape);$.extend(Q.text,{fill:"#000000",stroke_width:0,font_size:24,
+font_family:"Helvetica, Arial, sans-serif"});var K=Q.shape,I=Array(1),S=this.addSvgElementFromJson=function(e){var k=svgedit.utilities.getElem(e.attr.id),l=B().getCurrentLayer();if(k&&e.element!=k.tagName){l.removeChild(k);k=null}if(!k){k=f.createElementNS(b,e.element);if(l)(L||l).appendChild(k)}e.curStyles&&svgedit.utilities.assignAttributes(k,{fill:K.fill,stroke:K.stroke,"stroke-width":K.stroke_width,"stroke-dasharray":K.stroke_dasharray,"stroke-opacity":K.stroke_opacity,"fill-opacity":K.fill_opacity,
+opacity:K.opacity/2,style:"pointer-events:inherit"},100);svgedit.utilities.assignAttributes(k,e.attr,100);svgedit.utilities.cleanupElement(k);return k},R=c.getTransformList=svgedit.transformlist.getTransformList,N=svgedit.math.transformPoint,ga=c.matrixMultiply=svgedit.math.matrixMultiply,oa=c.hasMatrixTransform=svgedit.math.hasMatrixTransform,Y=c.transformListToTransform=svgedit.math.transformListToTransform,V=svgedit.math.snapToAngle,ea=svgedit.math.getMatrix;svgedit.units.init({getBaseUnit:function(){return p.baseUnit},
+getElement:svgedit.utilities.getElem,getHeight:function(){return n.getAttribute("height")/q},getWidth:function(){return n.getAttribute("width")/q},getRoundDigits:function(){return $a.round_digits}});var Ba=c.convertToNum=svgedit.units.convertToNum;svgedit.utilities.init({getDOMDocument:function(){return f},getDOMContainer:function(){return a},getSVGRoot:function(){return d},getSelectedElements:function(){return I},getSVGContent:function(){return n}});var ja=c.getUrlFromAttr=svgedit.utilities.getUrlFromAttr,
+ca=c.getHref=svgedit.utilities.getHref,U=c.setHref=svgedit.utilities.setHref,Z=svgedit.utilities.getPathBBox;c.getBBox=svgedit.utilities.getBBox;var na=c.getRotationAngle=svgedit.utilities.getRotationAngle,pa=c.getElem=svgedit.utilities.getElem,ma=c.assignAttributes=svgedit.utilities.assignAttributes,la=this.cleanupElement=svgedit.utilities.cleanupElement,ya=svgedit.sanitize.getNSMap(),za=c.sanitizeSvg=svgedit.sanitize.sanitizeSvg,Ja=svgedit.history.MoveElementCommand,Ia=svgedit.history.InsertElementCommand,
+Ha=svgedit.history.RemoveElementCommand,Ma=svgedit.history.ChangeElementCommand,Da=svgedit.history.BatchCommand;c.undoMgr=new svgedit.history.UndoManager({handleHistoryEvent:function(e,k){var l=svgedit.history.HistoryEventTypes;if(e==l.BEFORE_UNAPPLY||e==l.BEFORE_APPLY)c.clearSelection();else if(e==l.AFTER_APPLY||e==l.AFTER_UNAPPLY){var C=k.elements();c.pathActions.clear();M("changed",C);C=k.type();l=e==l.AFTER_APPLY;if(C==Ja.type())(l?k.newParent:k.oldParent)==n&&c.identifyLayers();else if(C==Ia.type()||
+C==Ha.type()){k.parent==n&&c.identifyLayers();if(C==Ia.type())l&&Ta(k.elem);else l||Ta(k.elem);k.elem.tagName==="use"&&Gb(k.elem)}else if(C==Ma.type()){k.elem.tagName=="title"&&k.elem.parentNode.parentNode==n&&c.identifyLayers();l=l?k.newValues:k.oldValues;l.stdDeviation&&c.setBlurOffsets(k.elem.parentNode,l.stdDeviation)}}}});var wa=function(e){c.undoMgr.addCommandToHistory(e)};svgedit.select.init(p,{createSVGElement:function(e){return c.addSvgElementFromJson(e)},svgRoot:function(){return d},svgContent:function(){return n},
+currentZoom:function(){return q},getStrokedBBox:function(e){return c.getStrokedBBox([e])}});var ra=this.selectorManager=svgedit.select.getSelectorManager();svgedit.path.init({getCurrentZoom:function(){return q},getSVGRoot:function(){return d}});svgedit.utilities.snapToGrid=function(e){var k=p.snappingStep,l=p.baseUnit;if(l!=="px")k*=svgedit.units.getTypeMap()[l];return e=Math.round(e/k)*k};var va=svgedit.utilities.snapToGrid,kb={exportNoBlur:"Blurred elements will appear as un-blurred",exportNoforeignObject:"foreignObject elements will not appear",
+exportNoDashArray:"Strokes will appear filled",exportNoText:"Text may not appear as expected"},vb=["clip-path","fill","filter","marker-end","marker-mid","marker-start","mask","stroke"],cb=$.data,Ta=function(e){var k=$(e).attr(vb),l;for(l in k){var C=k[l];if(C&&C.indexOf("url(")===0){C=ja(C).substr(1);if(!pa(C)){gb().appendChild(sb[C]);delete sb[C]}}}e=e.getElementsByTagName("*");if(e.length){k=0;for(l=e.length;k<l;k++)Ta(e[k])}},Va={},Fa=p.imgPath+"logo.png",ta=[],$a={round_digits:5},Ka=false,Sa=
+null,Ga="select",db="none",lb={},Ua=Q.text,Xa=K,wb=null,sa=null,hb=[],eb={},sb={};c.clipBoard=[];var ib=this.runExtensions=function(e,k,l){var C=false;if(l)C=[];$.each(eb,function(A,G){if(e in G)if(l)C.push(G[e](k));else C=G[e](k)});return C};this.addExtension=function(e,k){if(e in eb)console.log('Cannot add extension "'+e+'", an extension by that name already exists"');else{var l=$.isFunction(k)?k($.extend(c.getPrivateMethods(),{svgroot:d,svgcontent:n,nonce:B().getNonce(),selectorManager:ra})):k;
+eb[e]=l;M("extension_added",l)}};var ab=this.round=function(e){return parseInt(e*q)/q},ob=this.getIntersectionList=function(e){if(sa==null)return null;var k=L||B().getCurrentLayer();hb.length||(hb=fb(k));var l=null;try{l=k.getIntersectionList(e,null)}catch(C){}if(l==null||typeof l.item!="function"){l=[];if(e)e=e;else{e=sa.getBBox();k={};for(var A in e)k[A]=e[A]/q;e=k}for(A=hb.length;A--;)e.width&&e.width&&svgedit.math.rectsIntersect(e,hb[A].bbox)&&l.push(hb[A].elem)}return l};getStrokedBBox=this.getStrokedBBox=
+function(e){e||(e=pb());if(!e.length)return false;var k=function(h){try{var m=svgedit.utilities.getBBox(h),o=svgedit.utilities.getRotationAngle(h);if(o&&o%90||svgedit.math.hasMatrixTransform(svgedit.transformlist.getTransformList(h))){o=false;if(["ellipse","path","line","polyline","polygon"].indexOf(h.tagName)>=0)m=o=c.convertToPath(h,true);else if(h.tagName=="rect"){var u=h.getAttribute("rx"),E=h.getAttribute("ry");if(u||E)m=o=c.convertToPath(h,true)}if(!o){var H=h.cloneNode(true),J=document.createElementNS(b,
+"g"),O=h.parentNode;O.appendChild(J);J.appendChild(H);m=svgedit.utilities.bboxToObj(J.getBBox());O.removeChild(J)}}return m}catch(X){console.log(h,X)}},l;$.each(e,function(){if(!l)if(this.parentNode)l=k(this)});if(l==null)return null;var C=l.x+l.width,A=l.y+l.height,G=l.x,D=l.y,z=function(h){var m=h.getAttribute("stroke-width"),o=0;if(h.getAttribute("stroke")!="none"&&!isNaN(m))o+=m/2;return o},F=[];$.each(e,function(h,m){var o=k(m);if(o){var u=z(m);G=Math.min(G,o.x-u);D=Math.min(D,o.y-u);F.push(o)}});
+l.x=G;l.y=D;$.each(e,function(h,m){var o=F[h];if(o&&m.nodeType==1){var u=z(m);C=Math.max(C,o.x+o.width+u);A=Math.max(A,o.y+o.height+u)}});l.width=C-G;l.height=A-D;return l};var pb=this.getVisibleElements=function(e){e||(e=$(n).children());e.find("#canvas_background").length&&e.splice(0,1);var k=[];$(e).children().each(function(l,C){try{C.getBBox()&&k.push(C)}catch(A){}});return k.reverse()},fb=this.getVisibleElementsAndBBoxes=function(e){e||(e=$(n).children());var k=[];$(e).children().each(function(l,
+C){try{C.getBBox()&&k.push({elem:C,bbox:getStrokedBBox([C])})}catch(A){}});return k.reverse()},tb=this.groupSvgElem=function(e){var k=document.createElementNS(b,"g");e.parentNode.replaceChild(k,e);$(k).append(e).data("gsvg",e)[0].id=ka()},ia=function(e){var k=document.createElementNS(e.namespaceURI,e.nodeName);k.removeAttribute("id");$.each(e.attributes,function(C,A){A.localName!="-moz-math-font-style"&&k.setAttributeNS(A.namespaceURI,A.nodeName,A.nodeValue)});if(svgedit.browser.isWebkit()&&e.nodeName==
+"path"){var l=La.convertPath(e);k.setAttribute("d",l)}$.each(e.childNodes,function(C,A){switch(A.nodeType){case 1:k.appendChild(ia(A));break;case 3:k.textContent=A.nodeValue}});if($(e).data("gsvg"))$(k).data("gsvg",k.firstChild);else if($(e).data("symbol")){e=$(e).data("symbol");$(k).data("ref",e).data("symbol",e)}else k.tagName=="image"&&Fb(k);k.id=ka();return k},aa,ka,M;(function(e){var k={};aa=e.getId=function(){return B().getId()};ka=e.getNextId=function(){return B().getNextId()};M=e.call=function(l,
+C){if(k[l])return k[l](this,C)};e.bind=function(l,C){var A=k[l];k[l]=C;return A}})(c);this.prepareSvg=function(e){this.sanitizeSvg(e.documentElement);e=e.getElementsByTagNameNS(b,"path");for(var k=0,l=e.length;k<l;++k){var C=e[k];C.setAttribute("d",La.convertPath(C));La.fixEnd(C)}};var P=this.getRefElem=function(e){return pa(ja(e).substr(1))},da=function(e){if(!svgedit.browser.isGecko())return e;var k=e.cloneNode(true);e.parentNode.insertBefore(k,e);e.parentNode.removeChild(e);ra.releaseSelector(e);
+I[0]=k;ra.requestSelector(k).showGrips(true);return k};this.setRotationAngle=function(e,k){e=parseFloat(e);var l=I[0];if(l){var C=l.getAttribute("transform"),A=svgedit.utilities.getBBox(l),G=A.x+A.width/2,D=A.y+A.height/2;A=R(l);A.numberOfItems>0&&A.getItem(0).type==4&&A.removeItem(0);if(e!=0){G=N(G,D,Y(A).matrix);D=d.createSVGTransform();D.setRotate(e,G.x,G.y);A.numberOfItems?A.insertItemBefore(D,0):A.appendItem(D)}else A.numberOfItems==0&&l.removeAttribute("transform");if(!k){A=l.getAttribute("transform");
+l.setAttribute("transform",C);Ya("transform",A,I);M("changed",I)}pa("pathpointgrip_container");l=ra.requestSelector(I[0]);l.resize();l.updateGripCursors(e)}};var Ea=this.recalculateAllSelectedDimensions=function(){for(var e=new Da(db=="none"?"position":"size"),k=I.length;k--;){var l=Ra(I[k]);l&&e.addSubCommand(l)}if(!e.isEmpty()){wa(e);M("changed",I)}},Oa=[0,"z","M","m","L","l","C","c","Q","q","A","a","H","h","V","v","S","s","T","t"],Wa=function(e){console.log([e.a,e.b,e.c,e.d,e.e,e.f])},Za=this.remapElement=
+function(e,k,l){var C=p.gridSnapping&&e.parentNode.parentNode.localName==="svg",A=function(){if(C)for(var o in k)k[o]=va(k[o]);ma(e,k,1E3,true)};box=svgedit.utilities.getBBox(e);for(var G=0;G<2;G++){var D=G===0?"fill":"stroke",z=e.getAttribute(D);if(z&&z.indexOf("url(")===0)if(l.a<0||l.d<0){z=P(z).cloneNode(true);if(l.a<0){var F=z.getAttribute("x1"),h=z.getAttribute("x2");z.setAttribute("x1",-(F-1));z.setAttribute("x2",-(h-1))}if(l.d<0){F=z.getAttribute("y1");h=z.getAttribute("y2");z.setAttribute("y1",
+-(F-1));z.setAttribute("y2",-(h-1))}z.id=ka();gb().appendChild(z);e.setAttribute(D,"url(#"+z.id+")")}}G=e.tagName;if(G==="g"||G==="text"||G==="use")if(l.a==1&&l.b==0&&l.c==0&&l.d==1&&(l.e!=0||l.f!=0)){D=Y(e).matrix;D=ga(D.inverse(),l,D);k.x=parseFloat(k.x)+D.e;k.y=parseFloat(k.y)+D.f}else{D=R(e);z=d.createSVGTransform();z.setMatrix(ga(Y(D).matrix,l));D.clear();D.appendItem(z)}switch(G){case "foreignObject":case "rect":case "image":if(G==="image"&&(l.a<0||l.d<0)){D=R(e);z=d.createSVGTransform();z.setMatrix(ga(Y(D).matrix,
+l));D.clear();D.appendItem(z)}else{D=N(k.x,k.y,l);k.width=l.a*k.width;k.height=l.d*k.height;k.x=D.x+Math.min(0,k.width);k.y=D.y+Math.min(0,k.height);k.width=Math.abs(k.width);k.height=Math.abs(k.height)}A();break;case "ellipse":G=N(k.cx,k.cy,l);k.cx=G.x;k.cy=G.y;k.rx=l.a*k.rx;k.ry=l.d*k.ry;k.rx=Math.abs(k.rx);k.ry=Math.abs(k.ry);A();break;case "circle":G=N(k.cx,k.cy,l);k.cx=G.x;k.cy=G.y;G=svgedit.math.transformBox(box.x,box.y,box.width,box.height,l);k.r=Math.min((G.tr.x-G.tl.x)/2,(G.bl.y-G.tl.y)/
+2);if(k.r)k.r=Math.abs(k.r);A();break;case "line":D=N(k.x1,k.y1,l);F=N(k.x2,k.y2,l);k.x1=D.x;k.y1=D.y;k.x2=F.x;k.y2=F.y;case "text":l=e.querySelectorAll("tspan");for(G=l.length;G--;){D=Ba("x",e.getAttribute("x"));z=Ba("x",l[G].getAttribute("x"));F=Ba("y",e.getAttribute("y"));h=Ba("y",l[G].getAttribute("y"));var m={};if(!isNaN(D)&&!isNaN(z)&&D!=0&&z!=0&&k.x)m.x=k.x-(D-z);if(!isNaN(F)&&!isNaN(h)&&F!=0&&h!=0&&k.y)m.y=k.y-(F-h);if(m.x||m.y)ma(l[G],m,1E3,true)}A();break;case "use":A();break;case "g":(A=
+$(e).data("gsvg"))&&ma(A,k,1E3,true);break;case "polyline":case "polygon":A=k.points.length;for(G=0;G<A;++G){h=k.points[G];h=N(h.x,h.y,l);k.points[G].x=h.x;k.points[G].y=h.y}A=k.points.length;l="";for(G=0;G<A;++G){h=k.points[G];l+=h.x+","+h.y+" "}e.setAttribute("points",l);break;case "path":D=e.pathSegList;A=D.numberOfItems;k.d=Array(A);for(G=0;G<A;++G){z=D.getItem(G);k.d[G]={type:z.pathSegType,x:z.x,y:z.y,x1:z.x1,y1:z.y1,x2:z.x2,y2:z.y2,r1:z.r1,r2:z.r2,angle:z.angle,largeArcFlag:z.largeArcFlag,sweepFlag:z.sweepFlag}}A=
+k.d.length;G=k.d[0];m=N(G.x,G.y,l);k.d[0].x=m.x;k.d[0].y=m.y;for(G=1;G<A;++G){z=k.d[G];D=z.type;if(D%2==0){h=N(z.x!=undefined?z.x:m.x,z.y!=undefined?z.y:m.y,l);D=N(z.x1,z.y1,l);F=N(z.x2,z.y2,l);z.x=h.x;z.y=h.y;z.x1=D.x;z.y1=D.y;z.x2=F.x;z.y2=F.y}else{z.x=l.a*z.x;z.y=l.d*z.y;z.x1=l.a*z.x1;z.y1=l.d*z.y1;z.x2=l.a*z.x2;z.y2=l.d*z.y2}z.r1=l.a*z.r1;z.r2=l.d*z.r2}l="";A=k.d.length;for(G=0;G<A;++G){z=k.d[G];D=z.type;l+=Oa[D];switch(D){case 13:case 12:l+=z.x+" ";break;case 15:case 14:l+=z.y+" ";break;case 3:case 5:case 19:case 2:case 4:case 18:l+=
+z.x+","+z.y+" ";break;case 7:case 6:l+=z.x1+","+z.y1+" "+z.x2+","+z.y2+" "+z.x+","+z.y+" ";break;case 9:case 8:l+=z.x1+","+z.y1+" "+z.x+","+z.y+" ";break;case 11:case 10:l+=z.r1+","+z.r2+" "+z.angle+" "+ +z.largeArcFlag+" "+ +z.sweepFlag+" "+z.x+","+z.y+" ";break;case 17:case 16:l+=z.x2+","+z.y2+" "+z.x+","+z.y+" "}}e.setAttribute("d",l)}},nb=function(e,k,l){e=P(e).firstChild;var C=R(e),A=d.createSVGTransform();A.setTranslate(k,l);C.appendItem(A);Ra(e)},Ra=this.recalculateDimensions=function(e){if(e==
+null)return null;var k=R(e);if(k&&k.numberOfItems>0){for(var l=k.numberOfItems;l--;){var C=k.getItem(l);if(C.type===0)k.removeItem(l);else if(C.type===1)svgedit.math.isIdentity(C.matrix)&&k.removeItem(l);else C.type===4&&C.angle===0&&k.removeItem(l)}if(k.numberOfItems===1&&na(e))return null}if(!k||k.numberOfItems==0){e.removeAttribute("transform");return null}if(k){l=k.numberOfItems;for(var A=[];l--;){C=k.getItem(l);if(C.type===1)A.push([C.matrix,l]);else if(A.length)A=[]}if(A.length===2){l=d.createSVGTransformFromMatrix(ga(A[1][0],
+A[0][0]));k.removeItem(A[0][1]);k.removeItem(A[1][1]);k.insertItemBefore(l,A[1][1])}l=k.numberOfItems;if(l>=2&&k.getItem(l-2).type===1&&k.getItem(l-1).type===2){A=d.createSVGTransform();C=ga(k.getItem(l-2).matrix,k.getItem(l-1).matrix);A.setMatrix(C);k.removeItem(l-2);k.removeItem(l-2);k.appendItem(A)}}switch(e.tagName){case "line":case "polyline":case "polygon":case "path":break;default:if(k.numberOfItems===1&&k.getItem(0).type===1||k.numberOfItems===2&&k.getItem(0).type===1&&k.getItem(0).type===
+4)return null}var G=$(e).data("gsvg");l=new Da("Transform");var D={},z=null;C=[];switch(e.tagName){case "line":C=["x1","y1","x2","y2"];break;case "circle":C=["cx","cy","r"];break;case "ellipse":C=["cx","cy","rx","ry"];break;case "foreignObject":case "rect":case "image":C=["width","height","x","y"];break;case "use":case "text":case "tspan":C=["x","y"];break;case "polygon":case "polyline":z={};z.points=e.getAttribute("points");A=e.points;var F=A.numberOfItems;D.points=Array(F);for(var h=0;h<F;++h){var m=
+A.getItem(h);D.points[h]={x:m.x,y:m.y}}break;case "path":z={};z.d=e.getAttribute("d");D.d=e.getAttribute("d")}if(C.length){D=$(e).attr(C);$.each(D,function(Ca,Pa){D[Ca]=Ba(Ca,Pa)})}else if(G)D={x:$(G).attr("x")||0,y:$(G).attr("y")||0};if(z==null){z=$.extend(true,{},D);$.each(z,function(Ca,Pa){z[Ca]=Ba(Ca,Pa)})}z.transform=Sa?Sa:"";if(e.tagName=="g"&&!G||e.tagName=="a"){A=svgedit.utilities.getBBox(e);var o={x:A.x+A.width/2,y:A.y+A.height/2},u=N(A.x+A.width/2,A.y+A.height/2,Y(k).matrix);C=d.createSVGMatrix();
+if(A=na(e)){h=A*Math.PI/180;F=Math.abs(h)>1.0E-10?Math.sin(h)/(1-Math.cos(h)):2/h;for(h=0;h<k.numberOfItems;++h){C=k.getItem(h);if(C.type==4){C=C.matrix;o.y=(F*C.e+C.f)/2;o.x=(C.e-F*C.f)/2;k.removeItem(h);break}}}h=C=G=0;var E=k.numberOfItems;if(E)var H=k.getItem(0).matrix;if(E>=3&&k.getItem(E-2).type==3&&k.getItem(E-3).type==2&&k.getItem(E-1).type==2){h=3;var J=k.getItem(E-3).matrix,O=k.getItem(E-2).matrix,X=k.getItem(E-1).matrix;F=e.childNodes;for(m=F.length;m--;){var ba=F.item(m);C=G=0;if(ba.nodeType==
+1){var T=R(ba);if(T){C=Y(T).matrix;G=na(ba);var fa=Sa,ha=[];Sa=ba.getAttribute("transform");if(G||oa(T)){var W=d.createSVGTransform();W.setMatrix(ga(J,O,X,C));T.clear();T.appendItem(W);ha.push(W)}else{G=ga(C.inverse(),X,C);W=d.createSVGMatrix();W.e=-G.e;W.f=-G.f;C=ga(W.inverse(),C.inverse(),J,O,X,C,G.inverse());var qa=d.createSVGTransform(),ua=d.createSVGTransform(),Aa=d.createSVGTransform();qa.setTranslate(G.e,G.f);ua.setScale(C.a,C.d);Aa.setTranslate(W.e,W.f);T.appendItem(Aa);T.appendItem(ua);T.appendItem(qa);
+ha.push(Aa);ha.push(ua);ha.push(qa)}l.addSubCommand(Ra(ba));Sa=fa}}}k.removeItem(E-1);k.removeItem(E-2);k.removeItem(E-3)}else if(E>=3&&k.getItem(E-1).type==1){h=3;C=Y(k).matrix;W=d.createSVGTransform();W.setMatrix(C);k.clear();k.appendItem(W)}else if((E==1||E>1&&k.getItem(1).type!=3)&&k.getItem(0).type==2){h=2;G=Y(k).matrix;k.removeItem(0);C=Y(k).matrix.inverse();C=ga(C,G);G=C.e;C=C.f;if(G!=0||C!=0){F=e.childNodes;m=F.length;for(E=[];m--;){ba=F.item(m);if(ba.nodeType==1){if(ba.getAttribute("clip-path")){fa=
+ba.getAttribute("clip-path");if(E.indexOf(fa)===-1){nb(fa,G,C);E.push(fa)}}fa=Sa;Sa=ba.getAttribute("transform");if(T=R(ba)){J=d.createSVGTransform();J.setTranslate(G,C);T.numberOfItems?T.insertItemBefore(J,0):T.appendItem(J);l.addSubCommand(Ra(ba));T=e.getElementsByTagNameNS(b,"use");ba="#"+ba.id;for(J=T.length;J--;){O=T.item(J);if(ba==ca(O)){X=d.createSVGTransform();X.setTranslate(-G,-C);R(O).insertItemBefore(X,0);l.addSubCommand(Ra(O))}}Sa=fa}}}E=[];Sa=fa}}else if(E==1&&k.getItem(0).type==1&&!A){h=
+1;C=k.getItem(0).matrix;F=e.childNodes;for(m=F.length;m--;){ba=F.item(m);if(ba.nodeType==1){fa=Sa;Sa=ba.getAttribute("transform");if(T=R(ba)){G=ga(C,Y(T).matrix);E=d.createSVGTransform();E.setMatrix(G);T.clear();T.appendItem(E,0);l.addSubCommand(Ra(ba));Sa=fa;fa=ba.getAttribute("stroke-width");ba.getAttribute("stroke")!=="none"&&!isNaN(fa)&&ba.setAttribute("stroke-width",fa*((Math.abs(G.a)+Math.abs(G.d))/2))}}}k.clear()}else{if(A){o=d.createSVGTransform();o.setRotate(A,u.x,u.y);k.numberOfItems?k.insertItemBefore(o,
+0):k.appendItem(o)}k.numberOfItems==0&&e.removeAttribute("transform");return null}if(h==2){if(A){u={x:o.x+H.e,y:o.y+H.f};o=d.createSVGTransform();o.setRotate(A,u.x,u.y);k.numberOfItems?k.insertItemBefore(o,0):k.appendItem(o)}}else if(h==3){C=Y(k).matrix;H=d.createSVGTransform();H.setRotate(A,o.x,o.y);H=H.matrix;o=d.createSVGTransform();o.setRotate(A,u.x,u.y);u=o.matrix.inverse();fa=C.inverse();u=ga(fa,u,H,C);G=u.e;C=u.f;if(G!=0||C!=0){F=e.childNodes;for(m=F.length;m--;){ba=F.item(m);if(ba.nodeType==
+1){fa=Sa;Sa=ba.getAttribute("transform");T=R(ba);J=d.createSVGTransform();J.setTranslate(G,C);T.numberOfItems?T.insertItemBefore(J,0):T.appendItem(J);l.addSubCommand(Ra(ba));Sa=fa}}}if(A)k.numberOfItems?k.insertItemBefore(o,0):k.appendItem(o)}}else{A=svgedit.utilities.getBBox(e);if(!A&&e.tagName!="path")return null;C=d.createSVGMatrix();if(G=na(e)){o={x:A.x+A.width/2,y:A.y+A.height/2};u=N(A.x+A.width/2,A.y+A.height/2,Y(k).matrix);h=G*Math.PI/180;F=Math.abs(h)>1.0E-10?Math.sin(h)/(1-Math.cos(h)):2/
+h;for(h=0;h<k.numberOfItems;++h){C=k.getItem(h);if(C.type==4){C=C.matrix;o.y=(F*C.e+C.f)/2;o.x=(C.e-F*C.f)/2;k.removeItem(h);break}}}h=0;E=k.numberOfItems;if(!svgedit.browser.isWebkit())if((H=e.getAttribute("fill"))&&H.indexOf("url(")===0){H=P(H);fa="pattern";if(H.tagName!==fa)fa="gradient";if(H.getAttribute(fa+"Units")==="userSpaceOnUse"){C=Y(k).matrix;A=R(H);A=Y(A).matrix;C=ga(C,A);A="matrix("+[C.a,C.b,C.c,C.d,C.e,C.f].join(",")+")";H.setAttribute(fa+"Transform",A)}}if(E>=3&&k.getItem(E-2).type==
+3&&k.getItem(E-3).type==2&&k.getItem(E-1).type==2){h=3;C=Y(k,E-3,E-1).matrix;k.removeItem(E-1);k.removeItem(E-2);k.removeItem(E-3)}else if(E==4&&k.getItem(E-1).type==1){h=3;C=Y(k).matrix;W=d.createSVGTransform();W.setMatrix(C);k.clear();k.appendItem(W);C=d.createSVGMatrix()}else if((E==1||E>1&&k.getItem(1).type!=3)&&k.getItem(0).type==2){h=2;H=k.getItem(0).matrix;fa=Y(k,1).matrix;A=fa.inverse();C=ga(A,H,fa);k.removeItem(0)}else if(E==1&&k.getItem(0).type==1&&!G){C=Y(k).matrix;switch(e.tagName){case "line":D=
+$(e).attr(["x1","y1","x2","y2"]);case "polyline":case "polygon":D.points=e.getAttribute("points");if(D.points){A=e.points;F=A.numberOfItems;D.points=Array(F);for(h=0;h<F;++h){m=A.getItem(h);D.points[h]={x:m.x,y:m.y}}}case "path":D.d=e.getAttribute("d");h=1;k.clear()}}else{h=4;if(G){o=d.createSVGTransform();o.setRotate(G,u.x,u.y);k.numberOfItems?k.insertItemBefore(o,0):k.appendItem(o)}k.numberOfItems==0&&e.removeAttribute("transform");return null}if(h==1||h==2||h==3)Za(e,D,C);if(h==2){if(G){oa(k)||
+(u={x:o.x+C.e,y:o.y+C.f});o=d.createSVGTransform();o.setRotate(G,u.x,u.y);k.numberOfItems?k.insertItemBefore(o,0):k.appendItem(o)}}else if(h==3&&G){C=Y(k).matrix;H=d.createSVGTransform();H.setRotate(G,o.x,o.y);H=H.matrix;o=d.createSVGTransform();o.setRotate(G,u.x,u.y);u=o.matrix.inverse();fa=C.inverse();u=ga(fa,u,H,C);Za(e,D,u);if(G)k.numberOfItems?k.insertItemBefore(o,0):k.appendItem(o)}}k.numberOfItems==0&&e.removeAttribute("transform");l.addSubCommand(new Ma(e,z));return l},mb=null,xa=this.clearSelection=
+function(e){if(I[0]!=null)for(var k=I.length,l=0;l<k;++l){var C=I[l];if(C==null)break;ra.releaseSelector(C);I[l]=null}e||M("selected",I)},qb=this.addToSelection=function(e,k){if(e.length!=0){for(var l=0;l<I.length;){if(I[l]==null)break;++l}for(var C=e.length;C--;){var A=e[C];if(A&&svgedit.utilities.getBBox(A)){if(A.tagName==="a"&&A.childNodes.length===1)A=A.firstChild;if(I.indexOf(A)==-1){I[l]=A;l++;A=ra.requestSelector(A);I.length>1&&A.showGrips(false)}}}M("selected",I);k||I.length==1?ra.requestSelector(I[0]).showGrips(true):
+ra.requestSelector(I[0]).showGrips(false);for(I.sort(function(G,D){if(G&&D&&G.compareDocumentPosition)return 3-(D.compareDocumentPosition(G)&6);else if(G==null)return 1});I[0]==null;)I.shift(0)}},rb=this.selectOnly=function(e,k){xa(true);qb(e,k)};this.removeFromSelection=function(e){if(I[0]!=null)if(e.length!=0){var k=Array(I.length);j=0;len=I.length;for(var l=0;l<len;++l){var C=I[l];if(C)if(e.indexOf(C)==-1){k[j]=C;j++}else ra.releaseSelector(C)}I=k}};this.selectAllInCurrentLayer=function(){var e=
+B().getCurrentLayer();if(e){Ga="select";rb($(L||e).children())}};var Bb=this.getMouseTarget=function(e){if(e==null||e.target==null)return null;e=e.target;if(e.correspondingUseElement)e=e.correspondingUseElement;if(["http://www.w3.org/1998/Math/MathML","http://www.w3.org/1999/xhtml"].indexOf(e.namespaceURI)>=0&&e.id!="svgcanvas")for(;e.nodeName!="foreignObject";){e=e.parentNode;if(!e)return d}var k=B().getCurrentLayer();if([d,a,n,k].indexOf(e)>=0)return d;if($(e).closest("#selectorParentGroup").length)return ra.selectorParentGroup;
+for(;e.parentNode&&e.parentNode!==(L||k);)e=e.parentNode;return e};(function(){var e=null,k=null,l=null,C=null,A=null,G={},D={minx:null,miny:null,maxx:null,maxy:null};$(a).mousedown(function(z){if(!c.spaceKey){var F=z.button===2;mb=n.getScreenCTM().inverse();isBotchedZoom=svgedit.browser.isGecko();var h=N(z.pageX,z.pageY,mb),m=h.x*(isBotchedZoom?1:q);h=h.y*(isBotchedZoom?1:q);z.preventDefault();if(F)Ga="select";m=m/q;h=h/q;var o=Bb(z);if(o.tagName==="a"&&o.childNodes.length===1)o=o.firstChild;var u=
+C=k=m,E=A=l=h;if(p.gridSnapping){m=va(m);h=va(h);k=va(k);l=va(l)}if(o==ra.selectorParentGroup&&I[0]!=null){o=z.target;var H=cb(o,"type");if(H=="rotate"){Ga="rotate";current_rotate_mode=cb(o,"dir")}else if(H=="resize"){Ga="resize";db=cb(o,"dir")}o=I[0]}Sa=o.getAttribute("transform");H=R(o);switch(Ga){case "select":Ka=true;db="none";if(F)Ka=false;if(o!=d){if(I.indexOf(o)==-1){z.shiftKey||xa(true);qb([o]);wb=o;La.clear()}if(!F)for(F=0;F<I.length;++F)if(I[F]!=null){var J=R(I[F]);J.numberOfItems?J.insertItemBefore(d.createSVGTransform(),
+0):J.appendItem(d.createSVGTransform())}}else if(!F){xa();Ga="multiselect";if(sa==null)sa=ra.getRubberBandBox();C*=q;A*=q;ma(sa,{x:C,y:A,width:0,height:0,display:"inline"},100)}break;case "zoom":Ka=true;if(sa==null)sa=ra.getRubberBandBox();ma(sa,{x:u*q,y:u*q,width:0,height:0,display:"inline"},100);break;case "resize":Ka=true;k=m;l=h;G=svgedit.utilities.getBBox($("#selectedBox0")[0]);var O={};$.each(G,function(X,ba){O[X]=ba/q});G=O;F=na(o)?1:0;if(oa(H)){H.insertItemBefore(d.createSVGTransform(),F);
+H.insertItemBefore(d.createSVGTransform(),F);H.insertItemBefore(d.createSVGTransform(),F)}else{H.appendItem(d.createSVGTransform());H.appendItem(d.createSVGTransform());H.appendItem(d.createSVGTransform());if(svgedit.browser.supportsNonScalingStroke()){if(m=svgedit.browser.isWebkit())J=function(X){var ba=X.getAttributeNS(null,"stroke");X.removeAttributeNS(null,"stroke");setTimeout(function(){X.setAttributeNS(null,"stroke",ba)},0)};o.style.vectorEffect="non-scaling-stroke";m&&J(o);h=o.getElementsByTagName("*");
+u=h.length;for(F=0;F<u;F++){h[F].style.vectorEffect="non-scaling-stroke";m&&J(h[F])}}}break;case "fhellipse":case "fhrect":case "fhpath":Ka=true;e=u+","+E+" ";J=K.stroke_width==0?1:K.stroke_width;S({element:"polyline",curStyles:true,attr:{points:e,id:ka(),fill:"none",opacity:K.opacity/2,"stroke-linecap":"round",style:"pointer-events:none"}});D.minx=u;D.maxx=u;D.miny=E;D.maxy=E;break;case "image":Ka=true;J=S({element:"image",attr:{x:m,y:h,width:0,height:0,id:ka(),opacity:K.opacity/2,style:"pointer-events:inherit"}});
+U(J,Fa);Fb(J);break;case "square":case "rect":Ka=true;k=m;l=h;S({element:"rect",curStyles:true,attr:{x:m,y:h,width:0,height:0,id:ka(),opacity:K.opacity/2}});break;case "line":Ka=true;J=K.stroke_width==0?1:K.stroke_width;S({element:"line",curStyles:true,attr:{x1:m,y1:h,x2:m,y2:h,id:ka(),stroke:K.stroke,"stroke-width":J,"stroke-dasharray":K.stroke_dasharray,"stroke-linejoin":K.stroke_linejoin,"stroke-linecap":K.stroke_linecap,"stroke-opacity":K.stroke_opacity,fill:"none",opacity:K.opacity/2,style:"pointer-events:none"}});
+break;case "circle":Ka=true;S({element:"circle",curStyles:true,attr:{cx:m,cy:h,r:0,id:ka(),opacity:K.opacity/2}});break;case "ellipse":Ka=true;S({element:"ellipse",curStyles:true,attr:{cx:m,cy:h,rx:0,ry:0,id:ka(),opacity:K.opacity/2}});break;case "text":Ka=true;S({element:"text",curStyles:true,attr:{x:m,y:h,id:ka(),fill:Ua.fill,"stroke-width":Ua.stroke_width,"font-size":Ua.font_size,"font-family":Ua.font_family,"text-anchor":"left","xml:space":"preserve",opacity:K.opacity}});break;case "path":case "pathedit":k*=
+q;l*=q;La.mouseDown(z,o,k,l);Ka=true;break;case "textedit":k*=q;l*=q;bb.mouseDown(z,o,k,l);Ka=true;break;case "rotate":Ka=true;c.undoMgr.beginUndoableChange("transform",I);document.getElementById("workarea").className="rotate"}J=ib("mouseDown",{event:z,start_x:k,start_y:l,selectedElements:I},true);$.each(J,function(X,ba){if(ba&&ba.started)Ka=true});if(Ga)document.getElementById("workarea").className=Ga=="resize"?z.target.style.cursor:Ga}}).mousemove(function(z){if(!(z.originalEvent.touches&&z.originalEvent.touches.length>
+1))if(Ka)if(!(z.button===1||c.spaceKey)){var F=I[0],h=N(z.pageX,z.pageY,mb),m=h.x*(isBotchedZoom?1:q);h=h.y*(isBotchedZoom?1:q);var o=pa(aa()),u=x=m/q,E=y=h/q;if(p.gridSnapping){x=va(x);y=va(y)}z.preventDefault();switch(Ga){case "select":if(I[0]!==null){u=x-k;var H=y-l;if(p.gridSnapping){u=va(u);H=va(H)}if(z.shiftKey){var J=V(k,l,x,y);x=J.x;y=J.y}if(u!=0||H!=0){E=I.length;for(var O=0;O<E;++O){F=I[O];if(F==null)break;var X=d.createSVGTransform();o=R(F);if(J){u=J.x-k;H=J.y-l}X.setTranslate(u,H);o.numberOfItems?
+o.replaceItem(X,0):o.appendItem(X);ra.requestSelector(F).resize()}if(z.altKey)if(!c.addClones){c.addClones=c.cloneSelectedElements(0,0,X);c.removeClones=function(){c.addClones&&c.addClones.forEach(function(ua){ua.parentNode&&ua.parentNode.removeChild(ua);c.addClones=false})};window.addEventListener("keyup",c.removeClones)}M("transition",I)}}break;case "multiselect":u*=q;E*=q;ma(sa,{x:Math.min(C,u),y:Math.min(A,E),width:Math.abs(u-C),height:Math.abs(E-A)},100);o=[];u=[];J=ob();E=I.length;for(O=0;O<
+E;++O){H=J.indexOf(I[O]);if(H==-1)o.push(I[O]);else J[H]=null}E=J.length;for(O=0;O<E;++O)J[O]&&u.push(J[O]);o.length>0&&c.removeFromSelection(o);u.length>0&&qb(u);break;case "resize":o=R(F);u=(J=oa(o))?G:svgedit.utilities.getBBox(F);E=u.x;O=u.y;var ba=u.width,T=u.height;u=x-k;H=y-l;if(p.gridSnapping){u=va(u);H=va(H);T=va(T);ba=va(ba)}if(X=na(F)){var fa=Math.sqrt(u*u+H*H);H=Math.atan2(H,u)-X*Math.PI/180;u=fa*Math.cos(H);H=fa*Math.sin(H)}if(db.indexOf("n")==-1&&db.indexOf("s")==-1)H=0;if(db.indexOf("e")==
+-1&&db.indexOf("w")==-1)u=0;var ha=fa=0,W=T?(T+H)/T:1,qa=ba?(ba+u)/ba:1;if(db.indexOf("n")>=0){W=T?(T-H)/T:1;ha=T}if(db.indexOf("w")>=0){qa=ba?(ba-u)/ba:1;fa=ba}u=d.createSVGTransform();H=d.createSVGTransform();ba=d.createSVGTransform();if(p.gridSnapping){E=va(E);fa=va(fa);O=va(O);ha=va(ha)}u.setTranslate(-(E+fa),-(O+ha));if(z.shiftKey)if(qa==1)qa=W;else W=qa;H.setScale(qa,W);ba.setTranslate(E+fa,O+ha);if(J){J=X?1:0;o.replaceItem(u,2+J);o.replaceItem(H,1+J);o.replaceItem(ba,0+J)}else{J=o.numberOfItems;
+o.replaceItem(ba,J-3);o.replaceItem(H,J-2);o.replaceItem(u,J-1)}ra.requestSelector(F).resize();M("transition",I);break;case "zoom":u*=q;E*=q;ma(sa,{x:Math.min(C*q,u),y:Math.min(A*q,E),width:Math.abs(u-C*q),height:Math.abs(E-A*q)},100);break;case "text":ma(o,{x:x,y:y},1E3);break;case "line":u=null;window.opera||d.suspendRedraw(1E3);if(p.gridSnapping){x=va(x);y=va(y)}E=x;J=y;if(z.shiftKey){J=V(k,l,E,J);E=J.x;J=J.y}o.setAttributeNS(null,"x2",E);o.setAttributeNS(null,"y2",J);window.opera||d.unsuspendRedraw(u);
+break;case "foreignObject":case "square":case "rect":case "image":u=Math.abs(x-k);J=Math.abs(y-l);if(Ga=="square"||z.shiftKey){u=J=Math.max(u,J);E=k<x?k:k-u;O=l<y?l:l-J}else{E=Math.min(k,x);O=Math.min(l,y)}if(z.altKey){u*=2;J*=2;E=k-u/2;O=l-J/2}if(p.gridSnapping){u=va(u);J=va(J);E=va(E);O=va(O)}ma(o,{width:u,height:J,x:E,y:O},1E3);break;case "circle":u=$(o).attr(["cx","cy"]);J=u.cx;E=u.cy;u=Math.sqrt((x-J)*(x-J)+(y-E)*(y-E));if(p.gridSnapping)u=va(u);o.setAttributeNS(null,"r",u);break;case "ellipse":u=
+$(o).attr(["cx","cy"]);J=Math.abs(k+(x-k)/2);E=Math.abs(l+(y-l)/2);u=null;window.opera||d.suspendRedraw(1E3);if(p.gridSnapping){x=va(x);J=va(J);y=va(y);E=va(E)}O=Math.abs(k-J);H=Math.abs(l-E);if(z.shiftKey){H=O;E=y>l?l+O:l-O}if(z.altKey){J=k;E=l;O=Math.abs(x-J);H=z.shiftKey?O:Math.abs(y-E)}o.setAttributeNS(null,"rx",O);o.setAttributeNS(null,"ry",H);o.setAttributeNS(null,"cx",J);o.setAttributeNS(null,"cy",E);window.opera||d.unsuspendRedraw(u);break;case "fhellipse":case "fhrect":D.minx=Math.min(u,
+D.minx);D.maxx=Math.max(u,D.maxx);D.miny=Math.min(E,D.miny);D.maxy=Math.max(E,D.maxy);case "fhpath":e+=+u+","+E+" ";o.setAttributeNS(null,"points",e);break;case "path":case "pathedit":x*=q;y*=q;if(p.gridSnapping){x=va(x);y=va(y);k=va(k);l=va(l)}if(z.shiftKey){if(J=svgedit.path.path){o=J.dragging?J.dragging[0]:k;J=J.dragging?J.dragging[1]:l}else{o=k;J=l}J=V(o,J,x,y);x=J.x;y=J.y}if(sa&&sa.getAttribute("display")!=="none"){u*=q;E*=q;ma(sa,{x:Math.min(C*q,u),y:Math.min(A*q,E),width:Math.abs(u-C*q),height:Math.abs(E-
+A*q)},100)}La.mouseMove(z,x,y);break;case "textedit":x*=q;y*=q;bb.mouseMove(m,h);break;case "rotate":u=svgedit.utilities.getBBox(F);J=u.x+u.width/2;E=u.y+u.height/2;o=ea(F);o=N(J,E,o);J=o.x;E=o.y;o=u.x;O=u.y;if(current_rotate_mode=="nw")o=u.x+u.width;if(current_rotate_mode=="se")O=u.y+u.height;if(current_rotate_mode=="sw"){o=u.x+u.width;O=u.y+u.height}compensation_angle=(Math.atan2(E-O,J-o)*(180/Math.PI)-90)%360;X=(Math.atan2(E-y,J-x)*(180/Math.PI)-90)%360;X+=compensation_angle;if(p.gridSnapping)X=
+va(X);if(z.shiftKey)X=Math.round(X/45)*45;c.setRotationAngle(X<-180?360+X:X,true);M("transition",I)}ib("mouseMove",{event:z,mouse_x:m,mouse_y:h,selected:F})}}).click(function(z){z.preventDefault();return false}).dblclick(function(z){var F=z.target.parentNode,h=Bb(z),m=h.tagName;if(F!==L){if(m==="text"&&Ga!=="textedit"){z=N(z.pageX,z.pageY,mb);bb.select(h,z.x,z.y)}if((m==="g"||m==="a")&&na(h)){Db(h);h=I[0];xa(true)}L&&Eb();F.tagName!=="g"&&F.tagName!=="a"||F===B().getCurrentLayer()||h===ra.selectorParentGroup||
+Kb(h)}}).mouseup(function(z){c.addClones=false;window.removeEventListener("keyup",c.removeClones);I=I.filter(Boolean);if(z.button!==2){var F=wb;wb=null;if(Ka){var h=N(z.pageX,z.pageY,mb),m=h.x*q;h=h.y*q;var o=m/q,u=h/q,E=pa(aa()),H=false;Ka=false;switch(Ga){case "resize":case "multiselect":if(sa!=null){sa.setAttribute("display","none");hb=[]}Ga="select";case "select":if(I[0]!=null){if(I.length==1){m=I[0];switch(m.tagName){case "g":case "use":case "image":case "foreignObject":break;default:Xa.fill=
+m.getAttribute("fill");Xa.fill_opacity=m.getAttribute("fill-opacity");Xa.stroke=m.getAttribute("stroke");Xa.stroke_opacity=m.getAttribute("stroke-opacity");Xa.stroke_width=m.getAttribute("stroke-width");Xa.stroke_dasharray=m.getAttribute("stroke-dasharray");Xa.stroke_linejoin=m.getAttribute("stroke-linejoin");Xa.stroke_linecap=m.getAttribute("stroke-linecap")}if(m.tagName=="text"){Ua.font_size=m.getAttribute("font-size");Ua.font_family=m.getAttribute("font-family")}ra.requestSelector(m).showGrips(true)}Ea();
+C=(m=svgedit.browser.isGecko())?C*q:C;A=m?A*q:A;m=Math.abs(u-A);if(m>1||m>1){z=I.length;for(m=0;m<z;++m){if(I[m]==null)break;I[m].firstChild||ra.requestSelector(I[m]).resize()}}else{m=z.target;if(I[0].nodeName==="path"&&I[1]==null)La.select(I[0]);else z.shiftKey&&F!=m&&c.removeFromSelection([m])}if(svgedit.browser.supportsNonScalingStroke())if(z=I[0]){z.removeAttribute("style");svgedit.utilities.walkTree(z,function(X){X.removeAttribute("style")})}}return;case "zoom":sa!=null&&sa.setAttribute("display",
+"none");M("zoomed",{x:Math.min(C,o),y:Math.min(A,u),width:Math.abs(o-C),height:Math.abs(u-A),factor:z.altKey?0.5:2});return;case "fhpath":F=E.getAttribute("points");u=F.indexOf(",");if(H=u>=0?F.indexOf(",",u+1)>=0:F.indexOf(" ",F.indexOf(" ")+1)>=0)E=La.smoothPolylineIntoPath(E);break;case "line":F=$(E).attr(["x1","x2","y1","y2"]);H=F.x1!=F.x2||F.y1!=F.y2;break;case "foreignObject":case "square":case "rect":case "image":F=$(E).attr(["width","height"]);H=F.width!=0||F.height!=0||Ga==="image";break;
+case "circle":H=E.getAttribute("r")!=0;break;case "ellipse":F=$(E).attr(["rx","ry"]);H=F.rx!=null||F.ry!=null;break;case "fhellipse":if(D.maxx-D.minx>0&&D.maxy-D.miny>0){E=S({element:"ellipse",curStyles:true,attr:{cx:(D.minx+D.maxx)/2,cy:(D.miny+D.maxy)/2,rx:(D.maxx-D.minx)/2,ry:(D.maxy-D.miny)/2,id:aa()}});M("changed",[E]);H=true}break;case "fhrect":if(D.maxx-D.minx>0&&D.maxy-D.miny>0){E=S({element:"rect",curStyles:true,attr:{x:D.minx,y:D.miny,width:D.maxx-D.minx,height:D.maxy-D.miny,id:aa()}});
+M("changed",[E]);H=true}break;case "text":H=true;rb([E]);bb.start(E);break;case "path":E=null;Ka=true;F=La.mouseUp(z,E,m,h);E=F.element;H=F.keep;break;case "pathedit":H=true;E=null;La.mouseUp(z);break;case "textedit":H=false;E=null;bb.mouseUp(z,m,h);break;case "rotate":H=true;E=null;Ga="select";F=c.undoMgr.finishUndoableChange();F.isEmpty()||wa(F);Ea();M("changed",I)}m=ib("mouseUp",{event:z,mouse_x:m,mouse_y:h},true);$.each(m,function(X,ba){if(ba){H=ba.keep||H;E=ba.element;Ka=ba.started||Ka}});if(!H&&
+E!=null){B().releaseId(aa());E.parentNode.removeChild(E);E=null;for(m=z.target;m.parentNode.parentNode.tagName=="g";)m=m.parentNode;if((Ga!="path"||!drawn_path)&&m.parentNode.id!="selectorParentGroup"&&m.id!="svgcanvas"&&m.id!="svgroot"){c.setMode("select");rb([m],true)}}else if(E!=null){c.addedNew=true;z=0.2;var J;if(false.beginElement&&E.getAttribute("opacity")!=K.opacity){J=$(false).clone().attr({to:K.opacity,dur:z}).appendTo(E);try{J[0].beginElement()}catch(O){}}else z=0;setTimeout(function(){J&&
+J.remove();E.setAttribute("opacity",K.opacity);E.setAttribute("style","pointer-events:inherit");la(E);if(Ga==="path")La.toEditMode(E);else p.selectNew&&rb([E],true);wa(new Ia(E));M("changed",[E])},z*1E3)}Sa=null}}});$(a).bind("mousewheel DOMMouseScroll",function(z){if(z.shiftKey){z.preventDefault();mb=n.getScreenCTM().inverse();var F=N(z.pageX,z.pageY,mb);F={x:F.x,y:F.y,width:0,height:0};if(z.wheelDelta)if(z.wheelDelta>=120)F.factor=2;else{if(z.wheelDelta<=-120)F.factor=0.5}else if(z.detail)if(z.detail>
+0)F.factor=0.5;else if(z.detail<0)F.factor=2;F.factor&&M("zoomed",F)}})})();var Fb=function(e){$(e).click(function(k){k.preventDefault()})},bb=c.textActions=function(){function e(T){var fa=h.value==="";$(h).focus();if(!arguments.length)if(fa)T=0;else{if(h.selectionEnd!==h.selectionStart)return;T=h.selectionEnd}var ha;ha=E[T];fa||h.setSelectionRange(T,T);m=pa("text_cursor");if(!m){m=document.createElementNS(b,"line");ma(m,{id:"text_cursor",stroke:"#333","stroke-width":1});m=pa("selectorParentGroup").appendChild(m)}u||
+(u=setInterval(function(){var W=m.getAttribute("display")==="none";m.setAttribute("display",W?"inline":"none")},600));fa=G(ha.x,H.y);ha=G(ha.x,H.y+H.height);ma(m,{x1:fa.x,y1:fa.y,x2:ha.x,y2:ha.y,visibility:"visible",display:"inline"});o&&o.setAttribute("d","M 0 0")}function k(T,fa,ha){if(T===fa)e(fa);else{ha||h.setSelectionRange(T,fa);o=pa("text_selectblock");if(!o){o=document.createElementNS(b,"path");ma(o,{id:"text_selectblock",fill:"green",opacity:0.5,style:"pointer-events:none"});pa("selectorParentGroup").appendChild(o)}T=
+E[T];var W=E[fa];m.setAttribute("visibility","hidden");fa=G(T.x,H.y);ha=G(T.x+(W.x-T.x),H.y);var qa=G(T.x,H.y+H.height);T=G(T.x+(W.x-T.x),H.y+H.height);ma(o,{d:"M"+fa.x+","+fa.y+" L"+ha.x+","+ha.y+" "+T.x+","+T.y+" "+qa.x+","+qa.y+"z",display:"inline"})}}function l(T,fa){var ha=d.createSVGPoint();ha.x=T;ha.y=fa;if(E.length==1)return 0;ha=F.getCharNumAtPosition(ha);if(ha<0){ha=E.length-2;if(T<=E[0].x)ha=0}else if(ha>=E.length-2)ha=E.length-2;var W=E[ha];T>W.x+W.width/2&&ha++;return ha}function C(T,
+fa,ha){var W=h.selectionStart;T=l(T,fa);k(Math.min(W,T),Math.max(W,T),!ha)}function A(T,fa){var ha={x:T,y:fa};ha.x/=q;ha.y/=q;if(J){var W=N(ha.x,ha.y,J.inverse());ha.x=W.x;ha.y=W.y}return ha}function G(T,fa){var ha={x:T,y:fa};if(J){var W=N(ha.x,ha.y,J);ha.x=W.x;ha.y=W.y}ha.x*=q;ha.y*=q;return ha}function D(T){k(0,F.textContent.length);$(this).unbind(T)}function z(T){if(ba&&F){var fa=N(T.pageX,T.pageY,mb);fa=A(fa.x*q,fa.y*q);fa=l(fa.x,fa.y);var ha=F.textContent,W=ha.substr(0,fa).replace(/[a-z0-9]+$/i,
+"").length;ha=ha.substr(fa).match(/^[a-z0-9]+/i);k(W,(ha?ha[0].length:0)+fa);$(T.target).click(D);setTimeout(function(){$(T.target).unbind("click",D)},300)}}var F,h,m,o,u,E=[],H,J,O,X,ba;return{select:function(T,fa,ha){F=T;bb.toEditMode(fa,ha)},start:function(T){F=T;bb.toEditMode()},mouseDown:function(T,fa,ha,W){T=A(ha,W);h.focus();e(l(T.x,T.y));O=ha;X=W},mouseMove:function(T,fa){var ha=A(T,fa);C(ha.x,ha.y)},mouseUp:function(T,fa,ha){var W=A(fa,ha);C(W.x,W.y,true);T.target!==F&&fa<O+2&&fa>O-2&&ha<
+X+2&&ha>X-2&&bb.toSelectMode(true)},setCursor:e,toEditMode:function(T,fa){rb([F],false);ba=false;Ga="textedit";ra.requestSelector(F).showGrips(false);ra.requestSelector(F);bb.init();$(F).css("cursor","text");if(arguments.length){var ha=A(T,fa);e(l(ha.x,ha.y))}else e();setTimeout(function(){ba=true},300)},toSelectMode:function(T){Ga="select";clearInterval(u);u=null;o&&$(o).attr("display","none");m&&$(m).attr("visibility","hidden");$(F).css("cursor","move");if(T){xa();$(F).css("cursor","move");M("selected",
+[F]);qb([F],true)}F&&!F.textContent.length&&c.deleteSelectedElements();$(h).blur();F=false},setInputElem:function(T){h=T},clear:function(){Ga=="textedit"&&bb.toSelectMode()},init:function(){if(F){if(!F.parentNode){F=I[0];ra.requestSelector(F).showGrips(false)}var T=F.textContent.length,fa=F.getAttribute("transform");H=svgedit.utilities.getBBox(F);J=fa?ea(F):null;E=Array(T);h.focus();$(F).unbind("dblclick",z).dblclick(z);if(!T)var ha={x:H.x+H.width/2,width:0};for(fa=0;fa<T;fa++){var W=F.getStartPositionOfChar(fa);
+ha=F.getEndPositionOfChar(fa);if(!svgedit.browser.supportsGoodTextCharPos()){var qa=c.contentW*q;W.x-=qa;ha.x-=qa;W.x/=q;ha.x/=q}E[fa]={x:W.x,y:H.y,width:ha.x-W.x,height:H.height}}E.push({x:ha.x,width:0});k(h.selectionStart,h.selectionEnd,true)}}}}(),La=c.pathActions=function(){var e=false,k,l,C;svgedit.path.Path.prototype.endChanges=function(D){if(svgedit.browser.isWebkit()){var z=this.elem;z.setAttribute("d",La.convertPath(z))}D=new Ma(this.elem,{d:this.last_d},D);wa(D);M("changed",[this.elem])};
+svgedit.path.Path.prototype.addPtsToSelection=function(D){$.isArray(D)||(D=[D]);for(var z=0;z<D.length;z++){var F=D[z],h=this.segs[F];h.ptgrip&&this.selected_pts.indexOf(F)==-1&&F>=0&&this.selected_pts.push(F)}this.selected_pts.sort();z=this.selected_pts.length;for(D=Array(z);z--;){h=this.segs[this.selected_pts[z]];h.select(true);D[z]=h.ptgrip}La.canDeleteNodes=true;La.closed_subpath=this.subpathIsClosed(this.selected_pts[0]);M("selected",D)};var A=k=null,G=false;this.lastCtrlPoint=[0,0];return{mouseDown:function(D,
+z,F,h){if(Ga==="path"){mouse_x=F;mouse_y=h;F=mouse_x/q;z=mouse_y/q;h=pa("path_stretch_line");l=[F,z];if(p.gridSnapping){F=va(F);z=va(z);mouse_x=va(mouse_x);mouse_y=va(mouse_y)}if(!h){h=document.createElementNS(b,"path");ma(h,{id:"path_stretch_line",stroke:"#22C","stroke-width":"0.5",fill:"none"});h=pa("selectorParentGroup").appendChild(h)}h.setAttribute("display","inline");this.stretchy=h;var m=null;if(A){m=A.pathSegList;for(var o=m.numberOfItems,u=6/q,E=false;o;){o--;var H=m.getItem(o),J=H.x;H=H.y;
+if(F>=J-u&&F<=J+u&&z>=H-u&&z<=H+u){E=true;break}}u=aa();svgedit.path.removePath_(u);u=pa(u);J=m.numberOfItems;if(E){if(o<=1&&J>=2){F=m.getItem(0).x;z=m.getItem(0).y;o=svgedit.path.first_grip?svgedit.path.first_grip[0]/q:m.getItem(0).x;E=svgedit.path.first_grip?svgedit.path.first_grip[1]/q:m.getItem(0).y;D=h.pathSegList.getItem(1);D=D.pathSegType===4?A.createSVGPathSegLinetoAbs(F,z):A.createSVGPathSegCurvetoCubicAbs(F,z,D.x1/q,D.y1/q,o,E);F=A.createSVGPathSegClosePath();m.appendItem(D);m.appendItem(F)}else if(J<
+3)return m=false;$(h).remove();element=u;A=null;Ka=false;if(e){svgedit.path.path.matrix&&Za(u,{},svgedit.path.path.matrix.inverse());F=u.getAttribute("d");h=$(svgedit.path.path.elem).attr("d");$(svgedit.path.path.elem).attr("d",h+F);$(u).remove();svgedit.path.path.matrix&&svgedit.path.recalcRotatedPath();svgedit.path.path.init();La.toEditMode(svgedit.path.path.elem);svgedit.path.path.selectPt();return false}}else{if(!$.contains(a,Bb(D))){console.log("Clicked outside canvas");return false}m=A.pathSegList.numberOfItems;
+o=A.pathSegList.getItem(m-1);u=o.x;o=o.y;if(D.shiftKey){z=V(u,o,F,z);F=z.x;z=z.y}D=h.pathSegList.getItem(1);D=D.pathSegType===4?A.createSVGPathSegLinetoAbs(ab(F),ab(z)):A.createSVGPathSegCurvetoCubicAbs(ab(F),ab(z),D.x1/q,D.y1/q,D.x2/q,D.y2/q);A.pathSegList.appendItem(D);F*=q;z*=q;h.setAttribute("d",["M",F,z,F,z].join(" "));h=svgedit.path.addCtrlGrip("1c1");D=svgedit.path.addCtrlGrip("0c2");u=svgedit.path.getCtrlLine(1);o=svgedit.path.getCtrlLine(2);h.setAttribute("cx",F);h.setAttribute("cy",z);D.setAttribute("cx",
+F);D.setAttribute("cy",z);u.setAttribute("x1",F);u.setAttribute("x2",F);u.setAttribute("y1",z);u.setAttribute("y2",z);o.setAttribute("x1",F);o.setAttribute("x2",F);o.setAttribute("y1",z);o.setAttribute("y2",z);h=m;if(e)h+=svgedit.path.path.segs.length;svgedit.path.addPointGrip(h,F,z)}m=true}else{d_attr="M"+F+","+z+" ";A=S({element:"path",curStyles:true,attr:{d:d_attr,id:ka(),opacity:K.opacity/2}});h.setAttribute("d",["M",mouse_x,mouse_y,mouse_x,mouse_y].join(" "));h=e?svgedit.path.path.segs.length:
+0;svgedit.path.addPointGrip(h,mouse_x,mouse_y);svgedit.path.first_grip=null}}else if(svgedit.path.path){svgedit.path.path.storeD();u=D.target.id;if(u.substr(0,14)=="pathpointgrip_"){z=svgedit.path.path.cur_pt=parseInt(u.substr(14));svgedit.path.path.dragging=[F,h];u=svgedit.path.path.segs[z];if(D.shiftKey)u.selected?svgedit.path.path.removePtFromSelection(z):svgedit.path.path.addPtsToSelection(z);else{if(svgedit.path.path.selected_pts.length<=1||!u.selected)svgedit.path.path.clearSelection();svgedit.path.path.addPtsToSelection(z)}}else if(u.indexOf("ctrlpointgrip_")==
+0){svgedit.path.path.dragging=[F,h];D=u.split("_")[1].split("c");z=D[0]-0;m=D=D[1]-0;o=svgedit.path.path.segs[z];svgedit.path.path.selectPt(z,D);if(m==2){E=1;u=o.next}else{E=2;u=o.prev}if(!u)return;D=function(O,X){return Math.sqrt(Math.pow(O.x-X.x,2)+Math.pow(O.y-X.y,2))};z={x:o.item["x"+m],y:o.item["y"+m]};m=m==2?{x:o.item.x,y:o.item.y}:{x:u.item.x,y:u.item.y};o={x:u.item["x"+E],y:u.item["y"+E]};u=D(z,m);D=D(o,m);z=Math.abs(Math.round(Math.atan2(z.y-m.y,z.x-m.x)*(180/Math.PI),0)-Math.round(Math.atan2(o.y-
+m.y,o.x-m.x)*(180/Math.PI),0))==180;if(Math.abs(u-D)<5&&z){svgedit.path.setLinkControlPoints(true);svgedit.path.is_linked=true}else{svgedit.path.setLinkControlPoints(false);svgedit.path.is_linked=false}}if(!svgedit.path.path.dragging){if(sa==null)sa=ra.getRubberBandBox();ma(sa,{x:F*q,y:h*q,width:0,height:0,display:"inline"},100)}}},mouseMove:function(D,z,F){G=true;var h=!D.altKey;if(Ga==="path"){if(A){var m=A.pathSegList,o=m.numberOfItems-1,u=svgedit.path.addCtrlGrip("1c1"),E=svgedit.path.addCtrlGrip("0c2");
+if(l){var H=E.getAttribute("cx")/q||0,J=E.getAttribute("cy")/q||0;u.setAttribute("cx",z);u.setAttribute("cy",F);u.setAttribute("display","inline");D=l[0];u=l[1];m.getItem(o);var O=z/q,X=F/q;H=h?D+(D-O):H;h=h?u+(u-X):J;E.setAttribute("cx",H*q);E.setAttribute("cy",h*q);E.setAttribute("display","inline");E=svgedit.path.getCtrlLine(1);J=svgedit.path.getCtrlLine(2);ma(E,{x1:z,y1:F,x2:D*q,y2:u*q,display:"inline"});ma(J,{x1:H*q,y1:h*q,x2:D*q,y2:u*q,display:"inline"});if(o===0)C=[z,F];else{m=m.getItem(o-
+1);z=m.x;F=m.y;if(m.pathSegType===6){z+=z-m.x2;F+=F-m.y2}else if(C){z=C[0]/q;F=C[1]/q}svgedit.path.replacePathSeg(6,o,[D,u,this.lastCtrlPoint[0]/q,this.lastCtrlPoint[1]/q,H,h],A)}}else if(h=this.stretchy){o=m.getItem(o);m=z;u=F;if(D.target.id==="pathpointgrip_0"&&svgedit.path.first_grip){m=svgedit.path.first_grip[0];u=svgedit.path.first_grip[1]}if(o.pathSegType===6)svgedit.path.replacePathSeg(6,1,[z,F,(this.lastCtrlPoint[0]/q||o.x+(o.x-o.x2))*q,(this.lastCtrlPoint[1]/q||o.y+(o.y-o.y2))*q,m,u],h);
+else C?svgedit.path.replacePathSeg(6,1,[z,F,C[0],C[1],z,F],h):svgedit.path.replacePathSeg(4,1,[z,F],h)}}}else if(svgedit.path.path.dragging){m=svgedit.path.getPointFromGrip({x:svgedit.path.path.dragging[0],y:svgedit.path.path.dragging[1]},svgedit.path.path);D=svgedit.path.getPointFromGrip({x:z,y:F},svgedit.path.path);o=D.x-m.x;m=D.y-m.y;svgedit.path.path.dragging=[z,F];!h||!svgedit.path.is_linked?svgedit.path.setLinkControlPoints(false):svgedit.path.setLinkControlPoints(true);svgedit.path.path.dragctrl?
+svgedit.path.path.moveCtrl(o,m):svgedit.path.path.movePts(o,m)}else{svgedit.path.path.selected_pts=[];svgedit.path.path.eachSeg(function(){if(this.next||this.prev){var ba=sa.getBBox(),T=svgedit.path.getGripPt(this);ba=svgedit.math.rectsIntersect(ba,{x:T.x,y:T.y,width:0,height:0});this.select(ba);ba&&svgedit.path.path.selected_pts.push(this.index)}})}},mouseUp:function(D,z,F,h){var m=pa("ctrlpointgrip_1c1"),o=pa("ctrlpointgrip_0c2");this.lastCtrlPoint=m?[m.getAttribute("cx"),m.getAttribute("cy")]:
+[F,h];if(!svgedit.path.first_grip&&o)svgedit.path.first_grip=[o.getAttribute("cx"),o.getAttribute("cy")];if(Ga==="path"){l=null;if(!A){z=pa(aa());Ka=false;C=null}return{keep:true,element:z}}if(svgedit.path.path.dragging){z=svgedit.path.path.cur_pt;svgedit.path.path.dragging=false;svgedit.path.path.dragctrl=false;svgedit.path.path.update();G&&svgedit.path.path.endChanges("Move path point(s)");!D.shiftKey&&!G&&svgedit.path.path.selectPt(z)}else if(sa&&sa.getAttribute("display")!="none"){sa.setAttribute("display",
+"none");sa.getAttribute("width")<=2&&sa.getAttribute("height")<=2&&La.toSelectMode(D.target)}else La.toSelectMode(D.target);G=false},toEditMode:function(D){svgedit.path.path=svgedit.path.getPath_(D);Ga="pathedit";xa();svgedit.path.path.show(true).update();svgedit.path.path.oldbbox=svgedit.utilities.getBBox(svgedit.path.path.elem);e=false},toSelectMode:function(D){var z=D==svgedit.path.path.elem;Ga="select";svgedit.path.path.show(false);k=false;xa();svgedit.path.path.matrix&&svgedit.path.recalcRotatedPath();
+if(z){M("selected",[D]);qb([D],true)}},addSubPath:function(D){if(D){Ga="path";e=true}else{La.clear(true);La.toEditMode(svgedit.path.path.elem)}},select:function(D){if(k===D){La.toEditMode(D);Ga="pathedit"}else k=D},reorient:function(){var D=I[0];if(D)if(na(D)!=0){var z=new Da("Reorient path"),F={d:D.getAttribute("d"),transform:D.getAttribute("transform")};z.addSubCommand(new Ma(D,F));xa();this.resetOrientation(D);wa(z);svgedit.path.getPath_(D).show(false).matrix=null;this.clear();qb([D],true);M("changed",
+I)}},clear:function(D){k=null;if(A){var z=pa(aa());$(pa("path_stretch_line")).remove();D&&$(z).remove();$(pa("pathpointgrip_container")).find("*").attr("display","none");A=C=null;Ka=false}else Ga=="pathedit"&&this.toSelectMode();svgedit.path.path&&svgedit.path.path.init().show(false)},resetOrientation:function(D){if(D==null||D.nodeName!="path")return false;var z=R(D),F=Y(z).matrix;z.clear();D.removeAttribute("transform");z=D.pathSegList;for(var h=z.numberOfItems,m=0;m<h;++m){var o=z.getItem(m),u=
+o.pathSegType;if(u!=1){var E=[];$.each(["",1,2],function(H,J){var O=o["x"+J],X=o["y"+J];if(O!==undefined&&X!==undefined){O=N(O,X,F);E.splice(E.length,0,O.x,O.y)}});svgedit.path.replacePathSeg(u,m,E,D)}}g(D,F)},zoomChange:function(){Ga=="pathedit"&&svgedit.path.path.update()},getNodePoint:function(){if(svgedit.path.path){var D=svgedit.path.path.segs[svgedit.path.path.selected_pts.length?svgedit.path.path.selected_pts[0]:1];return{x:D.item.x,y:D.item.y,type:D.type}}},linkControlPoints:function(D){svgedit.path.setLinkControlPoints(D)},
+clonePathNode:function(){svgedit.path.path.storeD();for(var D=svgedit.path.path.selected_pts,z=D.length,F=[];z--;){var h=D[z];svgedit.path.path.addSeg(h);F.push(h+z);F.push(h+z+1)}svgedit.path.path.init().addPtsToSelection(F);svgedit.path.path.endChanges("Clone path node(s)")},opencloseSubPath:function(){var D=svgedit.path.path.selected_pts;if(D.length===1){var z=svgedit.path.path.elem,F=z.pathSegList,h=D[0],m=null,o=null;svgedit.path.path.eachSeg(function(J){if(this.type===2&&J<=h)o=this.item;if(J<=
+h)return true;if(this.type===2){m=J;return false}else if(this.type===1)return m=false});if(m==null)m=svgedit.path.path.segs.length-1;if(m!==false){var u=z.createSVGPathSegLinetoAbs(o.x,o.y),E=z.createSVGPathSegClosePath();if(m==svgedit.path.path.segs.length){F.appendItem(u);F.appendItem(E)}else{svgedit.path.insertItemBefore(z,E,m);svgedit.path.insertItemBefore(z,u,m)}svgedit.path.path.init().selectPt(m+1)}else if(svgedit.path.path.segs[h].mate){F.removeItem(h);F.removeItem(h);svgedit.path.path.init().selectPt(h-
+1)}else{for(D=0;D<F.numberOfItems;D++){var H=F.getItem(D);if(H.pathSegType===2)u=D;else if(D===h)F.removeItem(u);else if(H.pathSegType===1&&h<D){E=D-1;F.removeItem(D);break}}for(D=h-u-1;D--;)svgedit.path.insertItemBefore(z,F.getItem(u),E);z=F.getItem(u);svgedit.path.replacePathSeg(2,u,[z.x,z.y]);D=h;svgedit.path.path.init().selectPt(0)}}},deletePathNode:function(){if(La.canDeleteNodes){svgedit.path.path.storeD();for(var D=svgedit.path.path.selected_pts,z=D.length;z--;)svgedit.path.path.deleteSeg(D[z]);
+var F=function(){var h=svgedit.path.path.elem.pathSegList,m=h.numberOfItems,o=function(H,J){for(;J--;)h.removeItem(H)};if(m<=1)return true;for(;m--;){var u=h.getItem(m);if(u.pathSegType===1){u=h.getItem(m-1);var E=h.getItem(m-2);if(u.pathSegType===2){o(m-1,2);F();break}else if(E.pathSegType===2){o(m-2,3);F();break}}else if(u.pathSegType===2)if(m>0){u=h.getItem(m-1).pathSegType;if(u===2){o(m-1,1);F();break}else if(u===1&&h.numberOfItems-1===m){o(m,1);F();break}}}return false};F();if(svgedit.path.path.elem.pathSegList.numberOfItems<=
+1){c.setMode("select");c.deleteSelectedElements()}else{svgedit.path.path.init();svgedit.path.path.clearSelection();if(window.opera){D=$(svgedit.path.path.elem);D.attr("d",D.attr("d"))}svgedit.path.path.endChanges("Delete path node(s)")}}},smoothPolylineIntoPath:function(D){var z=D.points,F=z.numberOfItems;if(F>=4){var h=z.getItem(0),m=null;D=[];D.push(["M",h.x,",",h.y," C"].join(""));for(var o=1;o<=F-4;o+=3){var u=z.getItem(o),E=z.getItem(o+1),H=z.getItem(o+2);if(m)if((h=svgedit.path.smoothControlPoints(m,
+u,h))&&h.length==2){u=D[D.length-1].split(",");u[2]=h[0].x;u[3]=h[0].y;D[D.length-1]=u.join(",");u=h[1]}D.push([u.x,u.y,E.x,E.y,H.x,H.y].join(","));h=H;m=E}for(D.push("L");o<F;++o){E=z.getItem(o);D.push([E.x,E.y].join(","))}D=D.join(" ");D=S({element:"path",curStyles:true,attr:{id:aa(),d:D,fill:"none"}})}return D},setSegType:function(D){svgedit.path.path.setSegType(D)},moveNode:function(D,z){var F=svgedit.path.path.selected_pts;if(F.length){svgedit.path.path.storeD();F=svgedit.path.path.segs[F[0]];
+var h={x:0,y:0};h[D]=z-F.item[D];F.move(h.x,h.y);svgedit.path.path.endChanges("Move path point")}},fixEnd:function(D){for(var z=D.pathSegList,F=z.numberOfItems,h,m=0;m<F;++m){var o=z.getItem(m);if(o.pathSegType===2)h=o;if(o.pathSegType===1){o=z.getItem(m-1);if(o.x!=h.x||o.y!=h.y){z=D.createSVGPathSegLinetoAbs(h.x,h.y);svgedit.path.insertItemBefore(D,z,m);La.fixEnd(D);break}}}svgedit.browser.isWebkit()&&D.setAttribute("d",La.convertPath(D))},convertPath:function(D,z){for(var F=D.pathSegList,h=F.numberOfItems,
+m=0,o=0,u="",E=null,H=0;H<h;++H){var J=F.getItem(H),O=J.x||0,X=J.y||0,ba=J.x1||0,T=J.y1||0,fa=J.x2||0,ha=J.y2||0,W=J.pathSegType,qa=Oa[W]["to"+(z?"Lower":"Upper")+"Case"](),ua=function(Aa,Ca,Pa){Ca=Ca?" "+Ca.join(" "):"";Pa=Pa?" "+svgedit.units.shortFloat(Pa):"";$.each(Aa,function(Qa,Na){Aa[Qa]=svgedit.units.shortFloat(Na)});u+=qa+Aa.join(" ")+Ca+Pa};switch(W){case 1:u+="z";break;case 12:O-=m;case 13:if(z){m+=O;qa="l"}else{O+=m;m=O;qa="L"}ua([[O,o]]);break;case 14:X-=o;case 15:if(z){o+=X;qa="l"}else{X+=
+o;o=X;qa="L"}ua([[m,X]]);break;case 2:case 4:case 18:O-=m;X-=o;case 5:case 3:if(E&&F.getItem(H-1).pathSegType===1&&!z){m=E[0];o=E[1]}case 19:if(z){m+=O;o+=X}else{O+=m;X+=o;m=O;o=X}if(W===3)E=[m,o];ua([[O,X]]);break;case 6:O-=m;ba-=m;fa-=m;X-=o;T-=o;ha-=o;case 7:if(z){m+=O;o+=X}else{O+=m;ba+=m;fa+=m;X+=o;T+=o;ha+=o;m=O;o=X}ua([[ba,T],[fa,ha],[O,X]]);break;case 8:O-=m;ba-=m;X-=o;T-=o;case 9:if(z){m+=O;o+=X}else{O+=m;ba+=m;X+=o;T+=o;m=O;o=X}ua([[ba,T],[O,X]]);break;case 10:O-=m;X-=o;case 11:if(z){m+=
+O;o+=X}else{O+=m;X+=o;m=O;o=X}ua([[J.r1,J.r2]],[J.angle,J.largeArcFlag?1:0,J.sweepFlag?1:0],[O,X]);break;case 16:O-=m;fa-=m;X-=o;ha-=o;case 17:if(z){m+=O;o+=X}else{O+=m;fa+=m;X+=o;ha+=o;m=O;o=X}ua([[fa,ha],[O,X]])}}return u}}}(),yb=this.removeUnusedDefElems=function(){var e=n.getElementsByTagNameNS(b,"defs");if(!e||!e.length)return 0;for(var k=[],l=0,C=["fill","stroke","filter","marker-start","marker-mid","marker-end"],A=C.length,G=n.getElementsByTagNameNS(b,"*"),D=G.length,z=0;z<D;z++){for(var F=
+G[z],h=0;h<A;h++)if(F){var m=ja(F.getAttribute(C[h]));m&&k.push(m.substr(1))}(F=ca(F))&&F.indexOf("#")===0&&k.push(F.substr(1))}e=$(e).find("linearGradient, radialGradient, filter, marker, svg, symbol");defelem_ids=[];for(z=e.length;z--;){C=e[z];A=C.id;if(k.indexOf(A)<0){sb[A]=C;C.parentNode.removeChild(C);l++}}return l};this.svgCanvasToString=function(){for(;yb()>0;);La.clear(true);$.each(n.childNodes,function(l,C){l&&C.nodeType===8&&C.data.indexOf("Created with")>=0&&n.insertBefore(C,n.firstChild)});
+if(L){Eb();rb([L])}$("#canvasGrid").attr("display","none");var e=[];$(n).find("g:data(gsvg)").each(function(){for(var l=this.attributes,C=l.length,A=0;A<C;A++)if(l[A].nodeName=="id"||l[A].nodeName=="style")C--;if(C<=0){l=this.firstChild;e.push(l);$(this).replaceWith(l)}});var k=this.svgToString(n,0);e.length&&$(e).each(function(){tb(this)});return k};this.svgToString=function(e,k){var l=[],C=svgedit.utilities.toXml,A=p.baseUnit,G=RegExp("^-?[\\d\\.]+"+A+"$");if(e){la(e);var D=e.attributes,z,F,h=e.childNodes;
+for(F=0;F<k;F++)l.push(" ");l.push("<");l.push(e.nodeName);if(e.id==="svgcontent"){F=zb();if(A!=="px"){F.w=svgedit.units.convertUnit(F.w,A)+A;F.h=svgedit.units.convertUnit(F.h,A)+A}l.push(' width="'+F.w+'" height="'+F.h+'" xmlns="'+b+'"');var m={};$(e).find("*").andSelf().each(function(){$.each(this.attributes,function(H,J){var O=J.namespaceURI;if(O&&!m[O]&&ya[O]!=="xmlns"&&ya[O]!=="xml"){m[O]=true;l.push(" xmlns:"+ya[O]+'="'+O+'"')}})});F=D.length;for(A=["width","height","xmlns","x","y","viewBox",
+"id","overflow"];F--;){z=D.item(F);var o=C(z.nodeValue);if(z.nodeName.indexOf("xmlns:")!==0)if(o!=""&&A.indexOf(z.localName)==-1)if(!z.namespaceURI||ya[z.namespaceURI]){l.push(" ");l.push(z.nodeName);l.push('="');l.push(o);l.push('"')}}}else{if(e.nodeName==="defs"&&!e.firstChild)return;var u=["-moz-math-font-style","_moz-math-font-style"];for(F=D.length-1;F>=0;F--){z=D.item(F);o=C(z.nodeValue);if(!(u.indexOf(z.localName)>=0))if(o!="")if(o.indexOf("pointer-events")!==0)if(!(z.localName==="class"&&
+o.indexOf("se_")===0)){l.push(" ");if(z.localName==="d")o=La.convertPath(e,true);if(isNaN(o)){if(G.test(o))o=svgedit.units.shortFloat(o)+A}else o=svgedit.units.shortFloat(o);if($a.apply&&e.nodeName==="image"&&z.localName==="href"&&$a.images&&$a.images==="embed"){var E=Va[o];if(E)o=E}if(!z.namespaceURI||z.namespaceURI==b||ya[z.namespaceURI]){l.push(z.nodeName);l.push('="');l.push(o);l.push('"')}}}}if(e.hasChildNodes()){l.push(">");k++;D=false;for(F=0;F<h.length;F++){A=h.item(F);switch(A.nodeType){case 1:l.push("\n");
+l.push(this.svgToString(h.item(F),k));break;case 3:A=A.nodeValue.replace(/^\s+|\s+$/g,"");if(A!=""){D=true;l.push(C(A)+"")}break;case 4:l.push("\n");l.push(Array(k+1).join(" "));l.push("<![CDATA[");l.push(A.nodeValue);l.push("]]\>");break;case 8:l.push("\n");l.push(Array(k+1).join(" "));l.push("<!--");l.push(A.data);l.push("--\>")}}k--;if(!D){l.push("\n");for(F=0;F<k;F++)l.push(" ")}l.push("</");l.push(e.nodeName);l.push(">")}else l.push("/>")}return l.join("")};this.embedImage=function(e,k){$(new Image).load(function(){var l=
+document.createElement("canvas");l.width=this.width;l.height=this.height;l.getContext("2d").drawImage(this,0,0);try{var C=";svgedit_url="+encodeURIComponent(e);C=l.toDataURL().replace(";base64",C+";base64");Va[e]=C}catch(A){Va[e]=false}Fa=e;k&&k(Va[e])}).attr("src",e)};this.setGoodImage=function(e){Fa=e};this.open=function(){};this.save=function(e){xa();e&&$.extend($a,e);$a.apply=true;e=this.svgCanvasToString();M("saved",e)};this.rasterExport=function(){xa();var e=[],k={feGaussianBlur:kb.exportNoBlur,
+foreignObject:kb.exportNoforeignObject,"[stroke-dasharray]":kb.exportNoDashArray},l=$(n);if(!("font"in $("<canvas>")[0].getContext("2d")))k.text=kb.exportNoText;$.each(k,function(C,A){l.find(C).length&&e.push(A)});k=this.svgCanvasToString();M("exported",{svg:k,issues:e})};this.getSvgString=function(){$a.apply=false;return this.svgCanvasToString()};this.randomizeIds=function(){arguments.length>0&&arguments[0]==false?svgedit.draw.randomizeIds(false,B()):svgedit.draw.randomizeIds(true,B())};var Hb=this.uniquifyElems=
+function(e){var k={},l=["filter","linearGradient","pattern","radialGradient","symbol","textPath","use"];svgedit.utilities.walkTree(e,function(z){if(z.nodeType==1){if(z.id){z.id in k||(k[z.id]={elem:null,attrs:[],hrefs:[]});k[z.id].elem=z}$.each(vb,function(h,m){var o=z.getAttributeNode(m);if(o){var u=svgedit.utilities.getUrlFromAttr(o.value);if(u=u?u.substr(1):null){u in k||(k[u]={elem:null,attrs:[],hrefs:[]});k[u].attrs.push(o)}}});var F=svgedit.utilities.getHref(z);if(F&&l.indexOf(z.nodeName)>=
+0)if(F=F.substr(1)){F in k||(k[F]={elem:null,attrs:[],hrefs:[]});k[F].hrefs.push(z)}}});for(var C in k)if(C){var A=k[C].elem;if(A){e=ka();A.id=e;A=k[C].attrs;for(var G=A.length;G--;){var D=A[G];D.ownerElement.setAttribute(D.name,"url(#"+e+")")}A=k[C].hrefs;for(G=A.length;G--;)svgedit.utilities.setHref(A[G],"#"+e)}}},Gb=this.setUseData=function(e){var k=$(e);if(e.tagName!=="use")k=k.find("use");k.each(function(){var l=ca(this).substr(1);if(l=pa(l)){$(this).data("ref",l);if(l.tagName=="symbol"||l.tagName==
+"svg")$(this).data("symbol",l).data("ref",l)}})},Ib=this.convertGradients=function(e){var k=$(e).find("linearGradient, radialGradient");if(!k.length&&svgedit.browser.isWebkit())k=$(e).find("*").filter(function(){return this.tagName.indexOf("Gradient")>=0});k.each(function(){if($(this).attr("gradientUnits")==="userSpaceOnUse"){var l=$(n).find('[fill="url(#'+this.id+')"],[stroke="url(#'+this.id+')"]');if(l.length)if(l=svgedit.utilities.getBBox(l[0]))if(this.tagName==="linearGradient"){var C=$(this).attr(["x1",
+"y1","x2","y2"]),A=this.gradientTransform.baseVal;if(A&&A.numberOfItems>0){var G=Y(A).matrix;A=N(C.x1,C.y1,G);G=N(C.x2,C.y2,G);C.x1=A.x;C.y1=A.y;C.x2=G.x;C.y2=G.y;this.removeAttribute("gradientTransform")}$(this).attr({x1:(C.x1-l.x)/l.width,y1:(C.y1-l.y)/l.height,x2:(C.x2-l.x)/l.width,y2:(C.y2-l.y)/l.height});this.removeAttribute("gradientUnits")}}})},Lb=this.convertToGroup=function(e){e||(e=I[0]);var k=$(e),l=new Da,C;if(k.data("gsvg")){l=$(e.firstChild).attr(["x","y"]);$(e.firstChild.firstChild).unwrap();
+$(e).removeData("gsvg");C=R(e);var A=d.createSVGTransform();A.setTranslate(l.x,l.y);C.appendItem(A);Ra(e);M("selected",[e])}else if(k.data("symbol")){e=k.data("symbol");C=k.attr("transform");A=k.attr(["x","y"]);var G=e.getAttribute("viewBox");if(G){G=G.split(" ");A.x-=+G[0];A.y-=+G[1]}C+=" translate("+(A.x||0)+","+(A.y||0)+")";A=k.prev();l.addSubCommand(new Ha(k[0],k[0].nextSibling,k[0].parentNode));k.remove();G=$(n).find("use:data(symbol)").length;k=f.createElementNS(b,"g");for(var D=e.childNodes,
+z=0;z<D.length;z++)k.appendChild(D[z].cloneNode(true));if(svgedit.browser.isGecko()){D=$(gb()).children("linearGradient,radialGradient,pattern").clone();$(k).append(D)}C&&k.setAttribute("transform",C);C=e.parentNode;Hb(k);svgedit.browser.isGecko()&&$(gb()).append($(k).find("linearGradient,radialGradient,pattern"));k.id=ka();A.after(k);if(C){if(!G){A=e.nextSibling;C.removeChild(e);l.addSubCommand(new Ha(e,A,C))}l.addSubCommand(new Ia(k))}Gb(k);svgedit.browser.isGecko()?Ib(gb()):Ib(k);svgedit.utilities.walkTreePost(k,
+function(F){try{Ra(F)}catch(h){console.log(h)}});$(k).find("a,circle,ellipse,foreignObject,g,image,line,path,polygon,polyline,rect,svg,text,tspan,use").each(function(){if(!this.id)this.id=ka()});rb([k]);(e=Db(k,true))&&l.addSubCommand(e);wa(l)}else console.log("Unexpected element to ungroup:",e)};this.setSvgString=function(e){try{var k=svgedit.utilities.text2xml(e);this.prepareSvg(k);var l=new Da("Change Source"),C=n.nextSibling,A=d.removeChild(n);l.addSubCommand(new Ha(A,C,d));n=f.adoptNode?f.adoptNode(k.documentElement):
+f.importNode(k.documentElement,true);d.appendChild(n);var G=$(n);c.current_drawing_=new svgedit.draw.Drawing(n,v);var D=B().getNonce();D?M("setnonce",D):M("unsetnonce");G.find("image").each(function(){var J=this;Fb(J);var O=ca(this);if(O.indexOf("data:")===0){var X=O.match(/svgedit_url=(.*?);/);if(X){var ba=decodeURIComponent(X[1]);$(new Image).load(function(){J.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",ba)}).attr("src",ba)}}c.embedImage(O)});G.find("svg").each(function(){if(!$(this).closest("defs").length){Hb(this);
+var J=this.parentNode;if(J.childNodes.length===1&&J.nodeName==="g"){$(J).data("gsvg",this);J.id=J.id||ka()}else tb(this)}});G.find("linearGradient, radialGradient, pattern").appendTo(gb());Gb(G);Ib(G[0]);svgedit.utilities.walkTreePost(n,function(J){try{Ra(J)}catch(O){console.log(O)}});var z={id:"svgcontent",overflow:p.show_outside_canvas?"visible":"hidden"},F=false;if(G.attr("viewBox")){var h=G.attr("viewBox").split(" ");z.width=h[2];z.height=h[3]}else $.each(["width","height"],function(J,O){var X=
+G.attr(O);X||(X="100%");if((X+"").substr(-1)==="%")F=true;else z[O]=Ba(O,X)});xb();G.children().find("a,circle,ellipse,foreignObject,g,image,line,path,polygon,polyline,rect,svg,text,tspan,use").each(function(){if(!this.id)this.id=ka()});if(F){var m=getStrokedBBox();z.width=m.width+m.x;z.height=m.height+m.y}if(z.width<=0)z.width=200;if(z.height<=0)z.height=200;G.attr(z);this.contentW=z.width;this.contentH=z.height;$("#canvas_width").val(this.contentW);$("#canvas_height").val(this.contentH);var o=$("#canvas_background");
+if(o.length){var u=o.attr("fill-opacity");u=u?parseInt(u)*100:100;fill=this.getPaint(o.attr("fill"),u,"canvas")}else fill=this.getPaint("none",100,"canvas");methodDraw.paintBox.canvas.setPaint(fill);l.addSubCommand(new Ia(n));var E=G.attr(["width","height"]);l.addSubCommand(new Ma(d,E));q=1;svgedit.transformlist.resetListMap();xa();svgedit.path.clearData();d.appendChild(ra.selectorParentGroup);wa(l);M("changed",[n])}catch(H){console.log(H);return false}return true};this.getPaint=function(e,k,l){var C=
+null;if(e.indexOf("url(#")===0){e=(e=svgCanvas.getRefElem(e))?e.cloneNode(true):$("#"+l+"_color defs *")[0];C={alpha:k};C[e.tagName]=e}else C=e.indexOf("#")===0?{alpha:k,solidColor:e.substr(1)}:{alpha:k,solidColor:"none"};return new $.jGraduate.Paint(C)};this.importSvgString=function(e){try{var k=svgedit.utilities.encode64(e.length+e).substr(0,32),l=false;if(lb[k])if($(lb[k].symbol).parents("#svgroot").length)l=true;var C=new Da("Import SVG");if(l)var A=lb[k].symbol,G=lb[k].xform;else{var D=svgedit.utilities.text2xml(e);
+this.prepareSvg(D);var z;z=f.adoptNode?f.adoptNode(D.documentElement):f.importNode(D.documentElement,true);Hb(z);var F=Ba("width",z.getAttribute("width")),h=Ba("height",z.getAttribute("height")),m=z.getAttribute("viewBox"),o=m?m.split(" "):[0,0,F,h];for(e=0;e<4;++e)o[e]=+o[e];n.getAttribute("width");var u=+n.getAttribute("height");G=h>F?"scale("+u/3/o[3]+")":"scale("+u/3/o[2]+")";G="translate(0) "+G+" translate(0)";A=f.createElementNS(b,"symbol");var E=gb();for(svgedit.browser.isGecko()&&$(z).find("linearGradient, radialGradient, pattern").appendTo(E);z.firstChild;)A.appendChild(z.firstChild);
+var H=z.attributes;for(z=0;z<H.length;z++){var J=H[z];A.setAttribute(J.nodeName,J.nodeValue)}A.id=ka();lb[k]={symbol:A,xform:G};gb().appendChild(A);C.addSubCommand(new Ia(A))}var O=f.createElementNS(b,"use");O.id=ka();U(O,"#"+A.id);(L||B().getCurrentLayer()).appendChild(O);C.addSubCommand(new Ia(O));xa();O.setAttribute("transform",G);Ra(O);$(O).data("symbol",A).data("ref",A);qb([O]);wa(C);M("changed",[n])}catch(X){console.log(X);return false}return true};var xb=c.identifyLayers=function(){Eb();B().identifyLayers()};
+this.createLayer=function(e){var k=new Da("Create Layer");e=B().createLayer(e);k.addSubCommand(new Ia(e));wa(k);xa();M("changed",[e])};this.cloneLayer=function(e){var k=new Da("Duplicate Layer"),l=f.createElementNS(b,"g"),C=f.createElementNS(b,"title");C.textContent=e;l.appendChild(C);C=B().getCurrentLayer();$(C).after(l);C=C.childNodes;for(var A=0;A<C.length;A++){var G=C[A];G.localName!="title"&&l.appendChild(ia(G))}xa();xb();k.addSubCommand(new Ia(l));wa(k);c.setCurrentLayer(e);M("changed",[l])};
+this.deleteCurrentLayer=function(){var e=B().getCurrentLayer(),k=e.nextSibling,l=e.parentNode;if(e=B().deleteCurrentLayer()){var C=new Da("Delete Layer");C.addSubCommand(new Ha(e,k,l));wa(C);xa();M("changed",[l]);return true}return false};this.setCurrentLayer=function(e){(e=B().setCurrentLayer(svgedit.utilities.toXml(e)))&&xa();return e};this.renameCurrentLayer=function(e){var k=B();if(k.current_layer){var l=k.current_layer;if(!c.setCurrentLayer(e)){for(var C=new Da("Rename Layer"),A=0;A<k.getNumLayers();++A)if(k.all_layers[A][1]==
+l)break;var G=k.getLayerName(A);k.all_layers[A][0]=svgedit.utilities.toXml(e);var D=l.childNodes.length;for(A=0;A<D;++A){var z=l.childNodes.item(A);if(z&&z.tagName=="title"){for(;z.firstChild;)z.removeChild(z.firstChild);z.textContent=e;C.addSubCommand(new Ma(z,{"#text":G}));wa(C);M("changed",[l]);return true}}}k.current_layer=l}return false};this.setCurrentLayerPosition=function(e){var k=B();if(k.current_layer&&e>=0&&e<k.getNumLayers()){for(var l=0;l<k.getNumLayers();++l)if(k.all_layers[l][1]==k.current_layer)break;
+if(l==k.getNumLayers())return false;if(l!=e){var C=null,A=k.current_layer.nextSibling;if(e>l){if(e<k.getNumLayers()-1)C=k.all_layers[e+1][1]}else C=k.all_layers[e][1];n.insertBefore(k.current_layer,C);wa(new Ja(k.current_layer,A,n));xb();c.setCurrentLayer(k.getLayerName(e));return true}}return false};this.setLayerVisibility=function(e,k){var l=B(),C=l.getLayerVisibility(e),A=l.setLayerVisibility(e,k);if(A)wa(new Ma(A,{display:C?"inline":"none"},"Layer Visibility"));else return false;if(A==l.getCurrentLayer()){xa();
+La.clear()}return true};this.moveSelectedToLayer=function(e){for(var k=null,l=B(),C=0;C<l.getNumLayers();++C)if(l.getLayerName(C)==e){k=l.all_layers[C][1];break}if(!k)return false;e=new Da("Move Elements to Layer");l=I;for(C=l.length;C--;){var A=l[C];if(A){var G=A.nextSibling,D=A.parentNode;k.appendChild(A);e.addSubCommand(new Ja(A,G,D))}}wa(e);return true};this.mergeLayer=function(e){var k=new Da("Merge Layer"),l=B(),C=$(l.current_layer).prev()[0];if(C){for(k.addSubCommand(new Ha(l.current_layer,
+l.current_layer.nextSibling,n));l.current_layer.firstChild;){var A=l.current_layer.firstChild;if(A.localName=="title"){k.addSubCommand(new Ha(A,A.nextSibling,l.current_layer));l.current_layer.removeChild(A)}else{var G=A.nextSibling;C.appendChild(A);k.addSubCommand(new Ja(A,G,l.current_layer))}}n.removeChild(l.current_layer);if(!e){xa();xb();M("changed",[n]);wa(k)}l.current_layer=C;return k}};this.mergeAllLayers=function(){var e=new Da("Merge all Layers"),k=B();for(k.current_layer=k.all_layers[k.getNumLayers()-
+1][1];$(n).children("g").length>1;)e.addSubCommand(c.mergeLayer(true));xa();xb();M("changed",[n]);wa(e)};var Eb=this.leaveContext=function(){var e=ta.length;if(e){for(var k=0;k<e;k++){var l=ta[k],C=cb(l,"orig_opac");C!==1?l.setAttribute("opacity",C):l.removeAttribute("opacity");l.setAttribute("style","pointer-events: inherit")}ta=[];xa(true);M("contextset",null)}L=null},Kb=this.setContext=function(e){Eb();if(typeof e==="string")e=pa(e);L=e;$(e).parentsUntil("#svgcontent").andSelf().siblings().each(function(){var k=
+this.getAttribute("opacity")||1;cb(this,"orig_opac",k);this.setAttribute("opacity",k*0.33);this.setAttribute("style","pointer-events: none");ta.push(this)});xa();M("contextset",L)};this.clear=function(){La.clear();xa();c.clearSvgContentElement();c.current_drawing_=new svgedit.draw.Drawing(n);c.createLayer("Layer 1");c.undoMgr.resetUndoStack();ra.initGroup();sa=ra.getRubberBandBox();M("cleared")};this.linkControlPoints=La.linkControlPoints;this.getContentElem=function(){return n};this.getRootElem=
+function(){return d};this.getSelectedElems=function(){return I};var zb=this.getResolution=function(){var e=n.getAttribute("width")/q,k=n.getAttribute("height")/q;return{w:e,h:k,zoom:q}};this.getZoom=function(){return q};this.getVersion=function(){return"svgcanvas.js ($Rev: 2082 $)"};this.setUiStrings=function(e){$.extend(kb,e.notification)};this.setConfig=function(e){$.extend(p,e)};this.getTitle=function(e){if(e=e||I[0]){e=$(e).data("gsvg")||$(e).data("symbol")||e;e=e.childNodes;for(var k=0;k<e.length;k++)if(e[k].nodeName==
+"title")return e[k].textContent;return""}};this.setGroupTitle=function(e){var k=I[0];k=$(k).data("gsvg")||k;var l=$(k).children("title"),C=new Da("Set Label");if(e.length)if(l.length){l=l[0];C.addSubCommand(new Ma(l,{"#text":l.textContent}));l.textContent=e}else{l=f.createElementNS(b,"title");l.textContent=e;$(k).prepend(l);C.addSubCommand(new Ia(l))}else{C.addSubCommand(new Ha(l[0],l.nextSibling,k));l.remove()}wa(C)};this.getDocumentTitle=function(){return c.getTitle(n)};this.setDocumentTitle=function(e){for(var k=
+n.childNodes,l=false,C="",A=new Da("Change Image Title"),G=0;G<k.length;G++)if(k[G].nodeName=="title"){l=k[G];C=l.textContent;break}if(!l){l=f.createElementNS(b,"title");n.insertBefore(l,n.firstChild)}if(e.length)l.textContent=e;else l.parentNode.removeChild(l);A.addSubCommand(new Ma(l,{"#text":C}));wa(A)};this.getEditorNS=function(e){e&&n.setAttribute("xmlns:se","http://svg-edit.googlecode.com");return"http://svg-edit.googlecode.com"};this.setResolution=function(e,k){var l=zb(),C=l.w;l=l.h;var A;
+if(e=="fit"){var G=getStrokedBBox();if(G){A=new Da("Fit Canvas to Content");var D=pb();qb(D);var z=[],F=[];$.each(D,function(){z.push(G.x*-1);F.push(G.y*-1)});D=c.moveSelectedElements(z,F,true);A.addSubCommand(D);xa();e=Math.round(G.width);k=Math.round(G.height)}else return false}if(e!=C||k!=l){D=d.suspendRedraw(1E3);A||(A=new Da("Change Image Dimensions"));e=Ba("width",e);k=Ba("height",k);n.setAttribute("width",e);n.setAttribute("height",k);this.contentW=e;this.contentH=k;A.addSubCommand(new Ma(n,
+{width:C,height:l}));n.setAttribute("viewBox",[0,0,e/q,k/q].join(" "));A.addSubCommand(new Ma(n,{viewBox:["0 0",C,l].join(" ")}));wa(A);d.unsuspendRedraw(D);if(background=document.getElementById("canvas_background")){background.setAttribute("x",-1);background.setAttribute("y",-1);background.setAttribute("width",e+2);background.setAttribute("height",k+2)}M("changed",[n])}return[e,k]};this.getOffset=function(){return $(n).attr(["x","y"])};this.setBBoxZoom=function(e,k,l){var C=0.85,A=function(G){if(!G)return false;
+var D=Math.min(Math.round(k/G.width*100*C)/100,Math.round(l/G.height*100*C)/100);c.setZoom(D);return{zoom:D,bbox:G}};if(typeof e=="object"){e=e;if(e.width==0||e.height==0){c.setZoom(e.zoom?e.zoom:q*e.factor);return{zoom:q,bbox:e}}return A(e)}switch(e){case "selection":if(!I[0])return;e=$.map(I,function(G){if(G)return G});e=getStrokedBBox(e);break;case "canvas":e=zb();C=0.95;e={width:e.w,height:e.h,x:0,y:0};break;case "content":e=getStrokedBBox();break;case "layer":e=getStrokedBBox(pb(B().getCurrentLayer()));
+break;default:return}return A(e)};this.setZoom=function(e){var k=zb();n.setAttribute("viewBox","0 0 "+k.w/e+" "+k.h/e);q=e;$.each(I,function(l,C){C&&ra.requestSelector(C).resize()});La.zoomChange();ib("zoomChanged",e)};this.getMode=function(){return Ga};this.setMode=function(e){La.clear();bb.clear();$("#workarea").attr("class",e);Xa=I[0]&&I[0].nodeName=="text"?Ua:K;Ga=e};this.getColor=function(e){return Xa[e]};this.setColor=function(e,k,l){K[e]=k;Xa[e+"_paint"]={type:"solidColor"};for(var C=[],A=
+I.length;A--;){var G=I[A];if(G)if(G.tagName=="g")svgedit.utilities.walkTree(G,function(D){D.nodeName!="g"&&C.push(D)});else if(e=="fill")G.tagName!="polyline"&&G.tagName!="line"&&C.push(G);else C.push(G)}if(C.length>0)if(l)Ab(e,k,C);else{Ya(e,k,C);M("changed",C)}};var gb=function(){var e=n.getElementsByTagNameNS(b,"defs");if(e.length>0)e=e[0];else{e=f.createElementNS(b,"defs");n.firstChild?n.insertBefore(e,n.firstChild.nextSibling):n.appendChild(e)}return e},Nb=this.setGradient=function(e){if(!(!Xa[e+
+"_paint"]||Xa[e+"_paint"].type=="solidColor")){var k=c[e+"Grad"],l=Mb(k),C=gb();if(l)k=l;else{k=C.appendChild(f.importNode(k,true));k.id=ka()}c.setColor(e,"url(#"+k.id+")");if(e=="canvas")(e=document.getElementById("canvas_background"))&&e.setAttribute("fill","url(#"+k.id+")")}},Mb=function(e){var k=gb();k=$(k).find("linearGradient, radialGradient");for(var l=k.length,C=["r","cx","cy","fx","fy"];l--;){var A=k[l];if(e.tagName=="linearGradient"){if(e.getAttribute("x1")!=A.getAttribute("x1")||e.getAttribute("y1")!=
+A.getAttribute("y1")||e.getAttribute("x2")!=A.getAttribute("x2")||e.getAttribute("y2")!=A.getAttribute("y2"))continue}else{var G=$(e).attr(C),D=$(A).attr(C),z=false;$.each(C,function(E,H){if(G[H]!=D[H])z=true});if(z)continue}var F=e.getElementsByTagNameNS(b,"stop"),h=A.getElementsByTagNameNS(b,"stop");if(F.length==h.length){for(var m=F.length;m--;){var o=F[m],u=h[m];if(o.getAttribute("offset")!=u.getAttribute("offset")||o.getAttribute("stop-opacity")!=u.getAttribute("stop-opacity")||o.getAttribute("stop-color")!=
+u.getAttribute("stop-color"))break}if(m==-1)return A}}return null};this.setPaint=function(e,k){var l=new $.jGraduate.Paint(k);this.setPaintOpacity(e,l.alpha/100,true);Xa[e+"_paint"]=l;switch(l.type){case "solidColor":if(l.solidColor!="none"&&l.solidColor!="#none")this.setColor(e,"#"+l.solidColor);else{this.setColor(e,"none");document.querySelector(e=="fill"?"#fill_color rect":"#stroke_color rect").setAttribute("fill","none")}break;case "linearGradient":case "radialGradient":c[e+"Grad"]=l[l.type];
+Nb(e)}};this.getStrokeWidth=function(){return Xa.stroke_width};this.setStrokeWidth=function(e){if(e==0&&["line","path"].indexOf(Ga)>=0)c.setStrokeWidth(1);else{Xa.stroke_width=e;for(var k=[],l=I.length;l--;){var C=I[l];if(C)C.tagName=="g"?svgedit.utilities.walkTree(C,function(A){A.nodeName!="g"&&k.push(A)}):k.push(C)}if(k.length>0){Ya("stroke-width",e,k);M("changed",I)}}};this.setStrokeAttr=function(e,k){K[e.replace("-","_")]=k;for(var l=[],C=I.length;C--;){var A=I[C];if(A)A.tagName=="g"?svgedit.utilities.walkTree(A,
+function(G){G.nodeName!="g"&&l.push(G)}):l.push(A)}if(l.length>0){Ya(e,k,l);M("changed",I)}};this.getStyle=function(){return K};this.getOpacity=function(){return K.opacity};this.setOpacity=function(e){K.opacity=e;Ya("opacity",e)};this.getFillOpacity=function(){return K.fill_opacity};this.getStrokeOpacity=function(){return K.stroke_opacity};this.setPaintOpacity=function(e,k,l){K[e+"_opacity"]=k;l?Ab(e+"-opacity",k):Ya(e+"-opacity",k)};this.getBlur=function(e){var k=0;if(e)if(e.getAttribute("filter"))if(e=
+pa(e.id+"_blur"))k=e.firstChild.getAttribute("stdDeviation");return k};(function(){function e(){var A=c.undoMgr.finishUndoableChange();k.addSubCommand(A);wa(k);l=k=null}var k=null,l=null,C=false;c.setBlurNoUndo=function(A){if(l)if(A===0){Ab("filter","");C=true}else{var G=I[0];C&&Ab("filter","url(#"+G.id+"_blur)");if(svgedit.browser.isWebkit()){G.removeAttribute("filter");G.setAttribute("filter","url(#"+G.id+"_blur)")}Ab("stdDeviation",A,[l.firstChild]);c.setBlurOffsets(l,A)}else c.setBlur(A)};c.setBlurOffsets=
+function(A,G){if(G>3)ma(A,{x:"-50%",y:"-50%",width:"200%",height:"200%"},100);else if(!svgedit.browser.isWebkit()){A.removeAttribute("x");A.removeAttribute("y");A.removeAttribute("width");A.removeAttribute("height")}};c.setBlur=function(A,G){if(k)e();else{var D=I[0],z=D.id;l=pa(z+"_blur");A-=0;var F=new Da;if(l){if(A===0)l=null}else{var h=S({element:"feGaussianBlur",attr:{"in":"SourceGraphic",stdDeviation:A}});l=S({element:"filter",attr:{id:z+"_blur"}});l.appendChild(h);gb().appendChild(l);F.addSubCommand(new Ia(l))}h=
+{filter:D.getAttribute("filter")};if(A===0){D.removeAttribute("filter");F.addSubCommand(new Ma(D,h))}else{Ya("filter","url(#"+z+"_blur)");F.addSubCommand(new Ma(D,h));c.setBlurOffsets(l,A);k=F;c.undoMgr.beginUndoableChange("stdDeviation",[l?l.firstChild:null]);if(G){c.setBlurNoUndo(A);e()}}}}})();this.getBold=function(){var e=true;I.filter(Boolean).forEach(function(k){if(k.getAttribute("font-weight")!="bold")e=false});return e};this.setBold=function(e){var k=I.filter(Boolean);k.forEach(function(l){if(l!=
+null&&l.tagName=="text")Ya("font-weight",e?"bold":"normal")});k[0].textContent||bb.setCursor()};this.getItalic=function(){var e=true;I.filter(Boolean).forEach(function(k){if(k.getAttribute("font-style")!="italic")e=false});return e};this.setItalic=function(e){var k=I.filter(Boolean);k.forEach(function(l){if(l!=null&&l.tagName=="text")Ya("font-style",e?"italic":"normal")});k[0].textContent||bb.setCursor()};this.getFontFamily=function(){return Ua.font_family};this.setFontFamily=function(e){Ua.font_family=
+e;Ya("font-family",e);I[0]&&!I[0].textContent&&bb.setCursor()};this.setFontColor=function(e){Ua.fill=e;Ya("fill",e)};this.getFontSize=function(){return Ua.fill};this.getFontSize=function(){return Ua.font_size};this.setFontSize=function(e){Ua.font_size=e;Ya("font-size",e);I[0].textContent||bb.setCursor()};this.getText=function(){var e=I[0];if(e==null)return"";return e.textContent};this.setTextContent=function(e){Ya("#text",e);bb.init(e);bb.setCursor()};this.setImageURL=function(e){var k=I[0];if(k){var l=
+$(k).attr(["width","height"]);l=!l.width||!l.height;var C=ca(k);if(C!==e)l=true;else if(!l)return;var A=new Da("Change Image URL");U(k,e);A.addSubCommand(new Ma(k,{"#href":C}));l?$(new Image).load(function(){var G=$(k).attr(["width","height"]);$(k).attr({width:this.width,height:this.height});ra.requestSelector(k).resize();A.addSubCommand(new Ma(k,G));wa(A);M("changed",[k])}).attr("src",e):wa(A)}};this.setLinkURL=function(e){var k=I[0];if(k){if(k.tagName!=="a"){k=$(k).parents("a");if(k.length)k=k[0];
+else return}var l=ca(k);if(l!==e){var C=new Da("Change Link URL");U(k,e);C.addSubCommand(new Ma(k,{"#href":l}));wa(C)}}};this.elementsAreSame=function(e){return!e.length||e[0]==null?null:I.every(function(k){return k&&I[0]?k.nodeName==I[0].nodeName:null})};this.setRectRadius=function(e){c.elementsAreSame(I)&&I[0].tagName=="rect"&&I.forEach(function(k){var l=k.getAttribute("rx");if(l!=e){k.setAttribute("rx",e);k.setAttribute("ry",e);wa(new Ma(k,{rx:l,ry:l},"Radius"));M("changed",[k])}})};this.makeHyperlink=
+function(e){c.groupSelectedElements("a",e)};this.removeHyperlink=function(){c.ungroupSelectedElement()};this.setSegType=function(e){La.setSegType(e)};this.convertToPath=function(e,k){if(e==null)$.each(I,function(ba,T){T&&c.convertToPath(T)});else{if(!k)var l=new Da("Convert element to Path");var C=k?{}:{fill:K.fill,"fill-opacity":K.fill_opacity,stroke:K.stroke,"stroke-width":K.stroke_width,"stroke-dasharray":K.stroke_dasharray,"stroke-linejoin":K.stroke_linejoin,"stroke-linecap":K.stroke_linecap,
+"stroke-opacity":K.stroke_opacity,opacity:K.opacity,visibility:"hidden"};$.each(["marker-start","marker-end","marker-mid","filter","clip-path"],function(){if(e.getAttribute(this))C[this]=e.getAttribute(this)});var A=S({element:"path",attr:C}),G=e.getAttribute("transform");G&&A.setAttribute("transform",G);var D=e.id,z=e.parentNode;e.nextSibling?z.insertBefore(A,e):z.appendChild(A);var F="",h=function(ba){$.each(ba,function(T,fa){var ha=fa[1];F+=fa[0];for(var W=0;W<ha.length;W+=2)F+=ha[W]+","+ha[W+
+1]+" "})},m=1.81;switch(e.tagName){case "ellipse":case "circle":var o=$(e).attr(["rx","ry","cx","cy"]),u=o.cx,E=o.cy,H=o.rx;o=o.ry;if(e.tagName=="circle")H=o=$(e).attr("r");h([["M",[u-H,E]],["C",[u-H,E-o/m,u-H/m,E-o,u,E-o]],["C",[u+H/m,E-o,u+H,E-o/m,u+H,E]],["C",[u+H,E+o/m,u+H/m,E+o,u,E+o]],["C",[u-H/m,E+o,u-H,E+o/m,u-H,E]],["Z",[]]]);break;case "path":F=e.getAttribute("d");break;case "line":o=$(e).attr(["x1","y1","x2","y2"]);F="M"+o.x1+","+o.y1+"L"+o.x2+","+o.y2;break;case "polyline":case "polygon":F=
+"M"+e.getAttribute("points");break;case "rect":o=$(e).attr(["rx","ry"]);H=o.rx;o=o.ry;var J=e.getBBox();u=J.x;E=J.y;var O=J.width;J=J.height;m=4-m;if(!H&&!o)h([["M",[u,E]],["L",[u+O,E]],["L",[u+O,E+J]],["L",[u,E+J]],["L",[u,E]],["Z",[]]]);else{o||(o=H);h([["M",[u,E+o]],["C",[u,E+o/m,u+H/m,E,u+H,E]],["L",[u+O-H,E]],["C",[u+O-H/m,E,u+O,E+o/m,u+O,E+o]],["L",[u+O,E+J-o]],["C",[u+O,E+J-o/m,u+O-H/m,E+J,u+O-H,E+J]],["L",[u+H,E+J]],["C",[u+H/m,E+J,u,E+J-o/m,u,E+J-o]],["L",[u,E+o]],["Z",[]]])}break;default:A.parentNode.removeChild(A)}F&&
+A.setAttribute("d",F);if(k){La.resetOrientation(A);l=false;try{l=A.getBBox()}catch(X){}A.parentNode.removeChild(A);return l}else{if(G){G=R(A);oa(G)&&La.resetOrientation(A)}l.addSubCommand(new Ha(e,e.nextSibling,z));l.addSubCommand(new Ia(A));xa();e.parentNode.removeChild(e);A.setAttribute("id",D);A.removeAttribute("visibility");qb([A],true);wa(l)}}};var Ab=this.changeSelectedAttributeNoUndo=function(e,k,l){var C=d.suspendRedraw(1E3);Ga=="pathedit"&&La.moveNode(e,k);l=l||I;for(var A=l.length,G=["g",
+"polyline","path"];A--;){var D=l[A];if(D!=null){Ga==="textedit"&&e!=="#text"&&D.textContent.length&&bb.toSelectMode(D);if((e==="x"||e==="y")&&G.indexOf(D.tagName)>=0){var z=getStrokedBBox([D]);c.moveSelectedElements((e==="x"?k-z.x:0)*q,(e==="y"?k-z.y:0)*q,true)}else{z=e==="#text"?D.textContent:D.getAttribute(e);if(z==null)z="";if(z!==String(k)){if(e=="#text"){svgedit.utilities.getBBox(D);D.textContent=k}else e=="#href"?U(D,k):D.setAttribute(e,k);I.indexOf(D)>=0&&setTimeout(function(){D.parentNode&&
+ra.requestSelector(D).resize()},0);z=na(D);if(z!=0&&e!="transform")for(var F=R(D),h=F.numberOfItems;h--;)if(F.getItem(h).type==4){F.removeItem(h);var m=svgedit.utilities.getBBox(D),o=N(m.x+m.width/2,m.y+m.height/2,Y(F).matrix);m=o.x;o=o.y;var u=d.createSVGTransform();u.setRotate(z,m,o);F.insertItemBefore(u,h);break}}}}}d.unsuspendRedraw(C)},Ya=this.changeSelectedAttribute=function(e,k,l){l=l||I;c.undoMgr.beginUndoableChange(e,l);Ab(e,k,l);e=c.undoMgr.finishUndoableChange();e.isEmpty()||wa(e)};this.deleteSelectedElements=
+function(){for(var e=new Da("Delete Elements"),k=I.length,l=[],C=0;C<k;++C){var A=I[C];if(A==null)break;var G=A.parentNode,D=A;ra.releaseSelector(D);svgedit.path.removePath_(D.id);if(G.tagName==="a"&&G.childNodes.length===1){D=G;G=G.parentNode}var z=D.nextSibling;D=G.removeChild(D);l.push(A);I[C]=null;e.addSubCommand(new Ha(D,z,G))}e.isEmpty()||wa(e);M("changed",l);xa()};this.cutSelectedElements=function(){for(var e=new Da("Cut Elements"),k=I.length,l=[],C=0;C<k;++C){var A=I[C];if(A==null)break;var G=
+A.parentNode,D=A;ra.releaseSelector(D);svgedit.path.removePath_(D.id);var z=D.nextSibling;D=G.removeChild(D);l.push(A);I[C]=null;e.addSubCommand(new Ha(D,z,G))}e.isEmpty()||wa(e);M("changed",l);xa();c.clipBoard=l};this.copySelectedElements=function(){c.clipBoard=$.merge([],I)};this.pasteElements=function(){var e=c.clipBoard,k=e.length;if(k){for(var l=[],C=new Da("Paste elements");k--;){var A=e[k];if(A){var G=ia(A);if(!pa(A.id))G.id=A.id;l.push(G);(L||B().getCurrentLayer()).appendChild(G);C.addSubCommand(new Ia(G))}}svgCanvas.clearSelection();
+setTimeout(function(){rb(l)},100);wa(C);M("changed",l)}};this.groupSelectedElements=function(e){e||(e="g");var k="";switch(e){case "a":k="Make hyperlink";var l="";if(arguments.length>1)l=arguments[1];break;default:e="g";k="Group Elements"}k=new Da(k);var C=S({element:e,attr:{id:ka()}});e==="a"&&U(C,l);k.addSubCommand(new Ia(C));for(l=I.length;l--;){var A=I[l];if(A!=null){if(A.parentNode.tagName==="a"&&A.parentNode.childNodes.length===1)A=A.parentNode;var G=A.nextSibling,D=A.parentNode;C.appendChild(A);
+k.addSubCommand(new Ja(A,G,D))}}k.isEmpty()||wa(k);rb([C],true)};var Db=this.pushGroupProperties=function(e,k){var l=e.childNodes,C=l.length,A=e.getAttribute("transform"),G=R(e),D=Y(G).matrix,z=new Da("Push group properties"),F=0,h=na(e),m=$(e).attr(["filter","opacity"]),o,u;for(F=0;F<C;F++){var E=l[F];if(E.nodeType===1){if(m.opacity!==null&&m.opacity!==1){E.getAttribute("opacity");var H=Math.round((E.getAttribute("opacity")||1)*m.opacity*100)/100;Ya("opacity",H,[E])}if(m.filter){var J=H=this.getBlur(E);
+u||(u=this.getBlur(e));if(H)H=u-0+(H-0);else if(H===0)H=u;if(J)o=P(E.getAttribute("filter"));else if(o){o=ia(o);gb().appendChild(o)}else o=P(m.filter);o.id=E.id+"_"+(o.firstChild.tagName==="feGaussianBlur"?"blur":"filter");Ya("filter","url(#"+o.id+")",[E]);if(H){Ya("stdDeviation",H,[o.firstChild]);c.setBlurOffsets(o,H)}}H=R(E);if(~E.tagName.indexOf("Gradient"))H=null;if(H)if(E.tagName!=="defs")if(G.numberOfItems){if(h&&G.numberOfItems==1){var O=G.getItem(0).matrix,X=d.createSVGMatrix();if(J=na(E))X=
+H.getItem(0).matrix;var ba=svgedit.utilities.getBBox(E),T=Y(H).matrix,fa=N(ba.x+ba.width/2,ba.y+ba.height/2,T);ba=h+J;T=d.createSVGTransform();T.setRotate(ba,fa.x,fa.y);O=ga(O,X,T.matrix.inverse());J&&H.removeItem(0);if(ba)H.numberOfItems?H.insertItemBefore(T,0):H.appendItem(T);if(O.e||O.f){J=d.createSVGTransform();J.setTranslate(O.e,O.f);H.numberOfItems?H.insertItemBefore(J,0):H.appendItem(J)}}else{J=E.getAttribute("transform");O={};O.transform=J?J:"";J=d.createSVGTransform();O=Y(H).matrix;X=O.inverse();
+O=ga(X,D,O);J.setMatrix(O);H.appendItem(J)}(E=Ra(E))&&z.addSubCommand(E)}}}if(A){O={};O.transform=A;e.setAttribute("transform","");e.removeAttribute("transform");z.addSubCommand(new Ma(e,O))}if(k&&!z.isEmpty())return z};this.ungroupSelectedElement=function(){var e=I[0];if($(e).data("gsvg")||$(e).data("symbol"))Lb(e);else if(e.tagName==="use"){var k=pa(ca(e).substr(1));$(e).data("symbol",k).data("ref",k);Lb(e)}else{k=$(e).parents("a");if(k.length)e=k[0];if(e.tagName==="g"||e.tagName==="a"){k=new Da("Ungroup Elements");
+var l=Db(e,true);l&&k.addSubCommand(l);l=e.parentNode;for(var C=e.nextSibling,A=Array(e.childNodes.length),G=0;e.firstChild;){var D=e.firstChild,z=D.nextSibling,F=D.parentNode;if(D.tagName==="title"){k.addSubCommand(new Ha(D,D.nextSibling,F));F.removeChild(D)}else{A[G++]=D=l.insertBefore(D,C);k.addSubCommand(new Ja(D,z,F))}}xa();C=e.nextSibling;e=l.removeChild(e);k.addSubCommand(new Ha(e,C,l));k.isEmpty()||wa(k);qb(A)}}};this.moveToTopSelectedElement=function(){var e=I.filter(Boolean).reverse(),k=
+new Da("Move to top");e.forEach(function(l){l=l;var C=l.parentNode,A=l.nextSibling;l=l.parentNode.appendChild(l);if(A!=l.nextSibling){k.addSubCommand(new Ja(l,A,C,"top"));M("changed",[l])}k.isEmpty()||wa(k)})};this.moveToBottomSelectedElement=function(){var e=I.filter(Boolean).reverse(),k=new Da("Move to top");e.forEach(function(l){l=l;var C=l.parentNode,A=l.nextSibling,G=l.parentNode.firstChild;if(G.tagName=="title")G=G.nextSibling;if(G.tagName=="defs")G=G.nextSibling;l=l.parentNode.insertBefore(l,
+G);if(A!=l.nextSibling){k.addSubCommand(new Ja(l,A,C,"bottom"));M("changed",[l])}});k.isEmpty()||wa(k)};this.moveUpDownSelected=function(e){var k=I.filter(Boolean);e=="Down"&&k.reverse();var l=new Da("Move "+e);k.forEach(function(C){hb=[];var A,G,D=$(ob(getStrokedBBox([C]))).toArray();e=="Down"&&D.reverse();$.each(D,function(){if(G){A=this;return false}else if(this==C)G=true});if(A){D=C.parentNode;var z=C.nextSibling;$(A)[e=="Down"?"before":"after"](C);if(z!=C.nextSibling){l.addSubCommand(new Ja(C,
+z,D,"Move "+e));M("changed",[C])}}});l.isEmpty()||wa(l)};this.moveSelectedElements=function(e,k,l){if(e.constructor!=Array){e/=q;k/=q}l=l||true;for(var C=new Da("position"),A=I.length;A--;){var G=I[A];if(G!=null){var D=d.createSVGTransform(),z=R(G);e.constructor==Array?D.setTranslate(e[A],k[A]):D.setTranslate(e,k);z.numberOfItems?z.insertItemBefore(D,0):z.appendItem(D);(D=Ra(G))&&C.addSubCommand(D);ra.requestSelector(G).resize()}}if(!C.isEmpty()){l&&wa(C);M("changed",I);return C}};this.cloneSelectedElements=
+function(e,k,l){for(var C=new Da("Clone Elements"),A=I.length,G=0;G<A;++G){var D=I[G];if(D==null)break}A=I.slice(0,G);this.clearSelection(true);G=A.length;for(clones=[];G--;){D=A[G];var z=ia(A[G]),F=L||B().getCurrentLayer();if(l){tlist=R(z);tlist.removeItem(l);Ra(z);F.insertBefore(z,D)}else F.appendChild(z);clones.push(z);C.addSubCommand(new Ia(z))}if(!C.isEmpty()){qb(A.reverse());l||this.moveSelectedElements(e,k,false);wa(C)}return clones};this.alignSelectedElements=function(e,k){var l=[],C=Number.MAX_VALUE,
+A=Number.MIN_VALUE,G=Number.MAX_VALUE,D=Number.MIN_VALUE,z=Number.MIN_VALUE,F=Number.MIN_VALUE,h=I.length;if(h){for(var m=0;m<h;++m){if(I[m]==null)break;l[m]=getStrokedBBox([I[m]]);switch(k){case "smallest":if((e=="l"||e=="c"||e=="r")&&(z==Number.MIN_VALUE||z>l[m].width)||(e=="t"||e=="m"||e=="b")&&(F==Number.MIN_VALUE||F>l[m].height)){C=l[m].x;G=l[m].y;A=l[m].x+l[m].width;D=l[m].y+l[m].height;z=l[m].width;F=l[m].height}break;case "largest":if((e=="l"||e=="c"||e=="r")&&(z==Number.MIN_VALUE||z<l[m].width)||
+(e=="t"||e=="m"||e=="b")&&(F==Number.MIN_VALUE||F<l[m].height)){C=l[m].x;G=l[m].y;A=l[m].x+l[m].width;D=l[m].y+l[m].height;z=l[m].width;F=l[m].height}break;default:if(l[m].x<C)C=l[m].x;if(l[m].y<G)G=l[m].y;if(l[m].x+l[m].width>A)A=l[m].x+l[m].width;if(l[m].y+l[m].height>D)D=l[m].y+l[m].height}}if(k=="page"){G=C=0;A=c.contentW;D=c.contentH}z=Array(h);F=Array(h);for(m=0;m<h;++m){if(I[m]==null)break;var o=l[m];z[m]=0;F[m]=0;switch(e){case "l":z[m]=C-o.x;break;case "c":z[m]=(C+A)/2-(o.x+o.width/2);break;
+case "r":z[m]=A-(o.x+o.width);break;case "t":F[m]=G-o.y;break;case "m":F[m]=(G+D)/2-(o.y+o.height/2);break;case "b":F[m]=D-(o.y+o.height)}}this.moveSelectedElements(z,F)}};this.contentW=zb().w;this.contentH=zb().h;this.updateCanvas=function(e,k){d.setAttribute("width",e);d.setAttribute("height",k);var l=$("#canvasBackground")[0],C=n.getAttribute("x"),A=n.getAttribute("y"),G=e/2-this.contentW*q/2,D=k/2-this.contentH*q/2;ma(n,{width:this.contentW*q,height:this.contentH*q,x:G,y:D,viewBox:"0 0 "+this.contentW+
+" "+this.contentH});ma(l,{width:n.getAttribute("width"),height:n.getAttribute("height"),x:G,y:D});(l=pa("background_image"))&&ma(l,{width:"100%",height:"100%"});ra.selectorParentGroup.setAttribute("transform","translate("+G+","+D+")");return{x:G,y:D,old_x:C,old_y:A,d_x:G-C,d_y:D-A}};this.setBackground=function(e,k){var l=pa("canvasBackground"),C=$(l).find("rect")[0],A=pa("background_image");C.setAttribute("fill",e);if(k){if(!A){A=f.createElementNS(b,"image");ma(A,{id:"background_image",width:"100%",
+height:"100%",preserveAspectRatio:"xMinYMin",style:"pointer-events:none"})}U(A,k);l.appendChild(A)}else A&&A.parentNode.removeChild(A)};this.cycleElement=function(e){var k=I[0],l=false,C=pb(L||B().getCurrentLayer());if(C.length){if(k==null){e=e?C.length-1:0;l=C[e]}else for(var A=C.length;A--;)if(C[A]==k){e=e?A-1:A+1;if(e>=C.length)e=0;else if(e<0)e=C.length-1;l=C[e];break}rb([l],true);M("selected",I)}};this.clear();this.getPrivateMethods=function(){return{addCommandToHistory:wa,setGradient:Nb,addSvgElementFromJson:S,
+assignAttributes:ma,BatchCommand:Da,call:M,ChangeElementCommand:Ma,copyElem:ia,ffClone:da,findDefs:gb,findDuplicateGradient:Mb,getElem:pa,getId:aa,getIntersectionList:ob,getMouseTarget:Bb,getNextId:ka,getPathBBox:Z,getUrlFromAttr:ja,hasMatrixTransform:oa,identifyLayers:xb,InsertElementCommand:Ia,isIdentity:svgedit.math.isIdentity,logMatrix:Wa,matrixMultiply:ga,MoveElementCommand:Ja,preventClickDefault:Fb,recalculateAllSelectedDimensions:Ea,recalculateDimensions:Ra,remapElement:Za,RemoveElementCommand:Ha,
+removeUnusedDefElems:yb,round:ab,runExtensions:ib,sanitizeSvg:za,SVGEditTransformList:svgedit.transformlist.SVGTransformList,toString:toString,transformBox:svgedit.math.transformBox,transformListToTransform:Y,transformPoint:N,walkTree:svgedit.utilities.walkTree}}};(function(){document.addEventListener("touchstart",touchHandler,true);document.addEventListener("touchmove",touchHandler,true);document.addEventListener("touchend",touchHandler,true);document.addEventListener("touchcancel",touchHandler,true);if(!window.methodDraw)window.methodDraw=function(a){function s(d,n){var v=g.setSvgString(d)!==false;n=n||a.noop;v?n(true):a.alert(uiStrings.notification.errorLoadingSVG,function(){n(false)})}var g,b={},p=false;curConfig={canvas_expansion:1,dimensions:[580,400],
+initFill:{color:"fff",opacity:1},initStroke:{width:1.5,color:"000",opacity:1},initOpacity:1,imgPath:"images/",extPath:"extensions/",jGraduatePath:"jgraduate/images/",extensions:[],initTool:"select",wireframe:false,colorPickerCSS:false,gridSnapping:false,gridColor:"#000",baseUnit:"px",snappingStep:10,showRulers:svgedit.browser.isTouch()?false:true,show_outside_canvas:false,no_save_warning:true,initFont:"Helvetica, Arial, sans-serif"};uiStrings=b.uiStrings={common:{ok:"OK",cancel:"Cancel",key_up:"Up",
+key_down:"Down",key_backspace:"Backspace",key_del:"Del"},layers:{layer:"Layer"},notification:{invalidAttrValGiven:"Invalid value given",noContentToFitTo:"No content to fit to",dupeLayerName:"There is already a layer named that!",enterUniqueLayerName:"Please enter a unique layer name",enterNewLayerName:"Please enter the new layer name",layerHasThatName:"Layer already has that name",QmoveElemsToLayer:'Move selected elements to layer "%s"?',QwantToClear:"<strong>Do you want to clear the drawing?</strong>\nThis will also erase your undo history",
+QwantToOpen:"Do you want to open a new file?\nThis will also erase your undo history",QerrorsRevertToSource:"There were parsing errors in your SVG source.\nRevert back to original SVG source?",QignoreSourceChanges:"Ignore changes made to SVG source?",featNotSupported:"Feature not supported",enterNewImgURL:"Enter the new image URL",defsFailOnSave:"NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",loadingImage:"Loading image, please wait...",
+saveFromBrowser:'Select "Save As..." in your browser to save this image as a %s file.',noteTheseIssues:"Also note the following issues: ",unsavedChanges:"There are unsaved changes.",enterNewLinkURL:"Enter the new hyperlink URL",errorLoadingSVG:"Error: Unable to load SVG data",URLloadFail:"Unable to load from URL",retrieving:'Retrieving "%s" ...'}};var w={},c={};b.curConfig=curConfig;b.tool_scale=1;b.setConfig=function(d){a.extend(true,curConfig,d);if(d.extensions)curConfig.extensions=d.extensions};
+b.setCustomHandlers=function(d){b.ready(function(){if(d.open){a('#tool_open > input[type="file"]').remove();a("#tool_open").show();g.open=d.open}if(d.save){b.show_save_warning=false;g.bind("saved",d.save)}d.pngsave&&g.bind("exported",d.pngsave);c=d})};b.randomizeIds=function(){g.randomizeIds(arguments)};b.init=function(){(function(){var h=window.opener;if(h)try{var m=h.document.createEvent("Event");m.initEvent("methodDrawReady",true,true);h.document.documentElement.dispatchEvent(m)}catch(o){}})();
+(function(){a("body").toggleClass("touch",svgedit.browser.isTouch());var h=a.deparam.querystring(true);if(!a.isEmptyObject(h)){if(h.dimensions)h.dimensions=h.dimensions.split(",");if(h.extensions)h.extensions=h.extensions.split(",");if(h.bkgd_color)h.bkgd_color="#"+h.bkgd_color;methodDraw.setConfig(h);var m=h.source,o=a.param.querystring();if(!m)if(o.indexOf("source=data:")>=0)m=o.match(/source=(data:[^&]*)/)[1];if(m)if(m.indexOf("data:")===0){m=m.replace(/ /g,"+");b.loadFromDataURI(m)}else b.loadFromString(m);
+else if(o.indexOf("paramurl=")!==-1)methodDraw.loadFromURL(o.substr(9));else h.url&&methodDraw.loadFromURL(h.url)}})();a("#canvas_width").val(curConfig.dimensions[0]);a("#canvas_height").val(curConfig.dimensions[1]);var d=function(){a.each(curConfig.extensions,function(){var h=this;a.getScript(curConfig.extPath+h,function(m){if(!m){m=document.createElement("script");m.src=curConfig.extPath+h;document.querySelector("head").appendChild(m)}})})};document.location.protocol==="file:"?setTimeout(d,100):
+d();a.svgIcons(curConfig.imgPath+"svg_edit_icons.svg",{w:27,h:27,id_match:false,no_img:true,fallback_path:curConfig.imgPath,fallback:{logo:"logo.png",select:"select.png",select_node:"select_node.png",pencil:"pencil.png",pen:"line.png",rect:"square.png",ellipse:"ellipse.png",path:"path.png",text:"text.png",image:"image.png",zoom:"zoom.png","delete":"delete.png",spapelib:"shapelib.png",node_delete:"node_delete.png",align_left:"align-left.png",align_center:"align-center.png",align_right:"align-right.png",
+align_top:"align-top.png",align_middle:"align-middle.png",align_bottom:"align-bottom.png",arrow_right:"flyouth.png",arrow_down:"dropdown.gif"},placement:{"#logo":"logo","#tool_select":"select","#tool_fhpath":"pencil","#tool_line":"pen","#tool_rect,#tools_rect_show":"rect","#tool_ellipse,#tools_ellipse_show":"ellipse","#tool_path":"path","#tool_text,#layer_rename":"text","#tool_image":"image","#tool_zoom":"zoom","#tool_node_clone":"node_clone","#tool_node_delete":"node_delete","#tool_add_subpath":"add_subpath",
+"#tool_openclose_path":"open_path","#tool_alignleft, #tool_posleft":"align_left","#tool_aligncenter, #tool_poscenter":"align_center","#tool_alignright, #tool_posright":"align_right","#tool_aligntop, #tool_postop":"align_top","#tool_alignmiddle, #tool_posmiddle":"align_middle","#tool_alignbottom, #tool_posbottom":"align_bottom","#cur_position":"align","#zoomLabel":"zoom"},resize:{"#logo .svg_icon":15,".flyout_arrow_horiz .svg_icon":5,"#fill_bg .svg_icon, #stroke_bg .svg_icon":svgedit.browser.isTouch()?
+24:24,".palette_item:first .svg_icon":svgedit.browser.isTouch()?30:16,"#zoomLabel .svg_icon":16,"#zoom_dropdown .svg_icon":7},callback:function(){a(".toolbar_button button > svg, .toolbar_button button > img").each(function(){a(this).parent().prepend(this)});a(".tool_button, .tool_button_current").addClass("loaded");var h=a("#tools_left");if(h.length!=0){h.offset();h.outerHeight()}a(".tools_flyout").each(function(){var m=a("#"+this.id+"_show"),o=m.attr("data-curopt");if(!m.children("svg, img").length){o=
+a(o).children().clone();if(o.length){o[0].removeAttribute("style");m.append(o)}}});methodDraw.runCallbacks();setTimeout(function(){a(".flyout_arrow_horiz:empty").each(function(){a(this).append(a.getSvgIcon("arrow_right").width(5).height(5))})},1)}});a("#rulers").on("dblclick",function(h){a("#base_unit_container").css({top:h.pageY-10,left:h.pageX-50,display:"block"})});a("#base_unit_container").on("mouseleave mouseenter",function(){t=setTimeout(function(){a("#base_unit_container").fadeOut(500)},200);
+event.type=="mouseover"&&clearTimeout(t)});a("#base_unit").on("change",function(){savePreferences()});b.canvas=g=new a.SvgCanvas(document.getElementById("svgcanvas"),curConfig);b.show_save_warning=false;b.paintBox={fill:null,stroke:null,canvas:null};d=navigator.platform.indexOf("Mac")>=0;var n=navigator.userAgent.indexOf("AppleWebKit")>=0,v=d?"meta+":"ctrl+",B=g.pathActions,q=g.undoMgr,L=svgedit.utilities,Q=curConfig.imgPath+"placeholder.svg",K=a("#workarea"),I=a("#cmenu_canvas"),S=null,R=1,N="toolbars",
+ga="";d||a(".shortcut").each(function(){var h=a(this).text();a(this).text(h.split("\u2318").join("Ctrl+"))});(function(){a("#dialog_container").draggable({cancel:"#dialog_content, #dialog_buttons *",containment:"window"});var h=a("#dialog_box"),m=a("#dialog_buttons"),o=function(u,E,H,J){a("#dialog_content").html("<p>"+E.replace(/\n/g,"</p><p>")+"</p>").toggleClass("prompt",u=="prompt");m.empty();var O=a('<input type="button" value="'+uiStrings.common.ok+'">').appendTo(m);u!="alert"&&a('<input type="button" value="'+
+uiStrings.common.cancel+'">').appendTo(m).on("click touchstart",function(){h.hide();H(false)});if(u=="prompt"){var X=a('<input type="text">').prependTo(m);X.val(J||"");X.bind("keydown","return",function(){O.trigger("click touchstart")})}u=="process"&&O.hide();h.show();O.on("click touchstart",function(){h.hide();var ba=u=="prompt"?X.val():true;H&&H(ba)}).focus();u=="prompt"&&X.focus()};a.alert=function(u,E){o("alert",u,E)};a.confirm=function(u,E){o("confirm",u,E)};a.process_cancel=function(u,E){o("process",
+u,E)};a.prompt=function(u,E,H){o("prompt",u,H,E)}})();var oa=function(){var h=a(".tool_button_current");if(h.length&&h[0].id!=="tool_select"){h.removeClass("tool_button_current").addClass("tool_button");a("#tool_select").addClass("tool_button_current").removeClass("tool_button")}g.setMode("select")},Y=null,V=false,ea=false,Ba="",ja=function(h,m){var o=g.getResolution(),u=K;a("#svgcanvas").position();if(u=g.setBBoxZoom(m,u.width()-15,u.height()-15)){var E=u.zoom;u=u.bbox;if(E<0.0010)wa({value:0.1});
+else{typeof animatedZoom!="undefined"&&h.cancelAnimationFrame(animatedZoom);var H=Date.now(),J=E-o.zoom;a("#zoom");var O=o.zoom,X=function(ba){ba=(ba-H)/500;ba=Math.pow(ba-1,3)+1;g.setZoom(O+J*ba);G();if(ba<1)h.animatedZoom=requestAnimationFrame(X);else{a("#zoom").val(parseInt(E*100));a("option","#zoom_select").removeAttr("selected");a("option[value="+parseInt(E*100)+"]","#zoom_select").attr("selected","selected")}};X(Date.now());g.getMode()=="zoom"&&u.width&&oa();xb()}}};a("#cur_context_panel").delegate("a",
+"click",function(){var h=a(this);h.attr("data-root")?g.leaveContext():g.setContext(h.text());g.clearSelection();return false});var ca=function(){b.paintBox.fill.prep();b.paintBox.stroke.prep()},U={},Z=function(h){a.each(h,function(m,o){var u=a(m).children(),E=m+"_show",H=a(E),J=false;u.addClass("tool_button").unbind("click mousedown mouseup").each(function(ba){var T=o[ba];U[T.sel]=T.fn;if(T.isDefault)J=ba;ba=function(fa){var ha=T;if(fa.type==="keydown"){var W=a(ha.parent+"_show").hasClass("tool_button_current"),
+qa=a(ha.parent+"_show").attr("data-curopt");a.each(h[T.parent],function(Aa,Ca){if(Ca.sel==qa)ha=!fa.shiftKey||!W?Ca:h[T.parent][Aa+1]||h[T.parent][0]})}if(a(this).hasClass("disabled"))return false;ra(E)&&ha.fn();var ua=ha.icon?a.getSvgIcon(ha.icon,true):a(ha.sel).children().eq(0).clone();ua[0].setAttribute("width",H.width());ua[0].setAttribute("height",H.height());H.children(":not(.flyout_arrow_horiz)").remove();H.append(ua).attr("data-curopt",ha.sel)};a(this).mouseup(ba);T.key&&a(document).bind("keydown",
+T.key[0]+" shift+"+T.key[0],ba)});if(J)H.attr("data-curopt",o[J].sel);else H.attr("data-curopt")||H.attr("data-curopt",o[0].sel);var O,X=a(E).position();a(m).css({left:X.left+34,top:X.top+77});H.mousedown(function(ba){a("#workarea").one("mousedown",function(){a("#tools_shapelib").hide()});a("#tools_shapelib").is(":visible")&&ra(E,false);if(H.hasClass("disabled"))return false;var T=a(m),fa=X.left+34,ha=T.width()*-1,W=T.data("shown_popop")?200:0;O=setTimeout(function(){H.data("isLibrary")?T.css("left",
+fa).show():T.css("left",ha).show().animate({left:fa},50);T.data("shown_popop",true)},W);ba.preventDefault()}).mouseup(function(){clearTimeout(O);var ba=a(this).attr("data-curopt");if(H.data("isLibrary")&&a(E.replace("_show","")).is(":visible"))ra(E,true);else ra(E)&&ba in U&&U[ba]()})});ma()},na=function(h,m){return a("<div>",{"class":"tools_flyout",id:h}).appendTo("#svg_editor").append(m)},pa=function(){a(".tools_flyout").each(function(){var h=a("#"+this.id+"_show"),m=h.offset();h=h.outerWidth();
+a(this).css({left:(m.left+h)*R,top:m.top})})},ma=function(){a(".tools_flyout").each(function(){var h=a("#"+this.id+"_show");if(!h.data("isLibrary")){var m=[];a(this).children().each(function(){m.push(this.title)});h[0].title=m.join(" / ")}})},la,ya=function(h,m,o){var u=null;if(h.indexOf("url(#")===0){h=(h=g.getRefElem(h))?h.cloneNode(true):a("#"+o+"_color defs *")[0];u={alpha:m};u[h.tagName]=h}else u=h.indexOf("#")===0?{alpha:m,solidColor:h.substr(1)}:{alpha:m,solidColor:"none"};return new a.jGraduate.Paint(u)},
+za=g.getResolution();if(curConfig.baseUnit!=="px"){za.w=svgedit.units.convertUnit(za.w)+curConfig.baseUnit;za.h=svgedit.units.convertUnit(za.h)+curConfig.baseUnit}var Ja=function(h){g.createLayer("background");cur_shape=g.addSvgElementFromJson({element:"rect",attr:{x:-1,y:-1,width:za.w+2,height:za.h+2,stroke:"none",id:"canvas_background",opacity:1,fill:h||"#fff",style:"pointer-events:none"}});g.setCurrentLayer("Layer 1");g.setCurrentLayerPosition("1")};document.getElementById("canvas_background")||
+Ja();document.getElementById("canvas_background").getAttribute("fill");var Ia=b.setImageURL=function(h){h||(h=Q);g.setImageURL(h);a("#image_url").val(h)},Ha=function(){var h=Y;if(h!=null&&!h.parentNode)h=null;if(V&&V[0]!=null&&!V[0].parentNode)V=false;var m=g.getCurrentDrawing().getCurrentLayerName(),o=g.getMode(),u=curConfig.baseUnit!=="px"?curConfig.baseUnit:null,E=o=="pathedit";if(E){a(".context_panel").hide();a("#path_node_panel").show();a("#stroke_panel").hide();m=B.getNodePoint();a("#tool_add_subpath").removeClass("push_button_pressed").addClass("tool_button");
+a("#tool_node_delete").toggleClass("disabled",!B.canDeleteNodes);zb("#tool_openclose_path",B.closed_subpath?"open_path":"close_path");if(m){E=a("#seg_type");if(u){m.x=svgedit.units.convertUnit(m.x);m.y=svgedit.units.convertUnit(m.y)}a("#path_node_x").val(Math.round(m.x));a("#path_node_y").val(Math.round(m.y));if(m.type){E.val(m.type).removeAttr("disabled");a("#seg_type_label").html(m.type==4?"Straight":"Curve")}else E.val(4).attr("disabled","disabled")}a("#tools_top").removeClass("multiselected");
+a("#stroke_panel").hide();a("#canvas_panel").hide()}else{var H=a("#cmenu_canvas li");a(".context_panel").hide();a(".menu_item","#edit_menu").addClass("disabled");a(".menu_item","#object_menu").addClass("disabled");if(V){V=V.filter(Boolean);(h=g.elementsAreSame(V)?V[0]:null)&&a("#tools_top").addClass("multiselected")}if(!h&&!V){a("#tools_top").removeClass("multiselected");a("#stroke_panel").hide();a("#canvas_panel").show()}if(h!=null){a("#stroke_panel").show();var J=h.nodeName,O=g.getRotationAngle(h);
+a("#angle").val(Math.round(O));O=g.getBlur(h);a("#blur").val(O);if(!E&&o!="pathedit"){a("#selected_panel").show();a(".action_selected").removeClass("disabled");var X,ba;if(["g","polyline","path"].indexOf(J)>=0)if(o=g.getStrokedBBox([h])){X=o.x;ba=o.y}if(u){X=svgedit.units.convertUnit(X);ba=svgedit.units.convertUnit(ba)}a("#"+J+"_x").val(Math.round(X));a("#"+J+"_y").val(Math.round(ba));if(J==="polyline"){a("#path_x").val(Math.round(X));a("#path_y").val(Math.round(ba))}["image","text","path","g","use"].indexOf(J)==
+-1&&a(".action_path_convert_selected").removeClass("disabled");J==="path"&&a(".action_path_selected").removeClass("disabled")}u=null;if(T==="a"){u=g.getHref(h);a("#g_panel").show()}if(h.parentNode.tagName==="a")if(!a(h).siblings().length){a("#a_panel").show();u=g.getHref(h.parentNode)}a("#tool_make_link, #tool_make_link").toggle(!u);u&&a("#link_url").val(u);u={g:[],a:[],rect:["rx","width","height","x","y"],image:["width","height","x","y"],circle:["cx","cy","r"],ellipse:["cx","cy","rx","ry"],line:["x1",
+"y1","x2","y2"],text:["x","y"],use:[],path:[]};var T=h.tagName;a(h).data("gsvg")&&a("#g_panel").show();if(T=="path"||T=="polyline")a("#path_panel").show();if(u[T]){u=u[T];a("#"+T+"_panel").show();T=="rect"?a("#cornerRadiusLabel").show():a("#cornerRadiusLabel").hide();a.each(u,function(fa,ha){var W=h.getAttribute(ha);if(curConfig.baseUnit!=="px"&&h[ha])W=svgedit.units.convertUnit(h[ha].baseVal.value);var qa=document.getElementById(T+"_"+ha);qa.value=Math.round(W)||0;qa.getAttribute("data-cursor")===
+"true"&&a.fn.dragInput.updateCursor(qa)});if(T=="text"){u=h.getAttribute("font-family");document.getElementById("font_family_dropdown").selectedIndex=3;a("#text_panel").css("display","inline");a("#tool_italic").toggleClass("active",g.getItalic());a("#tool_bold").toggleClass("active",g.getBold());a("#font_family").val(u);a("#font_size").val(h.getAttribute("font-size"));a("#text").val(h.textContent);a("#preview_font").text(u.split(",")[0].replace(/'/g,"")).css("font-family",u);g.addedNew&&setTimeout(function(){a("#text").focus().select()},
+100)}else if(T=="image")Ia(g.getHref(h));else if(T==="g"||T==="use"){a("#container_panel").show();a(".action_group_selected").removeClass("disabled");g.getTitle()}}H[(T==="g"?"en":"dis")+"ableContextMenuItems"]("#ungroup");H[(T==="g"||!V?"dis":"en")+"ableContextMenuItems"]("#group")}if(V){a("#multiselected_panel").show();a(".action_multi_selected").removeClass("disabled");H.enableContextMenuItems("#group").disableContextMenuItems("#ungroup")}h||H.disableContextMenuItems("#delete,#cut,#copy,#group,#ungroup,#move_front,#move_up,#move_down,#move_back");
+q.getUndoStackSize()>0?a("#tool_undo").removeClass("disabled"):a("#tool_undo").addClass("disabled");q.getRedoStackSize()>0?a("#tool_redo").removeClass("disabled"):a("#tool_redo").addClass("disabled");g.addedNew=false;if(h&&!E||V){a("#selLayerNames").removeAttr("disabled").val(m);I.enableContextMenuItems("#delete,#cut,#copy,#move_front,#move_up,#move_down,#move_back")}}};a("#text").on("focus",function(){});a("#text").on("blur",function(){});g.bind("selected",function(h,m){var o=g.getMode();o==="select"&&
+oa();if(o==="pathedit")return Ha();Y=m.length==1||m[1]==null?m[0]:null;m=m.filter(Boolean);V=m.length>=2?m:false;if(g.elementsAreSame(V))Y=V[0];if(Y!=null){a("#multiselected_panel").hide();if(Y!=null)switch(Y.tagName){case "use":a(".context_panel").hide();a("#use_panel").show();break;case "image":a(".context_panel").hide();a("#image_panel").show();break;case "foreignObject":a(".context_panel").hide();break;case "g":case "a":o=null;for(var u=Y.getElementsByTagName("*"),E=0,H=u.length;E<H;E++){var J=
+u[E].getAttribute("stroke-width");if(E===0)o=J;else if(o!==J)o=null}a("#stroke_width").val(o===null?"0":o);Ha();break;default:a("#stroke_width").val(Y.getAttribute("stroke-width")||0);o=Y.getAttribute("stroke-dasharray")||"none";a("option","#stroke_style").removeAttr("selected");a('#stroke_style option[value="'+o+'"]').attr("selected","selected");a("#stroke_style").trigger("change");a.fn.dragInput.updateCursor(a("#stroke_width")[0]);a.fn.dragInput.updateCursor(a("#blur")[0])}if(Y!=null){o=(Y.getAttribute("opacity")||
+1)*100;a("#group_opacity").val(o);a.fn.dragInput.updateCursor(a("#group_opacity")[0])}V.length&&a("#tools_top").addClass("multiselected")}else if(V.length){a(".context_panel").hide();a("#tools_top").removeClass("multiselected");a("#multiselected_panel").show()}else{a(".context_panel").hide();a("#canvas_panel").show();a("#tools_top").removeClass("multiselected")}g.runExtensions("selectedChanged",{elems:m,selectedElement:Y,multiselected:V})});g.bind("transition",function(h,m){var o=g.getMode(),u=m[0];
+if(u){V=m.length>=2&&m[1]!=null?m:null;if(!V)switch(o){case "rotate":o=g.getRotationAngle(u);a("#angle").val(Math.round(o));rotateCursor(o);a("#tool_reorient").toggleClass("disabled",o==0)}g.runExtensions("elementTransition",{elems:m})}});g.bind("changed",function(h,m){var o=g.getMode();o==="select"&&oa();for(var u=0;u<m.length;++u){var E=m[u];if(E&&E.tagName==="svg")G();else if(E&&Y&&Y.parentNode==null)Y=E}b.show_save_warning=true;Ha();if(Y&&o==="select"){b.paintBox.fill.update();b.paintBox.stroke.update()}g.runExtensions("elementChanged",
+{elems:m})});g.bind("saved",function(h,m){b.show_save_warning=false;m='<?xml version="1.0"?>\n'+m;var o=navigator.userAgent;if(~o.indexOf("MSIE"))Eb(0,true);else{var u=h.open("data:image/svg+xml;base64,"+L.encode64(m)),E=a.pref("save_notice_done");if(E!=="all"){var H=uiStrings.notification.saveFromBrowser.replace("%s","SVG");if(o.indexOf("Gecko/")!==-1)if(m.indexOf("<defs")!==-1){H+="\n\n"+uiStrings.notification.defsFailOnSave;a.pref("save_notice_done","all");E="all"}else a.pref("save_notice_done",
+"part");else a.pref("save_notice_done","all");E!=="part"&&u.alert(H)}}});g.bind("exported",function(h,m){var o=m.issues;a("#export_canvas").length||a("<canvas>",{id:"export_canvas"}).hide().appendTo("body");var u=a("#export_canvas")[0];u.width=g.contentW;u.height=g.contentH;canvg(u,m.svg,{renderCallback:function(){var E=u.toDataURL("image/png");S.location.href=E;if(a.pref("export_notice_done")!=="all"){E=uiStrings.notification.saveFromBrowser.replace("%s","PNG");if(o.length)E+="\n\n"+uiStrings.notification.noteTheseIssues+
+"\n \u2022 "+o.join("\n \u2022 ");a.pref("export_notice_done","all");S.alert(E)}}})});g.bind("zoomed",ja);g.bind("contextset",function(h,m){var o="";if(m){var u="";o='<a href="#" data-root="y">'+g.getCurrentDrawing().getCurrentLayerName()+"</a>";a(m).parentsUntil("#svgcontent > g").andSelf().each(function(){if(this.id){u+=" > "+this.id;o+=this!==m?' > <a href="#">'+this.id+"</a>":" > "+this.id}});Ba=u}else Ba=null;a("#cur_context_panel").toggle(!!m).html(o)});g.bind("extension_added",function(h,m){function o(){if(la){clearTimeout(la);
+la=null}E||(la=setTimeout(function(){E=true;Mb(w.iconsize)},50))}var u=false,E=false,H=true,J=function(){if(m.callback&&!u&&H){u=true;m.callback()}},O=[];m.context_tools&&a.each(m.context_tools,function(ha,W){var qa=W.container_id?' id="'+W.container_id+'"':"",ua=a("#"+W.panel);ua.length||(ua=a("<div>",{id:W.panel}).appendTo("#tools_top").hide());switch(W.type){case "tool_button":var Aa='<div class="tool_button">'+W.id+"</div>",Ca=a(Aa).appendTo(ua);W.events&&a.each(W.events,function(Na,jb){a(Ca).bind(Na,
+jb)});break;case "select":Aa="<label"+qa+'><select id="'+W.id+'">';a.each(W.options,function(Na,jb){Aa+='<option value="'+Na+'"'+(Na==W.defval?" selected":"")+">"+jb+"</option>"});Aa+="</select></label>";var Pa=a(Aa).appendTo(ua).find("select");a.each(W.events,function(Na,jb){a(Pa).bind(Na,jb)});break;case "button-select":Aa='<div id="'+W.id+'" class="dropdown toolset" title="'+W.title+'"><div id="cur_'+W.id+'" class="icon_label"></div><button></button></div>';qa=a('<ul id="'+W.id+'_opts"></ul>').appendTo("#option_lists");
+W.colnum&&qa.addClass("optcols"+W.colnum);a(Aa).appendTo(ua).children();O.push({elem:"#"+W.id,list:"#"+W.id+"_opts",title:W.title,callback:W.events.change,cur:"#cur_"+W.id});break;case "input":Aa="<label"+qa+'><span id="'+W.id+'_label">'+W.label+':</span><input id="'+W.id+'" title="'+W.title+'" size="'+(W.size||"4")+'" value="'+(W.defval||"")+'" type="text"/></label>';var Qa=a(Aa).appendTo(ua).find("input");W.spindata&&Qa.SpinButton(W.spindata);W.events&&a.each(W.events,function(Na,jb){Qa.bind(Na,
+jb)})}});if(m.buttons){var X={},ba={},T=m.svgicons,fa={};a.each(m.buttons,function(ha,W){for(var qa,ua=W.id,Aa=ha;a("#"+ua).length;)ua=W.id+"_"+ ++Aa;if(T){X[ua]=W.icon;Aa=W.svgicon?W.svgicon:W.id;if(W.type=="app_menu")ba["#"+ua+" > div"]=Aa;else ba["#"+ua]=Aa}else qa=W.type=="menu"?"":a('<img src="'+W.icon+'">');var Ca,Pa;switch(W.type){case "mode_flyout":case "mode":Ca="tool_button";if(W.cls)Ca+=" "+W.cls;Pa="#tools_left";break;case "context":Ca="tool_button";Pa="#"+W.panel;a(Pa).length||a("<div>",
+{id:W.panel}).appendTo("#tools_top");break;case "menu":Ca="menu_item tool_button";Pa="#"+(W.after||W.panel);break;case "app_menu":Ca="";Pa=W.parent||"#main_menu ul";a(Pa).length||a("<div>",{id:W.panel}).appendTo("#tools_top")}var Qa=a(W.list||W.type=="app_menu"?"<li/>":"<div/>").attr("id",ua).attr("title",W.title).addClass(Ca);if(!W.includeWith&&!W.list){if("position"in W)a(Pa).children().eq(W.position).before(Qa);else W.type!="menu"||!W.after?Qa.appendTo(Pa):a(Pa).after(Qa);if(W.type=="mode_flyout"){Aa=
+a(Qa);Ca=Aa.parent();if(!Aa.parent().hasClass("tools_flyout")){var Na=Aa[0].id.replace("tool_","tools_"),jb=Aa.clone().attr("id",Na+"_show").append(a("<div>",{"class":"flyout_arrow_horiz"}));Aa.before(jb);Ca=na(Na,Aa);Ca.data("isLibrary",true);jb.data("isLibrary",true)}ba["#"+Na+"_show"]=W.id;ua=fa["#"+Ca[0].id]=[{sel:"#"+ua,fn:W.events.click,icon:W.id,isDefault:true},ub]}else if(W.type=="app_menu"||W.type=="menu")Qa.append(W.title)}else if(W.list){Qa.addClass("push_button");a("#"+W.list+"_opts").append(Qa);
+if(W.isDefault){a("#cur_"+W.list).append(Qa.children().clone());Aa=W.svgicon?W.svgicon:W.id;ba["#cur_"+W.list]=Aa}}else if(W.includeWith){Pa=W.includeWith;Aa=a(Pa.button);Ca=Aa.parent();if(!Aa.parent().hasClass("tools_flyout")){Na=Aa[0].id.replace("tool_","tools_");jb=Aa.clone().attr("id",Na+"_show").append(a("<div>",{"class":"flyout_arrow_horiz"}));Aa.before(jb);Ca=na(Na,Aa)}var ub=C.getButtonData(Pa.button);if(Pa.isDefault)ba["#"+Na+"_show"]=W.id;ua=fa["#"+Ca[0].id]=[{sel:"#"+ua,fn:W.events.click,
+icon:W.id,key:W.key,isDefault:W.includeWith?W.includeWith.isDefault:0},ub];Na="position"in Pa?Pa.position:"last";ub=Ca.children().length;if(!isNaN(Na)&&Na>=0&&Na<ub)Ca.children().eq(Na).before(Qa);else{Ca.append(Qa);ua.reverse()}}T||Qa.append(qa);W.list||a.each(W.events,function(Cb,Jb){if(Cb=="click")if(W.type=="mode"){W.includeWith?Qa.bind(Cb,Jb):Qa.bind(Cb,function(){ra(Qa)&&Jb()});if(W.key){a(document).bind("keydown",W.key,Jb);W.title&&Qa.attr("title",W.title+" ["+W.key+"]")}}else Qa.bind(Cb,Jb);
+else Qa.bind(Cb,Jb)});Z(fa)});a.each(O,function(){vb(this.elem,this.list,this.callback,{seticon:true})});if(T)H=false;a.svgIcons(T,{w:27,h:27,id_match:false,no_img:!n,fallback:X,placement:ba,callback:function(){w.iconsize&&w.iconsize!="m"&&o();H=true;J()}})}J()});g.textActions.setInputElem(a("#text")[0]);var Ma='<div class="palette_item transparent" data-rgb="none"></div>\t\t\t\t\t\t\t\t<div class="palette_item black" data-rgb="#000000"></div>\t\t\t\t\t\t\t\t<div class="palette_item white" data-rgb="#ffffff"></div>';
+["#444444","#482816","#422C10","#3B2F0E","#32320F","#293414","#1F361B","#153723","#0C372C","#083734","#0E353B","#1A333F","#273141","#332D40","#3E2A3C","#462735","#4B252D","#4D2425","#4C261D","#666666","#845335","#7B572D","#6F5C2A","#62612C","#546433","#46673D","#396849","#306856","#2D6862","#33666C","#426373","#535F75","#645A73","#74556D","#805064","#884D58","#8B4D4B","#894F3F","#999999","#C48157","#B8874D","#A98E49","#97944B","#849854","#729C62","#619E73","#559E84","#529D94","#5B9BA2","#6D97AB",
+"#8391AE","#9A8AAB","#AF84A3","#BF7E96","#C97A86","#CE7975","#CC7C65","#BBBBBB","#FFB27C","#FABA6F","#E6C36A","#CFCA6D","#B8D078","#A0D58A","#8CD79F","#7DD8B5","#7AD6CA","#84D3DB","#9ACEE6","#B6C7EA","#D3BEE7","#EDB6DC","#FFAFCC","#FFAAB8","#FFA9A2","#FFAC8D","#DDDDDD","#FFE7A2","#FFF093","#FFFA8D","#FFFF91","#EEFF9F","#D1FFB4","#B9FFCE","#A8FFE9","#A4FFFF","#B1FFFF","#CBFFFF","#EDFFFF","#FFF5FF","#FFEBFF","#FFE2FF","#FFDCEC","#FFDBD2","#FFDFB8"].forEach(function(h){Ma+='<div class="palette_item" style="background-color: '+
+h+';" data-rgb="'+h+'"></div>'});a("#palette").append(Ma);var Da=a("#tool_angle_indicator");a("#tool_reorient");rotateCursor=function(h){h="rotate("+h+"deg)";Da.css({"-webkit-transform":h,"-moz-transform":h,"-o-transform":h,"-ms-transform":h,transform:h})};var wa=function(h){var m=h.value/100;if(m<0.0010)h.value=0.1;else{h=g.getZoom();var o=K;ja(window,{width:0,height:0,x:(o[0].scrollLeft+o.width()/2)/h,y:(o[0].scrollTop+o.height()/2)/h,zoom:m},true)}};a("#stroke_style").change(function(){g.setStrokeAttr("stroke-dasharray",
+a(this).val());a("#stroke_style_label").html(this.options[this.selectedIndex].text);window.opera&&a("<p/>").hide().appendTo("body").remove()});a("#seg_type").change(function(){g.setSegType(a(this).val());a("#seg_type_label").html(this.options[this.selectedIndex].text)});a("select").change(function(){a(this).blur()});a("#font_family").change(function(){g.setFontFamily(this.value)});a("#text").keyup(function(){g.setTextContent(this.value)});changeAttribute=function(h){var m=h.getAttribute("data-attr"),
+o=h.getAttribute("data-multiplier")||1;o=parseFloat(o);o=h.value*o;if(!svgedit.units.isValidUnit(m,o,Y)){a.alert(uiStrings.notification.invalidAttrValGiven);h.value=Y.getAttribute(m);return false}g.changeSelectedAttributeNoUndo(m,o)};picking=false;a(document).on("mouseup",function(){picking=false});a("#palette").on("mousemove mousedown touchstart touchmove",".palette_item",function(h){h.preventDefault();if(h.type=="mousedown")picking=true;if(picking){var m=a("#tool_stroke").hasClass("active"),o=m?
+"stroke":"fill",u=a(this).attr("data-rgb"),E=null,H=true;if(h.type=="mousedown")H=false;if(u==="transparent"||u==="initial"||u==="#none"){u="none";E=new a.jGraduate.Paint}else E=new a.jGraduate.Paint({alpha:100,solidColor:u.substr(1)});b.paintBox[o].setPaint(E);if(m){g.setColor("stroke",u,H);u!="none"&&g.getStrokeOpacity()!=1&&g.setPaintOpacity("stroke",1)}else{g.setColor("fill",u,H);u!="none"&&g.getFillOpacity()!=1&&g.setPaintOpacity("fill",1)}}}).bind("contextmenu",function(h){h.preventDefault()});
+a("#toggle_stroke_tools").toggle(function(){a(".stroke_tool").css("display","table-cell");a(this).addClass("expanded");Db()},function(){a(".stroke_tool").css("display","none");a(this).removeClass("expanded");Db()});var ra=function(h,m){if(a(h).hasClass("disabled"))return false;if(a(h).parent().hasClass("tools_flyout"))return true;var o=o||"normal";m||a(".tools_flyout").fadeOut(o);a("#styleoverrides").text("");a(".tool_button_current").removeClass("tool_button_current").addClass("tool_button");a(h).addClass("tool_button_current").removeClass("tool_button");
+return true};(function(){var h=null,m=null,o=K[0],u=false,E=false;a("#svgcanvas").on("mousemove mouseup touchend",function(H){if(u!==false){o.scrollLeft-=H.clientX-h;o.scrollTop-=H.clientY-m;h=H.clientX;m=H.clientY;if(H.type==="mouseup"||H.type==="touchend")u=false;return false}}).on("mousedown touchmove",function(H){if(H.button===1||E===true||H.originalEvent.touches&&H.originalEvent.touches.length>=2){u=true;h=H.clientX;m=H.clientY;return false}});a(window).mouseup(function(){u=false});a(document).bind("keydown",
+"space",function(H){H.preventDefault();g.spaceKey=E=true}).bind("keyup","space",function(H){H.preventDefault();g.spaceKey=E=false}).bind("keydown","alt",function(){g.getMode()==="zoom"&&K.addClass("out")}).bind("keyup","alt",function(){g.getMode()==="zoom"&&K.removeClass("out")})})();var va=a(".menu"),kb=function(h){h.target.style.background="#fff";setTimeout(function(){h.target.style.background="#ddd"},50);setTimeout(function(){h.target.style.background="#fff"},150);setTimeout(function(){h.target.style.background=
+"#ddd"},200);setTimeout(function(){h.target.style.background=""},200);setTimeout(function(){a("#menu_bar").removeClass("active")},220);return false};a(".menu_item").on("mousedown touchstart",function(h){kb(h)});a("svg, body").on("mousedown  touchstart",function(h){if(!(h.target.nodeName&&h.target.nodeName.toLowerCase()==="input"))if(!a(h.target).hasClass("menu_title")&&!a(h.target).parent().hasClass("menu_title"))!a(h.target).hasClass("disabled")&&a(h.target).hasClass("menu_item")?kb(h):a("#menu_bar").removeClass("active")});
+a("#workarea").on("mousewheel",function(h,m,o,u){if(h.altKey){h.preventDefault();zoom=parseInt(a("#zoom").val());a("#zoom").val(parseInt(zoom+u*10)).change()}});a(".menu_title").on("mousedown",function(){a("#tools_shapelib").hide();a("#menu_bar").toggleClass("active");va.removeClass("open");a(this).parent().addClass("open")}).on("mouseover",function(){va.removeClass("open");a(this).parent().addClass("open")});b.addDropDown=function(h,m,o){if(a(h).length!=0){var u=a(h).find("button"),E=a(h).find("ul").attr("id",
+a(h)[0].id+"-list");o||a("#option_lists").append(E);var H=false;o&&a(h).addClass("dropup");E.find("li").bind("mouseup",m);a(window).mouseup(function(){if(!H){u.removeClass("down");E.hide()}H=false});u.bind("mousedown",function(){if(u.hasClass("down")){u.removeClass("down");E.hide()}else{u.addClass("down");if(!o){var J=a(h).offset();E.css({top:J.top,left:J.left-110})}E.show();H=true}}).hover(function(){H=true}).mouseout(function(){H=false})}};var vb=function(h,m,o,u){var E=a(h);m=a(m);var H=false,
+J=u.dropUp;J&&a(h).addClass("dropup");m.find("li").bind("mouseup",function(){if(u.seticon){zb("#cur_"+E[0].id,a(this).children());a(this).addClass("current").siblings().removeClass("current")}o.apply(this,arguments)});a(window).mouseup(function(){if(!H){E.removeClass("down");m.hide();m.css({top:0,left:0})}H=false});m.height();a(h).bind("mousedown",function(){var O=a(h).offset();if(J){O.top-=m.height();O.left+=8}else O.top+=a(h).height();a(m).offset(O);if(E.hasClass("down")){E.removeClass("down");
+m.hide();m.css({top:0,left:0})}else{E.addClass("down");m.show();H=true;return false}}).hover(function(){H=true}).mouseout(function(){H=false});u.multiclick&&m.mousedown(function(){H=true})};a("#font_family_dropdown").change(function(){var h=this.options[this.selectedIndex].value,m=this.options[this.selectedIndex].text;a("#preview_font").html(m).css("font-family",h);a("#font_family").val(h).change()});a("div","#position_opts").each(function(){this.addEventListener("mouseup",function(){var h=this.id.replace("tool_pos",
+"").charAt(0);g.alignSelectedElements(h,"page")})});(function(){var h,m=function(){a(h).blur()};a("#svg_editor").find("button, select, input:not(#text)").focus(function(){h=this;N="toolbars";K.mousedown(m)}).blur(function(){N="canvas";K.unbind("mousedown",m);g.getMode()=="textedit"&&a("#text").focus()})})();var cb=function(){ra("#tool_select")&&g.setMode("select")},Ta=function(){ra("#tool_fhpath")&&g.setMode("fhpath")},Va=function(){ra("#tool_line")&&g.setMode("line")},Fa=function(){ra("#tool_rect")&&
+g.setMode("rect")},ta=function(){ra("#tool_ellipse")&&g.setMode("ellipse")},$a=function(){ra("#tool_image")&&g.setMode("image")},Ka=function(){ra("#tool_zoom")&&g.setMode("zoom")},Sa=function(){if(ra("#tool_zoom")){yb();oa()}},Ga=function(){ra("#tool_text")&&g.setMode("text")},db=function(){ra("#tool_path")&&g.setMode("path")},lb=function(){if(Y!=null||V)g.deleteSelectedElements();B.getNodePoint()&&B.deletePathNode()},Ua=function(){if(Y!=null||V){xa(a("#edit_menu"));g.cutSelectedElements()}},Xa=function(){if(Y!=
+null||V){xa(a("#edit_menu"));g.copySelectedElements()}},wb=function(){xa(a("#edit_menu"));var h=g.getZoom(),m=(K[0].scrollLeft+K.width()/2)/h-g.contentW;h=(K[0].scrollTop+K.height()/2)/h-g.contentH;g.pasteElements("point",m,h)},sa=function(){if(Y!=null){xa(a("#object_menu"));g.moveToTopSelectedElement()}},hb=function(){if(Y!=null){xa(a("#object_menu"));g.moveToBottomSelectedElement()}},eb=function(){if(Y!=null){xa(a("#object_menu"));g.moveUpDownSelected("Up")}},sb=function(){if(Y!=null){xa(a("#object_menu"));
+g.moveUpDownSelected("Down")}},ib=function(h){if(Y!=null){xa(a("#object_menu"));g.moveUpDownSelected(h)}},ab=function(){if(Y!=null){g.convertToPath();var h=g.getSelectedElems();g.selectorManager.requestSelector(h[0]).reset(h[0]);g.selectorManager.requestSelector(h[0]).selectorRect.setAttribute("display","none");g.setMode("pathedit");B.toEditMode(h[0]);g.clearSelection();Ha()}},ob=function(){Y!=null&&B.reorient()},pb=function(){if(Y!=null||V)a.prompt(uiStrings.notification.enterNewLinkURL,"http://",
+function(h){h&&g.makeHyperlink(h)})},fb=function(h,m){if(Y!=null||V){if(curConfig.gridSnapping){var o=g.getZoom()*curConfig.snappingStep;h*=o;m*=o}a("input").blur();g.moveSelectedElements(h,m)}},tb=function(){},ia=function(){B.getNodePoint()&&B.clonePathNode()},aa=function(){B.getNodePoint()&&B.deletePathNode()},ka=function(){var h=a("#tool_add_subpath"),m=!h.hasClass("push_button_pressed");m?h.addClass("push_button_pressed").removeClass("tool_button"):h.removeClass("push_button_pressed").addClass("tool_button");
+B.addSubPath(m)},M=function(){B.opencloseSubPath()},P=function(){g.cycleElement(1)},da=function(){g.cycleElement(0)},Ea=function(h,m){if(!(Y==null||V)){h||(m*=-1);var o=a("#angle").val()*1+m;g.setRotationAngle(o);Ha()}},Oa=function(){var h=curConfig.dimensions;a.confirm(uiStrings.notification.QwantToClear,function(m){if(m){oa();g.clear();g.setResolution(h[0],h[1]);G(true);yb();Ha();ca();g.runExtensions("onNewDocument")}})},Wa=function(){g.setBold(!g.getBold());Ha()},Za=function(){g.setItalic(!g.getItalic());
+Ha()},nb=function(){if(!c.pngsave){var h=uiStrings.notification.loadingImage;S=window.open("data:text/html;charset=utf-8,<title>"+h+"</title><h1>"+h+"</h1>")}window.canvg?g.rasterExport():a.getScript("canvg/rgbcolor.js",function(){a.getScript("canvg/canvg.js",function(){g.rasterExport()})})},Ra=function(){g.open()},mb=function(){},xa=function(h){var m=h.prev();m.css({background:"white",color:"black"});setTimeout(function(){m.removeAttr("style")},200)},qb=function(){if(q.getUndoStackSize()>0){xa(a("#edit_menu"));
+q.undo()}},rb=function(){if(q.getRedoStackSize()>0){xa(a("#edit_menu"));q.redo()}},Bb=function(){if(V){xa(a("#object_menu"));g.groupSelectedElements()}else if(Y){xa(a("#object_menu"));g.ungroupSelectedElement()}},Fb=function(){xa(a("#edit_menu"));g.cloneSelectedElements(20,20)},bb=function(){var h=this.id.replace("tool_align","").charAt(0);g.alignSelectedElements(h,a("#align_relative_to").val())},La=function(){var h=document.querySelector("#tool_stroke rect");a("#tool_stroke").toggleClass("active");
+a("#tool_fill").toggleClass("active");var m=document.querySelector("#tool_fill rect"),o=m.getAttribute("fill"),u=h.getAttribute("fill");h=parseFloat(h.getAttribute("stroke-opacity"));if(isNaN(h))h=100;m=parseFloat(m.getAttribute("fill-opacity"));if(isNaN(m))m=100;u=ya(u,h,"stroke");o=ya(o,m,"fill");b.paintBox.fill.setPaint(u,true);b.paintBox.stroke.setPaint(o,true)},yb=function(h){var m=g.getResolution();h=h?m.zoom*h:1;a("#zoom").val(h*100);g.setZoom(h);xb();G(true)},Hb=function(){xa(a("#view_menu"));
+!a("#tool_wireframe").hasClass("push_button_pressed")?a("#tool_wireframe").addClass("push_button_pressed"):a("#tool_wireframe").removeClass("push_button_pressed");K.toggleClass("wireframe");if(!k){var h=a("#wireframe_rules");h.length?h.empty():a('<style id="wireframe_rules"></style>').appendTo("head");xb()}},Gb=function(){xa(a("#view_menu"));var h=!a("#tool_snap").hasClass("push_button_pressed");h?a("#tool_snap").addClass("push_button_pressed"):a("#tool_snap").removeClass("push_button_pressed");curConfig.gridSnapping=
+h},Ib=function(){window.self!=window.top&&top.exit_fullscreen()},Lb=function(){xa(a("#view_menu"));if(a("#tool_rulers").hasClass("push_button_pressed")){a("#tool_rulers").removeClass("push_button_pressed");a("#show_rulers").attr("checked",false);curConfig.showRulers=false}else{a("#tool_rulers").addClass("push_button_pressed");a("#show_rulers").attr("checked",true);curConfig.showRulers=true}a("#rulers").toggle(!!curConfig.showRulers)},xb=function(){if(!k){var h="#workarea.wireframe #svgcontent * { stroke-width: "+
+1/g.getZoom()+"px; }";a("#wireframe_rules").text(K.hasClass("wireframe")?h:"")}},Eb=function(h,m){if(!ea){xa(a("#view_menu"));ea=true;a("#save_output_btns").toggle(!!m);a("#tool_source_back").toggle(!m);var o=ga=g.getSvgString();a("#svg_source_textarea").val(o);a("#svg_source_editor").fadeIn();a("#svg_source_textarea").focus().select()}},Kb=function(){if(ea){if(g.setSvgString(a("#svg_source_textarea").val())){g.clearSelection();Ya();yb();ca()}else a.confirm(uiStrings.notification.QerrorsRevertToSource,
+function(h){if(!h)return false;g.clearSelection();Ya();yb();ca()});oa()}},zb=b.setIcon=function(h,m){var o=typeof m==="string"?a.getSvgIcon(m,true):m.clone();o?a(h).find("img").replaceWith(o):console.log("NOTE: Icon image missing: "+m)},gb;gb=function(){var h=/^(Moz|Webkit|Khtml|O|ms|Icab)(?=[A-Z])/,m=document.getElementsByTagName("script")[0],o;for(o in m.style)if(h.test(o))return o.match(h)[0];if("WebkitOpacity"in m.style)return"Webkit";if("KhtmlOpacity"in m.style)return"Khtml";return""}();var Nb=
+function(h,m){gb.toLowerCase();var o=["top","left","bottom","right"];h.each(function(){for(var u=a(this),E=u.outerWidth()*(m-1),H=u.outerHeight()*(m-1),J=0;J<4;J++){var O=o[J],X=u.data("orig_margin-"+O);if(X==null){X=parseInt(u.css("margin-"+O));u.data("orig_margin-"+O,X)}X=X*m;if(O==="right")X+=E;else if(O==="bottom")X+=H;u.css("margin-"+O,X)}})},Mb=b.setIconSize=function(h,m){if(!(h==w.size&&!m)){var o=a("#tools_top .toolset, #editor_panel > *, #history_panel > *,\t\t\t\t#main_button, #tools_left > *, #path_node_panel > *, #multiselected_panel > *,\t\t\t\t#g_panel > *, #tool_font_size > *, .tools_flyout"),
+u=1;u=typeof h=="number"?h:{s:0.75,m:1,l:1.25,xl:1.5}[h];b.tool_scale=R=u;pa();var E=o.parents(":hidden");E.css("visibility","hidden").show();Nb(o,u);E.css("visibility","visible").hide();o=a("#tool_size_rules");if(o.length)o.empty();else o=a('<style id="tool_size_rules"></style>').appendTo("head");if(h!="m"){var H="";a.each(cssResizeRules,function(J,O){J="#svg_editor "+J.replace(/,/g,", #svg_editor");H+=J+"{";a.each(O,function(X,ba){if(typeof ba==="number")var T=ba*u+"px";else if(ba[h]||ba.all)T=
+ba[h]||ba.all;H+=X+":"+T+";"});H+="}"});E="-"+gb.toLowerCase()+"-";H+="#tools_top .toolset, #editor_panel > *, #history_panel > *,\t\t\t\t#main_button, #tools_left > *, #path_node_panel > *, #multiselected_panel > *,\t\t\t\t#g_panel > *, #tool_font_size > *, .tools_flyout{"+E+"transform: scale("+u+");} #svg_editor div.toolset .toolset {"+E+"transform: scale(1); margin: 1px !important;} #svg_editor .ui-slider {"+E+"transform: scale("+1/u+");}";o.text(H)}pa()}},Ab=function(){a("#dialog_box").hide();
+if(ea){if(ea)ga!==a("#svg_source_textarea").val()?a.confirm(uiStrings.notification.QignoreSourceChanges,function(h){h&&Ya()}):Ya();Db()}else Ba&&g.leaveContext()},Ya=function(){a("#svg_source_editor").hide();ea=false;a("#svg_source_textarea").blur()};a(window).width();a(window).height();var Db=a.noop;a(window).resize(function(){G()});(function(){K.scroll(function(){if(a("#ruler_x").length!=0)a("#ruler_x")[0].scrollLeft=K[0].scrollLeft;if(a("#ruler_y").length!=0)a("#ruler_y")[0].scrollTop=K[0].scrollTop})})();
+a("#url_notice").click(function(){a.alert(this.title)});a("#change_image_url").click(function(){var h=g.getHref(Y);h=h.indexOf("data:")===0?"":h;a.prompt(uiStrings.notification.enterNewImgURL,h,function(m){m&&Ia(m)})});var e=function(h){var m=h[0].id=="stroke_color"?"stroke":"fill",o=h[0].id=="canvas_color";if(o)m="canvas";var u=b.paintBox[m].paint;h=m=="stroke"?"Pick a Stroke Paint and Opacity":"Pick a Fill Paint and Opacity";o=o?{right:175,top:50}:{left:50,bottom:50};a("#color_picker").draggable({cancel:".jGraduate_tabs, .jGraduate_colPick, .jGraduate_gradPick, .jPicker",
+containment:"window"}).removeAttr("style").css(o).jGraduate({paint:u,window:{pickerTitle:h},images:{clientPath:curConfig.jGraduatePath},newstop:"inverse"},function(E){u=new a.jGraduate.Paint(E);b.paintBox[m].setPaint(u);g.setPaint(m,u);a("#color_picker").hide()},function(){a("#color_picker").hide()})};d=function(h,m){var o=document.getElementById("canvas_background"),u={color:"fff",opacity:1};if(m=="stroke")u=curConfig.initStroke;if(m=="fill")u=curConfig.initFill;if(m=="canvas"&&o)if(o=o.getAttribute("fill").match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/))u=
+{color:("0"+parseInt(o[1],10).toString(16)).slice(-2)+("0"+parseInt(o[2],10).toString(16)).slice(-2)+("0"+parseInt(o[3],10).toString(16)).slice(-2),opacity:1};o=(new DOMParser).parseFromString('<svg xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"\t\t\t\t\tfill="#'+u.color+'" opacity="'+u.opacity+'"/>\t\t\t\t\t<defs><linearGradient id="gradbox_"/></defs></svg>',"text/xml").documentElement;o=a(h)[0].appendChild(document.importNode(o,true));m==="canvas"?o.setAttribute("width",60.5):
+o.setAttribute("width","100%");this.rect=o.firstChild;this.defs=o.getElementsByTagName("defs")[0];this.grad=this.defs.firstChild;this.paint=new a.jGraduate.Paint({solidColor:u.color});this.type=m;this.setPaint=function(E,H){this.paint=E;var J="none",O=E.type,X=E.alpha/100;switch(O){case "solidColor":J=E[O]=="none"||E[O]=="one"?"none":"#"+E[O];break;case "linearGradient":case "radialGradient":this.defs.removeChild(this.grad);this.grad=this.defs.appendChild(E[O]);J="url(#"+(this.grad.id="gradbox_"+
+this.type)+")"}this.rect.setAttribute("fill",J);this.rect.setAttribute("opacity",X);if(this.type=="canvas")if(O=document.getElementById("canvas_background")){za=g.getResolution();O.setAttribute("x",-1);O.setAttribute("y",-1);O.setAttribute("width",za.w+2);O.setAttribute("height",za.h+2);J.indexOf("url")==-1&&O.setAttribute("fill",J)}else Ja(J);if(H){g.setColor(this.type,J,true);g.setPaintOpacity(this.type,X,true)}};this.update=function(E){if(Y){var H=this.type;switch(Y.tagName){case "use":case "image":case "foreignObject":return;
+case "g":case "a":for(var J=null,O=Y.getElementsByTagName("*"),X=0,ba=O.length;X<ba;X++){var T=O[X].getAttribute(H);if(X===0)J=T;else if(J!==T){J=null;break}}if(J===null){O=null;return}O=J;J=1;break;default:J=parseFloat(Y.getAttribute(H+"-opacity"));if(isNaN(J))J=1;O=H==="fill"?"black":"none";O=Y.getAttribute(H)||O}if(E){g.setColor(H,O,true);g.setPaintOpacity(H,J,true)}J*=100;this.setPaint(ya(O,J,H))}};this.prep=function(){switch(this.paint.type){case "linearGradient":case "radialGradient":var E=
+new a.jGraduate.Paint({copy:this.paint});g.setPaint(m,E)}}};b.paintBox.fill=new d("#fill_color","fill");b.paintBox.stroke=new d("#stroke_color","stroke");b.paintBox.canvas=new d("#canvas_color","canvas");a("#stroke_width").val(curConfig.initStroke.width);a("#group_opacity").val(curConfig.initOpacity*100);d=b.paintBox.fill.rect.cloneNode(false);d.setAttribute("style","vector-effect:non-scaling-stroke");var k=d.style.vectorEffect==="non-scaling-stroke";d.removeAttribute("style");d=b.paintBox.fill.rect.ownerDocument.createElementNS("http://www.w3.org/2000/svg",
+"feGaussianBlur");typeof d.stdDeviationX==="undefined"&&a("#tool_blur").hide();a(d).remove();setTimeout(function(){g.embedImage("images/placeholder.svg",function(h){if(!h){a("#image_save_opts [value=embed]").attr("disabled","disabled");a("#image_save_opts input").val(["ref"]);w.img_save="ref";a("#image_opt_embed").css("color","#666").attr("title",uiStrings.notification.featNotSupported)}})},1E3);a("#tool_fill").click(function(){if(a("#tool_fill").hasClass("active"))e(a("#fill_color"));else{a("#tool_fill").addClass("active");
+a("#tool_stroke").removeClass("active")}});a("#tool_stroke").on("click",function(){if(a("#tool_stroke").hasClass("active"))e(a("#stroke_color"));else{a("#tool_stroke").addClass("active");a("#tool_fill").removeClass("active")}});a("#tool_canvas").on("click touchstart",function(){e(a("#canvas_color"))});a("#tool_stroke").on("touchstart",function(){a("#tool_stroke").addClass("active");a("#tool_fill").removeClass("active");e(a("#stroke_color"))});a("#tool_fill").on("touchstart",function(){a("#tool_fill").addClass("active");
+a("#tool_stroke").removeClass("active");e(a("#fill_color"))});a("#zoom_select").on("change",function(){var h=this.options[this.selectedIndex].text;h=h.split("%")[0];a("#zoom").val(h).trigger("change")});a(".push_button").mousedown(function(){a(this).hasClass("disabled")||a(this).addClass("push_button_pressed").removeClass("push_button")}).mouseout(function(){a(this).removeClass("push_button_pressed").addClass("push_button")}).mouseup(function(){a(this).removeClass("push_button_pressed").addClass("push_button")});
+a(window).bind("load resize",function(){K.css("line-height",K.height()+"px")});var l=function(){var h=a("#canvas_width"),m=a("#canvas_height"),o=h.val(),u=m.val();if(o!="fit"&&!svgedit.units.isValidUnit("width",o)){a.alert(uiStrings.notification.invalidAttrValGiven);h.parent().addClass("error");return false}h.parent().removeClass("error");if(u!="fit"&&!svgedit.units.isValidUnit("height",u)){a.alert(uiStrings.notification.invalidAttrValGiven);m.parent().addClass("error");return false}m.parent().removeClass("error");
+if(!g.setResolution(o,u)){a.alert(uiStrings.notification.noContentToFitTo);o=g.getResolution();h.val(o.w);m.val(o.h);return false}G()};a("#resolution").change(function(){var h=a("#canvas_width")[0],m=a("#canvas_height")[0];if(this.selectedIndex)if(this.value=="content"){h.value="fit";m.value="fit";l();var o=g.getResolution();h.value=o.w;m.value=o.h}else{var u=this.value.split("x");u[0]=parseInt(u[0]);u[1]=parseInt(u[1]);var E=u[0]-h.value,H=u[1]-m.value,J=Date.now(),O=function(X){X=(X-J)/1E3;X=Math.pow(X-
+1,3)+1;h.value=(u[0]-E+X*E).toFixed(0);m.value=(u[1]-H+X*H).toFixed(0);l();if(X>=1){X=g.getResolution();a("#canvas_width").val(X.w.toFixed());a("#canvas_height").val(X.h.toFixed());a("#resolution_label").html("<div class='pull'>"+X.w+"<span>\u00d7</span></br>"+X.h+"</div>")}else requestAnimationFrame(O)};O(Date.now())}else{a("#resolution_label").html("Custom");h.removeAttribute("readonly");h.focus();h.select();if(h.value=="fit"){h.value=100;m.value=100}}});a("#zoom").change(function(){wa(this)});
+a("input,select").attr("autocomplete","off");var C=function(){var h=[{sel:"#tool_select",fn:cb,evt:"click",key:["V",true]},{sel:"#tool_fhpath",fn:Ta,evt:"click",key:["Q",true]},{sel:"#tool_line",fn:Va,evt:"click",key:["L",true]},{sel:"#tool_rect",fn:Fa,evt:"click",key:["R",true],icon:"rect"},{sel:"#tool_ellipse",fn:ta,evt:"mouseup",key:["C",true],icon:"ellipse"},{sel:"#tool_path",fn:db,evt:"click",key:["P",true]},{sel:"#tool_text",fn:Ga,evt:"click",key:["T",true]},{sel:"#tool_image",fn:$a,evt:"mouseup"},
+{sel:"#tool_zoom",fn:Ka,evt:"mouseup",key:["Z",true]},{sel:"#tool_clear",fn:Oa,evt:"mouseup",key:[v+"N",true]},{sel:"#tool_save",fn:function(){if(ea)Kb();else{xa(a("#file_menu"));g.save({images:w.img_save,round_digits:6})}},evt:"mouseup",key:[v+"S",true]},{sel:"#tool_export",fn:nb,evt:"mouseup"},{sel:"#tool_open",fn:Ra,evt:"mouseup"},{sel:"#tool_import",fn:mb,evt:"mouseup"},{sel:"#tool_source",fn:Eb,evt:"click",key:[v+"U",true]},{sel:"#tool_wireframe",fn:Hb,evt:"click"},{sel:"#tool_snap",fn:Gb,evt:"click"},
+{sel:"#tool_rulers",fn:Lb,evt:"click"},{sel:"#tool_source_cancel,#svg_source_overlay,#tool_docprops_cancel,#tool_prefs_cancel",fn:Ab,evt:"click",key:["esc",false,false],hidekey:true},{sel:"#tool_source_save",fn:Kb,evt:"click"},{sel:"#tool_delete,#tool_delete_multi",fn:lb,evt:"click",key:["del/backspace",true]},{sel:"#tool_reorient",fn:ob,evt:"click"},{sel:"#tool_node_link",fn:tb,evt:"change"},{sel:"#tool_node_clone",fn:ia,evt:"click"},{sel:"#tool_node_delete",fn:aa,evt:"click"},{sel:"#tool_openclose_path",
+fn:M,evt:"click"},{sel:"#tool_add_subpath",fn:ka,evt:"click"},{sel:"#tool_move_top",fn:sa,evt:"click",key:v+"shift+up"},{sel:"#tool_move_bottom",fn:hb,evt:"click",key:v+"shift+down"},{sel:"#tool_move_up",fn:eb,evt:"click",key:[v+"up",true]},{sel:"#tool_move_down",fn:sb,evt:"click",key:[v+"down",true]},{sel:"#tool_topath",fn:ab,evt:"click"},{sel:"#tool_make_link,#tool_make_link_multi",fn:pb,evt:"click"},{sel:"#tool_clone,#tool_clone_multi",fn:Fb,evt:"click",key:[v+"D",true]},{sel:"#tool_group",fn:Bb,
+evt:"click",key:[v+"G",true]},{sel:"#tool_ungroup",fn:Bb,evt:"click",key:v+"shift+G"},{sel:"#tool_unlink_use",fn:Bb,evt:"click"},{sel:"[id^=tool_align]",fn:bb,evt:"click"},{sel:"#tool_undo",fn:qb,evt:"click",key:v+"z"},{sel:"#tool_redo",fn:rb,evt:"click",key:["y",true]},{sel:"#tool_cut",fn:Ua,evt:"click",key:[v+"x",true]},{sel:"#tool_copy",fn:Xa,evt:"click",key:v+"c"},{sel:"#tool_paste",fn:wb,evt:"click",key:v+"v"},{sel:"#tool_switch",fn:La,evt:"click",key:["x",true]},{sel:"#tool_bold",fn:Wa,evt:"mousedown",
+key:[v+"B",true]},{sel:"#tool_italic",fn:Za,evt:"mousedown",key:[v+"I",true]},{sel:"#copy_save_done",fn:Ab,evt:"click"},{key:"ctrl+left",fn:function(){Ea(0,1)}},{key:"ctrl+right",fn:function(){Ea(1,1)}},{key:"ctrl+shift+left",fn:function(){Ea(0,5)}},{key:"ctrl+shift+right",fn:function(){Ea(1,5)}},{key:"shift+O",fn:da},{key:"shift+P",fn:P},{key:[v+"+",true],fn:function(){yb(2)}},{key:[v+"-",true],fn:function(){yb(0.5)}},{key:["up",true],fn:function(){fb(0,-1)}},{key:["down",true],fn:function(){fb(0,
+1)}},{key:["left",true],fn:function(){fb(-1,0)}},{key:["right",true],fn:function(){fb(1,0)}},{key:"shift+up",fn:function(){fb(0,-10)}},{key:"shift+down",fn:function(){fb(0,10)}},{key:"shift+left",fn:function(){fb(-10,0)}},{key:"shift+right",fn:function(){fb(10,0)}},{key:["alt+up",true],fn:function(){g.cloneSelectedElements(0,-1)}},{key:["alt+down",true],fn:function(){g.cloneSelectedElements(0,1)}},{key:["alt+left",true],fn:function(){g.cloneSelectedElements(-1,0)}},{key:["alt+right",true],fn:function(){g.cloneSelectedElements(1,
+0)}},{key:["alt+shift+up",true],fn:function(){g.cloneSelectedElements(0,-10)}},{key:["alt+shift+down",true],fn:function(){g.cloneSelectedElements(0,10)}},{key:["alt+shift+left",true],fn:function(){g.cloneSelectedElements(-10,0)}},{key:["alt+shift+right",true],fn:function(){g.cloneSelectedElements(10,0)}},{key:v+"A",fn:function(){g.selectAllInCurrentLayer()}},{key:"I",fn:function(){var o=a(".tool_button_current");if(o.length&&o[0].id!=="tool_eyedropper"){o.removeClass("tool_button_current").addClass("tool_button");
+a("#tool_eyedropper").addClass("tool_button_current").removeClass("tool_button")}g.setMode("eyedropper")}},{key:v+"shift+z",fn:rb},{key:"esc",fn:Ib}],m={"4/Shift+4":"#tools_rect_show","5/Shift+5":"#tools_ellipse_show"};return{setAll:function(){var o={};a.each(h,function(u,E){if(E.sel){var H=a(E.sel);if(H.length==0)return true;if(E.evt){if(svgedit.browser.isTouch()&&E.evt==="click")E.evt="mousedown";H[E.evt](E.fn)}if(E.parent&&a(E.parent+"_show").length!=0){var J=a(E.parent);J.length||(J=na(E.parent.substr(1)));
+J.append(H);a.isArray(o[E.parent])||(o[E.parent]=[]);o[E.parent].push(E)}}if(E.key){var O=E.fn,X=false;if(a.isArray(E.key)){J=E.key[0];if(E.key.length>1)X=E.key[1]}else J=E.key;J+="";svgedit.browser.isMac&&J.indexOf("+")!=-1&&J.split("+")[0]=="ctrl"&&J.replace("ctrl","cmd");a.each(J.split("/"),function(T,fa){a(document).bind("keydown",fa,function(ha){O();X&&ha.preventDefault();return false})});if(E.sel&&!E.hidekey&&H.attr("title")){var ba=H.attr("title").split("[")[0]+" ("+J+")";m[J]=E.sel;H.parents("#main_menu").length||
+H.attr("title",ba)}}});Z(o);a(window).bind("keydown","tab",function(u){if(N==="canvas"){u.preventDefault();P()}}).bind("keydown","shift+tab",function(u){if(N==="canvas"){u.preventDefault();da()}});a("#tool_zoom").dblclick(Sa)},setTitles:function(){a.each(m,function(o,u){var E=a(u).parents("#main_menu").length;a(u).each(function(){var H=E?a(this).text().split(" [")[0]:this.title.split(" [")[0],J="";a.each(o.split("/"),function(O,X){var ba=X.split("+"),T="";if(ba.length>1){T=ba[0]+"+";X=ba[1]}J+=(O?
+"/":"")+T+(uiStrings["key_"+X]||X)});if(E)this.lastChild.textContent=H+" ["+J+"]";else this.title=H+" ["+J+"]"})})},getButtonData:function(o){var u;a.each(h,function(E,H){if(H.sel===o)u=H});return u}}}();C.setAll();b.ready(function(){var h=curConfig.initTool,m=a("#tools_left, #svg_editor .tools_flyout"),o=m.find("#tool_"+h);h=m.find("#"+h);(o.length?o:h.length?h:a("#tool_select")).click().mouseup();curConfig.wireframe&&a("#tool_wireframe").click();curConfig.showlayers&&toggleSidePanel();a("#rulers").toggle(!!curConfig.showRulers)});
+a("#canvas_height").dragInput({min:10,max:null,step:10,callback:l,cursor:false,dragAdjust:0.1});a("#canvas_width").dragInput({min:10,max:null,step:10,callback:l,cursor:false,dragAdjust:0.1});a("#rect_width").dragInput({min:1,max:null,step:1,callback:changeAttribute,cursor:false});a("#rect_height").dragInput({min:1,max:null,step:1,callback:changeAttribute,cursor:false});a("#ellipse_cx").dragInput({min:1,max:null,step:1,callback:changeAttribute,cursor:false});a("#ellipse_cy").dragInput({min:1,max:null,
+step:1,callback:changeAttribute,cursor:false});a("#ellipse_rx").dragInput({min:1,max:null,step:1,callback:changeAttribute,cursor:false});a("#ellipse_ry").dragInput({min:1,max:null,step:1,callback:changeAttribute,cursor:false});a("#image_height").dragInput({min:1,max:null,step:1,callback:changeAttribute,cursor:false});a("#circle_cx").dragInput({min:1,max:null,step:1,callback:changeAttribute,cursor:false});a("#circle_cy").dragInput({min:1,max:null,step:1,callback:changeAttribute,cursor:false});a("#circle_r").dragInput({min:1,
+max:null,step:1,callback:changeAttribute,cursor:false});a("#image_height").dragInput({min:0,max:null,step:1,callback:changeAttribute,cursor:false});a("#selected_x").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#selected_y").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#path_node_x").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#path_node_y").dragInput({min:null,max:null,step:1,callback:changeAttribute,
+cursor:false});a("#image_width").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#line_x1").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#line_x2").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#line_y1").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#line_y2").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#path_x").dragInput({min:null,
+max:null,step:1,callback:changeAttribute,cursor:false});a("#path_y").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#rect_x").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#rect_y").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#g_x").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#g_y").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#image_x").dragInput({min:null,
+max:null,step:1,callback:changeAttribute,cursor:false});a("#text_y").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#text_x").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#image_y").dragInput({min:null,max:null,step:1,callback:changeAttribute,cursor:false});a("#rect_rx").dragInput({min:0,max:100,step:1,callback:changeAttribute,cursor:true});a("#stroke_width").dragInput({min:0,max:99,step:1,callback:function(h){var m=h.value;if(m==0&&
+Y&&["line","polyline"].indexOf(Y.nodeName)>=0)m=h.value=1;g.setStrokeWidth(m)},cursor:true,smallStep:0.1,start:1.5});a("#angle").dragInput({min:-180,max:180,step:1,callback:function(h){g.setRotationAngle(h.value,true);rotateCursor(h.value);a("#tool_reorient").toggleClass("disabled",h.value==0)},cursor:false,dragAdjust:0.5});a("#font_size").dragInput({min:1,max:250,step:1,callback:function(h){g.setFontSize(h.value)},cursor:true,stepfunc:function(h,m){var o=h.value-0,u=o+m,E=u>=o;if(m===0)return o;
+return o>=24?E?Math.round(o*1.1):Math.round(o/1.1):o<=1?E?o*2:o/2:u},dragAdjust:0.15});a("#group_opacity").dragInput({min:0,max:100,step:5,callback:changeAttribute,cursor:true,start:100});a("#blur").dragInput({min:0,max:10,step:0.1,callback:function(h,m){val=h.value;a("#blur").val(val);m?g.setBlur(val,true):g.setBlurNoUndo(val)},cursor:true,start:0});a("#zoom").val(g.getZoom()*100);a("#workarea").contextMenu({menu:"cmenu_canvas",inSpeed:0},function(h){switch(h){case "delete":lb();break;case "cut":Ua();
+break;case "copy":Xa();break;case "paste":g.pasteElements();break;case "paste_in_place":g.pasteElements("in_place");break;case "group":g.groupSelectedElements();break;case "ungroup":g.ungroupSelectedElement();break;case "move_front":sa();break;case "move_up":ib("Up");break;case "move_down":ib("Down");break;case "move_back":hb();break;default:svgedit.contextmenu&&svgedit.contextmenu.hasCustomHandler(h)&&svgedit.contextmenu.getCustomHandler(h).call()}});a(".contextMenu li").mousedown(function(h){h.preventDefault()});
+a("#cmenu_canvas li").disableContextMenu();I.enableContextMenuItems("#delete,#cut,#copy");window.onbeforeunload=function(){if(q.getUndoStackSize()===0)b.show_save_warning=false;if(!curConfig.no_save_warning&&b.show_save_warning)return uiStrings.notification.unsavedChanges};b.openPrep=function(h){a("#main_menu").hide();q.getUndoStackSize()===0?h(true):a.confirm(uiStrings.notification.QwantToOpen,h)};if(window.FileReader){d=function(h){h.stopPropagation();h.preventDefault();a("#workarea").removeAttr("style");
+a("#main_menu").hide();var m=null;if(m=h.type=="drop"?h.dataTransfer.files[0]:this.files[0])if(m.type.indexOf("image")!=-1)if(m.type.indexOf("svg")!=-1){h=new FileReader;h.onloadend=function(o){g.importSvgString(o.target.result,true);g.ungroupSelectedElement();g.ungroupSelectedElement();g.groupSelectedElements();g.alignSelectedElements("m","page");g.alignSelectedElements("c","page")};h.readAsText(m)}else alert("sorry, bitmap import is temporalily disabled")};K=a("#workarea");K[0].addEventListener("dragenter",
+function(h){h.stopPropagation();h.preventDefault();K.css({"-webkit-transform":"scale3d(1.1,1.1,1)","-moz-transform":"scale3d(1.1,1.1,1)","-o-transform":"scale(1.1)","-ms-transform":"scale3d(1.1,1.1,1)",transform:"scale3d(1.1,1.1,1)"})},false);K[0].addEventListener("dragover",function(h){h.stopPropagation();h.preventDefault()},false);K[0].addEventListener("dragleave",function(h){K.removeAttr("style");h.stopPropagation();h.preventDefault()},false);K[0].addEventListener("drop",d,false);var A=a('<input type="file">').change(function(){var h=
+this;b.openPrep(function(m){if(m){g.clear();if(h.files.length==1){m=new FileReader;m.onloadend=function(o){s(o.target.result);G()};m.readAsText(h.files[0])}}})});a("#tool_open").show().prepend(A);d=a('<input type="file">').change(d);a("#tool_import").show().prepend(d)}var G=b.updateCanvas=function(h,m){var o=K.width(),u=K.height(),E=o,H=u,J=g.getZoom(),O=K,X=a("#svgcanvas"),ba={x:O[0].scrollLeft+E/2,y:O[0].scrollTop+H/2},T=curConfig.canvas_expansion;o=Math.max(E,g.contentW*J*T);u=Math.max(H,g.contentH*
+J*T);o==E&&u==H?K.css("overflow","hidden"):K.css("overflow","scroll");T=X.height()/2;var fa=X.width()/2;X.width(o).height(u);var ha=u/2,W=o/2,qa=g.updateCanvas(o,u),ua=W/fa;o=o/2-E/2;u=u/2-H/2;if(m){m.x+=qa.x;m.y+=qa.y}else m={x:W+(ba.x-fa)*ua,y:ha+(ba.y-T)*ua};if(h)if(g.contentW>O.width()){K[0].scrollLeft=qa.x-10;K[0].scrollTop=qa.y-10}else{O[0].scrollLeft=o;O[0].scrollTop=u}else{O[0].scrollLeft=m.x-E/2;O[0].scrollTop=m.y-H/2}if(curConfig.showRulers){E=X;J=J;document.getElementById("workarea");document.getElementById("title_show");
+J||(J=g.getZoom());E||(E=a("#svgcanvas"));H=g.getContentElem();O=svgedit.units.getTypeMap()[curConfig.baseUnit];for(X=0;X<2;X++){fa=(ba=X===0)?"x":"y";ua=ba?"width":"height";T=H.getAttribute(fa)-0;fa=a("#ruler_"+fa+" canvas:first");$hcanv=fa.clone();fa.replaceWith($hcanv);o=$hcanv[0];ha=fa=E[ua]()*2;o.parentNode.style[ua]=ha+"px";W=0;var Aa;qa=o.getContext("2d");qa.fillStyle="rgb(200,0,0)";qa.fillRect(0,0,o.width,o.height);$hcanv.siblings().remove();if(fa>=3E4){var Ca=parseInt(fa/3E4)+1;Aa=Array(Ca);
+Aa[0]=qa;for(u=1;u<Ca;u++){o[ua]=3E4;var Pa=o.cloneNode(true);o.parentNode.appendChild(Pa);Aa[u]=Pa.getContext("2d")}Pa[ua]=fa%3E4;fa=3E4}o[ua]=fa;ua=O*J;var Qa=50/ua;o=1;for(u=0;u<D.length;u++){o=Ca=D[u];if(Qa<=Ca)break}Qa=o*ua;qa.font="normal 9px 'Lucida Grande', sans-serif";qa.fillStyle="#777";for(var Na=T/ua%o*ua,jb=Na-Qa;Na<ha;Na+=Qa){jb+=Qa;u=Math.round(Na)+0.5;if(ba){qa.moveTo(u,15);qa.lineTo(u,0)}else{qa.moveTo(15,u);qa.lineTo(0,u)}Ca=(jb-T)/ua;if(o>=1)u=Math.round(Ca);else{u=(o+"").split(".")[1].length;
+u=Ca.toFixed(u)-0}if(u!==0&&u!==1E3&&u%1E3===0)u=u/1E3+"K";if(ba){qa.fillText(u,Na+2,8);qa.fillStyle="#777"}else{Ca=(u+"").split("");for(u=0;u<Ca.length;u++){qa.fillText(Ca[u],1,Na+9+u*9);qa.fillStyle="#777"}}Ca=Qa/10;for(u=1;u<10;u++){var ub=Math.round(Na+Ca*u)+0.5;if(Aa&&ub>fa){W++;qa.stroke();if(W>=Aa.length){u=10;Na=ha;continue}qa=Aa[W];Na-=3E4;ub=Math.round(Na+Ca*u)+0.5}var Cb=u%2?12:10;if(ba){qa.moveTo(ub,15);qa.lineTo(ub,Cb)}else{qa.moveTo(15,ub);qa.lineTo(Cb,ub)}}}qa.strokeStyle="#666";qa.stroke()}K.scroll()}},
+D=[];for(d=0.1;d<1E5;d*=10){D.push(1*d);D.push(2*d);D.push(5*d)}G(true);try{var z=function(h){if(window.JSON&&JSON.stringify)return JSON.stringify(h);var m=arguments.callee;if(typeof h=="boolean"||typeof h=="number")return h+"";else if(typeof h=="string")return'"'+h.replace(/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,function(E){return"\\u"+("0000"+E.charCodeAt(0).toString(16)).slice(-4)})+'"';else if(h.length){for(var o=
+0;o<h.length;o++)h[o]=m(h[o]);return"["+h.join(",")+"]"}else{o=[];for(var u in h)o.push(m(u)+":"+m(h[u]));return"{"+o.join(",")+"}"}};window.addEventListener("message",function(h){var m=parseInt(h.data.substr(0,h.data.indexOf(";")));try{h.source.postMessage("SVGe"+m+";"+z(eval(h.data)),"*")}catch(o){h.source.postMessage("SVGe"+m+";error:"+o.message,"*")}},false)}catch(F){window.embed_error=F}a(function(){window.svgCanvas=g;g.ready=methodDraw.ready});b.setLang=function(h,m){a.pref("lang",h);a("#lang_select").val(h);
+if(m){g.runExtensions("langChanged",h);ma();a.each({"#stroke_color":"#tool_stroke .icon_label, #tool_stroke .color_block","#fill_color":"#tool_fill label, #tool_fill .color_block","#linejoin_miter":"#cur_linejoin","#linecap_butt":"#cur_linecap"},function(o,u){a(u).attr("title",a(o)[0].title)});a("#multiselected_panel div[id^=tool_align]").each(function(){a("#tool_pos"+this.id.substr(10))[0].title=this.title})}}};var f=[];b.ready=function(d){p?d():f.push(d)};b.runCallbacks=function(){a.each(f,function(){this()});
+p=true};b.loadFromString=function(d){b.ready(function(){s(d)})};b.loadFromURL=function(d,n){n||(n={});var v=n.cache,B=n.callback;b.ready(function(){a.ajax({url:d,dataType:"text",cache:!!v,success:function(q){s(q,B)},error:function(q,L,Q){q.status!=404&&q.responseText?s(q.responseText,B):a.alert(uiStrings.notification.URLloadFail+": \n"+Q+"",B)}})})};b.loadFromDataURI=function(d){b.ready(function(){var n=d.substring(26);s(svgedit.utilities.decode64(n))})};b.addExtension=function(){var d=arguments;
+a(function(){g&&g.addExtension.apply(this,d)})};return b}(jQuery);$(methodDraw.init)})();$.fn.dragInput=function(a){return this.each(function(){this.repeating=false;this.dragCfg={min:a&&!isNaN(parseFloat(a.min))?Number(a.min):null,max:a&&!isNaN(parseFloat(a.max))?Number(a.max):null,step:a&&Number(a.step)?a.step:1,stepfunc:a&&a.stepfunc?a.stepfunc:false,dragAdjust:a&&a.dragAdjust?a.dragAdjust:1,height:70,cursor:a&&a.cursor?Boolean(a.cursor):false,start:a&&a.start?Number(a.start):0,_btn_width:20,_direction:null,_delay:null,_repeat:null,callback:a&&a.callback?a.callback:null};this.dragCfg.smallStep=
+a&&a.smallStep?a.smallStep:this.dragCfg.step/2;var s=this.dragCfg.dragAdjust,g=$(this).parent(),b=$(this),p=this.dragCfg.height,w=this.dragCfg.min,c=this.dragCfg.max,f=this.dragCfg.step,d=c-w>0?(c-w)/f:200,n=d/p*f,v=0,B=this.getAttribute("data-attr"),q=methodDraw.canvas,L=svgedit.browser.isTouch(),Q=true,K=d&&this.dragCfg.cursor?$("<div class='draginput_cursor' />").appendTo(g):false;b.attr("readonly","readonly");K&&!isNaN(this.dragCfg.start)&&K.css("top",this.dragCfg.start*-1/n+p);this.adjustValue=
+function(I,S){var R;I=parseFloat(I);R=isNaN(this.value)?this.dragCfg.reset:$.isFunction(this.dragCfg.stepfunc)?this.dragCfg.stepfunc(this,I):Number((Number(this.value)+Number(I)).toFixed(5));if(c!==null)R=Math.min(R,c);if(w!==null)R=Math.max(R,w);K&&this.updateCursor(R);this.value=R;g.attr("data-value",R);$.isFunction(this.dragCfg.callback)&&this.dragCfg.callback(this,S)};g.toggleClass("draginput",g.is("label"));this.move=function(I,S,R){if(L)I=I.originalEvent.touches[0];if(v===0)v=S;S=(I.pageY-v)*
+-1;v=I.pageY;R=S*n*s;this.adjustValue(R.toFixed(f<1?1:0))};this.stop=function(){var I=q.getSelectedElems();$("body").removeClass("dragging");g.removeClass("active");Q=true;$(window).unbind("mousemove.draginput touchmove.draginput mouseup.draginput touchend.draginput");v=0;if(I[0]){I=q.undoMgr.finishUndoableChange();I.isEmpty()||q.undoMgr.addCommandToHistory(I)}this.adjustValue(0,Q)};this.updateCursor=function(){var I=parseFloat(this.value)*-1/n+p;K.css("top",I)};this.launch=function(I){var S=q.getSelectedElems();
+if(L)I=I.originalEvent.touches[0];var R=I.pageY,N=this.value,ga=this;q.undoMgr.beginUndoableChange(B,S);$("body").addClass("dragging");g.addClass("active");$(window).bind("mousemove.draginput touchmove.draginput",function(oa){ga.move(oa,R,parseFloat(N))});$(window).bind("mouseup.draginput touchend.draginput",function(){ga.stop()})};$(this).attr("readonly","readonly").attr("data-scale",n).attr("data-domain",p).attr("data-cursor",K!=false).bind("mousedown touchstart",function(I){this.blur();this.launch(I)}).bind("dblclick taphold",
+function(){this.removeAttribute("readonly","readonly");this.focus();this.select()}).keydown(function(I){switch(I.keyCode){case 13:this.adjustValue(0);this.blur()}}).focus(function(){this.getAttribute("readonly")==="readonly"&&this.blur()}).blur(function(){this.setAttribute("readonly","readonly")}).bind("mousewheel",function(I,S,R,N){S=q.getSelectedElems();Q&&q.undoMgr.beginUndoableChange(B,S);Q=false;clearTimeout(window.undoTimeout);window.undoTimeout=setTimeout(function(){ga.stop()},200);var ga=
+this;if(N>0)this.adjustValue(this.dragCfg.step);else N<0&&this.adjustValue(-this.dragCfg.step);I.preventDefault()})})};$.fn.dragInput.updateCursor=function(a){var s=parseFloat(a.value),g=parseFloat(a.getAttribute("data-scale")),b=parseFloat(a.getAttribute("data-domain"));s=s*-1/g+b+"px";a=a.parentNode.lastChild;if(a.className=="draginput_cursor")a.style.top=s};svgedit=svgedit||{};
+(function(){var a=this;if(!svgedit.contextmenu)svgedit.contextmenu={};a.contextMenuExtensions={};methodDraw.ready(function(){for(menuItem in contextMenuExtensions){var s=contextMenuExtensions[menuItem];Object.keys(a.contextMenuExtensions).length==0&&$("#cmenu_canvas").append("<li class='separator'>");var g=s.shortcut||"";$("#cmenu_canvas").append("<li class='disabled'><a href='#"+s.id+"'>"+s.label+"<span class='shortcut'>"+g+"</span></a></li>")}});svgedit.contextmenu.resetCustomMenus=function(){a.contextMenuExtensions=
+{}};svgedit.contextmenu.add=function(s){if(s&&s.id&&s.label&&s.action&&typeof s.action=="function")if(s.id in a.contextMenuExtensions)console.error('Cannot add extension "'+s.id+'", an extension by that name already exists"');else{console.log("Registed contextmenu item: {id:"+s.id+", label:"+s.label+"}");a.contextMenuExtensions[s.id]=s}else console.error("Menu items must be defined and have at least properties: id, label, action, where action must be a function")};svgedit.contextmenu.hasCustomHandler=
+function(s){return a.contextMenuExtensions[s]&&true};svgedit.contextmenu.getCustomHandler=function(s){return a.contextMenuExtensions[s].action}})();(function(a,s){function g(p){return!a(p).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}function b(p,w){var c=p.nodeName.toLowerCase();if("area"===c){c=p.parentNode;var f=c.name;if(!p.href||!f||c.nodeName.toLowerCase()!=="map")return false;c=a("img[usemap=#"+f+"]")[0];return!!c&&g(c)}return(/input|select|textarea|button|object/.test(c)?!p.disabled:"a"==c?p.href||w:w)&&g(p)}a.ui=a.ui||{};a.ui.version||(a.extend(a.ui,{version:"1.8.17",
+keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,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,WINDOWS:91}}),a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(p,w){return typeof p=="number"?this.each(function(){var c=
+this;setTimeout(function(){a(c).focus();w&&w.call(c)},p)}):this._focus.apply(this,arguments)},scrollParent:function(){var p;a.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?p=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(a.curCSS(this,"position",1))&&/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0):p=this.parents().filter(function(){return/(auto|scroll)/.test(a.curCSS(this,
+"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!p.length?a(document):p},zIndex:function(p){if(p!==s)return this.css("zIndex",p);if(this.length){p=a(this[0]);for(var w;p.length&&p[0]!==document;){w=p.css("position");if(w==="absolute"||w==="relative"||w==="fixed"){w=parseInt(p.css("zIndex"),10);if(!isNaN(w)&&w!==0)return w}p=p.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":
+"mousedown")+".ui-disableSelection",function(p){p.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),a.each(["Width","Height"],function(p,w){function c(v,B,q,L){a.each(f,function(){B-=parseFloat(a.curCSS(v,"padding"+this,true))||0;q&&(B-=parseFloat(a.curCSS(v,"border"+this+"Width",true))||0);L&&(B-=parseFloat(a.curCSS(v,"margin"+this,true))||0)});return B}var f=w==="Width"?["Left","Right"]:["Top","Bottom"],d=w.toLowerCase(),n={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,
+outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};a.fn["inner"+w]=function(v){if(v===s)return n["inner"+w].call(this);return this.each(function(){a(this).css(d,c(this,v)+"px")})};a.fn["outer"+w]=function(v,B){if(typeof v!="number")return n["outer"+w].call(this,v);return this.each(function(){a(this).css(d,c(this,v,true,B)+"px")})}}),a.extend(a.expr[":"],{data:function(p,w,c){return!!a.data(p,c[3])},focusable:function(p){return b(p,!isNaN(a.attr(p,"tabindex")))},tabbable:function(p){var w=a.attr(p,
+"tabindex"),c=isNaN(w);return(c||w>=0)&&b(p,!c)}}),a(function(){var p=document.body,w=p.appendChild(w=document.createElement("div"));a.extend(w.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=w.offsetHeight===100;a.support.selectstart="onselectstart"in w;p.removeChild(w).style.display="none"}),a.extend(a.ui,{plugin:{add:function(p,w,c){p=a.ui[p].prototype;for(var f in c){p.plugins[f]=p.plugins[f]||[];p.plugins[f].push([w,c[f]])}},call:function(p,w,c){if((w=p.plugins[w])&&
+p.element[0].parentNode)for(var f=0;f<w.length;f++)p.options[w[f][0]]&&w[f][1].apply(p.element,c)}},contains:function(p,w){return document.compareDocumentPosition?p.compareDocumentPosition(w)&16:p!==w&&p.contains(w)},hasScroll:function(p,w){if(a(p).css("overflow")==="hidden")return false;var c=w&&w==="left"?"scrollLeft":"scrollTop",f=false;if(p[c]>0)return true;p[c]=1;f=p[c]>0;p[c]=0;return f},isOverAxis:function(p,w,c){return p>w&&p<w+c},isOver:function(p,w,c,f,d,n){return a.ui.isOverAxis(p,c,d)&&
+a.ui.isOverAxis(w,f,n)}}))})(jQuery);
+(function(a,s){if(a.cleanData){var g=a.cleanData;a.cleanData=function(p){for(var w=0,c;(c=p[w])!=null;w++)try{a(c).triggerHandler("remove")}catch(f){}g(p)}}else{var b=a.fn.remove;a.fn.remove=function(p,w){return this.each(function(){w||(!p||a.filter(p,[this]).length)&&a("*",this).add([this]).each(function(){try{a(this).triggerHandler("remove")}catch(c){}});return b.call(a(this),p,w)})}}a.widget=function(p,w,c){var f=p.split(".")[0],d;p=p.split(".")[1];d=f+"-"+p;c||(c=w,w=a.Widget);a.expr[":"][d]=
+function(n){return!!a.data(n,p)};a[f]=a[f]||{};a[f][p]=function(n,v){arguments.length&&this._createWidget(n,v)};w=new w;w.options=a.extend(true,{},w.options);a[f][p].prototype=a.extend(true,w,{namespace:f,widgetName:p,widgetEventPrefix:a[f][p].prototype.widgetEventPrefix||p,widgetBaseClass:d},c);a.widget.bridge(p,a[f][p])};a.widget.bridge=function(p,w){a.fn[p]=function(c){var f=typeof c=="string",d=Array.prototype.slice.call(arguments,1),n=this;c=!f&&d.length?a.extend.apply(null,[true,c].concat(d)):
+c;if(f&&c.charAt(0)==="_")return n;f?this.each(function(){var v=a.data(this,p),B=v&&a.isFunction(v[c])?v[c].apply(v,d):v;if(B!==v&&B!==s){n=B;return false}}):this.each(function(){var v=a.data(this,p);v?v.option(c||{})._init():a.data(this,p,new w(c,this))});return n}};a.Widget=function(p,w){arguments.length&&this._createWidget(p,w)};a.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(p,w){a.data(w,this.widgetName,this);this.element=a(w);this.options=
+a.extend(true,{},this.options,this._getCreateOptions(),p);var c=this;this.element.bind("remove."+this.widgetName,function(){c.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return a.metadata&&a.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+
+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(p,w){var c=p;if(arguments.length===0)return a.extend({},this.options);if(typeof p=="string"){if(w===s)return this.options[p];c={};c[p]=w}this._setOptions(c);return this},_setOptions:function(p){var w=this;a.each(p,function(c,f){w._setOption(c,f)});return this},_setOption:function(p,w){this.options[p]=w;p==="disabled"&&this.widget()[w?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",
+w);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(p,w,c){var f,d=this.options[p];c=c||{};w=a.Event(w);w.type=(p===this.widgetEventPrefix?p:this.widgetEventPrefix+p).toLowerCase();w.target=this.element[0];if(p=w.originalEvent)for(f in p)f in w||(w[f]=p[f]);this.element.trigger(w,c);return!(a.isFunction(d)&&d.call(this.element[0],w,c)===false||w.isDefaultPrevented())}}})(jQuery);
+(function(a){var s=false;a(document).mouseup(function(){s=false});a.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var g=this;this.element.bind("mousedown."+this.widgetName,function(b){return g._mouseDown(b)}).bind("click."+this.widgetName,function(b){if(true===a.data(b.target,g.widgetName+".preventClickEvent")){a.removeData(b.target,g.widgetName+".preventClickEvent");b.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+
+this.widgetName)},_mouseDown:function(g){if(!s){this._mouseStarted&&this._mouseUp(g);this._mouseDownEvent=g;var b=this,p=g.which==1,w=typeof this.options.cancel=="string"&&g.target.nodeName?a(g.target).closest(this.options.cancel).length:false;if(!p||w||!this._mouseCapture(g))return true;(this.mouseDelayMet=!this.options.delay)||(this._mouseDelayTimer=setTimeout(function(){b.mouseDelayMet=true},this.options.delay));if(this._mouseDistanceMet(g)&&this._mouseDelayMet(g)){this._mouseStarted=this._mouseStart(g)!==
+false;if(!this._mouseStarted){g.preventDefault();return true}}true===a.data(g.target,this.widgetName+".preventClickEvent")&&a.removeData(g.target,this.widgetName+".preventClickEvent");this._mouseMoveDelegate=function(c){return b._mouseMove(c)};this._mouseUpDelegate=function(c){return b._mouseUp(c)};a(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);g.preventDefault();return s=true}},_mouseMove:function(g){if(a.browser.msie&&
+!(document.documentMode>=9)&&!g.button)return this._mouseUp(g);if(this._mouseStarted){this._mouseDrag(g);return g.preventDefault()}this._mouseDistanceMet(g)&&this._mouseDelayMet(g)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,g)!==false,this._mouseStarted?this._mouseDrag(g):this._mouseUp(g));return!this._mouseStarted},_mouseUp:function(g){a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);this._mouseStarted&&
+(this._mouseStarted=false,g.target==this._mouseDownEvent.target&&a.data(g.target,this.widgetName+".preventClickEvent",true),this._mouseStop(g));return false},_mouseDistanceMet:function(g){return Math.max(Math.abs(this._mouseDownEvent.pageX-g.pageX),Math.abs(this._mouseDownEvent.pageY-g.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery);
+(function(a){a.widget("ui.draggable",a.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){this.options.helper=="original"&&
+!/^(?:r|a|f)/.test(this.element.css("position"))&&(this.element[0].style.position="relative");this.options.addClasses&&this.element.addClass("ui-draggable");this.options.disabled&&this.element.addClass("ui-draggable-disabled");this._mouseInit()},destroy:function(){if(this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this}},_mouseCapture:function(s){var g=this.options;
+if(this.helper||g.disabled||a(s.target).is(".ui-resizable-handle"))return false;this.handle=this._getHandle(s);if(!this.handle)return false;g.iframeFix&&a(g.iframeFix===true?"iframe":g.iframeFix).each(function(){a('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(a(this).offset()).appendTo("body")});return true},_mouseStart:function(s){var g=this.options;this.helper=
+this._createHelper(s);this._cacheHelperProportions();a.ui.ddmanager&&(a.ui.ddmanager.current=this);this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};a.extend(this.offset,{click:{left:s.pageX-this.offset.left,top:s.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});
+this.originalPosition=this.position=this._generatePosition(s);this.originalPageX=s.pageX;this.originalPageY=s.pageY;g.cursorAt&&this._adjustOffsetFromHelper(g.cursorAt);g.containment&&this._setContainment();if(this._trigger("start",s)===false){this._clear();return false}this._cacheHelperProportions();a.ui.ddmanager&&!g.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,s);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(s,true);a.ui.ddmanager&&a.ui.ddmanager.dragStart(this,s);return true},
+_mouseDrag:function(s,g){this.position=this._generatePosition(s);this.positionAbs=this._convertPositionTo("absolute");if(!g){var b=this._uiHash();if(this._trigger("drag",s,b)===false){this._mouseUp({});return false}this.position=b.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";a.ui.ddmanager&&a.ui.ddmanager.drag(this,s);return false},_mouseStop:function(s){var g=
+false;a.ui.ddmanager&&!this.options.dropBehaviour&&(g=a.ui.ddmanager.drop(this,s));this.dropped&&(g=this.dropped,this.dropped=false);if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper=="original")return false;if(this.options.revert=="invalid"&&!g||this.options.revert=="valid"&&g||this.options.revert===true||a.isFunction(this.options.revert)&&this.options.revert.call(this.element,g)){var b=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),
+function(){b._trigger("stop",s)!==false&&b._clear()})}else this._trigger("stop",s)!==false&&this._clear();return false},_mouseUp:function(s){this.options.iframeFix===true&&a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)});a.ui.ddmanager&&a.ui.ddmanager.dragStop(this,s);return a.ui.mouse.prototype._mouseUp.call(this,s)},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(s){var g=!this.options.handle||
+!a(this.options.handle,this.element).length?true:false;a(this.options.handle,this.element).find("*").andSelf().each(function(){this==s.target&&(g=true)});return g},_createHelper:function(s){var g=this.options;s=a.isFunction(g.helper)?a(g.helper.apply(this.element[0],[s])):g.helper=="clone"?this.element.clone().removeAttr("id"):this.element;s.parents("body").length||s.appendTo(g.appendTo=="parent"?this.element[0].parentNode:g.appendTo);s[0]!=this.element[0]&&!/(fixed|absolute)/.test(s.css("position"))&&
+s.css("position","absolute");return s},_adjustOffsetFromHelper:function(s){typeof s=="string"&&(s=s.split(" "));a.isArray(s)&&(s={left:+s[0],top:+s[1]||0});"left"in s&&(this.offset.click.left=s.left+this.margins.left);"right"in s&&(this.offset.click.left=this.helperProportions.width-s.right+this.margins.left);"top"in s&&(this.offset.click.top=s.top+this.margins.top);"bottom"in s&&(this.offset.click.top=this.helperProportions.height-s.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=
+this.helper.offsetParent();var s=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])&&(s.left+=this.scrollParent.scrollLeft(),s.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)s={top:0,left:0};return{top:s.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:s.left+(parseInt(this.offsetParent.css("borderLeftWidth"),
+10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var s=this.element.position();return{top:s.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:s.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),
+10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var s=this.options;s.containment=="parent"&&(s.containment=this.helper[0].parentNode);if(s.containment=="document"||s.containment=="window")this.containment=[s.containment=="document"?0:a(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,s.containment=="document"?0:a(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,
+(s.containment=="document"?0:a(window).scrollLeft())+a(s.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(s.containment=="document"?0:a(window).scrollTop())+(a(s.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(s.containment)&&s.containment.constructor!=Array){s=a(s.containment);var g=s[0];if(g){s.offset();var b=a(g).css("overflow")!=
+"hidden";this.containment=[(parseInt(a(g).css("borderLeftWidth"),10)||0)+(parseInt(a(g).css("paddingLeft"),10)||0),(parseInt(a(g).css("borderTopWidth"),10)||0)+(parseInt(a(g).css("paddingTop"),10)||0),(b?Math.max(g.scrollWidth,g.offsetWidth):g.offsetWidth)-(parseInt(a(g).css("borderLeftWidth"),10)||0)-(parseInt(a(g).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(b?Math.max(g.scrollHeight,g.offsetHeight):g.offsetHeight)-(parseInt(a(g).css("borderTopWidth"),
+10)||0)-(parseInt(a(g).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom];this.relative_container=s}}else s.containment.constructor==Array&&(this.containment=s.containment)},_convertPositionTo:function(s,g){g||(g=this.position);var b=s=="absolute"?1:-1,p=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,w=/(html|body)/i.test(p[0].tagName);return{top:g.top+
+this.offset.relative.top*b+this.offset.parent.top*b-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():w?0:p.scrollTop())*b),left:g.left+this.offset.relative.left*b+this.offset.parent.left*b-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():w?0:p.scrollLeft())*b)}},_generatePosition:function(s){var g=this.options,b=this.cssPosition=="absolute"&&
+(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,p=/(html|body)/i.test(b[0].tagName),w=s.pageX,c=s.pageY;if(this.originalPosition){var f;if(this.containment){if(this.relative_container){f=this.relative_container.offset();f=[this.containment[0]+f.left,this.containment[1]+f.top,this.containment[2]+f.left,this.containment[3]+f.top]}else f=this.containment;s.pageX-this.offset.click.left<f[0]&&(w=f[0]+this.offset.click.left);
+s.pageY-this.offset.click.top<f[1]&&(c=f[1]+this.offset.click.top);s.pageX-this.offset.click.left>f[2]&&(w=f[2]+this.offset.click.left);s.pageY-this.offset.click.top>f[3]&&(c=f[3]+this.offset.click.top)}if(g.grid){c=g.grid[1]?this.originalPageY+Math.round((c-this.originalPageY)/g.grid[1])*g.grid[1]:this.originalPageY;c=f?c-this.offset.click.top<f[1]||c-this.offset.click.top>f[3]?c-this.offset.click.top<f[1]?c+g.grid[1]:c-g.grid[1]:c:c;w=g.grid[0]?this.originalPageX+Math.round((w-this.originalPageX)/
+g.grid[0])*g.grid[0]:this.originalPageX;w=f?w-this.offset.click.left<f[0]||w-this.offset.click.left>f[2]?w-this.offset.click.left<f[0]?w+g.grid[0]:w-g.grid[0]:w:w}}return{top:c-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():p?0:b.scrollTop()),left:w-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&a.browser.version<
+526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():p?0:b.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging");this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove();this.helper=null;this.cancelHelperRemoval=false},_trigger:function(s,g,b){b=b||this._uiHash();a.ui.plugin.call(this,s,[g,b]);s=="drag"&&(this.positionAbs=this._convertPositionTo("absolute"));return a.Widget.prototype._trigger.call(this,s,g,
+b)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}});a.extend(a.ui.draggable,{version:"1.8.17"});a.ui.plugin.add("draggable","connectToSortable",{start:function(s,g){var b=a(this).data("draggable"),p=b.options,w=a.extend({},g,{item:b.element});b.sortables=[];a(p.connectToSortable).each(function(){var c=a.data(this,"sortable");c&&!c.options.disabled&&(b.sortables.push({instance:c,shouldRevert:c.options.revert}),
+c.refreshPositions(),c._trigger("activate",s,w))})},stop:function(s,g){var b=a(this).data("draggable"),p=a.extend({},g,{item:b.element});a.each(b.sortables,function(){this.instance.isOver?(this.instance.isOver=0,b.cancelHelperRemoval=true,this.instance.cancelHelperRemoval=false,this.shouldRevert&&(this.instance.options.revert=true),this.instance._mouseStop(s),this.instance.options.helper=this.instance.options._helper,b.options.helper=="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})):
+(this.instance.cancelHelperRemoval=false,this.instance._trigger("deactivate",s,p))})},drag:function(s,g){var b=a(this).data("draggable"),p=this;a.each(b.sortables,function(){this.instance.positionAbs=b.positionAbs;this.instance.helperProportions=b.helperProportions;this.instance.offset.click=b.offset.click;this.instance._intersectsWith(this.instance.containerCache)?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=a(p).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item",
+true),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return g.helper[0]},s.target=this.instance.currentItem[0],this.instance._mouseCapture(s,true),this.instance._mouseStart(s,true,true),this.instance.offset.click.top=b.offset.click.top,this.instance.offset.click.left=b.offset.click.left,this.instance.offset.parent.left-=b.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=b.offset.parent.top-this.instance.offset.parent.top,
+b._trigger("toSortable",s),b.dropped=this.instance.element,b.currentItem=b.element,this.instance.fromOutside=b),this.instance.currentItem&&this.instance._mouseDrag(s)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=true,this.instance.options.revert=false,this.instance._trigger("out",s,this.instance._uiHash(this.instance)),this.instance._mouseStop(s,true),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&
+this.instance.placeholder.remove(),b._trigger("fromSortable",s),b.dropped=false)})}});a.ui.plugin.add("draggable","cursor",{start:function(){var s=a("body"),g=a(this).data("draggable").options;s.css("cursor")&&(g._cursor=s.css("cursor"));s.css("cursor",g.cursor)},stop:function(){var s=a(this).data("draggable").options;s._cursor&&a("body").css("cursor",s._cursor)}});a.ui.plugin.add("draggable","opacity",{start:function(s,g){var b=a(g.helper),p=a(this).data("draggable").options;b.css("opacity")&&(p._opacity=
+b.css("opacity"));b.css("opacity",p.opacity)},stop:function(s,g){var b=a(this).data("draggable").options;b._opacity&&a(g.helper).css("opacity",b._opacity)}});a.ui.plugin.add("draggable","scroll",{start:function(){var s=a(this).data("draggable");s.scrollParent[0]!=document&&s.scrollParent[0].tagName!="HTML"&&(s.overflowOffset=s.scrollParent.offset())},drag:function(s){var g=a(this).data("draggable"),b=g.options,p=false;if(g.scrollParent[0]!=document&&g.scrollParent[0].tagName!="HTML"){if(!b.axis||
+b.axis!="x")g.overflowOffset.top+g.scrollParent[0].offsetHeight-s.pageY<b.scrollSensitivity?g.scrollParent[0].scrollTop=p=g.scrollParent[0].scrollTop+b.scrollSpeed:s.pageY-g.overflowOffset.top<b.scrollSensitivity&&(g.scrollParent[0].scrollTop=p=g.scrollParent[0].scrollTop-b.scrollSpeed);if(!b.axis||b.axis!="y")g.overflowOffset.left+g.scrollParent[0].offsetWidth-s.pageX<b.scrollSensitivity?g.scrollParent[0].scrollLeft=p=g.scrollParent[0].scrollLeft+b.scrollSpeed:s.pageX-g.overflowOffset.left<b.scrollSensitivity&&
+(g.scrollParent[0].scrollLeft=p=g.scrollParent[0].scrollLeft-b.scrollSpeed)}else{if(!b.axis||b.axis!="x")s.pageY-a(document).scrollTop()<b.scrollSensitivity?p=a(document).scrollTop(a(document).scrollTop()-b.scrollSpeed):a(window).height()-(s.pageY-a(document).scrollTop())<b.scrollSensitivity&&(p=a(document).scrollTop(a(document).scrollTop()+b.scrollSpeed));if(!b.axis||b.axis!="y")s.pageX-a(document).scrollLeft()<b.scrollSensitivity?p=a(document).scrollLeft(a(document).scrollLeft()-b.scrollSpeed):
+a(window).width()-(s.pageX-a(document).scrollLeft())<b.scrollSensitivity&&(p=a(document).scrollLeft(a(document).scrollLeft()+b.scrollSpeed))}p!==false&&a.ui.ddmanager&&!b.dropBehaviour&&a.ui.ddmanager.prepareOffsets(g,s)}});a.ui.plugin.add("draggable","snap",{start:function(){var s=a(this).data("draggable"),g=s.options;s.snapElements=[];a(g.snap.constructor!=String?g.snap.items||":data(draggable)":g.snap).each(function(){var b=a(this),p=b.offset();this!=s.element[0]&&s.snapElements.push({item:this,
+width:b.outerWidth(),height:b.outerHeight(),top:p.top,left:p.left})})},drag:function(s,g){for(var b=a(this).data("draggable"),p=b.options,w=p.snapTolerance,c=g.offset.left,f=c+b.helperProportions.width,d=g.offset.top,n=d+b.helperProportions.height,v=b.snapElements.length-1;v>=0;v--){var B=b.snapElements[v].left,q=B+b.snapElements[v].width,L=b.snapElements[v].top,Q=L+b.snapElements[v].height;if(B-w<c&&c<q+w&&L-w<d&&d<Q+w||B-w<c&&c<q+w&&L-w<n&&n<Q+w||B-w<f&&f<q+w&&L-w<d&&d<Q+w||B-w<f&&f<q+w&&L-w<n&&
+n<Q+w){if(p.snapMode!="inner"){var K=Math.abs(L-n)<=w,I=Math.abs(Q-d)<=w,S=Math.abs(B-f)<=w,R=Math.abs(q-c)<=w;K&&(g.position.top=b._convertPositionTo("relative",{top:L-b.helperProportions.height,left:0}).top-b.margins.top);I&&(g.position.top=b._convertPositionTo("relative",{top:Q,left:0}).top-b.margins.top);S&&(g.position.left=b._convertPositionTo("relative",{top:0,left:B-b.helperProportions.width}).left-b.margins.left);R&&(g.position.left=b._convertPositionTo("relative",{top:0,left:q}).left-b.margins.left)}var N=
+K||I||S||R;if(p.snapMode!="outer"){K=Math.abs(L-d)<=w;I=Math.abs(Q-n)<=w;S=Math.abs(B-c)<=w;R=Math.abs(q-f)<=w;K&&(g.position.top=b._convertPositionTo("relative",{top:L,left:0}).top-b.margins.top);I&&(g.position.top=b._convertPositionTo("relative",{top:Q-b.helperProportions.height,left:0}).top-b.margins.top);S&&(g.position.left=b._convertPositionTo("relative",{top:0,left:B}).left-b.margins.left);R&&(g.position.left=b._convertPositionTo("relative",{top:0,left:q-b.helperProportions.width}).left-b.margins.left)}!b.snapElements[v].snapping&&
+(K||I||S||R||N)&&b.options.snap.snap&&b.options.snap.snap.call(b.element,s,a.extend(b._uiHash(),{snapItem:b.snapElements[v].item}));b.snapElements[v].snapping=K||I||S||R||N}else{b.snapElements[v].snapping&&b.options.snap.release&&b.options.snap.release.call(b.element,s,a.extend(b._uiHash(),{snapItem:b.snapElements[v].item}));b.snapElements[v].snapping=false}}}});a.ui.plugin.add("draggable","stack",{start:function(){var s=a(this).data("draggable").options;s=a.makeArray(a(s.stack)).sort(function(b,
+p){return(parseInt(a(b).css("zIndex"),10)||0)-(parseInt(a(p).css("zIndex"),10)||0)});if(s.length){var g=parseInt(s[0].style.zIndex)||0;a(s).each(function(b){this.style.zIndex=g+b});this[0].style.zIndex=g+s.length}}});a.ui.plugin.add("draggable","zIndex",{start:function(s,g){var b=a(g.helper),p=a(this).data("draggable").options;b.css("zIndex")&&(p._zIndex=b.css("zIndex"));b.css("zIndex",p.zIndex)},stop:function(s,g){var b=a(this).data("draggable").options;b._zIndex&&a(g.helper).css("zIndex",b._zIndex)}})})(jQuery);
+(function(a){a.widget("ui.slider",a.ui.mouse,{widgetEventPrefix:"slide",options:{animate:false,distance:0,max:100,min:0,orientation:"horizontal",range:false,step:1,value:0,values:null},_create:function(){var s=this,g=this.options,b=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),p=g.values&&g.values.length||1,w=[];this._mouseSliding=this._keySliding=false;this._animateOff=true;this._handleIndex=null;this._detectOrientation();this._mouseInit();this.element.addClass("ui-slider ui-slider-"+
+this.orientation+" ui-widget ui-widget-content ui-corner-all"+(g.disabled?" ui-slider-disabled ui-disabled":""));this.range=a([]);g.range&&(g.range===true&&(g.values||(g.values=[this._valueMin(),this._valueMin()]),g.values.length&&g.values.length!==2&&(g.values=[g.values[0],g.values[0]])),this.range=a("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(g.range==="min"||g.range==="max"?" ui-slider-range-"+g.range:"")));for(var c=b.length;c<p;c+=1)w.push("<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>");
+this.handles=b.add(a(w.join("")).appendTo(s.element));this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(f){f.preventDefault()}).hover(function(){g.disabled||a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")}).focus(function(){g.disabled?a(this).blur():(a(".ui-slider .ui-state-focus").removeClass("ui-state-focus"),a(this).addClass("ui-state-focus"))}).blur(function(){a(this).removeClass("ui-state-focus")});this.handles.each(function(f){a(this).data("index.ui-slider-handle",
+f)});this.handles.keydown(function(f){var d=true,n=a(this).data("index.ui-slider-handle"),v,B,q;if(!s.options.disabled){switch(f.keyCode){case a.ui.keyCode.HOME:case a.ui.keyCode.END:case a.ui.keyCode.PAGE_UP:case a.ui.keyCode.PAGE_DOWN:case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:d=false;if(!s._keySliding){s._keySliding=true;a(this).addClass("ui-state-active");v=s._start(f,n);if(v===false)return}}v=s.options.step;s.options.values&&s.options.values.length?
+B=q=s.values(n):B=q=s.value();switch(f.keyCode){case a.ui.keyCode.HOME:q=s._valueMin();break;case a.ui.keyCode.END:q=s._valueMax();break;case a.ui.keyCode.PAGE_UP:q=s._trimAlignValue(B+(s._valueMax()-s._valueMin())/5);break;case a.ui.keyCode.PAGE_DOWN:q=s._trimAlignValue(B-(s._valueMax()-s._valueMin())/5);break;case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:if(B===s._valueMax())return;q=s._trimAlignValue(B+v);break;case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:if(B===s._valueMin())return;q=s._trimAlignValue(B-
+v)}s._slide(f,n,q);return d}}).keyup(function(f){var d=a(this).data("index.ui-slider-handle");s._keySliding&&(s._keySliding=false,s._stop(f,d),s._change(f,d),a(this).removeClass("ui-state-active"))});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");this._mouseDestroy();
+return this},_mouseCapture:function(s){var g=this.options,b,p,w,c,f;if(g.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();b=this._normValueFromMouse({x:s.pageX,y:s.pageY});p=this._valueMax()-this._valueMin()+1;c=this;this.handles.each(function(d){var n=Math.abs(b-c.values(d));p>n&&(p=n,w=a(this),f=d)});g.range===true&&this.values(1)===g.min&&(f+=1,w=a(this.handles[f]));if(this._start(s,f)===false)return false;
+this._mouseSliding=true;c._handleIndex=f;w.addClass("ui-state-active").focus();g=w.offset();this._clickOffset=!a(s.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:s.pageX-g.left-w.width()/2,top:s.pageY-g.top-w.height()/2-(parseInt(w.css("borderTopWidth"),10)||0)-(parseInt(w.css("borderBottomWidth"),10)||0)+(parseInt(w.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(s,f,b);return this._animateOff=true},_mouseStart:function(){return true},_mouseDrag:function(s){var g=
+this._normValueFromMouse({x:s.pageX,y:s.pageY});this._slide(s,this._handleIndex,g);return false},_mouseStop:function(s){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(s,this._handleIndex);this._change(s,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(s){var g,b;this.orientation==="horizontal"?
+(g=this.elementSize.width,b=s.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(g=this.elementSize.height,b=s.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0));s=b/g;s>1&&(s=1);s<0&&(s=0);this.orientation==="vertical"&&(s=1-s);g=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+s*g)},_start:function(s,g){var b={handle:this.handles[g],value:this.value()};this.options.values&&this.options.values.length&&(b.value=this.values(g),
+b.values=this.values());return this._trigger("start",s,b)},_slide:function(s,g,b){var p,w,c;this.options.values&&this.options.values.length?(p=this.values(g?0:1),this.options.values.length===2&&this.options.range===true&&(g===0&&b>p||g===1&&b<p)&&(b=p),b!==this.values(g)&&(w=this.values(),w[g]=b,c=this._trigger("slide",s,{handle:this.handles[g],value:b,values:w}),this.values(g?0:1),c!==false&&this.values(g,b,true))):b!==this.value()&&(c=this._trigger("slide",s,{handle:this.handles[g],value:b}),c!==
+false&&this.value(b))},_stop:function(s,g){var b={handle:this.handles[g],value:this.value()};this.options.values&&this.options.values.length&&(b.value=this.values(g),b.values=this.values());this._trigger("stop",s,b)},_change:function(s,g){if(!this._keySliding&&!this._mouseSliding){var b={handle:this.handles[g],value:this.value()};this.options.values&&this.options.values.length&&(b.value=this.values(g),b.values=this.values());this._trigger("change",s,b)}},value:function(s){if(arguments.length){this.options.value=
+this._trimAlignValue(s);this._refreshValue();this._change(null,0)}else return this._value()},values:function(s,g){var b,p,w;if(arguments.length>1){this.options.values[s]=this._trimAlignValue(g);this._refreshValue();this._change(null,s)}else{if(!arguments.length)return this._values();if(!a.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(s):this.value();b=this.options.values;p=arguments[0];for(w=0;w<b.length;w+=1){b[w]=this._trimAlignValue(p[w]);this._change(null,
+w)}this._refreshValue()}},_setOption:function(s,g){var b,p=0;a.isArray(this.options.values)&&(p=this.options.values.length);a.Widget.prototype._setOption.apply(this,arguments);switch(s){case "disabled":g?(this.handles.filter(".ui-state-focus").blur(),this.handles.removeClass("ui-state-hover"),this.handles.propAttr("disabled",true),this.element.addClass("ui-disabled")):(this.handles.propAttr("disabled",false),this.element.removeClass("ui-disabled"));break;case "orientation":this._detectOrientation();
+this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation);this._refreshValue();break;case "value":this._animateOff=true;this._refreshValue();this._change(null,0);this._animateOff=false;break;case "values":this._animateOff=true;this._refreshValue();for(b=0;b<p;b+=1)this._change(null,b);this._animateOff=false}},_value:function(){var s=this.options.value;return s=this._trimAlignValue(s)},_values:function(s){var g,b;if(arguments.length){g=this.options.values[s];
+return g=this._trimAlignValue(g)}g=this.options.values.slice();for(b=0;b<g.length;b+=1)g[b]=this._trimAlignValue(g[b]);return g},_trimAlignValue:function(s){if(s<=this._valueMin())return this._valueMin();if(s>=this._valueMax())return this._valueMax();var g=this.options.step>0?this.options.step:1,b=(s-this._valueMin())%g;s=s-b;Math.abs(b)*2>=g&&(s+=b>0?g:-g);return parseFloat(s.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var s=
+this.options.range,g=this.options,b=this,p=this._animateOff?false:g.animate,w,c={},f,d,n,v;this.options.values&&this.options.values.length?this.handles.each(function(B){w=(b.values(B)-b._valueMin())/(b._valueMax()-b._valueMin())*100;c[b.orientation==="horizontal"?"left":"bottom"]=w+"%";a(this).stop(1,1)[p?"animate":"css"](c,g.animate);b.options.range===true&&(b.orientation==="horizontal"?(B===0&&b.range.stop(1,1)[p?"animate":"css"]({left:w+"%"},g.animate),B===1&&b.range[p?"animate":"css"]({width:w-
+f+"%"},{queue:false,duration:g.animate})):(B===0&&b.range.stop(1,1)[p?"animate":"css"]({bottom:w+"%"},g.animate),B===1&&b.range[p?"animate":"css"]({height:w-f+"%"},{queue:false,duration:g.animate})));f=w}):(d=this.value(),n=this._valueMin(),v=this._valueMax(),w=v!==n?(d-n)/(v-n)*100:0,c[b.orientation==="horizontal"?"left":"bottom"]=w+"%",this.handle.stop(1,1)[p?"animate":"css"](c,g.animate),s==="min"&&this.orientation==="horizontal"&&this.range.stop(1,1)[p?"animate":"css"]({width:w+"%"},g.animate),
+s==="max"&&this.orientation==="horizontal"&&this.range[p?"animate":"css"]({width:100-w+"%"},{queue:false,duration:g.animate}),s==="min"&&this.orientation==="vertical"&&this.range.stop(1,1)[p?"animate":"css"]({height:w+"%"},g.animate),s==="max"&&this.orientation==="vertical"&&this.range[p?"animate":"css"]({height:100-w+"%"},{queue:false,duration:g.animate}))}});a.extend(a.ui.slider,{version:"1.8.17"})})(jQuery);(function(a){Math.precision=function(c,f){if(f===undefined)f=0;return Math.round(c*Math.pow(10,f))/Math.pow(10,f)};var s=function(c,f){var d=this,n=c.find("img:first"),v=0,B=100,q=100,L=0,Q=100,K=100,I=0,S=0,R,N,ga=[],oa=function(U){for(var Z=0;Z<ga.length;Z++)ga[Z].call(d,d,U)},Y=function(U){var Z=c.offset();R={l:Z.left|0,t:Z.top|0};clearTimeout(N);N=setTimeout(function(){Ba.call(d,U)},0);a(document).bind("mousemove",V).bind("mouseup",ea);U.preventDefault()},V=function(U){clearTimeout(N);N=setTimeout(function(){Ba.call(d,
+U)},0);U.stopPropagation();U.preventDefault();return false},ea=function(U){a(document).unbind("mouseup",ea).unbind("mousemove",V);U.stopPropagation();U.preventDefault();return false},Ba=function(U){var Z=U.pageX-R.l;U=U.pageY-R.t;var na=c.w,pa=c.h;if(Z<0)Z=0;else if(Z>na)Z=na;if(U<0)U=0;else if(U>pa)U=pa;ja.call(d,"xy",{x:Z/na*q+v,y:U/pa*K+L})},ja=function(U,Z,na){if(Z===undefined){if(U===undefined||U==null)U="xy";switch(U.toLowerCase()){case "x":return I;case "y":return S;default:return{x:I,y:S}}}if(!(na!=
+null&&na==d)){var pa=false,ma,la;if(U==null)U="xy";switch(U.toLowerCase()){case "x":ma=Z&&(Z.x&&Z.x|0||Z|0)||0;break;case "y":la=Z&&(Z.y&&Z.y|0||Z|0)||0;break;default:ma=Z&&Z.x&&Z.x|0||0;la=Z&&Z.y&&Z.y|0||0}if(ma!=null){if(ma<v)ma=v;else if(ma>B)ma=B;if(I!=ma){I=ma;pa=true}}if(la!=null){if(la<L)la=L;else if(la>Q)la=Q;if(S!=la){S=la;pa=true}}pa&&oa.call(d,na||d)}},ca=function(U){a.isFunction(U)&&ga.push(U)};a.extend(true,d,{val:ja,range:function(U,Z){if(Z===undefined){if(U===undefined||U==null)U="all";
+switch(U.toLowerCase()){case "minx":return v;case "maxx":return B;case "rangex":return{minX:v,maxX:B,rangeX:q};case "miny":return L;case "maxy":return Q;case "rangey":return{minY:L,maxY:Q,rangeY:K};default:return{minX:v,maxX:B,rangeX:q,minY:L,maxY:Q,rangeY:K}}}var na,pa,ma,la;if(U==null)U="all";switch(U.toLowerCase()){case "minx":na=Z&&(Z.minX&&Z.minX|0||Z|0)||0;break;case "maxx":pa=Z&&(Z.maxX&&Z.maxX|0||Z|0)||0;break;case "rangex":na=Z&&Z.minX&&Z.minX|0||0;pa=Z&&Z.maxX&&Z.maxX|0||0;break;case "miny":ma=
+Z&&(Z.minY&&Z.minY|0||Z|0)||0;break;case "maxy":la=Z&&(Z.maxY&&Z.maxY|0||Z|0)||0;break;case "rangey":ma=Z&&Z.minY&&Z.minY|0||0;la=Z&&Z.maxY&&Z.maxY|0||0;break;default:na=Z&&Z.minX&&Z.minX|0||0;pa=Z&&Z.maxX&&Z.maxX|0||0;ma=Z&&Z.minY&&Z.minY|0||0;la=Z&&Z.maxY&&Z.maxY|0||0}if(na!=null&&v!=na){v=na;q=B-v}if(pa!=null&&B!=pa){B=pa;q=B-v}if(ma!=null&&L!=ma){L=ma;K=Q-L}if(la!=null&&Q!=la){Q=la;K=Q-L}},bind:ca,unbind:function(U){if(a.isFunction(U))for(var Z;(Z=a.inArray(U,ga))!=-1;)ga.splice(Z,1)},destroy:function(){a(document).unbind("mouseup",
+ea).unbind("mousemove",V);c.unbind("mousedown",Y);ga=n=c=null}});n.src=f.arrow&&f.arrow.image;n.w=f.arrow&&f.arrow.width||n.width();n.h=f.arrow&&f.arrow.height||n.height();c.w=f.map&&f.map.width||c.width();c.h=f.map&&f.map.height||c.height();c.bind("mousedown",Y);ca.call(d,function(){var U=0,Z=0,na=c.w,pa=c.h,ma=n.w,la=n.h;setTimeout(function(){if(q>0)U=I==B?na:I/q*na|0;if(K>0)Z=S==Q?pa:S/K*pa|0;if(ma>=na)U=(na>>1)-(ma>>1);else U-=ma>>1;if(la>=pa)Z=(pa>>1)-(la>>1);else Z-=la>>1;n.css({left:U+"px",
+top:Z+"px"})},0)})},g=function(c,f,d,n){var v=this;c=c.find("td.Text input");var B=c.eq(3),q=c.eq(4),L=c.eq(5),Q=c.length>7?c.eq(6):null,K=c.eq(0),I=c.eq(1),S=c.eq(2),R=c.eq(c.length>7?7:6),N=c.length>7?c.eq(8):null,ga=function(ja){if(!(ja.target.value==""&&ja.target!=R.get(0)&&(d!=null&&ja.target!=d.get(0)||d==null))){if(!V(ja))return ja;switch(ja.target){case B.get(0):switch(ja.keyCode){case 38:B.val(ea.call(v,(B.val()<<0)+1,0,255));f.val("r",B.val(),ja.target);return false;case 40:B.val(ea.call(v,
+(B.val()<<0)-1,0,255));f.val("r",B.val(),ja.target);return false}break;case q.get(0):switch(ja.keyCode){case 38:q.val(ea.call(v,(q.val()<<0)+1,0,255));f.val("g",q.val(),ja.target);return false;case 40:q.val(ea.call(v,(q.val()<<0)-1,0,255));f.val("g",q.val(),ja.target);return false}break;case L.get(0):switch(ja.keyCode){case 38:L.val(ea.call(v,(L.val()<<0)+1,0,255));f.val("b",L.val(),ja.target);return false;case 40:L.val(ea.call(v,(L.val()<<0)-1,0,255));f.val("b",L.val(),ja.target);return false}break;
+case Q&&Q.get(0):switch(ja.keyCode){case 38:Q.val(ea.call(v,parseFloat(Q.val())+1,0,100));f.val("a",Math.precision(Q.val()*255/100,n),ja.target);return false;case 40:Q.val(ea.call(v,parseFloat(Q.val())-1,0,100));f.val("a",Math.precision(Q.val()*255/100,n),ja.target);return false}break;case K.get(0):switch(ja.keyCode){case 38:K.val(ea.call(v,(K.val()<<0)+1,0,360));f.val("h",K.val(),ja.target);return false;case 40:K.val(ea.call(v,(K.val()<<0)-1,0,360));f.val("h",K.val(),ja.target);return false}break;
+case I.get(0):switch(ja.keyCode){case 38:I.val(ea.call(v,(I.val()<<0)+1,0,100));f.val("s",I.val(),ja.target);return false;case 40:I.val(ea.call(v,(I.val()<<0)-1,0,100));f.val("s",I.val(),ja.target);return false}break;case S.get(0):switch(ja.keyCode){case 38:S.val(ea.call(v,(S.val()<<0)+1,0,100));f.val("v",S.val(),ja.target);return false;case 40:S.val(ea.call(v,(S.val()<<0)-1,0,100));f.val("v",S.val(),ja.target);return false}}}},oa=function(ja){if(!(ja.target.value==""&&ja.target!=R.get(0)&&(d!=null&&
+ja.target!=d.get(0)||d==null))){if(!V(ja))return ja;switch(ja.target){case B.get(0):B.val(ea.call(v,B.val(),0,255));f.val("r",B.val(),ja.target);break;case q.get(0):q.val(ea.call(v,q.val(),0,255));f.val("g",q.val(),ja.target);break;case L.get(0):L.val(ea.call(v,L.val(),0,255));f.val("b",L.val(),ja.target);break;case Q&&Q.get(0):Q.val(ea.call(v,Q.val(),0,100));f.val("a",Math.precision(Q.val()*255/100,n),ja.target);break;case K.get(0):K.val(ea.call(v,K.val(),0,360));f.val("h",K.val(),ja.target);break;
+case I.get(0):I.val(ea.call(v,I.val(),0,100));f.val("s",I.val(),ja.target);break;case S.get(0):S.val(ea.call(v,S.val(),0,100));f.val("v",S.val(),ja.target);break;case R.get(0):R.val(R.val().replace(/[^a-fA-F0-9]/g,"").toLowerCase().substring(0,6));d&&d.val(R.val());f.val("hex",R.val()!=""?R.val():null,ja.target);break;case d&&d.get(0):d.val(d.val().replace(/[^a-fA-F0-9]/g,"").toLowerCase().substring(0,6));R.val(d.val());f.val("hex",d.val()!=""?d.val():null,ja.target);break;case N&&N.get(0):N.val(N.val().replace(/[^a-fA-F0-9]/g,
+"").toLowerCase().substring(0,2));f.val("a",N.val()!=null?parseInt(N.val(),16):null,ja.target)}}},Y=function(ja){if(f.val()!=null)switch(ja.target){case B.get(0):B.val(f.val("r"));break;case q.get(0):q.val(f.val("g"));break;case L.get(0):L.val(f.val("b"));break;case Q&&Q.get(0):Q.val(Math.precision(f.val("a")*100/255,n));break;case K.get(0):K.val(f.val("h"));break;case I.get(0):I.val(f.val("s"));break;case S.get(0):S.val(f.val("v"));break;case R.get(0):case d&&d.get(0):R.val(f.val("hex"));d&&d.val(f.val("hex"));
+break;case N&&N.get(0):N.val(f.val("ahex").substring(6))}},V=function(ja){switch(ja.keyCode){case 9:case 16:case 29:case 37:case 39:return false;case "c".charCodeAt():case "v".charCodeAt():if(ja.ctrlKey)return false}return true},ea=function(ja,ca,U){if(ja==""||isNaN(ja))return ca;if(ja>U)return U;if(ja<ca)return ca;return ja},Ba=function(ja,ca){var U=ja.val("all");if(ca!=B.get(0))B.val(U!=null?U.r:"");if(ca!=q.get(0))q.val(U!=null?U.g:"");if(ca!=L.get(0))L.val(U!=null?U.b:"");if(Q&&ca!=Q.get(0))Q.val(U!=
+null?Math.precision(U.a*100/255,n):"");if(ca!=K.get(0))K.val(U!=null?U.h:"");if(ca!=I.get(0))I.val(U!=null?U.s:"");if(ca!=S.get(0))S.val(U!=null?U.v:"");if(ca!=R.get(0)&&(d&&ca!=d.get(0)||!d))R.val(U!=null?U.hex:"");if(d&&ca!=d.get(0)&&ca!=R.get(0))d.val(U!=null?U.hex:"");if(N&&ca!=N.get(0))N.val(U!=null?U.ahex.substring(6):"")};a.extend(true,v,{destroy:function(){B.add(q).add(L).add(Q).add(K).add(I).add(S).add(R).add(d).add(N).unbind("keyup",oa).unbind("blur",Y);B.add(q).add(L).add(Q).add(K).add(I).add(S).unbind("keydown",
+ga);f.unbind(Ba);N=R=S=I=K=Q=L=q=B=null}});B.add(q).add(L).add(Q).add(K).add(I).add(S).add(R).add(d).add(N).bind("keyup",oa).bind("blur",Y);B.add(q).add(L).add(Q).add(K).add(I).add(S).bind("keydown",ga);f.bind(Ba)};a.jPicker={List:[],Color:function(c){var f=this,d,n,v,B,q,L,Q,K=[],I=function(R){for(var N=0;N<K.length;N++)K[N].call(f,f,R)},S=function(R,N,ga){if(N===undefined){if(R===undefined||R==null||R=="")R="all";if(d==null)return null;switch(R.toLowerCase()){case "ahex":return w.rgbaToHex({r:d,
+g:n,b:v,a:B});case "hex":return S("ahex").substring(0,6);case "all":return{r:d,g:n,b:v,a:B,h:q,s:L,v:Q,hex:S.call(f,"hex"),ahex:S.call(f,"ahex")};default:N={};for(var oa=0;oa<R.length;oa++)switch(R.charAt(oa)){case "r":if(R.length==1)N=d;else N.r=d;break;case "g":if(R.length==1)N=n;else N.g=n;break;case "b":if(R.length==1)N=v;else N.b=v;break;case "a":if(R.length==1)N=B;else N.a=B;break;case "h":if(R.length==1)N=q;else N.h=q;break;case "s":if(R.length==1)N=L;else N.s=L;break;case "v":if(R.length==
+1)N=Q;else N.v=Q}return N=={}?S.call(f,"all"):N}}if(!(ga!=null&&ga==f)){var Y=false;if(R==null)R="";if(N==null){if(d!=null){d=null;Y=true}if(n!=null){n=null;Y=true}if(v!=null){v=null;Y=true}if(B!=null){B=null;Y=true}if(q!=null){q=null;Y=true}if(L!=null){L=null;Y=true}if(Q!=null){Q=null;Y=true}Y&&I.call(f,ga||f)}else switch(R.toLowerCase()){case "ahex":case "hex":N=w.hexToRgba(N&&(N.ahex||N.hex)||N||"00000000");S.call(f,"rgba",{r:N.r,g:N.g,b:N.b,a:R=="ahex"?N.a:B!=null?B:255},ga);break;default:if(N&&
+(N.ahex!=null||N.hex!=null)){S.call(f,"ahex",N.ahex||N.hex||"00000000",ga);break}var V={},ea=false,Ba=false;if(N.r!==undefined&&!R.indexOf("r")==-1)R+="r";if(N.g!==undefined&&!R.indexOf("g")==-1)R+="g";if(N.b!==undefined&&!R.indexOf("b")==-1)R+="b";if(N.a!==undefined&&!R.indexOf("a")==-1)R+="a";if(N.h!==undefined&&!R.indexOf("h")==-1)R+="h";if(N.s!==undefined&&!R.indexOf("s")==-1)R+="s";if(N.v!==undefined&&!R.indexOf("v")==-1)R+="v";for(oa=0;oa<R.length;oa++)switch(R.charAt(oa)){case "r":if(Ba)continue;
+ea=true;V.r=N&&N.r&&N.r|0||N&&N|0||0;if(V.r<0)V.r=0;else if(V.r>255)V.r=255;if(d!=V.r){d=V.r;Y=true}break;case "g":if(Ba)continue;ea=true;V.g=N&&N.g&&N.g|0||N&&N|0||0;if(V.g<0)V.g=0;else if(V.g>255)V.g=255;if(n!=V.g){n=V.g;Y=true}break;case "b":if(Ba)continue;ea=true;V.b=N&&N.b&&N.b|0||N&&N|0||0;if(V.b<0)V.b=0;else if(V.b>255)V.b=255;if(v!=V.b){v=V.b;Y=true}break;case "a":V.a=N&&N.a!=null?N.a|0:N!=null?N|0:255;if(V.a<0)V.a=0;else if(V.a>255)V.a=255;if(B!=V.a){B=V.a;Y=true}break;case "h":if(ea)continue;
+Ba=true;V.h=N&&N.h&&N.h|0||N&&N|0||0;if(V.h<0)V.h=0;else if(V.h>360)V.h=360;if(q!=V.h){q=V.h;Y=true}break;case "s":if(ea)continue;Ba=true;V.s=N&&N.s!=null?N.s|0:N!=null?N|0:100;if(V.s<0)V.s=0;else if(V.s>100)V.s=100;if(L!=V.s){L=V.s;Y=true}break;case "v":if(ea)continue;Ba=true;V.v=N&&N.v!=null?N.v|0:N!=null?N|0:100;if(V.v<0)V.v=0;else if(V.v>100)V.v=100;if(Q!=V.v){Q=V.v;Y=true}}if(Y){if(ea){d=d||0;n=n||0;v=v||0;N=w.rgbToHsv({r:d,g:n,b:v});q=N.h;L=N.s;Q=N.v}else if(Ba){q=q||0;L=L!=null?L:100;Q=Q!=
+null?Q:100;N=w.hsvToRgb({h:q,s:L,v:Q});d=N.r;n=N.g;v=N.b}B=B!=null?B:255;I.call(f,ga||f)}}}};a.extend(true,f,{val:S,bind:function(R){a.isFunction(R)&&K.push(R)},unbind:function(R){if(a.isFunction(R))for(var N;(N=a.inArray(R,K))!=-1;)K.splice(N,1)},destroy:function(){K=null}});if(c)if(c.ahex!=null)S("ahex",c);else if(c.hex!=null)S((c.a!=null?"a":"")+"hex",c.a!=null?{ahex:c.hex+w.intToHex(c.a)}:c);else if(c.r!=null&&c.g!=null&&c.b!=null)S("rgb"+(c.a!=null?"a":""),c);else if(c.h!=null&&c.s!=null&&c.v!=
+null)S("hsv"+(c.a!=null?"a":""),c)},ColorMethods:{hexToRgba:function(c){c=this.validateHex(c);if(c=="")return{r:null,g:null,b:null,a:null};var f="00",d="00",n="00",v="255";if(c.length==6)c+="ff";if(c.length>6){f=c.substring(0,2);d=c.substring(2,4);n=c.substring(4,6);v=c.substring(6,c.length)}else{if(c.length>4){f=c.substring(4,c.length);c=c.substring(0,4)}if(c.length>2){d=c.substring(2,c.length);c=c.substring(0,2)}if(c.length>0)n=c.substring(0,c.length)}return{r:this.hexToInt(f),g:this.hexToInt(d),
+b:this.hexToInt(n),a:this.hexToInt(v)}},validateHex:function(c){if(typeof c=="object")return"";c=c.toLowerCase().replace(/[^a-f0-9]/g,"");if(c.length>8)c=c.substring(0,8);return c},rgbaToHex:function(c){return this.intToHex(c.r)+this.intToHex(c.g)+this.intToHex(c.b)+this.intToHex(c.a)},intToHex:function(c){c=(c|0).toString(16);if(c.length==1)c="0"+c;return c.toLowerCase()},hexToInt:function(c){return parseInt(c,16)},rgbToHsv:function(c){var f=c.r/255,d=c.g/255;c=c.b/255;var n={h:0,s:0,v:0},v=0,B=
+0;if(f>=d&&f>=c){B=f;v=d>c?c:d}else if(d>=c&&d>=f){B=d;v=f>c?c:f}else{B=c;v=d>f?f:d}n.v=B;n.s=B?(B-v)/B:0;if(n.s){v=B-v;n.h=f==B?(d-c)/v:d==B?2+(c-f)/v:4+(f-d)/v;n.h=parseInt(n.h*60);if(n.h<0)n.h+=360}else n.h=0;n.s=n.s*100|0;n.v=n.v*100|0;return n},hsvToRgb:function(c){var f={r:0,g:0,b:0,a:100},d=c.h,n=c.s;c=c.v;if(n==0)f.r=c==0?f.g=f.b=0:f.g=f.b=c*255/100|0;else{if(d==360)d=0;d/=60;n/=100;c/=100;var v=d|0,B=d-v;d=c*(1-n);var q=c*(1-n*B);n=c*(1-n*(1-B));switch(v){case 0:f.r=c;f.g=n;f.b=d;break;case 1:f.r=
+q;f.g=c;f.b=d;break;case 2:f.r=d;f.g=c;f.b=n;break;case 3:f.r=d;f.g=q;f.b=c;break;case 4:f.r=n;f.g=d;f.b=c;break;case 5:f.r=c;f.g=d;f.b=q}f.r=f.r*255|0;f.g=f.g*255|0;f.b=f.b*255|0}return f}}};var b=a.jPicker.Color,p=a.jPicker.List,w=a.jPicker.ColorMethods;a.fn.jPicker=function(c){var f=arguments;return this.each(function(){var d=this,n=a.extend(true,{},a.fn.jPicker.defaults,c);if(a(d).get(0).nodeName.toLowerCase()=="input"){a.extend(true,n,{window:{bindToInput:true,expandable:true,input:a(d)}});if(a(d).val()==
+""){n.color.active=new b({hex:null});n.color.current=new b({hex:null})}else if(w.validateHex(a(d).val())){n.color.active=new b({hex:a(d).val(),a:n.color.active.val("a")});n.color.current=new b({hex:a(d).val(),a:n.color.active.val("a")})}}if(n.window.expandable)a(d).after('<span class="jPicker"><span class="Icon"><span class="Color">&nbsp;</span><span class="Alpha">&nbsp;</span><span class="Image" title="Click To Open Color Picker">&nbsp;</span><span class="Container">&nbsp;</span></span></span>');
+else n.window.liveUpdate=false;var v=parseFloat(navigator.appVersion.split("MSIE")[1])<7&&document.body.filters,B=null,q=null,L=null,Q=null,K=null,I=null,S=null,R=null,N=null,ga=null,oa=null,Y=null,V=null,ea=null,Ba=null,ja=null,ca=null,U=null,Z=null,na=null,pa=null,ma=null,la=null,ya=null,za=null,Ja=null,Ia=null,Ha=null,Ma=function(M){var P=ka.active,da=P.val("hex"),Ea,Oa;n.color.mode=M;switch(M){case "h":setTimeout(function(){Ta.call(d,q,"transparent");Fa.call(d,Q,0);ta.call(d,Q,100);Fa.call(d,
+K,260);ta.call(d,K,100);Ta.call(d,L,"transparent");Fa.call(d,S,0);ta.call(d,S,100);Fa.call(d,R,260);ta.call(d,R,100);Fa.call(d,N,260);ta.call(d,N,100);Fa.call(d,ga,260);ta.call(d,ga,100);Fa.call(d,Y,260);ta.call(d,Y,100)},0);V.range("all",{minX:0,maxX:100,minY:0,maxY:100});ea.range("rangeY",{minY:0,maxY:360});if(P.val("ahex")==null)break;V.val("xy",{x:P.val("s"),y:100-P.val("v")},V);ea.val("y",360-P.val("h"),ea);break;case "s":setTimeout(function(){Ta.call(d,q,"transparent");Fa.call(d,Q,-260);Fa.call(d,
+K,-520);Fa.call(d,S,-260);Fa.call(d,R,-520);Fa.call(d,Y,260);ta.call(d,Y,100)},0);V.range("all",{minX:0,maxX:360,minY:0,maxY:100});ea.range("rangeY",{minY:0,maxY:100});if(P.val("ahex")==null)break;V.val("xy",{x:P.val("h"),y:100-P.val("v")},V);ea.val("y",100-P.val("s"),ea);break;case "v":setTimeout(function(){Ta.call(d,q,"000000");Fa.call(d,Q,-780);Fa.call(d,K,260);Ta.call(d,L,da);Fa.call(d,S,-520);Fa.call(d,R,260);ta.call(d,R,100);Fa.call(d,Y,260);ta.call(d,Y,100)},0);V.range("all",{minX:0,maxX:360,
+minY:0,maxY:100});ea.range("rangeY",{minY:0,maxY:100});if(P.val("ahex")==null)break;V.val("xy",{x:P.val("h"),y:100-P.val("s")},V);ea.val("y",100-P.val("v"),ea);break;case "r":Ea=-1040;Oa=-780;V.range("all",{minX:0,maxX:255,minY:0,maxY:255});ea.range("rangeY",{minY:0,maxY:255});if(P.val("ahex")==null)break;V.val("xy",{x:P.val("b"),y:255-P.val("g")},V);ea.val("y",255-P.val("r"),ea);break;case "g":Ea=-1560;Oa=-1820;V.range("all",{minX:0,maxX:255,minY:0,maxY:255});ea.range("rangeY",{minY:0,maxY:255});
+if(P.val("ahex")==null)break;V.val("xy",{x:P.val("b"),y:255-P.val("r")},V);ea.val("y",255-P.val("g"),ea);break;case "b":Ea=-2080;Oa=-2860;V.range("all",{minX:0,maxX:255,minY:0,maxY:255});ea.range("rangeY",{minY:0,maxY:255});if(P.val("ahex")==null)break;V.val("xy",{x:P.val("r"),y:255-P.val("g")},V);ea.val("y",255-P.val("b"),ea);break;case "a":setTimeout(function(){Ta.call(d,q,"transparent");Fa.call(d,Q,-260);Fa.call(d,K,-520);Fa.call(d,S,260);Fa.call(d,R,260);ta.call(d,R,100);Fa.call(d,Y,0);ta.call(d,
+Y,100)},0);V.range("all",{minX:0,maxX:360,minY:0,maxY:100});ea.range("rangeY",{minY:0,maxY:255});if(P.val("ahex")==null)break;V.val("xy",{x:P.val("h"),y:100-P.val("v")},V);ea.val("y",255-P.val("a"),ea);break;default:throw"Invalid Mode";}switch(M){case "s":case "v":case "a":setTimeout(function(){ta.call(d,Q,100);ta.call(d,S,100);Fa.call(d,N,260);ta.call(d,N,100);Fa.call(d,ga,260);ta.call(d,ga,100)},0);break;case "r":case "g":case "b":setTimeout(function(){Ta.call(d,q,"transparent");Ta.call(d,L,"transparent");
+ta.call(d,S,100);ta.call(d,Q,100);Fa.call(d,Q,Ea);Fa.call(d,K,Ea-260);Fa.call(d,S,Oa-780);Fa.call(d,R,Oa-520);Fa.call(d,N,Oa);Fa.call(d,ga,Oa-260);Fa.call(d,Y,260);ta.call(d,Y,100)},0)}P.val("ahex")!=null&&Da.call(d,P)},Da=function(M,P){if(P==null||P!=ea&&P!=V)va.call(d,M,P);setTimeout(function(){kb.call(d,M);vb.call(d,M);cb.call(d,M)},0)},wa=function(M,P){var da=ka.active;if(!(P!=V&&da.val()==null)){var Ea=M.val("all");switch(n.color.mode){case "h":da.val("sv",{s:Ea.x,v:100-Ea.y},P);break;case "s":case "a":da.val("hv",
+{h:Ea.x,v:100-Ea.y},P);break;case "v":da.val("hs",{h:Ea.x,s:100-Ea.y},P);break;case "r":da.val("gb",{g:255-Ea.y,b:Ea.x},P);break;case "g":da.val("rb",{r:255-Ea.y,b:Ea.x},P);break;case "b":da.val("rg",{r:Ea.x,g:255-Ea.y},P)}}},ra=function(M,P){var da=ka.active;if(!(P!=ea&&da.val()==null))switch(n.color.mode){case "h":da.val("h",{h:360-M.val("y")},P);break;case "s":da.val("s",{s:100-M.val("y")},P);break;case "v":da.val("v",{v:100-M.val("y")},P);break;case "r":da.val("r",{r:255-M.val("y")},P);break;
+case "g":da.val("g",{g:255-M.val("y")},P);break;case "b":da.val("b",{b:255-M.val("y")},P);break;case "a":da.val("a",255-M.val("y"),P)}},va=function(M,P){if(P!=V)switch(n.color.mode){case "h":var da=M.val("sv");V.val("xy",{x:da!=null?da.s:100,y:100-(da!=null?da.v:100)},P);break;case "s":case "a":da=M.val("hv");V.val("xy",{x:da&&da.h||0,y:100-(da!=null?da.v:100)},P);break;case "v":da=M.val("hs");V.val("xy",{x:da&&da.h||0,y:100-(da!=null?da.s:100)},P);break;case "r":da=M.val("bg");V.val("xy",{x:da&&
+da.b||0,y:255-(da&&da.g||0)},P);break;case "g":da=M.val("br");V.val("xy",{x:da&&da.b||0,y:255-(da&&da.r||0)},P);break;case "b":da=M.val("rg");V.val("xy",{x:da&&da.r||0,y:255-(da&&da.g||0)},P)}if(P!=ea)switch(n.color.mode){case "h":ea.val("y",360-(M.val("h")||0),P);break;case "s":da=M.val("s");ea.val("y",100-(da!=null?da:100),P);break;case "v":da=M.val("v");ea.val("y",100-(da!=null?da:100),P);break;case "r":ea.val("y",255-(M.val("r")||0),P);break;case "g":ea.val("y",255-(M.val("g")||0),P);break;case "b":ea.val("y",
+255-(M.val("b")||0),P);break;case "a":da=M.val("a");ea.val("y",255-(da!=null?da:255),P)}},kb=function(M){try{var P=M.val("all");na.css({backgroundColor:P&&"#"+P.hex||"transparent"});ta.call(d,na,P&&Math.precision(P.a*100/255,4)||0)}catch(da){}},vb=function(M){switch(n.color.mode){case "h":Ta.call(d,q,(new b({h:M.val("h")||0,s:100,v:100})).val("hex"));break;case "s":case "a":var P=M.val("s");ta.call(d,K,100-(P!=null?P:100));break;case "v":P=M.val("v");ta.call(d,Q,P!=null?P:100);break;case "r":ta.call(d,
+K,Math.precision((M.val("r")||0)/255*100,4));break;case "g":ta.call(d,K,Math.precision((M.val("g")||0)/255*100,4));break;case "b":ta.call(d,K,Math.precision((M.val("b")||0)/255*100))}M=M.val("a");ta.call(d,I,Math.precision((255-(M||0))*100/255,4))},cb=function(M){switch(n.color.mode){case "h":var P=M.val("a");ta.call(d,oa,Math.precision((255-(P||0))*100/255,4));break;case "s":P=M.val("hva");var da=new b({h:P&&P.h||0,s:100,v:P!=null?P.v:100});Ta.call(d,L,da.val("hex"));ta.call(d,R,100-(P!=null?P.v:
+100));ta.call(d,oa,Math.precision((255-(P&&P.a||0))*100/255,4));break;case "v":P=M.val("hsa");da=new b({h:P&&P.h||0,s:P!=null?P.s:100,v:100});Ta.call(d,L,da.val("hex"));ta.call(d,oa,Math.precision((255-(P&&P.a||0))*100/255,4));break;case "r":case "g":case "b":da=P=0;M=M.val("rgba");if(n.color.mode=="r"){P=M&&M.b||0;da=M&&M.g||0}else if(n.color.mode=="g"){P=M&&M.b||0;da=M&&M.r||0}else if(n.color.mode=="b"){P=M&&M.r||0;da=M&&M.g||0}var Ea=da>P?P:da;ta.call(d,R,P>da?Math.precision((P-da)/(255-da)*100,
+4):0);ta.call(d,N,da>P?Math.precision((da-P)/(255-P)*100,4):0);ta.call(d,ga,Math.precision(Ea/255*100,4));ta.call(d,oa,Math.precision((255-(M&&M.a||0))*100/255,4));break;case "a":P=M.val("a");Ta.call(d,L,M.val("hex")||"000000");ta.call(d,oa,P!=null?0:100);ta.call(d,Y,P!=null?100:0)}},Ta=function(M,P){M.css({backgroundColor:P&&P.length==6&&"#"+P||"transparent"})},Va=function(M,P){if(v&&(P.indexOf("AlphaBar.png")!=-1||P.indexOf("Bars.png")!=-1||P.indexOf("Maps.png")!=-1)){M.attr("pngSrc",P);M.css({backgroundImage:"none",
+filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+P+"', sizingMethod='scale')"})}else M.css({backgroundImage:"url('"+P+"')"})},Fa=function(M,P){M.css({top:P+"px"})},ta=function(M,P){M.css({visibility:P>0?"visible":"hidden"});if(P>0&&P<100)if(v){var da=M.attr("pngSrc");da!=null&&(da.indexOf("AlphaBar.png")!=-1||da.indexOf("Bars.png")!=-1||da.indexOf("Maps.png")!=-1)?M.css({filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+da+"', sizingMethod='scale') progid:DXImageTransform.Microsoft.Alpha(opacity="+
+P+")"}):M.css({opacity:Math.precision(P/100,4)})}else M.css({opacity:Math.precision(P/100,4)});else if(P==0||P==100)if(v){da=M.attr("pngSrc");da!=null&&(da.indexOf("AlphaBar.png")!=-1||da.indexOf("Bars.png")!=-1||da.indexOf("Maps.png")!=-1)?M.css({filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+da+"', sizingMethod='scale')"}):M.css({opacity:""})}else M.css({opacity:""})},$a=function(){ka.active.val("ahex",ka.current.val("ahex"))},Ka=function(){ka.current.val("ahex",ka.active.val("ahex"))},
+Sa=function(M){a(this).parents("tbody:first").find('input:radio[value!="'+M.target.value+'"]').removeAttr("checked");Ma.call(d,M.target.value)},Ga=function(){$a.call(d)},db=function(){$a.call(d);n.window.expandable&&fb.call(d);a.isFunction(ob)&&ob.call(d,ka.active,la)},lb=function(){Ka.call(d);n.window.expandable&&fb.call(d);a.isFunction(ib)&&ib.call(d,ka.active,ma)},Ua=function(){pb.call(d)},Xa=function(M){var P=M.val("hex");pa.css({backgroundColor:P&&"#"+P||"transparent"});ta.call(d,pa,Math.precision((M.val("a")||
+0)*100/255,4))},wb=function(M){var P=M.val("hex");M=M.val("va");za.css({backgroundColor:P&&"#"+P||"transparent"});ta.call(d,Ja,Math.precision((255-(M&&M.a||0))*100/255,4));if(n.window.bindToInput&&n.window.updateInputColor)n.window.input.css({backgroundColor:P&&"#"+P||"transparent",color:M==null||M.v>75?"#000000":"#ffffff"})},sa=function(M){ja=parseInt(B.css("left"));ca=parseInt(B.css("top"));U=M.pageX;Z=M.pageY;a(document).bind("mousemove",hb).bind("mouseup",eb);M.preventDefault()},hb=function(M){B.css({left:ja-
+(U-M.pageX)+"px",top:ca-(Z-M.pageY)+"px"});n.window.expandable&&!a.support.boxModel&&B.prev().css({left:B.css("left"),top:B.css("top")});M.stopPropagation();M.preventDefault();return false},eb=function(M){a(document).unbind("mousemove",hb).unbind("mouseup",eb);M.stopPropagation();M.preventDefault();return false},sb=function(M){M.preventDefault();M.stopPropagation();ka.active.val("ahex",a(this).attr("title")||null,M.target);return false},ib=a.isFunction(f[1])&&f[1]||null,ab=a.isFunction(f[2])&&f[2]||
+null,ob=a.isFunction(f[3])&&f[3]||null,pb=function(){ka.current.val("ahex",ka.active.val("ahex"));var M=function(){if(!(!n.window.expandable||a.support.boxModel)){var P=B.find("table:first");B.before("<iframe/>");B.prev().css({width:P.width(),height:B.height(),opacity:0,position:"absolute",left:B.css("left"),top:B.css("top")})}};if(n.window.expandable){a(document.body).children("div.jPicker.Container").css({zIndex:10});B.css({zIndex:20})}switch(n.window.effects.type){case "fade":B.fadeIn(n.window.effects.speed.show,
+M);break;case "slide":B.slideDown(n.window.effects.speed.show,M);break;default:B.show(n.window.effects.speed.show,M)}},fb=function(){var M=function(){n.window.expandable&&B.css({zIndex:10});!n.window.expandable||a.support.boxModel||B.prev().remove()};switch(n.window.effects.type){case "fade":B.fadeOut(n.window.effects.speed.hide,M);break;case "slide":B.slideUp(n.window.effects.speed.hide,M);break;default:B.hide(n.window.effects.speed.hide,M)}},tb=function(){var M=n.window,P=M.expandable?a(d).next().find(".Container:first"):
+null;B=M.expandable?a("<div/>"):a(d);B.addClass("jPicker Container");M.expandable&&B.hide();B.get(0).onselectstart=function(xa){if(xa.target.nodeName.toLowerCase()!=="input")return false};var da=ka.active.val("all");if(M.alphaPrecision<0)M.alphaPrecision=0;else if(M.alphaPrecision>2)M.alphaPrecision=2;var Ea='<table class="jPicker" cellpadding="0" cellspacing="0"><tbody>'+(M.expandable?'<tr><td class="Move" colspan="5">&nbsp;</td></tr>':"")+'<tr><td rowspan="9"><h2 class="Title">'+(M.title||aa.text.title)+
+'</h2><div class="Map"><span class="Map1">&nbsp;</span><span class="Map2">&nbsp;</span><span class="Map3">&nbsp;</span><img src="'+ia.clientPath+ia.colorMap.arrow.file+'" class="Arrow"/></div></td><td rowspan="9"><div class="Bar"><span class="Map1">&nbsp;</span><span class="Map2">&nbsp;</span><span class="Map3">&nbsp;</span><span class="Map4">&nbsp;</span><span class="Map5">&nbsp;</span><span class="Map6">&nbsp;</span><img src="'+ia.clientPath+ia.colorBar.arrow.file+'" class="Arrow"/></div></td><td colspan="2" class="Preview"><div class="prev_div">'+
+aa.text.newColor+'<div class="color_preview"><span class="Active" title="'+aa.tooltips.colors.newColor+'">&nbsp;</span><span class="Current" title="'+aa.tooltips.colors.currentColor+'">&nbsp;</span></div></div>'+aa.text.currentColor+'</td><td rowspan="9" class="Button"><input type="button" class="Ok" value="'+aa.text.ok+'" title="'+aa.tooltips.buttons.ok+'"/><input type="button" class="Cancel" value="'+aa.text.cancel+'" title="'+aa.tooltips.buttons.cancel+'"/><div class="Grid">&nbsp;</div></td></tr><tr class="Hue"><td class="Radio"><label title="'+
+aa.tooltips.hue.radio+'"><input type="radio" value="h"'+(n.color.mode=="h"?' checked="checked"':"")+'/>H:</label></td><td class="Text"><input type="text" maxlength="3" value="'+(da!=null?da.h:"")+'" title="'+aa.tooltips.hue.textbox+'"/>&nbsp;\u00ba</td></tr><tr class="Saturation"><td class="Radio"><label title="'+aa.tooltips.saturation.radio+'"><input type="radio" value="s"'+(n.color.mode=="s"?' checked="checked"':"")+'/>S:</label></td><td class="Text"><input type="text" maxlength="3" value="'+(da!=
+null?da.s:"")+'" title="'+aa.tooltips.saturation.textbox+'"/>&nbsp;%</td></tr><tr class="Value"><td class="Radio"><label title="'+aa.tooltips.value.radio+'"><input type="radio" value="v"'+(n.color.mode=="v"?' checked="checked"':"")+'/>V:</label></td><td class="Text"><input type="text" maxlength="3" value="'+(da!=null?da.v:"")+'" title="'+aa.tooltips.value.textbox+'"/>&nbsp;%<br/><br/></td></tr><tr class="Red"><td class="Radio"><label title="'+aa.tooltips.red.radio+'"><input type="radio" value="r"'+
+(n.color.mode=="r"?' checked="checked"':"")+'/>R:</label></td><td class="Text"><input type="text" maxlength="3" value="'+(da!=null?da.r:"")+'" title="'+aa.tooltips.red.textbox+'"/></td></tr><tr class="Green"><td class="Radio"><label title="'+aa.tooltips.green.radio+'"><input type="radio" value="g"'+(n.color.mode=="g"?' checked="checked"':"")+'/>G:</label></td><td class="Text"><input type="text" maxlength="3" value="'+(da!=null?da.g:"")+'" title="'+aa.tooltips.green.textbox+'"/></td></tr><tr class="Blue"><td class="Radio"><label title="'+
+aa.tooltips.blue.radio+'"><input type="radio" value="b"'+(n.color.mode=="b"?' checked="checked"':"")+'/>B:</label></td><td class="Text"><input type="text" maxlength="3" value="'+(da!=null?da.b:"")+'" title="'+aa.tooltips.blue.textbox+'"/></td></tr><tr class="Alpha"><td class="Radio">'+(M.alphaSupport?'<label title="'+aa.tooltips.alpha.radio+'"><input type="radio" value="a"'+(n.color.mode=="a"?' checked="checked"':"")+"/>A:</label>":"&nbsp;")+'</td><td class="Text">'+(M.alphaSupport?'<input type="text" maxlength="'+
+(3+M.alphaPrecision)+'" value="'+(da!=null?Math.precision(da.a*100/255,M.alphaPrecision):"")+'" title="'+aa.tooltips.alpha.textbox+'"/>&nbsp;%':"&nbsp;")+'</td></tr><tr class="Hex"><td colspan="2" class="Text"><label title="'+aa.tooltips.hex.textbox+'">#:<input type="text" maxlength="6" class="Hex" value="'+(da!=null?da.hex:"")+'"/></label>'+(M.alphaSupport?'<input type="text" maxlength="2" class="AHex" value="'+(da!=null?da.ahex.substring(6):"")+'" title="'+aa.tooltips.hex.alpha+'"/></td>':"&nbsp;")+
+"</tr></tbody></table>";if(M.expandable){B.html(Ea);a(document.body).children("div.jPicker.Container").length==0?a(document.body).prepend(B):a(document.body).children("div.jPicker.Container:last").after(B);B.mousedown(function(){a(document.body).children("div.jPicker.Container").css({zIndex:10});B.css({zIndex:20})});B.css({left:M.position.x=="left"?P.offset().left-530-(M.position.y=="center"?25:0)+"px":M.position.x=="center"?P.offset().left-260+"px":M.position.x=="right"?P.offset().left-10+(M.position.y==
+"center"?25:0)+"px":M.position.x=="screenCenter"?(a(document).width()>>1)-260+"px":P.offset().left+parseInt(M.position.x)+"px",position:"absolute",top:M.position.y=="top"?P.offset().top-312+"px":M.position.y=="center"?P.offset().top-156+"px":M.position.y=="bottom"?P.offset().top+25+"px":P.offset().top+parseInt(M.position.y)+"px"})}else{B=a(d);B.html(Ea)}Ea=B.find("tbody:first");q=Ea.find("div.Map:first");L=Ea.find("div.Bar:first");var Oa=q.find("span"),Wa=L.find("span");Q=Oa.filter(".Map1:first");
+K=Oa.filter(".Map2:first");I=Oa.filter(".Map3:first");S=Wa.filter(".Map1:first");R=Wa.filter(".Map2:first");N=Wa.filter(".Map3:first");ga=Wa.filter(".Map4:first");oa=Wa.filter(".Map5:first");Y=Wa.filter(".Map6:first");V=new s(q,{map:{width:ia.colorMap.width,height:ia.colorMap.height},arrow:{image:ia.clientPath+ia.colorMap.arrow.file,width:ia.colorMap.arrow.width,height:ia.colorMap.arrow.height}});V.bind(wa);ea=new s(L,{map:{width:ia.colorBar.width,height:ia.colorBar.height},arrow:{image:ia.clientPath+
+ia.colorBar.arrow.file,width:ia.colorBar.arrow.width,height:ia.colorBar.arrow.height}});ea.bind(ra);Ba=new g(Ea,ka.active,M.expandable&&M.bindToInput?M.input:null,M.alphaPrecision);Oa=da!=null?da.hex:null;var Za=Ea.find(".Preview");Wa=Ea.find(".Button");na=Za.find(".Active:first").css({backgroundColor:Oa&&"#"+Oa||"transparent"});pa=Za.find(".Current:first").css({backgroundColor:Oa&&"#"+Oa||"transparent"}).bind("click",Ga);ta.call(d,pa,Math.precision(ka.current.val("a")*100)/255,4);ma=Wa.find(".Ok:first").bind("click touchstart",
+lb);la=Wa.find(".Cancel:first").bind("click touchstart",db);ya=Wa.find(".Grid:first");setTimeout(function(){Va.call(d,Q,ia.clientPath+"Maps.png");Va.call(d,K,ia.clientPath+"Maps.png");Va.call(d,I,ia.clientPath+"map-opacity.png");Va.call(d,S,ia.clientPath+"Bars.png");Va.call(d,R,ia.clientPath+"Bars.png");Va.call(d,N,ia.clientPath+"Bars.png");Va.call(d,ga,ia.clientPath+"Bars.png");Va.call(d,oa,ia.clientPath+"bar-opacity.png");Va.call(d,Y,ia.clientPath+"AlphaBar.png");Va.call(d,Za.find("div:last"),ia.clientPath+
+"preview-opacity.png")},0);Ea.find("td.Radio input").bind("click  touchstart",Sa);if(ka.quickList&&ka.quickList.length>0){Wa="";for(i=0;i<ka.quickList.length;i++){if((typeof ka.quickList[i]).toString().toLowerCase()=="string")ka.quickList[i]=new b({hex:ka.quickList[i]});var nb=ka.quickList[i].val("a"),Ra=ka.quickList[i].val("ahex");if(!M.alphaSupport&&Ra)Ra=Ra.substring(0,6)+"ff";var mb=ka.quickList[i].val("hex");Wa+='<span class="QuickColor"'+(Ra&&' title="#'+Ra+'"'||"")+' style="background-color:'+
+(mb&&"#"+mb||"")+";"+(mb?"":"background-image:url("+ia.clientPath+"NoColor.png)")+(M.alphaSupport&&nb&&nb<255?";opacity:"+Math.precision(nb/255,4)+";filter:Alpha(opacity="+Math.precision(nb/2.55,4)+")":"")+'">&nbsp;</span>'}Va.call(d,ya,ia.clientPath+"bar-opacity.png");ya.html(Wa);ya.find(".QuickColor").click(sb)}Ma.call(d,n.color.mode);ka.active.bind(Da);a.isFunction(ab)&&ka.active.bind(ab);ka.current.bind(Xa);if(M.expandable){d.icon=P.parents(".Icon:first");za=d.icon.find(".Color:first").css({backgroundColor:Oa&&
+"#"+Oa||"transparent"});Ja=d.icon.find(".Alpha:first");Va.call(d,Ja,ia.clientPath+"bar-opacity.png");ta.call(d,Ja,Math.precision((255-(da!=null?da.a:0))*100/255,4));Ia=d.icon.find(".Image:first").css({backgroundImage:"url('"+ia.clientPath+ia.picker.file+"')"}).bind("click",Ua);if(M.bindToInput&&M.updateInputColor)M.input.css({backgroundColor:Oa&&"#"+Oa||"transparent",color:da==null||da.v>75?"#000000":"#ffffff"});Ha=Ea.find(".Move:first").bind("mousedown",sa);ka.active.bind(wb)}else pb.call(d)},ia=
+n.images,aa=n.localization,ka={active:(typeof n.color.active).toString().toLowerCase()=="string"?new b({ahex:!n.window.alphaSupport&&n.color.active?n.color.active.substring(0,6)+"ff":n.color.active}):new b({ahex:!n.window.alphaSupport&&n.color.active.val("ahex")?n.color.active.val("ahex").substring(0,6)+"ff":n.color.active.val("ahex")}),current:(typeof n.color.active).toString().toLowerCase()=="string"?new b({ahex:!n.window.alphaSupport&&n.color.active?n.color.active.substring(0,6)+"ff":n.color.active}):
+new b({ahex:!n.window.alphaSupport&&n.color.active.val("ahex")?n.color.active.val("ahex").substring(0,6)+"ff":n.color.active.val("ahex")}),quickList:n.color.quickList};a.extend(true,d,{commitCallback:ib,liveCallback:ab,cancelCallback:ob,color:ka,show:pb,hide:fb,destroy:function(){B.find("td.Radio input  touchstart").unbind("click",Sa);pa.unbind("click  touchstart",Ga);la.unbind("click  touchstart",db);ma.unbind("click  touchstart",lb);if(n.window.expandable){Ia.unbind("click",Ua);Ha.unbind("mousedown",
+sa);d.icon=null}B.find(".QuickColor").unbind("click",sb);Y=oa=ga=N=R=S=I=K=Q=L=q=null;V.destroy();V=null;ea.destroy();ea=null;Ba.destroy();ab=ob=ib=ya=la=ma=pa=na=Ba=null;B.html("");for(i=0;i<p.length;i++)p[i]==d&&p.splice(i,1)}});p.push(d);setTimeout(function(){tb.call(d)},0)})};a.fn.jPicker.defaults={window:{title:null,effects:{type:"slide",speed:{show:"slow",hide:"fast"}},position:{x:"screenCenter",y:"top"},expandable:false,liveUpdate:true,alphaSupport:false,alphaPrecision:0,updateInputColor:true},
+color:{mode:"h",active:new b({ahex:"#ffcc00ff"}),quickList:[new b({h:360,s:33,v:100}),new b({h:360,s:66,v:100}),new b({h:360,s:100,v:100}),new b({h:360,s:100,v:75}),new b({h:360,s:100,v:50}),new b({h:180,s:0,v:100}),new b({h:30,s:33,v:100}),new b({h:30,s:66,v:100}),new b({h:30,s:100,v:100}),new b({h:30,s:100,v:75}),new b({h:30,s:100,v:50}),new b({h:180,s:0,v:90}),new b({h:60,s:33,v:100}),new b({h:60,s:66,v:100}),new b({h:60,s:100,v:100}),new b({h:60,s:100,v:75}),new b({h:60,s:100,v:50}),new b({h:180,
+s:0,v:80}),new b({h:90,s:33,v:100}),new b({h:90,s:66,v:100}),new b({h:90,s:100,v:100}),new b({h:90,s:100,v:75}),new b({h:90,s:100,v:50}),new b({h:180,s:0,v:70}),new b({h:120,s:33,v:100}),new b({h:120,s:66,v:100}),new b({h:120,s:100,v:100}),new b({h:120,s:100,v:75}),new b({h:120,s:100,v:50}),new b({h:180,s:0,v:60}),new b({h:150,s:33,v:100}),new b({h:150,s:66,v:100}),new b({h:150,s:100,v:100}),new b({h:150,s:100,v:75}),new b({h:150,s:100,v:50}),new b({h:180,s:0,v:50}),new b({h:180,s:33,v:100}),new b({h:180,
+s:66,v:100}),new b({h:180,s:100,v:100}),new b({h:180,s:100,v:75}),new b({h:180,s:100,v:50}),new b({h:180,s:0,v:40}),new b({h:210,s:33,v:100}),new b({h:210,s:66,v:100}),new b({h:210,s:100,v:100}),new b({h:210,s:100,v:75}),new b({h:210,s:100,v:50}),new b({h:180,s:0,v:30}),new b({h:240,s:33,v:100}),new b({h:240,s:66,v:100}),new b({h:240,s:100,v:100}),new b({h:240,s:100,v:75}),new b({h:240,s:100,v:50}),new b({h:180,s:0,v:20}),new b({h:270,s:33,v:100}),new b({h:270,s:66,v:100}),new b({h:270,s:100,v:100}),
+new b({h:270,s:100,v:75}),new b({h:270,s:100,v:50}),new b({h:180,s:0,v:10}),new b({h:300,s:33,v:100}),new b({h:300,s:66,v:100}),new b({h:300,s:100,v:100}),new b({h:300,s:100,v:75}),new b({h:300,s:100,v:50}),new b({h:180,s:0,v:0}),new b({h:330,s:33,v:100}),new b({h:330,s:66,v:100}),new b({h:330,s:100,v:100}),new b({h:330,s:100,v:75}),new b({h:330,s:100,v:50}),new b]},images:{clientPath:"/jPicker/images/",colorMap:{width:256,height:256,arrow:{file:"mappoint.gif",width:15,height:15}},colorBar:{width:20,
+height:256,arrow:{file:"rangearrows.gif",width:20,height:7}},picker:{file:"picker.gif",width:25,height:24}},localization:{text:{title:"Drag Markers To Pick A Color",newColor:"new",currentColor:"current",ok:"OK",cancel:"Cancel"},tooltips:{colors:{newColor:"New Color - Press &ldquo;OK&rdquo; To Commit",currentColor:"Click To Revert To Original Color"},buttons:{ok:"Commit To This Color Selection",cancel:"Cancel And Revert To Original Color"},hue:{radio:"Set To &ldquo;Hue&rdquo; Color Mode",textbox:"Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)"},
+saturation:{radio:"Set To &ldquo;Saturation&rdquo; Color Mode",textbox:"Enter A &ldquo;Saturation&rdquo; Value (0-100%)"},value:{radio:"Set To &ldquo;Value&rdquo; Color Mode",textbox:"Enter A &ldquo;Value&rdquo; Value (0-100%)"},red:{radio:"Set To &ldquo;Red&rdquo; Color Mode",textbox:"Enter A &ldquo;Red&rdquo; Value (0-255)"},green:{radio:"Set To &ldquo;Green&rdquo; Color Mode",textbox:"Enter A &ldquo;Green&rdquo; Value (0-255)"},blue:{radio:"Set To &ldquo;Blue&rdquo; Color Mode",textbox:"Enter A &ldquo;Blue&rdquo; Value (0-255)"},
+alpha:{radio:"Set To &ldquo;Alpha&rdquo; Color Mode",textbox:"Enter A &ldquo;Alpha&rdquo; Value (0-100)"},hex:{textbox:"Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)",alpha:"Enter A &ldquo;Alpha&rdquo; Value (#00-#ff)"}}}}})(jQuery,"1.1.6");(function(a){function s(p){var w=p||window.event,c=[].slice.call(arguments,1),f=0,d=0,n=0;p=a.event.fix(w);p.type="mousewheel";if(w.wheelDelta)f=w.wheelDelta/120;if(w.detail)f=-w.detail/3;n=f;if(w.axis!==undefined&&w.axis===w.HORIZONTAL_AXIS){n=0;d=-1*f}if(w.wheelDeltaY!==undefined)n=w.wheelDeltaY/120;if(w.wheelDeltaX!==undefined)d=-1*w.wheelDeltaX/120;c.unshift(p,f,d,n);return(a.event.dispatch||a.event.handle).apply(this,c)}var g=["DOMMouseScroll","mousewheel"];if(a.event.fixHooks)for(var b=g.length;b;)a.event.fixHooks[g[--b]]=
+a.event.mouseHooks;a.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var p=g.length;p;)this.addEventListener(g[--p],s,false);else this.onmousewheel=s},teardown:function(){if(this.removeEventListener)for(var p=g.length;p;)this.removeEventListener(g[--p],s,false);else this.onmousewheel=null}};a.fn.extend({mousewheel:function(p){return p?this.bind("mousewheel",p):this.trigger("mousewheel")},unmousewheel:function(p){return this.unbind("mousewheel",p)}})})(jQuery);methodDraw.addExtension("eyedropper",function(a){var s=methodDraw.canvas,g=svgedit.history.ChangeElementCommand,b={fillPaint:"red",fillOpacity:1,strokePaint:"black",strokeOpacity:1,strokeWidth:5,strokeDashArray:null,opacity:1,strokeLinecap:"butt",strokeLinejoin:"miter"},p=function(w,c,f){var d=null;if(w.indexOf("url(#")===0){w=(w=s.getRefElem(w))?w.cloneNode(true):$("#"+f+"_color defs *")[0];d={alpha:c};d[w.tagName]=w}else d=w.indexOf("#")===0?{alpha:c,solidColor:w.substr(1)}:{alpha:c,solidColor:"none"};
+return new $.jGraduate.Paint(d)};return{name:"eyedropper",svgicons:"extensions/eyedropper-icon.xml",buttons:[{id:"tool_eyedropper",type:"mode",title:"Eye Dropper Tool",position:8,key:"I",icon:"extensions/eyedropper.png",events:{click:function(){s.setMode("eyedropper")}}}],mouseDown:function(w){var c=s.getMode(),f=w.event;f=f.target.id==="svgroot"?document.getElementById("canvas_background"):f.target;if(c=="eyedropper"&&f){b.fillPaint=f.getAttribute("fill")||"white";b.fillOpacity=f.getAttribute("fill-opacity")||
+1;b.strokePaint=f.getAttribute("stroke")||"none";b.strokeOpacity=f.getAttribute("stroke-opacity")||1;b.strokeWidth=f.getAttribute("stroke-width");b.strokeDashArray=f.getAttribute("stroke-dasharray");b.strokeLinecap=f.getAttribute("stroke-linecap");b.strokeLinejoin=f.getAttribute("stroke-linejoin");b.opacity=f.getAttribute("opacity")||1;w.selectedElements=w.selectedElements.filter(Boolean);if(w.selectedElements.length){if($.inArray(w.selectedElements.nodeName,["g","use"])==-1){var d={},n=function(B,
+q,L){d[q]=B.getAttribute(q);B.setAttribute(q,L)},v=new a.BatchCommand;w.selectedElements.forEach(function(B){b.fillPaint&&n(B,"fill",b.fillPaint);b.fillOpacity&&n(B,"fill-opacity",b.fillOpacity);b.strokePaint&&n(B,"stroke",b.strokePaint);b.strokeOpacity&&n(B,"stroke-opacity",b.strokeOpacity);b.strokeWidth&&n(B,"stroke-width",b.strokeWidth);b.strokeDashArray&&n(B,"stroke-dasharray",b.strokeDashArray);b.opacity&&n(B,"opacity",b.opacity);b.strokeLinecap&&n(B,"stroke-linecap",b.strokeLinecap);b.strokeLinejoin&&
+n(B,"stroke-linejoin",b.strokeLinejoin);v.addSubCommand(new g(B,d));d={}});w=p(b.fillPaint,b.fillOpacity*100,"fill");c=p(b.strokePaint,b.strokeOpacity*100,"stroke");methodDraw.paintBox.fill.update(true);methodDraw.paintBox.stroke.update(true);s.undoMgr.addCommandToHistory(v)}}else{w=p(b.fillPaint,b.fillOpacity*100,"fill");c=p(b.strokePaint,b.strokeOpacity*100,"stroke");methodDraw.paintBox.fill.setPaint(w);methodDraw.paintBox.stroke.setPaint(c)}}}}});methodDraw.addExtension("view_grid",function(a){function s(n){f.attr("width");f.attr("height");var v=svgedit.units.getTypeMap()[methodDraw.curConfig.baseUnit],B=[0.01,0.1,1,10,100,1E3];b.getContentElem().getAttribute("x");var q=w;v=v*n;var L=100/v,Q=1;for(n=0;n<B.length;n++){var K=B[n];Q=K;if(L<=K)break}B=Q*v;q.width=B;q.height=B;v=q.getContext("2d");L=B/10;v.globalAlpha=0.2;v.strokeStyle="#000";for(n=1;n<10;n++){Q=Math.round(L*n)+0.5;v.moveTo(Q,B);v.lineTo(Q,0);v.moveTo(B,Q);v.lineTo(0,Q)}v.stroke();
+v.beginPath();v.globalAlpha=0.5;v.moveTo(0.5,B);v.lineTo(0.5,0);v.moveTo(B,0.5);v.lineTo(0,0.5);v.stroke();q=q.toDataURL("image/png");d.setAttribute("width",B);d.setAttribute("height",B);d.parentNode.setAttribute("width",B);d.parentNode.setAttribute("height",B);b.setHref(d,q)}if(!document.getElementById("canvasGrid")){var g=document.getElementById("svgcanvas").ownerDocument,b=methodDraw.canvas,p=false;a=a.assignAttributes;var w=document.createElement("canvas");$(w).hide().appendTo("body");var c=g.createElementNS("http://www.w3.org/2000/svg",
+"g");a(c,{id:"canvasGrid",width:"100%",height:"100%",x:0,y:0,overflow:"visible",display:"none"});var f=$("#canvas_background");f.after(c);c=g.createElementNS("http://www.w3.org/2000/svg","pattern");a(c,{id:"gridpattern",patternUnits:"userSpaceOnUse",x:0,y:0,width:100,height:100});var d=g.createElementNS("http://www.w3.org/2000/svg","image");a(d,{x:0,y:0,width:100,height:100});c.appendChild(d);$("#svgroot defs").append(c);g=g.createElementNS("http://www.w3.org/2000/svg","rect");a(g,{width:"100%",height:"100%",
+x:0,y:0,"stroke-width":0,stroke:"none",fill:"url(#gridpattern)",style:"pointer-events: none; display:visible;"});$("#canvasGrid").append(g)}return{name:"view_grid",zoomChanged:function(n){p&&s(n)},buttons:[{id:"view_grid",type:"menu",after:"tool_wireframe",panel:"view_menu",title:"View Grid",events:{click:function(){if($("#view_grid").hasClass("push_button_pressed")){methodDraw.curConfig.showGrid=p=false;$("#view_grid").removeClass("push_button_pressed");$("#canvasGrid").attr("display","none")}else{methodDraw.curConfig.showGrid=
+p=true;$("#view_grid").addClass("push_button_pressed");$("#canvasGrid").attr("display","inline");s(b.getZoom())}}}}]}});methodDraw.addExtension("shapes",function(){function a(){$("#shape_buttons").empty();$("#shape_buttons").append(L.buttons)}function s(K){var I=q[K];if(I){L=I;I.buttons.length||g(K,I);a()}else{$("#shape_buttons").html("Loading...");$.getJSON("extensions/shapelib/"+K+".json",function(S){L=q[K]={data:S.data,size:S.size,fill:S.fill};g(K,S);a()})}}function g(K,I){var S=L.size||300,R=L.fill||false,N=S*0.05;N=[-N,-N,S+N*2,S+N*2].join(" ");S=R?0:S/30;S=(new DOMParser).parseFromString('<svg xmlns="http://www.w3.org/2000/svg"><svg viewBox="'+
+N+'"><path fill="#333" stroke="transparent" stroke-width="'+S+'" /></svg></svg>',"text/xml");S.documentElement.setAttribute("width",40);S.documentElement.setAttribute("height",40);S=$(document.importNode(S.documentElement,true));R=I.data;L.buttons=[];for(var ga in R){N=R[ga];var oa=S.clone();oa.find("path").attr("d",N);N=oa.wrap('<div class="tool_button">').parent().attr({id:Q+"_"+ga,title:ga});L.buttons.push(N[0])}}var b,p,w=methodDraw.canvas,c,f,d,n=w.getRootElem(),v={},B={basic:"Basic",object:"Objects",
+symbol:"Symbols",arrow:"Arrows",flowchart:"Flowchart",nature:"Nature",game:"Cards & Chess",dialog_balloon:"Dialog balloons",music:"Music",weather:"Weather &amp; Time",ui:"User Interface",social:"Social Web"},q={basic:{data:{star_points_5:"m1,116.58409l113.82668,0l35.17332,-108.13487l35.17334,108.13487l113.82666,0l-92.08755,66.83026l35.17514,108.13487l-92.08759,-66.83208l-92.08757,66.83208l35.17515,-108.13487l-92.08758,-66.83026z",donut:"m1,150l0,0c0,-82.29042 66.70958,-149 149,-149l0,0c39.51724,0 77.41599,15.69816 105.35889,43.64108c27.94293,27.94293 43.64111,65.84165 43.64111,105.35892l0,0c0,82.29041 -66.70958,149 -149,149l0,0c-82.29041,0 -149,-66.70959 -149,-149zm74.5,0l0,0c0,41.1452 33.35481,74.5 74.5,74.5c41.14522,0 74.5,-33.3548 74.5,-74.5c0,-41.1452 -33.3548,-74.5 -74.5,-74.5l0,0c-41.14519,0 -74.5,33.35481 -74.5,74.5z",
+triangle:"m1,280.375l149,-260.75l149,260.75z",right_triangle:"m1,299l0,-298l298,298z",diamond:"m1,150l149,-149l149,149l-149,149l-149,-149z",pentagon:"m1.00035,116.97758l148.99963,-108.4053l148.99998,108.4053l-56.91267,175.4042l-184.1741,0l-56.91284,-175.4042z",hexagon:"m1,149.99944l63.85715,-127.71428l170.28572,0l63.85713,127.71428l-63.85713,127.71428l-170.28572,0l-63.85715,-127.71428z",septagon1:"m0.99917,191.06511l29.51249,-127.7108l119.48833,-56.83673l119.48836,56.83673l29.51303,127.7108l-82.69087,102.41679l-132.62103,0l-82.69031,-102.41679z",
+heptagon:"m1,88.28171l87.28172,-87.28171l123.43653,0l87.28172,87.28171l0,123.43654l-87.28172,87.28172l-123.43653,0l-87.28172,-87.28172l0,-123.43654z",decagon:"m1,150.00093l28.45646,-88.40318l74.49956,-54.63682l92.08794,0l74.50002,54.63682l28.45599,88.40318l-28.45599,88.40318l-74.50002,54.63681l-92.08794,0l-74.49956,-54.63681l-28.45646,-88.40318z",dodecagon:"m1,110.07421l39.92579,-69.14842l69.14842,-39.92579l79.85159,0l69.14842,39.92579l39.92578,69.14842l0,79.85159l-39.92578,69.14842l-69.14842,39.92578l-79.85159,0l-69.14842,-39.92578l-39.92579,-69.14842l0,-79.85159z",
+trapezoid:"m1,299l55.875,-298l186.25001,0l55.87498,298z",dialog_balloon_1:"m0.99786,35.96579l0,0c0,-19.31077 15.28761,-34.96524 34.14583,-34.96524l15.52084,0l0,0l74.50001,0l139.68748,0c9.05606,0 17.74118,3.68382 24.14478,10.24108c6.40356,6.55726 10.00107,15.45081 10.00107,24.72416l0,87.41311l0,0l0,52.44785l0,0c0,19.31078 -15.2876,34.96524 -34.14584,34.96524l-139.68748,0l-97.32507,88.90848l22.82506,-88.90848l-15.52084,0c-18.85822,0 -34.14583,-15.65446 -34.14583,-34.96524l0,0l0,-52.44785l0,0z",heart:"m150,73c61,-175 300,0 0,225c-300,-225 -61,-400 0,-225z",
+cylinder:"m299.0007,83.77844c0,18.28676 -66.70958,33.11111 -149.00002,33.11111m149.00002,-33.11111l0,0c0,18.28676 -66.70958,33.11111 -149.00002,33.11111c-82.29041,0 -148.99997,-14.82432 -148.99997,-33.11111m0,0l0,0c0,-18.28674 66.70956,-33.1111 148.99997,-33.1111c82.29044,0 149.00002,14.82436 149.00002,33.1111l0,132.44449c0,18.28674 -66.70958,33.11105 -149.00002,33.11105c-82.29041,0 -148.99997,-14.82431 -148.99997,-33.11105z",arrow_up:"m1.49805,149.64304l148.50121,-148.00241l148.50121,148.00241l-74.25061,0l0,148.71457l-148.5012,0l0,-148.71457z",
+arrow_u_turn:"m1.00059,299.00055l0,-167.62497l0,0c0,-72.00411 58.37087,-130.37499 130.375,-130.37499l0,0l0,0c34.57759,0 67.73898,13.7359 92.18906,38.18595c24.45006,24.45005 38.18593,57.61144 38.18593,92.18904l0,18.625l37.24997,0l-74.49995,74.50002l-74.50002,-74.50002l37.25,0l0,-18.625c0,-30.8589 -25.0161,-55.87498 -55.87498,-55.87498l0,0l0,0c-30.85892,0 -55.875,25.01608 -55.875,55.87498l0,167.62497z",arrow_left_up:"m0.99865,224.5l74.50004,-74.5l0,37.25l111.74991,0l0,-111.75l-37.25,0l74.5,-74.5l74.5,74.5l-37.25,0l0,186.25l-186.24989,0l0,37.25l-74.50005,-74.5z",
+plaque:"m-0.00197,49.94376l0,0c27.5829,0 49.94327,-22.36036 49.94327,-49.94327l199.76709,0l0,0c0,27.5829 22.36037,49.94327 49.94325,49.94327l0,199.7671l0,0c-27.58289,0 -49.94325,22.36034 -49.94325,49.94325l-199.76709,0c0,-27.58292 -22.36037,-49.94325 -49.94327,-49.94325z",page:"m249.3298,298.99744l9.9335,-39.73413l39.73413,-9.93355l-49.66763,49.66768l-248.33237,0l0,-298.00001l298.00001,0l0,248.33234",cross:"m0.99844,99.71339l98.71494,0l0,-98.71495l101.26279,0l0,98.71495l98.71495,0l0,101.2628l-98.71495,0l0,98.71494l-101.26279,0l0,-98.71494l-98.71494,0z",
+divide:"m150,0.99785l0,0c25.17819,0 45.58916,20.41097 45.58916,45.58916c0,25.17821 -20.41096,45.58916 -45.58916,45.58916c-25.17822,0 -45.58916,-20.41093 -45.58916,-45.58916c0,-25.1782 20.41093,-45.58916 45.58916,-45.58916zm0,296.25203c-25.17822,0 -45.58916,-20.41095 -45.58916,-45.58917c0,-25.17819 20.41093,-45.58916 45.58916,-45.58916c25.17819,0 45.58916,20.41096 45.58916,45.58916c0,25.17822 -20.41096,45.58917 -45.58916,45.58917zm-134.06754,-193.71518l268.13507,0l0,91.17833l-268.13507,0z",minus:"m0.99887,102.39503l297.49445,0l0,95.2112l-297.49445,0z",
+times:"m1.00089,73.36786l72.36697,-72.36697l76.87431,76.87368l76.87431,-76.87368l72.36765,72.36697l-76.87433,76.87431l76.87433,76.87431l-72.36765,72.36765l-76.87431,-76.87433l-76.87431,76.87433l-72.36697,-72.36765l76.87368,-76.87431l-76.87368,-76.87431z"},buttons:[]}},L=q.basic,Q="shapelib";return{svgicons:"extensions/ext-shapes.xml",buttons:[{id:"tool_shapelib",type:"mode_flyout",position:6,title:"Shape library",icon:"extensions/ext-shapes.png",events:{click:function(){w.setMode(Q)}}}],callback:function(){var K=
+$('<div id="shape_buttons">');$("#tools_shapelib > *").wrapAll(K);var I=$("#tools_shapelib");s("basic");$("#shape_buttons").mouseup(function(R){R=$(R.target).closest("div.tool_button");if(R.length){var N=R.children().clone().attr({width:24,height:24});I.children(":not(.flyout_arrow_horiz)").remove();I.append(N).attr("data-curopt","#"+R[0].id).mouseup();w.setMode(Q);p=R[0].id.substr((Q+"_").length);b=L.data[p];$(".tools_flyout").fadeOut()}});K=$('<div id="shape_cats">');var S="";$.each(B,function(R,
+N){S+="<div data-cat="+R+">"+N+"</div>"});K.html(S).children().bind("mouseup",function(){var R=$(this);R.siblings().removeClass("current");R.addClass("current");s(R.attr("data-cat"));return false});K.children().eq(0).addClass("current");$("#tools_shapelib").prepend(K);I.mouseup(function(){w.setMode(b?Q:"select")});$("#tool_shapelib").remove();K=$("#tools_shapelib").height();$("#tools_shapelib").css({"margin-top":-(K/2),"margin-left":3})},mouseDown:function(K){if(w.getMode()===Q){var I=f=K.start_x;
+K=d=K.start_y;var S=w.getStyle();c=w.addSvgElementFromJson({element:"path",curStyles:true,attr:{d:b,id:w.getNextId(),opacity:S.opacity/2,style:"pointer-events:none"}});c.setAttribute("d",b);if(/[a-z]/.test(b)){b=L.data[p]=w.pathActions.convertPath(c);c.setAttribute("d",b);w.pathActions.fixEnd(c)}c.setAttribute("transform","translate("+I+","+K+") scale(0.005) translate("+-I+","+-K+")");w.recalculateDimensions(c);w.getTransformList(c);v=c.getBBox();totalScale={sx:1,sy:1};return{started:true}}},mouseMove:function(K){if(w.getMode()===
+Q){var I=w.getZoom(),S=K.event,R=K.mouse_x/I,N=K.mouse_y/I;K=w.getTransformList(c);var ga=c.getBBox();I=ga.x;var oa=ga.y,Y=ga.width,V=ga.height,ea=R-f,Ba=N-d,ja={x:Math.min(f,R),y:Math.min(d,N),width:Math.abs(R-f),height:Math.abs(N-d)},ca=ga=0;V=V?(V+Ba)/V:1;Y=Y?(Y+ea)/Y:1;Y=ja.width/v.width;V=ja.height/v.height;Y=Y||1;V=V||1;if(R<f)ga=v.width;if(N<d)ca=v.height;R=n.createSVGTransform();N=n.createSVGTransform();ja=n.createSVGTransform();R.setTranslate(-(I+ga),-(oa+ca));if(S.shiftKey){replaced=true;
+S=Math.min(Math.abs(Y),Math.abs(V));Y=S*(Y<0?-1:1);V=S*(V<0?-1:1);if(totalScale.sx!=totalScale.sy){S=totalScale.sx>totalScale.sy?1:totalScale.sx/totalScale.sy;Y*=totalScale.sy>totalScale.sx?1:totalScale.sy/totalScale.sx;V*=S}}totalScale.sx*=Y;totalScale.sy*=V;N.setScale(Y,V);ja.setTranslate(I+ga,oa+ca);K.appendItem(ja);K.appendItem(N);K.appendItem(R);w.recalculateDimensions(c);v=c.getBBox()}},mouseUp:function(K){if(w.getMode()===Q){if(K.mouse_x==f&&K.mouse_y==d)return{keep:false,element:c,started:false};
+w.setMode("select");return{keep:true,element:c,started:false}}}}});(function(){for(var a=0,s=["ms","moz","webkit","o"],g=0;g<s.length&&!window.requestAnimationFrame;++g){window.requestAnimationFrame=window[s[g]+"RequestAnimationFrame"];window.cancelAnimationFrame=window[s[g]+"CancelAnimationFrame"]||window[s[g]+"CancelRequestAnimationFrame"]}if(!window.requestAnimationFrame)window.requestAnimationFrame=function(b){var p=(new Date).getTime(),w=Math.max(0,16-(p-a)),c=window.setTimeout(function(){b(p+w)},w);a=p+w;return c};if(!window.cancelAnimationFrame)window.cancelAnimationFrame=
+function(b){clearTimeout(b)}})();(function(a){function s(q){var L=q.originalEvent;if(!L.touches||L.targetTouches.length===1&&L.touches.length===1){c.call(this,q);q=a(this);q.bind(v,g);q.bind(n,b)}else{clearTimeout(B);w.call(this)}}function g(q){if(B!=null){var L=q.originalEvent;q=L.changedTouches?L.changedTouches[0].pageX:L.pageX;L=L.changedTouches?L.changedTouches[0].pageY:L.pageY;var Q=a(this).data("taphold.point");q=q-Q.x;L=L-Q.y;if(Math.sqrt(q*q+L*L)>d){clearTimeout(B);w.call(this)}}}function b(){clearTimeout(B);w.call(this)}
+function p(q){w.call(this);a(this).data("taphold.handler").call(this,q)}function w(){B=null;a(this).unbind(v,g);a(this).unbind(n,b)}function c(q){if(B==null){var L=this;B=setTimeout(function(){p.call(L,q)},f);var Q=q.originalEvent,K={};K.x=Q.changedTouches?Q.changedTouches[0].pageX:Q.pageX;K.y=Q.changedTouches?Q.changedTouches[0].pageY:Q.pageY;a(this).data("taphold.point",K)}}var f=1E3,d=5,n="touchend",v="touchmove",B=null;a.event.special.taphold={setup:function(){},add:function(q){a(this).data("taphold.handler",
+q.handler);q.data?a(this).bind("touchstart",q.data,s):a(this).bind("touchstart",s)},remove:function(q){clearTimeout(B);w.call(this);q.data?a(this).unbind("touchstart",q.data,s):a(this).unbind("touchstart",s)},teardown:function(){}}})(jQuery);
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/temp.css
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/temp.css	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/method-draw/temp.css	(revision 29468)
@@ -0,0 +1,2665 @@
+#svg_editor .jPicker .Icon {
+    display: inline-block;
+    height: 24px;
+    position: relative;
+    text-align: left;
+    width: 25px;
+}
+#svg_editor .jPicker .Icon span.Color, #svg_editor .jPicker .Icon span.Alpha {
+    background-position: 2px 2px;
+    display: block;
+    height: 100%;
+    left: 0;
+    position: absolute;
+    top: 0;
+    width: 100%}
+#svg_editor .jPicker .Icon span.Image {
+    background-repeat: no-repeat;
+    cursor: pointer;
+    display: block;
+    height: 100%;
+    left: 0;
+    position: absolute;
+    top: 0;
+    width: 100%}
+#svg_editor .jPicker.Container {
+    z-index: 10;
+}
+
+table#svg_editor .jPicker {
+    width: 545px;
+     z-index: 20;
+}
+
+#svg_editor .jPicker .Move {
+    background-color: #ddd;
+    border-color: #fff #666 #666 #fff;
+    border-style: solid;
+    border-width: 1px;
+    cursor: move;
+    height: 12px;
+    padding: 0;
+}
+#svg_editor .jPicker .Title {
+    display:  none;
+}
+
+#svg_editor .jPicker div.Map {
+    
+  border:  solid #000 1px;
+     
+  cursor: crosshair;
+    
+  height: 260px;
+    
+  margin: 0;
+    
+  overflow: hidden;
+    
+  padding: 0;
+    
+  position: relative;
+    
+  width: 260px;
+    
+}
+#svg_editor .jPicker div[class="Map"] {
+    height: 256px;
+    width: 256px;
+}
+#svg_editor .jPicker div.Bar {
+    border:  solid #000 1px;
+     cursor: n-resize;
+    height: 260px;
+    margin: 0 15px;
+    overflow: hidden;
+    padding: 0;
+    position: relative;
+    width: 24px;
+}
+#svg_editor .jPicker div[class="Bar"] {
+    height: 256px;
+    width: 20px;
+}
+#svg_editor .jPicker .Map .Map1, #svg_editor .jPicker .Map .Map2, #svg_editor .jPicker .Map .Map3, #svg_editor .jPicker .Bar .Map1, #svg_editor .jPicker .Bar .Map2, #svg_editor .jPicker .Bar .Map3, #svg_editor .jPicker .Bar .Map4, #svg_editor .jPicker .Bar .Map5, #svg_editor .jPicker .Bar .Map6 {
+    background-color: transparent;
+    background-image: none;
+    display: block;
+    left: 0;
+    position: absolute;
+    top: 0;
+}
+#svg_editor .jPicker .Map .Map1, #svg_editor .jPicker .Map .Map2, #svg_editor .jPicker .Map .Map3 {
+    height: 2596px;
+    width: 256px;
+}
+#svg_editor .jPicker .Bar .Map1, #svg_editor .jPicker .Bar .Map2, #svg_editor .jPicker .Bar .Map3, #svg_editor .jPicker .Bar .Map4 {
+    height: 3896px;
+    width: 20px;
+}
+#svg_editor .jPicker .Bar .Map5, #svg_editor .jPicker .Bar .Map6 {
+    height: 256px;
+    width: 20px;
+}
+#svg_editor .jPicker .Map .Map1, #svg_editor .jPicker .Map .Map2, #svg_editor .jPicker .Bar .Map6 {
+    background-repeat: no-repeat;
+}
+#svg_editor .jPicker .Map .Map3, #svg_editor .jPicker .Bar .Map5 {
+    background-repeat: repeat;
+}
+#svg_editor .jPicker .Bar .Map1, #svg_editor .jPicker .Bar .Map2, #svg_editor .jPicker .Bar .Map3, #svg_editor .jPicker .Bar .Map4 {
+    background-repeat: repeat-x;
+}
+#svg_editor .jPicker .Map .Arrow {
+    display: block;
+    position: absolute;
+}
+#svg_editor .jPicker .Bar .Arrow {
+    display: block;
+    left: 0;
+    position: absolute;
+}
+#svg_editor .jPicker .Preview {
+    font-size: 9px;
+    text-align: center;
+}
+#svg_editor .jPicker .Preview div.bgt  {
+    height: 62px;
+    margin: 0 auto;
+    padding: 0;
+    width: 62px;
+}
+
+
+#svg_editor .jPicker .Preview div span {
+    border: 1px solid #000;
+    display: block;
+    height: 30px;
+    margin: 0 auto;
+    padding: 0;
+    width: 60px;
+}
+#svg_editor .jPicker .Preview .Active {
+    border-bottom-width: 0;
+}
+#svg_editor .jPicker .Preview .Current {
+    border-top-width: 0;
+    cursor: pointer;
+}
+#svg_editor .jPicker .Button {
+    text-align: center;
+    width: 115px;
+}
+#svg_editor .jPicker .Button input {
+    width: 100px;
+}
+
+#svg_editor .jPicker td.Radio {
+    margin: 0;
+    padding: 0;
+    width: 31px;
+}
+#svg_editor .jPicker td.Radio input {
+    margin: 0 5px 0 0;
+    padding: 0;
+}
+#svg_editor .jPicker td.Text {
+    font-size: 12px!important;
+    height: 22px;
+    margin: 0;
+    padding: 0;
+    text-align: left;
+    width: 70px;
+}
+#svg_editor .jPicker tr.Hex td.Text {
+    width: 100px;
+    color: #666;
+}
+
+#svg_editor .jPicker tr.Hex td.Text span {
+    width: 100px;
+    color: #333;
+}
+#svg_editor .jPicker td.Text input {
+    background-color: #fff;
+    border: 1px inset #aaa;
+    height: 15px;
+    margin: 0 0 0 5px;
+    text-align: left;
+    width: 30px;
+    color: #333;
+}
+
+#svg_editor #color_picker .jPicker tr.Hex td.Text input.Hex {
+    width: 50px;
+    display: inline-block;
+    float: none;
+}
+
+#svg_editor .jPicker tr.Hex td.Text input.AHex {
+    width: 20px;
+    display: none;
+}
+#svg_editor .jPicker .Grid {
+    text-align: center;
+    float: right;
+    width: 108px;
+}
+#svg_editor .jPicker .Grid span.QuickColor {
+    cursor: pointer;
+    display: inline-block;
+    height: 15px;
+    line-height: 15px;
+    margin: 0;
+    padding: 0;
+    width: 18px;
+}
+#svg_editor .jPicker td  {
+  vertical-align:  top;
+}
+#svg_editor .jPicker td.colorsquare  {
+  width:  275px;
+}
+
+#svg_editor .jPicker .prev_div  {
+  margin-top:  -15px;
+}
+
+#svg_editor .jPicker .actions {
+  position: absolute;
+  bottom: 20px;
+  left: 20px;
+  right: 20px;
+}
+
+#svg_editor .jPicker .actions .Ok{
+  position: absolute;
+  top: 0;
+  right: 0px;
+}
+
+#svg_editor .jPicker .actions .Cancel{
+  position: absolute;
+  top: 0;
+  left: 0px;
+}
+
+#svg_editor .jPicker .color_preview {
+  width: 62px;
+  margin: 0 auto;
+}
+/* 
+ * jGraduate Default CSS
+ * 
+ * Copyright (c) 2010 Jeff Schiller
+ * http://blog.codedread.com/
+ *
+ * Copyright (c) 2010 Alexis Deveria
+ * http://a.deveria.com/
+ *
+ * Licensed under the Apache License Version 2
+ */
+
+h2.jGraduate_Title {
+  display: none;
+}
+
+.jGraduate_Picker {
+	position: absolute;
+	padding: 20px;
+}
+
+.jGraduate_tabs li {
+	display: inline-block;
+	padding: 5px 10px;
+	margin-right: 5px;
+	cursor: pointer;
+}
+
+li.jGraduate_tab_current {
+  background: #fff;
+  border-radius: 3px 3px 0 0;
+}
+
+.jGraduate_colPick {
+	display: none;
+}
+
+.jGraduate_gradPick {	
+	display: none;
+	overflow: visible;
+/*	position: relative;*/
+}
+
+.jGraduate_tabs {
+	position: relative;
+	background-color: #ddd;
+	padding: 10px 10px 0 10px;
+	margin: -20px -20px 20px -20px;
+	border-radius: 3px 3px 0 0;
+}
+
+div.jGraduate_Swatch {
+	float: left;
+	margin: 0 15px 0 0;
+}
+div.jGraduate_GradContainer {
+	border: solid #000 1px;
+	background-image: url(../images/map-opacity.png); 
+	background-position: 0px 0px;
+	height: 256px;
+	width: 256px;
+	position: relative;
+}
+
+div.jGraduate_GradContainer div.grad_coord {
+  background: rgba(0,0,0,0.8);
+  border: 2px solid white;
+  border-radius: 15px;
+  -moz-border-radius: 5px;
+  width: 14px;
+  height: 14px;
+  position: absolute;
+  margin: -7px -7px;
+  top: 0;
+  left: 0;
+  text-align: center;
+  font-size: 8px;
+  line-height: 14px;
+  color: white;
+  text-decoration: none;
+  cursor: pointer;
+  -moz-user-select: none;
+  -webkit-user-select: none;
+}
+
+.jGraduate_AlphaArrows {
+	position: absolute;
+	margin-top: -10px;
+	margin-left: 250.5px;
+}
+
+div.jGraduate_Opacity {
+	border: 2px inset #eee;
+	margin-top: 14px;
+	background-color: black;
+	background-image: url(../images/Maps.png);
+	background-position: 0px -2816px;
+	height: 20px;
+	cursor: ew-resize;
+}
+
+div.jGraduate_StopSlider {
+	margin: -10px 0 0 -10px;
+	width: 276px;
+	overflow: visible;
+	background: white;
+	height: 45px;
+	cursor: pointer;
+}
+
+div.jGraduate_StopSection {
+	width: 120px;
+	float: left;
+}
+
+div.jGraduate_StopSection.jGraduate_SpreadMethod {
+  display: none;
+}
+
+input.jGraduate_Ok, input.jGraduate_Cancel {
+	display: block;
+	width: 100px;
+}
+input.jGraduate_Ok {
+	margin: 0 0 5px 0;
+}
+
+.colorBox {
+	float: left;
+	height: 16px;
+	width: 16px;
+	border: 1px solid #808080;
+	cursor: pointer;
+	margin: 4px 4px 4px 30px;
+}
+
+.colorBox + label {
+	float: left;
+	margin-top: 7px;
+}
+
+label.jGraduate_Form_Heading {
+
+  color: #333;
+	padding: 2px;
+	font-weight: bold;
+	font-size: 13px;
+}
+
+div.jGraduate_Form_Section {
+	-moz-border-radius: 5px;
+	-webkit-border-radius: 5px;
+	padding: 15px 5px 5px 5px;
+	margin: 5px 2px;
+	width: 100px;
+	text-align: center;
+	overflow: auto;
+	background: #eee;
+}
+
+div.jGraduate_Form label {
+	padding: 0 2px;
+	color: #333;
+}
+
+div.jGraduate_StopSection input[type=text],
+div.jGraduate_Slider input[type=text] {
+	width: 33px;
+	color: #333;
+}
+
+div.jGraduate_LightBox {
+	position: fixed;
+	top: 0px;
+	left: 0px;
+	right: 0px;
+	bottom: 0px;
+	background-color: #000;
+	opacity: 0.5;
+	display: none;
+}
+
+div.jGraduate_stopPicker {
+  position: absolute;
+  display: none;
+  background: 
+  white;
+  padding: 20px;
+  border-radius: 3px;
+  width: 530px;
+  height: 300px;
+  box-shadow: 0 5px 25px 
+  black;
+}
+
+
+.jGraduate_gradPick {
+	width: 526px;
+}
+
+.jGraduate_gradPick div.jGraduate_Slider {
+	line-height: 160%
+}
+
+.jGraduate_gradPick div.jGraduate_Slider label:last-child {
+	position: absolute;
+	right: 10px;
+	top: 0;
+	color: #999;
+	font-weight: bold;
+}
+
+.jGraduate_gradPick div.jGraduate_Slider label:last-child input {
+  margin: 0 3px 0 0;
+  color: #333;
+}
+
+.jGraduate_gradPick .jGraduate_Form {
+	float: left;
+	width: 270px;
+	position: absolute;
+	left: 284px;
+	width: 266px;
+	height: 200px;
+	top: 195px;
+	margin: -3px 3px 0px 10px;
+	line-height: 200%;
+}
+
+.jGraduate_gradPick .jGraduate_Form label,
+.jGraduate_gradPick .jGraduate_Form input {
+  width: auto;
+  float: left;
+}
+
+.jGraduate_gradPick .jGraduate_Form.jGraduate_rg_field label, .jGraduate_gradPick .jGraduate_Form.jGraduate_rg_field input {
+width: auto;
+float: left;
+font-size: 11px;
+}
+
+.jGraduate_gradPick .jGraduate_Form.jGraduate_rg_field #color_picker_jGraduate_match_ctr {
+  float: none;
+}
+
+.jGraduate_gradPick .jGraduate_Form label {
+  clear: left;
+}
+
+.jGraduate_gradPick .jGraduate_Points {
+	position: static;
+	float: left;
+  margin: 0;
+  width: auto;
+	}
+
+.jGraduate_Colorblocks {
+	display: table;
+	border-spacing: 0 5px;
+}
+
+.jGraduate_colorblock {
+	display: table-row;
+}
+
+.jGraduate_Colorblocks .jGraduate_colorblock > * {
+	display: table-cell;
+	vertical-align: middle;
+	margin: 0;
+	float: none;
+}
+
+.jGraduate_gradPick .jGraduate_Form_Section {
+	padding-top: 9px;
+}
+
+
+.jGraduate_Slider {
+	text-align: center;
+	float: left;
+	width: 100%;
+  position: relative;
+  margin: 5px 0;
+}
+
+.jGraduate_Slider .jGraduate_Form_Section {
+	border: none;
+	width: 250px;
+	padding: 0 2px;
+	overflow: visible;
+}
+
+
+.jGraduate_Slider label.prelabel {
+	width: 40px;
+	text-align: left;
+}
+
+.jGraduate_SliderBar {
+	width: 140px;
+	float: left;
+	margin: 0 5px;
+	border:1px solid #BBB;
+	height:20px;
+	position: relative;
+}
+
+div.jGraduate_Slider input {
+	margin-top: 5px;
+}
+
+div.jGraduate_Slider img {
+	top: 0;
+	left: 0;
+	position: absolute;
+	cursor:ew-resize;
+}
+
+.jPicker .Button .Ok, .jGraduate_Picker .jGraduate_OkCancel .jGraduate_Ok  {
+  -webkit-appearance: none;
+	margin: 0;
+  position: absolute;
+  bottom: 5px;
+  right: 5px;
+}
+
+.jPicker .Button .Cancel, .jGraduate_Picker .jGraduate_OkCancel .jGraduate_Cancel {
+  margin: 0;
+  position: absolute;
+	bottom: 5px;
+	left: 5px;
+}
+/* Comment to prevent wrong concat */
+
+body {
+	background: #3f3f3c;
+	font: 13px/120% 'Lucida Sans', 'Lucida Grande', 'Lucida Sans Unicode', sans-serif;
+	-webkit-touch-callout: none;
+  -webkit-user-select: none;
+  -khtml-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+	margin: 0;
+	padding: 0;
+}
+
+::selection {background: #000; color: #fff; /* Safari */}
+::-moz-selection {background: #000; color: #fff; /* Firefox */}
+
+html, body {
+  	overflow: hidden;
+  	width: 100%;
+  	height: 100%;
+}
+
+::-webkit-scrollbar {
+    width: 5px;
+    height: 5px;
+    background: #444;
+}
+
+::-webkit-scrollbar-track {
+    border-radius: 10px;
+    background: #444;
+}
+
+::-webkit-scrollbar-thumb {
+    border-radius: 10px;
+    background: #666;
+}
+
+::-webkit-scrollbar-corner {
+	background: #444;
+}
+
+#browser-not-supported {
+        font-size: 0.8em;
+        font-family: Verdana, Helvetica, Arial;
+        color: #000000;
+}
+
+ #svgroot {
+	-moz-user-select: none;
+	-webkit-user-select: none;
+	position: absolute;
+	top: 0;
+	left: 0;
+}
+
+#svg_editor {
+	background: #2f2f2c;
+}
+
+ #menu_bar {
+  padding: 0 0 0 50px;
+	background: #2f2f2c;
+	position: relative;
+	z-index: 2;
+}
+
+ #menu_bar.active .menu.open .menu_list {
+  display: block;
+}
+
+ .menu {
+  position: relative;
+  z-index: 5;
+  color: #333;
+  display: inline-block;
+}
+
+ .menu_title {
+  cursor: pointer;
+  display: inline-block;
+  padding: 7px 10px;
+  z-index: 10;
+  color: #fff;
+  position: relative;
+  height: 16px;
+  vertical-align: top;
+}
+
+.touch   .menu_title { 
+	padding: 7px 17px;
+	height: 26px;
+	line-height: 26px;
+}
+
+ .menu .menu_title:hover {
+  background: rgba(255,255,255,0.1);
+}
+
+ .menu_list .separator {
+  margin: 5px 0;
+  border-top: solid #ddd 1px;
+}
+
+ .menu_list {
+  display: none;
+  position: absolute;
+  top: 28px;
+  left: 0;
+  white-space: nowrap;
+  background: white;
+  padding: 7px 0;
+  border-radius: 0 3px 3px 3px;
+  box-shadow: 0 0 20px rgba(0,0,0,0.8);
+}
+
+.touch  .menu_list {
+	top: 38px;
+}
+
+ #menu_bar.active .menu.open .menu_title {
+  background: white;
+  color: #333;
+}
+
+ .menu_list .menu_item {
+  position: relative;
+  overflow: hidden;
+	line-height: 22px;
+	padding: 5px 69px 5px 25px;
+	cursor: default;
+	color: #333;
+}
+
+ .menu_list .menu_item.tool_button {
+  background: transparent;
+  border: none;
+  margin: 0;
+  padding: 5px 55px 5px 25px;
+  height: auto;
+  width: auto;
+}
+
+ .menu_list .menu_item.push_button_pressed:before {
+  content: 'â';
+  position: absolute;
+  display: block;
+  left: 7px;
+  top: 3px;
+  width: 20px;
+  height: 20px;
+}
+
+ .menu_list .menu_item:hover,
+ .menu_list .menu_item.push_button_pressed:hover {
+	background: rgba(0,0,0,0.1);
+	color: #000;
+}
+
+ .menu_list .menu_item.disabled:hover,
+ .menu_list .menu_item.push_button_pressed.disabled:hover {
+	background: transparent;
+	color: #333;
+}
+
+ .menu_list .menu_item.push_button_pressed {
+ background: transparent;
+ border: none; 
+ width: auto;
+ height: auto;
+ margin: 0;
+}
+
+ .menu_list .menu_item span {
+  display: block;
+  position: absolute;
+  right: 10px;
+  padding: 5px;
+  background: rgba(0,0,0, 0.1);
+  top: 6px;
+  height: 10px;
+  text-align: center;
+  font-size: 10px;
+  line-height: 120%;
+}
+
+ #svgcanvas {
+	line-height: normal;
+	display: inline-block;
+	background-color: #A0A0A0;
+	text-align: center;
+	vertical-align: middle;
+	width: 640px;
+	height: 480px;
+	position: relative;
+	background: #3F3F3C;
+}
+
+#rulers > div {
+	position: absolute;
+	background: #2f2f2c;
+	z-index: 1;
+	overflow: hidden;
+  -webkit-font-smoothing: none;
+}
+
+#rulers #ruler_corner {
+	top: 30px;
+	left: 50px;
+	width: 15px;
+	height: 15px;
+  border: solid #444 1px;
+	z-index: 2;
+}
+
+#ruler_x {
+	height: 15px;
+	top: 30px;
+	left: 66px;
+	right: 175px;
+	border-top: solid #444 1px;
+	border-right: solid #444 1px;
+}
+
+#ruler_x_cursor {
+  height: 15px;
+  border-right: dotted #999 1px;
+  position: absolute;
+  background: #2f2f2c;
+}
+
+#ruler_y_cursor {
+  width: 15px;
+  border-top: dotted #999 1px;
+  position: absolute;
+  background: #2f2f2c;
+}
+
+#rulers.moved #ruler_corner,
+#rulers.moved #ruler_x {
+	top: 101px;
+}
+
+#ruler_y {
+	width: 15px;
+	top: 46px;
+	left: 50px;
+	bottom: 40px;
+	border-left: solid #444 1px;
+	border-bottom: solid #444 1px;
+}
+
+#rulers.moved #ruler_y {
+	top: 116px;
+}
+
+
+#ruler_x canvas:first-child {
+	margin-left: -16px;
+}
+
+#ruler_x canvas {
+	float: left;
+}
+
+#ruler_y canvas {
+	margin-top: -16px;
+}
+
+#ruler_x > div, 
+#ruler_y > div {
+	overflow: hidden;
+}
+
+ #palette {
+	display: block;
+	position: absolute;
+	z-index: 2;
+	left: 10px;
+	bottom: 5px;
+	width: 410px;
+	right: 145px;
+	height: 30px;
+}
+
+ .palette_item {
+	height: 20%;
+	width: 5.2%;
+	float: left;
+	cursor: url(../images/eyedropper.png) 0 16, crosshair;
+}
+
+.palette_item.transparent, .palette_item.white, .palette_item.black {
+  background: #fff;
+  position: absolute;
+  width: 10px;
+  height: 10px;
+  left: -10px;
+  top: 0;
+}
+
+.palette_item.transparent {
+	background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNXG14zYAAAAVdEVYdENyZWF0aW9uIFRpbWUAOC8yMi8xMg1cp6sAAABESURBVBiVjdBBCgAgCETRr/e/87SJKFPLnfIcQRMIwMBIShIAvgZzoSrfkzrs8WyF1+kX9r3p8AE7nL7kSpSshN+JEQ8GixkF0mSevgAAAABJRU5ErkJggg==);
+}
+
+.palette_item.black {
+  background: #000;
+  top: 10px;
+}
+
+.palette_item.white {
+  background: #fff;
+  top: 20px;
+}
+
+ #color_tools {
+  position: relative;
+  width: 48px;
+  height: 48px;
+  margin: 6px 6px 0 6px;
+}
+
+.touch  #color_tools {
+	width: auto;
+	height: auto;
+}
+
+#tool_fill {
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: 1;
+}
+
+.touch #tool_fill {
+		position: static;
+		width: 36px;
+		height: 36px;
+		margin-bottom: 10px;
+}
+
+
+#tool_fill.active, #tool_stroke.active {
+  z-index: 2;
+}
+
+#tool_stroke {
+	top: 14px;
+	left: 14px;
+}
+
+.touch #tool_fill.active, .touch #tool_stroke.active {
+	outline: 4px solid #09f;
+}
+
+#tool_fill, #tool_stroke, #tool_canvas {
+  box-shadow: 0 0 0 1px #2f2f2c;
+  position: absolute;
+}
+
+.touch #tool_fill, .touch #tool_stroke, .touch #tool_canvas {
+	position: relative;
+	top: 0;
+	left: 0;
+}
+
+#color_canvas_tools {
+	float: left;
+	cursor: pointer;
+}
+
+#tool_fill .color_block {
+  width: 24px;
+  height: 24px;
+  overflow: hidden;
+  border: solid #ccc 1px;
+}
+
+.touch  #tool_eyedropper {
+	margin-top: 6px;
+}
+
+.touch #tool_fill .color_block {
+  width: 36px;
+  height: 36px;
+}
+
+.touch #tool_fill .color_block svg {
+  width: 36px !important;
+  height: 36px !important;
+}
+
+.touch  #tool_switch {
+	display: none;
+} 
+
+#use_panel .tool_button, #path_node_panel .tool_button {
+	color: #999;
+	border: solid #3F3F3C 1px;
+	border-radius: 3px;
+	padding: 3px 10px 3px 40px;
+	background: 
+	transparent;
+	position: relative;
+	margin-top: 10px;
+	width: 90px;
+	height: 23px;
+	line-height: 24px;
+}
+
+#use_panel .tool_button {
+	padding-left: 10px;
+	margin-bottom: 10px;
+	width: 124px;
+}
+
+ #path_node_panel .tool_button img,  #path_node_panel .tool_button svg {
+	position: absolute;
+	left: 5px;
+	top: 3px;
+}
+
+ #color_tools #tool_fill .color_block:hover,  #color_tools #tool_stroke .color_block:hover {
+  border-color: #fff;
+}
+
+ #color_tools #tool_fill .color_block > div {
+  position: absolute;
+  top: 0;
+  left: 0;
+}
+
+.touch  #color_tools #tool_fill .color_block > div {
+	position: relative;
+}
+
+ #color_tools #tool_fill .color_block #fill_bg,  #color_tools #tool_stroke .color_block #stroke_bg {
+  position: absolute;
+  top: 1px;
+  left: 1px;
+  bottom: 1px;
+  right: 1px;
+}
+
+.touch  #color_tools #tool_fill .color_block #fill_bg, .touch  #color_tools #tool_stroke .color_block #stroke_bg {
+	width: 36px;
+	height: 36px;
+	right: auto;
+	bottom: auto;
+}
+
+.touch #tool_stroke {
+  position: relative;
+  top: 0;
+  left: 0;
+  z-index: 0;
+}
+
+#stroke_color:after {
+  content: '';
+  position: absolute;
+  display: block;
+  width: 8px;
+  height: 8px;
+  left: 8px;
+  top: 8px;
+  background: #ccc;
+  box-shadow: 0 0 0 1px #000;
+}
+
+.touch #stroke_color:after {
+	height: 14px;
+   left: 10px;
+   position: absolute;
+   top: 10px;
+   width: 14px;
+	 
+}
+
+ #color_tools #tool_switch {
+  cursor: pointer;
+  opacity: 0.7;
+  width: 11px;
+  height: 11px;
+  background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABV0RVh0Q3JlYXRpb24gVGltZQA2LzE0LzEyP6j5+gAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNXG14zYAAAB4SURBVBiVjZHRCYUwDEVvxIF0kZKN7EjiIrrReR/PSNSKXiikcE5JUtMeADMzXQIcdRfgFWqlyyB7ap1wL+0HAnIv1DqRJUBxTkLUWXIvh9AHkIeb58UkIUnDMH4ZR0otCfhv4ynbtp7ut722ZniFG8L9xx4Ek6QfN9huARmYwR0AAAAASUVORK5CYII=) top left no-repeat;
+  position: absolute;
+  top: -2px;
+  left: 28px;
+}
+
+ #color_tools #cross:hover {
+  opacity: 1;
+}
+
+ #color_tools #tool_stroke:hover #stroke_color:after {
+  background: #fff;
+}
+
+ #color_tools #tool_stroke .color_block {
+  width: 24px;
+  height: 24px;
+  overflow: hidden;
+  border: solid #ccc 1px;
+}
+
+.touch  #color_tools #tool_stroke .color_block {
+  width: 36px;
+  height: 36px;
+}
+
+ #color_tools #tool_stroke .color_block > div {
+  position: absolute;
+  bottom: 0;
+  right: 0;
+}
+
+.touch  #color_tools #tool_stroke .color_block > div {
+  position: relative;
+}
+
+
+
+ #color_tools .icon_label {
+	padding: 0;
+	width: 24px;
+	height: 100%;
+	cursor: pointer;
+	position: absolute;
+}
+
+ #linkLabel > svg {
+	height: 20px;
+	padding-top: 4px;
+}
+
+ div#workarea {
+	display: inline-table-cell;
+	position:absolute;
+	top: 30px;
+	left: 50px;
+	bottom: 40px;
+	right: 175px;
+	background-color: #444;
+	overflow: auto;
+	text-align: center;
+	-webkit-transition: -webkit-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);
+	-moz-transition: -moz-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);
+	-o-transition: -o-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);
+	-ms-transition: -ms-transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);
+	transition: transform 500ms cubic-bezier(0.13,0.66,0.24,0.92);
+}
+
+.touch  div#workarea {
+	top: 40px;
+}
+
+ .menu .menu_list {
+  display: none;
+  position: absolute;
+}
+
+.tool_button, 
+.tool_button_current,
+.tool_button_pressed {
+  cursor: pointer;
+}
+
+ .tool_button:hover, 
+ .push_button:hover,
+ .buttonup:hover,
+ .buttondown,
+ .tool_button_current,
+ .push_button_pressed
+{
+  background-color: #fff;
+}
+
+ .tool_button.disabled,
+ .tool_button.disabled:hover {
+  opacity: 0.3;
+  background-color: #aaa;
+}
+
+ #tools_left .tool_button { background: #2f2f2c; position: relative;}
+ #tools_left .tool_button.loaded { background: #ccc;}
+ #tools_left .tool_button.loaded:hover { background: #fff;}
+ #tools_left .tool_button:after,  #tools_left .tool_button_current:after {
+	position: absolute;
+	content: '';
+	border: solid #2f2f2c 2px;
+	top: -1px;
+	left: -1px;
+	width: 26px;
+	height: 26px;
+	z-index: 0;
+}
+
+ #tools_left .tool_button_current {
+	background-color: #0cf;
+}
+
+ #main_icon span {
+	position: absolute;
+	width: 100%;
+	height: 100%;
+	display: block;
+	z-index: 2;
+}
+
+ #tools_top {
+	position: absolute;
+	width: 160px;
+	height: 100%;
+	background: #2f2f2c;
+	right: 0;
+	top: 20px;
+	border-bottom: none;
+	overflow: visible;
+	padding: 0 0 0 15px;
+}
+
+.touch  #tools_top {
+	top: 30px;
+}
+
+ label {
+  display: block;
+  color: #999;
+}
+
+div#font-selector { 
+    width:140px; 
+    height:300px; 
+    overflow:auto;  
+    margin:0 auto; 
+    position:absolute; 
+    top:27px;
+    right:0;
+    border:1px solid black; 
+    padding:10px; 
+    display:none; 
+    background-color:white;
+    z-index: 10;
+    border-radius: 3px;
+    box-shadow: 0 5px 10px rgba(0,0,0,0.7);
+}
+
+div#font-selector img {
+  width: 100%;
+}
+
+div#font-selector .font-item {
+  border-bottom: solid #ddd 1px;
+  padding: 5px 10px;
+  margin: 0 -10px;
+}
+
+div#font-selector .font-item:hover {
+  background-color: #eee;
+}
+
+ #tools_top #marker_panel * {
+  float: left;
+}
+
+ #tools_top #marker_panel h4 {
+  float: none;
+}
+
+ #tools_top #marker_panel .dropdown .icon_label {
+  width: 36px;
+  height: 20px;
+  margin-top: 2px;
+  border: solid #3f3f3c 1px;
+  text-align: center;
+}
+
+ #tools_top #marker_panel .dropdown button {
+  margin-top: 2px;
+}
+
+ #tools_top #marker_panel #marker_panel_title {
+  float: none;
+  color: #fff;
+  margin-bottom: 3px;
+}
+
+ #tools_top #marker_panel .dropdown .icon_label img {
+  float: none;
+}
+
+
+ #color_picker input[type=text], #color_picker  input[type=number] {
+  width: 30px;
+  background: #fff;
+}
+
+ .dropdown_set input[type=text],  .dropdown_set input[type=number] {
+  width: 50px;
+}
+
+ input[type=text].wide,  input[type=number].wide {width: 110px;}
+ input[type=text].tuco,  input[type=number].tuco {width: 150px;}
+
+ input[type=submit],  input[type=button], button {
+  background: #4F80FF;
+  color: #fff;
+  border-radius: 3px;
+  padding: 7px 17px;
+  border: none;
+  line-height: 140%;
+	font-size: 14px;
+	font-weight: bold;
+	font-family: sans-serif;
+
+}
+
+ input[type=submit]:hover,  button:hover {
+box-shadow: inset 0 3px 10px rgba(255, 255, 255, 0.1),
+            inset 0 -3px 10px rgba(0, 0, 0, 0.2);
+}
+
+ input[type=submit]:hover,  button:hover {background: #2F84C1;}
+ input[type=submit]:active,  button:active { box-shadow: inset 0 2px 2px rgba(0,0,0,0.2); border-bottom: solid rgba(255,255,255,0.1) 1px;}
+
+
+ #tools_left {
+	position: absolute;
+	border-right: none;
+	width: 50px;
+	top: 30px;
+	bottom: 0;
+	left: 0;
+	background: #2F2F2C; /* Needed so flyout icons don't appear on the left */
+	z-index: 4;
+}
+
+#workarea.wireframe #svgcontent * {
+	fill: none;
+	stroke: #000;
+	stroke-width: 1px;
+	stroke-opacity: 1.0;
+	stroke-dasharray: 0;
+	opacity: 1;
+	pointer-events: stroke;
+	vector-effect: non-scaling-stroke;
+	filter: none;
+}
+
+#workarea.wireframe #svgcontent text {
+	fill: #000;
+	stroke: none;
+}
+
+#workarea.wireframe #canvasBackground > rect {
+	fill: #FFF !important;
+}
+
+#workarea #canvasBackground > rect {
+  stroke: transparent !important;
+}
+
+.context_panel {
+	display: none;
+}
+
+#canvas_panel {
+	display: block;
+}
+
+ #multiselected_panel .selected_tool {
+	vertical-align: 12px;
+}
+
+#cur_context_panel {
+	position: absolute;
+  top: 47px;
+  left: 68px;
+	line-height: 22px;
+	overflow: auto;
+	border-bottom: none;
+	border-right: none;
+	padding-left: 5px;
+	font-size: 12px;
+	background: black;
+  color: #999;
+  opacity: 0.5;
+  padding: 0 10px;
+  border-radius: 0 10px 10px 0;
+}
+
+ #cur_context_panel a {
+	float: none;
+	text-decoration: none;
+	color: #fff;
+}
+
+ #cur_context_panel a:hover {
+	text-decoration: underline;
+}
+
+
+ #tools_left .tool_button,
+ #tools_left .tool_button_current {
+	position: relative;
+	z-index: 11;
+}
+
+ .flyout_arrow_horiz {
+	position: absolute;
+	bottom: -1px;
+	right: 0;
+	z-index: 10;
+}
+
+.dropdown {
+	position: relative;
+	float: left;
+}
+
+ .dropdown button {
+  width: 21px;
+  height: 22px;
+  padding: 0 3px 0 3px;
+  border: none;
+  background-color: #555;
+  border-radius: 0 2px 2px 0;
+  margin-left: -1px;
+  position: relative;
+}
+
+ .dropdown button:hover {
+  background-color: #666;
+}
+
+ .dropdown button:after {
+  content: '';
+  position: absolute;
+  border: solid transparent 4px;
+  border-top-color: #999;
+  top: 9px;
+  left: 6px;
+}
+
+
+
+.dropdown button.down {
+	border-left: 1px solid #808080;
+	border-top: 1px solid #808080;
+	border-right: 1px solid #FFFFFF;
+	border-bottom: 1px solid #FFFFFF;
+	background-color: #B0B0B0;
+}
+
+.dropdown ul {
+	list-style: none;
+	position: absolute;
+	margin: 0;
+	padding: 0;
+	left: -80px;
+	top: 26px;
+	z-index: 4;
+	display: none;
+}
+
+.dropup ul {
+	top: auto;
+	bottom: 26px;
+	border-radius: 3px;
+	box-shadow: 0 5px 10px #000;
+}
+
+.dropup ul:after {
+  content: '';
+  display: block;
+  position: absolute;
+  bottom: -10px;
+  right: 50%;
+  top: auto;
+  width: 0;
+  height: 0;
+  border: solid transparent 5px;
+  border-top-color: #fff;
+}
+
+.dropdown li {
+	display: block;
+	width: 120px;
+	padding: 5px 10px;
+	color: #333;
+	background: #fff;
+	margin: 0;
+	line-height: 16px;
+}
+
+.dropdown li:first-child {border-radius: 3px 3px 0 0;}
+.dropdown li:last-child {border-radius: 0 0 3px 3px;}
+
+
+.dropdown li:hover {
+	background-color: #ddd;
+	color: #000;
+}
+
+.dropdown li.special {
+	padding: 10px;
+  background: white;
+  border: none;
+  box-shadow: 0 3px 10px black;
+  border-radius: 3px !important;
+}
+
+.dropdown li.special:after {
+  content: '';
+  display: block;
+  position: absolute;
+  top: -10px;
+  right: 50%;
+  border: solid transparent 5px;
+  border-bottom-color: #fff;
+  
+}
+
+.dropdown li.special.down:after {
+  bottom: -10px;
+  right: 50%;
+  top: auto;
+  border: solid transparent 5px;
+  border-top-color: #fff;
+  
+}
+
+ .tool_button, 
+ .push_button,
+ .tool_button_current,
+ .push_button_pressed 
+{
+	height: 27px;
+	width: 27px;
+	border: solid #2f2f2c 8px;
+	border-left-width: 13px;
+	margin: 0;
+	background-color: #ddd;
+	cursor: pointer;
+}
+
+ #main_menu li#tool_open,  #main_menu li#tool_import {
+	position: relative;
+	overflow: hidden;
+}
+
+#tool_image {
+	overflow: hidden;
+}
+
+#tool_open input, 
+#tool_import input,
+#tool_import_bitmap input {
+	position: absolute;
+	opacity: 0;
+	font-size: 10em;
+	top: -5px;
+	right: -5px;
+	margin: 0;
+	cursor: pointer; /* Sadly doesn't appear to have an effect */
+}
+
+ .disabled {
+	opacity: 0.5;
+	cursor: default;
+}
+
+ .width_label {
+	padding-right: 5px;
+}
+
+#text {
+	position: absolute;
+	left: -9999px;
+}
+
+ #tool_bold span,  #tool_italic span { 
+	position: absolute;
+	width: 100%;
+	height: 100%;
+	top: 0; left: 0;
+	background: #ccc;
+	opacity: 0;
+}
+
+
+
+#url_notice {
+	padding-top: 4px;
+	display: none;
+}
+
+ #color_picker {
+	position: absolute;
+	display: none;
+	background: #fff;
+	height: 350px;
+	border-radius: 3px;
+	z-index: 5;
+	box-shadow: 0 5px 10px #000;
+	width: 530px;
+}
+
+ .tools_flyout {
+	position: absolute;
+	display: none;
+	cursor: pointer;
+	width: 385px;
+	z-index: 10;
+	left: 47px !important;
+	height: 324px;
+	background: #fff;
+	border-radius: 5px;
+  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.5);
+}
+
+ .tools_flyout_v {
+	position: absolute;
+	display: none;
+	cursor: pointer;
+	width: 30px;
+}
+
+ .tools_flyout .tool_button {
+	float: left;
+	background-color: #fff;
+	height: 24px;
+	width: 24px;
+}
+
+ #tools_bottom {
+	position: absolute;
+	left: 50px;
+	right: 0;
+	bottom: 0;
+	height: 40px;
+	overflow: visible;
+	background: #2f2f2c;
+}
+
+ #tools_bottom_1 {
+	width: 115px;
+	float: left;
+}
+
+ #tools_bottom_2 {
+	position: relative;
+	float: left;
+	margin-top: 5px;
+}
+
+#tools_bottom input[type=text] {
+	width: 3.2em;
+}
+
+ #tools_top h4 {
+  color: #fff;
+  font-weight: normal;
+  margin: 0;
+  padding: 10px 0 5px 0;
+}
+
+#tools_top .dropdown .icon_label {
+	border: 1px solid transparent;
+/*	margin-top: 3px;*/
+	height: auto;
+}
+
+#tools_top.multiselected #align_tools {
+	display: none;
+}
+
+#tools_top.multiselected #multiselected_panel {
+	display: block !important;
+}
+
+#tools_top.multiselected #multiselected_panel .hidable {
+	display: none;
+}
+
+ .draginput_cell {
+	float: left;
+	height: 26px;
+	height: 26px;
+	border: solid #3f3f3c 10px;
+	outline: solid #2f2f2c 1px;
+	background: #ddd;
+	cursor: pointer;
+	position: relative;
+}
+
+ .draginput_cell:hover {
+	background: #fff;
+}
+
+ .draginput_cell:after {
+	content: '';
+	position: absolute;
+	top: 0;
+	left: 0;
+	border: solid #3f3f3c 1px;
+	height: 26px;
+	width: 26px;
+	z-index: 0;
+}
+
+
+ .align_buttons  .draginput_cell:nth-child(1) {border-radius: 3px 0 0 0;}
+ .align_buttons  .draginput_cell:nth-child(3) {border-radius: 0 3px 0 0;}
+ .align_buttons  .draginput_cell:nth-child(4) {border-radius: 0 0 0 3px;}
+ .align_buttons  .draginput_cell:nth-child(6) {border-radius: 0 0 3px 0;}
+
+
+.align_buttons .push_button {
+  display: block;
+  float: left;
+}
+
+#option_lists ul {
+	display: none;
+	position: absolute;
+	height: auto;
+	z-index: 3;
+	margin: 0;
+	list-style: none;
+	padding-left: 0;
+}
+
+#option_lists .optcols2 {
+	width: 70px;
+	margin-left: -15px;
+}
+
+#option_lists .optcols3 {
+	width: 192px;
+	margin-left: -105px;
+	margin-top: -25px;
+	background: #fff;
+	padding: 5px;
+	box-shadow: 0 5px 10px #000;
+	border-radius: 3px;
+}
+
+#option_lists .optcols3:after {
+  content: '';
+  display: block;
+  position: absolute;
+  top: -10px;
+  right: 70px;
+  border: solid transparent 5px;
+  border-bottom-color: #fff;
+}
+
+
+ #option_lists .tool_button,  #option_lists .push_button,  #option_lists .tool_button_current,  #option_lists .push_button_pressed {
+  border: none;
+  background: transparent;
+}
+
+ #option_lists .tool_button:hover {
+  background: #ddd;
+}
+
+ #option_lists ul li.current {
+	background-color: #F4E284;
+}
+
+#option_lists .optcols4 {
+	width: 130px;
+	margin-left: -44px;
+}
+
+#option_lists ul[class^=optcols] li {
+	float: left;
+}
+
+ ul li.current {
+	background-color: #F4E284;
+}
+
+ #option_lists ul li {
+	margin: 0;
+	border-radius: 0;
+	-moz-border-radius: 0;
+	-webkit-border-radius: 0;
+}
+
+ #copyright {
+	text-align: right;
+	padding-right: .3em;
+}
+
+#svg_source_editor {
+	display: none;
+}
+
+#svg_source_editor #svg_source_overlay {
+	position: absolute;
+	top: 0px;
+	right: 0px;
+	left: 0px;
+	bottom: 0px;
+	background-color: black;
+	opacity: 0.6;
+	z-index: 5;
+}
+
+#svg_source_editor #svg_source_container {
+	position: absolute;
+	top: 30px;
+	left: 100px;
+	right: 100px;
+	bottom: 30px;
+	background-color: #fff;
+	border-radius: 3px;
+	opacity: 1.0;
+	text-align: center;
+	z-index: 6;
+	padding: 15px 0;
+}
+
+#svg_source_editor form {
+	position: absolute;
+	display: block;
+	top: 15px;
+	bottom: 55px;
+	left: 15px;
+	right: 12px;
+	padding: 5px;
+	font-size: 12px;
+}
+
+#svg_source_textarea {
+  width: 100%;
+  height: 100%;
+  line-height: 140%;
+  font-family: 'Lucida Sans', 'Lucida Grande', 'Lucida Sans Unicode', sans-serif;
+  font-size: 12px;
+}
+
+#svg_source_editor #tool_source_back {
+  position: absolute;
+  bottom: 45px;
+  left: 15px;
+	right: 15px;
+}
+
+#svg_source_editor #tool_source_back #tool_source_save {
+	display: block;
+	position: absolute;
+	right: 0;
+}
+
+
+#svg_source_editor #tool_source_back #tool_source_cancel {
+	display: block;
+	position: absolute;
+	left: 0;
+}
+
+
+ button.cancel,  input.Cancel,  input.cancel,  input.jGraduate_Cancel, button.cancel {
+	-webkit-appearance: none;
+	background-color: #999;
+	box-shadow: 0 0 1px rgba(0,0,0,0.5);
+	margin: 0;
+}
+
+
+#shape_buttons {
+	overflow: auto;
+	top: 0;
+	bottom: 0;
+	left: 110px;
+	right: 0;
+	position: absolute;
+	vertical-align: top;
+}
+
+#shape_cats {
+	min-width: 110px;
+	display: block;
+	position: absolute;
+	left: 0;
+	top: 0;
+	height: 300px;
+	background: #eee;
+	border-radius: 3px 0 0 3px;
+	z-index: 2;
+}
+#shape_cats > div {
+	line-height: 1em;
+	padding: 0 .5em;
+	border-bottom: 1px solid #ddd;
+	background: #E8E8E8;
+	color: #444;
+	height: 26px;
+	line-height: 26px;
+}
+
+#shape_cats > div:first-child {
+  border-radius: 3px 0 0 0;
+}
+
+#shape_cats > div:last-child {
+  border-radius: 0 0 0 3px;
+}
+
+#shape_cats div:hover {
+	background: #efefef;
+	color: #000;
+}
+#shape_cats div.current {
+	font-weight: bold;
+	background: #3f3f3c;
+	color: #fff;
+	position: relative;
+}
+
+#shape_cats div.current:after {
+  content: '';
+  position: absolute;
+  right: -26px;
+  top: 0;
+  border: solid transparent 13px;
+  border-left-color: #3f3f3c;
+}
+
+.toolbar_button button .svg_icon {
+    display: none;
+}
+
+#dialog_box {
+	display: none;
+}
+
+#dialog_box_overlay {
+	background: black;
+	opacity: .5;
+	height:100%;
+	left:0;
+	position:absolute;
+	top:0;
+	width:100%;
+	z-index: 6;
+}
+
+#dialog_content {
+	height: 95px;
+	margin: 10px 10px 5px 10px;
+	overflow: auto;
+	text-align: left;
+	font-size: 13px;
+}
+
+#dialog_buttons input:last-child {
+	background: #999 !important;
+	position: absolute;
+	left: 10px;
+	bottom: 10px;
+}
+
+#dialog_buttons input:first-child {
+	position: absolute;
+	right: 10px;
+	bottom: 10px;
+}
+
+#dialog_content.prompt {
+	height: 75px;
+}
+
+#dialog_content p {
+	margin: 10px;
+	line-height: 1.3em;
+}
+
+#dialog_container {
+	position: absolute;
+	left: 50%;
+	top: 50%;
+	width: 300px;
+	margin-left: -150px;
+	height: 150px;
+	margin-top: -80px;
+	position:fixed;
+	z-index:50001;
+	background: #fff;
+}
+
+
+#dialog_container, #dialog_content {
+	border-radius: 3px;
+}
+
+#dialog_buttons input[type=text] {
+	width: 90%;
+	display: block;
+	margin: 0 0 5px 11px;
+}
+
+#dialog_buttons input[type=button] {
+	margin: 0 1em;
+}
+
+.invisible {
+  visibility: none;
+}
+
+
+/* Slider
+----------------------------------*/
+.ui-slider { position: relative; text-align: left; }
+.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; }
+
+.ui-slider-horizontal { height: .8em; }
+.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.ui-slider-vertical { width: .8em; height: 100px; }
+.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.ui-slider-vertical .ui-slider-range-max { top: 0; }
+
+.ui-slider {
+	background: #3F3F3C;
+  border-radius: 10px;
+}
+
+.ui-slider-handle {
+	box-shadow: 0 3px 3px rgba(0,0,0,0.3);
+	border-radius: 30px;
+	background: #fff;
+  background-image: -ms-linear-gradient(top, #ccc 0%, #fff 100%);
+  background-image: -moz-linear-gradient(top, #ccc 0%, #fff 100%);
+  background-image: -o-linear-gradient(top, #ccc 0%, #fff 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ccc), color-stop(1, #fff));
+  background-image: -webkit-linear-gradient(top, #ccc 0%, #fff 100%);
+  background-image: linear-gradient(top, #ccc 0%, #fff 100%);
+}
+
+.ui-slider-handle:focus {
+  outline: none;
+}
+
+/* Necessary to keep the flyouts sized properly */
+#shape_buttons {background: #fff; border-radius: 0 3px 3px 0; padding: 10px}
+
+ .tools_flyout .tool_button,
+ .tools_flyout .tool_flyout {
+  background: #fff;
+	width: 40px;
+	height: 40px;
+	margin: 5px;
+	border-radius: 0px;
+	-moz-border-radius: 0px;
+	-webkit-border-radius: 0px;	
+	border-width: 0;
+}
+
+/* Generic context menu styles */
+.contextMenu {
+	position: absolute;
+	z-index: 99999;
+	border: solid 1px rgba(0,0,0,.33);
+	background: rgba(255,255,255,.95);
+	padding: 5px 0;
+	margin: 0px;
+	display: none;
+	font: 12px/15px 'Lucida Sans', 'Lucida Grande', Helvetica, Verdana, sans-serif;
+	border-radius: 5px;
+	-moz-border-radius: 5px;
+	-moz-box-shadow: 2px 5px 10px rgba(0,0,0,.3);
+	-webkit-box-shadow: 2px 5px 10px rgba(0,0,0,.3);
+	box-shadow: 2px 5px 10px rgba(0,0,0,.3);
+}
+
+.touch .contextMenu {
+	border: solid 5px rgba(0,0,0,.7);
+	padding: 0;
+	margin: 0 0 0 20px;
+	font: 18px/24px sans-serif;
+	border-radius: 5px;
+	-webkit-box-shadow: 2px 5px 20px 3px #000;
+	box-shadow: 2px 5px 20px rgba(0,0,0,0.5);
+}
+
+.touch .contextMenu:after {
+	content: '';
+	width: 0;
+	height: 0;
+	border: solid transparent 10px;
+	border-right-color: rgba(0,0,0,.7);
+	position: absolute;
+	top: 50%;
+	left: -25px;
+	margin-top: -10px;
+	z-index: 1000;
+}
+
+.contextMenu LI {
+	list-style: none;
+	padding: 0px;
+	margin: 0px;
+}
+
+.contextMenu .shortcut {
+	width: 115px;           
+	text-align:right;
+	float:right;
+}
+
+.touch .contextMenu .shortcut {
+	display: none;
+}
+
+
+.touch .shortcut {
+	display: none;
+}
+
+
+.contextMenu A {
+	-moz-user-select: none;
+	-webkit-user-select: none;
+	color: #222;
+	text-decoration: none;
+	display: block;
+	line-height: 20px;
+	height: 20px;
+	background-position: 6px center;
+	background-repeat: no-repeat;
+	outline: none;
+	padding: 0px 15px 1px 20px;
+}
+
+.touch .contextMenu A {
+	padding: 0 15px;
+	border-bottom: #;
+	font-weight: bold;
+	border-top: solid 1px #E3E3E3;
+	height: 40px;
+	line-height: 40px;
+	min-width: 200px;
+}
+
+.contextMenu LI.hover A {
+	background-color: #2e5dea;
+	color: white;
+	cursor: default;
+}
+
+.contextMenu LI.disabled A {
+	color: #999;
+
+}
+
+.touch .contextMenu LI.disabled A {
+	display: none;
+}
+
+.contextMenu LI.hover.disabled A {
+	background-color: transparent;
+}
+
+.contextMenu LI.separator {
+	border-top: solid 1px #E3E3E3;
+	padding-top: 5px;
+	margin-top: 5px;
+}
+
+.touch .contextMenu LI.separator {
+	border-top: none;
+	margin: 0;
+	padding: 0;
+}
+
+#menu {
+  display: none;
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  height: 30px;
+  background: #000;
+  z-index: 10;
+  color: #fff;
+}
+
+#workarea.rect, #workarea.line, #workarea.ellipse, #workarea.path, #workarea.shapelib {
+  cursor: crosshair;
+}
+
+#workarea.text {
+  cursor: text;
+}
+
+#workarea.eyedropper {
+  cursor: url(../images/eyedropper.png) 0 16, crosshair;
+}
+
+#workarea.fhpath {
+  cursor: url(../images/pencil_cursor.png) 0 20, crosshair;
+}
+
+#workarea.rotate * {
+  cursor: url(../images/rotate.png) 12 12, auto;
+}
+
+#workarea.select text, #workarea.multiselect text {
+	cursor: default;
+}
+
+#workarea.n-resize * {cursor: n-resize !important;}
+#workarea.e-resize * {cursor: e-resize !important;}
+#workarea.w-resize * {cursor: w-resize !important;}
+#workarea.s-resize * {cursor: s-resize !important;}
+
+#workarea.ne-resize * {cursor: ne-resize !important;}
+#workarea.se-resize * {cursor: se-resize !important;}
+#workarea.nw-resize * {cursor: nw-resize !important;}
+#workarea.sw-resize * {cursor: sw-resize !important;}
+
+#workarea.copy {
+	cursor: copy;
+}
+
+#workarea.zoom {
+  cursor: crosshair;
+  cursor:-moz-zoom-in;
+  cursor:-webkit-zoom-in;
+}
+#workarea.zoom.out {
+  cursor: crosshair;
+  cursor:-moz-zoom-out;
+  cursor:-webkit-zoom-out;
+}
+
+#selectorRubberBand {
+	shape-rendering: crispEdges;
+}
+
+/* For modern browsers */
+.clearfix:before,
+.clearfix:after {
+    content:"";
+    display:table;
+}
+
+.clearfix:after {
+    clear:both;
+}
+
+/* For IE 6/7 (trigger hasLayout) */
+.clearfix {
+    *zoom:1;
+}
+
+
+ #group_title {display: none;}
+
+#base_unit_container {
+	display: none;
+	position: absolute;
+	z-index: 20;
+}
+
+ .draginput {
+  background: #3f3f3c;
+  border-radius: 3px;
+  -webkit-font-smoothing: antialiased;
+  width: 70px;
+  height: 70px;
+  display: block;
+  position: relative;
+  float: left;
+  margin: 0 5px 5px 0;
+}
+
+ .draginput .caret {
+  border: solid transparent 5px;
+  border-top-color: #999;
+  position: absolute;
+  width: 0;
+	height: 0;
+	right: 5px;
+	margin-top: -2px;
+	top: 50%;
+}
+
+ .draginput label {
+	margin: 28px 10px 0 5px;
+	font-size: 14px;
+	color: white;
+	font-weight: bold;
+	font-family: sans-serif;
+}
+
+ .draginput label#resolution_label,  .draginput label#seg_type_label {
+	font: bold 12px/110% sans-serif;
+	position: absolute;
+	left: auto;
+	right: 10px;
+	z-index: 0;
+	text-align: right;
+}
+
+  .draginput label#seg_type_label {
+	margin-top: 40px;
+}
+
+  .draginput label#seg_type_label .caret {
+	top: 66%;
+}
+
+ .draginput label#resolution_label .pull {
+	position: relative;
+	left: -15px;
+}
+
+ .draginput label#resolution_label span {
+	right: -13px;
+	left: auto;
+	font-size: 16px;
+	top: 2px;
+	font-weight: bold;
+	color: white;
+}
+
+.touch  .draginput.active:after {
+	content: attr(data-value);
+	display: block;
+	position: absolute;
+	background: #fff;
+	font-size: 16px;
+	top: 0;
+	width: 30px;
+	left: -50px;
+	padding: 0 5px;
+	color: #333;
+	z-index: 10;
+	font-family: sans-serif;
+	font-weight: bold;
+	text-align: right;
+	padding-right: 10px;
+	height: 20px;
+	line-height: 20px;
+	letter-spacing: -1px;
+}
+
+.touch  .draginput.active:before {
+	content: '';
+	height: 0;
+	width: 0;
+	position: absolute;
+	top: 5px;
+	left: -5px;
+	border: solid transparent 5px;
+	border-left-color: #fff;
+}
+
+ .draginput input {
+  border: none;
+  background: transparent;
+  font: 24px/normal sans-serif;
+  text-align: center;
+  color: #4F80FF;
+  padding: 30px 0 16px;
+  width: 100%;
+  height: 24px;
+	position: relative;
+	z-index: 2;
+}
+
+.draginput.twocol {
+	width: 145px;
+}
+
+#tool_font_family .caret {
+	right: 40px;
+	top: 55%;
+}
+
+#tool_font_family select {
+	width: 110px;
+}
+
+
+ #tool_bold,   #tool_italic { 
+	font: bold 20px/35px serif;
+	text-align: center;
+	position: absolute;
+	padding: 0 0 0 0;
+	color: #ccc;
+	background: transparent;
+	border: none;
+	width: 35px;
+	height: 35px;
+	margin: 0;
+	top: 0;
+	right: 0;
+}
+
+#tool_italic {
+	border-top: solid #2f2f2c 2px;
+	top: 35px;
+	font-weight: bold;
+	font-style: italic;
+	font-size: 24px;
+}
+
+
+ #tool_bold:hover,   #tool_italic:hover {
+  color: #fff;
+}
+
+ #tool_bold.active,   #tool_italic.active {
+  color: #50A0FF;
+}
+
+#preview_font {
+	font-size: 20px;
+	color: #fff;
+	height: 70px;
+	line-height: 75px;
+	padding: 0 0 0 10px;
+	white-space: nowrap;
+	width: 100px;
+	overflow: hidden;
+	border-right: solid #2f2f2c 2px;
+	position: relative;
+}
+
+#preview_font:after {
+	content: '';
+	position: absolute;
+	right: 0;
+	top: 3px;
+	bottom: 3px;
+	width: 15px;
+	border-right: solid #3f3f3c 10px;
+	background: transparent url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAxIDEiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxsaW5lYXJHcmFkaWVudCBpZD0iZzU4MCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIwJSIgeTE9IjAlIiB4Mj0iMTAwJSIgeTI9IjAlIj48c3RvcCBzdG9wLWNvbG9yPSIjM2YzZjNjIiBzdG9wLW9wYWNpdHk9IjAiIG9mZnNldD0iMCIvPjxzdG9wIHN0b3AtY29sb3I9IiMzZjNmM2MiIG9mZnNldD0iMC43Ii8+PC9saW5lYXJHcmFkaWVudD48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBmaWxsPSJ1cmwoI2c1ODApIiAvPjwvc3ZnPg==);
+}
+
+
+.draginput input, .draginput input:hover, .draginput input:active {  
+	  cursor: url(../images/drag.png), move;
+	  cursor: -webkit-grab;
+		cursor: -moz-grab;
+}
+
+.draginput input[type="checkbox"], .draginput input[type="checkbox"]:hover, .draginput input[type="checkbox"]:active {  
+	  cursor: pointer;
+}
+
+.draginput.checkbox {
+	cursor: pointer;
+}
+
+.draginput.active input, .draginput.active input:hover, .draginput.active input:active {  
+	  cursor: url(../images/dragging.png), move;
+	  cursor: -webkit-grabbing;
+		cursor: -moz-grabbing;
+}
+
+
+
+ .draginput span {
+  font: 11px/130% sans-serif;
+  color: #ccc;
+  display: block;
+  position: absolute;
+  top: 5px;
+  left: 5px;
+  text-align: left;
+}
+
+ .draginput.error {
+	background: #900;
+}
+
+ .draginput.error input {
+	color: #fff;
+}
+
+ .draginput.stroke_tool {
+	text-align: center;
+}
+
+ .draginput select {
+	-webkit-appearance: none;
+	opacity: 0;
+	display: block;
+	position: absolute;
+	height: 100%;
+	width: 100%;
+	margin: 0;
+	z-index: 1;
+	top: 0;
+	left: 0;	
+}
+
+
+.draginput_cursor{
+  position: absolute;
+  top: 50%;
+  width: 100%;
+  border-top: solid rgba(50,100,200,0.25) 3px;
+	margin-top: -2px;
+	z-index: 0;
+}
+
+ .draginput input[readonly=readonly] {
+  -webkit-appearance: none;
+  -webkit-touch-callout: none;
+  -webkit-user-select: none;
+  -khtml-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+
+
+ .draginput input:focus {
+	background: #50A0FF;
+	color: #fff;
+	outline: none;
+	box-shadow: 0 0 5px 2px #50A0FF;
+}
+
+ .draginput input:focus+span {
+	z-index: 10;
+	color:#fff;
+}
+
+.draginput .push_bottom {
+	bottom: 0;
+	position: absolute;
+}
+
+#zoom_label {
+	height: 20px;
+	background: transparent;
+	cursor: default !important;
+	width: auto;
+	padding: 0 10px;
+	margin: 0;
+}
+
+#zoom_panel {
+	padding: 9px 0;
+	right: 175px;
+  position: absolute;
+}
+
+#zoom_label img, #zoom_label svg {
+	width: 16px;
+	height: 16px;
+}
+
+#logo svg {
+	pointer-events: none;
+}
+
+#zoomLabel {
+	width: 16px;
+	height: 16px;
+	cursor: pointer;
+	background: #ccc;
+}
+
+#zoomLabel:after {
+	content: '';
+	position: absolute;
+	border-left: solid #2f2f2c 1px;
+	left: 0;
+	height: 16px;
+}
+
+#zoom_label input {
+	color: #ccc;
+	font-size: 13px;
+	height: auto;
+	width: auto;
+	padding: 0;
+	cursor: default;
+	position: static;
+}
+
+#zoom_label span {
+	top: 0;
+	left: 0;
+}
+
+body.dragging * {
+	cursor: url(../images/dragging.png), move;
+	cursor: -webkit-grabbing;
+	cursor: -moz-grabbing;
+}
+
+body.drag * {
+	cursor: url(../images/dragging.png), move;
+	cursor: -webkit-grabbing;
+	cursor: -moz-grabbing;
+}
+
+input[readonly=readonly]:focus {
+	box-shadow: none;
+}
+
+#color_canvas_tools, #fill_bg, #stroke_bg {
+	background: #fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMAQMAAABsu86kAAAAA3NCSVQICAjb4U/gAAAABlBMVEXu7u7///8o06qaAAAACXBIWXMAAAsSAAALEgHS3X78AAAAFXRFWHRDcmVhdGlvbiBUaW1lADcvMjIvMTL7FNdCAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M1cbXjNgAAABFJREFUCJljYP7AgIb+MKAhAM8/C5vWL6zSAAAAAElFTkSuQmCC) top left repeat;
+}
+
+#color_canvas_tools {
+	width: 60px;
+	height: 40px;
+	margin: 23px 5px 5px 5px;
+	position: relative;
+	overflow: hidden;
+}
+
+#color_canvas_tools  {
+	display: block;
+}
+
+
+#tool_angle_indicator {
+	width: 				 50px;
+	height: 			 50px;
+	border-radius: 50px;
+	background: rgba(255,255,255,0.05);
+	position: absolute;
+	bottom: 2px;
+	left: 10px;
+}
+
+#tool_angle_indicator_cursor {
+	width: 				 4px;
+	height: 			 25px;
+	border-top: solid #50A0FF 3px;
+	position: absolute;
+	margin: 0 0 0 23px;
+	-webkit-transform-origin: 50% 0;
+	-moz-transform-origin: 50% 0;
+	-o-transform-origin: 50% 0;
+	-ms-transform-origin: 50% 0;
+	transform-origin: 50% 0;
+}
+
+#stroke_style_label {
+	font-size: 30px;
+	margin-top: 33px;
+	letter-spacing: -1px;
+}
+
+.stroke_tool .caret {
+	top: 60%;
+}
+
+#tool_align_relative {
+	position: absolute;
+	top: -5px;
+	left: 0;
+	right: 20px;
+	display: block;
+}
+
+#tool_align_relative select {
+	width: 100%;
+	display: block;
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/test/all_tests.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/test/all_tests.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/test/all_tests.html	(revision 29468)
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <title>All SVG-edit Tests</title>
+</head>
+<body>
+  <h1>All SVG-edit Tests</h1>
+  <p>This file frames all SVG-edit test pages.  This should only include tests known to work.  These tests are known to pass 100% in the following:  Firefox 3.6, Chrome 7, IE9 Preview 6 (1.9.8006.6000), Opera 10.63.  If a test is broken in this page, it is possible that <em>YOU</em> broke it.  Please do not submit code that breaks any of these tests.</p>
+  <iframe src='svgtransformlist_test.html' width='100%' height='70' scrolling='no'></iframe>
+  <iframe src='contextmenu_test.html' width='100%' height='70' scrolling='no'></iframe>
+  <iframe src='math_test.html' width='100%' height='70' scrolling='no'></iframe>
+  <iframe src='svgutils_test.html' width='100%' height='70' scrolling='no'></iframe>
+  <iframe src='history_test.html' width='100%' height='70' scrolling='no'></iframe>
+  <iframe src='select_test.html' width='100%' height='70' scrolling='no'></iframe>
+  <iframe src='draw_test.html' width='100%' height='70' scrolling='no'></iframe>
+  <iframe src='units_test.html' width='100%' height='70' scrolling='no'></iframe>
+  <iframe src='path_test.html' width='100%' height='70' scrolling='no'></iframe>
+</body>
+<script>
+window.setTimeout(function() {
+  var iframes = document.getElementsByTagName('iframe');
+  for (var i = 0, len = iframes.length; i < len; ++i) {
+    var f = iframes[i];
+    f.style.height = (f.contentDocument.body.scrollHeight + 20) + 'px';
+  }
+}, 5000);
+</script>
+</html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/test/contextmenu_test.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/test/contextmenu_test.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/test/contextmenu_test.html	(revision 29468)
@@ -0,0 +1,83 @@
+<!DOCTYPE html>
+<html>  
+<head>  
+  <link rel='stylesheet' href='qunit/qunit.css' type='text/css'/>  
+  <script src='../editor/lib/jquery.js'></script>
+  <script>
+    // Mock for browser.js
+    window.svgedit = {};
+    window.svgEditor = {ready:function(){}};
+  </script>
+  <script type='text/javascript' src='../editor/lib/contextmenu.js'></script>
+  <script type='text/javascript' src='qunit/qunit.js'></script>  
+  <script type='text/javascript'>
+  $(function() {
+  	// log function
+  	QUnit.log = function(result, message) {
+		if (window.console && window.console.log) {
+			window.console.log(result +' :: '+ message);
+		}
+	};
+
+	function tearDown(){
+		svgedit.contextmenu.resetCustomMenus();
+	}
+	
+	module('svgedit.contextmenu');
+	
+	test('Test svgedit.contextmenu package', function() {
+		expect(4);
+		
+		ok(svgedit.contextmenu,"contextmenu registered correctly");
+		ok(svgedit.contextmenu.add,"contextmenu.add registered correctly");
+		ok(svgedit.contextmenu.hasCustomHandler,"contextmenu hasCustomHandler registered correctly");
+		ok(svgedit.contextmenu.getCustomHandler,"contextmenu getCustomHandler registered correctly");
+	});
+	
+	test('Test svgedit.contextmenu does not add invalid menu item', function() {
+		expect(3);
+		
+		svgedit.contextmenu.add({id:"justanid"});
+		ok(!svgedit.contextmenu.hasCustomHandler("justanid"),"menu item with just an id is invalid");
+		
+		svgedit.contextmenu.add({id:"idandlabel",label:"anicelabel"});
+		ok(!svgedit.contextmenu.hasCustomHandler("idandlabel"),"menu item with just an id and label is invalid");
+		
+		svgedit.contextmenu.add({id:"idandlabel",label:"anicelabel",action:'notafunction'});
+		ok(!svgedit.contextmenu.hasCustomHandler("idandlabel"),"menu item with action that is not a function is invalid");
+	});
+	
+	test('Test svgedit.contextmenu adds valid menu item', function() {
+		expect(2);
+		
+		var validItem = {id:"valid",label:"anicelabel",action:function(){alert('testing')}};
+		svgedit.contextmenu.add(validItem);
+		
+		ok(svgedit.contextmenu.hasCustomHandler("valid"),"Valid menu item is added.");
+		equals(svgedit.contextmenu.getCustomHandler("valid"),validItem.action,"Valid menu action is added.");
+		tearDown();
+	});
+	
+	test('Test svgedit.contextmenu rejects valid duplicate menu item id', function() {
+		expect(1);
+		
+		var validItem1 = {id:"valid",label:"anicelabel",action:function(){alert('testing')}};
+		var validItem2 = {id:"valid",label:"anicelabel",action:function(){alert('testingtwice')}};
+		svgedit.contextmenu.add(validItem1);
+		svgedit.contextmenu.add(validItem2);
+		
+		equals(svgedit.contextmenu.getCustomHandler("valid"),validItem1.action,"duplicate menu item is rejected.");
+		tearDown();
+	});
+  }); 
+  </script>  
+</head>  
+<body>  
+  <h1 id='qunit-header'>Unit Tests for contextmenu.js</h1>
+  <h2 id='qunit-banner'></h2>
+  <h2 id='qunit-userAgent'></h2>
+  <ol id='qunit-tests'>
+  </ol>
+  <div id='svgroot' style='visibility:hidden'></div>
+</body>  
+</html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/test/draw_test.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/test/draw_test.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/test/draw_test.html	(revision 29468)
@@ -0,0 +1,539 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <link rel='stylesheet' href='qunit/qunit.css' type='text/css'/>
+  <script type='text/javascript' src='../editor/lib/jquery.js'></script>
+  <script type='text/javascript' src='../editor/src/browser.js'></script>
+  <script type='text/javascript' src='../editor/src/svgutils.js'></script>
+  <script type='text/javascript' src='../editor/src/draw.js'></script>
+  <script type='text/javascript' src='qunit/qunit.js'></script>  
+  <script type='text/javascript'>
+  $(function() {
+  	// log function
+  	QUnit.log = function(result, message) {
+		if (window.console && window.console.log) {
+			window.console.log(result +' :: '+ message);
+		}
+	};
+
+	var SVGNS = 'http://www.w3.org/2000/svg';
+	var SENS = "http://svg-edit.googlecode.com";
+	var XMLNSNS = "http://www.w3.org/2000/xmlns/";
+	var NONCE = 'foo';
+	var LAYER1 = 'Layer 1';
+	var LAYER2 = 'Layer 2';
+	var LAYER3 = 'Layer 3';
+
+	var svg = document.createElementNS(SVGNS, 'svg');
+
+	// Set up <svg> with nonce.
+	var svg_n = document.createElementNS(SVGNS, 'svg');
+	svg_n.setAttributeNS(XMLNSNS, 'xmlns:se', SENS);
+	svg_n.setAttributeNS(SENS, 'se:nonce', NONCE); 
+
+	var setupSvgWith3Layers = function(svgElem) {
+		var layer1 = document.createElementNS(SVGNS, 'g');
+		var layer1_title = document.createElementNS(SVGNS, 'title');
+		layer1_title.appendChild(document.createTextNode(LAYER1));
+		layer1.appendChild(layer1_title);
+		svgElem.appendChild(layer1);
+
+		var layer2 = document.createElementNS(SVGNS, 'g');
+		var layer2_title = document.createElementNS(SVGNS, 'title');
+		layer2_title.appendChild(document.createTextNode(LAYER2));
+		layer2.appendChild(layer2_title);
+		svgElem.appendChild(layer2);
+
+		var layer3 = document.createElementNS(SVGNS, 'g');
+		var layer3_title = document.createElementNS(SVGNS, 'title');
+		layer3_title.appendChild(document.createTextNode(LAYER3));
+		layer3.appendChild(layer3_title);
+		svgElem.appendChild(layer3);
+	};
+	
+	var cleanupSvg = function(svgElem) {
+		while(svgElem.firstChild) {svgElem.removeChild(svgElem.firstChild);}
+	};
+
+	test('Test draw module', function() {
+		expect(4);
+		
+		ok(svgedit.draw);
+		equals(typeof svgedit.draw, typeof {});
+
+		ok(svgedit.draw.Drawing);
+		equals(typeof svgedit.draw.Drawing, typeof function(){});
+	});
+	
+	test('Test document creation', function() {
+		expect(3);
+		
+		try {
+			var doc = new svgedit.draw.Drawing();
+			ok(false, 'Created drawing without a valid <svg> element');
+		} catch(e) {
+			ok(true);
+		}
+
+		try {
+			var doc = new svgedit.draw.Drawing(svg);
+			ok(doc);
+			equals(typeof doc, typeof {});
+		} catch(e) {
+			ok(false, 'Could not create document from valid <svg> element: ' + e)
+		}
+	});
+
+	test('Test nonce', function() {
+		expect(7);
+
+		var doc = new svgedit.draw.Drawing(svg);
+		equals(doc.getNonce(), "");
+
+		doc = new svgedit.draw.Drawing(svg_n);
+		equals(doc.getNonce(), NONCE);
+		equals(doc.getSvgElem().getAttributeNS(SENS, 'nonce'), NONCE);
+		
+		doc.clearNonce();
+		ok(!doc.getNonce());
+		ok(!doc.getSvgElem().getAttributeNS(SENS, 'se:nonce'));
+		
+		doc.setNonce(NONCE);
+		equals(doc.getNonce(), NONCE);
+		equals(doc.getSvgElem().getAttributeNS(SENS, 'nonce'), NONCE);
+	});
+	
+	test('Test getId() and getNextId() without nonce', function() {
+		expect(7);
+		
+		var elem2 = document.createElementNS(SVGNS, 'circle');
+		elem2.id = 'svg_2';
+		svg.appendChild(elem2);
+
+		var doc = new svgedit.draw.Drawing(svg);
+
+		equals(doc.getId(), "svg_0");
+
+		equals(doc.getNextId(), "svg_1");
+		equals(doc.getId(), "svg_1");
+
+		equals(doc.getNextId(), "svg_3");
+		equals(doc.getId(), "svg_3");
+
+		equals(doc.getNextId(), "svg_4");
+		equals(doc.getId(), "svg_4");
+		
+		// clean out svg document
+		cleanupSvg(svg);
+	});
+
+	test('Test getId() and getNextId() with prefix without nonce', function() {
+		expect(7);
+
+		var prefix = 'Bar-';
+		var doc = new svgedit.draw.Drawing(svg, prefix);
+
+		equals(doc.getId(), prefix+"0");
+
+		equals(doc.getNextId(), prefix+"1");
+		equals(doc.getId(), prefix+"1");
+
+		equals(doc.getNextId(), prefix+"2");
+		equals(doc.getId(), prefix+"2");
+
+		equals(doc.getNextId(), prefix+"3");
+		equals(doc.getId(), prefix+"3");
+
+		cleanupSvg(svg);
+	});
+
+	test('Test getId() and getNextId() with nonce', function() {
+		expect(7);
+		
+		var prefix = "svg_" + NONCE;
+
+		var elem2 = document.createElementNS(SVGNS, 'circle');
+		elem2.id = prefix+'_2';
+		svg_n.appendChild(elem2);
+
+		var doc = new svgedit.draw.Drawing(svg_n);
+
+		equals(doc.getId(), prefix+"_0");
+
+		equals(doc.getNextId(), prefix+"_1");
+		equals(doc.getId(), prefix+"_1");
+
+		equals(doc.getNextId(), prefix+"_3");
+		equals(doc.getId(), prefix+"_3");
+
+		equals(doc.getNextId(), prefix+"_4");
+		equals(doc.getId(), prefix+"_4");
+
+		cleanupSvg(svg_n);
+	});
+
+	test('Test getId() and getNextId() with prefix with nonce', function() {
+		expect(7);
+
+		var PREFIX = 'Bar-';
+		var doc = new svgedit.draw.Drawing(svg_n, PREFIX);
+
+		var prefix = PREFIX + NONCE + "_";
+		equals(doc.getId(), prefix+"0");
+
+		equals(doc.getNextId(), prefix+"1");
+		equals(doc.getId(), prefix+"1");
+
+		equals(doc.getNextId(), prefix+"2");
+		equals(doc.getId(), prefix+"2");
+
+		equals(doc.getNextId(), prefix+"3");
+		equals(doc.getId(), prefix+"3");
+
+		cleanupSvg(svg_n);
+	});
+	
+	test('Test releaseId()', function() {
+		expect(6);
+
+		var doc = new svgedit.draw.Drawing(svg);
+
+		var firstId = doc.getNextId();
+		var secondId = doc.getNextId();
+
+		var result = doc.releaseId(firstId);
+		ok(result);
+		equals(doc.getNextId(), firstId);
+		equals(doc.getNextId(), "svg_3");
+		
+		ok(!doc.releaseId("bad-id"));
+		ok(doc.releaseId(firstId));
+		ok(!doc.releaseId(firstId));
+
+		cleanupSvg(svg);
+	});
+	
+	test('Test getNumLayers', function() {
+		expect(3);
+		var drawing = new svgedit.draw.Drawing(svg);
+		equals(typeof drawing.getNumLayers, typeof function() {});
+		equals(drawing.getNumLayers(), 0);
+
+		setupSvgWith3Layers(svg);
+		drawing.identifyLayers();
+		
+		equals(drawing.getNumLayers(), 3);
+
+		cleanupSvg(svg);
+	});
+
+	test('Test hasLayer', function() {
+		expect(5);
+
+		setupSvgWith3Layers(svg);
+		var drawing = new svgedit.draw.Drawing(svg);
+		drawing.identifyLayers();
+		
+		equals(typeof drawing.hasLayer, typeof function() {});
+		ok(!drawing.hasLayer('invalid-layer'));
+
+		ok(drawing.hasLayer(LAYER3));
+		ok(drawing.hasLayer(LAYER2));
+		ok(drawing.hasLayer(LAYER1));
+
+		cleanupSvg(svg);
+	});
+	
+	test('Test identifyLayers() with empty document', function() {
+		expect(9);
+
+		var drawing = new svgedit.draw.Drawing(svg);
+		
+		// By default, an empty document gets an empty group created.
+		drawing.identifyLayers();
+
+		// Check that <svg> element now has one child node
+		ok(drawing.getSvgElem().hasChildNodes());
+		equals(drawing.getSvgElem().childNodes.length, 1);
+
+		// Check that all_layers is correctly set up.
+		equals(drawing.getNumLayers(), 1);
+		var empty_layer = drawing.all_layers[0][1];
+		ok(empty_layer);
+		equals(empty_layer, drawing.getSvgElem().firstChild);
+		equals(empty_layer.tagName, 'g');
+		ok(empty_layer.hasChildNodes());
+		equals(empty_layer.childNodes.length, 1);
+		var firstChild = empty_layer.childNodes.item(0);
+		equals(firstChild.tagName, 'title');
+
+		cleanupSvg(svg);
+	});
+	
+	test('Test identifyLayers() with some layers', function() {
+		expect(5);
+		
+		var drawing = new svgedit.draw.Drawing(svg);
+		setupSvgWith3Layers(svg);
+
+		equals(svg.childNodes.length, 3);
+		
+		drawing.identifyLayers();
+		
+		equals(drawing.getNumLayers(), 3);
+		equals(drawing.all_layers[0][1], svg.childNodes.item(0));
+		equals(drawing.all_layers[1][1], svg.childNodes.item(1));
+		equals(drawing.all_layers[2][1], svg.childNodes.item(2));
+
+		cleanupSvg(svg);
+	});
+
+	test('Test identifyLayers() with some layers and orphans', function() {
+		expect(10);
+		
+		setupSvgWith3Layers(svg);
+
+		var orphan1 = document.createElementNS(SVGNS, 'rect');
+		var orphan2 = document.createElementNS(SVGNS, 'rect');
+		svg.appendChild(orphan1);
+		svg.appendChild(orphan2);
+		
+		equals(svg.childNodes.length, 5);
+		
+		var drawing = new svgedit.draw.Drawing(svg);
+		drawing.identifyLayers();
+		
+		equals(drawing.getNumLayers(), 4);
+		equals(drawing.all_layers[0][1], svg.childNodes.item(0));
+		equals(drawing.all_layers[1][1], svg.childNodes.item(1));
+		equals(drawing.all_layers[2][1], svg.childNodes.item(2));
+		equals(drawing.all_layers[3][1], svg.childNodes.item(3));
+
+		var layer4 = drawing.all_layers[3][1];
+		equals(layer4.tagName, 'g');
+		equals(layer4.childNodes.length, 3);
+		equals(layer4.childNodes.item(1), orphan1);
+		equals(layer4.childNodes.item(2), orphan2);
+
+		cleanupSvg(svg);
+	});
+
+	test('Test getLayerName()', function() {
+		expect(4);
+		
+		var drawing = new svgedit.draw.Drawing(svg);
+		setupSvgWith3Layers(svg);
+
+		drawing.identifyLayers();
+		
+		equals(drawing.getNumLayers(), 3);
+		equals(drawing.getLayerName(0), LAYER1);
+		equals(drawing.getLayerName(1), LAYER2);
+		equals(drawing.getLayerName(2), LAYER3);
+
+		cleanupSvg(svg);
+	});
+
+	test('Test getCurrentLayer()', function() {
+		expect(4);
+		
+		var drawing = new svgedit.draw.Drawing(svg);
+		setupSvgWith3Layers(svg);
+		drawing.identifyLayers();
+
+		ok(drawing.getCurrentLayer);
+		equals(typeof drawing.getCurrentLayer, typeof function(){});
+		ok(drawing.getCurrentLayer());
+		equals(drawing.getCurrentLayer(), drawing.all_layers[2][1]);
+	});
+
+	test('Test setCurrentLayer() and getCurrentLayerName()', function() {
+		expect(6);
+		
+		var drawing = new svgedit.draw.Drawing(svg);
+		setupSvgWith3Layers(svg);
+		drawing.identifyLayers();
+
+		ok(drawing.setCurrentLayer);
+		equals(typeof drawing.setCurrentLayer, typeof function(){});
+		
+		drawing.setCurrentLayer(LAYER2);
+		equals(drawing.getCurrentLayerName(LAYER2), LAYER2);
+		equals(drawing.getCurrentLayer(), drawing.all_layers[1][1]);
+
+		drawing.setCurrentLayer(LAYER3);
+		equals(drawing.getCurrentLayerName(LAYER3), LAYER3);
+		equals(drawing.getCurrentLayer(), drawing.all_layers[2][1]);
+
+		cleanupSvg(svg);
+	});
+	
+	test('Test createLayer()', function() {
+		expect(6);
+		
+		var drawing = new svgedit.draw.Drawing(svg);
+		setupSvgWith3Layers(svg);
+		drawing.identifyLayers();
+		
+		ok(drawing.createLayer);
+		equals(typeof drawing.createLayer, typeof function(){});
+		
+		var NEW_LAYER_NAME = 'Layer A';
+		var layer_g = drawing.createLayer(NEW_LAYER_NAME);
+		equals(4, drawing.getNumLayers());
+		equals(layer_g, drawing.getCurrentLayer());
+		equals(NEW_LAYER_NAME, drawing.getCurrentLayerName());
+		equals(NEW_LAYER_NAME, drawing.getLayerName(3));
+		
+		cleanupSvg(svg);
+	});
+	
+	test('Test getLayerVisibility()', function() {
+		expect(5);
+		
+		var drawing = new svgedit.draw.Drawing(svg);
+		setupSvgWith3Layers(svg);
+		drawing.identifyLayers();
+		
+		ok(drawing.getLayerVisibility);
+		equals(typeof drawing.getLayerVisibility, typeof function(){});
+		ok(drawing.getLayerVisibility(LAYER1));
+		ok(drawing.getLayerVisibility(LAYER2));
+		ok(drawing.getLayerVisibility(LAYER3));
+		
+		cleanupSvg(svg);
+	});
+
+	test('Test setLayerVisibility()', function() {
+		expect(6);
+		
+		var drawing = new svgedit.draw.Drawing(svg);
+		setupSvgWith3Layers(svg);
+		drawing.identifyLayers();
+		
+		ok(drawing.setLayerVisibility);
+		equals(typeof drawing.setLayerVisibility, typeof function(){});
+
+		drawing.setLayerVisibility(LAYER3, false);
+		drawing.setLayerVisibility(LAYER2, true);
+		drawing.setLayerVisibility(LAYER1, false);
+
+		ok(!drawing.getLayerVisibility(LAYER1));
+		ok(drawing.getLayerVisibility(LAYER2));
+		ok(!drawing.getLayerVisibility(LAYER3));
+		
+		drawing.setLayerVisibility(LAYER3, 'test-string');
+		ok(!drawing.getLayerVisibility(LAYER3));		
+		
+		cleanupSvg(svg);
+	});
+
+	test('Test getLayerOpacity()', function() {
+		expect(5);
+		
+		var drawing = new svgedit.draw.Drawing(svg);
+		setupSvgWith3Layers(svg);
+		drawing.identifyLayers();
+		
+		ok(drawing.getLayerOpacity);
+		equals(typeof drawing.getLayerOpacity, typeof function(){});
+		ok(drawing.getLayerOpacity(LAYER1) == 1.0);
+		ok(drawing.getLayerOpacity(LAYER2) == 1.0);
+		ok(drawing.getLayerOpacity(LAYER3) == 1.0);
+		
+		cleanupSvg(svg);
+	});
+
+	test('Test setLayerOpacity()', function() {
+		expect(6);
+		
+		var drawing = new svgedit.draw.Drawing(svg);
+		setupSvgWith3Layers(svg);
+		drawing.identifyLayers();
+		
+		ok(drawing.setLayerOpacity);
+		equals(typeof drawing.setLayerOpacity, typeof function(){});
+
+		drawing.setLayerOpacity(LAYER1, 0.4);
+		drawing.setLayerOpacity(LAYER2, 'invalid-string');
+		drawing.setLayerOpacity(LAYER3, -1.4);
+
+		ok(drawing.getLayerOpacity(LAYER1) == 0.4);
+		QUnit.log('layer2 opacity', drawing.getLayerOpacity(LAYER2));
+		ok(drawing.getLayerOpacity(LAYER2) == 1.0);
+		ok(drawing.getLayerOpacity(LAYER3) == 1.0);
+
+		drawing.setLayerOpacity(LAYER3, 100);
+		ok(drawing.getLayerOpacity(LAYER3) == 1.0);
+		
+		cleanupSvg(svg);
+	});
+	
+	test('Test deleteCurrentLayer()', function() {
+		expect(6);
+
+		var drawing = new svgedit.draw.Drawing(svg);
+		setupSvgWith3Layers(svg);
+		drawing.identifyLayers();
+		
+		drawing.setCurrentLayer(LAYER2);
+
+		var curLayer = drawing.getCurrentLayer();
+		equals(curLayer, drawing.all_layers[1][1]);
+		var deletedLayer = drawing.deleteCurrentLayer();
+		
+		equals(curLayer, deletedLayer);
+		equals(2, drawing.getNumLayers());
+		equals(LAYER1, drawing.all_layers[0][0]);
+		equals(LAYER3, drawing.all_layers[1][0]);
+		equals(drawing.getCurrentLayer(), drawing.all_layers[1][1]);
+	});
+	
+	test('Test svgedit.draw.randomizeIds()', function() {
+		expect(9);
+
+		// Confirm in LET_DOCUMENT_DECIDE mode that the document decides
+		// if there is a nonce.
+		var drawing = new svgedit.draw.Drawing(svg_n.cloneNode(true));
+		ok(!!drawing.getNonce());
+		
+		drawing = new svgedit.draw.Drawing(svg.cloneNode(true));
+		ok(!drawing.getNonce());
+
+		// Confirm that a nonce is set once we're in ALWAYS_RANDOMIZE mode.
+		svgedit.draw.randomizeIds(true, drawing);
+		ok(!!drawing.getNonce());
+
+		// Confirm new drawings in ALWAYS_RANDOMIZE mode have a nonce.
+		drawing = new svgedit.draw.Drawing(svg.cloneNode(true));
+		ok(!!drawing.getNonce());
+
+		drawing.clearNonce();
+		ok(!drawing.getNonce());
+
+		// Confirm new drawings in NEVER_RANDOMIZE mode do not have a nonce
+		// but that their se:nonce attribute is left alone.
+		svgedit.draw.randomizeIds(false, drawing);
+		ok(!drawing.getNonce());
+		ok(!!drawing.getSvgElem().getAttributeNS(SENS, 'nonce'));
+
+		drawing = new svgedit.draw.Drawing(svg.cloneNode(true));
+		ok(!drawing.getNonce());
+		
+		drawing = new svgedit.draw.Drawing(svg_n.cloneNode(true));
+		ok(!drawing.getNonce());
+	});
+
+  });
+  </script>
+</head>  
+<body>  
+  <h1 id='qunit-header'>Unit Tests for draw.js</h1>
+  <h2 id='qunit-banner'></h2>
+  <h2 id='qunit-userAgent'></h2>
+  <ol id='qunit-tests'>
+  </ol>
+  <div id='anchor' style='visibility:hidden'>
+  </div>
+</body>  
+</html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/test/history_test.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/test/history_test.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/test/history_test.html	(revision 29468)
@@ -0,0 +1,591 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <link rel='stylesheet' href='qunit/qunit.css' type='text/css'/>
+  <script src='../editor/lib/jquery.js'></script>
+  <script type='text/javascript' src='../editor/src/history.js'></script>
+  <script type='text/javascript' src='qunit/qunit.js'></script>  
+  <script type='text/javascript'>
+  $(function() {
+	// TODO(codedread): Write tests for handling history events.
+
+	// Mocked out methods.
+	svgedit.transformlist = {};
+	svgedit.transformlist.removeElementFromListMap = function(elem) {};
+	svgedit.utilities = {};
+	svgedit.utilities.getHref = function(elem) { return '#foo'; };
+	svgedit.utilities.setHref = function(elem, val) {};
+	svgedit.utilities.getRotationAngle = function(elem) { return 0; };
+
+  	// log function
+  	QUnit.log = function(result, message) {
+		if (window.console && window.console.log) {
+			window.console.log(result +' :: '+ message);
+		}
+	};
+
+	var svgns = 'http://www.w3.org/2000/svg';
+	var svg = document.createElementNS(svgns, 'svg');
+	var undoMgr = null;
+	var divparent = document.getElementById('divparent');
+	var div1 = document.getElementById('div1');
+	var div2 = document.getElementById('div2');
+	var div3 = document.getElementById('div3');
+	var div4 = document.getElementById('div4');
+	var div5 = document.getElementById('div5');
+
+	module('svgedit.history');
+
+	var MockCommand = function(opt_text) { this.text_ = opt_text; };
+	MockCommand.prototype.apply = function() {};
+	MockCommand.prototype.unapply = function() {};
+	MockCommand.prototype.getText = function() { return this.text_; };
+	MockCommand.prototype.elements = function() { return []; };
+
+	var MockHistoryEventHandler = function() {};
+	MockHistoryEventHandler.prototype.handleHistoryEvent = function(eventType, command) {};
+
+	function setUp() {
+		undoMgr = new svgedit.history.UndoManager();
+	}
+	function tearDown() {
+		undoMgr = null;
+	}
+
+	test('Test svgedit.history package', function() {
+		expect(13);
+		
+		ok(svgedit.history);
+		ok(svgedit.history.MoveElementCommand);
+		ok(svgedit.history.InsertElementCommand);
+		ok(svgedit.history.ChangeElementCommand);
+		ok(svgedit.history.RemoveElementCommand);
+		ok(svgedit.history.BatchCommand);
+		ok(svgedit.history.UndoManager);
+		equals(typeof svgedit.history.MoveElementCommand, typeof function(){});
+		equals(typeof svgedit.history.InsertElementCommand, typeof function(){});
+		equals(typeof svgedit.history.ChangeElementCommand, typeof function(){});
+		equals(typeof svgedit.history.RemoveElementCommand, typeof function(){});
+		equals(typeof svgedit.history.BatchCommand, typeof function(){});
+		equals(typeof svgedit.history.UndoManager, typeof function(){});
+	});
+	
+	test('Test UndoManager methods', function() {
+		expect(14);
+		setUp();
+		
+		ok(undoMgr);
+		ok(undoMgr.addCommandToHistory);
+		ok(undoMgr.getUndoStackSize);
+		ok(undoMgr.getRedoStackSize);
+		ok(undoMgr.resetUndoStack);
+		ok(undoMgr.getNextUndoCommandText);
+		ok(undoMgr.getNextRedoCommandText);
+
+		equals(typeof undoMgr, typeof {});
+		equals(typeof undoMgr.addCommandToHistory, typeof function(){});
+		equals(typeof undoMgr.getUndoStackSize, typeof function(){});
+		equals(typeof undoMgr.getRedoStackSize, typeof function(){});
+		equals(typeof undoMgr.resetUndoStack, typeof function(){});
+		equals(typeof undoMgr.getNextUndoCommandText, typeof function(){});
+		equals(typeof undoMgr.getNextRedoCommandText, typeof function(){});
+			
+		tearDown();
+	});
+	
+	test('Test UndoManager.addCommandToHistory() function', function() {
+		expect(3);
+		
+		setUp();
+
+		equals(undoMgr.getUndoStackSize(), 0);
+		undoMgr.addCommandToHistory(new MockCommand());
+		equals(undoMgr.getUndoStackSize(), 1);
+		undoMgr.addCommandToHistory(new MockCommand());
+		equals(undoMgr.getUndoStackSize(), 2);
+
+		tearDown();
+	});
+	
+	test('Test UndoManager.getUndoStackSize() and getRedoStackSize() functions', function() {
+		expect(18);
+		
+		setUp();
+
+		undoMgr.addCommandToHistory(new MockCommand());
+		undoMgr.addCommandToHistory(new MockCommand());
+		undoMgr.addCommandToHistory(new MockCommand());
+
+		equals(undoMgr.getUndoStackSize(), 3);
+		equals(undoMgr.getRedoStackSize(), 0);
+		
+		undoMgr.undo();
+		equals(undoMgr.getUndoStackSize(), 2);
+		equals(undoMgr.getRedoStackSize(), 1);
+
+		undoMgr.undo();
+		equals(undoMgr.getUndoStackSize(), 1);
+		equals(undoMgr.getRedoStackSize(), 2);
+
+		undoMgr.undo();
+		equals(undoMgr.getUndoStackSize(), 0);
+		equals(undoMgr.getRedoStackSize(), 3);
+
+		undoMgr.undo();
+		equals(undoMgr.getUndoStackSize(), 0);
+		equals(undoMgr.getRedoStackSize(), 3);
+
+		undoMgr.redo();
+		equals(undoMgr.getUndoStackSize(), 1);
+		equals(undoMgr.getRedoStackSize(), 2);
+
+		undoMgr.redo();
+		equals(undoMgr.getUndoStackSize(), 2);
+		equals(undoMgr.getRedoStackSize(), 1);
+
+		undoMgr.redo();
+		equals(undoMgr.getUndoStackSize(), 3);
+		equals(undoMgr.getRedoStackSize(), 0);
+
+		undoMgr.redo();
+		equals(undoMgr.getUndoStackSize(), 3);
+		equals(undoMgr.getRedoStackSize(), 0);
+		
+		tearDown();
+	});
+	
+	test('Test UndoManager.resetUndoStackSize() function', function() {
+		expect(4);
+		
+		setUp();
+
+		undoMgr.addCommandToHistory(new MockCommand());
+		undoMgr.addCommandToHistory(new MockCommand());
+		undoMgr.addCommandToHistory(new MockCommand());
+		undoMgr.undo();
+		
+		equals(undoMgr.getUndoStackSize(), 2);
+		equals(undoMgr.getRedoStackSize(), 1);
+		
+		undoMgr.resetUndoStack();
+
+		equals(undoMgr.getUndoStackSize(), 0);
+		equals(undoMgr.getRedoStackSize(), 0);
+		
+		tearDown();
+	});
+
+	test('Test UndoManager.getNextUndoCommandText() function', function() {
+		expect(9);
+
+		setUp();
+
+		equals(undoMgr.getNextUndoCommandText(), '');
+
+		undoMgr.addCommandToHistory(new MockCommand('First'));
+		undoMgr.addCommandToHistory(new MockCommand('Second'));
+		undoMgr.addCommandToHistory(new MockCommand('Third'));
+
+		equals(undoMgr.getNextUndoCommandText(), 'Third');
+
+		undoMgr.undo();
+		equals(undoMgr.getNextUndoCommandText(), 'Second');
+
+		undoMgr.undo();
+		equals(undoMgr.getNextUndoCommandText(), 'First');
+
+		undoMgr.undo();
+		equals(undoMgr.getNextUndoCommandText(), '');
+
+		undoMgr.redo();
+		equals(undoMgr.getNextUndoCommandText(), 'First');
+
+		undoMgr.redo();
+		equals(undoMgr.getNextUndoCommandText(), 'Second');
+
+		undoMgr.redo();
+		equals(undoMgr.getNextUndoCommandText(), 'Third');
+
+		undoMgr.redo();
+		equals(undoMgr.getNextUndoCommandText(), 'Third');
+
+		tearDown();
+	});
+
+	test('Test UndoManager.getNextRedoCommandText() function', function() {
+		expect(8);
+
+		setUp();
+
+		equals(undoMgr.getNextRedoCommandText(), '');
+
+		undoMgr.addCommandToHistory(new MockCommand('First'));
+		undoMgr.addCommandToHistory(new MockCommand('Second'));
+		undoMgr.addCommandToHistory(new MockCommand('Third'));
+
+		equals(undoMgr.getNextRedoCommandText(), '');
+
+		undoMgr.undo();
+		equals(undoMgr.getNextRedoCommandText(), 'Third');
+
+		undoMgr.undo();
+		equals(undoMgr.getNextRedoCommandText(), 'Second');
+
+		undoMgr.undo();
+		equals(undoMgr.getNextRedoCommandText(), 'First');
+
+		undoMgr.redo();
+		equals(undoMgr.getNextRedoCommandText(), 'Second');
+
+		undoMgr.redo();
+		equals(undoMgr.getNextRedoCommandText(), 'Third');
+
+		undoMgr.redo();
+		equals(undoMgr.getNextRedoCommandText(), '');
+
+		tearDown();
+	});
+
+	test('Test UndoManager.undo() and redo() functions', function() {
+		expect(10);
+
+		setUp();
+
+		var lastCalled = null;
+		var cmd1 = new MockCommand();
+		var cmd2 = new MockCommand();
+		var cmd3 = new MockCommand();
+		cmd1.apply = function() { lastCalled = 'cmd1.apply'; };
+		cmd2.apply = function() { lastCalled = 'cmd2.apply'; };
+		cmd3.apply = function() { lastCalled = 'cmd3.apply'; };
+		cmd1.unapply = function() { lastCalled = 'cmd1.unapply'; };
+		cmd2.unapply = function() { lastCalled = 'cmd2.unapply'; };
+		cmd3.unapply = function() { lastCalled = 'cmd3.unapply'; };
+
+		undoMgr.addCommandToHistory(cmd1);
+		undoMgr.addCommandToHistory(cmd2);
+		undoMgr.addCommandToHistory(cmd3);
+
+		ok(!lastCalled);
+
+		undoMgr.undo();
+		equals(lastCalled, 'cmd3.unapply');
+
+		undoMgr.redo();
+		equals(lastCalled, 'cmd3.apply');
+
+		undoMgr.undo();
+		undoMgr.undo();
+		equals(lastCalled, 'cmd2.unapply');
+		
+		undoMgr.undo();
+		equals(lastCalled, 'cmd1.unapply');
+		lastCalled = null;
+
+		undoMgr.undo();
+		ok(!lastCalled);
+
+		undoMgr.redo();
+		equals(lastCalled, 'cmd1.apply');
+		
+		undoMgr.redo();
+		equals(lastCalled, 'cmd2.apply');
+
+		undoMgr.redo();
+		equals(lastCalled, 'cmd3.apply');
+		lastCalled = null;
+
+		undoMgr.redo();
+		ok(!lastCalled);
+
+		tearDown();
+	});
+
+	test('Test MoveElementCommand', function() {
+		expect(26);
+
+		setUp();
+
+		var move = new svgedit.history.MoveElementCommand(div3, div1, divparent);
+		ok(move.unapply);
+		ok(move.apply);
+		equals(typeof move.unapply, typeof function(){});
+		equals(typeof move.apply, typeof function(){});
+
+		move.unapply();
+		equals(divparent.firstElementChild, div3);
+		equals(divparent.firstElementChild.nextElementSibling, div1);
+		equals(divparent.lastElementChild, div2);
+
+		move.apply();
+		equals(divparent.firstElementChild, div1);
+		equals(divparent.firstElementChild.nextElementSibling, div2);
+		equals(divparent.lastElementChild, div3);
+
+		move = new svgedit.history.MoveElementCommand(div1, null, divparent);
+
+		move.unapply();
+		equals(divparent.firstElementChild, div2);
+		equals(divparent.firstElementChild.nextElementSibling, div3);
+		equals(divparent.lastElementChild, div1);
+
+		move.apply();
+		equals(divparent.firstElementChild, div1);
+		equals(divparent.firstElementChild.nextElementSibling, div2);
+		equals(divparent.lastElementChild, div3);
+
+		move = new svgedit.history.MoveElementCommand(div2, div5, div4);
+
+		move.unapply();
+		equals(divparent.firstElementChild, div1);
+		equals(divparent.firstElementChild.nextElementSibling, div3);
+		equals(divparent.lastElementChild, div3);
+		equals(div4.firstElementChild, div2);
+		equals(div4.firstElementChild.nextElementSibling, div5);
+
+		move.apply();
+		equals(divparent.firstElementChild, div1);
+		equals(divparent.firstElementChild.nextElementSibling, div2);
+		equals(divparent.lastElementChild, div3);
+		equals(div4.firstElementChild, div5);
+		equals(div4.lastElementChild, div5);
+
+		tearDown();
+	});
+
+	test('Test InsertElementCommand', function() {
+		expect(20);
+
+		setUp();
+
+		var insert = new svgedit.history.InsertElementCommand(div3);
+		ok(insert.unapply);
+		ok(insert.apply);
+		equals(typeof insert.unapply, typeof function(){});
+		equals(typeof insert.apply, typeof function(){});
+
+		insert.unapply();
+		equals(divparent.childElementCount, 2);
+		equals(divparent.firstElementChild, div1);
+		equals(div1.nextElementSibling, div2);
+		equals(divparent.lastElementChild, div2);
+
+		insert.apply();
+		equals(divparent.childElementCount, 3);
+		equals(divparent.firstElementChild, div1);
+		equals(div1.nextElementSibling, div2);
+		equals(div2.nextElementSibling, div3);
+
+		insert = new svgedit.history.InsertElementCommand(div2);
+
+		insert.unapply();
+		equals(divparent.childElementCount, 2);
+		equals(divparent.firstElementChild, div1);
+		equals(div1.nextElementSibling, div3);
+		equals(divparent.lastElementChild, div3);
+
+		insert.apply();
+		equals(divparent.childElementCount, 3);
+		equals(divparent.firstElementChild, div1);
+		equals(div1.nextElementSibling, div2);
+		equals(div2.nextElementSibling, div3);
+
+		tearDown();
+	});
+
+	test('Test RemoveElementCommand', function() {
+		expect(22);
+
+		setUp();
+
+		var div6 = document.createElement('div');
+		div6.id = 'div6';
+
+		var remove = new svgedit.history.RemoveElementCommand(div6, null, divparent);
+		ok(remove.unapply);
+		ok(remove.apply);
+		equals(typeof remove.unapply, typeof function(){});
+		equals(typeof remove.apply, typeof function(){});
+
+		remove.unapply();
+		equals(divparent.childElementCount, 4);
+		equals(divparent.firstElementChild, div1);
+		equals(div1.nextElementSibling, div2);
+		equals(div2.nextElementSibling, div3);
+		equals(div3.nextElementSibling, div6);
+
+		remove.apply();
+		equals(divparent.childElementCount, 3);
+		equals(divparent.firstElementChild, div1);
+		equals(div1.nextElementSibling, div2);
+		equals(div2.nextElementSibling, div3);
+
+		remove = new svgedit.history.RemoveElementCommand(div6, div2, divparent);
+
+		remove.unapply();
+		equals(divparent.childElementCount, 4);
+		equals(divparent.firstElementChild, div1);
+		equals(div1.nextElementSibling, div6);
+		equals(div6.nextElementSibling, div2);
+		equals(div2.nextElementSibling, div3);
+
+		remove.apply();
+		equals(divparent.childElementCount, 3);
+		equals(divparent.firstElementChild, div1);
+		equals(div1.nextElementSibling, div2);
+		equals(div2.nextElementSibling, div3);
+
+		tearDown();
+	});
+
+	test('Test ChangeElementCommand', function() {
+		expect(26);
+
+		setUp();
+
+		div1.setAttribute('title', 'new title');
+		var change = new svgedit.history.ChangeElementCommand(div1,
+			{'title': 'old title', 'class': 'foo'});
+		ok(change.unapply);
+		ok(change.apply);
+		equals(typeof change.unapply, typeof function(){});
+		equals(typeof change.apply, typeof function(){});
+
+		change.unapply();
+		equals(div1.getAttribute('title'), 'old title');
+		equals(div1.getAttribute('class'), 'foo');
+
+		change.apply();
+		equals(div1.getAttribute('title'), 'new title');
+		ok(!div1.getAttribute('class'));
+
+		div1.textContent = 'inner text';
+		change = new svgedit.history.ChangeElementCommand(div1,
+			{'#text': null});
+
+		change.unapply();
+		ok(!div1.textContent);
+
+		change.apply();
+		equals(div1.textContent, 'inner text');
+
+		div1.textContent = '';
+		change = new svgedit.history.ChangeElementCommand(div1,
+			{'#text': 'old text'});
+
+		change.unapply();
+		equals(div1.textContent, 'old text');
+
+		change.apply();
+		ok(!div1.textContent);
+
+		// TODO(codedread): Refactor this #href stuff in history.js and svgcanvas.js
+		var rect = document.createElementNS(svgns, 'rect');
+		var justCalled = null;
+		var gethrefvalue = null;
+		var sethrefvalue = null;
+		svgedit.utilities.getHref = function(elem) {
+			equals(elem, rect);
+			justCalled = 'getHref';
+			return gethrefvalue;
+		};
+		svgedit.utilities.setHref = function(elem, val) {
+			equals(elem, rect);
+			equals(val, sethrefvalue);
+			justCalled = 'setHref';
+		};
+
+		gethrefvalue = '#newhref';
+		change = new svgedit.history.ChangeElementCommand(rect,
+			{'#href': '#oldhref'});
+		equals(justCalled, 'getHref');
+
+		justCalled = null;
+		sethrefvalue = '#oldhref';
+		change.unapply();
+		equals(justCalled, 'setHref');
+
+		justCalled = null;
+		sethrefvalue = '#newhref';
+		change.apply();
+		equals(justCalled, 'setHref');
+
+		var line = document.createElementNS(svgns,'line');
+		line.setAttributeNS(null, 'class', 'newClass');
+		change = new svgedit.history.ChangeElementCommand(line,{class:'oldClass'});
+		
+		ok(change.unapply);
+		ok(change.apply);
+		equals(typeof change.unapply, typeof function(){});
+		equals(typeof change.apply, typeof function(){});
+
+		change.unapply();
+		equals(line.getAttributeNS(null, 'class'), 'oldClass');
+
+		change.apply();
+		equals(line.getAttributeNS(null, 'class'), 'newClass');
+		
+		tearDown();
+	});
+
+	test('Test BatchCommand', function() {
+		expect(13);
+
+		setUp();
+
+		var concatResult = '';
+		MockCommand.prototype.apply = function() { concatResult += this.text_; };
+
+		var batch = new svgedit.history.BatchCommand();
+		ok(batch.unapply);
+		ok(batch.apply);
+		ok(batch.addSubCommand);
+		ok(batch.isEmpty);
+		equals(typeof batch.unapply, typeof function(){});
+		equals(typeof batch.apply, typeof function(){});
+		equals(typeof batch.addSubCommand, typeof function(){});
+		equals(typeof batch.isEmpty, typeof function(){});
+
+		ok(batch.isEmpty());
+
+		batch.addSubCommand(new MockCommand('a'));
+		ok(!batch.isEmpty());
+		batch.addSubCommand(new MockCommand('b'));
+		batch.addSubCommand(new MockCommand('c'));
+
+		ok(!concatResult);
+		batch.apply();
+		equals(concatResult, 'abc');
+
+		MockCommand.prototype.apply = function() {};
+		MockCommand.prototype.unapply = function() { concatResult += this.text_; };
+		concatResult = '';
+		batch.unapply();
+		equals(concatResult, 'cba');
+
+		MockCommand.prototype.unapply = function() {};
+
+		tearDown();
+	});
+
+
+  });
+  </script>
+</head>  
+<body>  
+  <h1 id='qunit-header'>Unit Tests for history.js</h1>
+  <h2 id='qunit-banner'></h2>
+  <h2 id='qunit-userAgent'></h2>
+  <ol id='qunit-tests'>
+  </ol>
+  <div id='divparent' style='visibility:hidden'>
+    <div id='div1'></div>
+    <div id='div2'></div>
+    <div id='div3'></div>
+  </div>
+  <div id='div4' style='visibility:hidden'>
+    <div id='div5'></div>
+  </div>
+
+</body>  
+</html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/test/math_test.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/test/math_test.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/test/math_test.html	(revision 29468)
@@ -0,0 +1,114 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <link rel='stylesheet' href='qunit/qunit.css' type='text/css'/>
+  <script src='../editor/lib/jquery.js'></script>
+  <script type='text/javascript' src='../editor/src/math.js'></script>
+  <script type='text/javascript' src='qunit/qunit.js'></script>
+  <script type='text/javascript'>
+  $(function() {
+  	// log function
+  	QUnit.log = function(result, message) {
+		if (window.console && window.console.log) {
+			window.console.log(result +' :: '+ message);
+		}
+	};
+
+	var svgns = 'http://www.w3.org/2000/svg';
+	var svg = document.createElementNS(svgns, 'svg');
+
+	module('svgedit.math');
+
+	test('Test svgedit.math package', function() {
+		expect(7);
+		
+		ok(svgedit.math);
+		ok(svgedit.math.transformPoint);
+		ok(svgedit.math.isIdentity);
+		ok(svgedit.math.matrixMultiply);
+		equals(typeof svgedit.math.transformPoint, typeof function(){});
+		equals(typeof svgedit.math.isIdentity, typeof function(){});
+		equals(typeof svgedit.math.matrixMultiply, typeof function(){});
+	});
+
+	test('Test svgedit.math.transformPoint() function', function() {
+		expect(6);
+		var transformPoint = svgedit.math.transformPoint;
+
+		var m = svg.createSVGMatrix();
+		m.a = 1; m.b = 0;
+		m.c = 0; m.d = 1;
+		m.e = 0; m.f = 0;
+		var pt = transformPoint(100, 200, m);
+		equals(pt.x, 100);
+		equals(pt.y, 200);
+		
+		m.e = 300; m.f = 400;
+		pt = transformPoint(100, 200, m);
+		equals(pt.x, 400);
+		equals(pt.y, 600);
+		
+		m.a = 0.5; m.b = 0.75;
+		m.c = 1.25; m.d = 2;
+		pt = transformPoint(100, 200, m);
+		equals(pt.x, 100 * m.a + 200 * m.c + m.e);
+		equals(pt.y, 100 * m.b + 200 * m.d + m.f);
+	});
+	
+	test('Test svgedit.math.isIdentity() function', function() {
+		expect(2);
+
+		ok(svgedit.math.isIdentity(svg.createSVGMatrix()));
+
+		var m = svg.createSVGMatrix();
+		m.a = 1; m.b = 0;
+		m.c = 0; m.d = 1;
+		m.e = 0; m.f = 0;
+		ok(svgedit.math.isIdentity(m));
+	});
+
+	test('Test svgedit.math.matrixMultiply() function', function() {
+		expect(5);
+		var mult = svgedit.math.matrixMultiply;
+		var isIdentity = svgedit.math.isIdentity;
+
+		// translate there and back
+		var tr_1 = svg.createSVGMatrix().translate(100,50),
+			tr_2 = svg.createSVGMatrix().translate(-90,0),
+			tr_3 = svg.createSVGMatrix().translate(-10,-50),
+			I = mult(tr_1,tr_2,tr_3);
+		ok(isIdentity(I), 'Expected identity matrix when translating there and back');
+
+		// rotate there and back
+		// TODO: currently Mozilla fails this when rotating back at -50 and then -40 degrees
+		// (b and c are *almost* zero, but not zero)
+		var rot_there = svg.createSVGMatrix().rotate(90),
+			rot_back = svg.createSVGMatrix().rotate(-90); // TODO: set this to -50
+			rot_back_more = svg.createSVGMatrix().rotate(0); // TODO: set this to -40
+		I = mult(rot_there, rot_back, rot_back_more);
+		ok(isIdentity(I), 'Expected identity matrix when rotating there and back');
+
+		// scale up and down
+		var scale_up = svg.createSVGMatrix().scale(4),
+			scale_down = svg.createSVGMatrix().scaleNonUniform(0.25,1);
+			scale_down_more = svg.createSVGMatrix().scaleNonUniform(1,0.25);
+		I = mult(scale_up, scale_down, scale_down_more);
+		ok(isIdentity(I), 'Expected identity matrix when scaling up and down');
+
+		// test multiplication with its inverse 
+		I = mult(rot_there, rot_there.inverse());
+		ok(isIdentity(I), 'Expected identity matrix when multiplying a matrix by its inverse');
+		I = mult(rot_there.inverse(), rot_there);
+		ok(isIdentity(I), 'Expected identity matrix when multiplying a matrix by its inverse');
+	});
+  }); 
+  </script>  
+</head>  
+<body>  
+  <h1 id='qunit-header'>Unit Tests for math.js</h1>
+  <h2 id='qunit-banner'></h2>
+  <h2 id='qunit-userAgent'></h2>
+  <ol id='qunit-tests'>
+  </ol>
+</body>  
+</html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/test/path_test.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/test/path_test.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/test/path_test.html	(revision 29468)
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <link rel='stylesheet' href='qunit/qunit.css' type='text/css'/>
+  <script type='text/javascript' src='../editor/lib/jquery.js'></script>
+  <script type='text/javascript' src='../editor/src/path.js'></script>
+  <script type='text/javascript' src='qunit/qunit.js'></script>  
+  <script type='text/javascript'>
+  $(function() {
+  	// log function
+  	QUnit.log = function(result, message) {
+		if (window.console && window.console.log) {
+			window.console.log(result +' :: '+ message);
+		}
+	};
+
+  });
+  </script>
+</head>  
+<body>  
+  <h1 id='qunit-header'>Unit Tests for path.js</h1>
+  <h2 id='qunit-banner'></h2>
+  <h2 id='qunit-userAgent'></h2>
+  <ol id='qunit-tests'>
+  </ol>
+  <div id='anchor' style='visibility:hidden'>
+  </div>
+</body>  
+</html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/test/qunit/qunit.css
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/test/qunit/qunit.css	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/test/qunit/qunit.css	(revision 29468)
@@ -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;
+}
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/test/qunit/qunit.js
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/test/qunit/qunit.js	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/test/qunit/qunit.js	(revision 29468)
@@ -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);
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/test/select_test.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/test/select_test.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/test/select_test.html	(revision 29468)
@@ -0,0 +1,154 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <link rel='stylesheet' href='qunit/qunit.css' type='text/css'/>
+  <script src='../editor/lib/jquery.js'></script>
+  <script type='text/javascript' src='../editor/src/browser.js'></script>
+  <script type='text/javascript' src='../editor/src/math.js'></script>
+  <script type='text/javascript' src='../editor/src/svgutils.js'></script>
+  <script type='text/javascript' src='../editor/src/select.js'></script>
+  <script type='text/javascript' src='qunit/qunit.js'></script>
+  <script type='text/javascript'>
+  $(function() {
+  	// log function
+  	QUnit.log = function(result, message) {
+		if (window.console && window.console.log) {
+			window.console.log(result +' :: '+ message);
+		}
+	};
+
+	module('svgedit.select');
+
+	var svgns = 'http://www.w3.org/2000/svg';
+	var sandbox = document.getElementById('sandbox');
+	var svgroot;
+	var svgcontent;
+	var rect;
+	var mockConfig = {
+		dimensions: [640,480]
+	};
+	var mockFactory = {
+		createSVGElement: function(jsonMap) {
+			var elem = document.createElementNS(svgns, jsonMap['element']);
+			for (var attr in jsonMap['attr']) {
+				elem.setAttribute(attr, jsonMap['attr'][attr]);
+			}
+			return elem;
+		},
+		svgRoot: function() { return svgroot; },
+		svgContent: function() { return svgcontent; }
+	};
+
+    function setUp() {
+		svgroot = mockFactory.createSVGElement({
+			'element': 'svg',
+			'attr': {'id': 'svgroot'}
+		});
+		svgcontent = svgroot.appendChild(
+			mockFactory.createSVGElement({
+				'element': 'svg',
+				'attr': {'id': 'svgcontent'}
+			})
+		);
+		rect = svgcontent.appendChild(
+			mockFactory.createSVGElement({
+				'element': 'rect',
+				'attr': {
+					'id': 'rect',
+					'x': '50',
+					'y': '75',
+					'width': '200',
+					'height': '100'
+				}
+			})
+		);
+		sandbox.appendChild(svgroot);
+	}
+
+	function setUpWithInit() {
+		setUp();
+		svgedit.select.init(mockConfig, mockFactory);
+	}
+	
+	function tearDown() {
+		while (sandbox.hasChildNodes()) {
+			sandbox.removeChild(sandbox.firstChild);
+		}
+	}
+
+	test('Test svgedit.select package', function() {
+		expect(10);
+
+		ok(svgedit.select);
+		ok(svgedit.select.Selector);
+		ok(svgedit.select.SelectorManager);
+		ok(svgedit.select.init);
+		ok(svgedit.select.getSelectorManager);
+		equals(typeof svgedit.select, typeof {});
+		equals(typeof svgedit.select.Selector, typeof function(){});
+		equals(typeof svgedit.select.SelectorManager, typeof function(){});
+		equals(typeof svgedit.select.init, typeof function(){});
+		equals(typeof svgedit.select.getSelectorManager, typeof function(){});
+	});
+	
+	test('Test Selector DOM structure', function() {
+		expect(26);
+
+		setUp();
+
+		ok(svgroot);
+		ok(svgroot.hasChildNodes());
+
+		// Verify non-existence of Selector DOM nodes
+		equals(svgroot.childNodes.length, 1);
+		equals(svgroot.childNodes.item(0), svgcontent);
+		ok(!svgroot.querySelector('#selectorParentGroup'));
+
+		svgedit.select.init(mockConfig, mockFactory);
+
+		equals(svgroot.childNodes.length, 3);
+
+		// Verify existence of canvas background.
+		var cb = svgroot.childNodes.item(0);
+		ok(cb);
+		equals(cb.id, 'canvasBackground');
+
+		ok(svgroot.childNodes.item(1));
+		equals(svgroot.childNodes.item(1), svgcontent);
+
+		// Verify existence of selectorParentGroup.
+		var spg = svgroot.childNodes.item(2);
+		ok(spg);
+		equals(svgroot.querySelector('#selectorParentGroup'), spg);
+		equals(spg.id, 'selectorParentGroup');
+		equals(spg.tagName, 'g');
+
+		// Verify existence of all grip elements.
+		ok(spg.querySelector('#selectorGrip_resize_nw'));
+		ok(spg.querySelector('#selectorGrip_resize_n'));
+		ok(spg.querySelector('#selectorGrip_resize_ne'));
+		ok(spg.querySelector('#selectorGrip_resize_e'));
+		ok(spg.querySelector('#selectorGrip_resize_se'));
+		ok(spg.querySelector('#selectorGrip_resize_s'));
+		ok(spg.querySelector('#selectorGrip_resize_sw'));
+		ok(spg.querySelector('#selectorGrip_resize_w'));
+		ok(spg.querySelector('#selectorGrip_rotate_sw'));
+		ok(spg.querySelector('#selectorGrip_rotate_se'));
+		ok(spg.querySelector('#selectorGrip_rotate_nw'));
+		ok(spg.querySelector('#selectorGrip_rotate_ne'));
+
+		tearDown();
+	});
+
+  }); 
+  </script>  
+</head>  
+<body>  
+  <h1 id='qunit-header'>Unit Tests for select.js</h1>
+  <h2 id='qunit-banner'></h2>
+  <h2 id='qunit-userAgent'></h2>
+  <ol id='qunit-tests'>
+  </ol>
+  <div id='sandbox'></div>
+</body>  
+</html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/test/svgtransformlist_test.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/test/svgtransformlist_test.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/test/svgtransformlist_test.html	(revision 29468)
@@ -0,0 +1,418 @@
+<!DOCTYPE html>
+<html>  
+<head>  
+  <link rel='stylesheet' href='qunit/qunit.css' type='text/css'/>  
+  <script src='../editor/lib/jquery.js'></script>
+  <script>
+    // Mock for browser.js
+    window.svgedit = {};
+    svgedit.browser = {};
+    svgedit.browser.supportsNativeTransformLists = function() { return false;}
+  </script>
+  <script type='text/javascript' src='../editor/src/svgtransformlist.js'></script>
+  <script type='text/javascript' src='qunit/qunit.js'></script>  
+  <script type='text/javascript'>
+  $(function() {
+  	// log function
+  	QUnit.log = function(result, message) {
+		if (window.console && window.console.log) {
+			window.console.log(result +' :: '+ message);
+		}
+	};
+	
+	var svgns = 'http://www.w3.org/2000/svg';
+	var svgroot = document.getElementById('svgroot');
+	var svgcontent, rect, circle;
+	
+	var NEAR_ZERO = 5e-6; // 0.000005, Firefox fails at higher levels of precision.
+	function almostEquals(a, b, msg) {
+		msg = msg || (a + ' did not equal ' + b);
+		ok(Math.abs(a - b) < NEAR_ZERO, msg);
+	}
+	
+	function checkOutOfBoundsException(obj, fn, arg1) {
+		var caughtException = false;
+		try {
+			obj[fn](arg1); 
+		}
+		catch(e) {
+			if (e.code == 1) {
+				caughtException = true;
+			}
+		}
+		ok(caughtException, 'Caugh an INDEX_SIZE_ERR exception');
+	}
+
+	function setUp() {
+		svgcontent = svgroot.appendChild(document.createElementNS(svgns, 'svg'));
+		rect = svgcontent.appendChild(document.createElementNS(svgns, 'rect'));
+		rect.id = 'r';
+		circle = svgcontent.appendChild(document.createElementNS(svgns, 'circle'));
+		circle.id = 'c';
+	}
+	
+	function tearDown() {
+		svgedit.transformlist.resetListMap();
+		while (svgroot.hasChildNodes()) {
+			svgroot.removeChild(svgroot.firstChild);
+		}
+	}
+
+	module('svgedit.svgtransformlist');
+
+	test('Test svgedit.transformlist package', function() {
+		expect(2);
+		
+		ok(svgedit.transformlist);
+		ok(svgedit.transformlist.getTransformList);
+	});
+
+	test('Test svgedit.transformlist.getTransformList() function', function() {
+		expect(4);
+		setUp();
+		
+		var rxform = svgedit.transformlist.getTransformList(rect);
+		var cxform = svgedit.transformlist.getTransformList(circle);
+		
+		ok(rxform);
+		ok(cxform);
+		equals(typeof rxform, typeof {});
+		equals(typeof cxform, typeof {});
+		
+		tearDown();
+	});
+
+	test('Test SVGTransformList.numberOfItems property', function() {
+		expect(2);
+		setUp();
+		
+		var rxform = svgedit.transformlist.getTransformList(rect);
+		
+		equals(typeof rxform.numberOfItems, typeof 0);
+		equals(rxform.numberOfItems, 0);
+		
+		tearDown();
+	});
+
+	test('Test SVGTransformList.initialize()', function() {
+		expect(6);
+		setUp();
+		
+		var rxform = svgedit.transformlist.getTransformList(rect);
+		var cxform = svgedit.transformlist.getTransformList(circle);
+		
+		var t = svgcontent.createSVGTransform();
+		ok(t);
+		ok(rxform.initialize);
+		equals(typeof rxform.initialize, typeof function(){});
+		rxform.initialize(t);
+		equals(rxform.numberOfItems, 1);
+		equals(cxform.numberOfItems, 0);
+
+		// If a transform was already in a transform list, this should
+		// remove it from its old list and add it to this list.
+		cxform.initialize(t);
+		// This also fails in Firefox native.
+//		equals(rxform.numberOfItems, 0, 'Did not remove transform from list before initializing another transformlist');
+		equals(cxform.numberOfItems, 1);
+		
+		tearDown();
+	});
+
+	test('Test SVGTransformList.appendItem() and getItem()', function() {
+		expect(12);
+		setUp();
+		
+		var rxform = svgedit.transformlist.getTransformList(rect);
+		var cxform = svgedit.transformlist.getTransformList(circle);
+		
+		var t1 = svgcontent.createSVGTransform(),
+			t2 = svgcontent.createSVGTransform(),
+			t3 = svgcontent.createSVGTransform();
+		
+		ok(rxform.appendItem);
+		ok(rxform.getItem);
+		equals(typeof rxform.appendItem, typeof function(){});
+		equals(typeof rxform.getItem, typeof function(){});
+
+		rxform.appendItem(t1);
+		rxform.appendItem(t2);
+		rxform.appendItem(t3);
+		
+		equals(rxform.numberOfItems, 3);
+		var rxf = rxform.getItem(0);
+		equals(rxf, t1);
+		equals(rxform.getItem(1), t2);
+		equals(rxform.getItem(2), t3);
+
+		checkOutOfBoundsException(rxform, 'getItem', -1);
+		checkOutOfBoundsException(rxform, 'getItem', 3);
+		
+		cxform.appendItem(t1);
+		// These also fail in Firefox native.
+//		equals(rxform.numberOfItems, 2, 'Did not remove a transform from a list before appending it to a new transformlist');
+//		equals(rxform.getItem(0), t2, 'Found the wrong transform in a transformlist');
+//		equals(rxform.getItem(1), t3, 'Found the wrong transform in a transformlist');
+
+		equals(cxform.numberOfItems, 1);
+		equals(cxform.getItem(0), t1);
+		
+		tearDown();
+	});
+
+	test('Test SVGTransformList.removeItem()', function() {
+		expect(7);
+		setUp();
+		
+		var rxform = svgedit.transformlist.getTransformList(rect);
+		
+		var t1 = svgcontent.createSVGTransform(),
+			t2 = svgcontent.createSVGTransform();
+		ok(rxform.removeItem);
+		equals(typeof rxform.removeItem, typeof function(){});
+		rxform.appendItem(t1);
+		rxform.appendItem(t2);
+		
+		var removedTransform = rxform.removeItem(0);
+		equals(rxform.numberOfItems, 1);
+		equals(removedTransform, t1);
+		equals(rxform.getItem(0), t2);
+		
+		checkOutOfBoundsException(rxform, 'removeItem', -1);
+		checkOutOfBoundsException(rxform, 'removeItem', 1);
+		
+		tearDown();
+	});
+
+	test('Test SVGTransformList.replaceItem()', function() {
+		expect(8);
+		setUp();
+		
+		var rxform = svgedit.transformlist.getTransformList(rect);
+		var cxform = svgedit.transformlist.getTransformList(circle);
+		
+		ok(rxform.replaceItem);
+		equals(typeof rxform.replaceItem, typeof function(){});
+
+		var t1 = svgcontent.createSVGTransform(),
+			t2 = svgcontent.createSVGTransform(),
+			t3 = svgcontent.createSVGTransform();
+		
+		rxform.appendItem(t1);
+		rxform.appendItem(t2);
+		cxform.appendItem(t3);
+		
+		var newItem = rxform.replaceItem(t3, 0);
+		equals(rxform.numberOfItems, 2);
+		equals(newItem, t3);
+		equals(rxform.getItem(0), t3);
+		equals(rxform.getItem(1), t2);
+		// Fails in Firefox native
+//		equals(cxform.numberOfItems, 0);
+		
+		// test replaceItem within a list
+		rxform.appendItem(t1);
+		rxform.replaceItem(t1, 0);
+		// Fails in Firefox native
+//		equals(rxform.numberOfItems, 2);
+		equals(rxform.getItem(0), t1);
+		equals(rxform.getItem(1), t2);
+		
+		tearDown();
+	});
+
+	test('Test SVGTransformList.insertItemBefore()', function() {
+		expect(10);
+		setUp();
+		
+		var rxform = svgedit.transformlist.getTransformList(rect);
+		var cxform = svgedit.transformlist.getTransformList(circle);
+		
+		ok(rxform.insertItemBefore);
+		equals(typeof rxform.insertItemBefore, typeof function(){});
+
+		var t1 = svgcontent.createSVGTransform(),
+			t2 = svgcontent.createSVGTransform(),
+			t3 = svgcontent.createSVGTransform();
+		
+		rxform.appendItem(t1);
+		rxform.appendItem(t2);
+		cxform.appendItem(t3);
+		
+		var newItem = rxform.insertItemBefore(t3, 0);
+		equals(rxform.numberOfItems, 3);
+		equals(newItem, t3);
+		equals(rxform.getItem(0), t3);
+		equals(rxform.getItem(1), t1);
+		equals(rxform.getItem(2), t2);
+		// Fails in Firefox native
+//		equals(cxform.numberOfItems, 0);
+
+		rxform.insertItemBefore(t2, 1);
+		// Fails in Firefox native (they make copies of the transforms)
+//		equals(rxform.numberOfItems, 3);
+		equals(rxform.getItem(0), t3);
+		equals(rxform.getItem(1), t2);
+		equals(rxform.getItem(2), t1);
+		tearDown();
+	});
+
+	test('Test SVGTransformList.init() for translate(200,100)', function() {
+		expect(8);
+		setUp();
+		rect.setAttribute('transform', 'translate(200,100)');
+
+		var rxform = svgedit.transformlist.getTransformList(rect);
+		equals(1, rxform.numberOfItems);
+
+		var translate = rxform.getItem(0);
+		equals(translate.type, 2);
+
+		var m = translate.matrix;
+		equals(m.a, 1);
+		equals(m.b, 0);
+		equals(m.c, 0);
+		equals(m.d, 1);
+		equals(m.e, 200);
+		equals(m.f, 100);
+
+		tearDown();
+	});
+
+	test('Test SVGTransformList.init() for scale(4)', function() {
+		expect(8);
+		setUp();
+		rect.setAttribute('transform', 'scale(4)');
+
+		var rxform = svgedit.transformlist.getTransformList(rect);
+		equals(1, rxform.numberOfItems);
+
+		var scale = rxform.getItem(0);
+		equals(3, scale.type);
+
+		var m = scale.matrix;
+		equals(m.a, 4);
+		equals(m.b, 0);
+		equals(m.c, 0);
+		equals(m.d, 4);
+		equals(m.e, 0);
+		equals(m.f, 0);
+
+		tearDown();
+	});
+
+	test('Test SVGTransformList.init() for scale(4,3)', function() {
+		expect(8);
+		setUp();
+		rect.setAttribute('transform', 'scale(4,3)');
+
+		var rxform = svgedit.transformlist.getTransformList(rect);
+		equals(1, rxform.numberOfItems);
+
+		var scale = rxform.getItem(0);
+		equals(3, scale.type);
+
+		var m = scale.matrix;
+		equals(m.a, 4);
+		equals(m.b, 0);
+		equals(m.c, 0);
+		equals(m.d, 3);
+		equals(m.e, 0);
+		equals(m.f, 0);
+
+		tearDown();
+	});
+
+	test('Test SVGTransformList.init() for rotate(45)', function() {
+		expect(9);
+		setUp();
+		rect.setAttribute('transform', 'rotate(45)');
+
+		var rxform = svgedit.transformlist.getTransformList(rect);
+		equals(1, rxform.numberOfItems);
+
+		var rotate = rxform.getItem(0);
+		equals(4, rotate.type);
+		equals(45, rotate.angle);
+
+		var m = rotate.matrix;
+		almostEquals(m.a, 1/Math.sqrt(2));
+		almostEquals(m.b, 1/Math.sqrt(2));
+		almostEquals(m.c, -1/Math.sqrt(2));
+		almostEquals(m.d, 1/Math.sqrt(2));
+		equals(m.e, 0);
+		equals(m.f, 0);
+
+		tearDown();
+	});
+
+	test('Test SVGTransformList.init() for rotate(45, 100, 200)', function() {
+		expect(9);
+		setUp();
+		rect.setAttribute('transform', 'rotate(45, 100, 200)');
+
+		var rxform = svgedit.transformlist.getTransformList(rect);
+		equals(1, rxform.numberOfItems);
+
+		var rotate = rxform.getItem(0);
+		equals(4, rotate.type);
+		equals(45, rotate.angle);
+
+		var m = rotate.matrix;
+		almostEquals(m.a, 1/Math.sqrt(2));
+		almostEquals(m.b, 1/Math.sqrt(2));
+		almostEquals(m.c, -1/Math.sqrt(2));
+		almostEquals(m.d, 1/Math.sqrt(2));
+
+		var r = svgcontent.createSVGMatrix();
+		r.a = 1/Math.sqrt(2); r.b = 1/Math.sqrt(2);
+		r.c = -1/Math.sqrt(2); r.d = 1/Math.sqrt(2);
+
+		var t = svgcontent.createSVGMatrix();
+		t.e = -100; t.f = -200;
+
+		var t_ = svgcontent.createSVGMatrix();
+		t_.e = 100; t_.f = 200;
+		
+		var result = t_.multiply(r).multiply(t);
+		
+		almostEquals(m.e, result.e);
+		almostEquals(m.f, result.f);
+
+		tearDown();
+	});
+	
+	test('Test SVGTransformList.init() for matrix(1, 2, 3, 4, 5, 6)', function() {
+		expect(8);
+		setUp();
+		rect.setAttribute('transform', 'matrix(1,2,3,4,5,6)');
+
+		var rxform = svgedit.transformlist.getTransformList(rect);
+		equals(1, rxform.numberOfItems);
+
+		var mt = rxform.getItem(0);
+		equals(1, mt.type);
+
+		var m = mt.matrix;
+		equals(m.a, 1);
+		equals(m.b, 2);
+		equals(m.c, 3);
+		equals(m.d, 4);
+		equals(m.e, 5);
+		equals(m.f, 6);
+
+		tearDown();
+	});
+
+  }); 
+  </script>  
+</head>  
+<body>  
+  <h1 id='qunit-header'>Unit Tests for svgtransformlist.js</h1>
+  <h2 id='qunit-banner'></h2>
+  <h2 id='qunit-userAgent'></h2>
+  <ol id='qunit-tests'>
+  </ol>
+  <div id='svgroot' style='visibility:hidden'></div>
+</body>  
+</html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/test/svgutils_test.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/test/svgutils_test.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/test/svgutils_test.html	(revision 29468)
@@ -0,0 +1,134 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <link rel='stylesheet' href='qunit/qunit.css' type='text/css'/>
+  <script src='../editor/assets/jquery.js'></script>
+  <!-- svgutils.js depends on these two... mock out? -->
+  <script type='text/javascript' src='../editor/src/browser.js'></script>
+  <script type='text/javascript' src='../editor/src/svgtransformlist.js'></script>
+  <script type='text/javascript' src='../editor/src/svgutils.js'></script>
+  <script type='text/javascript' src='qunit/qunit.js'></script>  
+  <script type='text/javascript'>
+  $(function() {
+  	// log function
+  	QUnit.log = function(result, message) {
+		if (window.console && window.console.log) {
+			window.console.log(result +' :: '+ message);
+		}
+	};
+
+	var svgns = 'http://www.w3.org/2000/svg';
+	var svg = document.createElementNS(svgns, 'svg');
+
+	module('svgedit.utilities');
+
+	test('Test svgedit.utilities package', function() {
+		expect(3);
+		
+		ok(svgedit.utilities);
+		ok(svgedit.utilities.toXml);
+		equals(typeof svgedit.utilities.toXml, typeof function(){});
+	});
+
+	test('Test svgedit.utilities.toXml() function', function() {
+		expect(6);
+		var toXml = svgedit.utilities.toXml;
+		
+		equals(toXml('a'), 'a');
+		equals(toXml('ABC_'), 'ABC_');
+		equals(toXml('PB&J'), 'PB&amp;J');
+		equals(toXml('2 < 5'), '2 &lt; 5');
+		equals(toXml('5 > 2'), '5 &gt; 2');
+		equals(toXml('\'<&>"'), '\'&lt;&amp;&gt;"');
+	});
+
+	test('Test svgedit.utilities.fromXml() function', function() {
+		expect(6);
+		var fromXml = svgedit.utilities.fromXml;
+
+		equals(fromXml('a'), 'a');
+		equals(fromXml('ABC_'), 'ABC_');
+		equals(fromXml('PB&amp;J'), 'PB&J');
+		equals(fromXml('2 &lt; 5'), '2 < 5');
+		equals(fromXml('5 &gt; 2'), '5 > 2');
+		equals(fromXml('&lt;&amp;&gt;'), '<&>');
+	});
+
+	test('Test svgedit.utilities.encode64() function', function() {
+		expect(4);
+		var encode64 = svgedit.utilities.encode64;
+
+		equals(encode64('abcdef'), 'YWJjZGVm');
+		equals(encode64('12345'), 'MTIzNDU=');
+		equals(encode64(' '), 'IA==');
+		equals(encode64('`~!@#$%^&*()-_=+[{]}\\|;:\'",<.>/?'), 'YH4hQCMkJV4mKigpLV89K1t7XX1cfDs6JyIsPC4+Lz8=');
+	});
+
+	test('Test svgedit.utilities.decode64() function', function() {
+		expect(4);
+		var decode64 = svgedit.utilities.decode64;
+
+		equals(decode64('YWJjZGVm'), 'abcdef');
+		equals(decode64('MTIzNDU='), '12345');
+		equals(decode64('IA=='), ' ');
+		equals(decode64('YH4hQCMkJV4mKigpLV89K1t7XX1cfDs6JyIsPC4+Lz8='), '`~!@#$%^&*()-_=+[{]}\\|;:\'",<.>/?');
+	});
+
+	test('Test svgedit.utilities.convertToXMLReferences() function', function() {
+		expect(1);
+		
+		var convert = svgedit.utilities.convertToXMLReferences;
+		equals(convert('ABC'), 'ABC');
+//		equals(convert('ÃBC'), '&#192;BC');
+	});
+
+	test('Test svgedit.utilities.bboxToObj() function', function() {
+		expect(5);
+		var bboxToObj = svgedit.utilities.bboxToObj;
+
+		var rect = svg.createSVGRect();
+		rect.x = 1;
+		rect.y = 2;
+		rect.width = 3;
+		rect.height = 4;
+		
+		var obj = bboxToObj(rect);
+		equals(typeof obj, typeof {});
+		equals(obj.x, 1);
+		equals(obj.y, 2);
+		equals(obj.width, 3);
+		equals(obj.height, 4);
+	});
+
+	
+	test("Test getUrlFromAttr", function() {
+		expect(4);
+		
+		equal(svgedit.utilities.getUrlFromAttr("url(#foo)"), "#foo");
+		equal(svgedit.utilities.getUrlFromAttr("url(somefile.svg#foo)"), "somefile.svg#foo");
+		equal(svgedit.utilities.getUrlFromAttr("url('#foo')"), "#foo");
+		equal(svgedit.utilities.getUrlFromAttr('url("#foo")'), "#foo");
+	});
+
+	test("Test getPathBBox", function() {
+		if(svgedit.browser.supportsPathBBox()) return;
+		var doc = svgedit.utilities.text2xml('<svg></svg>');
+		var path = doc.createElementNS(svgns, 'path');
+		path.setAttributeNS(null, 'd', 'm0,0l5,0l0,5l-5,0l0,-5z');
+		var bb = svgedit.utilities.getPathBBox(path);
+		equals(typeof bb, 'object', 'BBox returned object');
+		ok(bb.x && !isNaN(bb.x));
+		ok(bb.y && !isNaN(bb.y));
+	});
+
+  }); 
+  </script>  
+</head>  
+<body>  
+  <h1 id='qunit-header'>Unit Tests for svgutils.js</h1>
+  <h2 id='qunit-banner'></h2>
+  <h2 id='qunit-userAgent'></h2>
+  <ol id='qunit-tests'>
+  </ol>
+</body>  
+</html>
Index: other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/test/units_test.html
===================================================================
--- other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/test/units_test.html	(revision 29468)
+++ other-projects/nz-flag-design/trunk/design-2d/Original editor.method.ac/test/units_test.html	(revision 29468)
@@ -0,0 +1,95 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <link rel='stylesheet' href='qunit/qunit.css' type='text/css'/>
+  <script type='text/javascript' src='../editor/lib/jquery.js'></script>
+  <script type='text/javascript' src='../editor/src/units.js'></script>
+  <script type='text/javascript' src='qunit/qunit.js'></script>  
+  <script type='text/javascript'>
+  $(function() {
+  	// log function
+  	QUnit.log = function(result, message) {
+		if (window.console && window.console.log) {
+			window.console.log(result +' :: '+ message);
+		}
+	};
+
+    function setUp() {
+		svgedit.units.init({
+			getBaseUnit: function() { return "cm"; },
+			getHeight: function() { return 600; },
+			getWidth: function() { return 800; },
+			getRoundDigits: function() { return 4; },
+			getElement:function(elementId){ return document.getElementById(elementId);}
+		});
+	}
+	
+	test('Test svgedit.units package', function() {
+		expect(2);
+		ok(svgedit.units);
+		equals(typeof svgedit.units, typeof {});
+	});
+
+	test('Test svgedit.units.shortFloat()', function() {
+		expect(7);
+
+		setUp();
+		
+		ok(svgedit.units.shortFloat);
+		equals(typeof svgedit.units.shortFloat, typeof function(){});
+
+		var shortFloat = svgedit.units.shortFloat;
+		equals(shortFloat(0.00000001), 0);
+		equals(shortFloat(1), 1);
+		equals(shortFloat(3.45678), 3.4568);
+		equals(shortFloat(1.23443), 1.2344);
+		equals(shortFloat(1.23455), 1.2346);
+	});
+
+	test('Test svgedit.units.isValidUnit()', function() {
+		expect(18);
+
+		setUp();
+		
+		ok(svgedit.units.isValidUnit);
+		equals(typeof svgedit.units.isValidUnit, typeof function(){});
+
+		var isValidUnit = svgedit.units.isValidUnit;
+		ok(isValidUnit("0"));
+		ok(isValidUnit("1"));
+		ok(isValidUnit("1.1"));
+		ok(isValidUnit("-1.1"));
+		ok(isValidUnit(".6mm"));
+		ok(isValidUnit("-.6cm"));
+		ok(isValidUnit("6000in"));
+		ok(isValidUnit("6px"));
+		ok(isValidUnit("6.3pc"));
+		ok(isValidUnit("-0.4em"));
+		ok(isValidUnit("-0.ex"));
+		ok(isValidUnit("40.123%"));
+
+
+        equals(isValidUnit("id","uniqueId",document.getElementById("uniqueId")), true);
+        equals(isValidUnit("id","newId",document.getElementById("uniqueId")), true);
+        equals(isValidUnit("id","uniqueId"), false);
+        equals(isValidUnit("id","uniqueId",document.getElementById("nonUniqueId")), false);
+	});
+  });
+  </script>
+</head>  
+<body>  
+  <h1 id='qunit-header'>Unit Tests for units.js</h1>
+  <h2 id='qunit-banner'></h2>
+  <h2 id='qunit-userAgent'></h2>
+  <ol id='qunit-tests'>
+  </ol>
+  <div id='anchor' style='visibility:hidden'>
+  </div>
+    <div id="elementsContainer">
+        <div id='uniqueId' style='visibility:hidden'></div>
+        <div id='nonUniqueId' style='visibility:hidden'></div>
+    </div>
+
+  </div>
+</body>  
+</html>
